#levelchange command - adjust hero's experience level */
| 443 | |
| 444 | /* #levelchange command - adjust hero's experience level */ |
| 445 | int |
| 446 | wiz_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 | |
| 490 | DISABLE_WARNING_CONDEXPR_IS_CONSTANT |
| 491 |
nothing calls this directly
no test coverage detected