;BIG TODO Change to itempicker and use 'scrGetItem'. Must get all types or items from somewhere not player or station or source.
(map (itmGetTypes "a") armorNameList (itmGetName armorNameList 0x100))
;TODO sort armor and all lists by level and/or type
(block Nil
(scrSetDesc gScreen "Select your armor.")
(scrSetCounter gScreen 4)
)
;Here, in a similar way to the travel dockscreens, we get the item highlighted on the screen and add it to the
; cargo hold or install it depending on which option is chosen. Here we use 'typGetProperty armorList 'name'
; to match with the "text" name given by scrGetListEntry. Because we are 'filter'ing 'itmGetTypes' a list of one
; UNID is the result. We then convert the one UNID list to a UNID using '@'and create the number of armor
; segments given in the screen counter.
(block Nil
(setq armorOnScreen (scrGetListEntry gScreen))
(setq actualArmorInList (filter (itmGetTypes "a") armorList (eq (typGetProperty armorList 'name) armorOnScreen)))
(setq itemUNIDToCreate (@ actualArmorInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(scrSetDesc gScreen "Select your armor. Armor added to your hold")
)
;(scrExitScreen gScreen)
;XXXXXX Getting a no binding error in the dsRepairArmor screen but still works
(block Nil
(setq armorOnScreen (scrGetListEntry gScreen))
(setq actualArmorInList (filter (itmGetTypes "a") armorList (eq (typGetProperty armorList 'name) armorOnScreen)))
(setq itemUNIDToCreate (@ actualArmorInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(scrShowScreen gScreen "&dsRepairArmor;")
)
(scrExitScreen gScreen)
(map (itmGetTypes "w") weaponNameList (itmGetName weaponNameList 0x100))
(block Nil
(scrSetDesc gScreen "Select your weapon.")
(scrSetCounter gScreen 1)
)
;Note that with unidentified alien weapons/shields and unknown misc items (barrels, ROMs, autons) that the
; 'typGetProperty whicheverList 'name' code doesn't work because until these items are identified (or SetKnown)
; they have a different name eg a quadriliferous alien device or whatever. Substituting 'itmGetName
; whicheverList 0x100' works because it gets the true name of the item (I think that's what is happening).
(block Nil
(setq weaponOnScreen (scrGetListEntry gScreen))
(setq actualWeaponInList (filter (itmGetTypes "w") weaponList (eq (itmGetName weaponList 0x100) weaponOnScreen)))
(setq itemUNIDToCreate (@ actualWeaponInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your weapon. Weapon added to your hold")
)
(block Nil
(setq weaponOnScreen (scrGetListEntry gScreen))
(setq actualWeaponInList (filter (itmGetTypes "w") weaponList (eq (itmGetName weaponList 0x100) weaponOnScreen)))
(setq itemUNIDToCreate (@ actualWeaponInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem (scrGetCounter gScreen))
(shpInstallDevice gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your weapon. Weapon installed.")
)
(scrShowScreen gScreen "&dsD789GetAmmo;")
(scrExitScreen gScreen)
(map (itmGetTypes "m") ammoNameList (itmGetName ammoNameList 0x100))
(block Nil
(scrSetDesc gScreen "Select your ammunition.")
(scrSetCounter gScreen 20)
)
(block Nil
(setq ammoOnScreen (scrGetListEntry gScreen))
(setq actualAmmoInList (filter (itmGetTypes "m") ammoList (eq (typGetProperty ammoList 'name) ammoOnScreen)))
(setq itemUNIDToCreate (@ actualAmmoInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(scrSetDesc gScreen "Select your ammo. Ammo added to your hold")
)
(scrExitScreen gScreen)
(map (itmGetTypes "s") shieldNameList (itmGetName shieldNameList 0x100))
(block Nil
(scrSetDesc gScreen "Select your shield.")
(scrSetCounter gScreen 1)
)
(block Nil
(setq shieldOnScreen (scrGetListEntry gScreen))
(setq actualShieldInList (filter (itmGetTypes "s") shieldList (eq (itmGetName shieldList 0x100) shieldOnScreen)))
(setq itemUNIDToCreate (@ actualShieldInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your shield. Shield added to your hold")
)
(block Nil
(setq shieldOnScreen (scrGetListEntry gScreen))
(setq actualShieldInList (filter (itmGetTypes "s") shieldList (eq (itmGetName shieldList 0x100) shieldOnScreen)))
(setq itemUNIDToCreate (@ actualShieldInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem (scrGetCounter gScreen))
(shpInstallDevice gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your shield. Shield installed.")
)
(scrExitScreen gScreen)
(map (itmGetTypes "d ~ws") otherDevicesNameList (itmGetName otherDevicesNameList 0x100))
(block Nil
(scrSetDesc gScreen "Select your device.")
(scrSetCounter gScreen 1)
)
(block Nil
(setq deviceOnScreen (scrGetListEntry gScreen))
(setq actualDeviceInList (filter (itmGetTypes "d ~ws") deviceList (eq (itmGetName deviceList 0x100) deviceOnScreen)))
(setq itemUNIDToCreate (@ actualDeviceInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your device. Device added to your hold")
)
(block Nil
(setq deviceOnScreen (scrGetListEntry gScreen))
(setq actualDeviceInList (filter (itmGetTypes "d ~ws") deviceList (eq (itmGetName deviceList 0x100) deviceOnScreen)))
(setq itemUNIDToCreate (@ actualDeviceInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem (scrGetCounter gScreen))
(shpInstallDevice gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your device. Device installed.")
)
(scrExitScreen gScreen)
(map (itmGetTypes "u") otherNameList (itmGetName otherNameList 0x100))
(block Nil
(scrSetDesc gScreen "Select your item.")
(scrSetCounter gScreen 1)
)
(block Nil
(setq itemOnScreen (scrGetListEntry gScreen))
(setq actualItemInList (filter (itmGetTypes "u") itemList (eq (itmGetName itemList 0x100) itemOnScreen)))
(setq itemUNIDToCreate (@ actualItemInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your item. Item added to your hold")
)
(scrExitScreen gScreen)
(map (itmGetTypes "t") miscNameList (itmGetName miscNameList 0x100))
(block Nil
(scrSetDesc gScreen "Select your item.")
(scrSetCounter gScreen 1)
)
(block Nil
(setq miscOnScreen (scrGetListEntry gScreen))
(setq actualMiscInList (filter (itmGetTypes "t") miscList (eq (itmGetName miscList 0x100) miscOnScreen)))
(setq itemUNIDToCreate (@ actualMiscInList 0))
(setq actualItem (itmCreate itemUNIDToCreate (scrGetCounter gScreen)))
(objAddItem gPlayership actualItem)
(itmSetKnown actualItem True)
(scrSetDesc gScreen "Select your item. Item added to your hold")
)
(scrExitScreen gScreen)