Fix crsHitRadial, unify some radial damages

This commit is contained in:
2025-06-20 22:17:10 +01:00
parent 67d77fcb2b
commit 3019d95520
5 changed files with 20 additions and 33 deletions
+3 -3
View File
@@ -57,12 +57,12 @@ collectDamageTypes = foldl' (flip f) M.empty
maxDamageType :: [Damage] -> Maybe (DamageType, Int)
maxDamageType = safeMinimumOn (negate . snd) . M.assocs . collectDamageTypes
damageInCircle :: (Point2 -> [Damage]) -> Point2 -> Float -> World -> World
damageInCircle :: (Point2 -> Damage) -> Point2 -> Float -> World -> World
damageInCircle f p r w = w
& cWorld . lWorld . wallDamages %~ dowldams
& cWorld . lWorld . creatures %~ docrdams
where
dowldams wds = foldl' g wds (wlsHitRadial p r w)
docrdams crs = foldl' h crs (crsHitRadial p r w)
g wds (x,wl) = wds & at (_wlID wl) . non mempty <>~ f x
h crs (x,cr) = crs & ix (_crID cr) . crDamage <>~ f x
g wds (x,wl) = wds & at (_wlID wl) . non mempty .:~ f x
h crs (x,cr) = crs & ix (_crID cr) . crDamage .:~ f x