Check if a player has already something (with pockets)

When I played adventures in the past, it always bothered me that I may have forgotten to take something in the beginning of the game that is essential later.

  • I wanted to be fair in my story and would like to give the player a hint that not all essential things were taken yet. That was easy. So before leaving a place, I checked if the player had three things and if not, warned the player (only once, they can leave anyway).

  • Inspired by @Zed 's answer, I wanted to make it more difficult for the player to take things by using the carrying capacity. I imagined the the player wears something with pockets, and also has his hands to carry stuff. I also managed to implement this, by modelling pockets:

    The pockets are nightwear-pockets. The pockets are part of the pyjamas. 
    The player wears pyjamas.
    

Now it got complicated, because I cannot foresee if the player will put the essential things in his pockets or just take them (players need to do that, because I have three essential things, and I limited the carrying capacity of the player to two).

So my idea was to implement two functions:

  • One that goes through the belongings of the player (worn or carried) and adds all things to a list possessions. This list is supposed to be a flat inventory, omitting containers, but adding what’s in them.
  • One that checks if all items in the list of essentials can be found in the list of possessions.

My problem is the first one, because the pockets are part of the pyjamas. Is there a way to check if a worn thing or a carried thing has parts or is a container?

I might use only one decide on function (phrase), because I had troubles passing a list to a To phrase. When using it in my condition, it looks somewhat like this:

	If { thing1, thing2, thing3 } is taken:

“if player encloses [item]”
This will cover anything the player has regardless of where he has it. :grinning:

4 Likes

🤦 Really? That simple?

1 Like

I was stunned too. lol

Thanks @Arlan, works like a charm.

My function shrunk then to this:

To decide whether (essentials - a list of things) is taken:
	repeat with item running through essentials:
		if the player does not enclose item:
			decide on false;
	decide on true.
1 Like