- 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)
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)
* 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)
- Splitted containers for flat modifiers and pct modifiers, as they now have different handling
- Amount is now multiplied only on apply; on unapply, iterate through auras and reset the counter
- Fixes many cases of rounding error due to applying/unapplying of small factors
- Allows amounts to be zeroed (ie with an AuraEffect of amount -100)
- Do a partial revert of 6dc37a9add, auras should update amounts only for items allowed (ie no more giving crit to a sword while having an axe in the other hand and being Poleaxe spec'd)
- SPELL_AURA_MOD_SCALE now scales additively, rather than multiplicatively (checked in sniffs)
Closes#18687
* 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
* 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.
* 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
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
This #define was originally supposed to be removed in my PR #17832,
but for some reason it remained undeleted. This commit corrects it.
Also aligned all the enum values to the same column for readability,
based on a common multiple of 4 spaces.
UNIT_FLAG_REMOVE_CLIENT_CONTROL (formerly UNIT_FLAG_DISABLE_MOVE) is a client-only feature that should not be used for NPC scripting. All applications of this flag in scripts/ have been replaced with applications/removals of the UNIT_STATE_ROOT state.
Closes#17311
This PR affects the following 2 quests:
Quest ID 4001 "What Is Going On?" - part 2 (Horde)
Quest ID 4342 "Kharan's Tale" (Alliance)
Target of this PR:
Move core script npc_kharan_mighthammer to DB/SAI
(thereby removing 10 lines of hardcoded text).
* DB/conditions: extra gossip conditions
- added conditions for gossip before quest taken and after quest completed.
- removed redundant core script SAY_GET_ME_OUT_OF_HERE comment
* DB/creature: add more text to Kharan
- add all missing creature_text lines to entry 9021 Kharan Mighthammer
- add SAI duration to wait before TEXT_OVER is triggered (3000 ms)
- There's still an overload allowing for x, y, z, o to be passed directly
- Fixed default animstate for GameObject creation in many places, it should be 255, not 100 (checked in sniffs)
Change log:
- Timers are more accurate
- Corrected Charge ability ID based on 6.x researches
- Added Midnight's missing emotes
- Fixed issue with instance being stuck in combat in case of wipes
- Solved the rare scenario where Attumen would be summoned multiple times
- Visual spell on 3rd phase transition added
- Attumen and Midnight can now be damaged during 3rd phase transition
- Midnight calls for the aid of every horse still alive in the stables
- Use proper spells to summon Attumen and handle transitions
- Now despawns on evade
Video of encounter after changes: https://www.youtube.com/watch?v=KX0rqaBeSzw