Beispieldateien

Reagieren auf ein Bewegungsereignis anhand eines Kleeblattes

----------



// ein vierblaettriges kleeblatt

// nach dem verschenken sieht man in der P_LONG, von wem man
// es bekommen hat

// 2002 by Sunrise@Wunderland

inherit "thing";

#pragma strong_types
#include <moving.h>
#include <events.h>
#include <defines.h>
#include <properties.h>

void verschenken(mixed data, string type);

void create()
{
  if (!clonep()) return;
  ::create();

  SetProp(P_NAME, "Kleeblatt");
  SetProp(P_PLURAL, "Kleeblaetter");
  SetProp(P_NAME_ADJ, "vierblaettrig");
  SetProp(P_WEIGHT, 1);
  SetProp(P_BULKINESS, 1);
  SetProp(P_NOSELL, "Ein vierblaettriges KLeeblatt verkauft man nicht.\n");
  SetProp(P_GENDER, NEUTER);
  SetProp(P_LONG,
    "Das ist ein sehr schoenes vierblaettriges Kleeblatt. Man sagt, es soll "
    "Glueck bringen.");

  AddId(({"blatt", "kleeblatt", "klee", "sunrise_klee"}),
    ({"blaetter", "kleeblaetter", "klee"}));
  SetProp(P_ADJECTIVES, ({"vierblaettrig", "vierblaettriges", "vier"
    "blaettrigem", "vierblaettrigen", "vierblaettrige"}));

  AddCmd("iss|esse&kleeblatt|klee|blatt", "klee_essen",
    "Was willst Du essen?");
  AddCmd("zaehl|zaehle&blaetter", "zaehlen",
    "Was willst Du zaehlen?");

  // hier lauschen wir dem Give-Event, wir wollen nur reagieren
  listen_event(ET_GIVE, EPRIO_REACT, #'verschenken);
}



void verschenken(mixed data, string type)
{
   object schenker;
   string str;

   // Das uebergebene Object bin nicht ich:
   if (data[E_MOVE_OBJ] != ME) return;
   // Der 'Schenkende' ist kein Lebewesen
   if (!living(schenker=data[E_ACTOR])) return;

   // Jetzt aendern wir die Beschreibung des Kleeblatts und setzen
   // den Namen des Schenkers rein
   str= "Dieses vierblaettrige Kleeblatt wurde Dir von "+
        schenker->name(WEM, NAME_AUTO)+" zum Zeichen "+
        schenker->QueryPossPronoun(FEMALE, WESSEN, 0)+
        " Zuneigung geschenkt. Hoffentlich bringt es Dir Glueck.";
   SetProp(P_LONG, str);
}



int zaehlen()
{
  tell_object(PL, break_string(
    "Du haeltst das Kleeblatt weit von Dir und faengst dann an, "
    "mit ausgestrecktem Zeigefinger die Blaetter an dem Kleeblatt "
    "zu zaehlen:\nEins\nZwei\nDrei\nVier\nJa, es sind tatsaechlich "
    "vier Blaetter. Das Kleeblatt hat seinen Namen verdient."));
  tell_room(environment(PL), break_string(
    PL->name(WER, NAME_AUTO|NAME_CAP)+" haelt ein Kleeblatt weit "
    "von sich weg und faengt an, seine Blaetter mit ausgestrecktem "
    "Zeigefinger zu zaehlen und murmelt dabei:\nEins\n"
    "Zwei\nDrei\nVier\nDann geht ploetzlich ein Strahlen der "
    "Erkenntnis ueber "+PL->QueryPossPronoun(NEUTER, WEN, 0)+" Gesicht. "
    "Es handelt sich wohl tatsaechlich um ein "
    "vierblaettriges Kleeblatt."), ({PL}));
  return 1;
}



int klee_essen()
{
  tell_object(PL,
    "Bist Du ein Schaf oder eine Kuh, dass Du jetzt "
    "schon gruenen Klee isst?\n");
  return 1;
}


Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Kleeblatt
Valid HTML 4.01!