+++ /dev/null
-
-! ******************************************************************
-! 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) <<Go se_obj>>;
- else <<Go nw_obj>>;
- ],
- 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) <<Go se_obj>>;
- else <<Go nw_obj>>;
- ],
- 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) <<Go se_obj>>;
- else <<Go nw_obj>>;
- ],
- 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) <<Go s_obj>>;
- else <<Go n_obj>>;
- ],
- 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) <<Go sw_obj>>;
- else <<Go ne_obj>>;
- ],
- 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) <<Go sw_obj>>;
- else <<Go ne_obj>>;
- ],
- 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) <<Go sw_obj>>;
- else <<Go ne_obj>>;
- ],
- 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
-! **************************