Okay, giving this another shot after the forum fix. Thanks Samson!
In fight.c, violence_update( ), there is this bit regarding non-autonomous mobs potentially switching PC tanks:
/*
* Group Fighting Styles Support:
* If ch is tanking
* If rch is using a more aggressive style than ch
* Then rch is the new tank -h
*/
if( ( !IS_NPC(ch) && !IS_NPC(rch) )
&&( rch!=ch )
&&( rch->fighting )
&&( who_fighting(rch->fighting->who) == ch )
&&( !xIS_SET( rch->fighting->who->act, ACT_AUTONOMOUS ) )
&&( rch->style < ch->style )
)
{
rch->fighting->who->fighting->who = rch;
}
Shouldn't that instead look like this, so we recalculate fight->xp, fight->align, fight->time_skilled and such, for the new tank?
/*
* Group Fighting Styles Support:
* If ch is tanking
* If rch is using a more aggressive style than ch
* Then rch is the new tank -h
*/
if( ( !IS_NPC(ch) && !IS_NPC(rch) )
&&( rch!=ch )
&&( rch->fighting )
&&( who_fighting(rch->fighting->who) == ch )
&&( !xIS_SET( rch->fighting->who->act, ACT_AUTONOMOUS ) )
&&( rch->style < ch->style )
&&( rch->num_fighting < max_fight(rch) )
)
{
stop_fighting( rch->fighting->who, FALSE );
set_fighting( rch->fighting->who, rch );
}