AddResistanceModifier()

FUNKTION:
     varargs int AddResistanceModifier(mapping mod, string add)

DEFINIERT IN:
     /std/living/combat.c

ARGUMENTE:
     mapping mod:
      Mapping mit Schadensarten und ihrem Resistenzmodifikator (der im Bereich
      von -1.0 bis +x liegen kann), z.B. ([DT_FIRE:-1.0]) (Totalresistenz).
     string add:
      Ein Identifikator fuer _diesen_ Eintrag des setzenden Objektes.

BESCHREIBUNG:
     Es werden Resistenzen in dem Objekt gesetzt, die solange bestehen, wie
     das setzende Objekt existiert, oder nicht RemoveResistanceModifier
     (mit eventuellem Schluessel add) aufgerufen wird. Zusaetzliche Resistenzen
     werden eingerechnet.

BEMERKUNGEN:
     Fuer Ruestungen kann und sollte man P_RESISTANCE_STRENGTHS verwenden.

BEISPIELE:
     // Oel mit vervierfachtem Feuerschaden
     int add_action() {
      ...
      write(break_string("Du schuettest das Oel ueber "+
			 npc->name(WEN)+".",78));
      ...
      npc->AddResistanceModifier(([DT_FIRE:3.0]), "oel");
      SetProp(P_INVIS,1);
      SetProp(P_EXTRA_LOOK, "Ueberall tropft Oel herunter.\n");
      move(npc,M_NOCHECK);
      ...
     }

RUeCKGABEWERT:
     1 fuer Erfolg

SIEHE AUCH:
     Modifikatoren:	RemoveResistanceModifier(), 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
