Cleanup
This commit is contained in:
@@ -211,7 +211,7 @@ unsafeBlinkAction cr w
|
||||
$ inverseShockwaveAt cpos 40 2 2 w
|
||||
| otherwise = w
|
||||
& blinkActionFail cr
|
||||
& creatures . ix cid . crState . crDamage .:~
|
||||
& creatures . ix cid . crState . csDamage .:~
|
||||
Damage ENTERREMENT 10000 mwp mwp mwp NoDamageEffect
|
||||
where
|
||||
success = fromMaybe True $ do
|
||||
|
||||
@@ -92,7 +92,7 @@ followImpulse cr w imp = case imp of
|
||||
cid = _crID cr
|
||||
posFromID cid' = _crPos $ _creatures w IM.! cid'
|
||||
rr a = randomR (-a,a) $ _randGen w
|
||||
hitCr i = (creatures . ix i . crState . crDamage
|
||||
hitCr i = (creatures . ix i . crState . csDamage
|
||||
.:~ Damage BLUNT 100 cpos (posFromID i) (posFromID i) NoDamageEffect
|
||||
)
|
||||
. soundStart (CrSound cid) cpos hitS Nothing
|
||||
|
||||
@@ -12,7 +12,7 @@ import Data.Maybe
|
||||
|
||||
useItem :: Creature -> World -> World
|
||||
useItem cr' w = fromMaybe (f w) $ do
|
||||
cr <- w ^? creatures . ix (_crID cr')
|
||||
cr <- w ^? creatures . ix (_crID cr')
|
||||
it <- cr ^? crInv . ix (_crInvSel cr)
|
||||
return $ itemEffect cr it w
|
||||
where
|
||||
|
||||
@@ -37,7 +37,7 @@ barrel = defaultInanimate
|
||||
, color (greyN 0.5) $ circleSolid 8
|
||||
]
|
||||
, _crState = defaultState
|
||||
{_crSpState = Barrel []
|
||||
{_csSpState = Barrel []
|
||||
}
|
||||
, _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
|
||||
}
|
||||
@@ -51,7 +51,7 @@ explosiveBarrel = defaultInanimate
|
||||
. upperPrismPoly 20
|
||||
$ polyCirc 4 10
|
||||
, _crState = defaultState
|
||||
{_crSpState = Barrel []
|
||||
{_csSpState = Barrel []
|
||||
}
|
||||
, _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
|
||||
,_crApplyDamage = \_ _ -> id
|
||||
@@ -68,7 +68,7 @@ updateExpBarrel cr w
|
||||
| otherwise = makeExplosionAt (_crPos cr) $ stopSounds w & creatures . at (_crID cr) .~ Nothing
|
||||
where
|
||||
g = _randGen w
|
||||
damages = _crDamage $ _crState cr
|
||||
damages = _csDamage $ _crState cr
|
||||
pierceSparks :: [World -> World]
|
||||
pierceSparks
|
||||
= zipWith4 (\p a -> createBarrelSpark (_crPos cr +.+ p) (a + argV p) (Just $ _crID cr))
|
||||
@@ -76,10 +76,10 @@ updateExpBarrel cr w
|
||||
as = randomRs (-0.7,0.7) g
|
||||
colids = randomRs (0,11) g
|
||||
times = randomRs (2,5) g
|
||||
poss = _piercedPoints $ _crSpState $ _crState cr
|
||||
newCr = Just $ applyFuseDamage $ set (crState . crDamage) [] $ damToExpBarrel damages cr
|
||||
poss = _piercedPoints $ _csSpState $ _crState cr
|
||||
newCr = Just $ applyFuseDamage $ set (crState . csDamage) [] $ damToExpBarrel damages cr
|
||||
applyFuseDamage cr' = cr' & crHP %~
|
||||
subtract (length . _piercedPoints . _crSpState $ _crState cr')
|
||||
subtract (length . _piercedPoints . _csSpState $ _crState cr')
|
||||
hiss | null poss = id
|
||||
| otherwise = soundMultiFrom [BarrelHiss 0,BarrelHiss 1] (_crPos cr) foamSprayLoopS (Just 1)
|
||||
stopSounds = stopSoundFrom (BarrelHiss 0) . stopSoundFrom (BarrelHiss 1)
|
||||
@@ -93,7 +93,7 @@ damToExpBarrel ds cr = foldr damToExpBarrel' (foldr damToExpBarrel' cr pierceDam
|
||||
|
||||
damToExpBarrel' :: Damage -> Creature -> Creature
|
||||
damToExpBarrel' dm cr = case _dmType dm of
|
||||
PIERCING -> over (crState . crSpState . piercedPoints) ((:) $ int -.- _crPos cr)
|
||||
PIERCING -> over (crState . csSpState . piercedPoints) ((:) $ int -.- _crPos cr)
|
||||
$ cr & crHP -~ div amount 200
|
||||
POISONDAM -> cr
|
||||
SPARKING -> cr
|
||||
|
||||
@@ -211,7 +211,7 @@ deadRot :: Creature -> Shape -> Shape
|
||||
deadRot cr = overPosSH (Q.rotateToZ d)
|
||||
where
|
||||
d = maybe (V3 1 0 0) (addZ 0 . unitVectorAtAngle . subtract (_crDir cr+pi))
|
||||
(damageDirection . _crDamage $ _crState cr)
|
||||
(damageDirection . _csDamage $ _crState cr)
|
||||
|
||||
scalp :: Creature -> Shape
|
||||
{-# INLINE scalp #-}
|
||||
|
||||
@@ -81,10 +81,11 @@ checkDeath cr w
|
||||
removecr
|
||||
| _crID cr == 0 = (creatures . ix (_crID cr) . crUpdate .~ const id)
|
||||
. (creatures . ix (_crID cr) . crPict .~ const mempty)
|
||||
. (creatures . ix (_crID cr) . crHP .~ 0) -- hack to get around player creature being killed but left with more than 0 hp
|
||||
. (creatures . ix (_crID cr) . crHP .~ 0)
|
||||
-- hack to get around player creature being killed but left with more than 0 hp
|
||||
| otherwise = creatures . at (_crID cr) .~ Nothing
|
||||
corpseOrGib :: Creature -> World -> World
|
||||
corpseOrGib cr w = case maxDamageType (_crDamage (_crState cr)) of
|
||||
corpseOrGib cr w = case maxDamageType (_csDamage (_crState cr)) of
|
||||
Just (FLAMING,_) -> w & plNew corpses cpID (thecorpse & cpPict %~ fmap scorchSPic)
|
||||
Just (ELECTRICAL,_) -> w & plNew corpses cpID thecorpse
|
||||
Just (POISONDAM,_) -> w & plNew corpses cpID (thecorpse & cpPict %~ fmap poisonSPic)
|
||||
@@ -139,21 +140,21 @@ internalUpdate cr = creatures . ix (_crID cr) %~
|
||||
-- | Drop items according to the creature state.
|
||||
-- TODO make sure this doesn't mess up any ItemPosition
|
||||
dropByState :: Creature -> World -> World
|
||||
dropByState cr w = foldr (dropItem cr) w $ case cr ^. crState . crDropsOnDeath of
|
||||
dropByState cr w = foldr (dropItem cr) w $ case cr ^. crState . csDropsOnDeath of
|
||||
DropAll -> IM.keys $ _crInv cr
|
||||
DropSpecific xs -> xs
|
||||
DropAmount n -> take n $ evalState (shuffle $ IM.keys $ _crInv cr) (_randGen w)
|
||||
|
||||
clearDamage :: Creature -> World -> World
|
||||
clearDamage cr w = w
|
||||
& creatures . ix (_crID cr) . crState . crDamage .~ []
|
||||
& creatures . ix (_crID cr) . crState . csDamage .~ []
|
||||
|
||||
doDamage :: Creature -> World -> World
|
||||
doDamage cr w = w
|
||||
& applyPastDamages cr
|
||||
& _crApplyDamage cr dams cr
|
||||
where
|
||||
dams = _crDamage $ _crState cr
|
||||
dams = _csDamage $ _crState cr
|
||||
|
||||
-- TODO generalise shake to arbitrary damage amounts
|
||||
applyPastDamages :: Creature -> World -> World
|
||||
|
||||
Reference in New Issue
Block a user