STANDARDOBJEKT FUER RUESTUNGEN
ueberarbeitet von Yantro am 07.05.1996
ergaenzt von Mohammed am 12.09.1996
ueberarbeitet von Sunrise am 17.08.2002
ueberarbeitet von Fuchur am 5.7.2003
BENUTZUNG
inherit "std/armour";
#include <combat.h>
#include <properties.h>
BESCHREIBUNG
Basisklasse fuer alle Ruestungen im Spiel. Sie ist von /std/thing
abgeleitet und enthaelt alle zusaetzliche Funktionalitaeten
fuer den Kampf.
PROPERTIES:
P_AC
Ruestungsklasse der Ruestung, bestimmt den Schutz, den
eine Ruestung bietet. Hierbei sind bei der P_AC die
Grenzen einzuhalten, die in der Hilfe zu waffen_ruestungen
festgelegt sind.
P_ARMOUR_TYPE
Ruestungstyp der Ruestung. Momentan gibt es folgende
Typen (definiert in /sys/combat.h):
AT_ARMOUR, AT_HELMET, AT_AMULET, AT_RING, AT_GLOVE,
AT_CLOAK, AT_BOOT, AT_SHIELD, AT_TROUSERS, AT_GLASSES, AT_MISC,
AT_GIRDLE, AT_TIARA.
P_NR_HANDS
Ist nur bei Schilden interessant. Standardmaessig ist jeder
Schild einhaendig. Durch setzen der Propertie kann man auch
zweihaendige Schilde schaffen. Dabei ist die Logik jedoch
nicht aus den Augen zu verlieren!
P_DAM_TYPE
Besitzt die Ruestung eine ArmourHitFunc() kann hierin festgelegt
werden, was die Ruestung beim Angreifen fuer einen Schaden macht.
P_ARMOUR_DEFEND
Enthaelt das Objekt, in dem die Funktion DefendFunc() definiert
wird. DefendFunc() bekommt die selben Parameter wie Defend()
uebergeben und gibt selber einen Integer-Wert zurueck, der zum
aktuellen Schutz addiert wird.
P_ARMOUR_HIT
Beinhaltet das Objekt, in dem die Funktion ArmourHitFunc()
aufgerufen werden soll. Der Funktion wird der Feind des Traegers
uebergeben. Der Rueckgabewert wird zum Schaden hinzuaddiert.
P_WEAR_MSG und P_UNWEAR_MSG
Ueber diese Properties koennen die Defaultmessages, die
beim Anziehen und Ausziehen einer Ruestung an den Spieler
und an den Raum ausgegeben werden, ueberschrieben werden.
Es ist nicht moeglich, eine oder beide Messages ganz zu
unterdruecken!
P_ARMOUR_RESTRICTIONS
Enthaelt Restriktionen fuer Spieler, die die Ruestung tragen
koennen sollen.
Bei AT_MISC ist darauf zu achten, dass hier KEINE AC
gesetzt werden darf, denn der Spieler kann von diesem
Ruestungstyp beliebig viele Objecte anziehen!
EVENTS:
ET_WEAR
Wird erzeugt, wenn eine Ruestung, die kein Schild ist,
angezogen wird.
ET_UNWEAR
Wird erzeugt, wenn eine Ruestung, die kein Schild ist,
ausgezogen wird.
ET_WIELD
Wird erzeugt, wenn ein Schild gezueckt wird.
ET_UNWEAR
Wird erzeugt, wenn ein Schild weggesteckt wird.
FUNKTIONEN:
object QueryWornBy()
Liefert das Objekt, von dem die Ruestung oder das Schild
getragen bzw. gezueckt wird.
Will man in der Ruestung eine eigene DefendFunc() oder
ArmourHitFunc(), einbauen, dann muss diese der Ruestung bekannt
gegeben werden. Dies geschieht durch das setzen der entsprechenden
Properties. Die jeweilige Funktion kann sich in einem beliebigen
Objekt befinden.
int DefendFunc(int dam, string *dam_type, int spell, object enemy)
Mit der Funktion koennen Ruestungen eine Reaktion auf einen
Angriff bewirken. Der Returnwert wird zum Schutz hinzuaddiert.
int ArmourHitFunc(object enemy)
Damit koennen Ruestungen wie Waffen wirken, also dem Feind beim
Angriff zusaetzlich Schaden zufuegen. Der Returnwert wird zum
Schaden hinzuaddiert.
WICHTIG:
Vor der Programmierung von Ruestungen sollte die Doku zu
waffen_ruestungen gelesen werden. Die Regeln darin sind
verbindlich und sollten nur in Ausnahmefaellen und mit
Absprache mit dem Erzmagier fuer Waffen/Ruestungen/Monster
ueberschritten werden.
SIEHE AUCH:
P_AC, P_ARMOUR_TYPE, P_NR_HANDS, P_DAM_TYPE, P_ARMOUR_DEFEND,
P_ARMOUR_HIT, P_WEAR_MSG, P_UNWEAR_MSG, P_ARMOUR_RESTRICTIONS,
ET_WEAR, ET_UNWEAR, ET_WIELD, ET_UNWEAR,
QueryWornBy(L), DefendFunc(L), ArmourHitFunc(L)
waffen_ruestungen(WL)
|