X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=actions2.c;h=f3a021ab0b79b4b216ff0d8eae255a31eddfa31c;hb=9ab8b0d271031d9f2aa8c563972887b2eeaba7c9;hp=d2648e5f92337a632b503f2fb5da0da68e8a614b;hpb=df83a345a212b8b9326cd0ffa89e2edf09e83811;p=open-adventure.git diff --git a/actions2.c b/actions2.c index d2648e5..f3a021a 100644 --- a/actions2.c +++ b/actions2.c @@ -5,44 +5,44 @@ * take one without the other). Liquids also special, since they depend on * status of bottle. Also various side effects, etc. */ -int carry(void) { - if(TOTING(OBJ)) return(2011); +int carry(long obj) { + if(TOTING(obj)) return(2011); SPK=25; - if(OBJ == PLANT && game.prop[PLANT] <= 0)SPK=115; - if(OBJ == BEAR && game.prop[BEAR] == 1)SPK=169; - if(OBJ == CHAIN && game.prop[BEAR] != 0)SPK=170; - if(OBJ == URN)SPK=215; - if(OBJ == CAVITY)SPK=217; - if(OBJ == BLOOD)SPK=239; - if(OBJ == RUG && game.prop[RUG] == 2)SPK=222; - if(OBJ == SIGN)SPK=196; - if(OBJ != MESSAG) goto L9011; + if(obj == PLANT && game.prop[PLANT] <= 0)SPK=115; + if(obj == BEAR && game.prop[BEAR] == 1)SPK=169; + if(obj == CHAIN && game.prop[BEAR] != 0)SPK=170; + if(obj == URN)SPK=215; + if(obj == CAVITY)SPK=217; + if(obj == BLOOD)SPK=239; + if(obj == RUG && game.prop[RUG] == 2)SPK=222; + if(obj == SIGN)SPK=196; + if(obj != MESSAG) goto L9011; SPK=190; DSTROY(MESSAG); -L9011: if(game.fixed[OBJ] != 0) return(2011); - if(OBJ != WATER && OBJ != OIL) goto L9017; - K=OBJ; - OBJ=BOTTLE; +L9011: if(game.fixed[obj] != 0) return(2011); + if(obj != WATER && obj != OIL) goto L9017; + K=obj; + obj=BOTTLE; if(HERE(BOTTLE) && LIQ(0) == K) goto L9017; - if(TOTING(BOTTLE) && game.prop[BOTTLE] == 1) return(fill(OBJ)); + if(TOTING(BOTTLE) && game.prop[BOTTLE] == 1) return(fill(obj)); if(game.prop[BOTTLE] != 1)SPK=105; if(!TOTING(BOTTLE))SPK=104; return(2011); L9017: SPK=92; if(game.holdng >= 7) return(2011); - if(OBJ != BIRD || game.prop[BIRD] == 1 || -1-game.prop[BIRD] == 1) goto L9014; + if(obj != BIRD || game.prop[BIRD] == 1 || -1-game.prop[BIRD] == 1) goto L9014; if(game.prop[BIRD] == 2) goto L9015; if(!TOTING(CAGE))SPK=27; if(TOTING(ROD))SPK=26; if(SPK/2 == 13) return(2011); game.prop[BIRD]=1; -L9014: if((OBJ == BIRD || OBJ == CAGE) && (game.prop[BIRD] == 1 || -1-game.prop[BIRD] == - 1))CARRY(BIRD+CAGE-OBJ,game.loc); - CARRY(OBJ,game.loc); +L9014: if((obj == BIRD || obj == CAGE) && (game.prop[BIRD] == 1 || -1-game.prop[BIRD] == + 1))CARRY(BIRD+CAGE-obj,game.loc); + CARRY(obj,game.loc); K=LIQ(0); - if(OBJ == BOTTLE && K != 0)game.place[K]= -1; - if(!GSTONE(OBJ) || game.prop[OBJ] == 0) return(2009); - game.prop[OBJ]=0; + if(obj == BOTTLE && K != 0)game.place[K]= -1; + if(!GSTONE(obj) || game.prop[obj] == 0) return(2009); + game.prop[obj]=0; game.prop[CAVITY]=1; return(2009); @@ -129,7 +129,7 @@ L9028: game.prop[VASE]=2; * objects fall into two categories: enemies (snake, dwarf, etc.) and others * (bird, clam, machine). Ambiguous if 2 enemies, or no enemies but 2 others. */ -int attack(FILE *input, long obj) { +int attack(FILE *input, long obj, long verb) { I=ATDWRF(game.loc); if(obj != 0) goto L9124; if(I > 0)obj=DWARF; @@ -141,8 +141,8 @@ int attack(FILE *input, long obj) { if(obj > NOBJECTS) return(8000); if(obj != 0) goto L9124; /* CAN'T ATTACK BIRD OR MACHINE BY THROWING AXE. */ - if(HERE(BIRD) && VERB != THROW)obj=BIRD; - if(HERE(VEND) && VERB != THROW)obj=obj*NOBJECTS+VEND; + if(HERE(BIRD) && verb != THROW)obj=BIRD; + if(HERE(VEND) && verb != THROW)obj=obj*NOBJECTS+VEND; /* CLAM AND OYSTER BOTH TREATED AS CLAM FOR INTRANSITIVE CASE; NO HARM DONE. */ if(HERE(CLAM) || HERE(OYSTER))obj=NOBJECTS*obj+CLAM; if(obj > NOBJECTS) return(8000); @@ -173,8 +173,6 @@ L9126: if(obj == 0)SPK=44; * move dragon to central loc (still fixed), move rug there (not fixed), and * move him there, too. Then do a null motion to get new description. */ RSPEAK(49); - VERB=0; - obj=0; GETIN(input,WD1,WD1X,WD2,WD2X); if(WD1 != MAKEWD(25) && WD1 != MAKEWD(250519)) return(2607); PSPEAK(DRAGON,3); @@ -213,7 +211,7 @@ L9128: RSPEAK(SPK); * and if dwarf is present then one might be killed. (Only way to do so!) * Axe also special for dragon, bear, and troll. Treasures special for troll. */ -int throw(FILE *cmdin, long obj) { +int throw(FILE *cmdin, long obj, long verb) { if(TOTING(ROD2) && obj == ROD && !TOTING(ROD))obj=ROD2; if(!TOTING(obj)) return(2011); if(obj >= 50 && obj <= MAXTRS && AT(TROLL)) goto L9178; @@ -229,7 +227,7 @@ int throw(FILE *cmdin, long obj) { if(AT(OGRE)) goto L9175; if(HERE(BEAR) && game.prop[BEAR] == 0) goto L9176; obj=0; - return(attack(cmdin, obj)); + return(attack(cmdin, obj, verb)); L9172: SPK=48; if(randrange(NDWARVES+1) < game.dflag) goto L9175;