From b7ec173d0e28322eb0225115c100569ac82db05f Mon Sep 17 00:00:00 2001 From: jgk Date: Tue, 23 Mar 2021 23:49:59 +0100 Subject: [PATCH] Tweak cloud springs --- src/Dodge/Critters.hs | 1 + src/Dodge/Item/Weapon.hs | 4 ++-- src/Dodge/Update.hs | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Dodge/Critters.hs b/src/Dodge/Critters.hs index a5be2cc43..3f1bdcc3c 100644 --- a/src/Dodge/Critters.hs +++ b/src/Dodge/Critters.hs @@ -359,6 +359,7 @@ startCr = basicCreature ,miniGun ,medkit 50 ,bezierGun + ,poisonSprayer ] ++ repeat NoItem)) -- startInv diff --git a/src/Dodge/Item/Weapon.hs b/src/Dodge/Item/Weapon.hs index 1d3d5af4f..4ccfea495 100644 --- a/src/Dodge/Item/Weapon.hs +++ b/src/Dodge/Item/Weapon.hs @@ -839,7 +839,7 @@ aGasCloud cid w pos = _crPos cr +.+ ((_crRad cr + 2.9) *.* unitVectorAtAngle (_crDir cr)) pos2 = (0.5 *.* vel) +.+ _crPos cr +.+ ((_crRad cr + 2.9) *.* unitVectorAtAngle (_crDir cr)) - vel = (_crPos cr -.- _crOldPos cr) +.+ 4 *.* unitVectorAtAngle dir + vel = (_crPos cr -.- _crOldPos cr) +.+ 10 *.* unitVectorAtAngle dir insertCloud = makeGasCloud pos vel -- . makeFlame pos2 vel (Just cid) makeGasCloud :: Point2 -> Point2 -> World -> World @@ -852,7 +852,7 @@ makeGasCloud pos vel w = over clouds (IM.insert i theCloud) , _clPict = \_ -> onLayer CrLayer $ color (withAlpha 0.1 col) $ circleSolid 20 , _clRad = 20 - , _clTimer = 200 + , _clTimer = 400 , _clEffect = cloudPoisonDamage } (col, g) = runState (takeOne [green,yellow]) $ _randGen w diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index e0145a3cd..1125ac027 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -130,7 +130,7 @@ updateCloud c w | _clTimer c < 1 = w & clouds %~ IM.delete (_clID c) moveCloud :: Cloud -> World -> World moveCloud c w = _clEffect c c . theUpdate $ w - where newVel = 0.99 *.* springVels + where newVel = 0.95 *.* springVels springVels = IM.foldr' (clClSpringVel c w) (_clVel c) (cloudsNearPoint oldPos w) oldPos = _clPos c newPos = oldPos +.+ newVel @@ -144,12 +144,14 @@ moveCloud c w = _clEffect c c . theUpdate $ w clClSpringVel :: Cloud -> World -> Cloud -> Point2 -> Point2 clClSpringVel a w b v | ida == idb = v - | dist pa pb < 5 = v +.+ 0.1 *.* (safeNormalizeV (pa -.- pb)) + | dist pa pb < radDist = v +.+ 0.1 *.* (safeNormalizeV (pa -.- pb)) +-- | dist pa pb < radDist = v +.+ 0.1 *.* (safeNormalizeV (pa -.- pb)) | otherwise = v where ida = _clID a idb = _clID b pa = _clPos a pb = _clPos b + radDist = (_clRad a + _clRad b) / 2 simpleCrSprings :: World -> World simpleCrSprings w = IM.foldr' crSpring w $ _creatures w