blob: 1ee9759587628fe6c790152867c02821dc4b4bb9 [file] [log] [blame]
notstrom22f99b52018-12-15 14:37:07 +01001inherit "/std/npc";
2
3#include <new_skills.h>
4#include __PATH__(1)"defs.h"
5
notstrom4b14cee2018-12-15 14:57:16 +01006/*
7 Hier wird die Prop definiert, die wir im Spieler setzen. Die bleibt
8 bis Ende oder Reboot beim Spieler gesetzt. Wer das nicht moechte, kann
9 sie sich per
10 xcall $me->SetProp("notstrom_tutorial2018_beispiel1", 0);
11 wieder entfernen. Wenn er Magier ist jedenfalls. Abfragen kann der
12 Magier die Prop bei sich mit
13 xcall $me->QueryProp("notstrom_tutorial2018_beispiel1");
14 */
notstrom3eb4d562018-12-15 14:37:52 +010015#define MYPROP "notstrom_tutorial2018_beispiel1"
notstrom22f99b52018-12-15 14:37:07 +010016
17private string look();
18private int hauen();
19
20private mapping hauer = ([]);
21
notstrom4b14cee2018-12-15 14:57:16 +010022
notstrom22f99b52018-12-15 14:37:07 +010023protected void create() {
24 if (!clonep()) {
25 set_next_reset(-1);
26 return;
27 }
28 ::create();
29
30 create_default_npc(20, 600);
31
32 SetProp(P_SHORT, "Ein Zwerg");
33 Set(P_LONG, #'look, F_QUERY_METHOD);
34 SetProp(P_NAME, "Kawumm");
35 SetProp(P_ARTICLE, 0);
36 SetProp(P_GENDER, MALE);
37
38 AddId(({"zwerg", "kawumm"}));
39 SetProp(P_ALIGN, 100);
40 SetProp(P_RACE, "Zwerg");
41 SetProp(P_SIZE, 102);
42
43 AddCmd("hau|haue&@ID", #'hauen,
44 "Wen willst Du hauen?");
45}
46
47void reset() {
48 ::reset();
49
50 if (sizeof(hauer)) {
51 tell_room(ENV(), BSLF(
notstrom8a152222018-12-15 14:49:58 +010052 "Kawumm vergisst, von wem er schon alles gehauen wurde. Seine "
notstrom22f99b52018-12-15 14:37:07 +010053 "Blessuren verschwinden wie von Magierhand."));
54 hauer = ([]);
55 }
56}
57
58private string look() {
notstrom8a152222018-12-15 14:49:58 +010059 string msg = "Dies ist Kawumm, der Zwerg. ";
notstrom22f99b52018-12-15 14:37:07 +010060 if (!sizeof(hauer)) {
61 msg += "Niemand hat ihm bisher eins auf die Omme gehauen, obwohl er so "
62 "verfuehrerisch herumsteht.\n";
63 } else {
64 msg += "Er hat schon durchaus was auf die Omme bekommen, und zwar von "+
notstrom04802e12018-12-15 14:46:24 +010065 CountUp(m_indices(hauer))+".\n";
notstrom22f99b52018-12-15 14:37:07 +010066 }
67 msg += "Wenn Du ihm was draufsemmeln willst, dann versuche einfach:\n"
notstrom8a152222018-12-15 14:49:58 +010068 " haue kawumm";
notstrom22f99b52018-12-15 14:37:07 +010069 return BSLF(msg);
70}
71
72private int hauen() {
73 if (TP->QueryProp(MYPROP)) {
74 tell_object(TP, BSLF(
notstrom8a152222018-12-15 14:49:58 +010075 "Aber nicht doch. Du hast Kawumm bereits gehauen."));
notstrom22f99b52018-12-15 14:37:07 +010076 } else {
77 tell_object(TP, BSLF(
notstrom8a152222018-12-15 14:49:58 +010078 "Gut, Du haust also Kawumm welche auf die Omme. Kawumm zuckt kurz, "
notstrom22f99b52018-12-15 14:37:07 +010079 "steht dann aber unbewegt weiter rum. Er hat sich das aber bestimmt "
80 "gemerkt ..."));
81 tell_room(ENV(), BSLF(
notstrom8a152222018-12-15 14:49:58 +010082 TPN+" haut Kawumm eins auf die Omme. Dem scheint das aber nicht viel "
notstrom22f99b52018-12-15 14:37:07 +010083 "auszumachen. Typisch Zwerg, solange er Alk kriegt, ist er zufrieden."),
84 ({TP}));
notstrom4b14cee2018-12-15 14:57:16 +010085 /* Damit geprueft werden kann, ob der Spieler diesen Reset schon drauf-
86 gehauen hat, setzen wir im Spieler eine Prop: */
notstrom22f99b52018-12-15 14:37:07 +010087 TP->SetProp(MYPROP, 1);
notstrom4b14cee2018-12-15 14:57:16 +010088 /* Damit wir huebsch ausgeben koennen, wer alles schonmal draufgehauen
89 hat, merken wir uns bis zum Reset die Uebeltaeter. Die kann man dann
90 auch huebsch ausgeben.
91 Der Haken ist natuerlich, dass die Prop im Spieler bestehen bleibt,
92 auch wenn der Zwerg schon vergessen hat, wer ihn gehauen hat. Man
93 kann ihn dann also nicht wieder hauen, wenn man die Prop nicht
94 losgeworden ist. Das KANN Absicht sein, aber hier wuerde man das
95 eigentlich anders loesen.
96 Als Beispiel behalten wir das aber dennoch so einmal bei. */
notstrom63817922018-12-15 14:47:01 +010097 m_add(hauer, capitalize(TP->query_real_name()), 1);
notstrom22f99b52018-12-15 14:37:07 +010098 }
99 return 1;
100}
101
notstrom4b14cee2018-12-15 14:57:16 +0100102/* Diese Func wird vom Raum gerufen, um zu schauen, wer Kawumm schon alles
103 vermoppt hat, deswegen public! */
notstromcf80e802018-12-15 14:42:36 +0100104public string get_gehauen() {
105 if (!sizeof(hauer)) return 0;
106 return CountUp(m_indices(hauer));
107}
notstrom4b14cee2018-12-15 14:57:16 +0100108