{- | Deals with setting a target for creatures -} module Dodge.Creature.SetTarget where import Dodge.Data import Control.Lens import qualified Data.IntMap.Strict as IM {- | Assumes that you are id 0: if creature is cognizant of you, sets you as target -} targetYouWhenCognizant :: World -> Creature -> Creature targetYouWhenCognizant w cr = case cr ^? crPerception . crAwarenessLevel . ix 0 of Just (Cognizant _) -> cr & crIntention . targetCr ?~ _creatures w IM.! 0 _ -> cr & crIntention . targetCr .~ Nothing