- 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)
* isArena
* name
* queueId
* min & max players (per team)
* map id
* script id
* start max dist
* type id
* min & max level
* Save the WorldSafeLocsEntry* instead of the Position in the BattlegroundTemplate struct
- Implemented manager for petitions to perform all petition related tasks and synchronize data with database.
- This kills ugly synchronous querys on packet handlers
(cherry picked from commit a4aa95a5a3)
- Duplicated logic never used, sometimes only ScriptMgr version was called, sometimes only AI
- They only encourage bad scripting practices
- You can still use OnSpellHit or a SpellScript
(cherry picked from commit b6b59f6c23)
After discussion we realized, ariel and me, that Creature and Unit IsMovementPreventedByCasting() have not the same checks (order matters)
(cherry picked from commit 5a2f0ce29e)
- IsFocusing is made virtual again, so there's no need to keep a duplicated function
This reverts commit 5043639c56.
(cherry picked from commit 3ea46e57af)
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)
- This field is only used to propose a new quest to player after completion, shouldn't be used to condition current quest
Closes#19515
(cherry picked from commit a82a12b5ef)
- Moved SetBoundary to public scope to allow for greater flexibility (ie set from external script)
- Extended to allow checking inverted boundaries
(cherry picked from commit 6892404b27)
- Allow to share already completed (but not rewarded) quests, restriction was unblizzlike
thanks Cannix for the heads up
(cherry picked from commit 157e9311c4)