games-request@tekred.TEK.COM (07/24/87)
Submitted by: "J.D. McDonald " <mcdonald@uxe.cso.uiuc.edu>
Comp.sources.games: Volume 1, Issue 104
Archive-name: world/Part05
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 5 (of 7)."
# Contents: demons.c vtext.dat.ac world.c
# Wrapped by billr@tekred on Thu Jul 23 17:17:59 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f demons.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"demons.c\"
else
echo shar: Extracting \"demons.c\" \(9434 characters\)
sed "s/^X//" >demons.c <<'END_OF_demons.c'
X#include "parame.inc"
X#include "variab.h"
X#include "arrays.h"
X
X/* World C Version 1.00 copyright 1987 J.D.McDonald
X Use as you like for non-commercial purposes, but please
X leave this note, and document any changes you make as yours */
X
Xmdemon()
X{
X
X int qtim, z, i, kkwr;
X /*
X * subroutine to care for comings and goings of martians
X */
X
X qtim = (turns % 100) < 75;
X /*
X * the player must have entered mars once in the day and once at night,
X * and then wait 4 turns before they come close
X */
X
X if (martim < 7) {
X if (loc == 27 || loc == 50 || loc == 41) {
X oldloc = 0;
X speak(152);
X }
X if (loc >= 26 && loc <= 50) {
X if (qtim && (martim == 0 || martim == 2))
X martim |= 1;
X if (!qtim && (martim == 0 || martim == 1))
X martim |= 2;
X if (martim >= 3)
X martim += 1;
X }
X }
X if (qtim)
X return;
X /*
X * they will appear at once if he falls in their hockey rink
X */
X
X if (loc == 38 && !marflg[5]) {
X marflg[5] = 1;
X martim = 7;
X speak(169);
X return;
X }
X for (i = 0; i < 5; i++)
X marflg[i] = 0;
X z = (turns % 100);
X /* wont come close if martim < 7 */
X
X if (martim < 7) {
X if (loc != 51)
X speak(141);
X goto lab60;
X }
X if (z > 75 && z < 99)
X marflg[4] = 1;
X if (z > 76 && z < 98)
X marflg[0] = 1;
X if (z > 78 && z < 95)
X marflg[3] = 1;
X if (z > 78 && z < 96)
X marflg[2] = 1;
X if (z > 77 && z < 97 && obloc[HPUCK] == 38)
X marflg[1] = 1;
X /* announce the goings on of the martians */
X
X if (marflg[5] && z == 75 && loc != 38)
X speak(154);
X if (marflg[5] && z == 99 && loc != 38)
X speak(155);
X /* the first time they come close */
X
X if (!marflg[5] && loc < 51) {
X marflg[5] = 1;
X speak(142);
X }
X if (loc == 28) {
X if (marflg[3])
X speak(143);
X } else if (loc >= 43 && loc <= 45) {
X if (marflg[4])
X speak(144);
X }
X /* at home */
X
X else if (loc == 42 || loc == 30) {
X if (marflg[0]) {
X if (!marflg[6] || pct(20)) {
X speak(145);
X marflg[6] = 1;
X } else
X speak(146);
X }
X }
X /* the hockey game */
X
X else if (loc == 29 || (loc >= 31 && loc <= 38)) {
X if (marflg[1]) {
X if (!marflg[7] || pct(20)) {
X speak(147);
X marflg[7] = 1;
X } else
X speak(148);
X }
X } else if (loc == 40) {
X if (marflg[2])
X speak(149);
X } else;
X if (((loc == 42 && marflg[0]) || (loc == 38)) && !deadf) {
X /* oops! he ran inot one and got fried */
X
X if (loc == 42)
X speak(150);
X if (loc == 38) {
X if (marflg[1])
X speak(151);
X else
X speak(171);
X for (i = 32; i <= 37; i++)
X locdat[i] |= 16384;
X }
X vdead();
X oldlc2 = 0;
X oldloc = 0;
X }
X /* move his belongings to the dump */
X
Xlab60:
X for (i = 1; i <= MOVMAX; i++) {
X if (obloc[i] == loc || (obloc[i] == 48 && loc == 49) || obloc[i] < 27 ||
X obloc[i] > 50)
X continue;
X if (i == ZWIRE) {
X if (obloc[i] == 1000 || wirelc[0] == 1000 || wirelc[5]
X == 1000 || wirelc[0] == loc || wirelc[1] == loc
X || wirelc[2] == loc || wirelc[3] == loc
X || wirelc[4] == loc || wirelc[5] == loc)
X continue;
X obimpr[ZWIRE] = (obimpr[ZWIRE] & ~56) + 8;
X /* ~56=177707 octal */
X
X for (kkwr = 0; kkwr < 6; kkwr++)
X wirelc[kkwr] = 0;
X }
X if (obloc[i] >= 27 && obloc[i] <= 50)
X obloc[i] = 40;
X if (i == HPUCK)
X obloc[i] = 38;
X if (i == ZDIAMO) {
X obimpr[i] = (obimpr[i] & ~56) + 8;
X obloc[i] = 49;
X }
X if (i == RBOULD)
X obloc[i] = 27;
X }
X return;
X}
X
Xwdemon()
X{
X int i, n, i2, vloc;
X /*
X * take care of playing out and taking in the wire take it in
X */
X
X if (wirelc[5] == 1000) {
X for (i = 1; i <= 4; i++) {
X n = 5 - i;
X if (wirelc[n] == oldloc && wirelc[n - 1] == loc) {
X wirelc[n] = 1000;
X speak(216);
X if (wirelc[1] == 1000 && obloc[ZWIRE] == 1000 && wirelc[0] == loc) {
X for (i2 = 0; i2 < 5; i2++)
X wirelc[i2] = 0;
X speak(219);
X }
X return;
X }
X }
X if (wirelc[1] == 1000 && wirelc[0] == oldloc && obloc[ZWIRE]
X == loc) {
X wirelc[0] = 1000;
X speak(216);
X return;
X }
X /* play it out */
X
X if (loc >= 32 && loc <= 38) {
X speak(257);
X if (oldloc == 31 || oldloc == 32)
X vloc = 32;
X else
X vloc = 37;
X for (i = 0; i < 6; i++)
X if (wirelc[i] == 1000)
X wirelc[i] = vloc;
X return;
X }
X for (i = 0; i < 4; i++) {
X if (wirelc[i] == oldloc && wirelc[i + 1] == 1000) {
X wirelc[i + 1] = loc;
X speak(217);
X return;
X }
X }
X if (wirelc[0] == 1000 && obloc[ZWIRE] == oldloc) {
X wirelc[0] = loc;
X speak(217);
X return;
X }
X /* out of wire */
X
X if (wirelc[4] == oldloc) {
X speak(218);
X wirelc[5] = wirelc[4];
X return;
X }
X } else;
X}
X
X
Xtimer(xloc)
X int xloc;
X{
X int bplce, cplce, gplce, iplce, objen, qq, i;
X
X /* prevent him from being outside the valley at sunset */
X
X if (loc <= 3 && loc * 15 < turns) {
X speak(255);
X oldlc2 = oldloc;
X oldloc = loc;
X loc += 1;
X }
X /*
X * daytim=1 if it is intrinsically light here (i.e. lights are always on
X * or it is outside and the sun is up or he is carrying sphere or bead
X */
X
X if ((locdat[loc] & 17) != 0 || ((locdat[loc] & 8) != 0
X && (turns % 100) < 75) || obloc[GSPHER] == 1000
X || obloc[GSPHER] == loc || obloc[ZBEAD] == 1000 ||
X obloc[ZBEAD] == loc)
X daytim = 1;
X else
X daytim = 0;
X /* he is killed if on tower in daytime */
X
X if (loc == 49 && daytim == 1 && !deadf) {
X speak(166);
X oldlc2 = 0;
X oldloc = 0;
X loc = 48;
X vdead();
X }
X /* announce rising and setting of both suns */
X
X if ((locdat[loc] & 8) != 0) {
X if (daytim == 0)
X speak(124);
X else if ((turns % 100) >= 72 && (turns % 100) < 75)
X speak(125);
X else if ((turns % 100) < 3 && turns > 4)
X speak(126);
X else;
X }
X /*
X * check to see if he is not wearing shoes or boots if too long without
X * them, he dies
X */
X
X if ((obloc[CSHOES] != 3000 && obloc[HBOOTS] != 3000) &&
X !deadf && (loc != 16 && loc < 153)) {
X noshoe -= 1;
X if (noshoe == 0)
X speak(99);
X else if (noshoe < -6 && pct(10 * (-6 - noshoe))) {
X speak(100);
X vdead();
X }
X }
X /* fish need water to live! */
X
X if (obloc[DFISH] == 0) {
X if (obloc[CFISH] != 16 && !(obloc[CFISH] == (2000 + PLBAG)
X && (((obimpr[PLBAG] / 512) % 8) == 5))) {
X fshlif -= 1;
X if (fshlif == 0) {
X obloc[DFISH] = obloc[CFISH];
X obloc[CFISH] = 0;
X obimpr[CFISH] = 0;
X obimpr[DFISH] = 137;
X }
X }
X }
X /* check on status of bug repellent */
X
X if (obimpr[ZDEET] >= 4096)
X obimpr[ZDEET] -= 4096;
X /* check on radioactive exposure of film in camera */
X
X itsher(ZBEAD, &bplce);
X itsher(GSPHER, &gplce);
X if (oextim < 8000) {
X itsher(ICAMER, &iplce);
X if (obloc[GSPHER] == obloc[ICAMER])
X oextim += 1;
X else {
X if (iplce != 0 && gplce != 0)
X oextim += 1;
X }
X if (obloc[ZBEAD] == obloc[ICAMER])
X oextim += 7;
X else {
X if (iplce != 0 && bplce != 0)
X oextim += 4;
X }
X }
X /* check on radiation poisoning */
X
X if (!deadf && bplce != 0 && obloc[ZBEAD] != 2000 + ZSINK) {
X rdietm = (rdietm / 5) * 5;
X rdietm += 5;
X if (rdietm > 0 && (rdietm % 10) == 0)
X speak(rdietm / 10 + 320);
X } else {
X rdietm -= 1;
X if (rdietm <= 0)
X rdietm = 0;
X if (rdietm == 36)
X speak(326);
X if (rdietm == 24)
X speak(327);
X if (rdietm == 12)
X speak(328);
X }
X /* check on changing of loc 89 */
X
X if (easttm == 1)
X speak(376);
X if (easttm == 15)
X speak(377);
X if (easttm == 50)
X speak(378);
X if (easttm >= 1 && easttm <= 50)
X easttm += 1;
X if (!deadf)
X eattim += 1;
X if (eattim == 170)
X speak(367);
X if (eattim == 240)
X speak(368);
X if (eattim == 270)
X speak(369);
X if (eattim == 300) {
X speak(384);
X vdead();
X }
X /* exposing the x-ray film */
X
X itsher(ZCASSE, &cplce);
X if (obloc[ZCASSE] == 2000 + ZRACK && obloc[ZBEAD] == 2000 + ZTRAY) {
X objen = 0;
X for (i = 0; i <= MOVMAX; i++) {
X if (obloc[i] == ZENLAR + 2000) {
X if (fimage != 0 && fimage != i)
X filmst = 1;
X qq = i;
X objen += 1;
X }
X }
X if (objen > 1)
X filmst = 1;
X if (objen == 0)
X filmtm += 10;
X if (objen >= 1) {
X filmtm += 1;
X fimage = qq;
X }
X } else if (obloc[ZBEAD] == obloc[ZCASSE] || (obloc[ZBEAD] != ZSINK
X + 2000 && bplce != 0 && cplce != 0))
X filmtm += 1000;
X else;
X if (filmtm > 3000)
X filmtm = 3000;
X /*
X * dispersing of the cloud from the seed we are using obimpr(zseed) as a
X * clock; this is ok since it no longer exists ( o.e. obloc(zseed)=0 )
X * despite this being stupid
X */
X
X if (obloc[ZSEED] == 0 && obimpr[ZSEED] > 0) {
X if ((loc == 99 || loc == 131) && obimpr[ZSEED] == 1)
X speak(406);
X obimpr[ZSEED] -= 1;
X }
X if (screef > 0)
X screef -= 1;
X /* the chase is on!!!! */
X
X if (chaset != 0) {
X if (adverb == QUICKL)
X chaser += 1;
X if (chaset <= 8) {
X if (xloc == loc || loc == oldlc2 || loc == 174 || loc == 166) {
X if (chaset != 1) {
X speak(557);
X vdead();
X } else
X speak(554);
X } else if (chaset >= 5 && chaser < 3)
X speak(556);
X else
X speak(555);
X } else if (chaset == 9) {
X if (chaser >= 3) {
X speak(558);
X guardl = loc;
X } else {
X speak(557);
X vdead();
X }
X } else if ((chaset > 9 && chaset < 18) && loc == guardl) {
X speak(563);
X vdead();
X } else if (loc < 176 && chaset == 18) {
X if (!(loc == 175 && (obimpr[BDOOR] & 2) != 0)) {
X speak(560);
X vdead();
X }
X }
X chaset += 1;
X if (chaset == 19)
X chaset = 0;
X }
X}
END_OF_demons.c
if test 9434 -ne `wc -c <demons.c`; then
echo shar: \"demons.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f vtext.dat.ac -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"vtext.dat.ac\"
else
echo shar: Extracting \"vtext.dat.ac\" \(31391 characters\)
sed "s/^X//" >vtext.dat.ac <<'END_OF_vtext.dat.ac'
X2001 Steep trail
X2002 Near top of the pass
X2003 Top of the pass
X2004 Branch in the trail
X2005 East shore of the lake
X2006 Gravel beach
X2007 Forest
X2008 Forest
X2009 Forest
X2010 Forest
X2011 Forest
X2012 Base of the spire
X2013 Halfway up the spire
X2014 Top of the spire
X2015 Sandy beach
X2016 Swimming at the coral beds
X2017 North end of the lake
X2018 Vein of minerals
X2019 Southwest of a chasm
X2020 Step-like rock strata
X2021 Northeast of the chasm
X2022 Bottom of a chasm
X2023 Fern-filled ravine
X2024 Beautiful waterfall
X2025 Behind some horsetails
X2026 Southwest of the Mars-like area
X2027 Red rocks
X2028 Red hill
X2029 West of a deep bowl
X2030 North of a small building
X2031 Southwest of a deep bowl
X2032 Southwest lip of the bowl
X2033 South lip of the bowl
X2034 Southeast lip of the bowl
X2035 Northeast lip of the bowl
X2036 North lip of the bowl
X2037 Northwest lip of the bowl
X2038 Center of the bowl
X2039 South to west trail
X2040 Dump
X2041 Door leading into the ground
X2042 Inside a small building
X2043 West edge of town
X2044 East edge of town
X2045 South of town
X2046 North-southwest trail
X2047 South of a large building
X2048 Bottom of a tower
X2049 Top of the tower
X2050 South of the Mars-jungle boundary
X2051 Inside large Martian building
X2052 Center of a ledge
X2053 East end of the ledge
X2054 West end of the ledge
X2055 Precarious position
X2056 Under an overhang
X2057 West end of a ravine
X2058 Northwest-southeast ridge
X2059 Northeast-southwest path
X2060 Leaf covered clearing
X2061 Stone monument
X2062 Forest, jungle, and green-air junction
X2063 Open field
X2064 Muddy jungle
X2065 Jungle with rubbery trees
X2066 Up a rubber tree
X2067 Jungle path
X2068 West of greenhouse
X2069 Antenna site
X2070 Greenhouse north
X2071 Greenhouse center
X2072 Greenhouse south
X2073 Vegetable garden
X2074 Fruit garden
X2075 Top of spiral ramp
X2076 Center of aviary roof
X2077 Half way up ramp
X2078 Aviary entrance
X2079 Aviary center
X2080 Half way up pole
X2081 East of greenhouse
X2082 Cacti
X2083 Staircase top
X2084 Staircase middle
X2085 Staircase bottom
X2086 Field of flowers
X2087 Beehives
X2088 Toolshed
X2089 West of barrier
X2090 (90 to 95 are never reached)
X2091
X2092
X2093
X2094
X2095
X2096 Bottomless pit
X2097 Bottom of pit
X2098 Back of cave
X2099 Sculptors' studio
X2100 Artist's cavern
X2101 Maze
X2102 Maze
X2103 Maze
X2104 Maze
X2105 Maze
X2106 Maze
X2107 Maze
X2108 Maze
X2109 Maze
X2110 Maze
X2111 Maze
X2112 Maze
X2113 Maze
X2114 Maze
X2115 Maze
X2116 Maze
X2117 Dark tunnel
X2118 Mushroom farm
X2119 Round tunnel
X2120 Curving passage
X2121 Wet cave
X2122 Underground pool
X2123 Underwater
X2124 Dead end
X2125 Dead end
X2126 Tight squeeze
X2127 Dead end
X2128 Gold mine
X2129 Damp crawlway
X2130 Large hall
X2131 Ferret home
X2132 Ferret nursery
X2133 East-west hall
X2134 Metal chamber
X2135 East end of hall
X2136 North end of hall
X2137 Hall
X2138 Hall
X2139 Hall junction
X2140 Hall
X2141 Hall
X2142 South end of hall
X2143 Darkroom
X2144 Library
X2145 Office
X2146 Control room
X2147 Chemical storage
X2148 Electronic storage
X2149 Storage room
X2150 Tool room
X2151 Mine Entrance
X2152 Top of mine shaft
X2153 Teleportation booth
X2154 Center of great hall
X2155 North wall of hall
X2156 Northeast corner of hall
X2157 East wall of hall
X2158 Southeast corner of hall
X2159 South wall of hall
X2160 Southwest corner of hall
X2161 West wall of hall
X2162 Northwest corner of hall
X2163 Hallway
X2164 Hallway
X2165 Large anteroom
X2166 Giant ship
X2167 Hallway
X2168 Viewing room
X2169 Outer office
X2170 Secret corridor
X2171 Office complex
X2172 Hallway
X2173 Airlock door
X2174 Airlock
X2175 Small ship in dock
X2176 Orbiting Altair
X2177 Orbiting Cygnus
X2178 Orbiting Vega
X2179 Orbiting Deneb
X2180 Orbiting Auriga
X2181 In ship on Cygnus
X2182 Cygnan landing site
X2183 Cygnan sea-shore
X2184 In ship on Auriga
X2185 Aurigan landing site
X2186 Aurigan control center
X2187 In ship on Deneb
X2188 Deneb landing platform
X2189 Doorway
X2190 Sitting room
X3001 Chrome key
X4001 Dangling from the nest on a red string is a chrome key.
X4002 There is a chrome key on a string here.
X3002 Blue sapphire
X4001 At the end of one vein is a huge blue sapphire!
X4002 There is a huge blue sapphire here.
X3003 Colorful fish
X4001 Swimming blissfully around, eating the tiny polyps, is a large
X4001 particularly colorful fish.
X4002 There is a colorful fish here.
X4003 It is a very colorful fish indeed, with long fins and a long
X4003 snout, suitable for eating the tiny polyps. The zoologists at
X4003 your camp might like to examine it.
X3004 Dead fish
X4001 There is a smelly dead fish here.
X4002 It is now dead and beginning to decompose. You shouldn't have
X4002 kept it out of the water so long.
X3005 Knapsack
X4001 There is a knapsack here.
X4002 It is a large red canvas backpack, with lots of room and many
X4002 pockets. You could easily carry many kilograms in it.
X4003 The knapsack is empty.
X4004 The knapsack contains:
X3006 Red shirt
X4001 Lying on the ground is a red shirt.
X3007 Green shirt
X4001 There is a dark green shirt here.
X3008 Pair of heavy boots
X4001 There is a pair of heavy boots here.
X4002 They are for heavy duty hiking.
X3009 Canvas shoes
X4001 There is a pair of light canvas shoes here.
X4002 They are for rock climbing.
X3010 Blue pants
X4001 Lying on the ground is a pair of dark blue pants.
X3011 Tan pants
X4001 There is a pair of light tan pants here.
X3012 Butterfly net
X4001 There is a butterfly net here.
X4002 The net is empty.
X4003 The net contains:
X3013 Plastic tube
X4001 There is something which looks like a tube of toothpaste here.
X4002 The label says: "Berry's Bug Dope"
X4002 Repels blackflies, bees, gnats and chiggers. Not for use
X4002 against worms or sharks. Ingredients: DEET (C12H17NO)
X4002 23%, active ingredient. Inert ingredients:
X4002 Alcohol (C2H6O) 76%, perfume 1%.
X4002 The tube is empty.
X3014 Instant camera
X4001 There is an instant-picture camera here.
X4002 It is a space-patrol issue picture-in-a-minute camera, model
X4002 AN/MQ 30045-9812-773R. It's so automatic that all you have to do
X4002 is say "shoot" and it will take a picture of the most
X4002 interesting object around. This little beauty cost the Patrol
X4002 $6,345,003.00.
X4002 (Just between you and me, it's a Polaroid Snapshooter
X4002 worth $49.95.)
X3015 Plastic bag
X4001 There is a plastic bag here.
X4002 It is a collecting bag, for preserving living specimens. It is
X4002 watertight but can "breathe" so living animals can be carried
X4002 in it.
X4003 The plastic bag is empty.
X4004 The plastic bag contains:
X4005 The bag is full of water.
X4006 The water-filled bag contains:
X3016 Crablike fossil
X4001 Sticking out of the rocks is a huge crablike fossil!
X4002 There is a large fossil here.
X3017 Photograph of tiny pterodactyls
X4001 There is a photograph of some tiny pterodactyls here.
X4002 There's nothing particularly interesting about the small
X4002 critters themselves (except to see how sharp their teeth are),
X4002 but, behind the horsetails seems to be a cave!
X3018 Photograph of Martians
X4001 There is a photograph of some "Martians" here.
X4002 It's a photo of those odd energy creatures. The scene is what
X4002 must be a bar. One of them is getting a "charge" from an odd
X4002 electrical device.
X4003 The photo is of those odd electrical "Martians" playing their
X4003 variant of hockey.
X3019 Huge diamond
X4001 One of the diamonds is loose.
X4002 There is a huge diamond here.
X3020 Hockey puck
X4001 Lying on the ground is a hockey puck.
X4002 It look like an ordinary hockey puck, about 10 centimeters in
X4002 diameter. Hmmmmmmmmmmm... It seems, however, to be metallic
X4002 rather than the usual plastic. It is bright and silvery.
X4002 Closer scrutiny shows that it is SOLID PLATINUM!
X3021 Red boulder
X4001 Lying on the ground is barely liftable boulder.
X3022 Green moss
X4001 Lying on the ground is a large piece of soft green moss.
X4002 Moss is moss is moss. It's a beautiful dark green and very
X4002 soft and squishy.
X3023 Glass plate
X4001 A large piece of glass is lying on the ground.
X4002 It's a plate of glass, about 80 centimeters in diameter, and one
X4002 centimeter thick, apparently cut out of a larger piece by some
X4002 inept glasscutter. It's very sturdy.
X3024 Piece of wire
X4001 Lying on the ground is a long piece of wire.
X4002 It's very heavily insulated, except for the very ends,
X4002 which are stripped clean.
X4003 The wire is attached to the tower.
X4004 The wire is tied to the knob in the stool.
X3025 Glowing sphere
X4001 Lying on the ground is a glowing sphere.
X4002 The sphere is about ten centimeters in diameter. It is hollow,
X4002 with rather thick walls. Inside is a smaller sphere, about one
X4002 centimeter in diameter. The glow seems to emanate from the
X4002 whole inner wall it, but is brighter near where the small sphere
X4002 rests. It is extremely heavy for its size.
X3026 Gooey latex
X4001 Flowing from the bark of the tree is a large quantity of gooey
X4001 latex. It flows down the tree making a rubbery coating. If you
X4001 had a bucket you could collect a large quantity.
X4002 There is a puddle of congealed latex here.
X4003 A sticky layer of rubber covers the pole.
X4004 It is a mildly viscous, very sticky liquid, with a faint
X4004 turpentine-like odor. If spread in a thin layer on something
X4004 it soon congeals into a smooth, pliable, and only faintly sticky
X4004 coating.
X4005 It seems to have congealed into a solid mass.
X3027 Damaged cable
X4001 There is a damaged microwave cable here.
X4002 It is a green cable about one meter long with connectors on each
X4002 end. The middle has been chewed almost through by a rodent.
X3028 Good cable
X4001 There is a good microwave cable here.
X4002 It is a green cable about one meter long with connectors on
X4002 each end. It is in good condition.
X3029 Beautiful orchid
X4001 Sitting on the bench is a potted orchid.
X4002 There is a beautiful orchid here.
X4003 It is violet, white and magenta, about 20 cm across, and a
X4003 striking example of the evolutionary similarity of this planet
X4003 and the earth.
X3030 Venus flytrap
X4001 Sitting on the bench is a potted Venus flytrap plant.
X4002 There is a Venus flytrap here.
X4003 It is green and nasty. It is obviously carnivorous, although
X4003 the resemblance to it's earthly namesake is tenuous.
X3031 Large cassette
X4001 Lying on the ground is a large cassette for film.
X4002 It is about 30 centimeters square and 1 cm thick. An indicator
X4002 shows that it is properly loaded with film.
X3032 Overexposed photograph
X4001 There is an overexposed photograph here.
X4002 Something, probably radioactive, has caused this photo to be
X4002 so overexposed as to be unusable.
X3033 Tomato
X4001 There is a tomato here.
X4002 It looks like a delicious red tomato.
X3034 Lettuce
X4001 There is a head of lettuce here.
X4002 Lettuce is lettuce. It is not very nutritious.
X3035 Cabbage
X4001 There is a head of cabbage here.
X4002 Cabbage is cabbage.
X3036 Strawberry
X4001 There is a giant strawberry here.
X4002 It is 10 centimeters across and red, like a strawberry.
X3037 Grapes
X4001 A large bunch of grapes grows on a vine here.
X4002 The is a bunch of grapes here.
X4003 They are green and look good enough to eat.
X3038 Sunflower seed
X4001 Growing on one of the plants is a full-grown seed.
X4002 There is a large sunflower seed here.
X4003 It is a black seed with a metallic sheen, about 10 cm across.
X4003 It is shaped like a large peach pit, with deep grooves in the
X4003 sides.
X3039 Bucket
X4001 There is a bucket here.
X4002 The bucket is full of water.
X4003 The bucket is empty
X4004 The bucket contains:
X3040 Pitchfork
X4001 There is a pitchfork here.
X3041 Shovel
X4001 There is a shovel here.
X3042 Robot
X4001 There is a robot here.
X4002 There is a slightly corroded robot here.
X4003 The robot is about one and a half meters tall. It is almost
X4003 spherical, sitting on four lightly sprung wheels. On top is
X4003 what looks like a car antenna. Beneath that is a rotating TV
X4003 camera. It has two arms, one of which is a rather delicate-
X4003 looking clasping device. The other is a swivel-mounted hose
X4003 arrangement obviously designed for it's primary purpose of
X4003 watering plants. In the control section beneath the TV eye are
X4003 a microphone and a speaker.
X4004 The robot is empty-handed.
X4005 The robot holds:
X3043 Statue
X4001 There is a small statue here
X4002 It is a carving of a ferret. The ferret is holding a small star.
X4002 It must be some sort of religious object.
X3044 Mushroom
X4001 There is a huge mushroom here.
X3045 Gold nugget
X4001 Lying on the ground is a large nugget of gold.
X3046 Photograph of wall paintings.
X4001 There is a photograph of some wall paintings here.
X4002 You recognize the paintings made be the ferret-artist.
X3047 Photograph of ferret family
X4001 There is a photo of some ferrets here.
X4002 It is a typical boring family photo, not some artistic wonder.
X4002 What more did you expect?
X3048 Black cat
X4001 Sitting on the platform is a very unhappy black cat.
X4002 There is a large black cat purring contentedly here.
X3049 Container of DEET
X4001 There is a supply of DEET here.
X4002 It is a slightly viscous, colorless, slightly sweet liquid.
X3050 Container of nvglo
X4001 There is a supply of nvglo here.
X4002 It is a pale pink powder. It's dust makes you sneeze.
X3051 Container of sbkl
X4001 There is a supply of sbkl here.
X4002 It consists of large white crystals.
X3052 "Terran" cartridge
X4001 There is a plug-in cartridge marked "Gviizm-Terran" here.
X4002 It looks like it would plug into a computer.
X3053 Knife
X4001 There is a knife here.
X3054 Hammer
X4001 There is a hammer here.
X3055 Screwdriver
X4001 There is a screwdriver here.
X3056 "Cygnan" cartridge
X4001 There is a plug-in cartridge marked "Xbtmzm-Cygnan" here.
X4002 It looks like it would plug into a computer.
X3057 Glowing bead
X4001 There is a glowing glass bead here.
X4002 It is about a centimeter in diameter, glowing brightly
X4002 and quite hot.
X3058 Silicon "Insect"
X4001 Basking in the heat of the fire is a tiny silicon insect.
X4002 There is a tiny silicon insect here.
X4003 It looks like a small metallic grasshopper. The body is made
X4003 of a gray semi-metallic substance which looks like silicon.
X4003 The wings are a transparent red, as if made of some zinc or
X4003 arsenic mineral. The eyes are bright iridescent blue-green.
X4003 The thing is obviously a bit cold away from the fiery pit,
X4003 but not in severe distress. The whole effect is as if some piece
X4003 of precious jewelry had come to life.
X3059 Piece of Xray film
X4001 There is a piece of used xray film here.
X4002 The xray film contains no useful image.
X4003 The xray film, though not well exposed, contains the image of a
X4004 The xray film, though showing an image, is all jumbled up and
X4004 unusable.
X4005 The xray film appears to have been improperly processed.
X4005 Perhaps you didn't get the chemicals in the proper places.
X3060 Magnesium box
X4001 There is a magnesium box here.
X4002 It is a medium sized lock-box. The lock mechanism consists of
X4002 a left dial and a right dial, each of which reads from 0 to 999.
X4003 The box is empty.
X4004 The box contains:
X3061 Good disc
X4001 There is a good silicon disc here.
X4002 It is a round piece of silicon, with gold contact pads around
X4002 the edge. It might be some sort of computer memory chip.
X4002 However, due to the presence of some sort of plastic coating
X4002 appearing in places on it, it clearly is not fully processed.
X3062 Broken disc
X4001 There is a broken silicon disc here.
X4002 It is a round piece of silicon, with gold contact pads around
X4002 the edge. It might be some sort of computer memory chip.
X4002 It looks ready to use, except that a small piece is broken
X4002 off of one corner.
X3063 Violet crystal
X4001 Lying on the ground is a beautiful large violet crystal.
X4002 It is a large crystal, very light for its size, with a pale
X4002 violet hue. It is probably spodumene, a mineral valuable for
X4002 its content of lithium, which is used in your ship's drive.
X3064 Chocolate egg
X4001 Sitting in the doll house is a chocolate egg.
X4002 There is a chocolate egg here.
X3065 Silver coin
X4001 There is a silver coin here.
X4002 The coin has a likeness of a reptile on one side and the
X4002 notation &100 on the other.
X3066 Brass coin
X4001 There is a brass coin here.
X4002 It is marked &50.
X3067 Nickel coin
X4001 There is a nickel coin here.
X4002 It is marked &25.
X3068 Copper coin
X4001 There is a copper coin here.
X4002 It is marked &75.
X3069 Platinum coin
X4001 There is a platinum coin here.
X4002 It is marked &300.
X3070 Map
X4001 There is a map here.
X4002 The map is a star map, showing the coordinates of the stars in
X4002 the vicinity. Some stars are described in script which you
X4002 cannot read.
X4003 This appears to be a souvenir map of the galaxy. Among prominent
X4003 locations are the following:
X4003 Location Right ascension Declination
X4003 Altair 0556 2331
X4003 Cygnus 2445 4293
X4003 Vega 7552 2204
X4003 Deneb 1105 6339
X4003 Auriga 3111 3325
X3071 Red ball
X4001 There is a small red ball here.
X3072 Newspaper
X4001 There is a newspaper here.
X4002 The writing is unintelligible.
X4003 A banner at the top of the paper says "EXTRA".
X4003 A subtitle says "Teleporter to Test Site #6 Reactivated".
X4003 The gist of the article is that the teleportation link to
X4003 the planet known as Test Site #6, which recently failed,
X4003 causing district administrator Glathryx to arrive at the
X4003 space station minus his third and fourth leg sets, and then
X4003 became totally inoperative, has come back in operation.
X4003 It seems that an intruder into the test site is suspected
X4003 of causing these recent events. All persons are requested
X4003 to be on the lookout for at strange alien, whose description
X4003 more or less fits you.
X3073 Yellow rod
X4001 There is a yellow rod here.
X3074 Written note
X4001 There is a piece of paper with a note on it here.
X4002 The note is unintelligible.
X4003 The note is partly obliterated by coffee stains, but you can
X4003 just make out
X4003 Do it twice
X4003 Door combinations ....
X4003 Small ship 99 ?? ??
X5001 Volcanic spire
X4001 %%%%
X4002 The spire, although steep, has many small rock flakes
X4002 on which a person could stand if he had the right kind of shoes.
X4003 Why not try to take a mountain. It's just as easy.
X5002 Tiny pterodactyls
X4001 They are rather cute but nasty creatures, with greenish-gray
X4001 skin, venomous red eyes and long razorlike tails.
X4002 That's not wise. They are vicious creatures and would bite you
X4002 The bite of most animals here is fatal.
X5003 Ceramic stool
X4001 As you reach over to look at the stool, a spark jumps out from
X4001 the knob in the center and shocks you.
X4002 It's too heavy to lift.
X5004 Metal knob
X4001 As you get near the knob it gives you a painful but harmless
X4001 electrical shock.
X4002 The knob is permanently attached to its base, which is attached
X4002 forever to the ground.
X5005 Round window
X4001 The window is about 1 meter in diameter, with plate glass.
X4002 The window in the building seems to have been vandalized.
X4003 The glass is quite permanently set in its frame.
X5006 Round door
X4001 In the front of the building is a round door which is closed.
X4002 In the front of the building is a round door which is open.
X4003 In the center of the door is a small metal dimple.
X4004 It is attached to unreachable and unbreakable hinges.
X5007 Tower
X4001
X4002 Have you eaten a hallucinogenic drug?
X5008 Metal dimple
X4001
X4002 Silly!
X5009 Stone cube
X4001 The inscription on the monument reads:
X4001 (translated into English)
X4001
X4001 Site of first landing party
X4001 Year 21007
X4001
X4002 If you wish me to give you a hernia, please say so directly.
X5010 Horsetails
X4001 Horsetails are primitive plants, which live today on earth
X4001 in wet cool forests. Today they are rather small, but
X4001 millions of years ago there were ones several meters tall.
X4001 On this planet the large ones are still common. Here they
X4001 form a line to the sides of the waterfall, where the spray
X4001 keeps them wet. The pterodactyls seem to live somewhere
X4001 behind them.
X4002 Horsetails are used only to scour pans, which you don't have.
X5011 Metal door
X4001 The door is closed.
X4002 The door is open.
X4003 Why would you wish to carry that around?
X5012 Glass door
X4001 The door is closed.
X4002 The door is open.
X4003 You can't take that. It's to big to get anywhere.
X5013 Rabbit hole
X4001 In the ground is a small hole, probably the entrance to a
X4001 rabbit warren.
X4002 In the ground is the gaping entrance of a bottomless pit.
X4003 A hole is the absence of something. You can't take air.
X5014 Louver
X4001 Someone has ransacked the louver. A gaping hole remains.
X4002 Why bother?
X5015 Grape vines
X4001 Growing here in great profusion are grape vines.
X4002 There are some shriveled-up grape vines here.
X4003 Useless. Useless.
X5016 Slot
X4001 The slot is empty.
X4002 The slot contains:
X4003 How can you take that, stupid?
X5017 Square button
X4001 Silly!
X5018 Square button
X4001 Not bloody likely.
X5019 Round button
X4001 Not until you reach Nirvana.
X5020 Hexagonal button
X4001 You take the little plastic cover off the button, but
X4001 the underlying mechanism still works.
X5021 Video screen
X4001 The video screen is blank.
X4002 The video screen shows the view taken by the robot's camera.
X4003 It is permanently mounted on the wall.
X5022 Sink
X4001 The sink is empty.
X4002 The sink contains:
X5023 Microwave antenna
X4001 The antenna is an ordinary satellite dish. It is 5 meters in
X4001 diameter, white, and has a horn collector attached to the base
X4001 by a cable. The cable seems to have been damaged.
X4002 The antenna is an ordinary satellite dish. It is 5 meters in
X4002 diameter, white, and has a horn collector attached to the base
X4002 by a cable. The cable is in working order.
X4003 The antenna is an ordinary satellite dish. The feed cable is
X4003 missing.
X4004 It weighs 4 tons!
X5024 Enlarger
X4001 Nothing is sitting on the enlarger base
X4002 Sitting on the enlarger is:
X4003 It is bolted to the wall.
X5025 Rack
X4001 It has vertical partitions suitable for holding things like film
X4001 cassettes in a vertical position.
X4002 The rack is empty.
X4003 The rack contains:
X4004 It is attached to the bench.
X5026 Tray.
X4001 The tray is empty.
X4002 The tray contains:
X4003 It is a molded part of the bench.
X5027 Hopper
X4001 The hopper is empty.
X4002 The hopper contains:
X4003 It can't me moved.
X5028 Left funnel
X4001 Silly!
X5029 Middle funnel
X4001 You must be suffering from a mind-scrambling drug.
X5030 Right funnel
X4001 That's useless.
X5031 Red button
X4001 It's part of a machine which is too heavy to move.
X5032 Desk
X4001 The desk is empty.
X4002 The desk contains:
X4003 It's too heavy to carry.
X5033 Level indicator
X4001 The level indicator shows too little water.
X4002 The water level is just about right.
X4003 Don't kid me!
X5034 Red light
X4001 The red light is on.
X4002 The red light is off.
X4003 The red light comes off in your hand. (Sorry, just kidding.)
X5035 Green light
X4001 The green light is off.
X4002 The green light is on.
X4003 You're getting tiring, trying to take immovable objects.
X5036 Acid flow
X4001 There is nothing sitting in the acid.
X4002 Sitting in the acid is:
X4003 The robot can't bend over far enough.
X5037 Fiery pit
X4001 Silly!
X5038 Sulfurous mud
X4001 The robot can't bend over to reach it.
X5039 Violet button
X4001 You can't take it.
X5040 Orange button
X4002 It is fixed in the wall.
X5041 White button
X4001 You remove it. A large Jack-in-the-box jumps out. You are so
X4001 embarrassed that you carefully put the whole affair back.
X5042 Blue button
X4001 As you unscrew it, you notice that your nose falls off also.
X4001 The switch it operated remains operational.
X5043 Round recess
X4001 The recess is empty.
X4002 The recess contains:
X4003 Take the air!
X5044 Red vapor
X4001 There is nothing near the red vapor.
X4002 Surrounded by the red vapor is:
X4003 The robot has no suitable container.
X5045 Green vapor
X4001 There is nothing in the green vapor.
X4002 Sitting in the green vapor is:
X4003 The robot has no suitable container.
X5046 Frogs
X4001 These are quite ordinary frogs. They are green, a bit slimy, and
X4001 make a hollow krrooooookkking sound. If you could converse with
X4001 them (which you can't), you would discover that their favorite
X4001 topic of conversation is sex.
X4002 Taken. ....... but
X4002 After a few moments the frog emits a foul-smelling slimy liquid
X4002 which runs down your arm and begins to itch. You drop the poor
X4002 creature.
X5047 Red birds
X4001 They seem to be parrots.
X4002 They fly amongst the highest branches of the trees, far above
X4002 your reach.
X5048 Beautiful birds
X4001 There are dozens of birds of all colors and sizes here. They
X4001 seem to like the most inaccessible branches of the small trees.
X4002 They are well above your head. You can't climb the trees, as
X4002 their trunks are much too weak.
X5049 Beautiful birds
X4001 There are several different species: big red ones, little green
X4001 ones, ones with violet backs and white and yellow heads, and
X4001 many others. They seems to like the highest branches of the
X4001 trees.
X4002 The birds are on the trees, not on the walkway where you stand.
X5050 Beautiful birds.
X4001 The birds are hidden by the top branches of the trees.
X4002 They aren't nearby; they are out of reach in the trees.
X5051 Bees
X4001 Any attempt to get close to the bees results in your getting
X4001 painful stings.
X5052 Cactus
X4001 They are much too big and prickly.
X5053 Doll house
X4001 It is large and ornate, about 2 meters tall, with four stories.
X4001 There are the usual windows and doors through which the ferret
X4001 children put their dolls.
X4002 It is too big to get out the door.
X5054 Waterfall
X4001 Sorry, there is no pot of gold at the end of the rainbow. There
X4001 isn't even any rainbow, just lots of water.
X4002 Have you perhaps been eating cactus hallucinogenic drugs?
X5055 Vending machine
X4001 There is a vending machine here.
X4002 It looks exactly like the machines used on earth to dispense
X4002 candy. The contents look like red balls about one centimeter
X4002 in diameter. The label says "Ozmtfztv Krooh". It has a slot
X4002 labeled &300.
X4003 It looks exactly like the machines used on earth to dispense
X4003 candy. The contents look like red balls about one centimeter
X4003 in diameter. The label says "Language Pills". It has a slot
X4003 labeled &300.
X4004 It is fastened to the wall.
X5056 Slot
X4001 Fat chance.
X5057 Vending machine
X4001 There is a vending machine here.
X4002 It looks exactly like the machines used on earth to dispense
X4002 newspapers. Inside is a supply of papers. The money slot is
X4002 labeled &25.
X4003 It is fastened to the wall.
X5058 Slot
X4001 Fat chance.
X5059 Vending machine
X4001 There is a vending machine here.
X4002 It is a slot machine. That is, it has a slot for any size
X4002 coin and three windows through which can be seen images of
X4002 various fruits and occasionally a pot of money. It does
X4002 seem to be missing the lever necessary to make it a
X4002 "One armed bandit".
X4003 You think perhaps to take it to a quiet place and blow it
X4003 open? Sorry, it won't budge.
X5060 Slot
X4001 Fat chance
X5061 Vending machine
X4001 There is a vending machine here.
X4002 It appears to be offering maps for sale. A slot in it is
X4002 marked &75.
X4003 It is attached to the wall.
X5062 Slot
X4001 Fat chance.
X5063 Large machine
X4001 Read the room description for information.
X4002 It is too heavy
X5064 Orange door
X4001 The orange door is shut.
X4002 The orange door is open.
X4003 Silly!
X5065 Pink door
X4001 The pink door is shut.
X4002 Fat chance!
X5066 Blue door
X4001 The blue door is shut.
X4002 The blue door is open.
X4003 It's fixed top the ship.
X5067 Orange clip
X4001 The orange clip is empty.
X4002 The orange clip contains:
X4003 No way.
X5068 Violet clip
X4001 The violet clip is empty.
X4002 The violet clip holds:
X4003 Silly!
X5069 Yellow clip
X4001 The yellow clip is empty.
X4002 The yellow clip contains:
X4003 Not in this life!
X5070 Blue clip
X4001 The blue clip is empty.
X4002 The blue clip holds:
X4003 You break your fingernail but not the clip.
X5071 File cabinet
X4001 The file cabinet holds useless papers.
X4002 In addition to junk the cabinet holds:
X4003 It is glued to the floor.
X5072 Green button
X4001 Behind the file cabinets is a green button.
X4002 Silly!
X5073 Large mural
X4001 The south wall of the room is completely filled with a large
X4001 mural.
X4002 The mural has slid partially aside to reveal a secret passage
X4002 leading south.
X4003 The mural shows a picture of one of the large star clusters
X4003 visible out the viewing ports. You notice that the left side
X4003 is somewhat scuffed up.
X4004 You might as well take the air.
X5074 Dummy
X4001 ****
X5075 ****
X9999
END_OF_vtext.dat.ac
if test 31391 -ne `wc -c <vtext.dat.ac`; then
echo shar: \"vtext.dat.ac\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f world.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"world.c\"
else
echo shar: Extracting \"world.c\" \(10850 characters\)
sed "s/^X//" >world.c <<'END_OF_world.c'
X
X#include "parame.inc"
X#include "variab.h"
X#include "locdat.inc"
X#include "objdat.inc"
X#include "objdes.inc"
X#include "gtext.inc"
X
X/* World C Version 1.00 copyright 1987 J.D.McDonald
X Use as you like for non-commercial purposes, but please
X leave this note, and document any changes you make as yours */
X
Xstatic int i, xloc, mxscor, succes, mloc, ikk, verb, vretrn;
Xstatic int scor, xretn, yretn, h, errflg;
X
Xmain()
X{
X
X rdinit();
X wwflag = 0;
X nomor = 0;
X speak(29);
X linout(" ", 1);
X slflag = 0;
X speak(gtext[1] + 1);
X xindnt = 0;
X for (i = 0; i < 9; i++)
X marflg[i] = 0;
X for (i = 0; i < 6; i++)
X wirelc[i] = 0;
X brfflg = 1;
X deadf = 0;
X dirty = 0;
X turns = 0;
X more = 0;
X diesc = 0;
X horflg = 0;
X nonext = 0;
X screef = 0;
X spcloc = 0;
X oldloc = 1;
X oldlc2 = 1;
X loc = 1;
X xloc = 0;
X oextim = 0;
X rdietm = 0;
X rvtim = 0;
X gvtim = 0;
X eattim = 0;
X easttm = 0;
X filmtm = 0;
X filmst = 0;
X machst = 0;
X fimage = 0;
X dial1x = -1;
X dial2x = -1;
X dial1 = 0;
X dial2 = 0;
X eastsc = 0;
X cactsc = 0;
X mxscor = 450;
X bonus = 0;
X jackpo = 0;
X lpill = 0;
X pbstat = 0;
X dcombi = -1;
X chaset = 0;
X chaser = 0;
X fshlif = 8;
X noshoe = 8;
X guardl = 0;
X eolflg = 1;
X linout(" ", 1);
X /* the main command loop!!!!! */
X
Xlab1:
X if (eolflg) {
X getln();
X dotflg = 0;
X clause = 1;
X actor = 1;
X lptr = 0;
X }
X succes = scan();
X if (!succes)
X eolflg = 1;
X if (!succes)
X goto lab1;
X succes = parse();
X clause += 1;
X if (!succes)
X eolflg = 1;
X if (!succes)
X goto lab1;
X errflg = 0;
X /****** for "tell someone" or "ask someone" */
X
X if (actor != 1) {
X
X otheract(); /* perform verbs for other than player */
X
X
X timer(xloc);
X /* this goto is for permanent death due to radiation poisoning */
X
X {
X if (rdietm == 50)
X goto lab9000;
X nonext = 1;
X goto lab3000;
X }
X }
X /******/
X
X
X
X
X verb = wrdnum[0];
X
X playerv(); /* this does all the verbs for player */
X
X
X if (errflg == 1)
X goto lab9000;
X if (errflg == 2)
X goto lab9990;
X {
X if (deadf && loc >= 153)
X goto lab9000;
X }
X timer(xloc);
X /*
X * this goto is for permanent death due to radiation poisoning or death
X * in endgame
X */
X
X {
X if (rdietm == 50 || (loc >= 153 && deadf))
X goto lab9000;
X }
X h = 0;
X {
X if (loc != xloc) {
X /* get out of any special locations (like on glass) */
X
X if (!(loc == 187 || loc == 184 || (loc >= 175
X && loc <= 181)))
X spcloc = 0;
X if (wirelc[5] == 1000 || obloc[ZWIRE] == 1000)
X wdemon();
X h = 1;
X }
X }
X /* announce new location */
X
X {
X if (!nonext || (loc >= 7 && loc <= 11) ||
X (loc >= 100 && loc <= 116)) {
X linout(" ", 1);
X if (loc >= 7 && loc <= 11)
X h = 1;
X vlocat(0, h);
X }
X if (loc >= 26 && loc <= 51) {
X linout(" ", 1);
X mdemon();
X }
X }
X
X /* cat function */
X
Xlab3000:
X {
X if (obloc[ZCAT] == 1000 || (obloc[ZCAT] == (2000 + ZKNAPS) &&
X (obloc[ZKNAPS] == 3000 || obloc[ZKNAPS] == loc))) {
X if (loc == 149 && obloc[ZCART] == 0) {
X speak(290);
X obloc[ZCAT] = loc;
X obloc[ZCART] = loc;
X } else if (obloc[ZCAT] == 2000 + ZKNAPS && obloc[ZKNAPS] == 3000
X && pct(5)) {
X speak(287);
X obloc[ZCAT] = 1000;
X } else if (pct(3))
X speak(288);
X else if (pct(3))
X speak(289);
X }
X }
X /* robot activation */
X
X {
X if ((obimpr[RSLOT] & 8192) == 8192) {
X obimpr[RSLOT] -= 8192;
X if (obloc[ZCART] == 2000 + RSLOT)
X speak(310);
X else
X speak(365);
X }
X }
X /* give bonus for reaching cygnus or deneb */
X
X {
X if (loc == 183) {
X if ((locdat[183] & 16384) == 0) {
X speak(549);
X bonus += 5;
X } else if (xloc != loc)
X speak(550);
X } else if (loc == 186) {
X if ((locdat[186] & 16384) == 0)
X speak(547);
X else if (xloc != loc)
X speak(548);
X } else if (loc == 190) {
X speak(551);
X bonus += 5;
X goto lab9000;
X }
X }
X {
X if (loc == xloc && loc == 171) {
X speak(557);
X vdead();
X goto lab9000;
X }
X }
X xloc = loc;
X turns += 1;
X nonext = 0;
X /* we have visited this location */
X
X locdat[loc] |= 16384;
X linout(" ", 1);
X goto lab1;
Xlab9000:
X linout(" ", 1);
X scor = scorng() + bonus * 5;
X scorpt(scor, mxscor);
X goto lab9999;
Xlab9990:
X endsl();
Xlab9999:
X ;
X}
X
X/* end of main program */
X
X
Xotheract()
X{
X static int actok;
X
X if (actor == MARTIA) {
X if (martim == 7 && loc >= 27 && loc <= 51)
X speak(167);
X else
X speak(168);
X } else if (actor == ROBOT) {
X {
X if (chgact == 1)
X actok = 1;
X }
X /* test to see if robot can "hear" */
X
X if (chgact == 1 && obloc[CCART] == (2000 + RSLOT) &&
X (loc == 146 || obloc[ZROBOT] == loc)) {
X speak(366);
X actok = 0;
X } else if (chgact == 1 && !((loc == obloc[ZROBOT] ||
X loc == 146) && obloc[ZCART] == (2000 + RSLOT))) {
X speak(314);
X actok = 0;
X } else if (chgact == 0 && actok == 0);
X else if (wrdnum[0] == GO) {
X mloc = obloc[ZROBOT];
X vgo();
X {
X if (obloc[ZROBOT] == 90)
X obimpr[ZROBOT] = 2257;
X }
X {
X if (rmove == 1 && (loc == mloc))
X speak(316);
X else if (rmove == 1 && mloc != loc && obloc[ZROBOT] == loc)
X speak(317);
X else if (rmove == 1 && loc == 146)
X robdsc();
X }
X {
X if (obloc[ZROBOT] == 90) {
X if (obloc[ZORCHI] == 2000 + ZROBOT)
X obloc[ZORCHI] = 0;
X else if (obloc[ZFLYTR] == 2000 + ZROBOT)
X obloc[ZFLYTR] = 0;
X }
X }
X } else if (wrdnum[0] == TAKE || wrdnum[0] == DROP ||
X wrdnum[0] == PUT || wrdnum[0] == IS || wrdnum[0] ==
X TRANSL || wrdnum[0] == WASH || wrdnum[0] == QWATER
X || wrdnum[0] == HOLD || wrdnum[0] == GIVE)
X vrobot();
X else
X speak(315);
X } else if (actor == FERRET) {
X if (loc != 131 && loc != 99 && loc != 100)
X speak(435);
X else
X speak(436);
X } else if (actor == CACTUS) {
X if (loc != 82)
X speak(437);
X else if (cactsc != 3)
X speak(438);
X /* cactus freezing scree sclope */
X
X else if ((wrdnum[0] == HOLD || wrdnum[0] == FREEZE) &&
X dobjs[0] == GRAVEL) {
X screef = 4;
X speak(441);
X } else
X speak(237);
X } else if (actor == GUARD) {
X if (loc == guardl || loc == 171 || (chaset != 0 &&
X chaset <= 9))
X speak(562);
X else
X speak(561);
X } else
X speak(251);
X}
X
Xplayerv()
X{
X if (verb < TAKE) {
X vretrn = 1;
X {
X if (verb == RUN)
X vretrn = vrun();
X else if (verb == CRAWL)
X vretrn = vcrawl();
X else if (verb == CROSS)
X vretrn = vcross();
X else if (verb == JUMP)
X vretrn = vjump();
X else if (verb == ASCEND) {
X prepdo = UP;
X vretrn = vclimb();
X } else if (verb == DESCEN) {
X prepdo = DOWN;
X vretrn = vclimb();
X } else if (verb == CLIMB)
X vretrn = vclimb();
X else if (verb == SWIM)
X vretrn = vswim();
X }
X
X /*
X * if vretrn=0, then the action is complete if vretrn=1, then a
X * translation to "go" occured or the verb was actually "go"
X */
X
X {
X if (vretrn == 1)
X vgo();
X }
X } else if (verb == QUIT) {
X if (yesx(101))
X errflg = 1; /* out after scoring */
X
X } else if (verb == DAMN)
X dirty += 1;
X else if (verb == SUSPEN)
X if (chaset == 0)
X vsuspe(0);
X else
X speak(559);
X else if (verb == RESTOR) {
X if (vsuspe(1)) {
X eolflg = 1;
X nonext = 0;
X actor = 1;
X xloc = loc;
X }
X } else if (verb == BRIEF)
X brfflg = 1;
X else if (verb == VERBOS)
X brfflg = 2;
X else if (verb == SUPERB)
X brfflg = 0;
X else if (verb == QMORE)
X nomor = 0;
X else if (verb == NOMORE)
X nomor = 1;
X else if (verb == SCORE) {
X scor = scorng() + bonus * 5;
X scorpt(scor, mxscor);
X } else if (verb == HELP)
X vhelp();
X else if (verb == RETREA)
X vretre();
X else if (verb == PRAY) {
X if (!deadf || loc != 61)
X speak(44);
X else {
X deadf = 0;
X speak(45);
X nonext = 1;
X noshoe = 8;
X }
X } else if (verb == DEBUG)
X dbg();
X else if (verb == LOCATE) {
X vlocat(1, 1);
X nonext = 1;
X } else if (!deadf) {
X if (verb == TAKE || verb == REMOVE || verb == CARRY ||
X verb == HOLD)
X vtake();
X else if (verb == DROP)
X vdrop();
X else if (verb == THROW) {
X if (!vthrow())
X vdrop();
X } else if (verb == SIT)
X vsit();
X else if (verb == STAND)
X vstand();
X else if (verb == GET) {
X xretn = vget();
X {
X if (xretn == 1)
X vtake();
X }
X } else if (verb == SHOOT)
X vshoot();
X else if (verb == OPEN)
X vopen();
X else if (verb == SHUT)
X vshut();
X else if (verb == LAND || verb == ACTIVA)
X vship();
X else if (verb == SCRATC)
X vscrat();
X else if (verb == TRANSL)
X speak(71);
X else if (verb == ATTACH)
X vattac();
X else if (verb == POUR || verb == QWATER) {
X if (vpour() == 1)
X vput();
X } else if (verb == WASH)
X vwash();
X else if (verb == EAT)
X veat();
X else if (verb == DRINK)
X vdrink();
X else if (verb == FILL) {
X if (vfill() == 1)
X vpour();
X } else if (verb == IGNITE)
X speak(39);
X else if (verb == TURN)
X vturn();
X else if (verb == READ)
X vread();
X else if (verb == BREAK)
X vbreak();
X else if (verb == FREEZE)
X speak(442);
X else if (verb == PICK) {
X xretn = vpick();
X {
X if (xretn == 1)
X vtake();
X }
X } else if (verb == WEAR)
X vwear();
X else if (verb == PUT) {
X xretn = vput();
X {
X if (xretn == 1)
X vwear();
X if (xretn == 2)
X vdrop();
X if (xretn == 3)
X vpour();
X }
X } else if (verb == LOCK || verb == UNLOCK)
X vlocks();
X else if (verb == LOOK || verb == EXAMIN)
X vlooks();
X else if (verb == PUSH || verb == KISS) {
X {
X if (verb == KISS)
X yretn = vkiss();
X }
X if (yretn == 1 || verb == PUSH) {
X xretn = vpush();
X /* oops! the nova button */
X
X if (xretn == 1)
X errflg = 2; /* instant out */
X
X else if (xretn > 1) {
X bonus = xretn * 2;
X {
X if (xretn < 5)
X errflg = 1; /* out after scoring */
X
X }
X /* change to the "endgame" */
X
X scor = scorng();
X bonus += scor / 5;
X loc = 153;
X oldloc = 0;
X oldlc2 = 0;
X {
X for (ikk = 1; ikk <= SCOIN; ikk++)
X if (obloc[ikk] != 1000 && obloc[ikk] != 3000)
X obloc[ikk] = 0;
X }
X obloc[ZKNAPS] = 0;
X }
X }
X } else if (verb == PUNCH) {
X if (vpunch() == 1)
X vbreak();
X } else if (verb == ATTACK)
X vattak();
X else if (verb == DIG)
X vdig();
X else if (verb == GIVE || verb == FEED)
X vgive();
X else if (verb == IS)
X speak(467);
X else if (verb == FUCK) {
X dirty += 1;
X vfuck();
X } else if (loc == 127 && (verb == SHIT || verb == EXHALE
X || verb == PISS)) {
X loc = 126;
X oldloc = 0;
X oldlc2 = 0;
X speak(312);
X } else if (verb == EXHALE)
X speak(313);
X else if (verb == PISS)
X vpiss();
X else if (verb == SHIT)
X vshit();
X else if (verb == INVENT)
X vinven();
X else;
X }
X else speak(46);
X
X}
END_OF_world.c
if test 10850 -ne `wc -c <world.c`; then
echo shar: \"world.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 5 \(of 7\).
cp /dev/null ark5isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 7 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
eximine