Next Ambitious Mini-Project: Use Searching and Inference

I’ve been procrastinating on my next mini-project because it’s more ambitious. It involves taking a stock list of animals, then generating a story based on their likes and dislikes. They will push a button and go to different habitats, where different animals living in those habitats may be, then join each other and interact with both each other and their world based on their preferences. Random events will also occur. Their actions will also ideally be based on hypothetical simulations. (For example, a duck doesn’t necessarily care for a stick, but if it can retrieve it from a place inaccessible to a dog and give it to the dog, it can make the dog happy.)

Here’s a brain dump of what I have so far, in a format that is only meant to be understood by me:

cat
- likes chasing small moving things
- hates water
- purrs when it's happy
- is afraid of dogs
- is afraid of larger animals
- can inflict damage with claws
- likes treats
- likes food
dog
- likes to chase cats
- likes to please its owner
- likes belly rubs
- likes to swim in water
- likes treats
- likes food
duck
- loves water
- can fly
- likes treats
- likes food
dolphin
robin
snake
- likes the sun
- hates water
-
lizard
crow
sparrow
pig
goose
fox
goat
wolf
home
habitat
behavior
random universe elements
- random landscape
 
 forest
 desert
 woods
 - pond
 - no pond
 mountain
- random events
push a button - go somewhere else
random events
- rain
- sunny
- snow
- hail
things you can find in these places
attitudes towards events and things
if X and Y and Z, then occurs({Q:probability, R:probability, NOTHING:probability})
if X then utter({Q:probability, R:probability, NOTHING:probability})
want to do nice something for the other
meets(X,Y)
generate story timeline events
start
conflict
denoument