Beispieldateien

Ein Tuch, das man sich vor den Mund binden kann

----------


// Dieses Tuch erlaubt eine extra Anzieh/Auszieh-Syntax.
// Ausserdem ist es auch fuer Magiekundige und eventuelle Schwarzmagier tragbar

// 2001 by Sunrise@Wunderland

inherit "armour";

#include <properties.h>
#include <combat.h>
#include <defines.h>   // hier ist z.B. PL als this_player() definiert
                       // oder ME als this_object()

int binden(string str);

void create()
{
  if (!clonep()) return;
  ::create();
  SetProp(P_NAME, "Tuch");
  SetProp(P_PLURAL, "Tuecher");
  SetProp(P_NAME_ADJ, "weich");

  // Ruestungstyp misc fuer nicht spezifizierte Ruestungen;
  // P_AC ist dann 0 - wir brauchen ihn nicht zu setzen
  SetProp(P_ARMOUR_TYPE, AT_MISC);

  SetProp(P_WEIGHT, 20);
  SetProp(P_BULKINESS, 4);
  SetProp(P_VALUE, 30);
  SetProp(P_LONG,
    "Das Tuch ist ganz weich und relativ schmal, sicher kann man es sich "
    "gut umbinden.");

  // Fuer besondere Meldungen beim An- und Ausziehen:
  SetProp(P_WEAR_MSG, ({ 
    "Du bindest Dir das weiche Tuch um den Mund.",
    (:PL->name(WER, NAME_AUTO|NAME_CAP)+" bindet sich ein weiches Tuch um den Mund." :) }));
  SetProp(P_UNWEAR_MSG, ({ 
    "Du bindest das weiche Tuch ab.",
    (: PL->name(WER, NAME_AUTO|NAME_CAP)+" bindet ein weiches Tuch ab." :) }));

  // Das Tuch soll auch von Magiekundigen und eventuellen Schwarzmagiern tragbar sein,
  // deswegen die lezten 2 Sonder-Ids.
  AddId(({"tuch", "schal", "\nwueste_schal", "\nmagiekundigen_kleidung", "\nsm_armour"}),
   ({"tuecher", "schals"}));

  AddCmd("binde|binde|knote&tuch|schal", #'binden, 
    "Was willst Du um- oder abbinden?|Was willst Du um- oder abbinden?");
  SetProp(P_ADJECTIVES, ({"weich", "weiches", "weichem", "weichen"}));

}

// Wir ermoeglichen das Kommando "binde" zum Anziehen
int binden(string str)
{
  string ob;
  mixed ret;

  if (!str) return 0;

  if ((sscanf(str, "%s um", ob) == 1) && id(ob))
  {
    if (!sizeof(filter_objects(PL->QueryProp(P_ARMOURS), "id", "\nwueste_schal")))
      return PL->Wear(ME);
    else 
      return notify_fail("Du traegst bereits ein Tuch um den Mund.\n");
  }

  if ((sscanf(str, "%s ab", ob) == 1) && id(ob))
    return PL->UnWear(ME);

  return 0;
}