Refactor damages

This commit is contained in:
2025-06-07 14:26:00 +01:00
parent 7a192e7631
commit 81a7dcd962
24 changed files with 271 additions and 277 deletions
+9 -12
View File
@@ -1,5 +1,6 @@
module Dodge.Barreloid where
import Data.Maybe
import Data.List
import Dodge.Creature.State
import Dodge.Data.World
@@ -49,18 +50,14 @@ damsToExpBarrel :: [Damage] -> Creature -> Creature
damsToExpBarrel ds cr = foldl' damToExpBarrel (foldl' damToExpBarrel cr pierceDam) otherDam
where
(pierceDam, otherDam) = partition isPierce ds
isPierce Damage{_dmType = PIERCING{}} = True
isPierce Piercing{} = True
isPierce _ = False
damToExpBarrel :: Creature -> Damage -> Creature
damToExpBarrel cr dm = case _dmType dm of
PIERCING ->
over (crState . csSpState . piercedPoints) ((:) $ int -.- _crPos cr) $
cr & crHP -~ div amount 200
POISONDAM -> cr
SPARKING -> cr
-- PUSHDAM -> cr LensHelp.& crPos .+.+~ (1 / _crMass cr *.* _dePushBack (_dmEffect dm))
_ -> cr LensHelp.& crHP -~ amount
where
amount = _dmAmount dm
int = _dmAt dm
damToExpBarrel cr dm = case dm of
Piercing x p _ ->
over (crState . csSpState . piercedPoints) ((:) $ p -.- _crPos cr) $
cr & crHP -~ div x 200
Poison{} -> cr
Sparking{} -> cr
_ -> cr LensHelp.& crHP -~ fromMaybe 0 (dm ^? dmAmount)