Move toward not removing creatures on death

This commit is contained in:
2025-09-25 08:48:20 +01:00
parent 1f14f3d0c3
commit fcb02850d0
4 changed files with 34 additions and 19 deletions
+7
View File
@@ -66,6 +66,11 @@ data Creature = Creature
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
data CrHP
= HP Int
| CrIsCorpse
| CrIsGibs
data Intention = Intention
{ _targetCr :: Maybe Creature
, _mvToPoint :: Maybe Point2
@@ -76,10 +81,12 @@ data Intention = Intention
makeLenses ''Creature
makeLenses ''Intention
makePrisms ''CrHP
concat
<$> mapM
(deriveJSON defaultOptions)
[ ''Creature
, ''Intention
, ''CrHP
]
+1
View File
@@ -36,6 +36,7 @@ data ProximitySensorType
data ProximityRequirement
= RequireHealth {_proxReqMinHealth :: Int}
| RequireEquipment {_proxReqEquipment :: ItemType}
| RequireDeadCreatures {_proxReqDead :: [Int]}
deriving (Show)
makeLenses ''DamageSensor
+5
View File
@@ -17,6 +17,8 @@ import Dodge.Terminal
import Dodge.Terminal.Color
import Geometry
import LensHelp
import qualified Data.IntMap.Strict as IM
import qualified Data.IntSet as IS
updateMachine :: Machine -> World -> World
updateMachine mc
@@ -195,6 +197,7 @@ sensorReqToString :: ProximityRequirement -> String
sensorReqToString = \case
RequireHealth x -> "HEALTH ABOVE " ++ show x
RequireEquipment x -> itemBaseName x
RequireDeadCreatures is -> "CREATURES DESTROYED: " ++ show is
mcProxTest :: World -> ProximityRequirement -> Bool
mcProxTest w = \case
@@ -203,6 +206,8 @@ mcProxTest w = \case
any
(\itm -> _itType itm == ct)
((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr)
RequireDeadCreatures is -> all (\x -> _crHP x < 0)
(IM.restrictKeys (w ^. cWorld . lWorld . creatures) (IS.fromList is))
where
cr = you w
+21 -19
View File
@@ -1130,6 +1130,7 @@ RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 35;" C
Remove_LOS src/Dodge/Data/Config.hs 77;" C
RenderData src/Data/Preload/Render.hs 13;" t
ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 31;" C
RequireDeadCreatures src/Dodge/Data/Machine/Sensor.hs 39;" C
RequireEquipment src/Dodge/Data/Machine/Sensor.hs 38;" C
RequireHealth src/Dodge/Data/Machine/Sensor.hs 37;" C
ResFactor src/Dodge/Data/Config.hs 97;" t
@@ -2172,6 +2173,7 @@ _pressPlates src/Dodge/Data/LWorld.hs 137;" f
_pressedKeys src/Dodge/Data/Input.hs 37;" f
_projectiles src/Dodge/Data/LWorld.hs 108;" f
_props src/Dodge/Data/LWorld.hs 106;" f
_proxReqDead src/Dodge/Data/Machine/Sensor.hs 39;" f
_proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 38;" f
_proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 37;" f
_proxSensorType src/Dodge/Data/Machine/Sensor.hs 28;" f
@@ -3894,7 +3896,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 713;" f
isAnimate src/Dodge/Creature/Test.hs 130;" f
isCognizant src/Dodge/Creature/Perception.hs 106;" f
isConnected src/Dodge/Inventory/Swap.hs 76;" f
isElectrical src/Dodge/Machine/Update.hs 81;" f
isElectrical src/Dodge/Machine/Update.hs 83;" f
isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 197;" f
isInLnk src/Dodge/PlacementSpot.hs 168;" f
isJust' src/MaybeHelp.hs 29;" f
@@ -4188,24 +4190,24 @@ maybeOpenConsole src/Dodge/Update.hs 124;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
maybeTakeOne src/RandomHelp.hs 116;" f
maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f
mcApplyDamage src/Dodge/Machine/Update.hs 126;" f
mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 95;" f
mcDamSensorUpdate src/Dodge/Machine/Update.hs 133;" f
mcApplyDamage src/Dodge/Machine/Update.hs 128;" f
mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 97;" f
mcDamSensorUpdate src/Dodge/Machine/Update.hs 135;" f
mcKillBut src/Dodge/Machine/Destroy.hs 37;" f
mcKillTerm src/Dodge/Machine/Destroy.hs 29;" f
mcNoItemsTest src/Dodge/Machine/Update.hs 141;" f
mcPlaySound src/Dodge/Machine/Update.hs 110;" f
mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 101;" f
mcProxSensorUpdate src/Dodge/Machine/Update.hs 136;" f
mcProxTest src/Dodge/Machine/Update.hs 199;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 168;" f
mcNoItemsTest src/Dodge/Machine/Update.hs 143;" f
mcPlaySound src/Dodge/Machine/Update.hs 112;" f
mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 103;" f
mcProxSensorUpdate src/Dodge/Machine/Update.hs 138;" f
mcProxTest src/Dodge/Machine/Update.hs 202;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 170;" f
mcSPic src/Dodge/Render/ShapePicture.hs 134;" f
mcShootAuto src/Dodge/HeldUse.hs 1195;" f
mcShootLaser src/Dodge/HeldUse.hs 1188;" f
mcTriggerVal src/Dodge/Machine/Update.hs 107;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 29;" f
mcTriggerVal src/Dodge/Machine/Update.hs 109;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 31;" f
mcUseHeld src/Dodge/HeldUse.hs 1107;" f
mcUseItem src/Dodge/Machine/Update.hs 86;" f
mcUseItem src/Dodge/Machine/Update.hs 88;" f
megaBattery src/Dodge/Item/Ammo.hs 55;" f
megaShellMag src/Dodge/Item/Ammo.hs 44;" f
megaTinMag src/Dodge/Item/Ammo.hs 23;" f
@@ -4904,13 +4906,13 @@ selectCreatureDebugItem src/Dodge/Debug.hs 65;" f
selectedItemScroll src/Dodge/Update/Scroll.hs 51;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 53;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 59;" f
senseDamage src/Dodge/Machine/Update.hs 209;" f
sensorReqToString src/Dodge/Machine/Update.hs 194;" f
senseDamage src/Dodge/Machine/Update.hs 214;" f
sensorReqToString src/Dodge/Machine/Update.hs 196;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f
sensorSPic src/Dodge/Machine/Draw.hs 81;" f
sensorTut src/Dodge/Room/Tutorial.hs 170;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 228;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 233;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f
sentinelFireType src/Dodge/Creature/SentinelAI.hs 50;" f
@@ -5226,7 +5228,7 @@ termTextColor src/Dodge/Terminal.hs 46;" f
terminalColor src/Dodge/Placement/Instance/Terminal.hs 74;" f
terminalReturnEffect src/Dodge/Terminal.hs 168;" f
terminalSPic src/Dodge/Machine/Draw.hs 40;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 37;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 39;" f
terminalShape src/Dodge/Machine/Draw.hs 43;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 131;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f
@@ -5479,7 +5481,7 @@ updateLasers src/Dodge/Update.hs 419;" f
updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 441;" f
updateMachine src/Dodge/Machine/Update.hs 21;" f
updateMachine src/Dodge/Machine/Update.hs 23;" f
updateMagnets src/Dodge/Update.hs 310;" f
updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 203;" f
updateMouseContext src/Dodge/Update.hs 323;" f
@@ -5521,7 +5523,7 @@ updateTeslaArc src/Dodge/Update.hs 566;" f
updateTeslaArcs src/Dodge/Update.hs 563;" f
updateTractorBeam src/Dodge/TractorBeam/Update.hs 8;" f
updateTractorBeams src/Dodge/Update.hs 634;" f
updateTurret src/Dodge/Machine/Update.hs 46;" f
updateTurret src/Dodge/Machine/Update.hs 48;" f
updateUniverse src/Dodge/Update.hs 72;" f
updateUniverseFirst src/Dodge/Update.hs 83;" f
updateUniverseLast src/Dodge/Update.hs 134;" f