So wie in axt2 soll man es gerade nicht machen ...
Change-Id: I8fe3f26313589af8888e58fb91d0dab349d3428e
diff --git a/obj/axt2.c b/obj/axt2.c
index a8eb3aa..83937d9 100644
--- a/obj/axt2.c
+++ b/obj/axt2.c
@@ -1,11 +1,13 @@
/*
- Manchmal moechte man ja einem NPC eine ordentliche Waffe geben, die dann
- aber fuer Spieler nicht so geeignet oder schlicht zu gut waere. In diesem
- Fall ist eine Moeglichkeit, die Waffenwerte abhaengig von demjenigen zu
- setzen, der sie gerade dabeihat.
+ Eine andere Moeglichkeit, eine Waffe nur fuer einen NPC zur Verfuegung zu
+ stellen ist ein wenig frustrierender fuer Spieler. Man sollte Beispiele
+ wie dieses nicht ungeprueft uebernehmen. Waffen, die kein Spieler zuecken
+ kann, stossen meist nicht auf sehr hohen Enthusiasmus beim Spieler, die
+ betreffende Gegend mehrmals zu aufzusuchen.
*/
inherit "/std/weapon";
+#include <new_skills.h>
#include __PATH__(1)"defs.h"
@@ -25,23 +27,16 @@
SetProp(P_GENDER, FEMALE);
AddId(({"axt"}));
- /* Dies ist Kawumms persoenliche Axt, und mit der macht er mehr Schaden als
- jeder andere. Gleichzeitig ist dies ein Beispiel dafuer, wie man eine
- Prop mit einer Closure setzt. Da F_QUERY_METHOD angegeben ist, wird die
- eingebundene Inline-Function jedesmal ausgefuehrt, wenn der Wert von P_WC
- abgefragt wird, also z.B. auch bei jedem Attack().
- Der umgekehrte Fall waere, wenn wir F_SET_METHOD verwenden, dann wuerde
- die Inline-Function ausgefuehrt, wenn jemand SetProp(P_WC) aufruft. */
- Set(P_WC, function int() {
- if (load_name(ENV()) == __PATH__(1)"npc/zwerg5")
- return 180;
- return 100;
- }, F_QUERY_METHOD);
-
+ SetProp(P_WC, 180);
SetProp(P_WEAPON_TYPE, WT_AXE);
SetProp(P_DAM_TYPE, DT_SLASH);
SetProp(P_NR_HANDS, 1);
+ /* "Restriktionen" bezieht sich hier konkret auf das Zuecken der Waffe.
+ In diesem Beispiel wird das anhand der Function wield_check()
+ ueberprueft, die sich in DIESEM Objekt befinden muss: */
+ SetProp(P_RESTRICTIONS, ([SR_FUN: "wield_check"]));
+
SetProp(P_VALUE, 200);
SetProp(P_WEIGHT, 3250);
SetProp(P_SIZE, 90);
@@ -49,3 +44,13 @@
SetProp(P_MATERIAL, ([MAT_STEEL:100]));
}
+public string wield_check() {
+ /* Wir pruefen direkt, ob derjenige, der die Axt im Inventory hat, der
+ legale Besitzer ist. Diese Axt funktioniert also z.B. nicht mehr,
+ wenn man einen anderen NPC damit ausruesten moechte. */
+ if (load_name(ENV()) != __PATH__(1)"npc/zwerg4")
+ return BSLF(
+ "Dies ist Kawumms persoenliche Axt. Sie ist so dermassen unhandlich, "
+ "dass Du sie nicht zuecken kannst.");
+ return 0;
+}
diff --git a/obj/axt3.c b/obj/axt3.c
index 83937d9..a2fbf7f 100644
--- a/obj/axt3.c
+++ b/obj/axt3.c
@@ -1,10 +1,3 @@
-/*
- Eine andere Moeglichkeit, eine Waffe nur fuer einen NPC zur Verfuegung zu
- stellen ist ein wenig frustrierender fuer Spieler. Man sollte Beispiele
- wie dieses nicht ungeprueft uebernehmen. Waffen, die kein Spieler zuecken
- kann, stossen meist nicht auf sehr hohen Enthusiasmus beim Spieler, die
- betreffende Gegend mehrmals zu aufzusuchen.
-*/
inherit "/std/weapon";
#include <new_skills.h>
@@ -20,8 +13,8 @@
SetProp(P_SHORT, "Eine besondere Axt");
SetProp(P_LONG, BSLF(
- "Dies ist die Axt von Kawumm, dem Zwerg. Niemand kann so damit zuhauen "
- "wie er."));
+ "Dies ist die Axt von Kawumm, dem Zwerg. Sie ist allerdings nicht fuer "
+ "Spielerhaende gedacht."));
SetProp(P_NAME, "Axt");
SetProp(P_GENDER, FEMALE);
@@ -32,10 +25,9 @@
SetProp(P_DAM_TYPE, DT_SLASH);
SetProp(P_NR_HANDS, 1);
- /* "Restriktionen" bezieht sich hier konkret auf das Zuecken der Waffe.
- In diesem Beispiel wird das anhand der Function wield_check()
- ueberprueft, die sich in DIESEM Objekt befinden muss: */
- SetProp(P_RESTRICTIONS, ([SR_FUN: "wield_check"]));
+ /* Als Variante des letzten Beispieles: Wenn es egal ist, welcher NPC
+ die Axt zuecken darf, dann geht es auch ohne zusaetzliche Function: */
+ SetProp(P_RESTRICTIONS, ([SR_PROP: ([P_NPC:1])]));
SetProp(P_VALUE, 200);
SetProp(P_WEIGHT, 3250);
@@ -44,13 +36,3 @@
SetProp(P_MATERIAL, ([MAT_STEEL:100]));
}
-public string wield_check() {
- /* Wir pruefen direkt, ob derjenige, der die Axt im Inventory hat, der
- legale Besitzer ist. Diese Axt funktioniert also z.B. nicht mehr,
- wenn man einen anderen NPC damit ausruesten moechte. */
- if (load_name(ENV()) != __PATH__(1)"npc/zwerg4")
- return BSLF(
- "Dies ist Kawumms persoenliche Axt. Sie ist so dermassen unhandlich, "
- "dass Du sie nicht zuecken kannst.");
- return 0;
-}
diff --git a/obj/axt3b.c b/obj/axt3b.c
deleted file mode 100644
index a2fbf7f..0000000
--- a/obj/axt3b.c
+++ /dev/null
@@ -1,38 +0,0 @@
-inherit "/std/weapon";
-
-#include <new_skills.h>
-#include __PATH__(1)"defs.h"
-
-
-protected void create() {
- if (!clonep()) {
- set_next_reset(-1);
- return;
- }
- ::create();
-
- SetProp(P_SHORT, "Eine besondere Axt");
- SetProp(P_LONG, BSLF(
- "Dies ist die Axt von Kawumm, dem Zwerg. Sie ist allerdings nicht fuer "
- "Spielerhaende gedacht."));
-
- SetProp(P_NAME, "Axt");
- SetProp(P_GENDER, FEMALE);
- AddId(({"axt"}));
-
- SetProp(P_WC, 180);
- SetProp(P_WEAPON_TYPE, WT_AXE);
- SetProp(P_DAM_TYPE, DT_SLASH);
- SetProp(P_NR_HANDS, 1);
-
- /* Als Variante des letzten Beispieles: Wenn es egal ist, welcher NPC
- die Axt zuecken darf, dann geht es auch ohne zusaetzliche Function: */
- SetProp(P_RESTRICTIONS, ([SR_PROP: ([P_NPC:1])]));
-
- SetProp(P_VALUE, 200);
- SetProp(P_WEIGHT, 3250);
- SetProp(P_SIZE, 90);
-
- SetProp(P_MATERIAL, ([MAT_STEEL:100]));
-}
-