the general concept is to use Attributes for "state flagging", and for a simple example (using an Integer Attribute for this example):
(this is a very stupid-lame and poor example, but I think it explains the concept well)
we've got a teleporter doorway, and depending on your character's level, takes you to different areas of difficulty in the game:
player.level = 0 ----> tutorial area-stage-level
player.level = 1 ----> easiest area-stage-level
player.level = 2 ----> a little harder area-stage-level
etc etc etc
so, the 'teleporter doorway' Object's 'teleport' Verb, would need this (for an example in code --- its quick and easy to do-show you with it):
if (player.level = 0)
{
MoveObject(player, stage0)
}
else if (player.level = 1)
{
MoveObject(player, stage1)
}
// etc etc etc
if (player.level = 99)
{
MoveObject(player, stage99)
}
and, as I've already revealed, we need an attribute which is checked, and which is changed as you progress in the game, which in this case is:
(Object Name: player)
Attribute Name: level
Attribute Type: int (integer)
Attribute (initial) Value: 0 // or 1
and, let's say instead of your 'level' raising through 'experience' gained from killing monsters in the normal leveling up system, it instead raises as you complete missions~tasks~objectives in the game.
so, let's say in the tutorial area, you kill the tutorial boss, upon doing so, your 'level' Attribute gets raised from '0' to '1', which now allows you to use the teleporter doorway to go to the next area of the game.
--------
that's the concept of 'state flagging',
but as to what exactly you want to do, and how you want to implement it, we'll need more communication and information between us, for that, in order to help you with it, we need to know more about what and how you want to do, to give you instructions on setting it up in your game.