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
