Remove DamageEffect

This commit is contained in:
2025-06-07 10:28:17 +01:00
parent 500772f2f9
commit 2b39152060
16 changed files with 41 additions and 58 deletions
+17 -17
View File
@@ -1,7 +1,6 @@
module Dodge.Creature.Damage (applyCreatureDamage) where
import Dodge.Creature.Material
import Dodge.Creature.Mass
import Data.List
import Dodge.Creature.Test
import Dodge.Data.World
@@ -26,26 +25,27 @@ defaultApplyDamage ds cr w =
poisonDam = quot (max 0 (sum (map _dmAmount ps))) 10
doPoisonDam = crHP -~ poisonDam
applyDamageEffect :: Damage -> DamageEffect -> Creature -> World -> World
applyDamageEffect dm de cr = case de of
PushDamage push pushexp pushRad ->
cWorld . lWorld . creatures . ix (_crID cr) . crPos .+.+~ pushAmount *.* squashNormalizeV (_crPos cr -.- fromDir)
where
pushAmount
| dist (_crPos cr) fromDir == 0 = 0
| otherwise = min 5 $ (push * 5 * pushRad / (dist (_crPos cr) fromDir * crMass (_crType cr))) ** pushexp
PushBackDamage pback ->
cWorld . lWorld . creatures . ix (_crID cr) . crPos .+.+~ (pback / crMass (_crType cr)) *.* (_dmTo dm -.- fromDir)
TorqueDamage rot ->
cWorld . lWorld . creatures . ix (_crID cr) . crDir +~ rot
NoDamageEffect -> id
where
fromDir = _dmFrom dm
--applyDamageEffect :: Damage -> DamageEffect -> Creature -> World -> World
--applyDamageEffect dm de cr = case de of
-- PushDamage push pushexp pushRad ->
-- cWorld . lWorld . creatures . ix (_crID cr) . crPos .+.+~ pushAmount *.* squashNormalizeV (_crPos cr -.- fromDir)
-- where
-- pushAmount
-- | dist (_crPos cr) fromDir == 0 = 0
-- | otherwise = min 5 $ (push * 5 * pushRad / (dist (_crPos cr) fromDir * crMass (_crType cr))) ** pushexp
-- PushBackDamage pback ->
-- cWorld . lWorld . creatures . ix (_crID cr) . crPos .+.+~ (pback / crMass (_crType cr)) *.* (_dmTo dm -.- fromDir)
-- TorqueDamage rot ->
-- cWorld . lWorld . creatures . ix (_crID cr) . crDir +~ rot
-- NoDamageEffect -> id
-- where
-- fromDir = _dmFrom dm
--p = _dmAt dm
applyIndividualDamage :: Creature -> World -> Damage -> World
applyIndividualDamage cr w dm = applyDamageEffect dm (_dmEffect dm) cr $ applyIndividualDamage' cr w dm
--applyIndividualDamage cr w dm = applyDamageEffect dm (_dmEffect dm) cr $ applyIndividualDamage' cr w dm
applyIndividualDamage cr w dm = applyIndividualDamage' cr w dm
applyIndividualDamage' :: Creature -> World -> Damage -> World
applyIndividualDamage' cr w dm = case _dmType dm of