Make damage application belong to hit object
This commit is contained in:
+12
-10
@@ -47,14 +47,16 @@ stateUpdate :: (Creature -> World -> (World -> World, Creature))
|
||||
-> Creature -> World -> World
|
||||
stateUpdate = stateUpdateDamage doDamage
|
||||
|
||||
stateUpdateDamage :: (Creature -> Creature)
|
||||
stateUpdateDamage :: (Creature -> (World -> World,Creature))
|
||||
-> (Creature -> World -> (World -> World, Creature))
|
||||
-- -> CRUpdate
|
||||
-> Creature -> World -> World
|
||||
stateUpdateDamage damageupdate u cr w = case u (updateMovement cr) w of
|
||||
(f, upcr) -> mvcrhammerup . invSideEff upcr . movementSideEff cr . deathEff . f $ w
|
||||
& creatures . at (_crID cr) .~ (stepReloading . damageupdate <$> crOrCorpse upcr)
|
||||
stateUpdateDamage damageupdate u cr w =
|
||||
mvcrhammerup . invSideEff upcr . movementSideEff cr . deathEff . f . g $ w
|
||||
& creatures . at (_crID cr) .~ (stepReloading <$> crOrCorpse upcr')
|
||||
where
|
||||
(f,upcr) = u (updateMovement cr) w
|
||||
(g,upcr') = damageupdate upcr
|
||||
mvcrhammerup = creatures . ix (_crID cr) . crHammerPosition %~ moveHammerUp
|
||||
crOrCorpse cr'
|
||||
| cr' ^. crHP > 0 = Just cr'
|
||||
@@ -80,13 +82,13 @@ setOldPos cr = cr
|
||||
& crOldPos .~ _crPos cr
|
||||
& crOldDir .~ _crDir cr
|
||||
|
||||
clearDamage :: Creature -> Creature
|
||||
clearDamage = crState . crDamage .~ []
|
||||
clearDamage :: Creature -> (World-> World,Creature)
|
||||
clearDamage cr = (id,cr&crState . crDamage .~ [])
|
||||
|
||||
doDamage :: Creature -> Creature
|
||||
doDamage cr = set (crState . crDamage) []
|
||||
. over (crState . crPastDamage) (advancePastDamages dams)
|
||||
$ snd $ _crApplyDamage cr dams cr
|
||||
doDamage :: Creature -> (World -> World, Creature)
|
||||
doDamage cr = set (_2 . crState . crDamage) []
|
||||
. over (_2 . crState . crPastDamage) (advancePastDamages dams)
|
||||
$ _crApplyDamage cr dams cr
|
||||
where
|
||||
dams = _crDamage $ _crState cr
|
||||
|
||||
|
||||
Reference in New Issue
Block a user