Anyone knows how to change gain_exp function so the players won't be able
to advance more than one level per kill ? Also, when they gain a level
their exp should be set on 0. Here is the function:
----------------------------------
void gain_exp(struct char_data * ch, int gain)
{
int is_altered = FALSE;
int num_levels = 0;
char buf[128];
if (!IS_NPC(ch) && ((GET_LEVEL(ch) < 1 || GET_LEVEL(ch) >= LVL_IMMORT)))
return;
if (IS_NPC(ch)) {
GET_EXP(ch) += gain;
return;
}
if (gain > 0) {
gain = MIN(max_exp_gain, gain); /* put a cap on the max gain per kill */
GET_EXP(ch) += gain;
while (GET_LEVEL(ch) < LVL_IMMORT &&
GET_EXP(ch) >= titles[(int) GET_CLASS(ch)][GET_LEVEL(ch) + 1].exp) {
GET_LEVEL(ch) += 1;
num_levels++;
advance_level(ch);
is_altered = TRUE;
}
if (is_altered) {
if (num_levels == 1)
send_to_char("You rise a level!\r\n", ch);
else {
sprintf(buf, "You rise %d levels!\r\n", num_levels);
send_to_char(buf, ch);
}
set_title(ch, NULL);
check_autowiz(ch);
}
} else if (gain < 0) {
gain = MAX(-max_exp_loss, gain); /* Cap max exp lost per death */
GET_EXP(ch) += gain;
if (GET_EXP(ch) < 0)
GET_EXP(ch) = 0;
}
}
--------------------------------------
Thanks,
Iggy
This archive was generated by hypermail 2b30 : 12/18/00 PST