コード例 #1
0
        public static void ExoCommand(string value, WorldClient client)
        {
            if (!client.Character.Inventory.Exist(TokenId, ExoTokenQuantity))
            {
                client.Character.Reply("Vous devez posséder " + ExoTokenQuantity + "x <b>[Ticket Doré]</b>");
                return;
            }

            var splitted = value.Split(null);

            if (splitted.Count() < 2)
            {
                client.Character.Reply("indentifieur invalide, .exo [pa,pm,po] [anneau1,anneau2,coiffe,cape,ceinture,bottes,amulette]");
                return;
            }
            string type = splitted[0];

            string position = splitted[1];

            EffectsEnum effect = 0;

            CharacterInventoryPositionEnum pos = CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED;

            switch (type)
            {
            case "pa":
                effect = EffectsEnum.Effect_AddAP_111;
                break;

            case "pm":
                effect = EffectsEnum.Effect_AddMP_128;
                break;

            case "po":
                effect = EffectsEnum.Effect_AddRange;
                break;

            default:
                client.Character.Reply("indentifieur invalide, .exo [pa,pm,po] [anneau1,anneau2,coiffe,cape,ceinture,bottes,amulette]");
                return;
            }

            switch (position)
            {
            case "anneau1":
                pos = CharacterInventoryPositionEnum.INVENTORY_POSITION_RING_LEFT;
                break;

            case "anneau2":
                pos = CharacterInventoryPositionEnum.INVENTORY_POSITION_RING_RIGHT;
                break;

            case "coiffe":
                pos = CharacterInventoryPositionEnum.ACCESSORY_POSITION_HAT;
                break;

            case "cape":
                pos = CharacterInventoryPositionEnum.ACCESSORY_POSITION_CAPE;
                break;

            case "ceinture":
                pos = CharacterInventoryPositionEnum.ACCESSORY_POSITION_BELT;
                break;

            case "bottes":
                pos = CharacterInventoryPositionEnum.ACCESSORY_POSITION_BOOTS;
                break;

            case "amulette":
                pos = CharacterInventoryPositionEnum.ACCESSORY_POSITION_AMULET;
                break;

            default:
                client.Character.Reply("indentifieur invalide, .exo [pa,pm,po] [anneau1,anneau2,coiffe,cape,ceinture,bottes,amulette]");
                break;
            }

            CharacterItemRecord item = client.Character.Inventory.GetEquipedItems().FirstOrDefault(x => x.PositionEnum == pos);

            if (item == null)
            {
                client.Character.Reply("Vous devez équiper un item a cet emplacement.");
                return;
            }

            if (item.FirstEffect <EffectInteger>(effect) != null)
            {
                client.Character.Reply("L'effet est déja présent...");
                return;
            }

            client.Character.Inventory.SetItemPosition(item.UId, CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED, item.Quantity);

            var token = client.Character.Inventory.GetFirstItem(TokenId, ExoTokenQuantity);

            client.Character.Inventory.RemoveItem(token.UId, ExoTokenQuantity);

            item.AddEffectInteger(effect, 1);
            client.Character.Inventory.OnItemModified(item);
            client.Character.Reply("L'item a été exo.");
            client.Character.SpellAnim(2158);
        }