Index / Orange System / last update: January 2002

Orange System | Starbase Trek

(GameBot is dbref #2117; last content update: July 5, 2001)
Currently coding the 50 adventure cards, ugh. This'll take some time.


The Basics of GameBot

"This game was loosely based around Trelaine, Squire of Gothos, who splits the Enterprise and its crew into four identical copies. I think that's how many copies we sold too..."

-- Peter Corless, playtester
http://www.employees.org/~pcorless/author.html

@create gamebot;bot;robot;game;gameboard;board;gb
@desc #2117 = @switch(@g("gstate"),
  {0,1},"A friendly gamebot stands ready to host a game of Star Trek: 
    The Enterprise^4 Encounter.",
  @print("An electronic table and gameboard, with a game of Star Trek: The
    Enterprise^4 Encounter already in progress.", @call(2117,"showboard")));
@field #2117 = varobj : 2117
@lock #2117 = #8796&!#8796
@link #2117 = #10322   // Starbase Trek
@set #2117 = expert

// The board layout looks like this:
// ------------------------------------------
//               BLUE(   )BASE
//                     |
//      1(   )-(  .)-(   )-(   )-(  ,)5
//     20(  ,)    2    3    4    (   )6
// YLLW  (   )19                7(  .)  RED
// (   )-(   )18                8(   )-(   )
// BASE  (  .)17                9(   )  BASE
//     16(   )   14   13    12   (  ,)10
//     15(  ,)-(   )-(   )-(  .)-(   )11
//                     |
//              GREEN(   )BASE
// ------------------------------------------
// BRGY=players  +=crew  .=tz  ,=tz&ezb
// When adv on space, advcode replaces space#,
// and space uses []s, not ()s.
// ------------------------------------------
//
// Notes:
// - use 1st position for + (crew) or blank (no crew)
// - use 2nd position for BRGY (1-player) or blank (no player)
// - use 3rd position for .(tz) or ,(tz&ezb) or blank (normal)
// - if 2,3,4 players in one space, use 2,3,4 literally.
// - eg using list below:
//    1(+  )-[+R.]-(   )-[   ]-( Y,)5
//            LZ     3    SGn
//
// Alternatively, might want to give option of a report like this:
// 1: 1 crew
// 2: [LZ], 2 crew, RED // tz
// 3: empty
// 4: [SGn]
// 5: YELLOW // tz, ebz
// ...

// SHOWBOARD
// - makes heavy use of fld sbnum and fns sbcod, sbspa
@field #2117 = showboard : @print(
  // line 1
  "%c------------------------------------------",
  // line 2
  "%c              BLUE( ",
  @switch(@g("ship1_loc"),41,"B"," "), " )BASE",
  // line 3
  "%c                    |",
  // line 4
  "%c   ", @s("sbnum",1), @call(2117,"sbcod"), @call(2117,"sbspa"),
  "-", @s("sbnum",2), @call(2117,"sbspa"),
  "-", @s("sbnum",3), @call(2117,"sbspa"),
  "-", @s("sbnum",4), @call(2117,"sbspa"),
  "-", @s("sbnum",5), @call(2117,"sbspa"), @call(2117,"sbcod"),
  // line 5
  "%c   ", @s("sbnum",20), @call(2117,"sbcod"), @call(2117,"sbspa"),
  "  ", @s("sbnum",2), @call(2117,"sbcod"),
  "   ", @s("sbnum",3), @call(2117,"sbcod"),
  "   ", @s("sbnum",4), @call(2117,"sbcod"),
  "  ", @s("sbnum",6), @call(2117,"sbspa"), @call(2117,"sbcod"),
  // line 6
  "%cYLLW  ", @s("sbnum",19), @call(2117,"sbspa"), @call(2117,"sbcod"),
  "             ",
  @s("sbnum",7), @call(2117,"sbcod"), @call(2117,"sbspa"), "  RED",
  // line 7
  "%c( ", @switch(@g("ship4_loc"),"44","Y"," "),
  " )-", @s("sbnum",18), @call(2117,"sbspa"), @call(2117,"sbcod"),
  "             ",
  @s("sbnum",8), @call(2117,"sbcod"), @call(2117,"sbspa"), "-( ",
  @switch(@g("ship2_loc"),"42","R"," "), " )",
  // line 8
  "%cBASE  ", @s("sbnum",17), @call(2117,"sbspa"), @call(2117,"sbcod"),
  "             ",
  @s("sbnum",9), @call(2117,"sbcod"), @call(2117,"sbspa"), "  BASE",
  // line 9
  "%c   ", @s("sbnum",16), @call(2117,"sbcod"), @call(2117,"sbspa"),
  "  ", @s("sbnum",14), @call(2117,"sbcod"),
  "   ", @s("sbnum",13), @call(2117,"sbcod"),
  "   ", @s("sbnum",12), @call(2117,"sbcod"),
  "  ", @s("sbnum",10), @call(2117,"sbspa"), @call(2117,"sbcod"),
  // line 10
  "%c   ", @s("sbnum",15), @call(2117,"sbcod"), @call(2117,"sbspa"),
  "-", @s("sbnum",14), @call(2117,"sbspa"),
  "-", @s("sbnum",13), @call(2117,"sbspa"),
  "-", @s("sbnum",12), @call(2117,"sbspa"),
  "-", @s("sbnum",11), @call(2117,"sbspa"), @call(2117,"sbcod"),
  // line 11
  "%c                    |",
  // line 12
  "%c             GREEN( ",
  @switch(@g("ship3_loc"),"43","G"," "), " )BASE",
  // line 13
  "%c------------------------------------------");

// SBCOD, Show Board CODe
// This is either the adventure space's #sbnum's number, or the abbrev.
// of the adventure card in that space. Must print 3 chars exactly.
// ------------------------------------------------------------------
@field #2117 = sbcod :
  @s("sbcod_done",0);
  // Search adventure cards to see if one is on the space.
  // Only one card can be there at a time.
  @fieldloop(2117,"acloc_",@switch("%v",@g("sbnum"),
    @let("k"=>@substr("%f",6),@switch("%v",
      // right-justify the code
      {1,2,3,7,8,9,14,15,16,20},
        @print( @s("sbcod_done",1),
          @substr(@print(" ",@g("accod_%k")),-3)
        ),
      // left-justify the code
      // {4,5,6,10,11,12,13,17,18,19},
        @print( @s("sbcod_done",1),
          @substr(@print(@g("accod_%k")," "),0,3)
        )
    ))
  ));
  // if no adventure card found, just show the space#.
  @switch(@g("sbcod_done"),0, @switch(@g("sbnum"),
     1, "  1",  2, "  2",  3, " 3 ",  4, "4  ",  5, "5  ",
     6, "6  ",  7, "  7",  8, "  8",  9, "  9", 10, "10 ",
    11, "11 ", 12, "12 ", 13, "13 ", 14, " 14", 15, " 15",
    16, " 16", 17, "17 ", 18, "18 ", 19, "19 ", 20, " 20"
  ));
----
TEST
@field #2117 = sbcod : @s("sbcod_done",0); @fieldloop(2117,"acloc_",@switch("%v",@g("sbnum"), @let("k"=>@substr("%f",6),@switch("%v",{1,2,3,7,8,9,14,15,16,20}, @print( @s("sbcod_done",1), @substr(@print(" ",@g("accod_%k")),-3)), @print( @s("sbcod_done",1), @substr(@print(@g("accod_%k")," "),0,3)))))); @switch(@g("sbcod_done"),0, @switch(@g("sbnum"), 1, "  1",  2, "  2",  3, " 3 ",  4, "4  ",  5, "5  ", 6, "6  ",  7, "  7",  8, "  8",  9, "  9", 10, "10 ", 11, "11 ", 12, "12 ", 13, "13 ", 14, " 14", 15, " 15", 16, " 16", 17, "17 ", 18, "18 ", 19, "19 ", 20, " 20"));
====

// SBSPA, Show Board SPAce
// Show adventure space #sbnum, represented in exactly 5 chars.
// ------------------------------------------------------------
@field #2117 = sbspa :
  // 1st, find out if an advcard here. Remember it in sbspa_1, sbspa_5.
  @s("sbspa_1","("); @s("sbspa_5",")");
  @switch(@g(@print("nac_",@g("sbnum"))),1, @print(
    @s("sbspa_1","["), @s("sbspa_5","]")
  ));
  // 2nd, find out if any crew here. Remember it in sbspa_2.
  @s("sbspa_2"," ");
  @fieldloop(2117,"ccloc_",@switch("%v",@g("sbnum"),@s("sbspa_2","+")));
  // 3rd, find out if any players here. Remember it in sbspa_3.
  @s("sbspa_3","");
  @switch(@g("ship1_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"B")));
  @switch(@g("ship2_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"R")));
  @switch(@g("ship3_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"G")));
  @switch(@g("ship4_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"Y")));
  @switch(@strlen(@g("sbspa_3")),
    0, @s("sbspa_3"," "), 2, @s("sbspa_3","2"),
    3, @s("sbspa_3"," "), 4, @s("sbspa_4","4"));
  // 4th, find out if tractor or exit battle zone here. Note in sbspa_4.
  @s("sbspa_4",@switch(@g("sbnum"),
    {2,7,12,17}, ".", {5,10,15,20}, ",", " "));
  // 5th, put it all together.
  @print(@g("sbspa_1"), @g("sbspa_2"), @g("sbspa_3"),
    @g("sbspa_4"), @g("sbspa_5"));
--------
@field #2117 = sbspa : @s("sbspa_1","("); @s("sbspa_5",")"); @switch(@g(@print("nac_",@g("sbnum"))),1, @print(@s("sbspa_1","["), @s("sbspa_5","]"))); @s("sbspa_2"," "); @fieldloop(2117,"ccloc_",@switch("%v",@g("sbnum"),@s("sbspa_2","+"))); @s("sbspa_3",""); @switch(@g("ship1_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"B"))); @switch(@g("ship2_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"R"))); @switch(@g("ship3_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"G"))); @switch(@g("ship4_loc"),@g("sbnum"),@s("sbspa_3",@print(@g("sbspa_3"),"Y"))); @switch(@strlen(@g("sbspa_3")), 0, @s("sbspa_3"," "), 2, @s("sbspa_3","2"), 3, @s("sbspa_3"," "), 4, @s("sbspa_4","4")); @s("sbspa_4",@switch(@g("sbnum"), {2,7,12,17}, ".", {5,10,15,20}, ",", " ")); @print(@g("sbspa_1"), @g("sbspa_2"), @g("sbspa_3"), @g("sbspa_4"), @g("sbspa_5"));
========

Terminology changes:

  1. Corrected the spelling of "Cochrane" (was "Conchrane", ick).
  2. Changed the Medicine specialty to "Medical".
  3. Now refer to named crew as "officers". Cadets are crew, just unnamed.
  4. Refer to the two-part bad adventure cards as DANGER/PROTECT.
  5. Refer to the two-part good adventure cards as WARP/IMPULSE.
  6. Reword rules so references to "any adventure" is now "any adventure space". Otherwise one might think there has to be an adventure card there.
  7. Reword rules so references to "specific card" is now "specific cardtype" or "specific type of card". Otherwise one might think one has to refer to "Phaser 1 Sulu" instead of just "Phaser 1".

lookup * (#2119)

@action lookup *;look up *;lu *;ask gamebot about *;ask about *;
 ask bot about *;ask board about *;ask gameboard about *;
 ask gb about * = bot : nowhere
@field #2119 = varobj : 2117
@set #2119 = puzzle
@desc #2119 = Lookup the rules of the game by asking GameBot about
 different topics, eg: 'lookup game' or 'ask gamebot about phaser 1'.
 GameBot knows many synonyms and abbreviations, eg: 'lu' is short for
 'lookup', and 'p1' is short for 'phaser 1'. So 'lu p1' is the same
 as 'ask gamebot about phaser 1'.
@succ #2119 = 
 // 1) Convert spaces in %0 to underscores, store result in field x0.
 //    This converts the phrase to lookup into a single word.
 @s("x0","lu_");
 @strloop("%0","x",@switch("%x"," ",
   @s("x0",@print(@g("x0"),"_")),@s("x0",@print(@g("x0"),"%x"))
 ));
 // 2) If topicvalue found begins with "lu_", set that as new topic.
 //    This lets me have synonyms for topics.
 @switch(@substr(@g(@g("x0")),0,3), "lu_", @s("x0",@g(@g("x0"))));
 // 3) Reply to the player with value of topic x0.
 @print("GameBot whispers (to you), \"", @strcheck(@execute(@g(@g("x0"))),
   "Sorry, I don't know the term '%4'."), "\"");

Lookup Topics

@field #2117 = lu_overview :
 New players should ask me about: intro, components, setup, turn, winning.
@field #2117 = lu_rules : lu_overview
@field #2117 = lu_ : lu_overview
@field #2117 = lu_game : lu_overview

@field #2117 = lu_adventure_space : lu_adventure
@field #2117 = lu_adventure : When you land on an Adventure Space,
 if there is already an Adventure Card there, then you will play that
 adventure. If the space is empty, you will play the next adventure
 from the Adventure Card deck. GameBoard will prompt you what your
 choices are, as appropriate. The Adventure Card will stay
 in the space after your adventure ends.

@field #2117 = lu_adventure_cards : lu_adventure-cards
@field #2117 = lu_adventure_card : lu_adventure-cards
@field #2117 = lu_adventure-card : lu_adventure-cards
@field #2117 = lu_adventure-cards : There are 50 Adventure Cards, each
 named after a different episode in STAR TREK. To lookup a specific
 Adventure Card, refer to it by its standard abbreviation (as per the
 Star Trek Concordance), eg: "lookup MW" to lookup Mudd's Women.

@field #2117 = lu_ae : ----Assignment: Earth [AE] / Gary Seven----
 %cWARP with SCIENCE:  You may take one marooned crewman from any space
 on the board.%cIMPULSE:  You may look at any one marooned crewman and
 move it to any adventure space.%c(Clarification: If you have SCIENCE, you
 may take a marooned crewman without looking at any of them. If you don't
 have SCIENCE, look at one crewman without taking any. If there aren't
 any marooned crewmen left, this adventure has no effect.)

@field #2117 = lu_aon : ----By Any Other Name [AON] / Hyperwarp----
 %cWARP with NAVIGATION:  Immediately move from one to six spaces (your
 choice) and have that adventure.%cIMPULSE:  Roll again and move BACKWARD.
 Have that adventure.

@field #2117 = lu_ar : ----Arena [Ar] / Photon Grenades----
 %cEnergize! Draw ONE Battle-card.

@field #2117 = lu_at : ----Amok Time [AT] / Pon Farr----
 %cRoll the die and move. If you do not pass a Base World, maroon a 
 crewman of your choice in the adventure you end on.%c(Clarification: If 
 you have this adventure right in front of a Base World, you must pass the 
 *next* Base World. 'Pass' means actually move past, not stop on.)

@field #2117 = lu_ay : ----All Our Yesterdays [AY] / Mr. Atoz----
 %cReplace any other adventure (or an empty space) with this one and bring
 in a new adventure here.%c(Clarification: Pick up the card and place it 
 in any other space. If the space already has a card, put that card in the
 adventure discard deck. Any ships that are already there simply ignore
 this adventure. Now draw a new adventure for this space.)

@field #2117 = lu_barrows : [1] Barrows is a Science officer.
 %c[2] Phaser 1 Barrows (Battle-card): If you have BARROWS, you may fight 
 this battle for 2 crew calls (or 2 picks in the Mind Meld). Play this 
 before the first Battle turn.

@field #2117 = lu_home : lu_base
@field #2117 = lu_home_base : lu_base
@field #2117 = lu_base_world : lu_base
@field #2117 = lu_base-world : lu_base
@field #2117 = lu_base : Each player has their own Base World; their ships
 begin the game there. Your ship won't return home until you announce that
 you have officers in all six specialties. At that time, you move your
 ship back to your Base World immediately, and "lock in" one of your crew
 (lookup lock). Each player will then have one last turn to try to keep
 you from winning (lookup last-ditch battle).

@field #2117 = lu_battles : lu_battle
@field #2117 = lu_battle : You may start a battle only in your turn, and 
 only once per turn. Battles can be started in two ways: 1) An Adventure 
 card may allow or force you to start a battle, 2) You may challenge 
 another player to battle if your ship ends its move in a Tractor Zone.
 %c   At the start of a battle, both players fill up their hands upto 2 
 Battle-cards, put their ships on the '6' spaces on either end of the 
 Battle Vortex, then take Battle-turns until the battle is over, starting
 with the player who started the battle (unless otherwise directed).
 %c   The winner of a battle gets a chance to take a crewmember from 
 his opponent's rack. (also lookup vortex, battle-card, battle-turn, hit, 
 mind meld)

@field #2117 = lu_battle_cards : lu_battle-cards
@field #2117 = lu_battle_card : lu_battle-cards
@field #2117 = lu_battle-card : lu_battle-cards
@field #2117 = lu_battle-cards : 1) When you begin a Battle, both you 
 and your opponent must have at least 2 Battle Cards. Draw cards until you
 have at least two. You may not draw additional cards during the Battle.
 %c2) You may never have more than 7 Battle Cards. If you ever have more 
 than seven, you must immediately discard the excess (you choose which).
 %c2) Battle Cards are discarded after they are played.
 %c3) Each Battle Card has a specific effect. Lookup the following
 card types: PHASER 1, PHASER 2, PHASER 3, PHOTON TORPEDO, SHIELD,
 SHIELD 2, WARP 2, COCHRANE ACCELERATION, TRACTOR, MATTER-ANTIMATTER
 LOOP, ESCAPE!
 %c4) Battle Cards with officer names on them are Special Battle Cards, 
 eg: PHASER 1 SULU (lookup special).

@field #2117 = lu_battle_turn : lu_battle-turn
@field #2117 = lu_battle-turn : In your Battle Turn, you may either play
 one Battle Card or move your ship one space forward on the Vortex towards
 the Mind Meld. Players alternate Battle Turns until one scores an
 "unshielded hit," or until one ship reaches the Mind Meld.

@field #2117 = lu_board : The board has shows a circular track of 20
 Adventure spaces, with one of the 4 Base Worlds branching out from the
 track at every fifth Adventure space. Some Adventure Spaces are labelled 
 as a Tractor Zone. Four of the Tractor Zones are also labelled as an Exit 
 Battle Zone.
 %c   In the center of the board is the Battle Vortex, and at its center
 is the Mind Meld space.

@field #2117 = lu_bt : ----Balance of Terror [BT] / Cloaking Device ----
 %cWARP with COMMAND:  Bring another ship into battle, you on '4', he on 
 '6'. He moves first.%cIMPULSE:  Draw ONE Battle Card and start a battle.

@field #2117 = lu_cadets : lu_cadet
@field #2117 = lu_cadet : Things to know about cadets:
 %c- Cadet specialties may never be used in adventures or towards winning 
 the game (exception: lookup kirk).
 %c- If you make a "crew call" for a specialty, your opponent can give you
 the Cadet with that specialty instead of an officer. In fact, if that is 
 the only crew your opponent has with the specialty you named, he must
 give you the Cadet.

@field #2117 = lu_crew_call : lu_call
@field #2117 = lu_call : You can make a "crew call" against another player if
 you win a Battle by scoring an "unshielded hit". Call for a specific 
 officer (eg: "call McCoy"), or for a specific specialty (eg: "call 
 science"). If your opponent has the named officer or specialty on his 
 rack, not counting locked in crew, he must give it to you. If he doesn't 
 have it, you get nothing. If he has it, but it's locked, you make another
 call.
 %c   If you ask for a specialty, and he has the Cadet in that specialty, 
 he can give you the Cadet instead of an officer. If you ask for a 
 specialty, and he doesn't have a crewmember with that specialty but does 
 have Starfleet, he must give you Starfleet (since Starfleet counts as all
 specialties).
 %c   BONUS: If you ask for an officer or Starfleet by name, and get it, 
 you also get one Battle-card from the deck.

@field #2117 = lu_card : lu_cards
@field #2117 = lu_deck : lu_cards
@field #2117 = lu_decks : lu_cards
@field #2117 = lu_cards : There are two decks of cards in this game:
 Adventure Cards and Battle Cards.

@field #2117 = lu_chapel : [1] Chapel is a Medical officer.
 %c[2] Phaser 1 Chapel (Battle Card): If you have CHAPEL, you may replace 
 the adventure you have just landed on with one from the deck.

@field #2117 = lu_chekov : [1] Chekov is a Navigation officer.
 %c[2] Phaser 1 Chekov (Battle Card): If you have CHEKOV, you may use this
 as a WARP 2.

@field #2117 = lu_ck : ----The Conscience of the King [CK] / 
 Kodos/Karidian----
 %cDANGER:  Maroon one crewman of your choice on an adventure space
 chosen by "Least Crew" player.
 %cPROTECT:  KIRK, RAND, or RILEY
 %c(Clarification: If the crewman is marooned on an occupied adventure, he
 may NOT be picked up until someone actually moves INTO the space.)

@field #2117 = lu_cml : ----Court Martial [CMl] / Areel Shaw----
 %cDANGER:  Immediately take another move - none of your crew or 
 specialties may be used for the new adventure.
 %cPROTECT:  SPOCK, SCOTT, or UHURA
 %c(Clarification: This means that you cannot be protected from, or 
 receive the full benefit of, the adventure which the extra move brings
 you to, regardless of what crewmembers you have.)

@field #2117 = lu_cmn : ----The Corbomite Maneuver [CMn] / Balok----
 %cDANGER:  Enter Battle, you on '6', your opponent on '4'. You move first.
 %cPROTECT:  KYLE, PALAMAS, or BARROWS

@field #2117 = lu_cms : ----The Cloud-minders [Cms] / Zenite----
 %cEnergize! Draw ONE Battle Card.

@field #2117 = lu_cmnd : lu_command
@field #2117 = lu_command : The Command specialty is represented by Kirk,
 Spock, and Scott. NOTE: You may not make a crew call for the Command
 specialty. Kirk, Spock, or Scott may be called for only by name.

@field #2117 = lu_conchrane : lu_cochrane
@field #2117 = lu_cochrane_acceleration : lu_cochrane
@field #2117 = lu_acceleration : lu_cochrane
@field #2117 = lu_ca : lu_cochrane
@field #2117 = lu_cochrane : COCHRANE ACCELERATION (Battle Card): Same as
 PHASER 1, then move forward one space on the Battle Vortex.

@field #2117 = lu_commun : lu_communication
@field #2117 = lu_communication : The Communication specialty is
 represented by Uhura, Kyle, Rand, and a cadet.

@field #2117 = lu_components : The game components are: a game board,
 24 counters to represent the crew, a deck of Adventure Cards, a deck of
 Battle Cards, plus a ship and a bridge rack for each player.

@field #2117 = lu_cp : ----Catspaw [Cp] / Magic Wand----
 %cFlip over another Adventure. If another player occupies the space, he 
 has the new Adventure but cannot start a battle.

@field #2117 = lu_counters : lu_crew
@field #2117 = lu_counter : lu_crew
@field #2117 = lu_crew : Each of the 24 crew counters bears either a name
 of a specific _Enterprise_ officer, or is an unnamed cadet, or is the
 special Starfleet counter. Also, each of the 24 crew counters has one
 of the six specialties, except for the Starfleet counter, which can be
 ANY specialty. There are three officers and one cadet for every specialty,
 except the Command specialty, for which there are only three officers.
 %c   See also: crew call, locking crew.

@field #2117 = lu_cx : ----Charile X [CX] / Charlie----
 %cWARP with RAND, PALAMAS, or ROMAINE:  Name a cardtype; all players
 must give you any cards of that type that they possess.
 %cIMPULSE:  Receive a card of a specific cardtype from one player.

@field #2117 = lu_dd : ----The Devil in the Dark [DD] / Horta----
 %cWARP with SPOCK, JONES, or LANDON:  Another player must discard three 
 cards at random.%cIMPULSE:  Another player must discard one card of his 
 choice.%c(Clarification: He can simply mix them up and allow you to draw 
 from his hand. The cards go to the discard pile.)

@field #2117 = lu_dma :----The Doomsday Machine [DMa] / Planet-Killer----
 %cDANGER:  Discard all Battle Cards except phasers and shields.
 %cPROTECT:  NAVIGATION%c(Clarification: This means you can keep Phaser
 1s, 2s, and 3s, as well as Shield 1s and Shield 2s.)

@field #2117 = lu_dmd : ----Dagger of the Mind [DMd] / Tantalus----
 %cDANGER:  Reveal one unlocked crewman to all players.
 %cPROTECT:  KIRK, MANNING, or NOEL

@field #2117 = lu_dy : ----The Deadly Years [DY] / Commodore Stocker----
 %cDANGER:  Discard all Phaser 2's and Phaser 3's.
 %cPROTECT:  ROMAINE, NOEL, or CHEKOV

@field #2117 = lu_ei : ----The Enterprise Incident [EI] / Cloaking
 Device----%cWARP with NAVIGATION:  Energize! Draw TWO Battle Cards from
 the deck or other players' hands.%cIMPULSE:  Energize! Draw ONE
 Battle Card.

@field #2117 = lu_em : ----Errand of Mercy [EM] / Organian Peace----
 %cDeal away your hand. Start to your left and deal clockwise. You choose
 which player gets which card.%c(Clarification: Keep dealing one at a time
 to the other players until all your cards are gone. In a two-player game,
 simply give your entire hand to the other player.)

@field #2117 = lu_esc : lu_escape
@field #2117 = lu_escape : ESCAPE! (Battle Card): The Battle ends
 immediately with no winner or loser. Opponent exits first, then you exit
 to the Exit Battle Zone of your choice. No crew calls are made.

@field #2117 = lu_et : ----Elaan of Troyius [ET] / Radians----
 %cEnergize! Draw ONE Battle Card.

@field #2117 = lu_ew : ----The Enemy Within [EW] / Transporter 
 Malfunction----%cIf you have more than one crewman with COMMAND (NOT 
 Starfleet), you must give one to the player with "Least Crew."

@field #2117 = lu_exchanging : lu_exchange
@field #2117 = lu_exchange : If you end your move on a space containing
 another player's ship, you must exchange your hands of Battle Cards. If
 three or more players co-occupy a space, hands are exchanged clockwise.
 GameBoard will do this for players automatically.

@field #2117 = lu_exit_battle_zone : lu_ebz
@field #2117 = lu_exit_zone : lu_ebz
@field #2117 = lu_exit : lu_ebz
@field #2117 = lu_ebz : After a Battle, both ships exit the Vortex onto any
 Exit Battle Zone space that does not contain a ship. The winner exits 
 first. If the Exit Battle Zone has any marooned crew, you may rescue one.
 If the Exit Battle Zone has an adventure card there, you play that 
 adventure unless it instructs you to start another battle.

@field #2117 = lu_fc : ----Friday's Child [FC] / Topaline----
 %cWARP with COMMUNICATION:  Energize! Draw TWO Battle Cards from the deck
 or other players' hands.%cIMPULSE:  Energize! Draw ONE Battle Card.

@field #2117 = lu_fw : ----For the World is Hollow and I Have Touched
 the Sky [FW] / Oracle----%cWARP with MANNING, McCOY, or CHAPEL:  Energize!
 Draw until you have SEVEN cards.%cIMPULSE:  Discard two cards and draw
 two new ones.%c(Clarification: You may choose which two to discard. If
 you have less than two, discard one (or none, if you have none) and draw
 two cards.)

@field #2117 = lu_gt : ----The Gamesters of Triskelion [GT] / 
 Triskelion----%cWARP with COMMUNICATION:  Look at another player's hand 
 and trade as many cards with him as you wish.%cIMPULSE:  Trade hands with 
 the player of your choice.%c(Example: You look at RED's hand. He has three
 Phaser 1s and a Phaser 3, plus a Shield. You have a Phaser 1. You can 
 trade your Phaser 1 for any one of his cards. If you had two cards, you 
 could trade each of them for one of his cards.)

@field #2117 = lu_unshielded_hit : lu_hit
@field #2117 = lu_hit : During a Battle, you can fire phasers and photon 
 torpedoes at your opponent using the appropriate battle cards, and score 
 a hit on your opponent. Your opponent may block the attack with a Shield 
 card; otherwise the hit is an "unshielded hit" and you win the battle and 
 may make a "crew call" against him.

@field #2117 = lu_introduction : lu_intro
@field #2117 = lu_intro : Captain Kirk and the crew of the Enterprise 
 are sent on a mission to re-establish contact with Trelane, the Squire of 
 Gothos (whom they first met in the STAR TREK episode _The Squire of 
 Gothos_). Trelane captures them and forces them to play a diabolical game.
 %c   Trelane creates four Enterprises and places a few crewmembers on 
 each one, marooning the rest of the crew on worlds from their past. 
 Trelane also disrupts each Enterprise's sensors, so that to each vessel,
 the other three ships appear to be Klingon battle cruisers. Trelane hopes
 the Enterprises will destroy each other while attempting to rescue the
 marooned crew.%c   In THE ENTERPRISE^4 ENCOUNTER, from two to four players
 assume command of an Enterprise and try to assemble a full crew by
 rescuing them from adventures, and by taking them from other players. The 
 first player to do so wins the game.

@field #2117 = lu_jones : [1] Jones is a Security officer.
 %c[2] Phaser 1 Jones (Battle Card): If you have JONES, you may lock in
 one of your crew during your move (may not be used to lock in JONES.)

@field #2117 = lu_kirk : [1] Kirk is a Command officer.
 %c[2] Phaser 1 Kirk (Battle Card): If you have KIRK, you may play this
 and make one Cadet's specialty count for a single adventure, or one try
 at victory.

@field #2117 = lu_kyle : [1] Kyle is a Communications officer.
 %c[2] Photon Torpedo Kyle (Battle Card): If you have KYLE, you may pick
 up one marooned crewmember.

@field #2117 = lu_landon : [1] Landon is a Security officer.
 %c[2] Phaser 1 Landon (Battle Card): If you have LANDON, you may look at
 another player's hand.

@field #2117 = lu_last-ditch_battle : lu_last-ditch
@field #2117 = lu_last-ditch : Once you have locked in a crewmember and
 moved to your Base World, each other player takes one last turn. He may
 either make a normal move, or he may call a "last-ditch battle" against
 you.
 %c   Last-ditch battle is fought in the same way as regular battle, your
 challenger moving first, and fought for the regular stakes.
 %c   If you have three or more crewmembers locked in, anyone who loses a
 last-ditch battle against you is out of the game.
 %c   If you win the battle, you make a crew call/Mind Meld as normal;
 then return to your Base World and place the loser on an empty Exit
 Battle Zone.
 %c   If you lose the battle but still have all six specialties, the winner
 exits to the Exit Battle Zone of his choice and you return to your Base 
 World.
 %c   If you lose a battle and no longer have all six specialties, you 
 exit the Battle Vortex as from a normal battle and play continues.
 %c   If you survive every other player's turn with all six specialties
 intact, you win the game!
---
@field #2117 = lu_last-ditch : Once you have locked in a crewmember and moved to your Base World, each other player takes one last turn. He may either make a normal move, or he may call a "last-ditch battle" against you.%c   Last-ditch battle is fought in the same way as regular battle, your challenger moving first, and fought for the regular stakes.%c   If you have three or more crewmembers locked in, anyone who loses a last-ditch battle against you is out of the game.%c   If you win the battle, you make a crew call/Mind Meld as normal; then return to your Base World and place the loser on an empty Exit Battle Zone.%c   If you lose the battle but still have all six specialties, the winner exits to the Exit Battle Zone of his choice and you return to your Base World.%c   If you lose a battle and no longer have all six specialties, you exit the Battle Vortex as from a normal battle and play continues.%c   If you survive every other player's turn with all six specialties intact, you win the game!
===

@field #2117 = lu_least : lu_least_crew
@field #2117 = lu_least_crew: This is the player with the least crew, not
 counting the player having the adventure. If there is a tie, the player
 having the adventure chooses between the tied players.
 %c   In a two-player game, cards referring to "least crew" now refer to
 the opposing player.

@field #2117 = lu_lock_in : lu_lock
@field #2117 = lu_locking_crew : lu_lock
@field #2117 = lu_locked_crew : lu_lock
@field #2117 = lu_locked : lu_lock
@field #2117 = lu_locking : lu_lock
@field #2117 = lu_lock : When you announce that you have all 6 specialties,
 you may lock in one crewmember. The crewmember's name is announced to
 all players. Locked crew may be used in adventures, but can't be taken
 from you in any way except via the special effect of the Phaser 1 Manning
 Battle Card. If a player makes a "crew call" for a locked-in officer or
 for a specialty that only your locked-in crew has, tell him so, and he
 gets to make a crew call for someone/something else.%c   You can lock an
 additional crewmember if you lose your 6th specialty and then regain it.
 If you have all 6 specialties locked in, you win the game immediately.
 %c   If all three members of a specialty and Starfleet are locked in,
 players without that specialty are "out of the game".

@field #2117 = lu_matter_antimatter_loop : lu_loop
@field #2117 = lu_matter-antimatter_loop : lu_loop
@field #2117 = lu_matter_antimatter : lu_loop
@field #2117 = lu_matter-antimatter : lu_loop
@field #2117 = lu_matter : lu_loop
@field #2117 = lu_mal : lu_loop
@field #2117 = lu_m-a_loop : lu_loop
@field #2117 = lu_m-a : lu_loop
@field #2117 = lu_loop : MATTER-ANTIMATTER LOOP (Battle Card): Put your
 opponent back on the '6' space of his Battle Vortex.

@field #2117 = lu_lz : ----The Lights of Zetar [LZ] / Zetarians----
 %cWARP with SCOTT, ROMAINE, or BARROWS:  Make a crew call against player
 of your choice; if correct, trade for one of your crewmen.
 %cIMPULSE:  Make a card call; if correct, trade for one of your cards.
 %c(Clarification: You must choose the player whom you wish to make the
 call against BEFORE you make the call. In the trade, you must give a
 crewman for a crewman, a card for a card.)

@field #2117 = lu_manning : [1] Manning is a Security officer.
 %c[2] Phaser 1 Manning (Battle Card): If you have MANNING, you may make a
 crew call or Mind Meld against locked-in crew. (They remain locked-in for
 you.)

@field #2117 = lu_bones : lu_mccoy
@field #2117 = lu_mccoy : [1] McCoy is a Medical officer.
 %c[2] Phaser 1 McCoy (Battle Card): If you have McCOY, you may ask one
 player for SPOCK. If that player has SPOCK (not locked in), he must give
 him to you.

@field #2117 = lu_me : ----The Menagerie [Me] / The Keepers----
 %cDANGER:  Player with "Least Crew" takes one crewman from you at random.
 %cPROTECT:  COMMAND

@field #2117 = lu_medicine : lu_medical
@field #2117 = lu_med : lu_medical
@field #2117 = lu_medical : The Medical specialty is represented by McCoy,
 Chapel, Noel, and a cadet.

@field #2117 = lu_met : ----Metamorphosis [Met] / The Companion----
 %cReverse direction of movement for all ships.%c(Clarification: All 
 players move in a counterclockwise direction (until someone lands on this
 again) but play passes to the left as usual.)

@field #2117 = lu_mind : lu_mind_meld
@field #2117 = lu_meld : lu_mind_meld
@field #2117 = lu_mind-meld : lu_mind_meld
@field #2117 = lu_mindmeld : lu_mind_meld
@field #2117 = lu_mind_meld : If you reach Mind Meld during Battle, the
 battle ends and you win. You may look at your opponent's Bridge rack and
 take the crewmember of your choice.%c   Also, if you name the crew you 
 are taking out loud to all players, you may also take one Battle Card from
 the deck.

@field #2117 = lu_mm : ----Mirror, Mirror [MM] / Dilithium----
 %cWARP with SCIENCE:  Energize! Draw THREE Battle Cards.
 %cIMPULSE:  Energize! Draw TWO Battle Cards.

@field #2117 = lu_most : lu_most_crew
@field #2117 = lu_most_crew: This is the player with the most crew, not 
 counting the player having the adventure. If there is a tie, the player 
 having the adventure chooses between the tied players.%c   In a two-player
 game, cards referring to "most crew" now refer to the opposing player.

@field #2117 = lu_movement : lu_move
@field #2117 = lu_moving : lu_move
@field #2117 = lu_move : At the start of your turn, GameBot will prompt you
 to roll the die for movement. This is mandatory. If your ship lands on
 a space with an Adventure Card, and an adjacent space does not contain an
 Adventure Card, you must move forward or backward to the empty space. This
 is called "exploring new worlds". If both adjacent spaces are empty, 
 GameBoard will prompt you to either "explore forward" or "explore back".

@field #2117 = lu_mt : ----Man Trap [MT] / Salt Monster----
 %cEach player must pass one non-Cadet crewman to the player on his left.
 %c(Clarification: If you have no officers (or all are locked in), you do
 not participate in this adventure.)

@field #2117 = lu_mw : ----Mudd's Women [MW] / Venus Drug----
 %cYou may use one Special card in your hand without having the named
 crewman.%c(Clarification: If none of your special cards are appropriate
 at the moment, this adventure has no effect.

@field #2117 = lu_nav : lu_navigation
@field #2117 = lu_navigation : The Navigation specialty is represented by
 Sulu, Chekov, Riley, and a cadet.

@field #2117 = lu_noel : [1] Noel is a Medical officer.
 %c[2] Phase 3 Noel (Battle Card): If you have NOEL, you may play this as
 another player is about to make a crew call against you. He gets no
 guesses. (Does not affect Mind Meld.)

@field #2117 = lu_nt : ----The Naked Time [NT] / Virus----
 %cDANGER:  Lose three random cards from your hand.
 %cPROTECT:  LANDON, SULU, or RILEY

@field #2117 = lu_oa : ----Operation - Annihilate! [OA] / Parasites----
 %cBring another ship to this world and trade hands. He does NOT have this
 adventure.%c(Clarification: If there are other ships here, they do NOT
 participate in the trade.)

@field #2117 = lu_officers : lu_officer
@field #2117 = lu_officer : In Command: Kirk, Spock, Scott.
 %cIn Communication: Uhura, Kyle, Rand.%cIn Medical: McCoy, Chapel, Noel.
 %cIn Navigation: Sulu, Chekov, Riley.%cIn Science: Barrows, Palamas, 
 Romaine.%cIn Security: Jones, Landon, Manning.%cIn ANY: Starfleet.

@field #2117 = lu_pa : ----A Piece of the Action [PA] / Oxmyx----
 %cEnergize! Draw ONE Battle Card.

@field #2117 = lu_palamas : [1] Palamas is a Science officer.
 %c[2] Phaser 1 Palamas (Battle Card): If you have PALAMAS, you may play
 this on a player calling battle. You select the opponent (this card may
 not be used for last-ditch battle).)

@field #2117 = lu_phaser : Phaser Battle-cards come in three strengths: 
 lookup Phaser 1, Phaser 2, and Phaser 3.
@field #2117 = lu_phaser_1 : PHASER 1 (Battle Card): When you play this you
 may roll the die one time. If you roll a number equal to or higher than
 the number of the Vortex space you are on, you score a hit. If your
 opponent doesn't block it with a Shield, you win the battle (lookup hit).
@field #2117 = lu_phaser_2 : PHASER 2 (Battle Card): Like a Phaser 1, but
 you get to roll again if your first shot misses or if your opponent
 plays a Shield against your first shot.
@field #2117 = lu_phaser_3 : PHASER 3 (Battle Card): Like a Phaser 1 or 2,
 except that you can roll three times.
@field #2117 = lu_ph : lu_phaser
@field #2117 = lu_ph1 : lu_phaser_1
@field #2117 = lu_ph2 : lu_phaser_2
@field #2117 = lu_ph3 : lu_phaser_3

@field #2117 = lu_pt : lu_photon
@field #2117 = lu_photon_torpedo : lu_photon
@field #2117 = lu_torpedo : lu_photon
@field #2117 = lu_photon : PHOTON TORPEDO (Battle Card): When you play this
 card, you automatically score one hit without rolling the die. Photon
 Torpedoes can still be Shielded, though.

@field #2117 = lu_pf : ----Patterns of Force [PF] / John Gil----
 %cWARP with MEDICAL:  You may ask each player for a specific type of
 card.%cIMPULSE:  You may ask one player for a specific type of card.
 %c(Clarification: You may ask each player in turn for a different card.
 If a player doesn't have what you ask for, he gives you nothing.)

@field #2117 = lu_danger : lu_protect
@field #2117 = lu_protect : Some adventures give you a choice of a DANGER
 or a way to PROTECT yourself. If you have one the officers or specialty
 listed after PROTECT, you may "choose protect" or just "protect" to
 avoid the danger. Otherwise, you must "choose danger" (or "danger").

@field #2117 = lu_pst : ----Plato's Stepchildren [PSt] / Kironide----
 %cWARP with MEDICAL:  Energize! Draw TWO Battle Cards from the deck or
 other players' hands.%cIMPULSE:  Energize! Draw ONE Battle Card.

@field #2117 = lu_psy : ----The Paradise Syndrome [PSy] / Obelisk----
 %cYou may look through the discard pile and select one Battle Card.

@field #2117 = lu_ra : ----The Return of the Archons [RA] / Landru----
 %cDANGER:  Give one crewman of your choice to the player of your choice.
 %cPROTECT:  JONES, MANNING, or SULU

@field #2117 = lu_bridge_rack : lu_rack
@field #2117 = lu_bridge : lu_rack
@field #2117 = lu_racks : lu_rack
@field #2117 = lu_rack : Your bridge rack is where you keep the members of
 your crew. Each player has a rack of the appropriate color. You have to
 be holding a rack to be able to see which crewmembers are in it. 
 %c   Also, whoever has the rack is considered by GameBoard to be that
 player. For example, if you hold both the red and blue racks, then you're
 both the red and blue players. If you want another mudPlayer to take over
 for you in the game, just give your rack and hand over to him or her,
 and GameBoard will figure it out.

@field #2117 = lu_rand : [1] Rand is a Communications officer.
 %c[2] Phaser 1 Rand (Battle Card): If you have RAND, you may choose your
 own exit from battle, even if you lost. You exit first.

@field #2117 = lu_marooned : lu_rescue
@field #2117 = lu_rescuing : lu_rescue
@field #2117 = lu_rescue : If you end your move on a space which has any
 marooned crew counters on it, you get one of them taken at random. You
 do not get to look at any other crew counters that may be there. The
 crew counter is added to your bridge rack.

@field #2117 = lu_riley : [1] Riley is a Navigation officer.%c[2] Phaser 1
 Riley (Battle Card): If you have RILEY, you may take your die roll in
 either direction (play this after rolling).)

@field #2117 = lu_rm : ----Requiem for Methuselah [RM] / Ryetalin----
 %cEnergize! Draw TWO Battle Cards.

@field #2117 = lu_romaine : [1] Romaine is a Science officer.
 %c[2] Warp 2 Romaine (Battle Card): If you have ROMAINE, you may play
 this on any player in battle. He must discard one SHIELD 1 or SHIELD 2.

@field #2117 = lu_rt : ----Return to Tomorrow [RT] / Sargon----
 %cWARP with SCIENCE:  Take one unlocked crewman at random form player
 with "Most Crew".%cIMPULSE:  Make one crew call for information only.
 %c(Clarification: "One crew call for information" means: select a player,
 and make a crew call against him. If he has what you call for, he tells
 you, but does not give it to you.)

@field #2117 = lu_sb : ----Spock's Brain [SB] / Kara----%cDANGER:  Player
 with "Least Crew" takes one crew from you at random.%cPROTECT:  SECURITY

@field #2117 = lu_sc : ----The Savage Curtain [SC] / Yarnek----
 %cChoose two other players to immediately battle each other. You decide
 who moves first.%c(Clarification: Remember that there may be only one
 battle per turn. If you enact this adventure, you may not call battle
 again later this turn.%cAlso, this adventure has no effect in a two-player
 game.) 

@field #2117 = lu_sci : lu_science
@field #2117 = lu_science : The Science specialty is represented by
 Barrows, Palamas, Romaine, and a cadet.

@field #2117 = lu_scotty : lu_scott
@field #2117 = lu_scott : [1] Scott is a Command officer.
 %c[2] Phaser 1 Scott (Battle Card): If you have SCOTT, you may play this
 as if it were a PHASER 3.

@field #2117 = lu_sec : lu_security
@field #2117 = lu_security : The Security specialty is represented by
 Jones, Landon, Manning, and a cadet.

@field #2117 = lu_setup : The GameBot will take care of most setup details.
 In brief: Each player chooses a color and gets the corresponding ship,
 bridge rack, and hand. The decks are shuffled. Each player gets 3
 Battle-cards for his hand, and 2 randomly chosen crew (or 3 crew in a
 2-player game) for his bridge rack. The other crew counters are placed
 randomly on the board, face down. A player is chosen at random to go
 first.

@field #2117 = lu_sgn : ----Spectre of the Gun [SGn] / Melkotians----
 %cWARP with SECURITY:  Force one player to maroon a crew of his choice on
 an adventure space of your choice.%cIMPULSE:  Force a player to discard one
 card of the type you name.%c(Clarification: The marooned crew may NOT be
 picked up by current occupants of the Adventure space. In the IMPULSE
 section, if the player does not have the card you name, there is no
 effect.)

@field #2117 = lu_shield : Lookup 'shield 1' or 'shield 2'.

@field #2117 = lu_shield_1 : SHIELD 1 (Battle Card): You play a Shield 1 
 when your opponent scores a hit on your ship. Each Shield card negates
 ONE hit. Playing a Shield does not cost a Battle Turn since you play it
 in your opponent's Battle Turn.
@field #2117 = lu_sh1 : lu_shield_1

@field #2117 = lu_shield_2 : SHIELD 2 (Battle Card): A Shield 2 negates TWO
 hits in the same Battle Turn. That is, if your opponent plays a Phaser 2
 or 3, the Shield 2 card will negate two hits from that card. The Shield 2
 will NOT negate hits made in different Battle Turns.
@field #2117 = lu_sh2 : lu_shield_2

@field #2117 = lu_enterprise : lu_ship
@field #2117 = lu_enterprises : lu_ship
@field #2117 = lu_ships : lu_ship
@field #2117 = lu_ship : Each player gets a marker in the shape of the
 starship Enterprise in his or her color. It starts out on the player's
 Base World, and on his or her turn, moves clockwise around the board on
 the Adventure Spaces. Eg: you may use "x yellow ship" to find where the
 yellow Enterprise is.
@field #2117 = lu_starships : lu_ship
@field #2117 = lu_starship : lu_ship
@field #2117 = lu_spaceship : lu_ship
@field #2117 = lu_spaceships : lu_ship

@field #2117 = lu_sl : ----Shore Leave [SL] / Fantasy Planet----
 %cWARP with KYLE, BARROWS, or SULU:  Move your ship to any other adventure 
 space and have that adventure.%cIMPULSE:  Move your ship forward or back
 one space and have that adventure.

@field #2117 = lu_special_battle_cards : lu_special
@field #2117 = lu_special : Special Battle Cards are the same as normal
 Battle-cards, except they have an extra optional effect which you may only
 use if you have the named officer. Eg: You can only play PHASER 1 SULU's
 special effect if you have Sulu. Look up the officer's name to learn what
 his or her special Battle Card does. Special cards may be played whenever
 appropriate, not just during battle.%c  To play PHASER 1 SULU as a normal
 PHASER 1, type "play phaser 1 sulu".%c  To play PHASER 1 SULU as Sulu's
 special effect, just type "play sulu".

@field #2117 = lu_specialty : lu_specialties
@field #2117 = lu_specialties : The six specialties are Command,
 Communication, Medical, Navigation, Science, and Security. There are
 three officers and one cadet in each specialty, except Command which
 has only three officers. You need one officer from each of the six
 specialties to win the game.%c   NOTE 1: Cadet specialties cannot help
 you in adventures, nor can cadet specialties help you win the game.
 %c   NOTE 2: The Starfleet crew counter is wild, and can have ANY
 specialty.

@field #2117 = lu_mr_spock : lu_spock
@field #2117 = lu_spock : [1] Spock is a Command officer.
 %c[2] Phaser 1 Spock (Battle Card): If you have SPOCK, you may play this
 card when your opponent reaches Mind Meld. He gets nothing.

@field #2117 = lu_starfleet : The Starfleet counter can act as any
 specialty, and you win if you have five other specialties plus this
 counter.

@field #2117 = lu_sulu : [1] Sulu is a Navigation officer.
 %c[2] Phaser 1 Sulu (Battle Card): If you have SULU, you may play this on
 another player as he is about to move. You move him from 1 to 6 spaces.

@field #2117 = lu_ta : ----A Taste of Armageddon [TA] / Anan-7----
 %cDANGER:  Fight "Battle to the Death" - no exit until one player has
 only shields, or no cards.%cPROTECT:  COMMAND%c(Clarification: This means
 that you select an opponent and start a battle. After the end of the
 battle, if both players still have cards that are not shields, start
 ANOTHER battle instead of exiting. You do NOT draw to fill your hand to
 two cards in the second and subsequent battles.)

@field #2117 = lu_tractor : TRACTOR (Battle Card): You move FORWARD one
 space on the Battle Vortex, and your opponent moves BACK one space.

@field #2117 = lu_tractor-zone : lu_tz
@field #2117 = lu_tractor_zone : lu_tz
@field #2117 = lu_zone : Do you mean Tractor Zone ("lookup tz") or Exit
  Battle Zone ("lookup ebz")?
@field #2117 = lu_tz : If you have an adventure in a space that is also a
 Tractor Zone, and if you haven't already been in a battle this turn, you
 may start a Battle with any other player. He cannot refuse. The winner of
 a Battle gets a chance to take a crewman from the loser.

@field #2117 = lu_two-player : lu_two
@field #2117 = lu_two_player : lu_two
@field #2117 = lu_two : In a two-player game, the following changes are 
 made:%c- Each player begins with three crewmen on his Bridge rack.%c- All
 cards referring to "least crew" or "most crew" now refer to the opposing
 player.%c- The Savage Curtain [SC] adventure has no effect on play.
 %c- The Errand of Mercy [EM] adventure requires you to give your entire
 hand to the other player.

@field #2117 = lu_tsp : ----This Side of Paradise [TSP] / Spore Plants----
 %cDANGER:  Each player (starting to your left) may ask you for a specific
 type of card.%cPROTECT:  LANDON, McCOY, or RILEY%c(Clarification: Each
 player may ask you for a different card.)

@field #2117 = lu_phases : lu_turn
@field #2117 = lu_phase : lu_turn
@field #2117 = lu_turns : lu_turn
@field #2117 = lu_turn : Each player's turn consists of the following
 phases:%c1) Movement, 2) Exchange battle cards, 3) Rescue marooned crew, 
 4) Adventure, 5) Battle, 6) Winning the game.

