public void LaunchMissle(string missleId) { var enemy = Character.Selected; if (!AssembleEnemy(enemy) && !(missleId == "ammunition_specialammo_pld-8" || missleId == "ammunition_specialammo_dcr-250" || missleId == "ammunition_specialammo_wiz-x")) { return; } Player player = Character as Player; int damage = -1; int rocketId = 0; switch (missleId) { case "ammunition_rocket_r-310": rocketId = 1; damage = RandomizeDamage(Character.RocketDamage, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_rocket_plt-2026": rocketId = 2; damage = RandomizeDamage(Character.RocketDamage * 2, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_rocket_plt-2021": rocketId = 3; damage = RandomizeDamage(Character.RocketDamage * 3, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_rocket_plt-3030": rocketId = 4; damage = RandomizeDamage(Character.RocketDamage * 4, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_specialammo_pld-8": rocketId = 5; if (Character.Cooldowns.CooldownDictionary.Any(c => c.Value is PlasmaCooldown)) { return; } Plasma(enemy as Character); return; case "ammunition_specialammo_dcr-250": rocketId = 6; if (Character.Cooldowns.CooldownDictionary.Any(c => c.Value is DecelerationCooldown)) { return; } Decelerate(enemy as Character); return; case "ammunition_specialammo_wiz-x": rocketId = 8; if (Character.Cooldowns.CooldownDictionary.Any(c => c.Value is WizardCooldown)) { return; } Wizard(enemy as Character); return; } if (Character.Cooldowns.CooldownDictionary.Any(c => c.Value is RocketCooldown)) { return; } if (player?.Settings.CurrentRocket.Shoot() == 0) { // NOTHING TO SHOOT Packet.Builder.LegacyModule(player.GetGameSession(), "0|A|STD|No more ammo (todo: find a proper STM message)"); return; } player?.Skylab.ReduceRocketOre(1); double cooldown_time = 2; if (player != null && (player.Extras.Any(x => x.Value is RocketTurbo) || player.Information.Premium.Active)) { cooldown_time *= 0.5; } var cooldown = new RocketCooldown(cooldown_time); if (player != null) { cooldown.Send(World.StorageManager.GetGameSession(player.Id)); } Character.Cooldowns.Add(cooldown); if (player != null && enemy is Character) { UpdateAttacker(enemy as Character, player); } GameClient.SendToPlayerView(Character, netty.commands.old_client.LegacyModule.write("0|v|" + Character.Id + "|" + enemy.Id + "|H|" + rocketId + "|1|" + (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 1 : 0)), true); GameClient.SendToPlayerView(Character, netty.commands.new_client.LegacyModule.write("0|v|" + Character.Id + "|" + enemy.Id + "|H|" + rocketId + "|1|" + (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 1 : 0)), true); Controller.Damage?.Rocket(enemy, damage, 0); if (player != null && player.State.LoginProtection) { player.State.EndLoginProtection(); } }
public void LaunchMissle(string missleId) { var enemy = Character.Selected; if (!AssembleEnemy(enemy)) { return; } Player player = Character as Player; int damage = -1; int rocketId = 0; switch (missleId) { case "ammunition_rocket_r-310": rocketId = 1; damage = RandomizeDamage(Character.RocketDamage, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_rocket_plt-2026": rocketId = 2; damage = RandomizeDamage(Character.RocketDamage * 2, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_rocket_plt-2021": rocketId = 3; damage = RandomizeDamage(Character.RocketDamage * 3, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_rocket_plt-3030": rocketId = 4; damage = RandomizeDamage(Character.RocketDamage * 4, (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 0 : 1)); break; case "ammunition_specialammo_pld-8": rocketId = 5; Plasma(enemy as Character); break; case "ammunition_specialammo_dcr-250": rocketId = 6; Decelerate(enemy as Character); break; case "ammunition_specialammo_wiz-x": rocketId = 8; if (Character.Cooldowns.Any(c => c is WizardCooldown)) { return; } Wizard(enemy as Character); break; } if (Character.Cooldowns.Any(c => c is RocketCooldown)) { return; } if (player?.Settings.CurrentRocket.Shoot() == 0) { // NOTHING TO SHOOT //todo:fix //Packet.Builder.LegacyModule(player.GetGameSession(), // "0|A|STD|No more ammo (todo: find a proper STM message)"); return; } double cooldown_time = 2; if (player != null && (player.Extras.ContainsKey("equipment_extra_cpu_rok-t01") || player.Information.Premium.Active)) { cooldown_time *= 0.5; } var cooldown = new RocketCooldown(cooldown_time); if (player != null) { cooldown.Send(World.StorageManager.GetGameSession(player.Id)); } Character.Cooldowns.Add(cooldown); if (player != null && enemy is Character) { UpdateAttacker(enemy as Character, player); } // todo: fix //GameClient.SendToPlayerView(Character, netty.commands.new_client.LegacyModule.write("0|v|" + Character.Id + "|" + enemy.Id + "|H|" + rocketId + "|1|" + (Character is Player && ((Player)Character).Storage.PrecisionTargeterActivated ? 1 : 0)), true); Controller.Damage?.Rocket(enemy, damage, false); }