Jump to content

Question About Mana Regeneration


Recommended Posts

Posted

After switch to patch 2.4.1

the mana regeneration to player after level 70

is buged.

I know that mangos is offylike project but if in mangos.conf

is present the line to set level max for player it is right that all

work fine to prescind from level (formulas mana regeneration, crits ecc....)

I have spoken with vladimir of this Bug,

it has said to me that for this formula as for the others the level comes taken from the DBC

it is possible to realize a formula that it does not use the dBC

or that only in the case the level max is greater of 70 does not use the DBC.

For Mana Regeneration, Crit and all Formulas that use this fuction "GT_MAX_LEVEL".

------------------------------------------------------------------

1

Posted

I task the same one, I have level max 80 and the same problem......

I tink that if in mangos.conf file is present the level option is correct thath all formulas work fine with this level.

A solution for both would be corrected

p.s. I love your avatar BIG

Posted

if I replace GT_MAX_LEVEL in player.ccp to my max level

I have a change to crit of about 92% and this is not correct.

but mana regeneration it seems to have correct value for some classes

some aid?

  • 4 weeks later...
Posted

try this, maybe it helps...

tested it with manaregen and changed the others, too .. but I have to test

my thought was GT_MAX_LEVEL is 100

70 is max bliss level and so are DBC.. so you should use it...

but its only my first shot!

Mangos Rev : 6083

Index: src/game/Player.cpp
===================================================================
--- src/game/Player.cpp (Revision 6083)
+++ src/game/Player.cpp (Arbeitskopie)
@@ -4025,7 +4025,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtChanceToMeleeCritBaseEntry const *critBase    = sGtChanceToMeleeCritBaseStore.LookupEntry(pclass-1);
        GtChanceToMeleeCritEntry         const *critRatio = sGtChanceToMeleeCritStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4041,7 +4041,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtChanceToSpellCritBaseEntry const *critBase    = sGtChanceToSpellCritBaseStore.LookupEntry(pclass-1);
        GtChanceToSpellCritEntry         const *critRatio = sGtChanceToSpellCritStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4057,7 +4057,7 @@
        uint32 level = getLevel();
        uint32 rating_id = index - PLAYER_FIELD_COMBAT_RATING_1;

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtCombatRatingsEntry const *Rating = sGtCombatRatingsStore.LookupEntry(rating_id*GT_MAX_LEVEL+level-1);
        if (Rating == NULL)
@@ -4124,7 +4124,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtOCTRegenHPEntry         const *baseRatio = sGtOCTRegenHPStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
        GtRegenHPPerSptEntry    const *moreRatio = sGtRegenHPPerSptStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4145,7 +4145,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

//        GtOCTRegenMPEntry         const *baseRatio = sGtOCTRegenMPStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
        GtRegenMPPerSptEntry    const *moreRatio = sGtRegenMPPerSptStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);

Posted

this is why i set it back to lv 70 .. in this simple way..

before, my shaman had manaregeneration of 1 with lv 71 .. now it increases from 70 to 71 a bit ..

this is not perfekt.. but .. for ppl looking for a solution this patch might be a start...

  • 2 weeks later...
Posted

if you copy paste, you also copy the "wrong" end of lines..

just look at long lines and remove the linefeeds in your editor.

btw, shortly after my patch, mangos added another dbc based %% value.. i think it was block rating..

the patch doesnt cover this issue.. and has to be done manually, right now.

lets see....

here we go >> http://filebeam.com/8fbd33466604a7959bac4577c6e9af97

looks like this

Index: src/game/Player.cpp
===================================================================
--- src/game/Player.cpp        (revision 6109)
+++ src/game/Player.cpp        (working copy)
@@ -4005,7 +4015,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtChanceToMeleeCritBaseEntry const *critBase    = sGtChanceToMeleeCritBaseStore.LookupEntry(pclass-1);
        GtChanceToMeleeCritEntry         const *critRatio = sGtChanceToMeleeCritStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4050,7 +4060,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        // Dodge per agility for most classes equal crit per agility (but for some classes need apply some multiplier)
        GtChanceToMeleeCritEntry    const *dodgeRatio = sGtChanceToMeleeCritStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4066,7 +4076,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtChanceToSpellCritBaseEntry const *critBase    = sGtChanceToSpellCritBaseStore.LookupEntry(pclass-1);
        GtChanceToSpellCritEntry         const *critRatio = sGtChanceToSpellCritStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4082,7 +4092,7 @@
        uint32 level = getLevel();
        uint32 rating_id = index - PLAYER_FIELD_COMBAT_RATING_1;

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtCombatRatingsEntry const *Rating = sGtCombatRatingsStore.LookupEntry(rating_id*GT_MAX_LEVEL+level-1);
        if (Rating == NULL)
@@ -4149,7 +4159,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

        GtOCTRegenHPEntry         const *baseRatio = sGtOCTRegenHPStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
        GtRegenHPPerSptEntry    const *moreRatio = sGtRegenHPPerSptStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
@@ -4170,7 +4180,7 @@
        uint32 level = getLevel();
        uint32 pclass = getClass();

-        if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;
+        if (level>70) level = 70;

//        GtOCTRegenMPEntry         const *baseRatio = sGtOCTRegenMPStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
        GtRegenMPPerSptEntry    const *moreRatio = sGtRegenMPPerSptStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);

Posted

Actually whats easy about your patch, it showed me how you circumvent the levelcap (sorta)

So i did a find and replace in Visual studio with player.cpp:

find

if (level>GT_MAX_LEVEL) level = GT_MAX_LEVEL;

replace with

if (level>70) level = 70;

Should work with every revision

  • 3 months later...
Posted

I can not find the code in the revision since 6710 and only meeting this week corrected?

Now the levels are not as they were not sure of now is running true or not

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use