concepts/
efun/
NAME
	switch

SYNTAX
	switch (expr) statement;

DESCRIPTION
	Branch to the case label in statement that matches expr.
	If no matching case label is found branch to the default label
	in statement. 

	A case label has the form

		case expr_n :

	where expr_n must be constant, or the form

		case expr_n1 .. expr_n2 :

	where expr_n1 and expr_n2 must be numeric constants.

	Either all case labels have to be strings or all have to be
	numeric. Only 0 is special: it is allowed in a switch
	statement where all other labels are strings.

	A default label has the form

		default :

	The default label defaults to the end of statement if not
	given explicitly.

	Whenever a 'break' statement is executed inside 'statement' a
	branch to the end of the switch statement is performed.

EXAMPLE
	Typical usage:

	switch(random(100)) {
	  case 0 .. 22 : write("Nothing happens"); break;
	  case 23 .. 27 :
	    write("You are surrounded by a golden glow");
	    this_player()->heal_self(random(3));
	    break;
	  case 28 .. 32 :
	    write("The water was poisoned!\n");
	    this_player()->add_exp(this_player()->hit_player(random(4)));
	    break;
	  case 33 : write("You hear a voice whispering: "+random_hint());
	  /* fall through */
	  case 34 :
	    write("While you didn't paid attention, a water demon snatches\n\
	a coin out of your purse!\n");
	    this_player()->add_money(-1);
	    break;
	  default : write "You hear some strange noises\n"; break;
	  case 42 : return;
	  case 99 : write("It tastes good.\n";
	}