Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a746adad2 | ||
|
|
d0534e6fa3 | ||
|
|
06608c60bf |
@@ -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
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user