Merge branch 'master' into actions-arithmetic 84/head
authorPeje Nilsson <peje66@gmail.com>
Thu, 15 Jun 2017 15:33:15 +0000 (17:33 +0200)
committerPeje Nilsson <peje66@gmail.com>
Thu, 15 Jun 2017 15:33:15 +0000 (17:33 +0200)
1  2 
actions.c

diff --combined actions.c
index fbd97f6727ecf50da61aef61b1185fa50f4000fe,d3d671ae8b3eb3aa24b7aed8146de1a88809925b..6cd73b562d218bf489abc5269d0e7bd54332ffea
+++ b/actions.c
@@@ -65,7 -65,7 +65,7 @@@ static int attack(FILE *input, long ver
      if (obj == DWARF && game.closed) return GO_DWARFWAKE;
      if (obj == DRAGON)spk=ALREADY_DEAD;
      if (obj == TROLL)spk=ROCKY_TROLL;
-     if (obj == OGRE)spk=OGRE_DOFGE;
+     if (obj == OGRE)spk=OGRE_DODGE;
      if (obj == OGRE && d > 0) {
        RSPEAK(spk);
        RSPEAK(KNIFE_THROWN);
                game.dseen[i]=false;
            }
        }
-       spk=spk+1+1/k;
+       spk=spk+1+1/k;  /* FIXME: Arithmetic on message numbers */
+       RSPEAK(spk);
+       return GO_CLEAROBJ;
+     }
+     if (obj == BEAR)
+       /* FIXME: Arithmetic on message numbers */
+       spk = BEAR_HANDS+(game.prop[BEAR]+1)/2;
+     if (obj != DRAGON || game.prop[DRAGON] != 0) {
        RSPEAK(spk);
        return GO_CLEAROBJ;
      }
