Beispieldateien

Ein Geldgeber

----------

Der Geldgeber ist ein ganz simples Monster, das dem Spieler auf Anfrage einen Smaragd gibt. Da das nur ein Beispiel ist, wurde auf die Begrenzung der Geldmenge pro Spieler und Reset verzichtet.
inherit "std/npc";

#include <properties.h>
#include <moving.h>     // fuers Bewegen des Geldes

// Vorm create() muss die Funktion deklariert werden
string geld_info();

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

  create_default_npc(20);

  AddId(({"geldgeber", "geber"}), ({"geldgeber", "geber"}));

  SetProp(P_NAME, "Geldgeber");
  SetProp(P_PLURAL, "Geldgeber");
  SetProp(P_GENDER, MALE);
  SetProp(P_LONG,
    "Dieser Mann ist genau das wonach er aussieht: ein Geldgeber. "
    "Versuch es doch einfach mal selbst und frag ihn, ob er Dir auch "
    "etwas gibt.");

  AddInfo("geld", #'geld_info, "sagt:");
}

string geld_info()
{
  object cash;
  int result;

  // geld clonen
  cash = clone_object("/obj/coins/smaragd");
  // Wenn wir 2 "Münzen" bräuchten, müßten wir noch
  // cash->SetProp(P_AMOUNT, 2); setzen.

  // jetzt wollen wir dem Spieler das Geld geben, aber wir sollten auch
  // schaun, ob das echt geklappt hat. Dazu werten wir das Ergebnis des
  // movens (hier in der Variablen result) aus.

  result = cash->move(this_player(), M_GET);

  if (result < MOVE_OK) // es hat nicht geklappt
  {
    // wir legen das Geld in den Raum
    cash->move(environment(this_object()), M_DROP);
    return "Ich lege Dir einen Smaragd hier her.";
  }

  // ansonsten:
  write("Der Geldgeber gibt Dir einen Smaragd.\n");
  say("Der Geldgeber gibt "+this_player()->name(WEM, NAME_DEF|NAME_CAP)+
    " einen Smaragd.\n", this_player());
  return "Bitte schoen, da hast Du etwas.";
}