void death_xp_loss( CHAR_DATA *victim )
{
int xp_lastlvl;
int xp_loss;
if ( victim->level < LEVEL_HERO )
{
xp_lastlvl = number_classes( victim ) == 1 ? 1000
: number_classes( victim ) * 2000;
if ( victim->exp > xp_lastlvl )
gain_exp( victim, ( xp_lastlvl - victim->exp ) / 2 );
}
else if ( victim->level < L_CHAMP3 )
{
if ( victim->level >= LEVEL_HERO )
xp_lastlvl = number_classes( victim ) == 1 ? 100000
: number_classes( victim ) * 200000;
if ( victim->level >= L_CHAMP1 )
xp_lastlvl = xp_lastlvl + ( 3 * xp_lastlvl );
if ( victim->level >= L_CHAMP2 )
xp_lastlvl = xp_lastlvl * 2 + xp_lastlvl / 2;
if ( victim->exp > xp_lastlvl )
{
xp_loss = (xp_lastlvl - victim->exp ) / 2;
xp_loss = UMAX( -10000 * number_classes( victim ), xp_loss );
gain_exp( victim, xp_loss );
}
}
return;
}