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 }