mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/AreaTriggers: Changed how Attached flag is determined - instead of being set in database it is now dynamically set depending on how the areatrigger was created. AreaTriggers created by auras are now all attached by default
This commit is contained in:
@@ -169,7 +169,10 @@ bool AreaTrigger::Create(AreaTriggerCreatePropertiesId areaTriggerCreateProperti
|
||||
|
||||
SetSpellVisual(spellVisual);
|
||||
if (!IsStaticSpawn())
|
||||
{
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetScale), GetCreateProperties()->TimeToTargetScale != 0 ? GetCreateProperties()->TimeToTargetScale : *m_areaTriggerData->Duration);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetPos), *m_areaTriggerData->Duration);
|
||||
}
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::BoundsRadius2D), GetCreateProperties()->Shape.GetMaxSearchRadius());
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::DecalPropertiesID), GetCreateProperties()->DecalPropertiesId);
|
||||
if (IsServerSide())
|
||||
@@ -206,8 +209,6 @@ bool AreaTrigger::Create(AreaTriggerCreatePropertiesId areaTriggerCreateProperti
|
||||
fieldFlags |= AreaTriggerFieldFlags::AbsoluteOrientation;
|
||||
if (flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasDynamicShape))
|
||||
fieldFlags |= AreaTriggerFieldFlags::DynamicShape;
|
||||
if (flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasAttached))
|
||||
fieldFlags |= AreaTriggerFieldFlags::Attached;
|
||||
if (flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasFaceMovementDir))
|
||||
fieldFlags |= AreaTriggerFieldFlags::FaceMovementDir;
|
||||
if (flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasFollowsTerrain))
|
||||
@@ -234,8 +235,9 @@ bool AreaTrigger::Create(AreaTriggerCreatePropertiesId areaTriggerCreateProperti
|
||||
PhasingHandler::InitDbPhaseShift(GetPhaseShift(), spawnData->phaseUseFlags, spawnData->phaseId, spawnData->phaseGroup);
|
||||
}
|
||||
|
||||
if (target && HasAreaTriggerFlag(AreaTriggerFieldFlags::Attached))
|
||||
if (target && aurEff)
|
||||
{
|
||||
SetAreaTriggerFlag(AreaTriggerFieldFlags::Attached);
|
||||
m_movementInfo.transport.guid = target->GetGUID();
|
||||
m_updateFlag.MovementTransport = true;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ enum class AreaTriggerCreatePropertiesFlag : uint32
|
||||
None = 0x00000,
|
||||
HasAbsoluteOrientation = 0x00001,
|
||||
HasDynamicShape = 0x00002,
|
||||
HasAttached = 0x00004,
|
||||
HasAttached = 0x00004, // DEPRECATED
|
||||
HasFaceMovementDir = 0x00008,
|
||||
HasFollowsTerrain = 0x00010, // NYI
|
||||
AlwaysExterior = 0x00020,
|
||||
|
||||
@@ -6383,7 +6383,8 @@ void AuraEffect::HandleCreateAreaTrigger(AuraApplication const* aurApp, uint8 mo
|
||||
if (apply)
|
||||
{
|
||||
AreaTriggerCreatePropertiesId createPropertiesId = { uint32(GetMiscValue()), false };
|
||||
AreaTrigger::CreateAreaTrigger(createPropertiesId, *target, GetBase()->GetDuration(), GetCaster(), target, GetBase()->GetSpellVisual(), GetSpellInfo(), nullptr, this);
|
||||
Position pos = { target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() }; // drop orientation for attached areatrigger
|
||||
AreaTrigger::CreateAreaTrigger(createPropertiesId, pos, GetBase()->GetDuration(), GetCaster(), target, GetBase()->GetSpellVisual(), GetSpellInfo(), nullptr, this);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user