コード例 #1
0
 /// <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;
 }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
ファイル: SpellCasting.cs プロジェクト: SkyFire/Kamilla.Wow
        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();
            }
        }
コード例 #4
0
ファイル: SpellCasting.cs プロジェクト: SkyFire/Kamilla.Wow
        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;
                }
            }
        }
コード例 #5
0
ファイル: SpellCasting.cs プロジェクト: SkyFire/Kamilla.Wow
 /// <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;
 }
コード例 #6
0
        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;
                    }
                }
            }
        }
コード例 #7
0
ファイル: Power.cs プロジェクト: patrickhuber/city-of-info
        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);
        }
コード例 #8
0
            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)
            }