@field #2117 = lu_tw : ----The Tholian Web [TW] / Interdimensional Warp----
 %cWARP with UHURA, JONES, or CHEKOV:  Move another ship to any adventure
 space (except this one).
 %cIMPULSE:  Move another ship forward or back one space.

@field #2117 = lu_tws : ----That Which Survives [TWS] / Losira----
 %cDANGER:  Maroon one crewman of your choice here.%cPROTECT:  MEDICAL

@field #2117 = lu_ty : ----Tomorrow is Yesterday [TY] / Black Star----
 %cDANGER:  The player with "Least Crew" puts your ship on any adventure
 space.%cPROTECT:  UHURA, KYLE, or CHAPEL

@field #2117 = lu_uhura : [1] Uhura is a Communications officer.
 %c[2] Phaser 1 Uhura (Battle Card): If you have UHURA, you may play this
 when you are named to enter battle. The caller must call someone else.
 (This effect may not be used in last-ditch battle.)

@field #2117 = lu_battle-vortex : lu_vortex
@field #2117 = lu_battle_vortex : lu_vortex
@field #2117 = lu_vortex : The Battle Vortex is where Battles take place. 
 The layout of the Vortex is a straight track of 13 spaces labelled as 
 follows: %c[6]-[5]-[4]-[3]-[2]-[1]-(Mind Meld)-[1]-[2]-[3]-[4]-[5]-[6]
 %c(also lookup battle, battle card, battle turn, hit, mind meld)

