// Ein Bogen
// ---------
// Er gibt 3 verschiedene Schadensmeldungen aus und macht 3 verschiedene Schadenstypen
// Beispiel fuer ET_ATTACK
inherit "weapon";
#include <combat.h>
#include <properties.h>
#include <events.h>
#include <living/combat.h>
int zaehler = 0;
int ladung = 0; // wird geaendert durch pfeileinlegen
void pfeilschaden(mixed data, string type, int prio);
void create()
{
if (!clonep()) return;
::create();
AddId(({"bogen"}), ({"boegen"}));
SetProp(P_NAME, "Langbogen");
SetProp(P_PLURAL, "Langboegen");
SetProp(P_GENDER, MALE);
SetProp(P_WC, 60);
SetProp(P_WEAPON_TYPE, WT_CLUB);
SetProp(P_VALUE, 840);
SetProp(P_WEIGHT, 800);
SetProp(P_BULKINESS, 100);
SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
SetProp(P_NR_HANDS, 2);
SetProp(P_LONG,
"Ein schmaler Langbogen. Mit der richtigen Munition wird er eine maechtige Waffe sein.");
SetProp(P_INFO,
"Welch Schrecken verbreitete sich unter den Gegnern, als sich die Pfeile in der Luft ploetzlich "
"in magisches Feuer verwandelten ...");
listen_event(ET_ATTACK, EPRIO_MODIFY, #'pfeilschaden);
}
void pfeilschaden(mixed data, string type, int prio)
{
if (!data[E_ACTOR] || QueryWieldedBy() != data[E_ACTOR]) return;
++ zaehler;
if (!ladung)
{
data[E_COMBAT_DAM_TYPES] = ({DT_BLUDGEON});
ladung = 1; // "magisch aufladen" fuer Testzwecke
return;
}
ladung = 0; // Pfeil verschiessen und entladen
if (zaehler == 5)
{
zaehler = 0;
data[E_COMBAT_DAM_TYPES] = ({DT_MAGIC, DT_FIRE});
data[E_COMBAT_DAMAGE] += 150; // 150 Zusatzschaden, magischer Feuerschaden
data[E_COMBAT_MSGS] = ({"", "Du schiesst einen magischen Feuerpfeil@@adverb@@ nach@@ wem@@.",
"@@Name@@ schiesst einen magischen Feuerpfeil@@adverb@@ nach @@Dir@@.",
"@@Name@@ schiesst einen magischen Feuerpfeil@@adverb@@ nach@@ wem@@."});
return;
}
data[E_COMBAT_MSGS] = ({"", "Du schiesst einen Pfeil@@adverb@@ nach@@ wem@@.",
"@@Name@@ schiesst einen Pfeil@@adverb@@ nach @@Dir@@.",
"@@Name@@ schiesst einen Pfeil@@adverb@@ nach@@ wem@@."});
data[E_COMBAT_DAMAGE] += 100; // 100 Zusatzschaden
data[E_COMBAT_DAM_TYPES] = ({DT_PIERCE}); // Pfeilschaden
return;
}
|