AddClass()
**********


FUNKTION
========

   void AddClass(string|string* class);


DEFINIERT IN
============

   /std/thing/description.c


ARGUMENTE
=========

   string/string* class       - String oder Stringarray der Klasse(n)


BESCHREIBUNG
============

   Dem Objekt werden weitere Klassifizierungen hinzugefuegt.

   Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.


BEMERKUNGEN
===========

   Vor dem 7. Nov 2012 pruefte is_class_member() auch die P_IDS. Damit war
   zB ein AddId("daemon") gleichbedeutend einem AddClass(CL_DEMON).

   Bitte prueft eure Objekte (NPCs, Krankheiten, Gifte, ...) auf korrekte
   Klassifizierung.


SIEHE AUCH
==========

   RemoveClass(), is_class_member()
   P_CLASS

20.01.2015, Zesstra
