Make many death events just leave corpses (no gore)

This commit is contained in:
2022-06-04 17:55:24 +01:00
parent 582881ca66
commit 62ccf8fad3
5 changed files with 84 additions and 8 deletions
+24 -4
View File
@@ -3,6 +3,7 @@ module Dodge.Creature.State
, doDamage
) where
import Dodge.Data
import Dodge.Damage
import Dodge.Hammer
import Dodge.Reloading
import Dodge.Prop.Gib
@@ -19,9 +20,11 @@ import Dodge.Creature.Action
--import Dodge.Hammer
import Geometry
import Picture
import Shape
import ShapePicture
import qualified IntMapHelp as IM
--import StrictHelp
import FoldableHelp
--import FoldableHelp
--import qualified Data.IntSet as IS
@@ -82,12 +85,15 @@ checkDeath cr w
. (creatures . ix (_crID cr) . crPict .~ const mempty)
| otherwise = creatures . at (_crID cr) .~ Nothing
corpseOrGib :: Creature -> World -> World
corpseOrGib cr w
| _crPastDamage cr > 200 = w & addCrGibs cr
corpseOrGib cr w = case maxDamageType (_crDamage (_crState cr)) of
Just (FLAMING,_) -> w & plNew corpses cpID (thecorpse & cpPict %~ fmap scorchSPic)
Just (ELECTRICAL,_) -> w & plNew corpses cpID thecorpse
Just (POISONDAM,_) -> w & plNew corpses cpID (thecorpse & cpPict %~ fmap poisonSPic)
_ | _crPastDamage cr > 200 -> w & addCrGibs cr
& bloodPuddleAt cpos
& bloodPuddleAt cpos
& bloodPuddleAt cpos
| otherwise = w
_ -> w
& bloodPuddleAt cpos
& bloodPuddleAt cpos
& plNew corpses cpID thecorpse
@@ -101,6 +107,20 @@ corpseOrGib cr w
, _cpRes = Nothing
}
scorchSPic :: SPic -> SPic
scorchSPic = over _1 $
overColSH (mixColors 0.9 0.1 black . normalizeColor)
poisonSPic :: SPic -> SPic
poisonSPic = over _1 $
overColSH (mixColors 0.5 0.5 green . normalizeColor)
--scorchSPic :: World -> SPic -> SPic
--scorchSPic w sp = evalState (scorchSPic' sp) (_randGen w)
--
--scorchSPic' :: SPic -> State StdGen SPic
--scorchSPic' = _1 $ overColSHM $ \col -> takeOne [col,black]
---- (return . mixColorsLinear 0.9 0.1 black)
bloodPuddleAt :: Point2 -> World -> World
bloodPuddleAt p w = w