RemoveResistanceModifier()
==========================

FUNKTION
--------
::

     varargs void RemoveResistanceModifier(string add);

DEFINIERT IN
------------
::

     /std/living/combat.c

ARGUMENTE
---------
::

     string add:
      Ein eventueller Identifikator fuer einen gesetzten Modifikator.

BESCHREIBUNG
------------
::

     Die von einem Objekt im Zielobjekt gesetzte Resistenz wird geloescht,
     der Schluessel add wird dazu benutzt, eine bestimmte Resistenz zu
     loeschen (so kann ein setzendes Objekt mehrere verschiedene Re-
     sistenzen setzen und selektiv loeschen).

BEISPIELE
---------
::

     // unser Oel aus AddResistanceModifier() verbrennt endgueltig
     varargs void trigger_sensitive_attack() {
      ...
      if(environment() && living(environment())) {
       environment()->RemoveResistanceModifier("oel");
       tell_object(environment(),"Das Oel verbrennt endgueltig.\n");
      }
      remove();
     }

SIEHE AUCH
----------
::

     Modifikatoren:	AddResistanceModifier, P_RESISTANCE_MODIFIER
     simple Resistenz:	P_RESISTANCE, P_VULNERABILITY
     Hauptmapping:	P_RESISTANCE_STRENGTHS
     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
     anderes:		balance, /std/armour/combat.c, /std/living/combat.c

29.Apr 2002, Gloinson@MG

