Aufraeumen: keine Zerstoerung von Leichen oder Haufen
Verhindert die Zerstoerung von Leichen+Haufen in einem Container
im reset() des Containers. Dies machen Container, um Muell zu
reduzieren. Es ist aber nur dann sinnvoll, wenn nach dem Zerstoeren
nicht mehr Muell rumliegt als vorher. Daher wird es verhindert, wenn
Haufen/Leichen mehr als ein Objekt enthalten.
Weiterhin raeumen sich Piles und Leichen im Lauf der Zeit selber auf
bzw. vereinigen sich, d.h. der Container muss sich nicht darum kuemmern.
Change-Id: I202195daf7b7e84a071a59687b3b362ff8f61129
diff --git a/std/corpse.c b/std/corpse.c
index 8e4d8ae..db70f74 100644
--- a/std/corpse.c
+++ b/std/corpse.c
@@ -725,3 +725,19 @@
filter_objects( inv, "move", p, M_SILENT | M_NOCHECK );
p->move( environment(), M_SILENT | M_NOCHECK );
}
+
+// Verhindert die Zerstoerung im reset() von Containern, die mit
+// remove_multiple() nach identischen Objekten suchen, um Muell zu
+// reduzieren. Das ist aber nur dann sinnvoll, wenn nach dem Zerstoeren
+// nicht mehr Muell rumliegt als vorher, daher geben wir 0 zurueck, wenn
+// die Leiche mehr als ein Objekt enthaelt. Weiterhin raeumt sich die Leiche
+// im Lauf der Zeit selber auf/weg.
+// Objekte, die 0 zurueckgeben, werden in remove_multiple() uebersprungen.
+public string description_id()
+{
+ if ( sizeof(all_inventory(this_object())) > 1 )
+ {
+ return 0;
+ }
+ return ::description_id();
+}
diff --git a/std/pile.c b/std/pile.c
index 567fd39..c201548 100644
--- a/std/pile.c
+++ b/std/pile.c
@@ -122,3 +122,18 @@
}
+// Verhindert die Zerstoerung im reset() von Containern, die mit
+// remove_multiple() nach identischen Objekten suchen, um Muell zu
+// reduzieren. Das ist aber nur dann sinnvoll, wenn nach dem Zerstoeren
+// nicht mehr Muell rumliegt als vorher, daher geben wir 0 zurueck, wenn
+// der Haufen mehr als ein Objekt enthaelt. Weiterhin raeumt sich der Pile
+// im Lauf der Zeit selber auf/weg.
+// Objekte, die 0 zurueckgeben, werden in remove_multiple() uebersprungen.
+public string description_id()
+{
+ if ( sizeof(all_inventory(this_object())) > 1 )
+ {
+ return 0;
+ }
+ return ::description_id();
+}