MCPcopy Create free account
hub / github.com/NetHack/NetHack / wiz_level_change

Function wiz_level_change

src/wizcmds.c:445–488  ·  view source on GitHub ↗

#levelchange command - adjust hero's experience level */

Source from the content-addressed store, hash-verified

443
444/* #levelchange command - adjust hero's experience level */
445int
446wiz_level_change(void)
447{
448 char buf[BUFSZ], dummy = '\0';
449 int newlevel = 0;
450 int ret;
451
452 buf[0] = '\0'; /* in case EDIT_GETLIN is enabled */
453 getlin("To what experience level do you want to be set?", buf);
454 (void) mungspaces(buf);
455 if (buf[0] == '\033' || buf[0] == '\0')
456 ret = 0;
457 else
458 ret = sscanf(buf, "%d%c", &newlevel, &dummy);
459
460 if (ret != 1) {
461 pline1(Never_mind);
462 return ECMD_OK;
463 }
464 if (newlevel == u.ulevel) {
465 You("are already that experienced.");
466 } else if (newlevel < u.ulevel) {
467 if (u.ulevel == 1) {
468 You("are already as inexperienced as you can get.");
469 return ECMD_OK;
470 }
471 if (newlevel < 1)
472 newlevel = 1;
473 while (u.ulevel > newlevel)
474 losexp("#levelchange");
475 } else {
476 if (u.ulevel >= MAXULEV) {
477 You("are already as experienced as you can get.");
478 return ECMD_OK;
479 }
480 if (newlevel > MAXULEV)
481 newlevel = MAXULEV;
482 while (u.ulevel < newlevel)
483 pluslvl(FALSE);
484 }
485 /* blessed full healing or restore ability won't fix any lost levels */
486 u.ulevelmax = u.ulevel;
487 return ECMD_OK;
488}
489
490DISABLE_WARNING_CONDEXPR_IS_CONSTANT
491

Callers

nothing calls this directly

Calls 5

getlinFunction · 0.85
mungspacesFunction · 0.85
YouFunction · 0.85
losexpFunction · 0.85
pluslvlFunction · 0.85

Tested by

no test coverage detected