Make many death events just leave corpses (no gore)
This commit is contained in:
@@ -5,6 +5,8 @@ import FoldableHelp
|
||||
import Geometry.Vector
|
||||
import LensHelp
|
||||
|
||||
import qualified Data.Map.Strict as M
|
||||
|
||||
damageCrWall :: Damage -> Either Creature Wall -> World -> World
|
||||
damageCrWall dt (Left cr) = creatures . ix (_crID cr) . crState . crDamage .:~ dt
|
||||
damageCrWall dt (Right wl) = damageWall dt wl
|
||||
@@ -13,3 +15,11 @@ damageDirection :: [Damage] -> Maybe Float
|
||||
damageDirection ds = do
|
||||
dm <- safeMinimumOn (negate . _dmAmount) ds
|
||||
safeArgV (_dmTo dm -.- _dmFrom dm)
|
||||
|
||||
collectDamageTypes :: [Damage] -> M.Map DamageType Int
|
||||
collectDamageTypes = foldr f M.empty
|
||||
where
|
||||
f dm = M.insertWith (+) (_dmType dm) (_dmAmount dm)
|
||||
|
||||
maxDamageType :: [Damage] -> Maybe (DamageType,Int)
|
||||
maxDamageType = safeMinimumOn (negate . snd) . M.assocs . collectDamageTypes
|
||||
|
||||
Reference in New Issue
Block a user