diff options
| author | Petr Mrázek | 2011-10-28 06:22:07 +0200 |
|---|---|---|
| committer | Petr Mrázek | 2011-10-28 06:22:07 +0200 |
| commit | 4688f6557ea2494eb62f5e531ecbab63539f92b1 (patch) | |
| tree | bf717a6334c9f9c8de3e7f94d4b8c2df99ce7559 /plugins/fastdwarf.cpp | |
| parent | e74aae6f3ea1bf6426734859aa8fe3ba1dc4ae14 (diff) | |
| download | dfhack-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.cpp | 35 |
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; |
