B/oowt: OutOfWorld Template.
 
@Purpose: To implement some of the out of world actions.
 
@-------------------------------------------------------------------------------

@p Perform Undo.

@c
[ Perform_Undo;
	#ifdef PREVENT_UNDO; L__M(##Miscellany, 70); return; #endif;
	if (turns == 1) { L__M(##Miscellany, 11); return; }
	if (undo_flag == 0) { L__M(##Miscellany, 6); return; }
	if (undo_flag == 1) { L__M(##Miscellany, 7); return; }
	if (VM_Undo() == 0) L__M(##Miscellany, 7);
];

@p Announce Score Rule.

@c
[ ANNOUNCE_SCORE_R;
	if (actor ~= player) rfalse;
	#ifdef NO_SCORING; L__M(##Score, 2);
	#ifnot; GL__M(##Score); PrintRank();
	#endif;
];

@p Switch Score Notification On Rule.

@c
[ SWITCH_SCORE_NOTIFY_ON_R;
	if (actor ~= player) rfalse;
	#ifdef NO_SCORING; ANNOUNCE_SCORE_R();
	#ifnot; notify_mode=1; #endif;
];

@p Standard Report Switching Score Notification On Rule.

@c
[ REP_SWITCH_NOTIFY_ON_R;
	if (actor ~= player) rfalse;
	#ifndef NO_SCORING; GL__M(##NotifyOn); #endif;
];

@p Switch Score Notification Off Rule.

@c
[ SWITCH_SCORE_NOTIFY_OFF_R;
	if (actor ~= player) rfalse;
	#ifdef NO_SCORING; ANNOUNCE_SCORE_R();
	#ifnot; notify_mode=0; #endif;
];

@p Standard Report Switching Score Notification Off Rule.

@c
[ REP_SWITCH_NOTIFY_OFF_R;
	if (actor ~= player) rfalse;
	#ifndef NO_SCORING; GL__M(##NotifyOff); #endif;
];

@p Prefer Sometimes Abbreviated Room Descriptions Rule.

@c
[ PREFER_SOMETIMES_ABBREVIATED_R;
	if (actor ~= player) rfalse;
	lookmode=1;
]; ! Brief

@p Standard Report Prefer Sometimes Abbreviated Room Descriptions Rule.

@c
[ REP_PREFER_SOMETIMES_ABBR_R;
	if (actor ~= player) rfalse;
	print (string) Story; GL__M(##LMode1);
]; ! Brief

@p Prefer Unabbreviated Room Descriptions Rule.

@c
[ PREFER_UNABBREVIATED_R;
	if (actor ~= player) rfalse;
	lookmode=2;
]; ! Verbose

@p Standard Report Prefer Unabbreviated Room Descriptions Rule.

@c
[ REP_PREFER_UNABBREVIATED_R;
	if (actor ~= player) rfalse;
	print (string) Story; GL__M(##LMode2);
]; ! Verbose

@p Prefer Abbreviated Room Descriptions Rule.

@c
[ PREFER_ABBREVIATED_R;
	if (actor ~= player) rfalse;
	lookmode=3;
]; ! Superbrief

@p Standard Report Prefer Abbreviated Room Descriptions Rule.

@c
[ REP_PREFER_ABBREVIATED_R;
	if (actor ~= player) rfalse;
	print (string) Story; GL__M(##LMode3);
]; ! Superbrief

@p Announce Pronoun Meanings Rule.

@c
[ ANNOUNCE_PRONOUN_MEANINGS_R x y c d;
	if (actor ~= player) rfalse;
	GL__M(##Pronouns, 1);

	c = (LanguagePronouns-->0)/3;
	if (player ~= selfobj) c++;

	if (c==0) return GL__M(##Pronouns, 4);

	for (x = 1, d = 0 : x <= LanguagePronouns-->0: x = x+3) {
		print "~", (address) LanguagePronouns-->x, "~ ";
		y = LanguagePronouns-->(x+2);
		if (y == NULL) GL__M(##Pronouns, 3);
		else { GL__M(##Pronouns, 2); print (the) y; }
		d++;
		if (d < c-1) print ", ";
		if (d == c-1) print (string) LISTAND__TX;
	}
	if (player ~= selfobj) {
		print "~", (address) ME1__WD, "~ "; GL__M(##Pronouns, 2);
		c = player; player = selfobj;
		print (the) c; player = c;
	}
	".";
];
