Jump to content

[fix][dev]Fingers of Frost, Aura 262


Auntie Mangos

Recommended Posts

Updated - V6

What bug does the patch fix? What features does the patch add?

Aura 262 (http://thottbot.com/?e=Apply%20Aura%20262)

For which repository revision was the patch created?

8879

Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread.

http://getmangos.eu/community/viewtopic.php?id=8251 or

http://getmangos.eu/community/viewtopic.php?id=5986 or many, many others...

Who has been writing this patch? Please include either forum user names or email addresses.

Me

Status:

All work as it should now, but charges for fingers of frost are done with "SetAuraCharges()", so players see how many spells remains, but I like this solution more than some "uint8" in unit.cpp...

Thanks to Lynx3d for patch for triggering of FoF/Frostbite and Sudden death rage saving from here (Sorry, forum is down:()

Please, test this patch - I know, its bigger than other ones, but everything cant be fixed with 5 lines of code, and its fixes really important Talents for Arms warriors and Frost mages. Thanks :)

Diff (ChangeLog):

V6a: http://pastebin.ca/1693896 (Currently on my server with around 500 ppl)

V6: http://pastebin.ca/1689562

V5b: http://pastebin.ca/1666611

V5a: http://pastebin.ca/1657361

V5: http://pastebin.ca/1656666

V4b: http://pastebin.ca/1649882

V4a: http://pastebin.ca/1648243

V4: http://pastebin.ca/1632638(tested on server with around 130 players, with no bugs/new crashes, thx spichy :) )

V3: http://pastebin.ca/1627221

V2: http://pastebin.org/41516(for rev 8609)

V2: http://pastebin.org/41498(for rev 8558)

V1: http://pastebin.org/34949

SQL:

DELETE FROM spell_proc_event WHERE entry IN(44543, 44545);
INSERT INTO spell_proc_event (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES('44543','0','3','33555104','0','0','0','0','0','7','0'), ('44545','0','3','33555104','0','0','0','0','0','15','0');

And one more sql for Taste for blood hidden cooldown: http://getmangos.eu/community/showthread.php?p=90637 (thx reeshack, i forget to this :) )

Related patches:

Warbringer - remove movement imparing effects

Juggernaut - additional crit chance

Sudden death - rage management

Link to comment
Share on other sites

  • Replies 173
  • Created
  • Last Reply

Top Posters In This Topic

I found this thread: http://getmangos.eu/community/viewtopic.php?id=6343

I have wracked my head with this one for a very long time and I finally realize why Warbringer doesn't allow the client to use Charge in combat. It's because, as a passive, invisible aura, it is never sent to the client. So the client never does anything to enable spells affected by Warbringer, Juggernaut, etc. outside their bypassed restraints.

I think one logical way to solve this problem would be to, in the handler of 262, custom send this packet to the client. You can confirm this works by .debug send opcode with the following parameters in opcode.txt:

code Code:

1174             uint 16  xxxxx             uint8 255             uint32 57499    uint8 19        uint8 80   uint8 1 uint8 0
SMSG_AURA_UPDATE whatever GetPackGUID() is  max allowed auraslot  Warbringer ID   see AFLAG enum  AuraLevel  Charges

What this opcode does is send the client the invisible Warbringer aura (you can also try this with Juggernaut), and allows the client to use charge in combat / use intercept and intervene in combat.

Edit: Also, in the patch you wrote, you could have just used (*i)->IsAffectedOn(m_spellInfo)

But i dont know how to send this opcode to client. I found something like "WorldPacket data(SMSG_AURA_UPDATE);", but i dont know where to add the other data. Can somebody help?

EDIT: Maybe i found it, i just need to test it :)

WorldPacket data(SMSG_AURA_UPDATE);
data.append(caster->GetPackGUID());
data << uint8(255);
data << uint32(GetId());
data << uint8(19);
data << uint8(caster->getLevel());
data << uint8(1);
data << uint8(0);
caster->SendMessageToSet(&data, true);

EDIT2: And it works :) Thanks nos4r2zod...