@field #2117 = lu_wa2 : lu_warp_2
@field #2117 = lu_warp : lu_warp_2
@field #2117 = lu_warp_2 : WARP 2 (Battle Card): When you play this card,
 you may immediately move your ship ahead 2 spaces on the Battle Vortex.

@field #2117 = lu_we : ----Wink of an Eye [WE] / Scalos----
 %cWARP with SECURITY:  Take three more turns. Calling a battle ends this
 adventure.%cIMPULSE:  Take two more turns. Calling a battle ends this
 adventure.

@field #2117 = lu_winning : lu_win
@field #2117 = lu_win : To win the game, you must have one crewmember from
 each of the six specialties or put all other players out of the game.
 When you have all six specialties, GameBoard will announce the fact, you
 will get to "lock in" a crewmember, and everyone else gets one chance
 at "last-ditch battle" to prevent you from winning.

@field #2117 = lu_wnm :----Where No Man Has Gone Before [WNM] / Lithium----
 %cEnergize! Draw ONE Battle Card.

@field #2117 = lu_wm : ----Who Mourns for Adonais? [WM] / Apollo----
 %cDANGER:  Reveal your hand to all players.
 %cPROTECT:  SCOTT, PALAMAS, or CHEKOV

Action: new game

@action new game;start game;begin game;new;newgame = bot : nowhere
@desc #2417 = Starts a new game of Star Trek: The Enterprise^4 Encounter, 
  for 2 to 4 players.
