Beispieldateien

Ein umherlaufendes Monster

----------



// Ein ganz normaler Moving-NPC (nach Hund aus Kogia)
// Die Standardsachen sind in allen Objekten gleich. Bitte
// zuerst den Hasen dafür ansehen. (Dort ist mehr kommentiert)
//
// 05.08.99 Holger@Wunderland
// 09.04.01 Archon - Anpassungen

inherit "std/npc";         // den Standard-NPC erben

#include <properties.h>    // Allgemeine Properties
#include <npc/walking.h>   // Wir wollen, daß der NPC umherläuft

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

  ::create();

  SetProp(P_LONG,
    "Du siehst einen grossen schwarzen Hund. Wahrscheinlich der Wachhund "
    "von Prem Kokus. Er sieht eigentlich ganz friedlich aus. Er freut sich "
    "Dich zu sehen und bellt und wedelt mit seinem Schwanz.");

  SetProp(P_NAME,   "Hund");
  SetProp(P_PLURAL, "Hunde");
  SetProp(P_GENDER, MALE);

  // Default-NPC Level 7
  create_default_npc(7);

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

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

  // er ist ganz lieb
  SetProp(P_ALIGN, 200);

  // aber nicht ganz wehrlos :-)
  SetProp(P_HANDS, ({ " mit seinen scharfen Zaehnen", 70 }));

  // IDs
  AddId(({ "hund", "wachhund"}), ({"hunde", "wachhunde"})); 


  // Jetzt die MNPC-spezifischen Properties

  // Das Gebiet in dem sich der Hund bewegen soll. Es kann ein Array
  // aus Pfadbestandteilen angegeben werden. Es werden alle Räume 
  // betreten, deren Pfad mit den Teilpfaden in P_MNPC_AREA überein-
  // stimmen. Also hier sind das folgende Räume:
  // /doc/beispiele/raum1.c
  // /doc/beispiele/raum2.c
  // /doc/beispiele/raum3.c
  // /doc/beispiele/raum4.c
  // In diesen Räumen bewegt sich der Hund völlig frei.
  SetProp(P_MNPC_AREA, ({ "/doc/beispiele/raum" }));

  // Wenn der Hund in eine Sackgasse kommt, dann braucht er einen
  // Ausweg. Ein Raum der keine Sackgasse ist!
  SetProp(P_MNPC_HOME, "/doc/beispiele/raum1");

  // Wie schnell soll der MNPC rennen? Ca. alle 40 Sekunden einmal
  SetProp(P_MNPC_DELAY, 40);

  // Der MNPC soll herumlaufen und im Kampf stehenbleiben und benutzt als
  // Move-Methode nie M_TPORT (sondern M_GO)
  SetProp(P_MNPC_FLAGS, MNPC_WALK|MNPC_NO_TPORT );

  // Der MNPC soll keine Specialexits benutzen!
  SetProp(P_MNPC_SPECIAL_EXITS, 0);


  // Die nächsten Properties sind eigentlich für alle NPCs setzbar,
  // nur macht es nur bei NPCs Sinn, die sich auch selbst bewegen. Also
  // nur für MNPCs, Spieler und anderen 'Automaten' :-)

  // Die Meldung, wenn er in einen Raum läuft (Satzteil)
  SetProp(P_MSGIN,"kommt schwanzwedelnd herein");

  // Die Meldung, wenn er in einen Raum teleportiert wird (Satzteil)
  SetProp(P_MMSGIN,"kommt schwanzwedelnd herein");

  // Die Meldung, wenn er einen Raum laufend verläßt (Satzteil)
  SetProp(P_MSGOUT, "rennt schnueffelnd");

  // Die Meldung, wenn er aus einem Raum teleportiert wird (Satzteil)
  SetProp(P_MMSGOUT, "rennt schnueffelnd");


  // So jetzt noch ein paar Details und Infos und Schnörkel :-)

  AddDetail(({"schwanz","rute"}),
    "Der Hund hat einen langen schwarzen Schwanz.");
  AddDetail(({"zaehne","zahn"}),
    "Der Hund hat sehr scharfe Zaehne.");
  AddDetail(({"ohr","ohren"}),
    "Der Hund hat sehr gute Ohren.");

  AddInfo( "\ndefault",
    "Wuff. Wuff. Ich weiss gar nichts. Wuff!",
    "laesst die Ohren haengen und sagt:");
  AddInfo( "kokus|prem|premkokus",
    "Wuff. Wuff. Das ist mein Herrchen. Wuff! Wuff! WUFF!!!",
    "wedelt mit dem Schwanz und sagt:");

  // Ein paar Chats
  SetChats( 10, ({
    "Der Hund klaefft.",
    "WUFF..., WUFF..., WUFF WUFF WUFF....",
    "KLAEFF..." }) );

}


Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Umherlaufender Hund
Valid HTML 4.01!