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;
+}