Link to comment
Share on other sites

Sudden death rage separated into this patch: http://getmangos.eu/community/viewtopic.php?id=11249

Mages on my server thinks that there is something wrong in fof/Fbite triggering, they say that chance to proc is too small, even smaller than without FoF talent...I will look at this.

And maybe FoF/Fbite triggering should be separated as well.

V6a - for rev 8896, 30.11.2009 - http://pastebin.ca/1693896

- Separated Sudden death rage management

- Vanish finally fixed

Link to comment
Share on other sites

Sudden death rage separated into this patch: http://getmangos.eu/community/viewtopic.php?id=11249

Mages on my server thinks that there is something wrong in fof/Fbite triggering, they say that chance to proc is too small, even smaller than without FoF talent...I will look at this.

And maybe FoF/Fbite triggering should be separated as well.

V6a - for rev 8896, 30.11.2009 - http://pastebin.ca/1693896

- Separated Sudden death rage management

- Vanish finally fixed

thank you,

test in progres;)^_^

Link to comment
Share on other sites

Sudden death rage separated into this patch: http://getmangos.eu/community/viewtopic.php?id=11249

Mages on my server thinks that there is something wrong in fof/Fbite triggering, they say that chance to proc is too small, even smaller than without FoF talent...I will look at this.

And maybe FoF/Fbite triggering should be separated as well.

V6a - for rev 8896, 30.11.2009 - http://pastebin.ca/1693896

- Separated Sudden death rage management

- Vanish finally fixed

Sry, what the problem we have with vanish?

Add

Scary add this part to soure with error :)

+ //Check Caster for combat

+ if(m_caster->isInCombat() && IsNonCombatSpell(m_spellInfo) && !m_caster->isIgnoreUnitState(m_spellInfo)

+ && !m_spellInfo->SpellFamilyFlags & SPELLFAMILYFLAG_ROGUE_STEALTH && m_spellInfo->SpellFamilyFlags & SPELLFAMILYFLAG_ROGUE_VANISH) // Vanish hack

+ return SPELL_FAILED_AFFECTING_COMBAT;

Link to comment
Share on other sites

on core 9948 not working the spell Fingers of Frost for mages

it's because spell should use charges from 74396, not from self as already done in this patch.

If we fix this then we will be able delete this part

SetAuraCharges(3); // 3 because first is droped on proc

it's a dirty hack now...

Aura should be removed by something like this

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 66a997d..a659ff6 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2599,6 +2608,11 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
                m_target->CastSpell(m_target, 45472, true);
                return;
            }
+            case 74396:
+            {
+                m_target->RemoveAurasDueToSpell(44544);
+                return;
+            }
        }

        // Living Bomb

and

diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 5825a3e..49f8731 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -2760,6 +2768,13 @@ void Spell::cast(bool skipCheck)
            // Ice Block
            if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000008000000000))
                AddPrecastSpell(41425);                     // Hypothermia
+            // Fingers of Frost
+            else if (m_spellInfo->Id == 44544)
+            {
+                // add aura 2 times, idk how to set 2 charges
+                AddPrecastSpell(74396);
+                AddPrecastSpell(74396);
+            }
            break;
        }
        case SPELLFAMILY_PRIEST:

I'm currently trying to determine how to make aura 74396 to remove one stack at cast any mage spell... i'm confused :/ i was tryed many ways, even using spell proc, but nothing won't remove one stack of spell at cast.

need help...

Link to comment
Share on other sites

  • 39 years later...

Spells like Deep Freeze need AuraState:4 (Frozen) set, to be usable.

So, instead of modifying Unit::isFrozen(), i'd suggest to add Aura::HandleAuraFingersOfFrost() (or whatever you'd like to call it) and set/remove the AuraState there

and i've no idea, why the charges aren't working :x

Link to comment
Share on other sites

I post diff with changes in SpellAuras.cpp instead in Unit.cpp tomorrow.

