Re: CIRCLE] [Newbie] pkill limit

From: Tony Robbins (tonyr@NWPACLINK.COM)
Date: 07/18/98


int lvl = 0;

lvl = (GET_LEVEL(ch) - GET_LEVEL(victim));


if ((lvl > 5 || lvl < -5) &&
    (!IS_NPC(victim) && !IS_NPC(ch)) &&
/* remove this comment : I can't remember if the little | will work ehre */
    (!PLR_FLAGGED(victim, PLR_KILLER | PLR_THIEF))) {
/* remove this comment : if not, do this... */
    (!PLR_FLAGGED(victim, PLR_KILLER)) &&
    (!PLR_FLAGGED(victim, PLR_THIEF))) {
/* remove this comment : end comment modifications */
  send_to_char("Try killing someone closer to your level.\r\n", ch);
  return;

}


I think you've located probably the best location for the code, but I still
wonder.  If this code needs to be modularized, it would probably be better
like this.

/* Checks various flags and levels to make sure that it is OK for the *
 * character to attack the victim.  If this is used, all checks for   *
 * whether battle should be initialized or not should be run through  *
 * here.                                                              */
int     is_ok_to_attack(struct char_data *ch, struct char_data *victim)
{
  int lvl = 0;

  /* this is probably a little messed up.  basically a check to make *
   * sure you don't try to run through some imaginary people.        */

  if (!ch || !victim || ch == NULL || victim == NULL)
    return FALSE;

  lvl = GET_LEVEL(ch) - GET_LEVEL(victim);

  /* avoid these checks if the victim is a thief or killer... *
   * mobs can attack anyone, and people can attack any mob... *
   * clan checks may be a good idea also...                   */

  if (PLR_FLAGGED(victim, PLR_KILLER) || PLR_FLAGGED(victim, PLR_THIEF) ||
     (IS_NPC(ch) || IS_NPC(victim)))
    return FALSE;

  /* the level check */
  if (lvl < -5) {  /* victim is bigger */
    send_to_char("Your mother couldn't afford your funeral costs!\r\n", ch);
    return FALSE;
  } else if (lvl > 5) {
    send_to_char("Picking on the smaller ones, eh?  Bully!\r\n", ch);
    return FALSE;
  } else if ((GET_SEX(ch) == SEX_MALE) && (GET_SEX(victim) == SEX_FEMALE)
&& is_wearing(victim, BIKINI)) {
    send_to_char("You can't help but drool instead.\r\n", ch);
    return FALSE;
  }

  return TRUE;

}

Anyway, all of this is just a way to modularize code you have to use in
multiple places.  If just a check in damage() is ok, then run with that.
If not, there's a snippet for you above.  (You may want to remove that last
check!  :)

-B.


At 04:56 PM 7/18/98 -0600, you wrote:
>ok so after testing the new pkill limit i noticed that thiefs flagged
>players cant be killed by a higher or lower within 5 levels i will look
>into that but it works in everyother way.
>Scorn
>
>
>     +------------------------------------------------------------+
>     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
>     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
>     +------------------------------------------------------------+


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



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