Tweak displayed info

This commit is contained in:
2023-01-11 23:22:59 +00:00
parent f2f414cee6
commit 94c0af97fd
8 changed files with 149 additions and 120 deletions
+2 -2
View File
@@ -156,7 +156,7 @@ moduleCombinations =
] ]
) )
, ,
( ModBullet ( ModBulletCollision
, bulletWeapons , bulletWeapons
, ,
[ amod [cr BOUNCEMODULE] BOUNCEBUL [ amod [cr BOUNCEMODULE] BOUNCEBUL
@@ -164,7 +164,7 @@ moduleCombinations =
] ]
) )
, ,
( ModBulletSpawn ( ModBulletPayload
, bulletWeapons , bulletWeapons
, ,
[ amod [cr INCENDIARYMODULE] INCENDBUL [ amod [cr INCENDIARYMODULE] INCENDBUL
+1 -1
View File
@@ -13,7 +13,7 @@ aimingWeaponHandlePos cr it = case it ^? itUse . heldAim . aimStance of
Just TwoHandTwist -> -5 Just TwoHandTwist -> -5
Just OneHand -> 14 Just OneHand -> 14
Just TwoHandFlat -> 1.2 * _crRad cr Just TwoHandFlat -> 1.2 * _crRad cr
Just LeaveHolstered -> 0 -- Just LeaveHolstered -> 0
Nothing -> 0 Nothing -> 0
aimingWeaponZeroPos :: Creature -> Item -> Float aimingWeaponZeroPos :: Creature -> Item -> Float
+31 -2
View File
@@ -1,7 +1,36 @@
module Dodge.Creature.Info where module Dodge.Creature.Info (
yourInfo,
) where
import Dodge.Data.Creature import Dodge.Data.Creature
import LensHelp import LensHelp
yourInfo :: Creature -> String yourInfo :: Creature -> String
yourInfo cr = "You can carry a maximum of " ++ show (cr ^. crInvCapacity) ++ " individual items. " yourInfo cr =
yourStatsInfo cr
++ " You can carry a maximum of " ++ show (cr ^. crInvCapacity) ++ " individual items. "
++ " You can't remember your name."
statsModifier :: Int -> String -> String -> String -> String
statsModifier x s1 s2 s3
| x < 15 = "extremely " ++ s1
| x < 30 = "very " ++ s1
| x < 45 = "quite " ++ s1
| x < 55 = "of average " ++ s2
| x < 70 = "quite " ++ s3
| x < 85 = "very " ++ s3
| x < 100 = "extremely " ++ s3
| otherwise = "super-humanly " ++ s3
yourStatsInfo :: Creature -> String
yourStatsInfo cr =
"You are " ++ statsModifier str "weak" "strength" "strong" ++ conj
++ statsModifier dex "clumsy." "dexterity." "dexterous."
where
str = cr ^. crStatistics . strength
dex = cr ^. crStatistics . dexterity
conj
| (str < 45 && dex < 45) || (str > 55 && dex > 55) || (mid str && mid dex) =
" and "
| otherwise = " but "
mid x = x > 45 && x < 55
+2 -2
View File
@@ -211,8 +211,8 @@ data Detector
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
data ModuleSlot data ModuleSlot
= ModBullet = ModBulletCollision
| ModBulletSpawn | ModBulletPayload
| ModRifleMag | ModRifleMag
| ModAutoMag | ModAutoMag
| ModTarget | ModTarget
+1 -1
View File
@@ -70,7 +70,7 @@ data AimStance
= TwoHandTwist = TwoHandTwist
| TwoHandFlat | TwoHandFlat
| OneHand | OneHand
| LeaveHolstered -- | LeaveHolstered
deriving (Eq) deriving (Eq)
--deriving (Eq, Show, Ord, Enum, Read) --Generic, Flat) --deriving (Eq, Show, Ord, Enum, Read) --Generic, Flat)
+2 -2
View File
@@ -64,8 +64,8 @@ defaultBulletWeapon =
defaultWeapon defaultWeapon
& itUse . heldConsumption .~ defaultBulletLoadable & itUse . heldConsumption .~ defaultBulletLoadable
& itUse . heldUse .~ HeldUseAmmoParams -- useAmmoParams & itUse . heldUse .~ HeldUseAmmoParams -- useAmmoParams
& itType . iyModules . at ModBullet ?~ EMPTYMODULE & itType . iyModules . at ModBulletCollision ?~ EMPTYMODULE
& itType . iyModules . at ModBulletSpawn ?~ EMPTYMODULE & itType . iyModules . at ModBulletPayload ?~ EMPTYMODULE
& itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE & itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE
defaultWeapon :: Item defaultWeapon :: Item
+107 -107
View File
@@ -93,35 +93,35 @@ heldInfo hit = case hit of
leftInfo :: LeftItemType -> String leftInfo :: LeftItemType -> String
leftInfo lit = case lit of leftInfo lit = case lit of
BOOSTER -> "A DEVICE THAT ALLOWS TRAVEL AT SPEED." BOOSTER -> "A device that allows travel at speed."
STOPWATCH -> "A DEVICE THAT TEMPORARILY PAUSES TIME." STOPWATCH -> "A device that temporarily pauses time."
REWINDWATCH -> "A DEVICE THAT REWINDS TIME A SHORT AMOUNT." REWINDWATCH -> "A device that rewinds time a short amount."
SCROLLWATCH -> "A DEVICE THAT CAN BE USED TO SCROLL THROUGH RECENT EVENTS." SCROLLWATCH -> "A device that can be used to scroll through recent events."
BLINKER -> "A DEVICE THAT ALLOWS LOCAL TELEPORTATION." BLINKER -> "A device that allows local teleportation."
BLINKERUNSAFE -> "A DEVICE THAT ALLOWS LOCAL TELEPORTATION. POTENTIALLY HAZARDOUS AROUND WALLS." BLINKERUNSAFE -> "A device that allows local teleportation. Potentially hazardous around walls."
SHRINKER -> "A DEVICE THAT SHRINKS THE USER." SHRINKER -> "A device that shrinks the user."
SPAWNER -> "A DEVICE THAT SPAWNS CREATURES." SPAWNER -> "A device that spawns creatures."
equipInfo :: EquipItemType -> String equipInfo :: EquipItemType -> String
equipInfo eit = case eit of equipInfo eit = case eit of
MAGSHIELD -> "A DEVICE DESIGNED TO REPULSE NEARBY METALLIC OBJECTS." MAGSHIELD -> "A device designed to repulse nearby metallic objects."
FLAMESHIELD -> "A DEVICE DESIGNED TO REPULSE NEARBY FLAMES." FLAMESHIELD -> "A device designed to repulse nearby flames."
FRONTARMOUR -> "A DEVICE DESIGNED TO SHIELD FROM THE FRONT." FRONTARMOUR -> "A device designed to shield from the front."
WRISTARMOUR -> "A DEVICE THAT PROJECTS A FORCEFIELD." WRISTARMOUR -> "A device that projects a forcefield."
INVISIBILITYEQUIPMENT _ -> "A DEVICE THAT BENDS LIGHT AROUND ITS USER." INVISIBILITYEQUIPMENT _ -> "A device that bends light around its user."
BRAINHAT -> "AN IQ ENHANCER. USELESS." BRAINHAT -> "An iq enhancer. Useless."
HAT -> "A HAT" HAT -> "A hat."
TARGETINGHAT tt -> "Headwear that "++ targetingInfo tt TARGETINGHAT tt -> "Headwear that "++ targetingInfo tt
HEADLAMP -> "A TORCH STRAPPED TO A HAT." HEADLAMP -> "A torch strapped to a hat."
POWERLEGS -> "STRENGTH ENHANCING LEGS." POWERLEGS -> "Strength enhancing legs."
SPEEDLEGS -> "SPEED ENHANCING LEGS." SPEEDLEGS -> "Speed enhancing legs."
JUMPLEGS -> "JUMP ENHANCING LEGS." JUMPLEGS -> "Jump enhancing legs."
JETPACK -> "A DEVICE ENABLING FLIGHT." JETPACK -> "A device enabling flight."
FUELPACK -> "A LIQUID CONTAINER WITH ATTACHED HOSE." FUELPACK -> "A liquid container with attached hose."
BATTERYPACK -> "A COLLECTION OF BATTERIES WITH A UNIVERSAL ADAPTER." BATTERYPACK -> "A collection of batteries with a universal adapter."
AUTODETECTOR d -> "A DEVICE THAT DETECTS "++detectorInfo d ++" IN AN EXPANDING RADIUS. PULSES AUTOMATICALLY. " AUTODETECTOR d -> "A device that detects "++detectorInfo d ++" in an expanding radius. Pulses automatically. "
targetingInfo :: TargetType -> String targetingInfo :: TargetType -> String
targetingInfo tt = case tt of targetingInfo tt = case tt of
@@ -133,81 +133,81 @@ targetingInfo tt = case tt of
consumableInfo :: ConsumableItemType -> String consumableInfo :: ConsumableItemType -> String
consumableInfo cit = case cit of consumableInfo cit = case cit of
MEDKIT _ -> "A SELF-USE HEALING KIT." MEDKIT _ -> "A self-use healing kit."
EXPLOSIVES -> "EXPLOSIVES." EXPLOSIVES -> "Explosives."
craftInfo :: CraftType -> String craftInfo :: CraftType -> String
craftInfo fit = case fit of craftInfo fit = case fit of
PIPE -> "A RIGID CYLINDER." PIPE -> "A rigid cylinder."
TUBE -> "A WIDE RIGID CYLINDER." TUBE -> "A wide rigid cylinder."
HARDWARE -> "A COLLECTION OF EQUIPMENT AND DEVICES USEFUL FOR GENERAL CONSTRUCTION." HARDWARE -> "A collection of equipment and devices useful for general construction."
SPRING -> "AN OBJECT THAT EXERTS AN OPPOSING FORCE WHEN COMPRESSED OR STRETCHED." SPRING -> "An object that exerts an opposing force when compressed or stretched."
HOSE -> "A FLEXIBLE CYLINDER." HOSE -> "A flexible cylinder."
TAPE -> "A STRIP OF MATERIAL WITH AN ADHESIVE SIDE." TAPE -> "A strip of material with an adhesive side."
CAN -> "A SMALL METAL CYLINDRICAL CONTAINER." CAN -> "A small metal cylindrical container."
TIN -> "A SMALL METAL CONTINER." TIN -> "A small metal continer."
STEELDRUM -> "A METAL CYLINDRICAL CONTAINER." STEELDRUM -> "A metal cylindrical container."
PLANK -> "A STURDY PIECE OF WOOD." PLANK -> "A sturdy piece of wood."
GLASSSHARD -> "A BROKEN PIECE OF GLASS." GLASSSHARD -> "A broken piece of glass."
SCRAPMETAL -> "A BROKEN PIECE OF METAL." SCRAPMETAL -> "A broken piece of metal."
PUMP -> "A DEVICE THAT CAN CREATE PRESSURE." PUMP -> "A device that can create pressure."
MOTOR -> "A DEVICE THAT CAN CREATE ROTATIONAL FORCE." MOTOR -> "A device that can create rotational force."
TRANSFORMER -> "A DEVICE THAT CAN STEP UP OR DOWN VOLTAGE AND CURRENT." TRANSFORMER -> "A device that can step up or down voltage and current."
PRISM -> "AN OBJECT THAT REFRACTS LIGHT." PRISM -> "An object that refracts light."
THERMOMETER -> "AN OBJECT THAT MEASURES TEMPERATURE." THERMOMETER -> "An object that measures temperature."
LIGHTER -> "A DEVICE THAT CAN CREATE A SMALL FLAME." LIGHTER -> "A device that can create a small flame."
MAGNET -> "A DEVICE THAT ATTRACTS ACCORDING TO ITS DIPOLES." MAGNET -> "A device that attracts according to its dipoles."
ANTIMATTER -> "A COLLECTION OF MATERIAL WITH INVERSE QUANTUM VALUES." ANTIMATTER -> "A collection of material with inverse quantum values."
PLATE -> "A FLAT RIGID SHEET." PLATE -> "A flat rigid sheet."
TRANSMITTER -> "A DEVICE THAT CAN EMIT RADIO SIGNALS." TRANSMITTER -> "A device that can emit radio signals."
MICROCHIP -> "A MINITURIZED COLLECTION OF ELECTRONIC CIRCUITS." MICROCHIP -> "A miniturized collection of electronic circuits."
HARDDRIVE -> "A DEVICE DESIGNED TO STORE DATA WHEN UNPOWERED." HARDDRIVE -> "A device designed to store data when unpowered."
RAM -> "A DEVICE THAT CAN STORE DATA WHEN POWERED." RAM -> "A device that can store data when powered."
AIUNIT -> "A GENERAL PURPOSE ARTIFICIAL INTELLIGENCE UNIT." AIUNIT -> "A general purpose artificial intelligence unit."
CAMERA -> "A DEVICE DESIGNED TO CAPTURE LIGHT SIGNALS." CAMERA -> "A device designed to capture light signals."
MINIDISPLAY -> "A DEVICE DESIGNED TO DISPLAY PICTURES." MINIDISPLAY -> "A device designed to display pictures."
LED -> "A LIGHT EMITTING DIODE." LED -> "A light emitting diode."
NAILBOX -> "A BOX OF WOOD FASTENINGS." NAILBOX -> "A box of wood fastenings."
IRONBAR -> "A RIGID PIECE OF METAL." IRONBAR -> "A rigid piece of metal."
LIGHTSENSOR -> "A DEVICE THAT DETECTS PHOTONS." LIGHTSENSOR -> "A device that detects photons."
HEATSENSOR -> "AN OBJECT THAT DETECTS TEMPERATURE." HEATSENSOR -> "An object that detects temperature."
SOUNDSENSOR -> "A DEVICE THAT DETECTS AIR VIBRATION." SOUNDSENSOR -> "A device that detects air vibration."
MICROPHONE -> "A DEVICE THAT MEASURES AIR VIBRATION." MICROPHONE -> "A device that measures air vibration."
CREATURESENSOR -> "A DEVICE FOR DETECTING LIVING BEINGS." CREATURESENSOR -> "A device for detecting living beings."
WIRE -> "A SMALL THIN OBJECT THAT CONDUCTS ELECTRICITY." WIRE -> "A small thin object that conducts electricity."
BATTERY -> "A STORE OF ELECTICAL POTENTIAL ENERGY." BATTERY -> "A store of electical potential energy."
FUELCELL -> "A DEVICES THAT CONVERTS CHEMICAL ENERGY INTO ELECTRICITY." FUELCELL -> "A devices that converts chemical energy into electricity."
PORTABLEFUSION -> "A MINIATURE NUCLEAR REACTOR." PORTABLEFUSION -> "A miniature nuclear reactor."
INCENDIARYMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO INCENDIARY PROJECTILES." INCENDIARYMODULE -> "A device that converts projectiles into incendiary projectiles."
STATICMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO ELECTROSTATIC PROJECTILES." STATICMODULE -> "A device that converts projectiles into electrostatic projectiles."
CONCUSSMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO CONCUSSIVE PROJECTILES." CONCUSSMODULE -> "A device that converts projectiles into concussive projectiles."
FRAGMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO FRAGMENTATION PROJECTILES." FRAGMODULE -> "A device that converts projectiles into fragmentation projectiles."
FLASHMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO FLASHBANG PROJECTILES." FLASHMODULE -> "A device that converts projectiles into flashbang projectiles."
BOUNCEMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO BOUNCING PROJECTILES." BOUNCEMODULE -> "A device that converts projectiles into bouncing projectiles."
PENMODULE -> "A DEVICE THAT CONVERTS PROJECTILES INTO PENTRATING PROJECTILES." PENMODULE -> "A device that converts projectiles into pentrating projectiles."
TELEPORTMODULE -> "A DEVICE THAT ALLOWS FOR NEAR-INSTANT TRANSLOCATION ACROSS SPACE." TELEPORTMODULE -> "A device that allows for near-instant translocation across space."
TIMEMODULE -> "A DEVICE THAT CAN AFFECT TEMPORALITY." TIMEMODULE -> "A device that can affect temporality."
SIZEMODULE -> "A DEVICE THAT CAN AFFECT PHYSICAL SIZE." SIZEMODULE -> "A device that can affect physical size."
GRAVITYMODULE -> "A DEVICE THAT CAN AFFECT GRAVITATIONAL FIELDS." GRAVITYMODULE -> "A device that can affect gravitational fields."
TARGETMODULE _ -> "A TARGETING MODULE." TARGETMODULE _ -> "A targeting module."
detectorInfo :: Detector -> String detectorInfo :: Detector -> String
detectorInfo d = case d of detectorInfo d = case d of
ITEMDETECTOR -> "ITEMS" ITEMDETECTOR -> "items"
CREATUREDETECTOR -> "CREATURES" CREATUREDETECTOR -> "creatures"
WALLDETECTOR -> "WALLS" WALLDETECTOR -> "walls"
itmUsageInfo :: Item -> String itmUsageInfo :: Item -> String
itmUsageInfo itm = case itm ^. itType . iyBase of itmUsageInfo itm = case itm ^. itType . iyBase of
HELD _ -> heldPositionInfo itm HELD _ -> heldPositionInfo itm
LEFT _ -> "THIS ITEM CAN BE EQUIPPED" ++ itmEquipSiteInfo itm LEFT _ -> "This item can be equipped" ++ itmEquipSiteInfo itm
++ ". WHEN EQUIPPED, IT CAN BE ACTIVATED." ++ ". When equipped, it can be activated."
EQUIP _ -> "THIS ITEM CAN BE EQUIPPED " ++ itmEquipSiteInfo itm ++ "." EQUIP _ -> "This item can be equipped " ++ itmEquipSiteInfo itm ++ "."
Consumable _ -> "THIS ITEM CAN BE CONSUMED." Consumable _ -> "This item can be consumed."
CRAFT _ -> "" CRAFT _ -> ""
_ -> "THIS SHOULD NOT BE DISPLAYED" _ -> "THIS SHOULD NOT BE DISPLAYED"
@@ -216,38 +216,38 @@ heldPositionInfo = maybe undefined aimStanceInfo . (^? itUse . heldAim . aimStan
aimStanceInfo :: AimStance -> String aimStanceInfo :: AimStance -> String
aimStanceInfo as = case as of aimStanceInfo as = case as of
TwoHandTwist -> "IT IS HELD IN TWO HANDS ALONG ITS LENGTH." TwoHandTwist -> "It is held in two hands along its length."
TwoHandFlat -> "IT IS HELD IN TWO HANDS AT ITS SIDES." TwoHandFlat -> "It is held in two hands at its sides."
OneHand -> "IT IS HELD IN ONE HAND." OneHand -> "It is held in one hand."
LeaveHolstered -> "IT IS TO BE LEFT HOLSTERED." -- LeaveHolstered -> "It is to be left holstered."
itmEquipSiteInfo :: Item -> String itmEquipSiteInfo :: Item -> String
itmEquipSiteInfo = maybe "" equipSiteInfo . (^? itUse . equipEffect . eeSite) itmEquipSiteInfo = maybe "" equipSiteInfo . (^? itUse . equipEffect . eeSite)
equipSiteInfo :: EquipSite -> String equipSiteInfo :: EquipSite -> String
equipSiteInfo es = case es of equipSiteInfo es = case es of
GoesOnHead -> " ON THE HEAD" GoesOnHead -> " on the head"
GoesOnChest -> " ON THE CHEST" GoesOnChest -> " on the chest"
GoesOnBack -> " ON THE BACK" GoesOnBack -> " on the back"
GoesOnWrist -> " ON A WRIST" GoesOnWrist -> " on a wrist"
GoesOnLegs -> " ON BOTH LEGS" GoesOnLegs -> " on both legs"
GoesOnSpecial -> " IN A UNIQUE LOCATION" GoesOnSpecial -> " in a unique location"
itmModuleInfo :: M.Map ModuleSlot ItemModuleType -> String itmModuleInfo :: M.Map ModuleSlot ItemModuleType -> String
itmModuleInfo m itmModuleInfo m
| m == mempty = "IT CANNOT BE MODIFIED WITHOUT CHANGING ITS FORM ENTIRELY." | m == mempty = ""
| otherwise = "IT CAN BE MODIFIED " | otherwise = "Modifications can be made "
moduleInfo :: ModuleSlot -> String moduleInfo :: ModuleSlot -> String
moduleInfo imt = case imt of moduleInfo imt = case imt of
ModBullet -> "WITH A NEW BULLET TYPE" ModBulletCollision -> "that affect how fired bullets collide with objects"
ModBulletSpawn -> "TO CHANGE ITS BULLET PAYLOAD" ModBulletPayload -> "that change bullet payloads"
ModRifleMag -> "TO CHANGE ITS MAGAZINE" ModRifleMag -> "to the magazine"
ModAutoMag -> "TO CHANGE ITS MAGAZINE" ModAutoMag -> "to the magazine"
ModTarget -> "BY ADDING A TARGETING SYSTEM" ModTarget -> "to add a targeting system"
ModBulletTrajectory -> "TO CHANGE THE TRAJECTORY OF FIRED BULLETS" ModBulletTrajectory -> "to the trajectory of fired bullets"
ModLauncherHoming -> "TO CHANGE ITS HOMING SYSTEM" ModLauncherHoming -> "to add a homing system"
ModBattery -> "TO CHANGE ITS BATTERY SYSTEM" ModBattery -> "to its battery system"
ModTeleport -> "TO CHANGE ITS TELEPORT SYSTEM" ModTeleport -> "to add a teleporation system"
ModDualBeam -> "TO CHANGE ITS DUAL BEAMS" ModDualBeam -> "to the dual beams"
ModHeldAttach -> "BY ADDING AN ATTACHEMENT" ModHeldAttach -> "by adding an attachment"
+3 -3
View File
@@ -126,13 +126,13 @@ drawExamineInventory cfig mtweaki w =
closeObjectInfo :: Int -> Either FloorItem Button -> String closeObjectInfo :: Int -> Either FloorItem Button -> String
closeObjectInfo n x = case x of closeObjectInfo n x = case x of
Left (FlIt {_flIt = itm}) -> "It is on the floor " ++ floorItemPickupInfo n itm ++ itemInfo itm Left (FlIt {_flIt = itm}) -> "On the floor" ++ floorItemPickupInfo n itm ++ itemInfo itm
Right _ -> "It is some sort of switch or button." Right _ -> "Some sort of switch or button."
floorItemPickupInfo :: Int -> Item -> String floorItemPickupInfo :: Int -> Item -> String
floorItemPickupInfo n itm floorItemPickupInfo n itm
| n >= ceiling (_itInvSize itm) = ", but you have space to pick it up. " | n >= ceiling (_itInvSize itm) = ", but you have space to pick it up. "
| otherwise = " and you don't have space to pick it up. " | otherwise = ", and you don't have space to pick it up. "
yourAugmentedItem :: (Item -> a) -> a -> (Either FloorItem Button -> a) -> World -> a yourAugmentedItem :: (Item -> a) -> a -> (Either FloorItem Button -> a) -> World -> a
yourAugmentedItem f x g w yourAugmentedItem f x g w