Make bezierGun set target on right click

This commit is contained in:
2021-05-23 20:32:15 +02:00
parent b337fbdab9
commit 3ae454acf4
7 changed files with 76 additions and 19 deletions
+31 -2
View File
@@ -1,5 +1,8 @@
module Dodge.Creature.ArmourChase
( armourChaseCrit
)
where
import Dodge.Base
import Dodge.Data
import Dodge.Default
import Dodge.Creature.State
@@ -7,12 +10,14 @@ import Dodge.Creature.State.Data
import Dodge.Creature.Rationality
import Dodge.Creature.ReaderUpdate
import Dodge.Creature.AlertLevel
import Dodge.Creature.ChooseTarget
import Dodge.Creature.Picture
import Dodge.Item.Equipment
import Dodge.Item.Consumable
import Picture
import Geometry
import Data.Maybe
import Data.List
import qualified Data.IntMap.Strict as IM
import Control.Lens
import Control.Monad.Reader
@@ -23,9 +28,10 @@ armourChaseCrit = defaultCreature
watchUpdateStratR [] >=>
doStrategyActionsR >=>
performActionsR >=>
chaseTargetR targetYouLOS >=>
chaseTargetR (const . _crTarget) >=>
basicPerceptionUpdateR [0] >=>
targetYouWhenCognizantR >=>
flockACCR >=>
overrideMeleeCloseTargetR >=>
return . (crMeleeCooldown . _Just %~ max 0 . subtract 1)
, _crHP = 300
@@ -37,3 +43,26 @@ armourChaseCrit = defaultCreature
, _crMeleeCooldown = Just 0
, _crGroup = ShieldGroup
}
flockACCR :: Creature -> Reader World Creature
flockACCR = reader . flockACC
flockACC :: Creature -> World -> Creature
flockACC cr w = fromMaybe cr $ mFlockACC cr w
mFlockACC :: Creature -> World -> Maybe Creature
mFlockACC cr w = do
tcr <- _crTarget cr
let tpos = _crPos tcr
cpos = _crPos cr
isFarACC cr' = _crGroup cr' == ShieldGroup && _crID cr' /= _crID cr
&& dist (_crPos cr') tpos > dist cpos tpos
-- && circOnSeg (_crPos cr') tpos cpos (_crRad cr + _crRad cr')
nearACCs = IM.filter isFarACC $ creaturesNearPointI 3 cpos w
acr <- listToMaybe $ sortOn (dist cpos . _crPos) $ IM.elems nearACCs
let r = _crRad acr + _crRad cr + 10
horDir = normalizeV (vNormal (cpos -.- tpos))
horShift = if isLHS tpos cpos (_crPos acr)
then r *.* horDir
else negate r *.* horDir
return $ cr & crActionPlan . crImpulse .~ [MoveForward 2.5,TurnToward (tpos +.+ horShift) 0.05 ]