diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index f375de533..71a58c63d 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -48,7 +48,8 @@ chaseCrit = defaultCreature , _crFaction = ColorFaction green , _crVocalization = Vocalization seagullChatterS [seagullBarkS - ,seagullChatterS,seagullWhistleS + ,seagullChatterS + ,seagullWhistleS ,seagullWhistle1S ,seagullCryS ] 50 0 diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 34927ac62..bf8b89159 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -3,7 +3,14 @@ import Dodge.Data import Dodge.Creature.State import Dodge.Creature.Impulse import Dodge.Creature.ChainUpdates +import LensHelp +import System.Random + +-- bit of a hack to get new random generators after each creature's update defaultImpulsive :: [World -> Creature -> Creature] -> Creature -> World -> World -defaultImpulsive = stateUpdate . impulsiveAIBefore . chainCreatureUpdates +defaultImpulsive = fmap (fmap updateRandGen) . stateUpdate . impulsiveAIBefore . chainCreatureUpdates + where + updateRandGen w = let (_,g) = randomR (0,1::Int) (_randGen w) + in w & randGen .~ g