|
|
|
@ -120,6 +120,26 @@ command_result nopause (Core * c, std::vector <std::string> & parameters)
|
|
|
|
|
return CR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void revealAdventure(DFHack::Core * c)
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0; i < world->map.map_blocks.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
df::map_block *block = world->map.map_blocks[i];
|
|
|
|
|
// in 'no-hell'/'safe' mode, don't reveal blocks with hell and adamantine
|
|
|
|
|
if (!isSafe(block->map_pos))
|
|
|
|
|
continue;
|
|
|
|
|
DFHack::designations40d & designations = block->designation;
|
|
|
|
|
// for each tile in block
|
|
|
|
|
for (uint32_t x = 0; x < 16; x++) for (uint32_t y = 0; y < 16; y++)
|
|
|
|
|
{
|
|
|
|
|
// set to revealed
|
|
|
|
|
designations[x][y].bits.hidden = 0;
|
|
|
|
|
// and visible
|
|
|
|
|
designations[x][y].bits.pile = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
c->con.print("Local map revealed.\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
command_result reveal(DFHack::Core * c, std::vector<std::string> & params)
|
|
|
|
|
{
|
|
|
|
@ -157,16 +177,21 @@ command_result reveal(DFHack::Core * c, std::vector<std::string> & params)
|
|
|
|
|
|
|
|
|
|
CoreSuspender suspend(c);
|
|
|
|
|
DFHack::World *World =c->getWorld();
|
|
|
|
|
if (!Maps::IsValid())
|
|
|
|
|
{
|
|
|
|
|
c->con.printerr("Map is not available!\n");
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
t_gamemodes gm;
|
|
|
|
|
World->ReadGameMode(gm);
|
|
|
|
|
if(gm.g_mode != GAMEMODE_DWARF)
|
|
|
|
|
if(gm.g_mode == GAMEMODE_ADVENTURE)
|
|
|
|
|
{
|
|
|
|
|
con.printerr("Only in fortress mode.\n");
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
revealAdventure(c);
|
|
|
|
|
return CR_OK;
|
|
|
|
|
}
|
|
|
|
|
if (!Maps::IsValid())
|
|
|
|
|
if(gm.g_mode != GAMEMODE_DWARF)
|
|
|
|
|
{
|
|
|
|
|
c->con.printerr("Map is not available!\n");
|
|
|
|
|
con.printerr("Only in fortress mode.\n");
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -231,6 +256,11 @@ command_result unreveal(DFHack::Core * c, std::vector<std::string> & params)
|
|
|
|
|
CoreSuspender suspend(c);
|
|
|
|
|
|
|
|
|
|
DFHack::World *World =c->getWorld();
|
|
|
|
|
if (!Maps::IsValid())
|
|
|
|
|
{
|
|
|
|
|
c->con.printerr("Map is not available!\n");
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
t_gamemodes gm;
|
|
|
|
|
World->ReadGameMode(gm);
|
|
|
|
|
if(gm.g_mode != GAMEMODE_DWARF)
|
|
|
|
@ -238,11 +268,6 @@ command_result unreveal(DFHack::Core * c, std::vector<std::string> & params)
|
|
|
|
|
con.printerr("Only in fortress mode.\n");
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
if (!Maps::IsValid())
|
|
|
|
|
{
|
|
|
|
|
c->con.printerr("Map is not available!\n");
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sanity check: map size
|
|
|
|
|
uint32_t x_max_b, y_max_b, z_max_b;
|
|
|
|
|