Code: Valider NPC für das AnderLand (Properties)

Im AnderLand müssen NPCs bestimmte Properties enthalten. Leider werden immer wieder welche vergessen. Hier folgt ein NPC, den man als Vorlage benutzen kann, der die Properties enthält, die auf jeden Fall IMMER gesetzt werden müssen:

// npc.c - Ein minimaler NPC

#pragma strong_types

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

inherit "/std/npc";

void create()
{
  if (!clonep())
  {
    set_next_reset(-1);
    return;
  }
  ::create();
  
// Folgende Dinge MUESSEN IMMER gesetzt sein:

  // Setzt schonmal alle Grundwerte für einen NPC mit Level 5
  create_default_npc(5); 

  // Die ID des Hasen, mit der man ihn bei 'untersuche', 'toete' etc
  // ansprechen kann.  
  AddId(({"hase","meister lampe","tier"}));

  // Der Name des NPCs
  SetProp(P_NAME,"Hase");

  // Das Geschlecht: NEUTER, MALE oder FEMALE
  SetProp(P_GENDER,MALE); 

  // Die Kurzbeschreibung, sieht man, wenn man im Raum 'schau' eingibt.
  SetProp(P_SHORT, "Ein Hase"); 

  // Die Langbeschreibung, sieht man, wenn man 'untersuche Monster'
  SetProp(P_LONG,"Ein grauer Hase."); 

  // Die Groesse in Zentimeter
  SetProp(P_SIZE,40);

  // Das Gewicht in Gramm
  SetProp(P_WEIGHT,3000);
  
  // Die Klassen, bitte richtig und möglichst komplett setzen, 
  // da sie im Spiel an vielen Stellen benutzt werden! Alle 
  // Klassen findet man in /sys/class.h
  // Bedeutungen: CL_FUR -> Hase hat Fell, 
  //              CL_ANIMAL -> Hase ist ein Tier,
  //              CL_WALKING -> Hase bewegt sie gehend fort,  
  //              CL_MAMMAL -> Hase ist ein Saeugetier, 
  //              CL_MAMMAL_LAND -> Hase ist ein Landsaeuger, 
  //              CL_RABBIT -> Hase ist ein Hase 🙂

  AddClass(({CL_FUR,CL_ANIMAL,CL_MAMMAL,CL_WALKING,CL_MAMMAL_LAND, 
             CL_RABBIT}));

  // Die Rasse des Hasen
  SetProp(P_RACE,CL_RABBIT);

// Folgende Dinge sollten gesetzt werden.
 
  // Die Details des Hasen 
  AddDetail({"ohr","ohren"}),"Die Ohren sind enorm lang.");

  AddDetail(({"fell","hasenfell"}),"Das Fell ist grau.");

  // Womit greift der Hase an und wieviel Schaden macht er:
  // DT_WHIP -> Peitschender Schaden.
  // Alle Schaeden, die es gibt, kann man in /sys/combat.h
  // nachlesen.
  SetProp(P_HANDS,({ " mit seinen Ohren",30, DT_WHIP }));

  // Die Gesinnung des Hasen. Bei NPCs vom -1500 (satanisch)
  // bis +1500 (heilig)
  SetProp(P_ALIGN,300);

// Folgendes Sachen waeren schoen:
  // Die In-/Out- Medlungen

    // Meldungen bei 'normaler' Bewegung
  SetProp(P_MSGIN,    "hoppelt herein");
  SetProp(P_MSGOUT,   "hoppelt");

    // Bei Teleport, wo es keine Richtungen bei der Bewegung gibt
  SetProp(P_MMSGOUT,  "hoppelt davon");
  SetProp(P_MMSGIN,   "hoppelt herein");

  // Die Kampfpunkte, die ein Npc gibt. Muss man normalerweise
  // nicht setzen, da dies automatisch berechnet wird. Moechte
  // man aber eine Bonus darauf geben, geht das wie folgt (und
  // zwar IMMER GANZ AM ENDE VON CREATE! Im Beispiel: 1000
  // Bonus fuer den Kill.
  SetProp(P_XP,suggest_xp(1000));
}

Natürlich kann man noch viel viel mehr in einem NPC setzen. Wenn Du nicht weißt, wie etwas geht oder was noch möglich ist, einfach mal einen Magier Deiner Wahl im AnderLand fragen!

Gruß,

– It –

Magier: Freie Hände

Bild: Binär
Hallo zusammen!

Wieder eine neue Sache, diesmal mit einer kleinen Umstellung verbunden: die (freien) Hände werden neu/anders verwaltet.

Ab sofort solltet ihr, wenn ihr auf freie Hände testet, P_FREE_HANDS nutzen. P_USED_HANDS gibt es nämlich ab nächstem Reboot nicht mehr. 🙂 (Eure Objekte braucht ihr aber nicht zu ändern, das machen It und ich).

Weitere neue Funktionen in diesem Zusammenhang: UseHands() und FreeHands().

Neue Manpages: UseHands, FreeHands, P_HANDS_USED_BY, P_FREE_HANDS

Weiterhin viel Spaß beim Programmieren wünscht euch

Torin