-- | 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