Beispieldateien

Ein paar Blumen (Pluralobjekt)

----------


// Sie veraendern ihr Aussehen zeitabhaengig und verwelken nach einiger
// Zeit ganz.
// Sie treten als "einige Butterblumen" auf. Auch wenn es mehrere von ihnen
// in einem Raum gibt, sind es immer noch "einige Butterblumen".

// 17.11.2004 by Sunrise

inherit "thing";

#include <combat.h>
#include <properties.h>

string GetLong(); // Funktionen deklarieren
string blueten(); 

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

  AddId(({"butterblume", "blume"}), ({"butterblumen", "blumen"}));
  SetProp(P_NAME, "Butterblumen");
  SetProp(P_GENDER, FEMALE);
  SetProp(P_PLURAL, "Butterblumen");

  // Man kann angeben, ob ein Objekt mehrere repraesentieren soll. Eine allgemeine 
  // Information mit einigen Beispielen: name_usage
  SetProp(P_NAME_AMOUNT, "einig");
  SetProp(P_NAME_FLAG, NAME_AMOUNT_INDEF|NAME_PLURALOBJ);

  // Diese Funktionalitaet erlaubt es uns, eine Funktion anzulegen, 
  // die bei jedem Aufruf erneut ausgefuehrt wird und sich somit selbst
  // staendig aktualisiert. 
  // Wir nennen dies Query-Methode (von F_QUERY_METHOD)
  Set(P_LONG, #'GetLong, F_QUERY_METHOD);
  // Ein selbst festgelegtes Property enthaelt die Zeit time(),
  // zu der das Objekt erzeugt, also die Blumen gepflueckt wurden.
  SetProp("gepflueckt", time());
  SetProp(P_SMELL,
    "Die Butterblumen riechen fast gar nicht. Aber dafuer "
    "sind sie sehr schoen und leuchtend gelb.");
  // Das einzige Detail ist veraenderbar und ruft eine Funktion auf
  AddDetail(({"blueten", "bluete"}), #'blueten);

}


string GetLong()
{
  string str = "Ein paar zarte gelbe Butterblumen. "
    "So wie sie oft liebende Kinder ihren Eltern pfluecken.";

  // Wieviel Zeit ist seit dem Pfluecken vergangen?
  switch(time()-QueryProp("gepflueckt"))
  {
    case 0..400:
      str +=" Sie sind frisch gepflueckt."; break;
    case 401..800:
      str += " Die Butterblumen lassen schon die Koepfe "
        "haengen."; break;
    case 801..1200:
      str += " Die Butterblumen sind schon ganz verwelkt.";
      break;
    default:
      // wenn sie zu alt sind, verwelken sie
      call_out("remove", 1, 1);
      str += " Sie sind schon so verwelkt, dass Du sie "
             "frustriert wegwirfst."; break;
  }
  return str;
}

string blueten()
{
  switch(time()-QueryProp("gepflueckt"))
  {
    case 0..400:
      return "Die zarten Blueten der Butterblumen sind noch "
        "ganz offen und leuchtend. Offenbar sind die "
        "Blumen frisch gepflueckt.";
    case 401..800:
      return "Die zarten Butterblumen lassen schon die Koepfe "
        "haengen. Sie sind einfach zu zart, um gepflueckt zu "
        "werden.";
    case 801..1200:
      return "Die Butterblumen sind schon ganz verwelkt. Sie "
        "sind einfach zu zart, um gepflueckt zu werden.";
    default:
      call_out("remove", 1, 1);
      return "Die Butterblumen sind derart lasch und verwelkt, "
        "dass Du sie traurig wegwirft. Butterblumen sind halt "
        "einfach zu zart, um gepflueckt zu werden.";
  }
}


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