Azerothcore-wotlk: Debuff stacking Issue

Created on 3 Oct 2018  路  15Comments  路  Source: azerothcore/azerothcore-wotlk

SMALL DESCRIPTION:


Debuffs such as (Winter's chill ...) are not being stacked by 2 or more people

EXPECTED BLIZZLIKE BEHAVIOUR:


Winter's chill
If the stacks is already 3 from Mage A, when Mage B attacks, the stacks should be increase to 4

CURRENT BEHAVIOUR:


1) Mage A attacked a monster with FrostBolt 3 times --> Winter's chill stacked up to 3 times relatively
2) Mage B then attacked that monster again with FrostBolt, Winter's chill stacks resetted to 1

Talent ID: https://wowgaming.altervista.org/aowow/?spell=11180

STEPS TO REPRODUCE THE PROBLEM:

Winter's chill
1) Mage A attacked a monster with FrostBolt 3 times --> Winter's chill stacked up to 3 times relatively
2) Mage B then attacked that monster again with FrostBolt, Winter's chill stacks resetted to 1

BRANCH(ES):

master

AC HASH/COMMIT:


Commit f2d16c3003ec17c31e57561e463ddd51097b4e12

OPERATING SYSTEM:


Windows Server 2012

MODULES:


None

OTHER CUSTOMIZATIONS:


None


So even the current trinity-core is broken, however, their latest release commit ed63d15dfe956360851018c55a61d6d27dd743c4 (Feb 19) got that fixed.
Worth a look, I just don't know where to look into.
https://github.com/TrinityCore/TrinityCore/releases/tag/TDB335.64

Class - Mage Fix included Priority - High WIP

Most helpful comment

@santahashi @BarbzYHOOL

put this into your SpellMgr.h
SpellInfo* _GetSpellInfo(uint32 spellId) { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : nullptr; }

