kaempferboni
************

Kaempferboni und deren Implementation

======================================================================

Bei den Kaempfern gibt es einige Properties, die, in Waffen oder
Ruestungen gesetzt, der Kampfverlauf eines Spielers erheblich
beeinflussen koennen.

Zu beachten ist, dass die Abnahme von Waffen oder Ruestungen mit
Kaempferboni allein der Balance obliegt. Der Gildenmagier der Kaempfer
steht aber gerne mit Rat und Tat zur Seite.

Abschnitt A

In Waffen koennen nachfolgende, in /p/kaempfer/kaempfer.h definierten,
Properties gesetzt werden. Die meisten davon fungieren als 'Boni' und
werden dem Spieler auch mittels 'schaetz <waffe>' angezeigt

1 Waffenschlagbonus - K_BRAWLING_WC (INT) - "k_brawling_wc"

   Wenn die Waffe eine zusaetzlich gefaehrliche Stelle besitzt - z.B.
   einen harten Dorn am Stielende, eine Spitze am Ruecken einer
   Axtklinge, Zacken am Dolchgriff - kann man der Waffe einen
   Waffenschlagbonus geben. Dies bedeutet, dass der Waffenschlag um
   ein paar Prozente verstaerkt wird, da der Spieler natuerlich
   versucht, immer genau mit diesem 'feature' den Waffenschlag
   auszufuehren (der Waffenschlag ist kurz gesagt ein unerwarteter
   Schlag, der nicht mit dem 'normalen' Waffenende ausgefuehrt wird,
   der Gegner wird dadurch ueberrascht -> mehr Schaden). Da solch ein
   'feature' doch recht auffaellig ist, sollte es in der
   Langbeschreibung der Waffe auf jeden Fall erwaehnt werden.

   Interessant zu wissen waere noch, dass Zweihandwaffen einen
   generellen zusaetzlichen Bonus auf den Waffenschlag bekommen und
   dass es eine Abstufung gibt, nach der die Waffengattungen die Hoehe
   des Basiswertes gesetzt bekommen, wobei Speere den hoechsten und
   Messer den niedrigsten besitzen

   Speere - Kampfstaebe - Aexte - Keulen - Schwerter - Messer

   Der max. Bonus fuer diese Property betraegt 30, wobei 1-10 ->
   geringer Bonus, 11-20 -> guter Bonus, 21-30 -> sehr guter Bonus.

   Bitte beachten ein Zweihand-Speer mit max. P_WC und max.
   K_BRAWLING_WC haut entsprechend gut rein und sollte nur schwer zu
   ergattern sein, bzw. noch andere Auflagen haben (ggf. unique,
   personalisiert, etc.)

2 Waffenschlagschaden - K_BRAWLING_DT (STRING) - "k_brawling_dt"

   Wenn die Waffe, mit der der Kaempfer einen Waffenschlag ausfuehrt,
   ein 'feature' hat, mit dem er diesen Schlag ausfuehrt, kann dieses
   'feature' einen anderen Waffenschlagschaden besitzen. Z.B. kann ein
   Schwert, welches normalerweise DT_SLASH macht, besonders lange und
   spitze Parierstangen besitzen, die vielleicht auch noch vergiftet
   sind. Dann kann der Magier ({DT_PIERCE,DT_POISON}) setzen, so dass
   beim Waffenschlag immer ein Mischschaden aus Stiche und Gift
   erfolgt.

