Core/GameObjects: Transport (type 11) improvements

Port From (https://github.com/TrinityCore/TrinityCore/commit/630b60eb0dcd3d9ce41582664ab822b049365431)
This commit is contained in:
hondacrx
2022-06-03 16:20:41 -04:00
parent e65ce31742
commit 40444525b2
30 changed files with 807 additions and 377 deletions
+2 -2
View File
@@ -209,7 +209,7 @@ namespace Game.Entities
MoveSplineInit init = new(this);
init.MoveTo(GetPositionX(), GetPositionY(), GetPositionZ(), false);
if (GetTransport())
if (GetTransport() != null)
init.DisableTransportPathTransformations(); // It makes no sense to target global orientation
init.SetFacing(ori);
@@ -1834,7 +1834,7 @@ namespace Game.Entities
if (GetVehicle() != null)
return GetVehicleBase().GetGUID();
if (GetTransport() != null)
return GetTransport().GetGUID();
return GetTransport().GetTransportGUID();
return ObjectGuid.Empty;
}
+1 -1
View File
@@ -295,7 +295,7 @@ namespace Game.Entities
return false;
}
if (IsTypeId(TypeId.Player) && ToPlayer().GetTransport())
if (IsPlayer() && ToPlayer().GetTransport() != null)
{
Log.outFatal(LogFilter.Unit, "Unit:SetCharmedBy: Player on transport is trying to charm {0} (GUID {1})", GetEntry(), GetGUID().ToString());
return false;
+8 -2
View File
@@ -1003,7 +1003,7 @@ namespace Game.Entities
}
Cypher.Assert(!m_vehicle);
vehicle.AddPassenger(this, seatId);
vehicle.AddVehiclePassenger(this, seatId);
}
public void ChangeSeat(sbyte seatId, bool next = true)
@@ -1067,7 +1067,7 @@ namespace Game.Entities
// This should be done before dismiss, because there may be some aura removal
VehicleSeatAddon seatAddon = m_vehicle.GetSeatAddonForSeatOfPassenger(this);
Vehicle vehicle = m_vehicle.RemovePassenger(this);
Vehicle vehicle = (Vehicle)m_vehicle.RemovePassenger(this);
if (vehicle == null)
{
@@ -1998,6 +1998,12 @@ namespace Game.Entities
public void RemoveUnitFlag3(UnitFlags3 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.Flags3), (uint)flags); }
public void ReplaceAllUnitFlags3(UnitFlags3 flags) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.Flags3), (uint)flags); }
public UnitDynFlags GetDynamicFlags() { return (UnitDynFlags)(uint)m_objectData.DynamicFlags; }
public bool HasDynamicFlag(UnitDynFlags flag) { return (m_objectData.DynamicFlags & (uint)flag) != 0; }
public void SetDynamicFlag(UnitDynFlags flag) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_objectData).ModifyValue(m_objectData.DynamicFlags), (uint)flag); }
public void RemoveDynamicFlag(UnitDynFlags flag) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_objectData).ModifyValue(m_objectData.DynamicFlags), (uint)flag); }
public void ReplaceAllDynamicFlags(UnitDynFlags flag) { SetUpdateFieldValue(m_values.ModifyValue(m_objectData).ModifyValue(m_objectData.DynamicFlags), (uint)flag); }
public void SetCreatedBySpell(uint spellId) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.CreatedBySpell), spellId); }
public Emote GetEmoteState() { return (Emote)(int)m_unitData.EmoteState; }