FORTRAN line numbers returned from action() become action symbols.
This commit is contained in:
parent
d85ef403af
commit
a02b387999
4 changed files with 141 additions and 124 deletions
221
actions.c
221
actions.c
|
@ -45,7 +45,7 @@ static int attack(FILE *input, long verb, token_t obj)
|
||||||
if (game.closed)
|
if (game.closed)
|
||||||
{
|
{
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
DSTROY(BIRD);
|
DSTROY(BIRD);
|
||||||
game.prop[BIRD]=0;
|
game.prop[BIRD]=0;
|
||||||
|
@ -54,7 +54,7 @@ static int attack(FILE *input, long verb, token_t obj)
|
||||||
if (obj == VEND) {
|
if (obj == VEND) {
|
||||||
PSPEAK(VEND,game.prop[VEND]+2);
|
PSPEAK(VEND,game.prop[VEND]+2);
|
||||||
game.prop[VEND]=3-game.prop[VEND];
|
game.prop[VEND]=3-game.prop[VEND];
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj == 0)spk=44;
|
if (obj == 0)spk=44;
|
||||||
|
@ -79,10 +79,10 @@ static int attack(FILE *input, long verb, token_t obj)
|
||||||
}
|
}
|
||||||
spk=spk+1+1/k;
|
spk=spk+1+1/k;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj == BEAR)spk=165+(game.prop[BEAR]+1)/2;
|
if (obj == BEAR)spk=165+(game.prop[BEAR]+1)/2;
|
||||||
if (obj != DRAGON || game.prop[DRAGON] != 0) {RSPEAK(spk); return 2012;}
|
if (obj != DRAGON || game.prop[DRAGON] != 0) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
/* Fun stuff for dragon. If he insists on attacking it, win!
|
/* Fun stuff for dragon. If he insists on attacking it, win!
|
||||||
* Set game.prop to dead, move dragon to central loc (still
|
* Set game.prop to dead, move dragon to central loc (still
|
||||||
* fixed), move rug there (not fixed), and move him there,
|
* fixed), move rug there (not fixed), and move him there,
|
||||||
|
@ -105,7 +105,7 @@ static int attack(FILE *input, long verb, token_t obj)
|
||||||
MOVE(obj,k);
|
MOVE(obj,k);
|
||||||
}
|
}
|
||||||
game.loc=k;
|
game.loc=k;
|
||||||
return(8);
|
return GO_MOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bigwords(long foo)
|
static int bigwords(long foo)
|
||||||
|
@ -118,17 +118,17 @@ static int bigwords(long foo)
|
||||||
if (game.foobar != 1-k) {
|
if (game.foobar != 1-k) {
|
||||||
if (game.foobar != 0)spk=151;
|
if (game.foobar != 0)spk=151;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
} else {
|
} else {
|
||||||
game.foobar=k;
|
game.foobar=k;
|
||||||
if (k != 4) {
|
if (k != 4) {
|
||||||
RSPEAK(54);
|
RSPEAK(54);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.foobar=0;
|
game.foobar=0;
|
||||||
if (game.place[EGGS]==PLAC[EGGS] || (TOTING(EGGS) && game.loc==PLAC[EGGS])) {
|
if (game.place[EGGS]==PLAC[EGGS] || (TOTING(EGGS) && game.loc==PLAC[EGGS])) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
/* Bring back troll if we steal the eggs back from him before
|
/* Bring back troll if we steal the eggs back from him before
|
||||||
* crossing. */
|
* crossing. */
|
||||||
|
@ -139,7 +139,7 @@ static int bigwords(long foo)
|
||||||
if (game.loc == PLAC[EGGS])k=0;
|
if (game.loc == PLAC[EGGS])k=0;
|
||||||
MOVE(EGGS,PLAC[EGGS]);
|
MOVE(EGGS,PLAC[EGGS]);
|
||||||
PSPEAK(EGGS,k);
|
PSPEAK(EGGS,k);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ static int bivalve(token_t verb, token_t obj)
|
||||||
DROP(PEARL,105);
|
DROP(PEARL,105);
|
||||||
}
|
}
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int blast(void)
|
static int blast(void)
|
||||||
|
@ -167,7 +167,7 @@ static int blast(void)
|
||||||
if (game.prop[ROD2] < 0 || !game.closed)
|
if (game.prop[ROD2] < 0 || !game.closed)
|
||||||
{
|
{
|
||||||
RSPEAK(67);
|
RSPEAK(67);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.bonus=133;
|
game.bonus=133;
|
||||||
if (game.loc == 115)
|
if (game.loc == 115)
|
||||||
|
@ -195,7 +195,7 @@ static int vbreak(token_t verb, token_t obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int brief(void)
|
static int brief(void)
|
||||||
|
@ -204,7 +204,7 @@ static int brief(void)
|
||||||
game.abbnum=10000;
|
game.abbnum=10000;
|
||||||
game.detail=3;
|
game.detail=3;
|
||||||
RSPEAK(156);
|
RSPEAK(156);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int carry(token_t verb, token_t obj)
|
static int carry(token_t verb, token_t obj)
|
||||||
|
@ -222,7 +222,7 @@ static int carry(token_t verb, token_t obj)
|
||||||
obj=game.atloc[game.loc];
|
obj=game.atloc[game.loc];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TOTING(obj)) {RSPEAK(24); return 2012;}
|
if (TOTING(obj)) {RSPEAK(24); return GO_CLEAROBJ;}
|
||||||
spk=25;
|
spk=25;
|
||||||
if (obj == PLANT && game.prop[PLANT] <= 0)spk=115;
|
if (obj == PLANT && game.prop[PLANT] <= 0)spk=115;
|
||||||
if (obj == BEAR && game.prop[BEAR] == 1)spk=169;
|
if (obj == BEAR && game.prop[BEAR] == 1)spk=169;
|
||||||
|
@ -234,12 +234,12 @@ static int carry(token_t verb, token_t obj)
|
||||||
if (obj == SIGN)spk=196;
|
if (obj == SIGN)spk=196;
|
||||||
if (obj == MESSAG) {
|
if (obj == MESSAG) {
|
||||||
spk=190;
|
spk=190;
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
DSTROY(MESSAG);
|
DSTROY(MESSAG);
|
||||||
}
|
}
|
||||||
if (game.fixed[obj] != 0) {
|
if (game.fixed[obj] != 0) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj == WATER || obj == OIL) {
|
if (obj == WATER || obj == OIL) {
|
||||||
if (!HERE(BOTTLE) || LIQUID() != obj) {
|
if (!HERE(BOTTLE) || LIQUID() != obj) {
|
||||||
|
@ -248,7 +248,7 @@ static int carry(token_t verb, token_t obj)
|
||||||
if (game.prop[BOTTLE] != 1)spk=105;
|
if (game.prop[BOTTLE] != 1)spk=105;
|
||||||
if (!TOTING(BOTTLE))spk=104;
|
if (!TOTING(BOTTLE))spk=104;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
obj = BOTTLE;
|
obj = BOTTLE;
|
||||||
}
|
}
|
||||||
|
@ -256,19 +256,19 @@ static int carry(token_t verb, token_t obj)
|
||||||
spk=92;
|
spk=92;
|
||||||
if (game.holdng >= INVLIMIT) {
|
if (game.holdng >= INVLIMIT) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
else if (obj == BIRD && game.prop[BIRD] != 1 && -1-game.prop[BIRD] != 1) {
|
else if (obj == BIRD && game.prop[BIRD] != 1 && -1-game.prop[BIRD] != 1) {
|
||||||
if (game.prop[BIRD] == 2) {
|
if (game.prop[BIRD] == 2) {
|
||||||
DSTROY(BIRD);
|
DSTROY(BIRD);
|
||||||
RSPEAK(238);
|
RSPEAK(238);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (!TOTING(CAGE))spk=27;
|
if (!TOTING(CAGE))spk=27;
|
||||||
if (TOTING(ROD))spk=26;
|
if (TOTING(ROD))spk=26;
|
||||||
if (spk/2 == 13) {
|
if (spk/2 == 13) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.prop[BIRD]=1;
|
game.prop[BIRD]=1;
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ static int carry(token_t verb, token_t obj)
|
||||||
game.prop[CAVITY]=1;
|
game.prop[CAVITY]=1;
|
||||||
}
|
}
|
||||||
RSPEAK(54);
|
RSPEAK(54);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int chain(token_t verb)
|
static int chain(token_t verb)
|
||||||
|
@ -293,7 +293,7 @@ static int chain(token_t verb)
|
||||||
spk=171;
|
spk=171;
|
||||||
if (game.prop[BEAR] == 0)spk=41;
|
if (game.prop[BEAR] == 0)spk=41;
|
||||||
if (game.prop[CHAIN] == 0)spk=37;
|
if (game.prop[CHAIN] == 0)spk=37;
|
||||||
if (spk != 171) {RSPEAK(spk); return 2012;}
|
if (spk != 171) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
game.prop[CHAIN]=0;
|
game.prop[CHAIN]=0;
|
||||||
game.fixed[CHAIN]=0;
|
game.fixed[CHAIN]=0;
|
||||||
if (game.prop[BEAR] != 3)game.prop[BEAR]=2;
|
if (game.prop[BEAR] != 3)game.prop[BEAR]=2;
|
||||||
|
@ -302,13 +302,13 @@ static int chain(token_t verb)
|
||||||
spk=172;
|
spk=172;
|
||||||
if (game.prop[CHAIN] != 0)spk=34;
|
if (game.prop[CHAIN] != 0)spk=34;
|
||||||
if (game.loc != PLAC[CHAIN])spk=173;
|
if (game.loc != PLAC[CHAIN])spk=173;
|
||||||
if (spk != 172) {RSPEAK(spk); return 2012;}
|
if (spk != 172) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
game.prop[CHAIN]=2;
|
game.prop[CHAIN]=2;
|
||||||
if (TOTING(CHAIN))DROP(CHAIN,game.loc);
|
if (TOTING(CHAIN))DROP(CHAIN,game.loc);
|
||||||
game.fixed[CHAIN]= -1;
|
game.fixed[CHAIN]= -1;
|
||||||
}
|
}
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int discard(token_t verb, token_t obj, bool just_do_it)
|
static int discard(token_t verb, token_t obj, bool just_do_it)
|
||||||
|
@ -319,7 +319,7 @@ static int discard(token_t verb, token_t obj, bool just_do_it)
|
||||||
int spk = ACTSPK[verb];
|
int spk = ACTSPK[verb];
|
||||||
if (!just_do_it) {
|
if (!just_do_it) {
|
||||||
if (TOTING(ROD2) && obj == ROD && !TOTING(ROD))obj=ROD2;
|
if (TOTING(ROD2) && obj == ROD && !TOTING(ROD))obj=ROD2;
|
||||||
if (!TOTING(obj)) {RSPEAK(spk); return 2012;}
|
if (!TOTING(obj)) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
if (obj == BIRD && HERE(SNAKE)) {
|
if (obj == BIRD && HERE(SNAKE)) {
|
||||||
RSPEAK(30);
|
RSPEAK(30);
|
||||||
if (game.closed) return(19000);
|
if (game.closed) return(19000);
|
||||||
|
@ -348,12 +348,12 @@ static int discard(token_t verb, token_t obj, bool just_do_it)
|
||||||
DSTROY(COINS);
|
DSTROY(COINS);
|
||||||
DROP(BATTER,game.loc);
|
DROP(BATTER,game.loc);
|
||||||
PSPEAK(BATTER,0);
|
PSPEAK(BATTER,0);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
} else if (obj == BIRD && AT(DRAGON) && game.prop[DRAGON] == 0) {
|
} else if (obj == BIRD && AT(DRAGON) && game.prop[DRAGON] == 0) {
|
||||||
RSPEAK(154);
|
RSPEAK(154);
|
||||||
DSTROY(BIRD);
|
DSTROY(BIRD);
|
||||||
game.prop[BIRD]=0;
|
game.prop[BIRD]=0;
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
} else if (obj == BEAR && AT(TROLL)) {
|
} else if (obj == BEAR && AT(TROLL)) {
|
||||||
RSPEAK(163);
|
RSPEAK(163);
|
||||||
MOVE(TROLL,0);
|
MOVE(TROLL,0);
|
||||||
|
@ -377,10 +377,10 @@ static int discard(token_t verb, token_t obj, bool just_do_it)
|
||||||
game.place[k]=0;
|
game.place[k]=0;
|
||||||
if (obj == CAGE && game.prop[BIRD] == 1)DROP(BIRD,game.loc);
|
if (obj == CAGE && game.prop[BIRD] == 1)DROP(BIRD,game.loc);
|
||||||
DROP(obj,game.loc);
|
DROP(obj,game.loc);
|
||||||
if (obj != BIRD) return(2012);
|
if (obj != BIRD) return GO_CLEAROBJ;
|
||||||
game.prop[BIRD]=0;
|
game.prop[BIRD]=0;
|
||||||
if (FOREST(game.loc))game.prop[BIRD]=2;
|
if (FOREST(game.loc))game.prop[BIRD]=2;
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int drink(token_t verb, token_t obj)
|
static int drink(token_t verb, token_t obj)
|
||||||
|
@ -394,7 +394,7 @@ static int drink(token_t verb, token_t obj)
|
||||||
if (obj != 0 && obj != WATER)spk=110;
|
if (obj != 0 && obj != WATER)spk=110;
|
||||||
if (spk == 110 || LIQUID() != WATER || !HERE(BOTTLE)) {
|
if (spk == 110 || LIQUID() != WATER || !HERE(BOTTLE)) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.prop[BOTTLE]=1;
|
game.prop[BOTTLE]=1;
|
||||||
game.place[WATER]=0;
|
game.place[WATER]=0;
|
||||||
|
@ -406,7 +406,7 @@ static int drink(token_t verb, token_t obj)
|
||||||
spk=240;
|
spk=240;
|
||||||
}
|
}
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int eat(token_t verb, token_t obj)
|
static int eat(token_t verb, token_t obj)
|
||||||
|
@ -429,7 +429,7 @@ static int eat(token_t verb, token_t obj)
|
||||||
OGRE)spk=71;
|
OGRE)spk=71;
|
||||||
}
|
}
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int extinguish(token_t verb, int obj)
|
static int extinguish(token_t verb, int obj)
|
||||||
|
@ -446,19 +446,19 @@ static int extinguish(token_t verb, int obj)
|
||||||
game.prop[URN]=game.prop[URN]/2;
|
game.prop[URN]=game.prop[URN]/2;
|
||||||
spk=210;
|
spk=210;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
else if (obj == LAMP) {
|
else if (obj == LAMP) {
|
||||||
game.prop[LAMP]=0;
|
game.prop[LAMP]=0;
|
||||||
RSPEAK(40);
|
RSPEAK(40);
|
||||||
if (DARK(game.loc))
|
if (DARK(game.loc))
|
||||||
RSPEAK(16);
|
RSPEAK(16);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
else if (obj == DRAGON || obj == VOLCAN)
|
else if (obj == DRAGON || obj == VOLCAN)
|
||||||
spk=146;
|
spk=146;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int feed(token_t verb, token_t obj)
|
static int feed(token_t verb, token_t obj)
|
||||||
|
@ -468,7 +468,7 @@ static int feed(token_t verb, token_t obj)
|
||||||
int spk = ACTSPK[verb];
|
int spk = ACTSPK[verb];
|
||||||
if (obj == BIRD) {
|
if (obj == BIRD) {
|
||||||
RSPEAK(100);
|
RSPEAK(100);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(obj != SNAKE && obj != DRAGON && obj != TROLL)) {
|
if (!(obj != SNAKE && obj != DRAGON && obj != TROLL)) {
|
||||||
|
@ -478,23 +478,23 @@ static int feed(token_t verb, token_t obj)
|
||||||
if (obj != SNAKE || game.closed || !HERE(BIRD))
|
if (obj != SNAKE || game.closed || !HERE(BIRD))
|
||||||
{
|
{
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
DSTROY(BIRD);
|
DSTROY(BIRD);
|
||||||
game.prop[BIRD]=0;
|
game.prop[BIRD]=0;
|
||||||
RSPEAK(101);
|
RSPEAK(101);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj == DWARF) {
|
if (obj == DWARF) {
|
||||||
if (!HERE(FOOD))
|
if (!HERE(FOOD))
|
||||||
{
|
{
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.dflag=game.dflag+2;
|
game.dflag=game.dflag+2;
|
||||||
RSPEAK(103);
|
RSPEAK(103);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj == BEAR) {
|
if (obj == BEAR) {
|
||||||
|
@ -502,7 +502,7 @@ static int feed(token_t verb, token_t obj)
|
||||||
if (game.prop[BEAR] == 3)spk=110;
|
if (game.prop[BEAR] == 3)spk=110;
|
||||||
if (!HERE(FOOD)) {
|
if (!HERE(FOOD)) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
DSTROY(FOOD);
|
DSTROY(FOOD);
|
||||||
game.prop[BEAR]=1;
|
game.prop[BEAR]=1;
|
||||||
|
@ -510,19 +510,19 @@ static int feed(token_t verb, token_t obj)
|
||||||
game.prop[AXE]=0;
|
game.prop[AXE]=0;
|
||||||
spk=168;
|
spk=168;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj == OGRE) {
|
if (obj == OGRE) {
|
||||||
if (HERE(FOOD))
|
if (HERE(FOOD))
|
||||||
spk=202;
|
spk=202;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
spk=14;
|
spk=14;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fill(token_t verb, token_t obj)
|
int fill(token_t verb, token_t obj)
|
||||||
|
@ -536,7 +536,7 @@ int fill(token_t verb, token_t obj)
|
||||||
if (LIQLOC(game.loc) == 0)spk=144;
|
if (LIQLOC(game.loc) == 0)spk=144;
|
||||||
if (LIQLOC(game.loc) == 0 || !TOTING(VASE)) {
|
if (LIQLOC(game.loc) == 0 || !TOTING(VASE)) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
RSPEAK(145);
|
RSPEAK(145);
|
||||||
game.prop[VASE]=2;
|
game.prop[VASE]=2;
|
||||||
|
@ -546,21 +546,21 @@ int fill(token_t verb, token_t obj)
|
||||||
|
|
||||||
if (obj == URN){
|
if (obj == URN){
|
||||||
spk=213;
|
spk=213;
|
||||||
if (game.prop[URN] != 0) {RSPEAK(spk); return 2012;}
|
if (game.prop[URN] != 0) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
spk=144;
|
spk=144;
|
||||||
k=LIQUID();
|
k=LIQUID();
|
||||||
if (k == 0 || !HERE(BOTTLE)) {RSPEAK(spk); return 2012;}
|
if (k == 0 || !HERE(BOTTLE)) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
game.place[k]=0;
|
game.place[k]=0;
|
||||||
game.prop[BOTTLE]=1;
|
game.prop[BOTTLE]=1;
|
||||||
if (k == OIL)game.prop[URN]=1;
|
if (k == OIL)game.prop[URN]=1;
|
||||||
spk=211+game.prop[URN];
|
spk=211+game.prop[URN];
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj != 0 && obj != BOTTLE) {
|
if (obj != 0 && obj != BOTTLE) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj == 0 && !HERE(BOTTLE))
|
if (obj == 0 && !HERE(BOTTLE))
|
||||||
return(8000);
|
return(8000);
|
||||||
|
@ -572,7 +572,7 @@ int fill(token_t verb, token_t obj)
|
||||||
if (LIQUID() != 0)
|
if (LIQUID() != 0)
|
||||||
spk=105;
|
spk=105;
|
||||||
if (spk != 107)
|
if (spk != 107)
|
||||||
{RSPEAK(spk); return 2012;}
|
{RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
game.prop[BOTTLE]=MOD(COND[game.loc],4)/2*2;
|
game.prop[BOTTLE]=MOD(COND[game.loc],4)/2*2;
|
||||||
k=LIQUID();
|
k=LIQUID();
|
||||||
if (TOTING(BOTTLE))
|
if (TOTING(BOTTLE))
|
||||||
|
@ -580,7 +580,7 @@ int fill(token_t verb, token_t obj)
|
||||||
if (k == OIL)
|
if (k == OIL)
|
||||||
spk=108;
|
spk=108;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int find(token_t verb, token_t obj)
|
static int find(token_t verb, token_t obj)
|
||||||
|
@ -595,7 +595,7 @@ static int find(token_t verb, token_t obj)
|
||||||
if (game.closed)spk=138;
|
if (game.closed)spk=138;
|
||||||
if (TOTING(obj))spk=24;
|
if (TOTING(obj))spk=24;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fly(token_t verb, token_t obj)
|
static int fly(token_t verb, token_t obj)
|
||||||
|
@ -607,24 +607,24 @@ static int fly(token_t verb, token_t obj)
|
||||||
if (!HERE(RUG))spk=225;
|
if (!HERE(RUG))spk=225;
|
||||||
if (spk/2 == 112) {
|
if (spk/2 == 112) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
obj=RUG;
|
obj=RUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj != RUG) {
|
if (obj != RUG) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
spk=223;
|
spk=223;
|
||||||
if (game.prop[RUG] != 2) {RSPEAK(spk); return 2012;}
|
if (game.prop[RUG] != 2) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
game.oldlc2=game.oldloc;
|
game.oldlc2=game.oldloc;
|
||||||
game.oldloc=game.loc;
|
game.oldloc=game.loc;
|
||||||
game.newloc=game.place[RUG]+game.fixed[RUG]-game.loc;
|
game.newloc=game.place[RUG]+game.fixed[RUG]-game.loc;
|
||||||
spk=226;
|
spk=226;
|
||||||
if (game.prop[SAPPH] >= 0)spk=227;
|
if (game.prop[SAPPH] >= 0)spk=227;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return(2);
|
return GO_TERMINATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int inven(token_t obj)
|
static int inven(token_t obj)
|
||||||
|
@ -645,7 +645,7 @@ static int inven(token_t obj)
|
||||||
if (TOTING(BEAR))
|
if (TOTING(BEAR))
|
||||||
spk=141;
|
spk=141;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
int light(token_t verb, token_t obj)
|
int light(token_t verb, token_t obj)
|
||||||
|
@ -661,27 +661,28 @@ int light(token_t verb, token_t obj)
|
||||||
if (obj == URN) {
|
if (obj == URN) {
|
||||||
spk=38;
|
spk=38;
|
||||||
if (game.prop[URN] == 0)
|
if (game.prop[URN] == 0)
|
||||||
{RSPEAK(spk); return 2012;}
|
{RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
spk=209;
|
spk=209;
|
||||||
game.prop[URN]=2;
|
game.prop[URN]=2;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
} else {
|
} else {
|
||||||
if (obj != LAMP)
|
if (obj != LAMP)
|
||||||
{
|
{
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
spk=184;
|
spk=184;
|
||||||
if (game.limit < 0) {
|
if (game.limit < 0) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.prop[LAMP]=1;
|
game.prop[LAMP]=1;
|
||||||
RSPEAK(39);
|
RSPEAK(39);
|
||||||
if (game.wzdark)
|
if (game.wzdark)
|
||||||
return(2000);
|
return GO_TOP;
|
||||||
return(2012);
|
else
|
||||||
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -693,7 +694,7 @@ static int listen(void)
|
||||||
k=LOCSND[game.loc];
|
k=LOCSND[game.loc];
|
||||||
if (k != 0) {
|
if (k != 0) {
|
||||||
RSPEAK(labs(k));
|
RSPEAK(labs(k));
|
||||||
if (k < 0) return(2012);
|
if (k < 0) return GO_CLEAROBJ;
|
||||||
spk=0;
|
spk=0;
|
||||||
}
|
}
|
||||||
SETPRM(1,game.zzword,0);
|
SETPRM(1,game.zzword,0);
|
||||||
|
@ -706,7 +707,7 @@ static int listen(void)
|
||||||
DSTROY(BIRD);
|
DSTROY(BIRD);
|
||||||
}
|
}
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lock(token_t verb, token_t obj)
|
static int lock(token_t verb, token_t obj)
|
||||||
|
@ -722,7 +723,7 @@ static int lock(token_t verb, token_t obj)
|
||||||
if (AT(GRATE))obj=GRATE;
|
if (AT(GRATE))obj=GRATE;
|
||||||
if (obj != 0 && HERE(CHAIN)) return(8000);
|
if (obj != 0 && HERE(CHAIN)) return(8000);
|
||||||
if (HERE(CHAIN))obj=CHAIN;
|
if (HERE(CHAIN))obj=CHAIN;
|
||||||
if (obj == 0) {RSPEAK(spk); return 2012;}
|
if (obj == 0) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Lock, unlock object. Special stuff for opening clam/oyster
|
/* Lock, unlock object. Special stuff for opening clam/oyster
|
||||||
|
@ -736,7 +737,7 @@ static int lock(token_t verb, token_t obj)
|
||||||
if (obj == GRATE || obj == CHAIN)spk=31;
|
if (obj == GRATE || obj == CHAIN)spk=31;
|
||||||
if (spk != 31 || !HERE(KEYS)) {
|
if (spk != 31 || !HERE(KEYS)) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj == CHAIN)
|
if (obj == CHAIN)
|
||||||
return chain(verb);
|
return chain(verb);
|
||||||
|
@ -745,14 +746,14 @@ static int lock(token_t verb, token_t obj)
|
||||||
if (!game.panic)game.clock2=15;
|
if (!game.panic)game.clock2=15;
|
||||||
game.panic=true;
|
game.panic=true;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
spk=34+game.prop[GRATE];
|
spk=34+game.prop[GRATE];
|
||||||
game.prop[GRATE]=1;
|
game.prop[GRATE]=1;
|
||||||
if (verb == LOCK)game.prop[GRATE]=0;
|
if (verb == LOCK)game.prop[GRATE]=0;
|
||||||
spk=spk+2*game.prop[GRATE];
|
spk=spk+2*game.prop[GRATE];
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pour(token_t verb, token_t obj)
|
static int pour(token_t verb, token_t obj)
|
||||||
|
@ -762,29 +763,29 @@ static int pour(token_t verb, token_t obj)
|
||||||
int spk = ACTSPK[verb];
|
int spk = ACTSPK[verb];
|
||||||
if (obj == BOTTLE || obj == 0)obj=LIQUID();
|
if (obj == BOTTLE || obj == 0)obj=LIQUID();
|
||||||
if (obj == 0) return(8000);
|
if (obj == 0) return(8000);
|
||||||
if (!TOTING(obj)) {RSPEAK(spk); return 2012;}
|
if (!TOTING(obj)) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
spk=78;
|
spk=78;
|
||||||
if (obj != OIL && obj != WATER) {RSPEAK(spk); return 2012;}
|
if (obj != OIL && obj != WATER) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
if (HERE(URN) && game.prop[URN] == 0)
|
if (HERE(URN) && game.prop[URN] == 0)
|
||||||
return fill(verb, URN);
|
return fill(verb, URN);
|
||||||
game.prop[BOTTLE]=1;
|
game.prop[BOTTLE]=1;
|
||||||
game.place[obj]=0;
|
game.place[obj]=0;
|
||||||
spk=77;
|
spk=77;
|
||||||
if (!(AT(PLANT) || AT(DOOR)))
|
if (!(AT(PLANT) || AT(DOOR)))
|
||||||
{RSPEAK(spk); return 2012;}
|
{RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
if (!AT(DOOR)) {
|
if (!AT(DOOR)) {
|
||||||
spk=112;
|
spk=112;
|
||||||
if (obj != WATER) {RSPEAK(spk); return 2012;}
|
if (obj != WATER) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
PSPEAK(PLANT,game.prop[PLANT]+3);
|
PSPEAK(PLANT,game.prop[PLANT]+3);
|
||||||
game.prop[PLANT]=MOD(game.prop[PLANT]+1,3);
|
game.prop[PLANT]=MOD(game.prop[PLANT]+1,3);
|
||||||
game.prop[PLANT2]=game.prop[PLANT];
|
game.prop[PLANT2]=game.prop[PLANT];
|
||||||
return(8);
|
return GO_MOVE;
|
||||||
} else {
|
} else {
|
||||||
game.prop[DOOR]=0;
|
game.prop[DOOR]=0;
|
||||||
if (obj == OIL)game.prop[DOOR]=1;
|
if (obj == OIL)game.prop[DOOR]=1;
|
||||||
spk=113+game.prop[DOOR];
|
spk=113+game.prop[DOOR];
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -793,7 +794,7 @@ static int quit(FILE *input)
|
||||||
{
|
{
|
||||||
if (YES(input,22,54,54))
|
if (YES(input,22,54,54))
|
||||||
score(1);
|
score(1);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read(FILE *input, token_t verb, token_t obj)
|
static int read(FILE *input, token_t verb, token_t obj)
|
||||||
|
@ -813,18 +814,18 @@ static int read(FILE *input, token_t verb, token_t obj)
|
||||||
if (DARK(game.loc)) {
|
if (DARK(game.loc)) {
|
||||||
SETPRM(1,WD1,WD1X);
|
SETPRM(1,WD1,WD1X);
|
||||||
RSPEAK(256);
|
RSPEAK(256);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (OBJTXT[obj] == 0 || game.prop[obj] < 0) {
|
if (OBJTXT[obj] == 0 || game.prop[obj] < 0) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj == OYSTER && !game.clshnt) {
|
if (obj == OYSTER && !game.clshnt) {
|
||||||
game.clshnt=YES(input,192,193,54);
|
game.clshnt=YES(input,192,193,54);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
PSPEAK(obj,OBJTXT[obj]+game.prop[obj]);
|
PSPEAK(obj,OBJTXT[obj]+game.prop[obj]);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int reservoir(void)
|
static int reservoir(void)
|
||||||
|
@ -832,15 +833,15 @@ static int reservoir(void)
|
||||||
{
|
{
|
||||||
if (!AT(RESER) && game.loc != game.fixed[RESER]-1) {
|
if (!AT(RESER) && game.loc != game.fixed[RESER]-1) {
|
||||||
RSPEAK(75);
|
RSPEAK(75);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
PSPEAK(RESER,game.prop[RESER]+1);
|
PSPEAK(RESER,game.prop[RESER]+1);
|
||||||
game.prop[RESER]=1-game.prop[RESER];
|
game.prop[RESER]=1-game.prop[RESER];
|
||||||
if (AT(RESER)) return(2012);
|
if (AT(RESER)) return GO_CLEAROBJ;
|
||||||
game.oldlc2=game.loc;
|
game.oldlc2=game.loc;
|
||||||
game.newloc=0;
|
game.newloc=0;
|
||||||
RSPEAK(241);
|
RSPEAK(241);
|
||||||
return(2);
|
return GO_TERMINATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rub(token_t verb, token_t obj)
|
static int rub(token_t verb, token_t obj)
|
||||||
|
@ -848,7 +849,7 @@ static int rub(token_t verb, token_t obj)
|
||||||
{
|
{
|
||||||
int spk = ACTSPK[verb];
|
int spk = ACTSPK[verb];
|
||||||
if (obj != LAMP)spk=76;
|
if (obj != LAMP)spk=76;
|
||||||
if (obj != URN || game.prop[URN] != 2) {RSPEAK(spk); return 2012;}
|
if (obj != URN || game.prop[URN] != 2) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
DSTROY(URN);
|
DSTROY(URN);
|
||||||
DROP(AMBER,game.loc);
|
DROP(AMBER,game.loc);
|
||||||
game.prop[AMBER]=1;
|
game.prop[AMBER]=1;
|
||||||
|
@ -856,7 +857,7 @@ static int rub(token_t verb, token_t obj)
|
||||||
DROP(CAVITY,game.loc);
|
DROP(CAVITY,game.loc);
|
||||||
spk=216;
|
spk=216;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int say(void)
|
static int say(void)
|
||||||
|
@ -874,7 +875,7 @@ static int say(void)
|
||||||
return(2630);
|
return(2630);
|
||||||
}
|
}
|
||||||
RSPEAK(258);
|
RSPEAK(258);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -882,7 +883,7 @@ static int throw_support(long spk)
|
||||||
{
|
{
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
DROP(AXE,game.loc);
|
DROP(AXE,game.loc);
|
||||||
return(8);
|
return GO_MOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int throw(FILE *cmdin, long verb, token_t obj)
|
static int throw(FILE *cmdin, long verb, token_t obj)
|
||||||
|
@ -895,7 +896,7 @@ static int throw(FILE *cmdin, long verb, token_t obj)
|
||||||
if (TOTING(ROD2) && obj == ROD && !TOTING(ROD))obj=ROD2;
|
if (TOTING(ROD2) && obj == ROD && !TOTING(ROD))obj=ROD2;
|
||||||
if (!TOTING(obj)) {
|
if (!TOTING(obj)) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj >= 50 && obj <= MAXTRS && AT(TROLL)) {
|
if (obj >= 50 && obj <= MAXTRS && AT(TROLL)) {
|
||||||
spk=159;
|
spk=159;
|
||||||
|
@ -907,7 +908,7 @@ static int throw(FILE *cmdin, long verb, token_t obj)
|
||||||
DROP(TROLL2+NOBJECTS,FIXD[TROLL]);
|
DROP(TROLL2+NOBJECTS,FIXD[TROLL]);
|
||||||
JUGGLE(CHASM);
|
JUGGLE(CHASM);
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (obj == FOOD && HERE(BEAR)) {
|
if (obj == FOOD && HERE(BEAR)) {
|
||||||
/* But throwing food is another story. */
|
/* But throwing food is another story. */
|
||||||
|
@ -937,7 +938,7 @@ static int throw(FILE *cmdin, long verb, token_t obj)
|
||||||
game.fixed[AXE]= -1;
|
game.fixed[AXE]= -1;
|
||||||
game.prop[AXE]=1;
|
game.prop[AXE]=1;
|
||||||
JUGGLE(BEAR);
|
JUGGLE(BEAR);
|
||||||
{RSPEAK(spk); return 2012;}
|
{RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
}
|
}
|
||||||
return(attack(cmdin, verb, 0));
|
return(attack(cmdin, verb, 0));
|
||||||
}
|
}
|
||||||
|
@ -959,13 +960,13 @@ static int vscore(void)
|
||||||
/* Score. Call scoring routine but tell it to return. */
|
/* Score. Call scoring routine but tell it to return. */
|
||||||
{
|
{
|
||||||
score(-1);
|
score(-1);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wake(token_t verb, token_t obj)
|
static int wake(token_t verb, token_t obj)
|
||||||
/* Wake. Only use is to disturb the dwarves. */
|
/* Wake. Only use is to disturb the dwarves. */
|
||||||
{
|
{
|
||||||
if (obj != DWARF || !game.closed) {RSPEAK(ACTSPK[verb]); return 2012;}
|
if (obj != DWARF || !game.closed) {RSPEAK(ACTSPK[verb]); return GO_CLEAROBJ;}
|
||||||
RSPEAK(199);
|
RSPEAK(199);
|
||||||
return(19000);
|
return(19000);
|
||||||
}
|
}
|
||||||
|
@ -979,7 +980,7 @@ static int wave(token_t verb, token_t obj)
|
||||||
!TOTING(obj) ||
|
!TOTING(obj) ||
|
||||||
(!HERE(BIRD) && (game.closng || !AT(FISSUR)))) {
|
(!HERE(BIRD) && (game.closng || !AT(FISSUR)))) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
if (HERE(BIRD))spk=206+MOD(game.prop[BIRD],2);
|
if (HERE(BIRD))spk=206+MOD(game.prop[BIRD],2);
|
||||||
if (spk == 206 && game.loc == game.place[STEPS] && game.prop[JADE] < 0) {
|
if (spk == 206 && game.loc == game.place[STEPS] && game.prop[JADE] < 0) {
|
||||||
|
@ -988,17 +989,17 @@ static int wave(token_t verb, token_t obj)
|
||||||
--game.tally;
|
--game.tally;
|
||||||
spk=208;
|
spk=208;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
} else {
|
} else {
|
||||||
if (game.closed) {
|
if (game.closed) {
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return(19000);
|
return(19000);
|
||||||
}
|
}
|
||||||
if (game.closng || !AT(FISSUR)) {RSPEAK(spk); return 2012;}
|
if (game.closng || !AT(FISSUR)) {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
if (HERE(BIRD))RSPEAK(spk);
|
if (HERE(BIRD))RSPEAK(spk);
|
||||||
game.prop[FISSUR]=1-game.prop[FISSUR];
|
game.prop[FISSUR]=1-game.prop[FISSUR];
|
||||||
PSPEAK(FISSUR,2-game.prop[FISSUR]);
|
PSPEAK(FISSUR,2-game.prop[FISSUR]);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1027,7 +1028,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
|
||||||
if (game.loc > 9 && game.loc < 15)
|
if (game.loc > 9 && game.loc < 15)
|
||||||
obj=ENTRNC;
|
obj=ENTRNC;
|
||||||
if (obj != GRATE)
|
if (obj != GRATE)
|
||||||
return(8);
|
return GO_MOVE;
|
||||||
}
|
}
|
||||||
else if (obj == DWARF && ATDWRF(game.loc) > 0)
|
else if (obj == DWARF && ATDWRF(game.loc) > 0)
|
||||||
/* FALL THROUGH */;
|
/* FALL THROUGH */;
|
||||||
|
@ -1045,7 +1046,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
|
||||||
game.knfloc= -1;
|
game.knfloc= -1;
|
||||||
spk=116;
|
spk=116;
|
||||||
RSPEAK(spk);
|
RSPEAK(spk);
|
||||||
return 2012;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
else if (obj == ROD && HERE(ROD2)) {
|
else if (obj == ROD && HERE(ROD2)) {
|
||||||
obj=ROD2;
|
obj=ROD2;
|
||||||
|
@ -1056,7 +1057,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
|
||||||
else {
|
else {
|
||||||
SETPRM(1,WD1,WD1X);
|
SETPRM(1,WD1,WD1X);
|
||||||
RSPEAK(256);
|
RSPEAK(256);
|
||||||
return(2012);
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WD2 > 0)
|
if (WD2 > 0)
|
||||||
|
@ -1083,7 +1084,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
|
||||||
case 7: /* EXTIN */ return extinguish(verb, INTRANSITIVE);
|
case 7: /* EXTIN */ return extinguish(verb, INTRANSITIVE);
|
||||||
case 8: /* WAVE */ return(8000);
|
case 8: /* WAVE */ return(8000);
|
||||||
case 9: /* CALM */ return(8000);
|
case 9: /* CALM */ return(8000);
|
||||||
case 10: /* WALK */ {RSPEAK(spk); return 2012;}
|
case 10: /* WALK */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 11: /* ATTAC */ return attack(input, verb, obj);
|
case 11: /* ATTAC */ return attack(input, verb, obj);
|
||||||
case 12: /* POUR */ return pour(verb, obj);
|
case 12: /* POUR */ return pour(verb, obj);
|
||||||
case 13: /* EAT */ return eat(verb, INTRANSITIVE);
|
case 13: /* EAT */ return eat(verb, INTRANSITIVE);
|
||||||
|
@ -1123,30 +1124,30 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
|
||||||
case 6: /* LIGHT */ return light(verb, obj);
|
case 6: /* LIGHT */ return light(verb, obj);
|
||||||
case 7: /* EXTI */ return extinguish(verb, obj);
|
case 7: /* EXTI */ return extinguish(verb, obj);
|
||||||
case 8: /* WAVE */ return wave(verb, obj);
|
case 8: /* WAVE */ return wave(verb, obj);
|
||||||
case 9: /* CALM */ {RSPEAK(spk); return 2012;}
|
case 9: /* CALM */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 10: /* WALK */ {RSPEAK(spk); return 2012;}
|
case 10: /* WALK */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 11: /* ATTAC */ return attack(input, verb, obj);
|
case 11: /* ATTAC */ return attack(input, verb, obj);
|
||||||
case 12: /* POUR */ return pour(verb, obj);
|
case 12: /* POUR */ return pour(verb, obj);
|
||||||
case 13: /* EAT */ return eat(verb, obj);
|
case 13: /* EAT */ return eat(verb, obj);
|
||||||
case 14: /* DRINK */ return drink(verb, obj);
|
case 14: /* DRINK */ return drink(verb, obj);
|
||||||
case 15: /* RUB */ return rub(verb, obj);
|
case 15: /* RUB */ return rub(verb, obj);
|
||||||
case 16: /* TOSS */ return throw(input, verb, obj);
|
case 16: /* TOSS */ return throw(input, verb, obj);
|
||||||
case 17: /* QUIT */ {RSPEAK(spk); return 2012;}
|
case 17: /* QUIT */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 18: /* FIND */ return find(verb, obj);
|
case 18: /* FIND */ return find(verb, obj);
|
||||||
case 19: /* INVEN */ return find(verb, obj);
|
case 19: /* INVEN */ return find(verb, obj);
|
||||||
case 20: /* FEED */ return feed(verb, obj);
|
case 20: /* FEED */ return feed(verb, obj);
|
||||||
case 21: /* FILL */ return fill(verb, obj);
|
case 21: /* FILL */ return fill(verb, obj);
|
||||||
case 22: /* BLAST */ return blast();
|
case 22: /* BLAST */ return blast();
|
||||||
case 23: /* SCOR */ {RSPEAK(spk); return 2012;}
|
case 23: /* SCOR */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 24: /* FOO */ {RSPEAK(spk); return 2012;}
|
case 24: /* FOO */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 25: /* BRIEF */ {RSPEAK(spk); return 2012;}
|
case 25: /* BRIEF */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 26: /* READ */ return read(input, verb, obj);
|
case 26: /* READ */ return read(input, verb, obj);
|
||||||
case 27: /* BREAK */ return vbreak(verb, obj);
|
case 27: /* BREAK */ return vbreak(verb, obj);
|
||||||
case 28: /* WAKE */ return wake(verb, obj);
|
case 28: /* WAKE */ return wake(verb, obj);
|
||||||
case 29: /* SUSP */ {RSPEAK(spk); return 2012;}
|
case 29: /* SUSP */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 30: /* RESU */ {RSPEAK(spk); return 2012;}
|
case 30: /* RESU */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 31: /* FLY */ return fly(verb, obj);
|
case 31: /* FLY */ return fly(verb, obj);
|
||||||
case 32: /* LISTE */ {RSPEAK(spk); return 2012;}
|
case 32: /* LISTE */ {RSPEAK(spk); return GO_CLEAROBJ;}
|
||||||
case 33: /* ZZZZ */ return reservoir();
|
case 33: /* ZZZZ */ return reservoir();
|
||||||
}
|
}
|
||||||
BUG(24);
|
BUG(24);
|
||||||
|
@ -1154,7 +1155,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
|
||||||
/* Unknown verb, couldn't deduce object - might need hint */
|
/* Unknown verb, couldn't deduce object - might need hint */
|
||||||
SETPRM(1,WD1,WD1X);
|
SETPRM(1,WD1,WD1X);
|
||||||
RSPEAK(255);
|
RSPEAK(255);
|
||||||
return(2600);
|
return GO_CHECKHINT;
|
||||||
default:
|
default:
|
||||||
BUG(99);
|
BUG(99);
|
||||||
}
|
}
|
||||||
|
|
16
advent.h
16
advent.h
|
@ -172,6 +172,22 @@ extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
|
||||||
|
|
||||||
enum speechpart {unknown, intransitive, transitive};
|
enum speechpart {unknown, intransitive, transitive};
|
||||||
|
|
||||||
|
/* Phase codes for action returns.
|
||||||
|
* These were at one time FORTRAN line numbers.
|
||||||
|
*/
|
||||||
|
#define GO_TERMINATE 2
|
||||||
|
#define GO_MOVE 8
|
||||||
|
#define GO_TOP 2000
|
||||||
|
#define GO_CLEAROBJ 2012
|
||||||
|
#define GO_CHECKHINT 2600
|
||||||
|
#define GO_CHECKFOO 2607
|
||||||
|
#define GO_DIRECTION 2620
|
||||||
|
#define GO_LOOKUP 2630
|
||||||
|
#define GO_WORD2 2800
|
||||||
|
#define GO_UNKNOWN 8000
|
||||||
|
#define GO_DWARFWAKE 19000
|
||||||
|
#define GO_ACTION 40000
|
||||||
|
|
||||||
/* hack to ignore GCC Unused Result */
|
/* hack to ignore GCC Unused Result */
|
||||||
#define IGNORE(r) do{if (r){}}while(0)
|
#define IGNORE(r) do{if (r){}}while(0)
|
||||||
|
|
||||||
|
|
20
main.c
20
main.c
|
@ -1068,30 +1068,30 @@ static bool do_command(FILE *cmdin)
|
||||||
|
|
||||||
Laction:
|
Laction:
|
||||||
switch (action(cmdin, part, VERB, obj)) {
|
switch (action(cmdin, part, VERB, obj)) {
|
||||||
case 2:
|
case GO_TERMINATE:
|
||||||
return true;
|
return true;
|
||||||
case 8:
|
case GO_MOVE:
|
||||||
playermove(cmdin, VERB, NUL);
|
playermove(cmdin, VERB, NUL);
|
||||||
return true;
|
return true;
|
||||||
case 2000: continue; /* back to top of main interpreter loop */
|
case GO_TOP: continue; /* back to top of main interpreter loop */
|
||||||
case 2012: goto L2012;
|
case GO_CLEAROBJ: goto L2012;
|
||||||
case 2600: goto L2600;
|
case GO_CHECKHINT: goto L2600;
|
||||||
case 2607: goto L2607;
|
case GO_CHECKFOO: goto L2607;
|
||||||
case 2630: goto L2630;
|
case GO_LOOKUP: goto L2630;
|
||||||
case 2800:
|
case GO_WORD2:
|
||||||
/* Get second word for analysis. */
|
/* Get second word for analysis. */
|
||||||
WD1=WD2;
|
WD1=WD2;
|
||||||
WD1X=WD2X;
|
WD1X=WD2X;
|
||||||
WD2=0;
|
WD2=0;
|
||||||
goto L2620;
|
goto L2620;
|
||||||
case 8000:
|
case GO_UNKNOWN:
|
||||||
/* Random intransitive verbs come here. Clear obj just in case
|
/* Random intransitive verbs come here. Clear obj just in case
|
||||||
* (see attack()). */
|
* (see attack()). */
|
||||||
SETPRM(1,WD1,WD1X);
|
SETPRM(1,WD1,WD1X);
|
||||||
RSPEAK(257);
|
RSPEAK(257);
|
||||||
obj=0;
|
obj=0;
|
||||||
goto L2600;
|
goto L2600;
|
||||||
case 19000:
|
case GO_DWARFWAKE:
|
||||||
/* Oh dear, he's disturbed the dwarves. */
|
/* Oh dear, he's disturbed the dwarves. */
|
||||||
RSPEAK(136);
|
RSPEAK(136);
|
||||||
score(0);
|
score(0);
|
||||||
|
|
|
@ -40,7 +40,7 @@ int saveresume(FILE *input, bool resume)
|
||||||
* some points (so can't win by using saved games to retry
|
* some points (so can't win by using saved games to retry
|
||||||
* battles or to start over after learning zzword). */
|
* battles or to start over after learning zzword). */
|
||||||
RSPEAK(260);
|
RSPEAK(260);
|
||||||
if (!YES(input,200,54,54)) return(2012);
|
if (!YES(input,200,54,54)) return GO_CLEAROBJ;
|
||||||
game.saved=game.saved+5;
|
game.saved=game.saved+5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -48,14 +48,14 @@ int saveresume(FILE *input, bool resume)
|
||||||
/* Resume. Read a suspended game back from a file. */
|
/* Resume. Read a suspended game back from a file. */
|
||||||
if (game.loc != 1 || game.abbrev[1] != 1) {
|
if (game.loc != 1 || game.abbrev[1] != 1) {
|
||||||
RSPEAK(268);
|
RSPEAK(268);
|
||||||
if (!YES(input,200,54,54)) return(2012);
|
if (!YES(input,200,54,54)) return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (fp == NULL) {
|
while (fp == NULL) {
|
||||||
name = linenoise("\nFile name: ");
|
name = linenoise("\nFile name: ");
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
return(2000);
|
return GO_TOP;
|
||||||
fp = fopen(name,(resume ? READ_MODE : WRITE_MODE));
|
fp = fopen(name,(resume ? READ_MODE : WRITE_MODE));
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
printf("Can't open file %s, try again.\n", name);
|
printf("Can't open file %s, try again.\n", name);
|
||||||
|
@ -89,7 +89,7 @@ int saveresume(FILE *input, bool resume)
|
||||||
OBJTXT[OYSTER] = save.bivalve;
|
OBJTXT[OYSTER] = save.bivalve;
|
||||||
game.zzword=RNDVOC(3,game.zzword);
|
game.zzword=RNDVOC(3,game.zzword);
|
||||||
}
|
}
|
||||||
return 2000;
|
return GO_TOP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue