Exemplo n.º 1
0
        public void NotifyLaneMinionSpawned(ILaneMinion m, TeamId team)
        {
            var ms = new LaneMinionSpawn(_navGrid, m);

            _packetHandlerManager.BroadcastPacketTeam(team, ms, Channel.CHL_S2C);
            NotifySetHealth(m);
        }
Exemplo n.º 2
0
        public void SetMinionStats(ILaneMinion m)
        {
            // Same for all minions
            m.Stats.MoveSpeed.BaseValue = 325.0f;

            switch (m.MinionSpawnType)
            {
            case MinionSpawnType.MINION_TYPE_MELEE:
                m.Stats.CurrentHealth          = 475.0f + 20.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.HealthPoints.BaseValue = 475.0f + 20.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.AttackDamage.BaseValue = 12.0f + 1.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.Range.BaseValue        = 180.0f;
                m.Stats.AttackSpeedFlat        = 1.250f;
                m.AutoAttackCastTime           = 11.8f / 30.0f;
                m.IsMelee = true;
                break;

            case MinionSpawnType.MINION_TYPE_CASTER:
                m.Stats.CurrentHealth          = 279.0f + 7.5f * (int)(_game.GameTime / (90 * 1000));
                m.Stats.HealthPoints.BaseValue = 279.0f + 7.5f * (int)(_game.GameTime / (90 * 1000));
                m.Stats.AttackDamage.BaseValue = 23.0f + 1.0f * (int)(_game.GameTime / (90 * 1000));
                m.Stats.Range.BaseValue        = 600.0f;
                m.Stats.AttackSpeedFlat        = 0.670f;
                m.AutoAttackCastTime           = 14.1f / 30.0f;
                m.AutoAttackProjectileSpeed    = 650.0f;
                break;

            case MinionSpawnType.MINION_TYPE_CANNON:
                m.Stats.CurrentHealth          = 700.0f + 27.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.HealthPoints.BaseValue = 700.0f + 27.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.AttackDamage.BaseValue = 40.0f + 3.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.Range.BaseValue        = 450.0f;
                m.Stats.AttackSpeedFlat        = 1.0f;
                m.AutoAttackCastTime           = 9.0f / 30.0f;
                m.AutoAttackProjectileSpeed    = 1200.0f;
                break;

            case MinionSpawnType.MINION_TYPE_SUPER:
                m.Stats.CurrentHealth          = 1500.0f + 200.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.HealthPoints.BaseValue = 1500.0f + 200.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.AttackDamage.BaseValue = 190.0f + 10.0f * (int)(_game.GameTime / (180 * 1000));
                m.Stats.Range.BaseValue        = 170.0f;
                m.Stats.AttackSpeedFlat        = 0.694f;
                m.Stats.Armor.BaseValue        = 30.0f;
                m.Stats.MagicResist.BaseValue  = -30.0f;
                m.IsMelee            = true;
                m.AutoAttackCastTime = 15.0f / 30.0f;
                break;
            }
        }
Exemplo n.º 3
0
        public LaneMinionSpawn(INavGrid navGrid, ILaneMinion m)
            : base(PacketCmd.PKT_S2C_OBJECT_SPAWN, m.NetId)
        {
            Write((uint)0x00150017); // unk
            Write((byte)0x03);       // SpawnType - 3 = minion
            WriteNetId(m);
            WriteNetId(m);
            Write((uint)m.SpawnPosition);
            Write((byte)0xFF); // unk
            Write((byte)1);    // wave number ?

            Write((byte)m.MinionSpawnType);

            if (m.MinionSpawnType == MinionSpawnType.MINION_TYPE_MELEE)
            {
                Write((byte)0); // unk
            }
            else
            {
                Write((byte)1); // unk
            }

            Write((byte)0); // unk

            if (m.MinionSpawnType == MinionSpawnType.MINION_TYPE_CASTER)
            {
                Write(0x00010007); // unk
            }
            else if (m.MinionSpawnType == MinionSpawnType.MINION_TYPE_MELEE)
            {
                Write(0x0001000A); // unk
            }
            else if (m.MinionSpawnType == MinionSpawnType.MINION_TYPE_CANNON)
            {
                Write(0x0001000D);
            }
            else
            {
                Write(0x00010007);        // unk
            }
            Write(0x00000000);            // unk
            Write(0x00000000);            // unk
            Write((short)0x0000);         // unk
            Write(1.0f);                  // unk
            Write(0x00000000);            // unk
            Write(0x00000000);            // unk
            Write(0x00000000);            // unk
            Write((short)0x0200);         // unk
            Write(Environment.TickCount); // unk

            var waypoints = m.Waypoints;

            Write((byte)((waypoints.Count - m.CurWaypoint + 1) * 2)); // coordCount
            WriteNetId(m);
            Write((byte)0);                                           // movement mask
            Write(MovementVector.TargetXToNormalFormat(navGrid, m.X));
            Write(MovementVector.TargetYToNormalFormat(navGrid, m.Y));
            for (var i = m.CurWaypoint; i < waypoints.Count; ++i)
            {
                Write(MovementVector.TargetXToNormalFormat(navGrid, waypoints[i].X));
                Write(MovementVector.TargetXToNormalFormat(navGrid, waypoints[i].Y));
            }
        }