Re: Second Attack, Third Attack, and Forth Attack...

From: Mathue Moyer (mmoyer@sdcc10.UCSD.EDU)
Date: 09/14/94


[Chistopher Herringshaw's example function]
>/* control the fights going on */
>void    perform_violence(void)
>{     
>   struct char_data *ch;
>   
>   for (ch = combat_list; ch; ch = combat_next_dude) {
>      combat_next_dude = ch->next_fighting;
>      assert(ch->specials.fighting);
>   
>  /* every creatures god given right to attack once a round */
>      if (AWAKE(ch) && (ch->in_room == ch->specials.fighting->in_room)) {
>         hit(ch, ch->specials.fighting, TYPE_UNDEFINED);
*      } else { /* Not in same room */
*         stop_fighting(ch);
>      }
>
>  /* See if the character gets a second attack */
>      if (AWAKE(ch) && (ch->in_room == ch->specials.fighting->in_room) &&\
>          <some formula to determine if gets second attack goes here>) {
>         hit(ch, ch->specials.fighting, TYPE_UNDEFINED);
*      } else { /* Not in same room */
*         stop_fighting(ch);
>      }
>
.......
>
>   }
>}
>   

Just want to point out one thing about the code quoted above that
I suspect is an oversight on Chris's part.  Given the logic used
in the if statement for the second, third, and fourth attacks,
a player will actually stop fighting if the formula that
determines the extra attack returns false, since it will then fall
through to the     else { stop_fighting... } part.  That check
is, I think, just to make sure the person isn't fighting somebody
who isn't in the same room.  I think better logic for the second,
third, and fourth if statements might be:
     if (AWAKE(ch) && <some formula...>) hit(ch, ch->.....);

If there's a flaw in my logic on this, please point it out so nobody
uses my example if they shouldn't.  ;)
-- 
-Mathue Moyer
-mathue@ucsd.edu



This archive was generated by hypermail 2b30 : 12/07/00 PST