Index / Orange System / last update: May 2002
@dig Starbase Hangman
@set #10447 = jumpok
@set #10447 = linkok
@field #10447 = exit_0 : 10450
@field #10447 = nexits : 1
@field #10447 = varobj : 10451
@zone #10447 = #10719
@desc #10447 = @execute(@getfield("10451","description"))
@open northwest;nw;out;exit = #10325 @field #10450 = exitto : to Grand Gaming Central @odrop #10450 = enters from the southeast. @osucc #10450 = goes northwest. @succe #10450 = You walk northwest... @desc #10450 =
@zone #10451 = #10719
@desc #10451 = @print("The category is '",
@g(@print("cn_",@g(@print("pc_",@g("thepuznum"))))), "':%c");
@strloop(@g(@print("pp_",@g("thepuznum"))),"x", @switch("%x",
{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O",
"P","Q","R","S","T","U","V","W","X","Y","Z"}, @g("val_%x"), "%x"));
@print("%cLetters guessed:");
@fieldloop("10451","val_", @switch("%v", "~", "", " %v"));
@switch(@g("numwrong"), "0", "", @print("; #Wrong: ", @g("numwrong")));
@print(".");
@field #10451 = cn_0 : Proverb
@field #10451 = cn_1 : It Came From the Recipe Box
@field #10451 = cn_2 : Book Title
@field #10451 = cn_3 : Stageplay
@field #10451 = cn_4 : Television Program
@field #10451 = cn_5 : Movie Title
@fail #10451 = No. The game stays here.
@field #10451 = gamestatus : won
@lock #10451 = #8796
@field #10451 = ncats : 6
@field #10451 = numwrong : 0
@field #10451 = npuzzles : 734
@field #10451 = noccur : 0
@field #10451 = nmissed : 0
// 734 puzzle-category fields (so far)
@field #10451 = pc_0 : 0
@field #10451 = pc_1 : 0
...etc...
// 734 puzzle-phrase fields (so far)
@field #10451 = pp_0 : A GOOD MAN IS HARD TO FIND
@field #10451 = pp_1 : WASTE NOT, WANT NOT
...etc...
@field #10451 = progcat : 5
@field #10451 = ptot_0 : 109
@field #10451 = ptot_1 : 47
@field #10451 = ptot_2 : 65
@field #10451 = ptot_3 : 38
@field #10451 = ptot_4 : 202
@field #10451 = ptot_5 : 273
@field #10451 = thenumpuz : 0
@field #10451 = thepuznum : 90
@field #10451 = val_a : ~
@field #10451 = val_b : ~
@field #10451 = val_c : ~
@field #10451 = val_d : ~
@field #10451 = val_e : ~
@field #10451 = val_f : ~
@field #10451 = val_g : ~
@field #10451 = val_h : ~
@field #10451 = val_i : ~
@field #10451 = val_j : ~
@field #10451 = val_k : ~
@field #10451 = val_l : ~
@field #10451 = val_m : ~
@field #10451 = val_n : ~
@field #10451 = val_o : ~
@field #10451 = val_p : ~
@field #10451 = val_q : ~
@field #10451 = val_r : ~
@field #10451 = val_s : ~
@field #10451 = val_t : ~
@field #10451 = val_u : ~
@field #10451 = val_v : ~
@field #10451 = val_w : ~
@field #10451 = val_x : ~
@field #10451 = val_y : ~
@field #10451 = val_z : ~
@action new game;new;restart;restart game = puzzle : nowhere
@field #10455 = varobj : 10451
@succe #10455 = @s("numwrong","0"); @s("gamestatus","alive");
@fieldloop("10451","val_",@s("%f","~"));
@s("thepuznum",@rand(@g("npuzzles"))); @print("New game!%c");
@execute(@g("description"));
@desc #10455 = Starts a new game with a new phrase.
@action guess *;try * = puzzle : nowhere
@set #10456 = puzzle
@field #10456 = varobj : 10451
@succe #10456 = @s("noccur","0");
@strloop(@g(@print("pp_",@g("thepuznum"))),"x",
@switch(@eq("%x",@uc("%0")), "1", @s("noccur",@add(@g("noccur"),"1")), ""));
@switch( @eq(@g("val_%0"),@uc("%0")), "1", @s("noccur","-1"), "");
@switch(@g("gamestatus"),
"dead", "Sorry, this game is over. You were hanged. Start a new game.",
"won", "The game is already over. You won. Start a new game.",
"revealed", "Sorry, this game is over. Start a new game.",
"alive", @switch("%0",{"a","b","c","d","e","f","g","h","i","j","k","l",
"m","n","o","p","q","r","s","t","u","v","w","x","y","z"},
@switch(@g("noccur"), "-1", @print("You've already guessed ",
@uc("%0"), ". Guess another letter."),
"0", @print( @s("val_%0",@uc("%0")),
@s("numwrong",@add(@g("numwrong"),"1")),
"No, sorry. There are no ", @uc("%0"), "s.%c",
@execute(@g("description")) ),
"1", @print( @s("val_%0",@uc("%0")),
"Yes. There is one ", @uc("%0"), ".%c",
@execute(@g("description")) ),
@print( @s("val_%0",@uc("%0")),
"Yes. There are ", @g("noccur"), " ", @uc("%0"), "s.%c",
@execute(@g("description")) )),
"Please guess a letter from A to Z.") );
@s("nmissed","0");
@strloop(@g(@print("pp_",@g("thepuznum"))),"x",
@s("nmissed",@add(@g("nmissed"),@eq(@g("val_%x"),"~"))));
@switch(@and(@eq(@g("gamestatus"),"alive"),@eq(@g("nmissed"),"0")),
"1", @print(@s("gamestatus","won"),
" Hey! That's it!%c *** You have won ***"), "");
@switch(@and(@eq(@g("gamestatus"),"alive"),@gt(@g("numwrong"),"5")),"1",
@print(@s("gamestatus","dead"),
" Oops. You've hung yourself.%c *** You have died ***%cThe answer was: ",
@g(@print("pp_",@g("thepuznum")))),"");
@desc #10456 = Guess a letter that you think is in the phrase,
eg: "guess e".
@action end game;reveal answer;reveal;give up;show answer;reveal phrase;
show phrase = puzzle : nowhere
@field #10457 = varobj : 10451
@succe #10457 = @strloop("ABCDEFGHIJKLMNOPQRSTUVWXYZ","x",
@s("val_%x","%x")); @print("Giving up? Oh, okay. **GAME OVER**
%cThe answer is:%c", @g(@print("pp_",@g("thepuznum"))));
@s("gamestatus","revealed");
@desc #10457 = Reveals the phrase and ends the current game.
@action categories;listcat;lc;lstcat = puzzle : nowhere
@field #10460 = varobj : 10451
@succe #10460 = @print("Categories:");
@fieldloop("10451","cn_",@let("z"=>@substr("%f",3),@print(
"%c%z: %v (", @g("ptot_%z"),
" puzzles)"
)));
@desc #10460 = List the puzzle categories.
@action addcat * = puzzle : nowhere
@set #10458 = puzzle
@set #10458 = dark
@field #10458 = varobj : 10451
@succe #10458 = @s(@print("cn_",@g("ncats")),"%4");
@s(@print("ptot_",@g("ncats")),0);
@print("'%4' is now category #", @g("ncats"));
@s("progcat", @g("ncats")); @s("ncats", @add(@g("ncats"),"1"));
@desc #10458 = Add a puzzle category by name, eg: "addcat Proverb".
@action setcat * = puzzle : nowhere
@set #10459 = puzzle
@set #10459 = dark
@field #10459 = varobj : 10451
@succe #10459 = @s("progcat", "%0"); @print("The program category is now
#%0: ", @g("cn_%0"), ".");
@desc #10459 = Set the puzzle category number, eg: "setcat 3". Do this
before addpuz actions.
@action addpuz * = puzzle : nowhere
@set #10461 = puzzle
@set #10461 = dark
@field #10461 = varobj : 10451
@succe #10461 = @s(@print("pp_",@g("npuzzles")),"%4");
@s(@print("pc_",@g("npuzzles")),@g("progcat"));
@print("'%4' is now puzzle #", @g("npuzzles"));
@s("npuzzles", @add(@g("npuzzles"),"1"));
@s(@print("ptot_",@g("progcat")), @add(@g(@print("ptot_",@g("progcat"))),1));
@desc #10461 = Add a new puzzle phrase in the current program category.
@create instructions;sign;rules
@lock #10454 = #-1
@zone #10454 = #10719
@fail #10454 = @tell("%#","The instructions stay here, please and
thank you."); @call(10633,"each_turn");
@desc #10454 = @tell("%#","This is the classic game of Hangman. Guess
the hidden phrase, letter by letter. If you make six wrong guesses,
you lose the game.
%cType \"new\" to start a new game.
%cType \"guess *\" to guess a letter, eg: \"guess e\".
%cType \"reveal\" to reveal the solution and end the current game.
%cType \"categories\" to list all the puzzle categories.");
@call(10633,"each_turn");