blob: 50e4be518b629a213c66f8b3d122fb6ffc97887b [file] [log] [blame]
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