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

