From 2277c4ee4e3d28b6e60aeba6f87f134627be29e6 Mon Sep 17 00:00:00 2001 From: PatrikLundell Date: Sun, 25 Feb 2018 10:28:38 +0100 Subject: [PATCH] Corrected reanimation detection --- plugins/embark-assistant/help_ui.cpp | 2 +- plugins/embark-assistant/survey.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/plugins/embark-assistant/help_ui.cpp b/plugins/embark-assistant/help_ui.cpp index d75d00ce2..7be6b38d7 100644 --- a/plugins/embark-assistant/help_ui.cpp +++ b/plugins/embark-assistant/help_ui.cpp @@ -250,7 +250,7 @@ namespace embark_assist{ help_text.push_back(" Flux determination is made by finding the reaction PIG_IRON_MAKING."); help_text.push_back("- Right world map overlay not implemented as author has failed to"); help_text.push_back(" emulate the sizing logic exactly."); - help_text.push_back("Version 0.1 2017-08-30"); + help_text.push_back("Version 0.2 2018-02-25"); break; } diff --git a/plugins/embark-assistant/survey.cpp b/plugins/embark-assistant/survey.cpp index 6583d2479..15fd3883a 100644 --- a/plugins/embark-assistant/survey.cpp +++ b/plugins/embark-assistant/survey.cpp @@ -17,6 +17,9 @@ #include "df/inorganic_flags.h" #include "df/inorganic_raw.h" #include "df/interaction.h" +#include "df/interaction_effect.h" +#include "df/interaction_effect_type.h" +#include "df/interaction_effect_animatest.h" #include "df/interaction_instance.h" #include "df/interaction_source.h" #include "df/interaction_source_regionst.h" @@ -264,10 +267,15 @@ namespace embark_assist { if (interaction->sources.size() && interaction->sources[0]->getType() == df::interaction_source_type::REGION) { for (uint16_t k = 0; k < interaction->targets.size(); k++) { - if (interaction->targets[k]->getType() == 0) { // Returns wrong type. Should be df::interaction_target_type::CORPSE - reanimating = true; + if (interaction->targets[k]->getType() == df::interaction_target_type::CORPSE) { + for (uint16_t l = 0; l < interaction->effects.size(); l++) { + if (interaction->effects[l]->getType() == df::interaction_effect_type::ANIMATE) { + reanimating = true; + break; + } + } } - else if (interaction->targets[k]->getType() == 2) {// Returns wrong type.. Should be df::interaction_target_type::MATERIAL + else if (interaction->targets[k]->getType() == df::interaction_target_type::MATERIAL) { df::interaction_target_materialst* material = virtual_cast(interaction->targets[k]); if (material && DFHack::MaterialInfo(material->mat_type, material->mat_index).isInorganic()) { for (uint16_t l = 0; l < world->raws.inorganics[material->mat_index]->material.syndrome.size(); l++) {