39 lines
1.2 KiB
Haskell
39 lines
1.2 KiB
Haskell
-- | Not a good name, perhaps: internal creature actions.
|
|
module Dodge.Creature.Volition (
|
|
holsterWeapon,
|
|
drawWeapon,
|
|
shootTillEmpty,
|
|
shootFirstMiss,
|
|
) where
|
|
|
|
import Dodge.Data.Creature
|
|
import Dodge.Data.CreatureEffect
|
|
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
|