* Combat/Threat rewrite (PR #19930) prep work. Mostly refactors, and a compatibility layer on ThreatManager/HostileReference that allows scripts to be changed already.
(cherry picked from commit e2a1ccd118)
* Scripts/Stockades: Cleanup the scripts
Scripts looked ugly before, now they are less ugly
Move Mortimer Moloch and Warden Thelwater to use TaskScheduler rather than EventMap
Use new script registers
Cleanup some other code
Co-authored-by: Carbenium <carbenium@outlook.com>
* Pet/Guardian AI hook re-organizing:
- Adjust OwnerAttacked/OwnerAttackedBy hooks on CreatureAI to fire for all owned units, not just player pets. This should allow guardians to more reliably recognize valid targets.
- Kill off the AttackedBy hook. While it was defined in CreatureAI.h as virtual, it was only ever invoked for player pets in specific situations. This makes it classic developer bait.
- Adjust PetAI to use DamageTaken instead of AttackedBy.
- Adjust behavior of AttackStart on PetAI to compensate.
(cherry picked from commit 1660bb7d27)
- Changed self-accessor on GameObjectAI to "me", like UnitAI
- Moved all related functions to AI, now Unit and GameObject have the same function names with identical behaviour
- Remove "OnUpdate" from CreatureScript/GameObjectScript, was never used and we already have AI Update method
- Quest methods no longer return a bool, the return value was used to call the AI version if the ScriptMgr one returned false
- Implemented GameObjectAI::Destroyed hook (was never called), implemented Damaged method
- Rename OnStateChanged to OnLootStateChanged to reflect when it's really called, and created a new hook OnStateChanged that only gets called on GOState change
- Since the functions are now only getting called from AI, made GetAI methods full virtual. (CanSpawn method is anyways going to be used on creatures with AI)
(cherry picked from commit f913f3bb89)
Set in front modifies only the serverside orientation, use with care.
Also check for current focus to prevent things like incorrect damage on casting creatures (ie dragon breath direction change in your face because of some taunt missclick)
(cherry picked from commit 229444b74a)
* Scripts: Minimize duplicated enum names in header files
This reduces the number of cache resets with the Zapcc compiler
- Standard followed is instance/raid TLA + DataTypes/CreaturesIds/etc
- Partial cherry-pick of master commit 7eb4512eee
- Removed unused defines in sunken_temple.h (the core scripts using these have been moved to SAI)
(cherry picked from commit f6f36be004)
* Made some changes to kiting mechanics, simplified code and made taunt auras prolong combat no matter the distance from the spawn
Unified some creature despawning code, removed some brutal direct calls in scripts
Don't play death anim on forced despawn
Removed some redundant visibility changes on creature despawn
Fixed possible problem with pet initializing template info from difficulty greater than normal
Properly keep UNIT_FLAG_IN_COMBAT on UpdateEntry call
Moved RegenerateMana function to general Regenerate(Power) function
Fixed increased health regeneration from polymorph for pets
Implemented CREATURE_TYPE_FLAG_GHOST_VISIBLE, those creatures will be properly seen when player is dead also
Removed hackfix from Gaeriyan and Franclorn Forgewright, fixed properly
Simplified ForcedRespawnTime code in ForcedDespawn
Do not allow to assist unit while evading or when enemy is evading
Do not allow to attack other units when evading or when the unit is evading
Corrected distance checking code before creature is allowed to evade, should fix some common problems
Properly return summon position for summoned creatures as their respawn position
Properly stop all moving units on gossip hello, no matter their npc flags
(cherrypicked from e1f14215d8)
* When iterating groups we have to either do it not in multithreaded context (map updates) or start with checking maps (they are guaranteed to change in single thread update).
* Properly clear ComboPoint references on player remove
* remove some possible references item may have when it is deleted during save.
* Also clear all hostile references when unit is removed from map.
(cherrypicked from 86da1a19bb)
* Core/Scripts: Fixed Vaelastrasz bomb mechanic
Vaelstraz was suppose to bomb raid members that are mana users every 15
seconds. He was not doing that with the current implementation.
This implementation allows him to bomb the raid and to select the proper
targets. This is also done in a cleaner way.
* Added AuraScript for SPELL_BURNINGADRENALINE
Needed to define an AuraScript for custom behavior that would denatonate
the damaging aura when the debuff falls off.
SpellId - 18173
* Added SQL for Burning Adrenaline Script Ref
* Fixed Multiple Application of BA
* Add unit null check in lambda
* Remove DB name from sql query
* Added Newline in SQL update file.
* Added SQL delete query for potential existing spell
* Fix SQL newline again.
* As suggested a simpler SpellCast overload works
I don't know if there are any consequences but it seems to function fine
in in-game.
I'd like more information on the overload that involves an AuraEffect.
* Remove duplicate Unit null check in lambda
* Update boss_vaelastrasz.cpp
(cherry picked from commit 60ac53ff07)
# Conflicts:
# src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
Implement boss script for Archmage Arugal
- add yells used in boss event to DB
- use proper spells instead of only melee fighting
- add DataType in shadowfang_keep.h
- add event scheduling in the script
By Riztazz
Closes issue #17916
(cherry picked from commit 2b26894eb1)
Move from cpp to db, also added some missing detail
(cherry picked from commit cefed89c38)
Remove obsolete file
(cherry picked from commit 9be0362606)
Remove reference to eastern plaguelands script
(cherry picked from commit 1fc8e2d5f2)