! ****************************************************************** ! subway.inf ! ---------- ! Add-on file for SPIRITWRAK ! -- Contains Great Underground Subway system (trains and tunnels ! and various denizens) ! ****************************************************************** ! First, some globals (sigh) ! Two for each train line -- one indicates 'direction' of train, ! the second indicates the current 'location' of train. global PURPLELINE_dir = 0; ! 0 North, 1 South global PURPLELINE_loc = 1; ! 1-10, frostham to fublio global ORANGELINE_dir = 0; ! 0 West, 1 East global ORANGELINE_loc = 1; ! 1-10, Aragain to Gurth global GREENLINE_dir = 0; ! 0 North, 1 South global GREENLINE_loc = 1; ! 1-10, New Borphee to Miznia ! (Subway stops in each city are named as part of the city in ! caps, concat'd with "_GUSStation". All are (of course) ! underground. Object FROSTHAM_GUSStation "Frostham GUS Station" with description [; print "You are standing "; if (self hasnt general) { give self general; "in a dimly lit underground \ chamber. There seems \ to be a much larger room to the southeast, which is \ unfortunately almost completely blocked by a long metal \ barricade and gate. Stairs lead up to the outside."; } "at the entrance to the Frostham \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the southeast, or \ stairs lead up into the city."; ], name "stairs" "platform", u_to FROSTHAM_GUSStop, se_to FG_Gate, before [; Go: if (noun==se_obj) { if (FG_Gate_slot hasnt general) "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give FG_Gate_slot ~general; print "You saunter through the apparently open gate.^"; } } ], has light; Object ARAGAIN_GUSStation "Aragain GUS Station" with description "You are standing at the entrance to the Aragain \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the southeast, or \ stairs lead up into the city. Some lettering on the \ wall reads ~TRANSFER STATION~.", name "stairs" "platform", u_to ARAGAIN_GUSStop, se_to AG_Gate, before [; Go: if (noun==se_obj) { if (AG_Gate_slot hasnt general) "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give AG_Gate_slot ~general; print "You saunter through the apparently open gate.^"; } } ], has light; Object FUBLIO_GUSStation "Fublio Valley GUS Station" with description "You are standing at the entrance to the \ South Fublio Valley \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the southeast, or \ stairs lead up into the city.", name "stairs" "platform", u_to FUBLIO_GUSStop, se_to FublioG_Gate, before [; Go: if (noun==se_obj) { if (FublioG_Gate_slot hasnt general) "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give FublioG_Gate_slot ~general; print "You saunter through the apparently open gate.^"; } } ], has light; ! (Orange stations - one) Object ANTHAR_GUSStation "Greater Anthar GUS Station" with description "You are standing at the entrance to the Greater Anthar \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the south, or \ stairs lead up into the city.", name "stairs" "platform", u_to ANTHAR_GUSStop, s_to AntharG_Gate, before [; Go: if (noun==s_obj) { if (AntharG_Gate_slot hasnt general) "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give AntharG_Gate_slot ~general; print "You saunter through the apparently open gate.^"; } } ], has light; ! (Green stations - three) Object GURTH_GUSStation "Gurth City GUS Station" with description "You are standing at the entrance to the Gurth City \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the southwest, or \ stairs lead up into the city. Some lettering on the \ wall reads ~TRANSFER STATION~.", name "stairs" "platform", u_to GURTH_GUSStop, sw_to GurthG_Gate, before [; Go: if (noun==u_obj) print "You are greeted by a light rain as you leave the \ station.^"; if (noun==sw_obj) { if (GurthG_Gate hasnt general) ! note diff "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give GurthG_Gate ~general; print "You saunter through the apparently open gate.^"; } } ], has light; Object BORPHEE_GUSStation "New Borphee GUS Station" with description "You are standing at the entrance to the New Borphee \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the southwest, or \ stairs lead up into the city.", name "stairs" "platform", u_to BORPHEE_GUSStop, sw_to BorpheeG_Gate, before [; Go: if (noun==u_obj) print "You enter the city and are nearly \ flattened by crowds rushing past.^"; if (noun==sw_obj) { if (BorpheeG_Gate_slot hasnt general) "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give BorpheeG_Gate_slot ~general; print "You saunter through the apparently open gate.^"; } } ], has light; Object MIZNIA_GUSStation "Miznia GUS Station" with description "You are standing at the entrance to the Miznia \ Great Underground Subway (GUS) station. The train \ platform lies past the gate to the southwest, or \ stairs lead up into the city.", name "stairs" "platform", u_to MIZNIA_GUSStop, sw_to MizniaG_Gate, before [; Go: if (noun==sw_obj) { if (MizniaG_Gate_slot hasnt general) "A strange buzzing noise sounds as you try \ to pass through the gate, and an invisible \ force blocks your way!"; else { give MizniaG_Gate_slot ~general; print "You saunter through the apparently open gate.^"; } } ], has light; Object FROSTHAM_GUSPlatform "Frostham Train Platform" with description [; print "You are standing in a long underground \ chamber. The east side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run south into a dark tunnel. \ Along one wall painted lettering \ reads ~FROSTHAM STATION~. \ A short walkway leads northwest, to a metal fence"; if (self has general) ". There is a large train car sitting on the tracks \ to the east."; else "."; ], name "tunnel", nw_to FG_Gate, s_to "A helpful subway worker says ~Hey pal, get outa there!~", e_to PURPLELINE_car, in_to PURPLELINE_car, before [; Go: ! if (noun == nw_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == e_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 2 or 3) { give self general; PURPLELINE_loc = 1; PURPLELINE_dir = 1; ! will be heading south "^Suddenly, from the south, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==10) "^You hear a distant rumbling noise from the south."; } else { if (self has general) { if (PURPLELINE_loc == 2) { give self ~general; "^The train doors close, and the train rolls off \ to the south."; } else { PURPLELINE_loc = 2; "^A few exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; ! (Classes for gates and slots) Class GUS_Gate_Class with name "gate" "metal", initial "A metal gate bisects the fence.", door_dir nw_to, door_to FROSTHAM_GUSPlatform, before [; Climb, JumpOver: "A subway worker yells ~Hey pal, no fare-jumpers!"; Open: "It looks like it's already open."; Close: "There doesn't seem to be anything to close."; Enter: "You'll have to walk in the appropriate direction to go through it."; ], description "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides", has static door transparent open; Class GUS_Gate_Slot_Class with name "slot" "metal" "thin" "small", description "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate.", before [; LetGo: "There's no way to get anything out of that tiny, \ thin slot."; Receive: if (noun has is_coin) { give self general; remove noun; ! collection "The coin slides into the slot with a satisfying thunk."; } "It doesn't look like that's going to fit into the slot."; ], size 1, has scenery container open; Object FG_Gate "platform gate" class GUS_Gate_Class, with initial [; if (location==FROSTHAM_GUSStation) "A metal gate bisects the fence to the southeast."; "A metal gate bisects the fence to the northwest."; ], door_dir [; if (location==FROSTHAM_GUSStation) return se_to; return nw_to; ], door_to [; if (location==FROSTHAM_GUSStation) return FROSTHAM_GUSPlatform; return FROSTHAM_GUSStation; ], before [; Enter: if (location==FROSTHAM_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == FROSTHAM_GUSStation) ". There's a thin slot on one of the sides."; else "."; ], found_in FROSTHAM_GUSStation FROSTHAM_GUSPlatform, ; Object FG_Gate_slot "metal slot" FG_Gate class GUS_Gate_Slot_Class with description [; if (location == FROSTHAM_GUSPlatform) "You can't see any such thing."; if (location == FROSTHAM_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate."; ], before [; if (location == FROSTHAM_GUSPlatform) "You can't see any such thing."; ], ; Object AG_Gate "platform gate" class GUS_Gate_Class with initial [; if (location==ARAGAIN_GUSStation) "A metal gate bisects the fence to the southeast."; "A metal gate bisects the fence to the northwest."; ], door_dir [; if (location==ARAGAIN_GUSStation) return se_to; return nw_to; ], door_to [; if (location==ARAGAIN_GUSStation) return ARAGAIN_GUSPlatform; return ARAGAIN_GUSStation; ], before [; Enter: if (location==FROSTHAM_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == ARAGAIN_GUSStation) ". There's a thin slot on one of the sides."; else "."; ], found_in ARAGAIN_GUSStation ARAGAIN_GUSPlatform, ; Object AG_Gate_slot "metal slot" AG_Gate class GUS_Gate_Slot_Class with description [; if (location == ARAGAIN_GUSPlatform) "You can't see any such thing."; if (location == ARAGAIN_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate."; ], before [; if (location == ARAGAIN_GUSPlatform) "You can't see any such thing."; ], ; Object FublioG_Gate "platform gate" class GUS_Gate_Class with initial [; if (location==FUBLIO_GUSStation) "A metal gate bisects the fence to the southeast."; "A metal gate bisects the fence to the northwest."; ], door_dir [; if (location==FUBLIO_GUSStation) return se_to; return nw_to; ], door_to [; if (location==FUBLIO_GUSStation) return FUBLIO_GUSPlatform; return FUBLIO_GUSStation; ], before [; Enter: if (location==FUBLIO_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == FUBLIO_GUSStation) ". There's a thin slot on one of the sides."; else "."; ], found_in FUBLIO_GUSStation FUBLIO_GUSPlatform, ; Object FublioG_Gate_slot "metal slot" FublioG_Gate class GUS_Gate_Slot_Class with description [; if (location == FUBLIO_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate."; !! See if this works instead... "You can't see any such thing."; ], before [; if (location == FUBLIO_GUSPlatform) "You can't see any such thing."; ], ; ! (Orange gates (1)) Object AntharG_Gate "platform gate" class GUS_Gate_Class with initial [; if (location==ANTHAR_GUSStation) "A metal gate bisects the fence to the south."; "A metal gate bisects the fence to the north."; ], door_dir [; if (location==ANTHAR_GUSStation) return s_to; return n_to; ], door_to [; if (location==ANTHAR_GUSStation) return ANTHAR_GUSPlatform; return ANTHAR_GUSStation; ], before [; Enter: if (location==ANTHAR_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == ANTHAR_GUSStation) ". There's a thin slot on one of the sides."; else "."; ], found_in ANTHAR_GUSStation ANTHAR_GUSPlatform, ; Object AntharG_Gate_slot "metal slot" AntharG_Gate class GUS_Gate_Slot_Class with description [; if (location == ANTHAR_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate."; "You can't see any such thing."; ], before [; if (location == ANTHAR_GUSPlatform) "You can't see any such thing."; ], ; ! (Green gates (3)) Object BorpheeG_Gate "platform gate" class GUS_Gate_Class with initial [; if (location==BORPHEE_GUSStation) "A metal gate bisects the fence to the southwest."; "A metal gate bisects the fence to the northeast."; ], door_dir [; if (location==BORPHEE_GUSStation) return sw_to; return ne_to; ], door_to [; if (location==BORPHEE_GUSStation) return BORPHEE_GUSPlatform; return BORPHEE_GUSStation; ], before [; Enter: if (location == BORPHEE_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == BORPHEE_GUSStation) ". There's a thin slot on one of the sides."; else "."; ], found_in BORPHEE_GUSStation BORPHEE_GUSPlatform, ; Object BorpheeG_Gate_slot "metal slot" BorpheeG_Gate class GUS_Gate_Slot_Class with description [; if (location == BORPHEE_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate."; "You can't see any such thing."; ], before [; if (location == BORPHEE_GUSPlatform) "You can't see any such thing."; ], ; ! (NOTE: Gurth is different, read: broken) Object GurthG_Gate "platform gate" class GUS_Gate_Class with initial [; if (location==GURTH_GUSStation) "A metal gate bisects the fence to the southwest."; "A metal gate bisects the fence to the northeast."; ], door_dir [; if (location==GURTH_GUSStation) return sw_to; return ne_to; ], door_to [; if (location==GURTH_GUSStation) return GURTH_GUSPlatform; return GURTH_GUSStation; ], before [; Enter: if (location == GURTH_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == GURTH_GUSStation) ". There's a thin slot on one of the sides that looks \ slightly dented."; else "."; ], found_in GURTH_GUSStation GURTH_GUSPlatform, ; Object GurthG_Gate_slot "metal slot" GurthG_Gate class GUS_Gate_Slot_Class with name "dented", description [; if (location == GURTH_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate. \ It looks slightly dented."; "You can't see any such thing."; ], before [; if (location == GURTH_GUSPlatform) "You can't see any such thing."; Receive: if (noun has is_coin) { give self general; remove noun; "The coin slides into the slot, but you hear a strange click \ almost immediately.^^\ A subway nymph suddenly appears. She looks at the gate \ disapprovingly. ~Broken again? I thought they \ just fixed it. Well, fine.~ She seems rather annoyed. \ ~We'll get someone to look at it, eventually. Bye!~ She \ disappears."; } if (noun==wire) { if (self hasnt general) "You poke the wire in the slot for a bit, but nothing \ happens."; if (self has general) { give self ~general; Achieved(20); give GurthG_Gate general; "You poke around in the slot, and manage to free something! \ There is a solid thunk-like noise."; } } "It doesn't look like that's going to fit into the slot."; ], ; Object MizniaG_Gate "platform gate" class GUS_Gate_Class with initial [; if (location==MIZNIA_GUSStation) "A metal gate bisects the fence to the southwest."; "A metal gate bisects the fence to the northeast."; ], door_dir [; if (location==MIZNIA_GUSStation) return sw_to; return ne_to; ], door_to [; if (location==MIZNIA_GUSStation) return MIZNIA_GUSPlatform; return MIZNIA_GUSStation; ], before [; Enter: if (location==MIZNIA_GUSStation) <>; else <>; ], description [; print "It's an odd metal gate that only comes up to about \ your waist. Odder still is the fact that there's \ no door on the gate, just two metal sides"; if (location == MIZNIA_GUSStation) ". There's a thin slot on one of the sides."; else "."; ], found_in MIZNIA_GUSStation MIZNIA_GUSPlatform, ; Object MizniaG_Gate_slot "metal slot" MizniaG_Gate class GUS_Gate_Slot_Class with description [; if (location == MIZNIA_GUSStation) "You see a rather small, thin slot that seems to be \ almost cut into one of the metal sides of the gate."; "You can't see any such thing."; ], before [; if (location==MIZNIA_GUSPlatform) "You can't see any such thing."; ], ; !Object FS_Platform_sign2 "laminated paper" FROSTHAM_GUSPlatform ! with name "paper" "laminated" "safety", ! initial "A small stiff-looking piece of paper is attached to the west wall.", ! description "The paper reads: ^^\ ! GREAT UNDERGROUND SUBWAY STATION RULES:^ ! 1) No going onto tracks.^ ! 2) No going into tunnels on foot unless authorized.", ! has static; Object train_tracks "train tracks" with name "tracks" "train", description "A pair of large metal train tracks.", found_in FROSTHAM_GUSPlatform ARAGAIN_GUSPlatform FUBLIO_GUSPlatform ARAGAIN_GUSPlatform2, has scenery; Object ARAGAIN_GUSPlatform "Aragain Train Platform" with description [; print "You are standing in a long underground \ chamber. The east side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run north and south into dark tunnels. \ Along one wall painted lettering \ reads ~ARAGAIN STATION~. \ A short walkway leads northwest, to a metal fence. \ There is also a stairway down here"; if (self has general) ". In addition, there is a large train car sitting on the tracks \ to the east."; else "."; ], name "tunnel" "tunnels" "stairway", nw_to AG_Gate, s_to "A helpful subway worker says ~Hey pal, get outa there!~", n_to "A helpful subway worker says ~Hey pal, get outa there!~", e_to PURPLELINE_car, d_to ARAGAIN_GUSPlatform2, in_to PURPLELINE_car, before [; Go: ! if (noun == nw_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == e_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 3 or 5) { give self general; PURPLELINE_loc = 5; PURPLELINE_dir = 1; ! will be heading south "^Suddenly, from the north, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==2 or 4 or 6) { give self general; PURPLELINE_loc = 5; PURPLELINE_dir = 0; ! will be heading north "^Suddenly, from the south, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==9) "^You hear a distant rumbling noise from the north."; if (i==10) "^You hear a distant rumbling noise from the south."; } else { if (self has general) { if (PURPLELINE_loc == 6) { give self ~general; "^The train doors close, and the train rolls off."; } else { PURPLELINE_loc = 6; "^A few exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; Object ARAGAIN_GUSPlatform2 "Aragain Train Platform (lower)" with description [; print "You are standing in a long underground \ chamber. The south side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run west into a dark tunnel. \ Along one wall painted lettering \ reads ~ARAGAIN STATION~. \ A set of stairs leads up out of the gloom"; if (self has general) ". There is a large train car sitting on the tracks \ to the south."; else "."; ], name "tunnel" "stairs", w_to "A helpful subway worker says ~Hey pal, get outa there!~", s_to ORANGELINE_car, in_to ORANGELINE_car, u_to ARAGAIN_GUSPlatform, before [; Go: if ((self hasnt general) && (noun == s_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 3 or 5) { give self general; ORANGELINE_loc = 9; ORANGELINE_dir = 0; ! will be heading west "^Suddenly, from the west, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and up \ the stairs."; } if (i==10) "^You hear a distant rumbling noise from the west."; } else { if (self has general) { if (ORANGELINE_loc == 10) { give self ~general; "^The train doors close, and the train heads off \ to the west."; } else { ORANGELINE_loc = 10; "^A few people exit the train, and hurry up the stairs. \ You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; Object FUBLIO_GUSPlatform "Fublio Valley Train Platform" with description [; print "You are standing in a long underground \ chamber. The east side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run north into a dark tunnel. \ Along one wall painted lettering \ reads ~FUBLIO VALLEY STATION~. \ A short walkway leads northwest, to a metal fence"; if (self has general) ". There is a large train car sitting on the tracks \ to the east."; else "."; ], name "tunnel", nw_to FublioG_Gate, n_to "A helpful subway worker says ~Hey pal, get outa there!~", e_to PURPLELINE_car, in_to PURPLELINE_car, before [; Go: ! if (noun == nw_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == e_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 3 or 4) { give self general; PURPLELINE_loc = 10; PURPLELINE_dir = 0; ! will be heading north "^Suddenly, from the north, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==10) "^You hear a distant rumbling noise from the north."; } else { if (self has general) { if (PURPLELINE_loc == 9) { give self ~general; "^The train doors close, and the train rolls off \ to the north."; } else { PURPLELINE_loc = 9; "^A few people exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; ! *** Orange line platforms Object GURTH_GUSPlatform2 "Gurth City Train Platform (lower)" with description [; print "You are standing in a long underground \ chamber. The south side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run east into a dark tunnel. \ Along one wall painted lettering \ reads ~GURTH CITY STATION~. \ A set of stairs leads up out of the gloom"; if (self has general) ". There is a large train car sitting on the tracks \ to the south."; else "."; ], name "tunnel" "stairs", e_to "A helpful subway worker says ~Hey pal, get outa there!~", s_to ORANGELINE_car, in_to ORANGELINE_car, u_to GURTH_GUSPlatform, before [; Go: if ((self hasnt general) && (noun == s_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 2 or 4) { give self general; ORANGELINE_loc = 1; ORANGELINE_dir = 1; ! will be heading east "^Suddenly, from the east, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and up \ the stairs."; } if (i==10) "^You hear a distant rumbling noise from the east."; } else { if (self has general) { if (ORANGELINE_loc == 2) { give self ~general; "^The train doors close, and the train heads off \ to the east."; } else { ORANGELINE_loc = 2; "^A few people exit the train, and hurry up the stairs. \ You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; Object ANTHAR_GUSPlatform "Greater Anthar Train Platform" with description [; print "You are standing in a long underground \ chamber. The south side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run east and west into dark tunnels. \ Along one wall painted lettering \ reads ~ANTHAR STATION~. \ A short walkway leads north, to a metal fence"; if (self has general) ". There is a large train car sitting on the tracks \ to the south."; else "."; ], name "tunnel" "tunnels" "walkway", n_to AntharG_Gate, e_to "A helpful subway worker says ~Hey pal, get outa there!~", w_to "A helpful subway worker says ~Hey pal, get outa there!~", s_to ORANGELINE_car, in_to ORANGELINE_car, before [; Go: ! if (noun == n_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == s_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 4 or 5) { give self general; ORANGELINE_loc = 5; ORANGELINE_dir = 1; ! will be heading east "^Suddenly, from the west, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==2 or 3 or 6) { give self general; ORANGELINE_loc = 5; ORANGELINE_dir = 0; ! will be heading west "^Suddenly, from the east, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==9) "^You hear a distant rumbling noise from the east."; if (i==10) "^You hear a distant rumbling noise from the west."; } else { if (self has general) { if (ORANGELINE_loc == 6) { give self ~general; "^The train doors close, and the train rolls off."; } else { ORANGELINE_loc = 6; "^A few people exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; ! *** Green line platforms Object BORPHEE_GUSPlatform "New Borphee Train Platform" with description [; print "You are standing in a long underground \ chamber. The west side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run south into a dark tunnel. \ Along one wall painted lettering \ reads ~NEW BORPHEE STATION~. \ A short walkway leads northeast, to a metal fence"; if (self has general) ". There is a large train car sitting on the tracks \ to the west."; else "."; ], name "tunnel" "walkway", ne_to BorpheeG_Gate, s_to "A helpful subway worker says ~Hey pal, get outa there!~", w_to GREENLINE_car, in_to GREENLINE_car, before [; Go: ! if (noun == ne_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == w_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 2 or 3) { give self general; GREENLINE_loc = 1; GREENLINE_dir = 1; ! will be heading south "^Suddenly, from the south, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==10) "^You hear a distant rumbling noise from the south."; } else { if (self has general) { if (GREENLINE_loc == 2) { give self ~general; "^The train doors close, and the train rolls off \ to the south."; } else { GREENLINE_loc = 2; "^A few people exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; Object MIZNIA_GUSPlatform "Miznia Train Platform" with description [; print "You are standing in a long underground \ chamber. The west side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run north into a dark tunnel. \ Along one wall painted lettering \ reads ~MIZNIA STATION~. \ A short walkway leads northeast, to a metal fence"; if (self has general) ". There is a large train car sitting on the tracks \ to the west."; else "."; ], name "tunnel" "walkway", ne_to MizniaG_Gate, n_to "A helpful subway worker says ~Hey pal, get outa there!~", w_to GREENLINE_car, in_to GREENLINE_car, before [; Go: ! if (noun == ne_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == w_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 2 or 3) { give self general; GREENLINE_loc = 9; GREENLINE_dir = 0; ! will be heading south "^Suddenly, from the north, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==10) "^You hear a distant rumbling noise from the north."; } else { if (self has general) { if (GREENLINE_loc == 10) { give self ~general; "^The train doors close, and the train rolls off \ to the north."; } else { GREENLINE_loc = 10; "^A few people exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; Object GURTH_GUSPlatform "Gurth City Train Platform" with description [; print "You are standing in a long underground \ chamber. The west side of the room contains a \ lowered set of what appear to be train tracks. \ The tracks run north and south into dark tunnels. \ Along one wall painted lettering \ reads ~GURTH CITY STATION~. \ A short walkway leads northeast, to a metal fence. \ There is also a stairway down here"; if (self has general) ". There is a large train car sitting on the tracks \ to the west."; else "."; ], name "tunnel" "tunnels" "walkway" "stairway", ne_to GurthG_Gate, s_to "A helpful subway worker says ~Hey pal, get outa there!~", n_to "A helpful subway worker says ~Hey pal, get outa there!~", w_to GREENLINE_car, d_to GURTH_GUSPlatform2, in_to GREENLINE_car, before [; Go: ! if (noun == ne_obj) ! print "You saunter through the apparently open gate.^"; if ((self hasnt general) && (noun == w_obj or in_obj)) "You'd fall onto the tracks if you went that way."; ], each_turn [ i ; if (self hasnt general) { i = random(10); if (i==1 or 3) { give self general; GREENLINE_loc = 5; GREENLINE_dir = 1; ! will be heading south "^Suddenly, from the north, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==2 or 4) { give self general; GREENLINE_loc = 5; GREENLINE_dir = 0; ! will be heading north "^Suddenly, from the south, a train emerges from \ the tunnel! It pulls to a screeching halt, the \ doors open, and several people rush out and exit \ the station."; } if (i==9) "^You hear a distant rumbling noise from the north."; if (i==10) "^You hear a distant rumbling noise from the south."; } else { if (self has general) { if (GREENLINE_loc == 6) { give self ~general; "^The train doors close, and the train rolls off."; } else { GREENLINE_loc = 6; "^A few people exit the train, and hurry out \ of the station. You hear a voice from inside the \ train say, ~Doors will be closing, please stand \ clear.~"; } } } ], has light; ! ************************** ! TRAINS ! Some notes: ! While it may seem more logical to implement the trains with ! an 'enterable' property, I decided to implement them as ! 'rooms' instead. Mainly, I did this because: ! 1) I wanted total control of the "movement" of the train. ! 2) I wanted to fill the cars with various people/things. ! 3) I wanted seats on the train :) ! Again, this is all probably possible with 'vehicles', I ! just saw things slightly differently. ! Be warned, the logic in moving the train is probably one ! of the more unfathomable things I've ever coded. ! ************************** ! *** The purple line (Eastlands) Object PURPLELINE_car "Subway car" with description "You are in an underground train car. Various \ people fill the train, some in uncomfortable-looking seats.", name "car" "people", w_to FROSTHAM_GUSPlatform, ! we adjust this, see below out_to FROSTHAM_GUSPlatform, after [; Go: if (noun == e_obj or in_obj) { ! determine boarding location, direction train was ! traveling give self general; ! we're off and moving... print "^You enter the train car. The doors slam shut behind you.^"; if (PURPLELINE_loc == 1 or 2) { ! Frostham, south give FROSTHAM_GUSPlatform ~general; PURPLELINE_loc = 3; ! leaving } if (PURPLELINE_loc == 5 or 6) { ! Aragain ! give ARAGAIN_GUSPlatform ~general; if (PURPLELINE_dir == 1) { ! South PURPLELINE_loc = 7; } else { ! North PURPLELINE_loc = 4; } } if (PURPLELINE_loc == 9 or 10) { ! Fublio, north ! give FUBLIO_GUSPlatform ~general; PURPLELINE_loc = 8; } } ], before [; Go: if (noun == w_obj or out_obj) { if (self has general) "The train is moving right now. Better wait til \ it stops to get off."; if (thug in self) "As you try to get off, the thug gets in your way. \ ~Going somewhere, Padre?~."; } ], each_turn [; ! check location of train, print appropriate msg, ! and increment location of train, given direction if (PURPLELINE_loc == 1) { ! reached Frostham, dir = S, not moving give self ~general; give FROSTHAM_GUSPlatform general; PURPLELINE_dir = 1; PURPLELINE_loc = 2; PURPLELINE_car.w_to = FROSTHAM_GUSPlatform; PURPLELINE_car.out_to = FROSTHAM_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Frostham station, watch your \ step please.~"; } if (PURPLELINE_loc == 2) { ! still in Frostham, not moving PURPLELINE_loc = 3; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (PURPLELINE_loc == 3) { if (PURPLELINE_dir == 1) { ! moving away from Frostham give self general; give FROSTHAM_GUSPlatform ~general; PURPLELINE_loc = 4; "^The train starts to move, quickly exiting the station \ going south."; } if (PURPLELINE_dir == 0) { ! moving towards Frostham PURPLELINE_loc = 1; ! We will 'arrive' in Frostham next "^The train rumbles as it moves."; } } if (PURPLELINE_loc == 4) { if (PURPLELINE_dir == 0) { ! We're leaving Aragain PURPLELINE_loc = 3; give self general; give ARAGAIN_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going north."; } if (PURPLELINE_dir == 1) { PURPLELINE_loc = 5; "^The train rumbles as it moves."; } } if (PURPLELINE_loc == 5) { ! reached Aragain, stop the train give self ~general; give ARAGAIN_GUSPlatform general; PURPLELINE_loc = 6; ! we'll be stopping for 1 turn PURPLELINE_car.w_to = ARAGAIN_GUSPlatform; PURPLELINE_car.out_to = ARAGAIN_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Aragain station, watch your \ step please.~"; } if (PURPLELINE_loc == 6) { ! about to leave Aragain station if (PURPLELINE_dir == 0) PURPLELINE_loc = 4; else PURPLELINE_loc = 7; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (PURPLELINE_loc == 7) { if (PURPLELINE_dir == 1) { ! We're leaving Aragain PURPLELINE_loc = 8; give self general; give ARAGAIN_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going south."; } if (PURPLELINE_dir == 0) { PURPLELINE_loc = 5; ! we will arrive in Aragain shortly... "^The train rumbles as it moves."; } } if (PURPLELINE_loc == 8) { if (PURPLELINE_dir == 0) { ! we're leaving Fublio PURPLELINE_loc = 7; give self general; give FUBLIO_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going north."; } if (PURPLELINE_dir == 1) { PURPLELINE_loc = 10; ! will arrive in Fublio (BACKWARDS!!) "^The train rumbles as it moves."; } } if (PURPLELINE_loc == 9) { ! still waiting in Fublio PURPLELINE_loc = 8; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (PURPLELINE_loc == 10) { ! arriving in Fublio PURPLELINE_loc = 9; PURPLELINE_dir = 0; ! north give self ~general; give FUBLIO_GUSPlatform general; PURPLELINE_car.w_to = FUBLIO_GUSPlatform; PURPLELINE_car.out_to = FUBLIO_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Fublio station, watch your \ step please.~"; } ], has light; Class Train_Car_Seat_Class with name "seat" "seats", description "There seem to be a few seats that haven't been taken.", before [; Enter: if (random(10) < 3) "As you attempt to grab an open seat, someone rudely \ beats you to it."; ], has scenery enterable; Object PURPLELINE_car_seats "subway seat" PURPLELINE_car class Train_Car_Seat_Class with before [; Search: if (self hasnt general) { give self general; move c9 to player; "Good fortune is your friend! You notice a \ forgotten coin stuck in a seat crack, and fend off two \ passengers to grab it."; } ], ; ! *** ORANGE LINE CAR (Gurth to Aragain) Object ORANGELINE_car "Subway car" with description "You are in an underground train car. Various \ people fill the train, some in uncomfortable-looking seats.", name "car" "people", n_to ANTHAR_GUSPlatform, ! we adjust this, see below out_to ANTHAR_GUSPlatform, after [; Go: if (noun == s_obj or in_obj) { ! determine boarding location, direction train was ! traveling give self general; ! we're off and moving... print "^You squeeze onto the train car. The doors close behind you.^"; if (ORANGELINE_loc == 1 or 2) { ! Gurth, east give GURTH_GUSPlatform2 ~general; ORANGELINE_loc = 3; ! leaving } if (ORANGELINE_loc == 5 or 6) { ! Anthar give ANTHAR_GUSPlatform ~general; if (ORANGELINE_dir == 1) { ! east ORANGELINE_loc = 7; } else { ! west ORANGELINE_loc = 4; } } if (ORANGELINE_loc == 9 or 10) { ! Aragain, west give ARAGAIN_GUSPlatform2 ~general; ORANGELINE_loc = 8; } } ], before [; Go: if (noun == n_obj or out_obj) { if (self has general) "The train is moving right now. Better wait til \ it stops to get off."; } ], each_turn [; ! check location of train, print appropriate msg, ! and increment location of train, given direction if (ORANGELINE_loc == 1) { ! reached Gurth, dir = S, not moving give self ~general; give GURTH_GUSPlatform2 general; ORANGELINE_dir = 1; ORANGELINE_loc = 2; ORANGELINE_car.n_to = GURTH_GUSPlatform2; ORANGELINE_car.out_to = GURTH_GUSPlatform2; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Gurth City station, watch your \ step please.~"; } if (ORANGELINE_loc == 2) { ! still in Gurth, not moving ORANGELINE_loc = 3; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (ORANGELINE_loc == 3) { if (ORANGELINE_dir == 1) { ! moving away from Gurth give self general; give GURTH_GUSPlatform2 ~general; ORANGELINE_loc = 4; "^The train starts to move, quickly exiting the station \ going east."; } if (ORANGELINE_dir == 0) { ! moving towards Gurth ORANGELINE_loc = 1; ! We will 'arrive' in Gurth next "^The train rumbles as it moves."; } } if (ORANGELINE_loc == 4) { if (ORANGELINE_dir == 0) { ! We're leaving Anthar ORANGELINE_loc = 3; give self general; give ANTHAR_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going west."; } if (ORANGELINE_dir == 1) { ORANGELINE_loc = 5; "^The train rumbles as it moves."; } } if (ORANGELINE_loc == 5) { ! reached Anthar, stop the train give self ~general; give ANTHAR_GUSPlatform general; ORANGELINE_loc = 6; ! we'll be stopping for 1 turn ORANGELINE_car.n_to = ANTHAR_GUSPlatform; ORANGELINE_car.out_to = ANTHAR_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Greater Anthar station, watch your \ step please.~"; } if (ORANGELINE_loc == 6) { ! about to leave Anthar station if (ORANGELINE_dir == 0) ORANGELINE_loc = 4; else ORANGELINE_loc = 7; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (ORANGELINE_loc == 7) { if (ORANGELINE_dir == 1) { ! We're leaving Anthar ORANGELINE_loc = 8; give self general; give ANTHAR_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going east."; } if (ORANGELINE_dir == 0) { ORANGELINE_loc = 5; ! we will arrive in anthar shortly... "^The train rumbles as it moves."; } } if (ORANGELINE_loc == 8) { if (ORANGELINE_dir == 0) { ! we're leaving Aragain ORANGELINE_loc = 7; give self general; give ARAGAIN_GUSPlatform2 ~general; "^The train starts to move, quickly exiting the station \ going west."; } if (ORANGELINE_dir == 1) { ORANGELINE_loc = 9; ! will arrive in Aragain "^The train rumbles as it moves."; } } if (ORANGELINE_loc == 10) { ! still waiting in Aragain ORANGELINE_loc = 8; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (ORANGELINE_loc == 9) { ! arriving in Aragain ORANGELINE_loc = 10; ORANGELINE_dir = 0; ! west give self ~general; give ARAGAIN_GUSPlatform2 general; ORANGELINE_car.n_to = ARAGAIN_GUSPlatform2; ORANGELINE_car.out_to = ARAGAIN_GUSPlatform2; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Aragain station, watch your \ step please.~"; } ], has light; Object ORANGELINE_car_seats "subway seat" ORANGELINE_car class Train_Car_Seat_Class with before [; Search: if (self hasnt general) { give self general; move c10 to player; "Good fortune is your friend! You notice a \ forgotten coin stuck in a seat crack, and fend off two \ passengers to grab it."; } ], ; ! *** GREEN LINE (Borphee to Miznia) Object GREENLINE_car "Subway car" with description "You are in an underground train car. Various \ people fill the train, some in uncomfortable-looking seats.", name "car" "people", e_to BORPHEE_GUSPlatform, ! we adjust this, see below out_to BORPHEE_GUSPlatform, after [; Go: if (noun == w_obj or in_obj) { ! determine boarding location, direction train was ! traveling give self general; ! we're off and moving print "^You shove your way onto train car. The doors close behind you.^"; if (GREENLINE_loc == 1 or 2) { ! Borphee, south give BORPHEE_GUSPlatform ~general; GREENLINE_loc = 3; ! leaving } if (GREENLINE_loc == 5 or 6) { ! Gurth give GURTH_GUSPlatform ~general; if (GREENLINE_dir == 1) { ! South GREENLINE_loc = 7; } else { ! North GREENLINE_loc = 4; } } if (GREENLINE_loc == 9 or 10) { ! Miznia, north give MIZNIA_GUSPlatform ~general; GREENLINE_loc = 8; } } ], before [; Go: if (noun == e_obj or out_obj) { if (self has general) "The train is moving right now. Better wait til \ it stops to get off."; if (yupple in self) "As you try to get off, the yupple jumps up and gets in your \ way. ~Wait, wait, we have so much to talk about!~."; } ], each_turn [; ! check location of train, print appropriate msg, ! and increment location of train, given direction if (GREENLINE_loc == 1) { ! reached Borphee, dir = S, not moving give self ~general; give BORPHEE_GUSPlatform general; GREENLINE_dir = 1; GREENLINE_loc = 2; GREENLINE_car.e_to = BORPHEE_GUSPlatform; GREENLINE_car.out_to = BORPHEE_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~New Borphee station, watch your \ step please.~"; } if (GREENLINE_loc == 2) { ! still in Borphee, not moving GREENLINE_loc = 3; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (GREENLINE_loc == 3) { if (GREENLINE_dir == 1) { ! moving away from Borphee give self general; give BORPHEE_GUSPlatform ~general; GREENLINE_loc = 4; "^The train starts to move, quickly exiting the station \ going south."; } if (GREENLINE_dir == 0) { ! moving towards BORPHEE GREENLINE_loc = 1; "^The train rumbles as it moves."; } } if (GREENLINE_loc == 4) { if (GREENLINE_dir == 0) { ! We're leaving gurth GREENLINE_loc = 3; give self general; give GURTH_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going north."; } if (GREENLINE_dir == 1) { GREENLINE_loc = 5; "^The train rumbles as it moves."; } } if (GREENLINE_loc == 5) { ! reached Gurth, stop the train give self ~general; give GURTH_GUSPlatform general; GREENLINE_loc = 6; ! we'll be stopping for 1 turn GREENLINE_car.e_to = GURTH_GUSPlatform; GREENLINE_car.out_to = GURTH_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Gurth City station, watch your \ step please.~"; } if (GREENLINE_loc == 6) { ! about to leave gurth station if (GREENLINE_dir == 0) GREENLINE_loc = 4; else GREENLINE_loc = 7; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (GREENLINE_loc == 7) { if (GREENLINE_dir == 1) { ! We're leaving gurth GREENLINE_loc = 8; give self general; give GURTH_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going south."; } if (GREENLINE_dir == 0) { GREENLINE_loc = 5; ! we will arrive in gurth shortly... "^The train rumbles as it moves."; } } if (GREENLINE_loc == 8) { if (GREENLINE_dir == 0) { ! we're leaving Miznia GREENLINE_loc = 7; give self general; give MIZNIA_GUSPlatform ~general; "^The train starts to move, quickly exiting the station \ going north."; } if (GREENLINE_dir == 1) { GREENLINE_loc = 9; "^The train rumbles as it moves."; } } if (GREENLINE_loc == 10) { ! still waiting in Miznia GREENLINE_loc = 8; "^A voice overhead says ~Doors will be closing, please \ stand clear.~"; } if (GREENLINE_loc == 9) { ! arriving in Miznia GREENLINE_loc = 10; GREENLINE_dir = 0; ! north give self ~general; give MIZNIA_GUSPlatform general; GREENLINE_car.e_to = MIZNIA_GUSPlatform; GREENLINE_car.out_to = MIZNIA_GUSPlatform; "^The train suddenly lurches to a stop! A voice from \ somewhere overhead says ~Miznia station, watch your \ step please.~"; } ], has light; Object GREENLINE_car_seats "subway seat" GREENLINE_car class Train_Car_Seat_Class with before [; Search: if (self hasnt general) { give self general; move c11 to player; "Good fortune is your friend! You notice a \ forgotten coin stuck in a seat crack, and fend off two \ passengers to grab it."; } ], ; ! *** A fake scenery item, to describe the subway cars from outside *** Object subway_car_fake "subway car" with name "car" "train", description [; print "It's a rather large, sleek-looking train car, oddly colored "; if (((location==FROSTHAM_GUSPlatform) && (FROSTHAM_GUSPlatform has general)) || ((location==ARAGAIN_GUSPlatform) && (ARAGAIN_GUSPlatform has general)) || ((location==FUBLIO_GUSPlatform) && (FUBLIO_GUSPlatform has general))) "purple."; if (((location==ANTHAR_GUSPlatform) && (ANTHAR_GUSPlatform has general)) || ((location==ARAGAIN_GUSPlatform2) && (ARAGAIN_GUSPlatform2 has general)) || ((location==GURTH_GUSPlatform2) && (GURTH_GUSPlatform2 has general))) "orange."; if (((location==BORPHEE_GUSPlatform) && (BORPHEE_GUSPlatform has general)) || ((location==GURTH_GUSPlatform) && (GURTH_GUSPlatform has general)) || ((location==MIZNIA_GUSPlatform) && (MIZNIA_GUSPlatform has general))) "green."; "You can't see any such thing."; ], found_in FROSTHAM_GUSPlatform ARAGAIN_GUSPlatform FUBLIO_GUSPlatform ANTHAR_GUSPlatform ARAGAIN_GUSPlatform2 GURTH_GUSPlatform2 BORPHEE_GUSPlatform GURTH_GUSPlatform MIZNIA_GUSPlatform, before [; Enter: "A subway nymph suddenly appears. ~Remember passengers, to \ board the subway cars, you just have to go 'in', or in the \ appropriate direction of the car. Bye!~"; ], has scenery; Object metal_fence "metal fence" with name "fence" "barricade", description "It looks like a smooth metal fence.", before [; Climb, JumpOver: "A subway worker yells ~Hey pal, no fare-jumpers!"; ], found_in FROSTHAM_GUSPlatform ARAGAIN_GUSPlatform FUBLIO_GUSPlatform FROSTHAM_GUSStation ARAGAIN_GUSStation FUBLIO_GUSStation ANTHAR_GUSPlatform BORPHEE_GUSPlatform GURTH_GUSPlatform MIZNIA_GUSPlatform ANTHAR_GUSStation BORPHEE_GUSStation GURTH_GUSStation MIZNIA_GUSStation, has scenery; ! ************************** ! People/denizens/creatures ! ************************** ! Thug, on PURPLE LINE Object thug "sinister-looking thug" PURPLELINE_car with name "thug" "hoodlum" "Davey", description "A thug, clearly. Some scrapper with an attitude, \ and the desire to use it.", each_turn [ i ; if (self hasnt general) { give self general; "^The sinister-looking thug notices you from the back \ of the car, and approaches. ~Well, well, well,~ he \ says, ~what do we have here?~."; } i = random(4); if (i==1) "^The thug pokes you in the ribs."; if (i==2) "^The thug snarls at you. ~Hey, I'm talking to you, \ Preacher-man.~"; if (i==3) "^The thug tries to act friendly, and fails."; if (i==4) "^The thug scowls. ~You gonna tell me the error of \ my ways, Padre?~"; ], life [; Attack: "As you move to show the rake a lesson, you notice \ several more thugs in the background, eyeing your every \ move. The thug smiles as you back-off, cautiously."; default: "The thug is too busy being sinister."; ], before [; Cast: if (the_spell_was == espnis_spell) { remove thug; "You begin to extol the virtues of bedtime prayers, \ and the thug starts to yawn. Soon, his eyes blink \ slowly, and before long, he nods off to sleep! Two \ subway police officers, hiding until now, get up the \ nerve to capture the snoring thug, and drag him \ off, disappearing into the throng of people."; } if (the_spell_was == foblub_spell) { "You give the thug a timely sermon on the \ folly of crime in a moral society. He seems momentarily \ fascinated. Too bad he wasn't actually sitting in anything."; } ], has animate; ! Annoying Yupple, on GREEN LINE (kinda a cross between a yuppie and a yipple) Object yupple "annoying yupple" GREENLINE_car with name "yupple" "annoying", description "A young yupple, immaculately dressed in a pinstripe \ three-piece suit and tie.", article "an", each_turn [ i ; if (self hasnt general) { give self general; "^The annoying-looking yupple notices you from the back \ of the car, and approaches. ~A priest,~ he \ says, ~Just the person I was looking for.~ He \ squeezes into a seat near you."; } i = random(4); if (i==1) "^The yupple talks unceasingly about rainfall in some \ place called ~the Amazon basin~."; if (i==2) "^The yupple smiles brightly. ~There's so much I have to \ talk about!~"; if (i==3) "^The yupple drones on about the science behind large \ corporate takeovers."; if (i==4) "^The yupple laughs -- a sound somewhat like a snoring \ bloodworm. ~So the guy says, 'I thought you meant my _wife_.' \ Get it? Wife?~"; ], life [; Attack: "Much as you'd like to, that's just something the \ Order would probably frown upon."; ], before [; Cast: if (the_spell_was == espnis_spell) { "You give a sermon on the dangers of \ improper bathtub caulking, but the yupple seems quite \ fascinated. ~That reminds me of...~ You cringe."; } if (the_spell_was == foblub_spell) { remove self; "You draw a stunning parallel between corporate \ morality and monarchy ruling. The yupple's jaw drops. ~I've got \ to tell my boss that,~ he says, and tries to leave his seat, \ but finds himself stuck fast. Several passengers nearby \ take the opportunity to remove the yupple (seat included) to \ a different part of the train."; } ], has animate; ! ************************** ! misc objects ! ************************** Object c9 "coin" class coin_class; Object c10 "coin" class coin_class; Object c11 "coin" class coin_class; ! (Some common objects associated with GUS) Object GUS_sign "Sign" with name "sign" "circular" "pole" "GUS", initial "Standing on a tall pole next to the stairs is \ a circular sign.", description "The sign reads ~GUS~, and has an arrow \ pointing down.", found_in FROSTHAM_GUSStop ARAGAIN_GUSStop ANTHAR_GUSStop FUBLIO_GUSStop BORPHEE_GUSStop MIZNIA_GUSStop GURTH_GUSStop, has static; Object GUS_brochure "subway brochure" FROSTHAM_Governer1 with name "brochure" "subway" "GUS", description "\ ~The Great Underground Subway~^^ Adventurers who really need to get where they're going \ in a hurry are going to love GUS! The new underground \ high-speed rail system can be your personal ride to the \ major travel points in Quendor, for just one mere zorkmid! \ For Eastland travel to Frostham, Aragain and Fublio Valley, \ the Purple line is at your service! For Westland travel \ to New Borphee, Gurth City and Miznia, just jump on board \ the Green line! And for you folks who need to get across \ the Great Sea in a hurry, don't forget the Orange line, \ stopping off at Aragain, Anthar and Gurth City! Remember, \ there's no costs for transferring between lines either. \ So don't delay, take the GUS today!", ! weight 5, size 10, ; Object newspaper "newspaper" PURPLELINE_car with name "newspaper" "paper", initial "There's a discarded newspaper in a seat nearby.", description "A copy of ~The Fublio Tribune~, with \ news, sports and feature sections to read about.", before [ w1; Consult: if (consult_words > 1) "Try reading about 'news', 'sports' or 'features'."; wn = consult_from; w1 = NextWord(); switch (w1) { 'news', 'headline', 'headlines': "The news section has three major stories. \ The headliner is the continued failure to resolve peace in the \ Kobold war in southern Egreth. Recently, various troops have \ been cut-off from the main camps by clever kobold raiding groups. \ ^^A second story details the shocking death of a GUE Tech student \ found in the subway tunnels in Gurth City Station, the apparent \ victim of a GUS train. ~Don't know how he got in there.~ a \ subway worker is quoted as saying.^^\ Finally, a sad local news story about a nice couple in Fublio \ valley who recently were victims of the kidnaping of their son. No \ leads as of yet."; 'sports': "Apparently, the golem brothers at Flathead \ Stadium have amassed an amazing 322-0 win streak."; 'features', 'feature': "The paper points out that culture seekers \ should check out the newly discovered Leonardo Flathead \ painting on exhibit at the Royal Museum."; 'ads', 'classified': "~FOR SALE: A new IF game -- 'SPIRITWRAK'. \ Price: $0.00~"; 'comics', 'funnies': "No comics section. Bummer."; default: "You can't find anything in the paper about that."; } ], ! weight 15, size 15, ; ! ************************** ! spells & scrolls ! **************************