Beispieldateien

Ein Schiffsjunge mit mörderabhängigen Todesmeldungen

----------


// Je nachdem, ob ihn ein weiblicher oder maennlicher Spieler getötet 
// hat, ändert sich seine Todesmeldung. Dazu lauschen wir auf ET_DEATH

// nach dem Original von Holger@Wunderland

inherit "npc";

#pragma strong_types

#include <properties.h>

#include <events.h>
#include <death.h>

// fuer P_DIE_MSG
void todes_meldung(mixed data, string type);

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

  ::create(); 

  create_default_npc(13);
  SetProp(P_LONG, "Der arme Schiffsjunge steht mit zerlumpten Kleidern vor "
    "Dir. Sicher hat er einmal von weiten Reisen auf allen Weltmeeren "
    "getraeumt, doch nun hat es ihn hierher verschlagen und er rackert sich "
    "Tag fuer Tag in der Hafenmeisterei ab. Er sieht nicht besonders gluecklich aus, "
    "doch an seinen freundlichen Augen siehst Du, dass er nach wie vor ein "
    "gutes Herz hat.");
  SetProp(P_NAME, "Schiffsjunge");
  SetProp(P_PLURAL, "Schiffsjungen");
  SetProp(P_NAME_ADJ, "arm");
  AddAdjective(({"arm","armer","armen", "jung", "junger", "jungen"}));
  SetProp(P_GENDER, MALE);
  SetProp(P_RACE, "Mensch");
  SetProp(P_ALIGN, 850);

  AddDetail(({"kleider", "bekleidung", "kleidung"}),
    "Die Kleider des Jungen sind schon ziemlich zerlumpt. Ausserdem scheinen sie ihm nicht "
    "mehr so richtig zu passen. Die Hosen sind schon viel zu kurz und spannen ueber dem knackigen Po "
    "des Jungen. Und auch das Hemd scheint ihm zu eng und zu kurz zu werden.");
  AddDetail(({"hose"}),
    "Die Hose des Jungen ist ihm wohl zu klein geworden. Die Hosenbeine gehen ihm nur noch knapp "
    "uebers Knie und liegt schon fast gefaehrlich eng an seinem Po an.");
  AddDetail(({"po", "knackigen po", "knackiger po", "knackpo", "geltung"}),
    "Hmm, der Po des Jungen ist richtig knackig. Durch die enge Hose kommt er erst richtig zur "
    "Geltung. Er ist wohl doch kein Junge mehr sondern schon eher ein junger Mann.");
  AddDetail(({"hosenbeine", "hosenbein", "knie", "kniee"}),
    "Die Hosenbeine reichen dem Jungen nur noch knapp bis uebers Knie. Er braeuchte wohl dringend "
    "neue Kleidung.");
  AddDetail(({"hemd"}),
    "Das Hemd des Jungen hat viel zu kurze Aermel und es fehlen ihm schon ein paar Knoepfe, so dass "
    "es teilweise offen steht und eine braungebrannte muskuloese Brust freigibt.");
  AddDetail(({"muskeln", "muskel"}),
    "Der Junge hat ganz schoene Muskeln, wie Du an Brust und Armen erkennen kannst. Auch die Beinmuskeln sind "
    "nicht ohne. Das kommt sicherlich von seiner Arbeit hier im Hafen.");
  AddDetail(({"beine", "bein", "beinmuskel", "beinmuskeln", "waden", "schenkel", "oberschenkel", 
    "unterschenkel", "wade", "muskuloese beine"}),
    "Der Junge hat schoene muskuloese Beine. Die enge Hose laesst das ganz gut erkennen.");
  AddDetail(({"brust", "muskuloese brust", "braungebrannte brust"}),
    "Unter dem Hemd des Jungen erkennst Du eine schoene muskuloese und braungebrannte Brust.");

  AddId(({"schiffsjunge", "junge", "mann"}), ({"schiffsjungen", "jungen", "maenner"}));

  AddInfo( "kleider|kleidung|sachen", ({
    "erroete", 2, "sage Jaja, ich weiss, dass meine Sachen total zerlumpt sind, "
    "aber bei dem kargen Lohn hier, kann ich mir keine neuen Sachen leisten."}));
  AddInfo( "tag", ({
    "seufze", 2, "sage Tag fuer Tag schufte ich hier fuer einen Hungerlohn. ", 2,
    "zwinker", "sage schmunzelnd:: Aber manchmal kommen auch huebsche Frauen "
    "hier her."}));
  
  // wir melden uns zum Lauschen an
  listen_event(ET_DEATH, EPRIO_MODIFY, #'todes_meldung);

}


void todes_meldung(mixed data, string type)
{
  if (!stringp(type) || type!=ET_DEATH || !mappingp(data)) return;

  // Wenn nicht ich der Sterbende bin
  if (data[E_SENDER] != this_object() ) return;

  // Wenn es keinen Moerder gibt
  if (!data[E_DEATH_KILLOBJ]) return;

  // je nach Geschlecht des Moerders setzen wir die Todesmeldung
  switch (data[E_DEATH_KILLOBJ]->QueryProp(P_GENDER))
  {
    case MALE: 
      data[E_DEATH_MSG] = "Der arme Schiffsjunge denkt .o( Immer diese Eifersuchtsanfaelle. ) und stirbt.";
      break;
    case FEMALE: 
      data[E_DEATH_MSG] = "                              ( Wir haetten noch so viel Spass miteinander )\n"
        "Der arme Schiffsjunge denkt .o( haben koennen.                             ) und stirbt.";
      break;
  }
  return;
}