For charges, maybe missing data in DBC?

EDIT: but...target have to have aura state frozen, not caster. What if caster switchs target? Only record targets some way... maybe change void which returns aura state would be better...

Link to comment
Share on other sites

Your change to isFrozen() confused me at first, why didn't you just add an argument for caster instead of calling isFrozen on caster unit and giving target as argument?

By calling in MaNGOS::FriendlyCCedInRange::operator()() "u->isFrozen(u)", you may screw mages with active Fingers of Frost to be considered frozen, don't you?

Looks like a hack for when no caster is available, IMHO you have to consider that case explicitly though.

I agree it is better to not change isFrozen() at all but add special function that checks if target is just considered frozen, wherever the best place for this may be.

I'm not sure what the problem with Deep Freeze is, do you mean it is displayed castable by client with Fingers of Frost active, but the server refuses to apply it? I'm afraid you have to add extra code for Deep Freeze to check if targets considered frozen too, because Fingers of Frost is not specific to any target to my knowledge, ALL targets are considered frozen when it is active.

Btw, the toughest part is still the correct triggering of FoF, because Frostbite and Fingers of Frost apparently do not proc independently on official.

Also, keep in mind that Aura #262 is not only used with Fingers of Frost, but also Sudden Death, Juggernaut, Warbringer and maybe a few more.

Link to comment
Share on other sites

Im writing from cell phone right now, so i cant try you suggestion. But what about charges?

and i cant look to wowhead for purpose of spells ith aura 262, too (btw what name should this aura have?)

EDIT: well...its looks like this aura needs extra code for all these spells....

EDIT2: Now Im on PC, I think that aura name can be SPELL_AURA_ALLOW_ABILITY....

EDIT3: So...you think it would be better to create new void, which checks for this aura?

Link to comment
Share on other sites

However being in combat has no own aura state, so that is no precise description for this aura type, and only checking it in HasAuraState will not implement Juggernaut or Warbringer.

Just saw Trinity replaced isFrozen() calls for Shatter with HasAuraState and extended that function with arguments for caster and spell to override it...but for Charge they still could not use that aproach and used another aura #262 check in canCast() to skip some cast requirements...

It's basically some nasty "override basic game mechanics" aura. No idea how to name that...

Link to comment
Share on other sites

Well, Im sorry, but I cant work on that today, but tomorrow I will have lot of time :))

EDIT: Good :) I have working deep freeze right now, working on juggernaut and sudden death....

EDIT2: Sudden Death Working... I will do rest and post patch tomorrow.

But I still dont know what to do with charges...how can i tell aura when it should drop charge?

And if sudden death should disappear after one execute, it dont work too....

EDIT3: I have some more problem with Juggernaut....in case of Sudden death, client itself allows execute, but with juggernaut, Charge is "gray" in combat - client needs some special packet for this aura/only for charge? :(

Link to comment
Share on other sites

Actually, aura 262 allows to igore some conditions, like combat, stance(warrior's Warbringer&Juggernaut and Sudden Death) or other states. Currently this aura is ignored, but IMO it's bad idea to implement it as "Finger of Frost aura", because it's more universal aura. I thought this aura is only for warrior, but mage's FoF also uses it.

Client side sees execute as usable, but server doesn't allow to cast it because enemy has more than 20% hp. IMO clients gets info from server in case of charge spell. I don't know what about FoF.

Link to comment
Share on other sites

Actually, aura 262 allows to igore some conditions, like combat, stance(warrior's Warbringer&Juggernaut and Sudden Death) or other states. Currently this aura is ignored, but IMO it's bad idea to implement it as "Finger of Frost aura", because it's more universal aura. I thought this aura is only for warrior, but mage's FoF also uses it.

Client side sees execute as usable, but server doesn't allow to cast it because enemy has more than 20% hp. IMO clients gets info from server in case of charge spell. I don't know what about FoF.

Please, read my post before yours....

PS: Sorry for double post, I am forgot to "edit" :(

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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