-     if (obj == BEAR)spk=BEAR_HANDS+(game.prop[BEAR]+1)/2;
-     if (obj != DRAGON || game.prop[DRAGON] != 0) {RSPEAK(spk); return GO_CLEAROBJ;}
      /*  Fun stuff for dragon.  If he insists on attacking it, win!
       *  Set game.prop to dead, move dragon to central loc (still
       *  fixed), move rug there (not fixed), and move him there,
@@@ -148,11 -154,12 +154,11 @@@ static int bigwords(long foo
  static int bivalve(token_t verb, token_t obj)
  /* Clam/oyster actions */
  {
 -    int spk, k=0;
 -    if (obj == OYSTER)k=1;
 -    /* FIXME: Arithmetic on message numbers in next lines */
 -    spk=PEARL_FALLS+k;                
 -    if (TOTING(obj))spk=DROP_CLAM+k;
 -    if (!TOTING(TRIDNT))spk=CLAM_OPENER+k;
 +    int spk;
 +    bool is_oyster = (obj == OYSTER);
 +    spk= is_oyster ? OYSTER_OPENS : PEARL_FALLS;
 +    if (TOTING(obj))spk= is_oyster ? DROP_OYSTER : DROP_CLAM;
 +    if (!TOTING(TRIDNT))spk= is_oyster ? OYSTER_OPENER : CLAM_OPENER;
      if (verb == LOCK)spk=HUH_MAN;
      if (spk == PEARL_FALLS) {
        DSTROY(CLAM);
@@@ -269,7 -276,7 +275,7 @@@ static int carry(token_t verb, token_t 
        }
        if (!TOTING(CAGE))spk=CANNOT_CARRY;
        if (TOTING(ROD))spk=BIRD_EVADES;
 -      if (spk/2 == 13) {      /* FIXME: Arithmetic on message number */
 +      if (spk == CANNOT_CARRY || spk == BIRD_EVADES) {
            RSPEAK(spk);
            return GO_CLEAROBJ;
        }
@@@ -305,7 -312,10 +311,10 @@@ static int chain(token_t verb
        spk=CHAIN_LOCKED;
        if (game.prop[CHAIN] != 0)spk=ALREADY_LOCKED;
        if (game.loc != PLAC[CHAIN])spk=NO_LOCKSITE;
-       if (spk != CHAIN_LOCKED) {RSPEAK(spk); return GO_CLEAROBJ;}
+       if (spk != CHAIN_LOCKED) {
+           RSPEAK(spk);
+           return GO_CLEAROBJ;
+       }
        game.prop[CHAIN]=2;
        if (TOTING(CHAIN))DROP(CHAIN,game.loc);
        game.fixed[CHAIN]= -1;
@@@ -395,7 -405,7 +404,7 @@@ static int drink(token_t verb, token_t 
        return GO_UNKNOWN;
      if (obj != BLOOD) {
        if (obj != 0 && obj != WATER)spk=RIDICULOUS_ATTEMPT;
-       if (spk != 110 && LIQUID() == WATER && HERE(BOTTLE)) {
+       if (spk != RIDICULOUS_ATTEMPT && LIQUID() == WATER && HERE(BOTTLE)) {
            game.prop[BOTTLE]=1;
            game.place[WATER]=0;
            spk=BOTTLE_EMPTY;
@@@ -518,7 -528,7 +527,7 @@@ int fill(token_t verb, token_t obj
            return GO_CLEAROBJ;
        }
        RSPEAK(SHATTER_VASE);
-       game.prop[VASE]=2;
+       game.prop[VASE] = 2;
        game.fixed[VASE]= -1;
        return(discard(verb, obj, true));
      }
        game.prop[BOTTLE]=MOD(COND[game.loc],4)/2*2;
        k=LIQUID();
        if (TOTING(BOTTLE))
-           game.place[k]= -1;
+           game.place[k] = -1;
        if (k == OIL)
            spk=BOTTLED_OIL;
      }
@@@ -582,7 -592,7 +591,7 @@@ static int fly(token_t verb, token_t ob
      if (obj == INTRANSITIVE) {
        if (game.prop[RUG] != 2)spk=RUG_NOTHING2;
        if (!HERE(RUG))spk=FLAP_ARMS;
 -      if (spk/2 == 112) {     /* FIXME: Arithmetic on message numbers */
 +      if (spk == RUG_NOTHING2 || spk == FLAP_ARMS) {
            RSPEAK(spk);
            return GO_CLEAROBJ;
        }
      game.oldloc=game.loc;
      game.newloc=game.place[RUG]+game.fixed[RUG]-game.loc;
      spk=RUG_GOES;
-     if (game.prop[SAPPH] >= 0)spk=RUG_RETURNS;
+     if (game.prop[SAPPH] >= 0)
+       spk=RUG_RETURNS;
      RSPEAK(spk);
      return GO_TERMINATE;
  }
@@@ -719,10 -730,10 +729,10 @@@ static int lock(token_t verb, token_t o
                if (!game.panic)game.clock2=15;
                game.panic=true;
            } else {
 -              spk=ALREADY_LOCKED+game.prop[GRATE];    /* FIXME: Arithmetic on message number */
 +              spk=game.prop[GRATE] ? GRATE_LOCKED : ALREADY_LOCKED;
                game.prop[GRATE]=1;
                if (verb == LOCK)game.prop[GRATE]=0;
 -              spk=spk+2*game.prop[GRATE];
 +              spk=game.prop[GRATE] ? GRATE_UNLOCKED : GRATE_LOCKED;
            }
        }
      }
@@@ -810,11 -821,14 +820,14 @@@ static int reservoir(void
      } else {
        PSPEAK(RESER,game.prop[RESER]+1);
        game.prop[RESER]=1-game.prop[RESER];
-       if (AT(RESER)) return GO_CLEAROBJ;
-       game.oldlc2=game.loc;
-       game.newloc=0;
-       RSPEAK(NOT_BRIGHT);
-       return GO_TERMINATE;
+       if (AT(RESER))
+           return GO_CLEAROBJ;
+       else {
+           game.oldlc2=game.loc;
+           game.newloc=0;
+           RSPEAK(NOT_BRIGHT);
+           return GO_TERMINATE;
+       }
      }
  }
  
@@@ -846,6 -860,7 +859,7 @@@ static int say(void
      if (WD2 > 0)
        WD1=WD2;
      int wd=VOCAB(WD1,-1);
+     /* FIXME: Magic numbers */
      if (wd == 62 || wd == 65 || wd == 71 || wd == 2025 || wd == 2034) {
        WD2=0;
        return GO_LOOKUP;
@@@ -874,7 -889,7 +888,7 @@@ static int throw(FILE *cmdin, long verb
        RSPEAK(spk);
        return GO_CLEAROBJ;
      }
-     if (obj >= 50 && obj <= MAXTRS && AT(TROLL)) {
+     if (obj >= MINTRS && obj <= MAXTRS && AT(TROLL)) {
          spk=TROLL_SATISFIED;
          /*  Snarf a treasure for the troll. */
          DROP(obj,0);
              return throw_support(spk);
          }
          if (AT(OGRE)) {
-             spk=OGRE_DOFGE;
+             spk=OGRE_DODGE;
              return throw_support(spk);
          }
          if (HERE(BEAR) && game.prop[BEAR] == 0) {