summaryrefslogtreecommitdiff
path: root/plugins/fastdwarf.cpp
diff options
context:
space:
mode:
authorPetr Mrázek2011-10-28 06:22:07 +0200
committerPetr Mrázek2011-10-28 06:22:07 +0200
commit4688f6557ea2494eb62f5e531ecbab63539f92b1 (patch)
treebf717a6334c9f9c8de3e7f94d4b8c2df99ce7559 /plugins/fastdwarf.cpp
parente74aae6f3ea1bf6426734859aa8fe3ba1dc4ae14 (diff)
downloaddfhack-4688f6557ea2494eb62f5e531ecbab63539f92b1.tar.gz
dfhack-4688f6557ea2494eb62f5e531ecbab63539f92b1.tar.bz2
dfhack-4688f6557ea2494eb62f5e531ecbab63539f92b1.tar.xz
Fix problem with magic numbers in fastdwarf.
Diffstat (limited to 'plugins/fastdwarf.cpp')
-rw-r--r--plugins/fastdwarf.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/plugins/fastdwarf.cpp b/plugins/fastdwarf.cpp
index 9ff77b33..88872af7 100644
--- a/plugins/fastdwarf.cpp
+++ b/plugins/fastdwarf.cpp
@@ -29,44 +29,43 @@ DFhackCExport command_result plugin_shutdown ( Core * c )
static int enable_fastdwarf;
-// remove that if struct df_creature is updated
-#define job_counter unk_540
-
DFhackCExport command_result plugin_onupdate ( Core * c )
{
if (!enable_fastdwarf)
return CR_OK;
-
- static vector <df_creature*> *v;
df_creature *cre;
-
- if (!v) {
- OffsetGroup *ogc = c->vinfo->getGroup("Creatures");
- v = (vector<df_creature*>*)ogc->getAddress("vector");
+ DFHack::Creatures * cr = c->getCreatures();
+ static vector <df_creature*> *v = cr->creatures;
+ uint32_t race = cr->GetDwarfRaceIndex();
+ uint32_t civ = cr->GetDwarfCivId();
+ if (!v)
+ {
+ c->con.printerr("Unable to locate creature vector. Fastdwarf cancelled.\n");
}
- //c->Suspend(); // will deadlock in onupdate
- for (unsigned i=0 ; i<v->size() ; ++i) {
+ for (unsigned i=0 ; i<v->size() ; ++i)
+ {
cre = v->at(i);
- if (cre->race == 241 && cre->job_counter > 0)
+ if (cre->race == race && cre->civ == civ && cre->job_counter > 0)
cre->job_counter = 0;
- // could also patch the cre->current_job->counter
+ // could also patch the cre->current_job->counter
}
- //c->Resume();
-
return CR_OK;
}
static command_result fastdwarf (Core * c, vector <string> & parameters)
{
- if (parameters.size() == 1 && (parameters[0] == "0" || parameters[0] == "1")) {
+ if (parameters.size() == 1 && (parameters[0] == "0" || parameters[0] == "1"))
+ {
if (parameters[0] == "0")
enable_fastdwarf = 0;
else
enable_fastdwarf = 1;
c->con.print("fastdwarf %sactivated.\n", (enable_fastdwarf ? "" : "de"));
- } else {
- c->con.print("Activate fastdwarf with 'fastdwarf 1', deactivate with 'fastdwarf 0'.\nCurrent state: %d.\n", enable_fastdwarf);
+ }
+ else
+ {
+ c->con.print("Makes your minions move at ludicrous speeds.\nActivate with 'fastdwarf 1', deactivate with 'fastdwarf 0'.\nCurrent state: %d.\n", enable_fastdwarf);
}
return CR_OK;