38 lines
1.2 KiB
Haskell
38 lines
1.2 KiB
Haskell
{- | Not a good name, perhaps: internal creature actions. -}
|
|
module Dodge.Creature.Volition
|
|
( holsterWeapon
|
|
, drawWeapon
|
|
, shootTillEmpty
|
|
-- , fleeFrom
|
|
, shootFirstMiss
|
|
) where
|
|
import Dodge.Data
|
|
import Dodge.SoundLogic.LoadSound
|
|
import Geometry
|
|
|
|
holsterWeapon, drawWeapon :: Action
|
|
holsterWeapon = DoImpulses [ChangePosture AtEase, MakeSound whiteNoiseFadeOutS]
|
|
drawWeapon = DoImpulses [ChangePosture Aiming, MakeSound whiteNoiseFadeInS]
|
|
|
|
|
|
shootTillEmpty :: Action
|
|
--shootTillEmpty = (crCanShoot `DoActionWhile` DoImpulses [UseItem])
|
|
shootTillEmpty = (WdCrBlfromCrBl CrCanShoot `DoActionWhile` DoImpulses [UseItem])
|
|
`DoActionThen` 20 `WaitThen` holsterWeapon
|
|
|
|
--advanceShoot :: Int -> Action
|
|
--advanceShoot tcid = lostest `DoActionWhile`
|
|
-- advanceShoot' `DoActionThen`
|
|
-- 75 `DoReplicate`
|
|
-- advanceShoot'
|
|
-- where
|
|
-- lostest (w,cr) = canSee (_crID cr) tcid w
|
|
-- advanceShoot' = ImpulsesList [[UseItem, MoveForward 3]]
|
|
|
|
shootFirstMiss :: Action
|
|
shootFirstMiss =
|
|
LeadTarget (V2 30 50) `DoActionThen`
|
|
DoImpulses [UseItem] `DoActionThen`
|
|
(WdCrBlfromCrBl CrCanShoot `DoActionWhile` DoActions [LeadTarget (V2 0 0),DoImpulses [UseItem]])
|
|
`DoActionThen` 20 `WaitThen` holsterWeapon
|