@field #2417 = varobj : 2117

// note: hide all racks and hands in the Praw!
@succ #2417 = @tellroom(@location("%#"),"",
 @print("GameBot exclaims, \"New game!\"%cGameBot produces four game 
  tokens from a hidden compartment in its chest."));
 @s("arg1",2229);@call(2117,"botdrop");
 @s("arg1",2236);@call(2117,"botdrop");
 @s("arg1",2235);@call(2117,"botdrop");
 @s("arg1",2160);@call(2117,"botdrop");
 @move(10487,9671);@move(10488,9671);@move(10489,9671);@move(10490,9671);
 @move(10491,9671);@move(10492,9671);@move(10493,9671);@move(10494,9671);
 @s("gstate","1");
 @tellroom(@location("%#"),"","GameBot says, \"First, everyone who's
  playing, please take a spaceship. The color of your ship will be your
  color in the game. It's okay with me if someone wants to play as two
  players. Leave unused ships on the floor. When everyone's ready to 
  continue, someone should type 'OK'.\"");
-----
**TEST**
@succ #2417 = @tellroom(@location("%#"),"", @print("GameBot exclaims, \"New game!\"%cGameBot produces four game tokens from a hidden compartment in its chest.")); @s("arg1",2229);@call(2117,"botdrop"); @s("arg1",2236);@call(2117,"botdrop"); @s("arg1",2235);@call(2117,"botdrop"); @s("arg1",2160);@call(2117,"botdrop"); @move(10487,9671);@move(10488,9671);@move(10489,9671);@move(10490,9671); @move(10491,9671);@move(10492,9671);@move(10493,9671);@move(10494,9671); @s("gstate","1"); @tellroom(@location("%#"),"","GameBot says, \"First, everyone who's playing, please take a spaceship. The color of your ship will be your color in the game. It's okay with me if someone wants to play as two players. Leave unused ships on the floor. When everyone's ready to continue, someone should type 'OK'.\"");
=====

@field #2117 = botdrop : @move(@g("arg1"),@location("%#"));
 @setflag(@g("arg1"),"!dark"); @setfield(@g("arg1"),"lock","");
 @tellroom(@location("%#"),"",@print("GameBot drops ",
  @shortname(@g("arg1")), "."));

ok (#10485)

@action ok;ready;done;continue = bot : nowhere
@field #10485 = varobj : 2117
@desc #10485 = Continues the game, assuming it has paused for some reason.
@succ #10485 = @switch(@g("gstate"),
 "1", @call("2117","do_1"), "2", @call("2117","do_2"),
 "GameBot whispers (to you), \"But the game isn't paused.\"");

x space * (#10510)

**RENAME**
@action x space *;look space *;l space * = bot : nowhere
@field #10510 = varobj : 2117
@set #10510 = puzzle
@desc #10510 = Look at what's at one of the adventure spaces,
  eg: 'x space 3' looks at adventure space #3.

// - The weird @add("%0",0) phrase gets rids or leading zeroes
//   and spaces so 'space  3' works properly.
@succ #10510 =
 @switch(@or(@lt("%0",1),@gt("%0",20)), "1",
  "GameBoard whispers (to you), \"I don't know that space.
  Adventure spaces are numbered from 1 to 20.\"",
  @print(
   @s("sbac",99),
   @fieldloop(2117,"acloc_",@switch("%v",@add(0,"%0"),
    @s("sbac",@substr("%f",6)))),
   "GameBoard whispers (to you), \"Space #", @add("%0",0),
   @switch(@g("sbac"),99," is unexplored.",@print(
    " has the '", @g(@print("acnam_",@g("sbac"))),
    " [", @g(@print("accod_",@g("sbac"))), "]' adventure."
   )),
   @s("sbac",""),
   @switch(@g(@print("ncc_",@add("%0",0))),0,"",
    1," One crewman is marooned there.",@print(
    " ", @g(@print("ncc_",@add("%0",0))), " crewmen are marooned there."
   )),
   @switch(@g("ship1_loc"),@add("%0",0)," The blue ship is there."),
   @switch(@g("ship2_loc"),@add("%0",0)," The red ship is there."),
   @switch(@g("ship3_loc"),@add("%0",0)," The green ship is there."),
   @switch(@g("ship4_loc"),@add("%0",0)," The yellow ship is there."),
   @switch(@add("%0",0),{2,7,12,17}," It is also a Tractor Zone.",
    {5,10,15,20}," It is also a Tractor Zone and an Exit Battle Zone."),
   "\""
 ));
------
**TEST**
@succ #10510 = @switch(@or(@lt("%0",1),@gt("%0",20)), "1","GameBoard whispers (to you), \"I don't know that space. Adventure spaces are numbered from 1 to 20.\"",@print(@s("sbac",99),@fieldloop(2117,"acloc_",@switch("%v",@add(0,"%0"),@s("sbac",@substr("%f",6)))),"GameBoard whispers (to you), \"Space #", @add("%0",0),@switch(@g("sbac"),99," is unexplored.",@print(" has the '", @g(@print("acnam_",@g("sbac")))," [", @g(@print("accod_",@g("sbac"))),"]' adventure.")),@s("sbac",""),@switch(@g(@print("ncc_",@add("%0",0))),0,"",1," One crewman is marooned there.",@print(" ", @g(@print("ncc_",@add("%0",0))), " crewmen are marooned there.")), @switch(@g("ship1_loc"),@add("%0",0)," The blue ship is there."), @switch(@g("ship2_loc"),@add("%0",0)," The red ship is there."), @switch(@g("ship3_loc"),@add("%0",0)," The green ship is there."), @switch(@g("ship4_loc"),@add("%0",0)," The yellow ship is there."), @switch(@add("%0",0),{2,7,12,17}," It is also a Tractor Zone.", {5,10,15,20}," It is also a Tractor Zone and an Exit Battle Zone."), "\""));
======

roll die (#10497)

@action roll die;roll;toss die;throw die = bot : nowhere
@desc #10497 = Rolls a normal 6-sided die.
@field #10497 = varobj : 2117
@succ #10497 = 
 @switch(@g("gstate"), 3, @call(2117,"phase1"),
  "['ROLL' is not a valid option right now.]" );

// Rolling the die at beginning of movement phase.
// First, best check that it's the player who SHOULD roll.
// If not, STOP HERE. Else go phase1b
@field #2117 = phase1 :
 @call(2117,"calc_whodbr_turn");
 @switch("%#", @g("whodbr_turn"), @call(2117,"phase1b"),
  @print("Gamebot whispers (to you), \"Sorry, but it's the ",
   @g("whocna_turn"), " player who must 'ROLL' now.\""));
-----
**TEST**
@field bot = phase1 : @call(2117,"calc_whodbr_turn"); @switch("%#", @g("whodbr_turn"), @call(2117,"phase1b"), @print("Gamebot whispers (to you), \"Sorry, but it's the ", @g("whocna_turn"), " player who must 'ROLL' now.\""));
=====

@field #2117 = phase1b :
 @s("dieval",@add(@rand(6),1));
 @tell("%#", @print("You roll a ", @g("dieval"), "."));
 @tellroom(@location("%#"),"%#", @print("%n rolls a ", @g("dieval"), "."));
 // Calculate the nowdir from the stddir.
 @s("nowdir",@g("stddir"));
 // Move the player's ship dieval spaces in the nowdir direction.
 // Do a little fakery to map Base Worlds to Adventure Spaces
 @s("loc_x0",@g(@print("ship",@g("whoclr_turn"),"_loc")));
 @s("loc_x1",@g(@print("ship",@g("whoclr_turn"),"_loc")));
 @switch(@g("loc_x1"),41,@s("loc_x1",2),42,@s("loc_x1",7),
    43,@s("loc_x1",12),44,@s("loc_x1",17));
 @switch(@g("nowdir"),
  0, @s("loc_x2",@add(@mod(@sub(@add(@g("loc_x1"),@g("dieval")),1),20),1)),
  1, @s("loc_x2",@add(@mod(@add(@sub(@g("loc_x1"),@g("dieval")),19),20),1))
 );
 @tellroom(@location("%#"),"",@print("From ", 
  @switch(@g("loc_x0"), 41,"the Blue Base World", 42,"the Red Base World",
   43,"the Green Base World", 44,"the Yellow Base World",
   @print("space #", @g("loc_x0"))),
  ", the ", @g(@print("clrnam",@g("whoclr_turn"))),
  " ship glides clockwise around the board by ",
  @g("dieval"), @switch(@g("dieval"),"1", " space", " spaces"),
  ", arriving at space #", @g("loc_x2"),
  "."));
 @s(@print("ship",@g("whoclr_turn"),"_loc"),@g("loc_x2"));
 // Set isadv_here = 1 if adventure card already here.
 // Set isadv_forw = 1 if adventure card in forward direction
 // Set isadv_back = 1 if adventure card in back direction
 @s("isadv_here",0); @s("isadv_forw",0); @s("isadv_back",0);
 @s("loc_x2f",@add(@mod(@g("loc_x2"),20),1));
 @s("loc_x2b",@add(@mod(@add(@g("loc_x2"),18),20),1));
 @fieldloop(2117,"acloc_",@switch("%v",
  @g("loc_x2"),@s("isadv_here",1),
  @g("loc_x2f"),@s("isadv_forw",1),
  @g("loc_x2b"),@s("isadv_back",1)
 ));
 // if isadv_here = 1 and isadv_forw = 0 and isadv_back = 0,
 //   then we have to ask the player (gstate=4) and STOP HERE.
 @switch(@and(@eq(@g("isadv_here"),1),
        @eq(0,@g("isadv_forw"),@g("isadv_back"))),
  "1", @print(@s("gstate",4), @tellroom(@location(""),"",@print(
   "An adventure card is here, but not at either neighboring space. \"",
   @g("whorna_turn"), ",\" GameBoard says, \"you must \"explore new worlds\".
   Do you choose to go 'FORWARD' to #",
   @g("loc_x2f"), " or 'BACK' to #", @g("loc_x2b"), "?\""
  ))), 
  // else go phase1c
  @call(2117,"phase1c")
 );

@field #2117 = phase1forw : TODO
@field #2117 = phase1back : TODO

@field #2117 = phase1c :
  // If isadv_here = 1 and isadv_forw = 1 and isadv_back = 0,
  //   then back 1
  @switch(@and(@eq(@g("isadv_here"),@g("isadv_forw"),1),@eq(@g("isadv_back"),0)),
   "1", @print( @tellroom(@location("%#"),"", @print(
     "An adventure card is both here and ahead, but not behind, so the ",
     @g(@print("clrnam",@g("whoclr_turn"))),
     " ship moves back 1 space, to space #",
     @g("loc_x2b"), ".")),
     @s(@print("ship",@g("whoclr_turn"),"_loc"),@g("loc_x2b")))
  );
  // Elseif isadv_here = 1 and isadv_forw = 0 and isadv_back = 1,
  //   then forward 1
  @switch(@and(@eq(@g("isadv_here"),@g("isadv_back"),1),@eq(@g("isadv_forw"),0)),
   "1", @print( @tellroom(@location("%#"),"", @print(
     "An adventure card is both here and behind, but not ahead, so the ",
     @g(@print("clrnam",@g("whoclr_turn"))),
     " ship moves forward 1 space, to space #",
     @g("loc_x2f"), ".")),
     @s(@print("ship",@g("whoclr_turn"),"_loc"),@g("loc_x2f")))
  );
  // Else we stay where we are because all are full.
  @switch(@eq(1,@g("isadv_here"),@g("isadv_back"),@g("isadv_forw")),
   "1", @print(@tellroom(@location("%#"),"",@print(
     "An adventure card is here, but also ahead and behind, so the ",
     @g(@print("clrnam",@g("whoclr_turn"))),
     " ship stops."))));
  // Else we stay where we are because the locn has no card.
  @switch(@g("isadv_here"),
   "0", @print(@tellroom(@location("%#"),"",@print(
     "No adventure card is here, so the ",
     @g(@print("clrnam",@g("whoclr_turn"))),
     " ship stops here to explore."))));
  // Continue goto phase2: Exchanging Battle Cards
  @call(2117,"phase2");

**TO TEST**
// PHASE 2: EXCHANGING BATTLE CARDS
// Build the whoclrs_here string. Prepend and append it with a '5'
// to represent a "fifth" player.
// If the whoclr_here string is longer than 3 chars, then
// strloop through it, treating it in pairs, eg:
//  "5ABC5" means A gives his hand to 5, B gives his hand to A, etc.
@field #2117 = phase2 : 
  @s("loc_x0",@g(@print("ship",@g("whoclr_turn"),"_loc")));
  @s("whoclrs_here","5");
  @switch(@g("ship4_loc"),@g("loc_x0"),
    @s("whoclrs_here",@print(@g("whoclrs_here"),"4")));
  @switch(@g("ship3_loc"),@g("loc_x0"),
    @s("whoclrs_here",@print(@g("whoclrs_here"),"3")));
  @switch(@g("ship2_loc"),@g("loc_x0"),
    @s("whoclrs_here",@print(@g("whoclrs_here"),"2")));
  @switch(@g("ship1_loc"),@g("loc_x0"),
    @s("whoclrs_here",@print(@g("whoclrs_here"),"1")));
  @s("whoclrs_here",@print(@g("whoclrs_here"),"5"));
  @switch(@strlen(@g("whoclrs_here")),{4,5,6},@print(
    @tellroom(@location("%#"),"",@print(
      "GameBoard says, \"There are now ",
      @sub(@strlen(@g("whoclrs_here")),2),
      " players in this space; those players must now
      exchange their battle cards in their hands.\"")),
    @call(2117,"phase2b")));
  @call(2117,"phase3");
---------
@field #2117 = phase2 : @s("loc_x0",@g(@print("ship",@g("whoclr_turn"),"_loc"))); @s("whoclrs_here","5"); @switch(@g("ship1_loc"),@g("loc_x0"), @s("whoclrs_here",@print(@g("whoclrs_here"),"1"))); @switch(@g("ship2_loc"),@g("loc_x0"), @s("whoclrs_here",@print(@g("whoclrs_here"),"2"))); @switch(@g("ship3_loc"),@g("loc_x0"), @s("whoclrs_here",@print(@g("whoclrs_here"),"3"))); @switch(@g("ship4_loc"),@g("loc_x0"), @s("whoclrs_here",@print(@g("whoclrs_here"),"4"))); @s("whoclrs_here",@print(@g("whoclrs_here"),"5")); @switch(@strlen(@g("whoclrs_here")),{4,5,6},@print(@tellroom(@location("%#"),"",@print("GameBoard says, \"There are now ", @sub(@strlen(@g("whoclrs_here")),2), " players in this space; those players must now exchange their battle cards in their hands.\"")), @call(2117,"phase2b"))); @call(2117,"phase3");
=========

**TO TEST**
@field #2117 = phase2b :
  @s("i",0");
  @strloop(@g("whoclrs_here"),"x", @switch(
    @lt(@add(@g("i"),1),@strlen(@g("whoclrs_here"))), "1", @print(
      @s("arg1",@add(40,@substr(@g("whoclrs_here"),@add(@g("i"),1),1))),
      @s("arg2",@add(40,"%x")),
      @call(2117,"qmove_bc")
  )));
-------
@field #2117 = phase2b : @s("i",0"); @strloop(@g("whoclrs_here"),"x", @switch( @lt(@add(@g("i"),1),@strlen(@g("whoclrs_here"))), "1", @print( @s("arg1",@add(40,@substr(@g("whoclrs_here"),@add(@g("i"),1),1))), @s("arg2",@add(40,"%x")), @call(2117,"qmove_bc"))));
=======

**TO TEST**
// quick move all battle cards from arg1 to arg2
// note: assuming arg1 is empty.
// therefore, we can leave the bcpos_X values as is.
// This is ONLY to be called by phase2b.
@field #2117 = qmove_bc:
 @tellroom(@location("%#"),"",@print(
  "GameBoard moves the cards from the ",
  @switch(@g("arg1"),41,"blue",42,"red",43,"green",44,"yellow","sidebar"),
  " hand to the ",
  @switch(@g("arg2"),41,"blue",42,"red",43,"green",44,"yellow","sidebar"),
  " hand."
 ));
 @fieldloop(2117,"bcloc_",@switch("%v",@g("arg1"),
  @s("%f",@g("arg2"))));
 @s(@print("nbc_",@g("arg2")),@g(@print("nbc_",@g("arg1"))));
 @s(@print("nbc_",@g("arg1")),0);
-------
@field #2117 = qmove_bc: @tellroom(@location("%#"),"",@print("GameBoard moves the cards from the ", @switch(@g("arg1"),41,"blue",42,"red",43,"green",44,"yellow","sidebar"), " hand to the ", @switch(@g("arg2"),41,"blue",42,"red",43,"green",44,"yellow","sidebar"), " hand.")); @fieldloop(2117,"bcloc_",@switch("%v",@g("arg1"), @s("%f",@g("arg2")))); @s(@print("nbc_",@g("arg1")),@g(@print("nbc_",@g("arg2")))); @s(@print("nbc_",@g("arg2")),0);
=======

**TO TEST**
// PHASE 3: RESCUE A MAROONED CREWMEMBER
// CAUTION: Assuming this is the whoclr_turn player doing this.
// NOTE: The value of cc_moved is set by botdealcc1.
@field #2117 = phase3 :
 // if ncc[shipX_loc] > 0,...
 @switch(@gt(@g(@print("ncc_",@g(@print("ship",@g("whoclr_turn"),"_loc")))),0),
 "1", @print(
   @s("arg1",@g(@print("ship",@g("whoclr_turn"),"_loc"))),
   @s("arg2",@add(40,@g("whoclr_turn"))),
   @call(2117,"botdealcc1"),
   @tellroom(@location("%#"),"%#",@print(
     "%n rescues a marooned crew member, and adds him or her to %p ",
     @g(@print("clrnam",@g("whoclr_turn"))), " bridge rack."
   )),
   @tell("%#",@print(
    "You rescue ", @g(@print("ccnam_",@g("cc_moved"))), " (",
    @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))),
    "), who was marooned, and add ",
    @switch(@substr(@g("ccsexs"),@g("cc_moved"),1),"F","her","him"), 
    " to your ", @g(@print("clrnam",@g("whoclr_turn"))), " bridge rack."
   ))
 ), @tellroom(@location("%#"),"","No crew to rescue here."));
 @s("whoord_inadv",@g("whoord_turn")); @s("whoclr_inadv",@g("whoclr_turn"));
 @call(2117,"phase4");
-----------
@field #2117 = phase3 : @switch(@gt(@g(@print("ncc_",@g(@print("ship",@g("whoclr_turn"),"_loc")))),0), "1", @print(@s("arg1",@g(@print("ship",@g("whoclr_turn"),"_loc"))), @s("arg2",@add(40,@g("whoclr_turn"))), @call(2117,"botdealcc1"), @tellroom(@location("%#"),"%#",@print("%n rescues a marooned crew member, and adds him or her to %p ", @g(@print("clrnam",@g("whoclr_turn"))), " bridge rack.")), @tell("%#",@print("You rescue ", @g(@print("ccnam_",@g("cc_moved"))), " (", @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))), "), who was marooned, and add ", @switch(@substr(@g("ccsexs"),@g("cc_moved"),1),"F","her","him"), " to your ", @g(@print("clrnam",@g("whoclr_turn"))), " bridge rack."))), @tellroom(@location("%#"),"","No crew to rescue here.")); @s("whoord_inadv",@g("whoord_turn")); @s("whoclr_inadv",@g("whoclr_turn")); @call(2117,"phase4");
===========

//PHASE 4: HAVE AN ADVENTURE
// If no card here, put the next one from the deck here and play it.
// Else, play the card that's here.
@field #2117 = phase4 :
 @s("loc_x0",@g(@print("ship",@g("whoclr_inadv"),"_loc")));
 @call(2117,"calc_whodbr_inadv");
 @s("the_ac",99);
 @fieldloop(2117,"acloc_",@switch("%v", @g("loc_x0"),
   @print(
     // OLDONE, anything else TODO?
     @s("the_ac",@substr("%f",6))
   )
 ));
 @switch(@g("the_ac"),99, @print(
  // DEALONE
  @fieldloop("2117","acloc_",
    @let("k"=>@substr("%f",6),@switch( @and(@eq("%v",0),
         @eq(@g("acpos_%k"),@sub(@g("nac_0"),1))),
       "1", @print(
         @s("the_ac","%k"), @s("%f",@g("loc_x0")),
         @s("acpos_%k", @g(@print("nac_",@g("loc_x0"))))
       )
    ))
  ),
  @s("nac_0", @sub(@g("nac_0"),1)),
  @s(@print("nac_",@g("loc_x0")), 1),
  @tell(@g("whodbr_inadv"),
   "You draw a new adventure card and put it into play."),
  @tellroom(@location("%#"),@g("whodbr_inadv"), @print(
   @g("whorna_inadv"),
   " draws a new adventure card it puts it into play."))
 ));
 @tellroom(@location("%#"),"",@print("GameBoard says, \"",
  @g("whocna_inadv"), "'s adventure is...%c",
  @call(2117,@print("lu_",@g(@print("accod_",@g("the_ac"))))), "\""
 ));
 @call(2117,@print("do_adv_",@g("the_ac")));
---------
**TEST**
@field #2117 = phase4 : @s("loc_x0",@g(@print("ship",@g("whoclr_inadv"),"_loc"))); @call(2117,"calc_whodbr_inadv"); @s("the_ac",99); @fieldloop(2117,"acloc_",@switch("%v", @g("loc_x0"), @print( @s("the_ac",@substr("%f",6))))); @switch(@g("the_ac"),99, @print(@fieldloop("2117","acloc_", @let("k"=>@substr("%f",6),@switch( @and(@eq("%v",0), @eq(@g("acpos_%k"),@sub(@g("nac_0"),1))), "1", @print(@s("the_ac","%k"), @s("%f",@g("loc_x0")), @s("acpos_%k", @g(@print("nac_",@g("loc_x0")))))))), @s("nac_0", @sub(@g("nac_0"),1)), @s(@print("nac_",@g("loc_x0")), 1), @tell(@g("whodbr_inadv"), "You draw a new adventure card and put it into play."), @tellroom(@location("%#"),@g("whodbr_inadv"), @print(@g("whorna_inadv"), " draws a new adventure card it puts it into play.")))); @tellroom(@location("%#"),"",@print("GameBoard says, \"", @g("whocna_inadv"), "'s adventure is...%c", @call(2117,@print("lu_",@g(@print("accod_",@g("the_ac"))))), "\"")); @call(2117,@print("do_adv_",@g("the_ac")));
=========

**TO TEST**
// [AE] Assignment Earth - offer 'warp' or 'impulse'
@field #2117 = do_adv_0 : @s("gstate",5); @call(2117,"setmsg_wrpimp");

// to warp, SCIENCE: Barrows(20),Palamas(21),Romaine(22),Starfleet(0)
// TODO: Cadet-Sci(23) plus Kirk(1) plus Phaser 1 Kirk complication
@field #2117 = do_adv_0w :
 @call(2117,"echo_warp");
 @s("why_warp_ok","officer with Science");
 @s("rack_inadv",@add(40,@g("whoclr_inadv")));
 @switch(@or(@eq(@g("ccloc_20"),@g("rack_inadv")),
     @eq(@g("ccloc_21"),@g("rack_inadv")),
     @eq(@g("ccloc_22"),@g("rack_inadv")),
     @eq(@g("ccloc_0"),@g("rack_inadv"))),
  "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_0wz")),
  @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_0i"))
 );
