AddToProp()
=========

FUNKTION
--------

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

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

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

ARGUMENTE
---------

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

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

  Die Funktion ruft den aktuellen Wert der Property mittels QueryProp() ab, addiert <summand> drauf und setzt den neuen Wert mit SetProp() wieder. Damit ist sie einfach eine Abkuerzung fuer SetProp(pname, QueryProp(pname)+ summand).

  Erlaubte Typen fuer <summand> 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 aufaddieren
     AddToProp(P_WC, 42);
     // ein Element an ein Array in der Property anhaengen
     AddToProp(P_WAITFOR, ({"zesstra"}));
     // Ein Mappingkey in ein Mapping in einer Property anhaengen (sollte der Key bereits existieren, wird dessen Wert damit ueberschrieben)
     AddToProp(P_M_HEALTH_MOD, ([P_HP:5]))

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

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

19.06.2025, Zesstra
