Partial (not working) refactor of damages, energyballs

This commit is contained in:
2025-06-07 12:22:06 +01:00
parent 2b39152060
commit e914555728
10 changed files with 265 additions and 290 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ unsafeBlinkAction cr w
w
& blinkActionFail cr
& cWorld . lWorld . creatures . ix cid . crState . csDamage
.:~ Damage ENTERREMENT 10000 mwp mwp mwp
.:~ Enterrement 100000000
where
success = fromMaybe True $ do
wl <- snd $ collidePointWallsFilter (const True) mwp cpos w
+8 -4
View File
@@ -1,7 +1,8 @@
module Dodge.Creature.Damage (applyCreatureDamage) where
import Dodge.Creature.Material
import Data.List
import Dodge.Creature.Mass
import Dodge.Creature.Material
import Dodge.Creature.Test
import Dodge.Data.World
import Dodge.Spark
@@ -49,14 +50,17 @@ applyIndividualDamage cr w dm = applyIndividualDamage' cr w dm
applyIndividualDamage' :: Creature -> World -> Damage -> World
applyIndividualDamage' cr w dm = case _dmType dm of
PIERCING -> applyPiercingDamage cr dm w
Piercing{} -> applyPiercingDamage cr dm w
_ -> w & damageHP cr (_dmAmount dm)
applyPiercingDamage :: Creature -> Damage -> World -> World
applyPiercingDamage cr dm
| crIsArmouredFrom p cr = makeSpark NormalSpark p1 (argV (p1 -.- p))
| otherwise = damageHP cr $ _dmAmount dm
| crIsArmouredFrom p cr = f . makeSpark NormalSpark p1 (argV (p1 -.- p))
| otherwise = f . (damageHP cr $ _dmAmount dm)
where
f = cWorld . lWorld . creatures . ix (_crID cr) . crPos -~ _dmVector dm
/ V2 x x
x = crMass (_crType cr)
p = _dmAt dm
p1 = p +.+ 2 *.* squashNormalizeV (p -.- _crPos cr)