mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Auras: Implemented new aura type 487 (SPELL_AURA_COSMETIC_MOUNTED) (#26988)
This commit is contained in:
@@ -7471,6 +7471,7 @@ float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM, SpellInfo const* spe
|
||||
|
||||
void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)
|
||||
{
|
||||
RemoveAurasByType(SPELL_AURA_COSMETIC_MOUNTED);
|
||||
if (mount)
|
||||
SetMountDisplayId(mount);
|
||||
|
||||
|
||||
@@ -985,6 +985,8 @@ class TC_GAME_API Unit : public WorldObject
|
||||
bool IsMounted() const { return HasUnitFlag(UNIT_FLAG_MOUNT); }
|
||||
uint32 GetMountDisplayId() const { return m_unitData->MountDisplayID; }
|
||||
void SetMountDisplayId(uint32 mountDisplayId) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::MountDisplayID), mountDisplayId); }
|
||||
uint32 GetCosmeticMountDisplayId() const { return m_unitData->CosmeticMountDisplayID; }
|
||||
void SetCosmeticMountDisplayId(uint32 mountDisplayId) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CosmeticMountDisplayID), mountDisplayId); }
|
||||
void Mount(uint32 mount, uint32 vehicleId = 0, uint32 creatureEntry = 0);
|
||||
void Dismount();
|
||||
MountCapabilityEntry const* GetMountCapability(uint32 mountType) const;
|
||||
|
||||
@@ -572,7 +572,7 @@ enum AuraType : uint32
|
||||
SPELL_AURA_ALLOW_INTERRUPT_SPELL = 484, // NYI
|
||||
SPELL_AURA_MOD_MOVEMENT_FORCE_MAGNITUDE = 485,
|
||||
SPELL_AURA_486 = 486,
|
||||
SPELL_AURA_487 = 487,
|
||||
SPELL_AURA_COSMETIC_MOUNTED = 487,
|
||||
SPELL_AURA_488 = 488,
|
||||
SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE = 489,
|
||||
SPELL_AURA_490 = 490,
|
||||
|
||||
@@ -555,7 +555,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
|
||||
&AuraEffect::HandleNULL, //484 SPELL_AURA_ALLOW_INTERRUPT_SPELL
|
||||
&AuraEffect::HandleModMovementForceMagnitude, //485 SPELL_AURA_MOD_MOVEMENT_FORCE_MAGNITUDE
|
||||
&AuraEffect::HandleNULL, //486
|
||||
&AuraEffect::HandleNULL, //487
|
||||
&AuraEffect::HandleCosmeticMounted, //487 SPELL_AURA_COSMETIC_MOUNTED
|
||||
&AuraEffect::HandleNULL, //488
|
||||
&AuraEffect::HandleNULL, //489 SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE
|
||||
&AuraEffect::HandleNULL, //490
|
||||
@@ -6003,6 +6003,23 @@ void AuraEffect::HandleStoreTeleportReturnPoint(AuraApplication const* aurApp, u
|
||||
playerTarget->RemoveStoredAuraTeleportLocation(GetSpellInfo()->Id);
|
||||
}
|
||||
|
||||
void AuraEffect::HandleCosmeticMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const
|
||||
{
|
||||
if (!(mode & AURA_EFFECT_HANDLE_REAL))
|
||||
return;
|
||||
|
||||
if (apply)
|
||||
aurApp->GetTarget()->SetCosmeticMountDisplayId(GetMiscValue());
|
||||
else
|
||||
aurApp->GetTarget()->SetCosmeticMountDisplayId(0); // set cosmetic mount to 0, even if multiple auras are active; tested with zandalari racial + divine steed
|
||||
|
||||
Player* playerTarget = aurApp->GetTarget()->ToPlayer();
|
||||
if (!playerTarget)
|
||||
return;
|
||||
|
||||
playerTarget->SendMovementSetCollisionHeight(playerTarget->GetCollisionHeight(), WorldPackets::Movement::UpdateCollisionHeightReason::Force);
|
||||
}
|
||||
|
||||
template TC_GAME_API void AuraEffect::GetTargetList(std::list<Unit*>&) const;
|
||||
template TC_GAME_API void AuraEffect::GetTargetList(std::deque<Unit*>&) const;
|
||||
template TC_GAME_API void AuraEffect::GetTargetList(std::vector<Unit*>&) const;
|
||||
|
||||
@@ -322,6 +322,7 @@ class TC_GAME_API AuraEffect
|
||||
void HandleTriggerSpellOnPowerAmount(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
void HandleTriggerSpellOnPowerPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
void HandleStoreTeleportReturnPoint(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
void HandleCosmeticMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
|
||||
// aura effect periodic tick handlers
|
||||
void HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster) const;
|
||||
|
||||
@@ -46,9 +46,12 @@ enum PaladinSpells
|
||||
SPELL_PALADIN_CONCENTRACTION_AURA = 19746,
|
||||
SPELL_PALADIN_DIVINE_PURPOSE_PROC = 90174,
|
||||
SPELL_PALADIN_DIVINE_STEED_HUMAN = 221883,
|
||||
SPELL_PALADIN_DIVINE_STEED_DWARF = 276111,
|
||||
SPELL_PALADIN_DIVINE_STEED_DRAENEI = 221887,
|
||||
SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF = 276112,
|
||||
SPELL_PALADIN_DIVINE_STEED_BLOODELF = 221886,
|
||||
SPELL_PALADIN_DIVINE_STEED_TAUREN = 221885,
|
||||
SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL = 294133,
|
||||
SPELL_PALADIN_DIVINE_STORM_DAMAGE = 224239,
|
||||
SPELL_PALADIN_ENDURING_LIGHT = 40471,
|
||||
SPELL_PALADIN_ENDURING_JUDGEMENT = 40472,
|
||||
@@ -355,9 +358,12 @@ class spell_pal_divine_steed : public SpellScript
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_DIVINE_STEED_HUMAN,
|
||||
SPELL_PALADIN_DIVINE_STEED_DWARF,
|
||||
SPELL_PALADIN_DIVINE_STEED_DRAENEI,
|
||||
SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF,
|
||||
SPELL_PALADIN_DIVINE_STEED_BLOODELF,
|
||||
SPELL_PALADIN_DIVINE_STEED_TAUREN
|
||||
SPELL_PALADIN_DIVINE_STEED_TAUREN,
|
||||
SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL
|
||||
});
|
||||
}
|
||||
|
||||
@@ -369,18 +375,27 @@ class spell_pal_divine_steed : public SpellScript
|
||||
switch (caster->getRace())
|
||||
{
|
||||
case RACE_HUMAN:
|
||||
case RACE_DWARF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
|
||||
break;
|
||||
case RACE_DWARF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_DWARF;
|
||||
break;
|
||||
case RACE_DRAENEI:
|
||||
case RACE_LIGHTFORGED_DRAENEI:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_DRAENEI;
|
||||
break;
|
||||
case RACE_DARK_IRON_DWARF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF;
|
||||
break;
|
||||
case RACE_BLOODELF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_BLOODELF;
|
||||
break;
|
||||
case RACE_TAUREN:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_TAUREN;
|
||||
break;
|
||||
case RACE_ZANDALARI_TROLL:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user