[comp.sources.games] v01i104: world - sci-fi adventure game, Part05/07

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