/* Mob Hatred Allows a mob to remember a character that attacks them. If the character flees, and comes back into the room, the mob attacks saying, 'I remember the likes of you!'. This adds to the realism as well as preventing characters from fleeing, backstabing, fleeing, etc. It was coded for LUN telnet://lun.readiloan.com 1701 - a heavily modified Rom 2.3 Thor - thor@lun.readiloan.com */ add to fight.c --- Add before: * Damage modifiers. in bool damage() === if (victim->hate) { free_string(victim->hate->name); victim->hate->name = str_dup(ch->name); victim->hate->who = ch; } else start_hating(victim,ch); Add before: * Check for parry.: === /* Hate */ bool is_hating(CHAR_DATA *ch, CHAR_DATA *victim) { if (!ch->hate || ch->hate->who != victim) return FALSE; return TRUE; } void stop_hating(CHAR_DATA *ch) { if (ch->hate) { free_string(ch->hate->name ); free_mem(ch->hate, sizeof (HATE_DATA)); ch->hate = NULL; } return; } void start_hating(CHAR_DATA *ch, CHAR_DATA *victim) { if (ch->hate) stop_hating(ch); ch->hate = alloc_mem(sizeof( HATE_DATA)); ch->hate->name = str_dup(victim->name); ch->hate->who = victim; return; } add to merc.h --- In the /* fight.c */ group of function prototypes === bool is_hating args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); void stop_hating args( ( CHAR_DATA *ch ) ); void stop_fighting args( ( CHAR_DATA *ch, bool fBoth ) ); Add at the end of Structure Types === typedef struct hate_data HATE_DATA; add to struct char_data right after: CHAR_DATA * pet; === HATE_DATA * hate; Add before struct pc_data === struct hate_data { char * name; CHAR_DATA * who; }; add to act_wiz.c --- Add right before the line: sprintf( buf, "Short description: %s\n\rLong description: %s", in do_mstat() === sprintf( buf, "Hating: %s\n\r", victim->hate ? victim->hate->name : "(none)"); send_to_char( buf, ch ); Add right after: REMOVE_BIT(rch->act,ACT_AGGRESSIVE); in do_peace(): and right before the } === stop_hating(rch); Add to update.c --- Add right before /*Wander*/ in mobile_update() === /*Hate*/ { CHAR_DATA *rch; for (rch = ch->in_room->people; rch; rch = rch->next_in_room) { if ( is_hating(ch,rch) ) { do_say( ch, "I remember the likes of you!"); multi_hit( ch, rch, TYPE_UNDEFINED ); break; } } }