----------
**TEST**
@field bot = do_adv_0w : @call(2117,"echo_warp"); @s("why_warp_ok","officer with Science"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_20"),@g("rack_inadv")), @eq(@g("ccloc_21"),@g("rack_inadv")), @eq(@g("ccloc_22"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_0wz")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_0i")));
==========

// TODO: If no crew are marooned, end the adventure.
// Else, choose a space that has a marooned man on it.
@field #2117 = do_adv_0wz :
 @s("gstate",6);
 @tellroom(@location("%#"),"",@print(
   "GameBoard says (to %n), \"", @g("whocna_inadv"),
   "choose a space with marooned crew on it, eg: 'SPACE 10'."
 ));
-----
**TEST**
@field #2117 = do_adv_0wz : @s("gstate",6); @tellroom(@location("%#"),"",@print("GameBoard says (to %n), \"", @g("whocna_inadv"), "choose a space with marooned crew on it, eg: 'SPACE 10'."));
=====

// Verify that the chosen space has a crewman on it.
// If it does, move a crewman from there to the inadv's rack and end adv.
@field #2117 = do_adv_0ws :
  @switch("%#",@g("whodbr_inadv"),@print(
    @call(2117,"echo_space"),
    @switch("1",
      @eq(@g(@print("ncc_",@g("space_chosen"))),0),@print(
        @tellroom(@location("%#"),"",@print(
          "GameBoard says (to %n), \"", @g("whocna_inadv"),
          ", that space has no marooned crew. Choose another space.\""
        ))
      ),
      @print(
        @s("arg1",@g("space_chosen")),
        @s("arg2",@add(40,@g("whoclr_inadv"))),
        @call(2117,"botdealcc1"),
        @tell("%#",@print(
          "You rescue ", @g(@print("ccnam_",@g("cc_moved"))), " (",
          @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))),
          ") from space #", @g("space_chosen"), " and add ",
          @switch(@substr(@g("ccsexs"),@g("cc_moved"),1),"F","her","him"), 
          " to your ",
          @g(@print("clrnam",@g("whoclr_turn"))), " bridge rack."
        )),
        @tellroom(@location("%#"),"%#",@print(
          "%n rescues a marooned crew member from space #", @g("space_chosen"),
          ", and adds him or her to %p ",
          @g(@print("clrnam",@g("whoclr_inadv"))), " bridge rack."
        )),
        @call(2117,"end_adv")
      )
    )
  ), @call(2117,"you_not_inadv"));
------
**TEST**
@field #2117 = do_adv_0ws : @switch("%#",@g("whodbr_inadv"),@print(@call(2117,"echo_space"), @switch("1", @eq(@g(@print("ncc_",@g("space_chosen"))),0),@print(@tellroom(@location("%#"),"",@print("GameBoard says (to %n), \"", @g("whocna_inadv"), ", that space has no marooned crew. Choose another space.\""))), @print(@s("arg1",@g("space_chosen")), @s("arg2",@add(40,@g("whoclr_inadv"))), @call(2117,"botdealcc1"), @tell("%#",@print("You rescue ", @g(@print("ccnam_",@g("cc_moved"))), " (", @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))), ") from space #", @g("space_chosen"), " and add ", @switch(@substr(@g("ccsexs"),@g("cc_moved"),1),"F","her","him"), " to your ", @g(@print("clrnam",@g("whoclr_turn"))), " bridge rack.")), @tellroom(@location("%#"),"%#",@print("%n rescues a marooned crew member from space #", @g("space_chosen"), ", and adds him or her to %p ", @g(@print("clrnam",@g("whoclr_inadv"))), " bridge rack.")), @call(2117,"end_adv")))), @call(2117,"you_not_inadv"));
======

// TODO: If no crew are marooned, end the adventure.
// Else, choose a space that has a marooned man on it.
@field #2117 = do_adv_0i :
 @call(2117,"echo_impulse"); @s("gstate",7);
 @tellroom(@location("%#"),"",@print(
  "GameBoard says (to %n), \"", @g("whocna_inadv"),
  "choose a space with marooned crew on it, eg: 'SPACE 10'."));
-----
**TEST**
@field #2117 = do_adv_0i : @call(2117,"echo_impulse"); @s("gstate",7); @tellroom(@location("%#"),"",@print("GameBoard says (to %n), \"", @g("whocna_inadv"), "choose a space with marooned crew on it, eg: 'SPACE 10'."));
=====

// Verify that the chosen space has a crewman on it.
// If it does, move a crewman from there to the 0 pile,
//  tell inadv who it is, and ask for a space to move it to.
@field #2117 = do_adv_0is1 :
  @switch("%#",@g("whodbr_inadv"),@print(
    @call(2117,"echo_space"),
    @switch("1",
      @eq(@g(@print("ncc_",@g("space_chosen"))),0),@print(
        @tellroom(@location("%#"),"",@print(
          "GameBoard says (to %n), \"", @g("whocna_inadv"),
          ", that space has no marooned crew. Choose another space.\""
        ))
      ),
      @print(
        @s("arg1",@g("space_chosen")), @s("arg2",0),
        @call(2117,"botdealcc1"),
        @tell("%#",@print(
          "GameBoard picks up a crewman from space #", @g("space_chosen"),
          " and shows it to you: ", @g(@print("ccnam_",@g("cc_moved"))), " (",
          @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))), ")."
        )),
        @tellroom(@location("%#"),"%#",@print(
          "GameBoard picks up a crewman from space #", @g("space_chosen"),
          " and shows it to %n."
        )),
        @tellroom(@location("%#"),"",@print(
          "GameBoard says (to %n), \"", @g("whocna_inadv"),
          ", now choose the new space where it will go, eg: 'SPACE 10'."
        )),
        @s("gstate",8)
      )
    )
  ), @call(2117,"you_not_inadv"));
-------
**TEST**
@field #2117 = do_adv_0is1 : @switch("%#",@g("whodbr_inadv"),@print(@call(2117,"echo_space"), @switch("1", @eq(@g(@print("ncc_",@g("space_chosen"))),0),@print(@tellroom(@location("%#"),"",@print("GameBoard says (to %n), \"", @g("whocna_inadv"), ", that space has no marooned crew. Choose another space.\""))), @print(@s("arg1",@g("space_chosen")), @s("arg2",0), @call(2117,"botdealcc1"), @tell("%#",@print("GameBoard picks up a crewman from space #", @g("space_chosen"), " and shows it to you: ", @g(@print("ccnam_",@g("cc_moved"))), " (", @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))), ").")), @tellroom(@location("%#"),"%#",@print("GameBoard picks up a crewman from space #", @g("space_chosen"), " and shows it to %n.")), @tellroom(@location("%#"),"",@print("GameBoard says (to %n), \"", @g("whocna_inadv"), ", now choose the new space where it will go, eg: 'SPACE 10'.")), @s("gstate",8)))), @call(2117,"you_not_inadv"));
=======

@field #2117 = do_adv_0is2 :
 @switch("%#",@g("whodbr_inadv"),@print(
  @call(2117,"echo_space"),
  @s("arg1",0), @s("arg2",@g("space_chosen")),
  @call(2117,"botdealcc1"),
  @tell("%#",@print(
   "GameBoard maroons ", @g(@print("ccnam_",@g("cc_moved"))), " (",
   @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))),
   ") on space #", @g("space_chosen"), "."
  )),
  @tellroom(@location("%#"),"%#",@print(
   "GameBoard maroons the crewman on space #", @g("space_chosen"), "."
  )),
  @call(2117,"end_adv")
 ), @call(2117,"you_not_inadv"));