3 Waffenschlagsmeldung - K_BRAWLING_MSG (STRING/STRING*) -
k_brawling_msg"

   In diese Property kann man hineinschreiben, mit welchem Teil der
   Waffe der Waffenschlag ausgefuehrt wird. Angenommen, es bietet sich
   an, mit einer Waffe stets den Waffenschlag mit einem grossen Knauf
   am Griff auszufuehren, wird schlicht und einfach "mit einem grossen
   Knauf am Griff der Schlachtaxt" in die Property gesetzt. Sollte
   sich bei der Programmierung ergeben, dass es sich anbietet, der
   Waffe mehr als nur eine guenstige Stelle anzudichten mit der man
   den Waffenschlag ausfuehren kann, so setzt man ein Array, z.B.
   ({"mit einem grossen Knauf am Griff der Schlachtaxt","mit der
   breiten Seite der " "Schlachtaxtklinge"}). Insgesamt ist darauf zu
   achten, dass die Meldungen 'vollstandig' sind. Das Array kann
   beliebige Groesse annehmen, es wird dann zufaellig eine Meldung
   beim Schlag ausgesucht.

   Es empfiehlt sich, jede Waffe mit dieser Property zu schmuecken,
   die K_BRAWLING_WC gesetzt haben, da die Waffenschlagmeldungen damit
   im Kampf 'individualisiert' werden. In der Praxis wird es jedoch
   daran scheitern, dass es viel zu viele alte Waffen gibt, die keiner
   mehr anfassen moechte. Daher wird auf Standardmeldungen
   zurueckgegriffen, sollte diese Property nicht gesetzt sein.

4 Waffenbruchbonus - K_WEAPON_SHATTER (INT) - "k_weapon_shatter"

   Waffen, die besonders fuer den Waffenbruch konstruiert wurden,
   koennen einen Bonus einbringen, der in dieser Property angegeben
   wird. Natuerlich eignen sich die verschiedenen Waffentypen wieder
   unterschiedlich gut fuer einen Waffenbruch Keulen (meist aufgrund
   ihres Gewichts) am besten, Messer am schlechtesten, alle anderen
   dazwischen (Axt - Schwert - Stab - Speer). Dabei kriegen alle
   Waffen, die u.a. Schlagschaden verursachen, nochmal einen kleinen
   Bonus obendrauf.

   Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 ->
   geringer Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.

   Bei gut gelungenem Waffenbruch wird die Waffe des Gegners
   beschaedigt, wenn die Technik sehr gut gelingt, kann es auch sein,
   dass dem Gegner die Waffe aus der Hand geschlagen wird (der Spieler
   kann sie allerdings nicht aufheben und der NPC zueckt sie nach ein
   paar Kampfrunden wieder).

5 Bonus fuer Finte/Waffentrick - K_DISTRACTING_WEAPON (INT) -
   "k_distracting_weapon"

   Waffen, die fuer den Gegner aufgrund ihrer Bauweise besonders
   irritierend sein koennen, koennen einen Bonus fuer Finte und
   Waffentrick haben. Dabei wird der Gegner bei einer Finte bzw. einem
   Waffentrick NOCH mehr verwirrt, als er es ohnehin schon nur durch
   die angewandte Technik wird. Ein gutes Beispiel hierfuer ist z.B.
   der Kriegshamster ein Hamster, der auf einem Holzstab aufgespiesst
   ist, sollte fuer den Gegner schon SEHR irritierend sein ;). Die
   Waffengattung hat nur wenig Einfluss auf Finte/Waffentrick.

   Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 ->
   geringer Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.

6 Todesstossbonus - K_CRITICAL_HIT (INT) - "k_critical_hit"

   Man stelle sich eine Waffe mit besonders spitzer, langer Klinge vor
   oder eine magische Waffe, die dem geschwaechten Gegner die Seele
   entreisst. Diese Eigenschaften verleihen dem Spieler beim
   Todesstoss einen entsprechenden Bonus von bis zu 100%.

   Es ist moeglich, dass ein und dasselbe 'feature' sowohl dem
   Waffenschlag als auch dem Todesstoss den Bonus stellt, z.B. zwei
   Hiebklingen auf dem Klingenruecken einer grossen Axt. Auch dies
   sollte man deutlich aus der Langbeschreibung herauslesen koennen.

   Der max. Bonus fuer diese Property betraegt 100, wobei 100 eine
   Verdopplung der P_WC beim Todesstoss bedeutet! Ansonsten bedeutet
   1-20 -> geringer Bonus, 21-60 -> guter Bonus, 61-100 -> sehr guter
   Bonus.

7 Waffenwurfbonus - K_THROWING_WEAPON (INT) - "k_throwing_weapon"

   Wenn eine Waffe besonders gut zum Werfen geeignet ist, z.B. ein
   Wurfdolch, dann kann diese Property gesetzt werden. Natuerlich ist
   der Grundwert wieder von der Waffengattung abhaengig. Es gilt, dass
   man Messer und Speere grundsaetzlich am besten werfen - und dabei
   gut Schaden machen - kann, am schlechtesten schneiden Keulen und
   Kampfstaebe ab.

   Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 ->
   geringer Bonus, 21-40 -> guter Bonus, 31-50 -> sehr guter Bonus.

   Zu beachten ist hierbei, dass ein sehr hoher Bonus nur bei Waffen
   mit etwas geringerer P_WC vergeben werden sollte. Ein reines
   Wurfmesser ist nunmal im normalen Kampf nicht die gefaehrlichste
   aller Waffen (speziell ausbalanciert, keinen richtigen Griff,
   etc.). Natuerlich kann es einen Wurfspeer mit max. P_WC und sehr
   hohem Waffenwurfbonus geben, allerdings mit den ueblich hohen
   Restriktionen.

8 KO-Schlag-Bonus - K_KO (INT) - "k_ko"

   Waffen, die besonders fuer einen KO-Schlag geeignet sind, koennen
   einen Bonus mit dieser Property bekommen. Eine entsprechende Waffe
   koennte z.B. ein lederumwickelter Pruegel sein, denn man will den
   Gegner ja nur KO schlagen und nicht gleich toeten.

   Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 ->
   geringer Bonus, 21-30 -> guter Bonus, 31-50 -> sehr guter Bonus.

9 Kein Waffenschaerfen - K_NO_HONING (INT) - "k_no_honing"

   Wenn eine Waffe aus irgendeinem Grund nicht geschaerft werden kann
   oder darf, muss man diese Property auf 1 setzen. Eine Erklaerung
   dafuer sollte in der P_LONG bzw. P_INFO erfolgen.

Abschnitt B

Die beiden Properties, P_EFFECTIVE_AC und P_EFFECTIVE_WC, welche in
<combat.h> definiert sind, sind eigentlich nur dazu da, um Ruestungen
und Waffen, die eine DefendFunc() bzw. HitFunc() besitzen, korrekt vom
Spieler einschaetzen lassen zu koennnen.

Das Kaempferspellbook verwendet diese Properties darueberhinaus wie
folgt

1 Schutzboni in Waffen - P_EFFECTIVE_AC (INT) - "effective_ac"

   Ist diese Property in einer Waffe gesetzt, geht das
   Kaempferspellbook davon aus, dass diese Waffe mehr oder weniger die
   Faehigkeit besitzt, auch wie eine Ruestung schuetzen zu koennen. Da
   man eine Waffe aber nicht anziehen, sondern nur vor sich hertragen
   kann, kann auch der max. Ruestungsschutz einer Waffe nur gleich dem
   max. Ruestungsschutz eines Schildes entsprechen. Eine gesetzte
   P_EFFECTIVE_AC in einer Waffe wird dem Spieler als mehr oder
   weniger gute 'Paradewaffe' im 'schaetz' angezeigt und geht sowohl
   bei der Waffenparade als auch beim Block als Bonus mit ein.

   Z.B. koennte ein leichtes Schwert, was aufgrund seiner Bauweise
   mehr fuer den defensiven Kampf ausgelegt ist (extralange
   Parierstangen, verstaerkter Handschutz im Griffbereich, ...) wie
   ein maessiges Schild wirken. Die Vorteile liegen auf der Hand der
   Spieler bekommt verstaerkten Schutz, kann aber weiterhin eine
   Zweihandwaffe fuehren.

   Der max. Bonus fuer diese Property betraegt 40, wobei 1-20 ->
   geringer Bonus, 21-30 -> guter Bonus, 31-40 -> sehr guter Bonus.

   Zu beachten ist hier, dass sehr gute Parierwaffen mit
   P_EFFECTIVE_AC > 30 moeglichst deutlich unter der max. WC liegen
   sollten.

   Anmerkungen Eine gesetzte P_EFFECTIVE_AC in einem Schild kann den
   Bonus fuer die Schildparade nach oben oder unten beeinflussen.
   Moechte man ein Schild herstellen, welches speziell bei der
   Schildparade der Kaempfer besser als 'normal' schuetzt, sollte man
   hier einen Wert eintragen, der deutlich groesser als die P_AC des
   Schildes ist.

   Eine gesetzte P_EFFECTIVE_AC in einer anderen Ruestung hat nur den
   Nutzen, auf deren erhoehten (und nicht sofort sichtbaren)
   Verteidigungswert hinzuweisen, der durch eine DefendFunc()
   realisiert wird.

2 Angriffsboni in Ruestungen - P_EFFECTIVE_WC (INT) - "effective_wc"

   Fuer die Kaempfer koennen folgende Ruestungstypen modifiziert
   werden AT_TROUSERS (Hosen), AT_HELMET (Kopfbedeckung), AT_BOOT
   (Fusskleidung), AT_ARMOUR (Koerperruestung), AT_SHIELD (Schilde).
   Ist in einer dieser Typen P_EFFECTIVE_WC gesetzt, so macht diese
   Ruestung bei einem Angriff mit einer Spezialattacke (Kniestoss,
   Kopfstoss, Fusstritt, Ellbogenschlag und Schildstoss) entsprechend
   mehr bzw. weniger Schaden als ohne diese Property. Eine
   entsprechende Begruendung fuer eine Verstaerkung oder Schwaechung
   sollte auch hier fuer den Spieler offensichtlich sein (Dornen am
   Schild, verstaerkter Kniebereich, Zacken am Helm, etc.).

   Wenn man der Ruestung einen Bonus geben moechte, muss man darauf
   achten, dass P_EFFECTIVE_WC hoeher ist als die P_AC der Ruestung!
   Sollte P_EFFECTIVE_WC niedriger als P_AC sein, wird dennoch
   P_EFFECTIVE_WC als Angriffswert genommen. Dies stellt natuerlich
   eine Schwaechung der Spezialattacke dar. Moeglicherweise ist aber
   genau das gewollt, wenn eine Ruestung, die sehr gut schuetzt, nur
   geringen Kaempferbonus aufweisen soll.

   Beispiel ein Schild aus Hartgummi kann recht gut Schlaege aller Art
   abfangen (-> P_AC 35). Will der Kaempfer jedoch einen Schildstoss
   damit machen, fehlt ihm aufgrund der Beschaffenheit die Wucht, eher
   daempft es den Schildstoss noch ein wenig (-> P_EFFECTIVE_WC 25).

   Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der
   jeweils doppelte maximale P_AC-Wert (s. 'man ruestungen').

   Die Angabe eines Schadenstyps (P_DAM_TYPE) in einer Ruestung kann
   dann sinnvoll sein, wenn bei der Spezialattacke ein spezieller
   Schaden gemacht werden soll. Beispielsweise sollten Flammenstiefel
   logischerweise DT_FIRE und DT_BLUDGEON oder DT_PIERCE bei einem
   Kampftritt verursachen. Es MUSS (logischerweise) mindestens ein
   physikalischer Schadenstyp enthalten sein. Wird kein Schadenstyp
   angegeben, wird auf Standardtypen zurueckgegriffen.


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

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

26.10.2012, Gabylon
