
is_class_member()
*****************


FUNKTION
========

   int is_class_member(string|string* class);


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

   /std/thing/description.c


ARGUMENTE
=========

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


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

   Es wird getestet, ob das Objekt in eine der in class angegebenen
   Klassen faellt. In diesen Test werden die folgenden Eigenschaften des
   Objektes einbezogen:

     1. Die Rasse des Objektes (bei Lebewesen),
     2. die IDs des Objektes und
     3. die explizit angegebenen Klassen des Objektes.
     4. einigen impliziten Klassen, die sich aus den Klassen in 3 ergeben.

   Die moeglichen Klassen sind in /sys/class.h definiert. Momentan stehen
   folgende Klassen zur Verfuegung:

   CL_AMMUNITION
        Das Objekt eignet sich als Munition.
   CL_ANIMAL
        Das Objekt ist ein Tier.
   CL_ARACHNID
        Das Objekt in ein Spinnenwesen.
   CL_BIGBANG
        Dieses Objekt kann mehreren Lebewesen auf einmal Schaden zufuegen.
   CL_BIRD
        Ein Vogel.
   CL_CRAWLING
        Dieses Wesen bewegt sich kriechend.
   CL_CURSE
        Das Objekt ist ein Fluch (zB. ein Sprachfluch).
   CL_DEMON
        Bei dem Objekt handelt es sich um einen Daemon.
   CL_DISEASE
        Eine Krankheit.
   CL_DRAGON
        Ein Drache.
   CL_DWARF
        Fuer unsere kleinen Gaeste...
   CL_ELF
        Elfen aller Art.
   CL_ELEMENTAL
        Ein Elementar irgendeiner Art. Material setzen waere angebracht.
   CL_EXPLOSIVE
        Bei dem Objekt handelt es sich um einen Sprengstoff.
   CL_FELINE
        Felinen und andere katzenartigen Lebewesen.
   CL_FISH
        Fische - keine Meeressaeuger!
   CL_FLYING
        Dieses Wesen bewegt sich fliegend.
   CL_FROG
        Froesche - auch gefroschte Spieler.
   CL_GHOST
        Geister und geisterhafte Wesen.
   CL_GHOUL
        Ein Ghoul. Er faellt automatisch in die Klasse CL_UNDEAD.
   CL_GIANT
        Ein riesiges Lebewesen.
   CL_GNOME
        Ein Gnom.
   CL_GOBLIN
        Ein Goblin.
   CL_HOBBIT
        Ein Hobbit.
   CL_HOBGOBLIN
        Ein Hobgoblin. Er faellt automatisch auch in die Klasse CL_GOBLIN.
   CL_HUMAN
        Ein Mensch.
   CL_INORGANIC
        Anorganische Lebewesen wie Metallmonster
   CL_INSECT
        Insekten (Nicht mit Spinnen verwechseln)
   CL_LIVING
        Lebewesen im allgemeinen.
   CL_MAMMAL
        Saeugetiere.
   CL_MAMMAL_LAND
        Landsaeugetiere
   CL_MAMMAL_WATER
        Meeressaeuger.
   CL_ORC
        Ein Ork.
   CL_PLANT
        Pflanzen und pflanzenartige Monster.
   CL_POISON
        Das Objekt ist selbst ein Gift
   CL_POISONOUS
        Das Objekt kann einen Spieler/NPC vergiften.
   CL_REPTILE
        Reptilien.
   CL_SHADOW
        Schattenwesen.
   CL_SKELETON
        Ein Skelett. Es faellt automatisch in die Klasse CL_UNDEAD.
   CL_SLIME
        Fuer Einzeller und aehnliches Schleimgetier
   CL_SNAKE
        Schlangen.
   CL_SWIMMING
        Dieses Wesen bewegt sich schwimmend.
   CL_TROLL
        Ein Troll.
   CL_UNDEAD
        Ein untotes Lebewesen.
   CL_WALKING
        Dieses Wesen bewegt sich gehend.
   CL_VAMPIRE
        Ein Vampir. Er faellt automatisch in die Klasse CL_UNDEAD.
   CL_ZOMBIE
        Ein Zombie. Er faellt automatisch in die Klasse CL_UNDEAD.

   Implizite Klassen:
   Bei einigen Klassen wird im AddClass() automatisch eine oder mehrere
   weiterer Klassen hinzugefuegt und im RemoveClass() die entsprechenden
   impliziten Klassen auch automatisch entfernt.
   Wuenscht man diese impliziten Klassen nicht, muss man nach dem AddClass()
   diese mittels eines entsprechenden RemoveClass() entfernen.
   Die impliziten Klassen einer Klasse lassen sich mit Hilfe der Funktion
   QueryImplicitClasses() in CLASSDB herausfinden:
     CLASSDB->QueryImplicitClasses(...)
   Momentan sind dies:
   CL_ZOMBIE:       CL_UNDEAD
   CL_SKELETON:     CL_UNDEAD
   CL_GHOUL:        CL_UNDEAD
   CL_VAMPIRE:      CL_UNDEAD
   CL_HOBGOBLIN:    CL_GOBLIN
   CL_MAMMAL_LAND:  CL_MAMMAL, CL_ANIMAL
   CL_MAMMAL_WATER: CL_MAMMAL, CL_ANIMAL
   CL_SNAKE:        CL_REPTILE
   CL_ARACHNID:     CL_ANIMAL
   CL_BIRD:         CL_ANIMAL
   CL_FISH:         CL_ANIMAL
   CL_FROG:         CL_ANIMAL
   CL_INSECT:       CL_ANIMAL
   CL_MAMMAL:       CL_ANIMAL
   CL_REPTILE:      CL_ANIMAL
   CL_SNAKE:        CL_ANIMAL


RUeCKGABEWERT
=============

   1, wenn das Objekt in eine der angegebenen Klassen faellt, ansonsten 0.


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

   AddClass(), RemoveClass(), /std/thing/description.c
   P_CLASS

20.01.2015, Zesstra
