Beispieldateien

Ein nettes Monster

----------



// Der gleiche Hase noch einmal - nur netter
// Etwas mehr dokumentiert und nicht ganz so umfangreich ist der Hase hier.

inherit "std/npc";     // Standard interaktiven NPC erben.

#include <properties.h>  // allgemeine Properties
#include <living/body.h> // für den Körperbau
#include <npc/react.h>   // Wir wollen, dass der NPC reagiert
                         // Die Reaktion des NPC kann man mit 
                         // AddReaction() verändern. Wir setzen hier
                         // aber keine, um das Beispiel einfach zu
                         // halten. Es sind nur die Standardreaktionen
                         // aktiv.

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

  ::create();


  //die Standardrectionen werden gesetzt
  SetStandardReactions();

  // Singular/Plural Namen setzen
  SetProp(P_NAME, "Hase");
  SetProp(P_PLURAL, "Hasen");

  // Hase wird schwach gebeugt, daher hier die entsprechende Information
  // an die Lib. (Sonst gibt es z.B. "Die Leiche eines Hase.")
  SetProp(P_NAME_FLAG, NAME_WEAK_DECL);

  // Der Hase ist grammatikalisch maennlich
  SetProp(P_GENDER, MALE );

  SetProp(P_LONG,
    "Ein kleiner Hase mit langen Ohren und langen Beinen.");

  // IDs
  AddId(({"hase", "haeschen"}), ({"hasen", "haeschen"}));

  // Das Gewicht des Hasen - der Spieler sieht das mit dem Kommando "prüfe"
  SetProp(P_WEIGHT, 4000);

  // NPC spezifische Sachen

  // standardmaessig einen NPC vom Level 4 erzeugen.
  //  dabei werden alle Werte automatisch gesetzt
  create_default_npc(4);

  // Hasen haben vier Beine, Koerper, Kopf, Schwanz ... aehnlich einer Katze.
  CreateBody(BODYTYPE_CAT);

  // Die (Tier-)Rasse des NPCs
  SetProp(P_RACE "Hase");

  // die Widerstandskraft erhoehen wir ein wenig
  SetProp(P_BODY, 5);

  // der Hase kann keine Waffe zuecken, also nur die Kraft der 'Haende' setzen
  // Der String wird beim Kampf als Satzteil benoetigt.
  SetProp(P_HANDS, ({ " mit seinen kleinen Pfoetchen", 35 }) );

  // Die Gesinnung des Monsters zwischen -1000 (satanisch) und 1000 (heilig)
  // Im Kampf beeinflusst das Align des NPCs das Align des Spielers. Toetet
  // er 'gute' Monster, wird sein Align schlecht und umgedreht
  SetProp(P_ALIGN, 100);        // der Hase ist ein bisschen nett

  // die Erfahrungspunkte, die der Spieler beim Tode des Monsters bekommt,
  // dabei ist zu beachten, dass der Spieler 1/100 des Wertes bekommt und auch
  // waehrend des Kampfes schon Erfahrungspunktes bekommt
  SetProp(P_XP, 60000);

  // Der Hase macht ein paar Chats in den Raum. Mit einer Chance von
  // 2% gibt er eine Meldung aus (pro Heartbeat).
  SetChats( 2, ({
    "Der Hase muemmelt vor sich hin.",
    "Der Hase verputzt ein paar Grashalme.",
    "Der Hase beobachtet Dich aengstlich.",
    "Der Hase verliert ein paar schwarze Kugeln." }) );

  // Der Hase spricht, aber er weiss fast nichts. "\ndefault" wird
  // immer ausgegeben, wenn man den Hase etwas fragt, was er nicht weiss
  AddInfo( "\ndefault", "Ich weiff garnichtf!", "lispelt:");
  AddInfo( "beispiel", "Ja genau. Daf bin ich! Schau Dir doch mal "
    __FILE__" etwaf genauer an!", "erklaert lispelnd:");

  // Jetzt koennte oder sollte man noch Reaktionen fuer den Netti setzen
  // Nur ein kleines Beispiel, den Rest nehmen wir vom Standard-Netti.

  // Ein Spieler weint im Raum. Darauf reagiert der Hase. Vorher entfernen
  // wir noch die Standardreaktion. Alle Standardreaktionen entfernt man
  // am schnellsten mit: SetProp(P_REACTIONS, ([]) ); Dabei ist aber zu
  // beachten, dass man "frage" unbedingt wieder setzen muss, weil der NPC
  // sonst nichtmehr auf Fragen reagiert. (man P_REACTIONS)

  RemoveReaction("weine", R_NOONE);

  AddReaction("weine", R_NOONE, ({
    1, "sag Ooch &Name!",           // nach 1 Sekunde sag etwas
    2, "umarme &name /troestend",   // nach 2 Sekunden umarmen
    4, "50%seufz /schwer" }) );     // und eventuell seufzen (50% Chance)

}

// Hier noch ein paar Zusatzfunktionen speziell fuer Nettis. Wenn man
// verhindern will, dass man dem Hase die Haare wuschelt oder ihn unterm
// Kinn kitzelt oder ihn die Haende schuettelt, sollte man diese benutzen

// Der Spieler wuschelt dem Hase die Ohren
mixed* PlayerTousles(object pl) {
    return ({"Ohren", PLURAL});
}

// Der Spieler kitzelt den Hase am Bauch
mixed* PlayerTickles(object pl) {
    return ({"an","Bauch", MALE, SINGULAR});
}

// Der Hase hat keine Haende. Und Pfoten schuetteln is wohl auch nich
// das Gelbe vom Ei...
int PlayerShakes(object pl) {
    return -1;
}