|
@@ -0,0 +1,772 @@
|
|
|
+# DH_Inventory
|
|
|
+!! Format for variables is Variable[CharacterInv_ItemType]
|
|
|
+!!~~ Checks
|
|
|
+ !!~~ Check if inventory exists
|
|
|
+ !!if $.character = '' or ARRPOS($dhInv_, $.character) = -1:
|
|
|
+ !! $RESULT = $DhInv_Msg_['InventoryFull']
|
|
|
+ !! jump 'AutoKill '
|
|
|
+ !!end
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+!!~~#
|
|
|
+
|
|
|
+if $ARGS[0] = 'Init':
|
|
|
+ !!~~ Gear Slots
|
|
|
+ $DhInv_ArmSlot_[0] = 'Head'
|
|
|
+ $DhInv_ArmSlot_[1] = 'Suit'
|
|
|
+ $DhInv_ArmSlot_[2] = 'Chest'
|
|
|
+ $DhInv_ArmSlot_[3] = 'Legs'
|
|
|
+ $DhInv_ArmSlot_[4] = 'Gloves'
|
|
|
+ $DhInv_ArmSlot_[5] = 'Feet'
|
|
|
+ $DhInv_ArmSlot_[6] = 'ShoulderL'
|
|
|
+ $DhInv_ArmSlot_[7] = 'ShoulderR'
|
|
|
+ $DhInv_ArmSlot_[8] = 'Cloak'
|
|
|
+ $DhInv_ArmSlot_[9] = 'Wings'
|
|
|
+ $DhInv_ArmSlot_[10] = 'Shield'
|
|
|
+
|
|
|
+ $DhInv_WepSlot_[0] = 'MainHand'
|
|
|
+ $DhInv_WepSlot_[1] = 'Offhand'
|
|
|
+
|
|
|
+ $DhInv_AccSlot_[0] = 'RingL'
|
|
|
+ $DhInv_AccSlot_[1] = 'RingR'
|
|
|
+ $DhInv_AccSlot_[2] = 'Necklace'
|
|
|
+ $DhInv_AccSlot_[3] = 'Earrings'
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !!~~ Item Grades
|
|
|
+ $DhInv_Grade_[0] = 'Junk' &! Grey
|
|
|
+ $DhInv_Grade_[1] = 'Common' &! White/Black (depends on bg)
|
|
|
+ $DhInv_Grade_[2] = 'Uncommon' &! Green
|
|
|
+ $DhInv_Grade_[3] = 'Rare' &! Blue
|
|
|
+ $DhInv_Grade_[4] = 'Epic' &! Purple
|
|
|
+ $DhInv_Grade_[5] = 'Legendary' &! Orange
|
|
|
+ $DhInv_Grade_[6] = 'Godlike' &! Red
|
|
|
+ $DhInv_Grade_[7] = 'Cheat' &! Pink
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !!~~ Messages
|
|
|
+ $DhInv_Msg_['Error'] = 'Something went wrong. Contact WinkyFace on <a href="tfgamessite.com">tfgamessite.com</a>'
|
|
|
+ $DhInv_Msg_['ReqsNotMet'] = 'You do not meet the requirements to equip this item.'
|
|
|
+ $DhInv_Msg_['InventoryFull'] = 'There are too many items in ''{0}''''s Inventory!'
|
|
|
+ $DhInv_Msg_['NoInventory'] = 'No Inventory exists for the character ''{0}''!'
|
|
|
+ $DhInv_Msg_['InventoryExists'] = 'An Inventory for the character ''{0}'' already exists!'
|
|
|
+ $DhInv_Msg_['InvalidSlot'] = 'No Equipment Slot by the name of ''{0}'' exists!'
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ DhInv_DefSlots = 8 &!The default number of slots for any Inventory
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'NewInventory':
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ .slots = iif(ARGS[2] > 0, ARGS[2], DhInv_DefSlots)
|
|
|
+
|
|
|
+ !! Check if inventory exists
|
|
|
+ if ARRPOS($dhInv_, $.character) ! -1:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryExists'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Create the inventory
|
|
|
+ $dhInv_[] = $.character
|
|
|
+ dhInv_Slots[$.character + 'Inv'] = .slots
|
|
|
+
|
|
|
+ _i = 0
|
|
|
+ :Loop DH_Inventory_NewInventory_GenerateSlots
|
|
|
+ if _i < dhInv_Slots[$.character + 'Inv']
|
|
|
+ $dhInv_Slot[$.character + 'Inv_Slot' + _i] = 'Empty'
|
|
|
+ _i += 1
|
|
|
+ jump 'Loop DH_Inventory_NewInventory_GenerateSlots'
|
|
|
+ end
|
|
|
+
|
|
|
+ gs 'DH_Inventory', 'Unequip', $.character, 'All'
|
|
|
+ gs 'DH_Inventory', 'RemoveItem', $.character, 'All'
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'DeleteInventory':
|
|
|
+ !! Check if inventory exists
|
|
|
+ if ARRPOS($dhInv_, $.character) = -1:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['NoInventory'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ _invPos = ARRPOS('$dhInv_', $.character)
|
|
|
+
|
|
|
+ !!~~ Kill Slots
|
|
|
+ _i = 0
|
|
|
+ _slotStart = 0
|
|
|
+ :Loop DH_Inventory_DeleteInventory_GetSlotStart
|
|
|
+ if _i < _invPos:
|
|
|
+ _slotStart += dhInv_Slots[$dhInv_[_invPos] + 'Inv']
|
|
|
+ _i += 1
|
|
|
+ jump 'Loop DH_Inventory_DeleteInventory_GetSlotStart'
|
|
|
+ end
|
|
|
+
|
|
|
+ _i = 0
|
|
|
+ :Loop DH_Inventory_DeleteInventory_KillSlots
|
|
|
+ if _i < dhInv_Slots[$.character + 'Inv']
|
|
|
+ KILLVAR '$dhInv_Slot', (_slotStart + _i)
|
|
|
+ _i += 1
|
|
|
+ jump 'Loop DH_Inventory_DeleteInventory_KillSlots'
|
|
|
+ end
|
|
|
+
|
|
|
+ KILLVAR 'dhInv_Slots', _invPos
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ _ArmorSlots = _invPos * ARRSIZE('$DhInv_ArmSlot_')
|
|
|
+ _WeaponSlots = _invPos * ARRSIZE('$DhInv_WepSlot_')
|
|
|
+ !!~~ Kill Equip Slots
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots)
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 1
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 2
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 3
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 4
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 5
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 6
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 7
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 8
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 9
|
|
|
+ KILLVAR 'dhEqA_Name_', (_invPos * _ArmorSlots) + 10
|
|
|
+ KILLVAR 'dhEqW_Name_', (_invPos * _WeaponSlots)
|
|
|
+ KILLVAR 'dhEqW_Name_', (_invPos * _WeaponSlots) + 1
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !!~~ Kill Durability
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots)
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 1
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 2
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 3
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 4
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 5
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 6
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 7
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 8
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 9
|
|
|
+ KILLVAR 'dhEqA_Dur_', (_invPos * _ArmorSlots) + 10
|
|
|
+ KILLVAR 'dhEqW_Dur_', (_invPos * _WeaponSlots)
|
|
|
+ KILLVAR 'dhEqW_Dur_', (_invPos * _WeaponSlots) + 1
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !! Kill Inventory
|
|
|
+ KILLVAR 'dhInv_', _invPos
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'Equip':
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ $.slotType = $ARGS[2]
|
|
|
+ $.itemName = $ARGS[3]
|
|
|
+ $.durability = $ARGS[4]
|
|
|
+
|
|
|
+ !! Check if inventory exists
|
|
|
+ if ARRPOS($dhInv_, $.character) = -1:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['NoInventory'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ $_GearSlot = $.character + 'Inv_' + $.slotType
|
|
|
+
|
|
|
+ if ARRPOS('$DhInv_ArmSlot_', $.slotType) ! -1:
|
|
|
+ if $.slotType = 'Head' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Head'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Head')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Heads', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Suit' :
|
|
|
+ _slotsToFree = 0
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Suit'] ! 'Empty': _slotsToFree = 1
|
|
|
+ else
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Chest'] ! 'Empty': _slotsToFree += 1 & end
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Legs'] ! 'Empty': _slotsToFree += 1 & end
|
|
|
+ end
|
|
|
+
|
|
|
+ !! If 0 slotsToFree, nothing is equipped
|
|
|
+ if _slotsToFree > 0:
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character, _slotsToFree) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Suit')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Chest')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Legs')
|
|
|
+ end
|
|
|
+
|
|
|
+ gs 'DH_Gear_Suits', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Chest' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Chest'] ! 'Empty' or $dhEqA_Name_[$.character + 'Inv_Suit'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Suit')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Chest')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Chests', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Legs' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Legs'] ! 'Empty' or $dhEqA_Name_[$.character + 'Inv_Suit'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Suit')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Legs')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Legs', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Gloves' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Gloves'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Gloves')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Gloves', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Feet' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Feet'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Feet')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Feet', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'ShoulderL' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_ShoulderL'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'ShoulderL')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Shoulders', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'ShoulderR' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_ShoulderR'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'ShoulderR')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Shoulders', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Cloak' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Cloak'] ! 'Empty' or $dhEqA_Name_[$.character + 'Inv_Wings'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Cloak')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Wings')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Cloaks', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Wings' :
|
|
|
+ !! Do I need a free slot?
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Wings'] ! 'Empty' or $dhEqA_Name_[$.character + 'Inv_Cloak'] ! 'Empty':
|
|
|
+ !! Do I have a free slot?
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Free slot so unequip!
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Wings')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Cloak')
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Equip!
|
|
|
+ gs 'DH_Gear_Wings', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Shield' :
|
|
|
+ _offHandOnly = True
|
|
|
+ _needsFreeSlot = False
|
|
|
+ if $dhEqA_Name_[$.character + 'Inv_Shield'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ elseif $dhEqW_Name_[$.character + 'Inv_Offhand'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ elseif $dhEqW_Name_[$.character + 'Inv_MainHand'] ! 'Empty':
|
|
|
+ if FUNC('DH_Gear_Weapons', 'IsOneHanded', $dhEqW_Name_[$.character + 'Inv_MainHand']) = False:
|
|
|
+ _needsFreeSlot = True
|
|
|
+ _offHandOnly = False
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if _needsFreeSlot:
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ if _offHandOnly:
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Shield')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Offhand')
|
|
|
+ else
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'MainHand')
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ gs 'DH_Gear_Shields', $.itemName
|
|
|
+ $dhEqA_Name_[$.character + 'Inv_' + $.slotType] = $dhArm_Name
|
|
|
+ $dhEqA_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhArm_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddArmorStats'
|
|
|
+ end
|
|
|
+
|
|
|
+ elseif ARRPOS('$DhInv_WepSlot_', $.slotType) ! -1:
|
|
|
+ if $.slotType = 'MainHand' :
|
|
|
+ !! Check if main equipped
|
|
|
+ if $dhEqW_Name_[$.character + 'Inv_MainHand'] ! 'Empty':
|
|
|
+ !! Check if 2 handed
|
|
|
+ if FUNC('DH_Gear_Weapons', 'IsOneHanded', $dhEqW_Name_[$.character + 'Inv_MainHand']) = False:
|
|
|
+ !! Check if shield or offhand equipped
|
|
|
+ if $dhEqW_Name_[$.character + 'Inv_Offhand'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ elseif $dhEqW_Name_[$.character + 'Inv_Shield'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Unequip shield/offhand
|
|
|
+ if _needsFreeSlot:
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Offhand')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Shield')
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Unequip main
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'MainHand')
|
|
|
+
|
|
|
+ else
|
|
|
+ !! Check if 2 handed
|
|
|
+ if FUNC('DH_Gear_Weapons', 'IsOneHanded', $dhEqW_Name_[$.character + 'Inv_MainHand']) = False:
|
|
|
+ !! Check if shield or offhand equipped
|
|
|
+ if $dhEqW_Name_[$.character + 'Inv_Offhand'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ elseif $dhEqW_Name_[$.character + 'Inv_Shield'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Unequip shield/offhand
|
|
|
+ if _needsFreeSlot:
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Offhand')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Shield')
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Unequip shield/offhand
|
|
|
+ if _needsFreeSlot:
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Offhand')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Shield')
|
|
|
+ end
|
|
|
+
|
|
|
+ gs 'DH_Gear_Weapons', $.itemName
|
|
|
+ $dhEqW_Name_[$.character + 'Inv_' + $.slotType] = $dhWep_Name
|
|
|
+ $dhEqW_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhWep_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddWeaponStats'
|
|
|
+
|
|
|
+ elseif $.slotType = 'Offhand' :
|
|
|
+ _offHandOnly = True
|
|
|
+ _needsFreeSlot = False
|
|
|
+ if $dhEqW_Name_[$.character + 'Inv_Offhand'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ elseif $dhEqA_Name_[$.character + 'Inv_Shield'] ! 'Empty': _needsFreeSlot = True
|
|
|
+ elseif $dhEqW_Name_[$.character + 'Inv_MainHand'] ! 'Empty':
|
|
|
+ if FUNC('DH_Gear_Weapons', 'IsOneHanded', $dhEqW_Name_[$.character + 'Inv_MainHand']) = False:
|
|
|
+ _needsFreeSlot = True
|
|
|
+ _offHandOnly = False
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if _needsFreeSlot:
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character) = False:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ if _offHandOnly:
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Offhand')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Shield')
|
|
|
+ else
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'MainHand')
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ gs 'DH_Gear_Weapons', $.itemName
|
|
|
+ $dhEqW_Name_[$.character + 'Inv_' + $.slotType] = $dhWep_Name
|
|
|
+ $dhEqW_Dur_[$.character + 'Inv_' + $.slotType] = iif($.durability > 0, $.durability, $dhWep_DurMax)
|
|
|
+ jump 'DH_Inventory_Equip_AddWeaponStats'
|
|
|
+ end
|
|
|
+
|
|
|
+ else
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InvalidSlot'], $.slotType)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !!~~ Add Armor stats
|
|
|
+ :DH_Inventory_Equip_AddArmorStats
|
|
|
+ dhCh_Health += dhArm_Health
|
|
|
+ dhCh_Stamina += dhArm_Stamina
|
|
|
+ dhCh_Mana += dhArm_Mana
|
|
|
+
|
|
|
+ dhCh_Agi += dhArm_Agi
|
|
|
+ dhCh_Cha += dhArm_Cha
|
|
|
+ dhCh_Int += dhArm_Int
|
|
|
+ dhCh_Lore += dhArm_Lore
|
|
|
+ dhCh_Luck += dhArm_Luck
|
|
|
+ dhCh_Per += dhArm_Per
|
|
|
+ dhCh_Str += dhArm_Str
|
|
|
+
|
|
|
+ dhCh_Defense += dhArm_Defense
|
|
|
+
|
|
|
+ dhCh_ResPhys += dhArm_ResPhys
|
|
|
+ dhCh_ResPoison += dhArm_ResPoison
|
|
|
+ dhCh_ResFire += dhArm_ResFire
|
|
|
+ dhCh_ResEarth += dhArm_ResEarth
|
|
|
+ dhCh_ResMetal += dhArm_ResMetal
|
|
|
+ dhCh_ResWater += dhArm_ResWater
|
|
|
+ dhCh_ResWood += dhArm_ResWood
|
|
|
+
|
|
|
+ dhCh_EnExp += dhArm_EnExp
|
|
|
+ exit
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !!~~ Add Weapon stats
|
|
|
+ :DH_Inventory_Equip_AddWeaponStats
|
|
|
+ dhCh_Health += dhWep_Health
|
|
|
+ dhCh_Stamina += dhWep_Stamina
|
|
|
+ dhCh_Mana += dhWep_Mana
|
|
|
+
|
|
|
+ dhCh_Agi += dhWep_Agi
|
|
|
+ dhCh_Cha += dhWep_Cha
|
|
|
+ dhCh_Int += dhWep_Int
|
|
|
+ dhCh_Lore += dhWep_Lore
|
|
|
+ dhCh_Luck += dhWep_Luck
|
|
|
+ dhCh_Per += dhWep_Per
|
|
|
+ dhCh_Str += dhWep_Str
|
|
|
+
|
|
|
+ dhCh_DmgMin += dhWep_DmgMin
|
|
|
+ dhCh_DmgMax += dhWep_DmgMax
|
|
|
+ dhCh_CritMod += dhWep_CritMod
|
|
|
+ dhCh_CritChance += dhWep_CritChance
|
|
|
+
|
|
|
+ dhCh_DmgPhys += dhWep_DmgPhys
|
|
|
+ dhCh_DmgPoison += dhWep_DmgPoison
|
|
|
+ dhCh_DmgFire += dhWep_DmgFire
|
|
|
+ dhCh_DmgEarth += dhWep_DmgEarth
|
|
|
+ dhCh_DmgMetal += dhWep_DmgMetal
|
|
|
+ dhCh_DmgWater += dhWep_DmgWater
|
|
|
+ dhCh_DmgWood += dhWep_DmgWood
|
|
|
+
|
|
|
+ dhCh_EnExp += dhWep_EnExp
|
|
|
+ exit
|
|
|
+ !!~~#
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'Unequip':
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ $.slotType = $ARGS[2]
|
|
|
+
|
|
|
+ !! Check if inventory exists
|
|
|
+ if ARRPOS('$dhInv_', $.character) ! -1:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['NoInventory'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Check if there is enough space to unequip items
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character):
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ $_GearSlot = $.character + 'Inv_' + $.slotType
|
|
|
+
|
|
|
+ if $.slotType = 'All':
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Armor' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Weapons')
|
|
|
+
|
|
|
+ elseif $.slotType = 'Armor':
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Head' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Chest' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Legs' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Gloves' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Feet' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'ShoulderL')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'ShoulderR')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Cloak' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Wings' )
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Shield' )
|
|
|
+
|
|
|
+ elseif $.slotType = 'Weapons':
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'MainHand')
|
|
|
+ FUNC('DH_Inventory', 'Unequip', $.character, 'Offhand' )
|
|
|
+
|
|
|
+ elseif ARRPOS($DhInv_ArmSlot_, $.slotType) ! -1:
|
|
|
+ !! If the armor slot is already empty, don't bother re-emptying it
|
|
|
+ if $dhEqA_Name_[$_GearSlot] = 'Empty':
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['EmptySlot'], $.character, $.slotType)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+ !!~~ Get Armor stats
|
|
|
+ if $.slotType = 'Head' : gs 'DH_Gear_Heads', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Suit' : gs 'DH_Gear_Suits', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Chest' : gs 'DH_Gear_Chests', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Legs' : gs 'DH_Gear_Legs', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Gloves' : gs 'DH_Gear_Gloves', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Feet' : gs 'DH_Gear_Feet', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'ShoulderL' : gs 'DH_Gear_Shoulders', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'ShoulderR' : gs 'DH_Gear_Shoulders', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Cloak' : gs 'DH_Gear_Cloaks', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Wings' : gs 'DH_Gear_Wings', $dhEqA_Name_[$_GearSlot]
|
|
|
+ elseif $.slotType = 'Shield' : gs 'DH_Gear_Shields', $dhEqA_Name_[$_GearSlot]
|
|
|
+ end
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !!~~ Remove stats from character
|
|
|
+ dhCh_Health -= dhArm_Health
|
|
|
+ dhCh_Stamina -= dhArm_Stamina
|
|
|
+ dhCh_Mana -= dhArm_Mana
|
|
|
+
|
|
|
+ dhCh_Agi -= dhArm_Agi
|
|
|
+ dhCh_Cha -= dhArm_Cha
|
|
|
+ dhCh_Int -= dhArm_Int
|
|
|
+ dhCh_Lore -= dhArm_Lore
|
|
|
+ dhCh_Luck -= dhArm_Luck
|
|
|
+ dhCh_Per -= dhArm_Per
|
|
|
+ dhCh_Str -= dhArm_Str
|
|
|
+
|
|
|
+ dhCh_Defense -= dhArm_Defense
|
|
|
+
|
|
|
+ dhCh_ResPhys -= dhArm_ResPhys
|
|
|
+ dhCh_ResPoison -= dhArm_ResPoison
|
|
|
+ dhCh_ResFire -= dhArm_ResFire
|
|
|
+ dhCh_ResEarth -= dhArm_ResEarth
|
|
|
+ dhCh_ResMetal -= dhArm_ResMetal
|
|
|
+ dhCh_ResWater -= dhArm_ResWater
|
|
|
+ dhCh_ResWood -= dhArm_ResWood
|
|
|
+
|
|
|
+ dhCh_EnExp -= dhArm_EnExp
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !! Pass Armor to Inventory
|
|
|
+ gs 'DH_Inventory', 'AddItem', 'Armor', $dhEqA_Name_[$_GearSlot], dhEqA_Dur_[$_GearSlot]
|
|
|
+
|
|
|
+ !! Remove Armor from Armor Slot
|
|
|
+ $dhEqA_Name_[$_GearSlot] = 'Empty'
|
|
|
+ dhEqA_Dur_[$_GearSlot] = 0
|
|
|
+
|
|
|
+ elseif ARRPOS($DhInv_WepSlot_, $.character) ! -1:
|
|
|
+ !! If the weapon slot is already empty, don't bother re-emptying it
|
|
|
+ if $dhEqW_Name_[_GearSlot] = 'Empty':
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['EmptySlot'], $.character, $.slotType)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Get Weapon stats
|
|
|
+ gs 'DH_Gear_Weapons', $dhEqW_Name_[$_GearSlot]
|
|
|
+
|
|
|
+ !!~~ Remove stats from character
|
|
|
+ dhCh_Health -= dhWep_Health
|
|
|
+ dhCh_Stamina -= dhWep_Stamina
|
|
|
+ dhCh_Mana -= dhWep_Mana
|
|
|
+
|
|
|
+ dhCh_Agi -= dhWep_Agi
|
|
|
+ dhCh_Cha -= dhWep_Cha
|
|
|
+ dhCh_Int -= dhWep_Int
|
|
|
+ dhCh_Lore -= dhWep_Lore
|
|
|
+ dhCh_Luck -= dhWep_Luck
|
|
|
+ dhCh_Per -= dhWep_Per
|
|
|
+ dhCh_Str -= dhWep_Str
|
|
|
+
|
|
|
+ dhCh_DmgMin -= dhWep_DmgMin
|
|
|
+ dhCh_DmgMax -= dhWep_DmgMax
|
|
|
+ dhCh_CritMod -= dhWep_CritMod
|
|
|
+ dhCh_CritChance -= dhWep_CritChance
|
|
|
+
|
|
|
+ dhCh_DmgPhys -= dhWep_DmgPhys
|
|
|
+ dhCh_DmgPoison -= dhWep_DmgPoison
|
|
|
+ dhCh_DmgFire -= dhWep_DmgFire
|
|
|
+ dhCh_DmgEarth -= dhWep_DmgEarth
|
|
|
+ dhCh_DmgMetal -= dhWep_DmgMetal
|
|
|
+ dhCh_DmgWater -= dhWep_DmgWater
|
|
|
+ dhCh_DmgWood -= dhWep_DmgWood
|
|
|
+
|
|
|
+ dhCh_EnExp -= dhWep_EnExp
|
|
|
+ !!~~#
|
|
|
+
|
|
|
+ !! Pass Weapon to Inventory
|
|
|
+ gs 'DH_Inventory', 'AddItem', $dhEqW_Name_[$_GearSlot], $dhEqW_Dur_[$_GearSlot]
|
|
|
+
|
|
|
+ !! Remove Weapon from Armor Slot
|
|
|
+ $dhEqW_Name_[$_GearSlot] = 'Empty'
|
|
|
+ dhEqW_Dur_[$_GearSlot] = 0
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'AddItem':
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ $.itemType = $ARGS[2]
|
|
|
+ $.itemName = $ARGS[3]
|
|
|
+ $.slotNo = $ARGS[4]
|
|
|
+
|
|
|
+ !! Check if inventory exists
|
|
|
+ if ARRPOS('$dhInv_', $.character) ! -1:
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['NoInventory'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+ !! Check if there is enough space to unequip items
|
|
|
+ if FUNC('DH_Inventory', 'HasFreeSlots', $.character):
|
|
|
+ $RESULT = FUNC('DH_Functions', 'FormatStr', $DhInv_Msg_['InventoryFull'], $.character)
|
|
|
+ exit
|
|
|
+ end
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'RemoveItem':
|
|
|
+ if ARRPOS($dh_Inventories, $ARGS[1]) ! -1: exit & end
|
|
|
+
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ $.itemType = $ARGS[2]
|
|
|
+ $.itemName = $ARGS[3]
|
|
|
+ $.slotNo = $ARGS[4]
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'AddMoney':
|
|
|
+ if ARRPOS($dh_Inventories, $ARGS[1]) ! -1: exit & end
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'RemoveMoney':
|
|
|
+ if ARRPOS($dh_Inventories, $ARGS[1]) ! -1: exit & end
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'GetFreeSlots':
|
|
|
+ !! Returns the number of free slots in inventory
|
|
|
+ !! If inventory does not exist, returns 0
|
|
|
+
|
|
|
+ $.character = $ARGS[1]
|
|
|
+ if ARRPOS($dhInv_, $.character) = -1:
|
|
|
+ RESULT = 0
|
|
|
+ jump 'AutoKill DH_Inventory_GetFreeSlots'
|
|
|
+ end
|
|
|
+
|
|
|
+ _i = 0
|
|
|
+ _slotStart = 0
|
|
|
+ :Loop DH_Inventory_GetFreeSlots_GetSlotStart
|
|
|
+ if _i < _invPos:
|
|
|
+ _slotStart += dhInv_Slots[$dhInv_[_invPos] + 'Inv']
|
|
|
+ _i += 1
|
|
|
+ jump 'Loop DH_Inventory_GetFreeSlots_GetSlotStart'
|
|
|
+ end
|
|
|
+
|
|
|
+ _i = 0
|
|
|
+ _freeSlots = 0
|
|
|
+ :Loop DH_Inventory_GetFreeSlots
|
|
|
+ if _i < dhInv_Slots[$.character + 'Inv_']:
|
|
|
+ if dhInv_Slot[_slotStart + _i] = 'Empty': _freeSlots += 1 & end
|
|
|
+ jump 'Loop DH_Inventory_GetFreeSlots'
|
|
|
+ end
|
|
|
+
|
|
|
+ RESULT = _freeSlots
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'HasFreeSlots':
|
|
|
+ !!$ARGS[1] = character
|
|
|
+ !! ARGS[2] = free slots to check for
|
|
|
+ RESULT = iif(FUNC('DH_Inventory', 'GetFreeSlots', $ARGS[1]) >= MAX(1, ARGS[2]), True, False)
|
|
|
+end
|
|
|
+
|
|
|
+!! TODO: Each inventory should have a currency associated with it
|
|
|
+!! Perhaps a special currency as well
|
|
|
+
|
|
|
+
|
|
|
+--- DH_Inventory ---------------------------------
|
|
|
+
|