Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//props/P_RESISTANCE_STRENGTHS

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


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.