Add a tweak for forcibly clearing the Missing status of units.
Mainly useful for fixing inexplicably missing ghosts.develop
parent
f83db86258
commit
cbd254991f
@ -0,0 +1,88 @@
|
||||
// A container for random minor tweaks that don't fit anywhere else,
|
||||
// in order to avoid creating lots of plugins and polluting the namespace.
|
||||
|
||||
#include "Core.h"
|
||||
#include "Console.h"
|
||||
#include "Export.h"
|
||||
#include "PluginManager.h"
|
||||
|
||||
#include "modules/Gui.h"
|
||||
|
||||
#include "DataDefs.h"
|
||||
#include "df/ui.h"
|
||||
#include "df/world.h"
|
||||
#include "df/squad.h"
|
||||
#include "df/unit.h"
|
||||
#include "df/unit_soul.h"
|
||||
#include "df/historical_entity.h"
|
||||
#include "df/historical_figure.h"
|
||||
#include "df/historical_figure_info.h"
|
||||
#include "df/assumed_identity.h"
|
||||
#include "df/language_name.h"
|
||||
#include "df/death_info.h"
|
||||
#include "df/criminal_case.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
using std::vector;
|
||||
using std::string;
|
||||
using std::endl;
|
||||
using namespace DFHack;
|
||||
using namespace df::enums;
|
||||
|
||||
using df::global::ui;
|
||||
using df::global::world;
|
||||
|
||||
using namespace DFHack::Gui;
|
||||
|
||||
static command_result tweak(Core * c, vector <string> & parameters);
|
||||
|
||||
DFHACK_PLUGIN("tweak");
|
||||
|
||||
DFhackCExport command_result plugin_init (Core *c, std::vector <PluginCommand> &commands)
|
||||
{
|
||||
commands.clear();
|
||||
commands.push_back(PluginCommand(
|
||||
"tweak", "Various tweaks for minor bugs.", tweak, false,
|
||||
" tweak clear-missing\n"
|
||||
" Remove the missing status from the selected unit.\n"
|
||||
));
|
||||
return CR_OK;
|
||||
}
|
||||
|
||||
DFhackCExport command_result plugin_shutdown ( Core * c )
|
||||
{
|
||||
return CR_OK;
|
||||
}
|
||||
|
||||
static command_result tweak(Core * c, vector <string> ¶meters)
|
||||
{
|
||||
CoreSuspender suspend(c);
|
||||
|
||||
if (parameters.empty())
|
||||
return CR_WRONG_USAGE;
|
||||
|
||||
string cmd = parameters[0];
|
||||
|
||||
if (cmd == "clear-missing")
|
||||
{
|
||||
df::unit *unit = getSelectedUnit(c);
|
||||
if (!unit)
|
||||
return CR_FAILURE;
|
||||
|
||||
auto death = df::death_info::find(unit->counters.death_id);
|
||||
|
||||
if (death)
|
||||
{
|
||||
death->flags.bits.discovered = true;
|
||||
|
||||
auto crime = df::criminal_case::find(death->crime_id);
|
||||
if (crime)
|
||||
crime->flags.bits.discovered = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
return CR_WRONG_USAGE;
|
||||
|
||||
return CR_OK;
|
||||
}
|
Loading…
Reference in New Issue