Remove custom OptionalType and use the default c# nullable type.
This commit is contained in:
@@ -172,13 +172,13 @@ namespace Game.Entities
|
||||
|
||||
uint timeToTarget = GetCreateProperties().TimeToTarget != 0 ? GetCreateProperties().TimeToTarget : m_areaTriggerData.Duration;
|
||||
|
||||
if (GetCreateProperties().OrbitInfo.HasValue)
|
||||
if (GetCreateProperties().OrbitInfo != null)
|
||||
{
|
||||
AreaTriggerOrbitInfo orbit = GetCreateProperties().OrbitInfo.Value;
|
||||
AreaTriggerOrbitInfo orbit = GetCreateProperties().OrbitInfo;
|
||||
if (target && GetTemplate() != null && GetTemplate().HasFlag(AreaTriggerFlags.HasAttached))
|
||||
orbit.PathTarget.Set(target.GetGUID());
|
||||
orbit.PathTarget = target.GetGUID();
|
||||
else
|
||||
orbit.Center.Set(new Vector3(pos.posX, pos.posY, pos.posZ));
|
||||
orbit.Center = new(pos.posX, pos.posY, pos.posZ);
|
||||
|
||||
InitOrbit(orbit, timeToTarget);
|
||||
}
|
||||
@@ -759,10 +759,10 @@ namespace Game.Entities
|
||||
|
||||
AreaTriggerRePath reshape = new();
|
||||
reshape.TriggerGUID = GetGUID();
|
||||
reshape.AreaTriggerSpline.Value = new();
|
||||
reshape.AreaTriggerSpline.Value.ElapsedTimeForMovement = GetElapsedTimeForMovement();
|
||||
reshape.AreaTriggerSpline.Value.TimeToTarget = timeToTarget;
|
||||
reshape.AreaTriggerSpline.Value.Points = splinePoints;
|
||||
reshape.AreaTriggerSpline = new();
|
||||
reshape.AreaTriggerSpline.ElapsedTimeForMovement = GetElapsedTimeForMovement();
|
||||
reshape.AreaTriggerSpline.TimeToTarget = timeToTarget;
|
||||
reshape.AreaTriggerSpline.Points = splinePoints;
|
||||
SendMessageToSet(reshape, true);
|
||||
}
|
||||
|
||||
@@ -781,10 +781,10 @@ namespace Game.Entities
|
||||
m_areaTriggerData.ClearChanged(m_areaTriggerData.TimeToTarget);
|
||||
});
|
||||
|
||||
_orbitInfo.Set(orbit);
|
||||
_orbitInfo = orbit;
|
||||
|
||||
_orbitInfo.Value.TimeToTarget = timeToTarget;
|
||||
_orbitInfo.Value.ElapsedTimeForMovement = 0;
|
||||
_orbitInfo.TimeToTarget = timeToTarget;
|
||||
_orbitInfo.ElapsedTimeForMovement = 0;
|
||||
|
||||
if (IsInWorld)
|
||||
{
|
||||
@@ -798,23 +798,23 @@ namespace Game.Entities
|
||||
|
||||
public bool HasOrbit()
|
||||
{
|
||||
return _orbitInfo.HasValue;
|
||||
return _orbitInfo != null;
|
||||
}
|
||||
|
||||
Position GetOrbitCenterPosition()
|
||||
{
|
||||
if (!_orbitInfo.HasValue)
|
||||
if (_orbitInfo == null)
|
||||
return null;
|
||||
|
||||
if (_orbitInfo.Value.PathTarget.HasValue)
|
||||
if (_orbitInfo.PathTarget.HasValue)
|
||||
{
|
||||
WorldObject center = Global.ObjAccessor.GetWorldObject(this, _orbitInfo.Value.PathTarget.Value);
|
||||
WorldObject center = Global.ObjAccessor.GetWorldObject(this, _orbitInfo.PathTarget.Value);
|
||||
if (center)
|
||||
return center;
|
||||
}
|
||||
|
||||
if (_orbitInfo.Value.Center.HasValue)
|
||||
return new Position(_orbitInfo.Value.Center.Value);
|
||||
if (_orbitInfo.Center.HasValue)
|
||||
return new Position(_orbitInfo.Center.Value);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -825,7 +825,7 @@ namespace Game.Entities
|
||||
if (centerPos == null)
|
||||
return GetPosition();
|
||||
|
||||
AreaTriggerOrbitInfo cmi = _orbitInfo.Value;
|
||||
AreaTriggerOrbitInfo cmi = _orbitInfo;
|
||||
|
||||
// AreaTrigger make exactly "Duration / TimeToTarget" loops during his life time
|
||||
float pathProgress = (float)cmi.ElapsedTimeForMovement / cmi.TimeToTarget;
|
||||
@@ -858,10 +858,10 @@ namespace Game.Entities
|
||||
|
||||
void UpdateOrbitPosition(uint diff)
|
||||
{
|
||||
if (_orbitInfo.Value.StartDelay > GetElapsedTimeForMovement())
|
||||
if (_orbitInfo.StartDelay > GetElapsedTimeForMovement())
|
||||
return;
|
||||
|
||||
_orbitInfo.Value.ElapsedTimeForMovement = (int)(GetElapsedTimeForMovement() - _orbitInfo.Value.StartDelay);
|
||||
_orbitInfo.ElapsedTimeForMovement = (int)(GetElapsedTimeForMovement() - _orbitInfo.StartDelay);
|
||||
|
||||
Position pos = CalculateOrbitPosition();
|
||||
|
||||
@@ -1066,7 +1066,7 @@ namespace Game.Entities
|
||||
public Spline GetSpline() { return _spline; }
|
||||
public uint GetElapsedTimeForMovement() { return GetTimeSinceCreated(); } // @todo: research the right value, in sniffs both timers are nearly identical
|
||||
|
||||
public Optional<AreaTriggerOrbitInfo> GetCircularMovementInfo() { return _orbitInfo; }
|
||||
public AreaTriggerOrbitInfo GetCircularMovementInfo() { return _orbitInfo; }
|
||||
|
||||
AreaTriggerFieldData m_areaTriggerData;
|
||||
|
||||
@@ -1093,7 +1093,7 @@ namespace Game.Entities
|
||||
int _lastSplineIndex;
|
||||
uint _movementTime;
|
||||
|
||||
Optional<AreaTriggerOrbitInfo> _orbitInfo;
|
||||
AreaTriggerOrbitInfo _orbitInfo;
|
||||
|
||||
AreaTriggerCreateProperties _areaTriggerCreateProperties;
|
||||
AreaTriggerTemplate _areaTriggerTemplate;
|
||||
|
||||
@@ -212,7 +212,7 @@ namespace Game.Entities
|
||||
public bool IsCylinder() { return TriggerType == AreaTriggerTypes.Cylinder; }
|
||||
}
|
||||
|
||||
public struct AreaTriggerOrbitInfo
|
||||
public class AreaTriggerOrbitInfo
|
||||
{
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
@@ -236,8 +236,8 @@ namespace Game.Entities
|
||||
data.WriteVector3(Center.Value);
|
||||
}
|
||||
|
||||
public Optional<ObjectGuid> PathTarget;
|
||||
public Optional<Vector3> Center;
|
||||
public ObjectGuid? PathTarget;
|
||||
public Vector3? Center;
|
||||
public bool CounterClockwise;
|
||||
public bool CanLoop;
|
||||
public uint TimeToTarget;
|
||||
@@ -315,7 +315,7 @@ namespace Game.Entities
|
||||
public List<Vector2> PolygonVertices = new();
|
||||
public List<Vector2> PolygonVerticesTarget = new();
|
||||
public List<Vector3> SplinePoints = new();
|
||||
public Optional<AreaTriggerOrbitInfo> OrbitInfo;
|
||||
public AreaTriggerOrbitInfo OrbitInfo;
|
||||
|
||||
public uint ScriptId;
|
||||
}
|
||||
|
||||
@@ -2828,9 +2828,9 @@ namespace Game.Entities
|
||||
|
||||
public BonusData(ItemInstance itemInstance) : this(Global.ObjectMgr.GetItemTemplate(itemInstance.ItemID))
|
||||
{
|
||||
if (itemInstance.ItemBonus.HasValue)
|
||||
if (itemInstance.ItemBonus != null)
|
||||
{
|
||||
foreach (uint bonusListID in itemInstance.ItemBonus.Value.BonusListIDs)
|
||||
foreach (uint bonusListID in itemInstance.ItemBonus.BonusListIDs)
|
||||
AddBonusList(bonusListID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,35 @@ namespace Game.Entities
|
||||
public T GetValue() { return _value; }
|
||||
}
|
||||
|
||||
public class OptionalUpdateField<T> : IUpdateField<T> where T : new()
|
||||
{
|
||||
bool _hasValue;
|
||||
public T _value;
|
||||
public int BlockBit;
|
||||
public int Bit;
|
||||
|
||||
public OptionalUpdateField(int blockBit, int bit)
|
||||
{
|
||||
BlockBit = blockBit;
|
||||
Bit = bit;
|
||||
}
|
||||
|
||||
public static implicit operator T(OptionalUpdateField<T> updateField)
|
||||
{
|
||||
return updateField._value;
|
||||
}
|
||||
|
||||
public void SetValue(T value)
|
||||
{
|
||||
_hasValue = true;
|
||||
_value = value;
|
||||
}
|
||||
|
||||
public T GetValue() { return _value; }
|
||||
|
||||
public bool HasValue() { return _hasValue; }
|
||||
}
|
||||
|
||||
public class UpdateFieldArray<T> where T : new()
|
||||
{
|
||||
public T[] _values;
|
||||
@@ -351,6 +380,12 @@ namespace Game.Entities
|
||||
((IHasChangesMask)updateField._value).ClearChangesMask();
|
||||
}
|
||||
|
||||
public void ClearChangesMask<U>(OptionalUpdateField<U> updateField) where U : new()
|
||||
{
|
||||
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
||||
((IHasChangesMask)updateField._value).ClearChangesMask();
|
||||
}
|
||||
|
||||
public void ClearChangesMask<U>(UpdateFieldArray<U> updateField) where U : new()
|
||||
{
|
||||
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
||||
|
||||
@@ -3548,7 +3548,7 @@ namespace Game.Entities
|
||||
public UpdateField<uint> HonorNextLevel = new(98, 103);
|
||||
public UpdateField<byte> NumBankSlots = new(98, 104);
|
||||
public UpdateField<ActivePlayerUnk901> Field_1410 = new(98, 106);
|
||||
public UpdateField<Optional<QuestSession>> QuestSession = new(98, 105);
|
||||
public OptionalUpdateField<QuestSession> QuestSession = new(98, 105);
|
||||
public UpdateField<int> UiChromieTimeExpansionID = new(98, 107);
|
||||
public UpdateField<int> TransportServerTime = new(98, 108);
|
||||
public UpdateField<uint> WeeklyRewardsPeriodSinceOrigin = new(98, 109); // week count since Cfg_RegionsEntry::ChallengeOrigin
|
||||
@@ -3830,11 +3830,11 @@ namespace Game.Entities
|
||||
data.WriteBit(BankAutoSortDisabled);
|
||||
data.WriteBit(SortBagsRightToLeft);
|
||||
data.WriteBit(InsertItemsLeftToRight);
|
||||
data.WriteBits(QuestSession.GetValue().HasValue, 1);
|
||||
data.WriteBits(QuestSession.HasValue(), 1);
|
||||
((ActivePlayerUnk901)Field_1410).WriteCreate(data, owner, receiver);
|
||||
if (QuestSession.GetValue().HasValue)
|
||||
if (QuestSession.HasValue())
|
||||
{
|
||||
QuestSession.GetValue().Value.WriteCreate(data, owner, receiver);
|
||||
QuestSession.GetValue().WriteCreate(data, owner, receiver);
|
||||
}
|
||||
DungeonScore._value.Write(data);
|
||||
for (int i = 0; i < CharacterRestrictions.Size(); ++i)
|
||||
@@ -4599,16 +4599,16 @@ namespace Game.Entities
|
||||
}
|
||||
if (changesMask[98])
|
||||
{
|
||||
data.WriteBits(QuestSession.GetValue().HasValue, 1);
|
||||
data.WriteBits(QuestSession.HasValue(), 1);
|
||||
if (changesMask[106])
|
||||
{
|
||||
((ActivePlayerUnk901)Field_1410).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
if (changesMask[105])
|
||||
{
|
||||
if (QuestSession.GetValue().HasValue)
|
||||
if (QuestSession.HasValue())
|
||||
{
|
||||
QuestSession.GetValue().Value.WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
QuestSession.GetValue().WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
if (changesMask[111])
|
||||
|
||||
@@ -522,7 +522,7 @@ namespace Game.Entities
|
||||
// *data << *areaTrigger.GetMovementScript(); // AreaTriggerMovementScriptInfo
|
||||
|
||||
if (hasOrbit)
|
||||
areaTrigger.GetCircularMovementInfo().Value.Write(data);
|
||||
areaTrigger.GetCircularMovementInfo().Write(data);
|
||||
}
|
||||
|
||||
if (flags.GameObject)
|
||||
@@ -960,7 +960,7 @@ namespace Game.Entities
|
||||
if (GetTypeId() == TypeId.Player)
|
||||
return;
|
||||
|
||||
m_visibilityDistanceOverride.Set(SharedConst.VisibilityDistances[(int)type]);
|
||||
m_visibilityDistanceOverride = SharedConst.VisibilityDistances[(int)type];
|
||||
}
|
||||
|
||||
public virtual void CleanupsBeforeDelete(bool finalCleanup = true)
|
||||
@@ -3577,7 +3577,7 @@ namespace Game.Entities
|
||||
string _name;
|
||||
protected bool m_isActive;
|
||||
bool m_isFarVisible;
|
||||
Optional<float> m_visibilityDistanceOverride;
|
||||
float? m_visibilityDistanceOverride;
|
||||
bool m_isWorldObject;
|
||||
public ZoneScript m_zoneScript;
|
||||
|
||||
|
||||
@@ -265,7 +265,7 @@ namespace Game.Entities
|
||||
public class PlayerInfo
|
||||
{
|
||||
public CreatePosition createPosition;
|
||||
public Optional<CreatePosition> createPositionNPE;
|
||||
public CreatePosition? createPositionNPE;
|
||||
|
||||
public List<PlayerCreateInfoItem> item = new();
|
||||
public List<uint> customSpells = new();
|
||||
@@ -273,9 +273,9 @@ namespace Game.Entities
|
||||
public List<PlayerCreateInfoAction> action = new();
|
||||
public List<SkillRaceClassInfoRecord> skills = new();
|
||||
|
||||
public Optional<uint> introMovieId;
|
||||
public Optional<uint> introSceneId;
|
||||
public Optional<uint> introSceneIdNPE;
|
||||
public uint? introMovieId;
|
||||
public uint? introSceneId;
|
||||
public uint? introSceneIdNPE;
|
||||
|
||||
public PlayerLevelInfo[] levelInfo = new PlayerLevelInfo[WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel)];
|
||||
|
||||
|
||||
@@ -200,12 +200,12 @@ namespace Game.Entities
|
||||
itemPurchaseRefundResult.Result = error;
|
||||
if (error == 0)
|
||||
{
|
||||
itemPurchaseRefundResult.Contents.Value = new();
|
||||
itemPurchaseRefundResult.Contents.Value.Money = item.GetPaidMoney();
|
||||
itemPurchaseRefundResult.Contents = new();
|
||||
itemPurchaseRefundResult.Contents.Money = item.GetPaidMoney();
|
||||
for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) // item cost data
|
||||
{
|
||||
itemPurchaseRefundResult.Contents.Value.Items[i].ItemCount = iece.ItemCount[i];
|
||||
itemPurchaseRefundResult.Contents.Value.Items[i].ItemID = iece.ItemID[i];
|
||||
itemPurchaseRefundResult.Contents.Items[i].ItemCount = iece.ItemCount[i];
|
||||
itemPurchaseRefundResult.Contents.Items[i].ItemID = iece.ItemID[i];
|
||||
}
|
||||
|
||||
for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) // currency cost data
|
||||
@@ -213,8 +213,8 @@ namespace Game.Entities
|
||||
if (iece.Flags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i)))
|
||||
continue;
|
||||
|
||||
itemPurchaseRefundResult.Contents.Value.Currencies[i].CurrencyCount = iece.CurrencyCount[i];
|
||||
itemPurchaseRefundResult.Contents.Value.Currencies[i].CurrencyID = iece.CurrencyID[i];
|
||||
itemPurchaseRefundResult.Contents.Currencies[i].CurrencyCount = iece.CurrencyCount[i];
|
||||
itemPurchaseRefundResult.Contents.Currencies[i].CurrencyID = iece.CurrencyID[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -787,16 +787,16 @@ namespace Game.Entities
|
||||
SendPacket(raidInstanceMessage);
|
||||
}
|
||||
|
||||
public override void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional<LiquidData> newLiquidData)
|
||||
public override void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, LiquidData newLiquidData)
|
||||
{
|
||||
// process liquid auras using generic unit code
|
||||
base.ProcessTerrainStatusUpdate(oldLiquidStatus, newLiquidData);
|
||||
|
||||
// player specific logic for mirror timers
|
||||
if (GetLiquidStatus() != 0 && newLiquidData.HasValue)
|
||||
if (GetLiquidStatus() != 0 && newLiquidData != null)
|
||||
{
|
||||
// Breath bar state (under water in any liquid type)
|
||||
if (newLiquidData.Value.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.AllLiquids))
|
||||
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.AllLiquids))
|
||||
{
|
||||
if (GetLiquidStatus().HasAnyFlag(ZLiquidStatus.UnderWater))
|
||||
m_MirrorTimerFlags |= PlayerUnderwaterState.InWater;
|
||||
@@ -805,13 +805,13 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
// Fatigue bar state (if not on flight path or transport)
|
||||
if (newLiquidData.Value.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.DarkWater) && !IsInFlight() && !GetTransport())
|
||||
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.DarkWater) && !IsInFlight() && !GetTransport())
|
||||
m_MirrorTimerFlags |= PlayerUnderwaterState.InDarkWater;
|
||||
else
|
||||
m_MirrorTimerFlags &= ~PlayerUnderwaterState.InDarkWater;
|
||||
|
||||
// Lava state (any contact)
|
||||
if (newLiquidData.Value.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.Magma))
|
||||
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.Magma))
|
||||
{
|
||||
if (GetLiquidStatus().HasAnyFlag(ZLiquidStatus.InContact))
|
||||
m_MirrorTimerFlags |= PlayerUnderwaterState.InLava;
|
||||
@@ -820,7 +820,7 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
// Slime state (any contact)
|
||||
if (newLiquidData.Value.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.Slime))
|
||||
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.Slime))
|
||||
{
|
||||
if (GetLiquidStatus().HasAnyFlag(ZLiquidStatus.InContact))
|
||||
m_MirrorTimerFlags |= PlayerUnderwaterState.InSlime;
|
||||
|
||||
@@ -1238,10 +1238,10 @@ namespace Game.Entities
|
||||
packet.Type = (uint)id;
|
||||
packet.Quantity = newTotalCount;
|
||||
packet.SuppressChatLog = !printLog;
|
||||
packet.WeeklyQuantity.Set(newWeekCount);
|
||||
packet.TrackedQuantity.Set(newTrackedCount);
|
||||
packet.WeeklyQuantity = newWeekCount;
|
||||
packet.TrackedQuantity = newTrackedCount;
|
||||
packet.Flags = playerCurrency.Flags;
|
||||
packet.QuantityChange.Set(count);
|
||||
packet.QuantityChange = count;
|
||||
|
||||
SendPacket(packet);
|
||||
}
|
||||
@@ -1835,9 +1835,10 @@ namespace Game.Entities
|
||||
transport = GetTransport();
|
||||
if (transport)
|
||||
{
|
||||
transferPending.Ship.Value = new();
|
||||
transferPending.Ship.Value.Id = transport.GetEntry();
|
||||
transferPending.Ship.Value.OriginMapID = (int)GetMapId();
|
||||
TransferPending.ShipTransferPending shipTransferPending = new();
|
||||
shipTransferPending.Id = transport.GetEntry();
|
||||
shipTransferPending.OriginMapID = (int)GetMapId();
|
||||
transferPending.Ship = shipTransferPending;
|
||||
}
|
||||
|
||||
SendPacket(transferPending);
|
||||
@@ -1879,7 +1880,7 @@ namespace Game.Entities
|
||||
return TeleportTo(m_bgData.joinPos);
|
||||
}
|
||||
|
||||
public uint GetStartLevel(Race race, Class playerClass, Optional<uint> characterTemplateId = default)
|
||||
public uint GetStartLevel(Race race, Class playerClass, uint? characterTemplateId = null)
|
||||
{
|
||||
uint startLevel = WorldConfig.GetUIntValue(WorldCfg.StartPlayerLevel);
|
||||
if (CliDB.ChrRacesStorage.LookupByKey(race).GetFlags().HasAnyFlag(ChrRacesFlag.IsAlliedRace))
|
||||
@@ -4980,32 +4981,32 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
if (playerChoiceResponseTemplate.Reward.HasValue)
|
||||
if (playerChoiceResponseTemplate.Reward != null)
|
||||
{
|
||||
var reward = new Networking.Packets.PlayerChoiceResponseReward();
|
||||
reward.TitleID = playerChoiceResponseTemplate.Reward.Value.TitleId;
|
||||
reward.PackageID = playerChoiceResponseTemplate.Reward.Value.PackageId;
|
||||
reward.SkillLineID = playerChoiceResponseTemplate.Reward.Value.SkillLineId;
|
||||
reward.SkillPointCount = playerChoiceResponseTemplate.Reward.Value.SkillPointCount;
|
||||
reward.ArenaPointCount = playerChoiceResponseTemplate.Reward.Value.ArenaPointCount;
|
||||
reward.HonorPointCount = playerChoiceResponseTemplate.Reward.Value.HonorPointCount;
|
||||
reward.Money = playerChoiceResponseTemplate.Reward.Value.Money;
|
||||
reward.Xp = playerChoiceResponseTemplate.Reward.Value.Xp;
|
||||
reward.TitleID = playerChoiceResponseTemplate.Reward.TitleId;
|
||||
reward.PackageID = playerChoiceResponseTemplate.Reward.PackageId;
|
||||
reward.SkillLineID = playerChoiceResponseTemplate.Reward.SkillLineId;
|
||||
reward.SkillPointCount = playerChoiceResponseTemplate.Reward.SkillPointCount;
|
||||
reward.ArenaPointCount = playerChoiceResponseTemplate.Reward.ArenaPointCount;
|
||||
reward.HonorPointCount = playerChoiceResponseTemplate.Reward.HonorPointCount;
|
||||
reward.Money = playerChoiceResponseTemplate.Reward.Money;
|
||||
reward.Xp = playerChoiceResponseTemplate.Reward.Xp;
|
||||
|
||||
foreach (var item in playerChoiceResponseTemplate.Reward.Value.Items)
|
||||
foreach (var item in playerChoiceResponseTemplate.Reward.Items)
|
||||
{
|
||||
var rewardEntry = new Networking.Packets.PlayerChoiceResponseRewardEntry();
|
||||
rewardEntry.Item.ItemID = item.Id;
|
||||
rewardEntry.Quantity = item.Quantity;
|
||||
if (!item.BonusListIDs.Empty())
|
||||
{
|
||||
rewardEntry.Item.ItemBonus.Value = new();
|
||||
rewardEntry.Item.ItemBonus.Value.BonusListIDs = item.BonusListIDs;
|
||||
rewardEntry.Item.ItemBonus = new();
|
||||
rewardEntry.Item.ItemBonus.BonusListIDs = item.BonusListIDs;
|
||||
}
|
||||
reward.Items.Add(rewardEntry);
|
||||
}
|
||||
|
||||
foreach (var currency in playerChoiceResponseTemplate.Reward.Value.Currency)
|
||||
foreach (var currency in playerChoiceResponseTemplate.Reward.Currency)
|
||||
{
|
||||
var rewardEntry = new Networking.Packets.PlayerChoiceResponseRewardEntry();
|
||||
rewardEntry.Item.ItemID = currency.Id;
|
||||
@@ -5013,7 +5014,7 @@ namespace Game.Entities
|
||||
reward.Items.Add(rewardEntry);
|
||||
}
|
||||
|
||||
foreach (var faction in playerChoiceResponseTemplate.Reward.Value.Faction)
|
||||
foreach (var faction in playerChoiceResponseTemplate.Reward.Faction)
|
||||
{
|
||||
var rewardEntry = new Networking.Packets.PlayerChoiceResponseRewardEntry();
|
||||
rewardEntry.Item.ItemID = faction.Id;
|
||||
@@ -5021,21 +5022,21 @@ namespace Game.Entities
|
||||
reward.Items.Add(rewardEntry);
|
||||
}
|
||||
|
||||
foreach (PlayerChoiceResponseRewardItem item in playerChoiceResponseTemplate.Reward.Value.ItemChoices)
|
||||
foreach (PlayerChoiceResponseRewardItem item in playerChoiceResponseTemplate.Reward.ItemChoices)
|
||||
{
|
||||
var rewardEntry = new Networking.Packets.PlayerChoiceResponseRewardEntry();
|
||||
rewardEntry.Item.ItemID = item.Id;
|
||||
rewardEntry.Quantity = item.Quantity;
|
||||
if (!item.BonusListIDs.Empty())
|
||||
{
|
||||
rewardEntry.Item.ItemBonus.Value = new();
|
||||
rewardEntry.Item.ItemBonus.Value.BonusListIDs = item.BonusListIDs;
|
||||
rewardEntry.Item.ItemBonus = new();
|
||||
rewardEntry.Item.ItemBonus.BonusListIDs = item.BonusListIDs;
|
||||
}
|
||||
|
||||
reward.ItemChoices.Add(rewardEntry);
|
||||
}
|
||||
|
||||
playerChoiceResponse.Reward.Set(reward);
|
||||
playerChoiceResponse.Reward = reward;
|
||||
displayPlayerChoice.Responses[i] = playerChoiceResponse;
|
||||
}
|
||||
|
||||
@@ -5050,7 +5051,7 @@ namespace Game.Entities
|
||||
mawPower.SpellID = playerChoiceResponse.MawPower.Value.SpellID;
|
||||
mawPower.MaxStacks = playerChoiceResponse.MawPower.Value.MaxStacks;
|
||||
|
||||
playerChoiceResponse.MawPower.Set(mawPower);
|
||||
playerChoiceResponse.MawPower = mawPower;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5662,10 +5663,10 @@ namespace Game.Entities
|
||||
|
||||
// SMSG_WORLD_SERVER_INFO
|
||||
WorldServerInfo worldServerInfo = new();
|
||||
worldServerInfo.InstanceGroupSize.Set(GetMap().GetMapDifficulty().MaxPlayers); // @todo
|
||||
worldServerInfo.InstanceGroupSize = GetMap().GetMapDifficulty().MaxPlayers; // @todo
|
||||
worldServerInfo.IsTournamentRealm = 0; // @todo
|
||||
worldServerInfo.RestrictedAccountMaxLevel.Clear(); // @todo
|
||||
worldServerInfo.RestrictedAccountMaxMoney.Clear(); // @todo
|
||||
worldServerInfo.RestrictedAccountMaxLevel = null; // @todo
|
||||
worldServerInfo.RestrictedAccountMaxMoney = null; // @todo
|
||||
worldServerInfo.DifficultyID = (uint)GetMap().GetDifficultyID();
|
||||
// worldServerInfo.XRealmPvpAlert; // @todo
|
||||
SendPacket(worldServerInfo);
|
||||
@@ -6240,9 +6241,9 @@ namespace Game.Entities
|
||||
SetupCurrency.Record record = new();
|
||||
record.Type = entry.Id;
|
||||
record.Quantity = Curr.Quantity;
|
||||
record.WeeklyQuantity.Set(Curr.WeeklyQuantity);
|
||||
record.MaxWeeklyQuantity.Set(GetCurrencyWeekCap(entry));
|
||||
record.TrackedQuantity.Set(Curr.TrackedQuantity);
|
||||
record.WeeklyQuantity = Curr.WeeklyQuantity;
|
||||
record.MaxWeeklyQuantity = GetCurrencyWeekCap(entry);
|
||||
record.TrackedQuantity = Curr.TrackedQuantity;
|
||||
record.Flags = Curr.Flags;
|
||||
|
||||
packet.Data.Add(record);
|
||||
@@ -6265,9 +6266,9 @@ namespace Game.Entities
|
||||
SetupCurrency.Record record = new();
|
||||
record.Type = entry.Id;
|
||||
record.Quantity = pair.Value.Quantity;
|
||||
record.WeeklyQuantity.Set(pair.Value.WeeklyQuantity);
|
||||
record.MaxWeeklyQuantity.Set(GetCurrencyWeekCap(entry));
|
||||
record.TrackedQuantity.Set(pair.Value.TrackedQuantity);
|
||||
record.WeeklyQuantity = pair.Value.WeeklyQuantity;
|
||||
record.MaxWeeklyQuantity = GetCurrencyWeekCap(entry);
|
||||
record.TrackedQuantity = pair.Value.TrackedQuantity;
|
||||
record.Flags = pair.Value.Flags;
|
||||
|
||||
packet.Data.Add(record);
|
||||
|
||||
@@ -616,7 +616,7 @@ namespace Game.Entities
|
||||
subDmg.Damage = (int)damageInfo.Damage; // Sub Damage
|
||||
subDmg.Absorbed = (int)damageInfo.Absorb;
|
||||
subDmg.Resisted = (int)damageInfo.Resist;
|
||||
packet.SubDmg.Set(subDmg);
|
||||
packet.SubDmg = subDmg;
|
||||
|
||||
packet.VictimState = (byte)damageInfo.TargetState;
|
||||
packet.BlockAmount = (int)damageInfo.Blocked;
|
||||
|
||||
@@ -825,7 +825,7 @@ namespace Game.Entities
|
||||
ProcessTerrainStatusUpdate(oldLiquidStatus, data.LiquidInfo);
|
||||
}
|
||||
|
||||
public virtual void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional<LiquidData> newLiquidData)
|
||||
public virtual void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, LiquidData newLiquidData)
|
||||
{
|
||||
if (!IsControlledByPlayer())
|
||||
return;
|
||||
@@ -838,8 +838,8 @@ namespace Game.Entities
|
||||
|
||||
// liquid aura handling
|
||||
LiquidTypeRecord curLiquid = null;
|
||||
if (IsInWater() && newLiquidData.HasValue)
|
||||
curLiquid = CliDB.LiquidTypeStorage.LookupByKey(newLiquidData.Value.entry);
|
||||
if (IsInWater() && newLiquidData != null)
|
||||
curLiquid = CliDB.LiquidTypeStorage.LookupByKey(newLiquidData.entry);
|
||||
if (curLiquid != _lastLiquid)
|
||||
{
|
||||
if (_lastLiquid != null && _lastLiquid.SpellID != 0)
|
||||
@@ -1804,7 +1804,8 @@ namespace Game.Entities
|
||||
moveTeleport.MoverGUID = GetGUID();
|
||||
moveTeleport.Pos = new Position(x, y, z, o);
|
||||
if (GetTransGUID() != ObjectGuid.Empty)
|
||||
moveTeleport.TransportGUID.Set(GetTransGUID());
|
||||
moveTeleport.TransportGUID = GetTransGUID();
|
||||
|
||||
moveTeleport.Facing = o;
|
||||
moveTeleport.SequenceIndex = m_movementCounter++;
|
||||
playerMover.SendPacket(moveTeleport);
|
||||
|
||||
@@ -2092,7 +2092,7 @@ namespace Game.Entities
|
||||
|
||||
ContentTuningParams contentTuningParams = new();
|
||||
if (contentTuningParams.GenerateDataForUnits(log.attacker, log.target))
|
||||
packet.ContentTuning.Set(contentTuningParams);
|
||||
packet.ContentTuning = contentTuningParams;
|
||||
|
||||
SendCombatLogMessage(packet);
|
||||
}
|
||||
@@ -2121,7 +2121,7 @@ namespace Game.Entities
|
||||
ContentTuningParams contentTuningParams = new();
|
||||
Unit caster = Global.ObjAccessor.GetUnit(this, aura.GetCasterGUID());
|
||||
if (caster && contentTuningParams.GenerateDataForUnits(caster, this))
|
||||
spellLogEffect.ContentTuning.Set(contentTuningParams);
|
||||
spellLogEffect.ContentTuning = contentTuningParams;
|
||||
|
||||
data.Effects.Add(spellLogEffect);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user