Beispiel #1
0
 protected void UnequipItemInSlot(IOCharacter player, int slot)
 {
     // UnityEngine.Debug.Log("UnequipItemInSlot");
     if (player.GetEquippedItem(slot) >= 0)
     {
         int slotioid = player.GetEquippedItem(slot);
         UnityEngine.Debug.Log("slot io " + slotioid);
         if (Interactive.Instance.HasIO(slotioid))
         {
             BaseInteractiveObject equipIO = Interactive.Instance.GetIO(slotioid);
             if (equipIO.HasIOFlag(IoGlobals.IO_02_ITEM) &&
                 equipIO.ItemData != null)
             {
                 equipIO.ItemData.UnEquip(player.GetIo(), false);
             }
         }
     }
 }
Beispiel #2
0
        /**
         * Equips a ring on a character.
         * @param charData the character data
         * @ if an error occurs
         */
        private void EquipRing(IOCharacter charData)
        {
            // check left and right finger
            // to see if it can be equipped
            bool canEquip = true;
            int  ioid     = charData.GetEquippedItem(EquipmentGlobals.EQUIP_SLOT_RING_LEFT);

            if (Interactive.Instance.HasIO(ioid))
            {
                BaseInteractiveObject oldRing = Interactive.Instance.GetIO(ioid);
                if (oldRing.ItemData.RingType == RingType)
                {
                    // already wearing that type
                    // of ring on left finger
                    canEquip = false;
                }
            }
            if (canEquip)
            {
                ioid = charData.GetEquippedItem(EquipmentGlobals.EQUIP_SLOT_RING_RIGHT);
                if (Interactive.Instance.HasIO(ioid))
                {
                    BaseInteractiveObject oldRing = Interactive.Instance.GetIO(ioid);
                    if (oldRing.ItemData.RingType == RingType)
                    {
                        // already wearing that type
                        // of ring on right finger
                        canEquip = false;
                    }
                }
            }
            if (canEquip)
            {
                int equipSlot = -1;
                if (charData.GetEquippedItem(
                        EquipmentGlobals.EQUIP_SLOT_RING_LEFT) < 0)
                {
                    equipSlot = EquipmentGlobals.EQUIP_SLOT_RING_LEFT;
                }
                if (charData.GetEquippedItem(
                        EquipmentGlobals.EQUIP_SLOT_RING_RIGHT) < 0)
                {
                    equipSlot = EquipmentGlobals.EQUIP_SLOT_RING_RIGHT;
                }
                if (equipSlot == -1)
                {
                    if (!charData.GetIo().Inventory.LeftRing)
                    {
                        ioid = charData.GetEquippedItem(EquipmentGlobals.EQUIP_SLOT_RING_RIGHT);
                        if (Interactive.Instance.HasIO(ioid))
                        {
                            BaseInteractiveObject oldIO = Interactive.Instance.GetIO(ioid);
                            if (oldIO.HasIOFlag(IoGlobals.IO_02_ITEM))
                            {
                                UnequipItemInSlot(charData, EquipmentGlobals.EQUIP_SLOT_RING_RIGHT);
                            }
                        }
                        equipSlot = EquipmentGlobals.EQUIP_SLOT_RING_RIGHT;
                    }
                    else
                    {
                        ioid = charData.GetEquippedItem(EquipmentGlobals.EQUIP_SLOT_RING_LEFT);
                        if (Interactive.Instance.HasIO(ioid))
                        {
                            BaseInteractiveObject oldIO = Interactive.Instance.GetIO(ioid);
                            if (oldIO.HasIOFlag(IoGlobals.IO_02_ITEM))
                            {
                                UnequipItemInSlot(charData, EquipmentGlobals.EQUIP_SLOT_RING_LEFT);
                            }
                        }
                        equipSlot = EquipmentGlobals.EQUIP_SLOT_RING_LEFT;
                    }
                    charData.GetIo().Inventory.LeftRing = !charData.GetIo().Inventory.LeftRing;
                }
                charData.SetEquippedItem(equipSlot, io.RefId);
            }
        }