-------
**TEST**
@field #2117 = do_adv_0is2 : @switch("%#",@g("whodbr_inadv"),@print(@call(2117,"echo_space"), @s("arg1",0), @s("arg2",@g("space_chosen")), @call(2117,"botdealcc1"), @tell("%#",@print("GameBoard maroons ", @g(@print("ccnam_",@g("cc_moved"))), " (", @g(@print("speabbr_",@g(@print("ccspe_",@g("cc_moved"))))), ") on space #", @g("space_chosen"), ".")), @tellroom(@location("%#"),"%#",@print("GameBoard maroons the crewman on space #", @g("space_chosen"), ".")), @call(2117,"end_adv")), @call(2117,"you_not_inadv"));
=======

**TO TEST**
// [AON] By Any Other Name - offer 'warp' or 'impulse'
@field bot = do_adv_1 : @s("gstate",9); @call(2117,"setmsg_wrpimp");

// to warp, NAV: Chekov(12),Riley(13),Sulu(14),Starfleet(0)
// TODO: Nav-Cadet plus Kirk(1) plus Phaser 1 Kirk complication
@field bot = do_adv_1w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","officer with Navigation");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_12"),@g("rack_inadv")),
      @eq(@g("ccloc_13"),@g("rack_inadv")),
      @eq(@g("ccloc_14"),@g("rack_inadv")),
      @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_1w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_1i"))
  );
--------
**TEST**
@field bot = do_adv_1w : @call(2117,"echo_warp"); @s("why_warp_ok","officer with Navigation"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_12"),@g("rack_inadv")), @eq(@g("ccloc_13"),@g("rack_inadv")), @eq(@g("ccloc_14"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_1w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_1i")));
========

@field bot = do_adv_1w1 : TODO
@field bot = do_adv_1i : TODO
  @call(2117,"echo_impulse");

// [Ar] Arena - deal him a new battle card. END ADV.
@field bot = do_adv_2 :
  @s("arg1",0); @s("arg2",@add(40,@g("whoclr_inadv")));
  @call(2117,"echo_dealbc");
  @s("whoclr_cards",@g("whoclr_inadv")); @call(2117,"echo_7cardmax");
  @call(2117,"end_adv");
-----
**TEST**
@field bot = do_adv_2 : @s("arg1",0); @s("arg2",@add(40,@g("whoclr_inadv"))); @call(2117,"echo_dealbc"); @s("whoclr_cards",@g("whoclr_inadv")); @call(2117,"echo_7cardmax"); @call(2117,"end_adv");
=====

// [AT] Amok Time - autoroll & move ship.
// Might either offer 'maroon crewname' or END THIS ADV AND START NEW ADV.
@field bot = do_adv_3 :
  @call(2117,"do_adv_3_roll");
  @switch(@g("didpassbase"),
    "0",@switch(@g(@print("ncc_",@add(40,@g("whoclr_inadv")))),
      "0",@print(
        @tellroom(@location("%#"),"",@print(
          "GameBoard says, \"", @g("whocna_inadv"),
          " didn't pass a Base World, but has no crewman to maroon anyway.\""
        )),
        @call(2117,"end_adv")
      ),
      "1",@print(
        @fieldloop(2117,"ccloc_",@switch("%v", @add(40,@g("whoclr_inadv")),
          @s("crew_chosen",@substr("%f",6))
        )),
        @call(2117,"do_adv_3cz")
      ),
      @print(
        @s("gstate",11),
        @tellroom(@location("%#"),"",@print(
          "GameBoard says (to ", @g("whorna_inadv"),
          "), \"", @g("whocna_inadv"),
          ", you didn't pass a Base World. Choose which of your crewman to maroon, eg: 'CREW SULU'.\""
        ))
      )
    ),
    @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"", @g("whocna_inadv"),
        " passed the ", @ucfirst(@g(@print("clrnam",@g("basepassed")))),
        " Base World and so avoided the danger.\""
      )),
      @call(2117,"end_adv")
    )
  );
-------
**TEST**
@field bot = do_adv_3 : @call(2117,"do_adv_3_roll"); @switch(@g("didpassbase"), "0",@switch(@g(@print("ncc_",@add(40,@g("whoclr_inadv")))), "0",@print(@tellroom(@location("%#"),"",@print("GameBoard says, \"", @g("whocna_inadv"), " didn't pass a Base World, but has no crewman to maroon anyway.\"")), @call(2117,"end_adv")), "1",@print(@fieldloop(2117,"ccloc_",@switch("%v", @add(40,@g("whoclr_inadv")), @s("crew_chosen",@substr("%f",6)))), @call(2117,"do_adv_3cz")), @print(@s("gstate",11), @tellroom(@location("%#"),"",@print("GameBoard says (to ", @g("whorna_inadv"), "), \"", @g("whocna_inadv")))), ", you didn't pass a Base World. Choose which of your crewman to maroon, eg: 'CREW SULU'.\"")))), @print(@tellroom(@location("%#"),"",@print("GameBoard says, \"", @g("whocna_inadv"), " passed the ", @ucfirst(@g(@print("clrnam",@g("basepassed")))), " Base World and so avoided the danger.\"")), @call(2117,"end_adv")));
=======

// TODO: autoroll and move ship. Set basepassed to 1..4 or 0 if none.
@field bot = do_adv_3_roll : TODO

// maroon the chosen crewman, end adv
@field bot = do_adv_3cz : TODO
  @call(2117,"end_adv");

// [AY] All Our Yesterdays - offer choice of 'space #' to move adv to.
@field bot = do_adv_4 :
  @s("gstate",12);
  @tellroom(@location("%#"),"",@print(
    "GameBoard says (to ", @g("whorna_inadv"),
    "), \"", @g("whocna_inadv"),
    "choose any other space to move this adventure to, eg: 'SPACE 10'."
  ));
------
**TEST**
@field bot = do_adv_4 : @s("gstate",12); @tellroom(@location("%#"),"",@print("GameBoard says (to ", @g("whorna_inadv"), "), \"", @g("whocna_inadv"), "choose any other space to move this adventure to, eg: 'SPACE 10'."));
======

@field bot = do_adv_4s :
  @switch("%#",@g("whodbr_inadv"),@print(
    @call(2117,"echo_space"),
    @s("space_this",@g(@print("ship",@g("whoclr_inadv"),"_loc"))),
    @switch("1",
      @eq(@g("space_chosen"),@g("space_this")), @print(
        "GameBoard says (to %n), \"No, any *other* space. Choose again.\""
      ),
      @print(
        // if card on space_chosen, discard it.
        @switch(@g(@print("nac_",@g("space_chosen"))),"1",@print(
          @s("arg1",@g("space_chosen")), @s("arg2",99),
          @call(2117,"botdealac1"),
          @tellroom(@location("%#"),"",@print(
            "GameBoard discards the '", @g(@print("acnam_",@g("ac_moved"))),
            " [", @g(@print("accod_",@g("ac_moved"))),
            "]' adventure from space #", @g("space_chosen"), "."
          ))
        )),
        // move [AY] adventure to space_chosen.
        @s("acloc_4",@g("space_chosen")),
        @s(@print("nac_",@g("space_chosen")),1),
        @s(@print("nac_",@g("space_this")),0),
        @tellroom(@location("%#"),"",@print(
          "GameBoard moves the 'All Our Yesterdays [AY]' adventure from space #",
          @g("space_this"), " to space #", @g("space_chosen"), "."
        )),
        // deal new adventure to space_this.
        @s("arg1",0), @s("arg2",@g("space_this")),
        @call(2117,"botdealac1"),
        @tellroom(@location("%#"),"",@print(
          "GameBoard deals the '", @g(@print("acnam_",@g("ac_moved"))),
          " [", @g(@print("accod_",@g("ac_moved"))),
          "]' adventure into space #", @g("space_this"), "."
        )),
        @call(2117,"end_adv")
      )
    )
  ), @call(2117,"you_not_inadv"));
------
**TEST**
@field bot = do_adv_4s : @switch("%#",@g("whodbr_inadv"),@print(@call(2117,"echo_space"), @s("space_this",@g(@print("ship",@g("whoclr_inadv"),"_loc"))), @switch("1", @eq(@g("space_chosen"),@g("space_this")), @print("GameBoard says (to %n), \"No, any *other* space. Choose again.\""), @print(@switch(@g(@print("nac_",@g("space_chosen"))),"1",@print(@s("arg1",@g("space_chosen")), @s("arg2",99), @call(2117,"botdealac1"), @tellroom(@location("%#"),"",@print("GameBoard discards the '", @g(@print("acnam_",@g("ac_moved"))), " [", @g(@print("accod_",@g("ac_moved"))), "]' adventure from space #", @g("space_chosen"), ".")))), @s("acloc_4",@g("space_chosen")), @s(@print("nac_",@g("space_chosen")),1), @s(@print("nac_",@g("space_this")),0), @tellroom(@location("%#"),"",@print("GameBoard moves the 'All Our Yesterdays [AY]' adventure from space #", @g("space_this"), " to space #", @g("space_chosen"), ".")), @s("arg1",0), @s("arg2",@g("space_this")), @call(2117,"botdealac1"), @tellroom(@location("%#"),"",@print("GameBoard deals the '", @g(@print("acnam_",@g("ac_moved"))), " [", @g(@print("accod_",@g("ac_moved"))), "]' adventure into space #", @g("space_this"), ".")), @call(2117,"end_adv")))), @call(2117,"you_not_inadv"));
======

**TO TEST**
// [BT] Balance of Terror - offer choice of 'warp' or 'impulse'
@field bot = do_adv_5 : @s("gstate",13); @call(2117,"setmsg_wrpimp");

// to warp, COMMAND: Kirk(1),Scott(2),Spock(3),Starfleet(0)
@field bot = do_adv_5w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","officer with Command");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_1"),@g("rack_inadv")),
      @eq(@g("ccloc_2"),@g("rack_inadv")),
      @eq(@g("ccloc_3"),@g("rack_inadv")),
      @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_5w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_5i"))
  );
--------
**TEST**
@field bot = do_adv_5w : @call(2117,"echo_warp"); @s("why_warp_ok","officer with Command"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_1"),@g("rack_inadv")), @eq(@g("ccloc_2"),@g("rack_inadv")), @eq(@g("ccloc_3"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_5w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_5i")));
========

// Warp confirmed. Now decide who you're going to fight.
// 1) if there's already been a battle this turn, or it's not your turn,
// then there's no battle at all, and this adventure ends.
// 2) else if there's only 2 players, calculate who the opponent is.
// 3) else ask who the opponent will be.
@field bot = do_adv_5w1 :
  @switch("1",
    @not(@eq(@g("whoclr_inadv"),@g("whoclr_turn"))), @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"", @g("whocna_inadv"),
        "can't start a battle when it's not %p turn, so no battle occurs.\""
      )),
      @call(2117,"end_adv")
    ),
    @eq(@g("isbatdone"),1), @print(
      @tellroom(@location("%#"),"",
        "GameBoard says, \"There's already been a battle this turn, so no battle occurs.\""
      ),
      @call(2117,"end_adv")
    ),
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @tellroom(@location("%#"),"",@print( "GameBoard says, \"",
        @g("whocna_inadv"), " challenges ",
        @g("whocna_chosen"), " to battle.")),
      @call(2117,"do_adv_5wb")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",14), @s("q1","who will you battle?"), @call(2117,"q_who")
    )
  );
---------
**TEST**
@field bot = do_adv_5w1 : @switch("1", @not(@eq(@g("whoclr_inadv"),@g("whoclr_turn"))), @print(@tellroom(@location("%#"),"",@print("GameBoard says, \"", @g("whocna_inadv"), "can't start a battle when it's not %p turn, so no battle occurs.\"")), @call(2117,"end_adv")), @eq(@g("isbatdone"),1), @print(@tellroom(@location("%#"),"", @print("GameBoard says, \"There's already been a battle this turn, so no battle occurs.\"")), @call(2117,"end_adv")), @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @tellroom(@location("%#"),"",@print( "GameBoard says, \"", @g("whocna_inadv"), " challenges ", @g("whocna_chosen"), " to battle.")), @call(2117,"do_adv_5wb")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",14), @s("q1","who will you battle?"), @call(2117,"q_who")));
=========

**TEST**
// has chosen which player to battle
@field bot = do_adv_5wp : @call(2117,"echo_player"); @call(2117,"do_adv_5wb");

// TODO: battle whoclr_chosen, you on '4', he on '6'. He moves first.
@field bot = do_adv_5wb : TODO
  @s("whoclr_bat1",@g("whoclr_inadv"));
  @s("whoclr_bat2",@g("whoclr_chosen"));
  @s(@print("ship",@g("whoclr_bat1"),"_loc"),21);
  @s(@print("ship",@g("whoclr_bat2"),"_loc"),21);
  @s(@print("ship",@g("whoclr_bat1"),"_pos"),4);
  @s(@print("ship",@g("whoclr_bat2"),"_loc"),6);
  @s("whoclr_bturn",@g("whoclr_bat2"));
  @call(2117,"do_battle");

// draw a battle card, then start a battle
// 1) if there's already been a battle this turn, or it's not your turn,
// then there's no battle at all, and this adventure ends.
// 2) else if there's only 2 players, calculate who the opponent is.
// 3) else ask who the opponent will be (gstate 15).
@field bot = do_adv_5i :
  @call(2117,"echo_impulse");
  @tellroom(@location("%#"),"","[TODO (5i): draw 1 battle card]");
  @switch("1",
    @not(@eq(@g("whoclr_inadv"),@g("whoclr_turn"))), @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"", @g("whocna_inadv"),
        "can't start a battle when it's not %p turn, so no battle occurs.\""
      )),
      @call(2117,"end_adv")
    ),
    @eq(@g("isbatdone"),1), @print(
      @tellroom(@location("%#"),"", @print(
        "GameBoard says, \"There's already been a battle this turn, so no battle occurs.\""
      )),
      @call(2117,"end_adv")
    ),
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @tellroom(@location("%#"),"",@print( "GameBoard says, \"",
        @g("whocna_inadv"), " challenges ",
        @g("whocna_chosen"), " to battle.")),
      @call(2117,"do_adv_5ib")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",15), @s("q1","who will you battle?"), @call(2117,"q_who")
    )
  );
--------
**TEST**
@field bot = do_adv_5i : @call(2117,"echo_impulse"); @tellroom(@location("%#"),"","[TODO (5i): draw 1 battle card]"); @switch("1", @not(@eq(@g("whoclr_inadv"),@g("whoclr_turn"))), @print(@tellroom(@location("%#"),"",@print("GameBoard says, \"", @g("whocna_inadv"), "can't start a battle when it's not %p turn, so no battle occurs.\"")), @call(2117,"end_adv")), @eq(@g("isbatdone"),1), @print(@tellroom(@location("%#"),"", @print("GameBoard says, \"There's already been a battle this turn, so no battle occurs.\"")), @call(2117,"end_adv")), @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @tellroom(@location("%#"),"",@print( "GameBoard says, \"", @g("whocna_inadv"), " challenges ", @g("whocna_chosen"), " to battle.")), @call(2117,"do_adv_5ib")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",15), @s("q1","who will you battle?"), @call(2117,"q_who")));
========

@field bot = do_adv_5ip : TODO
  @call(2117,"echo_player");
@field bot = do_adv_5ib : TODO

**TEST**
// [CK] The Conscience of the King - choice of 'danger' or 'protect'
@field bot = do_adv_6 : @s("gstate",16); @call(2117,"setmsg_danpro");

// [CK-Dan]
// 1) if you don't have any crewmen to maroon, end adv.
// 2) else calc LeastCrew player.
//    If tie, ask which player LeastCrew will be;
//    else continue to ask LeastCrew which space it'll be marooned to.
@field bot = do_adv_6d :
  @call(2117,"echo_danger"); @call(2117,"calc_whoclr_least");
  @switch("1",
    @eq(@g(@print("ncc_",@add(40,@g("whoclr_inadv")))),0), @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"Since ", @g("whocna_inadv"),
        " has no crew to maroon...\""
      )),
      @call(2117,"end_adv")
    ),
    @eq(@g("whoclr_least"),0), @print(
      @s("gstate",18),
      @s("q1","there's a tie for who has the 'Least Crew'. You must choose one. Will it be:"),
      @call(2117,"q_who")
    ),
    @print(
      @call(2117,"calc_whodbr_least"), @s("gstate",19),
      @tellroom(@location("%#"),"",@print(
        "GameBoard asks ", @g("whorna_least"), ", \"",
        @g("whocna_least"), 
        "Choose the space where ", @g("whocna_inadv"),
        "must maroon one of crewmember, eg: 'SPACE 3'.\""
      ))
    )
  );
