diff options
| author | Alexander Gavrilov | 2012-09-14 18:49:02 +0400 |
|---|---|---|
| committer | Alexander Gavrilov | 2012-09-14 18:49:02 +0400 |
| commit | 24772f4dbcfcfbf0ac3d29f72d3bda19566d8530 (patch) | |
| tree | e31e06906af5a071525f69165567ea3fe232c24f /library/modules | |
| parent | 68bfc63b7d0804ac5229623480e47f297783f502 (diff) | |
| download | dfhack-24772f4dbcfcfbf0ac3d29f72d3bda19566d8530.tar.gz dfhack-24772f4dbcfcfbf0ac3d29f72d3bda19566d8530.tar.bz2 dfhack-24772f4dbcfcfbf0ac3d29f72d3bda19566d8530.tar.xz | |
Add an api function for destroying items.
Diffstat (limited to 'library/modules')
| -rw-r--r-- | library/modules/Items.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index 751797f0..b8c697a4 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -730,6 +730,18 @@ static bool detachItem(MapExtras::MapCache &mc, df::item *item) item->flags.bits.in_inventory = false; return true; } + else if (item->flags.bits.removed) + { + item->flags.bits.removed = false; + + if (item->flags.bits.garbage_collect) + { + item->flags.bits.garbage_collect = false; + item->categorize(true); + } + + return true; + } else return false; } @@ -871,6 +883,26 @@ bool DFHack::Items::moveToInventory( return true; } +bool Items::remove(MapExtras::MapCache &mc, df::item *item, bool no_uncat) +{ + CHECK_NULL_POINTER(item); + + auto pos = getPosition(item); + + if (!detachItem(mc, item)) + return false; + + if (pos.isValid()) + item->pos = pos; + + if (!no_uncat) + item->uncategorize(); + + item->flags.bits.removed = true; + item->flags.bits.garbage_collect = !no_uncat; + return true; +} + df::proj_itemst *Items::makeProjectile(MapExtras::MapCache &mc, df::item *item) { CHECK_NULL_POINTER(item); |
