
P_RESISTANCE_STRENGTHS
**********************


NAME
====

   P_RESISTANCE_STRENGTHS     "resistance_strengths"


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

   /sys/living/combat.h


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

   Lebewesen:

   Mapping mit Schadensarten, gegen die das Lebewesen resistent oder
   anfaellig ist. Durch eine _query_method werden alle existierenden
   Resistenzen hier zusammengefasst.

   Die Staerke der Resistenz oder Anfaelligkeit wird numerisch aus-
   gedrueckt:
   - Resistenzen gehen bis von 0 bis -1.0 (absolute Resistenz)
     - -0.5 == halbierter Schaden, -0.75 == geviertelter Schaden
     -> in % des "aufgehaltenen" Schadens interpretierbar
   - Empfindlichkeiten gehen von 0 bis MAX_INT
     -  1.0 == verdoppelter Schaden, 3.0 == vervierfachter Schaden
     -> als Faktor (x+1.0) interpretierbar

   Ruestungen:

   Mapping mit Prozentwerten der Maximalwerte fuer Ruestungen des
   entsprechenden Typs. Dabei sind positive Werte Resistenzen und
   negative Empfindlichkeiten. Dabei duerfen die Prozentwerte nur
   im Bereich von +100 bis -800 (-1000 ?!) liegen.

   Bei Ruestungen ist es damit unnoetig, Resistenzen mittels
   AddResistanceModifier() im Traeger zu setzen, da dies bereits
   in /std/armour automatisch gemacht wird. Der Schluessel fuer
   den Eintrag ist dabei P_ARMOUR_TYPE.

   Die Maximalwerte sind derzeit:
    AT_CLOAK, AT_RING, AT_AMULET: max 10% Resistenz
    AT_SHIELD, AT_ARMOUR:  max 15% Resistenz
    alle anderen:   max 5% Resistenz


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

   Ruestungen:
   * die Property muss _nach_ P_ARMOUR_TYPE gesetzt werden (_set-Method)

   Lebewesen:
   * -1.0 bedeutet bereits absolute Resistenz, bei kleineren Werten werden
     die anderen Schadensanteile im Kampf u.U. nicht mehr wie gewuenscht
     bilanziert. Bitte daher drauf verzichten. ;-)
   * Aenderungen an P_RESISTANCE und P_VULNERABILITY werden direkt in
     P_RESISTANCE_STRENGTHS gespeichert:
     -> daher niemals im Nachhinein bei fremden NPCs P_RESISTANCE_STRENGTHS
        manipulieren, dafuer gibt es AddResistanceModifier
   * QueryProp(P_RESISTANCE_STRENGTHS) enthaelt die gesamten Resistenzen
     P_RESISTANCE, P_VULNERABILITY, P_RESISTANCE_MODIFIER (_query-Method)

   Die Werte in P_RESISTANCE_STRENGTHS sollten nur in Ausnahmefaellen oder
   gut begruendet den Hoechstwert haben. Ein Eiswesen kann zwar sehr
   resistent gegen Kaelteschaden sein, sollte aber zu gleichem Teil auch
   anfaellig auf Feuerschaden sein.

   Auf dieser Property liegt eine Querymethode, welche eine Kopie der
   Daten zurueckliefert.


BEISPIELE
=========

   // ein Eistroll
   SetProp(P_RESISTANCE_STRENGTHS,([DT_FIRE:0.5,DT_COLD:-0.5,
                                    DT_MAGIC:0.1]));

   Feuerangriffe werden mit 1.5 multipliziert, magische mit 1.1 und
   der Schadenswert von Kaelteangriffen wird halbiert. Zum Beispiel
   wuerde
   Defend(100, ({DT_FIRE,DT_MAGIC}), ...)
   einen Schaden von 130 statt den normalen 100 verursachen.


   // eine Eisruestung
   SetProp(P_RESISTANCE_STRENGTHS, ([DT_COLD:50, DT_FIRE:-100]));

   Dieses Kettenhemd schuetzt nun mit 50% des Maximalwertes gegen
   Kaelte (also 0.5*15%=7,5% Resistenz) und macht mit dem Maximal-
   wert anfaellig gegen Feuer (1*15%=15% Empfindlichkeit).

   ! der Code spricht zusaetzlich von
     Empfindlichkeit=(Empfindlichkeit/4)*5 -> 15/4*5=18.75% !


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

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

6.Feb 2016 Gloinson