-----
**TEST**
@field bot = do_adv_6d : @call(2117,"echo_danger"); @call(2117,"calc_whoclr_least"); @switch("1", @eq(@g(@print("ncc_",@add(40,@g("whoclr_inadv")))),0), @print(@tellroom(@location("%#"),"",@print("GameBoard says, \"Since ", @g("whocna_inadv"), " has no crew to maroon...\"")), @call(2117,"end_adv")), @eq(@g("whoclr_least"),0), @print(@s("gstate",18), @s("q1","there's a tie for who has the 'Least Crew'. You must choose one. Will it be:"), @call(2117,"q_who")), @print(@call(2117,"calc_whodbr_least"), @s("gstate",19), @tellroom(@location("%#"),"",@print("GameBoard asks ", @g("whorna_least"), ", \"", @g("whocna_least"), "Choose the space where ", @g("whocna_inadv"), "must maroon one of crewmember, eg: 'SPACE 3'.\""))));
=====

**TEST NODEL**
@field bot = do_adv_6dp : @call(2117,"echo_player"); @call(2117,"do_adv_6dpz");

@field bot = do_adv_6dpz : TODO

// space selected, now figure out which crewman
@field bot = do_adv_6ds :
  @call(2117,"calc_whodbr_least");
  @switch("%#",@g("whodbr_least"),@print(
    @call(2117,"echo_space"),
    @switch(@g(@print("ncc_",@add(40,@g("whoclr_inadv")))),
      "1",@print(
        @fieldloop(2117,"ccloc_",@switch("%v", @add(40,@g("whoclr_inadv")),
          @s("crew_chosen",@substr("%f",6))
        )),
        @call(2117,"do_adv_6dcz")
      ),
      @print(
        @s("gstate",17),
        @tellroom(@location("%#"),"",@print(
          "GameBoard says (to ", @g("whorna_inadv"),
          "), \"", @g("whocna_inadv"),
          ", choose which of your crewman to maroon, eg: 'CREW SMITH'.\""
        ))
      )
    )
  ), @call(2117,"you_not_least"));
------
**ADD**
@field bot = do_adv_6ds : @call(2117,"calc_whodbr_least"); @switch("%#",@g("whodbr_least"),@print(@call(2117,"echo_space"), @switch(@g(@print("ncc_",@add(40,@g("whoclr_inadv")))), "1",@print(@fieldloop(2117,"ccloc_",@switch("%v", @add(40,@g("whoclr_inadv")), @s("crew_chosen",@substr("%f",6)))), @call(2117,"do_adv_6dcz")), @print(@s("gstate",17), @tellroom(@location("%#"),"",@print("GameBoard says (to ", @g("whorna_inadv"), "), \"", @g("whocna_inadv"), ", choose which of your crewman to maroon, eg: 'CREW SMITH'.\""))))), @call(2117,"you_not_least"));
======

@field bot = do_adv_6dc : TODO
@field bot = do_adv_6dcz : TODO

// to protect, must have KIRK (1), RAND (6), or RILEY (13)
@field bot = do_adv_6p :
  @call(2117,"echo_protect");
  @s("why_pro_ok","of Kirk, Rand, or Riley");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_1"),@g("rack_inadv")),
      @eq(@g("ccloc_6"),@g("rack_inadv")),
      @eq(@g("ccloc_13"),@g("rack_inadv"))), "1", @print(
    @call("echo_pro_ok"), @call(2117,"end_adv")
    ),
    @print(@call("echo_pro_nok"), @call(2117,"do_adv_6d"))
  );
---------
**TEST**
@field bot = do_adv_6p : @call(2117,"echo_protect"); @s("why_pro_ok","of Kirk, Rand, or Riley"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_1"),@g("rack_inadv")), @eq(@g("ccloc_6"),@g("rack_inadv")), @eq(@g("ccloc_13"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_pro_ok"), @call(2117,"end_adv")), @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_6d")));
=========

**TEST**
// [CMl] Court Martial - choice of 'danger' or 'protect'
@field bot = do_adv_7 : @s("gstate",20); @call(2117,"setmsg_danpro");

@field bot = do_adv_7d : TODO
  @call(2117,"echo_danger");

// to protect, must have SPOCK (3), SCOTT (2), or UHURA (4)
@field bot = do_adv_7p :
  @call(2117,"echo_protect");
  @s("why_pro_ok","of Spock, Scott, or Uhura");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_3"),@g("rack_inadv")),
      @eq(@g("ccloc_2"),@g("rack_inadv")),
      @eq(@g("ccloc_4"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_pro_ok"), @call(2117,"end_adv")
    ),
    @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_7d"))
  );
-----------
**TEST**
@field bot = do_adv_7p : @call(2117,"echo_protect"); @s("why_pro_ok","of Spock, Scott, or Uhura"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_3"),@g("rack_inadv")), @eq(@g("ccloc_2"),@g("rack_inadv")), @eq(@g("ccloc_4"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_pro_ok"), @call(2117,"end_adv")), @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_7d")));
===========

**TEST**
// [CMn] The Corbomite Maneuver - choice of 'danger' or 'protect'
@field bot = do_adv_8 : @s("gstate",21); @call(2117,"setmsg_danpro");

// 1) if there's already been a battle this turn, or it's not your turn,
// then there's no battle at all, and this adventure ends.
// 2) else if there's only 2 players, calculate who the opponent is.
// 3) else ask who the opponent will be.
@field bot = do_adv_8d :
  @call(2117,"echo_danger");
  @switch("1",
    @not(@eq(@g("whoclr_inadv"),@g("whoclr_turn"))), @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"", @g("whocna_inadv"),
        "can't start a battle when it's not %p turn, so no battle occurs.\""
      )),
      @call(2117,"end_adv")
    ),
    @eq(@g("isbatdone"),1), @print(
      @tellroom(@location("%#"),"",
        "GameBoard says, \"There's already been a battle this turn, so no battle occurs.\""
      ),
      @call(2117,"end_adv")
    ),
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @tellroom(@location("%#"),"",@print( "GameBoard says, \"",
        @g("whocna_inadv"), " challenges ",
        @g("whocna_chosen"), " to battle.")),
      @call(2117,"do_adv_8db")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",22), @s("q1","who will you battle?"), @call(2117,"q_who")
    )
  );
---------
**TEST**
@field bot = do_adv_8d : @call(2117,"echo_danger"); @switch("1",@not(@eq(@g("whoclr_inadv"),@g("whoclr_turn"))), @print(@tellroom(@location("%#"),"",@print("GameBoard says, \"", @g("whocna_inadv"), "can't start a battle when it's not %p turn, so no battle occurs.\"")), @call(2117,"end_adv")), @eq(@g("isbatdone"),1), @print(@tellroom(@location("%#"),"", "GameBoard says, \"There's already been a battle this turn, so no battle occurs.\""), @call(2117,"end_adv")), @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @tellroom(@location("%#"),"",@print( "GameBoard says, \"", @g("whocna_inadv"), " challenges ", @g("whocna_chosen"), " to battle.")), @call(2117,"do_adv_8db")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",22), @s("q1","who will you battle?"), @call(2117,"q_who")));
=========

**TEST NODEL**
@field bot = do_adv_8dp : @call(2117,"echo_player"); @call(2117,"do_adv_8db");

// TODO: battle whoclr_chosen, you on '6', he on '4'. You move first.
@field bot = do_adv_8db : TODO
  @s("whoclr_bat1",@g("whoclr_inadv"));
  @s("whoclr_bat2",@g("whoclr_chosen"));
  @s(@print("ship",@g("whoclr_bat1"),"_loc"),21);
  @s(@print("ship",@g("whoclr_bat2"),"_loc"),21);
  @s(@print("ship",@g("whoclr_bat1"),"_pos"),6);
  @s(@print("ship",@g("whoclr_bat2"),"_loc"),4);
  @s("whoclr_bturn",@g("whoclr_bat1"));
  @call(2117,"do_battle");

// to protect, must have KYLE (5), PALAMAS (21), or BARROWS (20)
@field bot = do_adv_8p :
  @call(2117,"echo_protect");
  @s("why_pro_ok","of Kyle, Palamas, or Barrows");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_5"),@g("rack_inadv")),
      @eq(@g("ccloc_21"),@g("rack_inadv")),
      @eq(@g("ccloc_20"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_pro_ok"), @call(2117,"end_adv")
    ),
    @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_8d"))
  );
----------
**TEST**
@field bot = do_adv_8p : @call(2117,"echo_protect"); @s("why_pro_ok","of Kyle, Palamas, or Barrows"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_5"),@g("rack_inadv")), @eq(@g("ccloc_21"),@g("rack_inadv")), @eq(@g("ccloc_20"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_pro_ok"), @call(2117,"end_adv")), @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_8d")));
==========

// [Cms] The Cloud-minders - no choice
@field bot = do_adv_9 : TODO

// [Cp] Catspaw - no choice
@field bot = do_adv_10 : TODO

**TO TEST**
// [CX] Charlie X - choose 'warp' or 'impulse'
@field bot = do_adv_11 : @s("gstate",23); @call(2117,"setmsg_wrpimp");

// to warp: Rand(6), Palamas(21), Romaine(22)
@field bot = do_adv_11w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","of Rand, Palamas, or Romaine");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_6"),@g("rack_inadv")),
      @eq(@g("ccloc_21"),@g("rack_inadv")),
      @eq(@g("ccloc_22"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_11wz")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_11i"))
  );
-------
**ADD**
@field bot = do_adv_11w : @call(2117,"echo_warp"); @s("why_warp_ok","of Rand, Palamas, or Romaine"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_6"),@g("rack_inadv")), @eq(@g("ccloc_21"),@g("rack_inadv")), @eq(@g("ccloc_22"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_11wz")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_11i")));
=======

**ADD NODEL**
@field bot = do_adv_11wz : @s("gstate",24); @call(2117,"q_ct");

// for each player other than inadv, move all the cards of the chosen
// cardtype from player's hand to inadv's hand, if any.
@field bot = do_adv_11wt :
  @switch("%#",@g("whodbr_inadv"),@print(
    @call(2117,"echo_ct"),
    @s("arg2",@add(40,@g("whoclr_inadv"))),
    @fieldloop(2117,"bcloc_",@switch("%v",{41,42,43,44},
      @switch("1",@and( @not(@eq("%v",@g("arg2"))),
      @eq(@g(@print("bcct_",@substr("%f",6))),@g("ct_chosen")) ),@print(
        @s("arg1","%v"),
        @s("arg3",@substr("%f",6)),
        @call(2117,"bcgive1")
      ))
    )),
    @call(2117,"end_adv")
  ), @call(2117,"you_not_inadv"));
-----
**ADD**
@field bot = do_adv_11wt : @switch("%#",@g("whodbr_inadv"),@print(@call(2117,"echo_ct"), @s("arg2",@add(40,@g("whoclr_inadv"))), @fieldloop(2117,"bcloc_",@switch("%v",{41,42,43,44}, @switch("1",@and( @not(@eq("%v",@g("arg2"))), @eq(@g(@print("bcct_",@substr("%f",6))),@g("ct_chosen")) ),@print(@s("arg1","%v"), @s("arg3",@substr("%f",6)), @call(2117,"bcgive1"))))), @call(2117,"end_adv")), @call(2117,"you_not_inadv"));
=====  

// name the player to get a cardtype from
// 1) If 2-player game, calc who whoclr_chosen is,
// 2) Else ask.
@field bot = do_adv_11i :
  @call(2117,"echo_impulse");
  @switch("1",
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @call(2117,"do_adv_11ip")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",25), @s("q1","who will you ask for a card?"),
      @call(2117,"q_who")
    )
  );
-----
**TEST**
@field bot = do_adv_11i : @call(2117,"echo_impulse"); @switch("1", @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @call(2117,"do_adv_11ip")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",25), @s("q1","who will you ask for a card?"), @call(2117,"q_who")));
=====

**ADD NODEL**
@field bot = do_adv_11ip : @call(2117,"echo_player"); @call(2117,"do_adv_11ipz");

**ADD NODEL**
// know the player, now name a cardtype
@field bot = do_adv_11ipz : @s("gstate",26); @call(2117,"q_ct");

// We now know the player and cardtype.
// 1) if chosen player hasn't got such a card, say so and end adv.
// 2) else, if he has a generic card of that type, autochoose it.
// 3) else, ask chosen to now name which of his cards to give
@field bot = do_adv_11it : TODO

// know the player and specific card, so move it over
// (unless, of course, he's named a card not of the given type,
// or a card he doesn't actually have.)
@field bot = do_adv_11iz : TODO

**TO TEST**
// [DD] The Devil in the Dark - choose 'warp' or 'impulse'
@field bot = do_adv_12 : @s("gstate",27); @call(2117,"setmsg_wrpimp");

// to warp, Spock(3), Jones(16), Landon(18)
@field bot = do_adv_12w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","of Spock, Jones, or Landon");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_3"),@g("rack_inadv")),
      @eq(@g("ccloc_16"),@g("rack_inadv")),
      @eq(@g("ccloc_18"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_12w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_12i")
    )
  );
---------
**TEST**
@field bot = do_adv_12w : @call(2117,"echo_warp"); @s("why_warp_ok","of Spock, Jones, or Landon"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_3"),@g("rack_inadv")), @eq(@g("ccloc_16"),@g("rack_inadv")), @eq(@g("ccloc_18"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_12w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_12i")));
=========

// [DD] choose another player who will have to discard 3 cards at random
// 1) if there's only 2 players, calculate who the other one is.
// 2) else ask to choose a player.
@field bot = do_adv_12w1 :
  @switch("1",
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @call(2117,"do_adv_12wz")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",28), @s("q1","choose who discards three cards at random."),
      @call(2117,"q_who")
    )
  );
---------
**TEST**
@field bot = do_adv_12w1 : @switch("1", @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @call(2117,"do_adv_12wz")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",28), @s("q1","choose who discards three cards at random."), @call(2117,"q_who")));
=========

@field bot = do_adv_12wp : TODO
  @call(2117,"echo_player");

// [DD-WRP] whoclr_chosen discards 3 cards at random
@field bot = do_adv_12wz : [TODO: 12wz]

// [DD-IMP] choose another player who will have to discard a card of his choice
// 1) if there's only 2 players, calculate who the other one is.
// 2) else ask to choose a player.
@field bot = do_adv_12i :
  @call(2117,"echo_impulse");
  @switch("1",
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @call(2117,"do_adv_12iz")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",29), @s("q1","choose who will discard a card."),
      @call(2117,"q_who")
    )
  );
---------
**TEST**
@field bot = do_adv_12i : @call(2117,"echo_impulse"); @switch("1", @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @call(2117,"do_adv_12iz")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",29), @s("q1","choose who will discard a card."), @call(2117,"q_who")));
=========

@field bot = do_adv_12ip : TODO
  @call(2117,"echo_player");

// [DD-IMP] whoclr_chosen chooses a card to discard
@field bot = do_adv_12ic : TODO

// [DD-IMP] whoclr_chosen discards the bcard_chosen
@field bot = do_adv_12iz : TODO

**TEST**
// [Dma] The Doomsday Machine - choose 'danger' or 'protect'
@field bot = do_adv_13 : @s("gstate",31); @call(2117,"setmsg_danpro");

@field bot = do_adv_13d : TODO
  @call(2117,"echo_danger");

// to protect, NAVIGATION: CHEKOV (12), RILEY (13), SULU (14), STARFLEET (0)
// TODO: CADET-Nav (15) plus KIRK (1) plus PHASER 1 KIRK complication
@field bot = do_adv_13p :
  @call(2117,"echo_protect");
  @s("why_pro_ok","officer with Navigation");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_12"),@g("rack_inadv")),
      @eq(@g("ccloc_13"),@g("rack_inadv")),
      @eq(@g("ccloc_14"),@g("rack_inadv")),
      @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_pro_ok"), @call(2117,"end_adv")
    ),
    @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_13d"))
  );
----------
**TEST**
@field bot = do_adv_13p : @call(2117,"echo_protect"); @s("why_pro_ok","officer with Navigation"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_12"),@g("rack_inadv")), @eq(@g("ccloc_13"),@g("rack_inadv")), @eq(@g("ccloc_14"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_pro_ok"), @call(2117,"end_adv")), @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_13d")));
==========

**TEST**
// [DMd] Dagger of the Mind - choose 'danger' or 'protect'
@field bot = do_adv_14 : @s("gstate",32); @call(2117,"setmsg_danpro");

// tmpc = countYourUnlockedCrew()
@field bot = do_adv_14d :
  @call(2117,"echo_danger");
  @s("tmpc",0);
  @fieldloop(2117,"ccloc_",@let("k"=>@substr("%f",6),@switch("1",
    @and( @eq("%v",@add(40,@g("whoclr_inadv"))),
          @eq(0,@g("cclkd_%k")) ), @print(
      @s("tmpc",@add(1,@g("tmpc"))),
      @s("crew_chosen","%k")
    )
  )));
  @switch(@g("tmpc"),
    "0", @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"", @g("whocna_inadv"),
        " has no unlocked crewmen to reveal.\""
      )),
      @call(2117,"end_adv")
    ),
    "1", @call(2117,"do_adv_14dcz"),
    @print(
      @s("gstate",33),
      @tellroom(@location("%#"),"",@print(
        "GameBoard says (to ", @g("whorna_inadv"),
        "), \"", @g("whocna_inadv"),
        ", choose which of your crewman to reveal, eg: 'CREW SMITH'.\""
      ))
    )
  );
