Esempio n. 1
0
        public void LaunchRocketLauncher()
        {
            var enemy = Character.Selected;

            if (Character.RocketLauncher == null || !AssembleEnemy(enemy))
            {
                return;
            }

            var player = Character as Player;

            int damage    = 0;
            int absDamage = 0;
            int rocketId  = 0;

            Damage.Types dmgTypes = Damage.Types.ROCKET;

            var loadedRockets = Character.RocketLauncher.LoadedRockets;

            switch (Character.RocketLauncher.LoadLootId)
            {
            case "ammunition_rocketlauncher_eco-10":
                damage = RandomizeDamage(2000 * loadedRockets);
                break;

            case "ammunition_rocketlauncher_hstrm-01":
                damage = RandomizeDamage(4000 * loadedRockets);
                break;

            case "ammunition_rocketlauncher_ubr-100":
                var baseDamage = 4000;
                if (enemy is Npc)
                {
                    baseDamage = 7500;
                }
                damage = RandomizeDamage(baseDamage * loadedRockets);
                break;

            case "ammunition_rocketlauncher_sar-01":
                absDamage = RandomizeDamage(1200 * loadedRockets);
                dmgTypes  = Damage.Types.SHIELD_ABSORBER_ROCKET_CREDITS;
                break;

            case "ammunition_rocketlauncher_sar-02":
                absDamage = RandomizeDamage(5000 * loadedRockets);
                dmgTypes  = Damage.Types.SHIELD_ABSORBER_ROCKET_URIDIUM;
                break;
            }

            GameClient.SendToPlayerView(Character, netty.commands.old_client.HellstormAttackCommand.write(Character.Id, enemy.Id, damage != 0, loadedRockets, AmmoConverter.ToAmmoType(Character.RocketLauncher.LoadLootId)), true);
            //GameClient.SendToPlayerView(Character, netty.commands.new_client.LegacyModule.write("0|RL|A|" + Character.Id + "|" + enemy.Id + "|" + loadedRockets + "|" + rocketId), true);

            Character.RocketLauncher.Shoot(loadedRockets);

            Controller.Damage?.Rocket(enemy, damage, absDamage, dmgTypes);

            if (player != null && enemy is Character)
            {
                Packet.Builder.HellstormStatusCommand(World.StorageManager.GetGameSession(player.Id));
                UpdateAttacker(enemy as Character, player);
            }

            if (player != null && player.State.LoginProtection)
            {
                player.State.EndLoginProtection();
            }
        }
Esempio n. 2
0
        public void LaunchRocketLauncher()
        {
            var enemy = Character.Selected;

            if (Character.RocketLauncher == null || !AssembleEnemy(enemy))
            {
                return;
            }

            var player = Character as Player;

            int damage    = 0;
            int absDamage = 0;
            int rocketId  = 0;

            Damage.Types dmgTypes = Damage.Types.ROCKET;

            switch (Character.RocketLauncher.LoadLootId)
            {
            case "ammunition_rocketlauncher_eco-10":
                rocketId = 9;
                damage   = RandomizeDamage(2000 * Character.RocketLauncher.CurrentLoad);
                break;

            case "ammunition_rocketlauncher_hstrm-01":
                rocketId = 10;
                damage   = RandomizeDamage(2000 * Character.RocketLauncher.CurrentLoad);
                break;

            case "ammunition_rocketlauncher_ubr-100":
                rocketId = 11;
                var baseDamage = 4000;
                if (enemy is Npc)
                {
                    baseDamage = 7500;
                }
                damage = RandomizeDamage(baseDamage * Character.RocketLauncher.CurrentLoad);
                break;

            case "ammunition_rocketlauncher_sar-01":
                rocketId  = 12;
                absDamage = RandomizeDamage(1200 * Character.RocketLauncher.CurrentLoad);
                dmgTypes  = Damage.Types.SHIELD_ABSORBER_ROCKET_CREDITS;
                break;

            case "ammunition_rocketlauncher_sar-02":
                rocketId  = 13;
                absDamage = RandomizeDamage(5000 * Character.RocketLauncher.CurrentLoad);
                dmgTypes  = Damage.Types.SHIELD_ABSORBER_ROCKET_URIDIUM;
                break;
            }

            if (Character.Cooldowns.Any(cooldown => cooldown is RocketLauncherCooldown))
            {
                return;
            }

            var newCooldown = new RocketLauncherCooldown();

            Character.Cooldowns.Add(newCooldown);

            Character.RocketLauncher.Shoot();

            //TODO: fix
            //GameClient.SendToPlayerView(Character, netty.commands.new_client.LegacyModule.write("0|RL|A|" + Character.Id + "|" + enemy.Id + "|" + Character.RocketLauncher.CurrentLoad + "|" + rocketId), true);

            Controller.Damage?.Rocket(enemy, absDamage, true, dmgTypes);
            Controller.Damage?.Rocket(enemy, damage, false, dmgTypes);

            Character.RocketLauncher.CurrentLoad = 0;
            if (player != null && enemy is Character)
            {
                //todo: fix
                //Packet.Builder.HellstormStatusCommand(World.StorageManager.GetGameSession(player.Id));
                UpdateAttacker(enemy as Character, player);
            }
        }