47 lines
1.2 KiB
Haskell
47 lines
1.2 KiB
Haskell
module Dodge.Creature.SwarmCrit
|
|
( swarmCrit
|
|
)
|
|
where
|
|
import Dodge.Data
|
|
import Dodge.Default
|
|
import Dodge.Creature.Picture
|
|
import Dodge.Creature.Test
|
|
import Dodge.Creature.ActionRat
|
|
import Dodge.Creature.ImpulseRat
|
|
import Dodge.Creature.ChooseTarget
|
|
import Dodge.Creature.SetTarget
|
|
import Dodge.Creature.Rationality
|
|
import Dodge.Creature.AlertLevel
|
|
import Dodge.Creature.State
|
|
import Dodge.Creature.State.Data
|
|
import Dodge.Item.Weapon
|
|
import Dodge.Item.Consumable
|
|
import Dodge.Picture.Layer
|
|
import Geometry
|
|
import Picture
|
|
import Dodge.RandomHelp
|
|
|
|
import Data.Maybe
|
|
import qualified Data.IntMap.Strict as IM
|
|
import Control.Lens
|
|
import Control.Monad.State
|
|
import System.Random
|
|
|
|
swarmCrit :: Creature
|
|
swarmCrit = defaultCreature
|
|
{ _crUpdate = stateUpdate $ impulsiveAI $ composeInternalAIs
|
|
[ flockPointTarget encircle targetYouLOS
|
|
, \ _ -> crMeleeCooldown . _Just %~ (max 0 . subtract 1)
|
|
, basicPerceptionUpdate [0]
|
|
-- , doStrategyActions
|
|
-- , targetYouWhenCognizant
|
|
]
|
|
, _crHP = 1
|
|
, _crRad = 2
|
|
, _crMass = 2
|
|
, _crPict = basicCrPict yellow
|
|
, _crCorpse = onLayer CorpseLayer $ color (greyN 0.5) $ circleSolid 2
|
|
, _crFaction = ColorFaction yellow
|
|
, _crMeleeCooldown = Just 0
|
|
}
|