From f3297740595fa143ae0a1cc4afaaf56ff0afd7d1 Mon Sep 17 00:00:00 2001 From: PatrikLundell Date: Thu, 7 Jun 2018 19:10:14 +0200 Subject: [PATCH 1/2] dead & killed flag separation squashed 4 commits from #1297 --- library/LuaApi.cpp | 3 +++ library/include/modules/Units.h | 3 +++ library/modules/Units.cpp | 25 +++++++++++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index 292db698c..e735eeb4b 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -1633,6 +1633,9 @@ static const LuaWrapper::FunctionReg dfhack_units_module[] = { WRAPM(Units, isGay), WRAPM(Units, isNaked), WRAPM(Units, isUndead), + WRAPM(Units, isGhost), + WRAPM(Units, isActive), + WRAPM(Units, isKilled), WRAPM(Units, isGelded), WRAPM(Units, isDomesticated), WRAPM(Units, getMainSocialActivity), diff --git a/library/include/modules/Units.h b/library/include/modules/Units.h index 7394c5300..b6aa78bad 100644 --- a/library/include/modules/Units.h +++ b/library/include/modules/Units.h @@ -146,6 +146,9 @@ DFHACK_EXPORT bool isTrained(df::unit* unit); DFHACK_EXPORT bool isGay(df::unit* unit); DFHACK_EXPORT bool isNaked(df::unit* unit); DFHACK_EXPORT bool isUndead(df::unit* unit); +DFHACK_EXPORT bool isGhost(df::unit *unit); +DFHACK_EXPORT bool isActive(df::unit *unit); +DFHACK_EXPORT bool isKilled(df::unit *unit); DFHACK_EXPORT bool isGelded(df::unit* unit); DFHACK_EXPORT bool isDomesticated(df::unit* unit); diff --git a/library/modules/Units.cpp b/library/modules/Units.cpp index 41e9f2eba..83b7a9283 100644 --- a/library/modules/Units.cpp +++ b/library/modules/Units.cpp @@ -388,7 +388,7 @@ bool Units::isDead(df::unit *unit) { CHECK_NULL_POINTER(unit); - return unit->flags1.bits.dead || + return unit->flags2.bits.killed || unit->flags3.bits.ghostly; } @@ -396,7 +396,7 @@ bool Units::isAlive(df::unit *unit) { CHECK_NULL_POINTER(unit); - return !unit->flags1.bits.dead && + return !unit->flags2.bits.killed && !unit->flags3.bits.ghostly && !unit->curse.add_tags1.bits.NOT_LIVING; } @@ -1568,6 +1568,27 @@ bool Units::isUndead(df::unit* unit) && !unit->curse.add_tags1.bits.BLOODSUCKER )); } +bool Units::isGhost(df::unit *unit) +{ + CHECK_NULL_POINTER(unit); + + return !unit->flags3.bits.ghostly; +} + +bool Units::isActive(df::unit *unit) +{ + CHECK_NULL_POINTER(unit); + + return !unit->flags1.bits.dead; +} + +bool Units::isKilled(df::unit *unit) +{ + CHECK_NULL_POINTER(unit); + + return unit->flags2.bits.killed; +} + bool Units::isGelded(df::unit* unit) { CHECK_NULL_POINTER(unit); From 51584c2d9e630cb957a8a943a2cfaed0b418dee6 Mon Sep 17 00:00:00 2001 From: PatrikLundell Date: Wed, 13 Jun 2018 17:28:57 +0200 Subject: [PATCH 2/2] Corrected isGhost --- library/modules/Units.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/modules/Units.cpp b/library/modules/Units.cpp index 83b7a9283..e8c7cfa88 100644 --- a/library/modules/Units.cpp +++ b/library/modules/Units.cpp @@ -1572,7 +1572,7 @@ bool Units::isGhost(df::unit *unit) { CHECK_NULL_POINTER(unit); - return !unit->flags3.bits.ghostly; + return unit->flags3.bits.ghostly; } bool Units::isActive(df::unit *unit)