68 lines
1.8 KiB
Haskell
68 lines
1.8 KiB
Haskell
module Dodge.Creature.ArmourChase
|
|
( armourChaseCrit
|
|
, flockArmourChaseCrit
|
|
) where
|
|
import Dodge.Data
|
|
import Dodge.Default
|
|
--import Dodge.Creature.State
|
|
import Dodge.Creature.Update
|
|
import Dodge.Creature.ChaseCrit
|
|
--import Dodge.Creature.ChainUpdates
|
|
import Dodge.Creature.ReaderUpdate
|
|
import Dodge.Creature.Perception
|
|
import Dodge.Creature.Picture
|
|
--import Dodge.Creature.Impulse
|
|
import Dodge.Creature.Action
|
|
import Dodge.Item.Equipment
|
|
import Dodge.Item.Consumable
|
|
import Picture
|
|
|
|
import qualified Data.IntMap.Strict as IM
|
|
import Control.Lens
|
|
|
|
flockArmourChaseCrit :: Creature
|
|
flockArmourChaseCrit = defaultCreature
|
|
{ _crUpdate = defaultImpulsive
|
|
[ watchUpdateStrat []
|
|
, const doStrategyActions
|
|
, performActions
|
|
, targetYouWhenCognizant
|
|
, setTargetMv (\_ -> _targetCr . _crIntention)
|
|
, flockACC
|
|
, perceptionUpdate [0]
|
|
, goToTarget
|
|
, const overrideMeleeCloseTarget
|
|
, const (crMeleeCooldown %~ max 0 . subtract 1)
|
|
]
|
|
, _crName = "armourChaseCrit"
|
|
, _crHP = 300
|
|
, _crPict = basicCrPict green
|
|
, _crInv = IM.fromList
|
|
[(0,frontArmour)
|
|
,(1,medkit 200)
|
|
]
|
|
, _crActionPlan = ActionPlan
|
|
{_crImpulse = []
|
|
,_crAction = []
|
|
,_crStrategy = FollowImpulses
|
|
,_crGoal = [Kill 0]
|
|
}
|
|
, _crMeleeCooldown = 0
|
|
, _crGroup = ShieldGroup
|
|
, _crMvType = defaultChaseMvType
|
|
}
|
|
armourChaseCrit :: Creature
|
|
armourChaseCrit = chaseCrit
|
|
{ _crName = "armourChaseCrit"
|
|
--, _crUpdate = defaultImpulsive []
|
|
, _crInv = IM.fromList
|
|
[(0,frontArmour)
|
|
,(1,medkit 200)
|
|
]
|
|
, _crMvType = defaultChaseMvType {_mvTurnRad = f}
|
|
}
|
|
& crEquipment . at OnChest ?~ 0
|
|
& crInvEquipped . at 0 ?~ OnChest
|
|
where
|
|
f _ = 0.05
|