Add additional assert to check if it's possible for a Pet not to have an active AI when the Player owner kills an enemy.
Ref #23036
(cherry picked from commit 43dec9e4d0b6f7da3c2051624742e9fb8a9bcb31)
Remove UnitScript from PlayerScript and CreatureScript classes as that's how the original system that was PR'd worked, see https://github.com/TrinityCore/TrinityCore/pull/7867 for reference.
Please note these are used as global hooks and should really just invoke stateless functions.
If you need to hook methods from PlayerScript/CreatureScript and UnitScript, just define 2 different scripts (this is how the original system worked and how it was designed to work)
(cherry picked from commit 5b7ead65bb116195f4336934bcff830e1b2af5bb)
Fix an infinite loop in Detour happening in Dalaran Sewers.
This is more of an emergency patch until we figure out why dtNodes have a circular reference (A -> B -> C -> A) happening quite often in this place
(cherry picked from commit c8ec2dd95d07e3eec00027cdb9605529a49d6475)
Fix memory leak happening when disbanding a group with an ongoing roll.
Please note this is not blizz-like but at least we don't leak memory anymore.
(cherry picked from commit f04e90f638425c0e0ef2e40f0cd29ab7eec625d1)
Fix assert triggered when a spell would trigger another spell in OnEffectHitTarget that would kill the aura owner, then processing the main spell effects. The triggered spell can kill the aura owner, changing its death state to CORPSE and removing auras created.
Fix#21856
Ref 518e6299ca08a362bc3709daaaa5e5d5633d1bf1
(cherry picked from commit 46c7446bd4ef606b1091c1582df50e027fab28b6)
UNIT_FLAG_NON_ATTACKABLE makes ingvar become a invalid target and lose threatlist, so me->IsThreatened() will return false.
We dont need it at all, since UpdateAI will handle evade already.
(cherry picked from commit 71dde16ce9a9c7904a2902ae288b3f05851224ac)
Higher distance showed in my sniffs is 48 yards (rounding 50 yards). If someone find more then that, please let me know.
Ty killerwife
(cherry picked from commit fd69c133b10e289167f34438cb34fb5d4a141b4c)
Fix assert triggered when a spell would trigger another spell in OnEffectHitTarget that would kill the target, then processing the main spell effects. The triggered spell can kill the target, changing its death state to CORPSE and removing auras created.
Fix#22306
(cherry picked from commit 518e6299ca08a362bc3709daaaa5e5d5633d1bf1)
Change again how SOAP is stopped if SOAP successfully binds but worldserver fails to bind its sockets.
A crash remains if SOAP fails to bind because it calls exit() and that triggers asserts everywhere.
(cherry picked from commit d05ab073cb102a4f868b0fda51ef4368350ded32)
Fix worldserver entering a loop when having SOAP enabled but failing to bind both SOAP and worldserver listened socket. SOAP thread would keep trying to bind the socket over and over checking World::IsStopped() condition that was never set to true
(cherry picked from commit 85e3169fbd7b2da70e0f054399f4db64ded36325)
* Core/AI: Revamp how UnitAI changes are applied
Revamp how UnitAI changes are applied by storing current AI in a variable and all previous AIs plus current in a stack.
The callers can push/pop AIs on the stack that will take effect only in next Unit::Update() call.
The current AI will be a valid object for the whole duration of Unit::Update() and until next Unit::Update() call.
* Core/AI: Apply new AI change code
* Core/AI: Fix build
* Core/AI: Fix crash on Creature::AIM_Create()
* Core/AI: Fix crash
* Core/AI: Restore ASSERT
* Core/AI: Fix UnitAI not being popped properly when restoring a charmed AI
(cherry picked from commit 8f9654d8176646c3076482477fc4b91011fb83cc)
- split the quest status check, the quest gossips are different
- remove old hardcoded text (deprecated method)
- enumerate already existing DB gossip menu option items
(cherry picked from commit a8558c4361a7e3560c094886ef3072d46c64de44)
Quest 12288: Overwhelmed!
- Upon casting the healing quest spell, Wounded Skirmisher (npc_wounded_skirmisher)
shows $r and $c in their reply talk text because of the missing target argument,
hence not targeting the player on the quest (or the specific caster, in this case).
Text used by the NPC Wounded Skirmisher:
0 Ahh.... better.
1 Whoa - I nearly died there. Thank you, $r!
2 Thank you, $c.
Solution: add the missing target name, caster, to the Talk() script line.
(cherry picked from commit 95398fadf958d40ba6755a6c2f7b374f0a36b7c7)