Core/GameObject: Expose several NewFlag fields for future purposes

Port From (https://github.com/TrinityCore/TrinityCore/commit/5e618278141cce1a1fcfc2f1b0e8997367ca9848)
This commit is contained in:
hondacrx
2023-09-14 04:47:43 -04:00
parent 165f2d7f9b
commit dbd3a16c11
+55 -4
View File
@@ -3579,6 +3579,42 @@ namespace Game.Entities
|| m_goValue.CapturePoint.State == BattlegroundCapturePointState.HordeCaptured;
}
FlagState GetFlagState()
{
if (GetGoType() != GameObjectTypes.NewFlag)
return 0;
GameObjectType.NewFlag newFlag = m_goTypeImpl as GameObjectType.NewFlag;
if (newFlag == null)
return 0;
return newFlag.GetState();
}
ObjectGuid GetFlagCarrierGUID()
{
if (GetGoType() != GameObjectTypes.NewFlag)
return ObjectGuid.Empty;
GameObjectType.NewFlag newFlag = m_goTypeImpl as GameObjectType.NewFlag;
if (newFlag == null)
return ObjectGuid.Empty;
return newFlag.GetCarrierGUID();
}
long GetFlagTakenFromBaseTime()
{
if (GetGoType() != GameObjectTypes.NewFlag)
return 0;
GameObjectType.NewFlag newFlag = m_goTypeImpl as GameObjectType.NewFlag;
if (newFlag == null)
return 0;
return newFlag.GetTakenFromBaseTime();
}
public bool MeetsInteractCondition(Player user)
{
if (m_goInfo.GetConditionID1() == 0)
@@ -4355,6 +4391,8 @@ namespace Game.Entities
{
FlagState _state;
long _respawnTime;
ObjectGuid _carrierGUID;
long _takenFromBaseTime;
public NewFlag(GameObject owner) : base(owner)
{
@@ -4365,16 +4403,27 @@ namespace Game.Entities
{
FlagState oldState = _state;
_state = newState;
_owner.UpdateObjectVisibility();
ZoneScript zoneScript = _owner.GetZoneScript();
if (zoneScript != null)
zoneScript.OnFlagStateChange(_owner, oldState, _state, player);
if (player && newState == FlagState.Taken)
_carrierGUID = player.GetGUID();
else
_carrierGUID = ObjectGuid.Empty;
if (newState == FlagState.Taken && oldState == FlagState.InBase)
_takenFromBaseTime = GameTime.GetGameTime();
else if (newState == FlagState.InBase || newState == FlagState.Respawning)
_takenFromBaseTime = 0;
_owner.UpdateObjectVisibility();
if (newState == FlagState.Respawning)
_respawnTime = GameTime.GetGameTimeMS() + _owner.GetGoInfo().NewFlag.RespawnTime;
else
_respawnTime = 0;
ZoneScript zoneScript = _owner.GetZoneScript();
if (zoneScript != null)
zoneScript.OnFlagStateChange(_owner, oldState, _state, player);
}
public override void Update(uint diff)
@@ -4389,6 +4438,8 @@ namespace Game.Entities
}
public FlagState GetState() { return _state; }
public ObjectGuid GetCarrierGUID() { return _carrierGUID; }
public long GetTakenFromBaseTime() { return _takenFromBaseTime; }
}
class SetNewFlagState : GameObjectTypeBase.CustomCommand