diff --git a/library/modules/EventManager.cpp b/library/modules/EventManager.cpp index 3af096004..d6f40e4a2 100644 --- a/library/modules/EventManager.cpp +++ b/library/modules/EventManager.cpp @@ -32,13 +32,13 @@ using namespace EventManager; **/ //map > tickQueue; -multimap tickQueue; +static multimap tickQueue; //TODO: consider unordered_map of pairs, or unordered_map of unordered_set, or whatever -multimap handlers[EventType::EVENT_MAX]; -uint32_t eventLastTick[EventType::EVENT_MAX]; +static multimap handlers[EventType::EVENT_MAX]; +static uint32_t eventLastTick[EventType::EVENT_MAX]; -const uint32_t ticksPerYear = 403200; +static const uint32_t ticksPerYear = 403200; void DFHack::EventManager::registerListener(EventType::EventType e, EventHandler handler, Plugin* plugin) { handlers[e].insert(pair(plugin, handler)); diff --git a/plugins/autoSyndrome.cpp b/plugins/autoSyndrome.cpp index a07de51a1..91dfd8267 100644 --- a/plugins/autoSyndrome.cpp +++ b/plugins/autoSyndrome.cpp @@ -7,6 +7,7 @@ #include "modules/Job.h" #include "modules/Maps.h" #include "modules/Once.h" +#include "modules/World.h" #include "df/building.h" #include "df/caste_raw.h" @@ -162,12 +163,10 @@ command_result autoSyndrome(color_ostream& out, vector& parameters) { if ( enabled == wasEnabled ) return CR_OK; - Plugin* me = Core::getInstance().getPluginManager()->getPluginByName("autoSyndrome"); + EventManager::unregisterAll(plugin_self); if ( enabled ) { EventManager::EventHandler handle(processJob, 5); - EventManager::registerListener(EventManager::EventType::JOB_COMPLETED, handle, me); - } else { - EventManager::unregisterAll(me); + EventManager::registerListener(EventManager::EventType::JOB_COMPLETED, handle, plugin_self); } return CR_OK; } @@ -473,17 +472,19 @@ int32_t giveSyndrome(color_ostream& out, int32_t workerId, df::syndrome* syndrom df::unit_syndrome* unitSyndrome = new df::unit_syndrome(); unitSyndrome->type = syndrome->id; - unitSyndrome->year = 0; - unitSyndrome->year_time = 0; - unitSyndrome->ticks = 1; - unitSyndrome->unk1 = 1; + unitSyndrome->year = DFHack::World::ReadCurrentYear(); + unitSyndrome->year_time = DFHack::World::ReadCurrentTick(); +// unitSyndrome->year = 0; +// unitSyndrome->year_time = 0; + unitSyndrome->ticks = 0; + unitSyndrome->unk1 = 0; unitSyndrome->flags = 0; //typecast for ( size_t a = 0; a < syndrome->ce.size(); a++ ) { df::unit_syndrome::T_symptoms* symptom = new df::unit_syndrome::T_symptoms(); symptom->unk1 = 0; symptom->unk2 = 0; - symptom->ticks = 1; + symptom->ticks = 0; symptom->flags = 2; //TODO: ??? unitSyndrome->symptoms.push_back(symptom); } diff --git a/plugins/syndromeTrigger.cpp b/plugins/syndromeTrigger.cpp index 95a1a49cf..8508440e4 100644 --- a/plugins/syndromeTrigger.cpp +++ b/plugins/syndromeTrigger.cpp @@ -34,6 +34,13 @@ DFhackCExport command_result plugin_init ( color_ostream &out, std::vector unitId, data->syndromeIndex); df::unit* unit = df::unit::find(data->unitId);