Browse Source

Clean up debug commands for loading levels

pull/2643/head
Anders Jenbo 5 years ago
parent
commit
6bc8475e8c
  1. 25
      Source/debug.cpp
  2. 13
      Source/diablo.cpp
  3. 1
      Source/diablo.h
  4. 5
      Source/gendung.cpp
  5. 8
      Source/multi.cpp

25
Source/debug.cpp

@ -118,7 +118,7 @@ std::string DebugCmdWarpToLevel(const std::string_view parameter)
auto &myPlayer = Players[MyPlayerId];
auto level = atoi(parameter.data());
if (level < 0 || level > (gbIsHellfire ? 24 : 16))
return fmt::format("Level {} is not known. Do you want to write an extension mod?", level);
return fmt::format("Level {} is not known. Do you want to write a mod?", level);
if (!setlevel && myPlayer.plrlevel == level)
return fmt::format("I did nothing but fulfilled your wish. You are already at level {}.", level);
@ -127,6 +127,28 @@ std::string DebugCmdWarpToLevel(const std::string_view parameter)
return fmt::format("Welcome to level {}.", level);
}
std::string DebugCmdLoadMap(const std::string_view parameter)
{
auto &myPlayer = Players[MyPlayerId];
auto level = atoi(parameter.data());
if (level < 1)
return fmt::format("Map id must be 1 or higher", level);
if (setlevel && myPlayer.plrlevel == level)
return fmt::format("I did nothing but fulfilled your wish. You are already at level {}.", level);
for (auto &quest : Quests) {
if (level != quest._qslvl)
continue;
setlevel = false;
setlvltype = quest._qlvltype;
StartNewLvl(MyPlayerId, WM_DIABSETLVL, level);
return fmt::format("Welcome to {}.", QuestLevelNames[level]);
}
return fmt::format("Level {} is not known. Do you want to write a mod?", level);
}
std::string DebugCmdResetLevel(const std::string_view parameter)
{
auto &myPlayer = Players[MyPlayerId];
@ -175,6 +197,7 @@ std::vector<DebugCmdItem> DebugCmdList = {
{ "give spells 10", "Set spell level to 10 for all spells.", "", &DebugCmdMaxSpellLevel },
{ "take gold", "Removes all gold from inventory.", "", &DebugCmdTakeGoldCheat },
{ "changelevel", "Moves to specifided {level} (use 0 for town).", "{level}", &DebugCmdWarpToLevel },
{ "map", "Load a quest level {level}.", "{level}", &DebugCmdLoadMap },
{ "restart", "Resets specified {level}.", "{level}", &DebugCmdResetLevel },
{ "god", "Togggles godmode.", "", &DebugCmdGodMode },
};

13
Source/diablo.cpp

@ -97,7 +97,6 @@ Keymapper keymapper;
std::array<Keymapper::ActionIndex, 4> quickSpellActionIndexes;
bool gbForceWindowed = false;
bool leveldebug = false;
#ifdef _DEBUG
bool monstdebug = false;
_monster_id DebugMonsters[10];
@ -884,11 +883,9 @@ void RunGameLoop(interface_mode uMsg)
printInConsole(" %-20s %-30s\n", "-v", "Highlight visibility");
printInConsole(" %-20s %-30s\n", "-i", "Ignore network timeout");
printInConsole(" %-20s %-30s\n", "-j <##>", "Mausoleum warps to given level");
printInConsole(" %-20s %-30s\n", "-l <##> <##>", "Start in level as type");
printInConsole(" %-20s %-30s\n", "-m <##>", "Add debug monster, up to 10 allowed");
printInConsole(" %-20s %-30s\n", "-q <#>", "Force a certain quest");
printInConsole(" %-20s %-30s\n", "-r <##########>", "Set map seed");
printInConsole(" %-20s %-30s\n", "-t <##>", "Set current quest level");
#endif
printInConsole("%s", _("\nReport bugs at https://github.com/diasurgical/devilutionX/\n"));
diablo_quit(0);
@ -947,12 +944,6 @@ void DiabloParseFlags(int argc, char **argv)
debug_mode_key_i = true;
} else if (strcasecmp("-j", argv[i]) == 0) {
debug_mode_key_j = SDL_atoi(argv[++i]);
} else if (strcasecmp("-l", argv[i]) == 0) {
setlevel = false;
leveldebug = true;
leveltype = (dungeon_type)SDL_atoi(argv[++i]);
currlevel = SDL_atoi(argv[++i]);
Players[0].plrlevel = currlevel;
} else if (strcasecmp("-m", argv[i]) == 0) {
monstdebug = true;
DebugMonsters[debugmonsttypes++] = (_monster_id)SDL_atoi(argv[++i]);
@ -960,10 +951,6 @@ void DiabloParseFlags(int argc, char **argv)
questdebug = SDL_atoi(argv[++i]);
} else if (strcasecmp("-r", argv[i]) == 0) {
setseed = SDL_atoi(argv[++i]);
} else if (strcasecmp("-t", argv[i]) == 0) {
leveldebug = true;
setlevel = true;
setlvlnum = (_setlevels)SDL_atoi(argv[++i]);
} else if (strcasecmp("-v", argv[i]) == 0) {
visiondebug = true;
} else if (strcasecmp("-w", argv[i]) == 0) {

1
Source/diablo.h

@ -101,7 +101,6 @@ void diablo_color_cyc_logic();
extern Keymapper keymapper;
extern bool gbForceWindowed;
extern bool leveldebug;
#ifdef _DEBUG
extern bool monstdebug;
extern _monster_id DebugMonsters[10];

5
Source/gendung.cpp

@ -587,11 +587,6 @@ bool SkipThemeRoom(int x, int y)
void InitLevels()
{
#ifdef _DEBUG
if (leveldebug)
return;
#endif
currlevel = 0;
leveltype = DTYPE_TOWN;
setlevel = false;

8
Source/multi.cpp

@ -344,11 +344,9 @@ dungeon_type InitLevelType(int l)
void SetupLocalPositions()
{
if (!leveldebug || gbIsMultiplayer) {
currlevel = 0;
leveltype = DTYPE_TOWN;
setlevel = false;
}
currlevel = 0;
leveltype = DTYPE_TOWN;
setlevel = false;
int x = 75;
int y = 68;

Loading…
Cancel
Save