/* ====================== hate.c prototypes =============================== */ bool hates_you(int p, int i); #define no_hate(P) ((hates_who(P) == -1) ? true : false) int hates_who(int p); void clear_all_hate(void); void clear_hate(int i); void hatecom(void); void send_hate_msg(int m, int p); void set_hate(int p, int i); void set_hate_str(int p, char *str); void should_hate(int m, int p, int d); **------------------------------------- ** resurcom() resurect command /* stop the mobile from hating people */ clear_hate(a); >> >> strcpy(pname(a), pinit[c].p_name); >> setploc(a, ploc(mynum)); **------------------------------- ** resetmobiles() >> setpspeed(a, m->p_speed); >> setpdam(a, m->p_dam); >> setparmor(a, m->p_armor); >> setpwimpy(a, m->p_wimpy); >> setpscore(a, -1); clear_hate(a); ** ------------------------------------------------ ** parse.c, add the call to the verb. case VERB_HATES: hatecom(); break; ** ------------------------------------------------ ** mobile.c ** There is no way to simply past this code into yours ** however the 3 points at which hate is used can be added to the chkfight() ** function you use. for (mon = plist(ploc(plx)); mon != NOL; mon = pnext(mon)) { if ((mon<max_players) || /* Mob is a player */ ((pagg(mon) == 0) && (no_hate(mon))) || /* No reason to start */ EMPTY(pname(mon)) || (pstr(mon) < 0) || /* or mob is dead. */ ststflg(mon, SFL_OCCUPIED) || /* or mob is aliased */ testpeace(mon) || /* or it is peaceful */ (pfighting(mon) >= 0)) /* or Already fighting */ continue; /* See if the mob wants to hit the player. */ if (mtstflg(mon,MFL_DEAD) || mtstflg(mon,MFL_MAGICDEAD)) continue; /* If not aggressive, continue only if hate plx */ if ((pagg(mon) <= 0) && (!hates_you(mon, plx))) continue; if (hates_you(mon, plx)) { send_hate_msg(mon, plx); hit_player(mon,plx,pwpn(mon)); /* Start the fight */ break; } ** ------------------------------------------------ ** fight.c, in hit_player() and anywhere else you want to have ** a chance that a mobile should start to hate a player. >> /* call wound_player */ >> wound_player(attacker, victim, d, -1); >> /* Decide if we should hate attacker for this. mob only */ should_hate(victim, attacker, d); }