- Fixes creatures turning just before a spellcast finishes and smacking players with supposedly-unavoidable damage. Fixes and closes#15393, #10803, and probably others.
- Fixes visual effects not lining up with the correct target for spells that have their visual aligned with the caster's orientation (examples: Anub'rekhan Impale, Ingvar's Smash/Dark Smash, etc.). Fixes and closes#2947 and probably a bunch of others, including the aforementioned #15393 and #10803.
- Creatures' displayed target now properly matches the unit they are targeting with spells for a split second (blizzlike). This is necessary to get proper client-side orientation.
- Migrate boundary logic to Maps/AreaBoundary instead of having it sit in InstanceScript (to possibly allow use for other purposes).
- Implement the first five boundary types in Maps/AreaBoundary.cpp.
- Add boundary checks to Creature's update logic
- Add boundary data for all Northrend raids
- Add boundary initialization structures and methods to InstanceScript
- Modify EnterEvadeMode signature. It now passes a value from the EvadeReason enum as parameter to allow special casing depending on evade reason
- Remove previous (weird) boundary code that had them linked to GO spawns
- Fix a bug where a player could maintain a conflicting non-perm solo bind if they were in the instance when invited to group. Closes#16150.
- If a group is created while the leader is in an instance that nobody is bound to, the group will take over the instance and bind to it. This stops the homebind timer when reforming group after disconnects and the like.
(cherry picked from commit 0f0a51b87a)
- Rename Map::CanEnter to Map::CannotEnter. Return value changed from boolean (true means player can enter) to enum Map::EnterState (CAN_ENTER=0 means player can enter, any other value is a reason for deny).
- Move hack-y player error messages from within Map::CanEnter to the function calling CanEnter as appropriate (primarily WorldSession::HandleAreaTriggerOpcode).
- Modify WorldSession::HandleAreaTriggerOpcode to properly revive the player upon touching the portal leading to the instance they died in even if they are currently unable to zone in. Fixes and closes#15758.
- Modify Player::LoadFromDB to properly spawn players in the instance they logged off in if possible. Fixes and closes#15561.
- Modify permanent save behavior to be blizzlike: Players can always enter an instance they are saved to (assuming there are no map constraints against it), but get a homebind timer if the instance is already in use.
(cherry picked from commit 43fa7d48a5)
Conflicts:
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Maps/Map.cpp
src/server/game/Maps/MapInstanced.cpp
src/server/game/Miscellaneous/Language.h
- Fix a bug where a player could maintain a conflicting non-perm solo bind if they were in the instance when invited to group. Closes#16150.
- If a group is created while the leader is in an instance that nobody is bound to, the group will take over the instance and bind to it. This stops the homebind timer when reforming group after disconnects and the like.
- Rename Map::CanEnter to Map::CannotEnter. Return value changed from boolean (true means player can enter) to enum Map::EnterState (CAN_ENTER=0 means player can enter, any other value is a reason for deny).
- Move hack-y player error messages from within Map::CanEnter to the function calling CanEnter as appropriate (primarily WorldSession::HandleAreaTriggerOpcode).
- Modify WorldSession::HandleAreaTriggerOpcode to properly revive the player upon touching the portal leading to the instance they died in even if they are currently unable to zone in. Fixes and closes#15758.
- Modify Player::LoadFromDB to properly spawn players in the instance they logged off in if possible. Fixes and closes#15561.
- Modify permanent save behavior to be blizzlike: Players can always enter an instance they are saved to (assuming there are no map constraints against it), but get a homebind timer if the instance is already in use.
- Fix missing yells
- Rearrange existing yells to match live
- Sniffed positions for adds
- Improve add respawn handling
- Make adds not fight the player for control (don't use their spells on their own etc.)
- Update adds' hotbar keys to match live (this will affect other creatures with nonsequential possess keys as well)
- Fix adds' movement when mind controlled, they no longer move automatically when right-clicking (this affects all mind-controlled creatures)
- Blizzlike timers
- Improved Web Wrap target selection
- Added missing text
- Cleanup of web wrap positioning - two players will never be flung to the same position (25-man)
- Further improvement to web wrap spawn behavior - targetable web wrap now only spawns after the player has finished being flung to the respective position (blizzlike)
- Add additional web wrap positions (sniff)
- Reduce initial spawn timer on the encounter from 30 seconds to 5 seconds
- Rearrange respawn logic to fix the "petrified" visual from not showing properly
- Fix a potential infinite respawn loop that could prevent the encounter from initializing properly (fixes and closes#15898)
- Cleaned up events behavior to use phases instead of weird checks for auras.
- Cleaned up Crypt Guard despawn behavior, they should no longer despawn instantly upon death.
- Moved initial greeting from MoveInLineOfSight hack to proper areatrigger script.
- Fixed Crypt Guard respawn behaviour to prevent pulling them before Anub'rekhan has fully reset.
- Fixed Crypt Guard aggro behaviour to call for help on aggro. This prevents pulling the initial pair of Crypt Guards without engaging the boss.
- Added missing boss emotes.
- Code style cleanup.
- Move greeting to areatrigger instead of MoveInLineOfSight hack
- Clean up add spawn handling to prevent various glitching with combinations of evade state and add aggro
- Ensure all adds are always pulled alongside the boss and vice versa
- Add missing texts.
- Fix a bug in the core that prevents castable-while-dead spells (such as Widow's Embrace) from appearing on possess bars.
- Add new DB table `skill_perfect_item_template` that holds information about "perfect" crafts that replace the normal result
- Implement this new DB table into core (SkillExtraItems.cpp, SkillExtraItems.h, SpellEffects.cpp)
- Add data about perfect crafts to new DB table (2015_09_11_00_world.sql)
- Add reload capability to this new table (latch onto skill_extra_item_template to avoid changing command IDs)
Random other change because I stumbled across it and it annoyed me:
- npc_professions.cpp no longer uses magic numbers for quest IDs and creature IDs.
- Added missing raid boss emotes
- Fixed an issue where Noth would stand idly after blinking if his current target stood still
- Fixed some reset edge cases
- Prevent Noth from dying during Balcony phase
- Fix targeting of 25-man Curse of the Plaguebringer (now has 8 targets, down from 10)
- Fix balcony/ground phase durations to be blizzlike
- Fix an issue where summoned mobs would sometimes not be aggroed automatically
- Get rid of ugly millisecond values in favor of seconds times constant
- Moved the chance to yell on kill to the database
- Prevent AoE abilities from hitting Noth during the balcony phase
- General cleanup of events handling
- Generally make @Nayd happy
- NearTeleportTo hack -> proper spell with DB coordinates
- Add boss emotes
- Some code streamlining using event phases and IN_MILLISECONDS instead of large constants
- Improvement to eruption hitbox and delimiters to match retail layout more closely
- Spell timers adjusted from sniffs
- Adjusted doom cast timings as per boss mod timers.
- Add Deathbloom's final tick using spellscript
- Move Spores' Fungal Creep cast handling to Loatheb's cpp instead of handling it in SmartAI
- Fungal Creep should also be cast if the spore expires (important for Spore Loser achievement)
- Remove Fungal Creep from players on reset to avoid cheesy strats
Fixes to Patchwerk AI:
- Hateful Strike can only target the highest 1 (10m)/ 2 (25m) threat targets that aren't the current target. Out of these targets, Hateful Strike hits the highest current HP target.
- Hateful Strike now properly adds threat to all targets eligible for it, plus the current target if it is in melee range. Actual threat amount is not from sniffs - please update this if you have conclusive retail data.
- Cleaned up some millisecond constants and variable names.
Fixed bugs with Sapphiron encounter:
- Sapphiron will now properly re-engage if the previous attempt ended while he was in flight.
- Sapphiron will now properly be hovering while in the air phase instead of standing idly on the ground.
- Move Frost Resistance achievement check from custom script to spell 60539 (Sapphiron Achievement Check), thanks to @Shauren for the heads up.
Fixes quests such as "Valduran the Stormborn" (12984) or "The Air Stands Still" (13125) which previously required the player to out-damage the "helper" NPC to get credit.
This fixes the following bugs:
Escortee NPC quotes are out of order (see #15396 (comment))
Final escort waypoint is located incorrectly and causes the escorted NPC to drop all the way to the bottom of the ocean before quest completion is awarded.
Closes#15396
Signed-off-by: DDuarte <dnpd.dd@gmail.com>