
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
