/// <summary> /// Initializes a new instance of SpellGo class. /// </summary> /// <param name="caster"> /// Guid of the caster unit. /// </param> /// <param name="spellId"> /// The spell id to use. /// </param> public SpellGo(WowGuid caster, uint spellId) { Caster = caster; CastInvoker = caster; CastId = 1; SpellId = spellId; Flags = CastFlags.None; CastTime = (uint)Environment.TickCount; }
public override void Read(StreamHandler Reader) { Caster = Reader.ReadPackedGuid(); CastInvoker = Reader.ReadPackedGuid(); CastId = Reader.ReadByte(); SpellId = Reader.ReadUInt32(); Flags = (CastFlags)Reader.ReadUInt32(); Unk43 = Reader.ReadUInt32(); Unk43_2 = Reader.ReadUInt32(); TargetData.Read(Reader); if ((Flags & CastFlags.PredictedPower) != 0) { PredictedPower = Reader.ReadUInt32(); } if ((Flags & CastFlags.RuneStates) != 0) { RunesBefore = (RuneStates)Reader.ReadByte(); RunesAfter = (RuneStates)Reader.ReadByte(); for (int i = 0; i < RuneCooldowns.Length; ++i) { RuneCooldowns[i] = Reader.ReadByte(); } } if ((Flags & CastFlags.Ammo) != 0) { ProjectileDisplayId = Reader.ReadUInt32(); ProjectileInventoryType = (InventorySlotType)Reader.ReadUInt32(); } if ((Flags & CastFlags.Unk0x04000000) != 0) { Unk0x04000000_UInt32_1 = Reader.ReadUInt32(); Unk0x04000000_UInt32_2 = Reader.ReadUInt32(); } }
public override void Read(StreamHandler Reader) { Caster = Reader.ReadPackedGuid(); CastInvoker = Reader.ReadPackedGuid(); CastId = Reader.ReadByte(); SpellId = Reader.ReadUInt32(); Flags = (CastFlags)Reader.ReadUInt32(); Unk43 = Reader.ReadUInt32(); Unk43_2 = Reader.ReadUInt32(); TargetData.Read(Reader); if ((Flags & CastFlags.PredictedPower) != 0) PredictedPower = Reader.ReadUInt32(); if ((Flags & CastFlags.RuneStates) != 0) { RunesBefore = (RuneStates)Reader.ReadByte(); RunesAfter = (RuneStates)Reader.ReadByte(); for (int i = 0; i < RuneCooldowns.Length; ++i) RuneCooldowns[i] = Reader.ReadByte(); } if ((Flags & CastFlags.Ammo) != 0) { ProjectileDisplayId = Reader.ReadUInt32(); ProjectileInventoryType = (InventorySlotType)Reader.ReadUInt32(); } if ((Flags & CastFlags.Unk0x04000000) != 0) { Unk0x04000000_UInt32_1 = Reader.ReadUInt32(); Unk0x04000000_UInt32_2 = Reader.ReadUInt32(); } }
public override void Read(StreamHandler Reader) { Caster = Reader.ReadPackedGuid(); CastInvoker = Reader.ReadPackedGuid(); CastId = Reader.ReadByte(); SpellId = Reader.ReadUInt32(); Flags = (CastFlags)Reader.ReadUInt32(); Unk43 = Reader.ReadUInt32(); CastTime = Reader.ReadUInt32(); byte hits = Reader.ReadByte(); Hits.Capacity = hits; for (byte i = 0; i < hits; ++i) Hits.Add(Reader.ReadGuid()); byte misses = Reader.ReadByte(); Misses.Capacity = misses; for (byte i = 0; i < misses; ++i) { var miss = new MissData(); miss.Read(Reader); Misses.Add(miss); } TargetData.Read(Reader); if ((Flags & CastFlags.PredictedPower) != 0) PredictedPower = Reader.ReadUInt32(); if ((Flags & CastFlags.RuneStates) != 0) { RunesBefore = (RuneStates)Reader.ReadByte(); RunesAfter = (RuneStates)Reader.ReadByte(); for (int i = 0; i < RuneCooldowns.Length; ++i) RuneCooldowns[i] = Reader.ReadByte(); } if ((Flags & CastFlags.Unk0x00020000) != 0) { Unk0x20000_Float = Reader.ReadSingle(); Unk0x20000_UInt32 = Reader.ReadUInt32(); } if ((Flags & CastFlags.Ammo) != 0) { ProjectileDisplayId = Reader.ReadUInt32(); ProjectileInventoryType = (InventorySlotType)Reader.ReadUInt32(); } if ((Flags & CastFlags.Unk0x00080000) != 0) { Unk0x80000_UInt32_1 = Reader.ReadUInt32(); Unk0x80000_UInt32_2 = Reader.ReadUInt32(); } if ((TargetData.Flags & SpellCastTargetFlags.DestLocation) != 0) DestLocationCounter = Reader.ReadByte(); if ((TargetData.Flags & SpellCastTargetFlags.Unk4) != 0) { uint count = Reader.ReadUInt32(); Unk4_Count = count; Unk4_List.Capacity = (int)count; for (uint i = 0; i < count; ++i) { Vector3 v3 = Reader.ReadVector3(); WowGuid guid = Reader.ReadGuid(); Unk4_List.Add(new KeyValuePair<WowGuid, Vector3>(guid, v3)); if (guid.IsEmpty) break; } } }
public override void Read(StreamHandler Reader) { Caster = Reader.ReadPackedGuid(); CastInvoker = Reader.ReadPackedGuid(); CastId = Reader.ReadByte(); SpellId = Reader.ReadUInt32(); Flags = (CastFlags)Reader.ReadUInt32(); Unk43 = Reader.ReadUInt32(); CastTime = Reader.ReadUInt32(); byte hits = Reader.ReadByte(); Hits.Capacity = hits; for (byte i = 0; i < hits; ++i) { Hits.Add(Reader.ReadGuid()); } byte misses = Reader.ReadByte(); Misses.Capacity = misses; for (byte i = 0; i < misses; ++i) { var miss = new MissData(); miss.Read(Reader); Misses.Add(miss); } TargetData.Read(Reader); if ((Flags & CastFlags.PredictedPower) != 0) { PredictedPower = Reader.ReadUInt32(); } if ((Flags & CastFlags.RuneStates) != 0) { RunesBefore = (RuneStates)Reader.ReadByte(); RunesAfter = (RuneStates)Reader.ReadByte(); for (int i = 0; i < RuneCooldowns.Length; ++i) { RuneCooldowns[i] = Reader.ReadByte(); } } if ((Flags & CastFlags.Unk0x00020000) != 0) { Unk0x20000_Float = Reader.ReadSingle(); Unk0x20000_UInt32 = Reader.ReadUInt32(); } if ((Flags & CastFlags.Ammo) != 0) { ProjectileDisplayId = Reader.ReadUInt32(); ProjectileInventoryType = (InventorySlotType)Reader.ReadUInt32(); } if ((Flags & CastFlags.Unk0x00080000) != 0) { Unk0x80000_UInt32_1 = Reader.ReadUInt32(); Unk0x80000_UInt32_2 = Reader.ReadUInt32(); } if ((TargetData.Flags & SpellCastTargetFlags.DestLocation) != 0) { DestLocationCounter = Reader.ReadByte(); } if ((TargetData.Flags & SpellCastTargetFlags.Unk4) != 0) { uint count = Reader.ReadUInt32(); Unk4_Count = count; Unk4_List.Capacity = (int)count; for (uint i = 0; i < count; ++i) { Vector3 v3 = Reader.ReadVector3(); WowGuid guid = Reader.ReadGuid(); Unk4_List.Add(new KeyValuePair <WowGuid, Vector3>(guid, v3)); if (guid.IsEmpty) { break; } } } }
public override int GetHashCode() { var hashCode = -1002157333; hashCode = hashCode * -1521134295 + Index.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(FullName); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(GroupName); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(SetName); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Name); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Display); hashCode = hashCode * -1521134295 + Available.GetHashCode(); hashCode = hashCode * -1521134295 + ModesRequired.GetHashCode(); hashCode = hashCode * -1521134295 + ModesDisallowed.GetHashCode(); hashCode = hashCode * -1521134295 + PowerType.GetHashCode(); hashCode = hashCode * -1521134295 + Accuracy.GetHashCode(); hashCode = hashCode * -1521134295 + AttackTypes.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string[]> .Default.GetHashCode(GroupMemberships); hashCode = hashCode * -1521134295 + EntitiesAffected.GetHashCode(); hashCode = hashCode * -1521134295 + EntitiesAutoHit.GetHashCode(); hashCode = hashCode * -1521134295 + Target.GetHashCode(); hashCode = hashCode * -1521134295 + TargetLineOfSight.GetHashCode(); hashCode = hashCode * -1521134295 + Range.GetHashCode(); hashCode = hashCode * -1521134295 + TargetSecondary.GetHashCode(); hashCode = hashCode * -1521134295 + RangeSecondary.GetHashCode(); hashCode = hashCode * -1521134295 + EnduranceCost.GetHashCode(); hashCode = hashCode * -1521134295 + InterruptTime.GetHashCode(); hashCode = hashCode * -1521134295 + CastTime.GetHashCode(); hashCode = hashCode * -1521134295 + RechargeTime.GetHashCode(); hashCode = hashCode * -1521134295 + BaseRechargeTime.GetHashCode(); hashCode = hashCode * -1521134295 + ActivatePeriod.GetHashCode(); hashCode = hashCode * -1521134295 + EffectArea.GetHashCode(); hashCode = hashCode * -1521134295 + Radius.GetHashCode(); hashCode = hashCode * -1521134295 + Arc.GetHashCode(); hashCode = hashCode * -1521134295 + MaxTargets.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(MaxBoosts); hashCode = hashCode * -1521134295 + CastFlags.GetHashCode(); hashCode = hashCode * -1521134295 + ArtificalIntelligenceReport.GetHashCode(); hashCode = hashCode * -1521134295 + NumberOfCharges.GetHashCode(); hashCode = hashCode * -1521134295 + UsageTime.GetHashCode(); hashCode = hashCode * -1521134295 + LifeTime.GetHashCode(); hashCode = hashCode * -1521134295 + LifeTimeInGame.GetHashCode(); hashCode = hashCode * -1521134295 + NumberAllowed.GetHashCode(); hashCode = hashCode * -1521134295 + DoNotSave.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string[]> .Default.GetHashCode(BoostsAllowed); hashCode = hashCode * -1521134295 + CastThroughHold.GetHashCode(); hashCode = hashCode * -1521134295 + IgnoreStrength.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(DescriptionShort); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(DescriptionLong); hashCode = hashCode * -1521134295 + EqualityComparer <int[]> .Default.GetHashCode(SetTypes); hashCode = hashCode * -1521134295 + ClickBuff.GetHashCode(); hashCode = hashCode * -1521134295 + AlwaysToggle.GetHashCode(); hashCode = hashCode * -1521134295 + Level.GetHashCode(); hashCode = hashCode * -1521134295 + AllowFrontLoading.GetHashCode(); hashCode = hashCode * -1521134295 + VariableEnabled.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(VariableName); hashCode = hashCode * -1521134295 + VariableMin.GetHashCode(); hashCode = hashCode * -1521134295 + VariableMax.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string[]> .Default.GetHashCode(SubPowers); hashCode = hashCode * -1521134295 + EqualityComparer <int[]> .Default.GetHashCode(IgnoreEnhancements); hashCode = hashCode * -1521134295 + EqualityComparer <int[]> .Default.GetHashCode(IgnoreBuffs); hashCode = hashCode * -1521134295 + SkipMax.GetHashCode(); hashCode = hashCode * -1521134295 + DisplayLocation.GetHashCode(); hashCode = hashCode * -1521134295 + MutuallyExclusiveAuto.GetHashCode(); hashCode = hashCode * -1521134295 + MutuallyExclusiveIgnore.GetHashCode(); hashCode = hashCode * -1521134295 + AbsorbSummonEffects.GetHashCode(); hashCode = hashCode * -1521134295 + AbsorbSummonAttributes.GetHashCode(); hashCode = hashCode * -1521134295 + ShowSummonAnyway.GetHashCode(); hashCode = hashCode * -1521134295 + NeverAutoUpdate.GetHashCode(); hashCode = hashCode * -1521134295 + NeverAutoUpdateRequirements.GetHashCode(); hashCode = hashCode * -1521134295 + IncludeFlag.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(ForcedClass); hashCode = hashCode * -1521134295 + SortOverride.GetHashCode(); hashCode = hashCode * -1521134295 + BoostBoostable.GetHashCode(); hashCode = hashCode * -1521134295 + BoostUsePlayerLevel.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <Effect[]> .Default.GetHashCode(Effects); hashCode = hashCode * -1521134295 + HiddenPower.GetHashCode(); return(hashCode); }
public SpellCastData(Packet packet) { Caster = packet.ReadPackedGUID(); UnitCaster = packet.ReadPackedGUID(); CastID = packet.ReadUInt8(); SpellID = packet.ReadUInt32(); CastFlags = (CastFlags)packet.ReadUInt32(); CastFlagsEx = (CastFlagsEx)packet.ReadUInt32(); CastTime = packet.ReadUInt32(); if (packet.Opcode == Opcode.SMSG_SPELL_GO) { HitTargets = new IObjectGUID[packet.ReadUInt8()]; for (var i = 0; i < HitTargets.Length; ++i) { HitTargets[i] = packet.ReadGUID(); } MissedTargets = new MissInfo[packet.ReadUInt8()]; for (var i = 0; i < MissedTargets.Length; ++i) { var missTarget = packet.ReadGUID(); var missType = packet.ReadUInt8(); if (missType == 11) // Reflect { MissedTargets[i] = new(missTarget, missType, packet.ReadUInt8()); } else { MissedTargets[i] = new(missTarget, missType); } } } TargetFlags = (TargetFlags)packet.ReadUInt32(); if (TargetFlags.HasFlag(TargetFlags.Unit | TargetFlags.CorpseAlly | TargetFlags.CorpseEnemy | TargetFlags.GameObject | TargetFlags.Minipet)) { ExplicitTarget = packet.ReadPackedGUID(); } else if (TargetFlags.HasFlag(TargetFlags.Item | TargetFlags.TradeItem)) { ExplicitTarget = packet.ReadPackedGUID(); } if (TargetFlags.HasFlag(TargetFlags.SourceLocation)) { Source = new(packet); } if (TargetFlags.HasFlag(TargetFlags.DestinationLocation)) { Destination = new(packet); } if (TargetFlags.HasFlag(TargetFlags.String)) { var @string = packet.ReadCString(128); } if (TargetFlags.HasFlag(TargetFlags.ExtraTargets)) { var extraTargetCount = packet.ReadInt32(); for (var i = 0; i < extraTargetCount; ++i) { var i1 = packet.ReadUInt32(); var i2 = packet.ReadUInt32(); var i3 = packet.ReadUInt32(); var guid = packet.ReadGUID(); } } if (CastFlags.HasFlag(CastFlags.Power)) { Power = packet.ReadUInt32(); } if (CastFlags.HasFlag(CastFlags.Runes)) { Runes = new(packet); } if (CastFlags.HasFlag(CastFlags.Missile)) { MissileInfo = new(packet); } if (CastFlags.HasFlag(CastFlags.Ammo)) { var displayID = packet.ReadUInt32(); var inventoryType = packet.ReadUInt32(); } if (CastFlags.HasFlag(CastFlags.VisualChain)) { var i0 = packet.ReadUInt32(); var i1 = packet.ReadUInt32(); } if (TargetFlags.HasFlag(TargetFlags.DestinationLocation)) // Wrong mask, cba fixing rn { var destLocationCastIndex = packet.ReadUInt8(); } if (CastFlags.HasFlag(CastFlags.Immunities)) { var mechanicImmunity = packet.ReadUInt32(); var immunity = packet.ReadUInt32(); } // More data (prediction) }