mirror of
https://github.com/tbamud/tbamud.git
synced 2026-03-19 10:46:33 +01:00
Level 1 limitation for NPC's addition
This commit is contained in:
parent
4f2e68a369
commit
6a743b5276
4 changed files with 18 additions and 30 deletions
4
src/db.c
4
src/db.c
|
|
@ -1559,7 +1559,9 @@ static void parse_simple_mob(FILE *mob_f, int i, int nr)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
GET_LEVEL(mob_proto + i) = t[0];
|
||||
if (t[0] != 1)
|
||||
log("INFO: Forcing mob #%d level from %d to 1 per level lock.", nr, t[0]);
|
||||
GET_LEVEL(mob_proto + i) = 1;
|
||||
|
||||
/* max hit = 0 is a flag that H, M, V is xdy+z */
|
||||
GET_MAX_HIT(mob_proto + i) = 0;
|
||||
|
|
|
|||
|
|
@ -830,7 +830,11 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
|
|||
if (!str_cmp(field, "level")) {
|
||||
if (subfield && *subfield) {
|
||||
int lev = atoi(subfield);
|
||||
GET_LEVEL(c) = MIN(MAX(lev, 0), LVL_IMMORT-1);
|
||||
if (IS_NPC(c)) {
|
||||
if (GET_LEVEL(c) != 1)
|
||||
GET_LEVEL(c) = 1;
|
||||
} else
|
||||
GET_LEVEL(c) = MIN(MAX(lev, 1), LVL_IMPL);
|
||||
} else
|
||||
snprintf(str, slen, "%d", GET_LEVEL(c));
|
||||
}
|
||||
|
|
|
|||
30
src/limits.c
30
src/limits.c
|
|
@ -271,9 +271,6 @@ void gain_skill(struct char_data *ch, char *skill, bool success)
|
|||
|
||||
void gain_exp(struct char_data *ch, int gain)
|
||||
{
|
||||
int is_altered = FALSE;
|
||||
int num_levels = 0;
|
||||
|
||||
if (!IS_NPC(ch) && ((GET_LEVEL(ch) < 1 || GET_LEVEL(ch) >= LVL_IMMORT)))
|
||||
return;
|
||||
|
||||
|
|
@ -281,37 +278,20 @@ void gain_exp(struct char_data *ch, int gain)
|
|||
GET_EXP(ch) += gain;
|
||||
return;
|
||||
}
|
||||
|
||||
if (gain > 0) {
|
||||
|
||||
gain = MIN(CONFIG_MAX_EXP_GAIN, gain); /* put a cap on the max gain per kill */
|
||||
gain = MIN(CONFIG_MAX_EXP_GAIN, gain); /* cap max gain per kill */
|
||||
GET_EXP(ch) += gain;
|
||||
while (GET_LEVEL(ch) < LVL_IMMORT - CONFIG_NO_MORT_TO_IMMORT &&
|
||||
GET_EXP(ch) >= level_exp(GET_CLASS(ch), GET_LEVEL(ch) + 1)) {
|
||||
GET_LEVEL(ch) += 1;
|
||||
num_levels++;
|
||||
advance_level(ch);
|
||||
is_altered = TRUE;
|
||||
}
|
||||
|
||||
if (is_altered) {
|
||||
mudlog(BRF, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE, "%s advanced %d level%s to level %d.",
|
||||
GET_NAME(ch), num_levels, num_levels == 1 ? "" : "s", GET_LEVEL(ch));
|
||||
if (num_levels == 1)
|
||||
send_to_char(ch, "You rise a level!\r\n");
|
||||
else
|
||||
send_to_char(ch, "You rise %d levels!\r\n", num_levels);
|
||||
if (GET_LEVEL(ch) >= LVL_IMMORT && !PLR_FLAGGED(ch, PLR_NOWIZLIST))
|
||||
run_autowiz();
|
||||
}
|
||||
} else if (gain < 0) {
|
||||
gain = MAX(-CONFIG_MAX_EXP_LOSS, gain); /* Cap max exp lost per death */
|
||||
gain = MAX(-CONFIG_MAX_EXP_LOSS, gain); /* cap max loss per death */
|
||||
GET_EXP(ch) += gain;
|
||||
if (GET_EXP(ch) < 0)
|
||||
GET_EXP(ch) = 0;
|
||||
}
|
||||
|
||||
if (GET_LEVEL(ch) >= LVL_IMMORT && !PLR_FLAGGED(ch, PLR_NOWIZLIST))
|
||||
run_autowiz();
|
||||
}
|
||||
}
|
||||
|
||||
void gain_exp_regardless(struct char_data *ch, int gain)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1148,7 +1148,9 @@ void medit_parse(struct descriptor_data *d, char *arg)
|
|||
break;
|
||||
|
||||
case MEDIT_LEVEL:
|
||||
GET_LEVEL(OLC_MOB(d)) = LIMIT(i, 1, LVL_IMPL);
|
||||
if (i != 1)
|
||||
write_to_output(d, "Mobile levels are locked to 1 in this world; ignoring value.\r\n");
|
||||
GET_LEVEL(OLC_MOB(d)) = 1;
|
||||
OLC_VAL(d) = TRUE;
|
||||
medit_disp_stats_menu(d);
|
||||
return;
|
||||
|
|
@ -1214,8 +1216,8 @@ void medit_autoroll_stats(struct descriptor_data *d)
|
|||
{
|
||||
int mob_lev;
|
||||
|
||||
mob_lev = GET_LEVEL(OLC_MOB(d));
|
||||
mob_lev = GET_LEVEL(OLC_MOB(d)) = LIMIT(mob_lev, 1, LVL_IMPL);
|
||||
mob_lev = 1;
|
||||
GET_LEVEL(OLC_MOB(d)) = 1;
|
||||
|
||||
GET_MOVE(OLC_MOB(d)) = mob_lev * 10; /* hit point bonus (mobs don't use movement points) */
|
||||
GET_HIT(OLC_MOB(d)) = mob_lev / 5; /* number of hitpoint dice */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue