From d2050e48e5c8e4281cba9221a5e6eb12e90d3dba Mon Sep 17 00:00:00 2001 From: arromdee Date: Fri, 18 Jan 2002 01:09:28 +0000 Subject: [PATCH] levelchange This changes the #levelgain command to #levelchange, and allows changing levels both up and down. --Ken A. --- doc/fixes33.2 | 2 +- src/cmd.c | 30 +++++++++++++++++++----------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/doc/fixes33.2 b/doc/fixes33.2 index 4b1d63bad..373d7724c 100644 --- a/doc/fixes33.2 +++ b/doc/fixes33.2 @@ -479,7 +479,7 @@ ninjas should get multishot bonus with yumi and ya (Dylan O'Donnell) put prisoners in the Dark One's dungeon (Dylan O'Donnell) add leather cloak so soldiers don't have elven cloaks add Tom Friedetzky's BUC-patch (applies to full menustyle only) -add wizard #poly and #levelgain (Dylan O'Donnell) +add wizard #poly and #levelchange (originally levelgain; Dylan O'Donnell), Platform- and/or Interface-Specific New Features diff --git a/src/cmd.c b/src/cmd.c index 88340f929..4fc5a8b93 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -117,7 +117,7 @@ STATIC_PTR int NDECL(wiz_where); STATIC_PTR int NDECL(wiz_detect); STATIC_PTR int NDECL(wiz_polyself); STATIC_PTR int NDECL(wiz_level_tele); -STATIC_PTR int NDECL(wiz_level_gain); +STATIC_PTR int NDECL(wiz_level_change); STATIC_PTR int NDECL(wiz_show_seenv); STATIC_PTR int NDECL(wiz_show_vision); STATIC_PTR int NDECL(wiz_mon_polycontrol); @@ -565,22 +565,30 @@ wiz_mon_polycontrol() } STATIC_PTR int -wiz_level_gain() +wiz_level_change() { char buf[BUFSZ]; int newlevel; + int ret; - if (u.ulevel >= MAXULEV) { - You("are already as experienced as you can get."); - return 0; - } getlin("To what experience level do you want to be raised?", buf); - (void) sscanf(buf, "%d", &newlevel); - if (newlevel <= 0) { + ret = sscanf(buf, "%d", &newlevel); + if (ret < 1 || ret == EOF) pline(Never_mind); - } else if (newlevel <= u.ulevel) { + else if (newlevel == u.ulevel) You("are already that experienced."); - } else { + else if (newlevel < u.ulevel) { + if (u.ulevel == 1) { + You("are already as inexperienced as you can get."); + return 0; + } + if (newlevel < 1) newlevel = 1; + while (u.ulevel > newlevel) losexp((const char *)0); + } else { + if (u.ulevel >= MAXULEV) { + You("are already as experienced as you can get."); + return 0; + } if (newlevel > MAXULEV) newlevel = MAXULEV; while (u.ulevel < newlevel) pluslvl(FALSE); } @@ -1404,7 +1412,7 @@ struct ext_func_tab extcmdlist[] = { #if defined(WIZARD) static const struct ext_func_tab debug_extcmdlist[] = { - {"levelgain", "gain experience levels", wiz_level_gain, TRUE}, + {"levelchange", "change experience change", wiz_level_change, TRUE}, {"light sources", "show mobile light sources", wiz_light_sources, TRUE}, {"monpoly_control", "control monster polymorphs", wiz_mon_polycontrol, TRUE}, {"poly", "polymorph self", wiz_polyself, TRUE}, -- 2.50.1