Newbie Question: Mob Special Proc.

From: Fionn Colvin (fcolvin@metz.une.edu.au)
Date: 04/30/96


Hi all,
       Below are 2 functions for good and bad guards which I'd like to 
add to my mud. A Mob with goodguard special is meant to assist any mob 
who has an alignment of > 0, and any player with alignment of > 0 who is 
fighting a mob with alignment < 0. badguard does the opposite. I think 
both functions are correct, flame away if their not, but I need some help 
filling in the sections enclose by **[...]**. Any help would be greatly 
appreciated.
 

SPECIAL(goodguard)
{
  struct char_data *tch, *assist, *attack;

  if (cmd || !AWAKE(ch) || FIGHTING(ch))
    return FALSE;

  for (tch = world[ch->in_room].people; tch; tch = tch->next_in_room) {
    if (CAN_SEE(ch, tch) && FIGHTING(tch)) {
      if ((GET_ALIGNMENT(tch) > 0) && (IS_NPC(tch))) {
        assist = tch;
        attack = **[person fighting assist]**;
        act("$n screams 'PROTECT THE INNOCENT!  BANZAI!'", FALSE, ch, 0, 0, TO_ROOM);
        hit(ch, attack, TYPE_UNDEFINED);
        return (TRUE);
        break;
      }
      if ((GET_ALIGNMENT(tch) < 0) && (IS_NPC(tch))) {
        attack = tch;
        if (GET_ALIGNMENT(**[person fighting attack]**) > 0) {
          assist = **[person fighting attack]**;
          act("$n screams 'PROTECT THE INNOCENT!  BANZAI!'", FALSE, ch, 0, 0, TO_ROOM);
          hit(ch, attack, TYPE_UNDEFINED);
          return (TRUE);
          break;
        } 
      }
    }
  }
  return (FALSE);
}


SPECIAL(badguard)
{
  struct char_data *tch, *assist, *attack;

  if (cmd || !AWAKE(ch) || FIGHTING(ch))
    return FALSE;

  for (tch = world[ch->in_room].people; tch; tch = tch->next_in_room) {
    if (CAN_SEE(ch, tch) && FIGHTING(tch)) {
      if ((GET_ALIGNMENT(tch) < 0) && (IS_NPC(tch))) {
        assist = tch;
        attack = **[person fighting assist]**;
        act("$n screams 'PROTECT THE INNOCENT!  BANZAI!'", FALSE, ch, 0, 0, TO_ROOM);
        hit(ch, attack, TYPE_UNDEFINED);
        return (TRUE);
        break;
      }
      if ((GET_ALIGNMENT(tch) > 0) && (IS_NPC(tch))) {
        attack = tch;
        if (GET_ALIGNMENT(**[person fighting attack]**) < 0) {
          assist = **[person fighting attack]**;
          act("$n screams 'PROTECT THE INNOCENT!  BANZAI!'", FALSE, ch, 0, 0, TO_ROOM);
          hit(ch, attack, TYPE_UNDEFINED);
          return (TRUE);
          break;
        } 
      }
    }
  }
  return (FALSE);
}

Thanks in advance

Fionn



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