* Core/Quests: check PreviousQuestID values as well when trying to make a quest available to support quest group requirements for another quest group
* checking for previous quests via NextQuestID only works for single followup quests. However, if we want to make multiple quests available after rewarding all quests of an exclusive group we have to consider PreviousQuestID values as well as every single quest of the next quest group has to check the rewarded exclusive group
* only check for previous quests that must be rewarded instead of being active
(cherry picked from commit a0aa9730e25197f8be2611f3b7800bdb979cad35)
* spawn groups have been able to spawn for all difficulties even when they should be restricted to a single difficulty only
(cherry picked from commit 48f63eda9029d4fe16b7a350059c8e26ba8484ce)
* Core/Spells: implement SpellInfo helper to filter for relevant mechanic immunities when sending SMSG_SPELL_START packets.
According to sniff analysis Blizzard does not send all mechanic immunities of creatures but instead only the ones that are responsible for actual interrupts which are MECHANIC_INTERRUPT and MECHANIC_SILENCE. Additionally we no longer send immunities for instant cast spells as sniffs confirm that they are not sent for spells without a cast time.
(cherry picked from commit 6215cb4e0014fbe9df35a8c6b013e7801bd8ffec)
This fixes an issue that was causing the gossip UI to get stuck when the client tried to request questgiver details that it wasnt allowed to retrieve yet
* Core/Units: add new functionality for units to block or enable combat entirely via helper to reflect what CREATURE_DIFFICULTYFLAGS_IGNORE_COMBAT and client AI functions imply
* yeah...
* Nuke Creature::IsCombatDisallowed helper as its unused by now
* no combat extra flag may now be changed on transforms if the transformed entry does not have the flag
(cherry picked from commit 764f22fc9157ad184baa38995ee4e2d821299935)
* the console will now throw a log when the feature is disabled
* additionally the console will now print how long it took to initialize
(cherry picked from commit 210f552ac56979430f1349006c1945b29883a2bc)
Instead of going with shitty bitmasks we now accept plain battleground ids
instead
(cherry picked from commit 8a82403400ef49415e14530f4b55d55ef38bc74e)
Retail does not have a zone id for newly created character until their first login so we do the same as well. This will drastically improve performance on character creations as we no longer unnecessarily load grids and map data.
(cherry picked from commit c50bb00ac7481c1dc09ed0dc7f72ef8e6ea487f5)
Unlike SMART_ACTION_AUTO_ATTACK, this action is actually stopping the entire attack procedure, rather than just hack-disabling auto-attacks. Keep in mind that this action requires a passive react state to prevent a immediate AttackStart ai reaction
(cherry picked from commit 152ea6011694518017a47dc23fdbb7175bfa5481)
- manually set flight states via auras and scripts will no longer be ignored
- restored movement template consideration when generating pathings
- renamed IsLevitating to IsGravityDisabled to reflect the referenced movement flag's name
(cherry picked from commit 43ef610fe059c3da4cc1ad2036f83cfa67ce0fee)
* Additionally he PathGenerator will now check for realtime movement flags instead of creature based template data only so scripted flying movement and players will now correctly get their path calculated
(cherry picked from commit fdcb7388a64bf61a691535933a9fbae0504b80cc)
* Core/Objects: further improvements for MovePositionToFirstCollision
* the PathGenerator will now normalize incomplete destinations as well
* normalize destination positions before launching detour raycasts to get better direction data
* exclude unwanted pathfinding results from further use to avoid unintended behaivior
* Core/PathFinding: Split PATHFIND_FARFROMPOLY into PATHFIND_FARFROMPOLY_START and PATHFIND_FARFROMPOLY_END for start and end position
Handle PATHFIND_FARFROMPOLY_END as valid in MovePositionToFirstCollision
Co-authored-by: jackpoz <[email protected]>
(cherry picked from commit 6485422c6127262855b3c90183388e29dc251de5)
* removed redundant static LOS checks as they are covered by the mmap raycast prior to the check
* removed unnecessary VMap height lookups to determine rapid falloffs as they are covered by the mmap raycast as well
(cherry picked from commit cf849df50af0e930b08c0fa3cd1bb4426be9c69a)
* creature knockbacks will no longer generate a full path but instead only use a destination point to reflect sniff data
* calculate the destination by using a mmap raycast instead of using a mmap path which had the chance of creating weird movements when GetNearPosition failed to get a proper collision point (knocking arround a tree for example or just somewhere it should not go at all)
(cherry picked from commit cfd63c350f5b01fd699903b17162b2f5167b1386)
* dropped unneeded IsUnderwater override for players since the default position data update considers collision height already so we don't have to rely on that tempfix anymore. This actually fixes breathing bars showing up depending on your characters size (gnomes get their breathing bar earlier, taurens later etc)
(cherry picked from commit bea850fb73c6c3b3cc4e51bd3a42d178947882a5)
* This case is not happening in 335 yet as it barely has any spell with pull towardst dest effects. However, this is very well present in 4.x and beyond so let's add it for future cherrypicks
(cherry picked from commit 61aec37b4ffd5fbd0bdde4de1cf7313d578651a7)
* Core/Units: UNIT_FLAG_PACIFIED will no longer block victim updates
* pacified units should only have their melee attacks blocked as counterpart to silence mechanics
* Core/Spells: removed unnecessary attack stop call from pacify aura effect handler
(cherry picked from commit 6cbfda2fcecdda980b60b359018e520f1daeaf3a)
* Core/Vehicles: implement vehicle seat addon table to specify seat orientation offsets and exit positions in form of offsets or absolute positions
* converted Traveler's Tundra Mammoth to seat addon table data
* first follow batch
* whoopsie
* Core/Vehicles: go from local copies to pointers
* Update and rename 2020_99_99_99_world.sql to 2020_02_08_01_world.sql
Co-authored-by: Giacomo Pozzoni <[email protected]>
(cherry picked from commit 98d6c501d7c1a7a632c6ff8b1d46c7d0d4ae5b37)
* according to observations Blizzard is letting creatures do 2 up to 10 spline movements right after each other before waiting for a couple seconds
(cherry picked from commit 78c1216bcf60b9e376d9afd9484ff478bda641b1)
We want our movement to be fully updated before even thinking about interrupting anything. The old logic was updating positions, interrupting stuff and afterwards updating movement generators. This way we were ending up with false interrupts.
properly fixes#22908
(cherry picked from commit 02daf1bf3afc570c26e8e9f431866fcb3720174a)
* updated script model to new standard
* corrected spell usage and timers based on sniff data
* removed hacks
(cherry picked from commit 60763fc5e2d7bb32150d8e03bfd0fb3e7cb890f3)
* Core/Taxis: teleport players to the destination taxi node location instead of straight to their current ground position
* fixed a typo
(cherry picked from commit 7fcb77ecd12c42b8a468e8f932948c99c249a458)
* Core/Movement: fixed taxi pathings getting finalized earlier than intended
Since we handle the intial starting point of a spline properly now the update logic was still expecting the old handling which resulted in incrementing the current node index earlier than intended
* apply a missing change
(cherry picked from commit c1e3d79a4fb5b7b1a9bca36ecd16b9bb902ced92)
* Core/Movement: provide an extra spline path vertex for taxi pathings so the first path point wont get lost.
* Update FlightPathMovementGenerator.cpp
(cherry picked from commit cf3277c641bd877b9fa1939da5da7cde1778561b)
* Core/Spells: do not allow root auras to bypass the root movement template state when getting removed
* yeah....
(cherry picked from commit d629bad7a19c1f4c4cd9fb4382fadd97b320dc38)
* Core/Creatures: rewrote creature aggro radius calculation
* Formulas are taken from WoW Wiki
(cherry picked from commit 980047763a685217e712f58b8713d48523d90ccb)
While the UI does not allow changing the loot mode you can still trigger the opcode by running interface scripts which we will now block as well so nobody can ninja-loot anymore.
(cherry picked from commit 49a9cbf20a483da006e45f2ff953583c75c689f0)
* according to sniffs the group update packet for out of range members has a fixed 5 seconds interval instead of spaming packets like crazy for example when updating positions. On 4.x and above this will fix a very nasty and ugly fps drop
* validated with 4.3.4 and 3.3.5 sniffs
(cherry picked from commit 635cefc67e25c4318d67bf557b66958081c02ac4)
* Core/GameObjects: goober gameobjects may reset only if they have a lock id
Tests have shown that Goobers without a lock id (Data0=0) are not allowed to reset their go state such as the teleporters in Ulduar and Icecrown Citadel. The tests has been expanded by checking 4.x goobers as well and the perfect example that confirms that result is the Ancient Bell for Atramedes' intro which also is not suposed to reset after using it.
* Core/GameObjects: allow to reset goobers without a lock id if a reset time is defined
* fixed a typo
(cherry picked from commit a70845c93de0902c4c6fa55ff10293f7e3679ac5)
This is a needed change in order to make spellclicks functional that are only available when you have a already completed quest.
(cherry picked from commit cd36606027c5fa2353889902c437fa39bb71dfdf)
* Core/LFG: fixed random dungeon cooldown
The issue was that queuing up for random dungeons puts you into a queue for a already selected dungeon from the beginning so the dungeonId that we use here is actually the dungeonId that we will enter when out group is complete. We change that and use our selected dungeons as reference instead which contains the random dungeon at the very beginning (if we queued up for random dungeons so we check that too).
(cherry picked from commit bf8c6f220c07a3316fcf0b04ac6a9a77755b9b1d)
This fixes a weird facing behavior for creatures which caused them to face to their spawn position when dying instead of facing their current victim's orientation
* Core/Skills: gathering items with orange skill level will no longer fail as it has been removed with patch 3.1.0
Closes#21038
(cherry picked from commit 51bcd1a918f6d0a908deb01051a07f63a7f0e9d6)
* Fixed initial offhand attack timer so the main and offhand attacks will now act blizzlike instead of getting executed at the same time
Note: since some creature equipment items cannot be identified as weapon since they are only visual items there is no way to detect this automaticly
(cherry picked from commit 869affa89300c24b85896a050b58241714786454)
* added base script support for the encounter for normal and heroic difficulty
* added instance script for Antorus the Burning Throne
* added sniffed template data for involved gameobjects
* added encounter related spawns to Antorus the Burning Throne
* added instance encounter entry for Garothi Worldbreaker
*added pathing for Ramkahen
*corrected emote states for Ramkahen Guardians
*added cosmetic talk events to Ramkahen Citizens
*added cosmetic talk events for Samir and Blacksmith Abasi