diff --git a/library/include/modules/Buildings.h b/library/include/modules/Buildings.h index cb9091861..66745abe6 100644 --- a/library/include/modules/Buildings.h +++ b/library/include/modules/Buildings.h @@ -275,7 +275,6 @@ DFHACK_EXPORT bool isActivityZone(df::building * building); DFHACK_EXPORT bool isPenPasture(df::building * building); DFHACK_EXPORT bool isPitPond(df::building * building); DFHACK_EXPORT bool isActive(df::building * building); -DFHACK_EXPORT bool isHospital(df::building * building); DFHACK_EXPORT bool isAnimalTraining(df::building * building); DFHACK_EXPORT df::building* findPenPitAt(df::coord coord); diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 828768a54..389113483 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -1589,45 +1589,31 @@ bool Buildings::isPenPasture(df::building * building) if (!isActivityZone(building)) return false; -/* TODO: understand how this changes for v50 - return ((df::building_civzonest*) building)->zone_flags.bits.pen_pasture != 0; -*/ return false; + return ((df::building_civzonest*)building)->type == civzone_type::Pen; } bool Buildings::isPitPond(df::building * building) { if (!isActivityZone(building)) return false; -/* TODO: understand how this changes for v50 - return ((df::building_civzonest*) building)->zone_flags.bits.pit_pond != 0; -*/ return false; + + return ((df::building_civzonest*)building)->type == civzone_type::Pond; } bool Buildings::isActive(df::building * building) { if (!isActivityZone(building)) return false; -/* TODO: understand how this changes for v50 - return ((df::building_civzonest*) building)->zone_flags.bits.active != 0; -*/ return false; + // 8 is the value obtained by reverse engineering + return ((df::building_civzonest*)building)->is_active == 8; } -bool Buildings::isHospital(df::building * building) - { - if (!isActivityZone(building)) - return false; -/* TODO: understand how this changes for v50 - return ((df::building_civzonest*) building)->zone_flags.bits.hospital != 0; -*/ return false; - } - bool Buildings::isAnimalTraining(df::building * building) { if (!isActivityZone(building)) return false; -/* TODO: understand how this changes for v50 - return ((df::building_civzonest*) building)->zone_flags.bits.animal_training != 0; -*/ return false; + + return ((df::building_civzonest*)building)->type == civzone_type::AnimalTraining; } // returns building of pen/pit at cursor position (NULL if nothing found) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 3389303fd..df49c3d59 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -84,7 +84,7 @@ dfhack_plugin(autofarm autofarm.cpp) add_subdirectory(autolabor) #dfhack_plugin(automaterial automaterial.cpp LINK_LIBRARIES lua) dfhack_plugin(automelt automelt.cpp LINK_LIBRARIES lua) -#dfhack_plugin(autonestbox autonestbox.cpp LINK_LIBRARIES lua) +dfhack_plugin(autonestbox autonestbox.cpp LINK_LIBRARIES lua) #dfhack_plugin(autotrade autotrade.cpp) dfhack_plugin(blueprint blueprint.cpp LINK_LIBRARIES lua) #dfhack_plugin(burrows burrows.cpp LINK_LIBRARIES lua)