예제 #1
0
        public void execute(GameSession gameSession, IByteBuffer buffer)
        {
            var request = new HellstormSelectRocketRequest();

            request.readCommand(buffer);
            var ammo = AmmoConverter.AmmoTypeToString(request.rocketType.type);

            gameSession.Player.RocketLauncher?.ChangeLoad(ammo);
        }
예제 #2
0
 public void execute(GameSession gameSession, IByteBuffer buffer)
 {
     if (gameSession.Player.UsingNewClient)
     {
         var cmd = new commands.new_client.requests.ItemSelectionRequest();
         cmd.readCommand(buffer);
         gameSession.Player.Controller.Miscs.UseItem(cmd.itemId);
     }
     else
     {
         var selectCmd = new commands.old_client.requests.SelectRocketRequest();
         selectCmd.readCommand(buffer);
         var type = selectCmd.type;
         gameSession.Player.Controller.Miscs.UseItem(AmmoConverter.AmmoTypeToString(type));
     }
 }
예제 #3
0
        public void RewardPlayer(Player player, RewardType type, Item item, int amount)
        {
            switch (type)
            {
            case RewardType.AMMO:
                // BAT / ROK
                if (item.LootId.StartsWith("ammunition_laser"))
                {
                    amount = RewardMultiplyer(type, amount, player);
                    player.Information.Ammunitions[item.LootId].Add(amount);
                    Packet.Builder.LegacyModule(World.StorageManager.GetGameSession(player.Id),
                                                "0|LM|ST|BAT|" + AmmoConverter.GetLootAmmoId(item.LootId) + "|" + amount);
                }
                else if (item.LootId.StartsWith("ammunition_rocket"))
                {
                    amount = RewardMultiplyer(type, amount, player);
                    player.Information.Ammunitions[item.LootId].Add(amount);
                    Packet.Builder.LegacyModule(World.StorageManager.GetGameSession(player.Id),
                                                "0|LM|ST|ROK|" + AmmoConverter.GetLootAmmoId(item.LootId) + "|" + amount);
                }

                break;

            case RewardType.ITEM:
                switch (item.Category)
                {
                //case EquippedItemCategories.BOOSTER:
                //    World.DatabaseManager.AddBooster(player, item);
                //    Packet.Builder.LegacyModule(World.StorageManager.GetGameSession(player.Id), "0|LM|ST|LOT|" + item.LootId + "|" + amount);
                //    break;
                default:
                    World.DatabaseManager.AddEquipmentItem(player, item);
                    Packet.Builder.LegacyModule(World.StorageManager.GetGameSession(player.Id),
                                                "0|LM|ST|LOT|" + item.LootId + "|" + amount);
                    break;
                }

                break;
            }
        }
예제 #4
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();
            }
        }