Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//wiz/fernkampfwaffenZusammenfassung zu Fernkampfwaffen
==================================
Schusswaffe:
============
Standardobjekt: /std/ranged_weapon.c
P_WC: gibt den Schaden im Nahkampf an (wenn man damit auf einen
Gegner einpruegelt. Default 30.
P_QUALITY: nur beim Nahkampf relevant. Default 100.
P_NR_HANDS: Boegen und Armbrueste sind in jedem Fall zweihaendig.
P_SHOOTING_WC: Die Basis-Waffenklasse der Fernwaffe.
P_RANGE: Reichweite der Waffe. Default 50.
P_STRETCH_TIME: Anzahl der Runden, die zum Laden/Spannen der Waffe
benoetigt werden. Default 1.
P_AMMUNITION: Benoetigter Munitionstyp.
Eine HitFunc wirkt sich auf die P_WC aus, nicht auf P_SHOOTING_WC!
Methoden:
static int cmd_shoot(string str);
* Befehlsauswertung und Schussvorbereitung, wird durch
AddCmd( ({"schiess", "schiesse"}), "cmd_shoot");
verknuepft
static int shoot_dam(mapping shoot);
* Schadensermittlung
static string FindRangedTarget(string str, mapping shoot);
* Gegnerermittlung
Munition:
=========
Standardobjekt: Nutzung von /std/unit ist empfohlen
P_SHOOTING_WC: legt die Munitionsstaerke fest
P_DAM_TYPE: legt die Schadensart des Schussangriffs fest
Eine HitFunc in der Munition wirkt sich auf P_SHOOTING_WC aus!
Allgemeines:
============
In der Waffe legt man ueber P_AMMUNITION fest, welche Art Munition
damit verschossen werden kann. In der Munition muss diese Munition
auch als ID gesetzt werden.
Ueber P_STRETCH_TIME legt man fest, alle wieviel Runden die
Fernkampfwaffe abgefeuert werden kann (default: 1).
Der verursachte Schaden wird aus der Staerke der Fernkampfwaffe
und der Staerke der Munition bestimmt. In beiden wird diese in der
Property P_SHOOTING_WC angegeben.
Zusaetzlich kann man in P_RANGE die Reichweite der Fernkampfwaffe
festlegen. Hat man einen Raum A, der sich innerhalb eines anderen
Raumes befindet (z.B. Transporter), so kann man mittels P_SHOOTING_AREA
dessen 'Groesse' festlegen. Mit einer Waffe, deren P_RANGE mindestens
gleich diesem Zahlenwert ist, kann aus diesem Raum heraus geschossen
werden.
Alternativ kann man in A einen anderen Raum B)in die Property
P_TARGET_AREA schreiben.
BEISPIEL:
// #1 siehe auch /doc/beispiele/fernwaffen fuer ladbaren Code
// #2 eine einfache, aber gute Schleuder
inherit "/std/ranged_weapon";
void create() {
if (!clonep(this_object())) return;
::create();
SetProp(P_SHORT, "Eine Schleuder");
SetProp(P_INFO,
"Die Syntax lautet: schleuder auf \n");
// sonstige Objektprops ...
RemoveCmd(({"schiess", "schiesse"})); // entferne Default-Kommando
AddCmd(({"schleuder", "schleudere"}), #'cmd_shoot);
SetProp(P_WC, 10); // eine Schleuder ist erstmal harmlos
SetProp(P_DAM_TYPE, DT_WHIP);
SetProp(P_SHOOTING_WC, 90); // ziemlich gute Schleuder
SetProp(P_NR_HANDS, 1); // einhaendig
SetProp(P_WEAPON_TYPE, WT_RANGED_WEAPON);
SetProp(P_AMMUNITION, MUN_STONE);
SetProp(P_STRETCH_TIME, 1);
SetProp(P_RANGE, 30); // 30 weit kann man damit nur schleudern
}
// #3 passende Munition
inherit "/std/unit";
void create() {
if (!clonep(this_object())) return;
::create();
SetProp(P_NAME, ({"Schleuderstein", "Schleudersteine"}) );
SetProp(P_LONG, break_string(
"Hervorragend geformte Schleudersteine aus Murmelnit.", 78));
SetProp(P_GENDER, MALE);
SetProp(P_AMOUNT, 1);
SetProp(P_SHOOTING_WC, 50);
SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
SetProp(P_WEAPON_TYPE, WT_AMMU);
SetProp(P_MATERIAL, MAT_STONE);
SetGramsPerUnits(60,1);
SetCoinsPerUnits(25,1);
AddId(MUN_STONE);
AddSingularId(({"stein", "schleuderstein"}));
AddPluralId(({"steine", "schleudersteine"}));
AddClass(CL_AMMUNITION);
}
SIEHE AUCH:
Generell: P_SHOOTING_WC, P_STRETCH_TIME, P_AMMUNITION
Methoden: FindRangedTarget(L), shoot_dam(L)
Gebiet: P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
Waffen: P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
Kampf: Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
Team: PresentPosition(L)
Sonstiges: P_NOGET
Balance: fernwaffen, waffen, balance
29.Jul 2014 Gloinson
zurück zur Übersicht