Jump to content

DasMy

Members
  • Posts

    3
  • Joined

  • Last visited

  • Donations

    0.00 GBP 

Everything posted by DasMy

  1. Well, we could include the new formula, but in my eyes it would be better, to do it in another patch, since 1) its some different issue 2) its a version issue: someon, who is running an older server may want to stick to the old formula but wants do get rid of the problem that is adressed by the actual patch.
  2. Updated my Post: renamed spellmgr to sSpellMgr. Regards, DasMY
  3. Hello out there , I tried to apply your patch, but had to find out, that SPELL_ATTR_EX2_CANT_REFLECTED is now being used in several places in code. Hence removing it is not that simple. I would propose a solution like http://paste2.org/p/520649. Using mSpellChainMapNext, that is already being initialized on spell-chain load (but afaik used nowhere until now in mangos-0.12), it is checked, whether a higher-rank spell exists. If this is not the case, downranking is prevented. -- Hopefully, I understood things correctly with mSpellChainMapNext :lol: I am looking forward to your comments. DasMy Here again for a quick look: fadc0020a4696443d1e995303e1b6d201f18a4fb src/game/SpellMgr.h | 10 ++++++++++ src/game/Unit.cpp | 3 +++ 2 files changed, 13 insertions(+), 0 deletions(-) diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index fd5bca1..c5b1d24 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -740,6 +740,16 @@ class SpellMgr return false; } + uint8 IsHighestRankOfSpell(uint32 spell) const + { + SpellChainMapNext::const_iterator itr = mSpellChainsNext.find(spell); + + if (!(itr == mSpellChainsNext.end()) && (itr->second)) // the spell is in the chain list and a higher-rank spell is available + return false; + else + return true; + } + bool IsRankSpellDueToSpell(SpellEntry const *spellInfo_1,uint32 spellId_2) const; static bool canStackSpellRanks(SpellEntry const *spellInfo); bool IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) const; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 017a9be..de7eef4 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -2594,6 +2594,9 @@ float Unit::CalculateLevelPenalty(SpellEntry const* spellProto) const if(spellProto->spellLevel <= 0) return 1.0f; + if (sSpellMgr.IsHighestRankOfSpell(spellProto->Id)) + return 1.0f; + float LvlPenalty = 0.0f; if(spellProto->spellLevel < 20)
×
×
  • 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