Compare commits

..
3 Commits
Author SHA1 Message Date
justin 1a746adad2 Add file 2023-05-01 10:27:16 +01:00
justin d0534e6fa3 Remove push damage types, push and torque done through dam effects 2023-05-01 10:26:48 +01:00
justin 06608c60bf Tweak chaseCrit melee striking 2023-05-01 10:21:03 +01:00
12 changed files with 42 additions and 34 deletions
+23
View File
@@ -0,0 +1,23 @@
module AesonHelp where
import Data.Aeson (ToJSON)
import qualified Data.Aeson.Encode.Pretty as AEP
import Data.ByteString.Lazy.Char8 (unpack)
import Data.Maybe
getPretty :: ToJSON a => a -> [String]
getPretty = lines . unpack . AEP.encodePretty' (AEP.Config (AEP.Spaces 2) compare AEP.Generic False)
getPrettyShort :: ToJSON a => a -> [String]
getPrettyShort = mapMaybe cullPretty . getPretty
cullPretty :: String -> Maybe String
cullPretty s = case dropWhile (== ' ') s of
']':_ -> Nothing
'[':_ -> Nothing
'}':_ -> Nothing
'{':_ -> Nothing
_ -> Just $ filter f s
where
f '_' = False
f '"' = False
f _ = True
+2 -4
View File
@@ -112,8 +112,7 @@ makeFragBullets p w = w & cWorld . lWorld . instantBullets .++~ bus
& buOldPos .~ p
& buWidth .~ 1
& buDamages .~
[ Damage PIERCING 5 0 0 0 NoDamageEffect
, Damage PUSHDAM 1 0 0 0 . PushBackDamage $ 2
[ Damage PIERCING 5 0 0 0 $ PushBackDamage 2
]
makeFlak :: Bullet -> Point2 -> World -> World
@@ -126,8 +125,7 @@ makeFlak bu _ w = w & cWorld . lWorld . instantBullets .++~ [f x | x <- xs]
& buSpawn .~ BulSpark
& buWidth .~ 0.5
& buDamages .~
[ Damage PIERCING 25 0 0 0 NoDamageEffect
, Damage PUSHDAM 1 0 0 0 . PushBackDamage $ 2
[ Damage PIERCING 25 0 0 0 $ PushBackDamage 2
]
g x v = v +.+ x *.* normalizeV (vNormal v)
+2 -2
View File
@@ -50,7 +50,7 @@ followImpulse cr w imp = case imp of
SwitchToItem i -> crup $ cr & crManipulation . manObject .~ InInventory (SelItem i NoInvSelAction)
Melee cid' ->
( hitCr cid'
, crMvBy (10 *.* normalizeV (posFromID cid' -.- cpos)) $ cr & crMeleeCooldown .~ 20
, crMvAbsolute (10 *.* normalizeV (posFromID cid' -.- cpos)) $ cr & crMeleeCooldown .~ 20
)
RandomTurn a -> (randGen .~ snd (rr a), creatureTurn (fst $ rr a) cr)
MakeSound sid -> (soundStart (CrSound (_crID cr)) (_crPos cr) sid Nothing, cr)
@@ -83,6 +83,6 @@ followImpulse cr w imp = case imp of
rr a = randomR (- a, a) $ _randGen w
hitCr i =
( cWorld . lWorld . creatures . ix i . crState . csDamage
.:~ Damage BLUNT 100 cpos (posFromID i) (posFromID i) NoDamageEffect
.:~ Damage BLUNT 100 cpos (posFromID i) (posFromID i) (PushBackDamage 3)
)
. soundStart (CrSound cid) cpos hitS Nothing
+7
View File
@@ -36,9 +36,13 @@ overrideMeleeCloseTarget cr = maybe cr (tryMeleeAttack cr) (_targetCr $ _crInten
tryMeleeAttack :: Creature -> Creature -> Creature
tryMeleeAttack cr tcr
| _crMeleeCooldown cr == 0
&& Just (_crID tcr) == cr ^? crActionPlan . apStrategy . meleeTarget
&& dist tpos cpos < _crRad cr + _crRad tcr + 5
&& abs (_crDir cr - argV (tpos -.- cpos)) < pi / 4 =
cr & crActionPlan . apImpulse .~ [Melee $ _crID tcr]
& crActionPlan . apAction .~ [DoReplicate 10 NoAction `DoActionThen` DoImpulses
[ChangeStrategy (CloseToMelee $ _crID tcr)] ]
& crActionPlan . apStrategy .~ MeleeStrike
| otherwise = cr
where
cpos = _crPos cr
@@ -109,6 +113,7 @@ chaseCritMv :: World -> Creature -> Creature
chaseCritMv w cr = case _apStrategy (_crActionPlan cr) of
StrategyActions _ _ -> cr
WarningCry -> cr
MeleeStrike -> cr
_ -> case cr ^? crIntention . mvToPoint . _Just of
Just p
| dist (_crPos cr) p > _crRad cr -> cr & crActionPlan . apAction .~ [PathTo p]
@@ -136,7 +141,9 @@ viewTarget w cr = case cr ^? crIntention . viewPoint . _Just of
-- ( TurnToPoint p
-- )
& crIntention . viewPoint .~ Nothing
& crActionPlan . apStrategy .~ Investigate
| otherwise -> cr & crActionPlan . apAction %~ replaceNullWith (PathTo p)
& crActionPlan . apStrategy .~ Investigate
Nothing -> cr
replaceNullWith :: a -> [a] -> [a]
+2
View File
@@ -181,6 +181,7 @@ data Strategy
| ShootAt Int
| FollowImpulses
| WatchAndWait
| Investigate
| WarningCry
| LookAround
| CloseToMelee {_meleeTarget :: Int}
@@ -218,3 +219,4 @@ concat <$> mapM (deriveJSON defaultOptions)
makeLenses ''ActionPlan
makeLenses ''Impulse
makeLenses ''Action
makeLenses ''Strategy
-6
View File
@@ -44,12 +44,6 @@ isElectrical dm = case _dmType dm of
ELECTRICAL -> True
_ -> False
isMovementDam :: Damage -> Bool
isMovementDam dm = case _dmType dm of
TORQUEDAM -> True
PUSHDAM -> True
_ -> False
makeLenses ''Damage
makeLenses ''DamageEffect
deriveJSON defaultOptions ''DamageEffect
-2
View File
@@ -20,8 +20,6 @@ data DamageType
| ELECTRICAL
| EXPLOSIVE
| CONCUSSIVE
| TORQUEDAM
| PUSHDAM
| POISONDAM
| ENTERREMENT
deriving (Eq, Ord, Show, Enum, Bounded, Read) --Generic, Flat)
+2 -4
View File
@@ -34,8 +34,7 @@ defaultBullet =
basicBulDams :: [Damage]
basicBulDams =
[ Damage PIERCING 100 0 0 0 NoDamageEffect
, Damage PUSHDAM 1 0 0 0 . PushBackDamage $ 2
[ Damage PIERCING 100 0 0 0 $ PushBackDamage 2
]
hvBullet :: AmmoType
@@ -51,6 +50,5 @@ hvBullet =
heavyBulDams :: [Damage]
heavyBulDams =
[ Damage PIERCING 300 0 0 0 NoDamageEffect
, Damage PUSHDAM 1 0 0 0 $ PushBackDamage 2
[ Damage PIERCING 300 0 0 0 $ PushBackDamage 2
]
-2
View File
@@ -32,8 +32,6 @@ damageStone dm dir = case _dmType dm of
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
ENTERREMENT -> a 0 id
where
+2 -4
View File
@@ -16,8 +16,6 @@ hvBulDams =
, Damage PIERCING 25 0 0 0 NoDamageEffect
, Damage PIERCING 25 0 0 0 NoDamageEffect
, Damage PIERCING 25 0 0 0 NoDamageEffect
, Damage PIERCING 25 0 0 0 NoDamageEffect
, Damage PIERCING 25 0 0 0 NoDamageEffect
, Damage TORQUEDAM 1 0 0 0 $ TorqueDamage 0.7
, Damage PUSHDAM 1 0 0 0 $ PushBackDamage 3
, Damage PIERCING 25 0 0 0 $ TorqueDamage 0.7
, Damage PIERCING 25 0 0 0 $ PushBackDamage 3
]
+2 -2
View File
@@ -40,7 +40,7 @@ moveShockwave w sw
| otherwise =
cr & crState . csDamage
.:~ Damage
PUSHDAM
CONCUSSIVE
dam
(cpos -.- v)
cpos
@@ -68,7 +68,7 @@ moveInverseShockwave w sw
| dist (_crPos cr) p >= rad + _crRad cr = cr
| otherwise =
cr & crState . csDamage
.:~ Damage PUSHDAM 1 (cpos +.+ v) cpos (cpos -.- v) (PushBackDamage 25)
.:~ Damage CONCUSSIVE 1 (cpos +.+ v) cpos (cpos -.- v) (PushBackDamage 25)
where
cpos = _crPos cr
v = normalizeV (cpos -.- p)
-8
View File
@@ -34,8 +34,6 @@ stoneWallDamage dm wl = case _dmType dm of
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
ENTERREMENT -> a 0 id
where
@@ -61,8 +59,6 @@ glassWallDamage dm wl w =
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a 0 dosplint
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
ENTERREMENT -> a 0 id
where
@@ -93,8 +89,6 @@ crystalWallDamage dm wl = case _dmType dm of
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a 0 id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
ENTERREMENT -> a 0 id
where
@@ -119,8 +113,6 @@ dirtWallDamage dm wl = case _dmType dm of
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
ENTERREMENT -> a 0 id
where