SubFromProp()
=========

FUNKTION
--------

public varargs int SubFromProp(string propname, <int|float|string|mixed*|mapping|bytes> subtrahend)

DEFINIERT IN
------------

     /std/thing/properties.c
     /sys/thing/properties.h (Prototyp)

ARGUMENTE
---------

  - propname: Die Property, die veraendert wird
  - subtrahend: Was auf den aktuellen Wert "substrahiert" werden soll

BESCHREIBUNG
------------

  Die Funktion ruft den aktuellen Wert der Property mittels QueryProp() ab, "subtrahiert" <subtrahend> davon und setzt den neuen Wert mit SetProp() wieder. Damit ist sie einfach eine Abkuerzung fuer SetProp(pname, QueryProp(pname) - subtrahend).

  Erlaubte Typen fuer <subtrahend> sind nur solche, mit denen +- etwas anfangen kann und welche zum aktuellen Wert der Property passen. Alles andere loest ggf. einen (Laufzeit-)Fehler auf.

RUeCKGABEWERT
-------------

     Der Wert der Property nach der Aenderung.

BEISPIELE
---------

     // einen Int subtrahieren
     SubFromProp(P_WC, 42);
     // alle entsprechenden Elemente aus einem Array in der Property loeschen
     // Achtung: erzeugt ein neues Array!
     SubFromProp(P_WAITFOR, ({"zesstra"}));
     // Ein Mappingkey aus einem Mapping in einer Property loeschen
     SubFromProp(P_M_HEALTH_MOD, ([P_HP]))

SIEHE AUCH
----------

     :doc:`QueryProp`, :doc:`AddProp`
     Konzept: properties, /std/thing/properties.c

19.06.2025, Zesstra