add following code snippet to SpellMgr.cpp's method:
void SpellMgr::LoadSpellCustomAttr()

    //Load From DB, first DB then hardcoded one to protect original stuff?
    QueryResult result = WorldDatabase.Query("SELECT entry, attributes FROM spell_custom_attr");
    if (!result)
        sLog->outString(">> Loaded 0 spell custom attributes from DB. DB table `spell_custom_attr` is empty.");
    else
    {
        uint32 count = 0;
        do
        {
            Field* fields = result->Fetch();

            uint32 spellId = fields[0].GetUInt32();
            uint32 attributes = fields[1].GetUInt32();

            SpellInfo* spellInfo = _GetSpellInfo(spellId);
            if (!spellInfo)
            {
                sLog->outString(">>Table `spell_custom_attr` has wrong spell (entry: %u), ignored.", spellId);
                continue;
            }

            if ((attributes & SPELL_ATTR0_CU_NEGATIVE) != 0)
            {
                for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
                {
                    if (spellInfo->Effects[i].IsEffect())
                        continue;

                    if ((attributes & (SPELL_ATTR0_CU_NEGATIVE_EFF0 << i)) != 0)
                    {
                        sLog->outString(">>Table `spell_custom_attr` has attribute SPELL_ATTR0_CU_NEGATIVE_EFF%u for spell %u with no EFFECT_%u", uint32(i), spellId, uint32(i));
                        continue;
                    }
                }
            }

            spellInfo->AttributesCu |= attributes;
            ++count;
        } while (result->NextRow());

        sLog->outString(">> Loaded %u spell custom attributes from DB in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
    }

SQL:

insert into acore_world.spell_custom_attr values 
(12579,                                                4194304);
//winter'schill                                 //SPELL_ATTR0_CU_SINGLE_AURA_STACK

Login into game and see the problem was fixed.

All 15 comments

TrinityCore/TrinityCore#21635

That is actually a different issue, that was frost bolt's effect not being renewed when another frost bolt cast.

This one is the aura of Winter's chill from Mage A being completely replaced by Winter's chill aura of Mage B, in which it should collaborate as additional stacks.

So even the current trinity-core is broken, however, their latest release commit ed63d15dfe956360851018c55a61d6d27dd743c4 (Feb 19) got that fixed.
Worth a look, I just don't know where to look into.
https://github.com/TrinityCore/TrinityCore/releases/tag/TDB335.64

Also, is there a possibility there is same issue with rogue poisons etc or other classes debuffs? This needs further investigation.

@santahashi @BarbzYHOOL

put this into your SpellMgr.h
SpellInfo* _GetSpellInfo(uint32 spellId) { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : nullptr; }

add following code snippet to SpellMgr.cpp's method:
void SpellMgr::LoadSpellCustomAttr()

    //Load From DB, first DB then hardcoded one to protect original stuff?
    QueryResult result = WorldDatabase.Query("SELECT entry, attributes FROM spell_custom_attr");
    if (!result)
        sLog->outString(">> Loaded 0 spell custom attributes from DB. DB table `spell_custom_attr` is empty.");
    else
    {
        uint32 count = 0;
        do
        {
            Field* fields = result->Fetch();

            uint32 spellId = fields[0].GetUInt32();
            uint32 attributes = fields[1].GetUInt32();

            SpellInfo* spellInfo = _GetSpellInfo(spellId);
            if (!spellInfo)
            {
                sLog->outString(">>Table `spell_custom_attr` has wrong spell (entry: %u), ignored.", spellId);
                continue;
            }

            if ((attributes & SPELL_ATTR0_CU_NEGATIVE) != 0)
            {
                for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
                {
                    if (spellInfo->Effects[i].IsEffect())
                        continue;

                    if ((attributes & (SPELL_ATTR0_CU_NEGATIVE_EFF0 << i)) != 0)
                    {
                        sLog->outString(">>Table `spell_custom_attr` has attribute SPELL_ATTR0_CU_NEGATIVE_EFF%u for spell %u with no EFFECT_%u", uint32(i), spellId, uint32(i));
                        continue;
                    }
                }
            }

            spellInfo->AttributesCu |= attributes;
            ++count;
        } while (result->NextRow());

        sLog->outString(">> Loaded %u spell custom attributes from DB in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
    }

SQL:

insert into acore_world.spell_custom_attr values 
(12579,                                                4194304);
//winter'schill                                 //SPELL_ATTR0_CU_SINGLE_AURA_STACK

Login into game and see the problem was fixed.

@BarbzYHOOL can you generate a PR and get this fixed?

@a4501150 actually it's quite easy to do, just follow:

http://www.azerothcore.org/wiki/How-to-create-a-PR

@FrancescoBorzi actually too busy these days.. suddenly found this was lasting almost one year

https://trinitycore.atlassian.net/wiki/spaces/tc/pages/2130134/spell+group+stack+rules

INSERT INTO spell_group_stack_rules(group_id, stack_rule) VALUES (1037, 3);
INSERT INTO spell_group(id, spell_id) VALUES (1037, 12579);

Feel free to test and open a PR, (I just passed by to see how things are going) after all these years.

@BarbzYHOOL Hellow =)

@callmephil hey man, nice to see you again. How are you doing? Come to our Discord!

@FrancescoBorzi I'm doing great =) A lot of work irl !!! Also I'm already on Azeroth-Core discord. Maybe since the beginning :p

ty callmephil

@Kitzunu the brave, I summon you lol

https://trinitycore.atlassian.net/wiki/spaces/tc/pages/2130134/spell+group+stack+rules

INSERT INTO spell_group_stack_rules(group_id, stack_rule) VALUES (1037, 3);
INSERT INTO spell_group(id, spell_id) VALUES (1037, 12579);

Feel free to test and open a PR, (I just passed by to see how things are going) after all these years.

Will not fix the initial issue of this topic... And we can already see spell 12579 in spell_group = 1010

I am missing 1 thing and that is proof.
When I google I cannot find any info that would say that applying Winter's Chill from one mage, should stack on the other mages buffs. However, I do not find any information that they should reset either.

But changing stack rules will not change anything.

@santahashi test the PR https://github.com/azerothcore/azerothcore-wotlk/pull/3187
@a4501150 if you come back, mate

@santahashi test the PR #3187
@a4501150 if you come back, mate

The fix I post two years ago should work. And it fix the problem that AC didn't load custom attr for spells from DB

yes but it's dirty

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Wokwer picture Wokwer  路  4Comments

fragcamp picture fragcamp  路  4Comments

Franklampardst picture Franklampardst  路  3Comments

dev-master21 picture dev-master21  路  3Comments

FrancescoBorzi picture FrancescoBorzi  路  3Comments