blob: 109aa924903bae119cc7bafaf17ef8cbc5c5c842 [file] [log] [blame]
inherit "/std/npc";
#include <new_skills.h>
#include __PATH__(1)"defs.h"
/*
Hier wird die Prop definiert, die wir im Spieler setzen. Die bleibt
bis Ende oder Reboot beim Spieler gesetzt. Wer das nicht moechte, kann
sie sich per
xcall $me->SetProp("notstrom_tutorial2018_beispiel1", 0);
wieder entfernen. Wenn er Magier ist jedenfalls. Abfragen kann der
Magier die Prop bei sich mit
xcall $me->QueryProp("notstrom_tutorial2018_beispiel1");
*/
#define MYPROP "notstrom_tutorial2018_beispiel1"
private string look();
private int hauen();
private mapping hauer = ([]);
protected void create() {
if (!clonep()) {
set_next_reset(-1);
return;
}
::create();
create_default_npc(20, 600);
SetProp(P_SHORT, "Ein Zwerg");
Set(P_LONG, #'look, F_QUERY_METHOD);
SetProp(P_NAME, "Kawumm");
SetProp(P_ARTICLE, 0);
SetProp(P_GENDER, MALE);
AddId(({"zwerg", "kawumm"}));
SetProp(P_ALIGN, 100);
SetProp(P_RACE, "Zwerg");
SetProp(P_SIZE, 102);
AddCmd("hau|haue&@ID", #'hauen,
"Wen willst Du hauen?");
}
void reset() {
::reset();
if (sizeof(hauer)) {
tell_room(ENV(), BSLF(
"Kawumm vergisst, von wem er schon alles gehauen wurde. Seine "
"Blessuren verschwinden wie von Magierhand."));
hauer = ([]);
}
}
private string look() {
string msg = "Dies ist Kawumm, der Zwerg. ";
if (!sizeof(hauer)) {
msg += "Niemand hat ihm bisher eins auf die Omme gehauen, obwohl er so "
"verfuehrerisch herumsteht.\n";
} else {
msg += "Er hat schon durchaus was auf die Omme bekommen, und zwar von "+
CountUp(m_indices(hauer))+".\n";
}
msg += "Wenn Du ihm was draufsemmeln willst, dann versuche einfach:\n"
" haue kawumm";
return BSLF(msg);
}
private int hauen() {
if (TP->QueryProp(MYPROP)) {
tell_object(TP, BSLF(
"Aber nicht doch. Du hast Kawumm bereits gehauen."));
} else {
tell_object(TP, BSLF(
"Gut, Du haust also Kawumm welche auf die Omme. Kawumm zuckt kurz, "
"steht dann aber unbewegt weiter rum. Er hat sich das aber bestimmt "
"gemerkt ..."));
tell_room(ENV(), BSLF(
TPN+" haut Kawumm eins auf die Omme. Dem scheint das aber nicht viel "
"auszumachen. Typisch Zwerg, solange er Alk kriegt, ist er zufrieden."),
({TP}));
/* Damit geprueft werden kann, ob der Spieler diesen Reset schon drauf-
gehauen hat, setzen wir im Spieler eine Prop: */
TP->SetProp(MYPROP, 1);
/* Damit wir huebsch ausgeben koennen, wer alles schonmal draufgehauen
hat, merken wir uns bis zum Reset die Uebeltaeter. Die kann man dann
auch huebsch ausgeben.
Der Haken ist natuerlich, dass die Prop im Spieler bestehen bleibt,
auch wenn der Zwerg schon vergessen hat, wer ihn gehauen hat. Man
kann ihn dann also nicht wieder hauen, wenn man die Prop nicht
losgeworden ist. Das KANN Absicht sein, aber hier wuerde man das
eigentlich anders loesen.
Als Beispiel behalten wir das aber dennoch so einmal bei. */
/* Hier query_real_name(), nicht name(), weil uns sonst Gegenstaende
oder Zauber wie der Tarnhelm linken: */
m_add(hauer, capitalize(TP->query_real_name()), 1);
}
return 1;
}
/* Diese Func wird vom Raum gerufen, um zu schauen, wer Kawumm schon alles
vermoppt hat, deswegen public! */
public string get_gehauen() {
if (!sizeof(hauer)) return 0;
return CountUp(m_indices(hauer));
}