P_EFFECTIVE_WC

NAME:
     P_EFFECTIVE_WC     "effective_wc"

DEFINIERT IN:
     <combat.h>

BESCHREIBUNG:
     Diese Property kommt sowohl in Waffen als auch Ruestungen, die Schaden
     machen sollen, zum Einsatz.

     Falls die Staerke einer Waffe noch durch eine HitFunc() modifiziert
     wird, sollte hier der Effektivwert der Waffenklasse vermerkt werden,
     soweit er sich angeben laesst.
     Diese Property dient vor allem dazu, eine Waffe mit HitFunc() korrekt
     einzuschaetzen.

     In einigen Gilden koennen Ruestungen auch als Waffen eingesetzt werden
     (z.B. ein Paar Schuhe zum Treten). In dieser Property kann man die
     Waffenklasse eintragen, die die Ruestung bei solchen Aktionen aufweisen
     soll. Dabei ist man an die ueblichen Beschraenkungen der Waffenklasse
     gebunden! (s. /sys/combat.h)
     Der Ruestung kann man dann auch einen Schadenstyp mit auf den Weg
     geben.

BEMERKUNGEN:
     Das Kaempferspellbook verwendet bei Ruestungen P_AC, wenn
     P_EFFECTIVE_WC nicht gesetzt ist.

BEISPIELE:
     * HitFuncs:
       Der doppelte Mittelwert der HitFunc wird zur Basis-WC dazuaddiert,
       da sich der 'Angriffswert = random(Basis-WC) + absolut(HitFunc-Wert)'
       berechnet.

     // #1 Waffe mit Basis-WC 120 und randomisierter HitFunc
        SetProp(P_WC, 120);
        SetProp(P_HIT_FUNC, this_object());
       
        int HitFunc(...) {
          return random(30);                       // Mittelwert: 15
        }
        -> SetProp(P_EFFECTIVE_WC, 150);           // 120 + 2*15 = 150
     
     // #2 Waffe mit Basis-WC 120 und teilweise absoluter HitFunc
        SetProp(P_WC, 120);
        SetProp(P_HIT_FUNC, this_object());
       
        int HitFunc(...) {
          return 30 + random(10);                  // Mittelwert: 30 + 5
        }
        -> SetProp(P_EFFECTIVE_WC, 190);           // 120 + 2*(30+5) = 190

     * Ruestungen (zB Gildennutzung):
       Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der jeweils
       doppelte maximale P_AC-Wert. Angabe eines Schadenstyps ist sinnvoll.

     // #3 Ein paar Schuhe, mit maximalem Schlag-/Saeureschaden.
        SetProp(P_ARMOUR_TYPE, AT_BOOT);
        SetProp(P_AC, 2);
        SetProp(P_DAM_TYPE, ({DT_BLUDGEON,DT_ACID}));
        -> SetProp(P_EFFECTIVE_WC, 12);  // hoechstmoeglicher Wert bei
                                         // Schuhen, da deren max. P_AC = 6
     // aequivalent und zukunftssicher:
        -> SetProp(P_EFFECTIVE_WC, 2 * VALID_ARMOUR_CLASS[AT_BOOT]);

     // #4 Ein Schild mit spitzem Dorn. (Stichschaden beim Schildstoss.)
        SetProp(P_ARMOUR_TYPE, AT_SHIELD);
        SetProp(P_AC, 5);
        SetProp(P_DAM_TYPE, ({DT_PIERCE}));
        SetProp(P_EFFECTIVE_WC, 55);

     // #5 Ein Gummischild ist schlecht fuer Angriffe. BOING!
        SetProp(P_ARMOUR_TYPE, AT_SHIELD);
        SetProp(P_AC, 30);
        SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
        SetProp(P_EFFECTIVE_WC, 10);

SIEHE AUCH:
     Waffen:     P_WC, P_TOTAL_WC, HitFunc()
     Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
     Files:      /std/weapon.c, /std/weapon/combat.c
     Balance:    waffen, ruestungen, properties, kaempferboni

6. Nov 2011 Gloinson
