Add various item info

This commit is contained in:
2023-01-03 15:58:54 +00:00
parent 6c1862b2a1
commit 5fc39bd12d
11 changed files with 310 additions and 50 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

+18 -8
View File
@@ -19,9 +19,19 @@ watchCombinations =
po xs it = (map o xs, it) po xs it = (map o xs, it)
o = (1,) o = (1,)
backpackCombinations :: [([(ItAmount,ItemBaseType)],Item)]
backpackCombinations =
[ po [CRAFT HOSE, CRAFT STEELDRUM] fuelPack
]
where
po xs it = (map o xs, it)
o = (1,)
itemCombinations :: [([(ItAmount, ItemBaseType)], Item)] itemCombinations :: [([(ItAmount, ItemBaseType)], Item)]
itemCombinations = itemCombinations =
watchCombinations ++ watchCombinations ++
backpackCombinations ++
[ po [CRAFT PIPE, CRAFT HARDWARE] (bangStick 1) [ po [CRAFT PIPE, CRAFT HARDWARE] (bangStick 1)
, po [HELD (BANGSTICK 1), CRAFT TIN] pistol , po [HELD (BANGSTICK 1), CRAFT TIN] pistol
, po [HELD PISTOL, CRAFT SPRING] autoPistol , po [HELD PISTOL, CRAFT SPRING] autoPistol
@@ -31,7 +41,7 @@ itemCombinations =
, po [HELD REVOLVER, cr SPRING] $ revolverX 1 , po [HELD REVOLVER, cr SPRING] $ revolverX 1
, po [cr CAN, cr HARDWARE] bangCone , po [cr CAN, cr HARDWARE] bangCone
, po [HELD BANGCONE, cr PLANK] blunderbuss , po [HELD BANGCONE, cr PLANK] blunderbuss
, po [HELD BLUNDERBUSS, cr DRUM] (grapeCannon 1) , po [HELD BLUNDERBUSS, cr STEELDRUM] (grapeCannon 1)
, po [HELD (BANGSTICK 1), cr PLANK] rifle , po [HELD (BANGSTICK 1), cr PLANK] rifle
, po [HELD (BANGSTICK 1), HELD (BANGSTICK 1), HELD (BANGSTICK 1)] (volleyGun 3) , po [HELD (BANGSTICK 1), HELD (BANGSTICK 1), HELD (BANGSTICK 1)] (volleyGun 3)
, po [HELD RIFLE, cr TIN] repeater , po [HELD RIFLE, cr TIN] repeater
@@ -50,8 +60,8 @@ itemCombinations =
++ [p [p 2 $ cr TUBE, o $ HELD (LAUNCHERX i)] (launcherX (i + 1)) | i <- [2 .. 9]] ++ [p [p 2 $ cr TUBE, o $ HELD (LAUNCHERX i)] (launcherX (i + 1)) | i <- [2 .. 9]]
++ [ po [cr LIGHTER, cr PUMP, cr CAN] flameSpitter ++ [ po [cr LIGHTER, cr PUMP, cr CAN] flameSpitter
, po [HELD FLAMESPITTER, cr CAN, cr PUMP] blowTorch , po [HELD FLAMESPITTER, cr CAN, cr PUMP] blowTorch
, po [HELD FLAMESPITTER, cr DRUM] flameThrower , po [HELD FLAMESPITTER, cr STEELDRUM] flameThrower
, po [HELD FLAMETHROWER, cr DRUM] flameWall , po [HELD FLAMETHROWER, cr STEELDRUM] flameWall
, po [HELD FLAMETHROWER, cr PUMP] flameTorrent , po [HELD FLAMETHROWER, cr PUMP] flameTorrent
, p [o $ cr PRISM, o $ cr TRANSFORMER, o $ cr PIPE] lasGun , p [o $ cr PRISM, o $ cr TRANSFORMER, o $ cr PIPE] lasGun
, po [HELD LASGUN, HELD LASGUN, cr HARDWARE] dualBeam , po [HELD LASGUN, HELD LASGUN, cr HARDWARE] dualBeam
@@ -65,10 +75,10 @@ itemCombinations =
, p [p 2 $ cr PIPE, o $ cr PLATE, o $ cr MOTOR] powerLegs , p [p 2 $ cr PIPE, o $ cr PLATE, o $ cr MOTOR] powerLegs
, p [p 4 $ cr CAN] plateCraft , p [p 4 $ cr CAN] plateCraft
, p [p 3 $ cr TIN] plateCraft , p [p 3 $ cr TIN] plateCraft
, p [p 2 $ cr DRUM] plateCraft , p [p 2 $ cr STEELDRUM] plateCraft
, p [p 2 $ cr PLATE] flatShield , p [p 2 $ cr PLATE] flatShield
, po [cr MICROCHIP, cr PRISM] (makeTypeCraft LIGHTSENSOR) , po [cr MICROCHIP, cr PRISM] (makeTypeCraft LIGHTSENSOR)
, po [cr MICROCHIP, cr MAGNET] (makeTypeCraft SOUNDSENSOR) , po [cr MICROCHIP, cr MICROPHONE] (makeTypeCraft SOUNDSENSOR)
, po [cr MICROCHIP, cr THERMOMETER] (makeTypeCraft HEATSENSOR) , po [cr MICROCHIP, cr THERMOMETER] (makeTypeCraft HEATSENSOR)
, po [cr MICROCHIP, cr TRANSMITTER, cr LIGHTSENSOR] (autoDetector ITEMDETECTOR) , po [cr MICROCHIP, cr TRANSMITTER, cr LIGHTSENSOR] (autoDetector ITEMDETECTOR)
, po [cr MICROCHIP, cr TRANSMITTER, cr SOUNDSENSOR] (autoDetector WALLDETECTOR) , po [cr MICROCHIP, cr TRANSMITTER, cr SOUNDSENSOR] (autoDetector WALLDETECTOR)
@@ -83,7 +93,7 @@ itemCombinations =
++ map (\i -> po [hd (REVOLVERX i), cr CAN] $ revolverX (i + 1)) [1 .. 5] ++ map (\i -> po [hd (REVOLVERX i), cr CAN] $ revolverX (i + 1)) [1 .. 5]
++ map (\i -> po [hd (VOLLEYGUN i), HELD (BANGSTICK 1)] $ volleyGun (i + 1)) [3 .. 5] ++ map (\i -> po [hd (VOLLEYGUN i), HELD (BANGSTICK 1)] $ volleyGun (i + 1)) [3 .. 5]
++ map (\i -> po [hd (MINIGUNX i), HELD (BANGSTICK 1)] $ miniGunX (i + 1)) [3 .. 15] ++ map (\i -> po [hd (MINIGUNX i), HELD (BANGSTICK 1)] $ miniGunX (i + 1)) [3 .. 15]
++ map (\i -> po [hd (GRAPECANNON i), cr DRUM] $ grapeCannon (i + 1)) [1, 2, 3] ++ map (\i -> po [hd (GRAPECANNON i), cr STEELDRUM] $ grapeCannon (i + 1)) [1, 2, 3]
++ [ po (_iyBase (_itType it) : mtype) $ it & itType . iyModules . ix modtype .~ m ++ [ po (_iyBase (_itType it) : mtype) $ it & itType . iyModules . ix modtype .~ m
| (modtype, is, ms) <- moduleCombinations | (modtype, is, ms) <- moduleCombinations
, it <- is , it <- is
@@ -110,7 +120,7 @@ moduleCombinations =
, burstRifle , burstRifle
] ]
, ,
[ amod [cr DRUM, cr HARDWARE] DRUMMAG [ amod [cr STEELDRUM, cr HARDWARE] DRUMMAG
, amod [cr MOTOR, cr HARDWARE] BELTMAG , amod [cr MOTOR, cr HARDWARE] BELTMAG
] ]
) )
@@ -122,7 +132,7 @@ moduleCombinations =
, burstRifle , burstRifle
] ]
, ,
[ amod [cr DUCTTAPE, HELD TORCH] ATTACHTORCH [ amod [cr TAPE, HELD TORCH] ATTACHTORCH
] ]
) )
, ,
+2 -2
View File
@@ -157,7 +157,7 @@ inventoryX c = case c of
, makeTypeCraftNum 1 SPRING , makeTypeCraftNum 1 SPRING
, makeTypeCraftNum 1 PLANK , makeTypeCraftNum 1 PLANK
, makeTypeCraftNum 1 PLATE , makeTypeCraftNum 1 PLATE
, makeTypeCraftNum 1 DRUM , makeTypeCraftNum 1 STEELDRUM
, makeTypeCraftNum 1 MOTOR , makeTypeCraftNum 1 MOTOR
] ]
'F' -> 'F' ->
@@ -171,7 +171,7 @@ inventoryX c = case c of
, makeTypeCraftNum 5 MAGNET , makeTypeCraftNum 5 MAGNET
, makeTypeCraftNum 5 PLANK , makeTypeCraftNum 5 PLANK
, makeTypeCraftNum 5 PLATE , makeTypeCraftNum 5 PLATE
, makeTypeCraftNum 5 DRUM , makeTypeCraftNum 5 STEELDRUM
, makeTypeCraftNum 5 MOTOR , makeTypeCraftNum 5 MOTOR
, makeTypeCraftNum 5 TRANSFORMER , makeTypeCraftNum 5 TRANSFORMER
, makeTypeCraftNum 5 PRISM , makeTypeCraftNum 5 PRISM
+10 -4
View File
@@ -29,17 +29,20 @@ data CraftType
| TUBE | TUBE
| HARDWARE | HARDWARE
| SPRING | SPRING
| DUCTTAPE
| HOSE
| TAPE
| CAN | CAN
| TIN | TIN
| DRUM | STEELDRUM
| PLANK | PLANK
| SHARDGLASS | GLASSSHARD
| SCRAPMETAL
| PUMP | PUMP
| MOTOR | MOTOR
| TRANSFORMER | TRANSFORMER
| PRISM | PRISM
| THERMOMETER
| LIGHTER | LIGHTER
| MAGNET | MAGNET
| ANTIMATTER | ANTIMATTER
@@ -57,6 +60,8 @@ data CraftType
| LIGHTSENSOR | LIGHTSENSOR
| SOUNDSENSOR | SOUNDSENSOR
| HEATSENSOR | HEATSENSOR
| MICROPHONE
| THERMOMETER
| CREATURESENSOR | CREATURESENSOR
| WIRE | WIRE
| BATTERY | BATTERY
@@ -106,6 +111,7 @@ data EquipItemType
| JUMPLEGS | JUMPLEGS
| JETPACK | JETPACK
| FUELPACK
| AUTODETECTOR Detector | AUTODETECTOR Detector
deriving (Eq,Ord,Show,Read) deriving (Eq,Ord,Show,Read)
+1
View File
@@ -43,6 +43,7 @@ itemFromEquipType et = case et of
SPEEDLEGS -> speedLegs SPEEDLEGS -> speedLegs
JUMPLEGS -> jumpLegs JUMPLEGS -> jumpLegs
JETPACK -> jetPack JETPACK -> jetPack
FUELPACK -> fuelPack
AUTODETECTOR d -> autoDetector d AUTODETECTOR d -> autoDetector d
itemFromLeftType :: LeftItemType -> Item itemFromLeftType :: LeftItemType -> Item
+6 -1
View File
@@ -43,7 +43,12 @@ equipItemSPic et _ = case et of
JETPACK -> JETPACK ->
(,) emptySH $ (,) emptySH $
setDepth 20 $ setDepth 20 $
pictures [color yellow $ polygon $ reverse $ rectNSWE 5 (-5) (-11) (-3)] pictures [color yellow $ polygon $ reverse $ rectNSWE 5 (-5) (-4) (-4)]
FUELPACK ->
(,) emptySH $
setDepth 20 $
--pictures [color yellow $ polygon $ reverse $ rectNSWE 5 (-5) (-11) (-3)]
pictures [color yellow $ polygon $ reverse $ polyCirc 3 5]
AUTODETECTOR dt -> noPic (colorSH (detectorColor dt) $ upperPrismPoly 3 $ rectWH 2 2) AUTODETECTOR dt -> noPic (colorSH (detectorColor dt) $ upperPrismPoly 3 $ rectWH 2 2)
leftItemSPic :: LeftItemType -> Item -> SPic leftItemSPic :: LeftItemType -> Item -> SPic
+6
View File
@@ -9,6 +9,7 @@ module Dodge.Item.Equipment (
frontArmour, frontArmour,
headLamp, headLamp,
jetPack, jetPack,
fuelPack,
speedLegs, speedLegs,
jumpLegs, jumpLegs,
flameShield, flameShield,
@@ -49,6 +50,11 @@ wristArmour =
& itUse . equipEffect . eeOnRemove .~ EoffWristShield & itUse . equipEffect . eeOnRemove .~ EoffWristShield
& itType . iyBase .~ EQUIP WRISTARMOUR & itType . iyBase .~ EQUIP WRISTARMOUR
fuelPack :: Item
fuelPack =
defaultEquipment
& itUse . equipEffect . eeSite .~ GoesOnBack
& itType . iyBase .~ EQUIP FUELPACK
jetPack :: Item jetPack :: Item
jetPack = jetPack =
+232 -7
View File
@@ -1,12 +1,237 @@
module Dodge.Item.Info where module Dodge.Item.Info where
import Dodge.Data.Item import Dodge.Data.Item
import qualified Data.Map.Strict as M
import LensHelp
itmBaseInfo :: ItemBaseType -> String itmInfo :: Item -> String
itmBaseInfo t = case t of itmInfo itm = itmBaseInfo itm ++ " " ++ itmUsageInfo itm
HELD _ -> "THIS ITEM CAN BE HELD."
LEFT _ -> "THIS ITEM CAN BE EQUIPPED. WHEN EQUIPPED, IT CAN BE ACTIVATED." itmBaseInfo :: Item -> String
EQUIP _ -> "THIS ITEM CAN BE EQUIPPED." itmBaseInfo itm = case (itm ^. itType . iyBase) of
Consumable _ -> "THIS ITEM CAN BE CONSUMED." HELD hit -> heldInfo hit
CRAFT _ -> "THIS ITEM SEEMS USELESS ON ITS OWN." LEFT lit -> leftInfo lit
EQUIP eit -> equipInfo eit
Consumable cit -> consumableInfo cit
CRAFT fit -> craftInfo fit
_ -> "THIS SHOULD NOT BE DISPLAYED" _ -> "THIS SHOULD NOT BE DISPLAYED"
showInt :: Int -> String
showInt i = case i of
0 -> "ZERO"
1 -> "ONE"
2 -> "TWO"
3 -> "THREE"
4 -> "FOUR"
5 -> "FIVE"
6 -> "SIX"
7 -> "SEVEN"
8 -> "EIGHT"
9 -> "NINE"
10 -> "TEN"
11 -> "ELEVEN"
12 -> "A DOZEN"
_ -> "MANY"
heldInfo :: HeldItemType -> String
heldInfo hit = case hit of
BANGSTICK 1 -> "A MAKESHIFT FIREARM WITH A SHORT BARREL THAT REQUIRES RELOADING AFTER EACH SHOT."
BANGSTICK i -> showInt i++" SMALL GUN BARRELS STRAPPED TOGETHER. EACH BARREL MUST BE INDIVIDUALLY LOADED, BUT NOT ALL NEED BE LOADED FOR THE WEAPON TO FIRE. ALL LOADED BARRELS DISCHARGE SIMULATNEOUSLY, WITH SIGNIFICANT SPREAD."
PISTOL -> "A SMALL FIREARM FED BY A MAKESHIFT MAGAZINE. THE ENTIRE MAGAZINE MUST BE REPLACED WHEN RELOADING THE WEAPON."
REVOLVER -> "A SMALL FIREARM FED BY A REVOLVING CYLINDER. SINGLE SHOT AND LOAD."
REVOLVERX i -> "A SMALL FIREARM FED BY "++ showInt i++ "REVOLVING CYLINDERS."
MACHINEPISTOL -> "A SMALL FIREARM AUTOMATICALLY, AND EXTREMELY RAPIDLY, FED BY A MAKESHIFT MAGAZINE. THE ENTIRE MAGAZINE MUST BE REPLACED WHEN RELOADING THE WEAPON."
AUTOPISTOL -> "A SMALL FIREARM AUTOMATICALLY FED BY A MAKESHIFT MAGAZINE. THE ENTIRE MAGAZINE MUST BE REPLACED WHEN RELOADING THE WEAPON."
SMG -> "A SMALL FIREARM WITH AN ATTACHED STOCK FOR STABILITY."
BANGCONE -> "A CONTAINER FOR DEBRIS. EXPOSIVE ACTION PROPELS THE DEBRIS AWAY FROM THE USER. QUITE UNWEILDY."
BLUNDERBUSS -> "A CONTAINER FOR DEBRIS ON THE END OF A STICK. EXPLOSIVE ACTION PROPELS THE DEBRIS AWAY FROM THE USER."
GRAPECANNON 1 -> "A LARGE CONTAINER FOR DEBRIS ON THE END OF A STICK. EXPLOSIVE ACTION PROPELS THE DEBRIS AWAY FROM THE USER."
GRAPECANNON i -> "AN "++ replicate (i-1) 'X' ++"L CONTAINER FOR DEBRIS ON THE END OF A STICK. EXPLOSIVE ACTION PROPELS THE DEBRIS AWAY FROM THE USER."
MINIGUNX i -> showInt i ++ " GUN BARRELS THAT REVOLVE RAPIDLY AROUND A CENTRAL STICK. REQUIRES CONSIDERABLE TIME TO WARM UP, BUT HAS AN EXTREMELY RAPID RATE OF FIRE. IT IS ALSO EXTREMELY DIFFICULT TO STABILISE."
VOLLEYGUN i -> showInt i ++ " GUN BARRELS LINED UP TO BE ROUGHLY PARALLEL. EACH BARREL MUST BE INDIVIDUALLY LOADED, BUT NOT ALL NEED BE LOADED FOR THE WEAPON TO FIRE. ALL LOADED BARRELS DISCHARGE SIMULTANEOUSLY."
RIFLE -> "A MAKESHIFT FIREARM WITH A MID LENGTH BARREL THAT REQUIRES RELOADING AFTER EACH SHOT."
REPEATER -> "A FIREARM FED BY A MAKESHIFT MAGAZINE. THE ENTIRE MAGAZINE MUST BE REPLACED WHEN RELOADING THE WEAPON."
AUTORIFLE -> "A FIREARM AUTOMATICALLY FED BY A MAKESHIFT MAGAZINE. THE ENTIRE MAGAZINE MUST BE REPLACED WHEN RELOADING THE WEAPON."
BURSTRIFLE -> "A FIREARM THAT RAPIDLY FIRES THREE PROJECTILES FROM ITS MAKESHIFT MAGAZINE. THE ENTIRE MAGAZINE MUST BE REPLACED WHEN RELOADING THE WEAPON."
BANGROD -> "A FIREARM WITH A LONG BARREL THAT REQUIRES RELOADING AFTER EACH SHOT."
ELEPHANTGUN -> "A FIREARM WITH A LONG BARREL THAT REQUIRES RELOADING AFTER EACH SHOT. ITS STOPPING POWER IS ONLY NOMINAL."
AMR -> "A MAKESHIFT ANTIMATERIEL RIFLE, DESIGNED TO DISABLE MILITARY EQUIPMENT. ITS LONG BARREL IS FED BY A MAKESHIFT MAGAZINE THAT MUST BE REPLACED WHEN RELOADING THE WEAPON."
AUTOAMR -> "A MAKESHIFT AUTOMATIC ANTIMATERIEL RIFLE, DESIGNED TO DISABLE MILITARY EQUIPMENT. ITS LONG BARREL IS FED BY A MAKESHIFT MAGAZINE THAT MUST BE REPLACED WHEN RELOADING THE WEAPON."
SNIPERRIFLE -> "A FIREARM DESIGNED WITH LONG RANGE CAPABILITY IN MIND. ITS LONG BARREL REQUIRES RELOADING AFTER EACH SHOT."
MACHINEGUN -> "A HEAVY FIREARM WHOSE RATE OF FIRE INCREASES DURING A BARRAGE."
FLAMESPITTER -> "A WEAPON THAT SQUIRTS OUT GLOBULES OF BURNING FUEL."
FLAMETHROWER -> "A WEAPON THAT SQUIRTS OUT BURNING FUEL."
FLAMETORRENT -> "A WEAPON THAT STREAMS OUT BURNING FUEL IN A TORRENT."
FLAMEWALL -> "A WEAPON THAT SQUIRTS OUT BURNING FUEL ALL AROUND THE USER."
BLOWTORCH -> "A WEAPON THAT PRODUCES A CONCENTRATED FLAME."
SPARKGUN -> "A WEAPON THAT PRODUCES AN ARC OF ELECTRICITY. THE ARC WILL ATTEMPT TO DISCHARGE AT A NEARBY OBJECT."
TESLAGUN -> "A WEAPON THAT DISCHARGES A SUSTAINED ARC OF ELECTRICITY. THE ARC WILL ATTEMPT TO DISCHARGE AT A NEARBY OBJECT."
LASGUN -> "A WEAPON THAT CONTINUOUSLY EMITS PHOTONS IN A NARROW BEAM."
LASCIRCLE -> "A EXTENSIVE CONFIGURATION OF PRISMS AND MIRRORS THAT PRODUCES MULTIPLE LASER BEAMS AROUND ITS USER."
DUALBEAM -> "A WEAPON THAT EMITS TWO BEAMS THAT CONVERGE AT A SELECTABLE POINT IN FRONT OF THE USER."
LASWIDE _ -> "A WEAPON THAT CONTINUOUSLY EMITS PHOTONS IN A NARROW BEAM. THE BEAM EXPANDS AS THE WEAPON HEATS UP."
TRACTORGUN -> "AN ITEM THAT PRODUCES A BEAM OF GRAVITONS."
LAUNCHER -> "A LARGE TUBE THAT CAN LAUNCH SELF PROPELLED PROJECTILES. MOVING THE TUBE AFTER LAUNCH WILL CAUSE THE PROJECTILE TO SPIN."
LAUNCHERX i -> showInt i++" TUBES THAT CAN LAUNCH SELF PROPELLED PROJECTILES. TUBES THAT DO NOT FACE FORWARD LAUNCH THEIR PROJECITLES AT AN ANGLE."
REMOTELAUNCHER -> "A LARGE TUBE THAT CAN LAUNCH SELF PROPELLED PROJECTILES. CONTAINS A TRANSMITTER ALLOWING FOR REMOTE CONTROL OF LAUNCHED PROJECTILES."
POISONSPRAYER -> "A WEAPON THAT RELEASES NOXIOUS GASES."
DRONELAUNCHER -> "A DEVICE FOR LAUNCHING DRONES."
SHATTERGUN -> "A SEISMIC DEVICE THAT SHATTERS HARD ITEMS IN ITS LINE OF FIRE."
FORCEFIELDGUN -> "A DEVICE THAT PRODUCES A DURABLE FORCEFIELD."
HELDDETECTOR d -> "A DEVICE THAT DETECTS "++detectorInfo d ++" IN AN EXPANDING RADIUS."
TORCH -> "A STICK WITH A LIGHT ON THE END."
FLATSHIELD -> "A PANEL OF METAL THAT BLOCKS UNWANTED OBJECTS FROM THE FRONT OF THE USER."
KEYCARD i -> "A KEYCARD. IT IS LABELLED " ++ show i++ "."
leftInfo :: LeftItemType -> String
leftInfo lit = case lit of
BOOSTER -> "A DEVICE THAT ALLOWS TRAVEL AT SPEED."
STOPWATCH -> "A DEVICE THAT TEMPORARILY PAUSES TIME."
REWINDWATCH -> "A DEVICE THAT REWINDS TIME A SHORT AMOUNT."
SCROLLWATCH -> "A DEVICE THAT CAN BE USED TO SCROLL THROUGH RECENT EVENTS."
BLINKER -> "A DEVICE THAT ALLOWS LOCAL TELEPORTATION."
BLINKERUNSAFE -> "A DEVICE THAT ALLOWS LOCAL TELEPORTATION. POTENTIALLY HAZARDOUS AROUND WALLS."
SHRINKER -> "A DEVICE THAT SHRINKS THE USER."
SPAWNER -> "A DEVICE THAT SPAWNS CREATURES."
equipInfo :: EquipItemType -> String
equipInfo eit = case eit of
MAGSHIELD -> "A DEVICE DESIGNED TO REPULSE NEARBY METALLIC OBJECTS."
FLAMESHIELD -> "A DEVICE DESIGNED TO REPULSE NEARBY FLAMES."
FRONTARMOUR -> "A DEVICE DESIGNED TO SHIELD FROM THE FRONT."
WRISTARMOUR -> "A DEVICE THAT PROJECTS A FORCEFIELD."
INVISIBILITYEQUIPMENT _ -> "A DEVICE THAT BENDS LIGHT AROUND ITS USER."
BRAINHAT -> "AN IQ ENHANCER. USELESS."
HAT -> "A HAT"
HEADLAMP -> "A TORCH STRAPPED TO A HAT."
POWERLEGS -> "STRENGTH ENHANCING LEGS."
SPEEDLEGS -> "SPEED ENHANCING LEGS."
JUMPLEGS -> "JUMP ENHANCING LEGS."
JETPACK -> "A DEVICE ENABLING FLIGHT."
FUELPACK -> "A LIQUID CONTAINER WITH ATTACHED HOSE."
AUTODETECTOR d -> "A DEVICE THAT DETECTS "++detectorInfo d ++" IN AN EXPANDING RADIUS. PULSES AUTOMATICALLY. "
consumableInfo :: ConsumableItemType -> String
consumableInfo cit = case cit of
MEDKIT _ -> "A SELF-USE HEALING KIT."
EXPLOSIVES -> "EXPLOSIVES."
craftInfo :: CraftType -> String
craftInfo fit = case fit of
PIPE -> "A RIGID CYLINDER."
TUBE -> "A WIDE RIGID CYLINDER."
HARDWARE -> "A COLLECTION OF EQUIPMENT AND DEVICES USEFUL FOR GENERAL CONSTRUCTION."
SPRING -> "AN OBJECT THAT EXERTS AN OPPOSING FORCE WHEN COMPRESSED OR STRETCHED."
HOSE -> "A FLEXIBLE CYLINDER."
TAPE -> "A STRIP OF MATERIAL WITH AN ADHESIVE SIDE."
CAN -> "A SMALL METAL CYLINDRICAL CONTAINER."
TIN -> "A SMALL METAL CONTINER."
STEELDRUM -> "A METAL CYLINDRICAL CONTAINER."
PLANK -> "A STURDY PIECE OF WOOD."
GLASSSHARD -> "A BROKEN PIECE OF GLASS."
SCRAPMETAL -> "A BROKEN PIECE OF METAL."
PUMP -> "A DEVICE THAT CAN CREATE PRESSURE."
MOTOR -> "A DEVICE THAT CAN CREATE ROTATIONAL FORCE."
TRANSFORMER -> "A DEVICE THAT CAN STEP UP OR DOWN VOLTAGE AND CURRENT."
PRISM -> "AN OBJECT THAT REFRACTS LIGHT."
THERMOMETER -> "AN OBJECT THAT MEASURES TEMPERATURE."
LIGHTER -> "A DEVICE THAT CAN CREATE A SMALL FLAME."
MAGNET -> "A DEVICE THAT ATTRACTS ACCORDING TO ITS DIPOLES."
ANTIMATTER -> "A COLLECTION OF MATERIAL WITH INVERSE QUANTUM VALUES."
PLATE -> "A FLAT RIGID SHEET."
TRANSMITTER -> "A DEVICE THAT CAN EMIT RADIO SIGNALS."
MICROCHIP -> "A MINITURIZED COLLECTION OF ELECTRONIC CIRCUITS."
HARDDRIVE -> "A DEVICE DESIGNED TO STORE DATA WHEN UNPOWERED."
RAM -> "A DEVICE THAT CAN STORE DATA WHEN POWERED."
AIUNIT -> "A GENERAL PURPOSE ARTIFICIAL INTELLIGENCE UNIT."
CAMERA -> "A DEVICE DESIGNED TO CAPTURE LIGHT SIGNALS."
MINIDISPLAY -> "A DEVICE DESIGNED TO DISPLAY PICTURES."
LED -> "A LIGHT EMITTING DIODE."
NAILBOX -> "A BOX OF WOOD FASTENINGS."
IRONBAR -> "A RIGID PIECE OF METAL."
LIGHTSENSOR -> "A DEVICE THAT DETECTS PHOTONS."
HEATSENSOR -> "AN OBJECT THAT DETECTS TEMPERATURE."
SOUNDSENSOR -> "A DEVICE THAT DETECTS AIR VIBRATION."
MICROPHONE -> "A DEVICE THAT MEASURES AIR VIBRATION."
CREATURESENSOR -> "A DEVICE FOR DETECTING LIVING BEINGS."
WIRE -> "A SMALL THIN OBJECT THAT CONDUCTS ELECTRICITY."
BATTERY -> "A STORE OF ELECTICAL POTENTIAL ENERGY."
FUELCELL -> "A DEVICES THAT CONVERTS CHEMICAL ENERGY INTO ELECTRICITY."
PORTABLEFUSION -> "A MINIATURE NUCLEAR REACTOR."
INCENDIARYMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO INCENDIARY PROJECTILES."
STATICMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO ELECTROSTATIC PROJECTILES."
CONCUSSMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO CONCUSSIVE PROJECTILES."
FRAGMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO FRAGMENTATION PROJECTILES."
FLASHMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO FLASHBANG PROJECTILES."
BOUNCEMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO BOUNCING PROJECTILES."
PENMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO PENTRATING PROJECTILES."
TELEPORTMODULE -> "A DEVICE THAT ALLOWS FOR NEAR-INSTANT TRANSLOCATION ACROSS SPACE."
TIMEMODULE -> "A DEVICE THAT CAN AFFECT TEMPORALITY."
SIZEMODULE -> "A DEVICE THAT CAN AFFECT PHYSICAL SIZE."
GRAVITYMODULE -> "A DEVICE THAT CAN AFFECT GRAVITATIONAL FIELDS."
detectorInfo :: Detector -> String
detectorInfo d = case d of
ITEMDETECTOR -> "ITEMS"
CREATUREDETECTOR -> "CREATURES"
WALLDETECTOR -> "WALLS"
itmUsageInfo :: Item -> String
itmUsageInfo itm = case (itm ^. itType . iyBase) of
HELD _ -> heldPositionInfo itm
LEFT _ -> "THIS ITEM CAN BE EQUIPPED" ++ itmEquipSiteInfo itm
++ ". WHEN EQUIPPED, IT CAN BE ACTIVATED."
EQUIP _ -> "THIS ITEM CAN BE EQUIPPED " ++ itmEquipSiteInfo itm ++ "."
Consumable _ -> "THIS ITEM CAN BE CONSUMED."
CRAFT _ -> ""
_ -> "THIS SHOULD NOT BE DISPLAYED"
heldPositionInfo :: Item -> String
heldPositionInfo itm = case itm ^? itUse . heldAim . aimStance of
Nothing -> undefined
Just as -> aimStanceInfo as
aimStanceInfo :: AimStance -> String
aimStanceInfo as = case as of
TwoHandTwist -> "IT IS HELD IN TWO HANDS ALONG ITS LENGTH."
TwoHandFlat -> "IT IS HELD IN TWO HANDS AT ITS SIDES."
OneHand -> "IT IS HELD IN ONE HAND."
LeaveHolstered -> "IT IS TO BE LEFT HOLSTERED."
itmEquipSiteInfo :: Item -> String
itmEquipSiteInfo itm = case itm ^? itUse . equipEffect . eeSite of
Nothing -> ""
Just es -> equipSiteInfo es
equipSiteInfo :: EquipSite -> String
equipSiteInfo es = case es of
GoesOnHead -> " ON THE HEAD"
GoesOnChest -> " ON THE CHEST"
GoesOnBack -> " ON THE BACK"
GoesOnWrist -> " ON A WRIST"
GoesOnLegs -> " ON BOTH LEGS"
GoesOnSpecial -> " IN A UNIQUE LOCATION"
itmModuleInfo :: M.Map ModuleSlot ItemModuleType -> String
itmModuleInfo m
| m == mempty = "IT CANNOT BE MODIFIED WITHOUT CHANGING ITS FORM ENTIRELY."
| otherwise = "IT CAN BE MODIFIED "
moduleInfo :: ModuleSlot -> String
moduleInfo imt = case imt of
ModBullet -> "WITH A NEW BULLET TYPE"
ModBulletSpawn -> "TO CHANGE ITS BULLET PAYLOAD"
ModRifleMag -> "TO CHANGE ITS MAGAZINE"
ModAutoMag -> "TO CHANGE ITS MAGAZINE"
ModTarget -> "BY ADDING A TARGETING SYSTEM"
ModBulletTrajectory -> "TO CHANGE THE TRAJECTORY OF FIRED BULLETS"
ModLauncherHoming -> "TO CHANGE ITS HOMING SYSTEM"
ModBattery -> "TO CHANGE ITS BATTERY SYSTEM"
ModTeleport -> "TO CHANGE ITS TELEPORT SYSTEM"
ModDualBeam -> "TO CHANGE ITS DUAL BEAMS"
ModHeldAttach -> "BY ADDING AN ATTACHEMENT"
+1 -1
View File
@@ -82,7 +82,7 @@ itemRooms =
, join $ , join $
takeOne takeOne
[ rc $ map makeTypeCraft [PLATE, PLATE] [ rc $ map makeTypeCraft [PLATE, PLATE]
, rc $ map makeTypeCraft [DRUM, DRUM, PLATE] , rc $ map makeTypeCraft [STEELDRUM, STEELDRUM, PLATE]
] ]
) )
, ,
+33 -26
View File
@@ -3,6 +3,7 @@ module Dodge.Render.HUD (
drawHUD, drawHUD,
) where ) where
import Justify
import Control.Lens import Control.Lens
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import Data.Maybe import Data.Maybe
@@ -90,7 +91,7 @@ drawSubInventory subinv cfig w = case subinv of
ExamineInventory mtweaki -> ExamineInventory mtweaki ->
titledSub titledSub
"EXAMINE" "EXAMINE"
(defaultSubInvSelectionList & slItems .~ ammoTweakSelectionItems itm) (defaultSubInvSelectionList & slItems .~ ammoTweakSelectionItems itm ++ map f (mitmInfo itm))
<> examineInventoryExtra mtweaki itm cfig <> examineInventoryExtra mtweaki itm cfig
DisplayTerminal tid -> displayTerminal tid cfig (w ^. cWorld . lWorld) DisplayTerminal tid -> displayTerminal tid cfig (w ^. cWorld . lWorld)
CombineInventory mi -> CombineInventory mi ->
@@ -103,6 +104,16 @@ drawSubInventory subinv cfig w = case subinv of
invHead cfig subtitle invHead cfig subtitle
<> drawSelectionList secondColumnParams cfig subitems <> drawSelectionList secondColumnParams cfig subitems
itm = yourItem w itm = yourItem w
f str =
SelectionItem
{ _siPictures = [text str]
, _siHeight = 1
, _siIsSelectable = True
, _siWidth = length str
, _siColor = white
, _siOffX = 0
, _siPayload = ()
}
drawNoSubInventory :: Configuration -> World -> Picture drawNoSubInventory :: Configuration -> World -> Picture
drawNoSubInventory cfig w = drawNoSubInventory cfig w =
@@ -139,7 +150,7 @@ examineInventoryExtra mtweaki mitm cfig =
-- consider moving this functionality out into a tweaks module -- consider moving this functionality out into a tweaks module
tparam <- mitm ^? _Just . itTweaks . tweakParams . ix tweaki tparam <- mitm ^? _Just . itTweaks . tweakParams . ix tweaki
return $ listCursorNSW subInvX 60 cfig tweaki white (length $ showTweak tparam) 15 return $ listCursorNSW subInvX 60 cfig tweaki white (length $ showTweak tparam) 15
, drawSelectionList thirdColumnParams cfig (thirdColumnPara (itmInfo mitm)) -- , drawSelectionList thirdColumnParams cfig (thirdColumnPara (itmInfo mitm))
] ]
combineInventoryExtra :: Maybe Int -> Configuration -> World -> Picture combineInventoryExtra :: Maybe Int -> Configuration -> World -> Picture
@@ -170,32 +181,28 @@ secondColumnParams =
& ldpPosY .~ 60 & ldpPosY .~ 60
& ldpCursorType .~ BorderCursor [North, South, West] & ldpCursorType .~ BorderCursor [North, South, West]
thirdColumnParams :: ListDisplayParams --thirdColumnParams :: ListDisplayParams
thirdColumnParams = --thirdColumnParams =
defaultListDisplayParams -- defaultListDisplayParams
& ldpPosX .~ 9 * fromIntegral topInvW + 275 -- & ldpPosX .~ 9 * fromIntegral topInvW + 275
& ldpPosY .~ 60 -- & ldpPosY .~ 60
thirdColumnPara :: [String] -> SelectionList () --thirdColumnPara :: [String] -> SelectionList ()
thirdColumnPara strs = SelectionList (map f strs) Nothing (length strs) --thirdColumnPara strs = SelectionList (map f strs) Nothing (length strs)
where -- where
f str = -- f str =
SelectionItem -- SelectionItem
{ _siPictures = [text str] -- { _siPictures = [text str]
, _siHeight = 1 -- , _siHeight = 1
, _siIsSelectable = True -- , _siIsSelectable = True
, _siWidth = length str -- , _siWidth = length str
, _siColor = white -- , _siColor = white
, _siOffX = 0 -- , _siOffX = 0
, _siPayload = () -- , _siPayload = ()
} -- }
itmInfo :: Maybe Item -> [String] mitmInfo :: Maybe Item -> [String]
itmInfo mit = fromMaybe [] $ do mitmInfo = maybe [] $ makeParagraph 60 . itmInfo
itm <- mit
return $
itmBaseInfo (itm ^. itType . iyBase) :
(map show . M.assocs . _iyModules $ _itType itm)
displayTerminal :: Int -> Configuration -> LWorld -> Picture displayTerminal :: Int -> Configuration -> LWorld -> Picture
displayTerminal tid cfig w = fromMaybe mempty $ do displayTerminal tid cfig w = fromMaybe mempty $ do
+1 -1
View File
@@ -16,6 +16,6 @@ firstBreather = do
, [itemFromBase $ CRAFT CAN] , [itemFromBase $ CRAFT CAN]
, [itemFromBase $ CRAFT TIN] , [itemFromBase $ CRAFT TIN]
, [itemFromBase $ CRAFT PLANK] , [itemFromBase $ CRAFT PLANK]
, [itemFromBase $ CRAFT DRUM] , [itemFromBase $ CRAFT STEELDRUM]
] ]
roomsContaining [] itms roomsContaining [] itms