- 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.
(cherry picked from commit 532ab1c7f8653d1a2e48aa1f1f8a9ba1041d4bb7)
- True blizzlike creature spawn/respawn behavior - new creature = new object
- Toggleable spawn groups (with C++/SAI/command options to use them)
- Custom feature: dynamic spawn rate scaling. Accelerates respawn rate based on players in the zone.
- Backward compatibility mode (set via group and for summons)
to support creatures/gos that currently don't work well with this
(this should be removed once the exceptions are fixed)
Fixes and closes#2858
Tags #8661 as fixable.
Fixes and closes#13787Fixes#15222.
(cherry picked from commit 59db2eeea0a35028779fd76372ae06cc98c8086f)
* 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 e2a1ccd118d129b96e09ff1a15ed0adb1d4a3897)
* Mostly aimed at removing Log/DatabaseEnv includes from other headers
* Fix most packet headers including other packet headers - moved common structures such as ItemInstance to their own files
* Moved SAI function definitions to source files (massive or requiring many different dependencies)
* Scripts/AzjolNerub: Complete rewrite.
- Gatewatcher:
- Trash now actually engages properly one by one
- Fix trash spell casting
- Add missing quotes
- Hadronox:
- Everything. Literally.
- Anub'arak:
- Fix add spawns
- Fix impale
- OK this might as well be "fix everything with every boss". Because that's pretty much what happened.
- General hack cleanup
* Update and rename 9999_99_99_99_AZJOLNERUB.sql to 2016_09_25_01_world.sql
* Update and rename 2016_09_25_01_world.sql to 2016_09_25_02_world.sql
* Rename 2016_09_25_02_world.sql to 2016_09_26_02_world.sql
(cherry picked from commit 4b990eb7d7fda3951e640d84a5c18c90366cd26b)
# Conflicts:
# src/server/game/Spells/SpellMgr.cpp
# src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
# src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
Update boss_hadronox.cpp
(cherry picked from commit 04ec868768d99c97f1cc4d064892bdeee2cbfb17)
Update boss_hadronox.cpp
I hate travis, learn from buildbot
(cherry picked from commit aeb20951bbac5453d5a4db22d23516ba8f948275)
I think I got all of them this time
No idea how this one got past travis.
(cherry picked from commit ae163197a765b294c0a325b6e893d216e1c5d050)
Fix nonPCH.
(cherry picked from commit e121d66fbb8edd68fcf027a05d47324757656228)
...for real this time (seriously - what happened to test builds before merging, Aok?)
(cherry picked from commit dbe0789eba03deb444f0f72e7e79e3be3763662a)
.....hail PCH
(cherry picked from commit 2528194cc1e481a6f002cc0663b12652e7e3de33)
and you get a header, and everyone gets a header...
(cherry picked from commit 5e5fe37a7ef2a76d7bd59250a7702af052a03d20)
(cherry picked from commit b3d44d6c366c7e4f12a6ce30ee5cf6b9bff68a06)
Game/Scripting: Follow-up to b3d44d6. Fix script selection for creatures on difficulty > 0.
(cherry picked from commit 91c2b3162d350ab1a09053574ad67f45f089175b)
Build fix.
(cherry picked from commit a9f1151f2ca56394e315d0b07741c240ef59c2ff)
Fine, this time I actually built it. Promise.
(cherry picked from commit 0c2c88ed5025d9b51b6cbdf0603ceaf1ea54c80a)
- Default range for DoZoneInCombat: 50.0f -> 250.0f.
- Add optional second arg to SummonList::DoZoneInCombat to specify range.
- Also a bunch of random NULL -> nullptr cleanup.
(cherry picked from commit b7f2c87d37ad20e9fd39c6f0523f6b5edb9d4a66)
Too many damn stars in that damn argument list.
(cherry picked from commit afbda0476700f272c734ecb5b31474dbf66477f7)
- Add missing const attribute on CheckBoundary arg.
- Prevent AI from attacking a target that is out of bounds. This prevents exploids such as killing Gluth/Deathbringer from out of bounds.
(cherry picked from commit 19ed18c8816e9bd495dcc03eb0e208006a17bab0)
thanks @MitchesD for help
(cherry picked from commit df21162fe44d2ff29c201a9004586f560789c38b)
(cherry picked from commit 3a4f54197c05ce4209c7e659acfd382896607265)
(cherry picked from commit f50df728201849ee7185d33c5a061c91e781c8de)
(cherry picked from commit 95bae7143f0f4bb7d5975f8a61daa3c533f48225)
(cherry picked from commit 5406f82044e7bd6ceb024a67f33c1674400cdc1f)