diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-04-06 20:50:59 +0200 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2024-05-28 16:34:58 +0200 |
| commit | 093546f22c2908017bbcf36e0b589ca5d7660eff (patch) | |
| tree | cefa11a47127a1f63d4b87d8fb128182eb4d2f5b /src/server/game/Entities | |
| parent | 3438404575d1e4ed7c7b2063d0e6f36b1d976800 (diff) | |
Core/Scripts: Integrate new ActionResultSetter with movement generators and spells
(cherry picked from commit b265c49977235dea5e7e69d7b6fb93f4943bf87a)
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 10 |
3 files changed, 18 insertions, 10 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 6794ad6a21e..edd9206ff30 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2965,6 +2965,8 @@ SpellCastResult WorldObject::CastSpell(CastSpellTargetArg const& targets, uint32 } spell->m_customArg = args.CustomArg; + spell->m_scriptResult = args.ScriptResult; + spell->m_scriptWaitsForSpellHit = args.ScriptWaitsForSpellHit; return spell->prepare(*targets.Targets, args.TriggeringAura); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 90baf8de819..7c1e2d036bb 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22072,7 +22072,7 @@ UF::PVPInfo const* Player::GetPvpInfoForBracket(int8 bracket) const } bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc /*= nullptr*/, uint32 spellid /*= 0*/, uint32 preferredMountDisplay /*= 0*/, - Optional<float> speed /*= {}*/) + Optional<float> speed /*= {}*/, Optional<Scripting::v2::ActionResultSetter<MovementStopReason>> const& scriptResult /*= {}*/) { if (nodes.size() < 2) { @@ -22252,18 +22252,19 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc ModifyMoney(-int64(firstcost)); UpdateCriteria(CriteriaType::MoneySpentOnTaxis, firstcost); GetSession()->SendActivateTaxiReply(ERR_TAXIOK); - StartTaxiMovement(mount_display_id, sourcepath, 0, speed); + StartTaxiMovement(mount_display_id, sourcepath, 0, speed, Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>(scriptResult)); } return true; } -bool Player::ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid /*= 0*/, Optional<float> speed /*= {}*/) +bool Player::ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid /*= 0*/, Optional<float> speed /*= {}*/, + Optional<Scripting::v2::ActionResultSetter<MovementStopReason>> const& scriptResult /*= {}*/) { TaxiPathEntry const* entry = sTaxiPathStore.LookupEntry(taxi_path_id); if (!entry) return false; - return ActivateTaxiPathTo({ { entry->FromTaxiNode, entry->ToTaxiNode } }, nullptr, spellid, 0, speed); + return ActivateTaxiPathTo({ { entry->FromTaxiNode, entry->ToTaxiNode } }, nullptr, spellid, 0, speed, scriptResult); } void Player::FinishTaxiFlight() @@ -22329,10 +22330,11 @@ void Player::ContinueTaxiFlight() } } - StartTaxiMovement(mountDisplayId, path, startNode, {}); + StartTaxiMovement(mountDisplayId, path, startNode, {}, {}); } -void Player::StartTaxiMovement(uint32 mountDisplayId, uint32 path, uint32 pathNode, Optional<float> speed) +void Player::StartTaxiMovement(uint32 mountDisplayId, uint32 path, uint32 pathNode, Optional<float> speed, + Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>&& scriptResult) { // remove fake death RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); @@ -22340,7 +22342,7 @@ void Player::StartTaxiMovement(uint32 mountDisplayId, uint32 path, uint32 pathNo if (mountDisplayId) Mount(mountDisplayId); - GetMotionMaster()->MoveTaxiFlight(path, pathNode, speed); + GetMotionMaster()->MoveTaxiFlight(path, pathNode, speed, std::move(scriptResult)); } void Player::InitDataForForm(bool reapplyMods) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 1e8eab39d21..95e09d1ac73 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -102,6 +102,7 @@ enum InventoryType : uint8; enum ItemClass : uint8; enum LootError : uint8; enum LootType : uint8; +enum class MovementStopReason : uint8; enum PlayerRestState : uint8; enum class PlayerCreateMode : int8; enum RestTypes : uint8; @@ -1150,12 +1151,15 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> PlayerTaxi m_taxi; void InitTaxiNodesForLevel() { m_taxi.InitTaxiNodesForLevel(GetRace(), GetClass(), GetLevel()); } - bool ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc = nullptr, uint32 spellid = 0, uint32 preferredMountDisplay = 0, Optional<float> speed = {}); - bool ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid = 0, Optional<float> speed = {}); + bool ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc = nullptr, uint32 spellid = 0, uint32 preferredMountDisplay = 0, Optional<float> speed = {}, + Optional<Scripting::v2::ActionResultSetter<MovementStopReason>> const& scriptResult = {}); + bool ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid = 0, Optional<float> speed = {}, + Optional<Scripting::v2::ActionResultSetter<MovementStopReason>> const& scriptResult = {}); void FinishTaxiFlight(); void CleanupAfterTaxiFlight(); void ContinueTaxiFlight(); - void StartTaxiMovement(uint32 mountDisplayId, uint32 path, uint32 pathNode, Optional<float> speed); + void StartTaxiMovement(uint32 mountDisplayId, uint32 path, uint32 pathNode, Optional<float> speed, + Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>&& scriptResult); bool IsDeveloper() const { return HasPlayerFlag(PLAYER_FLAGS_DEVELOPER); } void SetDeveloper(bool on) { if (on) SetPlayerFlag(PLAYER_FLAGS_DEVELOPER); else RemovePlayerFlag(PLAYER_FLAGS_DEVELOPER); } |
