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 & buOldPos .~ p
& buWidth .~ 1 & buWidth .~ 1
& buDamages .~ & buDamages .~
[ Damage PIERCING 5 0 0 0 NoDamageEffect [ Damage PIERCING 5 0 0 0 $ PushBackDamage 2
, Damage PUSHDAM 1 0 0 0 . PushBackDamage $ 2
] ]
makeFlak :: Bullet -> Point2 -> World -> World makeFlak :: Bullet -> Point2 -> World -> World
@@ -126,8 +125,7 @@ makeFlak bu _ w = w & cWorld . lWorld . instantBullets .++~ [f x | x <- xs]
& buSpawn .~ BulSpark & buSpawn .~ BulSpark
& buWidth .~ 0.5 & buWidth .~ 0.5
& buDamages .~ & buDamages .~
[ Damage PIERCING 25 0 0 0 NoDamageEffect [ Damage PIERCING 25 0 0 0 $ PushBackDamage 2
, Damage PUSHDAM 1 0 0 0 . PushBackDamage $ 2
] ]
g x v = v +.+ x *.* normalizeV (vNormal v) 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) SwitchToItem i -> crup $ cr & crManipulation . manObject .~ InInventory (SelItem i NoInvSelAction)
Melee cid' -> Melee cid' ->
( hitCr 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) RandomTurn a -> (randGen .~ snd (rr a), creatureTurn (fst $ rr a) cr)
MakeSound sid -> (soundStart (CrSound (_crID cr)) (_crPos cr) sid Nothing, 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 rr a = randomR (- a, a) $ _randGen w
hitCr i = hitCr i =
( cWorld . lWorld . creatures . ix i . crState . csDamage ( 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 . 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 :: Creature -> Creature -> Creature
tryMeleeAttack cr tcr tryMeleeAttack cr tcr
| _crMeleeCooldown cr == 0 | _crMeleeCooldown cr == 0
&& Just (_crID tcr) == cr ^? crActionPlan . apStrategy . meleeTarget
&& dist tpos cpos < _crRad cr + _crRad tcr + 5 && dist tpos cpos < _crRad cr + _crRad tcr + 5
&& abs (_crDir cr - argV (tpos -.- cpos)) < pi / 4 = && abs (_crDir cr - argV (tpos -.- cpos)) < pi / 4 =
cr & crActionPlan . apImpulse .~ [Melee $ _crID tcr] cr & crActionPlan . apImpulse .~ [Melee $ _crID tcr]
& crActionPlan . apAction .~ [DoReplicate 10 NoAction `DoActionThen` DoImpulses
[ChangeStrategy (CloseToMelee $ _crID tcr)] ]
& crActionPlan . apStrategy .~ MeleeStrike
| otherwise = cr | otherwise = cr
where where
cpos = _crPos cr cpos = _crPos cr
@@ -109,6 +113,7 @@ chaseCritMv :: World -> Creature -> Creature
chaseCritMv w cr = case _apStrategy (_crActionPlan cr) of chaseCritMv w cr = case _apStrategy (_crActionPlan cr) of
StrategyActions _ _ -> cr StrategyActions _ _ -> cr
WarningCry -> cr WarningCry -> cr
MeleeStrike -> cr
_ -> case cr ^? crIntention . mvToPoint . _Just of _ -> case cr ^? crIntention . mvToPoint . _Just of
Just p Just p
| dist (_crPos cr) p > _crRad cr -> cr & crActionPlan . apAction .~ [PathTo 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 -- ( TurnToPoint p
-- ) -- )
& crIntention . viewPoint .~ Nothing & crIntention . viewPoint .~ Nothing
& crActionPlan . apStrategy .~ Investigate
| otherwise -> cr & crActionPlan . apAction %~ replaceNullWith (PathTo p) | otherwise -> cr & crActionPlan . apAction %~ replaceNullWith (PathTo p)
& crActionPlan . apStrategy .~ Investigate
Nothing -> cr Nothing -> cr
replaceNullWith :: a -> [a] -> [a] replaceNullWith :: a -> [a] -> [a]
+2
View File
@@ -181,6 +181,7 @@ data Strategy
| ShootAt Int | ShootAt Int
| FollowImpulses | FollowImpulses
| WatchAndWait | WatchAndWait
| Investigate
| WarningCry | WarningCry
| LookAround | LookAround
| CloseToMelee {_meleeTarget :: Int} | CloseToMelee {_meleeTarget :: Int}
@@ -218,3 +219,4 @@ concat <$> mapM (deriveJSON defaultOptions)
makeLenses ''ActionPlan makeLenses ''ActionPlan
makeLenses ''Impulse makeLenses ''Impulse
makeLenses ''Action makeLenses ''Action
makeLenses ''Strategy
-6
View File
@@ -44,12 +44,6 @@ isElectrical dm = case _dmType dm of
ELECTRICAL -> True ELECTRICAL -> True
_ -> False _ -> False
isMovementDam :: Damage -> Bool
isMovementDam dm = case _dmType dm of
TORQUEDAM -> True
PUSHDAM -> True
_ -> False
makeLenses ''Damage makeLenses ''Damage
makeLenses ''DamageEffect makeLenses ''DamageEffect
deriveJSON defaultOptions ''DamageEffect deriveJSON defaultOptions ''DamageEffect
-2
View File
@@ -20,8 +20,6 @@ data DamageType
| ELECTRICAL | ELECTRICAL
| EXPLOSIVE | EXPLOSIVE
| CONCUSSIVE | CONCUSSIVE
| TORQUEDAM
| PUSHDAM
| POISONDAM | POISONDAM
| ENTERREMENT | ENTERREMENT
deriving (Eq, Ord, Show, Enum, Bounded, Read) --Generic, Flat) deriving (Eq, Ord, Show, Enum, Bounded, Read) --Generic, Flat)
+2 -4
View File
@@ -34,8 +34,7 @@ defaultBullet =
basicBulDams :: [Damage] basicBulDams :: [Damage]
basicBulDams = basicBulDams =
[ Damage PIERCING 100 0 0 0 NoDamageEffect [ Damage PIERCING 100 0 0 0 $ PushBackDamage 2
, Damage PUSHDAM 1 0 0 0 . PushBackDamage $ 2
] ]
hvBullet :: AmmoType hvBullet :: AmmoType
@@ -51,6 +50,5 @@ hvBullet =
heavyBulDams :: [Damage] heavyBulDams :: [Damage]
heavyBulDams = heavyBulDams =
[ Damage PIERCING 300 0 0 0 NoDamageEffect [ Damage PIERCING 300 0 0 0 $ PushBackDamage 2
, Damage PUSHDAM 1 0 0 0 $ PushBackDamage 2
] ]
-2
View File
@@ -32,8 +32,6 @@ damageStone dm dir = case _dmType dm of
FLAMING -> a 0 id FLAMING -> a 0 id
ELECTRICAL -> a 0 id ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id POISONDAM -> a 0 id
ENTERREMENT -> a 0 id ENTERREMENT -> a 0 id
where 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 PIERCING 25 0 0 0 NoDamageEffect
, Damage PIERCING 25 0 0 0 NoDamageEffect , Damage PIERCING 25 0 0 0 $ TorqueDamage 0.7
, Damage PIERCING 25 0 0 0 NoDamageEffect , Damage PIERCING 25 0 0 0 $ PushBackDamage 3
, Damage TORQUEDAM 1 0 0 0 $ TorqueDamage 0.7
, Damage PUSHDAM 1 0 0 0 $ PushBackDamage 3
] ]
+2 -2
View File
@@ -40,7 +40,7 @@ moveShockwave w sw
| otherwise = | otherwise =
cr & crState . csDamage cr & crState . csDamage
.:~ Damage .:~ Damage
PUSHDAM CONCUSSIVE
dam dam
(cpos -.- v) (cpos -.- v)
cpos cpos
@@ -68,7 +68,7 @@ moveInverseShockwave w sw
| dist (_crPos cr) p >= rad + _crRad cr = cr | dist (_crPos cr) p >= rad + _crRad cr = cr
| otherwise = | otherwise =
cr & crState . csDamage cr & crState . csDamage
.:~ Damage PUSHDAM 1 (cpos +.+ v) cpos (cpos -.- v) (PushBackDamage 25) .:~ Damage CONCUSSIVE 1 (cpos +.+ v) cpos (cpos -.- v) (PushBackDamage 25)
where where
cpos = _crPos cr cpos = _crPos cr
v = normalizeV (cpos -.- p) v = normalizeV (cpos -.- p)
-8
View File
@@ -34,8 +34,6 @@ stoneWallDamage dm wl = case _dmType dm of
FLAMING -> a 0 id FLAMING -> a 0 id
ELECTRICAL -> a 0 id ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id POISONDAM -> a 0 id
ENTERREMENT -> a 0 id ENTERREMENT -> a 0 id
where where
@@ -61,8 +59,6 @@ glassWallDamage dm wl w =
FLAMING -> a 0 id FLAMING -> a 0 id
ELECTRICAL -> a 0 id ELECTRICAL -> a 0 id
CONCUSSIVE -> a 0 dosplint CONCUSSIVE -> a 0 dosplint
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id POISONDAM -> a 0 id
ENTERREMENT -> a 0 id ENTERREMENT -> a 0 id
where where
@@ -93,8 +89,6 @@ crystalWallDamage dm wl = case _dmType dm of
FLAMING -> a 0 id FLAMING -> a 0 id
ELECTRICAL -> a 0 id ELECTRICAL -> a 0 id
CONCUSSIVE -> a 0 id CONCUSSIVE -> a 0 id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id POISONDAM -> a 0 id
ENTERREMENT -> a 0 id ENTERREMENT -> a 0 id
where where
@@ -119,8 +113,6 @@ dirtWallDamage dm wl = case _dmType dm of
FLAMING -> a 0 id FLAMING -> a 0 id
ELECTRICAL -> a 0 id ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id POISONDAM -> a 0 id
ENTERREMENT -> a 0 id ENTERREMENT -> a 0 id
where where