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
,
[ amod [cr BOUNCEMODULE] BOUNCEBUL
@@ -164,7 +164,7 @@ moduleCombinations =
]
)
,
( ModBulletSpawn
( ModBulletPayload
, bulletWeapons
,
[ 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 OneHand -> 14
Just TwoHandFlat -> 1.2 * _crRad cr
Just LeaveHolstered -> 0
-- Just LeaveHolstered -> 0
Nothing -> 0
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 LensHelp
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)
data ModuleSlot
= ModBullet
| ModBulletSpawn
= ModBulletCollision
| ModBulletPayload
| ModRifleMag
| ModAutoMag
| ModTarget
+1 -1
View File
@@ -70,7 +70,7 @@ data AimStance
= TwoHandTwist
| TwoHandFlat
| OneHand
| LeaveHolstered
-- | LeaveHolstered
deriving (Eq)
--deriving (Eq, Show, Ord, Enum, Read) --Generic, Flat)
+2 -2
View File
@@ -64,8 +64,8 @@ defaultBulletWeapon =
defaultWeapon
& itUse . heldConsumption .~ defaultBulletLoadable
& itUse . heldUse .~ HeldUseAmmoParams -- useAmmoParams
& itType . iyModules . at ModBullet ?~ EMPTYMODULE
& itType . iyModules . at ModBulletSpawn ?~ EMPTYMODULE
& itType . iyModules . at ModBulletCollision ?~ EMPTYMODULE
& itType . iyModules . at ModBulletPayload ?~ EMPTYMODULE
& itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE
defaultWeapon :: Item
+107 -107
View File
@@ -93,35 +93,35 @@ heldInfo hit = case hit of
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."
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"
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."
TARGETINGHAT tt -> "Headwear that "++ targetingInfo tt
HEADLAMP -> "A TORCH STRAPPED TO A HAT."
POWERLEGS -> "STRENGTH ENHANCING LEGS."
SPEEDLEGS -> "SPEED ENHANCING LEGS."
JUMPLEGS -> "JUMP ENHANCING LEGS."
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."
BATTERYPACK -> "A COLLECTION OF BATTERIES WITH A UNIVERSAL ADAPTER."
JETPACK -> "A device enabling flight."
FUELPACK -> "A liquid container with attached hose."
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 tt = case tt of
@@ -133,81 +133,81 @@ targetingInfo tt = case tt of
consumableInfo :: ConsumableItemType -> String
consumableInfo cit = case cit of
MEDKIT _ -> "A SELF-USE HEALING KIT."
EXPLOSIVES -> "EXPLOSIVES."
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."
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."
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."
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."
TARGETMODULE _ -> "A TARGETING MODULE."
TARGETMODULE _ -> "A targeting module."
detectorInfo :: Detector -> String
detectorInfo d = case d of
ITEMDETECTOR -> "ITEMS"
CREATUREDETECTOR -> "CREATURES"
WALLDETECTOR -> "WALLS"
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."
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"
@@ -216,38 +216,38 @@ heldPositionInfo = maybe undefined aimStanceInfo . (^? itUse . heldAim . aimStan
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."
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 = maybe "" equipSiteInfo . (^? itUse . equipEffect . eeSite)
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"
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 "
| m == mempty = ""
| otherwise = "Modifications can be made "
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"
ModBulletCollision -> "that affect how fired bullets collide with objects"
ModBulletPayload -> "that change bullet payloads"
ModRifleMag -> "to the magazine"
ModAutoMag -> "to the magazine"
ModTarget -> "to add a targeting system"
ModBulletTrajectory -> "to the trajectory of fired bullets"
ModLauncherHoming -> "to add a homing system"
ModBattery -> "to its battery system"
ModTeleport -> "to add a teleporation system"
ModDualBeam -> "to the dual beams"
ModHeldAttach -> "by adding an attachment"
+3 -3
View File
@@ -126,13 +126,13 @@ drawExamineInventory cfig mtweaki w =
closeObjectInfo :: Int -> Either FloorItem Button -> String
closeObjectInfo n x = case x of
Left (FlIt {_flIt = itm}) -> "It is on the floor " ++ floorItemPickupInfo n itm ++ itemInfo itm
Right _ -> "It is some sort of switch or button."
Left (FlIt {_flIt = itm}) -> "On the floor" ++ floorItemPickupInfo n itm ++ itemInfo itm
Right _ -> "Some sort of switch or button."
floorItemPickupInfo :: Int -> Item -> String
floorItemPickupInfo n itm
| 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 f x g w