-------
**ADD**
=======

@field bot = do_adv_14dc : TODO
@field bot = do_adv_14dcz : TODO

// to protect, must have KIRK (1), MANNING (17), or NOEL (10)
@field bot = do_adv_14p :
  @call(2117,"echo_protect");
  @s("why_pro_ok","of Kirk, Manning, or Noel");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_1"),@g("rack_inadv")),
      @eq(@g("ccloc_17"),@g("rack_inadv")),
      @eq(@g("ccloc_10"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_pro_ok"), @call(2117,"end_adv")
    ),
    @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_14d"))
  );
---------
**TEST**
@field bot = do_adv_14p : @call(2117,"echo_protect"); @s("why_pro_ok","of Kirk, Manning, or Noel"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_1"),@g("rack_inadv")), @eq(@g("ccloc_17"),@g("rack_inadv")), @eq(@g("ccloc_10"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_pro_ok"), @call(2117,"end_adv")), @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_14d")));
=========

**TEST**
// [DY] The Deadly Years - choose 'danger' or 'protect'
@field bot = do_adv_15 : @s("gstate",34); @call(2117,"setmsg_danpro");

@field bot = do_adv_15d : TODO
  @call(2117,"echo_danger");

**TEST**
// to protect, must have ROMAINE (22), NOEL (10), or CHEKOV (12)
@field bot = do_adv_15p :
  @call(2117,"echo_protect");
  @s("why_pro_ok","of Romaine, Noel, or Chekov");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_22"),@g("rack_inadv")),
      @eq(@g("ccloc_10"),@g("rack_inadv")),
      @eq(@g("ccloc_12"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_pro_ok"), @call(2117,"end_adv")
    ),
    @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_15d"))
  );
-----------
**TEST**
@field bot = do_adv_15p : @call(2117,"echo_protect"); @s("why_pro_ok","of Romaine, Noel, or Chekov"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_22"),@g("rack_inadv")), @eq(@g("ccloc_10"),@g("rack_inadv")), @eq(@g("ccloc_12"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_pro_ok"), @call(2117,"end_adv")), @print(@call(2117,"echo_pro_nok"), @call(2117,"do_adv_15d")));
===========

**TO TEST**
// [EI] The Enterprise Incident - choose 'warp' or 'impulse'
@field bot = do_adv_16 : @s("gstate",35); @call(2117,"setmsg_wrpimp");

// to warp, NAV: CHEKOV (12), RILEY (13), SULU (14), STARFLEET (0)
// TODO: CADET-Nav (15) plus KIRK (1) plus PHASER 1 KIRK complication
@field bot = do_adv_16w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","officer with Navigation");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_12"),@g("rack_inadv")),
      @eq(@g("ccloc_13"),@g("rack_inadv")),
      @eq(@g("ccloc_14"),@g("rack_inadv")),
      @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_16w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_16i"))
  );
---------
**TEST**
@field bot = do_adv_16w : @call(2117,"echo_warp"); @s("why_warp_ok","officer with Navigation"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_12"),@g("rack_inadv")), @eq(@g("ccloc_13"),@g("rack_inadv")), @eq(@g("ccloc_14"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_16w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_16i")));
=========

// ask for player or deck to get 1st card from
@field bot = do_adv_16w1 :
  @strloop(@g("whoclrs"),"x",@s("isclropt%x","1"));
  @s(@print("isclropt",@g("whoclr_inadv")),"0");
  @s("gstate",36); @s("q1","first"); @call(2117,"q_who_or_deck");
-----
**TEST**
@field bot = do_adv_16w1 : @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")); @s(@print("isclropt",@g("whoclr_inadv")),"0"); @s("gstate",36); @s("q1","first"); @call(2117,"q_who_or_deck");
=====

// 1) get 1st card from deck
// 2) then ask for player or deck to get 2nd card from (do_adv_16w2)
@field bot = do_adv_16wk1 : TODO
  @call(2117,"echo_deck");
  [TODO: draw card from deck];
  @call(2117,"do_adv_16w2");

// 1) get 1st card from whoclr_chosen
// 2) then ask for player or deck to get 2nd card from (do_adv_16w2)
@field bot = do_adv_16wp1 : TODO
  @call(2117,"echo_player");
  [TODO: draw card from whoclr_chosen];
  @call(2117,"do_adv_16w2");

// ask for player or deck to get 2nd card from
@field bot = do_adv_16w2 :
  @strloop(@g("whoclrs"),"x",@s("isclropt%x","1"));
  @s(@print("isclropt",@g("whoclr_inadv")),"0");
  @s("gstate",37); @s("q1","second"); @call(2117,"q_who_or_deck");
-----
**TEST**
@field bot = do_adv_16w2 : @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")); @s(@print("isclropt",@g("whoclr_inadv")),"0"); @s("gstate",37); @s("q1","second"); @call(2117,"q_who_or_deck");
=====

// get 2st card from deck, end adv.
@field bot = do_adv_16wk2 : TODO
  @call(2117,"echo_deck");

// get 2st card from whoclr_chosen, end adv
@field bot = do_adv_16wp2 : TODO
  @call(2117,"echo_player");

// Impulse. draw one card from deck
@field bot = do_adv_16i : TODO
  @call(2117,"echo_impulse");

// [EM] Errand of Mercy - choose a card to give
@field bot = do_adv_17 : TODO

// [ET] Elaan of Troyius - no choice
@field bot = do_adv_18 : TODO

// [EW] The Enemy Within - choose crewman with Command to give
@field bot = do_adv_19 :
  @s("ncmnd",0);
  @switch(@g("ccloc_1"),@add(40,@g("whoclr_inadv")),
    @s("ncmnd",@add(1,@g("ncmnd"))));
  @switch(@g("ccloc_2"),@add(40,@g("whoclr_inadv")),
    @s("ncmnd",@add(1,@g("ncmnd"))));
  @switch(@g("ccloc_3"),@add(40,@g("whoclr_inadv")),
    @s("ncmnd",@add(1,@g("ncmnd"))));
  @call(2117,"calc_whoclr_least");
  @switch("1",
    @lt(@g("ncmnd"),2), @print(
      @tellroom(@location("%#"),"",@print(
        "GameBoard says, \"But ", @g("whocna_inadv"),
        " doesn't have more than one crewman with Command, so...\""
      )),
      @call(2117,"end_adv")
    ),
    @eq(@g("whoclr_least"),0), @print(
      @s("gstate",40),
      @s("q1","there's a tie for who has the 'Least Crew'. You must choose one. Will it be:"),
      @s(2117,"q_who")
    ),
    @call(2117,"do_adv_19pz")
  );
----------
**TEST**
@field bot = do_adv_19 : @s("ncmnd",0); @switch(@g("ccloc_1"),@add(40,@g("whoclr_inadv")), @s("ncmnd",@add(1,@g("ncmnd")))); @switch(@g("ccloc_2"),@add(40,@g("whoclr_inadv")), @s("ncmnd",@add(1,@g("ncmnd")))); @switch(@g("ccloc_3"),@add(40,@g("whoclr_inadv")), @s("ncmnd",@add(1,@g("ncmnd")))); @call(2117,"calc_whoclr_least"); @switch("1", @lt(@g("ncmnd"),2), @print(@tellroom(@location("%#"),"",@print("GameBoard says, \"But ", @g("whocna_inadv"), " doesn't have more than one crewman with Command, so...\"")), @call(2117,"end_adv")), @eq(@g("whoclr_least"),0), @print(@s("gstate",40), @s("q1","there's a tie for who has the 'Least Crew'. You must choose one. Will it be:"), @s(2117,"q_who")), @call(2117,"do_adv_19pz"));
==========

**TEST NODEL**
@field bot = do_adv_19p : @call(2117,"echo_player"); @call(2117,"do_adv_19pz");

// ask to choose CREW KIRK, SPOCK, or SCOTT
@field bot = do_adv_19pz :
  @s("gstate",39);
  @tellroom(@location("%#"),"",@print(
    "GameBoard says (to ", @g("whorna_inadv"),
    "), \"", @g("whocna_inadv"),
    ", choose which of your crewman with Command to give to ",
    @g("whocna_least"), ", eg: 'CREW KIRK'.\""
  ));
------
**TEST**
@field bot = do_adv_19pz : @s("gstate",39); @tellroom(@location("%#"),"",@print("GameBoard says (to ", @g("whorna_inadv"), "), \"", @g("whocna_inadv"), ", choose which of your crewman with Command to give to ", @g("whocna_least"), ", eg: 'CREW KIRK'.\""));
======

@field bot = do_adv_19c : TODO

**TEST**
// [FC] Friday's Child - choose 'warp' or 'impulse'
@field bot = do_adv_20 : @s("gstate",41); @call(2117,"setmsg_wrpimp");

// to warp, COMMUN: Uhura(4),Kyle(5),Rand(6),Starfleet(0)
// TODO: Cadet-Commun(7) plus Kirk(1) plus Phaser 1 Kirk complication
@field bot = do_adv_20w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","officer with Communication");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_4"),@g("rack_inadv")),
      @eq(@g("ccloc_5"),@g("rack_inadv")),
      @eq(@g("ccloc_6"),@g("rack_inadv")),
      @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_20w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_20i"))
  );
--------
**TEST**
@field bot = do_adv_20w : @call(2117,"echo_warp"); @s("why_warp_ok","officer with Communication"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_4"),@g("rack_inadv")), @eq(@g("ccloc_5"),@g("rack_inadv")), @eq(@g("ccloc_6"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_20w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_20i")));
========

@field bot = do_adv_20w1 :
  @strloop(@g("whoclrs"),"x",@s("isclropt%x","1"));
  @s(@print("isclropt",@g("whoclr_inadv")),"0");
  @s("gstate",42); @s("q1","first"); @call(2117,"q_who_or_deck");
-----
**TEST**
@field bot = do_adv_20w1 : @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")); @s(@print("isclropt",@g("whoclr_inadv")),"0"); @s("gstate",42); @s("q1","first"); @call(2117,"q_who_or_deck");
=====

// 1) get 1st card from deck
// 2) then ask for player or deck to get 2nd card from (do_adv_20w2)
@field bot = do_adv_20wk1 : TODO
  @call(2117,"echo_deck");
  [TODO: draw card from deck];
  @call(2117,"do_adv_20w2");

// 1) get 1st card from whoclr_chosen
// 2) then ask for player or deck to get 2nd card from (do_adv_20w2)
@field bot = do_adv_20wp1 : TODO
  @call(2117,"echo_player");
  [TODO: draw card from whoclr_chosen];
  @call(2117,"do_adv_20w2");

// ask for player or deck to get 2nd card from
@field bot = do_adv_20w2 :
  @strloop(@g("whoclrs"),"x",@s("isclropt%x","1"));
  @s(@print("isclropt",@g("whoclr_inadv")),"0");
  @s("gstate",43); @s("q1","second"); @call(2117,"q_who_or_deck");
-----
**TEST**
@field bot = do_adv_20w2 : @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")); @s(@print("isclropt",@g("whoclr_inadv")),"0"); @s("gstate",43); @s("q1","second"); @call(2117,"q_who_or_deck");
=====

// get 2nd card from whoclr_chosen, end adv
@field bot = do_adv_20wp2 : TODO
  @call(2117,"echo_player");

// get 2nd card from deck, end adv
@field bot = do_adv_20wk2 : TODO
  @call(2117,"echo_deck");

// draw one card from deck, end adv
@field bot = do_adv_20i : TODO
  @call(2117,"echo_impulse");

**TEST**
// [FW] For the World is Hollow... - choose 'warp' or 'impulse'
@field bot = do_adv_21 : @s("gstate",44); @call(2117,"setmsg_wrpimp");

// to warp, Manning(17), McCoy(8), Chapel(9)
@field bot = do_adv_21w :
  @call(2117,"echo_warp");
  @s("why_echo_ok","of Manning, McCoy, or Chapel");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_17"),@g("rack_inadv")),
      @eq(@g("ccloc_8"),@g("rack_inadv")),
      @eq(@g("ccloc_9"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_21w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_21i"))
  );
--------
**TEST**
@field bot = do_adv_21w : @call(2117,"echo_warp"); @s("why_echo_ok","of Manning, McCoy, or Chapel"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_17"),@g("rack_inadv")), @eq(@g("ccloc_8"),@g("rack_inadv")), @eq(@g("ccloc_9"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_21w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_21i")));
========

@field bot = do_adv_21w1 : TODO
@field bot = do_adv_21i : TODO
  @call(2117,"echo_impulse");

**TEST**
// [GT] The Gamesters of Triskelion - choose 'warp' or 'impulse'
@field bot = do_adv_22 : @s("gstate",47); @call(2117,"setmsg_wrpimp");

// to warp, COMMUN: Uhura(4), Kyle(5), Rand(6), Starfleet(0)
// TODO: Cadet-Commun(7) plus Kirk(1) plus Phaser 1 Kirk complication
@field bot = do_adv_22w :
  @call(2117,"echo_warp");
  @s("why_warp_ok","officer with Communication");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_4"),@g("rack_inadv")),
      @eq(@g("ccloc_5"),@g("rack_inadv")),
      @eq(@g("ccloc_6"),@g("rack_inadv")),
      @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_22w1")
    ),
    @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_22i"))
  );
--------
**TEST**
@field bot = do_adv_22w : @call(2117,"echo_warp"); @s("why_warp_ok","officer with Communication"); @s("rack_inadv",@add(40,@g("whoclr_inadv"))); @switch(@or(@eq(@g("ccloc_4"),@g("rack_inadv")), @eq(@g("ccloc_5"),@g("rack_inadv")), @eq(@g("ccloc_6"),@g("rack_inadv")), @eq(@g("ccloc_0"),@g("rack_inadv"))), "1", @print(@call(2117,"echo_warp_ok"), @call(2117,"do_adv_22w1")), @print(@call(2117,"echo_warp_nok"), @call(2117,"do_adv_22i")));
========

// 1) if 2-player game, calc who it is
// 2) else ask choice of other player
@field bot = do_adv_22w1 :
  @switch("1",
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @call(2117,"do_adv_22wp")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",48), @s("q1","whose hand do you want to trade cards with?"),
      @call(2117,"q_who")
    )
  );
-----
**TEST**
@field bot = do_adv_22w1 : @switch("1", @eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x", @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @call(2117,"do_adv_22wp")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",48), @s("q1","whose hand do you want to trade cards with?"), @call(2117,"q_who")));
=====

@field bot = do_adv_22wp : TODO
  @call(2117,"echo_player");

@field bot = do_adv_22i :
  @call(2117,"echo_impulse");
  @switch("1",
    @eq(@g("nwho"),2), @print(
      @strloop(@g("whoclrs"),"x",@switch("%x",
        @g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))),
      @call(2117,"do_adv_22ip")
    ),
    @print(
      @strloop(@g("whoclrs"),"x",@s("isclropt%x","1")),
      @s(@print("isclropt",@g("whoclr_inadv")),"0"),
      @s("gstate",50), @s("q1","who do you want to trade hands with?"),
      @call(2117,"q_who")
    )
  );
-----
**TEST**
@field bot = do_adv_22i : @call(2117,"echo_impulse"); @switch("1",@eq(@g("nwho"),2), @print(@strloop(@g("whoclrs"),"x",@switch("%x",@g("whoclr_inadv"), "", @s("whoclr_chosen","%x"))), @call(2117,"do_adv_22ip")), @print(@strloop(@g("whoclrs"),"x",@s("isclropt%x","1")), @s(@print("isclropt",@g("whoclr_inadv")),"0"), @s("gstate",50), @s("q1","who do you want to trade hands with?"), @call(2117,"q_who")));
=====

@field bot = do_adv_22ip : TODO
  @call(2117,"echo_player");

**TEST**
// [LZ] The Lights of Zetar - choose 'warp' or 'impulse'
@field bot = do_adv_23 : @s("gstate",51); @call(2117,"setmsg_wrpimp");

// to warp, Scott(2), Romaine(22), Barrows(20)
@field bot = do_adv_23w : TODO
  @call(2117,"echo_warp");
  @s("why_warp_ok","of Scott, Romaine, or Barrows");
  @s("rack_inadv",@add(40,@g("whoclr_inadv")));
  @switch(@or(@eq(@g("ccloc_2"),@g("rack_inadv")),
      @eq(@g("ccloc_22"),@g("rack_inadv")),
      @eq(@g("ccloc_20"),@g("rack_inadv"))), "1", @print(
    @call(2117,"echo_warp_ok"), @call(2117,"do_adv_23w1")
    ),
    @print(call(2117,"echo_warp_nok"), @call(2117,"do_adv_23i"))
  );
--------
**TEST**
@field bot = do_adv_23w : @call(2117,"echo_warp"); @s("why_warp_ok","of Scot