- 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)
* In the existing core script, Willix the Importer in Razorfen Kraul says
"Help! Get this $n off of me!" (showing the $n part in his SAY text)
instead of naming the attacker when using his 'SAY_AGGRO1' creature_text.
* With this commit change, unit target is no longer missing for Talk,
making Willix name the attacking unit when he shouts for help.
* 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)
* 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
Closes#18176
* Implemented faction change of Ashtongues when Shade of Akama dies
* Moved factions to black_temple.h
* Removed explicit from EnslavedSoulEvent (Reliquary of Souls)
* Fixed a typo in Skeram Script (followup 5f44890049)
* Fixed spell Shadow Inferno (Illidari Nightlord)
- Use Spell::m_triggeredByAuraSpell and compare against trigger aura, it requires scripts to set triggeredByAura parameter.
- Fixed existing scripts lacking it
DB/Spell: Anger Capacitor (Tiny Abomination in a Jar) proc
Closes#18269
Additional change: The answers have been changed from containing only names
to include the text ` is my answer.` from the matching lines in `broadcast_text`.
- added DB creature_text entries for Braug Dimspirit
- added DB gossip_menu_option entries for this NPC
- implemented NPC `Say` line in reply to the wrong answers
- avoiding gossip exploits by turning off npcflags during talk
- added conditions for showing gossip depending on quest status
- removed deprecated SD comments in zone_stonetalon_mountains.cpp
The core script only contains gossip handling + conditions.
- remove script from file the_black_morass.cpp
- thereby removing 1 line of hardcoded text
- remove redundant SD2 comments in header
- add SAI, gossip and conditions to DB
- Converted Unit::HandleDummyAuraProc function to AuraScripts
* Extra: DMC: Madness now uses DB texts. yay!
* Extra: improvements on Imp. Spell Reflection (range and max targets, filter caster with conditions)
- Fixed Glyph of Succubus. (Closes#6599)
- Changed old (not-blizz) behavior of Vampiric Embrace:
* Before: party heal affected the priest too and self heal was reduced by that amount to not over-heal
* Now: self heal amount not affected, rather filter the priest out of the party heal using conditions :)
- Solve bug in AQ 3p set bonus, it should only trigger when healing others, not self heals.
- Priest T10 2p bonus (heal) now rolls its effect properly
- Use brand new GetEffectiveHeal to fix#17142
- While we're at it, also close#17034 for good
- Converted Unit::HandleAuraProc function to AuraScripts (#17941)
- Converted Unit::HandleAuraProc function to AuraScripts (cont'd) (#17955)
- Corrected Flametongue weapon damage formula
- Actually check offhand weapon for flametongue in Lava Lash script
- Implemented halved proc chance for Missile Barrage on Arcane Barrage, Fireball, Frostbolt and Frostfire Bolt cast
- Converted Unit::HandleProcTriggerSpell function to AuraScripts (#17956)
- De-hack Earth shield. Fixes#13808
- Updated Honor among Thieves
- Implemented mana proc for Mark of Conquest in case of ranged attack
- Fixed Scent of Blood giving more stacks than the talent rank currently learnt.
- Ported old proc table. Proc system is dead. Long live the proc system!
- Recklessness should get charges removed per cast. Closes#15529
- Use proc system to remove Molten Core charges on Incinerate/Soul Fire cast. Closes#15942Closes#3463Closes#5401Closes#15595Closes#15974Closes#16679Closes#17925
- Add second gameobject (Gordunni Dirt Mound, containing only junk items) that can spawn in place of the first (same name, but contains the quest item), 50% chance.
Movement/SplineChain: Bump value range for DB chainId up to uint16 (0 to 65535) from uint8 (0 to 255). Turns out sniffs generate far more chains than I expected.
Another chapter in core script hardcoded text removal:
- remove core script `npc_loramus_thalipedes` from zone_azshara.cpp
- add gossip, SAI script and conditions to database
- remove redundant SD2 comments from file header
Move script npcs_riverbreeze_and_silversky to SAI,
thereby removing one line of hardcoded text.
- Remove core script npcs_riverbreeze_and_silversky
- Create SAI script for gossip event Cenarion Beacon
- Add missing gossip_menu for plant description
- Add missing creature_text about Cenarion Beacon
- Add and correct conditions for gossip availability
- 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)
- move npcs_rutgar_and_frankal to DB/SAI
- move hardcoded text from go_wind_stone to DB
- additional enum cleanup in zone_silithus.cpp
- also solves a $r issue in SAY_TEMPLAR_AGGRO
1 more text line removed in the ongoing series: "Remove hardcoded text from core scripts".
Core script for "Plucky" Johnson :
- move the actual gossip handling to DB
- create new gossip_menu_option entry
- link the option to gossip_menu.text_id
- add correct default gossip to the NPC
- create SAI script with alternate emotes
- add condition check for quest taken
- remove the script from zone script
- extra enum cleanup in zone script
Move 2 core scripts to DB / SAI:
- npc_bunthen_plainswind (NPC 11798)
- npc_silva_filnaveth (NPC 11800)
Additional result: remove 4 hardcoded text lines.
Target: remove lines from the list http://pastebin.com/x7wZLpxH
- Remove npc_gregan_brewspewer, thereby removing hardcoded text
`#define GOSSIP_HELLO "Buy somethin', will ya?"`
- Move all gossip handling to DB (gossip texts already exist in TDB)
- remove hardcoded text from script npc_beaten_corpse
- remove OnGossipHello() hook, gossip text moved to DB
- use sGossipSelect() hook instead of OnGossipSelect()
- add npc_text 3557 and 3558 as text_id to gossip_menu
- add gossip_menu_option 2871 to NPC 10668 Beaten Corpse
- add condition for gossip_menu_option 2871 in Quest ID 4921
Tested on 4 different characters/classes, male & female.
Thanks to joschiwald for the sGossipSelect() script change.
- Clean up of Unit::SetSpeed (mostly cherry picks from the 6.x branch):
- the opcode sent depends on the unit. until now, MSG_MOVE_SET_* were sent for every units which isn't like retail behavior.
- Removed the unused method parameter "forced" from Unit::SetSpeed
- Renamed Unit::SetSpeed to SetSpeedRate
- Removed the unused method parameter "forced" from Unit::UpdateSpeed
- Added utility method Unit::SetSpeed which take the new flat value.