/****************************************************************************
* ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh, *
* Badastaz, Digifuzz, Senir, Kratas, Scion, Shogar and Tagith. *
* ------------------------------------------------------------------------ *
* Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain, *
* Ohio. ALL RIGHTS RESERVED See /doc/RMLicense.txt for more details. *
****************************************************************************/
/*
* Anti-tanking code
* Author: Cronel (supfly@geocities.com) based on idea by Krage
* of FrozenMUD (empire.digiunix.net 4000)
*
* Permission to use and distribute this code is granted provided
* this header is retained and unaltered, and the distribution
* package contains all the original files unmodified.
* If you modify this code and use/distribute modified versions
* you must give credit to the original author(s).
*/
#include "mud.h"
/* This is called from violence_update, for mobs fighting PCs only;
* ch is the mob, victim is the player. Returns TRUE if "victim"
* has changed, FALSE otherwise.
* The code simply checks if there's someone else fighting this
* mob in the room, and if this person is under ten levels from the
* one the mob is currently fighting, then powerlevel-tanking has
* been detected. Switch and kill the lowbie! Ha Ha Ha!
*/
bool check_anti_tanking( CHAR_DATA * ch, CHAR_DATA * victim )
{
CHAR_DATA *lowbie;
CHAR_DATA *tanker;
char buf[MAX_STRING_LENGTH];
for( lowbie = ch->in_room->first_person; lowbie; lowbie = lowbie->next_in_room )
{
if( lowbie == ch || lowbie == victim || IS_NPC( lowbie ) )
continue;
if( who_fighting( lowbie ) == ch && lowbie->level < victim->level - 10 )
{
act( AT_CARNAGE, "$n sees that $N has joined the fight, and decides $E is a much better pray!",
ch, NULL, lowbie, TO_ROOM );
interpret( ch, "yell Younger meat, ha ha!" );
tanker = who_fighting( ch );
stop_fighting( ch, FALSE );
set_fighting( ch, lowbie );
sprintf( buf, "check_anti_tanking: Tanking detected. %s is tanking for %s, with mob %d",
tanker->name, lowbie->name, ch->pIndexData->vnum );
log_string( buf );
return TRUE;
}
}
return FALSE;
}