From 5fc39bd12d0d8955b95cc05afef6913e0ad857cb Mon Sep 17 00:00:00 2001 From: justin Date: Tue, 3 Jan 2023 15:58:54 +0000 Subject: [PATCH] Add various item info --- data/texture/charMap.png | Bin 3339 -> 3446 bytes src/Dodge/Combine/Combinations.hs | 26 +++- src/Dodge/Creature.hs | 4 +- src/Dodge/Data/Item/Combine.hs | 14 +- src/Dodge/Item.hs | 1 + src/Dodge/Item/Draw/SPic.hs | 7 +- src/Dodge/Item/Equipment.hs | 6 + src/Dodge/Item/Info.hs | 239 +++++++++++++++++++++++++++++- src/Dodge/LockAndKey.hs | 2 +- src/Dodge/Render/HUD.hs | 59 ++++---- src/Dodge/Room/Breather.hs | 2 +- 11 files changed, 310 insertions(+), 50 deletions(-) diff --git a/data/texture/charMap.png b/data/texture/charMap.png index 7700bf053cb90a4aa52247ea0cfddba6fd290986..98dbb0151ad7cb2afaa5e234024f1ceb41ccf565 100644 GIT binary patch delta 3370 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 AnE(I) delta 3262 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 w0000000000000000000000000005wZ|HOM^V>X7qAOHXW07*qoM6N<$f+M77z5oCK diff --git a/src/Dodge/Combine/Combinations.hs b/src/Dodge/Combine/Combinations.hs index 88950a4d7..0f0c79bcd 100644 --- a/src/Dodge/Combine/Combinations.hs +++ b/src/Dodge/Combine/Combinations.hs @@ -19,9 +19,19 @@ watchCombinations = po xs it = (map o xs, it) 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 = watchCombinations ++ + backpackCombinations ++ [ po [CRAFT PIPE, CRAFT HARDWARE] (bangStick 1) , po [HELD (BANGSTICK 1), CRAFT TIN] pistol , po [HELD PISTOL, CRAFT SPRING] autoPistol @@ -31,7 +41,7 @@ itemCombinations = , po [HELD REVOLVER, cr SPRING] $ revolverX 1 , po [cr CAN, cr HARDWARE] bangCone , 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), HELD (BANGSTICK 1), HELD (BANGSTICK 1)] (volleyGun 3) , 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]] ++ [ po [cr LIGHTER, cr PUMP, cr CAN] flameSpitter , po [HELD FLAMESPITTER, cr CAN, cr PUMP] blowTorch - , po [HELD FLAMESPITTER, cr DRUM] flameThrower - , po [HELD FLAMETHROWER, cr DRUM] flameWall + , po [HELD FLAMESPITTER, cr STEELDRUM] flameThrower + , po [HELD FLAMETHROWER, cr STEELDRUM] flameWall , po [HELD FLAMETHROWER, cr PUMP] flameTorrent , p [o $ cr PRISM, o $ cr TRANSFORMER, o $ cr PIPE] lasGun , 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 4 $ cr CAN] 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 , 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 TRANSMITTER, cr LIGHTSENSOR] (autoDetector ITEMDETECTOR) , 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 (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 (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 | (modtype, is, ms) <- moduleCombinations , it <- is @@ -110,7 +120,7 @@ moduleCombinations = , burstRifle ] , - [ amod [cr DRUM, cr HARDWARE] DRUMMAG + [ amod [cr STEELDRUM, cr HARDWARE] DRUMMAG , amod [cr MOTOR, cr HARDWARE] BELTMAG ] ) @@ -122,7 +132,7 @@ moduleCombinations = , burstRifle ] , - [ amod [cr DUCTTAPE, HELD TORCH] ATTACHTORCH + [ amod [cr TAPE, HELD TORCH] ATTACHTORCH ] ) , diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 7e4822407..569a77d8f 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -157,7 +157,7 @@ inventoryX c = case c of , makeTypeCraftNum 1 SPRING , makeTypeCraftNum 1 PLANK , makeTypeCraftNum 1 PLATE - , makeTypeCraftNum 1 DRUM + , makeTypeCraftNum 1 STEELDRUM , makeTypeCraftNum 1 MOTOR ] 'F' -> @@ -171,7 +171,7 @@ inventoryX c = case c of , makeTypeCraftNum 5 MAGNET , makeTypeCraftNum 5 PLANK , makeTypeCraftNum 5 PLATE - , makeTypeCraftNum 5 DRUM + , makeTypeCraftNum 5 STEELDRUM , makeTypeCraftNum 5 MOTOR , makeTypeCraftNum 5 TRANSFORMER , makeTypeCraftNum 5 PRISM diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 989315ef0..fd4b737ea 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -29,17 +29,20 @@ data CraftType | TUBE | HARDWARE | SPRING - | DUCTTAPE + + | HOSE + | TAPE + | CAN | TIN - | DRUM + | STEELDRUM | PLANK - | SHARDGLASS + | GLASSSHARD + | SCRAPMETAL | PUMP | MOTOR | TRANSFORMER | PRISM - | THERMOMETER | LIGHTER | MAGNET | ANTIMATTER @@ -57,6 +60,8 @@ data CraftType | LIGHTSENSOR | SOUNDSENSOR | HEATSENSOR + | MICROPHONE + | THERMOMETER | CREATURESENSOR | WIRE | BATTERY @@ -106,6 +111,7 @@ data EquipItemType | JUMPLEGS | JETPACK + | FUELPACK | AUTODETECTOR Detector deriving (Eq,Ord,Show,Read) diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index 2c1a4a362..ffdee08e2 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -43,6 +43,7 @@ itemFromEquipType et = case et of SPEEDLEGS -> speedLegs JUMPLEGS -> jumpLegs JETPACK -> jetPack + FUELPACK -> fuelPack AUTODETECTOR d -> autoDetector d itemFromLeftType :: LeftItemType -> Item diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index f48d15a2c..714fc98fd 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -43,7 +43,12 @@ equipItemSPic et _ = case et of JETPACK -> (,) emptySH $ 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) leftItemSPic :: LeftItemType -> Item -> SPic diff --git a/src/Dodge/Item/Equipment.hs b/src/Dodge/Item/Equipment.hs index 8c1080718..a094e8ecd 100644 --- a/src/Dodge/Item/Equipment.hs +++ b/src/Dodge/Item/Equipment.hs @@ -9,6 +9,7 @@ module Dodge.Item.Equipment ( frontArmour, headLamp, jetPack, + fuelPack, speedLegs, jumpLegs, flameShield, @@ -49,6 +50,11 @@ wristArmour = & itUse . equipEffect . eeOnRemove .~ EoffWristShield & itType . iyBase .~ EQUIP WRISTARMOUR +fuelPack :: Item +fuelPack = + defaultEquipment + & itUse . equipEffect . eeSite .~ GoesOnBack + & itType . iyBase .~ EQUIP FUELPACK jetPack :: Item jetPack = diff --git a/src/Dodge/Item/Info.hs b/src/Dodge/Item/Info.hs index 4f3055599..54c28cfd2 100644 --- a/src/Dodge/Item/Info.hs +++ b/src/Dodge/Item/Info.hs @@ -1,12 +1,237 @@ module Dodge.Item.Info where import Dodge.Data.Item +import qualified Data.Map.Strict as M +import LensHelp -itmBaseInfo :: ItemBaseType -> String -itmBaseInfo t = case t of - HELD _ -> "THIS ITEM CAN BE HELD." - LEFT _ -> "THIS ITEM CAN BE EQUIPPED. WHEN EQUIPPED, IT CAN BE ACTIVATED." - EQUIP _ -> "THIS ITEM CAN BE EQUIPPED." - Consumable _ -> "THIS ITEM CAN BE CONSUMED." - CRAFT _ -> "THIS ITEM SEEMS USELESS ON ITS OWN." +itmInfo :: Item -> String +itmInfo itm = itmBaseInfo itm ++ " " ++ itmUsageInfo itm + +itmBaseInfo :: Item -> String +itmBaseInfo itm = case (itm ^. itType . iyBase) of + HELD hit -> heldInfo hit + LEFT lit -> leftInfo lit + EQUIP eit -> equipInfo eit + Consumable cit -> consumableInfo cit + CRAFT fit -> craftInfo fit _ -> "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" diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs index 5ca8fd77c..32bb38872 100644 --- a/src/Dodge/LockAndKey.hs +++ b/src/Dodge/LockAndKey.hs @@ -82,7 +82,7 @@ itemRooms = , join $ takeOne [ rc $ map makeTypeCraft [PLATE, PLATE] - , rc $ map makeTypeCraft [DRUM, DRUM, PLATE] + , rc $ map makeTypeCraft [STEELDRUM, STEELDRUM, PLATE] ] ) , diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 10f972e09..6f2c50e1a 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -3,6 +3,7 @@ module Dodge.Render.HUD ( drawHUD, ) where +import Justify import Control.Lens import qualified Data.Map.Strict as M import Data.Maybe @@ -90,7 +91,7 @@ drawSubInventory subinv cfig w = case subinv of ExamineInventory mtweaki -> titledSub "EXAMINE" - (defaultSubInvSelectionList & slItems .~ ammoTweakSelectionItems itm) + (defaultSubInvSelectionList & slItems .~ ammoTweakSelectionItems itm ++ map f (mitmInfo itm)) <> examineInventoryExtra mtweaki itm cfig DisplayTerminal tid -> displayTerminal tid cfig (w ^. cWorld . lWorld) CombineInventory mi -> @@ -103,6 +104,16 @@ drawSubInventory subinv cfig w = case subinv of invHead cfig subtitle <> drawSelectionList secondColumnParams cfig subitems 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 cfig w = @@ -139,7 +150,7 @@ examineInventoryExtra mtweaki mitm cfig = -- consider moving this functionality out into a tweaks module tparam <- mitm ^? _Just . itTweaks . tweakParams . ix tweaki 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 @@ -170,32 +181,28 @@ secondColumnParams = & ldpPosY .~ 60 & ldpCursorType .~ BorderCursor [North, South, West] -thirdColumnParams :: ListDisplayParams -thirdColumnParams = - defaultListDisplayParams - & ldpPosX .~ 9 * fromIntegral topInvW + 275 - & ldpPosY .~ 60 +--thirdColumnParams :: ListDisplayParams +--thirdColumnParams = +-- defaultListDisplayParams +-- & ldpPosX .~ 9 * fromIntegral topInvW + 275 +-- & ldpPosY .~ 60 -thirdColumnPara :: [String] -> SelectionList () -thirdColumnPara strs = SelectionList (map f strs) Nothing (length strs) - where - f str = - SelectionItem - { _siPictures = [text str] - , _siHeight = 1 - , _siIsSelectable = True - , _siWidth = length str - , _siColor = white - , _siOffX = 0 - , _siPayload = () - } +--thirdColumnPara :: [String] -> SelectionList () +--thirdColumnPara strs = SelectionList (map f strs) Nothing (length strs) +-- where +-- f str = +-- SelectionItem +-- { _siPictures = [text str] +-- , _siHeight = 1 +-- , _siIsSelectable = True +-- , _siWidth = length str +-- , _siColor = white +-- , _siOffX = 0 +-- , _siPayload = () +-- } -itmInfo :: Maybe Item -> [String] -itmInfo mit = fromMaybe [] $ do - itm <- mit - return $ - itmBaseInfo (itm ^. itType . iyBase) : - (map show . M.assocs . _iyModules $ _itType itm) +mitmInfo :: Maybe Item -> [String] +mitmInfo = maybe [] $ makeParagraph 60 . itmInfo displayTerminal :: Int -> Configuration -> LWorld -> Picture displayTerminal tid cfig w = fromMaybe mempty $ do diff --git a/src/Dodge/Room/Breather.hs b/src/Dodge/Room/Breather.hs index 8c7c0b9a5..57f29c5ed 100644 --- a/src/Dodge/Room/Breather.hs +++ b/src/Dodge/Room/Breather.hs @@ -16,6 +16,6 @@ firstBreather = do , [itemFromBase $ CRAFT CAN] , [itemFromBase $ CRAFT TIN] , [itemFromBase $ CRAFT PLANK] - , [itemFromBase $ CRAFT DRUM] + , [itemFromBase $ CRAFT STEELDRUM] ] roomsContaining [] itms