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(); } }
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); } }