Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/sys/ansi.h b/sys/ansi.h
new file mode 100644
index 0000000..4e4d244
--- /dev/null
+++ b/sys/ansi.h
@@ -0,0 +1,35 @@
+// MorgenGrauen MUDlib
+//
+// ansi.h -- Sequenzen fuer ANSI- und VT100-Terminals
+//
+// $Id: ansi.h,v 3.3 2000/02/12 16:18:42 Padreic Exp $
+
+#ifndef _ANSI_
+#define _ANSI_
+
+#define ANSI_BOLD "[1m"
+#define ANSI_UNDERL "[4m"
+#define ANSI_BLINK "[5m"
+#define ANSI_INVERS "[7m"
+
+#define ANSI_BLACK "[30m"
+#define ANSI_RED "[31m"
+#define ANSI_GREEN "[32m"
+#define ANSI_YELLOW "[33m"
+#define ANSI_BLUE "[34m"
+#define ANSI_PURPLE "[35m"
+#define ANSI_CYAN "[36m"
+#define ANSI_WHITE "[37m"
+
+#define ANSI_BG_BLACK "[40m"
+#define ANSI_BG_RED "[41m"
+#define ANSI_BG_GREEN "[42m"
+#define ANSI_BG_YELLOW "[43m"
+#define ANSI_BG_BLUE "[44m"
+#define ANSI_BG_PURPLE "[45m"
+#define ANSI_BG_CYAN "[46m"
+#define ANSI_BG_WHITE "[47m"
+
+#define ANSI_NORMAL "[0m"
+
+#endif
diff --git a/sys/armour.h b/sys/armour.h
new file mode 100644
index 0000000..b33e43e
--- /dev/null
+++ b/sys/armour.h
@@ -0,0 +1,41 @@
+// MorgenGrauen MUDlib
+//
+// armour.h -- armour header
+//
+// $Id: armour.h 9092 2015-01-19 23:57:50Z Zesstra $
+
+#ifndef __ARMOUR_H__
+#define __ARMOUR_H__
+
+#include <clothing.h>
+#include <combat.h>
+
+// properties
+#ifndef P_NR_HANDS
+#define P_NR_HANDS "nr_hands" // benoetigte Haende zum tragen (Schild)
+#endif
+
+#define P_AC "ac" // Ruestungsklasse (armour class)
+
+#define P_ARMOUR_TYPE "armour_type" // Art der Ruestung (Helm, Ring usw.)
+
+#define P_DEFEND_FUNC "defend_func" // Objekt das eine DefendFunc definiert
+
+#endif // __ARMOUR_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __ARMOUR_H_PROTO__
+#define __ARMOUR_H_PROTO__
+
+// prototypes
+int QueryDefend (string|string* dam_type, int|mapping spell, object enemy);
+
+// TO BE REMOVED
+
+void SetDefendFunc(object ob);
+object QueryDefendFunc();
+
+#endif // __ARMOUR_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/attributes.h b/sys/attributes.h
new file mode 100644
index 0000000..c00b3dc
--- /dev/null
+++ b/sys/attributes.h
@@ -0,0 +1,12 @@
+// MorgenGrauen MUDlib
+//
+// attributes.h -- living attributes
+//
+// $Id: attributes.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+#ifndef __ATTRIBUTES_H__
+#define __ATTRIBUTES_H__
+
+#include "/sys/living/attributes.h"
+
+#endif
diff --git a/sys/bank.h b/sys/bank.h
new file mode 100644
index 0000000..6c6306e
--- /dev/null
+++ b/sys/bank.h
@@ -0,0 +1,36 @@
+// MorgenGrauen MUDlib
+//
+// bank.h -- Definitionen fuer die Zentralbank bzw. Laeden
+//
+// $Id: bank.h 6749 2008-03-12 19:45:27Z Zesstra $
+
+#ifndef __BANK_H__
+#define __BANK_H__
+
+#define ZENTRALBANK "/p/daemon/zentralbank"
+
+// Diese Properties lassen sich nur abfragen!
+#define P_SHOP_PERCENT_LEFT "shop_percent_left" // Aktuelle Prozente in
+#define P_STORE_PERCENT_LEFT "store_percent_left" // Laden und Speicher
+#define P_CURRENT_MONEY "current_money" // Vermoegen des Ladens
+
+#define P_STORE_CONSUME "store_consume" /* default 20%, immer mind. 1% */
+#define P_MIN_STOCK "min_stock" /* mindest Vorrat an Gegenstaenden */
+
+#endif // __BANK_H__
+
+// Konstanten fuer die Implementation
+#ifdef NEED_PROTOTYPES
+#ifndef __BANK_H_PROTOTYPES__
+#define __BANK_H_PROTOTYPES__
+
+#define BANK_DEFAULT_PERCENT 20 // So viele % der Einzahlung gehen aufs Konto
+#define SHOP_PERCENT_LEFT 30 // So viele % kriegt der Laden fuer Objekte
+ // gutgeschrieben, die er zerstoert
+
+#define STORE_PERCENT_LEFT 25 // Dito fuer den Store
+
+#endif // __BANK_H_PROTOTYPES__
+
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/break_string.h b/sys/break_string.h
new file mode 100644
index 0000000..ff4f21a
--- /dev/null
+++ b/sys/break_string.h
@@ -0,0 +1,21 @@
+// MorgenGrauen MUDlib
+//
+// break_string.h - sym. Konstanten fuer break_string()
+//
+// $Id: defines.h 6415 2007-08-10 19:24:04Z Zesstra $
+
+#ifndef _BREAK_STRING_H_
+#define _BREAK_STRING_H_
+
+#define BS_LEAVE_MY_LFS 1
+#define BS_SINGLE_SPACE 2
+#define BS_BLOCK 4
+#define BS_NO_PARINDENT 8
+#define BS_INDENT_ONCE 16
+#define BS_PREPEND_INDENT 32
+// Falls hier Flags ergaenzt werden, sollten sie auch in living/comm.h fuer
+// ReceiveMsg() eingetragen werden. ReceiveMsg() kann per se auch nur 10
+// BS-Flags verarbeiten, das sollte beim Ergaenzen beachtet werden.
+
+#endif /* _BREAK_STRING_H_ */
+
diff --git a/sys/class.h b/sys/class.h
new file mode 100644
index 0000000..edfc389
--- /dev/null
+++ b/sys/class.h
@@ -0,0 +1,89 @@
+// MorgenGrauen MUDlib
+//
+// class.h -- Definitionen fuer Klassen von Objekten und Lebewesen.
+// Siehe AddClass()/is_class_member() in /std/thing/description.c
+//
+// $Id: class.h 9552 2016-04-24 09:53:13Z Arathorn $
+
+#ifndef __CLASS_H__
+#define __CLASS_H__
+
+#define CLASSDB "/p/daemon/classdb"
+
+/* -------------------- Klassen fuer "Lebewesen" -------------------- */
+
+#define CL_ANIMAL "tier"
+#define CL_ARACHNID "spinne" // und Spinnenartige
+#define CL_BIRD "vogel"
+#define CL_DARKELF "dunkelelf"
+#define CL_DEMON "daemon"
+#define CL_DRAGON "drache"
+#define CL_DWARF "zwerg"
+#define CL_ELF "elf"
+#define CL_ELEMENTAL "elementarwesen"
+#define CL_FELINE "feline"
+#define CL_FISH "fisch"
+#define CL_FROG "frosch"
+#define CL_FURIE "furie"
+#define CL_HARPY "harpyie"
+#define CL_GHOST "geist"
+#define CL_GHOUL "ghoul"
+#define CL_GIANT "riese"
+#define CL_GNOME "gnom"
+#define CL_GOBLIN "goblin"
+#define CL_HOBBIT "hobbit"
+#define CL_HOBGOBLIN "hobgoblin"
+#define CL_HUMAN "mensch"
+#define CL_ILLUSION "illusion" // Bsp. beschworene Illusionen
+#define CL_INSECT "insekt"
+#define CL_LIVING "lebewesen"
+#define CL_MAMMAL "saeugetier"
+#define CL_MAMMAL_LAND "landsaeuger"
+#define CL_MAMMAL_WATER "wassersaeuger" // Damit man Delphinen nicht das Haar wuschelt
+#define CL_ORC "ork"
+#define CL_PLANT "pflanze"
+#define CL_REPTILE "reptil"
+#define CL_SHADOW "schattenwesen"
+#define CL_SKELETON "skelett"
+#define CL_SLIME "schleimwesen" // Fuer Einzeller und aehnliches
+#define CL_SNAKE "schlange"
+#define CL_TROLL "troll"
+#define CL_UNDEAD "untoter"
+#define CL_VAMPIRE "_cl_vampir"
+#define CL_ZOMBIE "zombie"
+#define CL_SHAPECHANGER "gestaltwandler" // Bsp. Werwoelfe etc.
+#define CL_GOLEM "golem"
+#define CL_CONSTRUCT "konstrukt"
+
+/* ------------------ Klassen nach Bewegungsmethoden ----------------- */
+
+#define CL_WALKING "gehend"
+#define CL_CRAWLING "kriechend"
+#define CL_SWIMMING "schwimmend"
+#define CL_FLYING "fliegend"
+
+/* -------------------- Klassen fuer Gegenstaende -------------------- */
+
+#define CL_EXPLOSIVE "sprengstoff"
+#define CL_DISEASE "krankheit"
+#define CL_CURSE "fluch"
+#define CL_INORGANIC "anorganisch"
+#define CL_POISON "gift"
+#define CL_POISONOUS "giftiges"
+#define CL_AMMUNITION "munition"
+// Es kann auch fuer Gegenstaende CL_ILLUSION verwendet werden.
+
+#define CL_ALL ({CL_ANIMAL, CL_ARACHNID, CL_BIRD, CL_DEMON, CL_DRAGON, \
+ CL_DWARF, CL_ELF, CL_ELEMENTAL, CL_FELINE, CL_FISH, CL_FROG, \
+ CL_FURIE, CL_HARPY, CL_VAMPIRE,\
+ CL_GHOST, CL_GHOUL, CL_GIANT, CL_GNOME, CL_GOBLIN, CL_HOBBIT, \
+ CL_HOBGOBLIN, CL_HUMAN, CL_INORGANIC, CL_INSECT, CL_LIVING, \
+ CL_MAMMAL, CL_MAMMAL_LAND, CL_MAMMAL_WATER, CL_ORC, CL_PLANT, \
+ CL_REPTILE, CL_SHADOW, CL_SKELETON, CL_SLIME, CL_SNAKE, \
+ CL_TROLL, CL_UNDEAD, CL_ZOMBIE, CL_SHAPECHANGER, CL_WALKING, \
+ CL_CRAWLING, CL_SWIMMING, CL_FLYING, CL_EXPLOSIVE, \
+ CL_DISEASE, CL_CURSE, CL_POISON, CL_POISONOUS, \
+ CL_AMMUNITION, CL_ILLUSION, CL_GOLEM, CL_CONSTRUCT })
+
+#endif
+
diff --git a/sys/clothing.h b/sys/clothing.h
new file mode 100644
index 0000000..ad61841
--- /dev/null
+++ b/sys/clothing.h
@@ -0,0 +1,49 @@
+// MorgenGrauen MUDlib
+//
+// clothing.h -- clothing header
+//
+// $Id: clothing.h 6065 2006-09-29 23:22:52Z Zesstra $
+
+#ifndef __CLOTHING_H__
+#define __CLOTHING_H__
+
+// properties
+#define P_WORN "worn" // Objekt mit dem Traeger der Ruestung
+
+#define P_WEAR_FUNC "wear_func" // Objekt das eine WearFunc definiert
+#define P_REMOVE_FUNC "remove_func" // Objekt das eine RemoveFunc definiert
+
+#define P_WEAR_MSG "wear_msg" // Meldungen beim Anziehen
+#define P_UNWEAR_MSG "unwear_msg" // Meldungen beim Ausziehen
+
+#define P_LAST_WEAR_ACTION "last_wear_action" // Letzte Aktion des Spielers
+ // An- und ausziehen betreff
+
+// Die Wear-Actions im einzelnen
+
+#define WA_WEAR 0
+#define WA_UNWEAR 1
+
+#endif // __CLOTHING_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __CLOTHING_H_PROTO__
+#define __CLOTHING_H_PROTO__
+
+// prototypes
+// functions that will be called if one issues a wear command (or to manually
+// wear this armour
+varargs int do_wear(string str, int silent);
+
+// function that will be called if one issues an unwear command or to manually
+// unwear the armour
+varargs int do_unwear(string str, int silent);
+// function is the rest of do_unwear() -- msgs etc
+varargs int DoUnwear(int silent, int all);
+
+int ziehe(string str);
+
+#endif // __CLOTHING_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/combat.h b/sys/combat.h
new file mode 100644
index 0000000..d00cbd3
--- /dev/null
+++ b/sys/combat.h
@@ -0,0 +1,360 @@
+// MorgenGrauen MUDlib
+//
+// combat.h -- Schadenstypen, Waffen- und Ruestungsklassen und ein
+// paar Properties fuer das Kampfsystem
+//
+// $Id: combat.h 7178 2009-03-09 20:42:49Z Zesstra $
+
+#ifndef _COMBAT_H_
+#define _COMBAT_H_
+
+#include <weapon.h>
+#include <armour.h>
+#include <ranged_weapon.h>
+
+/* -------------------- Properties -------------------- */
+
+/* ---------- Kampf allgemein ---------- */
+
+#define P_ENABLE_IN_ATTACK_OUT "enable_in_attack_out"
+#define P_NO_GLOBAL_ATTACK "no_global_attack"
+#define P_FRIEND "friend"
+#define P_LAST_COMBAT_TIME "last_combat_time"
+
+/* ---------- Befrieden ---------------- */
+
+#define P_ACCEPT_PEACE "accept_peace"
+
+/* ---------- Waffen und Ruestungen ---------- */
+
+#define P_LAST_USE "last_object_use"
+#define P_DAMAGED "item_damaged"
+#define P_EFFECTIVE_WC "effective_wc"
+#define P_EFFECTIVE_AC "effective_ac"
+#define P_QUALITY "quality"
+#define P_RESTRICTIONS "restrictions"
+#define P_EQUIP_TIME "equip_time"
+
+/* ---------- Artillerie ------------*/
+
+#define P_IS_ARTILLERY "artillery"
+
+/* ---------- Fernkampfwaffen ---------- */
+
+#define P_SHOOTING_WC "shooting_wc"
+#define P_AMMUNITION "munition"
+#define P_STRETCH_TIME "stretch_time"
+#define P_RANGE "range"
+#define P_SHOOTING_AREA "shooting_area"
+#define P_TARGET_AREA "target_area"
+
+/* ----- Defines fuer Array-Positionen ----- */
+
+#define RW_SIZE 5
+#define RW_ENEMY 0
+#define RW_AMMU 1
+#define RW_WRITE 2
+#define RW_VICTIM 3
+#define RW_SAY 4
+
+/* -------------------- Waffentypen -------------------- */
+
+#define WT_AMMU "ammunition"
+#define WT_AXE "axe"
+#define WT_CLUB "club"
+#define WT_HANDS "hands"
+#define WT_KNIFE "knife"
+#define WT_MAGIC "magic"
+#define WT_RANGED_WEAPON "fernwaffe"
+#define WT_SPEAR "spear"
+#define WT_STAFF "staff"
+#define WT_SWORD "sword"
+#define WT_WHIP "whip"
+
+// Fuer alles, was sich unter den o.g. Typen nicht einordnen laesst
+#define WT_MISC "misc"
+
+/* ---------- Liste aller erlaubten Waffentypen ---------- */
+
+#define VALID_WEAPON_TYPE(t) (member(({\
+ WT_SWORD, WT_AXE, WT_CLUB, WT_SPEAR, WT_KNIFE, WT_AMMU, WT_MAGIC,\
+ WT_STAFF, WT_WHIP, WT_MISC, WT_RANGED_WEAPON }), t ) != -1)
+
+/* ---------- Maximal erlaubte Waffenstaerke ---------- */
+
+#define MAX_WEAPON_CLASS 200
+
+#define MAX_TWOHANDED_WC MAX_WEAPON_CLASS
+/* Die Einhaltung der Einhaender-Grenze wird bisher nicht garantiert */
+#define MAX_ONEHANDED_WC 150
+
+/* ---------- Mindest-Waffenstaerke, die eine Waffe
+ bei einer Beschaedigung behaelt ---------- */
+
+#define MIN_WEAPON_CLASS 30
+
+/* ---------- Maximal erlaubte Parierwaffenstaerke ---------- */
+
+#define MAX_PARRY_CLASS 40
+
+/* ---------- Auch fuer Paruerwaffen gibt
+ es eine Minimalstaerke ---------- */
+
+#define MIN_PARRY_CLASS 0
+
+/* ---------- Dito fuer Ruestungen ---------- */
+
+#define MIN_ARMOUR_CLASS 0
+
+/* -------------------- Munition fuer Fernkampfwaffen -------------------- */
+
+// als x bitte _immer_ den Namen der Munitionsart im Plural angeben,
+// dieses ermoeglicht ein auswerten via MUN_NAME() z.b. in gilden
+
+#define MUN_MISC(x) "Munition:"+x
+
+// ueber dieses define und bitte _nur_ ueber dieses define koennen
+// Gilden oder aehnliches den Namen einer Munitionsart ermitteln. Dieses
+// ist wichtig wenn naehere Infos ueber eine Waffe ausgegeben werden sollen.
+// Bsp. "Ein Bogen wiegt 1500 Gramm und erlaubt es Dir Pfeile mit einer
+// Reichweite von 50 m zu verschiessen."
+// sprintf("%s wiegt %d Gramm und erlaubt es Dir %s mit einer Reichweite "
+// +"von %d m zu verschiessen.", ob->Name(WER), ob->QueryProp(P_WEIGHT),
+// MUN_NAME(ob->QueryProp(P_AMMUNITION)), ob->QueryProp(P_RANGE))
+
+#define MUN_NAME(x) x[9..]
+
+#define MUN_ARROW MUN_MISC("Pfeile")
+#define MUN_STONE MUN_MISC("Steine")
+#define MUN_BOLT MUN_MISC("Bolzen")
+#define MUN_DART MUN_MISC("kleine Blasrohrpfeile")
+
+// Fuer die hier definierten Munitionstypen gibt es auch einen Schuss-Skill
+
+#define VALID_SHOOT_SKILL ([\
+ MUN_ARROW : "arrow",\
+ MUN_STONE : "stone",\
+ MUN_BOLT : "bolt",\
+ MUN_DART : "dart" ])
+
+/* -------------------- Schadensarten -------------------- */
+
+/* ---------- physikalisch --------- */
+
+// Schlagschaden
+#define DT_BLUDGEON "bludgeon"
+
+#define DT_EXPLOSION "explosion"
+
+// Stichschaden
+#define DT_PIERCE "pierce"
+
+// reissender Schaden/Krallen
+#define DT_RIP "rip"
+
+// Schnittschaden
+#define DT_SLASH "slash"
+
+// Quetschungsschaden
+#define DT_SQUEEZE "squeeze"
+
+// peitschender Schaden
+#define DT_WHIP "whip"
+
+/* ---------- Mapping aller physikalischen Schadensarten ---------- */
+
+#define PHYSICAL_DAMAGE_TYPES ([\
+ DT_BLUDGEON : 1,\
+ DT_EXPLOSION : 1,\
+ DT_PIERCE : 1,\
+ DT_RIP : 1,\
+ DT_SLASH : 1,\
+ DT_SQUEEZE : 1,\
+ DT_WHIP : 1 ])
+
+/* ----------- magisch ---------- */
+
+// Saeure
+#define DT_ACID "acid"
+
+// Luft(mangel)
+#define DT_AIR "air"
+
+// Kaelte oder Eis
+#define DT_COLD "cold"
+
+// Feuer
+#define DT_FIRE "fire"
+
+// heiliger Schaden
+#define DT_HOLY "holy"
+
+// Blitz oder Elektrizitaet
+#define DT_LIGHTNING "lightning"
+
+// (allg.) Magie
+#define DT_MAGIC "magic"
+
+// Gift
+#define DT_POISON "poison"
+
+// Laerm bzw. Schall
+#define DT_SOUND "sound"
+
+// Angst
+#define DT_TERROR "terror"
+
+// satanischer Schaden
+#define DT_UNHOLY "unholy"
+
+// Wasser
+#define DT_WATER "water"
+
+/* ---------- Mapping aller magischen Schadensarten ---------- */
+
+#define MAGICAL_DAMAGE_TYPES ([\
+ DT_ACID : 1,\
+ DT_AIR : 1,\
+ DT_COLD : 1,\
+ DT_FIRE : 1,\
+ DT_HOLY : 1,\
+ DT_LIGHTNING : 1,\
+ DT_MAGIC : 1,\
+ DT_POISON : 1,\
+ DT_SOUND : 1,\
+ DT_TERROR : 1,\
+ DT_UNHOLY : 1,\
+ DT_WATER : 1 ])
+
+
+/* ---------- Liste aller Schadensarten ---------- */
+
+#define ALL_DAMAGE_TYPES ({ DT_BLUDGEON, DT_SLASH, DT_PIERCE, DT_MAGIC, \
+ DT_FIRE, DT_COLD, DT_ACID, DT_WATER, \
+ DT_LIGHTNING, DT_AIR, DT_POISON, DT_EXPLOSION, \
+ DT_SQUEEZE, DT_SOUND, DT_RIP, DT_WHIP, \
+ DT_HOLY, DT_UNHOLY, DT_TERROR })
+
+/* Ist x ein gueltiger Schadenstyp der Mudlib? */
+#define VALID_DAMAGE_TYPE(x) (member(ALL_DAMAGE_TYPES, x) > -1)
+
+/* -------------------- Ruestungstypen -------------------- */
+
+#define AT_AMULET "Amulett"
+#define AT_ARMOUR "Ruestung"
+#define AT_BELT "Guertel"
+#define AT_BOOT "Schuhe"
+#define AT_CLOAK "Umhang"
+#define AT_GLOVE "Handschuh"
+#define AT_HELMET "Helm"
+#define AT_QUIVER "Koecher"
+#define AT_RING "Ring"
+#define AT_SHIELD "Schild"
+#define AT_TROUSERS "Hosen"
+
+// Fuer alles, was sich unter den o.g. Typen nicht einordnen laesst
+#define AT_MISC "Misc"
+
+// Ruestungen, die nicht angezogen werden koennen/duerfen
+#define AT_ILLEGAL "ILLEGAL"
+
+/* ---------- Liste aller erlaubten Ruestungstypen ---------- */
+
+#define VALID_ARMOUR_TYPE(t) (member(({\
+ AT_ARMOUR, AT_HELMET, AT_RING, AT_GLOVE, AT_CLOAK, AT_BOOT,\
+ AT_TROUSERS, AT_SHIELD, AT_AMULET, AT_MISC, AT_BELT,\
+ AT_QUIVER}), t ) != -1)
+
+/* ---------- Mapping mit den maximal erlaubten
+ Ruestungswerten der einzelnen Ruestungstypen ---------- */
+
+#define VALID_ARMOUR_CLASS ([ \
+ AT_AMULET : 2 ,\
+ AT_ARMOUR : 50 ,\
+ AT_BELT : 2 ,\
+ AT_BOOT : 6 ,\
+ AT_CLOAK : 10 ,\
+ AT_GLOVE : 5 ,\
+ AT_HELMET : 15 ,\
+ AT_QUIVER : 0 ,\
+ AT_RING : 2 ,\
+ AT_SHIELD : 40 ,\
+ AT_TROUSERS : 15 ,\
+ AT_MISC : 0 ])
+
+/* ---------- Mapping mit den Ruestungswerten, ab denen
+ die Ruestung im Laden einbehalten werden ---------- */
+
+#define KEEP_ARMOUR_CLASS ([ \
+ AT_AMULET : 2 ,\
+ AT_ARMOUR : 35 ,\
+ AT_BELT : 2 ,\
+ AT_BOOT : 5 ,\
+ AT_CLOAK : 7 ,\
+ AT_GLOVE : 5 ,\
+ AT_HELMET : 12 ,\
+ AT_QUIVER : 1 ,\
+ AT_RING : 2 ,\
+ AT_SHIELD : 26 ,\
+ AT_TROUSERS : 12 ,\
+ AT_MISC : 1 ])
+
+/* -------------------- Defines fuer Kampfkommandos -------------------- */
+
+#define C_AVG "avg"
+#define C_MAX "max"
+#define C_MIN "min"
+#define C_DTYPES "dtypes"
+#define C_HEAL "heal"
+
+
+/* -------------------- Defines fuer erweiterte Defendinformationen -- */
+#define EINFO_DEFEND "einfo_defend"
+#define ORIGINAL_DAM "original_dam"
+#define ORIGINAL_DAMTYPE "original_damtype"
+#define CURRENT_DAM "current_dam"
+#define CURRENT_DAMTYPE "current_damtype"
+#define ORIGINAL_AINFO "original_ainfo"
+#define ENEMY_INSERTED "enemy_inserted"
+#define RFR_REDUCE "rfr_reduce"
+#define PRESENT_DEFENDERS "present_defenders"
+#define DEFENDING_DEFENDER "defending_defender"
+#define DEFEND_HOOK "defend_hook"
+#define DEFEND_ARMOURS "defend_armours"
+#define DEFEND_GUILD "defend_guild"
+#define DEFEND_RESI "defend_resi"
+#define DEFEND_BODY "defend_body"
+#define DEFEND_LOSTLP "defend_lostlp"
+#define DEFEND_CUR_ARMOUR_PROT "defend_cur_armour_prot"
+
+#define DEF_DEFENDER 0
+#define DEF_DAM 1
+#define DEF_DAMTYPE 2
+#define DEF_SPELL 3
+
+#define HOOK_DAM 0
+#define HOOK_DAMTYPE 1
+#define HOOK_SPELL 2
+#define DI_NOHOOK 0
+#define DI_HOOK 1
+#define DI_HOOKINTERRUPT 2
+
+#define DEF_ARMOUR_DAM 0
+#define DEF_ARMOUR_PROT 1
+
+#define GUILD_DAM 0
+#define GUILD_DAMTYPE 1
+
+#endif
+
+/* -------------------- Prototypen-Deklarationen -------------------- */
+
+#ifndef __COMBAT_H_PROTOTYPES__
+#define __COMBAT_H_PROTOTYPES__
+
+#ifdef NEED_PROTOTYPES
+
+#endif // NEED_PROTOTYPES
+
+#endif // __COMBAT_H_PROTOTYPES__
+
diff --git a/sys/comm.h b/sys/comm.h
new file mode 100644
index 0000000..16aeb33
--- /dev/null
+++ b/sys/comm.h
@@ -0,0 +1,15 @@
+#ifndef LPC_COMM_H_
+#define LPC_COMM_H_
+
+/* return values for net_connect() */
+
+#define NC_SUCCESS 0 /* Success! */
+#define NC_EUNKNOWNHOST 1 /* host address could not be resolved */
+#define NC_ENOSOCKET 2 /* socket could not be created */
+#define NC_ENOBIND 3 /* socket could not be bound */
+#define NC_ENOCONNECT 4 /* socket could not be connected */
+#define NC_ECONNREFUSED 5 /* target address not listening */
+#define NC_EMCONN 6 /* too many pending connections */
+#define NC_ENORESSOURCES 7 /* insufficient system ressources */
+
+#endif /* LPC_COMM_H_ */
diff --git a/sys/commands.h b/sys/commands.h
new file mode 100644
index 0000000..3982372
--- /dev/null
+++ b/sys/commands.h
@@ -0,0 +1,50 @@
+#ifndef LPC_COMMANDS_H_
+#define LPC_COMMANDS_H_
+
+/* Flags accepted by add_action(fun, verb, flag).
+ * (Below, VERB is what the player enters).
+ * Negative flag values allow VERB to be just the first -<flag>
+ * characters of <verb> (abbreviated verb).
+ */
+
+#define AA_VERB 0 /* VERB must be <verb> */
+#define AA_SHORT 1 /* VERB must start with <verb>,
+ * args do not include extra characters */
+#define AA_NOSPACE 2 /* VERB must start with <verb>,
+ * args and verb do include extra characters */
+#define AA_IMM_ARGS 3 /* VERB must start with <verb>,
+ * args do include extra characters */
+
+/* Bitflags accepted by query_actions(object ob, int mask)
+ */
+
+#define QA_VERB 1
+#define QA_TYPE 2
+#define QA_SHORT_VERB 4
+#define QA_OBJECT 8
+#define QA_FUNCTION 16
+
+
+/* Indices in the arrays returned from command_stack()
+ */
+
+#define CMD_VERB 0
+#define CMD_TEXT 1
+#define CMD_ORIGIN 2
+#define CMD_PLAYER 3
+#define CMD_FAIL 4
+#define CMD_FAILOBJ 5
+
+#define CMD_SIZE 6
+
+
+/* Indices into the subarrays returned from match_command()
+ */
+#define CMDM_VERB 0
+#define CMDM_ARG 1
+#define CMDM_OBJECT 2
+#define CMDM_FUN 3
+
+#define CMDM_SIZE 4
+
+#endif /* LPC_COMMANDS_H_ */
diff --git a/sys/configuration.h b/sys/configuration.h
new file mode 100644
index 0000000..b2c0b88
--- /dev/null
+++ b/sys/configuration.h
@@ -0,0 +1,40 @@
+#ifndef LPC_CONFIGURATION_H_
+#define LPC_CONFIGURATION_H_
+
+/* Definition of argument values for the configure_*() efuns.
+ */
+
+/* Possible options for configure_interactive().
+ */
+#define IC_MAX_WRITE_BUFFER_SIZE 0
+#define IC_SOCKET_BUFFER_SIZE 1
+#define IC_COMBINE_CHARSET_AS_STRING 2
+#define IC_COMBINE_CHARSET_AS_ARRAY 3
+#define IC_CONNECTION_CHARSET_AS_STRING 4
+#define IC_CONNECTION_CHARSET_AS_ARRAY 5
+#define IC_QUOTE_IAC 6
+#define IC_TELNET_ENABLED 7
+#define IC_MCCP 8
+#define IC_PROMPT 9
+#define IC_MAX_COMMANDS 10
+#define IC_MODIFY_COMMAND 11
+
+/* Possible options for configure_object().
+ */
+#define OC_COMMANDS_ENABLED 0
+#define OC_HEART_BEAT 1
+
+/* Possible options for configure_driver().
+ */
+#define DC_MEMORY_LIMIT 0
+#define DC_ENABLE_HEART_BEATS 1
+#define DC_LONG_EXEC_TIME 2
+#define DC_DATA_CLEAN_TIME 3
+#define DC_TLS_CERTIFICATE 4
+#define DC_TLS_DHE_PARAMETER 5
+#define DC_TLS_CIPHERLIST 6
+#define DC_EXTRA_WIZINFO_SIZE 7
+#define DC_DEFAULT_RUNTIME_LIMITS 8
+#define DC_SWAP_COMPACT_MODE 9
+
+#endif /* LPC_CONFIGURATION_H_ */
diff --git a/sys/container.h b/sys/container.h
new file mode 100644
index 0000000..9555610
--- /dev/null
+++ b/sys/container.h
@@ -0,0 +1,73 @@
+// MorgenGrauen MUDlib
+//
+// container.h -- Properties und Definitionen fuer Behaelter
+//
+// $Id: container.h 9020 2015-01-10 21:49:41Z Zesstra $
+
+#ifndef __CONTAINER_H__
+#define __CONTAINER_H__
+
+#include <thing/restrictions.h>
+
+// properties
+#define P_CONTENTS "contents" // Obsolet!!!
+
+#define P_CONTAINER "container" // Objekt ist ein Container
+#define P_CNT_STATUS "cnt_status" // Status des Containers
+#define P_TRANSPARENT "transparent" // kann man hineinschaun?
+#define P_LIGHT_TRANSPARENCY "light_transparency" // Lichtdurchlaessigkeit
+
+#define P_PREPOSITION "preposition" // Sachen IN dem Container
+#define P_SOURCE_PREPOSITION "source_preposition" // kann man AUS ihm nehmen
+#define P_DEST_PREPOSITION "dest_preposition" // ...wieder IN ihn stecken
+
+#define P_MAX_WEIGHT "max_weight" // max. Gewicht
+#define P_WEIGHT_PERCENT "weight_percent" // Gewichtsreduktion in %
+
+#define P_TOTAL_OBJECTS "total_objects" // # der non-invis Objekte
+#define P_MAX_OBJECTS "max_objects" // max. Objektanzahl
+
+#define P_INT_LIGHT "int_light"
+
+#define P_ITEMS "items" // siehe AddItem()
+
+#define P_PREVENT_PILE "prevent_pile" // siehe /std/corpse
+#define P_PILE_NAME "pile_name" // Name des Spielers im Dativ
+
+// special defines
+#define CNT_STATUS_OPEN 0
+#define CNT_STATUS_CLOSED 1
+#define CNT_STATUS_LOCKED 2
+
+#define R_INSERT "insert"
+
+#define CNT_ARRAY 1
+#define CNT_COLLECT 2
+
+#endif // __CONTAINER_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __CONTAINER_H_PROTO__
+#define __CONTAINER_H_PROTO__
+
+// prototypes
+// from: container/description.c
+varargs mixed make_invlist(object viewer, mixed inv, int array);
+
+// from: container/restrictions.c
+int query_weight_contents();
+static int _query_last_content_change();
+
+int MayAddWeight(int w);
+int MayAddObject(object ob);
+public int PreventInsert(object ob);
+public int PreventLeave(object ob, mixed dest);
+object *present_objects(string complex_desc);
+object *locate_objects(string complex_desc,int info);
+
+// container/items.c
+public varargs object AddItem( mixed filename, int refresh, mixed props);
+#endif // __CONTAINER_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/container/moneyhandler.h b/sys/container/moneyhandler.h
new file mode 100644
index 0000000..62df3b7
--- /dev/null
+++ b/sys/container/moneyhandler.h
@@ -0,0 +1,20 @@
+// MorgenGrauen MUDlib
+//
+// container/moneyhandler.h -- Das -Geld-Interface
+//
+// $Id: moneyhandler.h,v 3.1 1997/02/12 13:29:09 Wargon Exp $
+
+#ifndef __CONTAINER_MONEYHANDLER_H__
+#define __CONTAINER_MONEYHANDLER_H__
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __CONTAINER_MONEYHANDLER_H_PROTO__
+#define __CONTAINER_MONEYHANDLER_H_PROTO__
+
+int AddMoney(int amount);
+int QueryMoney();
+
+#endif
+#endif
diff --git a/sys/daemon.h b/sys/daemon.h
new file mode 100644
index 0000000..4479bca
--- /dev/null
+++ b/sys/daemon.h
@@ -0,0 +1,10 @@
+// MorgenGrauen MUDlib
+//
+// daemon.h -- Definitionen fuer Objekte in /p/daemon/
+//
+// $Id: daemon.h 7419 2010-02-07 21:04:40Z Zesstra $
+
+#include "/sys/daemon/channel.h" // channel handling
+#include "/sys/daemon/object.h" // persistent object handling
+#include "/sys/daemon/traveld.h" // TRAVEL daemon
+#include "/sys/daemon/mand.h" // MAN daemon
diff --git a/sys/daemon/channel.h b/sys/daemon/channel.h
new file mode 100644
index 0000000..9f512e0
--- /dev/null
+++ b/sys/daemon/channel.h
@@ -0,0 +1,6 @@
+// ch.h - channel daemon defines
+// --
+// $timestamp::$
+
+#include "/p/daemon/channel.h"
+
diff --git a/sys/daemon/mand.h b/sys/daemon/mand.h
new file mode 100644
index 0000000..309f8d5
--- /dev/null
+++ b/sys/daemon/mand.h
@@ -0,0 +1,22 @@
+// MorgenGrauen MUDlib
+//
+// mand.h
+//
+// $Id: mand.h 6698 2008-01-29 23:26:08Z Zesstra $
+
+
+#ifndef __MAND_H__
+#define __MAND_H__
+
+#define MAND_DOCDIR "/doc/"
+#define MAND_EXCLUDE ({ "3.0","KURS","beispiele","old","new", "infomails"})
+#define MAND "/p/daemon/mand"
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __MAND_H_PROTOS__
+#define __MAND_H_PROTOS__
+
+#endif
+#endif
diff --git a/sys/daemon/object.h b/sys/daemon/object.h
new file mode 100644
index 0000000..1ec06ac
--- /dev/null
+++ b/sys/daemon/object.h
@@ -0,0 +1,41 @@
+// MorgenGrauen MUDlib
+//
+// OBJECT.H -- persistent object handling
+//
+// $Date: 2002/08/28 10:04:28 $
+// $Revision: 1.1 $
+/* $Log: object.h,v $
+ * Revision 1.1 2002/08/28 10:04:28 Rikus
+ * Initial revision
+ *
+ * Revision 1.1 1995/03/31 13:30:33 Hate
+ * Initial revision
+ *
+ * Revision 1.1 1994/03/20 17:07:28 Hate
+ * Initial revision
+ *
+ */
+
+#ifndef __OBJECT_H__
+#define __OBJECT_H__
+
+// defines
+#define OBJECTD "/p/daemon/objectd"
+#define OBJECTD_SAVE "/p/daemon/save/objectd"
+
+#endif // __OBJECT_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __OBJECT_H_PROTO__
+#define __OBJECT_H_PROTO__
+
+// prototypes
+mixed AddObject(string obj, string env);
+mixed RemoveObject(string obj, string env);
+varargs void QueryObject(mixed env);
+
+
+#endif // __OBJECT_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/daemon/traveld.h b/sys/daemon/traveld.h
new file mode 100644
index 0000000..c17a637
--- /dev/null
+++ b/sys/daemon/traveld.h
@@ -0,0 +1,22 @@
+#ifndef __TRAVELD_H__
+#define __TRAVELD_H__
+
+#define TRAVELD "/p/daemon/traveld"
+#define TRAVELD_SAVEFILE "/p/daemon/save/traveld"
+
+#ifdef NEED_PROTOTYPES
+#ifndef __TRAVELD_H_PROTO__
+#define __TRAVELD_H_PROTO__
+
+public void AddStop(string ship, string harbour);
+public void RemoveTransporter(object ship);
+public varargs mixed HasTransporter(object harbour, string ship);
+public mixed RouteExists(object ship, string dest);
+public mapping QueryShips();
+public mapping QueryAllHarbours();
+
+#endif // __TRAVELD_H_PROTO__
+
+#endif // NEED_PROTOTYPES
+
+#endif // __TRAVELD_H__
diff --git a/sys/daemon/whois.h b/sys/daemon/whois.h
new file mode 100644
index 0000000..b62682c
--- /dev/null
+++ b/sys/daemon/whois.h
@@ -0,0 +1,21 @@
+#ifndef __DAEMON_WHOIS_H__
+#define __DAEMON_WHOIS_H__
+
+#define WHOIS "/p/daemon/udp/whois"
+
+#define DESCR 0
+#define COUNTRY 1
+#define DATE 2
+#define NETNAME 3
+
+
+// prototypes
+#ifdef NEED_PROTOTYPES
+
+mixed whois(string query, int type);
+string country(string query);
+string city(string query);
+string locate(string query, string ip);
+
+#endif /* NEED_PROTOTYPES */
+#endif /* __DAEMON_WHOIS_H__ */
diff --git a/sys/death_room.h b/sys/death_room.h
new file mode 100644
index 0000000..045db1b
--- /dev/null
+++ b/sys/death_room.h
@@ -0,0 +1,9 @@
+
+#ifndef _DEATH_ROOM_H_
+#define _DEATH_ROOM_H_
+
+
+// x muss ein Spielerobjekt sein
+#define IS_IN_DEATH_ROOM(x) (environment(x)&&object_name(environment(x))==("/room/death/virtual/death_room_"+getuid(x)))
+
+#endif
diff --git a/sys/debug.h b/sys/debug.h
new file mode 100644
index 0000000..188043a
--- /dev/null
+++ b/sys/debug.h
@@ -0,0 +1,61 @@
+// MorgenGrauen MUDlib
+//
+// debug.h -- Debug-Optionen fuer die MUDlib
+//
+// $Id: debug.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+#ifndef _DEBUG_
+#define _DEBUG_
+
+
+/*
+ * LPC debug options
+ */
+
+
+#define NODEBUG /* all debugging modes disabled */
+
+#ifndef NODEBUG
+
+#define DEBUG_STD_CREATE /* debug object creation in /std objects */
+/* #define DEBUG_PROPERTIES /* some property debug functions */
+/* #define DEBUG_ID /* echo the object id operation */
+#define DEBUG_PICK /* object pickup */
+#define DEBUG_CMDS /* command debugging for init */
+#define DEBUG_DOMAIN /* debug domain files */
+#define DEBUG_DOOR /* debug doors */
+#define WARN_UNDEFPROP /* warnings if undef properties are set */
+#define DEBUG_EVENTS /* debug event handler call */
+#define DEBUG_MOVE /* debug in object moving */
+
+#define DEBUG_RES /* debug restriction handling */
+#define DEBUG_RES_MAX /* debug restriction |res_max| */
+#define DEBUG_RES_LIMIT /* debug restriction |res_limit| */
+#define DEBUG_RES_PLAYER /* restriction of number of something */
+/* #define DEBUG_FUNCTION /* debug message functions */
+/* #define DEBUG_ARRAY /* debug array and member comparison */
+#define DEBUG_PROPAGATION /* debug background propagation mechanism */
+#define DEBUG_RES_GROUND /* debug ground type restrictions */
+#define DEBUG_FEATURES /* debug feature mechanism */
+#define DEBUG_RES_FEATURES /* debug feature mechanism */
+#define DEBUG_VIEW /* debug players vision */
+#define DEBUG_PROPAGATION /* debug background propagation mechanism */
+#define DEBUG_MSG /* message debugging */
+#define DEBUG_SELECT /* debug selection mechanism */
+#define DEBUG_RESOURCES /* debug living resources */
+#define DEBUG_ISME /* debug the is_me operation */
+#define DEBUG_FOLLOW /* debug follow mode for walkers */
+#define DEBUG_RESOURCES2 /* debug living resources */
+#define ACCESS_DEBUG 1 /* debug of access control */
+#define DEBUG_SAVE /* debug loading and saving of objects */
+#define DEBUG_BOARD /* debug board system */
+#define DEBUG_ASEE /* debug "to see" ability */
+#define DEBUG_SPELLS /* debug spells */
+#define DEBUG_BATTLE /* debug battle system */
+
+#endif
+
+
+
+#endif
+
diff --git a/sys/debug_info.h b/sys/debug_info.h
new file mode 100644
index 0000000..34fb7ee
--- /dev/null
+++ b/sys/debug_info.h
@@ -0,0 +1,218 @@
+#ifndef LPC_DEBUG_INFO_H_
+#define LPC_DEBUG_INFO_H_ 1
+
+#include "/sys/driver_info.h"
+
+/* Request values for efun debug_info().
+ */
+
+#define DINFO_OBJECT 0 /* Print information about an object */
+#define DINFO_MEMORY 1 /* Print memory usage of an object */
+#define DINFO_OBJLIST 2 /* Return an object from the global list */
+#define DINFO_MALLOC 3 /* Print the information from the 'malloc' cmd */
+#define DINFO_STATUS 4 /* Return the 'status' information */
+#define DINFO_DUMP 5 /* Dump some special information into files */
+#define DINFO_DATA 6 /* Return internal information */
+#define DINFO_TRACE 7 /* Return the current call trace */
+#define DINFO_EVAL_NUMBER 8 /* Return the current eval number */
+
+/* Sub-request values for debug_info(DINFO_DATA) */
+
+#define DID_STATUS 0 /* Return the 'status' and 'status tables' information */
+#define DID_SWAP 1 /* Return the 'status swap' information */
+#define DID_MEMORY 2 /* Return the 'status malloc' information */
+
+/* Sub-request values for debug_info(DINFO_TRACE) */
+
+#define DIT_CURRENT 0 /* Return the current call chain as an array */
+#define DIT_ERROR 1 /* Return the last error call chain as an array */
+#define DIT_UNCAUGHT_ERROR 2 /* Return the last uncaught error call chain */
+#define DIT_STR_CURRENT 3 /* Return the current call chain as a string */
+#define DIT_CURRENT_DEPTH 4 /* Return the current control stack depth */
+
+/* Indices into the array resulting from debug_info(DINFO_DATA, DID_STATUS)
+ */
+
+#define DID_ST_ACTIONS 0
+#define DID_ST_ACTIONS_SIZE 1
+#define DID_ST_SHADOWS 2
+#define DID_ST_SHADOWS_SIZE 3
+
+#define DID_ST_OBJECTS 4
+#define DID_ST_OBJECTS_SIZE 5
+#define DID_ST_OBJECTS_SWAPPED 6
+#define DID_ST_OBJECTS_SWAP_SIZE 7
+#define DID_ST_OBJECTS_LIST 8
+#define DID_ST_OBJECTS_NEWLY_DEST 9
+#define DID_ST_OBJECTS_DESTRUCTED 10
+#define DID_ST_OBJECTS_PROCESSED 11
+#define DID_ST_OBJECTS_AVG_PROC 12
+
+#define DID_ST_OTABLE 13
+#define DID_ST_OTABLE_SLOTS 14
+#define DID_ST_OTABLE_SIZE 15
+
+#define DID_ST_HBEAT_OBJS 16
+#define DID_ST_HBEAT_CALLS 17
+#define DID_ST_HBEAT_CALLS_TOTAL 18
+#define DID_ST_HBEAT_SLOTS 19
+#define DID_ST_HBEAT_SIZE 20
+#define DID_ST_HBEAT_PROCESSED 21
+#define DID_ST_HBEAT_AVG_PROC 22
+
+#define DID_ST_CALLOUTS 23
+#define DID_ST_CALLOUT_SIZE 24
+
+#define DID_ST_ARRAYS 25
+#define DID_ST_ARRAYS_SIZE 26
+
+#define DID_ST_MAPPINGS 27
+#define DID_ST_MAPPINGS_SIZE 28
+#define DID_ST_HYBRID_MAPPINGS 51
+#define DID_ST_HASH_MAPPINGS 54
+
+#define DID_ST_STRUCTS 29
+#define DID_ST_STRUCTS_SIZE 30
+#define DID_ST_STRUCT_TYPES 31
+#define DID_ST_STRUCT_TYPES_SIZE 32
+
+#define DID_ST_PROGS 33
+#define DID_ST_PROGS_SIZE 34
+
+#define DID_ST_PROGS_SWAPPED 35
+#define DID_ST_PROGS_SWAP_SIZE 36
+
+#define DID_ST_USER_RESERVE 37
+#define DID_ST_MASTER_RESERVE 38
+#define DID_ST_SYSTEM_RESERVE 39
+
+#define DID_ST_ADD_MESSAGE 40
+#define DID_ST_PACKETS 41
+#define DID_ST_PACKET_SIZE 42
+#define DID_ST_PACKETS_IN 43
+#define DID_ST_PACKET_SIZE_IN 44
+
+#define DID_ST_APPLY 45
+#define DID_ST_APPLY_HITS 46
+
+#define DID_ST_STRINGS 47
+#define DID_ST_STRING_SIZE 48
+#define DID_ST_STR_TABLE_SIZE 49
+#define DID_ST_STR_OVERHEAD 50
+#define DID_ST_UNTABLED 52
+#define DID_ST_UNTABLED_SIZE 53
+#define DID_ST_UNUSED54 54 /* UNUSED */
+#define DID_ST_UNUSED55 55 /* UNUSED */
+#define DID_ST_TABLED 56
+#define DID_ST_TABLED_SIZE 57
+#define DID_ST_STR_SEARCHES 58
+#define DID_ST_STR_SEARCHLEN 59
+#define DID_ST_STR_SEARCHES_BYVALUE 60
+#define DID_ST_STR_SEARCHLEN_BYVALUE 61
+#define DID_ST_STR_CHAINS 62
+#define DID_ST_STR_ADDED 63
+#define DID_ST_STR_DELETED 64
+#define DID_ST_STR_COLLISIONS 65
+#define DID_ST_STR_FOUND 66
+#define DID_ST_STR_FOUND_BYVALUE 67
+
+#define DID_ST_RX_CACHED 68
+#define DID_ST_RX_TABLE 69
+#define DID_ST_RX_TABLE_SIZE 70
+#define DID_ST_RX_REQUESTS 71
+#define DID_ST_RX_REQ_FOUND 72
+#define DID_ST_RX_REQ_COLL 73
+
+#define DID_ST_MB_FILE 74
+#define DID_ST_MB_SWAP 75
+
+#define DID_ST_BOOT_TIME 76
+
+#define DID_STATUS_MAX 77 /* Total number of entries */
+
+
+/* Indices into the array resulting from debug_info(DINFO_DATA, DID_SWAP)
+ */
+
+#define DID_SW_PROGS 0
+#define DID_SW_PROG_SIZE 1
+#define DID_SW_PROG_UNSWAPPED 2
+#define DID_SW_PROG_U_SIZE 3
+#define DID_SW_VARS 4
+#define DID_SW_VAR_SIZE 5
+#define DID_SW_FREE 6
+#define DID_SW_FREE_SIZE 7
+#define DID_SW_FILE_SIZE 8
+#define DID_SW_REUSED 9
+#define DID_SW_SEARCHES 10
+#define DID_SW_SEARCH_LEN 11
+#define DID_SW_F_SEARCHES 12
+#define DID_SW_F_SEARCH_LEN 13
+#define DID_SW_COMPACT 14
+#define DID_SW_RECYCLE_FREE 15
+
+#define DID_SWAP_MAX 16
+
+
+/* Indices into the array resulting from debug_info(DINFO_DATA, DID_MEMORY)
+ */
+
+#define DID_MEM_NAME 0
+#define DID_MEM_SBRK 1
+#define DID_MEM_SBRK_SIZE 2
+#define DID_MEM_LARGE 3
+#define DID_MEM_LARGE_SIZE 4
+#define DID_MEM_LFREE 5
+#define DID_MEM_LFREE_SIZE 6
+#define DID_MEM_LWASTED 7
+#define DID_MEM_LWASTED_SIZE 8
+#define DID_MEM_CHUNK 9
+#define DID_MEM_CHUNK_SIZE 10
+#define DID_MEM_SLAB (DID_MEM_CHUNK)
+#define DID_MEM_SLAB_SIZE (DID_MEM_CHUNK_SIZE)
+#define DID_MEM_SMALL 11
+#define DID_MEM_SMALL_SIZE 12
+#define DID_MEM_SFREE 13
+#define DID_MEM_SFREE_SIZE 14
+#define DID_MEM_SWASTED 15
+#define DID_MEM_SWASTED_SIZE 16
+#define DID_MEM_SMALL_OVERHEAD_SIZE (DID_MEM_SWASTED_SIZE)
+#define DID_MEM_MINC_CALLS 17
+#define DID_MEM_MINC_SUCCESS 19
+#define DID_MEM_MINC_SIZE 19
+#define DID_MEM_PERM 20
+#define DID_MEM_PERM_SIZE 21
+#define DID_MEM_CLIB 22
+#define DID_MEM_CLIB_SIZE 23
+#define DID_MEM_OVERHEAD 24
+#define DID_MEM_ALLOCATED 25
+#define DID_MEM_USED 26
+#define DID_MEM_TOTAL_UNUSED 27
+#define DID_MEM_DEFRAG_CALLS 28
+#define DID_MEM_DEFRAG_CALLS_REQ 29
+#define DID_MEM_SLAB_FREE (DID_MEM_DEFRAG_CALLS)
+#define DID_MEM_SLAB_FREE_SIZE (DID_MEM_DEFRAG_CALLS_REQ)
+#define DID_MEM_DEFRAG_REQ_SUCCESS 30
+#define DID_MEM_DEFRAG_BLOCKS_INSPECTED 31
+#define DID_MEM_DEFRAG_BLOCKS_MERGED 32
+#define DID_MEM_DEFRAG_BLOCKS_RESULT 33
+#define DID_MEM_AVL_NODES 34
+#define DID_MEM_EXT_STATISTICS 35
+
+#define DID_MEMORY_MAX 36
+
+/* Indices into the subarrays of DID_MEM_EXT_STATISTICS (if given) */
+
+#define DID_MEM_ES_MAX_ALLOC 0
+#define DID_MEM_ES_CUR_ALLOC 1
+#define DID_MEM_ES_MAX_FREE 2
+#define DID_MEM_ES_CUR_FREE 3
+#define DID_MEM_ES_AVG_XALLOC 4
+#define DID_MEM_ES_AVG_XFREE 5
+#define DID_MEM_ES_FULL_SLABS 6
+#define DID_MEM_ES_FREE_SLABS 7
+#define DID_MEM_ES_TOTAL_SLABS 8
+
+#define DID_MEM_ES_MAX 9
+
+#endif /* LPC_DEBUG_INFO_H_ */
diff --git a/sys/debug_message.h b/sys/debug_message.h
new file mode 100644
index 0000000..c5944d9
--- /dev/null
+++ b/sys/debug_message.h
@@ -0,0 +1,18 @@
+#ifndef LPC_DEBUG_MESSAGE_H_
+#define LPC_DEBUG_MESSAGE_H_ 1
+
+/* Definitions and macros for the debug_message() */
+
+#define DMSG_DEFAULT 0 /* log to stdout and .debug.log */
+#define DMSG_STDOUT (1 << 0) /* log to stdout */
+#define DMSG_STDERR (1 << 1) /* log to stderr */
+#define DMSG_LOGFILE (1 << 2) /* log to .debug.log */
+
+#define DMSG_STAMP (1 << 3) /* Prepend the timestamp */
+
+/* Derived macros */
+
+#define DMSG_TARGET (DMSG_STDOUT|DMSG_STDERR|DMSG_LOGFILE)
+ /* Mask for all target bitflags */
+
+#endif /* LPC_DEBUG_MESSAGE_H_ */
diff --git a/sys/defines.h b/sys/defines.h
new file mode 100644
index 0000000..484b66f
--- /dev/null
+++ b/sys/defines.h
@@ -0,0 +1,63 @@
+// MorgenGrauen MUDlib
+//
+// defines.h -- Nuetzliche und oft gebrauchte Definitionen
+//
+// $Id: defines.h 7265 2009-08-21 18:13:22Z Zesstra $
+
+#ifndef _DEFINES_H_
+#define _DEFINES_H_
+
+// defines.h darf leider keine Standard-Includeverzeichnisse benutzen, weils
+// es vom Master selber benutzt wird.
+#include "/sys/break_string.h"
+
+#ifndef ME
+#define ME this_object()
+#endif
+
+#ifndef PL
+#define PL this_player()
+#endif
+
+#ifndef RPL
+#define RPL this_interactive()
+#endif
+
+#ifndef CAP
+#define CAP(str) capitalize(str)
+#endif
+
+#ifndef QPP
+#define QPP QueryPossPronoun
+#endif
+
+#define REAL_UID(x) (explode(getuid(x), ".")[<1])
+#define REAL_EUID(x) (explode(geteuid(x), ".")[<1])
+
+// obsolet, nur aus Kompatibilitaetsgruenden noch vorhanden
+#ifndef IS_CLONE
+#define IS_CLONE(ob) (clonep(ob))
+#endif
+
+// obsolet, nur aus Kompatibilitaetsgruenden noch vorhanden
+#ifndef IS_BLUE
+#define IS_BLUE(ob) (!clonep(ob))
+#endif
+
+#ifndef BLUE_NAME
+#define BLUE_NAME(ob) load_name(ob)
+//#define BLUE_NAME(ob) (explode(object_name(ob),"#")[0])
+#endif
+
+#ifndef IS_PARA
+#define IS_PARA(ob) (sizeof(regexp(({to_string(ob)}),"\\^[1-9][0-9]*$")))
+
+#endif
+
+// obsolet, nur aus Kompatibilitaetsgruenden noch vorhanden
+#ifndef MAX
+#define MAX(a,b) max(a,b)
+#endif
+
+#endif /* _DEFINES_H_ */
+
diff --git a/sys/defuel.h b/sys/defuel.h
new file mode 100644
index 0000000..d5f2f0d
--- /dev/null
+++ b/sys/defuel.h
@@ -0,0 +1,39 @@
+// MorgenGrauen MUDlib
+//
+// defuel.h -- Header fuer defuel.c (Enttanken)
+//
+// $Id: defuel.h,v 1.3 2003/11/11 10:59:06 Muadib Exp $
+
+#ifndef __DEFUEL_H__
+#define __DEFUEL_H__
+
+//--------------------------------------------------------------------------
+// Statistik
+#define FUELSTAT "/d/erzmagier/muadib/fuelstat/fuelstat"
+
+
+//--------------------------------------------------------------------------
+// Limit - #defines
+// Ab wieviel kann man ueberhaupt enttanken? (rassenabhaengig)
+#define P_DEFUEL_LIMIT_FOOD "defuel_limit_food"
+#define P_DEFUEL_LIMIT_DRINK "defuel_limit_drink"
+
+//--------------------------------------------------------------------------
+// Time - #defines
+// Wielange muss man zwischen dem Enttanken verdauen? (rassenabhaengig)
+#define P_DEFUEL_TIME_FOOD "defuel_time_food"
+#define P_DEFUEL_TIME_DRINK "defuel_time_drink"
+
+//--------------------------------------------------------------------------
+// Amount - #defines
+// Wieviel Prozent der aktuellen P_FOOD/P_DRINK Werte kann man enttanken?
+// (rassenabhaenhig)
+#define P_DEFUEL_AMOUNT_FOOD "defuel_amount_food"
+#define P_DEFUEL_AMOUNT_DRINK "defuel_amount_drink"
+
+// Returnwerte der zu verwendeten Interfaces
+#define NO_DEFUEL 0 // leer
+#define DEFUEL_TOO_LOW -1 // nicht leer, aber zu wenig
+#define DEFUEL_TOO_SOON -2 // letztes entanken ist noch nicht
+ // lange genug her
+#endif // __DEFUEL_H__
diff --git a/sys/doorroom.h b/sys/doorroom.h
new file mode 100644
index 0000000..8f63143
--- /dev/null
+++ b/sys/doorroom.h
@@ -0,0 +1,73 @@
+// MorgenGrauen MUDlib
+//
+// doorroom.h -- new doors, managed by doormaster
+//
+// $Id: doorroom.h 9128 2015-01-26 17:42:21Z Arathorn $
+
+#ifndef _DOORROOM_H_
+#define _DOORROOM_H_
+
+#define DOOR_MASTER "/obj/doormaster"
+#define P_DOOR_INFOS "door_infos" // Informationen
+
+#define DOOR_OPEN 0x01 // Tuer initial offen
+#define DOOR_CLOSED 0x02 // Tuer initial zu
+#define DOOR_NEEDKEY 0x08 // Man braucht einen Schluessel zum Oeffnen
+#define DOOR_CLOSEKEY 0x10 // Man braucht einen Schluessel zum Schliessen
+#define DOOR_RESET_CL 0x20 // Tuer schliesst sich bei jedem reset()
+#define DOOR_RESET_OP 0x40 // Tuer oeffnet sich bei jedem reset()
+
+#define D_DEST 0
+#define D_CMDS 1
+#define D_IDS 2
+
+// properties
+// Ab hier die aenderbaren Eigenschaften der Tuer
+#define D_FLAGS 3
+#define D_LONG 4
+#define D_SHORT 5
+#define D_NAME 6
+#define D_GENDER 7
+#define D_FUNC 8
+// Funktion, die VOR dem Durchschreiten der Tuer aufgerufen wird (im Startraum)
+#define D_MSGS 9
+// Messages fuer Move
+#define D_FUNC2 10
+// Funktion, die NACH dem Durchschreiten der Tuer aufgerufen wird (im Zielraum)
+#define D_TESTFUNC 11
+// Funktion, die testet, ob die Tuer durchschritten werden darf (im Startraum)
+#define D_RESET_MSG 12
+// Meldung beim Tuer-Reset (tuer->name(WER,0)+D_RESET_MSG).
+#define D_OPEN_WITH_MOVE 13
+// Falls gesetzt wird die Tuer auch mit dem Bewegungsbefehl geoeffnet
+// und durchschritten, falls oeffnen erfolgreich
+
+#define D_MINPROPS 3
+#define D_MAXPROPS 13
+
+#define D_STATUS_LOCKED -2
+#define D_STATUS_CLOSED -1
+#define D_STATUS_OPEN 1
+
+#endif /* _DOORROOM_H_ */
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __DOORROOM_H_PROTO__
+#define __DOORROOM_H_PROTO__
+
+// prototypes
+mapping QueryAllDoors();
+varargs int NewDoor(string|string* cmds, string dest, string|string* ids,
+ mapping|<int|string|string*>* props);
+void init_doors ();
+string look_doors ();
+void reset_doors ();
+varargs int go_door (string str);
+//int oeffnen (string str);
+//int schliessen (string str);
+int set_doors (string *cmds, int open);
+varargs string GetExits(object viewer);
+
+#endif /* __DOORROOM_H_PROTO__ */
+#endif /* NEED_PROTOTYPES */
diff --git a/sys/driver_hook.h b/sys/driver_hook.h
new file mode 100644
index 0000000..0b97f80
--- /dev/null
+++ b/sys/driver_hook.h
@@ -0,0 +1,36 @@
+#ifndef LPC_DRIVER_HOOK_H_
+#define LPC_DRIVER_HOOK_H_ 1
+
+/* --- Driver Hooks ---
+ */
+
+#define H_MOVE_OBJECT0 0
+#define H_MOVE_OBJECT1 1
+#define H_LOAD_UIDS 2
+#define H_CLONE_UIDS 3
+#define H_CREATE_SUPER 4
+#define H_CREATE_OB 5
+#define H_CREATE_CLONE 6
+#define H_RESET 7
+#define H_CLEAN_UP 8
+#define H_MODIFY_COMMAND 9
+#define H_NOTIFY_FAIL 10
+#define H_NO_IPC_SLOT 11
+#define H_INCLUDE_DIRS 12
+#define H_TELNET_NEG 13
+#define H_NOECHO 14
+#define H_ERQ_STOP 15
+#define H_MODIFY_COMMAND_FNAME 16
+#define H_COMMAND 17
+#define H_SEND_NOTIFY_FAIL 18
+#define H_AUTO_INCLUDE 19
+#define H_DEFAULT_METHOD 20
+#define H_DEFAULT_PROMPT 21
+#define H_PRINT_PROMPT 22
+#define H_REGEXP_PACKAGE 23
+#define H_MSG_DISCARDED 24
+
+#define NUM_DRIVER_HOOKS 25 /* Number of hooks */
+
+#endif /* LPC_DRIVER_HOOK_ */
+
diff --git a/sys/driver_info.h b/sys/driver_info.h
new file mode 100644
index 0000000..336975c
--- /dev/null
+++ b/sys/driver_info.h
@@ -0,0 +1,237 @@
+#ifndef LPC_DRIVER_INFO_H_
+#define LPC_DRIVER_INFO_H_
+
+/* Definition of argument values for driver_info()
+ */
+
+#include "configuration.h"
+
+/* Driver Environment */
+#define DI_BOOT_TIME -1
+
+/* LPC Runtime status */
+#define DI_CURRENT_RUNTIME_LIMITS -10
+#define DI_EVAL_NUMBER -11
+
+/* Network configuration */
+#define DI_MUD_PORTS -20
+#define DI_UDP_PORT -21
+
+/* Memory management */
+#define DI_MEMORY_RESERVE_USER -30
+#define DI_MEMORY_RESERVE_MASTER -31
+#define DI_MEMORY_RESERVE_SYSTEM -32
+
+/* Traces */
+#define DI_TRACE_CURRENT -40
+#define DI_TRACE_CURRENT_DEPTH -41
+#define DI_TRACE_CURRENT_AS_STRING -42
+#define DI_TRACE_LAST_ERROR -43
+#define DI_TRACE_LAST_ERROR_AS_STRING -44
+#define DI_TRACE_LAST_UNCAUGHT_ERROR -45
+#define DI_TRACE_LAST_UNCAUGHT_ERROR_AS_STRING -46
+
+/* LPC Runtime statistics */
+#define DI_NUM_FUNCTION_NAME_CALLS -100
+#define DI_NUM_FUNCTION_NAME_CALL_HITS -101
+#define DI_NUM_FUNCTION_NAME_CALL_MISSES -102
+
+#define DI_NUM_OBJECTS_LAST_PROCESSED -103
+
+#define DI_NUM_HEARTBEAT_TOTAL_CYCLES -104
+#define DI_NUM_HEARTBEAT_ACTIVE_CYCLES -105
+#define DI_NUM_HEARTBEATS_LAST_PROCESSED -106
+
+#define DI_NUM_STRING_TABLE_STRINGS_ADDED -110
+#define DI_NUM_STRING_TABLE_STRINGS_REMOVED -111
+#define DI_NUM_STRING_TABLE_LOOKUPS_BY_VALUE -112
+#define DI_NUM_STRING_TABLE_LOOKUPS_BY_INDEX -113
+#define DI_NUM_STRING_TABLE_LOOKUP_STEPS_BY_VALUE -114
+#define DI_NUM_STRING_TABLE_LOOKUP_STEPS_BY_INDEX -115
+#define DI_NUM_STRING_TABLE_HITS_BY_VALUE -116
+#define DI_NUM_STRING_TABLE_HITS_BY_INDEX -117
+#define DI_NUM_STRING_TABLE_COLLISIONS -118
+
+#define DI_NUM_REGEX_LOOKUPS -120
+#define DI_NUM_REGEX_LOOKUP_HITS -121
+#define DI_NUM_REGEX_LOOKUP_MISSES -122
+#define DI_NUM_REGEX_LOOKUP_COLLISIONS -123
+
+/* Network statistics */
+#define DI_NUM_MESSAGES_OUT -200
+#define DI_NUM_PACKETS_OUT -201
+#define DI_NUM_PACKETS_IN -202
+#define DI_SIZE_PACKETS_OUT -203
+#define DI_SIZE_PACKETS_IN -204
+
+/* Load */
+#define DI_LOAD_AVERAGE_COMMANDS -300
+#define DI_LOAD_AVERAGE_LINES -301
+#define DI_LOAD_AVERAGE_PROCESSED_OBJECTS -302
+#define DI_LOAD_AVERAGE_PROCESSED_OBJECTS_RELATIVE -303
+#define DI_LOAD_AVERAGE_PROCESSED_HEARTBEATS_RELATIVE -304
+
+/* Memory use statistics */
+#define DI_NUM_ACTIONS -400
+#define DI_NUM_CALLOUTS -401
+#define DI_NUM_HEARTBEATS -402
+#define DI_NUM_SHADOWS -403
+#define DI_NUM_OBJECTS -404
+#define DI_NUM_OBJECTS_SWAPPED -405
+#define DI_NUM_OBJECTS_IN_LIST -406
+#define DI_NUM_OBJECTS_IN_TABLE -407
+#define DI_NUM_OBJECTS_DESTRUCTED -408
+#define DI_NUM_OBJECTS_NEWLY_DESTRUCTED -409
+#define DI_NUM_OBJECT_TABLE_SLOTS -410
+#define DI_NUM_PROGS -411
+#define DI_NUM_PROGS_SWAPPED -412
+#define DI_NUM_PROGS_UNSWAPPED -413
+#define DI_NUM_ARRAYS -414
+#define DI_NUM_MAPPINGS -415
+#define DI_NUM_MAPPINGS_CLEAN -416
+#define DI_NUM_MAPPINGS_HASH -417
+#define DI_NUM_MAPPINGS_HYBRID -418
+#define DI_NUM_STRUCTS -419
+#define DI_NUM_STRUCT_TYPES -420
+#define DI_NUM_VIRTUAL_STRINGS -421
+#define DI_NUM_STRINGS -422
+#define DI_NUM_STRINGS_TABLED -423
+#define DI_NUM_STRINGS_UNTABLED -424
+#define DI_NUM_STRING_TABLE_SLOTS -425
+#define DI_NUM_STRING_TABLE_SLOTS_USED -426
+#define DI_NUM_REGEX -427
+#define DI_NUM_REGEX_TABLE_SLOTS -428
+
+#define DI_SIZE_ACTIONS -450
+#define DI_SIZE_CALLOUTS -451
+#define DI_SIZE_HEARTBEATS -452
+#define DI_SIZE_SHADOWS -453
+#define DI_SIZE_OBJECTS -454
+#define DI_SIZE_OBJECTS_SWAPPED -455
+#define DI_SIZE_OBJECT_TABLE -456
+#define DI_SIZE_PROGS -457
+#define DI_SIZE_PROGS_SWAPPED -458
+#define DI_SIZE_PROGS_UNSWAPPED -459
+#define DI_SIZE_ARRAYS -460
+#define DI_SIZE_MAPPINGS -461
+#define DI_SIZE_STRUCTS -462
+#define DI_SIZE_STRUCT_TYPES -463
+#define DI_SIZE_STRINGS -464
+#define DI_SIZE_STRINGS_TABLED -465
+#define DI_SIZE_STRINGS_UNTABLED -466
+#define DI_SIZE_STRING_TABLE -467
+#define DI_SIZE_STRING_OVERHEAD -468
+#define DI_SIZE_REGEX -469
+#define DI_SIZE_BUFFER_FILE -470
+#define DI_SIZE_BUFFER_SWAP -471
+
+/* Memory swapper statistics */
+#define DI_NUM_SWAP_BLOCKS -500
+#define DI_NUM_SWAP_BLOCKS_FREE -501
+#define DI_NUM_SWAP_BLOCKS_REUSE_LOOKUPS -502
+#define DI_NUM_SWAP_BLOCKS_REUSE_LOOKUP_STEPS -503
+#define DI_NUM_SWAP_BLOCKS_FREE_LOOKUPS -505
+#define DI_NUM_SWAP_BLOCKS_FREE_LOOKUP_STEPS -506
+#define DI_SIZE_SWAP_BLOCKS -507
+#define DI_SIZE_SWAP_BLOCKS_FREE -508
+#define DI_SIZE_SWAP_BLOCKS_REUSED -509
+#define DI_SWAP_RECYCLE_PHASE -510
+
+/* Memory allocator statistics */
+#define DI_MEMORY_ALLOCATOR_NAME -600
+
+#define DI_NUM_SYS_ALLOCATED_BLOCKS -610
+#define DI_NUM_LARGE_BLOCKS_ALLOCATED -611
+#define DI_NUM_LARGE_BLOCKS_FREE -612
+#define DI_NUM_LARGE_BLOCKS_WASTE -613
+#define DI_NUM_SMALL_BLOCKS_ALLOCATED -614
+#define DI_NUM_SMALL_BLOCKS_FREE -615
+#define DI_NUM_SMALL_BLOCKS_WASTE -616
+#define DI_NUM_SMALL_BLOCK_CHUNKS -617
+#define DI_NUM_UNMANAGED_BLOCKS -618
+#define DI_NUM_FREE_BLOCKS_AVL_NODES -619
+
+#define DI_SIZE_SYS_ALLOCATED_BLOCKS -630
+#define DI_SIZE_LARGE_BLOCKS_ALLOCATED -631
+#define DI_SIZE_LARGE_BLOCKS_FREE -632
+#define DI_SIZE_LARGE_BLOCKS_WASTE -633
+#define DI_SIZE_LARGE_BLOCK_OVERHEAD -634
+#define DI_SIZE_SMALL_BLOCKS_ALLOCATED -635
+#define DI_SIZE_SMALL_BLOCKS_FREE -636
+#define DI_SIZE_SMALL_BLOCKS_WASTE -637
+#define DI_SIZE_SMALL_BLOCK_OVERHEAD -638
+#define DI_SIZE_SMALL_BLOCK_CHUNKS -639
+#define DI_SIZE_UNMANAGED_BLOCKS -640
+#define DI_SIZE_MEMORY_USED -641
+#define DI_SIZE_MEMORY_UNUSED -642
+#define DI_SIZE_MEMORY_OVERHEAD -643
+
+#define DI_NUM_INCREMENT_SIZE_CALLS -650
+#define DI_NUM_INCREMENT_SIZE_CALL_SUCCESSES -651
+#define DI_SIZE_INCREMENT_SIZE_CALL_DIFFS -652
+#define DI_NUM_REPLACEMENT_MALLOC_CALLS -653
+#define DI_SIZE_REPLACEMENT_MALLOC_CALLS -654
+#define DI_NUM_MEMORY_DEFRAGMENTATION_CALLS_FULL -655
+#define DI_NUM_MEMORY_DEFRAGMENTATION_CALLS_TARGETED -656
+#define DI_NUM_MEMORY_DEFRAGMENTATION_CALL_TARGET_HITS -657
+#define DI_NUM_MEMORY_DEFRAGMENTATION_BLOCKS_INSPECTED -658
+#define DI_NUM_MEMORY_DEFRAGMENTATION_BLOCKS_MERGED -659
+#define DI_NUM_MEMORY_DEFRAGMENTATION_BLOCKS_RESULTING -660
+
+#define DI_MEMORY_EXTENDED_STATISTICS -670
+
+/* Status texts */
+#define DI_STATUS_TEXT_MEMORY -700
+#define DI_STATUS_TEXT_TABLES -701
+#define DI_STATUS_TEXT_SWAP -702
+#define DI_STATUS_TEXT_MALLOC -703
+#define DI_STATUS_TEXT_MALLOC_EXTENDED -704
+
+/* Indices into the subarrays of DI_MEMORY_EXTENDED_STATISTICS (if given) */
+
+#define DIM_ES_MAX_ALLOC 0
+#define DIM_ES_CUR_ALLOC 1
+#define DIM_ES_MAX_FREE 2
+#define DIM_ES_CUR_FREE 3
+#define DIM_ES_AVG_XALLOC 4
+#define DIM_ES_AVG_XFREE 5
+#define DIM_ES_FULL_SLABS 6
+#define DIM_ES_FREE_SLABS 7
+#define DIM_ES_TOTAL_SLABS 8
+
+#define DIM_ES_MAX 9
+
+
+/* Definition of argument values for dump_driver_info()
+ */
+
+#define DDI_OBJECTS 0
+#define DDI_OBJECTS_DESTRUCTED 1
+#define DDI_OPCODES 2
+#define DDI_MEMORY 3
+
+/* Indices into the subarrays resulting from driver_info(DI_TRACE_*)
+ */
+
+#define TRACE_TYPE 0
+#define TRACE_NAME 1
+#define TRACE_PROGRAM 2
+#define TRACE_OBJECT 3
+#define TRACE_LOC 4
+#ifdef __EVAL_COST_TRACE__
+#define TRACE_EVALCOST 5
+
+#define TRACE_MAX 6
+#else
+#define TRACE_MAX 5
+#endif
+
+/* Values for entry TRACE_TYPE */
+
+#define TRACE_TYPE_SYMBOL 0
+#define TRACE_TYPE_SEFUN 1
+#define TRACE_TYPE_EFUN 2
+#define TRACE_TYPE_LAMBDA 3
+#define TRACE_TYPE_LFUN 4
+
+#endif /* LPC_DRIVER_INFO_H_ */
diff --git a/sys/erq.h b/sys/erq.h
new file mode 100644
index 0000000..3d0edfd
--- /dev/null
+++ b/sys/erq.h
@@ -0,0 +1,59 @@
+/* external request demon interface definitions */
+
+#ifndef LPC__ERQ_H__
+#define LPC__ERQ_H__ 1
+
+/* servive request types */
+
+#define ERQ_RLOOKUP 0 /* Lookup ip -> name */
+#define ERQ_EXECUTE 1 /* Execute a program */
+#define ERQ_FORK 2 /* Fork a program */
+#define ERQ_AUTH 3 /* Connect to a remote authd */
+#define ERQ_SPAWN 4 /* Spawn a program */
+#define ERQ_SEND 5 /* Send data to a program or connection */
+#define ERQ_KILL 6 /* Kill a program or connection */
+#define ERQ_OPEN_UDP 7 /* Open a UDP socket */
+#define ERQ_OPEN_TCP 8 /* Open a TCP connection */
+#define ERQ_LISTEN 9 /* Open a TCP accept-socket */
+#define ERQ_ACCEPT 10 /* Accept a connection from a accept-socket */
+#define ERQ_LOOKUP 11 /* Lookup name -> ip */
+
+#ifdef __IPV6__
+#define ERQ_RLOOKUPV6 12 /* Lookup name/ip6 */
+#endif
+
+/* Additional service request type flags evaluated by efun send_erq().
+ * The ERQ itself won't get to see it.
+ */
+
+#define ERQ_CB_STRING (1 << 31) /* Callback closure takes a string arg */
+
+
+/* answers from ERQ_EXECUTE / ERQ_FORK */
+
+#define ERQ_OK 0
+#define ERQ_SIGNALED 1
+#define ERQ_E_NOTFOUND 2 /* process not found by wait */
+#define ERQ_E_UNKNOWN 3 /* unknown exit condition from wait() */
+#define ERQ_E_ARGLENGTH 4
+#define ERQ_E_ARGFORMAT 5
+#define ERQ_E_ARGNUMBER 6
+#define ERQ_E_ILLEGAL 7
+#define ERQ_E_PATHLEN 8
+#define ERQ_E_FORKFAIL 9
+#define ERQ_E_TICKET 11
+#define ERQ_E_INCOMPLETE 12
+#define ERQ_E_WOULDBLOCK 13
+#define ERQ_E_PIPE 14
+#define ERQ_STDOUT 15 /* Normal data received */
+#define ERQ_STDERR 16
+#define ERQ_EXITED 17 /* Connection closed on EOF */
+#define ERQ_E_NSLOTS 18
+
+/* reserved handles */
+
+#define ERQ_HANDLE_RLOOKUP (-1)
+#define ERQ_HANDLE_KEEP_HANDLE (-2)
+#define ERQ_HANDLE_RLOOKUPV6 (-3)
+
+#endif /* LPC__ERQ_H__ */
diff --git a/sys/events.h b/sys/events.h
new file mode 100644
index 0000000..a5f45f6
--- /dev/null
+++ b/sys/events.h
@@ -0,0 +1,64 @@
+// MorgenGrauen MUDlib
+//
+// /sys/events.h -- Standard-Event-ID und Prototypen der Mudlib
+//
+// $Id$
+
+#ifndef __EVENTS_H__
+#define __EVENTS_H__
+
+#define EVENTD "/p/daemon/eventd"
+
+// Standardlib
+#define EVT_LIB_LOGIN "evt_lib_login"
+#define EVT_LIB_LOGOUT "evt_lib_logout"
+#define EVT_LIB_PLAYER_DEATH "evt_lib_player_death"
+#define EVT_LIB_PLAYER_DELETION "evt_lib_player_deletion"
+#define EVT_LIB_PLAYER_CREATION "evt_lib_player_creation"
+#define EVT_LIB_NPC_DEATH(x) ("evt_lib_npc_death_"+x)
+#define EVT_LIB_ADVANCE "evt_lib_advance"
+#define EVT_LIB_QUEST_SOLVED "evt_lib_quest_solved"
+#define EVT_LIB_MINIQUEST_SOLVED "evt_lib_miniquest_solved"
+#define EVT_LIB_PLAYER_ATTR_CHANGE "evt_lib_player_attr_change"
+#define EVT_LIB_CLOCK "evt_lib_clock"
+#define EVT_LIB_DATECHANGE "evt_lib_datechange"
+#define EVT_LIB_NEW_ERROR "evt_lib_eventd_new_error"
+
+// Gilden
+#define EVT_GUILD_CHANGE "evt_guild_change"
+#define EVT_GUILD_ADVANCE "evt_guild_advance"
+
+
+// Konstanten fuer Event-Daten. s. Manpages der einzelnen Events, die
+// Bedeutungen dieser Keys koennen sich jeweils leicht unterscheiden!
+#define E_TIME "evt_time"
+#define E_OBJECT "evt_object"
+#define E_OBNAME "evt_object_name"
+#define E_ENVIRONMENT "evt_environment"
+#define E_PLNAME "evt_player_name"
+#define E_EXTERNAL_DEATH "evt_external_death"
+#define E_POISON_DEATH "evt_poison_death"
+#define E_CORPSE "evt_corpse"
+#define E_GUILDNAME "evt_guild_name"
+#define E_LAST_GUILDNAME "evt_last_guild_name"
+#define E_QUESTNAME "evt_quest_name"
+#define E_QP_GRANTED "evt_qp_granted"
+#define E_MINIQUESTNAME "evt_miniquest_name"
+#define E_MQP_GRANTED "evt_mqp_granted"
+
+#endif // __EVENTS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __EVENTS_PROTOTYPES_H_
+#define __EVENTS_PROTOTYPES_H_
+ int CheckEventID(string eid);
+ int RegisterEvent(string eid, string fun, object ob);
+ int UnregisterEvent(string eid, object ob);
+varargs int TriggerEvent(string eid, mixed args);
+
+#endif // __EVENTS_PROTOTYPES_H_
+
+
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/files.h b/sys/files.h
new file mode 100644
index 0000000..3d7e2c8
--- /dev/null
+++ b/sys/files.h
@@ -0,0 +1,29 @@
+#ifndef LPC_FILES_H_
+#define LPC_FILES_H_ 1
+
+/* Definitions and macros for the various file efuns */
+
+/* Special return values of file_size() and the size part of get_dir().
+ */
+
+#define FSIZE_NOFILE -1 /* File doesn't exist or is not readable */
+#define FSIZE_DIR -2 /* The file is actually a directory */
+
+
+/* Flag values for get_dir().
+ */
+
+#define GETDIR_EMPTY (0) /* return an empty array (not very useful) */
+#define GETDIR_NAMES (0x01) /* return the filenames */
+#define GETDIR_SIZES (0x02) /* return the file sizes */
+#define GETDIR_DATES (0x04) /* return the dates of last modification */
+/* (0x08) unused */
+#define GETDIR_ACCESS (0x40) /* return the dates of last access */
+#define GETDIR_MODES (0x80) /* return the file mode */
+
+#define GETDIR_PATH (0x10) /* with _NAMES: add the path to the filenames */
+#define GETDIR_UNSORTED (0x20) /* return the results unsorted */
+
+#define GETDIR_ALL (0xDF) /* return all */
+
+#endif /* LPC_FILES_H_ */
diff --git a/sys/fishing.h b/sys/fishing.h
new file mode 100644
index 0000000..be660eb
--- /dev/null
+++ b/sys/fishing.h
@@ -0,0 +1,6 @@
+// MorgenGrauen MUDlib
+//
+// $Id: fishing.h 8930 2014-09-08 22:00:32Z Arathorn $
+
+#include <items/fishing/fishing.h>
+
diff --git a/sys/food.h b/sys/food.h
new file mode 100644
index 0000000..085c6cb
--- /dev/null
+++ b/sys/food.h
@@ -0,0 +1,198 @@
+// MorgenGrauen MUDlib
+//
+// /sys/food.sys - Defines und Prototypen fuer Lebensmittel
+//
+// $Id: food.h 7702 2010-10-26 21:22:37Z Zesstra $
+
+#ifndef _FOOD_H_
+#define _FOOD_H_
+
+#include <properties.h>
+
+// Fuellgrad pro Portion Essen (defined in life.h)
+// #define P_FOOD
+
+// Fuellgrad pro Schluck des Getraenkes (defined in life.h)
+// #define P_DRINK
+
+// Menge an Alkohol, die die Speise pro Portion hat (defined in life.h)
+// #define P_ALCOHOL
+
+// Heilwirkung der Speise (defined in life.h)
+// #define P_SP
+// #define P_HP
+
+// Gewicht pro Portion (defined in restrictions.h)
+// in P_EMPTY_PROPS ist es das Gewicht des Behaelters
+// mit beiden Angaben wird das Gewicht immer korrekt berechnet
+// #define P_WEIGHT
+
+// Wert pro Portion (defined in properties.h)
+// in P_EMPTY_PROPS ist es der Wert des Behaelters
+// mit beiden Angaben wird der Wert immer korrekt berechnet
+// #define P_VALUE
+
+// Die Meldung, die die Umstehenden erhalten, wenn gegessen/getrunken wird.
+#define P_CONSUME_MSG "std_food_consume_msg"
+
+// Die Meldung, die derjenige kriegt, der das Ding isst/trinkt.
+#define P_EATER_MSG "std_food_eater_msg"
+
+// Message, wenn man die Speise beim Konsumieren gar nicht in der Hand hat
+// Wenn man die Prop loescht, kann die Speise immer vertilgt werden
+#define P_ENV_MSG "std_food_env_msg"
+
+// Die Meldung, wenn die Speise leer ist
+#define P_EMPTY_MSG "std_food_empty_msg"
+
+// Die Meldung, wenn Getraenke gegessen werden
+#define P_NOFOOD_MSG "std_food_nofood_msg"
+
+// Die Meldung, wenn Speisen getrunken werden
+#define P_NODRINK_MSG "std_food_nodrink_msg"
+
+// Die Meldung, wenn die Speise gerade verdirbt
+#define P_BAD_MSG "std_food_bad_msg"
+
+// Die Meldung, wenn nichts mehr gegessen werden kann
+#define P_FOOD_FULL_MSG "std_food_full_msg"
+// Die Meldung, wenn nichts mehr getrunken werden kann
+#define P_DRINK_FULL_MSG "std_food_drink_full_msg"
+// Die Meldung, wenn nichts mehr alkoholisches geht
+#define P_ALC_FULL_MSG "std_food_alc_full_msg"
+// Die Meldung, wenn eine verdorbene Speise zerstoert wird
+// wird nur verwendet, wenn P_DESTROY_BAD > 0 ist
+#define P_REMOVE_MSG "std_food_remove_message"
+
+// Mapping mit Properties fuer den leeren Behaelter.
+// Alle enthaltenen Properties werden gesetzt, wenn
+// keine Portionen mehr vorhanden sind, bereits in diesen Properties
+// eingetragene Werte werden ueberschrieben!
+// Wenn diese Property nicht gesetzt ist, wird die Speise zerstoert,
+// wenn alle Portionen aufgebraucht ist.
+// Achtung: es werden keine closures unterstuetzt!
+#define P_EMPTY_PROPS "std_food_empty_props"
+
+// Wieviele Portionen hat die Speise
+#define P_PORTIONS "std_food_portions"
+
+// Verteilung der Heilungsrate pro Portion (siehe H_DISTRIBUTION)
+#define P_DISTRIBUTION "std_food_distribution"
+
+// Anzahl der Sekunden, bis die Speise verdorben ist.
+// Es muss ein Wert groesser 0 eingetragen werden.
+// Wenn kein Wert gesetzt wird, verdirbt die Speise beim naechsten Reset
+// Der Timer startet immer erst, wenn ein Spieler die Speise das erste Mal
+// in die Hand bekommt
+#define P_LIFETIME "std_food_lifetime"
+// Anzahl der Resets, bis die Speise verdorben ist.
+// P_RESET_LIFETIME und P_LIFETIME sind komplementaer, das heisst, dass
+// beim Setzen der einen die andere automatisch berechnet wird. Man braucht
+// daher nicht beide zu setzen, bzw. sollte dies gar nicht erst tun.
+#define P_RESET_LIFETIME "std_food_lifetime_reset"
+
+// Flag, ob die Speise verdirbt
+// Standard: 0 -> Darf nur mit Balancegenehmigung geaendert werden!
+#define P_NO_BAD "std_food_no_bad"
+
+// Zeit in Sekunden, wann die Speise nach dem Schlechtwerden zerstoert wird.
+// wenn P_EMPTY_PROPS gesetzt ist, wird der Behaelter geleert.
+// Standard: -1 = sofort beim Schlechtwerden
+// 0 = wird nicht zerstoert
+// >0 = Anzahl der Sekunden
+#define P_DESTROY_BAD "std_food_destroy_bad"
+#define DESTROY_NEVER 0
+#define DESTROY_BAD -1
+
+//============================================================================
+// Kompatibilitaetscode
+#define F_IS_FOOD "old_is_food"
+#define F_IS_DRINK "old_is_drink"
+#define F_IS_FULL "old_is_full"
+#define F_MESSAGE "old_mess"
+#define F_EATER "old_eater"
+#define F_EMPTY_CONTAINER "old_empty_con"
+#define F_EMPTY_GENDER "old_empty_gender"
+#define F_EMPTY_ID "old_empty_id"
+#define F_EMPTY_LONG "old_empty_long"
+#define F_ALC "old_alc"
+#define F_LIQUID "old_water"
+#define F_FOOD_SIZE "old_food_size"
+#define F_POTION "old_potion"
+#define F_HEAL_SP "old_heal_sp"
+#define F_HEAL_HP "old_heal_hp"
+#define F_NO_CONTAINER "old_no_con"
+#define F_BAD "old_bad"
+#define F_POISON "old_poison"
+
+#endif // _FOOD_H_
+
+#ifdef NEED_PROTOTYPES
+#ifndef _FOOD_H_PROTOTYPES_
+#define _FOOD_H_PROTOTYPES_
+
+public int cmd_eat(string str);
+public int cmd_drink(string str);
+public int is_eatable();
+public int is_drinkable();
+public int is_not_empty();
+public int is_bad();
+
+// Anzahl der Sekunden, die das Lebensmittel bereits hinter sich hat,
+// seit es mit einem Spieler in Beruehrung kam
+// wenn 0 zurueckgegeben wird, ist der Timer zum Schlechtwerden noch nicht
+// gestartet worden
+public int get_current_lifetime();
+
+// Startet den Timer zum Verderben der Speise, falls keine Gruende dagegen
+// sprechen, wird von init() und NotifyMove aufgerufen, kann in speziellen
+// Situationen aber auch manuell aufgerufen werden (siehe man food)
+public void start_lifetime();
+
+// wird aufgerufen, wenn die Speise verdorben ist und die Zeit aus
+// P_DESTROY_BAD abgelaufen ist
+// return 1, falls Objekt zerstoert wird, sonst 0
+public int make_destroy();
+
+// wird aufgerufen, wenn die Speise gerade verdirbt
+// return 1, falls Objekt dabei zerstoert wird, sonst 0
+public int make_bad();
+
+// wird aufgerufen, sobald die letzte Portion gegessen/getrunken wurde
+// Falls P_EMPTY_PROPS 0 ist, wird das Objekt zerstoert
+// return 1, falls Objekt dabei zerstoert wird, sonst 0
+public int make_empty();
+
+// wird jedesmal aufgerufen, wenn eine verdorbene Speise konsumiert wird.
+// Als Argument wird das Mapping uebergeben, das consume() im Lebewesen
+// uebergeben werden soll. Dieses Mapping kann veraendert werden.
+// Standard: Die Heilwirkung wird entfernt und stattdessen wird das Lebewesen
+// vergiftet.
+protected void consume_bad(mapping entry_info);
+
+// wird aus cmd_eat und cmd_drink aufgerufen und fuehrt das Konsumieren durch
+protected int consume();
+// wird aus consume() aufgerufen und fuehrt das Konsumieren durch
+// ist ausgelagert, damit man das testflag bei Bedarf nutzen kann
+protected varargs int try_consume(int testonly);
+
+// Futtern hat geklappt
+protected void success_consume();
+// Futtern hat nicht geklappt (leerer Behaelter ist hier kein Grund!)
+// Wird aus try_consume() gerufen.
+// reason entspricht dem Rueckgabewert von consume() im Lebewesen.
+protected void failed_consume(int reason);
+
+// Methode, die Meldungen zu Statusaenderungen verarbeitet und korrekt ausgibt.
+// Es wird der Name der auszugebenen Property uebergeben.
+// Es werden alle notwendigen Ersetzungen per replace_personal gemacht und
+// geprueft, ob dem Besitzer oder dem Raum die Meldung ausgegeben werden
+// muss.
+// Hierueber sollten nur Meldungen ausgegeben werden, die durch Aenderungen
+// an der Speise im Reset ausgeloest werden, also im reset selbst und in den
+// make_*-Methoden.
+protected void message(string prop);
+
+#endif // _FOOD_H_PROTOTYPES_
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/functionlist.h b/sys/functionlist.h
new file mode 100644
index 0000000..61dcd64
--- /dev/null
+++ b/sys/functionlist.h
@@ -0,0 +1,62 @@
+#ifndef LPC_FUNCTIONLIST_H
+#define LPC_FUNCTIONLIST_H
+
+#ifndef __DRIVER_SOURCE__
+#include "lpctypes.h"
+
+#define NAME_INHERITED 0x80000000 /* Defined by inheritance */
+#define TYPE_MOD_STATIC 0x40000000 /* Static function or variable */
+#define TYPE_MOD_NO_MASK 0x20000000 /* The nomask => not redefineable */
+#define TYPE_MOD_PRIVATE 0x10000000 /* Can't be inherited */
+#define TYPE_MOD_PUBLIC 0x08000000 /* Force inherit through private */
+#define TYPE_MOD_VARARGS 0x04000000 /* Used for type checking */
+#define TYPE_MOD_VIRTUAL 0x02000000 /* can be re- and cross- defined */
+#define TYPE_MOD_PROTECTED 0x01000000 /* cannot be called externally */
+#define TYPE_MOD_XVARARGS 0x00800000 /* accepts optional arguments */
+#define TYPE_MOD_NOSAVE TYPE_MOD_STATIC /* vars: can't be saved */
+ /* Internally TYPE_MOD_NOSAVE is 0x00400000, but that never leaves
+ * the compiler.
+ */
+#define NAME_CROSS_DEFINED 0x00080000 /* function defined from other program */
+#define NAME_HIDDEN 0x00020000 /* Not visible for inheritance */
+#define NAME_PROTOTYPE 0x00010000 /* Defined by a prototype only */
+#define NAME_UNDEFINED 0x00008000 /* Not defined yet */
+#define NAME_TYPES_LOST 0x00004000 /* inherited, no save_types */
+
+#endif /* !__DRIVER_SOURCE__ */
+
+
+/* Return value flag types for functionlist() and variable_list() */
+
+#define RETURN_FUNCTION_NAME 0x01
+#define RETURN_FUNCTION_FLAGS 0x02
+#define RETURN_FUNCTION_TYPE 0x04
+
+
+/* Additional return value flag types for functionlist() */
+
+#define RETURN_FUNCTION_NUMARG 0x08
+#define RETURN_FUNCTION_ARGTYPE 0x10 /* not implemented */
+
+
+/* Additional return value flag types for variable_list() */
+
+#define RETURN_VARIABLE_VALUE 0x08
+
+
+/* Masks of the flag unions allowed for various efuns: */
+#define RETURN_FUNCTION_MASK 0x0f /* functionlist() */
+#define RETURN_VARIABLE_MASK 0x0f /* variable_list() */
+
+/* Return value flag types for function_exists() */
+
+#define FEXISTS_PROGNAME (0)
+#define FEXISTS_FILENAME (1)
+#define FEXISTS_LINENO (2)
+#define FEXISTS_NUMARG (3)
+#define FEXISTS_TYPE (4)
+#define FEXISTS_FLAGS (5)
+
+#define FEXISTS_ALL (3)
+
+#endif /* LPC_FUNCTIONLIST_H */
diff --git a/sys/guard.h b/sys/guard.h
new file mode 100644
index 0000000..9cc477f
--- /dev/null
+++ b/sys/guard.h
@@ -0,0 +1,12 @@
+// MorgenGrauen MUDlib
+//
+// guard.h -- Definition fuer P_GUARD-Property von NPCs.
+//
+// $Id: guard.h 7701 2010-10-24 20:38:37Z Zesstra $
+
+#ifndef _GUARD_H_
+#define _GUARD_H_
+
+#define P_GUARD "guard"
+
+#endif
diff --git a/sys/header.h b/sys/header.h
new file mode 100644
index 0000000..ac7a107
--- /dev/null
+++ b/sys/header.h
@@ -0,0 +1,24 @@
+// MorgenGrauen MUDlib
+//
+// xxxx.h -- header
+//
+// $Id: header.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+#ifndef __XXXX_H__
+#define __XXXX_H__
+
+// properties
+
+#endif // __XXXX_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __XXXX_H_PROTO__
+#define __XXXX_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __XXXX_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/health.h b/sys/health.h
new file mode 100644
index 0000000..7457bcb
--- /dev/null
+++ b/sys/health.h
@@ -0,0 +1,50 @@
+// MorgenGrauen MUDlib
+//
+// health.h -- Heilstaerken und -geschwindigkeiten
+//
+// $Id: health.h 8368 2013-02-12 21:03:07Z Zesstra $
+
+#ifndef _HEALTH_
+#define _HEALTH_
+
+/*
+ * health.h
+ *
+ * A configuration file for all food and drink stuff
+ */
+
+/* These are tune macros to determine the actual effect of food, */
+/* drink and alcohol */
+#define ALOCHOL_VALUE(strength) strength
+#define DRINK_VALUE(strength) strength
+#define FOOD_VALUE(strength) strength
+
+/* How fast alcohol wears off and drink and food are reduced */
+#define ALCOHOL_DELAY 5 /* quite fast */
+#define DRINK_DELAY 7 /* quite medium */
+#define FOOD_DELAY 9 /* quite slow */
+#define HEAL_DELAY 4 /* quite fast */
+
+#define POISON_DELAY 4
+#define POISON_MERCY_DELAY 3
+
+#define ALC_EFFECT_HICK 0
+#define ALC_EFFECT_RUELPS 1
+#define ALC_EFFECT_LOOKDRUNK 2
+#define ALC_EFFECT_STUMBLE 3
+
+#define ALC_EFFECT_AREA_GUILD 0
+#define ALC_EFFECT_AREA_ENV 1
+
+/* Any regeneration prohibited ? */
+#define NO_REG_HP 0x01
+#define NO_REG_BUFFER_HP 0x02
+#define NO_REG_SP 0x04
+#define NO_REG_BUFFER_SP 0x08
+#define NO_REG_ALCOHOL 0x10
+#define NO_REG_DRINK 0x20
+#define NO_REG_FOOD 0x40
+#define NO_REG (NO_REG_HP|NO_REG_BUFFER_HP|NO_REG_SP|NO_REG_BUFFER_SP| \
+ NO_REG_ALCOHOL|NO_REG_DRINK|NO_REG_FOOD)
+
+#endif
diff --git a/sys/hook.h b/sys/hook.h
new file mode 100644
index 0000000..b1e655d
--- /dev/null
+++ b/sys/hook.h
@@ -0,0 +1,96 @@
+// MorgenGrauen MUDlib
+//
+// /sys/hooks.h - Hooksystem
+//
+// $Id: hook.h 9475 2016-02-19 21:16:17Z Zesstra $
+
+#ifndef _HOOKS_H_
+#define _HOOKS_H_
+
+// global hooks
+#define H_HOOK_MOVE 1
+#define H_HOOK_DIE 2
+#define H_HOOK_DEFEND 3
+#define H_HOOK_ATTACK 4
+#define H_HOOK_HP 5
+#define H_HOOK_SP 6
+#define H_HOOK_ATTACK_MOD 7
+#define H_HOOK_ALCOHOL 8
+#define H_HOOK_FOOD 9
+#define H_HOOK_DRINK 10
+#define H_HOOK_POISON 11
+#define H_HOOK_CONSUME 12
+#define H_HOOK_TEAMROWCHANGE 13
+#define H_HOOK_INSERT 14
+#define H_HOOK_EXIT_USE 15
+
+// the possible consumer types
+#define H_HOOK_SURVEYOR 0
+#define H_HOOK_MODIFICATOR 1
+#define H_DATA_MODIFICATOR 2
+#define H_LISTENER 3
+#define H_CONSUMERCHECK(x) ((intp(x)&& x>=0 && x<=H_LISTENER)?x:-1)
+#define H_CONSUMERNAMES ({"surveyors","hmods","dmods","listeners"})
+
+// priorities
+#define H_HOOK_PRIORITYRANGE 3
+#define H_HOOK_LIBBASEPRIO 0
+#define H_HOOK_GUILDBASEPRIO (H_HOOK_LIBBASEPRIO+H_HOOK_PRIORITYRANGE)
+#define H_HOOK_OTHERBASEPRIO (H_HOOK_GUILDBASEPRIO+H_HOOK_PRIORITYRANGE)
+#define H_HOOK_PRIOCHECK(x) ((intp(x) && x>=0 && x<H_HOOK_PRIORITYRANGE)?x:-1)
+#define H_HOOK_LIBPRIO(x) ((H_HOOK_PRIOCHECK(x)!=-1)?(H_HOOK_LIBBASEPRIO+x):-1)
+#define H_HOOK_GUILDPRIO(x) ((H_HOOK_PRIOCHECK(x)!=-1)?(H_HOOK_GUILDBASEPRIO+x):-1)
+#define H_HOOK_OTHERPRIO(x) ((H_HOOK_PRIOCHECK(x)!=-1)?(H_HOOK_OTHERBASEPRIO+x):-1)
+#define H_HOOK_VALIDPRIO(x) ((intp(x) && x>=0 && x<(H_HOOK_OTHERBASEPRIO+H_HOOK_PRIORITYRANGE))?x:-1)
+
+// maximum consumer per type
+#define MAX_SURVEYOR 1
+#define MAX_HOOK_MODIFICATOR 2
+#define MAX_DATA_MODIFICATOR 3
+#define MAX_LISTENER 5
+#define MAX_HOOK_COUNTS ({MAX_SURVEYOR, MAX_HOOK_MODIFICATOR, \
+ MAX_DATA_MODIFICATOR, MAX_LISTENER, \
+ })
+
+// data indices for return value of HookCallback() & Co.
+#define H_RETCODE 0
+#define H_RETDATA 1
+
+// return codes for HookFlow & Co.
+#define H_NO_MOD 0
+#define H_CANCELLED 1
+#define H_ALTERED 2
+
+// debugging
+#define H_DMSG(x) (h_dbg() && (find_player("zesstra")) ? \
+ tell_object(find_player("zesstra"),x):0)
+
+#endif //_HOOKS_H_
+
+// prototypes
+#ifdef NEED_PROTOTYPES
+// provider
+#ifndef __HOOK_PROVIDER_PROTO
+#define __HOOK_PROVIDER_PROTO
+
+// list of offered hooks
+int* HListHooks();
+
+// register to hook
+int HRegisterToHook(int hookid, mixed consumer, int hookprio,
+ int consumertype, int timeInSeconds);
+
+// unregister from hook
+int HUnregisterFromHook(int hookid, mixed consumer);
+
+// check wether object is a consumer for a given hook
+int HIsHookConsumer(int hookid, mixed consumer);
+
+// offer a hook or stop offering it
+protected void offerHook(int hookid, int offerstate);
+
+// trigger a hook
+protected mixed HookFlow(int hookid, mixed hookdata);
+
+#endif // __HOOK_PROVIDER_PROTO
+#endif // NEED_PROTOTYPES
diff --git a/sys/idn.h b/sys/idn.h
new file mode 100644
index 0000000..d8823b5
--- /dev/null
+++ b/sys/idn.h
@@ -0,0 +1,26 @@
+#ifndef LPC_IDN_H_
+#define LPC_IDN_H_ 1
+
+/* --- IDNA Constants ---
+ */
+
+/* idna_stringprep() profiles. */
+
+#define STRINGPREP_NAMEPREP 1
+#define STRINGPREP_SASLPREP 2
+#define STRINGPREP_PLAIN 3
+#define STRINGPREP_TRACE 4
+#define STRINGPREP_KERBEROS5 5
+#define STRINGPREP_XMPP_NODEPREP 6
+#define STRINGPREP_XMPP_RESOURCEPREP 7
+#define STRINGPREP_ISCSI 8
+
+/* idna_stringprep() flags */
+
+#define STRINGPREP_NO_NFKC_FLAG (1<<0)
+#define STRINGPREP_NO_BIDI_FLAG (1<<1)
+#define STRINGPREP_NO_UNASSIGNED_FLAG (1<<2)
+
+#define STRINGPREP_FLAG_MAX (1<<2)
+
+#endif
diff --git a/sys/include_list.h b/sys/include_list.h
new file mode 100644
index 0000000..ad86f24
--- /dev/null
+++ b/sys/include_list.h
@@ -0,0 +1,9 @@
+#ifndef LPC_INCLUDE_LIST_H
+#define LPC_INCLUDE_LIST_H
+
+/* Return value flag types for include_list() */
+
+#define INCLIST_FLAT 0x00
+#define INCLIST_TREE 0x01
+
+#endif /* LPC_INCLUDE_LIST_H */
diff --git a/sys/inherit_list.h b/sys/inherit_list.h
new file mode 100644
index 0000000..626b1e9
--- /dev/null
+++ b/sys/inherit_list.h
@@ -0,0 +1,10 @@
+#ifndef LPC_INHERIT_LIST_H
+#define LPC_INHERIT_LIST_H
+
+/* Return value flag types for inherit_list() */
+
+#define INHLIST_FLAT 0x00
+#define INHLIST_TREE 0x01
+#define INHLIST_TAG_VIRTUAL 0x02
+
+#endif /* LPC_INHERIT_LIST_H */
diff --git a/sys/inpc.h b/sys/inpc.h
new file mode 100644
index 0000000..0ffced9
--- /dev/null
+++ b/sys/inpc.h
@@ -0,0 +1,15 @@
+// MorgenGrauen MUDlib
+//
+// inpc.h -- Headerfile fuer intelligente NPCs
+//
+// $Id: inpc.h,v 3.4 2003/08/06 19:06:11 Vanion Exp $
+
+#ifndef __INPC_H__
+#define __INPC_H__
+
+#include "/sys/inpc/select.h"
+#include "/sys/inpc/eval.h"
+#include "/sys/inpc/walking.h"
+#include "/sys/inpc/boozing.h"
+
+#endif
diff --git a/sys/inpc/boozing.h b/sys/inpc/boozing.h
new file mode 100644
index 0000000..94909eb
--- /dev/null
+++ b/sys/inpc/boozing.h
@@ -0,0 +1,22 @@
+// MorgenGrauen MUDlib
+//
+// inpc/boozing.h -- Intelligent Saufen
+//
+// $Id: boozing.h,v 1.2 1997/02/12 13:17:14 Wargon Exp $
+
+#ifndef __INPC_BOOZING_H__
+#define __INPC_BOOZING_H__
+
+#define P_I_HATE_ALCOHOL "i_hate_alcohol"
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __INPC_BOOZING_PROTO__
+#define __INPC_BOOZING_PROTO__
+
+int Drink();
+void DrinkLoop();
+
+#endif
+#endif
diff --git a/sys/inpc/eval.h b/sys/inpc/eval.h
new file mode 100644
index 0000000..0a10a42
--- /dev/null
+++ b/sys/inpc/eval.h
@@ -0,0 +1,13 @@
+// MorgenGrauen MUDlib
+//
+// inpc/eval.h -- Definitionen zum Einschaetzen
+//
+// $Id: eval.h,v 3.1 1997/02/12 13:17:14 Wargon Exp $
+
+#ifndef __INPC_EVAL_H__
+#define __INPC_EVAL_H__
+
+#define P_EVAL_OFFSETS "inpc_eval_offsets"
+#define P_EVAL_FACTORS "inpc_eval_factors"
+
+#endif
diff --git a/sys/inpc/select.h b/sys/inpc/select.h
new file mode 100644
index 0000000..ef2dcf2
--- /dev/null
+++ b/sys/inpc/select.h
@@ -0,0 +1,40 @@
+// MorgenGrauen MUDlib
+//
+// inpc/select.h -- Definitionen zur Objektauswahl
+//
+// $Id: select.h,v 3.3 2003/08/06 18:40:05 Vanion Exp $
+
+#ifndef __INPC_SELECT_H__
+#define __INPC_SELECT_H__
+
+#define OT_WEAPON "weapon"
+#define OT_COMBAT_OBJECT "combat_object"
+#define OT_MISC "misc_objects"
+#define INPC_BEST_WEAPON_ID "inpc_best_weapon"
+#define INPC_BEST_SHIELD_ID "inpc_best_shield"
+
+// if npc does not like weapons, i.e. Karateorc
+#define INPC_DONT_WIELD_WEAPONS "inpc_dont_wield_weapons"
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __INPC_SELECT_PROTO__
+#define __INPC_SELECT_PROTO__
+
+int eval_wepon(object ob);
+int eval_armour(object ob);
+int eval_combat_object(object ob, mapping vals, object enemy);
+
+object find_best_weapon(mixed from);
+object find_best_armour(mixed from, mixed typ);
+object *find_best_armours(mixed from);
+varargs string find_best_combat_command(mixed from, object enemy, mapping pref);
+
+varargs int wield_best_weapon(mixed from);
+varargs int wear_best_armours(mixed from);
+varargs int use_best_combat_command(mixed enemy, mixed from, mapping pref);
+
+
+#endif
+#endif
diff --git a/sys/inpc/walking.h b/sys/inpc/walking.h
new file mode 100644
index 0000000..6e143cf
--- /dev/null
+++ b/sys/inpc/walking.h
@@ -0,0 +1,43 @@
+// MorgenGrauen MUDlib
+//
+// walking.h -- Definitionen und Properties fuer laufende INPCs
+//
+// $Id: walking.h,v 3.1 1997/02/12 13:17:14 Wargon Exp $
+
+#ifndef __INPC_WALKING_H__
+#define __INPC_WALKING_H__
+
+// Properties and types
+#define P_INPC_LAST_PLAYER_CONTACT "inpc_last_player_contact"
+#define P_INPC_LAST_ENVIRONMENT "inpc_last_environment"
+#define P_INPC_WALK_MODE "inpc_walk_mode"
+#define P_INPC_WALK_DELAYS "inpc_walk_delay"
+#define P_INPC_WALK_FLAGS "inpc_walk_flags"
+#define P_INPC_WALK_AREA "inpc_walk_area"
+#define P_INPC_WALK_ROUTE "inpc_walk_route"
+#define P_INPC_HOME "inpc_home"
+
+#define WF_MAY_LOAD 0x01
+#define WF_MAY_FOLLOW 0x02
+#define WF_MAY_USE_SPECIAL 0x04
+#define WF_MAY_WALK_BACK 0x08
+
+#define WM_STOP 0
+#define WM_RANDOM 1
+#define WM_ROUTE 2
+#define WM_WALKTO 3
+#define WM_FOLLOW 4
+#define WM_FLEE 5
+
+#endif // __INPC_WALKING_H__
+
+#ifdef NEED_PROTOTYPES
+#ifndef __INPC_WALKING_H_PROTOTYPES__
+#define __INPC_WALKING_H_PROTOTYPES__
+
+// Prototypen
+int may_enter_room(mixed room);
+
+#endif // __INPC_WALKING_H_PROTOTYPES__
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/input_to.h b/sys/input_to.h
new file mode 100644
index 0000000..f7f094f
--- /dev/null
+++ b/sys/input_to.h
@@ -0,0 +1,17 @@
+#ifndef LPC_INPUT_TO_H_
+#define LPC_INPUT_TO_H_
+
+/* Mode values recognized by the efun input_to() */
+
+#define INPUT_NOECHO 1 /* Don't echo the next line typed */
+#define INPUT_CHARMODE 2 /* Switch into/out of charmode */
+#define INPUT_PROMPT 4 /* Use a custom prompt */
+#define INPUT_NO_TELNET 8 /* Switch into/out of charmode on the driver
+ * side only.
+ */
+#define INPUT_APPEND 16 /* Append the input_to to the list of already
+ * pending input_to's.
+ */
+#define INPUT_IGNORE_BANG 128 /* Disallow the '!' escape */
+
+#endif /* LPC_INPUT_TO_H_ */
diff --git a/sys/interactive_info.h b/sys/interactive_info.h
new file mode 100644
index 0000000..920ac92
--- /dev/null
+++ b/sys/interactive_info.h
@@ -0,0 +1,29 @@
+#ifndef LPC_INTERACTIVE_INFO_H_
+#define LPC_INTERACTIVE_INFO_H_
+
+/* Definition of argument values for interactive_info()
+ */
+
+#include "configuration.h"
+
+/* Connection information */
+#define II_IP_NAME -1
+#define II_IP_NUMBER -2
+#define II_IP_PORT -3
+#define II_IP_ADDRESS -4
+#define II_MUD_PORT -5
+
+/* Telnet related information */
+#define II_MCCP_STATS -10
+
+/* Input handling */
+#define II_INPUT_PENDING -20
+#define II_EDITING -21
+#define II_IDLE -22
+
+/* Output handling */
+#define II_SNOOP_NEXT -30
+#define II_SNOOP_PREV -31
+#define II_SNOOP_ALL -32
+
+#endif /* LPC_INTERACTIVE_INFO_H_ */
diff --git a/sys/items/fishing/aquarium.h b/sys/items/fishing/aquarium.h
new file mode 100644
index 0000000..0ac700d
--- /dev/null
+++ b/sys/items/fishing/aquarium.h
@@ -0,0 +1,15 @@
+#ifndef _AQUARIUM_
+#define _AQUARIUM_
+
+#define STDFISHLIST ([ \
+ W_BEACH: ({"scholle","flunder","rochen","szunge","khai"}),\
+ W_HARBOR: ({"rochen","dorsch","szunge","hering","khai"}),\
+ W_OCEAN: ({"thun","hai","kjau","schwert","seehase","seeteufel", \
+ "seewolf"}),\
+ W_RIVER: ({"piranha","lachs","forelle","bsaib"}), \
+ W_POOL: ({"stichling","gfisch","schlei","karpfen","gorfe"}), \
+ W_LAKE: ({"ssaib","barsch","hecht","karpfen"}), \
+ W_ROCK: ({"lachs","forelle","bsaib"}), \
+ W_STREAM: ({"stichling","bforelle","neun","bsaib"}) ]) \
+
+#endif
diff --git a/sys/items/fishing/fishing.h b/sys/items/fishing/fishing.h
new file mode 100644
index 0000000..38970fc
--- /dev/null
+++ b/sys/items/fishing/fishing.h
@@ -0,0 +1,72 @@
+// MorgenGrauen MUDlib
+//
+// fishing.h -- Definitionen fuer alles, was sich ums Angeln dreht
+// Fragen, Vorschlaege etc. an Arathorn
+//
+// $Id: fishing.h,v 3.2 2002/12/17 10:01:43 Rikus Exp $
+
+#ifndef __FISHING_H__
+#define __FISHING_H__
+
+// Standardobjekte/-pfade
+#define ANGELBASE(x) ("/std/items/fishing/"+x)
+#define STD_ANGEL ANGELBASE("angel")
+#define STD_FISCH ANGELBASE("fish")
+#define STD_HAKEN ANGELBASE("haken")
+#define STD_KOEDER ANGELBASE("koeder")
+
+#define ANGELOBJ(x) ("/items/fishing/"+x)
+
+// ******************
+// * Gewaessertypen *
+// ******************
+#define P_WATER "water"
+
+// Gewaessertypen
+// Salzwasser
+#define W_BEACH 1 // Strand
+#define W_HARBOR 2 // Hafen
+#define W_OCEAN 4 // Ozean
+// Suesswasser
+#define W_RIVER 8 // Fluss
+#define W_POOL 16 // Teich
+#define W_LAKE 32 // See
+#define W_ROCK 64 // Bergbach
+#define W_STREAM 256 // Bach
+// Sonstige
+#define W_USER 128 // hier kann man ein eigenes Aquarium anhaengen!
+#define W_DEAD 512 // Lebloses Wasser/enthaelt keine Fische/man kann
+ // aber die Stdflasche fuellen.
+#define W_OTHER 1024 // Flasche enthaelt Fluessigkeit!=Wasser
+
+// vordefinierte Kombinationen fuer Angeln:
+#define W_SHORT (W_HARBOR|W_RIVER|W_POOL|W_LAKE|W_ROCK|W_USER|W_OCEAN|W_STREAM)
+#define W_LONG (W_BEACH|W_USER)
+#define W_SALT (W_HARBOR|W_OCEAN|W_BEACH) // Salzwasser
+#define W_SWEET (W_RIVER|W_POOL|W_LAKE|W_ROCK|W_STREAM) // Suesswasser
+#define W_UNIVERSAL (W_SHORT|W_LONG)
+
+// **********
+// * Fische *
+// **********
+#define P_FISH "fish"
+#define P_FISH_AGE "fish_age"
+
+// Flags fuer Fische
+#define F_NOROTTEN 1 // Fisch fault nicht.
+#define F_NOTHUNGRY 2 // isst Koeder nicht auf, falls zu schwer fuer Angel
+#define F_REPLACE 4 // Soll sich beim Entfernen von Angel verwandeln.
+#define F_NOHEAL 8 // Fisch heilt nicht bei Verzehr
+
+// Pfad zum "Aquarium", dort finden sich die Standardfische. Zuordnung
+// zu den Gewaessertypen siehe /sys/items/fishing/aquarium.h
+#define FISH(x) ANGELOBJ("aquarium/"+x)
+
+// IDs fuer Angel,Haken,Wurm,Fisch
+#define ANGEL_ID "\nf_angel"
+#define HAKEN_ID "\nf_koeder"
+#define WURM_ID "\nf_worm"
+#define FISCH_ID "\nf_fish"
+
+#endif // __FISHING_H__
+
diff --git a/sys/items/flasche.h b/sys/items/flasche.h
new file mode 100644
index 0000000..de901ab
--- /dev/null
+++ b/sys/items/flasche.h
@@ -0,0 +1,23 @@
+// MorgenGrauen MUDlib
+//
+// flasche.h -- Definitionen fuer eine Standardflasche
+//
+// $Id: fishing.h,v 3.2 2002/12/17 10:01:43 Rikus Exp $
+
+#ifndef __FLASCHE_H__
+#define __FLASCHE_H__
+
+// *************
+// * Behaelter *
+// *************
+// Zur Erklaerung siehe am besten /d/ebene/fraggle/txt/flasche.txt
+// Fassungsvermoegen des Behaelters in ml
+#define P_LIQUID "w_max_wasserfuellmenge"
+
+// Zusatz zu P_LONG fuer leeren Zustand des Stdhakens
+#define P_LONG_EMPTY "w_longdesc_empty"
+
+// Zusatz zu P_LONG fuer gefuellten Zustand der Stdflasche
+#define P_LONG_FULL "w_longdesc_full"
+
+#endif // __FLASCHE_H__
diff --git a/sys/items/kraeuter/kraeuter.h b/sys/items/kraeuter/kraeuter.h
new file mode 100644
index 0000000..596606f
--- /dev/null
+++ b/sys/items/kraeuter/kraeuter.h
@@ -0,0 +1,40 @@
+// MorgenGrauen MUDlib
+//
+// kraeuter.h -- Definition fuer Kraeuter
+//
+// $Id: fishing.h,v 3.2 2002/12/17 10:01:43 Rikus Exp $
+
+#ifndef __KRAEUTER_H__
+#define __KRAEUTER_H__
+
+#define KRAEUTERLISTE "/sys/items/kraeuter/kraeuterliste.h"
+
+#define PLANTDIR "/items/kraeuter/"
+
+#define SECURE(x) ("/secure/"+x)
+#define KRAEUTERVCSAVEFILE SECURE("ARCH/kraeuterVC")
+#define PLANTMASTER (SECURE("krautmaster"))
+#define KRAEUTERVC PLANTDIR"virtual_compiler"
+
+#define STDPLANT "/std/items/kraeuter/kraut"
+#define PLANTITEM PLANTDIR"kraut"
+#define STDTRANK "/std/items/kraeuter/trank"
+#define TRANKITEM PLANTDIR"trank"
+
+#define KESSELID "_lib\nkraeuterkessel"
+
+#define INGREDIENT_ID 0
+#define INGREDIENT_DEMON 1
+#define INGREDIENT_GENDER 2
+#define INGREDIENT_NAME 3
+#define INGREDIENT_ADJ 4
+#define INGREDIENT_LONG 5
+#define INGREDIENT_ROOMDETAIL 6
+
+#define PLANT_ROOMDETAIL "_lib_p_plantroomdetail"
+
+#define IS_PLANT(x) (member(inherit_list(x), \
+ "/std/items/kraeuter/kraut.c")>=0)
+
+#endif // __KRAEUTER_H__
+
diff --git a/sys/items/kraeuter/kraeuterliste.h b/sys/items/kraeuter/kraeuterliste.h
new file mode 100644
index 0000000..159d53f
--- /dev/null
+++ b/sys/items/kraeuter/kraeuterliste.h
@@ -0,0 +1,256 @@
+// Automatisch generiertes File, nicht von Hand editieren!
+// Erzeugendes File: /secure/krautmaster
+
+#define PLANTCOUNT 249
+
+#define PLANT(x) "/items/kraeuter/"+x
+
+#define ZYPRESSENWOLFSMILCH PLANT("zypressenwolfsmilch")
+#define ZWOELFFINGERKRAUT PLANT("zwoelffingerkraut")
+#define ZWIRBELWURZ PLANT("zwirbelwurz")
+#define ZWERGWURZ PLANT("zwergwurz")
+#define ZWERGENHUT PLANT("zwergenhut")
+#define ZWACKELKRAUT PLANT("zwackelkraut")
+#define ZOOKZWIEBEL PLANT("zookzwiebel")
+#define ZICKZACK_KLEE PLANT("zickzack_klee")
+#define ZESSTRAZWIEBEL PLANT("zesstrazwiebel")
+#define ZAPPERLILIE PLANT("zapperlilie")
+#define WURZELSILIE PLANT("wurzelsilie")
+#define WURMKRAUT PLANT("wurmkraut")
+#define WUNDKLEE PLANT("wundklee")
+#define WUESTENROSE PLANT("wuestenrose")
+#define WUESTENENZIAN PLANT("wuestenenzian")
+#define WUERGERKRAUT PLANT("wuergerkraut")
+#define WOLPITROESTER PLANT("wolpitroester")
+#define WINDWURZ PLANT("windwurz")
+#define WINDNESSEL PLANT("windnessel")
+#define WILHELMSBURGER_SIEBENSTERN PLANT("wilhelmsburger_siebenstern")
+#define WIESENSCHAUMKRAUT PLANT("wiesenschaumkraut")
+#define WIESENRISPE PLANT("wiesenrispe")
+#define WIESENRETTICH PLANT("wiesenrettich")
+#define WIESENMELDE PLANT("wiesenmelde")
+#define WIESENLICHTNELKE PLANT("wiesenlichtnelke")
+#define WIESENKUCKUCKSBLUME PLANT("wiesenkuckucksblume")
+#define WIESENKERBEL PLANT("wiesenkerbel")
+#define WIESENGLOCKENBLUME PLANT("wiesenglockenblume")
+#define WIESENBUTTERBLUME PLANT("wiesenbutterblume")
+#define WERWOLFSMILCH_GRUEN PLANT("werwolfsmilch_gruen")
+#define WEISSWURZ_VIELBLUETIG PLANT("weisswurz_vielbluetig")
+#define WEISSWURZ_QUIRLBLAETTRIG PLANT("weisswurz_quirlblaettrig")
+#define WEISSWURZ_GEMEIN PLANT("weisswurz_gemein")
+#define WEISSKLEE PLANT("weissklee")
+#define WEIDENKLEE PLANT("weidenklee")
+#define WASSERWURZ PLANT("wasserwurz")
+#define WASSERRETTICH PLANT("wasserrettich")
+#define WASSERKLEE PLANT("wasserklee")
+#define WASSER_HAHNENFUSS_WEISS PLANT("wasser_hahnenfuss_weiss")
+#define WARZENWOLFSMILCH PLANT("warzenwolfsmilch")
+#define WALDSCHATTENRAUTENWICKE PLANT("waldschattenrautenwicke")
+#define WALDRETTICH PLANT("waldrettich")
+#define WALDREBE_WEISS PLANT("waldrebe_weiss")
+#define WALDREBE_SCHWARZ PLANT("waldrebe_schwarz")
+#define WALDREBE_ROT PLANT("waldrebe_rot")
+#define WALDREBE_GEMEIN PLANT("waldrebe_gemein")
+#define WALDMOOS_LANGLEBIG PLANT("waldmoos_langlebig")
+#define WALDMOOS PLANT("waldmoos")
+#define WALDLICHTNELKE PLANT("waldlichtnelke")
+#define WALDENZIAN PLANT("waldenzian")
+#define VOGELHANF PLANT("vogelhanf")
+#define VAINERPILZ PLANT("vainerpilz")
+#define TYPONIA PLANT("typonia")
+#define TROPENENZIAN PLANT("tropenenzian")
+#define TROLLTROESTER PLANT("trolltroester")
+#define TROLLSCHMAROTZER PLANT("trollschmarotzer")
+#define TRAEUMERSCHLINGE PLANT("traeumerschlinge")
+#define TORFMOORRAUTENWICKE_GLATT PLANT("torfmoorrautenwicke_glatt")
+#define TORFMOORRAUTENWICKE_GEZAHNT PLANT("torfmoorrautenwicke_gezahnt")
+#define TORFMOORRAUTENWICKE_GEFRANST PLANT("torfmoorrautenwicke_gefranst")
+#define TEUFELSKRALLE_SCHWARZ PLANT("teufelskralle_schwarz")
+#define TEUFELSKRALLE_ROT PLANT("teufelskralle_rot")
+#define TEUFELSKRALLE_RISPIG PLANT("teufelskralle_rispig")
+#define TEUFELSKRALLE_KOPFIG PLANT("teufelskralle_kopfig")
+#define TEUFELSKRALLE_DREIKANTIG PLANT("teufelskralle_dreikantig")
+#define TEUFELSKRALLE_BUSCHIG PLANT("teufelskralle_buschig")
+#define TEUFELSKRALLE_AEHRIG PLANT("teufelskralle_aehrig")
+#define TEUFELSABBISS_GEMEIN PLANT("teufelsabbiss_gemein")
+#define SUMPFRETTICH PLANT("sumpfrettich")
+#define SUMPFREBE_SCHWARZ PLANT("sumpfrebe_schwarz")
+#define SUMPFRAUTENWICKE PLANT("sumpfrautenwicke")
+#define SUMPFLICHTNELKE PLANT("sumpflichtnelke")
+#define SUESSKLEE PLANT("suessklee")
+#define STUPSKRAUT PLANT("stupskraut")
+#define STERNMIERE PLANT("sternmiere")
+#define STERNENFLECHTE PLANT("sternenflechte")
+#define STEINBEISSERKNOLLE PLANT("steinbeisserknolle")
+#define SPITZWEGERICH PLANT("spitzwegerich")
+#define SONNENWENDWOLFSMILCH PLANT("sonnenwendwolfsmilch")
+#define SONNENPILZ PLANT("sonnenpilz")
+#define SOMMERFINDLING PLANT("sommerfindling")
+#define SICHELNELKE PLANT("sichelnelke")
+#define SCHWARZWURZ_WILD PLANT("schwarzwurz_wild")
+#define SCHWARZWURZ_KRIECHEND PLANT("schwarzwurz_kriechend")
+#define SCHWARZWURZ_GEZACKT PLANT("schwarzwurz_gezackt")
+#define SCHWARZWURZ_GEMEIN PLANT("schwarzwurz_gemein")
+#define SCHWARZSCHATTENMOOS PLANT("schwarzschattenmoos")
+#define SCHWALBENWURZ_ENZIAN PLANT("schwalbenwurz_enzian")
+#define SCHUETTELKRAUT PLANT("schuettelkraut")
+#define SCHILFRAUTENWICKE PLANT("schilfrautenwicke")
+#define SCHATTENKRAUT PLANT("schattenkraut")
+#define SCHANDKRAUT PLANT("schandkraut")
+#define SAUERKLEE PLANT("sauerklee")
+#define RIESENORKSCHORFLING_LILA_GEPUNKTET PLANT("riesenorkschorfling_lila_gepunktet")
+#define REGENWURZ PLANT("regenwurz")
+#define RAUTENWICKE_FEURIG PLANT("rautenwicke_feurig")
+#define RAUCHKRESSE PLANT("rauchkresse")
+#define RATSHERRENKRESSE PLANT("ratsherrenkresse")
+#define RASCHELKRAUT PLANT("raschelkraut")
+#define POTTERRAUTENWICKE_GLATT PLANT("potterrautenwicke_glatt")
+#define POTTERRAUTENWICKE_GEFRANST PLANT("potterrautenwicke_gefranst")
+#define POLARWOLFSMILCH PLANT("polarwolfsmilch")
+#define POLARBIRKENGESELLE PLANT("polarbirkengeselle")
+#define ORANGUTANHANF PLANT("orangutanhanf")
+#define NEBELRAUTENWICKE_GLATT PLANT("nebelrautenwicke_glatt")
+#define NEBELRAUTENWICKE_GEZAHNT PLANT("nebelrautenwicke_gezahnt")
+#define NEBELRAUTENWICKE_GEFRANST PLANT("nebelrautenwicke_gefranst")
+#define NEBELMOOS_TRUEGERISCH PLANT("nebelmoos_truegerisch")
+#define NEANDERTALER_KNOCHENMOOS PLANT("neandertaler_knochenmoos")
+#define NACHTSCHATTEN_SCHWARZ PLANT("nachtschatten_schwarz")
+#define MOULOKINER_SIEBENSTERN PLANT("moulokiner_siebenstern")
+#define MORONER_SIEBENSTERN PLANT("moroner_siebenstern")
+#define MOORRETTICH PLANT("moorrettich")
+#define MIRILSZWIEBEL PLANT("mirilszwiebel")
+#define MEERRETTICH PLANT("meerrettich")
+#define MALTEKRESSE PLANT("maltekresse")
+#define MAEUSEHANF PLANT("maeusehanf")
+#define LUNGEN_ENZIAN_DUNKELBLAU PLANT("lungen_enzian_dunkelblau")
+#define LOEWENHANF PLANT("loewenhanf")
+#define LICHTNELKE_ROT PLANT("lichtnelke_rot")
+#define LEIMKRAUT_WEISS PLANT("leimkraut_weiss")
+#define LEIMKRAUT_ROT PLANT("leimkraut_rot")
+#define LEIMKRAUT_NICKEND PLANT("leimkraut_nickend")
+#define LEIMKRAUT_KLEBRIG PLANT("leimkraut_klebrig")
+#define LEIMKRAUT_AUFGEBLASEN PLANT("leimkraut_aufgeblasen")
+#define LEBERMOOS PLANT("lebermoos")
+#define LAUCHKRESSE PLANT("lauchkresse")
+#define LAUBMOOS PLANT("laubmoos")
+#define LANGFINGERKRAUT_AUFRECHT PLANT("langfingerkraut_aufrecht")
+#define KUCKUCKSLICHTNELKE PLANT("kuckuckslichtnelke")
+#define KRONENZWIEBEL PLANT("kronenzwiebel")
+#define KRIESELZWIEBEL PLANT("krieselzwiebel")
+#define KOBOLDSWURZ_GETUEPFELT PLANT("koboldswurz_getuepfelt")
+#define KNURRPILZ PLANT("knurrpilz")
+#define KLEINBUGERICH PLANT("kleinbugerich")
+#define KLEEFARN PLANT("kleefarn")
+#define KLEE_WEISS PLANT("klee_weiss")
+#define KLEE_TROPFIG PLANT("klee_tropfig")
+#define KLEE_ROT PLANT("klee_rot")
+#define KLEE_PERSISCH PLANT("klee_persisch")
+#define KLEE_KRIECHEND PLANT("klee_kriechend")
+#define KLEE_KOPFIG PLANT("klee_kopfig")
+#define KLEE_DOLDIG PLANT("klee_doldig")
+#define KICHERPILZ PLANT("kicherpilz")
+#define KICHERKRESSE PLANT("kicherkresse")
+#define KATZENWURZ PLANT("katzenwurz")
+#define KATZENHANF PLANT("katzenhanf")
+#define JOFSWURZ PLANT("jofswurz")
+#define INKARNATKLEE PLANT("inkarnatklee")
+#define HYDRAZAHN PLANT("hydrazahn")
+#define HYDRABALSAMKRAUT_GROSS PLANT("hydrabalsamkraut_gross")
+#define HUNGERKRAUT PLANT("hungerkraut")
+#define HUNDEHANF PLANT("hundehanf")
+#define HUMNIZWIEBEL PLANT("humnizwiebel")
+#define HUEPFERLISL PLANT("huepferlisl")
+#define HONIGKLEE PLANT("honigklee")
+#define HEXENTRAUM_QUIETSCHGRUEN PLANT("hexentraum_quietschgruen")
+#define HEXENKRAUT_WILD PLANT("hexenkraut_wild")
+#define HEXENKRAUT_VERBRANNT PLANT("hexenkraut_verbrannt")
+#define HEXENKRAUT_KREUZBLAETTRIG PLANT("hexenkraut_kreuzblaettrig")
+#define HEXENKRAUT_KLEIN PLANT("hexenkraut_klein")
+#define HEXENKRAUT_GROSS PLANT("hexenkraut_gross")
+#define HEXENKRAUT_GEMEIN PLANT("hexenkraut_gemein")
+#define HEXENKRAUT_BRAUN PLANT("hexenkraut_braun")
+#define HEXENKRAUT_13_FINGRIG PLANT("hexenkraut_13_fingrig")
+#define HASENKLEE PLANT("hasenklee")
+#define HANGRAUTENWICKE_WEISS_GEPUNKTET PLANT("hangrautenwicke_weiss_gepunktet")
+#define HANGRAUTENWICKE PLANT("hangrautenwicke")
+#define HAMMERKRAUT PLANT("hammerkraut")
+#define HALTEKRESSE PLANT("haltekresse")
+#define HAHNENFUSS_WOLLIG PLANT("hahnenfuss_wollig")
+#define HAHNENFUSS_SPREIZEND PLANT("hahnenfuss_spreizend")
+#define HAHNENFUSS_SCHARF PLANT("hahnenfuss_scharf")
+#define HAHNENFUSS_KRIECHEND PLANT("hahnenfuss_kriechend")
+#define HAHNENFUSS_KNOLLIG PLANT("hahnenfuss_knollig")
+#define HAHNENFUSS_GELB PLANT("hahnenfuss_gelb")
+#define HAHNENFUSS_GACKERND PLANT("hahnenfuss_gackernd")
+#define HAHNENFUSS_FLUTEND PLANT("hahnenfuss_flutend")
+#define HAHNENFUSS_EISENHUTBLAETTRIG PLANT("hahnenfuss_eisenhutblaettrig")
+#define HAHNENFUSS_EFEUBLAETTRIG PLANT("hahnenfuss_efeublaettrig")
+#define HAHNENFUSS_BRENNEND PLANT("hahnenfuss_brennend")
+#define GOLDHAHNENFUSS PLANT("goldhahnenfuss")
+#define GLOCKENBLUME PLANT("glockenblume")
+#define GLETSCHER_HAHNENFUSS_ROT PLANT("gletscher_hahnenfuss_rot")
+#define GIPFELRAUTENWICKE_WILD PLANT("gipfelrautenwicke_wild")
+#define GESELLENKRESSE PLANT("gesellenkresse")
+#define GEBIRGSRETTICH PLANT("gebirgsrettich")
+#define GEBIRGSENZIAN PLANT("gebirgsenzian")
+#define GAENSEFINGERKRAUT PLANT("gaensefingerkraut")
+#define GAENSEBLUEMCHEN PLANT("gaensebluemchen")
+#define FUTTERKRESSE PLANT("futterkresse")
+#define FRUEHLINGSFINGERKRAUT PLANT("fruehlingsfingerkraut")
+#define FRUEHLINGS_ENZIAN_POLSTERWUECHSIG PLANT("fruehlings_enzian_polsterwuechsig")
+#define FRUEHLINGS_ENZIAN_HIMMELBLAU PLANT("fruehlings_enzian_himmelblau")
+#define FRUEHLINGS_ENZIAN_FUENFZIPFLIG PLANT("fruehlings_enzian_fuenfzipflig")
+#define FRUEHLINGS_ENZIAN PLANT("fruehlings_enzian")
+#define FROSTREBE_ROT PLANT("frostrebe_rot")
+#define FROSTENZIAN PLANT("frostenzian")
+#define FRANSENENZIAN PLANT("fransenenzian")
+#define FINSTERMOOS PLANT("finstermoos")
+#define FINGERKRAUT_KRIECHEND PLANT("fingerkraut_kriechend")
+#define FINGERKRAUT_GROSSBLUETIG PLANT("fingerkraut_grossbluetig")
+#define FINGERKRAUT_AUFRECHT PLANT("fingerkraut_aufrecht")
+#define FEUERTULPE PLANT("feuertulpe")
+#define FEUERENZIAN PLANT("feuerenzian")
+#define FELDKLEE PLANT("feldklee")
+#define FELD_ENZIAN_BLAUVIOLETT PLANT("feld_enzian_blauviolett")
+#define ERDBEERFINGERKRAUT PLANT("erdbeerfingerkraut")
+#define ENZIAN_STENGELLOS PLANT("enzian_stengellos")
+#define ENZIAN_GELB PLANT("enzian_gelb")
+#define ELFENOHRWURZ PLANT("elfenohrwurz")
+#define ELEFANTENHANF PLANT("elefantenhanf")
+#define EISZWIEBEL PLANT("eiszwiebel")
+#define EISZAHN PLANT("eiszahn")
+#define EISWURZ PLANT("eiswurz")
+#define EISSTERN PLANT("eisstern")
+#define EISNESSEL PLANT("eisnessel")
+#define EISKRAUT PLANT("eiskraut")
+#define EISENZWIEBEL PLANT("eisenzwiebel")
+#define EISDORN PLANT("eisdorn")
+#define EISDISTEL PLANT("eisdistel")
+#define DUNKELPILZ PLANT("dunkelpilz")
+#define DUNKELMOOS PLANT("dunkelmoos")
+#define DUESTERZWIEBEL_FINSTER PLANT("duesterzwiebel_finster")
+#define DREIFINGERKRAUT_GROSSBLUETIG PLANT("dreifingerkraut_grossbluetig")
+#define DREIFINGERKRAUT_GEMEIN PLANT("dreifingerkraut_gemein")
+#define DRACHENZINNENDORN_GESCHECKT PLANT("drachenzinnendorn_gescheckt")
+#define DRACHENHORTER_SIEBENSTERN PLANT("drachenhorter_siebenstern")
+#define DRACHENHANF PLANT("drachenhanf")
+#define BUSCHREBE_NIEDER PLANT("buschrebe_nieder")
+#define BUSCHREBE_GROSS PLANT("buschrebe_gross")
+#define BRUNNENKRESSE PLANT("brunnenkresse")
+#define BREITWEGERICH PLANT("breitwegerich")
+#define BOCKSHORNKLEE PLANT("bockshornklee")
+#define BLUTNELKE PLANT("blutnelke")
+#define BITTERKLEE PLANT("bitterklee")
+#define BERGRETTICH PLANT("bergrettich")
+#define BERGRAUTENWICKE_GEZAHNT PLANT("bergrautenwicke_gezahnt")
+#define BERGRAUTENWICKE_GEMEIN PLANT("bergrautenwicke_gemein")
+#define BERGMOOS PLANT("bergmoos")
+#define BERGKLEE PLANT("bergklee")
+#define BAERLAPPMOOS PLANT("baerlappmoos")
+#define BAERENKLAU PLANT("baerenklau")
+#define AUGENTROST_GEMEIN PLANT("augentrost_gemein")
+#define ARKZWIEBEL PLANT("arkzwiebel")
+#define ARATHORNSILIKUM_WEIS PLANT("arathornsilikum_weis")
+#define ACKERLICHTNELKE PLANT("ackerlichtnelke")
+#define ACKERKLEE_GELB PLANT("ackerklee_gelb")
+#define ACKER_RETTICH PLANT("acker_rettich")
diff --git a/sys/items/kraeuter/trankattribute.h b/sys/items/kraeuter/trankattribute.h
new file mode 100644
index 0000000..484347c
--- /dev/null
+++ b/sys/items/kraeuter/trankattribute.h
@@ -0,0 +1,59 @@
+#ifndef __KRAEUTER_TRANKATTRIBUTE_H__
+#define __KRAEUTER_TRANKATTRIBUTE_H__
+
+#define T_CARRY "attr_tragen"
+#define T_DAMAGE_ANIMALS "attr_dam_animals"
+#define T_DAMAGE_MAGIC "attr_dam_magical"
+#define T_DAMAGE_UNDEAD "attr_dam_undead"
+#define T_PROTECTION_ANIMALS "attr_prot_animals"
+#define T_PROTECTION_MAGIC "attr_prot_magical"
+#define T_PROTECTION_UNDEAD "attr_prot_undead"
+#define T_FROG "attr_defrog"
+#define T_FLEE_TPORT "attr_flee_tport"
+#define T_HEAL_LP "attr_heal_lp"
+#define T_HEAL_SP "attr_heal_sp"
+#define T_HEAL_POISON "attr_heal_poison"
+#define T_HEAL_DISEASE "attr_heal_disease"
+#define T_CHANGE_DIMENSION "attr_change_dimension"
+#define T_SA_SPEED "attr_change_sa_speed"
+#define T_SA_DURATION "attr_change_sa_duration"
+#define T_SA_SPELL_PENETRATION "attr_change_sa_spell_penetration"
+#define T_EFFECT_DURATION "attr_effect_duration"
+#define T_SUPPORTER "attr_supporter"
+#define T_BLOCKING "attr_blocking"
+#define T_ABUNDANCE "attr_abundance"
+#define T_EXPIRE "best_before"
+
+#define T_KRAUT_EFFECTS ({ \
+ T_CARRY, T_DAMAGE_ANIMALS, T_DAMAGE_MAGIC, \
+ T_DAMAGE_UNDEAD, T_PROTECTION_ANIMALS, T_PROTECTION_MAGIC, \
+ T_PROTECTION_UNDEAD, T_FROG, T_FLEE_TPORT, T_HEAL_LP, T_HEAL_SP, \
+ T_HEAL_POISON, T_HEAL_DISEASE, T_CHANGE_DIMENSION, \
+ T_SA_SPEED, T_SA_DURATION, T_SA_SPELL_PENETRATION, })
+
+#define T_KRAUT_MAP \
+ (["car": T_CARRY, \
+ "da": T_DAMAGE_ANIMALS, \
+ "dm": T_DAMAGE_MAGIC, \
+ "du": T_DAMAGE_UNDEAD, \
+ "dn": T_EFFECT_DURATION, \
+ "flt": T_FLEE_TPORT, \
+ "fro": T_FROG, \
+ "hI": T_HEAL_DISEASE, \
+ "hP": T_HEAL_POISON, \
+ "hK": T_HEAL_SP, \
+ "hL": T_HEAL_LP, \
+ "pa": T_PROTECTION_ANIMALS, \
+ "pm": T_PROTECTION_MAGIC, \
+ "pu": T_PROTECTION_UNDEAD, \
+ "ss": T_SA_SPEED, \
+ "sp": T_SA_SPELL_PENETRATION, \
+ "sd": T_SA_DURATION ])
+
+// negative Effekte muesssen abs. groesser als dies sein, damit sie bei der Wirkung
+// beruecksichtigt werden.
+#define T_MINIMUM_THRESHOLD 150
+// Dies ist der max. Effekt. Alles, was hierueber gebt, wird gedeckelt.
+#define T_MAXIMUM_THRESHOLD 2000
+
+#endif // __KRAEUTER_TRANKATTRIBUTE_H__
diff --git a/sys/language.h b/sys/language.h
new file mode 100644
index 0000000..aad6a41
--- /dev/null
+++ b/sys/language.h
@@ -0,0 +1 @@
+#include <thing/language.h>
diff --git a/sys/lightsource.h b/sys/lightsource.h
new file mode 100644
index 0000000..0a0928b
--- /dev/null
+++ b/sys/lightsource.h
@@ -0,0 +1,15 @@
+// MorgenGrauen MUDlib
+//
+// lightsource.h -- lightsources header file
+//
+// $Id: lightsource.h,v 1.1 2000/02/09 15:52:48 Padreic Exp $
+
+#ifndef __LIGHTSOURCE_H__
+#define __LIGHTSOURCE_H__
+
+#define P_FUEL "fuel" // Brennzeit in Sekunden
+#define P_LIGHTDESC "lightdesc" // Beschreibung des Lichts
+#define P_DO_DESTRUCT "do_destruct" // Soll sich die Lichtquelle aufloesen?
+#define P_LIGHTED "lighted" // Flag ob die Lichtquelle in Betrieb ist
+
+#endif // __LIGHTSOURCE_H__
diff --git a/sys/living.h b/sys/living.h
new file mode 100644
index 0000000..f1f5380
--- /dev/null
+++ b/sys/living.h
@@ -0,0 +1,31 @@
+// MorgenGrauen MUDlib
+//
+// living.h -- Header fuer Lebewesen
+//
+// $Id: living.h 6513 2007-10-06 15:55:27Z Zesstra $
+
+#include "/sys/living/life.h"
+#include "/sys/living/attributes.h"
+#include "/sys/living/put_and_get.h"
+#include "/sys/living/combat.h"
+#include "/sys/living/team.h"
+#include "/sys/living/skills.h"
+//#include "/sys/living/moving.h"
+
+#ifndef __LIVING_H__
+#define __LIVING_H__
+
+#define INTERVAL_BETWEEN_HEALING 10
+#define WEAPON_CLASS_OF_HANDS (3)
+#define ARMOUR_CLASS_OF_BARE 0
+#define KILL_NEUTRAL_ALIGNMENT 10
+#define ADJ_ALIGNMENT(al) ((-al - KILL_NEUTRAL_ALIGNMENT)/4)
+#define MAX_LIST 20
+#define NAME_OF_GHOST "some mist"
+
+/* Hands */
+#define HAND_SHORT 0
+#define HAND_WEAPON 1
+#define HAND_WC 2
+
+#endif // __LIVING_H__
diff --git a/sys/living/attributes.h b/sys/living/attributes.h
new file mode 100644
index 0000000..8f28299
--- /dev/null
+++ b/sys/living/attributes.h
@@ -0,0 +1,96 @@
+// MorgenGrauen MUDlib
+//
+// living/attributes.h -- living attributes
+//
+// $Id: attributes.h 6282 2007-05-09 20:55:17Z Zesstra $
+
+#ifndef __LIVING_ATTRIBUTES_H__
+#define __LIVING_ATTRIBUTES_H__
+
+// properties
+
+#define P_ATTRIBUTES "attributes"
+#define P_ATTRIBUTES_OFFSETS "attributes_offsets"
+#define P_ATTRIBUTES_MODIFIER "attributes_modifier"
+#define P_X_ATTR_MOD "extern_attributes_modifier"
+#define P_X_HEALTH_MOD "extern_health_modifier"
+#define P_M_ATTR_MOD "magic_attributes_modifier"
+#define P_M_HEALTH_MOD "magic_health_modifier"
+#define P_ABILITIES "abilities"
+#define P_TIMED_ATTR_MOD "timed_attr_mod"
+
+// special defines
+
+/* standard attributes */
+#define A_STR "str"
+#define A_INT "int"
+#define A_DEX "dex"
+#define A_CON "con"
+
+/* errorcodes for P_TIMED_ATTR_MOD */
+#define TATTR_OK 0
+#define TATTR_NO_SUCH_MODIFIER 1
+#define TATTR_INVALID_ARGS 2
+
+/* indices used for P_TIMED_ATTR_MOD */
+#define TATTR_OUTDATE 0
+#define TATTR_DEPENDENTS 1
+#define TATTR_ENTRIES 2
+#define TATTR_MOD 0
+#define TATTR_OUTDATED 1
+#define TATTR_DEPENDENT 2
+#define TATTR_NOTIFY 3
+
+/* maximum of cumulative attribute modifiers */
+#define CUMULATIVE_ATTR_LIMIT 4
+
+#endif // __LIVING_ATTRIBUTES_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_ATTRIBUTES_H_PROTO__
+#define __LIVING_ATTRIBUTES_H_PROTO__
+
+// prototypes
+
+nomask public int SetTimedAttrModifier(string key, mapping modifier, int outdated, object dependent, mixed notify);
+nomask public mapping QueryTimedAttrModifier(string key);
+nomask public int DeleteTimedAttrModifier(string key);
+
+public int SetAttr(string attr, int val);
+nomask public void register_modifier(object modifier);
+nomask public void deregister_modifier(object modifier);
+
+public int SetAttribute(string attr, int val);
+public int SetRealAttribute(string attr, int val);
+public int QueryAttribute(string attr);
+public int QueryRealAttribute(string attr);
+public int QueryAttributeOffset(string attr);
+
+public void UpdateAttributes();
+
+public status TestLimitViolation(mapping check);
+
+// Set- und Query-Methoden
+static mapping _set_attributes(mapping arr);
+static mapping _query_attributes();
+static mapping _set_attributes_offsets(mapping arr);
+static mapping _query_attributes_offsets();
+static mixed _set_attributes_modifier(mixed arr);
+static mapping _query_attributes_modifier();
+static mixed _query_timed_attr_mod();
+
+// internal
+nomask protected void attribute_hb();
+protected void add_offsets(mapping arr);
+protected nomask void calculate_valid_modifiers();
+protected nomask void notifyInvalidModifiers();
+protected int _filterattr_str(int val);
+protected int _filterattr_dex(int val);
+protected int _filterattr_int(int val);
+protected int _filterattr_con(int val);
+nomask protected void notifyExpiredModifiers(mapping nots);
+
+#endif // __LIVING_ATTRIBUTES_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/living/clothing.h b/sys/living/clothing.h
new file mode 100644
index 0000000..d875c61
--- /dev/null
+++ b/sys/living/clothing.h
@@ -0,0 +1,12 @@
+// MorgenGrauen MUDlib
+//
+// living/clothing.h -- Konstanten und Pfade rund um Bekleidung von Lebewesen
+//
+// $Id: moneyhandler.h,v 3.1 1997/02/12 13:29:09 Wargon Exp %
+
+#ifndef __LIVING_CLOTHING_H__
+#define __LIVING_CLOTHING_H__
+
+#define P_CLOTHING "std:clothing"
+
+#endif // __LIVING_CLOTHING_H__
diff --git a/sys/living/combat.h b/sys/living/combat.h
new file mode 100644
index 0000000..528f446
--- /dev/null
+++ b/sys/living/combat.h
@@ -0,0 +1,166 @@
+// MorgenGrauen MUDlib
+//
+// living/combat.h -- combat header
+//
+// $Id: combat.h 9008 2015-01-06 17:20:17Z Zesstra $
+
+#ifndef __LIVING_COMBAT_H__
+#define __LIVING_COMBAT_H__
+
+// properties
+#define P_DISABLE_ATTACK "disable_attack"
+#define P_NEXT_DISABLE_ATTACK "next_disable_attack"
+
+#define P_CORPSE "corpse"
+#define P_NOCORPSE "nocorpse"
+
+// bitte P_ARMOURS auch in /secure/master.h aendern, falls das mal geaendert
+// wird.
+#define P_ARMOURS "armours"
+#define P_BODY "body"
+
+#define P_RESISTANCE_STRENGTHS "resistance_strengths"
+#define P_RESISTANCE_MODIFIER "rstr:mod"
+#define P_RESISTANCE "resistance"
+#define P_VULNERABILITY "vulnerability"
+#define P_TOTAL_AC "total_ac"
+#define P_TOTAL_WC "total_wc"
+
+#define P_HANDS "hands"
+#define P_MAX_HANDS "max_hands"
+#define P_USED_HANDS "used_hands"
+#define P_FREE_HANDS "free_hands"
+#define P_HANDS_USED_BY "hands_used_by"
+
+#define P_ATTACK_BUSY "attack_busy"
+#define P_NO_ATTACK "no_attack"
+
+#define P_PREFERED_ENEMY "pref_enemy"
+#define P_SHOW_ATTACK_MSG "show_attack_msg"
+
+#define P_LAST_DAMAGE "last_damage"
+#define P_LAST_DAMTYPES "last_damtypes"
+#define P_LAST_DAMTIME "last_damtime"
+
+#define P_DEATH_SPONSORED_BY "responsible_wizard_for_death"
+#define P_KILLER "killer"
+#define P_MURDER_MSG "murder_msg"
+#define P_FORCE_MURDER_MSG "force_murder_msg"
+#define P_ENEMY_DEATH_SEQUENCE "enemy_death_sequence"
+#define P_NEXT_DEATH_SEQUENCE "p_lib_next_death_sequence"
+#define P_DEATH_MSG "death_msg"
+
+#define P_HUNTTIME "p_lib_hunttime"
+
+// Befriede: Gildenzaehler
+#define P_PEACE_HISTORY "_peace_history"
+
+#define DISABLE_TOO_EARLY -100111
+
+#define ENEMY_HUNTTIME 0
+
+// Helfer-NPC
+// a) NPC: welchem Spieler ist dieser NPC zugeordnet, d.h. fuer wen kaempft
+// er? Array: ({ spielerobject, flags })
+// b) Spieler: welche NPC sind diesem Spieler zugeordnet. Mapping mit Objekten
+// und Flags.
+#define P_HELPER_NPC "std:helper_npc"
+// Flags:
+// 2 Klassen von Helfern momentan: Gilden-NPC und sonstige.
+#define GUILD_HELPER 0x1
+#define MISC_HELPER 0x2
+// Wenn gesetzt, ist der Helfer exklusiv und laesst keinen anderen in der
+// derselben Klasse zu.
+#define EXCLUSIVE_HELPER 0x40000000
+// Wenn gesetzt, ist der Helfer 'aktiv', d.h. nicht nur Schlagfaenger
+#define ACTIVE_HELPER 0x20000000
+
+// individuelle Schadensmeldungen eines Lebewesens
+#define P_DAMAGE_MSG "std_p_dam_msg"
+
+#endif // __LIVING_COMBAT_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_COMBAT_H_PROTO__
+#define __LIVING_COMBAT_H_PROTO__
+
+// prototypes
+public int Kill(object ob);
+public void Attack2(object enemy);
+public void Attack(object enemy);
+public void AddDefender(object friend);
+public void RemoveDefender(object friend);
+public void InformDefend(object enemy);
+public mixed DefendOther(int dam, string|string* dam_type, int|mapping spell, object enemy);
+public int Defend(int dam, string|string* dam_type, int|mapping spell, object enemy);
+public void CheckWimpyAndFlee();
+public varargs void Flee(object oldenv, int force);
+
+public varargs int StopHuntFor(object arg, int silent);
+public varargs mapping StopHuntingMode(int silent);
+
+public void UpdateResistanceStrengths();
+public varargs int AddResistanceModifier(mapping mod, string add);
+public varargs void RemoveResistanceModifier(string add);
+public float CheckResistance(string* dam_type);
+
+public int InsertSingleEnemy(object ob);
+public int InsertEnemy(object ob);
+public int IsEnemy(object wer);
+public object *PresentEnemies();
+public object QueryPreferedEnemy();
+public varargs object SelectEnemy(object *here);
+public <object*|int*>* QueryEnemies();
+public mapping GetEnemies();
+#if __VERSION_MAJOR__>=3 && __VERSION_MINOR__>=5 && (__VERSION_MICRO__>0 || (__VERSION_MICRO__==0 && __VERSION_PATCH__>=2))
+public mapping SetEnemies(<object*|int*>* myenemies);
+#else
+public mapping SetEnemies(mixed *myenemies);
+#endif
+public mixed EnemyPresent();
+public mixed InFight();
+public int CheckEnemy(object ob);
+
+public int SpellDefend(object caster, mapping sinfo);
+
+public object|object* QueryArmourByType(string type);
+
+public varargs int UseHands(object ob, int num);
+public varargs int FreeHands(object ob);
+
+public void InitAttack();
+public void ExitAttack();
+
+public int Pacify(object caster);
+
+public varargs int StopHuntID(string str, int silent);
+public void StopHuntText(object arg);
+public varargs void ExecuteMissingAttacks(object *remove_attackers);
+
+// Query- und Set-Methoden
+static int _query_attack_busy();
+static int _query_free_hands();
+static mixed _query_hands();
+static mixed *_query_hands_used_by();
+static mapping _query_resistance_strengths();
+static int _query_total_ac();
+static int _query_total_wc();
+static int _query_used_hands();
+static int _set_attack_busy(mixed val);
+static int _set_disable_attack(int val);
+static mixed _set_hands(mixed h);
+static mixed _set_resistance(mixed arg);
+static int _set_used_hands(int new_num);
+static mixed _set_vulnerability(mixed arg);
+static int _set_wimpy(int i);
+
+// Internal
+protected void SkillResTransfer(mapping from_M, mapping to_M);
+protected void InternalModifyAttack(mapping ainfo);
+protected void InternalModifyDefend(int dam, string* dt, mapping spell, object enemy);
+protected string mess(string msg,object me,object enemy);
+
+#endif // __LIVING_COMBAT_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/living/comm.h b/sys/living/comm.h
new file mode 100644
index 0000000..3950622
--- /dev/null
+++ b/sys/living/comm.h
@@ -0,0 +1,101 @@
+// MorgenGrauen MUDlib
+//
+// living/comm.h -- communication module properties for Livings
+//
+// $Id: comm.h,v 3.3 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __LIVING_COMM_H__
+#define __LIVING_COMM_H__
+
+#include <break_string.h>
+
+// Flags fuer ReceiveMsg().
+// The BS-Flags MUST always be equal to the one defined for break_string!
+#define MSG_BS_LEAVE_LFS BS_LEAVE_MY_LFS //1
+#define MSG_BS_SINGLE_SPACE BS_SINGLE_SPACE //2
+#define MSG_BS_BLOCK BS_BLOCK //4
+#define MSG_BS_NO_PARINDENT BS_NO_PARINDENT //8
+#define MSG_BS_INDENT_ONCE BS_INDENT_ONCE //16
+#define MSG_BS_PREP_INDENT BS_PREPEND_INDENT //32
+// Flags < 1024 (2^10) reserviert fuer BS
+#define MSG_DONT_BUFFER 1024
+#define MSG_DONT_STORE 2048
+#define MSG_DONT_WRAP 4096
+#define MSG_DONT_IGNORE 8192
+// Flags < 1048576 (2^20) reserviert fuer Flags
+#define MSG_ALL_BS_FLAGS (BS_LEAVE_MY_LFS | BS_SINGLE_SPACE | BS_BLOCK\
+ | BS_NO_PARINDENT | BS_INDENT_ONCE\
+ |BS_PREPEND_INDENT)
+#define MSG_ALL_FLAGS (MSG_DONT_BUFFER | MSG_DONT_STORE | MSG_DONT_WRAP\
+ | MSG_DONT_IGNORE | MSG_ALL_BS_FLAGS)
+
+// Nachrichtentypen, Werte ab 2^20
+#define MT_UNKNOWN 0
+#define MT_LOOK 1048576
+#define MT_LISTEN 2097152
+#define MT_FEEL 4194304
+#define MT_TASTE 8388608
+#define MT_SMELL 16777216
+#define MT_MAGIC 33554432
+#define MT_NOTIFICATION 67108864
+#define MT_COMM 134217728
+#define MT_FAR 268435456
+#define MT_DEBUG 536870912
+#define MT_NEWS 1073741824
+
+// Aktionen
+// Bei MA_UNKNOWN wird die Aktion aus query_verb() geraten. Wenn das nicht
+// existiert, bleibt die Aktion MA_UNKNOWN.
+#define MA_UNKNOWN 0
+#define MA_PUT "wirf"
+#define MA_TAKE "nimm"
+#define MA_MOVE_IN "move_in"
+#define MA_MOVE_OUT "move_out"
+#define MA_MOVE "move"
+#define MA_FIGHT "toete"
+#define MA_WIELD "zuecke"
+#define MA_UNWIELD "stecke"
+#define MA_WEAR "trage"
+#define MA_UNWEAR "ziehe"
+#define MA_EAT "iss"
+#define MA_DRINK "trinke"
+#define MA_SPELL "zaubere"
+#define MA_LOOK "untersuche"
+#define MA_LISTEN "lausche"
+#define MA_FEEL "taste"
+#define MA_SMELL "rieche"
+#define MA_SENSE "erspueren"
+#define MA_READ "lies"
+#define MA_USE "benutze"
+#define MA_SAY "sage"
+#define MA_REMOVE "remove"
+#define MA_CHANNEL "ebenen"
+#define MA_EMOTE "emote"
+#define MA_SHOUT "rufe"
+#define MA_SHOUT_SEFUN "shout"
+#define MA_TELL "teilemit"
+
+// Rueckgabewerte von ReceiveMsg()
+#define MSG_DELIVERED 1
+#define MSG_BUFFERED 2
+#define MSG_FAILED -1
+#define MSG_IGNORED -2
+#define MSG_VERB_IGN -3
+#define MSG_MUD_IGN -4
+#define MSG_SENSE_BLOCK -5
+#define MSG_BUFFER_FULL -6
+
+#endif // __LIVING_COMM_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_COMM_H_PROTO__
+#define __LIVING_COMM_H_PROTO__
+
+public varargs int ReceiveMsg(string msg, int msg_type, string msg_action,
+ string msg_prefix, object origin);
+
+#endif // __LIVING_COMM_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/living/description.h b/sys/living/description.h
new file mode 100644
index 0000000..dc07fbf
--- /dev/null
+++ b/sys/living/description.h
@@ -0,0 +1,48 @@
+#ifndef __LIVING_DESCRIPTION_H__
+#define __LIVING_DESCRIPTION_H__
+
+// properties
+
+#define P_GUILD "guild"
+#define P_VISIBLE_GUILD "visible_guild"
+
+#define P_EXTRA_LOOK "extralook"
+#define P_INTERNAL_EXTRA_LOOK "internal_extralook"
+
+#define P_PLAYER_LIGHT "player_light"
+#define P_LIGHT_MODIFIER "light_modifier"
+
+#define P_LEVEL "level"
+
+#define P_RACE "race"
+#define P_REAL_RACE "real_race"
+
+// bitte auch in /secure/master.h aendern, falls das mal geaendert wird.
+#define P_WEAPON "weapon"
+
+#define P_PARA "para"
+#define P_SIZE "size"
+
+#define P_DIE_MSG "die_msg"
+
+#define P_WIMPY "wimpy"
+#define P_WIMPY_DIRECTION "wimpy_dir"
+
+#define P_AVATAR_URI "p_lib_avataruri"
+
+#endif // __LIVING_DESCRIPTION_H__
+
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_DESCRIPTION_H_PROTO__
+#define __LIVING_DESCRIPTION_H_PROTO__
+
+varargs int CannotSee(int silent);
+public varargs int AddExtraLook(string look, int duration, string key,
+ string lookende, object ob);
+public int RemoveExtraLook(string key);
+
+#endif // __LIVING_DESCRIPTION_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/living/helpers.h b/sys/living/helpers.h
new file mode 100644
index 0000000..4e3793a
--- /dev/null
+++ b/sys/living/helpers.h
@@ -0,0 +1,42 @@
+// MorgenGrauen MUDlib
+//
+// living/helpers.h -- Konstanten und Methoden fuer Hilfsobjekte
+//
+// $Id: moneyhandler.h,v 3.1 1997/02/12 13:29:09 Wargon Exp %
+
+#ifndef __LIVING_HELPERS_H__
+#define __LIVING_HELPERS_H__
+
+// Properties
+
+#define P_HELPER_OBJECTS "lib_p_helper_objects"
+
+#define P_AQUATIC_HELPERS "lib_p_aquatic_helpers"
+#define P_AERIAL_HELPERS "lib_p_aerial_helpers"
+
+// Defines fuer Helferobjekt-Typen und Rueckgabewerte
+
+#define HELPER_TYPE_AQUATIC 1
+#define HELPER_TYPE_AERIAL 2
+
+#define HELPER_NO_CALLBACK_OBJECT -1
+#define HELPER_ALREADY_LISTED -2
+#define HELPER_NOTHING_TO_UNREGISTER -3
+#define HELPER_SUCCESS 1
+
+#endif // __LIVING_HELPERS_H__
+
+// Prototypes
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_HELPERS_H_PROTO__
+#define __LIVING_HELPERS_H_PROTO__
+
+int RegisterHelperObject(object helper, int type, mixed callback);
+int UnregisterHelperObject(object helper, int type);
+
+#endif // __LIVING_HELPERS_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/living/life.h b/sys/living/life.h
new file mode 100644
index 0000000..81ba3dd
--- /dev/null
+++ b/sys/living/life.h
@@ -0,0 +1,125 @@
+// MorgenGrauen MUDlib
+//
+// living/life.h -- living life header
+//
+// $Id: life.h 9048 2015-01-11 18:21:32Z Zesstra $
+
+#ifndef __LIVING_LIFE_H__
+#define __LIVING_LIFE_H__
+
+// properties
+
+#define P_AGE "age"
+#define P_ALIGN "align"
+
+#define P_DEADS "deads"
+#define P_GHOST "ghost"
+#define P_FROG "frog"
+
+#define P_FOOD "food"
+#define P_MAX_FOOD "max_food"
+#define P_DRINK "drink"
+#define P_MAX_DRINK "max_drink"
+#define P_ALCOHOL "alcohol"
+#define P_MAX_ALCOHOL "max_alcohol"
+
+#define P_HP "hp"
+#define P_MAX_HP "max_hp"
+#define P_SP "sp"
+#define P_MAX_SP "max_sp"
+#define P_XP "xp"
+#define P_NO_XP "no_xp"
+#define P_LAST_XP "last_xp"
+
+#define P_FOOD_DELAY "food_delay"
+#define P_DRINK_DELAY "drink_delay"
+#define P_ALCOHOL_DELAY "alcohol_delay"
+#define P_HP_DELAY "hp_delay"
+#define P_SP_DELAY "sp_delay"
+#define P_POISON_DELAY "poison_delay"
+
+#define P_POISON "poison"
+#define P_MAX_POISON "max_poison"
+
+#define P_NO_REGENERATION "no_regeneration"
+
+#define P_ENEMY_DAMAGE "enemy_damage"
+#define P_TIMING_MAP "timing_map"
+#define P_LAST_DEATH_TIME "last_death_time"
+#define P_LAST_DEATH_PROPS "last_death_props"
+#define P_CORPSE_DECAY_TIME "corpse_decay"
+
+// ----- Definitionen fuer Beeinflussung der Gesundheit durch consume -----
+
+// H_EFFECTS - Zu aendernde Properties fuer den Effekt
+#define H_EFFECTS "effects"
+// H_CONDITIONS - Zu pruefende Properties für den Effekt (Saettigung, ...)
+#define H_CONDITIONS "conditions"
+// H_DISTRIBUTION - Wie die Aenderung an HP/SP austeilen, sofort, zeitlich
+// versetzt, ...
+#define H_DISTRIBUTION "distribution"
+// H_INGREDIENTS - Bestandteile, die die Aenderung verursachen
+#define H_INGREDIENTS "ingredients"
+
+// Verteilungen,
+// 0 Sofortwirkung
+// 1-50 gleichverteilte Pufferung mit angegebener Rate fuer SP/HP
+// >= 51 spezielle Verteilungen (TODO)
+#define HD_INSTANT 0
+#define HD_STANDARD 5
+
+#define H_ALLOWED_CONDITIONS ({P_FOOD, P_DRINK, P_ALCOHOL})
+#define H_ALLOWED_EFFECTS ({P_SP, P_HP, P_POISON})
+
+#define HC_MAX_FOOD_REACHED 1
+#define HC_MAX_DRINK_REACHED 2
+#define HC_MAX_ALCOHOL_REACHED 4
+#define HC_HOOK_CANCELLATION 8
+
+// -------------------------------------------------------------------------
+
+#endif // __LIVING_LIFE_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_LIFE_H_PROTO__
+#define __LIVING_LIFE_H_PROTO__
+
+// prototypes
+
+// ----- zentrale Funktion, um die Gesundheit des Lebewesens zu beeinflussen -----
+public varargs int consume(mapping cinfo, int testonly);
+// -------------------------------------------------------------------------
+
+public int do_damage(int dam, object enemy);
+public int reduce_hit_points(int dam);
+public int restore_hit_points(int heal);
+
+public int reduce_hit_point(int dam); //Nur als Uebergansloesung (Rikus)
+
+public void restore_spell_points(int h);
+public void reduce_spell_points(int h);
+
+public void heal_self(int h);
+
+public varargs void die( int poisondeath, int extern );
+
+public varargs void transfer_all_to( string|object dest, int check );
+
+public varargs int drink_alcohol(int strength, int testonly, string mytext);
+public varargs int drink_soft(int strength, int testonly, string mytext);
+public varargs int eat_food(int strength, int testonly, string mytext);
+
+public int buffer_hp(int val,int rate);
+public int buffer_sp(int val,int rate);
+
+public void show_age();
+
+public int AddExp(int e);
+
+// internal
+protected void ResetEnemyDamage();
+
+#endif // __LIVING_LIFE_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/living/moving.h b/sys/living/moving.h
new file mode 100644
index 0000000..4914466
--- /dev/null
+++ b/sys/living/moving.h
@@ -0,0 +1,40 @@
+// MorgenGrauen MUDlib
+//
+// living/moving.h -- Props/Prototypen fuer living/moving.c
+//
+// $Id: moving.h 8892 2014-08-04 19:48:28Z Zesstra $
+
+#ifndef __LIVING_MOVING_H__
+#define __LIVING_MOVING_H__
+
+#define P_PURSUERS "pursuers"
+
+#endif // __LIVING_MOVING_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_MOVING_H_PROTO__
+#define __LIVING_MOVING_H_PROTO__
+
+public void AddPursuer(object ob);
+public void RemovePursuer(object ob);
+
+public void TakeFollowers();
+
+#ifdef __THING_MOVING_H_PROTO__
+// das darf nicht passieren, weil move in thing anders ist als hier. *seufz*
+inconsistent_move_protoyp_error
+#endif
+public varargs int move( object|string dest, int methods, string direction,
+ string textout, string textin );
+public varargs int remove(int silent);
+
+// internal
+public void _SetPursued(object ob);
+public void _RemovePursued(object ob);
+
+
+#endif // __LIVING_MOVING_H_PROTO__
+
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/living/put_and_get.h b/sys/living/put_and_get.h
new file mode 100644
index 0000000..802ad23
--- /dev/null
+++ b/sys/living/put_and_get.h
@@ -0,0 +1,37 @@
+// MorgenGrauen MUDlib
+//
+// living/put_and_get.h -- living put and get header
+//
+// $Id: put_and_get.h 6930 2008-08-09 09:20:16Z Zesstra $
+
+#ifndef __LIVING_PUT_AND_GET_H__
+#define __LIVING_PUT_AND_GET_H__
+
+// properties
+#define P_DROP_MSG "drop_message"
+#define P_PUT_MSG "put_message"
+#define P_PICK_MSG "pick_message"
+#define P_GIVE_MSG "give_message"
+#define P_SHOW_MSG "show_message"
+
+// If you don't want put_and_get send a message, set the property to
+#define NO_PNG_MSG -1
+
+// For user defined drop messages look for man P_DROP_MSG
+
+#endif // __LIVING_PUT_AND_GET_H__
+
+// prototypes
+#ifdef NEED_PROTOTYPES
+
+#ifndef __LIVING_PUT_AND_GET_H_PROTO__
+#define __LIVING_PUT_AND_GET_H_PROTO__
+
+object *find_obs(string str, int meth);
+
+void add_put_and_get_commands();
+
+#endif // __LIVING_PUT_AND_GET_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/living/skill_attributes.h b/sys/living/skill_attributes.h
new file mode 100644
index 0000000..939ca15
--- /dev/null
+++ b/sys/living/skill_attributes.h
@@ -0,0 +1,100 @@
+// MorgenGrauen MUDlib
+//
+// FileName.c -- Beschreibung
+//
+// $Id$
+
+#ifndef __SKILL_ATTRIBUTES_H__
+#define __SKILL_ATTRIBUTES_H__
+
+// ===== Properties fuer Skill-Attribute: =====
+
+#define P_SKILL_ATTRIBUTES "skill_attr"
+#define P_SKILL_ATTRIBUTE_OFFSETS "skill_attr_offsets"
+
+// ===== Skill Attribute: =====
+// Allgemeine Qualitaet
+#define SA_QUALITY "sa_qual"
+
+// Schaden
+#define SA_DAMAGE "sa_dam"
+
+// Geschwindigkeit
+#define SA_SPEED "sa_speed"
+
+// Dauer
+#define SA_DURATION "sa_dur"
+
+// Ausdehnung
+#define SA_EXTENSION "sa_ext"
+
+// Reichweite
+#define SA_RANGE "sa_range"
+
+// Je hoeher, desto groesser die Chance, dass nen vom Lebewesen gecasteter
+// Spell durch das gegnerische P_NOMAGIC durchschlaegt.
+// (SA_ENEMY_SAVE obsolet!)
+#define SA_ENEMY_SAVE "sa_save"
+#define SA_SPELL_PENETRATION "sa_save"
+
+// welche Skill-Attribute gibt es?
+#define VALID_SKILL_ATTRIBUTES ({ SA_QUALITY, SA_DAMAGE, SA_SPEED,\
+ SA_DURATION, SA_EXTENSION, SA_RANGE,\
+ SA_ENEMY_SAVE })
+
+// Indizes fuer die Verwaltung der Skill-Attribute
+#define SAM_CACHE 0
+#define SAM_STATIC 1
+#define SAM_DYNAMIC 2
+
+#define SAM_SUM 0
+#define SAM_CACHE_TIMEOUT 1
+#define SAM_COUNT 2
+
+#define SAM_DURATION 0
+#define SAM_VALUE 1
+
+
+// einige Konstanten
+#define SAM_MAX_MODS 5
+#define SAM_MAX_CACHE_TIMEOUT 60
+
+// rueckgabewerte der Verwaltungsfunktionen:
+#define SA_MOD_OK 1
+#define SA_MOD_REMOVED 1
+#define SA_TOO_MANY_MODS -1
+#define SA_MOD_TOO_SMALL -2
+#define SA_MOD_TOO_BIG -3
+#define SA_MOD_INVALID_ATTR -4
+#define SA_MOD_INVALID_OBJECT -5
+#define SA_MOD_NOT_FOUND -6
+#define SA_MOD_INVALID_VALUE -7
+
+// Statistik?
+#define SASTATD "/p/daemon/sastatd"
+
+#endif // __SKILL_ATTRIBUTES_H__
+
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __SKILL_ATTRIBUTES_H_PROTO__
+#define __SKILL_ATTRIBUTES_H_PROTO__
+
+// prototypes
+
+public int ModifySkillAttribute(string atrname, mixed value,
+ int duration);
+public int RemoveSkillAttributeModifier(object caster, string attrname);
+public int QuerySkillAttribute(string attr);
+public varargs mapping QuerySkillAttributeModifier(object caster,
+ string *attr);
+
+// Kompatibilitaetsfunktion mit altem Interface.
+public int ModifySkillAttributeOld(object caster, string atrname, int value,
+ int duration, mixed fun);
+
+#endif // __SKILL_ATTRIBUTES_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/living/skills.h b/sys/living/skills.h
new file mode 100644
index 0000000..ef2572c
--- /dev/null
+++ b/sys/living/skills.h
@@ -0,0 +1,33 @@
+// MorgenGrauen MUDlib
+//
+// skills.h -- Defines and prototypes for /std/living/skills.c
+//
+// $Id: skills.h 8694 2014-02-20 23:06:50Z Zesstra $
+
+#ifndef _LIVING_SKILLS_H_
+#define _LIVING_SKILLS_H_
+
+#endif // _LIVING_SKILLS_H_
+
+#ifdef NEED_PROTOTYPES
+#ifndef _LIVING_SKILLS_H_PROTO_
+#define _LIVING_SKILLS_H_PROTO_
+public varargs int UseSpell(string str, string spell);
+
+public varargs mapping QuerySkill(string sname, string gilde);
+public varargs int QuerySkillAbility(mixed sname, mixed argl);
+
+protected varargs mixed LimitAbility(mixed sinfo, int diff);
+public varargs mixed UseSkill(string skill, mapping args);
+
+public varargs void LearnSkill(string sname, int add, int diff);
+public varargs void ModifySkill(string sname, mixed val, int diff,
+ string gilde);
+public varargs int SetSpellFatigue(int duration, string key);
+public varargs int CheckSpellFatigue(string key);
+public void DeleteSpellFatigue(string key);
+
+#endif // _LIVING_SKILLS_H_PROTO_
+
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/living/team.h b/sys/living/team.h
new file mode 100644
index 0000000..942e0c3
--- /dev/null
+++ b/sys/living/team.h
@@ -0,0 +1,50 @@
+// MorgenGrauen MUDlib
+//
+// living/team.h -- team header
+//
+// $Id: team.h 8449 2013-03-04 21:06:38Z Zesstra $
+
+#ifndef __LIVING_TEAM_H__
+#define __LIVING_TEAM_H__
+
+#define P_TEAM "team"
+#define P_TEAM_NEWMEMBER "potential_team_member"
+#define P_TEAM_ATTACK_CMD "team_attack_cmd"
+#define P_TEAM_AUTOFOLLOW "team_autofollow"
+#define P_TEAM_WANTED_ROW "team_wanted_row"
+#define P_TEAM_WIMPY_ROW "team_wimpy_row"
+#define P_TEAM_LEADER "team_leader"
+#define P_TEAM_ASSOC_MEMBERS "team_assoc_members"
+#define P_TEAM_COLORS "team_colors"
+
+#define TEAM_OBJECT "/obj/team"
+#define TEAM_MASTER "/p/daemon/teammaster"
+#define EMPTY_TEAMARRAY ({({}),({}),({}),({}),({})})
+#define MAX_TEAMROWS 5
+#define MAX_TEAM_ROWLEN 6
+#define MAX_TEAM_MEMBERS 12
+
+#endif // __LIVING_TEAM_H__
+
+#ifdef NEED_PROTOTYPES
+#ifndef __LIVING_TEAM_H_PROTO__
+#define __LIVING_TEAM_H_PROTO__
+
+string TeamPrefix();
+object IsTeamLeader();
+object IsTeamMove();
+object *TeamMembers();
+varargs int PresentPosition(mixed pmap);
+varargs mapping PresentTeamPositions(mixed pres_rows);
+mixed *PresentTeamRows();
+varargs mixed *PresentEnemyRows(object *here);
+varargs object SelectNearEnemy(object *here, int forcefrom);
+varargs object SelectFarEnemy(object *here, int min, int max, int forcefrom);
+varargs void InsertEnemyTeam(mixed ens, int rek);
+int AssocMember(object npc);
+int DeAssocMember(object npc);
+int TeamFlee();
+varargs void InformRowChange(int from, int to, object caster);
+
+#endif // __LIVING_TEAM_H_PROTO__
+#endif // // NEED_PROTOYPES
diff --git a/sys/logging.h b/sys/logging.h
new file mode 100644
index 0000000..ffd4a11
--- /dev/null
+++ b/sys/logging.h
@@ -0,0 +1,31 @@
+// MorgenGrauen MUDlib
+//
+// logging.h
+//
+// $Id: logging.h 7116 2009-02-06 21:49:42Z Zesstra $
+
+#ifndef __LOGGING_H__
+#define __LOGGING_H__
+
+#define SYSLOGPATH "syslog/"
+#define SYSLOG(x) (SYSLOGPATH+x)
+
+#define SHELLLOGPATH SYSLOG("shell/")
+#define SHELLLOG(x) (SHELLLOGPATH+x)
+
+#define DAEMONLOGPATH SYSLOG("daemon/")
+#define DAEMONLOG(x) (DAEMONLOGPATH+x)
+
+#define INTERMUDLOGPATH SYSLOG("intermud/")
+#define INTERMUDLOG(x) (INTERMUDLOGPATH+x)
+
+#define GUILDLOGPATH "gilden/"
+#define GUILDLOG(x) (GUILDLOGPATH+x)
+
+#define REPFILEPATH "report/"
+#define REPFILE(x) (REPFILEPATH+x)
+
+#define ERRORLOGPATH "error/"
+#define ERRORLOG(x) (ERRORLOGPATH+x)
+
+#endif
diff --git a/sys/lpctypes.h b/sys/lpctypes.h
new file mode 100644
index 0000000..3187d6b
--- /dev/null
+++ b/sys/lpctypes.h
@@ -0,0 +1,64 @@
+#ifndef LPC_LPCTYPES_H
+#define LPC_LPCTYPES_H
+
+/* compile time types, from functionlist() */
+
+#define TYPE_UNKNOWN 0 /* This type must be casted */
+#define TYPE_NUMBER 1
+#define TYPE_STRING 2
+#define TYPE_VOID 3
+#define TYPE_OBJECT 4
+#define TYPE_MAPPING 5
+#define TYPE_FLOAT 6
+#define TYPE_ANY 7 /* Will match any type */
+#define TYPE_CLOSURE 8
+#define TYPE_SYMBOL 9
+#define TYPE_QUOTED_ARRAY 10
+#define TYPE_STRUCT 11
+
+#define TYPE_MOD_POINTER 0x0040 /* Pointer to a basic type */
+
+/* runtime types, from typeof() */
+
+#define T_INVALID 0x0
+#define T_LVALUE 0x1
+#define T_NUMBER 0x2
+#define T_STRING 0x3
+#define T_POINTER 0x4
+#define T_OBJECT 0x5
+#define T_MAPPING 0x6
+#define T_FLOAT 0x7
+#define T_CLOSURE 0x8
+#define T_SYMBOL 0x9
+#define T_QUOTED_ARRAY 0xa
+#define T_STRUCT 0xb
+
+/* Closure types, stored as secondary type info */
+
+#ifndef __DRIVER_SOURCE__
+
+#define CLOSURE_LFUN 0 /* lfun in an object */
+ /* Code 1: currently unused, used to be CLOSURE_ALIEN_LFUN */
+#define CLOSURE_IDENTIFIER 2 /* variable in this object */
+#define CLOSURE_PRELIMINARY 3
+ /* Efun closure used in a static initialization */
+#define CLOSURE_BOUND_LAMBDA 4 /* Bound unbound-lambda closure */
+#define CLOSURE_LAMBDA 5 /* normal lambda closure */
+#define CLOSURE_UNBOUND_LAMBDA 6 /* unbound lambda closure. */
+
+#define CLOSURE_OPERATOR (0xe800)
+#define CLOSURE_EFUN (0xf000)
+#define CLOSURE_SIMUL_EFUN (0xf800)
+
+#define CLOSURE_IS_LFUN(x) (((x)&~1) == 0)
+#define CLOSURE_IS_IDENTIFIER(x) ((x) == CLOSURE_IDENTIFIER)
+#define CLOSURE_IS_BOUND_LAMBDA(x) ((x) == CLOSURE_BOUND_LAMBDA)
+#define CLOSURE_IS_LAMBDA(x) ((x) == CLOSURE_LAMBDA)
+#define CLOSURE_IS_UNBOUND_LAMBDA(x) ((x) == CLOSURE_UNBOUND_LAMBDA)
+#define CLOSURE_IS_SIMUL_EFUN(x) (((x) & 0xf800) == CLOSURE_SIMUL_EFUN)
+#define CLOSURE_IS_EFUN(x) (((x) & 0xf800) == CLOSURE_EFUN)
+#define CLOSURE_IS_OPERATOR(x) (((x) & 0xf800) == CLOSURE_OPERATOR)
+
+#endif /* __DRIVER_SOURCE__ */
+
+#endif /* LPC_LPCTYPES_H */
diff --git a/sys/magier.h b/sys/magier.h
new file mode 100644
index 0000000..33cd98f
--- /dev/null
+++ b/sys/magier.h
@@ -0,0 +1,225 @@
+// MorgenGrauen MUDlib
+//
+// magier.h -- Magiererweiterung der Shell
+//
+// $Id: magier.h 9553 2016-05-03 20:22:47Z Zesstra $
+
+#ifndef _MAGIER_H_
+#define _MAGIER_H_
+
+#define SHELLDEBUGGER "zesstra"
+
+#define MAX_ARRAY_SIZE 3000 // MUSS EIGENTLICH NACH /sys/config.h oder so
+
+#define ERROR(msg, arg, res) (printf(msg, arg),res)
+
+#define NO_READ "%s: Keine Leserechte!\n"
+#define NO_WRITE "%s: Keine Schreibrechte!\n"
+#define DOESNT_EXIST "%s: Datei existiert nicht!\n"
+#define ALREADY_EXISTS "%s: Datei existiert schon.\n"
+#define NO_DIRS "%s ist ein Verzeichnis.\n"
+#define SAME_FILE "%s: Gleiches Quell- und Zielfile: uebergangen.\n"
+#define NO_CREATE_DIR "%s: Verzeichnis konnte nicht erstellt werden.\n"
+#define DEST_IS_DIR "%s: Zieldatei ist ein Verzeichnis.\n"
+#define DEST_NO_DELETE "%s: Zieldatei konnte nicht geloescht werden.\n"
+#define NO_MOVE "%s: Datei konnte nicht verschoben werden.\n"
+#define NO_COPY "%s: Datei konnte nicht kopiert werden.\n"
+#define FILE_COPIED "%s: kopiert.\n"
+#define DIR_CREATED "%s: Verzeichnis erzeugt.\n"
+#define FILE_MOVED "%s: verschoben.\n"
+#define FILE_DELETED "%s wurde geloescht.\n"
+#define NO_DELETE "%s konnte nicht geloescht werden.\n"
+
+#define MAY_READ(x) call_other(__MASTER_OBJECT__,"valid_read",x,getuid(this_object()))
+#define MAY_WRITE(x) call_other(__MASTER_OBJECT__,"valid_write",x,getuid(this_object()))
+#define MAY_DELETE(x) call_other(__MASTER_OBJECT__,"remove_file",x,getuid(this_object()))
+
+#define MAXLEN 50000
+
+#define P_VARIABLES "variables"
+
+#define MAN_OPTS "mri"
+#define MAN_M 1 // Matchen des Begriffs
+#define MAN_R 2 // Regexp-Matchen
+#define MAN_I 4 // Interaktive Hilfe (deaktiviert)
+
+#define MKDIR_OPTS "vrp"
+#define MKDIR_V 1 // Verbose: Ausgeben, was gemacht wird
+#define MKDIR_R 2 // Rekursiv alle hoeheren
+ // Verzeichnisse erstellen
+#define MKDIR_P 2 // das gleiche wie MKDIR_R
+
+#define RMDIR_OPTS "v"
+#define RMDIR_V 1 // Verbose: Ausgeben, was gemacht wird
+
+#define RM_OPTS "vrmi"
+#define RM_V 1 // Verbose: Ausgeben, was gemacht wird
+#define RM_R 2 // Verzeichnisse rekursiv loeschen
+#define RM_M 4 // DateiMASKE beachten
+#define RM_I 8 // Interaktiv loeschen (immer fragen)
+
+#define UPD_OPTS "afilrmbvcdhsC"
+#define UPD_A 1 // Alle Instanzen bearbeiten
+#define UPD_F 2 // Alle Instanzen finden und anzeigen
+#define UPD_I 4 // Geerbte Klassen aktualisieren
+#define UPD_L 8 // zerstoeren und neu laden
+#define UPD_R 16 // neu laden, falls zerstoert
+#define UPD_M 32 // alle geerbten Klassen auf
+ // aktualitaet Testen und
+ // ggf. aktualisieren
+#define UPD_B 64 // Backtrace bei Fehlern
+#define UPD_V 128 // Erbschaftslisten mit ausgeben
+#define UPD_C 256 // Properties erhalten
+#define UPD_D 512 // Objektinhalt komplett destructen
+#define UPD_H 1024 // Hard-Destruct (kein remove())
+#define UPD_S 2048 // Silent
+#define UPD_CONF 4096 // Configure() erzwingen (d.h. kein Update,
+ // wenn Configure() nicht definiert ist)
+#define UPD_LOAD 8192 // laden, falls nicht geladen (nur
+ // intern fuer 'load)
+
+#define CP_OPTS "vrfmi"
+#define CP_V 1 // Verbose: Ausgeben, was gemacht wird
+#define CP_R 2 // Rekursiv kopieren
+#define CP_F 4 // Force (nie fragen)
+#define CP_M 8 // DateiMASKE beachten
+#define CP_I 16 // Interaktiv kopieren (immer fragen)
+
+#define MV_OPTS "vrfmi"
+#define MV_V 1 // Verbose: Ausgeben, was gemacht wird
+#define MV_R 2 // Immer auch Dateien im Dir moven
+#define MV_F 4 // Force (nie fragen)
+#define MV_M 8 // DateiMASKE beachten
+#define MV_I 16 // Interaktiv bewegen (immer fragen)
+
+#define CD_OPTS "ls"
+#define CD_L 1 // .readme ausgeben
+#define CD_S 2 // .readme unterdruecken
+#define CD_B 4 // Zurueck zum letzten Verzeichnis
+
+#define LS_OPTS "alrtsug"
+#define LS_A 1 // ALLE Files anzeigen
+#define LS_L 2 // Lange Ausgabe
+#define LS_R 4 // Rueckwaerts ausgeben
+#define LS_T 8 // Nach Zeit ordnen
+#define LS_S 16 // Nach Größe ordnen
+#define LS_U 32 // UID anzeigen
+#define LS_G 64 // Gruppe anzeigen
+
+#define CLONE_OPTS "f"
+#define CLONE_F 1 // Auf jeden Fall versuchen zu clonen
+
+#define GREP_OPTS "chilnvrmf"
+#define GREP_C 1 // Nur Zahl der Zeilen ausgeben
+#define GREP_H 2 // Dateinamen nicht mit ausgeben
+#define GREP_I 4 // Gross-/Kleinschreibung ignorieren
+#define GREP_L 8 // Dateinamen immer mit ausgeben
+#define GREP_N 16 // Zeilennummern mit ausgeben
+#define GREP_V 32 // Nur Zeilen matchen, die NICHT passen
+#define GREP_R 64 // Rekursiv suchen
+#define GREP_M 128 // Dateimaske angegeben
+#define GREP_F 256 // Ausgabe in Datei
+
+#define ACCESS_OPTS "arlfgm"
+#define ACCESS_A 1 // Berechtigung hinzufuegen
+#define ACCESS_R 2 // Berechtigung entfernen
+#define ACCESS_L 4 // Berechtigungen anzeigen
+#define ACCESS_F 8 // Berechtigung fuer Dateien anzeigen
+#define ACCESS_G 16 // Das ganze fuer Gruppen
+#define ACCESS_M 32 // Das ganze fuer Gruppenleiter
+
+// Funktioniert nur, wenn SNOOP_L == SF_LOCKED und SNOOP_F == SF_FORCE
+// (Definitionen aus /sys/snooping.h)
+#define SNOOP_OPTS "lf"
+#define SNOOP_L 1 // Niedriger Magier kann sich nicht
+ // dazwischenklinken
+#define SNOOP_F 2 // Snoope snoopenden Magier, wenn der
+ // Charakter schon gesnoopt wird
+
+#define NO_CHECK M_GO|M_SILENT|M_NO_SHOW|M_NO_ATTACK|M_NOCHECK
+
+#define INV_SAVE "/room/void.c"
+
+#define USAGE(str) (_notify_fail(break_string(sprintf("Syntax: %s\n", str),77)), 0)
+
+#define BASENAME 0
+#define FILESIZE 1
+#define FILEDATE 2
+#define FULLNAME 3
+#define PATHNAME 4
+#define DESTNAME 5
+#define SUBDIRSIZE 6
+
+#define RET_OK 1
+#define RET_FAIL 0
+#define RET_JUMP -1
+#define RET_DELETE -2
+
+#define MODE_LSA 0
+#define MODE_LSB 1
+#define MODE_CP 2
+#define MODE_MV 3
+#define MODE_RM 4
+#define MODE_CD 5
+#define MODE_CAT 6
+#define MODE_GREP 7
+#define MODE_ED 8
+#define MODE_UPD 9
+#define MODE_MORE 10
+#define MODE_RMDIR 11
+#define MODE_CLONE 12
+
+#define COLORS ([ "none": ANSI_NORMAL, \
+ "bold": ANSI_BOLD, \
+ "blink": ANSI_BLINK, \
+ "invers": ANSI_INVERS, \
+ "black": ANSI_BLACK, \
+ "red": ANSI_RED, \
+ "green": ANSI_GREEN, \
+ "yellow": ANSI_YELLOW, \
+ "blue": ANSI_BLUE, \
+ "purple": ANSI_PURPLE, \
+ "cyan": ANSI_CYAN, \
+ "white": ANSI_WHITE, \
+ "bblack": ANSI_BG_BLACK, \
+ "bred": ANSI_BG_RED, \
+ "bgreen": ANSI_BG_GREEN, \
+ "byellow": ANSI_BG_YELLOW, \
+ "bblue": ANSI_BG_BLUE, \
+ "bpurple": ANSI_BG_PURPLE, \
+ "bcyan": ANSI_BG_CYAN, \
+ "bwhite": ANSI_BG_WHITE, \
+ ])
+
+#define VALID_READ_CL symbol_function("valid_read",__MASTER_OBJECT__)
+#define VALID_WRITE_CL symbol_function("valid_write",__MASTER_OBJECT__)
+#define CREATOR_CL symbol_function("creator_file",__MASTER_OBJECT__)
+
+#define DIR "directory"
+#define OBJ "loaded"
+#define VC "virtual"
+
+#ifdef DEBUG
+#undef DEBUG
+#endif
+#define DEBUG(x) if (find_player(SHELLDEBUGGER)) \
+ tell_object(find_player(SHELLDEBUGGER),x+"\n")
+
+#endif // _MAGIER_H_
+
+
+#ifdef NEED_PROTOTYPES
+#ifndef _MAGIER_H_PROTOS_
+#define _MAGIER_H_PROTOS_
+static string *parseargs(string cmdline,int flags,string opts,int build_fn);
+static varargs void asynchron(mixed* array, closure cmd, mixed data, mixed flags, int c);
+static varargs mixed *file_list(string *files, int mode, int recursive, string dest, string mask);
+static mixed to_filename(string str);
+static int _verfolge(string str);
+static string glob2regexp(string str);
+
+varargs public void More(string txt, int file,mixed ctrl, mixed *ctrlargs, int flags);
+#endif // _MAGIER_H_PROTOS_
+#endif // NEED_PROTOTYPES
+
+
diff --git a/sys/mail.h b/sys/mail.h
new file mode 100644
index 0000000..9db1ccc
--- /dev/null
+++ b/sys/mail.h
@@ -0,0 +1,43 @@
+// MorgenGrauen MUDlib
+//
+// mail.h -- Definitionen fuer die Post
+//
+// $Id: mail.h,v 3.4 2000/01/20 15:13:25 Tiamak Exp $
+
+#ifndef _MAIL_
+#define _MAIL_
+/*
+ *------------------------------------------------------------
+ * Definitions of fields used in mail messages
+ *------------------------------------------------------------
+ *
+ * A message is represented as an array with the following fields:
+ */
+#define MSG_FROM 0
+#define MSG_SENDER 1
+#define MSG_RECIPIENT 2
+#define MSG_CC 3
+#define MSG_BCC 4
+#define MSG_SUBJECT 5
+#define MSG_DATE 6
+#define MSG_ID 7
+#define MSG_BODY 8
+
+#define NO_USER_ALIASES 1
+#define NO_SYSTEM_ALIASES 2
+#define NO_CARBON_COPIES 4
+
+#include "/mail/post.h"
+
+/*
+ * DeliverMail(mixed *message)
+ * Hand a mail message over to the mailer demon. The mailer
+ * demon extracts recipients from the recipient, cc and bcc
+ * fields and removes the bcc information. It then deposits
+ * the message to the mail files of all recipients. A valid
+ * message is shown above.
+ *
+ * int FingerMail(string user)
+ * Gives the number of unread messages a user has.
+ */
+#endif
diff --git a/sys/money.h b/sys/money.h
new file mode 100644
index 0000000..f304481
--- /dev/null
+++ b/sys/money.h
@@ -0,0 +1,32 @@
+// MorgenGrauen MUDlib
+//
+// money.h -- Konstanten und Pfade rund ums Geld
+//
+// $Id: moneyhandler.h,v 3.1 1997/02/12 13:29:09 Wargon Exp $
+
+#ifndef __LIB_MONEY_H__
+#define __LIB_MONEY_H__
+
+#include <container/moneyhandler.h>
+#include <bank.h>
+
+#define GELD "/items/money"
+#define BOERSE "/items/boerse"
+#define SEHERKARTE "/items/seercard"
+
+#define GELDID "\ngeld"
+#define BOERSEID "\ngeldboerse"
+#define SEHERKARTEID "\ngeldkarte"
+// Id fuer eine Boerse mit Geld drin...
+#define GELDBOERSE_MIT_GELD "\ngeldboerse_mit_geld"
+// ID fuer aktive Geldkarte
+#define SEHERKARTEID_AKTIV "\ngeldkarte_aktiv"
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __LIB_MONEY_H_PROTO__
+#define __LIB_MONEY_H_PROTO__
+
+#endif
+#endif
diff --git a/sys/moving.h b/sys/moving.h
new file mode 100644
index 0000000..9b73bcc
--- /dev/null
+++ b/sys/moving.h
@@ -0,0 +1,83 @@
+// MorgenGrauen MUDlib
+//
+// moving.h -- Methoden und Rueckgabewerte fuer/von move()
+// Dieser Header sollte IMMER benutzt werden, wenn ein Objekt
+// move() benutzt!
+//
+// $Id: moving.h 8801 2014-05-04 21:30:59Z Zesstra $
+
+#ifndef _MOVING_
+#define _MOVING_
+
+// leider nicht via <> moeglich, da dieses File benutzt wird, bevor der Master
+// den Include-Dir-Hook gesetzt hat.
+#include "/sys/living/moving.h"
+#include "/sys/player/moving.h"
+
+/*
+ * moving.h
+ *
+ * How objects are moving around and reasons why they cant do it.
+ */
+
+/* Methods to move objects */
+#define M_GO 1 /* we walk around */
+#define M_TPORT 128 /* We teleport to another place */
+#define M_NOCHECK 2 /* just plain move it without any checks */
+#define M_GET 4 /* obj geht von nonliving zu living */
+#define M_PUT 8 /* obj geht von living zu nonliving */
+#define M_GIVE 16 /* obj geht von living zu living */
+#define M_SILENT 32 /* obj soll ohne meldung ausgezogen werden */
+#define M_NO_ATTACK 512 /* Kein Begruessungsschlag */
+#define M_NO_SHOW 256 /* Zeige nicht die Room-Descr beim ankommen */
+
+/* Hier folgt noch was fuer die Unit */
+#define M_MOVE_ALL 32
+
+/* Errors when moving things */
+#define MOVE_OK 1 // gar kein Fehler. ;-)
+/* Hey, I'm a player and cant be simply carried away */
+#define ME_PLAYER -1
+/* Cant move into container because I'm too heavy */
+#define ME_TOO_HEAVY -2
+#define ME_CANT_TPORT_IN -3 /* Cant teleport there ! */
+#define ME_CANT_TPORT_OUT -4 /* Cant teleport from here ! */
+#define ME_CANT_BE_DROPPED -5 /* You cant drop the feel... this thing */
+#define ME_CANT_BE_TAKEN -6 /* Nope, you cannot take me */
+#define ME_CANT_BE_INSERTED -7 /* Container prevents me from inserting */
+#define ME_CANT_LEAVE_ENV -8 /* Container prevents me from leaving */
+/* Can't move into container, its Env would get too heavy */
+#define ME_TOO_HEAVY_FOR_ENV -9
+#define TOO_MANY_OBJECTS -10 /* too many objects in new environment */
+#define ME_NOT_ALLOWED -11 /* Sorry - off limits for players */
+// Object was destructed during move/in init()
+#define ME_WAS_DESTRUCTED -12
+// object itself does not want to be moved for undefined reason
+#define ME_DONT_WANT_TO_BE_MOVED -13
+
+// check for valid move error - mainly for internal use!
+#define ALL_MOVE_ERRORS ({ME_PLAYER,ME_TOO_HEAVY,ME_CANT_TPORT_IN,\
+ ME_CANT_TPORT_OUT,ME_CANT_BE_DROPPED,\
+ ME_CANT_BE_TAKEN,ME_CANT_BE_INSERTED,\
+ ME_CANT_LEAVE_ENV,ME_TOO_HEAVY_FOR_ENV,\
+ TOO_MANY_OBJECTS,ME_NOT_ALLOWED,\
+ ME_WAS_DESTRUCTED,ME_DONT_WANT_TO_BE_MOVED})
+#define VALID_MOVE_ERROR(x) (member(ALL_MOVE_ERRORS,x) != -1)
+
+#define NO_TPORT 1
+#define NO_TPORT_IN 2
+#define NO_TPORT_OUT 4
+
+/* Ablehnreaktionen von NPCs */
+#define REJECT_LIGHT_MODIFIER "reject_light_modifier"
+#define REJECT_DROP "reject_drop"
+#define REJECT_GIVE "reject_give"
+#define REJECT_KEEP "reject_keep"
+
+/* Zugriffsmethoden fuer find_obs */
+
+#define PUT_GET_NONE 0x00
+#define PUT_GET_TAKE 0x01
+#define PUT_GET_DROP 0x02
+
+#endif
diff --git a/sys/new_skills.h b/sys/new_skills.h
new file mode 100644
index 0000000..6af5cbc
--- /dev/null
+++ b/sys/new_skills.h
@@ -0,0 +1,415 @@
+// MorgenGrauen MUDlib
+//
+// new_skills.h -- Alle noetigen Defintionen fuer Skills (Faehigkeiten),
+// Spells (Zaubersprueche) und Gilden.
+//
+// $Id: new_skills.h 8610 2014-01-06 20:59:13Z Zesstra $
+
+#ifndef _NEW_SKILLS_H_
+#define _NEW_SKILLS_H_
+
+#include <combat.h>
+#include <living/skill_attributes.h>
+
+// ===== Aktuelle Version der Skills ====
+#define CURRENT_SKILL_VERSION 2
+
+// ===== Allgemeine Defines: =====
+
+#define DEFAULT_GUILD "abenteurer"
+#define GUILD_DIR "/gilden/"
+#define GUILD_SAVEFILE "/etc/gildenmaster"
+#define GUILDMASTER "/secure/gildenmaster"
+#define SPELLBOOK_DIR "/spellbooks/"
+
+#define MAX_ABILITY 10000
+#define MAX_SKILLEARN 200
+
+// ===== Moegliche Resultate eine Spells: =====
+
+#define ERFOLG 1
+#define MISSERFOLG -1
+#define ABGEWEHRT 2
+
+// ===== Properties des Gilden-Masters: =====
+
+#define P_VALID_GUILDS "valid_guilds"
+
+// ===== Properties der Gilde: ======
+
+#define P_GUILD_SKILLS "guild_skills"
+#define P_GUILD_RESTRICTIONS "guild_rest"
+//bitte dieses Define auch in /scure/master/userinfo.c aendern...
+#define P_GUILD_DEFAULT_SPELLBOOK "guild_sb"
+#define P_GUILD_MALE_TITLES "guild_male_titles"
+#define P_GUILD_FEMALE_TITLES "guild_female_titles"
+#define P_GUILD_LEVELS "guild_levels"
+#define P_GUILD_PREPAREBLOCK "guild_prepareblock"
+#define P_GUILD_DEACTIVATE_SKILLS "guild_deactivate_skills"
+
+// ===== Properties des Spellbooks: =====
+
+#define P_SB_SPELLS "sb_spells"
+
+// ===== Properties der Gilde UND des Spellbooks: =====
+#define P_GLOBAL_SKILLPROPS "sm_global"
+
+// ===== Properties des Spielers: =====
+
+// #define P_GUILD "guild"
+#define P_DEFAULT_GUILD "default_guild"
+#define P_DEFENDERS "defenders"
+#define P_GUILD_LEVEL "guild_level"
+#define P_GUILD_RATING "guild_rating"
+#define P_GUILD_TITLE "guild_title"
+#define P_SUBGUILD_TITLE "subguild_title"
+#define P_VISIBLE_SUBGUILD_TITLE "visible_subguild_title"
+#define P_MAGIC_RESISTANCE_OFFSET "mag_res_offset"
+#define P_NEWSKILLS "newskills"
+#define P_NEXT_SPELL_TIME "next_spell"
+#define P_PREPARED_SPELL "prepared_spell"
+#define P_TMP_ATTACK_HOOK "attack_hook"
+#define P_TMP_ATTACK_MOD "attack_mod"
+#define P_TMP_DEFEND_HOOK "defend_hook"
+#define P_TMP_DIE_HOOK "die_hook"
+#define P_TMP_MOVE_HOOK "move_hook"
+#define P_WEAPON_TEACHER "weapon_teacher"
+#define P_SKILLSVERSION "p_lib_skillsversion"
+
+// ===== Standard-Skills: =====
+
+#define FIGHT(x) ("Fight_"+x)
+#define SHOOT(x) ("Shoot_"+x)
+#define SK_BOOZE "Booze"
+#define SK_CARRY "CarrySkill"
+#define SK_CASTING "Cast"
+#define SK_DEFEND_OTHER "DefendOther"
+#define SK_FIGHT "Fight"
+#define SK_INFORM_DEFEND "InformDefend"
+#define SK_MAGIC_ATTACK "MagicAttack"
+#define SK_MAGIC_DEFENSE "MagicDefense"
+#define SK_NIGHTVISION "Nightvision"
+#define SK_SHOOT "Shoot"
+#define SK_SPELL_DEFEND "SpellDefend"
+#define SK_SWORDFIGHTING FIGHT(WT_SWORD)
+#define SK_TWOHANDED "Bihand"
+#define SK_WEAPONLESS FIGHT(WT_HANDS)
+
+// ===== Skill Infos: =====
+
+#define FACTOR(x) ("fac_"+x)
+#define OFFSET(x) ("off_"+x)
+
+#define SI_SKILLFUNC "si_func"
+ // Funktion, die aufgerufen wird
+
+#define SI_CLOSURE "si_closure"
+ // Nur fuer den internen Gebrauch
+ // (Geschwindigkeitsoptimierung)
+
+#define SI_SPELLBOOK "si_spellbook"
+ // Spellbook, in dem der Spell
+ // steht
+
+#define SI_SPELLCOST "si_cost"
+ // Kosten des Spells
+
+#define SI_TIME_MSG "time_msg"
+ // Die Meldung wird anstelle von
+ // "Du bist noch zu erschoepft
+ // von Deinem letzten Spruch."
+ // ausgegeben.
+
+#define SI_SP_LOW_MSG "sp_low_msg"
+ // Die Meldung wird anstelle von
+ // "Du hast zu wenig Zauberpunkte
+ // fuer diesen Spruch."
+ // ausgegeben.
+
+#define SI_PREPARE_MSG "si_prepare_msg"
+#define SI_PREPARE_ABORT_MSG "si_prepare_abort_msg"
+#define SI_PREPARE_BUSY_MSG "si_prepare_busy_msg"
+ // Meldungen fuer Spruch-
+ // vorbereitung, Abbruch und
+ // schon beschaeftigt
+
+#define SI_NOMAGIC "si_nomagic"
+ // Prozentwert, mit dem P_NOMAGIC
+ // umgangen werden kann
+
+#define SI_NOMAGIC_MSG "si_nomagic_msg"
+ // Meldung, die Anstelle von
+ // "Dein Zauberspruch verpufft
+ // im Nichts" ausgegeben werden
+ // soll.
+
+#define SI_SPELLFATIGUE "si_fatigue"
+ // Erschoepfung - Zeit, in der
+ // keine weiteren Spells
+ // aufgerufen werden koennen
+#define SI_X_SPELLFATIGUE "std:si:xfatigue"
+
+#define SI_SKILLLEARN "si_learn"
+ // Lerngeschwindigkeit in 0.01%
+ // pro A_INT/2
+
+#define SI_LEARN_ATTRIBUTE "si_learn_attribute"
+ // Wenn man nicht will, dass man in Abhaengigkeit von
+ // INT lernt
+
+#define SI_NO_LEARN "si_no_learn"
+ // Wenn man (temporaer!) nicht will, dass dieser Skill gelernt wird.
+ // Muss von den Spellbooks beachtet werden.
+ // Sollte niemals im Spieler abgespeichert werden. Oder permanent in
+ // Gilde/Spellbook gesetzt sein. Sondern im Laufe einesr Nutzung in der jew.
+ // Kopie von sinfo gesetzt werden, die gerade genutzt wird.
+
+#define SI_SKILLABILITY "si_abil"
+ // Faehigkeit, diesen Spruch zu
+ // benutzen
+
+#define SI_SKILLARG "si_arg"
+ // Argumente, die uebergeben
+ // wurden
+
+#define SI_SKILLRESTR_USE "si_restr_u"
+ // Beschraenkungen beim Gebrauch
+
+#define SI_SKILLRESTR_LEARN "si_restr_l"
+ // Beschraenkungen beim Lernen
+
+#define SI_SKILLINFO "si_info"
+ // Kurzer Informationstext
+
+#define SI_SKILLINFO_LONG "si_info_l"
+ // Langer Informationstext
+
+#define SI_SKILLDAMAGE "si_damage"
+ // Schaden
+
+#define SI_SKILLDAMAGE_BY_ROW "si_damage_by_row"
+ // Schaden durch Teamreihen
+
+#define SI_SKILLDAMAGE_TYPE "si_damtyp"
+ // Art des Schadens
+
+#define SI_SKILLDAMAGE_MSG "si_dammsg"
+ // Meldung die anstelle einer
+ // Waffe kommen soll
+
+#define SI_SKILLDAMAGE_MSG2 "si_dammsg2"
+ // dito fuer den Text fuer
+ // andere im Raum
+
+#define SI_SPELL "si_spell"
+ // Spell, mit dem angegriffen
+ // wurde
+
+#define SI_COLLATERAL_DAMAGE "si_collateral_damage"
+ // Schadensanteil bei Flaechen-
+ // spells, den Freunde abbekommen,
+ // in Prozent
+
+#define SI_NUMBER_ENEMIES "si_num_enemies"
+ // Anzahl Feinde bei
+ // Flaechenspruch
+
+#define SI_NUMBER_FRIENDS "si_num_friends"
+ // Anzahl Freunde bei
+ // Flaechenspruch
+
+#define SI_DISTANCE "si_distance"
+ // Entfernung
+
+#define SI_WIDTH "si_width"
+ // Breite des Flaechenangriffs
+
+#define SI_DEPTH "si_depth"
+ // Tiefe des Flaechenangriffs
+
+#define SI_INHERIT "si_inherit"
+ // Skill, von dem etwas
+ // uebernommen werden soll
+
+#define SI_DIFFICULTY "si_difficulty"
+ // Wert, der die Obergrenze der
+ // Faehigkeit abgrenzt
+
+#define SI_LASTLIGHT "si_lastlight"
+ // Fuer Nachtsicht: Wann hat
+ // der Spieler zum letzten mal
+ // Licht gesehen.
+
+#define SI_SKILLHEAL "si_heal"
+ // Heilung
+
+#define SI_USR "si_usr"
+ // selbst definierte Infos
+
+#define SI_TESTFLAG "si_testflag"
+ // Testflag
+
+#define SI_GUILD "si_guild"
+ // Gilde, falls Auswahl aus
+ // mehreren moeglich
+
+#define SI_ENEMY "si_enemy"
+ // Feind bei Kampfspruechen
+
+#define SI_FRIEND "si_friend"
+ // Der zu verteidigende Freund
+ // bei DefendOther und
+ // InformDefend
+
+#define SI_MAGIC_TYPE "si_magic_type"
+ // Von was fuer einer Art ist
+ // die Magie (s.u.)
+
+#define SI_PREPARE_TIME "si_prepare_time"
+ // Zeit die zur Vorbereitung
+ // benoetigt wird.
+
+#define SI_ATTACK_BUSY_MSG "si_attack_busy_msg"
+ // Meldung, wenn der Spieler zu
+ // beschaeftigt ist
+
+#define SI_NO_ATTACK_BUSY "si_no_attack_busy"
+ // Wenn der Spell nicht als
+ // Taetigkeit zaehlen/gezaehlt
+ // werden soll, kann man hier
+ // NO_ATTACK_BUSY[_SET|_QUERY]
+ // (s.u.) setzen
+
+#define SI_ATTACK_BUSY_AMOUNT "si_attack_busy_amount"
+ // Der Spell hat ein gewisses
+ // AttackBusy, aber das weicht
+ // vom Standardwert 1 ab. Der
+ // Wert kann hier gesetzt
+ // werden.
+
+#define SI_LAST_USE "si_last_use"
+ // Letzte benutzung eines
+ // Skills (fuer Rassenskills)
+
+#define SI_LEARN_PROB "si_learn_prob"
+ // Lernwahrscheinlichkeit
+ // (fuer Rassenskills)
+
+#define SI_SKILLDURATION "si_duration"
+ // Wie soll wird der Skill anhalten?
+ // (fuer Spells mit einer Dauer)
+
+// ===== Parameter fuer Spell-Mapping: =====
+
+#define SP_NAME "sp_name"
+ // Name des Spells
+
+#define SP_SHOW_DAMAGE "sp_showdamage"
+ // Treffermeldung soll gezeigt
+ // werden.
+
+#define SP_REDUCE_ARMOUR "sp_reduce_ac"
+ // AC soll Typabhaengig
+ // reduziert werden.
+
+#define SP_PHYSICAL_ATTACK "sp_physical"
+ // Koerperlicher Angriff
+
+#define SP_RECURSIVE "sp_recursive"
+ // Rekursionen
+
+#define SP_NO_ENEMY "no_enemy"
+ // Ist kein richtiger Angriff
+
+#define SP_NO_ACTIVE_DEFENSE "sp_no_active_defense"
+ // Es ist keine aktive Abwehr erwuenscht
+
+#define SP_GLOBAL_ATTACK "sp_global_attack"
+ // Ist Flaechenangriff
+
+// ===== Skill Restrictions: =====
+
+#define SR_FUN "restr_fun"
+ // Funktion, die weitere
+ // Einschraenkungen prueft
+
+#define SR_EXCLUDE_RACE "restr_race_ex"
+ // Ausgeschlossene Rassen
+
+#define SR_INCLUDE_RACE "restr_race_in"
+ // Eingeschlossene Rassen
+
+#define SR_EXCLUDE_GUILD "restr_guild_ex"
+ // Ausgeschlossene Gilden
+
+#define SR_INCLUDE_GUILD "restr_guild_in"
+ // Eingeschlossene Gilden
+
+#define SR_GOOD "restr_good"
+ // Align <
+
+#define SR_BAD "restr_bad"
+ // Align >
+
+#define SR_FREE_HANDS "restr_hands"
+ // Benoetigte freie Haende
+
+#define SR_SEER "restr_seer"
+ // Muss Seher sein
+
+#define SR_MIN_SIZE "min_size"
+ // Mindestgroesse
+
+#define SR_MAX_SIZE "max_size"
+ // Maximalgroesse
+
+#define SR_PROP "restr_properties"
+ // Werte beliebiger Properties
+
+#define SR_QUEST "restr_quests"
+ // Quest bestanden
+
+#define SR_MINIQUEST "restr_miniquests"
+ // Miniquest geloest
+
+// ===== Skill Modifier: =====
+
+#define SM_RACE "modify_race"
+ // Rassenspezifische
+ // Besonderheiten
+
+// ===== Fuer das Attack-Busy-Handling: =====
+
+#define NO_ATTACK_BUSY_SET 0x001
+#define NO_ATTACK_BUSY_QUERY 0x002
+#define NO_ATTACK_BUSY 0x003
+
+// ===== Magie-Arten: =====
+
+#define MT_ANGRIFF "mt_angriff"
+#define MT_BEHERRSCHUNG "mt_beherrschung"
+#define MT_BESCHWOERUNG "mt_beschwoerung"
+#define MT_BEWEGUNG "mt_bewegung"
+#define MT_CREATION "mt_creation"
+#define MT_HEILUNG "mt_heilung"
+#define MT_HELLSICHT "mt_hellsicht"
+#define MT_ILLUSION "mt_illusion"
+#define MT_PSYCHO "mt_psycho"
+#define MT_SAKRAL "mt_sakral"
+#define MT_SCHUTZ "mt_schutz"
+#define MT_VERWANDLUNG "mt_verwandlung"
+
+#define MT_MISC "mt_misc"
+
+// ===== Defines fuer FindGroup() =====
+
+#define FG_ENEMIES -1
+#define FG_FRIENDS 1
+#define FG_ALL 0
+
+// ======== OBSOLETE Properties / Defines =============
+// Prop wird nicht mehr genutzt, ist aber noch fuer /std/player/base.c noetig,
+// um den SAVE-Status in den Spieler-Props zu loeschen.
+#define P_GUILD_PREVENTS_RACESKILL "guild_prevents_raceskill"
+
+#endif
diff --git a/sys/news.h b/sys/news.h
new file mode 100644
index 0000000..38085a1
--- /dev/null
+++ b/sys/news.h
@@ -0,0 +1,36 @@
+// MorgenGrauen MUDlib
+//
+// news.h -- Definitionen fuer die Zeitung
+//
+// $Id: news.h 8809 2014-05-08 19:52:48Z Zesstra $
+
+#define G_NAME 0
+#define G_OWNER 1
+#define G_SAVEFILE 2
+#define G_EXPIRE 3
+#define G_DELETERS 4
+#define G_WRITERS 5
+#define G_READERS 6
+#define G_DLEVEL 7
+#define G_WLEVEL 8
+#define G_RLEVEL 9
+#define G_MAX_MSG 10
+#ifdef TESTING
+#define G_MAX_NUM 11
+#define G_MESSAGES 12
+#else
+#define G_MESSAGES 11
+#endif
+
+#define M_BOARD 0
+#define M_WRITER 1
+#define M_ID 2
+#define M_TIME 3
+#define M_TITLE 4
+#define M_MESSAGE 5
+
+static string user_euid();
+static void save_group_list();
+static void save_group(string grp,mixed group);
+static mixed load_group(string name);
+
\ No newline at end of file
diff --git a/sys/notify_fail.h b/sys/notify_fail.h
new file mode 100644
index 0000000..97d1786
--- /dev/null
+++ b/sys/notify_fail.h
@@ -0,0 +1,20 @@
+// MorgenGrauen MUDlib
+//
+// notify_failh -- sym. Konstanten fuer notify_fail()
+//
+// $Id: defines.h 6415 2007-08-10 19:24:04Z Zesstra $
+
+#ifndef _NOTIFY_FAIL_H_
+#define _NOTIFY_FAIL_H_
+
+// Prioritaeten / 'Nice levels' von notify_fail()s:
+// Wie 'nice' bin ich? Je groessere Zahl/Priorität, desto wenig lieb. ;-)
+#define NF_NL_NONE -1 //max 'niceness', wird von allem ueberschrieben
+#define NF_NL_OWN 100 //eigenes Objekt (soul verben) ueberschreiben kaum was
+#define NF_NL_THING 100000
+#define NF_NL_ROOM 1000000 // Raeume ueberschreiben sonstigen Krams
+#define NF_NL_LIVING 10000000 // Lebewesen ueberschreiben auch Raeume
+#define NF_NL_MAX __INT_MAX__ //hoechste Prioritaet, ueberschreibt alles
+
+#endif /* _NOTIFY_FAIL_H_ */
+
diff --git a/sys/npc.h b/sys/npc.h
new file mode 100644
index 0000000..8565930
--- /dev/null
+++ b/sys/npc.h
@@ -0,0 +1,60 @@
+// MorgenGrauen MUDlib
+//
+// npc.h -- Definitonen fuer NPCs
+//
+// $Id: npc.h 6709 2008-02-02 22:14:08Z Zesstra $
+
+#ifndef _NPC_H_
+#define _NPC_H_
+
+#define DEFAULT_INFO "\ndefault info"
+#define DEFAULT_NOINFO "\ndefault noinfo"
+#define P_PRE_INFO "npc_pre_info"
+#define P_NPC_INFO "npc_info"
+
+#define P_NPC "is_npc"
+
+#define P_HB "hb"
+#define P_INFO "info"
+
+#define P_AGGRESSIVE "aggressive"
+
+#define P_SPELLS "spells"
+#define P_SPELLRATE "spellrate"
+
+#define P_CHATS "chats"
+#define P_CHAT_CHANCE "chat_chance"
+#define P_ACHATS "achats"
+#define P_ACHAT_CHANCE "achat_chance"
+
+#define P_REJECT "reject"
+
+#define P_DEFAULT_INFO "default_info" // Standardantwort fuer Fragen
+#define P_LOG_INFO "log_info"
+
+#define CLONE_NEW 0x10000000 /* VERALTET! */
+#define CLONE_WEAR 0x20000000 /* anziehen */
+#define CLONE_WIELD 0x40000000 /* zuecken */
+#define CLONE_NO_CHECK 0x08000000 /* zuecken oder anziehen ohne checks */
+
+#define NPC_NEEDS_ITEM_INIT "npc:need item init"
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef _NPC_H_PROTOTYPES_
+#define _NPC_H_PROTOTYPES_
+// aus npc/info.c
+public varargs void AddInfo(mixed key, mixed info, string indent,
+ mixed silent, mixed casebased);
+public varargs void AddSpecialInfo(mixed keys, string functionname,
+ string indent, mixed silent, mixed casebased );
+public int frage(string str);
+public int do_frage(string text);
+public void RemoveInfo( string key );
+public varargs mixed GetInfo(string str);
+// aus npc/items.c
+public varargs object AddItem(mixed filename, int refresh, mixed props);
+#endif // _NPC_H_PROTOTYPES_
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/object_info.h b/sys/object_info.h
new file mode 100644
index 0000000..2578747
--- /dev/null
+++ b/sys/object_info.h
@@ -0,0 +1,70 @@
+#ifndef LPC_OBJECT_INFO_H_
+#define LPC_OBJECT_INFO_H_
+
+/* Definition of argument values for object_info()
+ */
+
+#include "configuration.h"
+
+/* Object flags */
+#define OI_ONCE_INTERACTIVE -1
+#define OI_RESET_STATE -2
+#define OI_WILL_CLEAN_UP -3
+#define OI_LAMBDA_REFERENCED -4
+#define OI_REPLACED -5
+
+/* Program flags */
+#define OI_NO_INHERIT -10
+#define OI_NO_CLONE -11
+#define OI_NO_SHADOW -12
+#define OI_SHARE_VARIABLES -13
+
+/* Swapping */
+#define OI_SWAPPED -20
+#define OI_PROG_SWAPPED -21
+#define OI_VAR_SWAPPED -22
+#define OI_SWAP_NUM -23
+
+/* Timing */
+#define OI_NEXT_RESET_TIME -30
+#define OI_NEXT_CLEANUP_TIME -31
+#define OI_LAST_REF_TIME -32
+
+/* Object list */
+#define OI_OBJECT_NEXT -40
+#define OI_OBJECT_PREV -41
+#define OI_OBJECT_POS -42
+
+/* Shadows */
+#define OI_SHADOW_NEXT -50
+#define OI_SHADOW_PREV -51
+#define OI_SHADOW_ALL -52
+
+/* Statistics about the object */
+#define OI_OBJECT_REFS -60
+#define OI_TICKS -61
+#define OI_GIGATICKS -62
+#define OI_DATA_SIZE -63
+#define OI_DATA_SIZE_TOTAL -64
+
+/* Statistics about the program */
+#define OI_PROG_REFS -70
+
+#define OI_NUM_FUNCTIONS -71
+#define OI_NUM_VARIABLES -72
+#define OI_NUM_STRINGS -73
+#define OI_NUM_INHERITED -74
+#define OI_NUM_INCLUDED -75
+
+#define OI_SIZE_FUNCTIONS -76
+#define OI_SIZE_VARIABLES -77
+#define OI_SIZE_STRINGS -78
+#define OI_SIZE_STRINGS_DATA -79
+#define OI_SIZE_STRINGS_DATA_TOTAL -80
+#define OI_SIZE_INHERITED -81
+#define OI_SIZE_INCLUDED -82
+
+#define OI_PROG_SIZE -83
+#define OI_PROG_SIZE_TOTAL -84
+
+#endif /* LPC_OBJECT_INFO_H_ */
diff --git a/sys/objectinfo.h b/sys/objectinfo.h
new file mode 100644
index 0000000..de2c33b
--- /dev/null
+++ b/sys/objectinfo.h
@@ -0,0 +1,82 @@
+#ifndef LPC_OBJECTINFO_H_
+#define LPC_OBJECTINFO_H_
+
+/* Definition of argument values for object_info() and
+ * of the indices in the corresponding result arrays.
+ */
+
+/* Possible types of information requested from object_info()
+ */
+#define OINFO_BASIC 0
+#define OINFO_POSITION 1
+#define OINFO_MEMORY 2
+
+
+/* Indices in the array resulting from OINFO_BASIC
+ */
+
+#define OIB_HEART_BEAT 0
+#define OIB_IS_WIZARD 1
+#define OIB_ENABLE_COMMANDS 2
+#define OIB_CLONE 3
+#define OIB_DESTRUCTED 4
+#define OIB_SWAPPED 5
+#define OIB_ONCE_INTERACTIVE 6
+#define OIB_RESET_STATE 7
+#define OIB_WILL_CLEAN_UP 8
+#define OIB_LAMBDA_REFERENCED 9
+#define OIB_SHADOW 10
+#define OIB_REPLACED 11
+#define OIB_NEXT_RESET 12
+#define OIB_TIME_OF_REF 13
+#define OIB_REF 14
+#define OIB_GIGATICKS 15
+#define OIB_TICKS 16
+#define OIB_SWAP_NUM 17
+#define OIB_PROG_SWAPPED 18
+#define OIB_VAR_SWAPPED 19
+#define OIB_NAME 20
+#define OIB_LOAD_NAME 21
+#define OIB_NEXT_ALL 22
+#define OIB_PREV_ALL 23
+#define OIB_NEXT_CLEANUP 24
+
+#define OIB_MAX 25 /* Number of OIB_ result elements */
+
+
+/* Indices in the array resulting from OINFO_POSITION
+ */
+#define OIP_NEXT 0
+#define OIP_PREV 1
+#define OIP_POS 2
+
+#define OIP_MAX 3 /* Number of OIP_ result elements */
+
+
+/* Indices in the array resulting from OINFO_MEMORY
+ */
+#define OIM_REF 0
+#define OIM_NAME 1
+#define OIM_PROG_SIZE 2
+#define OIM_NUM_FUNCTIONS 3
+#define OIM_SIZE_FUNCTIONS 4
+#define OIM_NUM_VARIABLES 5
+#define OIM_SIZE_VARIABLES 6
+#define OIM_NUM_STRINGS 7
+#define OIM_SIZE_STRINGS 8
+#define OIM_SIZE_STRINGS_DATA 9
+#define OIM_SIZE_STRINGS_TOTAL 10
+#define OIM_NUM_INHERITED 11
+#define OIM_SIZE_INHERITED 12
+#define OIM_TOTAL_SIZE 13
+#define OIM_DATA_SIZE 14
+#define OIM_TOTAL_DATA_SIZE 15
+#define OIM_NO_INHERIT 16
+#define OIM_NO_CLONE 17
+#define OIM_NO_SHADOW 18
+#define OIM_NUM_INCLUDES 19
+#define OIM_SHARE_VARIABLES 20
+
+#define OIM_MAX 21 /* Number of OIM_ result elements */
+
+#endif /* LPC_OBJECTINFO_H_ */
diff --git a/sys/oldprops b/sys/oldprops
new file mode 100644
index 0000000..5d202a9
--- /dev/null
+++ b/sys/oldprops
@@ -0,0 +1,4 @@
+
+// werden alle beide in keinem .c File benutzt...
+P_MAX_WC
+P_CONTENT
diff --git a/sys/pager.h b/sys/pager.h
new file mode 100644
index 0000000..fef652a
--- /dev/null
+++ b/sys/pager.h
@@ -0,0 +1,63 @@
+// MorgenGrauen MUDlib
+//
+// pager.h -- generic pager header
+//
+// $Id: pager.h 6142 2007-01-31 20:34:39Z Zesstra $
+
+#ifndef __PAGER_H__
+#define __PAGER_H__
+
+// select language
+#define GERMAN
+//#define ENGLISH
+
+// select optimization
+#define O_SPEED // speed optimization
+#define O_SPEED_UP // additional speed up
+ // (works only with O_SPEED)
+#define MAX_LINE_READ 625 // max. lines to be read by
+ // read_file() 50k/80c
+
+// the pager info structure
+#define TEXT 0 // the filename or string
+#define FILE 1 // 1 == file, 0 = string
+#define CURL 2 // current line
+#define MAXL 3 // last line
+#define PAGE 4 // page length
+#define REGX 5 // last regular expression
+#define CTRL 6 // function to give control
+#define CARG 7 // array of args to CTRL
+#define FLAG 8 // special flags
+# define E_PROMPT 1 // prompt at end of file
+# define E_CAT 2 // do not prompt for more
+# define E_ABS 4 // show line numbers at prompt
+#ifdef O_SPEED
+# define JUNK 9 // junk index
+# define JUNKSIZE 10 // size of string junks
+#endif
+
+#ifdef GERMAN
+# define MSG_PROMPT "--mehr--"
+# define MSG_TOP "ANFANG "
+# define MSG_BOTTOM "ENDE "
+# define MSG_OOPS "Ohh, da lief etwas schief!"
+#else
+# define MSG_PROMPT "--more--"
+# define MSG_TOP "TOP "
+# define MSG_BOTTOM "BOTTOM "
+# define MSG_OOPS "Oops, something went wrong!"
+#endif
+
+#include <player/base.h>
+
+#define PAGELENGTH (this_interactive() ? \
+ this_interactive()->QueryProp(P_SCREENSIZE) : \
+ (interactive(this_player()) ? \
+ this_player()->QueryProp(P_SCREENSIZE) : 20))
+
+// old_explode() must create an array that implode()'s to the same string
+#define Explode(s,x) (explode(s,x))
+
+#endif // __PAGER_H__
+
+
diff --git a/sys/pathd.h b/sys/pathd.h
new file mode 100644
index 0000000..c75fceb
--- /dev/null
+++ b/sys/pathd.h
@@ -0,0 +1,13 @@
+// MorgenGrauen MUDlib
+//
+// pathd.h - sym. Konstanten fuer den PATHD
+//
+// $Id: pathd.h 6415 2007-08-10 19:24:04Z Zesstra $
+
+#ifndef _PATHD_H_
+#define _PATHD_H_
+
+#define PATHD "/p/daemon/pathd"
+
+#endif /* _PATHD_H_ */
+
diff --git a/sys/pgsql.h b/sys/pgsql.h
new file mode 100644
index 0000000..fa7cdf6
--- /dev/null
+++ b/sys/pgsql.h
@@ -0,0 +1,23 @@
+#ifndef _PGSQL_H
+#define _PGSQL_H
+
+/* Definitions for the PostgreSQL efuns */
+
+#define PGRES_EMPTY_QUERY 0 /* Unimplemented */
+#define PGRES_COMMAND_OK 1
+#define PGRES_TUPLES_OK 2
+#define PGRES_COPY_OUT 3 /* Unimplemented */
+#define PGRES_COPY_IN 4 /* Unimplemented */
+#define PGRES_BAD_RESPONSE 5
+#define PGRES_NONFATAL_ERROR 6
+#define PGRES_FATAL_ERROR 7
+#define PGRES_NOTICE 99
+
+#define PGCONN_SUCCESS 100
+#define PGCONN_FAILED 101
+#define PGCONN_ABORTED 102
+
+#define PG_RESULT_ARRAY 0
+#define PG_RESULT_MAP 1
+
+#endif
diff --git a/sys/player.h b/sys/player.h
new file mode 100644
index 0000000..74b40d1
--- /dev/null
+++ b/sys/player.h
@@ -0,0 +1,58 @@
+// MorgenGrauen MUDlib
+//
+// player.h -- player object defines
+//
+// $Id: player.h 7386 2010-01-22 14:59:05Z Zesstra $
+
+#ifndef _PLAYER_H_
+#define _PLAYER_H_
+
+#ifdef NEED_PROTOTYPES
+#undef NEED_PROTOTYPES // we need only the properties here!!
+#define PLAYER_TMP_NEED_PROTOTYPES
+#endif
+
+#include "/sys/player/base.h"
+#include "/sys/player/description.h"
+#include "/sys/player/moving.h"
+#include "/sys/player/filesys.h"
+#include "/sys/player/potion.h"
+#include "/sys/player/quest.h"
+#include "/sys/player/skills.h"
+#include "/sys/player/viewcmd.h"
+#include "/sys/player/comm.h"
+#include "/sys/player/fao.h"
+#include <player/user_filter.h>
+#include <daemon.h>
+
+#ifdef PLAYER_TMP_NEED_PROTOTYPES
+#undef PLAYER_TMP_NEED_PROTOTYPES
+#define NEED_PROTOTYPES
+#endif
+
+#define P_LAST_COMMAND_ENV "last_command_env"
+#define P_HISTMIN "histmin"
+#define P_SHOW_ALIAS_PROCESSING "show_alias_processing"
+#define P_DEFAULT_NOTIFY_FAIL "default_notify_fail"
+#define P_NETDEAD_INFO "netdead_info"
+#define P_NETDEAD_ENV "netdead_env"
+#define P_IP_NAME "ip_name"
+#define P_LAST_KILLER "last_killer"
+#define P_ACTUAL_NOTIFY_FAIL "actual_notify_fail"
+#define P_LEP "lep"
+#define P_NEWBIE_GUIDE "newbie_guide"
+
+#define DeclareAutoload(name,param) \
+ mlfp_create(({P_AUTOLOAD,name}),param)
+
+#define UndeclareAutoload(name) \
+ mlfp_remove(({P_AUTOLOAD}),name)
+
+#define QueryAutoload(name) \
+ mlfp_query(({P_AUTOLOAD,name}))
+
+#ifdef NEED_PROTOTYPES
+varargs string _unparsed_args(int level);
+#endif
+
+#endif
diff --git a/sys/player/base.h b/sys/player/base.h
new file mode 100644
index 0000000..3f28cb4
--- /dev/null
+++ b/sys/player/base.h
@@ -0,0 +1,124 @@
+// MorgenGrauen MUDlib
+//
+// player/base.h -- player base header
+//
+// $Id: base.h 8487 2013-05-21 19:15:52Z Zesstra $
+
+#ifndef __PLAYER_BASE_H__
+#define __PLAYER_BASE_H__
+
+// da dieses File vom Master inkludiert wird und dann die Standard-Include-
+// verzeichnisse noch nicht gesetzt sind, darf dieses File auch nur die abs.
+// Namen verwenden. *seufz*
+#include "/sys/player/can.h"
+#include "/sys/player/telnetneg.h"
+
+#define HAUSVERWALTER "/d/seher/haeuser/hausverwalter"
+
+// properties
+
+#define P_KILLS "playerkills"
+
+#define P_ZAP_MSG "zap_msg"
+#define P_AWAY "away"
+#define P_NO_TOPLIST "no_toplist"
+#define P_CALLED_FROM_IP "called_from_ip"
+#define P_MARRIED "married"
+#define P_SIBLINGS "siblings"
+#define P_RACE_DESCRIPTION "racedescr"
+#define P_RACESTRING "racestring"
+
+#define P_WAITFOR "waitfor"
+#define P_WAITFOR_REASON "waitfor_reason"
+#define P_WAITFOR_FLAGS "waitfor_flags"
+#define P_VISUALBELL "visualbell"
+#define P_LOCALCMDS "localcmds"
+#define P_CLOCKMSG "clockmsg"
+#define P_TIMEZONE "timezone"
+#define P_SHOWEMAIL "showemail"
+
+#define P_LAST_LOGIN "last_login"
+#define P_LAST_LOGOUT "last_logout"
+#define P_DAILY_PLAYTIME "daily_playtime"
+#define P_IGNORE "ignore"
+#define P_SHOW_EXITS "show_exits"
+#define P_WANTS_TO_LEARN "wants_to_learn"
+#define P_AUTOLOADOBJ "autoloadobj"
+#define P_AUTOLOAD "autoload"
+#define P_MAILADDR "mailaddr"
+#define P_HOMEPAGE "homepage"
+#define P_ICQ "icq"
+#define P_MESSENGER "messenger"
+#define P_LOCATION "location"
+
+#define P_FOLLOW_SILENT "follow_silent"
+
+#ifndef P_INVIS
+#define P_INVIS "invis"
+#endif
+
+#define P_SECOND "second"
+#define P_SECOND_MARK "second_mark"
+#define P_SECOND_LIST "second_list"
+#define P_MUD_NEWBIE "_lib_mud_newbie" // not played a mud before?
+
+#define P_TESTPLAYER "testplayer"
+#define P_ALLOWED_SHADOW "allowed_shadow"
+
+#define P_START_HOME "start_home"
+#define P_PRAY_ROOM "_lib_p_prayroom"
+
+#define P_SHELL_VERSION "shell_version"
+
+#define P_CMSG "clonemsg"
+#define P_DMSG "destmsg"
+#define P_CLONE_MSG "clone_msg"
+#define P_DESTRUCT_MSG "destruct_msg"
+
+#define P_CARRIED_VALUE "carried"
+
+#define P_PROMPT "prompt"
+
+#define P_SCREENSIZE "screensize"
+#define P_MORE_FLAGS "more_flags"
+
+#define P_NO_ASCII_ART "no_ascii_art"
+
+#define P_LAST_QUIT "last_quit"
+
+#define P_READ_NEWS "read_news"
+
+#define P_NEEDED_QP "needed_qp"
+
+//TODO: Remove - Property is not needed any more.
+#define P_TELNET_KEEP_ALIVE "send_telnet_keep_alive"
+
+#endif // __PLAYER_BASE_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_BASE_H_PROTO__
+#define __PLAYER_BASE_H_PROTO__
+
+// prototypes
+
+void smart_log(string myname, string str);
+int QueryGuest();
+int invis(string inform);
+int vis(string inform);
+
+varargs static void stop_heart_beats(mixed obs);
+static void restart_heart_beats();
+
+nomask int query_hc_play();
+varargs nomask void set_hc_play(string str, int val);
+string SetDefaultHome(string str);
+protected string SetDefaultPrayRoom(string str);
+
+void save_me(mixed value_items);
+nomask mixed query_real_name();
+protected void call_notify_player_change(int rein);
+
+#endif // __PLAYER_BASE_H_PROTO__
+
+#endif// NEED_PROTOYPES
diff --git a/sys/player/can.h b/sys/player/can.h
new file mode 100644
index 0000000..dcce693
--- /dev/null
+++ b/sys/player/can.h
@@ -0,0 +1,34 @@
+// MorgenGrauen MUDlib
+//
+// player/can.h -- various abitlities
+//
+// $Id: can.h 7924 2011-09-26 10:02:26Z Zesstra $
+
+#ifndef __CAN_H__
+#define __CAN_H__
+
+// properties
+#define P_CAN_FLAGS "can_flags"
+
+// bitmasks
+#define CAN_EMOTE 0x01
+#define CAN_ECHO 0x02
+#define CAN_REMOTE 0x04
+#define CAN_PRESAY 0x08
+#define CAN_REPORT_SP 0x10 // Statusupdates fuer KP
+#define CAN_REPORT_POISON 0x20 // Statusupdates fuer Gift
+#define CAN_REPORT_WIMPY 0x40 // Statusupdates fuer Vorsicht
+#define CAN_REPORT_WIMPY_DIR 0x80 // Statusupdates fuer Vorsichtrichtung
+
+#endif // __CAN_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __CAN_H_PROTO__
+#define __CAN_H_PROTO__
+
+// no prototypes
+
+#endif // __CAN_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/player/combat.h b/sys/player/combat.h
new file mode 100644
index 0000000..01ab2fa
--- /dev/null
+++ b/sys/player/combat.h
@@ -0,0 +1,16 @@
+// MorgenGrauen MUDlib
+//
+// player/combat.h -- prototypes for player specific issues of combat
+//
+// $Id: comm.h,v 3.3 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_COMBAT_H__
+#define __PLAYER_COMBAT_H__
+
+public int QueryPlAttacked(object pl);
+
+public int RegisterHelperNPC(object npc, int flags);
+public int UnregisterHelperNPC(object npc);
+
+#endif // __PLAYER_COMBAT_H__
+
diff --git a/sys/player/comm.h b/sys/player/comm.h
new file mode 100644
index 0000000..803b319
--- /dev/null
+++ b/sys/player/comm.h
@@ -0,0 +1,85 @@
+// MorgenGrauen MUDlib
+//
+// player/comm.h -- communication module properties
+//
+// $Id: comm.h,v 3.3 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_COMM_H__
+#define __PLAYER_COMM_H__
+
+// living/comm.h brauchen wir auch.
+#include <living/comm.h>
+
+// properties
+
+#define P_INTERMUD "intermud" // Does she listen to it ?
+#define P_BUFFER "buffer" // ignore-, tell-buffer
+#define P_DEAF "deaf" // Taubheit
+#define P_PERM_STRING "perm_string" // Fuer Sprachflueche
+#define P_MESSAGE_BEEP "message_beep" // wenn gesetzt
+ // Anzahl der Sekunden dazwischen
+#define P_MESSAGE_PREPEND "message_prepend"
+// Will der Magier MT_DEBUG sehen?
+#define P_WIZ_DEBUG "std_p_wizdebug"
+
+#define MESSAGE_BEEP "\007"
+
+// definitions for Message()
+
+#define MSGFLAG_CHANNEL 0x0001 // messages from channeld.c
+#define MSGFLAG_CHIST 0x0002
+#define MSGFLAG_SOUL 0x0004 // messages from soul.c
+#define MSGFLAG_REMOTE 0x0008 // remote emotes
+#define MSGFLAG_SHOUT 0x0010 // communication commands
+#define MSGFLAG_TELL 0x0020
+#define MSGFLAG_SAY 0x0040
+#define MSGFLAG_WHISPER 0x0080
+#define MSGFLAG_MECHO 0x0100
+#define MSGFLAG_RTELL 0x0200 // tell from other mud
+
+#define MAX_SAVED_MESSAGES 50
+#define MAX_SAVED_CHATS 20
+
+// Was geht in den Kobold?
+#define MSGFLAG_CACHE (MSGFLAG_TELL | MSGFLAG_REMOTE | MSGFLAG_WHISPER | MSGFLAG_RTELL)
+
+#define MSGFLAG_DEAFCHK (MSGFLAG_SHOUT | MSGFLAG_TELL | MSGFLAG_SAY | MSGFLAG_WHISPER | MSGFLAG_CHANNEL | MSGFLAG_RTELL)
+
+// Rueckgabewerte von Message()
+#define MESSAGE_OK 1 // alles klar
+#define MESSAGE_CACHE 0 // Meldung steht im Kobold
+#define MESSAGE_IGNORE_YOU -1 // Meldung/Sender wird ignoriert
+#define MESSAGE_IGNORE_VERB -2
+#define MESSAGE_IGNORE_MUD -3
+#define MESSAGE_DEAF -4 // Empfaenger hoert nicht zu
+#define MESSAGE_CACHE_FULL -5 // Kobold kann nichts mehr merken
+
+// Flags fuer Statusreports
+#define DO_REPORT_HP 0x1
+#define DO_REPORT_SP 0x2
+#define DO_REPORT_POISON 0x4
+#define DO_REPORT_WIMPY 0x8
+#define DO_REPORT_WIMPY_DIR 0x10
+
+#endif // __PLAYER_COMM_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_COMM_H_PROTO__
+#define __PLAYER_COMM_H_PROTO__
+
+// prototypes
+
+protected varargs int _recv(object ob, string message,
+ int flag, string indent);
+
+varargs int Message(string msg, int flag, string indent,
+ string cname, mixed sender);
+
+protected void status_report(int type, mixed val);
+protected void _notify(string msg, string action);
+
+#endif // __PLAYER_COMM_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/player/command.h b/sys/player/command.h
new file mode 100644
index 0000000..1a41b56
--- /dev/null
+++ b/sys/player/command.h
@@ -0,0 +1,39 @@
+// MorgenGrauen MUDlib
+//
+// player/command.h - Commands & Co
+//
+// $Id: attributes.h 6282 2007-05-09 20:55:17Z Zesstra $
+
+#ifndef __PLAYER_COMMAND_H__
+#define __PLAYER_COMMAND_H__
+
+// properties
+#define P_DISABLE_COMMANDS "p_lib_disablecommands"
+
+// Indizes fuers Array von commandblock
+#define B_OBJECT 0
+#define B_TIME 1
+#define B_VALUE 2
+#define B_EXCEPTIONS 3
+
+#endif // __PLAYER_COMMAND_H__
+
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_COMMAND_H_PROTO__
+#define __PLAYER_COMMAND_H_PROTO__
+
+// prototypes
+mixed modify_command(string str);
+int command_me(string cmd);
+varargs string _unparsed_args(int level);
+
+// Set- und Query-Methoden
+static mixed _set_p_lib_disablecommands(mixed data);
+static mixed _query_p_lib_disablecommands();
+
+#endif // __PLAYER_ATTRIBUTES_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/player/description.h b/sys/player/description.h
new file mode 100644
index 0000000..078e169
--- /dev/null
+++ b/sys/player/description.h
@@ -0,0 +1,34 @@
+// MorgenGrauen MUDlib
+//
+// player/description.h -- player description header
+//
+// $Id: description.h,v 3.6 2000/02/09 15:56:25 Padreic Exp $
+
+#include <living/description.h>
+
+#ifndef __PLAYER_DESCRIPTION_H__
+#define __PLAYER_DESCRIPTION_H__
+
+// properties
+
+#define P_PRESAY "presay"
+#define P_TITLE "title"
+#define P_AVERAGE_SIZE "average_size"
+#define P_AVERAGE_WEIGHT "average_weight"
+#define P_REFERENCE_OBJECT "reference_object"
+
+#define P_DESCRIPTION "description"
+
+#endif // __PLAYER_DESCRIPTION_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_DESCRIPTION_H_PROTO__
+#define __PLAYER_DESCRIPTION_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __PLAYER_DESCRIPTION_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/player/fao.h b/sys/player/fao.h
new file mode 100644
index 0000000..3c016a4
--- /dev/null
+++ b/sys/player/fao.h
@@ -0,0 +1,47 @@
+// MorgenGrauen MUDlib
+//
+
+#ifndef __PLAYER_FAO_H__
+#define __PLAYER_FAO_H__
+
+#define FAO_MASTER "/d/ebene/miril/fraternitas/secure/faomaster" // die zentrale stelle des fao
+
+// die Liste der verfügbaren Portale fuer das erste portalgeschenk
+#define FAO_PORTALS1_LIST ({2,3,4,5,6,7,8,9,10,13,14,15,16,19,20,21,25,29,33})
+// die Liste der verfügbaren Portale fuer das zweite portalgeschenk
+#define FAO_PORTALS2_LIST FAO_PORTALS1_LIST+({1,11,12,17,18,24,26,27,28,31,34,36,37,38})
+// die anzahl der zu waehlenden portale fuer das erste portalgeschenk
+#define FAO_PORTALS1_NUM 5
+// die anzahl der zu waehlenden portale fuer das zweite portalgeschenk
+#define FAO_PORTALS2_NUM 5
+
+// properties
+#define P_FAO "fraternitasdonoarchmagorum" // enthaelt die doni
+#define P_FAO_PORTALS P_FAO+"PORTALS" // enthaelt die dem spieler uebergebenen portale
+
+// bitmasks
+#define FAO_TITLE 0x01
+#define FAO_PORTALS1 0x02
+#define FAO_PORTALS2 0x04
+#define FAO_SEER_PORTAL 0x08
+#define FAO_MEMBER 0x10
+
+// hilfreiche makros
+#define FAO_HAS_TITLE_GIFT(x) (x!=0 && query_once_interactive(x) \
+ && ((int)x->QueryProp(P_FAO)&FAO_TITLE)!=0)
+#define FAO_HAS_PORTALS1_GIFT(x) (x!=0 && query_once_interactive(x) \
+ && ((int)x->QueryProp(P_FAO)&FAO_PORTALS1)!=0)
+#define FAO_HAS_PORTALS2_GIFT(x) (x!=0 && query_once_interactive(x) \
+ && ((int)x->QueryProp(P_FAO)&FAO_PORTALS2)!=0)
+#define FAO_HAS_PORTALS_GIFT(x) (FAO_HAS_PORTALS1_GIFT(x) || FAO_HAS_PORTALS2_GIFT(x))
+#define FAO_MAY_USE_PORTAL(x,p) (intp(p) && ((FAO_HAS_PORTALS1_GIFT(x) && \
+ member(FAO_PORTALS1_LIST,p)!=-1 )||(FAO_HAS_PORTALS2_GIFT(x) && \
+ member(FAO_PORTALS2_LIST,p)!=-1) ) && \
+ (pointerp((int*)x->QueryProp(P_FAO_PORTALS)) \
+ && member((int*)x->QueryProp(P_FAO_PORTALS),p)!=-1) )
+#define FAO_HAS_SEER_PORTAL_GIFT(x) (x!=0 && query_once_interactive(x) \
+ && ((int)x->QueryProp(P_FAO)&FAO_SEER_PORTAL)!=0)
+#define FAO_IS_MEMBER(x) (x!=0 && query_once_interactive(x) \
+ && ((int)x->QueryProp(P_FAO)&FAO_MEMBER)!=0)
+#endif // __PLAYER_FAO_H__
+
diff --git a/sys/player/filesys.h b/sys/player/filesys.h
new file mode 100644
index 0000000..d2fcadb
--- /dev/null
+++ b/sys/player/filesys.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// player/filesys.h -- file system services
+//
+// $Id: filesys.h,v 3.1 1997/02/12 13:29:09 Wargon Exp $
+
+#ifndef __PLAYER_FILESYS_H__
+#define __PLAYER_FILESYS_H__
+
+// properties
+
+#endif // __PLAYER_FILESYS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_FILESYS_H_PROTO__
+#define __PLAYER_FILESYS_H_PROTO__
+
+// prototypes
+
+varargs string find_file(string str, string suffix);
+
+#endif // __PLAYER_FILESYS_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/player/gmcp.h b/sys/player/gmcp.h
new file mode 100644
index 0000000..45e37ce
--- /dev/null
+++ b/sys/player/gmcp.h
@@ -0,0 +1,26 @@
+// MorgenGrauen MUDlib
+//
+// player/gmcp.h -- Stuff for GMCP handling
+//
+// $Id$
+
+#ifndef __GMCP_H__
+#define __GMCP_H__
+
+// properties
+
+#endif // __GMCP_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __GMCP_H_PROTO__
+#define __GMCP_H_PROTO__
+
+// prototypes
+/*protected*/ int GMCP_Char(mapping data);
+/*protected*/ int GMCP_Channel(string msg, string channel, string sender);
+
+#endif // __GMCP_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/player/life.h b/sys/player/life.h
new file mode 100644
index 0000000..9ca9877
--- /dev/null
+++ b/sys/player/life.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// player/life.h -- player life header
+//
+// $Id: description.h,v 3.6 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_LIFE_H__
+#define __PLAYER_LIFE_H__
+
+// properties
+
+#endif // __PLAYER_LIFE_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_LIFE_H_PROTO__
+#define __PLAYER_LIFE_H_PROTO__
+
+// prototypes
+public void force_save();
+protected int death_suffering();
+
+#endif // __PLAYER_LIFE_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/player/moneyhandler.h b/sys/player/moneyhandler.h
new file mode 100644
index 0000000..2942b62
--- /dev/null
+++ b/sys/player/moneyhandler.h
@@ -0,0 +1,12 @@
+// MorgenGrauen MUDlib
+//
+// player/moneyhandler.h -- Wrapper fuer /sys/container/moneyhandler.h
+// Existiert aus Gruenden der Abwaertskompatibilitaet.
+//
+// $Id: moneyhandler.h 8396 2013-02-18 21:56:37Z Zesstra $
+
+#ifndef __PLAYER_MONEYHANDLER_H__
+#define __PLAYER_MONEYHANDLER_H__
+#include <container/moneyhandler.h>
+#endif
+
diff --git a/sys/player/moving.h b/sys/player/moving.h
new file mode 100644
index 0000000..442ab59
--- /dev/null
+++ b/sys/player/moving.h
@@ -0,0 +1,29 @@
+// MorgenGrauen MUDlib
+//
+// player/moving.h -- player moving header
+//
+// $Id: moving.h,v 3.2 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_MOVING_H__
+#define __PLAYER_MOVING_H__
+
+// properties
+
+#define P_MSGIN "msgin"
+#define P_MSGOUT "msgout"
+#define P_MMSGIN "mmsgin"
+#define P_MMSGOUT "mmsgout"
+
+#endif // __PLAYER_MOVING_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_MOVING_H_PROTO__
+#define __PLAYER_MOVING_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __PLAYER_MOVING_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/player/pklog.h b/sys/player/pklog.h
new file mode 100644
index 0000000..5f5acba
--- /dev/null
+++ b/sys/player/pklog.h
@@ -0,0 +1,15 @@
+// MorgenGrauen MUDlib
+//
+// player/pklog.h -- module for logging player vs player attacks
+//
+// $Id: comm.h,v 3.3 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_PKLOG_H__
+#define __PLAYER_PKLOG_H__
+
+nomask int CheckArenaFight(object victim);
+nomask protected int CheckPlayerAttack(object attacker, object victim,
+ string angriffsmsg);
+
+#endif // __PLAYER_PKLOG_H__
+
diff --git a/sys/player/potion.h b/sys/player/potion.h
new file mode 100644
index 0000000..08b81b1
--- /dev/null
+++ b/sys/player/potion.h
@@ -0,0 +1,34 @@
+// MorgenGrauen MUDlib
+//
+// player/potion.h -- potion services
+//
+// $Id: potion.h 9117 2015-01-25 11:25:14Z Zesstra $
+
+#ifndef __PLAYER_POTION_H__
+#define __PLAYER_POTION_H__
+
+// properties
+
+#define P_POTIONROOMS "potionrooms"
+#define P_KNOWN_POTIONROOMS "known_potionrooms"
+#define P_TRANK_FINDEN "trank_finden"
+
+// veraltete Props, lang unbenutzt.
+#define P_VISITED_POTIONROOMS "visited_potionrooms"
+#define P_BONUS_POTIONS "bonus_potions"
+
+#endif // __PLAYER_POTION_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_POTION_H_PROTO__
+#define __PLAYER_POTION_H_PROTO__
+
+// prototypes
+
+varargs int FindPotion(string s);
+
+#endif // __PLAYER_POTION_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/player/quest.h b/sys/player/quest.h
new file mode 100644
index 0000000..a870fc7
--- /dev/null
+++ b/sys/player/quest.h
@@ -0,0 +1,29 @@
+// MorgenGrauen MUDlib
+//
+// player/quests.h -- player quest handling
+//
+// $Id: quest.h,v 3.2 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_QUESTS_H__
+#define __PLAYER_QUESTS_H__
+
+// properties
+
+#define P_QUESTS "quests"
+#define P_QP "questpoints"
+
+#endif // __PLAYER_QUESTS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_QUESTS_H_PROTO__
+#define __PLAYER_QUESTS_H_PROTO__
+
+// prototypes
+
+varargs int GiveQuest(string questname, string message);
+int QueryQuest(string questname);
+
+#endif // __PLAYER_QUESTS_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/player/skills.h b/sys/player/skills.h
new file mode 100644
index 0000000..2843cad
--- /dev/null
+++ b/sys/player/skills.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// skills.h -- Prototypen fuer Skillfunktion aus Spielern.
+//
+// $Id: skills.h 6559 2007-10-20 13:00:20Z Zesstra $
+
+#ifndef __PLAYER_SKILLS_H__
+#define __PLAYER_SKILLS_H__
+
+// properties
+
+#endif // __PLAYER_SKILLS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_SKILLS_H_PROTO__
+#define __PLAYER_SKILLS_H_PROTO__
+
+// prototypes
+protected void set_weapon_skills();
+protected void FixSkills();
+protected void InitSkills();
+
+#endif // __PLAYER_SKILLS_H_PROTO__
+#endif // NEED_PROTOYPES
diff --git a/sys/player/telnetneg.h b/sys/player/telnetneg.h
new file mode 100644
index 0000000..415ed90
--- /dev/null
+++ b/sys/player/telnetneg.h
@@ -0,0 +1,19 @@
+// MorgenGrauen MUDlib
+//
+// telnetneg.h -- Definitionen und Prototypes fuer Telnet-Negotiations
+//
+// $Id: telnetneg.h 8348 2013-02-03 22:14:39Z Zesstra $
+
+#include "/secure/telnetneg.h"
+
+#ifndef _TELNETNEG_H_
+#define _TELNETNEG_H_
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef _TELNETNEG_H_PROTOS_
+#define _TELNETNEG_H_PROTOS_
+
+#endif
+#endif
diff --git a/sys/player/user_filter.h b/sys/player/user_filter.h
new file mode 100644
index 0000000..99e8036
--- /dev/null
+++ b/sys/player/user_filter.h
@@ -0,0 +1,27 @@
+// MorgenGrauen MUDlib
+//
+// player/user_filter.h -- user_filtermodule prototypes/properties
+//
+// $Id: comm.h,v 3.3 2000/02/09 15:56:25 Padreic Exp $
+
+#ifndef __PLAYER_USER_FILTER_H__
+#define __PLAYER_USER_FILTER_H__
+
+// properties
+
+#endif // __PLAYER_USER_FILTER_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_USER_FILTER_H_PROTO__
+#define __PLAYER_USER_FILTER_H_PROTO__
+
+// prototypes
+
+protected int is_active_guide(object ob);
+object *filter_users(string str);
+
+#endif // __PLAYER_USER_FILTER_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
diff --git a/sys/player/util.h b/sys/player/util.h
new file mode 100644
index 0000000..537dc5f
--- /dev/null
+++ b/sys/player/util.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// sys/player/util.h -- Headerfile fuer /std/player/util.c
+//
+// $Id: util.h,v 1.1 2004/04/09 21:02:41 Vanion Exp $
+
+#ifndef __THING_UTIL_H__
+#define __THING_UTIL_H__
+
+#endif // __THING_UTIL_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_UTIL_H_PROTO__
+#define __THING_UTIL_H_PROTO__
+
+public void ShowPropList(string *props);
+static void PrettyDump(mixed x);
+static void DumpArray(mixed *x);
+static void DumpMapping(mapping x);
+static void DumpKeyValPair(mapping x, mixed key, int size);
+
+#endif // __THING_UTIL_H_PROTO__
+
+#endif // NEED_PROTOTYPES
\ No newline at end of file
diff --git a/sys/player/viewcmd.h b/sys/player/viewcmd.h
new file mode 100644
index 0000000..182ccf6
--- /dev/null
+++ b/sys/player/viewcmd.h
@@ -0,0 +1,27 @@
+// MorgenGrauen MUDlib
+//
+// player/viewcmd.h -- view command handling
+//
+// $Id: viewcmd.h 6408 2007-08-07 23:02:18Z Zesstra $
+
+#ifndef __PLAYER_VIEWCMD_H__
+#define __PLAYER_VIEWCMD_H__
+
+// properties
+
+#define P_BLIND "blind"
+#define P_BRIEF "brief"
+
+#endif // __PLAYER_VIEWCMD_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __PLAYER_VIEWCMD_H_PROTO__
+#define __PLAYER_VIEWCMD_H_PROTO__
+
+// prototypes
+varargs string env_descr(int allow_short,int flags, int force_short );
+
+#endif // __PLAYER_VIEWCMD_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/properties.h b/sys/properties.h
new file mode 100644
index 0000000..c8bec39
--- /dev/null
+++ b/sys/properties.h
@@ -0,0 +1,50 @@
+// MorgenGrauen MUDlib
+//
+// properties.h -- properties header file
+//
+// $Id: properties.h 7169 2009-03-08 18:09:53Z Zesstra $
+
+#ifndef __PROPERTIES_H__
+#define __PROPERTIES_H__
+
+#ifdef NEED_PROTOTYPES
+#undef NEED_PROTOTYPES // we need only the properties here!!
+#define TMP_NEED_PROTOTYPES
+#endif
+
+#include <snooping.h>
+#include <thing.h>
+#include <clothing.h>
+#include <armour.h>
+#include <container.h>
+#include <living.h>
+#include <npc.h>
+#include <player.h>
+#include <rooms.h>
+#include <shells.h>
+#include <weapon.h>
+#include <transport.h>
+#include <lightsource.h>
+#include <quest_items.h>
+#include <moving.h>
+
+#ifdef TMP_NEED_PROTOTYPES
+#undef TMP_NEED_PROTOTYPES
+#define NEED_PROTOTYPES
+#endif
+
+#define P_ORIG_NAME "original_name"
+#define P_ORIG_FILE_NAME "original_file_name"
+
+#define P_CAP_NAME "cap_name"
+#define P_EARMUFFS "earmuffs"
+#define P_VALUE_PER_UNIT "value_per_unit"
+#define P_WEIGHT_PER_UNIT "weight_per_unit"
+#define P_FW_UNDERSTAND "fw_understand" /* kann die sprache aus fernwest */
+#define P_TRAY "tray" /* man kann was auf uns drauflegen */
+#define P_AMOUNT "amount"
+#define P_HP_HOOKS "hp_hooks"
+
+#define P_INFORMME "informme"
+
+#endif // __PROPERTIES_H__
diff --git a/sys/pub.h b/sys/pub.h
new file mode 100644
index 0000000..09fe9db
--- /dev/null
+++ b/sys/pub.h
@@ -0,0 +1,80 @@
+// MorgenGrauen MUDlib
+//
+// pub.h -- Headerfile for pubs and pubmaster
+//
+// $Id: pub.h 4494 2006-09-23 10:14:36Z root $
+
+#ifndef _PUB_H_
+#define _PUB_H_
+
+/* Der Pubmaster */
+#define PUBMASTER "/secure/pubmaster"
+
+/* Werte fuer die Kneipenformel:
+
+ Alc*Alcdelay+Drink*Drinkdelay+Food*Fooddelay Value
+( -------------------------------------------- + -------------
+ Alcdelay+Drinkdelay+Fooddelay VALUEDIV+Rate
+
+ Rate Delay
+ exp(--------) exp(--------)
+ RATEDIV1 WAITDIV1
+- ------------- ) * Factor * ( WAITOFFS + --------------- )
+ RATEDIV2 WAITDIV2
+
+*/
+
+#define PUB_SOAKMULT 18.0
+#define PUB_VALUEDIV 10.0
+#define PUB_RATEDIV1 3.5
+#define PUB_RATEDIV2 2.5
+#define PUB_WAITOFFS 0.9
+#define PUB_WAITDIV1 10.0
+#define PUB_WAITDIV2 7.5
+#define PUB_MAXDELAY 15.0
+
+/* Properties */
+
+// NPCs tanken hier auf die "schnelle" Art
+#define P_NPC_FASTHEAL "npc_fastheal"
+
+// Keine Standard-Getraenke
+#define P_NO_STD_DRINK "no_std_drink"
+
+// Meldung, wenn etwas nicht mehr vorhanden ist
+#define P_PUB_UNAVAILABLE "pub_unavailable"
+
+// Meldung, wenn etwas nicht im Menue steht
+#define P_PUB_NOT_ON_MENU "pub_not_on_menu"
+
+// Meldung, wenn Spieler nicht genug Geld hat
+#define P_PUB_NO_MONEY "pub_no_money"
+
+// Meldung, wenn der Barkeeper nicht anwesend ist
+#define P_PUB_NO_KEEPER "pub_no_keeper"
+
+/* Sonstige Defines */
+
+// Indices fuer das Menue-Mapping
+#define PM_TEXT 0
+#define PM_INFO 1
+#define PM_RATE 2
+#define PM_SERVE_MSG 3
+#define PM_REFRESH 4
+#define PM_DELAY 5
+#define PM_DELAY_MSG 6
+#define PM_IDS 7
+
+// Keys fuer den Refresh-Parameter
+#define PR_ALL "All"
+#define PR_USER "User"
+
+// Default-Defines fuer den Availability-Check
+#define PR_DEFAULT "DEF"
+#define PR_NONE "N/A"
+
+// Indices fuer den Refresh-Parameter
+#define PRV_AMOUNT 0
+#define PRV_REFRESH 1
+
+#endif // _PUB_H_
diff --git a/sys/quest_items.h b/sys/quest_items.h
new file mode 100644
index 0000000..76d96cf
--- /dev/null
+++ b/sys/quest_items.h
@@ -0,0 +1,18 @@
+/*
+ * QUEST_ITEMS.H -- identifies quest items
+ *
+ * $Log: quest_items.h,v $
+ * Revision 1.1 2003/12/30 12:41:14 Vanion
+ * Initial revision
+ *
+ * Revision 1.0 1997/01/20 15:33:47 mud
+ * Initial revision
+ *
+ */
+
+#ifndef ___QUEST_ITEMS_H__
+#define ___QUEST_ITEMS_H__
+
+#define P_QUEST_ITEM "quest_item"
+
+#endif // __QUEST_ITEMS_H__
diff --git a/sys/ranged_weapon.h b/sys/ranged_weapon.h
new file mode 100644
index 0000000..50bcd9b
--- /dev/null
+++ b/sys/ranged_weapon.h
@@ -0,0 +1,26 @@
+// MorgenGrauen MUDlib
+//
+// ranged_weapon.h -- Headerfile fuer Fernkampfwaffen
+//
+// $Id: ranged_weapon.h 9016 2015-01-10 18:29:26Z Zesstra $
+
+#ifndef __RANGED_WEAPON_H__
+#define __RANGED_WEAPON_H__
+
+// Properties
+
+#endif // __RANGED_WEAPON_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __RANGED_WEAPON_H_PROTO__
+#define __RANGED_WEAPON_H_PROTO__
+
+// Prototypes
+static int shoot_dam(mapping shoot);
+static string FindRangedTarget(string str, mapping shoot);
+static int cmd_shoot(string str);
+
+#endif // __RANGED_WEAPON_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/regexp.h b/sys/regexp.h
new file mode 100644
index 0000000..7c0f10c
--- /dev/null
+++ b/sys/regexp.h
@@ -0,0 +1,42 @@
+#ifndef LPC_REGEXP_H_
+#define LPC_REGEXP_H_ 1
+
+/* Definitions of regexp option values */
+
+/* Not really an RE option, but used in conjunction with some RE functions: */
+
+#define RE_GLOBAL 0x0001 /* Apply RE globally (if possible) */
+
+/* Options supported by the old regexp package: */
+
+#define RE_EXCOMPATIBLE 0x0002 /* RE is compatible with ex */
+
+/* Options supported by the PCRE regexp package: */
+
+#define RE_CASELESS 0x0004
+#define RE_MULTILINE 0x0008
+#define RE_DOTALL 0x0010
+#define RE_EXTENDED 0x0020
+#define RE_ANCHORED 0x0040
+#define RE_DOLLAR_ENDONLY 0x0080
+#define RE_NOTBOL 0x0100
+#define RE_NOTEOL 0x0200
+#define RE_UNGREEDY 0x0400
+#define RE_NOTEMPTY 0x0800
+
+/* Options specific for regmatch(): */
+
+#define RE_MATCH_SUBS 0x1000 /* Return matched subexpressions */
+
+/* Options specific for regexplode(): */
+
+#define RE_OMIT_DELIM 0x1000 /* Omit the delimiters */
+
+/* Regexp package selection options: */
+
+#define RE_TRADITIONAL 0x04000000
+#define RE_PCRE 0x02000000
+
+#define RE_PACKAGE_MASK (RE_TRADITIONAL | RE_PCRE)
+
+#endif /* LPC_REGEXP_H_ */
diff --git a/sys/reputation.h b/sys/reputation.h
new file mode 100644
index 0000000..c46b2d8
--- /dev/null
+++ b/sys/reputation.h
@@ -0,0 +1,32 @@
+#ifndef _REPUTATION_H_
+#define _REPUTATION_H_
+
+#define REPMASTER "/secure/repmaster"
+#define REP_SAVEFILE "/secure/ARCH/repmaster"
+
+// Grenzwerte
+#define REP_MAXIMUM 10000
+#define REP_MINIMUM -10000
+
+// Zwischenstufen
+#define REP_TRUSTED 7500
+#define REP_LIKED 5000
+#define REP_FAMILIAR 2500
+#define REP_NEUTRAL 0
+#define REP_UNFAMILIAR -2500
+#define REP_DISLIKED -5000
+#define REP_DISTRUSTED -7500
+
+// Returncodes
+#define REP_RET_WRONGARGS -1 // Falsche Argumente fuer ChangeRep()
+#define REP_RET_INVALIDUID -2 // Unzulaessige UID
+#define REP_RET_ALREADYMAX -3 // Reputation bereits Max / Min
+#define REP_RET_INACTIVE -4 // Reputation auf inaktiv gesetzt
+#define REP_RET_INVALIDREP -5 // Reputation nicht vorhanden
+#define REP_RET_SUCCESS 1 // Reputation wurde veraendert
+#define REP_RET_SUCCESSCUT 2 // Reputation wurde auf Min / Max veraendert
+
+// Flags fuer die Eintraege im Master
+#define REP_FLAG_ACTIVE 1
+
+#endif
diff --git a/sys/room/description.h b/sys/room/description.h
new file mode 100644
index 0000000..c571341
--- /dev/null
+++ b/sys/room/description.h
@@ -0,0 +1,51 @@
+// MorgenGrauen MUDlib
+//
+// room/description.h -- standard room header
+//
+// $Id: description.h 9190 2015-04-02 14:29:36Z Arathorn $
+
+#ifndef __ROOM_DESCRIPTION_H__
+#define __ROOM_DESCRIPTION_H__
+
+// properties
+
+#define P_INT_SHORT "int_short"
+#define P_INT_LONG "int_long"
+
+#define P_ROOM_MSG "room_msg"
+#define P_FUNC_MSG "func_msg"
+#define P_MSG_PROB "msg_prob"
+
+#define P_HAUS_ERLAUBT "haus_erlaubt"
+
+#define P_NO_TPORT "tport"
+#define P_TPORT_COST_IN "tport_cost_in"
+#define P_TPORT_COST_OUT "tport_cost_out"
+#define P_INDOORS "indoors"
+
+#define P_NEVER_CLEAN " never clean "
+#define P_ROOM_TYPE "room_type"
+#define P_NO_PLAYERS "no_players"
+
+#define P_NO_PARA_TRANS "no_para_trans"
+#define P_KEEPER "shop_keeper" // Eigentuemer von Pub oder Shop
+#define P_BUY_ONLY_PLANTS "lib_p_buy_only_plants"
+#define P_ORAKEL "orakel"
+
+#define P_LIGHT_ABSORPTION "light_absorption" // Licht das der Raum schluckt
+
+#define P_DOMAIN "lib_p_domain" // Domain, in der der Raum ist.
+
+#endif // __ROOM_DESCRIPTION_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __ROOM_DESCRIPTION_H_PROTO__
+#define __ROOM_DESCRIPTION_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __ROOM_DESCRIPTION_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/room/exits.h b/sys/room/exits.h
new file mode 100644
index 0000000..d3f0896
--- /dev/null
+++ b/sys/room/exits.h
@@ -0,0 +1,42 @@
+// MorgenGrauen MUDlib
+//
+// room/exits.h -- exit specific defines
+//
+// $Id: exits.h 9477 2016-02-19 21:17:51Z Zesstra $
+
+#ifndef __ROOM_EXITS_H__
+#define __ROOM_EXITS_H__
+
+// Properties
+
+#define P_EXITS "exits"
+#define P_SPECIAL_EXITS "special_exits"
+#define P_HIDE_EXITS "hide_exits"
+
+#define P_BLOCK_MSG "block_msg"
+
+#endif // __ROOM_EXITS_H__
+
+// Prototypes
+#ifdef NEED_PROTOTYPES
+
+#ifndef __ROOM_EXITS_H_PROTO__
+#define __ROOM_EXITS_H_PROTO__
+
+static mapping _set_exits(mapping map_ldfied) ;
+static mapping _query_exits();
+static int _set_special_exits(mapping map_ldfied);
+static mapping _query_special_exits();
+static string _MakePath(string str);
+void AddExit(string|string* cmd, closure|string dest);
+protected void _AddExit(string|string* cmd, string|closure room,
+ string message);
+void RemoveExit(string|string* cmd);
+void AddSpecialExit(string|string* cmd, string|closure functionname);
+void RemoveSpecialExit(string|string* cmd);
+varargs string GetExits( object viewer );
+int _normalfunction();
+
+#endif // __ROOM_EXITS_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/rooms.h b/sys/rooms.h
new file mode 100644
index 0000000..2951036
--- /dev/null
+++ b/sys/rooms.h
@@ -0,0 +1,63 @@
+// MorgenGrauen MUDlib
+//
+// rooms.h -- standard room header
+//
+// $Id: rooms.h 8425 2013-02-23 18:49:09Z Zesstra $
+
+#ifndef __ROOM_H__
+#define __ROOM_H__
+
+#include <room/description.h>
+#include <room/exits.h>
+#include <doorroom.h>
+
+// properties
+// Flags fuer Einschraenkung der Daten fuer Mappingzwecke an den Client
+#define P_MAP_RESTRICTIONS "lib_p_map_restrictions"
+
+// raise error message
+#define AddDoor(a,b,c,d,e,f) raise_error("Use NewDoor instead of AddDoor!\n")
+#define AddDoor2(a,b,c,d,e,f,g) raise_error("Use NewDoor instead of AddDoor2!\n")
+#define AddRoomCmd(a,b) raise_error("Use AddCmd instead of AddRoomCmd!\n")
+#define RemoveRoomCmd(a,b) raise_error("Use RemoveCmd instead of RemoveRoomCmd!\n")
+// defines
+
+/* entries in item array */
+#define RITEM_OBJECT 0
+#define RITEM_FILE 1
+#define RITEM_REFRESH 2
+#define RITEM_PROPS 3
+
+/* refresh for extra items */
+#define REFRESH_NONE 0
+#define REFRESH_DESTRUCT 1
+#define REFRESH_REMOVE 2
+#define REFRESH_ALWAYS 3
+#define REFRESH_MOVE_HOME 4
+
+/* values for teleport forbid property */
+#define TPORT_IN 1
+#define TPORT_OUT 2
+#define TPORT_BOTH (TPORT_IN | TPORT_OUT)
+
+/* values for different roomtypes */
+#define RT_SHOP 1
+#define RT_PUB 2
+
+// Werte fuer P_MAP_RESTRICTIONS
+#define MR_NOUID 0x1
+#define MR_NOINFO 0x2
+
+#endif // __ROOM_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __ROOM_H_PROTO__
+#define __ROOM_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __ROOM_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/routingd.h b/sys/routingd.h
new file mode 100644
index 0000000..3730679
--- /dev/null
+++ b/sys/routingd.h
@@ -0,0 +1,15 @@
+// MorgenGrauen MUDlib
+//
+// routingd.h -- Definitionen fuer den RoutingDaemon
+//
+// $Id: routingd.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+#ifndef _ROUTINGD_H_
+#define _ROUTINGD_H_
+
+#define ROUTER "/p/daemon/routingd"
+
+#define TARGET_PUB "##pub"
+#define TARGET_SHOP "##shop"
+
+#endif
diff --git a/sys/rtlimits.h b/sys/rtlimits.h
new file mode 100644
index 0000000..a136aa2
--- /dev/null
+++ b/sys/rtlimits.h
@@ -0,0 +1,39 @@
+#ifndef LPC_RTLIMITS_H_
+#define LPC_RTLIMITS_H_
+
+/* Runtime limit index/tag values */
+
+#define LIMIT_EVAL (0)
+#define LIMIT_ARRAY (1)
+#define LIMIT_MAPPING (2)
+#define LIMIT_MAPPING_KEYS LIMIT_MAPPING
+#define LIMIT_MAPPING_SIZE (3)
+#define LIMIT_BYTE (4)
+#define LIMIT_FILE (5)
+#define LIMIT_CALLOUTS (6)
+#define LIMIT_COST (7)
+#define LIMIT_MEMORY (8)
+
+#define LIMIT_MAX (9) /* Number of recognized limits */
+
+/* Special limit values */
+
+#define LIMIT_UNLIMITED 0 /* No limit */
+#define LIMIT_KEEP (-1) /* Keep the old limit setting */
+#define LIMIT_DEFAULT (-2) /* Use the default setting */
+
+/* memory limits */
+#define MALLOC_SOFT_LIMIT 1
+#define MALLOC_HARD_LIMIT 2
+
+/* low memory conditions */
+#define NO_MALLOC_LIMIT_EXCEEDED 0
+#define SOFT_MALLOC_LIMIT_EXCEEDED MALLOC_SOFT_LIMIT
+#define HARD_MALLOC_LIMIT_EXCEEDED MALLOC_HARD_LIMIT
+
+/* Flags for available reserves */
+#define USER_RESERVE_AVAILABLE 0x1
+#define MASTER_RESERVE_AVAILABLE 0x2
+#define SYSTEM_RESERVE_AVAILABLE 0x4
+
+#endif /* LPC_RTLIMITS_H_ */
diff --git a/sys/seil.h b/sys/seil.h
new file mode 100644
index 0000000..3d59830
--- /dev/null
+++ b/sys/seil.h
@@ -0,0 +1,8 @@
+#define P_TIED "tied" // wird im gebundenn object gesetzt und behinaltet ein mapping
+#define P_TIE_USER "tie_user" // hier steht der user drin, der die letzte
+ // aktion mit dem seil gemacht hat
+ // Prop kann in tie() ausgelesen werden.
+#define P_TIE_VERB "tie_verb" // wird fuer automatisches binden/loesen benoetigt.
+#define P_TIE_MESSAGE "tie_message" // Ausgabe beim festbinden des seiles aus einem object/raum heraus
+#define P_UNTIE_MESSAGE "untie_message" // MSG zum loesen des Seiles
+#define P_TIE_AUTO "tie_auto"
diff --git a/sys/sensitive.h b/sys/sensitive.h
new file mode 100644
index 0000000..fc51dc6
--- /dev/null
+++ b/sys/sensitive.h
@@ -0,0 +1,44 @@
+// MorgenGrauen MUDlib
+//
+// sensitive.h -- Definitionen fuer sensitive Objekte.
+// Siehe auch /std/container/inventory.c und
+// /std/living/inventory.c
+//
+// $Id: sensitive.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+#ifndef __SENSITIVE_H__
+#define __SENSITIVE_H__
+
+#define P_SENSITIVE_INVENTORY "sensitive_inv"
+#define P_SENSITIVE_INVENTORY_TRIGGER "sensitive_inv_trigger"
+#define P_SENSITIVE_ATTACK "sensitive_attack"
+
+#define SENSITIVE_INVENTORY "inv"
+#define SENSITIVE_INVENTORY_TRIGGER "inv_trigger"
+#define SENSITIVE_ATTACK "attack"
+
+#define SENS_OBJECT 0
+#define SENS_CLOSURE 1
+#define SENS_KEY 2
+#define SENS_THRESHOLD 3
+#define SENS_OPT 4
+
+#define SENS_PROP_PREFIX "sensitive_"
+#define SENS_INSERT_PREFIX "insert_sensitive_"
+#define SENS_TRIGGER_PREFIX "trigger_sensitive_"
+
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __SENSITIVE_H_PROTO__
+#define __SENSITIVE_H_PROTO__
+
+void RemoveSensitiveObjectFromList(object ob, string list);
+void RemoveSensitiveObject(object ob);
+varargs void InsertSensitiveObjectToList(object ob, string list, string key,
+ int threshold, mixed *opt);
+void InsertSensitiveObject(object ob, mixed arg);
+void CheckSensitiveAttack(int dam, mixed dam_type, mixed spell, object enemy);
+
+#endif
+#endif
diff --git a/sys/sent.h b/sys/sent.h
new file mode 100644
index 0000000..179bef2
--- /dev/null
+++ b/sys/sent.h
@@ -0,0 +1,10 @@
+#ifndef LPC_SENT_H_
+#define LPC_SENT_H_
+
+#define SENT_PLAIN 0
+#define SENT_SHORT_VERB 1
+#define SENT_NO_SPACE 2
+#define SENT_NO_VERB 3
+#define SENT_MARKER 4
+
+#endif
diff --git a/sys/shells.h b/sys/shells.h
new file mode 100644
index 0000000..b792cca
--- /dev/null
+++ b/sys/shells.h
@@ -0,0 +1,27 @@
+// MorgenGrauen MUDlib
+//
+// shells.h -- shell header
+//
+// $Id: shells.h 9555 2016-05-03 20:42:46Z Zesstra $
+
+#ifndef __SHELLS_H__
+#define __SHELLS_H__
+
+// properties
+
+#define P_CURRENTDIR "currentdir"
+#define P_LASTDIR "p_lib_lastdir"
+
+#endif // __SHELLS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __SHELLS_H_PROTO__
+#define __SHELLS_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __SHELLS_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/signals.h b/sys/signals.h
new file mode 100644
index 0000000..be4412e
--- /dev/null
+++ b/sys/signals.h
@@ -0,0 +1,23 @@
+#ifndef LPC_SIGNALS_H_
+#define LPC_SIGNALS_H_ 1
+
+// Our defines for some POSIX signals the driver defers to the mudlib.
+// This abstraction is intentional.
+#define LPC_SIGHUP 1
+#define LPC_SIGINT 2
+#define LPC_SIGTERM 15
+#define LPC_SIGUSR1 16
+#define LPC_SIGUSR2 17
+
+// __STD__ is defined during the driver compilation (the driver includes this
+// file as well) but not in LPC programs. In LPC we may safely define the
+// signals name without the LPC_ prefix.
+#if !defined(__STDC__)
+#define SIGHUP LPC_SIGHUP
+#define SIGINT LPC_SIGINT
+#define SIGTERM LPC_SIGTERM
+#define SIGUSR1 LPC_SIGUSR1
+#define SIGUSR2 LPC_SIGUSR2
+#endif // __STD__
+
+#endif /* LPC_SIGNALS_H_ */
diff --git a/sys/snooping.h b/sys/snooping.h
new file mode 100644
index 0000000..45edcf6
--- /dev/null
+++ b/sys/snooping.h
@@ -0,0 +1,15 @@
+// MorgenGrauen MUDlib
+//
+// snooping.h -- Definitionen rund ums Snoopen
+//
+// $Id: snooping.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+#ifndef _SNOOPING_H_
+#define _SNOOPING_H_
+
+#define SF_LOCKED 1
+#define SF_FORCE 2
+
+#define P_SNOOPFLAGS "snoopflags"
+
+#endif
diff --git a/sys/spellbook.h b/sys/spellbook.h
new file mode 100644
index 0000000..876301e
--- /dev/null
+++ b/sys/spellbook.h
@@ -0,0 +1,56 @@
+// MorgenGrauen MUDlib
+//
+// spellbook.h -- Funktions-Prototypen fuer das /std/spellbook.h
+//
+// $Id: spellbook.h 8822 2014-05-17 09:49:49Z Zesstra $
+
+#ifndef __SPELLBOOK_H__
+#define __SPELLBOOK_H__
+
+// no defines
+
+#endif // __SPELLBOOK_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __SPELLBOOK_H_PROTO__
+#define __SPELLBOOK_H_PROTO__
+
+varargs int AddSpell(string verb, int kosten, mixed ski);
+ int CanTrySpell(object caster, mapping sinfo);
+ int SpellSuccess(object caster, mapping sinfo);
+ int TryAttackSpell(object victim, int damage, mixed dtypes,
+ mixed is_spell, object caster,
+ mapping sinfo);
+varargs int TryDefaultAttackSpell(object victim, object caster,
+ mapping sinfo, mixed str);
+varargs int TryGlobalAttackSpell(object caster, mapping sinfo, int suc,
+ int damage, mixed dt, mixed is_spell,
+ int dist, int depth, int width);
+varargs int UseSpell(object caster, string spell, mapping sinfo);
+ mapping QuerySpell(string spell);
+varargs mixed FindDistantGroups(object pl, int dist, int dy, int dx);
+varargs object FindDistantEnemyVictim(string wen, object pl, string msg,
+ int dist, int dy);
+varargs object *FindDistantGroup(object pl, int who, int dist, int dy,
+ int dx);
+varargs object FindEnemyVictim(string wen, object pl, string msg);
+varargs object FindFarEnemyVictim(string wen, object pl, string msg,
+ int min, int max);
+ object *FindGroup(object pl, int who);
+ object *FindGroupN(object pl, int who, int n);
+ object *FindGroupP(object pl, int who, int pr);
+varargs object FindLivingVictim(string wen, object pl, string msg);
+varargs object FindNearEnemyVictim(string wen, object pl, string msg);
+static
+varargs object find_victim(string wen, object pl);
+varargs object FindVictim(string wen, object pl, string msg);
+ string SelectSpell(string spell, mapping sinfo);
+ void Erfolg(object caster, string spell, mapping sinfo);
+ void Learn(object caster, string spell, mapping sinfo);
+ void Misserfolg(object caster, string spell, mapping sinfo);
+varargs void prepare_spell(object caster, string spell, mapping sinfo);
+
+#endif // __SPELLBOOK_H_PROTO__
+
+#endif // // NEED_PROTOYPES
diff --git a/sys/strings.h b/sys/strings.h
new file mode 100644
index 0000000..a78ae1e
--- /dev/null
+++ b/sys/strings.h
@@ -0,0 +1,10 @@
+#ifndef LPC_STRINGS_H_
+#define LPC_STRINGS_H_ 1
+
+/* 'where' argument values for trim() */
+
+#define TRIM_LEFT 0x01
+#define TRIM_RIGHT 0x02
+#define TRIM_BOTH (TRIM_LEFT|TRIM_RIGHT)
+
+#endif /* LPC_STRINGS_H_ */
diff --git a/sys/struct_info.h b/sys/struct_info.h
new file mode 100644
index 0000000..dde00e6
--- /dev/null
+++ b/sys/struct_info.h
@@ -0,0 +1,38 @@
+#ifndef LPC_STRUCTINFO_H_
+#define LPC_STRUCTINFO_H_
+
+#ifndef __DRIVER_SOURCE__
+#include "lpctypes.h"
+#endif
+
+/* Definition of argument values for struct_info() and
+ * of the indices in the corresponding result arrays.
+ */
+
+/* Possible types of information requested from struct_info()
+ */
+#define SINFO_FLAT 0
+#define SINFO_NESTED 1
+
+
+/* Indices in the result array
+ */
+
+#define SI_NAME 0
+#define SI_PROG_NAME 1
+#define SI_PROG_ID 2
+#define SI_BASE 3
+#define SI_MEMBER 4
+
+#define SI_MAX 5 /* Min Number of SI_ result elements */
+
+/* Indices in the SI_MEMBER arrays
+ */
+
+#define SIM_NAME 0
+#define SIM_TYPE 1
+#define SIM_EXTRA 2
+
+#define SIM_MAX 3 /* Number of SIM_ elements */
+
+#endif /* LPC_STRUCTINFO_H_ */
diff --git a/sys/sys_debug.h b/sys/sys_debug.h
new file mode 100644
index 0000000..4b82764
--- /dev/null
+++ b/sys/sys_debug.h
@@ -0,0 +1,24 @@
+// MorgenGrauen MUDlib
+//
+// sys_debug.h -- Definitionen fuer Debugzwecke
+//
+// $Id: sys_debug.h 6081 2006-10-23 14:12:34Z Zesstra $
+
+#ifndef __SYS_DEBUG_H__
+#define __SYS_DEBUG_H__
+
+#define DEBUG(x) printf("DEBUG: OBJ(/%O) %O\n", this_object(), (x))
+
+#define DBG_ON(c) (traceprefix(object_name(this_object())[1..]), trace(c?c:239))
+#define DBG_OFF() (traceprefix(""), trace(0))
+
+#define LFUN 1 // debug lfunc calls
+#define CALL 2 // debug call_other calls
+#define RET 4 // debug return values
+#define ARGS 8 // show arguments when calling a function
+#define STACK 16 // show all stack machine code (DON'T USE!)
+#define HB 32 // show calls to heart_beat()
+#define APPLY 64 // debug calls to apply
+#define NAME 128 // show name of file when debugging (don't use)
+
+#endif
diff --git a/sys/telnet.h b/sys/telnet.h
new file mode 100644
index 0000000..94a2b14
--- /dev/null
+++ b/sys/telnet.h
@@ -0,0 +1,261 @@
+#ifndef TELNET_H__
+#define TELNET_H__ 1
+
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley. The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * @(#)telnet.h 5.7 (Berkeley) 11/14/89
+ */
+
+/*
+ * Definitions for the TELNET protocol.
+ */
+#define IAC 255 /* interpret as command: */
+#define DONT 254 /* you are not to use option */
+#define DO 253 /* please, you use option */
+#define WONT 252 /* I won't use option */
+#define WILL 251 /* I will use option */
+#define SB 250 /* interpret as subnegotiation */
+#define GA 249 /* you may reverse the line */
+#define EL 248 /* erase the current line */
+#define EC 247 /* erase the current character */
+#define AYT 246 /* are you there */
+#define AO 245 /* abort output--but let prog finish */
+#define IP 244 /* interrupt process--permanently */
+#define BREAK 243 /* break */
+#define DM 242 /* data mark--for connect. cleaning */
+#define NOP 241 /* nop */
+#define SE 240 /* end sub negotiation */
+#define EOR 239 /* end of record (transparent mode) */
+#define ABORT 238 /* Abort process */
+#define SUSP 237 /* Suspend process */
+#define xEOF 236 /* End of file: EOF is already used... */
+
+#define SYNCH 242 /* for telfunc calls */
+
+#ifdef __DRIVER_SOURCE__
+
+#ifdef TELCMDS
+char *telcmds[] = {
+ "EOF", "SUSP", "ABORT", "EOR",
+ "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
+ "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC",
+};
+#define TELCMD_FIRST xEOF
+#define TELCMD_LAST IAC
+#define TELCMD_OK(x) ((x) <= TELCMD_LAST && (x) >= TELCMD_FIRST)
+#define TELCMD(x) telcmds[(x)-TELCMD_FIRST]
+#endif
+
+#endif /* __DRIVER_SOURCE__ */
+
+/* telnet options */
+#define TELOPT_BINARY 0 /* 8-bit data path */
+#define TELOPT_ECHO 1 /* echo */
+#define TELOPT_RCP 2 /* prepare to reconnect */
+#define TELOPT_SGA 3 /* suppress go ahead */
+#define TELOPT_NAMS 4 /* approximate message size */
+#define TELOPT_STATUS 5 /* give status */
+#define TELOPT_TM 6 /* timing mark */
+#define TELOPT_RCTE 7 /* remote controlled transmission and echo */
+#define TELOPT_NAOL 8 /* negotiate about output line width */
+#define TELOPT_NAOP 9 /* negotiate about output page size */
+#define TELOPT_NAOCRD 10 /* negotiate about CR disposition */
+#define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */
+#define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */
+#define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */
+#define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */
+#define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */
+#define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */
+#define TELOPT_XASCII 17 /* extended ascic character set */
+#define TELOPT_LOGOUT 18 /* force logout */
+#define TELOPT_BM 19 /* byte macro */
+#define TELOPT_DET 20 /* data entry terminal */
+#define TELOPT_SUPDUP 21 /* supdup protocol */
+#define TELOPT_SUPDUPOUTPUT 22 /* supdup output */
+#define TELOPT_SNDLOC 23 /* send location */
+#define TELOPT_TTYPE 24 /* terminal type */
+#define TELOPT_EOR 25 /* end or record */
+#define TELOPT_TUID 26 /* TACACS user identification */
+#define TELOPT_OUTMRK 27 /* output marking */
+#define TELOPT_TTYLOC 28 /* terminal location number */
+#define TELOPT_3270REGIME 29 /* 3270 regime */
+#define TELOPT_X3PAD 30 /* X.3 PAD */
+#define TELOPT_NAWS 31 /* window size */
+#define TELOPT_TSPEED 32 /* terminal speed */
+#define TELOPT_LFLOW 33 /* remote flow control */
+#define TELOPT_LINEMODE 34 /* Linemode option */
+#define TELOPT_XDISPLOC 35 /* X Display Location */
+#define TELOPT_ENVIRON 36 /* Environment opt for Port ID */
+#define TELOPT_AUTHENTICATION 37 /* authentication */
+#define TELOPT_ENCRYPT 38 /* authentication */
+#define TELOPT_NEWENV 39 /* Environment opt for Port ID */
+#define TELOPT_STARTTLS 46 /* Transport Layer Security */
+#define TELOPT_KERMIT 47 /* Telnet KERMIT */
+#define TELOPT_SEND_URL 48 /* Send URL */
+#define TELOPT_EXOPL 255 /* extended-options-list */
+
+/* Inofficial, mud specific telnet options */
+#define TELOPT_MSSP 70 /* Mud Server Status Protocol */
+#define TELOPT_COMPRESS 85 /* Mud Compression Protocol, v.1 */
+#define TELOPT_COMPRESS2 86 /* Mud Compression Protocol, v.2 */
+#define TELOPT_MSP 90 /* Mud Sound Protocol */
+#define TELOPT_MXP 91 /* Mud Extension Protocol */
+#define TELOPT_ZMP 93 /* Zenith Mud Protocol */
+#define TELOPT_MUSHCLIENT 102 /* Mushclient/Aardwolf Protocol */
+#define TELOPT_ATCP 200 /* Achaea Telnet Client Protocol */
+#define TELOPT_GMCP 201 /* General Mud Communication Protocol*/
+
+#define NTELOPTS 256 /* was: (1+TELOPT_NEWENV) */
+
+#ifdef __DRIVER_SOURCE__
+
+#ifdef TELOPTS
+char *telopts[NTELOPTS]
+ = { "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD"
+ , "NAME", "STATUS", "TIMING MARK", "RCTE"
+ , "NAOL", "NAOP", "NAOCRD", "NAOHTS"
+ , "NAOHTD", "NAOFFD", "NAOVTS", "NAOVTD"
+ , "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO"
+ , "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", "SEND LOCATION"
+ , "TERMINAL TYPE", "END OF RECORD", "TACACS UID", "OUTPUT MARKING"
+ , "TTYLOC", "3270 REGIME", "X.3 PAD", "NAWS"
+ , "TSPEED", "LFLOW", "LINEMODE", "XDISPLOC"
+ , "ENVIRON", "AUTH", "ENCRYPT", "NEWENV"
+ , "TELOPT 40", "TELOPT 41", "TELOPT 42", "TELOPT 43"
+ , "TELOPT 44", "TELOPT 45", "STARTTLS", "KERMIT"
+ , "SEND_URL", "TELOPT 49", "TELOPT 50", "TELOPT 51"
+ , "TELOPT 52", "TELOPT 53", "TELOPT 54", "TELOPT 55"
+ , "TELOPT 56", "TELOPT 57", "TELOPT 58", "TELOPT 59"
+ , "TELOPT 60", "TELOPT 61", "TELOPT 62", "TELOPT 63"
+ , "TELOPT 64", "TELOPT 65", "TELOPT 66", "TELOPT 67"
+ , "TELOPT 68", "TELOPT 69", "MSSP", "TELOPT 71"
+ , "TELOPT 72", "TELOPT 73", "TELOPT 74", "TELOPT 75"
+ , "TELOPT 76", "TELOPT 77", "TELOPT 78", "TELOPT 79"
+ , "TELOPT 80", "TELOPT 81", "TELOPT 82", "TELOPT 83"
+ , "TELOPT 84", "MUD COMPRESS", "MUD COMPRESS2", "TELOPT 87"
+ , "TELOPT 88", "TELOPT 89", "MUD SOUND", "MUD EXTENSION"
+ , "TELOPT 92", "ZMP", "TELOPT 94", "TELOPT 95"
+ , "TELOPT 96", "TELOPT 97", "TELOPT 98", "TELOPT 99"
+ , "TELOPT 100", "TELOPT 101", "MUSHCLIENT", "TELOPT 103"
+ , "TELOPT 104", "TELOPT 105", "TELOPT 106", "TELOPT 107"
+ , "TELOPT 108", "TELOPT 109", "TELOPT 110", "TELOPT 111"
+ , "TELOPT 112", "TELOPT 113", "TELOPT 114", "TELOPT 115"
+ , "TELOPT 116", "TELOPT 117", "TELOPT 118", "TELOPT 119"
+ , "TELOPT 120", "TELOPT 121", "TELOPT 122", "TELOPT 123"
+ , "TELOPT 124", "TELOPT 125", "TELOPT 126", "TELOPT 127"
+ , "TELOPT 128", "TELOPT 129", "TELOPT 130", "TELOPT 131"
+ , "TELOPT 132", "TELOPT 133", "TELOPT 134", "TELOPT 135"
+ , "TELOPT 136", "TELOPT 137", "TELOPT 138", "TELOPT 139"
+ , "TELOPT 140", "TELOPT 141", "TELOPT 142", "TELOPT 143"
+ , "TELOPT 144", "TELOPT 145", "TELOPT 146", "TELOPT 147"
+ , "TELOPT 148", "TELOPT 149", "TELOPT 150", "TELOPT 151"
+ , "TELOPT 152", "TELOPT 153", "TELOPT 154", "TELOPT 155"
+ , "TELOPT 156", "TELOPT 157", "TELOPT 158", "TELOPT 159"
+ , "TELOPT 160", "TELOPT 161", "TELOPT 162", "TELOPT 163"
+ , "TELOPT 164", "TELOPT 165", "TELOPT 166", "TELOPT 167"
+ , "TELOPT 168", "TELOPT 169", "TELOPT 170", "TELOPT 171"
+ , "TELOPT 172", "TELOPT 173", "TELOPT 174", "TELOPT 175"
+ , "TELOPT 176", "TELOPT 177", "TELOPT 178", "TELOPT 179"
+ , "TELOPT 180", "TELOPT 181", "TELOPT 182", "TELOPT 183"
+ , "TELOPT 184", "TELOPT 185", "TELOPT 186", "TELOPT 187"
+ , "TELOPT 188", "TELOPT 189", "TELOPT 190", "TELOPT 191"
+ , "TELOPT 192", "TELOPT 193", "TELOPT 194", "TELOPT 195"
+ , "TELOPT 196", "TELOPT 197", "TELOPT 198", "TELOPT 199"
+ , "ATCP", "TELOPT 201", "TELOPT 202", "TELOPT 203"
+ , "TELOPT 204", "TELOPT 205", "TELOPT 206", "TELOPT 207"
+ , "TELOPT 208", "TELOPT 209", "TELOPT 210", "TELOPT 211"
+ , "TELOPT 212", "TELOPT 213", "TELOPT 214", "TELOPT 215"
+ , "TELOPT 216", "TELOPT 217", "TELOPT 218", "TELOPT 219"
+ , "TELOPT 220", "TELOPT 221", "TELOPT 222", "TELOPT 223"
+ , "TELOPT 224", "TELOPT 225", "TELOPT 226", "TELOPT 227"
+ , "TELOPT 228", "TELOPT 229", "TELOPT 230", "TELOPT 231"
+ , "TELOPT 232", "TELOPT 233", "TELOPT 234", "TELOPT 235"
+ , "TELOPT 236", "TELOPT 237", "TELOPT 238", "TELOPT 239"
+ , "TELOPT 240", "TELOPT 241", "TELOPT 242", "TELOPT 243"
+ , "TELOPT 244", "TELOPT 245", "TELOPT 246", "TELOPT 247"
+ , "TELOPT 248", "TELOPT 249", "TELOPT 250", "TELOPT 251"
+ , "TELOPT 252", "TELOPT 253", "TELOPT 254", "EXOPL"
+};
+#endif
+
+#endif /* __DRIVER_SOURCE__ */
+
+/* sub-option qualifiers */
+#define TELQUAL_IS 0 /* option is... */
+#define TELQUAL_SEND 1 /* send option */
+
+/*
+ * LINEMODE suboptions
+ */
+
+#define LM_MODE 1
+#define LM_FORWARDMASK 2
+#define LM_SLC 3
+
+#define MODE_EDIT 0x01
+#define MODE_TRAPSIG 0x02
+#define MODE_ACK 0x04
+
+#define MODE_MASK (MODE_EDIT|MODE_TRAPSIG|MODE_ACK)
+
+/* Not part of protocol, but needed to simplify things... */
+#define MODE_FLOW 0x0100
+#define MODE_ECHO 0x0200
+#define MODE_INBIN 0x0400
+#define MODE_OUTBIN 0x0800
+#define MODE_FORCE 0x1000
+
+#define SLC_SYNCH 1
+#define SLC_BRK 2
+#define SLC_IP 3
+#define SLC_AO 4
+#define SLC_AYT 5
+#define SLC_EOR 6
+#define SLC_ABORT 7
+#define SLC_EOF 8
+#define SLC_SUSP 9
+#define SLC_EC 10
+#define SLC_EL 11
+#define SLC_EW 12
+#define SLC_RP 13
+#define SLC_LNEXT 14
+#define SLC_XON 15
+#define SLC_XOFF 16
+#define SLC_FORW1 17
+#define SLC_FORW2 18
+
+#define NSLC 18
+
+#define SLC_NAMES "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
+ "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
+ "LNEXT", "XON", "XOFF", "FORW1", "FORW2"
+
+#define SLC_NOSUPPORT 0
+#define SLC_CANTCHANGE 1
+#define SLC_VARIABLE 2
+#define SLC_DEFAULT 3
+#define SLC_LEVELBITS 0x03
+
+#define SLC_FUNC 0
+#define SLC_FLAGS 1
+#define SLC_VALUE 2
+
+#define SLC_ACK 0x80
+#define SLC_FLUSHIN 0x40
+#define SLC_FLUSHOUT 0x20
+
+#endif /* TELNET_H__ */
diff --git a/sys/temp/std_headers.h b/sys/temp/std_headers.h
new file mode 100644
index 0000000..f96080e
--- /dev/null
+++ b/sys/temp/std_headers.h
@@ -0,0 +1,15 @@
+#ifndef _STD_HEADERS_
+#define _STD_HEADERS_
+
+//LANGUAGE
+void SetArticle( int fl );
+static int QueryAFlag();
+public varargs string QueryArticle( int casus, int dem, int force );
+public varargs int SuggestArticle( string myname );
+public varargs string QueryPossPronoun( int what, int casus, int number );
+public string QueryPronoun( int casus );
+public varargs string QueryDu(int casus,int gender,int zahl);
+public string QueryGenderString();
+public varargs string DeclAdj( string adj, int casus, int demon );
+
+#endif
diff --git a/sys/temp/util.h b/sys/temp/util.h
new file mode 100644
index 0000000..b3fd23d
--- /dev/null
+++ b/sys/temp/util.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// sys/thing/util.h -- Headerfile fuer /std/thing/util.c
+//
+// $Id: util.h,v 1.1 2000/08/15 12:07:30 Paracelsus Exp $
+
+#ifndef __THING_UTIL_H__
+#define __THING_UTIL_H__
+
+#endif // __THING_UTIL_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_UTIL_H_PROTO__
+#define __THING_UTIL_H_PROTO__
+
+public void ShowPropList(string *props);
+static void PrettyDump(mixed x);
+static void DumpArray(mixed *x);
+static void DumpMapping(mapping x);
+static void DumpKeyValPair(mapping x, mixed key, int size);
+
+#endif // __THING_UTIL_H_PROTO__
+
+#endif // NEED_PROTOTYPES
\ No newline at end of file
diff --git a/sys/terminal.h b/sys/terminal.h
new file mode 100644
index 0000000..903af6d
--- /dev/null
+++ b/sys/terminal.h
Binary files differ
diff --git a/sys/thing.h b/sys/thing.h
new file mode 100644
index 0000000..e478014
--- /dev/null
+++ b/sys/thing.h
@@ -0,0 +1,19 @@
+// MorgenGrauen MUDlib
+//
+// thing.h -- standard thing definitions
+//
+// $Id: thing.h,v 3.5 2004/05/20 19:00:12 Vanion Exp $
+
+#ifndef __THING_H__
+#define __THING_H__
+
+#include "/sys/thing/commands.h"
+#include "/sys/thing/description.h"
+#include "/sys/thing/language.h"
+#include "/sys/thing/properties.h"
+#include "/sys/thing/moving.h"
+#include "/sys/thing/restrictions.h"
+#include "/sys/thing/material.h"
+#include "/sys/thing/lighttypes.h"
+
+#endif
diff --git a/sys/thing/commands.h b/sys/thing/commands.h
new file mode 100644
index 0000000..2bb876d
--- /dev/null
+++ b/sys/thing/commands.h
@@ -0,0 +1,41 @@
+// MorgenGrauen MUDlib
+//
+// thing/commands.h -- command handling header
+//
+// $Id: commands.h 8707 2014-02-23 22:38:34Z Zesstra $
+
+#ifndef __THING_COMMANDS_H__
+#define __THING_COMMANDS_H__
+
+// properties
+
+#define P_COMMANDS "commands"
+
+#endif // __THING_COMMANDS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_COMMANDS_H_PROTO__
+#define __THING_COMMANDS_H_PROTO__
+
+// prototypes
+
+// add commands to the command list of the object
+varargs void AddCmd(mixed cmd, mixed func, mixed flag, mixed cmdid);
+
+// remove a command
+varargs int RemoveCmd(mixed cmd, int del_norule, mixed onlyid);
+// Set- und Query-Methoden
+static mapping _set_commands(mapping commands);
+static mapping _query_commands();
+
+
+// internal
+static int _execute(mixed fun, string str, mixed *parsed);
+static int _process_command(string str, string *noparsestr,mixed fun, mixed flag, mixed rule);
+
+public int _cl(string str);
+
+#endif // __THING_COMMANDS_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/thing/description.h b/sys/thing/description.h
new file mode 100644
index 0000000..029f445
--- /dev/null
+++ b/sys/thing/description.h
@@ -0,0 +1,128 @@
+// MorgenGrauen MUDlib
+//
+// thing/description.h -- header
+//
+// $Id: description.h 9208 2015-05-10 20:54:06Z Zesstra $
+// MorgenGrauen MUDlib
+//
+// thing/description.h -- header
+//
+// $Id: description.h 9208 2015-05-10 20:54:06Z Zesstra $
+
+#ifndef __THING_DESCRIPTION_H__
+#define __THING_DESCRIPTION_H__
+
+// properties
+#define P_NAME "name" // name of the object
+#define P_NAME_ADJ "name_adj" // adjective of the name
+#define P_SHORT "short" // short desciption of the object
+#define P_LONG "long" // long description of the object
+#define P_IDS "ids" // identifier of the object
+#define P_ADJECTIVES "adjectives" // adjectives of the object
+#define P_SHOW_INV "show_inv" // Show in inventory of player
+#define P_CLASS "class" // class, like undead or explosive
+
+#define P_KILL_MSG "kill_msg"
+#define P_KILL_NAME "kill_name"
+
+#define P_HEAL "heal"
+#define P_COMBATCMDS "combatcmds"
+
+#define P_VALUE "value"
+#define P_NOBUY "nobuy"
+#define P_NOSELL "nosell"
+#define P_MAGIC "magic"
+#define P_NOMAGIC "nomagic"
+
+#define P_LOG_FILE "log_file" // bugs in anderes repfile umleiten
+
+#define P_LIGHT "light"
+#define P_TOTAL_LIGHT "total_light"
+
+#define P_CURSED "cursed"
+#define P_KEEP_ON_SELL "keep_on_sell"
+
+#define P_CLONER "cloner"
+#define P_CLONE_TIME "clone_time"
+
+/* read_msg ist auch fuer nicht fernwest-kundige lesbar */
+#define P_READ_MSG "read_msg"
+#define P_FW_ALWAYS_READABLE "fw_always_readable"
+#define P_DETAILS "details"
+#define P_SPECIAL_DETAILS "special_details"
+#define P_READ_DETAILS "read_details"
+#define P_SMELLS "smell_details"
+#define P_SOUNDS "sound_details"
+#define P_TOUCH_DETAILS "p_lib_touch_details"
+#ifndef P_INVIS
+#define P_INVIS "invis"
+#endif
+
+#define SENSE_DEFAULT "\ndefault"
+#define SENSE_VIEW 0
+#define SENSE_SMELL 1
+#define SENSE_SOUND 2
+#define SENSE_TOUCH 3
+#define SENSE_READ 4
+
+#endif // __THING_DESCRIPTION_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_DESCRIPTION_H_PROTO__
+#define __THING_DESCRIPTION_H_PROTO__
+
+// prototypes
+// check if the objects can by identified by str
+varargs int id(string str, int lvl);
+
+// check IDs vs. string*
+int match_ids(string *list);
+
+// add an id to the current object
+void AddId(string|string* str);
+
+// remove an id from the object
+void RemoveId(string|string* str);
+
+// add an adjective to describe the object
+void AddAdjective(string|string* str);
+
+// remove an adjective from the object
+void RemoveAdjective(string|string* str);
+
+// get the name with casus and demonstrative
+varargs string name(int casus, int demon);
+varargs string Name(int casus, int demon);
+
+// check if object is member of a class
+int is_class_member(string|string* str);
+
+// add object to a class
+void AddToClass(string str);
+
+// add a detail to object
+public void AddDetail( string|string* keys, string|string*|mapping|closure descr );
+public void AddReadDetail( string|string* keys, string|string*|mapping|closure descr );
+public void AddSmells( string|string* keys, string|string*|mapping|closure descr );
+public void AddSounds( string|string* keys, string|string*|mapping|closure descr );
+public void AddTouchDetail( string|string* keys, string|string*|mapping|closure descr );
+
+// remove a detail from object
+public varargs void RemoveDetail( string|string* keys );
+public varargs void RemoveSmells( string|string* keys );
+public varargs void RemoveSounds( string|string* keys );
+public varargs void RemoveReadDetail( string|string* keys );
+public varargs void RemoveTouchDetail( string|string* keys );
+
+// add a special detail to object
+void AddSpecialDetail(string|string* keys, string functionname );
+
+// remove a special detail to object
+void RemoveSpecialDetail( string|string* keys );
+
+static void GiveEP(int type, string key);
+
+#endif // __THING_DESCRIPTION_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/thing/language.h b/sys/thing/language.h
new file mode 100644
index 0000000..51afd86
--- /dev/null
+++ b/sys/thing/language.h
@@ -0,0 +1,79 @@
+// MorgenGrauen MUDlib
+//
+// thing/language.h -- language handling
+//
+// $Id: language.h 6330 2007-05-26 17:53:21Z Zesstra $
+
+#ifndef __THING_LANGUAGE_H__
+#define __THING_LANGUAGE_H__
+
+// properties
+#define P_ARTICLE "article"
+#define P_GENDER "gender"
+#define P_PLURAL "plural"
+
+// special defines
+
+#define WER 0
+#define WESSEN 1
+#define WEM 2
+#define WEN 3
+#define RAW 99 // name without article
+
+#define NEUTER 0
+#define MALE 1
+#define FEMALE 2
+
+#define SINGULAR 0
+#define PLURAL 1
+
+#endif // __THING_LANGUAGE_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_LANGUAGE_H_PROTO__
+#define __THING_LANGUAGE_H_PROTO__
+
+// prototypes
+
+// Artikel im passenden Fall sowie demonst. bzw undemonst. zurueck-
+// geben. force ueberschreibt das SetArticle-Flag.
+public varargs string QueryArticle(int casus, int dem, int force);
+
+// Empfehle einen Artikel fuer das Objekt, getestet wird, ob ausser
+// diesem Objekt sich ein anderes Objekt mit der id im selben
+// Raum befindet.
+public varargs int SuggestArticle(string id);
+
+// Gib ein Pronomen zurueck, welches ausdrueckt, das ein Objekt diesem
+// Objekt gehoert. Dabei ist what das Geschlecht des Objektes.
+public varargs string QueryPossPronoun(mixed what, int casus, int number);
+
+// Er/Sie/Es u.ae. zurueckgeben.
+public varargs string QueryPronoun(int casus);
+
+// Du im passenden Fall zurueckgeben.
+public varargs string QueryDu(int casus,int gender, int zahl);
+
+// Geschlecht in Worten zurueckgeben (maennlich, weiblich, saechlich)
+public string QueryGenderString();
+
+// Deklination eines Adjektivs
+public varargs string DeclAdj(mixed adj, int casus, int demon);
+
+// Query- und Set-Methoden
+static int _set_article(int fl);
+static int _query_article();
+static int _set_gender(int i);
+
+// Interna
+static int QueryAFlag();
+
+#endif // __THING_LANGUAGE_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
+
+
+
+
diff --git a/sys/thing/lighttypes.h b/sys/thing/lighttypes.h
new file mode 100644
index 0000000..dae95d5
--- /dev/null
+++ b/sys/thing/lighttypes.h
@@ -0,0 +1,83 @@
+// MorgenGrauen MUDlib
+//
+// lighttypes.h -- Welche Typen von Licht gibt es im MorgenGrauen?
+//
+// $Id: lighttypes.h,v 1.2 2004/06/12 14:00:48 Vanion Exp $
+
+#ifndef __THING_LIGHTTYPES_H__
+#define __THING_LIGHTTYPES_H__
+
+#define P_LIGHT_TYPE "light_type" // Welches Licht herrscht hier vor?
+
+// Mode-Parameter fuer CheckLightType
+#define LT_CHECK_ANY 0
+#define LT_CHECK_ALL 1
+#define LT_CHECK_MATCH 2
+#define LT_CHECK_NONE 3
+
+// Basislichttypen
+#define LT_MISC 0 // Unbestimmt
+
+// Natuerliche Lichtquellen (Tag)
+#define LT_SUN 1 // Sonnenschein
+#define LT_DIFFUSE 2 // Indirektes Tageslicht
+
+// Natuerliche Lichtquellen (Nacht)
+#define LT_MOON 4 // Mondlicht
+#define LT_STARS 8 // Sternenlicht
+
+// Drei besonders oft vorkommende Typen offenen Lichts
+#define LT_CANDLE 16 // Kerzenlicht
+#define LT_TORCH 32 // Fackelschein
+#define LT_OPEN_FIRE 64 // Lagerfeuer etc.
+
+// Magische erzeugtes Leuchten, wird nicht naeher definiert.
+#define LT_MAGIC 128 // Magische Lichtquelle
+
+// Alles was so gluehen kann: Von Gluehbirne bis zu Phosphor
+#define LT_GLOWING 256 // Selbstleuchtende Lichtquellen
+
+// Ein Raum kann auch explizit auf Dunkel gesetzt werden.
+// Eine Mischung mit anderen Typen scheint aber wenig sinnvoll.
+#define LT_DARKNESS 512 // Dunkelheit
+
+// Gemischte Typen, sie dienen dazu, komfortabel Abfragen auf Lichttypen
+// zu implementieren. Beim setzen sollte immer besser auf die genaueren
+// Lichttypen zurueckgegriffen werden.
+
+// Tageslicht im allgemeinen
+#define LT_DAYLIGHT (LT_SUN|LT_DIFFUSE)
+
+// Da es verschiedene Typen offenen Feuers gibt, wird hier
+// noch ein Abfragetyp definiert.
+#define LT_FIRE (LT_CANDLE|LT_TORCH|LT_OPEN_FIRE)
+
+// Natuerliches Licht
+#define LT_NATURAL (LT_DAYLIGHT|LT_STARS|LT_MOON)
+
+// Kuenstliches Licht
+#define LT_ARTIFICIAL (LT_MAGIC|LT_FIRE|LT_GLOWING)
+
+#endif // _THING_LIGHTTYPES_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_LIGHTTYPES_H_PROTO__
+#define __THING_LIGHTTYPES_H_PROTO__
+
+// Diese Doku wird noch entfernt, wenn die Manpage erstellt worden ist.
+//
+// Eine Funktion, mit der das Abfagen eines oder mehrerer Lichttypen
+// moeglich ist, ist im std/thing/description definiert. Beispiel:
+//
+// thing->CheckLightType(LT_DAYLIGHT)
+// gibt true wenn ein Tageslichttyp gesetzt ist.
+//
+// thing->CheckLightType(LT_SUN|LT_MOON)
+// gibt true, wenn einer der beiden Himmelskoerper leuchtet.
+
+varargs int CheckLightType(int lighttype, int mode);
+
+#endif // __THING_LIGHTTYPES_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/thing/material.h b/sys/thing/material.h
new file mode 100644
index 0000000..927969a
--- /dev/null
+++ b/sys/thing/material.h
@@ -0,0 +1,32 @@
+// MorgenGrauen MUDlib
+//
+// thing/material.h -- material handling header
+//
+// $Id: material.h 6930 2008-08-09 09:20:16Z Zesstra $
+
+#ifndef __THING_MATERIAL_H__
+#define __THING_MATERIAL_H__
+
+#define P_MATERIAL "material"
+#define MATERIALDB "/secure/materialdb"
+#define P_MATERIAL_KNOWLEDGE "material_knowledge"
+#define MATERIAL_SYMMETRIC_RECOGNIZABILITY "mat_sym_recoc"
+
+// Materialien nicht beim Laden durch MatDB includen
+// TODO: besser recoc-propertydefinitionen woanders rein und Materialien hier
+// immer includen
+#ifndef _SKIP_MATERIALS_
+#include <materials.h>
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __THING_MATERIAL_H_PROTO__
+#define __THING_MATERIAL_H_PROTO__
+
+int QueryMaterial(string mat);
+int QueryMaterialGroup(string matgroup);
+string MaterialList(int casus, mixed idinf);
+
+#endif // __THING_MATERIAL_H_PROTO__
+#endif // NEED_PROTOTYPES
+#endif // __THING_MATERIAL_H__
diff --git a/sys/thing/moving.h b/sys/thing/moving.h
new file mode 100644
index 0000000..46e14a7
--- /dev/null
+++ b/sys/thing/moving.h
@@ -0,0 +1,43 @@
+// MorgenGrauen MUDlib
+//
+// thing/moving.h -- object moving
+//
+// $Id: moving.h 8892 2014-08-04 19:48:28Z Zesstra $
+
+#ifndef __THING_MOVING_H__
+#define __THING_MOVING_H__
+
+// properties
+#define P_NEVERDROP "neverdrop"
+#define P_NODROP "nodrop" // can't be dropped
+#define P_NOGET "noget" // can't be taken
+
+#define P_NOINSERT_MSG "noinsert_msg" // Fehlermeldung bei ME_CANT_BE_INSERTED
+#define P_NOLEAVE_MSG "noleave_msg" // Fehlermeldung bei ME_CANT_LEAVE_ENV
+#define P_ENV_TOO_HEAVY_MSG "env_too_heavy_msg" // Fehlermeldung bei ME_TOO_HEAVY_FOR_ENV
+#define P_TOO_MANY_MSG "too_many_msg" // Fehlermeldung bei ME_TOO_MANY_OBJECTS
+#define P_TOO_HEAVY_MSG "too_heavy_msg" // Fehlermeldung bei ME_TOO_HEAVY
+
+#define P_LAST_MOVE "last_move"
+#define P_LAST_CONTENT_CHANGE "last_content_change"
+
+#define P_SENSITIVE "sensitive" // should be registered as sensitive object
+
+
+#endif // __THING_MOVING_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_MOVING_H_PROTO__
+#define __THING_MOVING_H_PROTO__
+
+// prototypes
+// move the object from current position to dest using the method
+public varargs int move(object|string dest, int method);
+
+// remove the object return 1 for successful destruction
+public varargs int remove(int silent);
+
+#endif // __THING_MOVING_H_PROTO__
+
+#endif // // NEED_PROTOYPES
diff --git a/sys/thing/properties.h b/sys/thing/properties.h
new file mode 100644
index 0000000..1a59522
--- /dev/null
+++ b/sys/thing/properties.h
@@ -0,0 +1,63 @@
+// MorgenGrauen MUDlib
+//
+// thing/properties.h -- contains property definitions and prototypes
+//
+// $Id: properties.h,v 3.5 2003/08/07 15:09:33 Rikus Exp $
+
+#ifndef __THING_PROPERTIES_H__
+#define __THING_PROPERTIES_H__
+
+// special defines
+
+#define F_VALUE 0
+#define F_MODE 1
+#define F_SET_METHOD 2
+#define F_QUERY_METHOD 3
+#define F_MODE_AS 4
+#define F_MODE_AD 5
+
+#define SAVE 64
+#define PROTECTED 128 // only this_object() can change the values
+#define SECURED 256 // like PROTECTED, but never resetable
+#define NOSETMETHOD 512 // Keine Set-Methode => Nicht mofifizierbar
+#define SETMNOTFOUND 1024 // Keine Set-Methode gefunden
+#define QUERYMNOTFOUND 2048 // Keine Query-Methode gefunden
+#define QUERYCACHED 4096
+#define SETCACHED 8192
+
+#endif // __THING_PROPERTIES_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_PROPERTIES_H_PROTO__
+#define __THING_PROPERTIES_H_PROTO__
+
+// prototypes
+
+// (E)UID-Methods
+//static mixed _query_uid();
+//static mixed _query_euid();
+
+// Property-Initialisation
+protected void InitializeProperties();
+
+// direct property access
+public varargs mixed Set(string name, mixed Value, int Type, int extern);
+public varargs mixed Query(string name, int Type);
+
+// filtered property access
+public mixed SetProp(string name, mixed Value);
+public mixed QueryProp(string name);
+
+// global property handling
+public void SetProperties(mapping props);
+public mapping QueryProperties();
+
+// misc/interna
+public mixed *__query_properties();
+public void _set_save_data(mixed data);
+public mixed _get_save_data();
+
+#endif // __THING_PROPERTIES_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/thing/restrictions.h b/sys/thing/restrictions.h
new file mode 100644
index 0000000..ea14401
--- /dev/null
+++ b/sys/thing/restrictions.h
@@ -0,0 +1,27 @@
+// MorgenGrauen MUDlib
+//
+// thing/restrictions.h -- restrictions of the object (weight)
+//
+// $Id: restrictions.h,v 3.3 2000/08/15 12:29:20 Paracelsus Exp $
+
+#ifndef __THING_RESTRICTIONS_H__
+#define __THING_RESTRICTIONS_H__
+
+// properties
+#define P_WEIGHT "weight" // weight of an object
+#define P_TOTAL_WEIGHT "total_weight" // weight with all objects inside
+
+#endif // __THING_RESTRICTIONS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_RESTRICTIONS_H_PROTO__
+#define __THING_RESTRICTIONS_H_PROTO__
+
+static void _set_weight(int weight);
+static mapping _set_extern_attributes_modifier(mapping xmod);
+static mapping _set_extern_health_modifier(mapping xmod);
+
+#endif // __THING_RESTRICTIONS_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/thing/sockets.h b/sys/thing/sockets.h
new file mode 100644
index 0000000..a5a9cbb
--- /dev/null
+++ b/sys/thing/sockets.h
@@ -0,0 +1,79 @@
+// MorgenGrauen MUDlib
+/** @file
+ Konstanten, Prototypen und Properties fuer sockelbare Items.
+* Langbeschreibung...
+* @author Zesstra + Arathorn
+* @date xx.05.2008
+* @version $Id$
+*/
+
+/* Changelog:
+*/
+
+#ifndef _SOCKETS_H_
+#define _SOCKETS_H_
+
+/** Speichert die Sockel und deren Inhalt, die ein Item hat.
+ ([ TYP1: ({ITEM1, ITEM2}),
+ TYP2: ({-1}) ]) \n
+ ITEM1 = ([ P_SOCKET_PROPS,
+ BLUE_NAME: load_name(),
+ DESCRIPTION: name(WER) ])
+ @internal
+ */
+#define P_SOCKETS "_sockets"
+
+/** Speichert ein Mapping von Prop-Modifikatoren.
+ Die in diesem Mapping enthaltenen Props werden beim Einsetzen im Item mit
+ dem Sockel um den angegebenen Wert modifiziert.
+ */
+#define P_SOCKET_PROPS "_socket_props"
+
+/** Sockeltyp, in den das Item eingesetzt werden kann.
+ Alle anderen Sockel sind inkompatibel.
+ */
+#define P_SOCKET_TYPE "_socket_type"
+
+/** Einschraenkungen, denen der gesockelte Gegenstand nach dem Einsetzen
+ zusaetzlich unterliegt.
+ Wird P_RESTRICTIONS hinzugefuegt. Mapping a la P_RESTRICTIONS.
+ */
+#define P_SOCKET_RESTR_USE "_socket_restr_use"
+
+/** Einschraenkungen, denen das Lebewesen unterliegt, welches das Item in
+ den Sockel einbauen soll/will.
+ Mapping a la P_RESTRICTIONS.
+ */
+#define P_SOCKET_RESTR_MOUNT "_socket_restr_mount"
+
+// Sockeltypen
+// TODO: gueltige Sockeltypen definieren festlegen, welche Props sie aendern
+// duerfen.
+#define VALID_SOCKET_TYPES ({})
+
+// Rueckgabewerte
+#define SOCKET_OK 1
+#define SOCKET_NO_OBJECT -1
+#define SOCKET_NO_DATA -2
+#define SOCKET_INVALID_TYPE -3
+#define SOCKET_NO_SOCKETS -4
+#define SOCKET_NONE_AVAILABLE -5
+#define SOCKET_NO_EXPERTISE -6
+#define SOCKET_ITEM_INUSE -7
+
+// sym. Konstante fuer freien Sockel
+#define SOCKET_FREE -1
+
+#endif // _SOCKETS_H_
+
+#ifdef NEED_PROTOTYPES
+#ifndef _SOCKETS_H_PROTOTYPES_
+#define _SOCKETS_H_PROTOTYPES_
+// public Interface
+public int MountSocketItem(object item);
+public int TestSocketItem(object item);
+public mixed GetSocketInfo();
+
+#endif // _SOCKETS_H_PROTOTYPES_
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/thing/util.h b/sys/thing/util.h
new file mode 100644
index 0000000..053f499
--- /dev/null
+++ b/sys/thing/util.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// sys/thing/util.h -- Headerfile fuer /std/thing/util.c
+//
+// $Id: util.h 4707 2006-09-23 10:18:15Z root $
+
+#ifndef __THING_UTIL_H__
+#define __THING_UTIL_H__
+
+#endif // __THING_UTIL_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_UTIL_H_PROTO__
+#define __THING_UTIL_H_PROTO__
+
+public void ShowPropList(string *props);
+static void PrettyDump(mixed x);
+static void DumpArray(mixed *x);
+static void DumpMapping(mapping x);
+static void DumpKeyValPair(mapping x, mixed key, int size);
+
+#endif // __THING_UTIL_H_PROTO__
+
+#endif // NEED_PROTOTYPES
\ No newline at end of file
diff --git a/sys/time.h b/sys/time.h
new file mode 100644
index 0000000..9bea657
--- /dev/null
+++ b/sys/time.h
@@ -0,0 +1,18 @@
+#ifndef LPC_TIME_H_
+#define LPC_TIME_H_ 1
+
+/* Indices into the array returned from gmtime() and localtime(). */
+
+#define TM_SEC 0 /* Seconds (0..59) */
+#define TM_MIN 1 /* Minutes (0..59) */
+#define TM_HOUR 2 /* Hours (0..23) */
+#define TM_MDAY 3 /* Day of the month (1..31) */
+#define TM_MON 4 /* Month of the year (0..11) */
+#define TM_YEAR 5 /* Year (e.g. 2001) */
+#define TM_WDAY 6 /* Day of the week (Sunday = 0) */
+#define TM_YDAY 7 /* Day of the year (0..365) */
+#define TM_ISDST 8 /* TRUE: Daylight saving time */
+
+#define TM_MAX 9 /* Number of entries in the array */
+
+#endif /* LPC_TIME_H_ */
diff --git a/sys/tls.h b/sys/tls.h
new file mode 100644
index 0000000..39b50ec
--- /dev/null
+++ b/sys/tls.h
@@ -0,0 +1,86 @@
+#ifndef LPC_TLS_H
+#define LPC_TLS_H
+
+/* Field indices for the result of tls_query_connection_info() */
+
+#define TLS_CIPHER 0
+#define TLS_COMP 1
+#define TLS_KX 2
+#define TLS_MAC 3
+#define TLS_PROT 4
+
+#define TLS_INFO_MAX 5 /* Total number of result fields */
+
+/* Interpretation of the cipher information */
+
+#define TLS_CIPHER_TABLE ({ \
+"TLS_CIPHER_NONE", \
+"TLS_CIPHER_NULL", \
+"TLS_CIPHER_ARCFOUR_128", \
+"TLS_CIPHER_3DES_CBC", \
+"TLS_CIPHER_RIJNDAEL_128_CBC", \
+"TLS_CIPHER_RIJNDAEL_256_CBC", \
+"TLS_CIPHER_ARCFOUR_40" \
+})
+
+#define TLS_CIPHER_NAME(x) TLS_CIPHER_TABLE[(x)]
+
+/* Interpretation of the key-exchange information */
+
+#define TLS_KX_TABLE ({ \
+"TLS_KX_NONE", \
+"TLS_KX_RSA", \
+"TLS_KX_DHE_DSS", \
+"TLS_KX_DHE_RSA", \
+"TLS_KX_ANON_DH", \
+"TLS_KX_SRP", \
+"TLS_KX_RSA_EXPORT", \
+"TLS_KX_SRP_RSA", \
+"TLS_KX_SRP_DSS" \
+})
+
+#define TLS_KX_NAME(x) TLS_KX_TABLE[(x)]
+
+/* Interpretation of the MAC information */
+
+#define TLS_MAC_TABLE ({ \
+"TLS_MAC_NONE", \
+"TLS_MAC_NULL", \
+"TLS_MAC_MD5", \
+"TLS_MAC_SHA" \
+})
+
+#define TLS_MAC_NAME(x) TLS_MAC_TABLE[(x)]
+
+/* Interpretation of the compression information */
+
+#define TLS_COMP_TABLE ({ \
+"TLS_COMP_NONE", \
+"TLS_COMP_NULL", \
+"TLS_COMP_ZLIB", \
+"TLS_COMP_LZO" \
+})
+
+#define TLS_COMP_NAME(x) TLS_COMP_TABLE[(x)]
+
+/* Interpretation of the protocol information */
+
+#define TLS_PROT_TABLE ({ \
+"TLS_PROT_NONE", \
+"TLS_PROT_SSL3", \
+"TLS_PROT_TLS1" \
+})
+
+#define TLS_PROT_NAME(x) TLS_PROT_TABLE[(x)]
+
+/* Recognized hash() algorithms (not all may be supported at runtime) */
+
+#define TLS_HASH_SHA1 (1)
+#define TLS_HASH_SHA224 (2)
+#define TLS_HASH_SHA256 (3)
+#define TLS_HASH_SHA384 (4)
+#define TLS_HASH_SHA512 (5)
+#define TLS_HASH_MD5 (6)
+#define TLS_HASH_RIPEMD160 (7)
+
+#endif /* LPC_TLS_H */
diff --git a/sys/trace.h b/sys/trace.h
new file mode 100644
index 0000000..9c1c473
--- /dev/null
+++ b/sys/trace.h
@@ -0,0 +1,18 @@
+#ifndef LPC_TRACE_H_
+#define LPC_TRACE_H_
+
+/* Argument values for the trace() efun.
+ */
+
+#define TRACE_NOTHING 0 /* Stop tracing */
+
+#define TRACE_CALL 1 /* Trace all lfun calls */
+#define TRACE_CALL_OTHER 2 /* Trace inter-object calls */
+#define TRACE_RETURN 4 /* Trace function returns */
+#define TRACE_ARGS 8 /* Print function arguments and results */
+#define TRACE_EXEC 16 /* Trace all executed instructions */
+#define TRACE_HEART_BEAT 32 /* Trace heartbeat code */
+#define TRACE_APPLY 64 /* Trace (internal) applies */
+#define TRACE_OBJNAME 128 /* Print the object names */
+
+#endif /* LPC_TRACE_H_ */
diff --git a/sys/transport.h b/sys/transport.h
new file mode 100644
index 0000000..d9ac735
--- /dev/null
+++ b/sys/transport.h
@@ -0,0 +1,29 @@
+// MorgenGrauen MUDlib
+//
+// transport.h -- Definitionen fuer Schiffe und andere Transporter
+//
+// $Id: transport.h,v 3.3 2002/02/09 11:56:59 Tilly Exp $
+
+#ifndef _TRANSPORT_H_
+#define _TRANSPORT_H_
+
+#define P_ENTERMSG "entermsg"
+#define P_LEAVEMSG "leavemsg"
+#define P_LEAVEFAIL "leavefail"
+#define P_ENTERFAIL "enterfail"
+#define P_ARRIVEMSG "arrivemsg"
+#define P_DEPARTMSG "departmsg"
+#define P_ENTERCMDS "entercmds"
+#define P_LEAVECMDS "leavecmds"
+#define P_MAX_PASSENGERS "maxpass"
+
+#define P_TRAVEL_INFO "travel_info"
+#define P_NO_TRAVELING "no_traveling"
+#define P_TRAVEL_CMDS "travel_cmds"
+#define P_HARBOUR "harbour_name"
+
+#define HP_MSG "hpMsg"
+#define HP_ROOM "hpRoom"
+#define HP_FUN "hpFun"
+
+#endif
diff --git a/sys/udp.h b/sys/udp.h
new file mode 100644
index 0000000..a2f74c0
--- /dev/null
+++ b/sys/udp.h
@@ -0,0 +1,98 @@
+// MorgenGrauen MUDlib
+//
+// udp.h -- Definitionen fuers udp
+//
+// $Id: udp.h 9503 2016-02-23 18:27:45Z Zesstra $
+
+#ifndef _UDP_H
+#define _UDP_H
+
+/* --- User Configuration. --- */
+
+#include "/secure/config.h"
+#include <driver_info.h>
+
+#define INETD "/secure/inetd"
+#define UDP_CMD_DIR "/secure/udp/"
+
+#if !defined(__TESTMUD__) && MUDNAME=="MorgenGrauen"
+# define HOST_FILE "/etc/INETD_HOSTS"
+#else
+# define HOST_FILE "/etc/INETD_HOSTS.TESTMUD"
+#endif
+
+#define INETD_LOG_FILE "INETD"
+
+#define REPLY_TIME_OUT 12
+#define RETRIES 2
+
+/* #define LOCAL_NAME SECURITY->get_mud_name() // CD */
+#if (__HOST_NAME__==MUDHOST)
+#define LOCAL_NAME MUDNAME
+#else
+#define LOCAL_NAME "MG-Test-"+__HOST_NAME__
+#endif
+
+/* #define LOCAL_UDP_PORT SECURITY->do_debug("udp_port"); // CD */
+#define LOCAL_UDP_PORT driver_info(DI_UDP_PORT)
+
+/* If you are running another intermud system concurrently and there is a
+ * clash with the udp.h filename, rename the old udp.h file as appropriate
+ * and include this line. */
+/* #include <cdudp.h> // CD */
+
+/* Include these definitions for CD muds. */
+/* #define CDLIB */
+/* #define CD_UDP "/d/Standard/obj/udp" */
+
+/* --- End of config. --- */
+
+#define INETD_DIAGNOSTICS
+
+#define INETD_VERSION "0.7a"
+
+/* --- Standard header macros. --- */
+
+#define RECIPIENT "RCPNT"
+#define REQUEST "REQ"
+#define SENDER "SND"
+/* The DATA field should be used to store the main body of any packet. */
+#define DATA "DATA"
+
+/* These headers are reserved for system use only. */
+#define HOST "HST"
+#define ID "ID"
+#ifndef NAME
+#define NAME "NAME"
+#endif
+#define PACKET "PKT"
+#define UDP_PORT "UDP"
+#define SYSTEM "SYS"
+
+/* Reserved headers for diagnostics. */
+#define PACKET_LOSS "PKT_LOSS"
+#define RESPONSE_TIME "TIME"
+
+/* --- Standard REQUEST macros. --- */
+
+#define PING "ping"
+#define QUERY "query"
+#define REPLY "reply"
+
+/* --- Standard SYSTEM macros. --- */
+
+#define FAILED "F"
+#define REPEAT "R"
+#define TIME_OUT "TO"
+#define UNAVAILABLE "U"
+
+/* --- Index macros for host arrays. --- */
+
+#define HOST_NAME 0
+#define HOST_IP 1
+#define HOST_UDP_PORT 2
+#define LOCAL_COMMANDS 3
+#define HOST_COMMANDS 4
+#define HOST_STATUS 5
+
+#endif
diff --git a/sys/udp_language.h b/sys/udp_language.h
new file mode 100644
index 0000000..c003023
--- /dev/null
+++ b/sys/udp_language.h
@@ -0,0 +1,64 @@
+// Konfigurationsdatei fuer die Sprachausgabe des INETD
+
+#ifndef __UDP_LANG_H__
+#define __UDP_LANG_H__
+
+// ***
+// *** inetd.c
+// ***
+
+#define INETD_INV_ACCESS_MSG "%s: Illegaler Zugriff auf die x-Funktion.\n"
+// time function
+
+// ***
+// *** channel.c
+// ***
+
+#define INETD_INV_CHAN_MSG "\n%s: %s@%s versucht, auf Kanal \'%s\' zu senden.\n"
+// time who mud channel
+#define INETD_NO_SUCH_CHAN "[Root@%s] Es gibt hier keinen Intermud-Kanal %s.\n"
+// mud channel
+#define INETD_CHAN_LISTEN "[%s@%s] Auf dem Kanal befinde%s sich: %s\n"
+// channel mud plural names
+#define INETD_CHAN_NO_LIST \
+ "[%s@%s] Es befindet sich niemand auf diesem Kanal.\n"
+// channel mud
+#define INETD_CHAN_NO_HIST "[%s@%s] Es ist keine Geschichte verfuegbar.\n"
+// channel mud
+#define INETD_CHAN_HIST "[%s@%s] History:\n"
+// channel mud
+
+// ***
+// *** locate.c
+// ***
+
+// ***
+// *** man.c
+// ***
+
+#define INETD_MANPAGE_FOUND "[ManD@%s] Folgende Seite wurde gefunden: %s\n"
+// mud file
+#define INETD_NO_MANPAGE "[ManD@%s] Keine Hilfeseite gefunden fuer '%s'.\n"
+// mud page
+#define INETD_MANPAGES "[ManD@%s] Die folgenden Seiten passen:\n" \
+ "%'-'78.78s\n%s%'-'78.78s\n"
+// mud "" pagelist ""
+#define INETD_MAN_REQUESTED "%s@%s: Abfrage abgeschickt.\n"
+// page mud
+
+// ***
+// *** newhost.c
+// ***
+
+
+// ***
+// *** query.c
+#define INETD_QUERY_REQUESTED "%s@%s: Abfrage abgeschickt.\n"
+// ***
+
+
+// ***
+// *** reply.c
+// ***
+
+#endif // __UDP_LANG_H__
diff --git a/sys/udp_mail.h b/sys/udp_mail.h
new file mode 100644
index 0000000..fe76232
--- /dev/null
+++ b/sys/udp_mail.h
@@ -0,0 +1,52 @@
+// MorgenGrauen MUDlib
+//
+// udp_mail.h -- Post per udp
+//
+// $Id: udp_mail.h,v 3.1 1997/02/12 13:04:59 Wargon Exp $
+
+/*
+ * VERSION 1.0
+ * Include file for the UDP MAIL system (Author: Alvin@Sushi)
+ * Requires INETD V0.60 or higher (INETD Author: Nostradamus@Zebedee)
+ */
+
+/*
+ * Your local mail delivery system
+ * Needs to have the following functions :-
+ * void deliver_mail(string to,string from,string subjct,string mail_body)
+ * int query_recipient_ok(string name)
+ */
+#define LOCAL_MAILER "/secure/mailer"
+
+/*
+ * The directory in which mail is kept if the initial attempt times out
+ * The mail will be recent every UDPM_RETRY_SEND minutes until
+ * UDPM_SEND_FAIL minutes have passed
+ * NOTE: UDPM_SPOOL_DIR must end with / and must be writable
+ */
+#define UDPM_SPOOL_DIR "mail/spool/"
+
+/* The following two times are in MINUTES */
+#define UDPM_RETRY_SEND 30
+#define UDPM_SEND_FAIL 1440 /* 24 Hours */
+
+/* PLEASE DO NOT ALTER THE FOLLOWING */
+
+#define UDPM_WRITER "udpm_writer"
+#define UDPM_SUBJECT "udpm_subject"
+#define UDPM_STATUS "udpm_status"
+#define UDPM_SPOOL_NAME "udpm_spool_name"
+
+#define UDPM_STATUS_TIME_OUT 0
+#define UDPM_STATUS_DELIVERED_OK 1
+#define UDPM_STATUS_UNKNOWN_PLAYER 2
+#define UDPM_STATUS_IN_SPOOL 3
+
+/* things to do with the spool directory */
+
+#define UDPMS_TIME "udpm_spool_time"
+#define UDPMS_TO "udpm_spool_to"
+#define UDPMS_DEST "udpm_spool_dest"
+#define UDPMS_FROM "udpm_spool_from"
+#define UDPMS_SUBJECT "udpm_spool_subject"
+#define UDPMS_BODY "udpm_spool_body"
diff --git a/sys/unit.h b/sys/unit.h
new file mode 100644
index 0000000..27a8a2c
--- /dev/null
+++ b/sys/unit.h
@@ -0,0 +1,86 @@
+// MorgenGrauen MUDlib
+//
+// unit.h -- Defines fuer Units
+//
+// $Id: unit.h 9017 2015-01-10 19:20:14Z Zesstra $
+
+#ifndef _UNIT_H_
+#define _UNIT_H_
+
+#define P_UNIT_DECAY_INTERVAL "unit_decay_interval"
+#define P_UNIT_DECAY_QUOTA "unit_decay_quota"
+#define P_UNIT_DECAY_FLAGS "unit_decay_flags"
+#define P_UNIT_DECAY_MIN "unit_decay_min"
+
+// Flags fuer P_UNIT_DECAY_FLAGS
+// verhindert das Zerfallen einzelner Unit-Objekte.
+#define NO_DECAY 0x1
+// kein Decay bis zum ersten move() von einem Env in ein Env. (d.h. das erste
+// move() in ein Env (Clonen im create vom NPC) ist unberuecksichtigt.)
+#define NO_DECAY_UNTIL_MOVE 0x2
+// ungenaueren Zerfall benutzt, dabei aber immer min. eine Einheit zerfallen
+// lassen.
+#define INACCURATE_DECAY 0x4
+// kein prozentualer Zerfall, sondern P_UNIT_DECAY_QUOTA gibt eine abs. Menge
+// an Einheiten an.
+#define ABSOLUTE_DECAY 0x8
+
+#define U_GPU "u_gpu"
+#define U_CPU "u_cpu"
+#define U_IDS "u_ids"
+#define U_REQ "u_req"
+
+#define IS_EQUAL(x) (objectp(x) && (IsEqual(x) && x->IsEqual(ME)))
+
+#endif // _UNIT_H_
+
+#ifdef NEED_PROTOTYPES
+#ifndef _UNIT_H_PROTYPES_
+#define _UNIT_H_PROTYPES_
+// public functions
+varargs int id(string str,int lvl);
+ int IsEqual(object ob);
+ int IsUnit();
+varargs int move(object|string dest, int method);
+ int *QueryCoinsPerUnits();
+ int *QueryGramsPerUnits();
+varargs int remove(int silent);
+varargs string long();
+varargs string|<string>* name(int fall, int demo);
+varargs string QueryPronoun(int casus);
+ string short();
+ void AddAmount(int am);
+ void AddPluralId(mixed str);
+ void AddSingularId(mixed str);
+ void RemovePluralId(mixed str);
+ void RemoveSingularId(mixed str);
+ void reset();
+ void SetCoinsPerUnits(int coins,int units);
+ void SetGramsPerUnits(int grams,int units);
+public int DoDecay(int silent);
+
+// internal functions
+static void check_leave();
+protected void DoDecayMessage(int oldamount, int zerfall);
+
+// Query- und Set-Methoden
+static int _query_plural();
+static int _query_total_weight();
+static int _query_u_req();
+static int _query_value();
+static int _query_weight();
+static string|string* _query_name();
+static int _set_amount(int am);
+static string|string* _set_name(mixed names);
+static int _set_weight(int num);
+static int _set_value(int num);
+static int _query_unit_decay_interval();
+static int _set_unit_decay_interval(int zeit);
+static int _query_unit_decay_quota();
+static int _set_unit_decay_quota(int quota);
+static int _query_unit_decay_min();
+static int _query_unit_decay_flags();
+
+#endif // _UNIT_H_PROTYPES_
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/userinfo.h b/sys/userinfo.h
new file mode 100644
index 0000000..05548be
--- /dev/null
+++ b/sys/userinfo.h
@@ -0,0 +1,53 @@
+// MorgenGrauen MUDlib
+//
+// userinfo.h -- Daten im Spieler-Cache (siehe /secure/master/userinfo.c)
+//
+// $Id: userinfo.h 6207 2007-02-18 23:32:35Z Zesstra $
+
+#ifndef _USERINFO_
+#define _USERINFO_
+
+/*
+ * userinfo: what each field of /secure/PASSWD is
+ */
+
+/* password (encrypted) */
+#define USER_PASSWORD 0
+
+/* wizard level (or programming level) (0 for simple users) */
+#define USER_LEVEL 1
+
+/* domain (if any) master == *domainname */
+#define USER_DOMAIN 2
+
+/* player object to be loaded by /secure/login */
+#define USER_OBJECT 3
+
+/* time of first login */
+#define USER_CREATION_DATE 4
+
+/* Time userinfo has been touched last */
+#define USER_TOUCH 5
+
+/* exploration points of player */
+#define USER_EP 6
+
+/* npcs killed by player */
+#define USER_EK 7
+
+/* miniquests solved by player */
+#define USER_MQ 8
+
+/* guilds (if any) master == *guildname */
+#define USER_GUILD 9
+
+/* tips for eks given to player */
+#define USER_EKTIPS 10
+
+/* tips for fps given to player */
+#define USER_FPTIPS 11
+
+/* UIDs fuer den ein Magier u.U. explizit verantwortlich ist */
+#define USER_UIDS_TO_TAKE_CARE 12
+
+#endif
diff --git a/sys/util.h b/sys/util.h
new file mode 100644
index 0000000..299f044
--- /dev/null
+++ b/sys/util.h
@@ -0,0 +1,15 @@
+// MorgenGrauen MUDlib
+//
+// util.h -- Header fuer /std/util/*.c
+//
+// $Id: util.h 6404 2007-08-06 20:31:22Z Zesstra $
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+varargs public void More(string txt, int file, mixed ctrl,
+ mixed ctrlargs, int flags);
+
+
+#endif // _UTIL_H
+
diff --git a/sys/util/ringbuffer.h b/sys/util/ringbuffer.h
new file mode 100644
index 0000000..150d004
--- /dev/null
+++ b/sys/util/ringbuffer.h
@@ -0,0 +1,28 @@
+// MorgenGrauen MUDlib
+//
+// ringbuffer.h -- Header fuer /std/util/ringbuffer.c
+//
+// $Id: util.h 6404 2007-08-06 20:31:22Z Zesstra $
+
+#ifndef _RINGBUFFER_H
+#define _RINGBUFFER_H
+
+#define MODE_FIFO 1
+#define MODE_LIFO 2
+
+#endif // _RINGBUFFER_H
+
+#ifndef _RINGBUFFER_H_IMPLEMENTATION
+#ifdef NEED_PROTOTYPES
+
+#define _RINGBUFFER_H_IMPLEMENTATION
+
+protected struct std_ringbuffer CreateRingBuffer(int size, int newmode);
+protected void RingBufferPut(struct std_ringbuffer buffer, mixed val);
+protected mixed RingBufferGet(struct std_ringbuffer buffer);
+protected struct std_ringbuffer ResizeRingBuffer(struct std_ringbuffer buf,
+ int size);
+
+#endif // NEED_PROTOTYPES
+#endif // _RINGBUFFER_H_IMPLEMENTATION
+
diff --git a/sys/v_compiler.h b/sys/v_compiler.h
new file mode 100644
index 0000000..1a6e9b9
--- /dev/null
+++ b/sys/v_compiler.h
@@ -0,0 +1,34 @@
+// MorgenGrauen MUDlib
+//
+// v_compiler.h -- a general virtual compiler object
+//
+// $Id: v_compiler.h 6081 2006-10-23 14:12:34Z Zesstra $
+
+#ifndef __V_COMPILER_H__
+#define __V_COMPILER_H__
+
+#define P_STD_OBJECT "std_object"
+#define P_COMPILER_PATH "compiler_path"
+
+#endif // __V_COMPILER_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __V_COMPILER_H_PROTO__
+#define __V_COMPILER_H_PROTO__
+
+// to validate if the file name is in our range
+string Validate(string file);
+
+// sets costumization data in the cloned object
+mixed CustomizeObject();
+
+// this functions is called when a file is not found and may be virtual
+mixed compile_object(string file);
+
+// to get all yet cloned (and not cleaned up) objects
+mixed QueryObjects();
+
+#endif // __V_COMPILER_H_PROTO__
+
+#endif //NEED_PROTOTYPES
diff --git a/sys/weapon.h b/sys/weapon.h
new file mode 100644
index 0000000..29eb3b3
--- /dev/null
+++ b/sys/weapon.h
@@ -0,0 +1,77 @@
+// MorgenGrauen MUDlib
+//
+// weapon.h -- Properties fuer Waffen (Schdenstypen siehe <combat.h>)
+//
+// $Id: weapon.h,v 3.8 2002/09/20 07:14:11 Tilly Exp $
+
+#include "/sys/weapon/description.h"
+
+#ifndef __WEAPON_H__
+#define __WEAPON_H__
+
+#include <combat.h>
+
+/* ---------- Properties ---------- */
+
+#ifndef P_NR_HANDS
+#define P_NR_HANDS "nr_hands" // benoetigte Haende zum zuecken
+#endif
+
+#define P_WC "wc" // Waffenklasse (weapon class)
+#define P_MAX_WC "max_wc" // obsolet, nicht mehr in Benutzung
+#define P_WEAPON_TYPE "weapon_type" // Waffentyp (Schwert, Keule usw.)
+#define P_DAM_TYPE "dam_type" // Schadensart der Waffe
+#define P_WIELDED "wielded" // Objekt mit dem Traeger der Waffe
+
+#define P_HIT_FUNC "hit_func" // Objekt das eine HitFunc definiert
+#define P_WIELD_FUNC "wield_func" // Objekt das eine WieldFunc definiert
+#define P_UNWIELD_FUNC "unwield_func" // Objekt das eine UnwieldFunc definiert
+
+#define P_WIELD_MSG "wield_msg" // Meldungen beim Zuecken
+#define P_UNWIELD_MSG "unwield_msg" // Meldungen beim Wegstecken
+
+// Wann der Spieler das letzte Mal eine Waffe weggesteckt hat
+#define P_UNWIELD_TIME "unwield_time"
+
+// Mit was fuer Techniken kann die Waffe eingesetzt werden?
+#define P_TECHNIQUE "technique"
+
+// Ist die Waffe balanciert oder nicht?
+#define P_BALANCED_WEAPON "balanced_weapon"
+
+/* ---------- Zugehoerige Defines ---------- */
+
+// Techniken fuer P_TECHNIQUE
+#define TQ_THRASH "Schlagtechnik"
+#define TQ_THRUST "Stosstechnik"
+#define TQ_STROKE "Streichtechnik"
+#define TQ_WHIP "Peitschtechnik"
+
+// Defines fuer balanciert/unbalanciert
+#define WP_BALANCED 1
+#define WP_UNBALANCED -1
+
+/* ---------- Parierwaffen ----------- */
+
+#define P_PARRY "parry" // definiert eine Parierwaffe
+#define P_PARRY_WEAPON "parry_weapon" // Welche Parierwaffe wird benutzt?
+
+/* -------------------- Defines fuer Parierwaffen -------------------- */
+
+#define PARRY_NOT 0
+#define PARRY_TOO 1
+#define PARRY_ONLY 2
+
+#endif // __WEAPON_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __WEAPON_H_PROTO__
+#define __WEAPON_H_PROTO__
+
+// prototypes
+// no prototypes
+
+#endif // __WEAPON_H_PROTO__
+
+#endif // NEED_PROTOYPES
diff --git a/sys/weapon/description.h b/sys/weapon/description.h
new file mode 100644
index 0000000..999e460
--- /dev/null
+++ b/sys/weapon/description.h
@@ -0,0 +1,36 @@
+// MorgenGrauen MUDlib
+//
+// weapon/description.h -- Description for damaged Weapons
+//
+// $Id: description.h 6081 2006-10-23 14:12:34Z Zesstra $
+
+#ifndef __WEAPON_DESCRIPTION_H__
+#define __WEAPON_DESCRIPTION_H__
+
+// properties
+#define P_DAM_DESC "dam_desc"
+
+// Default-Messages
+#define DFLT_DAM_DESC ({"ist in einem hervorragenden Zustand",\
+ "ist in einem sehr guten Zustand",\
+ "ist in einem guten Zustand",\
+ "sieht noch ganz brauchbar aus",\
+ "wirkt etwas abgenutzt",\
+ "wirkt stark abgenutzt",\
+ "ist gerade noch zu gebrauchen",\
+ "wird bald schrottreif sein",\
+ "ist nur noch Schrott" })
+
+#endif // __WEAPON_DESCRIPTION_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __WEAPON_DESCRIPTION_H_PROTO__
+#define __WEAPON_DESCRIPTION_H_PROTO__
+
+// prototypes
+string dam_descr();
+
+#endif // __WEAPON_DESCRIPTION_H_PROTO__
+
+#endif // // NEED_PROTOYPES
diff --git a/sys/werliste.h b/sys/werliste.h
new file mode 100644
index 0000000..adf1810
--- /dev/null
+++ b/sys/werliste.h
@@ -0,0 +1,11 @@
+#ifndef ___WER_LISTE_H__
+#define ___WER_LISTE_H__
+
+#define WHO_SHORT 0x01
+#define WHO_VERTICAL 0x02
+#define WHO_ALPHA 0x04
+
+// Aus Spielersicht darstellen, auch wenn der Aufrufende Magier ist
+#define WHO_PLAYER_VIEW 0x08
+
+#endif // __WER_LISTE_H__
diff --git a/sys/wizlist.h b/sys/wizlist.h
new file mode 100644
index 0000000..629bac7
--- /dev/null
+++ b/sys/wizlist.h
@@ -0,0 +1,22 @@
+#ifndef LPC_WIZLIST_H_
+#define LPC_WIZLIST_H_ 1
+
+/* Indices returned by wizlist_info()
+ */
+
+#define WL_NAME 0 /* Wizard name */
+#define WL_COMMANDS 1 /* Number of commands executed */
+#define WL_COST 2 /* Weighted evalcost spent on this wizard */
+#define WL_GIGACOST 3 /* Weighted giga-evalcost spent on this wizard */
+#define WL_TOTAL_COST 4 /* Total evalcost spent on this wizard */
+#define WL_TOTAL_GIGACOST 5 /* Total giga-evalcost spent on this wizard */
+#define WL_HEART_BEATS 6 /* Heartbeats spent on this wizard */
+#define WL_CALL_OUT 7 /* unimplemented */
+#define WL_ARRAY_TOTAL 8 /* Arrays accounted for */
+#define WL_MAPPING_TOTAL 9 /* Mappings accounted for */
+#define WL_STRUCT_TOTAL 10 /* Struct elements accounted for */
+#define WL_EXTRA 11 /* Extra Wizinfo, if set */
+
+#define WL_SIZE 12 /* Number of entries */
+
+#endif /* LPC_WIZLIST_H_ */
diff --git a/sys/www.h b/sys/www.h
new file mode 100644
index 0000000..e83a659
--- /dev/null
+++ b/sys/www.h
@@ -0,0 +1,90 @@
+// MorgenGrauen MUDlib
+//
+// www.h -- World Wide Web Services
+//
+// $Id: www.h 7724 2011-01-05 22:32:26Z Zesstra $
+
+// how do you spell your mud name
+#ifndef MUDNAME
+# define MUDNAME "MorgenGrauen"
+#endif
+
+// Pathnames to different services
+// INETD -- the inet daemon
+#ifndef INETD
+# define INETD "/secure/inetd"
+#endif
+
+#define FINGER(n) "/p/daemon/finger"->finger_single(n)
+#define WHO "/obj/werliste"->QueryWhoListe(0,0,1)
+
+// UDPPATH -- wherethe udp programs are
+#define UDPPATH "/secure/udp"
+
+// the WWW request scheduler
+#define WWW (UDPPATH+"/www")
+#define TIMEOUT 5
+
+// wher to log all WWW UDP Requests
+#define WWWLOG "/WWW" // used in log_file()
+
+// define MUDHOST, WWW SERVER address and the ICON URL
+#ifndef MUDHOST
+# define MUDHOST "MG.Mud.DE"
+#else
+# undef MUDHOST
+# define MUDHOST "MG.Mud.DE"
+#endif
+#define MUDUSER "mud"
+#define SERVER "mg.mud.de"
+#define ICONS "/icons"
+#define MUDWWW "/cgi-bin/mudwww"
+
+// define the address of the MUD Host
+#define HOMEPAGE "http://"+SERVER+"/"
+#define MUDMAIL "mailto:"+MUDUSER+"@"+MUDHOST
+
+// Request Syntax tokens
+#define REQ "REQ" // TYPE of REQuest
+
+// The WWW Newsreader
+# define R_NEWS "news" // - we would like to read news
+# define GROUP "GROUP" // * which newsgroup
+# define ARTICLE "ARTICLE" // * which article
+
+// The WWW MUD Walker
+# define R_WALK "walk" // - or maybe walk around a bit
+# define ROOM "ROOM" // * ROOM to enter
+# define DETAIL "DETAIL" // * DETAIL to examine
+
+// The WWW Finger Request
+# define R_FINGER "finger" // - finger someone
+# define USER "USER" // * USER to retrieve info from
+
+// The WWW Wholist Request
+# define R_WHO "who" // - get the wholist
+
+// The WWW Intermud Gateway
+# define R_INTERMUD "intermud" // - intermud communication request
+# define IMUD "IMUD" // * The MUD to request info from
+# define TYPE "TYPE" // * The TYPE of Request
+# define IDATA "DATA" // * extra DATA to aid request
+# define PAGE "PAGE" // * Alphabetical pages of muds
+
+#define BACK "BACK" // PAGE to go BACK to
+
+#ifndef MUDNAME
+# define MUDNAME "TestMUD"
+#endif /* MUDNAME */
+
+// Property specific defines
+#define P_WWWINFO "wwwinfo"
+
+// The error message to view in any case
+#define ERROR(str) "<H1>Ein Fehler ist aufgetreten!</H1><HR>"+str
+
+// debugging (change name to your own!)
+#define DNAME "hate"
+#define DEBUG(str) if(find_player(DNAME)) \
+ tell_object(find_player(DNAME), sprintf("%O\n", str))
+//#undef DEBUG
diff --git a/sys/xml.h b/sys/xml.h
new file mode 100644
index 0000000..e630638
--- /dev/null
+++ b/sys/xml.h
@@ -0,0 +1,10 @@
+#ifndef XML_H__
+#define XML_H__ 1
+
+#define XML_TAG_NAME 0 /* Name of the current tag */
+#define XML_TAG_ATTRIBUTES 1 /* Atttributes of the current tag */
+#define XML_TAG_CONTENTS 2 /* Contents of the current tag */
+
+#define XML_TAG_SIZE 3
+
+#endif