Also, some anti-annoyance treatment for dot tele.
# Conflicts:
# src/server/game/Combat/CombatManager.h
# src/server/game/Combat/ThreatManager.h
# src/server/scripts/Commands/cs_tele.cpp
- Triggers can no longer have a threat list (this may expose some ugliness in old legacy scripts)
- Threat entries are forced to OFFLINE if the AI refuses to attack the target
- Clean up passive creature evade behavior to be more consistent
- Fix a months old issue in spawn group management that would cause "Inactive" to incorrectly show in .list respawns for system groups outside of map 0
- Valithria script cleanups, remove old hacks and make it work with the new system. Closes#21174.
- Some strings cleanup
# Conflicts:
# sql/old/4.3.4/world/23_2017_11_15/2018_01_04_00_world.sql
# src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
- PvE combat is now always mutual. UNIT_FLAG_IN_COMBAT is backed by actual references to the units we're in combat with.
- PvP combat is now also tracked, and almost always mutual; spells like Vanish and Feign Death can break this rule. That means we can easily determine a list of players we're fighting.
- By extension, IsInCombatWith now has sensible behavior when invoked on nonplayers.
- Threat and combat systems are no longer the same.
- They still have an enforced relationship (threat implies combat - clearing combat clears threat)...
- ...but we can have combat without threat. A creature (with threat list) isn't considered to be engaged until it has an entry on its threat list...
- ...which means we can now faithfully replicate retail engage behavior. Combat on projectile launch - engagement start on projectile impact. Yay for progress!
- AI method refactor, as already ported in 6113b9d - `JustEngagedWith`, `JustEnteredCombat` and `JustExitedCombat`.
- Vehicle threat is now properly pooled on the main vehicle body (fixes#16542).
- Various edge case bug fixes for threat redirects (Misdirection "cancelling" Vigilance and similar).
- Target re-selection is now significantly faster.
- Fixed a ton of other smaller edge case bugs, probably.
Closes#7951 and #19998.
Also change a very ugly hack in GetDialogStatus. Ew.
# Conflicts:
# src/server/game/AI/CoreAI/GameObjectAI.h
# src/server/game/Entities/Player/Player.cpp
# src/server/game/Quests/QuestDef.h
* Core/Scripts: Rewrite Boss Kalecgos (Sunwell Plateau)
Scripted all spells
Corrected behavior of Spectral Blast and Curse of Boundless Agony
Removed wrong wipe behavior
Fix problem where bosses would be stuck with banish
Added Boundaries
Corrected texts
Removed old hacks
Other minor fixes
# Conflicts:
# sql/old/4.3.4/world/19_2017_06_18/2017_08_08_00_world.sql
# src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
# src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
- Add a 2 second delay before the AI begins using spells. This should provide opportunity for counterplay before that rogue activates cloak and goes on an unstoppable rampage among your healers. (Sorry, guys.)
- Stopped the AI from attacking invalid targets under some conditions. It should now properly leash back and follow the charmer if we try to select an invalid target.
- Stopped the AI from constantly re-creating the follow movement generator (and thus spamming movesplines).