diff options
| author | Alexander Gavrilov | 2012-09-27 10:43:42 +0400 |
|---|---|---|
| committer | Alexander Gavrilov | 2012-09-27 10:43:42 +0400 |
| commit | 164c61b6383d704a9a5cc52ed482e79ede5cd515 (patch) | |
| tree | 9f257bc1be02d6d5b03cb6bfd67cd4e0e62844bd | |
| parent | 2e5f3c46201d8450a39b52117dbd4f1544771189 (diff) | |
| download | dfhack-164c61b6383d704a9a5cc52ed482e79ede5cd515.tar.gz dfhack-164c61b6383d704a9a5cc52ed482e79ede5cd515.tar.bz2 dfhack-164c61b6383d704a9a5cc52ed482e79ede5cd515.tar.xz | |
Forbid stuff from bins in siege-engine, if forbid ammo standing order set.
| -rw-r--r-- | library/include/DataDefs.h | 3 | ||||
| -rw-r--r-- | plugins/siege-engine.cpp | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/library/include/DataDefs.h b/library/include/DataDefs.h index 61d5dec4..0966c7f3 100644 --- a/library/include/DataDefs.h +++ b/library/include/DataDefs.h @@ -707,6 +707,9 @@ namespace DFHack { // Global object pointers #include "df/global_objects.h" +#define DF_GLOBAL_VALUE(name,defval) (df::global::name ? *df::global::name : defval) +#define DF_GLOBAL_FIELD(name,fname,defval) (df::global::name ? df::global::name->fname : defval) + // A couple of headers that have to be included at once #include "df/coord2d.h" #include "df/coord.h" diff --git a/plugins/siege-engine.cpp b/plugins/siege-engine.cpp index 2e362afe..7c880351 100644 --- a/plugins/siege-engine.cpp +++ b/plugins/siege-engine.cpp @@ -1573,6 +1573,8 @@ struct projectile_hook : df::proj_itemst { if (next_pos.z == cur_pos.z && !isPassableTile(next_pos)) start_z = 49000; + bool forbid_ammo = DF_GLOBAL_VALUE(standing_orders_forbid_used_ammo, false); + MapExtras::MapCache mc; std::vector<df::item*> contents; Items::getContainedItems(item, &contents); @@ -1581,6 +1583,9 @@ struct projectile_hook : df::proj_itemst { { auto child = contents[i]; + if (forbid_ammo) + child->flags.bits.forbid = true; + // Liquids are vaporized so that they cover nearby units if (child->isLiquid()) { |
