diff --git a/doc/index b/doc/index
new file mode 100644
index 0000000..b2693f9
--- /dev/null
+++ b/doc/index
@@ -0,0 +1,21 @@
+
+Willkommen bei der Morgengrauen-Mudlib - Dokumentation!
+*******************************************************
+
+Inhalt:
+
+* sefuns (simulated efuns)
+
+* Properties
+
+* lfuns
+
+
+Indices and tables
+******************
+
+* *Index*
+
+* *Module Index*
+
+* *Search Page*
diff --git a/doc/lfun-liste b/doc/lfun-liste
new file mode 100644
index 0000000..63c3862
--- /dev/null
+++ b/doc/lfun-liste
@@ -0,0 +1,871 @@
+
+Verzeichnis der dokumentierten lfuns
+************************************
+
+* AddAction()
+
+* AddAdjective()
+
+* AddAmount()
+
+* AddClass()
+
+* AddCmd()
+
+* AddCmd_bsp()
+
+* AddDefender()
+
+* AddDetail()
+
+* AddDrink()
+
+* AddExit()
+
+* AddExp()
+
+* AddExtraLook()
+
+* AddFixedObject()
+
+* AddFood()
+
+* AddFuel()
+
+* AddFun()
+
+* AddId()
+
+* AddInfo()
+
+* AddItem()
+
+* AddKnownPotion()
+
+* AddMaterial()
+
+* AddMiniQuest()
+
+* AddMoney()
+
+* AddMsg()
+
+* AddPlant()
+
+* AddPluralId()
+
+* AddPursuer()
+
+* AddReadDetail()
+
+* AddResistanceModifier()
+
+* AddRoomCmd()
+
+* AddRoomMessage()
+
+* AddRoute()
+
+* AddSingularId()
+
+* AddSmells()
+
+* AddSounds()
+
+* AddSpecialDetail()
+
+* AddSpecialExit()
+
+* AddSpecialInfo()
+
+* AddSpell()
+
+* AddToMenu()
+
+* AddTouchDetail()
+
+* AllGroups()
+
+* AllMaterials()
+
+* AssocMember()
+
+* Attack()
+
+* BecomesNetAlive()
+
+* BecomesNetDead()
+
+* CannotSee()
+
+* ChangeMiniQuest()
+
+* ChangeReputation()
+
+* CheckFindRestrictions()
+
+* CheckLightType()
+
+* CheckResistance()
+
+* CheckSensitiveAttack()
+
+* CheckSpellFatigue()
+
+* ClearRingBuffer()
+
+* Configure()
+
+* ConvMaterialList()
+
+* CreateRingBuffer()
+
+* CustomizeObject()
+
+* Damage()
+
+* DeAssocMember()
+
+* DeclAdj()
+
+* Defend()
+
+* DefendFunc()
+
+* DefendInfo()
+
+* DefendOther()
+
+* Defend_bsp()
+
+* DeleteSpellFatigue()
+
+* DeleteTimedAttrModifier()
+
+* DiscoverDoor()
+
+* DistributeExp()
+
+* DoDecay()
+
+* DoDecayMessage()
+
+* DoUnwear()
+
+* DoUnwield()
+
+* DoWear()
+
+* DoWield()
+
+* DoorIsKnown()
+
+* Dump()
+
+* EnemyPresent()
+
+* Enter()
+
+* EvalArmour()
+
+* EvalWeapon()
+
+* ExtraAttack()
+
+* FilterArmours()
+
+* FilterClothing()
+
+* FindBestArmours()
+
+* FindBestWeapon()
+
+* FindDistantEnemyVictim()
+
+* FindDistantGroup()
+
+* FindDistantGroups()
+
+* FindEnemyVictim()
+
+* FindFarEnemyVictim()
+
+* FindGroup()
+
+* FindGroupN()
+
+* FindGroupP()
+
+* FindNearEnemyVictim()
+
+* FindPotion()
+
+* FindRangedTarget()
+
+* Flee()
+
+* FreeHands()
+
+* GetAquarium()
+
+* GetDetail()
+
+* GetDoorsMapping()
+
+* GetEnemies()
+
+* GetExits()
+
+* GetFValue()
+
+* GetFValueO()
+
+* GetFactor()
+
+* GetGroupMembers()
+
+* GetInfoArr()
+
+* GetMatMembership()
+
+* GetOffset()
+
+* GetOwner()
+
+* GetPhiolenInfos()
+
+* GetReputation()
+
+* GetReputations()
+
+* GetValue()
+
+* GetValueO()
+
+* Gildenproperties()
+
+* GiveMiniQuest()
+
+* GiveQuest()
+
+* GroupName()
+
+* GuardExit()
+
+* Halt()
+
+* HasMiniQuest()
+
+* HitFunc()
+
+* Identify()
+
+* InFight()
+
+* InList()
+
+* InformAlcoholEffect()
+
+* InformDefend()
+
+* InformRowChange()
+
+* InformUnwear()
+
+* InformUnwield()
+
+* InformWear()
+
+* InformWield()
+
+* InsertEnemy()
+
+* InsertEnemyTeam()
+
+* InsertSensitiveObject()
+
+* InternalModifyAttack()
+
+* InternalModifyDefend()
+
+* IsArmour()
+
+* IsBottle()
+
+* IsClothing()
+
+* IsEnemy()
+
+* IsEqual()
+
+* IsPlayerCorpse()
+
+* IsRoom()
+
+* IsTeamLeader()
+
+* IsTeamMove()
+
+* IsUnit()
+
+* Kill()
+
+* LearnSkill()
+
+* Leave()
+
+* LimitAbility()
+
+* MaterialGroup()
+
+* MaterialList()
+
+* MaterialName()
+
+* MayAddObject()
+
+* MayAddWeight()
+
+* Message()
+
+* ModifyQuestTime()
+
+* ModifySkill()
+
+* ModifySkillAttribute()
+
+* More()
+
+* NPC_Killed_by()
+
+* NewDoor()
+
+* NoParaObjects()
+
+* NotifyDestruct()
+
+* NotifyInsert()
+
+* NotifyLeave()
+
+* NotifyMove()
+
+* NotifyPlayerDeath()
+
+* NotifyRemove()
+
+* NotifyTimedAttrModExpired()
+
+* NotifyXMAttrModLimitViolation()
+
+* Pacify()
+
+* PayIn()
+
+* PlayerQuit()
+
+* PresentEnemies()
+
+* PresentEnemyRows()
+
+* PresentPosition()
+
+* PresentRows()
+
+* PresentTeamPositions()
+
+* PresentTeamRows()
+
+* PreventFollow()
+
+* PreventInsert()
+
+* PreventInsertLiving()
+
+* PreventLeave()
+
+* PreventLeaveLiving()
+
+* PreventMove()
+
+* Query()
+
+* QueryAllDoors()
+
+* QueryArmourByType()
+
+* QueryArrived()
+
+* QueryArticle()
+
+* QueryAttribute()
+
+* QueryAttributeOffset()
+
+* QueryBuyFact()
+
+* QueryBuyValue()
+
+* QueryCoinsPerUnits()
+
+* QueryDamage()
+
+* QueryDefend()
+
+* QueryDisguise()
+
+* QueryDoorKey()
+
+* QueryDoorStatus()
+
+* QueryDu()
+
+* QueryEnemies()
+
+* QueryFlaw()
+
+* QueryGenderString()
+
+* QueryGramsPerUnits()
+
+* QueryGroupedKeys()
+
+* QueryGuest()
+
+* QueryHealInfo()
+
+* QueryMaterial()
+
+* QueryMaterialGroup()
+
+* QueryMaxQP()
+
+* QueryMoney()
+
+* QueryName()
+
+* QueryOpenMiniQuestsForPlayer()
+
+* QueryOwn()
+
+* QueryPassengers()
+
+* QueryPosition()
+
+* QueryPossPronoun()
+
+* QueryPrayRoom()
+
+* QueryPreferedEnemy()
+
+* QueryPronoun()
+
+* QueryProp()
+
+* QueryProperties()
+
+* QueryQuest()
+
+* QueryQuestTime()
+
+* QueryRealAttribute()
+
+* QuerySellValue()
+
+* QuerySkill()
+
+* QuerySkillAbility()
+
+* QuerySkillAttribute()
+
+* QuerySkillAttributeModifier()
+
+* QuerySkillBonus()
+
+* QueryStorageRoom()
+
+* QueryTimedAttrModifier()
+
+* QueryTotalQP()
+
+* QueryUser()
+
+* QueryValidObject()
+
+* ReceiveMsg()
+
+* RegisterEvent()
+
+* RegisterHelperNPC()
+
+* RegisterHelperObject()
+
+* RemoveAdjective()
+
+* RemoveClass()
+
+* RemoveCmd()
+
+* RemoveDefender()
+
+* RemoveDetail()
+
+* RemoveExit()
+
+* RemoveExtraLook()
+
+* RemoveFixedObject()
+
+* RemoveFromMenu()
+
+* RemoveFunc()
+
+* RemoveId()
+
+* RemoveInfo()
+
+* RemoveItem()
+
+* RemoveKnownPotion()
+
+* RemovePluralId()
+
+* RemovePursuer()
+
+* RemoveReadDetail()
+
+* RemoveResistanceModifier()
+
+* RemoveRoute()
+
+* RemoveSensitiveObject()
+
+* RemoveSingularId()
+
+* RemoveSkillAttributeModifier()
+
+* RemoveSmells()
+
+* RemoveSounds()
+
+* RemoveSpecialDetail()
+
+* RemoveSpecialExit()
+
+* RemoveTouchDetail()
+
+* ResizeRingBuffer()
+
+* RingBufferGet()
+
+* RingBufferPut()
+
+* SearchPath()
+
+* SelectEnemy()
+
+* SelectFarEnemy()
+
+* SelectNearEnemy()
+
+* Set()
+
+* SetAttackChats()
+
+* SetAttr()
+
+* SetAttribute()
+
+* SetBuyFact()
+
+* SetChats()
+
+* SetCoinsPerUnits()
+
+* SetDoorStatus()
+
+* SetEnemies()
+
+* SetGramsPerUnits()
+
+* SetProp()
+
+* SetProperties()
+
+* SetRealAttribute()
+
+* SetSpellFatigue()
+
+* SetStorageRoom()
+
+* SetTimedAttrModifier()
+
+* ShowDoors()
+
+* ShowPropList()
+
+* SkillResTransfer()
+
+* SpellAttack()
+
+* SpellDefend()
+
+* SpellInform()
+
+* Start()
+
+* StopHuntFor()
+
+* StopHuntText()
+
+* SuggestArticle()
+
+* SwapRows()
+
+* TakeFlaw()
+
+* TeamFlee()
+
+* TeamMembers()
+
+* TeamPrefix()
+
+* Teleport()
+
+* TestIgnore()
+
+* TestIgnoreSimple()
+
+* TestLimitViolation()
+
+* TriggerEvent()
+
+* UnregisterEvent()
+
+* UnregisterHelperNPC()
+
+* UnregisterHelperObject()
+
+* Unwear()
+
+* UnwearArmour()
+
+* UnwearClothing()
+
+* UnwieldFunc()
+
+* UpdateAttributes()
+
+* UpdateResistanceStrengths()
+
+* UseHands()
+
+* UseSkill()
+
+* UseSpell()
+
+* Validate()
+
+* Wear()
+
+* WearArmour()
+
+* WearClothing()
+
+* WearFunc()
+
+* WieldFunc()
+
+* WithDraw()
+
+* __INIT()
+
+* _query_current_money()
+
+* _unparsed_args()
+
+* access_rights()
+
+* buffer_hp()
+
+* buffer_sp()
+
+* buy_obj()
+
+* catch_msg()
+
+* catch_tell()
+
+* check_and_update_timed_key()
+
+* check_restrictions()
+
+* check_timed_key()
+
+* clean_up()
+
+* cmd_shoot()
+
+* command_me()
+
+* consume()
+
+* create()
+
+* create_default_npc()
+
+* create_super()
+
+* defuel_drink()
+
+* defuel_food()
+
+* deregister_modifier()
+
+* die()
+
+* doUnwearMessage()
+
+* doUnwieldMessage()
+
+* doWearMessage()
+
+* doWieldMessage()
+
+* do_damage()
+
+* do_frage()
+
+* do_unwear()
+
+* do_wear()
+
+* drink_alcohol()
+
+* drink_soft()
+
+* drop()
+
+* drop_obj()
+
+* drop_objects()
+
+* eat_food()
+
+* execute_anything()
+
+* exit()
+
+* find_obs()
+
+* get_killing_player()
+
+* give()
+
+* give_notify()
+
+* give_obj()
+
+* heal_self()
+
+* heart_beat()
+
+* id()
+
+* init()
+
+* insert_sensitive_inv()
+
+* insert_sensitive_inv_trigger()
+
+* int_long()
+
+* int_short()
+
+* is_class_member()
+
+* lfun()
+
+* locate_objects()
+
+* logon()
+
+* long()
+
+* make_immortal()
+
+* make_invlist()
+
+* match_ids()
+
+* move()
+
+* moved_objects()
+
+* moved_where()
+
+* muster()
+
+* name()
+
+* notify_player_change()
+
+* pick()
+
+* pick_obj()
+
+* pick_objects()
+
+* present_objects()
+
+* put()
+
+* put_obj()
+
+* query_prevent_shadow()
+
+* query_real_name()
+
+* query_weight_contents()
+
+* reduce_hit_points()
+
+* reduce_spell_points()
+
+* register_modifier()
+
+* remove()
+
+* remove_multiple()
+
+* reset()
+
+* restore_hit_points()
+
+* restore_spell_points()
+
+* save_me()
+
+* second_life()
+
+* sell_obj()
+
+* set_object_next_reset()
+
+* shoot_dam()
+
+* short()
+
+* show_notify()
+
+* trigger_sensitive_attack()
+
+* trigger_sensitive_inv()
+
+* wield_me()
+
+* Verzeichnis der lfuns speziell in/für Gilden
+
+* Verzeichnis der lfuns in master()
+
+* Verzeichnis der veralteten lfuns
diff --git a/doc/lfun.index b/doc/lfun.index
new file mode 100644
index 0000000..2018524
--- /dev/null
+++ b/doc/lfun.index
@@ -0,0 +1,20 @@
+
+lfuns
+*****
+
+lfuns sind in LPC geschriebene Funktionen innerhalb von Objekten. Oft
+kann man diese von aussen rufen, einige lfuns sind jedoch auch privat.
+In den meisten Faellen beeinflusst man Objekte im Spiel durch das
+Rufen von jeweils passenden lfuns.
+
+
+Verzeichnis der dokumentierten lfuns
+====================================
+
+* Verzeichnis der dokumentierten lfuns
+
+* Verzeichnis der lfuns speziell in/für Gilden
+
+* Verzeichnis der lfuns in master()
+
+* Verzeichnis der veralteten lfuns
diff --git a/doc/lfun/AddAction b/doc/lfun/AddAction
index 23183ca..29c83c1 100644
--- a/doc/lfun/AddAction
+++ b/doc/lfun/AddAction
@@ -1,76 +1,104 @@
+
+AddAction()
+***********
+
+
 AddAction(L)
-FUNKTION:
-     varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);
+============
 
-DEFINIERT IN:
-     /std/player/command.c
 
-ARGUMENTE:
-     fun	zu rufende Methode im Spieler oder eine Closure
-     cmd	ausloesendes Kommandoverb
-     flag	unscharf ausfuehren
-     lvl	ab welchem (Magierlevel) funktioniert das Kommando
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Dem Spieler wird ein neues Kommando definiert. Dieses kann eine Methode
-     in ihm sein, so wie bei allen Spielerkommandos ueblich, kann aber auch
-     eine Closure (Lfun-Closure oder Lambda) enthalten.
+   varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);
 
-     Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h. wie
-     bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1' auch
-     schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
-     AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder 'muh4'
-     ausgeloest.
 
-     Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
-     Magierlevel von 0, Seher von 1.
+DEFINIERT IN
+============
 
-     Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
-     nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
-     gebendes Objekt im Spieler einsparen.
+   /std/player/command.c
 
-BEMERKUNGEN:
-     - es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS editieren
-       kann zu ernsten Fehlern fuehren.
-     - echte Spielerkommandos kann man damit _nicht_ ueberschreiben,
-       ein AddAction(...,"sag",1,0); funktioniert nicht
-     - ein generelles AddAction(...,"",1,0); geht nicht
 
-BEISPIELE:
-     ...
-     this_player()->AddAction(symbol_function("zeige_mysterium",
-                                              find_object(".../mystzeiger")),
-			      "knorfula",0,0);
-     write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
-			"eingibst, werden dir Mysterien enthuellt!",78));
-     ...
+ARGUMENTE
+=========
 
-     // im Objekt "knorfula" ...
-     int zeige_mysterium(string str) {
-       string myst;
-       myst=environment(TP)->QueryMysterium(str);
-       if(myst) {
-         write("Du hast ein Mysterium entdeckt!\n");
-	 write(break_string(myst,78));
-	 say(break_string(
-		TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
-		"entdeckt zu haben!",78));
-       } else {
-         write(break_string(
-		"Leider entdeckst du trotz deiner magischen Faehigkeit "
-		"kein Mysterium in deiner Umgebung.",78));
-	 say(break_string(
-		TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
-		"jedoch etwas enttaeuscht aus.",78));
-       }
-       return 1;
+   fun        zu rufende Methode im Spieler oder eine Closure
+   cmd        ausloesendes Kommandoverb
+   flag       unscharf ausfuehren
+   lvl        ab welchem (Magierlevel) funktioniert das Kommando
+
+
+BESCHREIBUNG
+============
+
+   Dem Spieler wird ein neues Kommando definiert. Dieses kann eine Methode
+   in ihm sein, so wie bei allen Spielerkommandos ueblich, kann aber auch
+   eine Closure (Lfun-Closure oder Lambda) enthalten.
+
+   Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h. wie
+   bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1' auch
+   schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
+   AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder 'muh4'
+   ausgeloest.
+
+   Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
+   Magierlevel von 0, Seher von 1.
+
+   Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
+   nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
+   gebendes Objekt im Spieler einsparen.
+
+
+BEMERKUNGEN
+===========
+
+   - es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS editieren
+     kann zu ernsten Fehlern fuehren.
+   - echte Spielerkommandos kann man damit _nicht_ ueberschreiben,
+     ein AddAction(...,"sag",1,0); funktioniert nicht
+   - ein generelles AddAction(...,"",1,0); geht nicht
+
+
+BEISPIELE
+=========
+
+   ...
+   this_player()->AddAction(symbol_function("zeige_mysterium",
+                                            find_object(".../mystzeiger")),
+                            "knorfula",0,0);
+   write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
+                      "eingibst, werden dir Mysterien enthuellt!",78));
+   ...
+
+   // im Objekt "knorfula" ...
+   int zeige_mysterium(string str) {
+     string myst;
+     myst=environment(TP)->QueryMysterium(str);
+     if(myst) {
+       write("Du hast ein Mysterium entdeckt!\n");
+       write(break_string(myst,78));
+       say(break_string(
+              TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
+              "entdeckt zu haben!",78));
+     } else {
+       write(break_string(
+              "Leider entdeckst du trotz deiner magischen Faehigkeit "
+              "kein Mysterium in deiner Umgebung.",78));
+       say(break_string(
+              TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
+              "jedoch etwas enttaeuscht aus.",78));
      }
+     return 1;
+   }
 
-SIEHE AUCH:
-			P_LOCALCMDS
-     Fehlermeldungen:	notify_fail(E), _notify_fail(E)
-     Argumentstring:	query_verb(E), _unparsed_args(L)
-     Sonstiges:		replace_personal(E), enable_commands(E)
-     Alternativen:	AddCmd(L), add_action(E)
+
+SIEHE AUCH
+==========
+
+                      P_LOCALCMDS
+   Fehlermeldungen:   notify_fail(E), _notify_fail(E)
+   Argumentstring:    query_verb(E), _unparsed_args(L)
+   Sonstiges:         replace_personal(E), enable_commands(E)
+   Alternativen:      AddCmd(L), add_action(E)
 
 24. Maerz 2004 Gloinson
diff --git a/doc/lfun/AddAdjective b/doc/lfun/AddAdjective
index 6b58101..a96a5e5 100644
--- a/doc/lfun/AddAdjective
+++ b/doc/lfun/AddAdjective
@@ -1,39 +1,62 @@
+
 AddAdjective()
+**************
 
-FUNKTION:
-     void AddAdjective(string|string* adj);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     adj
-          String oder Array von String mit den Adjektiven.
+   void AddAdjective(string|string* adj);
 
-BESCHREIBUNG:
-     Zusaetzlich zu den mit AddId() vergebenen Bezeichnern laesst sich mit
-     der Vergabe von Adjektiven die Ansprechbarkeit eines Objektes erhoehen.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Die Adjektive werden nicht dekliniert, man muss also fuer jeden
-     sinnvollen Fall ein Adjektiv uebergeben.
+   /std/thing/description.c
 
-BEISPIELE:
 
-       AddId( ({ "zettel", "blatt" }) );
-       AddAdjective( ({ "kleinen", "kleines" }) );
+ARGUMENTE
+=========
 
-     Das Objekt reagiert jetzt auf "zettel", "kleinen zettel", "blatt",
-     "kleines blatt" sowie auf die (sprachlich nicht ganz so korrekten)
-     Konstruktionen "kleines zettel", "kleinen blatt", "kleines kleinen
-     zettel", ...
+   adj
+        String oder Array von String mit den Adjektiven.
 
-SIEHE AUCH:
-     AddId(), RemoveAdjective() id(), present(), /std/thing/description.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Zusaetzlich zu den mit AddId() vergebenen Bezeichnern laesst sich mit
+   der Vergabe von Adjektiven die Ansprechbarkeit eines Objektes erhoehen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Adjektive werden nicht dekliniert, man muss also fuer jeden
+   sinnvollen Fall ein Adjektiv uebergeben.
+
+
+BEISPIELE
+=========
+
+     AddId( ({ "zettel", "blatt" }) );
+     AddAdjective( ({ "kleinen", "kleines" }) );
+
+   Das Objekt reagiert jetzt auf "zettel", "kleinen zettel", "blatt",
+   "kleines blatt" sowie auf die (sprachlich nicht ganz so korrekten)
+   Konstruktionen "kleines zettel", "kleinen blatt", "kleines kleinen
+   zettel", ...
+
+
+SIEHE AUCH
+==========
+
+   AddId(), RemoveAdjective() id(), present(), /std/thing/description.c
+
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddAmount b/doc/lfun/AddAmount
index 3be8e3f..59bb9b1 100644
--- a/doc/lfun/AddAmount
+++ b/doc/lfun/AddAmount
@@ -1,25 +1,44 @@
+
 AddAmount()
+***********
 
-FUNKTION:
-     void AddAmount(int menge);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     menge
-          Die Menge, die der Unit hinzugefuegt werden soll (kann auch
-          negativ sein).
+   void AddAmount(int menge);
 
-BESCHREIBUNG:
-     menge wird zur aktuellen Menge hinzugezaehlt. Sollte das Ergebnis 0
-     werden, wird die Unit in absehbarer Zeit zerstoert.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/unit.c
+   /std/unit.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   menge
+        Die Menge, die der Unit hinzugefuegt werden soll (kann auch
+        negativ sein).
+
+
+BESCHREIBUNG
+============
+
+   menge wird zur aktuellen Menge hinzugezaehlt. Sollte das Ergebnis 0
+   werden, wird die Unit in absehbarer Zeit zerstoert.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   /std/unit.c
+
 Last modified: Wed May 8 10:15:50 1996 by Wargon
diff --git a/doc/lfun/AddClass b/doc/lfun/AddClass
index f97730c..fee72e3 100644
--- a/doc/lfun/AddClass
+++ b/doc/lfun/AddClass
@@ -1,28 +1,48 @@
+
 AddClass()
-FUNKTION:
-     void AddClass(string|string* class);
+**********
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     string/string* class	- String oder Stringarray der Klasse(n)
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Dem Objekt werden weitere Klassifizierungen hinzugefuegt.
+   void AddClass(string|string* class);
 
-     Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.
 
-BEMERKUNGEN:
-     Vor dem 7. Nov 2012 pruefte is_class_member() auch die P_IDS. Damit war
-     zB ein AddId("daemon") gleichbedeutend einem AddClass(CL_DEMON).
+DEFINIERT IN
+============
 
-     Bitte prueft eure Objekte (NPCs, Krankheiten, Gifte, ...) auf korrekte
-     Klassifizierung.
+   /std/thing/description.c
 
-SIEHE AUCH:
-     RemoveClass(), is_class_member()
-     P_CLASS
+
+ARGUMENTE
+=========
+
+   string/string* class       - String oder Stringarray der Klasse(n)
+
+
+BESCHREIBUNG
+============
+
+   Dem Objekt werden weitere Klassifizierungen hinzugefuegt.
+
+   Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Vor dem 7. Nov 2012 pruefte is_class_member() auch die P_IDS. Damit war
+   zB ein AddId("daemon") gleichbedeutend einem AddClass(CL_DEMON).
+
+   Bitte prueft eure Objekte (NPCs, Krankheiten, Gifte, ...) auf korrekte
+   Klassifizierung.
+
+
+SIEHE AUCH
+==========
+
+   RemoveClass(), is_class_member()
+   P_CLASS
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddCmd b/doc/lfun/AddCmd
index aeea8db..088da28 100644
--- a/doc/lfun/AddCmd
+++ b/doc/lfun/AddCmd
@@ -1,210 +1,244 @@
+
+AddCmd()
+********
+
+
 AddCmd(L)
-FUNKTION:
-    varargs void AddCmd(mixed cmd, mixed func, [mixed flag, [mixed id]]);
-
-DEFINIERT IN:
-    /std/thing/commands.c
-
-ARGUMENTE:
-    cmd
-       Verben, auf die reagiert werden soll
-       ODER
-       Regel mit Triggerverb und noetigen Keywords/Synonymen
-    func
-       Funktionsname im selben Objekt oder Closure (Funktionspointer)
-    flag (optional)
-       Unscharfe Ausfuehrung == 1
-       ODER
-       Fehlermeldungen bei Nutzung von Regeln
-    id (optional)
-       eine ID, ueber die das Kommando eindeutig wieder geloescht
-       werden kann
-
-BESCHREIBUNG:
-    Wenn ein Spieler im Einflussbereich des Objektes das Verb benutzt,
-    wird die entsprechende Funktion im Objekt aufgerufen:
-    - die Verben sollten Imperative sein
-    - die Funktion muss 1 fuer ERFOLG (und FPs!) und 0 sonst zurueckgeben
-      (sonst werden evtl. weitere Funktionen mit diesem Kommandoverb gerufen)
-    - innerhalb der Funktionen koennen Fehlermeldungen fuer den totalen
-      Misserfolg des Kommandos mit notify_fail gesetzt werden
-      (anstatt "Wie bitte?")
-
-    AddCmd ist ein dynamischer Ersatz fuer add_action - im Gegensatz
-    zu add_action koennen auch ohne erneuten Aufruf der init() neue
-    Kommandos hinzugefuegt werden.
-
-    AddCmd kann das Leben einfacher machen mit:
-    ### REGELN: ###
-      Bei komplexen Syntaxen kann ein String angegeben werden, der die
-      _notwendigen_ (nicht die erlaubten!) Schluesselworte und deren
-      zulaessige Synonyme beschreibt. Damit kann man sich einen grossen
-      Teil eigener Auswertung ersparen.
-
-      Nur wenn in richtiger Reihenfolge aus JEDER der durch & getrennten
-      Synonymgruppen ein Wort im Spielerkommando enthalten ist, wird
-      die zugehoerige Funktion ausgefuehrt.
-
-      Trenner sind: | fuer Alternativen
-                    & fuer Konjunktionen
-
-      Beispiel:
-        "ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
-        "herz|herzchen&rinde|baumrinde"
-      wuerde z.B. durch
-        "ritz mit dem Messer ein Herz in die Rinde des Baumes"
-        "schnitz mit Messer Herzchen Baumrinde"
-        "schnitz mit meinem Messer Herzchen in die harte Baumrinde"
-      erfuellt werden.
-
-      Spezialregelteile sind:
-      - @PRESENT: entspricht einem Objekt in Inv oder Env des Spielers
-      - @ID:      entspricht der ID des kommandobesitzenden Objektes
-                  (wo die Kommandomethode definiert ist, ist noch unwichtig)
-      - @PUT_GET_DROP, @PUT_GET_TAKE, @PUT_GET_NONE:
-                  entsprechend den Filteroptionen fuer find_obs()
-      ACHTUNG: Zusaetzliche Ziffern in Verbindung mit den @-Spezialregeln
-               sind schlecht. @-Regeln versuchen gierig, Objekte exakt im
-               Inventory zu matchen ("objekt 3" anstatt "objekt") und miss-
-               interpretieren daher zB die 4 in "stopf objekt 3 in loch 4" als
-               Teil des Objekt-ID-Strings.
-               Interna: 3 Substrings fuer @PRESENT/@ID ("gruener kristall 2")
-                        5 fuer @PUT... ("kristall 2 in beutel 3")
-
-    ### FEHLERMELDUNGEN (bei Anwendung von Regeln): ###
-      Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
-      fehlende Synonymgruppen (ausser der ersten - den Kommandoverben)
-      angegeben werden. Sie werden in derselben Reihenfolge (!) wie die
-      Synonymgruppen angegeben.
-
-      Mit nicht von Spielern erfuellbaren Regeln und ^-Fehlermeldungen
-      kann man auch ohne Ausfuehrung einer Funktion Texte an Spieler
-      und Umgebung ausgeben. Siehe dazu AddCmd_bsp.
-
-      Trenner sind: | zum Trennen der einzelnen Fehlermeldungen
-                    ^ um
-                       - die Auswertung (ab dieser Fehlermeldung!) mit
-                         "return 1;" zu beenden und
-                       - eine write^say-Meldung zu trennen und
-                       - (fuer funktionslose AddCmd auch FPs zu vergeben!)
-
-      Beispielfehlermeldungen fuer obige Regel:
-        "Womit willst Du schnitzen?|Was willst Du schnitzen?|"
-        "Wohinein willst Du das schnitzen?"
-
-      Es koennen in den Fehlermeldungen folgende Platzhalter benutzt
-      werden:
-      - @verb (ersetzt durch query_verb() ohne beendendes 'e')
-      - @VERB (ersetzt durch capitalize(query_verb()) ohne beendendes 'e')
-      - @WERx, @WESSENx, @WEMx, @WENx: siehe alles aus replace_personal()
-        - @WE..1 ist immer der aktive Spieler
-        - alle folgenden sind die matchenden Parameter der Spielereingabe
-          - (x-1)<=Fehlermeldung (da x=1 Spieler und
-                                  (x-1)>Fehlermeldungsobjekt nicht existent)
-
-      Ausfuehrungsbeispiel:
-        AddCmd("ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
-               "herz|herzchen&rinde|baumrinde",#'fun,
-              "Willst Du mit etwas @verben?|Womit willst du @verben?|"
-              "Was willst du mit dem @WEM3 @verben?|"
-              "Wohinein willst Du das @WEN4 schnitzen?");
-        1. "ritze" == "Willst Du mit etwas ritzen?"
-        2. "schnitz mit" == "Womit willst du schnitzen?"
-        3. "ritz mit messer" == "Was willst du mit dem messer ritzen?"
-        4. "ritze mit dem messer ein herz" ==
-             "Wohinein willst Du das herz schnitzen?"
-        5. "ritze mit dem messer ein herzchen in die baumrinde"
-             == Erfolg!
-
-    ### UNSCHARFER AUSFUEHRUNG: ###
-      Bei unscharfer Ausfuehrung wird die zugehoerige Methode auch dann
-      ausgefuehrt, wenn das verwendete Verb ein Superstring ist und
-      bisher noch nicht behandelt wurde.
-      Dieses Verhalten sollte nur beim generellen Abfangen von
-      Befehlsgruppen benutzt werden und ist ansonsten veraltet. Es
-      entsprich add_action("fun","kommando",1).
+=========
 
 
-      Beispiel:
-        1. AddCmd("klett","fun",1);
-        2. AddCmd("kletter|klettere&hoch",#'fun2,"Wohin klettern?");
+FUNKTION
+========
 
-        a) "klett"
-        b) "kletter"
-        c) "klettere hoch"
+   varargs void AddCmd(mixed cmd, mixed func, [mixed flag, [mixed id]]);
 
-        Ausgefuehrte Funktion bei: 1a, 1b, 1c; 2c
-       (1 wuerde also immer ausgefuehrt)
-        Fehlermeldung bei: 2b ("Wohin klettern?")
 
-BEMERKUNGEN:
-    - Methoden der put_and_get (nimm/nehme) sollten so nicht versucht
-      werden zu ueberschreiben - dazu sind invis Container da
-    - benutzt man fuer <function> eine Closure, kann man die Fkt. auch
-      protected oder private deklarieren _und_ sie kann in einem
-      anderen Objekt sein
-    - bei Regeln wird an die ggf. gerufene Methode als zweiter Parameter
-      ein Array der erfuellenden Eingabeteile uebergeben:
-      "steck&@PRESENT&in&loch" bei Erfuellung -> ({<Objekt>,"in","loch})
-      - bei Nutzung von @PUT_GET_XXX koennen die Parameter wiederum
-        Arrays sein ("jede Hose" -> mehrere gueltige Objekte)
-    - juengere AddCmd ueberschreiben aeltere, bzw. werden vor diesen
-      ausgewertet
-    - @PUT_GET_XXX kosten sehr viel Auswertungszeit
+DEFINIERT IN
+============
+
+   /std/thing/commands.c
+
+
+ARGUMENTE
+=========
+
+   cmd
+      Verben, auf die reagiert werden soll
+
+      ODER
+
+      Regel mit Triggerverb und noetigen Keywords/Synonymen
+   func
+      Funktionsname im selben Objekt oder Closure (Funktionspointer)
+   flag (optional)
+      Unscharfe Ausfuehrung == 1
+
+      ODER
+
+      Fehlermeldungen bei Nutzung von Regeln
+   id (optional)
+      eine ID, ueber die das Kommando eindeutig wieder geloescht
+      werden kann
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler im Einflussbereich des Objektes das Verb benutzt,
+   wird die entsprechende Funktion im Objekt aufgerufen:
+   - die Verben sollten Imperative sein
+   - die Funktion muss 1 fuer ERFOLG (und FPs!) und 0 sonst zurueckgeben
+     (sonst werden evtl. weitere Funktionen mit diesem Kommandoverb gerufen)
+   - innerhalb der Funktionen koennen Fehlermeldungen fuer den totalen
+     Misserfolg des Kommandos mit notify_fail gesetzt werden
+     (anstatt "Wie bitte?")
+
+   AddCmd ist ein dynamischer Ersatz fuer add_action - im Gegensatz
+   zu add_action koennen auch ohne erneuten Aufruf der init() neue
+   Kommandos hinzugefuegt werden.
+
+   AddCmd kann das Leben einfacher machen mit:
+   ### REGELN: ###
+     Bei komplexen Syntaxen kann ein String angegeben werden, der die
+     _notwendigen_ (nicht die erlaubten!) Schluesselworte und deren
+     zulaessige Synonyme beschreibt. Damit kann man sich einen grossen
+     Teil eigener Auswertung ersparen.
+
+     Nur wenn in richtiger Reihenfolge aus JEDER der durch & getrennten
+     Synonymgruppen ein Wort im Spielerkommando enthalten ist, wird
+     die zugehoerige Funktion ausgefuehrt.
+
+     Trenner sind: | fuer Alternativen
+                   & fuer Konjunktionen
+
+     Beispiel:
+       "ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
+       "herz|herzchen&rinde|baumrinde"
+     wuerde z.B. durch
+       "ritz mit dem Messer ein Herz in die Rinde des Baumes"
+       "schnitz mit Messer Herzchen Baumrinde"
+       "schnitz mit meinem Messer Herzchen in die harte Baumrinde"
+     erfuellt werden.
+
+     Spezialregelteile sind:
+     - @PRESENT: entspricht einem Objekt in Inv oder Env des Spielers
+     - @ID:      entspricht der ID des kommandobesitzenden Objektes
+                 (wo die Kommandomethode definiert ist, ist noch unwichtig)
+     - @PUT_GET_DROP, @PUT_GET_TAKE, @PUT_GET_NONE:
+                 entsprechend den Filteroptionen fuer find_obs()
+     ACHTUNG: Zusaetzliche Ziffern in Verbindung mit den @-Spezialregeln
+              sind schlecht. @-Regeln versuchen gierig, Objekte exakt im
+              Inventory zu matchen ("objekt 3" anstatt "objekt") und miss-
+              interpretieren daher zB die 4 in "stopf objekt 3 in loch 4" als
+              Teil des Objekt-ID-Strings.
+              Interna: 3 Substrings fuer @PRESENT/@ID ("gruener kristall 2")
+                       5 fuer @PUT... ("kristall 2 in beutel 3")
+
+   ### FEHLERMELDUNGEN (bei Anwendung von Regeln): ###
+     Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
+     fehlende Synonymgruppen (ausser der ersten - den Kommandoverben)
+     angegeben werden. Sie werden in derselben Reihenfolge (!) wie die
+     Synonymgruppen angegeben.
+
+     Mit nicht von Spielern erfuellbaren Regeln und ^-Fehlermeldungen
+     kann man auch ohne Ausfuehrung einer Funktion Texte an Spieler
+     und Umgebung ausgeben. Siehe dazu AddCmd_bsp.
+
+     Trenner sind: | zum Trennen der einzelnen Fehlermeldungen
+                   ^ um
+                      - die Auswertung (ab dieser Fehlermeldung!) mit
+                        "return 1;" zu beenden und
+                      - eine write^say-Meldung zu trennen und
+                      - (fuer funktionslose AddCmd auch FPs zu vergeben!)
+
+     Beispielfehlermeldungen fuer obige Regel:
+       "Womit willst Du schnitzen?|Was willst Du schnitzen?|"
+       "Wohinein willst Du das schnitzen?"
+
+     Es koennen in den Fehlermeldungen folgende Platzhalter benutzt
+     werden:
+     - @verb (ersetzt durch query_verb() ohne beendendes 'e')
+     - @VERB (ersetzt durch capitalize(query_verb()) ohne beendendes 'e')
+     - @WERx, @WESSENx, @WEMx, @WENx: siehe alles aus replace_personal()
+       - @WE..1 ist immer der aktive Spieler
+       - alle folgenden sind die matchenden Parameter der Spielereingabe
+         - (x-1)<=Fehlermeldung (da x=1 Spieler und
+                                 (x-1)>Fehlermeldungsobjekt nicht existent)
+
+     Ausfuehrungsbeispiel:
+       AddCmd("ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
+              "herz|herzchen&rinde|baumrinde",#'fun,
+             "Willst Du mit etwas @verben?|Womit willst du @verben?|"
+             "Was willst du mit dem @WEM3 @verben?|"
+             "Wohinein willst Du das @WEN4 schnitzen?");
+       1. "ritze" == "Willst Du mit etwas ritzen?"
+       2. "schnitz mit" == "Womit willst du schnitzen?"
+       3. "ritz mit messer" == "Was willst du mit dem messer ritzen?"
+       4. "ritze mit dem messer ein herz" ==
+            "Wohinein willst Du das herz schnitzen?"
+       5. "ritze mit dem messer ein herzchen in die baumrinde"
+            == Erfolg!
+
+   ### UNSCHARFER AUSFUEHRUNG: ###
+     Bei unscharfer Ausfuehrung wird die zugehoerige Methode auch dann
+     ausgefuehrt, wenn das verwendete Verb ein Superstring ist und
+     bisher noch nicht behandelt wurde.
+     Dieses Verhalten sollte nur beim generellen Abfangen von
+     Befehlsgruppen benutzt werden und ist ansonsten veraltet. Es
+     entsprich add_action("fun","kommando",1).
+
+
+     Beispiel:
+       1. AddCmd("klett","fun",1);
+       2. AddCmd("kletter|klettere&hoch",#'fun2,"Wohin klettern?");
+
+       a) "klett"
+       b) "kletter"
+       c) "klettere hoch"
+
+       Ausgefuehrte Funktion bei: 1a, 1b, 1c; 2c
+      (1 wuerde also immer ausgefuehrt)
+       Fehlermeldung bei: 2b ("Wohin klettern?")
+
+
+BEMERKUNGEN
+===========
+
+   - Methoden der put_and_get (nimm/nehme) sollten so nicht versucht
+     werden zu ueberschreiben - dazu sind invis Container da
+   - benutzt man fuer <function> eine Closure, kann man die Fkt. auch
+     protected oder private deklarieren _und_ sie kann in einem
+     anderen Objekt sein
+   - bei Regeln wird an die ggf. gerufene Methode als zweiter Parameter
+     ein Array der erfuellenden Eingabeteile uebergeben:
+     "steck&@PRESENT&in&loch" bei Erfuellung -> ({<Objekt>,"in","loch})
+     - bei Nutzung von @PUT_GET_XXX koennen die Parameter wiederum
+       Arrays sein ("jede Hose" -> mehrere gueltige Objekte)
+   - juengere AddCmd ueberschreiben aeltere, bzw. werden vor diesen
+     ausgewertet
+   - @PUT_GET_XXX kosten sehr viel Auswertungszeit
 
 BEISPIELE (SIEHE AUCH ADDCMD_BSP):
-    // SIMPEL: ganz simpel, beinahe wie add_action
-    AddCmd("befiehl","action_befehlen");
-    ...
-    int action_befehlen(string str) {
-     if(!str || !strlen(str))
-      // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
-      notify_fail("Was willst du befehlen?!\n");
-     else {
-      write("Du befiehlst \""+str+"\", und alle folgen!\n");
-      say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
-      return 1;  // ERFOLG - Abbruch der Kommandoauswertung
-     }
-     return 0;  // MISSERFOLG - Fehlermeldung oben gesetzt
-    }
+   // SIMPEL: ganz simpel, beinahe wie add_action
+   AddCmd("befiehl","action_befehlen"); ... int action_befehlen(string
+   str) {
 
-    // SIMPEL .. weitere Beispiele
-    AddCmd(({"kletter","klettere"}),"action_klettern" );
-    AddCmd(({"renn","renne"}),#'action_rennen);
+      if(!str || !strlen(str))
+         // Fehlermeldung, falls gar keine Funktion 1 dafuer
+         zurueckgibt notify_fail("Was willst du befehlen?!n");
 
-    // REGELN: eine komplexere Regel
-    AddCmd("loesch|loesche|ersticke&feuer|brand|flammen&decke|wolldecke",
-           "action_loeschen",
-           "Was willst du loeschen?|Womit willst du loeschen?");
+      else {
+         write("Du befiehlst ""+str+"", und alle folgen!n");
+         say(TP->Name(WER)+" befiehlt ""+str+"", und du folgst!n");
+         return 1;  // ERFOLG - Abbruch der Kommandoauswertung
 
-    // REGELN: mit Platzhaltern im Fehlerstring
-    AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
-           #'action_huepfe,
-           "Willst du von etwas @verben?|Von wo willst du @verben?");
+      } return 0;  // MISSERFOLG - Fehlermeldung oben gesetzt
 
-    // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein (!)
-    AddCmd("kletter","fun_klettern",1);
+   }
 
-    // FALSCH: sehr schlecht, kein Imperativ verwendet
-    // ausserdem sollte man fuer solche Syntaxen AddReadDetail benutzen
-    AddCmd("lese","eval_lesen");
+   // SIMPEL .. weitere Beispiele
+   AddCmd(({"kletter","klettere"}),"action_klettern" );
+   AddCmd(({"renn","renne"}),#'action_rennen);
 
-    // SIMPLE REGEL OHNE METHODE
-    // mit Regeln kann man auch Aktivitaeten im Raum erlauben, ohne eine
-    // Funktion aufrufen zu muessen: die letzte Regel ist fuer Spieler
-    // unmoeglich zu erfuellen, die dazugehoerige Fehlermeldung wird mit
-    // dem ^ (write-Flag) versehen und entsprechend an den Spieler
-    // (und den Raum (hinter dem ^)) ausgegeben
-    AddCmd("spring|springe&herunter|runter&\n\bimpossible",0,
-           "Wohin oder wovon willst Du springen?|"
-           "Du springst vom Baum und kommst hart auf.^"
-           "@WER1 springt vom Baum und kommt hart auf.");
+   // REGELN: eine komplexere Regel AddCmd("loesch|loesche|ersticke&f
+   euer|brand|flammen&decke|wolldecke",
 
-SIEHE AUCH:
-    AddCmd_bsp, RemoveCmd(L), init(E)
-    Fehlermeldungen: notify_fail(E), _notify_fail(E)
-    Argumentstring: query_verb(E), _unparsed_args(L)
-    Sonstiges:  replace_personal(E), enable_commands(E)
-    Alternativen: AddAction(L), add_action(E)
+      "action_loeschen", "Was willst du loeschen?|Womit willst du
+      loeschen?");
+
+   // REGELN: mit Platzhaltern im Fehlerstring
+   AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
+
+      #'action_huepfe, "Willst du von etwas @verben?|Von wo willst du
+      @verben?");
+
+   // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein
+   (!) AddCmd("kletter","fun_klettern",1);
+
+   // FALSCH: sehr schlecht, kein Imperativ verwendet // ausserdem
+   sollte man fuer solche Syntaxen AddReadDetail benutzen
+   AddCmd("lese","eval_lesen");
+
+   // SIMPLE REGEL OHNE METHODE // mit Regeln kann man auch
+   Aktivitaeten im Raum erlauben, ohne eine // Funktion aufrufen zu
+   muessen: die letzte Regel ist fuer Spieler // unmoeglich zu
+   erfuellen, die dazugehoerige Fehlermeldung wird mit // dem ^
+   (write-Flag) versehen und entsprechend an den Spieler // (und den
+   Raum (hinter dem ^)) ausgegeben
+   AddCmd("spring|springe&herunter|runter&nbimpossible",0,
+
+      "Wohin oder wovon willst Du springen?|" "Du springst vom Baum
+      und kommst hart auf.^" "@WER1 springt vom Baum und kommt hart
+      auf.");
+
+
+SIEHE AUCH
+==========
+
+   AddCmd_bsp, RemoveCmd(L), init(E)
+   Fehlermeldungen: notify_fail(E), _notify_fail(E)
+   Argumentstring: query_verb(E), _unparsed_args(L)
+   Sonstiges:  replace_personal(E), enable_commands(E)
+   Alternativen: AddAction(L), add_action(E)
 
 30. Aug 2013 Gloinson
diff --git a/doc/lfun/AddCmd_bsp b/doc/lfun/AddCmd_bsp
index 6a4e177..ec8ff17 100644
--- a/doc/lfun/AddCmd_bsp
+++ b/doc/lfun/AddCmd_bsp
@@ -1,320 +1,382 @@
+
+AddCmd_bsp()
+************
+
+
 ADDCMD() - BEISPIELE
+====================
+
+
 FUNKTION
-    varargs void AddCmd(mixed cmd, mixed func, mixed flag);
+========
+
+   varargs void AddCmd(mixed cmd, mixed func, mixed flag);
+
 
 BEMERKUNGEN
-    Die hier aufgefuehrten Komplexbeispiele sind zum Verstaendnis gedacht,
-    daher fuehren sie oft Alternativen auf. Die letzte Variante ist dann
-    jeweils diejenige, welche am leichtesten das Problem loesen koennte.
-    Falls die einem zu komplex ist, hilft vielleicht die vorletzte.
+===========
+
+   Die hier aufgefuehrten Komplexbeispiele sind zum Verstaendnis gedacht,
+   daher fuehren sie oft Alternativen auf. Die letzte Variante ist dann
+   jeweils diejenige, welche am leichtesten das Problem loesen koennte.
+   Falls die einem zu komplex ist, hilft vielleicht die vorletzte.
+
 
 BEISPIELE
-    // SIMPEL: ganz simpel, beinahe wie add_action
-    AddCmd("befiehl","action_befehlen");
-    ...
-    int action_befehlen(string str) {
-     if(!str || !strlen(str))
-      // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
-      notify_fail("Was willst du befehlen?!\n");
-     else {
-      write("Du befiehlst \""+str+"\", und alle folgen!\n");
-      say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
-      return 1;		// ERFOLG - Abbruch der Kommandoauswertung
-     }
-     return 0;		// MISSERFOLG - Fehlermeldung oben gesetzt
+=========
+
+   // SIMPEL: ganz simpel, beinahe wie add_action
+   AddCmd("befiehl","action_befehlen");
+   ...
+   int action_befehlen(string str) {
+    if(!str || !strlen(str))
+     // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
+     notify_fail("Was willst du befehlen?!\n");
+    else {
+     write("Du befiehlst \""+str+"\", und alle folgen!\n");
+     say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
+     return 1;         // ERFOLG - Abbruch der Kommandoauswertung
     }
+    return 0;          // MISSERFOLG - Fehlermeldung oben gesetzt
+   }
 
-    // SIMPEL .. weitere Beispiele
-    AddCmd(({"kletter","klettere"}),"action_klettern" );
-    AddCmd(({"renn","renne"}),#'action_rennen);
+   // SIMPEL .. weitere Beispiele
+   AddCmd(({"kletter","klettere"}),"action_klettern" );
+   AddCmd(({"renn","renne"}),#'action_rennen);
 
-    // REGELN: eine komplexere Regel
-    AddCmd("loesch|loesche|ersticke&feuer|brand|flammen&decke|wolldecke",
-           "action_loeschen",
-           "Was willst du loeschen?|Womit willst du loeschen?");
+   // REGELN: eine komplexere Regel
+   AddCmd("loesch|loesche|ersticke&feuer|brand|flammen&decke|wolldecke",
+          "action_loeschen",
+          "Was willst du loeschen?|Womit willst du loeschen?");
 
-    // REGELN: mit Platzhaltern im Fehlerstring
-    AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
-           #'action_huepfe,
-           "Willst du von etwas @verben?|Von wo willst du @verben?");
+   // REGELN: mit Platzhaltern im Fehlerstring
+   AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
+          #'action_huepfe,
+          "Willst du von etwas @verben?|Von wo willst du @verben?");
 
-    // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein (!)
-    AddCmd("kletter","fun_klettern",1);
+   // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein (!)
+   AddCmd("kletter","fun_klettern",1);
 
-    // FALSCH: sehr schlecht, kein Imperativ verwendet
-    // ausserdem sollte man fuer solche Syntaxen AddReadDetail benutzen
-    AddCmd("lese","eval_lesen");
+   // FALSCH: sehr schlecht, kein Imperativ verwendet
+   // ausserdem sollte man fuer solche Syntaxen AddReadDetail benutzen
+   AddCmd("lese","eval_lesen");
 
-    // SIMPLE REGEL
-    static int action_jump(string str);        // Prototype (wegen closure)
-    ...
-    AddCmd("spring|springe|huepf|huepfe&von&baum|ast",#'action_jump,
-           "Willst Du von etwas @verben?|Wovon willst Du @verben?");
-    ...
-    static int action_jump(string str) {
-      write(break_string("Du springst vom Baum und kommst hart auf!",78));
-      this_player()->move((XXXROOM+"boden"), M_GO, 0,
-                          "springt unelegant vom Baum","faellt vom Baum");
-      this_player()->Defend(random(100),({DT_BLUDGEON}),([SP_RECURSIVE:1]),
-                            this_object());
-      return 1;
-    }
+   // SIMPLE REGEL
+   static int action_jump(string str);        // Prototype (wegen closure)
+   ...
+   AddCmd("spring|springe|huepf|huepfe&von&baum|ast",#'action_jump,
+          "Willst Du von etwas @verben?|Wovon willst Du @verben?");
+   ...
+   static int action_jump(string str) {
+     write(break_string("Du springst vom Baum und kommst hart auf!",78));
+     this_player()->move((XXXROOM+"boden"), M_GO, 0,
+                         "springt unelegant vom Baum","faellt vom Baum");
+     this_player()->Defend(random(100),({DT_BLUDGEON}),([SP_RECURSIVE:1]),
+                           this_object());
+     return 1;
+   }
 
-    // SIMPLE REGEL OHNE METHODE
-    // mit Regeln kann man auch Aktivitaeten im Raum erlauben, ohne eine
-    // Funktion aufrufen zu muessen: die letzte Regel ist fuer Spieler
-    // unmoeglich zu erfuellen, die dazugehoerige Fehlermeldung wird mit
-    // dem ^ (write-Flag) versehen und entsprechend an den Spieler
-    // (und den Raum (hinter dem ^)) ausgegeben
-    AddCmd("spring|springe&herunter|runter&\n\bimpossible",0,
-           "Wohin oder wovon willst Du springen?|"
-           "Du springst vom Baum und kommst hart auf.^"
-           "@WER1 springt vom Baum und kommt hart auf.");
+   // SIMPLE REGEL OHNE METHODE
+   // mit Regeln kann man auch Aktivitaeten im Raum erlauben, ohne eine
+   // Funktion aufrufen zu muessen: die letzte Regel ist fuer Spieler
+   // unmoeglich zu erfuellen, die dazugehoerige Fehlermeldung wird mit
+   // dem ^ (write-Flag) versehen und entsprechend an den Spieler
+   // (und den Raum (hinter dem ^)) ausgegeben
+   AddCmd("spring|springe&herunter|runter&\n\bimpossible",0,
+          "Wohin oder wovon willst Du springen?|"
+          "Du springst vom Baum und kommst hart auf.^"
+          "@WER1 springt vom Baum und kommt hart auf.");
 
 ## Komplexbeispiel: Regeln mit Fehlermeldungen ##
- ## Variante 1, OHNE REGELN ##
-    // bei Nichtverwendung von Regeln muss man Parameter selbst auswerten
-    AddCmd(({"bohr","bohre"}),#'action_bohren);
-    ...
-    private int action_bohren(string str) {
-      string *tmp;
-      notify_fail("Wo willst (etwas) Du bohren?\n");
-      if(!str) return 0;       // Tja, keine Argumente ...
-      tmp=explode(str," ");    // nach " " in Argument-Array aufspalten
-      if((i=member(tmp,"loch"))>=0) { // aha, ab jetzt uebernehmen wir :)
-       if((j=member(tmp[(i+1)..],"in"))<0 &&
-          (j=member(tmp[(i+1)..],"durch"))<0)
-         write("Willst Du das Loch in etwas bohren?\n");
-        else if((i=member(tmp[(j+1)..],"boden"))<0 &&
-                (i=member(tmp[(j+1)..],"erde"))<0)
-         write("In/Durch was willst du das Loch bohren?\n");
-        else {
-         write("Du bohrst ein Loch in den Boden.\n");
-         say(this_player()->Name(WER)+" bohrt ein Loch in den Boden.\n");
-        }
-        return 1;      // "bohre loch" war so eindeutig, dass nur diese
-                       // Methode gemeint sein konnte, also brechen wir die
-                       // weitere Auswertung auf jeden Fall ab (und geben
-                       // eine write-Fehlermeldung)
-      } // end if(..."loch")
-      return 0;        // "bohre" allein muss nicht diese Methode meinen,
-                       // also nur obige notify_fail()-Meldung, falls
-                       // sich nach dieser Methode gar keine sonst
-                       // angesprochen fuehlt
-    } // end fun
+   ## Variante 1, OHNE REGELN ##
+      // bei Nichtverwendung von Regeln muss man Parameter selbst
+      auswerten AddCmd(({"bohr","bohre"}),#'action_bohren); ...
+      private int action_bohren(string str) {
 
- ## Variante 1a, OHNE REGELN ##
-    // prinzipiell koennte die Methode action_bohren auch so
-    // aussehen, ist aber nicht ganz so flexibel:
-    private int action_bohren(string str) {
-     string tmp;
-     if(!str || (sprintf(str,"loch in erde%s",tmp)!=1 &&
-                 sprintf(str,"loch durch erde%s",tmp)!=1 &&
-                 sprintf(str,"loch in boden%s",tmp)!=1 &&
-                 sprintf(str,"loch durch boden%s",tmp)!=1))
-      notify_fail("Willst Du in irgendwas ein Loch bohren?\n");
-     else {
-      ...
-      return 1;
-     }
-     return 0;
-    }
+         string >>*<<tmp; notify_fail("Wo willst (etwas) Du
+         bohren?n"); if(!str) return 0;       // Tja, keine Argumente
+         ... tmp=explode(str," ");    // nach " " in Argument-Array
+         aufspalten if((i=member(tmp,"loch"))>=0) { // aha, ab jetzt
+         uebernehmen wir :)
 
- ## Variante 2, MIT REGEL ##
-    // das gleiche in etwa mal als einfache Regel
-    AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
-           "Was willst du (wohin) bohren?|"
-           "Willst du das Loch in etwas bohren?|"
-           "Wohin willst du das Loch bohren?");
-    ...
-    private int action_bohren(string str, mixed *param) {
-     write("Du bohrst ein Loch in den Boden.\n");
-     say(this_player()->Name(WER)+" bohrt ein Loch in den Boden.\n");
-     ...
-     return 1;
-    }
+            if((j=member(tmp[(i+1)..],"in"))<0 &&
+                     (j=member(tmp[(i+1)..],"durch"))<0)
 
- ## Variante 3, MIT REGEL UND FEHLERMELDUNG ##
-    // und nun mit Fehlermeldungen mit Ersetzungen, so dass wir mehr
-    // auf die Eingaben des Spielers eingehen
-    AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
-           "Was willst du (wohin) @verben?|"
-           "Willst du das Loch in etwas @verben?|"
-           "@WER3 was willst du das Loch @verben?");
-    ...
-    private int action_bohren(string str, mixed *param) ...
+                  write("Willst Du das Loch in etwas bohren?n");
 
- ## Variante 4, MIT REGEL, FEHLERMELDUNG UND RETURN 1 ##
-    // in Variante 1 kam sinnvollerweise sehr frueh der Abbruch mit
-    // "return 1;" und die Ausgabe von write-Fehlermeldungen,
-    // das koennen wir auch
-    AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
-           "Was willst du (wohin) @verben?|"
-           "Willst du das Loch in etwas @verben?^|"
-           "@WER3 was willst du das Loch @verben?^");
-    ...
-    private int action_bohren(string str, mixed *param) ...
+               else if((i=member(tmp[(j+1)..],"boden"))<0 &&
+                     (i=member(tmp[(j+1)..],"erde"))<0)
 
- ## Variante 5, MIT REGEL, FEHLERMELDUNG, RETURN 1, OHNE FUN ##
-    // und falls in action_bohren() nichts ausser Ausgaben passiert, koennen
-    // wir uns die auch ganz sparen indem wir eine nichterfuellbare Regel
-    // samt Fehlermeldung bauen
-    AddCmd("bohr|bohre&loch&in|durch&erde|boden&\nimpossible",0,
-           "Was willst du (wohin) @verben?|"
-           "Willst du das Loch in etwas @verben?^|"
-           "@WER3 was willst du das Loch @verben?^|"
-           "Du @verbst ein Loch @WER3 den Boden.^@WER1 @verbt "
-           "ein Loch @WER3 den Boden.");
+                  write("In/Durch was willst du das Loch bohren?n");
 
-   --- Ende Komplexbeispiel Regeln mit Fehlermeldungen ---
+               else {
+                  write("Du bohrst ein Loch in den Boden.n");
+                  say(this_player()->Name(WER)+" bohrt ein Loch in den
+                  Boden.n");
+
+               } return 1;      // "bohre loch" war so eindeutig, dass
+               nur diese
+
+                  // Methode gemeint sein konnte, also brechen wir die
+                  // weitere Auswertung auf jeden Fall ab (und geben
+                  // eine write-Fehlermeldung)
+
+         } // end if(..."loch") return 0;        // "bohre" allein
+         muss nicht diese Methode meinen,
+
+            // also nur obige notify_fail()-Meldung, falls // sich
+            nach dieser Methode gar keine sonst // angesprochen fuehlt
+
+      } // end fun
+
+   ## Variante 1a, OHNE REGELN ##
+      // prinzipiell koennte die Methode action_bohren auch so //
+      aussehen, ist aber nicht ganz so flexibel: private int
+      action_bohren(string str) {
+
+         string tmp; if(!str || (sprintf(str,"loch in erde%s",tmp)!=1
+         &&
+
+               sprintf(str,"loch durch erde%s",tmp)!=1 &&
+               sprintf(str,"loch in boden%s",tmp)!=1 &&
+               sprintf(str,"loch durch boden%s",tmp)!=1))
+
+            notify_fail("Willst Du in irgendwas ein Loch bohren?n");
+
+         else {
+            ... return 1;
+
+         } return 0;
+
+      }
+
+   ## Variante 2, MIT REGEL ##
+      // das gleiche in etwa mal als einfache Regel
+      AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
+
+         "Was willst du (wohin) bohren?|" "Willst du das Loch in etwas
+         bohren?|" "Wohin willst du das Loch bohren?");
+
+      ... private int action_bohren(string str, mixed >>*<<param) {
+
+         write("Du bohrst ein Loch in den Boden.n");
+         say(this_player()->Name(WER)+" bohrt ein Loch in den
+         Boden.n"); ... return 1;
+
+      }
+
+   ## Variante 3, MIT REGEL UND FEHLERMELDUNG ##
+      // und nun mit Fehlermeldungen mit Ersetzungen, so dass wir mehr
+      // auf die Eingaben des Spielers eingehen
+      AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
+
+         "Was willst du (wohin) @verben?|" "Willst du das Loch in
+         etwas @verben?|" "@WER3 was willst du das Loch @verben?");
+
+      ... private int action_bohren(string str, mixed >>*<<param) ...
+
+   ## Variante 4, MIT REGEL, FEHLERMELDUNG UND RETURN 1 ##
+      // in Variante 1 kam sinnvollerweise sehr frueh der Abbruch mit
+      // "return 1;" und die Ausgabe von write-Fehlermeldungen, // das
+      koennen wir auch
+      AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
+
+         "Was willst du (wohin) @verben?|" "Willst du das Loch in
+         etwas @verben?^|" "@WER3 was willst du das Loch @verben?^");
+
+      ... private int action_bohren(string str, mixed >>*<<param) ...
+
+   ## Variante 5, MIT REGEL, FEHLERMELDUNG, RETURN 1, OHNE FUN ##
+         // und falls in action_bohren() nichts ausser Ausgaben
+         passiert, koennen // wir uns die auch ganz sparen indem wir
+         eine nichterfuellbare Regel // samt Fehlermeldung bauen
+         AddCmd("bohr|bohre&loch&in|durch&erde|boden&nimpossible",0,
+
+            "Was willst du (wohin) @verben?|" "Willst du das Loch in
+            etwas @verben?^|" "@WER3 was willst du das Loch
+            @verben?^|" "Du @verbst ein Loch @WER3 den Boden.^@WER1
+            @verbt " "ein Loch @WER3 den Boden.");
+
+      --- Ende Komplexbeispiel Regeln mit Fehlermeldungen ---
 
 ## Komplexbeispiel: Spezialregeln @PRESENT und @ID ##
- ## Variante 1, OHNE REGELN ##
-    // oft agieren Kommandos auf Objekten im Raum, diese muessen dabei per
-    // present() identifiziert werden:
-    // Beispiel ist ein Geldautomat (den man besser mit einem Container
-    // mit PreventInsert() basteln sollte)
-    AddCmd(({"stopf","stopfe"}),#'action_stopf);
-    ...
-    private int action_stopf(string str) {
-     string tmp,tmp2;
-     object o;
+   ## Variante 1, OHNE REGELN ##
+      // oft agieren Kommandos auf Objekten im Raum, diese muessen
+      dabei per // present() identifiziert werden: // Beispiel ist ein
+      Geldautomat (den man besser mit einem Container // mit
+      PreventInsert() basteln sollte)
+      AddCmd(({"stopf","stopfe"}),#'action_stopf); ... private int
+      action_stopf(string str) {
 
-     if(str && (sprintf("%s in automat%s",tmp,tmp2)==2 ||
-                sprintf("%s in geldautomat%s",tmp,tmp2)==2 ||
-                sprintf("%s in bankomat%s",tmp,tmp2)==2) {
-      o=present(tmp,this_player());
-      if(o) {
-       if(o->QueryProp(...)) {
-        write(break_string(
-         "Du stopfst "+o->name(WEN,1)+" in den Automaten.",78));
-        say(...);
-       } else {
-        write(break_string(
-         "Du versuchst "+o->name(WEN,1)+" in den Automaten zu stopfen, "
-         "aber "+o->QueryPronoun(WER)+" passt nicht hinein.",78));
-        say(...);
-       }
-      } else {
-       write("Was willst du in den Automaten stopfen?\n");
-       say(....);
+         string tmp,tmp2; object o;
+
+         if(str && (sprintf("%s in automat%s",tmp,tmp2)==2 ||
+               sprintf("%s in geldautomat%s",tmp,tmp2)==2 ||
+               sprintf("%s in bankomat%s",tmp,tmp2)==2) {
+
+            o=present(tmp,this_player()); if(o) {
+
+               if(o->QueryProp(...)) {
+                  write(break_string(
+                     "Du stopfst "+o->name(WEN,1)+" in den
+                     Automaten.",78));
+
+                  say(...);
+
+               } else {
+                  write(break_string(
+                     "Du versuchst "+o->name(WEN,1)+" in den Automaten
+                     zu stopfen, " "aber "+o->QueryPronoun(WER)+"
+                     passt nicht hinein.",78));
+
+                  say(...);
+
+               }
+
+            } else {
+               write("Was willst du in den Automaten stopfen?n");
+               say(....);
+
+            } return 1;
+
+         } notify_fail("Was willst du wohin stecken?n"); return 0;
+
       }
-      return 1;
-     }
-     notify_fail("Was willst du wohin stecken?\n");
-     return 0;
-    }
 
- ## Variante 2, MIT REGEL ##
-    // einerseits koennen wir das Finden von Objekten in Inv und Env
-    // integrieren und uns andererseits das Aufzaehlen aller IDs des
-    // Automaten ersparen
-    AddCmd("steck|stecke&@PRESENT&in&@ID",#'action_stopf,
-           "Was willst du wohin stopfen?|"
-           "Willst du @WEN2 in etwas stopfen?|"
-           "Wohinein willst du @WEN2 stopfen?");
-    ...
-    // dabei werden wie immer die gefunden Matches als Parameterarray
-    // uebergeben ... und die @PRESENT und @ID als Objekte!
-    private int action_stopf(string str, mixed *param) {
-     if(param[0]->QueryProp(...)) {
-      write(break_string(
-       "Du stopfst "+param[0]->name(WEN,1)+" in den Automaten.",78));
-      say(...);
-     } else {
-      write(break_string(
-       "Du versuchst "+param[0]->name(WEN,1)+" in den Automaten zu "
-       "stopfen, aber "+param[0]->QueryPronoun(WER)+" passt nicht "
-       "hinein.",78));
-      say(...);
-     }
-     return 1;
-    }
+   ## Variante 2, MIT REGEL ##
+         // einerseits koennen wir das Finden von Objekten in Inv und
+         Env // integrieren und uns andererseits das Aufzaehlen aller
+         IDs des // Automaten ersparen
+         AddCmd("steck|stecke&@PRESENT&in&@ID",#'action_stopf,
 
-   --- Ende Komplexbeispiel Spezialregeln @PRESENT und @ID  ---
+            "Was willst du wohin stopfen?|" "Willst du @WEN2 in etwas
+            stopfen?|" "Wohinein willst du @WEN2 stopfen?");
+
+         ... // dabei werden wie immer die gefunden Matches als
+         Parameterarray // uebergeben ... und die @PRESENT und @ID als
+         Objekte! private int action_stopf(string str, mixed
+         >>*<<param) {
+
+            if(param[0]->QueryProp(...)) {
+               write(break_string(
+                  "Du stopfst "+param[0]->name(WEN,1)+" in den
+                  Automaten.",78));
+
+               say(...);
+
+            } else {
+               write(break_string(
+                  "Du versuchst "+param[0]->name(WEN,1)+" in den
+                  Automaten zu " "stopfen, aber
+                  "+param[0]->QueryPronoun(WER)+" passt nicht "
+                  "hinein.",78));
+
+               say(...);
+
+            } return 1;
+
+         }
+
+      --- Ende Komplexbeispiel Spezialregeln @PRESENT und @ID  ---
 
 ## Komplexbeispiel: gleiches Verb, mehrere Regeln ##
- // Das Problem mehrerer Regeln fuer ein Kommandoverb besteht darin, dass
- // letztlich nur eine der Fehlermeldungen zum Tragen kommt - welche
- // genau ist etwas vage.
- // Dabei kann man sich auf eines verlassen: juengere AddCmd werden
- // zuerst ausgewertet. Wenn sich das aendert, tretet euren EM.
+   // Das Problem mehrerer Regeln fuer ein Kommandoverb besteht darin,
+   dass // letztlich nur eine der Fehlermeldungen zum Tragen kommt -
+   welche // genau ist etwas vage. // Dabei kann man sich auf eines
+   verlassen: juengere AddCmd werden // zuerst ausgewertet. Wenn sich
+   das aendert, tretet euren EM.
 
- ## Problem 1: Mehrere Regeln weil mehrere Zwecke ##
-    ## Variante 1 - GLEICHLAUTENDE FEHLERMELDUNG
-    // fuer alles wird eine identische Fehlermeldung gesetzt, das ist
-    // natuerlich nicht sehr flexibel oder schoen
-    AddCmd("kriech|krieche&hoch|hinauf|hinaus|heraus|raus",#'result_kriech,
-           "Wohin willst Du kriechen?");
-    AddCmd("kriech|krieche&nach&oben",#'result_kriech,
-           "Wohin willst Du kriechen??|Wohin willst Du kriechen?");
-    AddCmd("kriech|krieche&aus&loch|grube|falle",#'result_kriech);
-           "Wohin willst Du kriechen?|Wohin willst Du kriechen?");
+   ## Problem 1: Mehrere Regeln weil mehrere Zwecke ##
+      ## Variante 1 - GLEICHLAUTENDE FEHLERMELDUNG // fuer alles wird
+      eine identische Fehlermeldung gesetzt, das ist // natuerlich
+      nicht sehr flexibel oder schoen AddCmd("kriech|krieche&hoch|hin
+      auf|hinaus|heraus|raus",#'result_kriech,
 
-    // oder man versucht eine bessere Regel zu schaffen, was hier durch
-    // die Moeglichkeit von zwei oder drei Parameter unmoeglich ist
+         "Wohin willst Du kriechen?");
 
-    ## Variante 2 - EIGENE AUSWERTUNG
-    // es bietet sich also eigene Weiterauswertung an, was durch die
-    // Uebergabe der getriggerten Verben erleichtert wird:
-    AddCmd("kriech|krieche&hoch|hinauf|hinaus|heraus|raus|aus|nach",
-           #'result_kriech,
-           "Wohin willst Du kriechen?");
-    ...
-    static int result_kriech(string str, mixed *extra) {
-      if(member(extra,"aus")>=0 &&
-         !sizeof(({str}),"*.\\<(hoehle|grube|falle)\\>.*"))
-       notify_fail("Woraus willst Du kriechen?\n");
-      else if(member(extra,"nach")>=0 && strstr(str,"oben")<0)
-       notify_fail("In welche Richtung willst Du kriechen?\n");
-      else if(this_player()->QueryAttribute(A_DEX)>10 ||
-              member(holding_root,this_player())) {
-        write("Du kriechst mit Muehe heraus.\n");
-        this_player()->move((XXXROOM+"draussen"), M_GO, 0,
-                            "kriecht mit Muehe aus der Grube",
-                            "kriecht aus einer Grube");
-        return 1;
-      } else
-        write("Du bist zu ungeschickt, halt Dich irgendwo fest.\n");
-        return 1;
-      }
-      return 0;
-    }
-    // (ob sich der Aufwand fuer diese Beispielsyntax lohnt ist fraglich)
+      AddCmd("kriech|krieche&nach&oben",#'result_kriech,
+         "Wohin willst Du kriechen??|Wohin willst Du kriechen?");
 
- ## Problem 2: mehrere Regeln, weil optionale Parameter ##
-    // Manchmal will man optionale Parameter erlauben, die aber eine
-    // Wirkung zeigen sollen:
-    AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart,
-           "Was oder wen willst du @verben?|"
-           "Wie willst du @WEN2 schlagen?");
-    AddCmd("schlag|schlage&@ID",#'action_schlag,
-           "Was oder wen willst du @verben?");
+      AddCmd("kriech|krieche&aus&loch|grube|falle",#'result_kriech);
+         "Wohin willst Du kriechen?|Wohin willst Du kriechen?");
 
-    // Da juengere AddCmd aelteren vorgehen, wird die komplexere Regel samt
-    // ihrer Fehlermeldung nie ausgewertet, da ein "schlag ball hart" auch
-    // die zweite Regel triggert.
+      // oder man versucht eine bessere Regel zu schaffen, was hier
+      durch // die Moeglichkeit von zwei oder drei Parameter
+      unmoeglich ist
 
-    // anders herum:
-    AddCmd("schlag|schlage&@ID",#'action_schlag,
-           "Was oder wen willst du @verben?");
-    AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart,
-           "Was oder wen willst du @verben?|"
-           "Wie willst du @WEN2 schlagen?");
+      ## Variante 2 - EIGENE AUSWERTUNG // es bietet sich also eigene
+      Weiterauswertung an, was durch die // Uebergabe der getriggerten
+      Verben erleichtert wird:
+      AddCmd("kriech|krieche&hoch|hinauf|hinaus|heraus|raus|aus|nach",
 
-    // Jetzt wird die komplexere Regel zuerst ueberprueft und triggert
-    // auch die richtige Funktion.
-    // Leider kommt die Fehlermeldung nie zum Tragen, denn was durch Regel 2
-    // durchfaellt, triggert entweder Regel 1 oder faellt auch durch Regel 1
-    // durch und ueberschreibt dabei die Meldung.
+         #'result_kriech, "Wohin willst Du kriechen?");
 
-    AddCmd("schlag|schlage&@ID",#'action_schlag,
-           "Was oder wen willst du wie @verben?");
-    AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart);
+      ... static int result_kriech(string str, mixed >>*<<extra) {
 
-    // Fast perfekt. Besser wird es nicht.
+         if(member(extra,"aus")>=0 &&
+               !sizeof(({str}),"*.\<(hoehle|grube|falle)\>.*"))
 
+            notify_fail("Woraus willst Du kriechen?n");
 
-    --- Ende Komplexbeispiel mehrere Regeln ---
+         else if(member(extra,"nach")>=0 && strstr(str,"oben")<0)
+            notify_fail("In welche Richtung willst Du kriechen?n");
+
+         else if(this_player()->QueryAttribute(A_DEX)>10 ||
+               member(holding_root,this_player())) {
+
+            write("Du kriechst mit Muehe heraus.n");
+            this_player()->move((XXXROOM+"draussen"), M_GO, 0,
+
+               "kriecht mit Muehe aus der Grube", "kriecht aus einer
+               Grube");
+
+            return 1;
+
+         } else
+            write("Du bist zu ungeschickt, halt Dich irgendwo
+            fest.n"); return 1;
+
+         } return 0;
+
+      } // (ob sich der Aufwand fuer diese Beispielsyntax lohnt ist
+      fraglich)
+
+   ## Problem 2: mehrere Regeln, weil optionale Parameter ##
+      // Manchmal will man optionale Parameter erlauben, die aber eine
+      // Wirkung zeigen sollen:
+      AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart,
+
+         "Was oder wen willst du @verben?|" "Wie willst du @WEN2
+         schlagen?");
+
+      AddCmd("schlag|schlage&@ID",#'action_schlag,
+         "Was oder wen willst du @verben?");
+
+      // Da juengere AddCmd aelteren vorgehen, wird die komplexere
+      Regel samt // ihrer Fehlermeldung nie ausgewertet, da ein
+      "schlag ball hart" auch // die zweite Regel triggert.
+
+      // anders herum: AddCmd("schlag|schlage&@ID",#'action_schlag,
+
+         "Was oder wen willst du @verben?");
+
+      AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart,
+         "Was oder wen willst du @verben?|" "Wie willst du @WEN2
+         schlagen?");
+
+      // Jetzt wird die komplexere Regel zuerst ueberprueft und
+      triggert // auch die richtige Funktion. // Leider kommt die
+      Fehlermeldung nie zum Tragen, denn was durch Regel 2 //
+      durchfaellt, triggert entweder Regel 1 oder faellt auch durch
+      Regel 1 // durch und ueberschreibt dabei die Meldung.
+
+      AddCmd("schlag|schlage&@ID",#'action_schlag,
+         "Was oder wen willst du wie @verben?");
+
+      AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart);
+
+      // Fast perfekt. Besser wird es nicht.
+
+      --- Ende Komplexbeispiel mehrere Regeln ---
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/AddDefender b/doc/lfun/AddDefender
index 3eb7923..5b33e14 100644
--- a/doc/lfun/AddDefender
+++ b/doc/lfun/AddDefender
@@ -1,34 +1,50 @@
+
 AddDefender()
+*************
 
-FUNKTION:
-	void AddDefender(object friend);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	friend
-	  Objekt (normal Lebewesen), welches zukuenftig ueber Angriffe
-	  informiert werden soll oder diese sogar abwehrt.
+   void AddDefender(object friend);
 
-BESCHREIBUNG:
-	Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
-	einen solchen Angriff per InformDefend() informieren oder ihnen
-	sogar die Moeglichkeit geben, per DefendOther() direkt in den
-	laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
-	Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
-	als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
-	Name der Funktion.
-	Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
-	abgespeichert und koennen dort abgerufen werden. Natuerlich kann
-	man weitere Objekte direkt dort eintragen, jedoch sollte man die
-	hierfuer bereitgestellte Funktionen AddDefender() verwenden.
-	Zum Loeschen von Eintraegen im Array steht ebenfalls eine Funktion
-	bereit: RemoveDefender().
 
-SIEHE AUCH:
-	RemoveDefender(), InformDefend(), DefendOther(),
-	P_DEFENDERS, /std/living/combat.c
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   friend
+     Objekt (normal Lebewesen), welches zukuenftig ueber Angriffe
+     informiert werden soll oder diese sogar abwehrt.
+
+
+BESCHREIBUNG
+============
+
+   Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
+   einen solchen Angriff per InformDefend() informieren oder ihnen
+   sogar die Moeglichkeit geben, per DefendOther() direkt in den
+   laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
+   Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
+   als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
+   Name der Funktion.
+   Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
+   abgespeichert und koennen dort abgerufen werden. Natuerlich kann
+   man weitere Objekte direkt dort eintragen, jedoch sollte man die
+   hierfuer bereitgestellte Funktionen AddDefender() verwenden.
+   Zum Loeschen von Eintraegen im Array steht ebenfalls eine Funktion
+   bereit: RemoveDefender().
+
+
+SIEHE AUCH
+==========
+
+   RemoveDefender(), InformDefend(), DefendOther(),
+   P_DEFENDERS, /std/living/combat.c
+
 Last modified: Thu Jul 29 18:48:45 1999 by Patryn
diff --git a/doc/lfun/AddDetail b/doc/lfun/AddDetail
index 229197b..951b48a 100644
--- a/doc/lfun/AddDetail
+++ b/doc/lfun/AddDetail
@@ -1,91 +1,110 @@
+
 AddDetail()
+***********
 
-FUNKTION:
-    void AddDetail(string|string* keys,
-                   string|string*|mapping|closure desc);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den Namen der Details.
-    desc
-      String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+   void AddDetail(string|string* keys,
+                  string|string*|mapping|closure desc);
 
-BESCHREIBUNG:
-    Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
-    bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
-    Beschreibung <desc> ab:
-      <desc> ist ein String.
-        Beim Untersuchen wird dieser String zurueckgegeben.
-      <desc> ist ein String-Array.
-        Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
-      <desc> ist ein Mapping.
-        Das Mapping muss folgenden Aufbau haben:
-          ([0:        "Defaulttext",
-            "rasse1": "r1text", ...]).
 
-        Falls fuer die Rasse des das Detail untersuchenden Spielers ein
-        Eintrag im Mapping existiert, wird der entsprechende Text
-        zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
-        rassenabhaengige Details moeglich. Siehe auch die Beispiele.
-      <desc> ist eine Closure.
-        In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
-        zurueckgegeben. Die Closure bekommt dabei den Namen des Details
-        als Parameter uebergeben.
+DEFINIERT IN
+============
 
-    Fuer Details koennen Forscherpunkte eingetragen werden.
+   /std/thing/description.c
 
-BEISPIELE:
-    Ein schlichtes Detail:
 
-      AddDetail(({"sofa","couch"}), "Eine kleine Couch.\n");
+ARGUMENTE
+=========
 
-    Laengere Details sollten hierbei nicht per Hand umgebrochen werden,
-    sondern man kann hierzu die Funktion break_string() nutzen:
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
 
-      AddDetail("detail", break_string(
-        "Du wolltest es ja nicht anders, jetzt musst Du Dir dieses "
-        "fuerchterlich lange Detail durchlesen!!!", 78));
 
-    Noetige Zeilenumbrueche bei Zeilenlaengen groesser 77 werden so
-    automatisch generiert.
-    Ein rassenabhaengiges Detail:
+BESCHREIBUNG
+============
 
-      AddDetail(({"bett","bettchen"}),
-        ([0      :"Eine kleines Bett.\n", // Der Defaulttext
-          "zwerg":                        // Die Rasse klein schreiben
-                "Das Bett laedt geradezu zu einem Nickerchen ein.\n"]));
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+       Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+           "rasse1": "r1text", ...]).
 
-    Und nun ein Detail mit Closure (diese Version ersetzt das Verhalten
-     von AddSpecialDetail).
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
 
-      int hebel_betaetigt;
-      ...
-      string hebel(string str); // Funktion bekannt machen (Prototyping)
-      ...
-      AddDetail(({"hebel","schalter"}), #'hebel);
-      ...
-      string hebel(string key) {
-        if(hebel_betaetigt)
-          return "Der "+capitalize(key)+" steht auf EIN.\n";
-        else
-          return "Der "+capitalize(key)+" steht auf AUS.\n";
-      }
+   Fuer Details koennen Forscherpunkte eingetragen werden.
 
-    Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
-    ob das Flag hebel_betaetigt gesetzt ist oder nicht.
 
-SIEHE AUCH:
-    Setzen:    AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
-               P_TOUCH_DETAILS, P_SPECIAL_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+BEISPIELE
+=========
+
+   Ein schlichtes Detail:
+
+     AddDetail(({"sofa","couch"}), "Eine kleine Couch.\n");
+
+   Laengere Details sollten hierbei nicht per Hand umgebrochen werden,
+   sondern man kann hierzu die Funktion break_string() nutzen:
+
+     AddDetail("detail", break_string(
+       "Du wolltest es ja nicht anders, jetzt musst Du Dir dieses "
+       "fuerchterlich lange Detail durchlesen!!!", 78));
+
+   Noetige Zeilenumbrueche bei Zeilenlaengen groesser 77 werden so
+   automatisch generiert.
+   Ein rassenabhaengiges Detail:
+
+     AddDetail(({"bett","bettchen"}),
+       ([0      :"Eine kleines Bett.\n", // Der Defaulttext
+         "zwerg":                        // Die Rasse klein schreiben
+               "Das Bett laedt geradezu zu einem Nickerchen ein.\n"]));
+
+   Und nun ein Detail mit Closure (diese Version ersetzt das Verhalten
+    von AddSpecialDetail).
+
+     int hebel_betaetigt;
+     ...
+     string hebel(string str); // Funktion bekannt machen (Prototyping)
+     ...
+     AddDetail(({"hebel","schalter"}), #'hebel);
+     ...
+     string hebel(string key) {
+       if(hebel_betaetigt)
+         return "Der "+capitalize(key)+" steht auf EIN.\n";
+       else
+         return "Der "+capitalize(key)+" steht auf AUS.\n";
+     }
+
+   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
+   ob das Flag hebel_betaetigt gesetzt ist oder nicht.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddDrink b/doc/lfun/AddDrink
index 6b99e08..4d722ec 100644
--- a/doc/lfun/AddDrink
+++ b/doc/lfun/AddDrink
@@ -1,12 +1,18 @@
+
 AddDrink()
+**********
 
-BEMERKUNGEN:
 
-        Die Funktion AddDrink() sollte NICHT MEHR BENUTZT werden.
-        Bitte AddToMenu() verwenden.
+BEMERKUNGEN
+===========
 
-SIEHE AUCH:
-	AddToMenu(), RemoveFromMenu()
+   Die Funktion AddDrink() sollte NICHT MEHR BENUTZT werden.
+   Bitte AddToMenu() verwenden.
 
-----------------------------------------------------------------------------
+
+SIEHE AUCH
+==========
+
+   AddToMenu(), RemoveFromMenu()
+
 Last modified: Fri Mar 03 13:23:00 2000 by Paracelsus
diff --git a/doc/lfun/AddExit b/doc/lfun/AddExit
index 9942ef3..384975f 100644
--- a/doc/lfun/AddExit
+++ b/doc/lfun/AddExit
@@ -1,91 +1,114 @@
+
 AddExit()
-FUNKTION:
-     void AddExit(string|string* cmd, closure|string dest);
+*********
 
-DEFINIERT IN:
-     /std/room/exits
 
-ARGUMENTE:
-     string/string* cmd
-          die Richtung(en), in die der Ausgang fuehrt
-     string/closure dest
-          das Ziel des Ausgangs mit Text/Closure
+FUNKTION
+========
 
-BESCHREIBUNG:
+   void AddExit(string|string* cmd, closure|string dest);
 
-     Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des
-     Ausgangs haengt ab von dest:
 
-     - ein String:
-       - mit einem Dateinamen:
-         Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet.
-       - der Form "<msg>#dateiname"
-         Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet,
-         bei der Benutzung wird jedoch statt "<name> geht nach <richtung>"
-         "<name> geht nach <msg>" ausgegeben.
-     - eine Closure:
-       Die Closure wird bei Nutzung des Ausgangs aufgerufen. Das entspricht
-       eine SpecialExit - in der gerufenen Funktion muss man den Spieler
-       selbst in den Zielraum bewegen.
-       Gegebenenfalls kann das durch AddCmd() ersetzt werden.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Man kann fuer den Dateinamen des Zielraumes auch einen relativen Pfad
-     angeben. Die Auswertung erfolgt nach folgendem Schema:
-     - "./<dateiname>"
-       Es wird ein Zielraum relativ zum gleichen Verzeichnis wie dieser
-       Raum angesprochen.
-     - "../<dateiname>"
-       Es wird ein Zielraum relativ zur Verzeichnisebene ueber der
-       dieses Raumes angesprochen (analog mit mehrerern "../..")
+   /std/room/exits
 
-     Mittels P_HIDE_EXITS kann man Ausgaenge verstecken.
 
-     Bei der Benutzung eines Ausgangs wird der Hook H_HOOK_EXIT_USE
-     ausgeloest.
+ARGUMENTE
+=========
 
-BEISPIELE:
-     ### normale Ausgaenge ###
-     // Beim Kommando "sueden" kommt: "<name> geht nach Sueden."
-     AddExit("sueden", "/gilden/abenteurer");
+   string/string* cmd
+        die Richtung(en), in die der Ausgang fuehrt
+   string/closure dest
+        das Ziel des Ausgangs mit Text/Closure
 
-     // Beim Kommando "sueden" kommt: "<name> geht in die Gilde."
-     AddExit("sueden", "in die Gilde#/gilden/abenteurer");
 
-     ### Ausgaenge mit relativen Pfaden ###
-     // Der Name des Raumes sei "/d/inseln/wargon/hafen1"
-     // Dieser Ausgang geht nach "/d/inseln/wargon/kneipe":
-     AddExit("norden", "./kneipe" );
+BESCHREIBUNG
+============
 
-     // Und dieser nach "/d/inseln/anthea/anlege":
-     AddExit("sueden", "../anthea/anlege" );
+   Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des
+   Ausgangs haengt ab von dest:
 
-     ### dynamische Ausgaenge ###
-     // ein Ausgang soll nur von Froeschen benutzbar sein:
+   - ein String:
+     - mit einem Dateinamen:
+       Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet.
+     - der Form "<msg>#dateiname"
+       Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet,
+       bei der Benutzung wird jedoch statt "<name> geht nach <richtung>"
+       "<name> geht nach <msg>" ausgegeben.
+   - eine Closure:
+     Die Closure wird bei Nutzung des Ausgangs aufgerufen. Das entspricht
+     eine SpecialExit - in der gerufenen Funktion muss man den Spieler
+     selbst in den Zielraum bewegen.
+     Gegebenenfalls kann das durch AddCmd() ersetzt werden.
 
-     static int lochfkt(string dir);		// Prototyp
-     ...
-     AddExit("loch", #'lochfkt);
-     // auch identisch zu:
-     // AddSpecialExit("loch", #'lochfkt); [eine Closure] oder
-     // AddSpecialExit("loch", "lochfkt"); [ein Funktionsname]
 
-     static int lochfkt(string dir) {
-       if (!(this_player()->QueryProp(P_FROG))) {
-         // Kein Frosch => passt nicht!
-         notify_fail("Du bist zu gross!\n");
-         return 0;
-       }
-       // Meldungen werden im move() gleich mitgegeben
-       return this_player()->move("/room/loch", M_GO, 0,
-                    "huepft ins Loch", "huepft herein");
+BEMERKUNGEN
+===========
+
+   Man kann fuer den Dateinamen des Zielraumes auch einen relativen Pfad
+   angeben. Die Auswertung erfolgt nach folgendem Schema:
+   - "./<dateiname>"
+     Es wird ein Zielraum relativ zum gleichen Verzeichnis wie dieser
+     Raum angesprochen.
+   - "../<dateiname>"
+     Es wird ein Zielraum relativ zur Verzeichnisebene ueber der
+     dieses Raumes angesprochen (analog mit mehrerern "../..")
+
+   Mittels P_HIDE_EXITS kann man Ausgaenge verstecken.
+
+   Bei der Benutzung eines Ausgangs wird der Hook H_HOOK_EXIT_USE
+   ausgeloest.
+
+
+BEISPIELE
+=========
+
+   ### normale Ausgaenge ###
+   // Beim Kommando "sueden" kommt: "<name> geht nach Sueden."
+   AddExit("sueden", "/gilden/abenteurer");
+
+   // Beim Kommando "sueden" kommt: "<name> geht in die Gilde."
+   AddExit("sueden", "in die Gilde#/gilden/abenteurer");
+
+   ### Ausgaenge mit relativen Pfaden ###
+   // Der Name des Raumes sei "/d/inseln/wargon/hafen1"
+   // Dieser Ausgang geht nach "/d/inseln/wargon/kneipe":
+   AddExit("norden", "./kneipe" );
+
+   // Und dieser nach "/d/inseln/anthea/anlege":
+   AddExit("sueden", "../anthea/anlege" );
+
+   ### dynamische Ausgaenge ###
+   // ein Ausgang soll nur von Froeschen benutzbar sein:
+
+   static int lochfkt(string dir);            // Prototyp
+   ...
+   AddExit("loch", #'lochfkt);
+   // auch identisch zu:
+   // AddSpecialExit("loch", #'lochfkt); [eine Closure] oder
+   // AddSpecialExit("loch", "lochfkt"); [ein Funktionsname]
+
+   static int lochfkt(string dir) {
+     if (!(this_player()->QueryProp(P_FROG))) {
+       // Kein Frosch => passt nicht!
+       notify_fail("Du bist zu gross!\n");
+       return 0;
      }
+     // Meldungen werden im move() gleich mitgegeben
+     return this_player()->move("/room/loch", M_GO, 0,
+                  "huepft ins Loch", "huepft herein");
+   }
 
-SIEHE AUCH:
-     AddSpecialExit(), GetExits(),
-     RemoveExit(), RemoveSpecialExit(),
-     GuardExit(),
-     H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+
+SIEHE AUCH
+==========
+
+   AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/AddExp b/doc/lfun/AddExp
index 8baed55..a8bf488 100644
--- a/doc/lfun/AddExp
+++ b/doc/lfun/AddExp
@@ -1,32 +1,56 @@
+
 AddExp()
-FUNKTION:
-     int AddExp(int e)
+********
 
-DEFINIERT IN:
-     /std/living/life.c
 
-ARGUMENTE:
-     int e - Anzahl der hinzuzufuegenden (abzuziehenden) XP
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Dem Living werden e XP auf seine bisherigen P_XP addiert.
+   int AddExp(int e)
 
-     Falls es sich um einen Spieler mit P_KILLS>0 handelt und
-     e positiv ist, bekommt der Spieler keine XP gutgeschrieben.
 
-     P_LAST_XP wird aktualisiert.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-     - positive und negative Werte sind moeglich
-     - P_XP wird nicht <0 gesetzt.
+   /std/living/life.c
 
-RUECKGABEWERT:
-     int - neuer XP-Wert
 
-SIEHE AUCH:
-     Funktionen:  do_damage(), DistributeExp()
-     Properties:  P_XP, P_LAST_XP
-     Sonstiges:   P_NO_XP, P_NO_SCORE
-                  create_default_npc()
+ARGUMENTE
+=========
 
-14.Feb 2007 Gloinson
\ No newline at end of file
+   int e - Anzahl der hinzuzufuegenden (abzuziehenden) XP
+
+
+BESCHREIBUNG
+============
+
+   Dem Living werden e XP auf seine bisherigen P_XP addiert.
+
+   Falls es sich um einen Spieler mit P_KILLS>0 handelt und
+   e positiv ist, bekommt der Spieler keine XP gutgeschrieben.
+
+   P_LAST_XP wird aktualisiert.
+
+
+BEMERKUNG
+=========
+
+   - positive und negative Werte sind moeglich
+   - P_XP wird nicht <0 gesetzt.
+
+
+RUECKGABEWERT
+=============
+
+   int - neuer XP-Wert
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  do_damage(), DistributeExp()
+   Properties:  P_XP, P_LAST_XP
+   Sonstiges:   P_NO_XP, P_NO_SCORE
+                create_default_npc()
+
+14.Feb 2007 Gloinson
diff --git a/doc/lfun/AddExtraLook b/doc/lfun/AddExtraLook
index 526a851..7436f7e 100644
--- a/doc/lfun/AddExtraLook
+++ b/doc/lfun/AddExtraLook
@@ -1,96 +1,130 @@
+
 AddExtraLook()
-varargs int AddExtraLook(string look, [int duration, string key,
-                         string lookende, object ob]);
-DEFINIERT IN:
+**************
+
+AddExtraLook() varargs int AddExtraLook(string look, [int duration,
+string key,
+
+   string lookende, object ob]);
+
+
+DEFINIERT IN
+============
+
    /std/living/description.c
 
-BESCHREIBUNG:
+
+BESCHREIBUNG
+============
+
    Der Extralook erscheint in der Langbeschreibung des Lebewesens.
    Eintraege koennen mit dieser Funktion hinzugefuegt werden. Dies ist der
    bevorzugte Weg, wenn ansonsten extra ein Objekt im Spielerinventar abgelegt
    werden muesste.
-   
+
+
+
    Alle Parameter bis auf <look> sind optional.
 
-ARGUMENTE:
-  - string look:
-    String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
-    wird.
-    Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
-  - int duration:
-    > 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend 
-         wird er automatisch geloescht.
-    0:   Dieser Eintrag bleibt unbegrenzt gueltig.
-    < 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
-  - string key:
-    Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
-    auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
-    moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der 
-    Objektname (object_name()) benutzt.
-  - string lookende:
-    String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
-    eingetragene Extralook abgelaufen ist.
-    Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
-  - object ob:
-    Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
-    Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
-    der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
-    abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
-    Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
-    wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
-    etc. sorgen!
-    WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
-    ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier 
-    einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
 
-RUECKGABEWERTE:
-  > 0, falls der Eintrag erfolgreich registriert wurde.
-  < 0 sonst.
-    -1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
-    -2: <look> war kein gueltiger String.
-    -3: <duration> war kein Integer.
-    -4: unter <key> gibt es schon einen Eintrag.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-  Die Strings <look> und <lookende> werden vor Ausgabe durch
-  replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
-  usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
-  dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
-  Funktionen selber umbrechen, etc.
-  Nach replace_personal() werden die Strings noch von break_string() auf 78
-  Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
-  Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
-  Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
-  wird.
+   - string look:
+     String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
+     wird.
+     Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
+   - int duration:
+     > 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend
+          wird er automatisch geloescht.
+     0:   Dieser Eintrag bleibt unbegrenzt gueltig.
+     < 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
+   - string key:
+     Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
+     auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
+     moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der
+     Objektname (object_name()) benutzt.
+   - string lookende:
+     String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
+     eingetragene Extralook abgelaufen ist.
+     Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
+   - object ob:
+     Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
+     Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
+     der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
+     abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
+     Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
+     wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
+     etc. sorgen!
+     WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
+     ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier
+     einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
 
-BEISPIELE:
-  # einfacher Eintrag, "fuer die Ewigkeit"
-  living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
 
-  # Eintrag der nach 1h automatisch weg ist.
-  living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
-  
-  # Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
-  living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
-                       "humni_marmeladen_look");
-  
-  # Mit "Ende"-Meldung, aber kein eigener Schluessel.
-  living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
-                       "Du bist endlich wieder trocken. Puuh.");
-  
-  # Mit Objekt, was den Extralook dynamisch erzeugt
-  living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
-    In diesem Fall muss this_object() natuerlich die Funktion
-    "get_my_special_extralook()" definieren, die einen String zurueckgibt.
+RUECKGABEWERTE
+==============
 
-  # Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
-  living->AddExtraLook("get_my_special_extralook", 3600, 0,
-                       "extralookende", this_object());
+   > 0, falls der Eintrag erfolgreich registriert wurde.
+   < 0 sonst.
+     -1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
+     -2: <look> war kein gueltiger String.
+     -3: <duration> war kein Integer.
+     -4: unter <key> gibt es schon einen Eintrag.
 
-SIEHE AUCH:
+
+BEMERKUNGEN
+===========
+
+   Die Strings <look> und <lookende> werden vor Ausgabe durch
+   replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
+   usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
+   dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
+   Funktionen selber umbrechen, etc.
+   Nach replace_personal() werden die Strings noch von break_string() auf 78
+   Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
+   Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
+   Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
+   wird.
+
+
+BEISPIELE
+=========
+
+   # einfacher Eintrag, "fuer die Ewigkeit"
+   living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
+
+   # Eintrag der nach 1h automatisch weg ist.
+   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
+
+
+
+   # Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
+   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
+                        "humni_marmeladen_look");
+
+
+
+   # Mit "Ende"-Meldung, aber kein eigener Schluessel.
+   living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
+                        "Du bist endlich wieder trocken. Puuh.");
+
+
+
+   # Mit Objekt, was den Extralook dynamisch erzeugt
+   living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
+     In diesem Fall muss this_object() natuerlich die Funktion
+     "get_my_special_extralook()" definieren, die einen String zurueckgibt.
+
+   # Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
+   living->AddExtraLook("get_my_special_extralook", 3600, 0,
+                        "extralookende", this_object());
+
+
+SIEHE AUCH
+==========
+
    RemoveExtraLook(),
    replace_personal(), break_string()
    P_INTERNAL_EXTRA_LOOK
 
 14.05.2007, Zesstra
-
diff --git a/doc/lfun/AddFixedObject b/doc/lfun/AddFixedObject
index 3e2e172..5875ee2 100644
--- a/doc/lfun/AddFixedObject
+++ b/doc/lfun/AddFixedObject
@@ -1,52 +1,74 @@
+
 AddFixedObject()
+****************
 
-FUNKTION:
-        varargs void AddFixedObject(string str, int val, mixed ids);
 
-DEFINIERT IN:
-        /std/room/shop.c
+FUNKTION
+========
 
-ARGUMENTE:
-        str
-          Der absolute Filename eines Objekts, das in quasi beliebiger Menge
-          vom betreffenden Laden verkauft werden soll.
-        val
-          Sofern angegeben der angenommene Wert des Objekts. Falls val nicht
-          angegeben oder 0 ist, wird der Wert aus dem angegebenen Objekt
-          selbst ermittelt.
-          Der Verkaufspreis ist 3 * Wert des Objekts.
-        ids
-          String oder Stringarray mit der ID oder den IDs, ueber die man das
-          Objekt im Laden ansprechen kann. Falls nicht angegeben, wird die
-          ID-Liste aus der blueprint des Objekts ausgelesen.
+   varargs void AddFixedObject(string str, int val, mixed ids);
 
-BESCHREIBUNG:
-        Mit dieser Funktion kann man einem Laden mitteilen, dass ein Objekt
-        in ihm in unbegrenzter Anzahl verkauft werden soll.
-        WICHTIG: Das zu verkaufende Objekt sollte dies insofern unterstuetzen, 
-        dass die Blueprint die notwendigen Informationen
-        (P_SHORT, P_IDS, P_VALUE, P_LONG, P_NAME) beinhaltet. Dies bedeutet im
-        einfachsten Fall, dass im create() auf
-          if (!clonep()) return;
-        verzichtet wird.
 
-RUeCKGABEWERT:
-        keiner
-        
-BEISPIELE:
-        AddFixedObject("/obj/fackel", 5000, "fackel");
-          Der Laden verkauft Fackeln zum Preis von 3*5000 Goldmuenzen und man
-          kann die Fackel (ausser ueber die Inventarnummer) nur mittels der
-          id "fackel" kaufen.
-          
-        AddFixedObject("/obj/fackel");
-          Der Laden verkauft Fackeln zum dreifachen Wert dessen, was im Objekt
-          /obj/fackel.c angegeben ist (derzeit sind das 5 Muenzen) und laesst
-          alle IDs zu, die in /obj/fackel.c angegeben sind. Derzeit ist das
-          auch nur "fackel".
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	RemoveFixedObject(), SetStorageRoom(), /std/store.c
-        
-----------------------------------------------------------------------------
-Letzte Aenderung: Sat Nov  9 12:59:25 2002 durch Bambi
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   str
+     Der absolute Filename eines Objekts, das in quasi beliebiger Menge
+     vom betreffenden Laden verkauft werden soll.
+   val
+     Sofern angegeben der angenommene Wert des Objekts. Falls val nicht
+     angegeben oder 0 ist, wird der Wert aus dem angegebenen Objekt
+     selbst ermittelt.
+     Der Verkaufspreis ist 3 * Wert des Objekts.
+   ids
+     String oder Stringarray mit der ID oder den IDs, ueber die man das
+     Objekt im Laden ansprechen kann. Falls nicht angegeben, wird die
+     ID-Liste aus der blueprint des Objekts ausgelesen.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man einem Laden mitteilen, dass ein Objekt
+   in ihm in unbegrenzter Anzahl verkauft werden soll.
+   WICHTIG: Das zu verkaufende Objekt sollte dies insofern unterstuetzen,
+   dass die Blueprint die notwendigen Informationen
+   (P_SHORT, P_IDS, P_VALUE, P_LONG, P_NAME) beinhaltet. Dies bedeutet im
+   einfachsten Fall, dass im create() auf
+     if (!clonep()) return;
+   verzichtet wird.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   AddFixedObject("/obj/fackel", 5000, "fackel");
+     Der Laden verkauft Fackeln zum Preis von 3*5000 Goldmuenzen und man
+     kann die Fackel (ausser ueber die Inventarnummer) nur mittels der
+     id "fackel" kaufen.
+
+
+
+   AddFixedObject("/obj/fackel");
+     Der Laden verkauft Fackeln zum dreifachen Wert dessen, was im Objekt
+     /obj/fackel.c angegeben ist (derzeit sind das 5 Muenzen) und laesst
+     alle IDs zu, die in /obj/fackel.c angegeben sind. Derzeit ist das
+     auch nur "fackel".
+
+
+SIEHE AUCH
+==========
+
+   RemoveFixedObject(), SetStorageRoom(), /std/store.c
diff --git a/doc/lfun/AddFood b/doc/lfun/AddFood
index 2da18e5..b870a5e 100644
--- a/doc/lfun/AddFood
+++ b/doc/lfun/AddFood
@@ -1,12 +1,18 @@
+
 AddFood()
+*********
 
-BEMERKUNGEN:
 
-        Die Funktion AddFood() sollte NICHT MEHR BENUTZT werden.
-        Bitte AddToMenu() verwenden.
+BEMERKUNGEN
+===========
 
-SIEHE AUCH:
-        AddToMenu(), RemoveFromMenu()
+   Die Funktion AddFood() sollte NICHT MEHR BENUTZT werden.
+   Bitte AddToMenu() verwenden.
 
-----------------------------------------------------------------------------
+
+SIEHE AUCH
+==========
+
+   AddToMenu(), RemoveFromMenu()
+
 Last modified: Fri Mar 03 13:23:00 2000 by Paracelsus
diff --git a/doc/lfun/AddFuel b/doc/lfun/AddFuel
index bf00350..cd0b25e 100644
--- a/doc/lfun/AddFuel
+++ b/doc/lfun/AddFuel
@@ -1,29 +1,51 @@
+
 AddFuel()
+*********
 
-FUNKTION:
-     void AddFuel(int fuel);
 
-DEFINIERT IN:
-     /std/lightsource.c
+FUNKTION
+========
 
-ARGUMENTE:
-     fuel
-          Die zusaetzliche Brenndauer in Sekunden.
+   void AddFuel(int fuel);
 
-BESCHREIBUNG:
-     Die Brenndauer der Lichtquelle wird um fuel Sekunden verlaengert.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Es werden keine Checks durchgefuehrt! Wenn man seine Lichtquelle
-     nachfuellbar gestalten will, sollte die Nachfuellfunktion vor dem
-     AddFuel()-Aufruf nachsehen, wie voll die Lichtquelle noch ist, und fuel
-     entsprechend begrenzen.
+   /std/lightsource.c
 
-SIEHE AUCH:
-     /std/lightsource.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   fuel
+        Die zusaetzliche Brenndauer in Sekunden.
+
+
+BESCHREIBUNG
+============
+
+   Die Brenndauer der Lichtquelle wird um fuel Sekunden verlaengert.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Es werden keine Checks durchgefuehrt! Wenn man seine Lichtquelle
+   nachfuellbar gestalten will, sollte die Nachfuellfunktion vor dem
+   AddFuel()-Aufruf nachsehen, wie voll die Lichtquelle noch ist, und fuel
+   entsprechend begrenzen.
+
+
+SIEHE AUCH
+==========
+
+   /std/lightsource.c
+
 Last modified: Wed May 8 10:16:39 1996 by Wargon
diff --git a/doc/lfun/AddFun b/doc/lfun/AddFun
index 925b5ac..5ba6cf1 100644
--- a/doc/lfun/AddFun
+++ b/doc/lfun/AddFun
@@ -1,63 +1,85 @@
+
 AddFun()
+********
 
-FUNKTION:
-     void AddFun(string fun, int next);
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     fun
-          Name der Funktion.
-     next
-          Zeit bis zur naechsten Fahrplanstation.
+   void AddFun(string fun, int next);
 
-BESCHREIBUNG:
-     Dem Fahrplan wird der Aufruf der Funktion fun, die im Transporter
-     definiert sein muss, hinzugefuegt. Nach Aufruf der Funktion vergehen
-     next Sekunden, bis die naechste Station angefahren wird.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Wenn ein zufaellig ausgewaehlter Passagier eines Schiffes unterwegs
-     seekrank werden soll, koennte man das wie folgt realisieren:
+   /std/transport.c
 
-     create()
-     {
-       ...
 
-       AddFun("seekrank", 5);
-       ...
-     }
+ARGUMENTE
+=========
 
-     seekrank()
-     {
-       object *passagiere, opfer;
+   fun
+        Name der Funktion.
+   next
+        Zeit bis zur naechsten Fahrplanstation.
 
-       // soll nicht immer passieren
-       if (random(5))
-         return;
 
-       // Opfer auswaehlen
-       passagiere = QueryPassengers();
-       if (sizeof(passagiere))
-         opfer = passagiere[random(sizeof(passagiere))];
+BESCHREIBUNG
+============
 
-       // Und viel Spass...
-       tell_object(opfer,
-         "Du wirst seekrank! Schnell stuerzt Du zur Reling um  Dich zu\n"
-        +"uebergeben.\n");
-       tell_room(this_object(),
-         sprintf("%s ueberkommt die Seekrankheit!\n%s stuerzt an die Reling, "
-                +"um sich zu uebergeben.\n",
-                 capitalize(opfer->name(WEN)),
-                 capitalize(opfer->QueryPronoun(WER))), ({ opfer }) );
-     }
+   Dem Fahrplan wird der Aufruf der Funktion fun, die im Transporter
+   definiert sein muss, hinzugefuegt. Nach Aufruf der Funktion vergehen
+   next Sekunden, bis die naechste Station angefahren wird.
 
-SIEHE AUCH:
-     AddRoute(), AddMsg(), /std/transport.c
 
-----------------------------------------------------------------------------
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Wenn ein zufaellig ausgewaehlter Passagier eines Schiffes unterwegs
+   seekrank werden soll, koennte man das wie folgt realisieren:
+
+   create()
+   {
+     ...
+
+     AddFun("seekrank", 5);
+     ...
+   }
+
+   seekrank()
+   {
+     object *passagiere, opfer;
+
+     // soll nicht immer passieren
+     if (random(5))
+       return;
+
+     // Opfer auswaehlen
+     passagiere = QueryPassengers();
+     if (sizeof(passagiere))
+       opfer = passagiere[random(sizeof(passagiere))];
+
+     // Und viel Spass...
+     tell_object(opfer,
+       "Du wirst seekrank! Schnell stuerzt Du zur Reling um  Dich zu\n"
+      +"uebergeben.\n");
+     tell_room(this_object(),
+       sprintf("%s ueberkommt die Seekrankheit!\n%s stuerzt an die Reling, "
+              +"um sich zu uebergeben.\n",
+               capitalize(opfer->name(WEN)),
+               capitalize(opfer->QueryPronoun(WER))), ({ opfer }) );
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddMsg(), /std/transport.c
+
 Last modified: Wed May 8 10:16:46 1996 by Wargon
diff --git a/doc/lfun/AddId b/doc/lfun/AddId
index fa1ce76..8c2aa4e 100644
--- a/doc/lfun/AddId
+++ b/doc/lfun/AddId
@@ -1,50 +1,75 @@
+
 AddId()
+*******
 
-FUNKTION:
-     void AddId(string|string* ids);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ids
-          String oder Array von Strings mit den Bezeichnungen, mit denen
-          sich sich das Objekt ansprechen lassen soll.
+   void AddId(string|string* ids);
 
-BESCHREIBUNG:
-     Jedes Objekt sollte sich auf die eine oder andere Weise ansprechen
-     lassen. Zu diesem Zweck kann man dem Objekt mit dieser Funktion
-     Bezeichner uebergeben.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Jedes Objekt sollte man zumindest mit seiner Kurzbeschreibung
-     ansprechen koennen! Fuer Abfragen von Questobjeken o.ae. sollte man
-     zusaetzlich IDs verwenden, die Sonderzeichen wie "\n" oder "\t"
-     enthalten, damit sichergestellt ist, dass der Spieler auch wirklich die
-     richtigen Objekte dabeihat.
+   /std/thing/description.c
 
-BEISPIELE:
 
-     AddId( "buch" );
-     AddId( "buechlein" );
+ARGUMENTE
+=========
 
-     Das Objekt laesst sich jetzt als "buch" und als "buechlein" ansprechen.
+   ids
+        String oder Array von Strings mit den Bezeichnungen, mit denen
+        sich sich das Objekt ansprechen lassen soll.
 
-     AddId( ({ "buch", "buechlein" }) );
 
-     Diese Zeile bewirkt das gleiche wie die obigen zwei Zeilen.
+BESCHREIBUNG
+============
 
-     AddId( ({ "puzzle", "\nquest_puzzle" }) );
+   Jedes Objekt sollte sich auf die eine oder andere Weise ansprechen
+   lassen. Zu diesem Zweck kann man dem Objekt mit dieser Funktion
+   Bezeichner uebergeben.
 
-     Der Spieler kann das Objekt als "puzzle" ansprechen, questrelevante
-     Objekte koennen mit der ID "\nquest_puzzle" nach ihm suchen.
 
-SIEHE AUCH:
-     AddAdjective(), RemoveId(), id(), present(), /std/thing/description.c
+RUeCKGABEWERT
+=============
 
-     -----------------------------------------------------------------------
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Jedes Objekt sollte man zumindest mit seiner Kurzbeschreibung
+   ansprechen koennen! Fuer Abfragen von Questobjeken o.ae. sollte man
+   zusaetzlich IDs verwenden, die Sonderzeichen wie "\n" oder "\t"
+   enthalten, damit sichergestellt ist, dass der Spieler auch wirklich die
+   richtigen Objekte dabeihat.
+
+
+BEISPIELE
+=========
+
+   AddId( "buch" );
+   AddId( "buechlein" );
+
+   Das Objekt laesst sich jetzt als "buch" und als "buechlein" ansprechen.
+
+   AddId( ({ "buch", "buechlein" }) );
+
+   Diese Zeile bewirkt das gleiche wie die obigen zwei Zeilen.
+
+   AddId( ({ "puzzle", "\nquest_puzzle" }) );
+
+   Der Spieler kann das Objekt als "puzzle" ansprechen, questrelevante
+   Objekte koennen mit der ID "\nquest_puzzle" nach ihm suchen.
+
+
+SIEHE AUCH
+==========
+
+   AddAdjective(), RemoveId(), id(), present(), /std/thing/description.c
+
+   -----------------------------------------------------------------------
+
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddInfo b/doc/lfun/AddInfo
index 2164584..759a300 100644
--- a/doc/lfun/AddInfo
+++ b/doc/lfun/AddInfo
@@ -1,222 +1,243 @@
+
 AddInfo()
-FUNKTION:
-     varargs void AddInfo( frage, meldung
-			   [, indent [, [silent [, casebased] ] ] );
-
-DEFINIERT IN:
-     /std/npc/info.c
-
-ARGUMENTE:
-     string/string* frage
-	Schluesseltext(e) auf die Informationen gegeben werden sollen.
-     string/closure meldung
-	Information, die gegeben werden soll/Closure
-     string indent
-	Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
-     int/string silent
-	Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
-     string/closure casebased
-	Closure mit Returnwert string oder int.
-
-BESCHREIBUNG:
-     Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
-     einer Information mit dem Schluessel 'frage' fragt, so wird die
-     entsprechende 'meldung' ausgegeben (oder die Closure in 'meldung'
-     gerufen und der zurueckgegebene Text ausgegeben). Der Meldung wird
-     der Name des Monsters vorangestellt.
-
-     Frage:
-      Schluessel muessen kleingeschrieben sein, koennen aber Leerzeichen
-      enthalten.
-
-     Meldung:
-      Wenn kein 'indent' angegeben ist, muss man die Meldung selbst
-      umbrechen.
-
-     Indent:
-      Wird ein 'indent' angegeben so wird jeder Zeile hinter dem
-      Monsternamen noch das 'indent' vorangesetzt. Zusaetzlich wird
-      'meldung' auf jeden Fall sauber umgebrochen.
-      Ein typisches indent ist "sagt: ".
-
-     Silent:
-      Bei 'silent'==1 erfolgt keine Textausgabe der Antwortmeldung im Raum,
-      ist 'silent' ein String, so wird jener an alle anderen Spieler ausser
-      dem Fragesteller im Raum ausgegeben.
-
-     Casebased:
-      Die als Closure angegebene Methode entscheidet, ob oder wie der NPC 
-      auf diese Frage antworten soll:
-      - return 0:	normale Antwort mit "meldung"
-      - return 1:	keine Antwort/Antwort mit DEFAULT_NOINFO
-      - return string:	Antwort mit string unter Beruecksichtigung eines
-			indent
-
-     Die Strings von 'silent' und 'meldung' werden geparsed.
-     Dabei koennen die @...-Tags von replace_personal() verwendet werden,
-     Objekt 1 ist this_player(). Ersetzte String am Satzanfang werden
-     automatisch gross geschrieben.
-     AddInfo() konvertiert die alten Schluesselworte @WER, @WESSEN, @WEM,
-     @WEN zu denen von replace_personal().
-
-     Mittels der in <npc.h> definierten Frage DEFAULT_INFO kann eine
-     Meldung gesetzt werden, die gegeben werden soll, wenn der Spieler
-     etwas fragt, auf das keine Antwort vorgegeben ist (das loest
-     SetProp(P_DEFAULT_INFO, <text>) ab).
-
-BEISPIELE:
-     ### eine Standardantwort setzen ###
-     AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
-     // identisch zu
-     SetProp(P_DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
-
-     ### einfache Beispiele, auch mit casebased ###
-     AddInfo(({"knete","kohle"}),
-	     "sagt: ich habe so etwas nicht.\n");
-     AddInfo("geld",
-	     "Ich habe zwar kein Geld, aber ... blablabla ...",
-	     "sagt: " );
-     AddInfo("muenzen",
-	     "fluestert: Du willst Geld?\n",
-	     0,
-	     "fluestert @WEM etwas zu.\n");
-
-     // "frage monster nach geld": alle im Raum hoeren
-     //  Das Monster sagt: Ich habe zwar kein Geld, aber ...
-     //  Das Monster sagt: ... blablabla ...
-
-     // "frage monster nach muenzen":
-     // - der Fragensteller hoert:
-     //   "Das Monster fluestert: Du willst Geld?"
-     // - alle andere hoeren:
-     //   "Das Monster fluestert <Fragenstellernamen> etwas zu."
-
-     ### dynamisch ###
-     // ein Prototyp, damit wir die Methode bekannt machen
-     static string query_kekse();
-     ...
-     AddInfo(({"keks","kekse"}),
-	     #'query_kekse,		// ein Verweis auf die Funktion
-	     "sagt: ");
-     ...
-     static string query_kekse() {
-      if(present("keks"))
-       return("Ich hab noch welche. Aetsch!");
-      return("Menno. Keine mehr da!");
-     }
-
-     // "frage monster nach keks":
-     // - wenn es noch Kekse hat, hoeren alle:
-     //   "Das Monster sagt: Ich hab noch welche. Aetsch!
-     // - sonst:
-     //   "Das Monster sagt: "Menno. Keine mehr da!
-
-     ### dynamischer ###
-     // ein Prototyp, damit wir die Methode bekannt machen
-     static string query_kekse();
-     static mixed case_fighting();
-     ...
-     AddInfo(({"keks","kekse"}),
-	     #'query_kekse,"		// ein Verweis auf die Funktion
-	     sagt: ",
-	     0,				// nicht silent :)
-	     #'case_fighting);		// noch ein Funktionsverweis
-     ...
-     static string query_kekse() {
-      if(present("keks"))
-       return("Ich hab noch welche. Aetsch!");
-      return("Menno. Keine mehr da!");
-     }
-
-     static mixed case_fighting() {
-      if(InFight())
-       return("Keine Zeit fuer Kekse. Muss kaempfen.");
-      return 0;
-     }
-
-     // "frage monster nach keks":
-     // - wenn es kaempft, hoeren alle:
-     //   "Das Monster sagt: Keine Zeit fuer Kekse. Muss kaempfen.
-     // - sonst, wenn es noch Kekse hat, hoeren alle:
-     //   "Das Monster sagt: Ich hab noch welche. Aetsch!
-     // - sonst:
-     //   "Das Monster sagt: "Menno. Keine mehr da!
+*********
 
 
-     ### dynamisch und komplex ###
-     // ein Prototyp, damit wir die Methode bekannt machen
-     static string question_gold();
-     ...
+FUNKTION
+========
 
-     // "gold" wird eine Closure auf die Methode question_gold()
-     // zugewiesen, ausserdem soll es still bleiben (wir informieren
-     // den Restraum selbst)
-     AddInfo("gold",#'question_gold,"murmelt: ",1);
-     ...
+   varargs void AddInfo( frage, meldung
+                         [, indent [, [silent [, casebased] ] ] );
 
-     // los gehts, wir generieren unsere Antwort selbst
-     static string question_gold() {
-      int money;
-      string *y, objstr;
-      object o;
-      // wieviel Kohle hat der Spieler
-      money=this_player()->QueryMoney();
-      y=allocate(0);
-      // und jetzt suchen wir die Dinge aus Gold
-      o=first_inventory(this_player());
-      while(o) {
-       if(o->QueryMaterial(MAT_GOLD)>0 &&
-          strstr(object_name(o),"/obj/money"))
-        y+=({o->name(WER,1)});
-       o=next_inventory(o);
-      }
 
-      // das geht an alle anderen im Raum, silent bietet sich hier
-      // nicht an, weil es mehrere Moeglichkeiten gibt
-      say(break_string(
-       Name(WER,1)+" murmelt "+
-       this_player()->name(WEM,1)+
-       " etwas zu"+
-       ((money || sizeof(y))?
-        " und glotzt "+
-        this_player()->QueryPronoun(WEN)+" gierig an.":
-        "."),78),({this_player()}));
+DEFINIERT IN
+============
 
-      // und hier die Antwort an den Spieler selbst, mit vielen
-      // Verzweigungen fuer dessen Besitztum
-      return("Ich hab kein Gold bei mir."+
-          ((money || sizeof(y))?
-           " Aber du "+
-           (money?"hast ja jede Menge Kohle bei dir, so etwa "+money+
-            " Muenzen."+
-            (sizeof(y)?
-             " Ausserdem "+
-             ((sizeof(y)==1)?"ist":"sind")+
-             " auch noch "+CountUp(y)+" aus Gold.":
-             ""):
-            (sizeof(y)?" Aber was du so bei dir hast: "+
-             CountUp(y)+
-             (sizeof(y)==1?" ist":" sind")+
-             " aus Gold.":"")):
-           ""));
-     }
+   /std/npc/info.c
 
-     // "frage monster nach gold"
-     // - der Fragesteller hoert zB:
-     //   Das Monster murmelt: Ich hab kein Gold bei mir. Aber du hast ja
-     //   Das Monster murmelt: jede Menge Kohle bei dir, so etwas <number>
-     //   Das Monster murmelt: Muenzen. Ausserdem ist/sind noch <object1>
-     //   Das Monster murmelt: und <object2> aus Gold."
-     // - die Umstehenden hoeren:
-     //   "Das Monster murmelt @WEM etwas zu."
-     //   oder
-     //   "Das Monster murmelt @WEM etwas zu und glotzt ihn/sie gierig an."
 
-SIEHE AUCH:
-     Verwandt:  AddSpecialInfo(L), RemoveInfo(L)
-     Props:     P_PRE_INFO, P_DEFAULT_INFO
-     Files:     /std/npc/info.c
-     Loggen:    P_LOG_INFO
-     Interna:   GetInfoArr, do_frage
+ARGUMENTE
+=========
+
+   string/string* frage
+      Schluesseltext(e) auf die Informationen gegeben werden sollen.
+   string/closure meldung
+      Information, die gegeben werden soll/Closure
+   string indent
+      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
+   int/string silent
+      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
+   string/closure casebased
+      Closure mit Returnwert string oder int.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
+   einer Information mit dem Schluessel 'frage' fragt, so wird die
+   entsprechende 'meldung' ausgegeben (oder die Closure in 'meldung'
+   gerufen und der zurueckgegebene Text ausgegeben). Der Meldung wird
+   der Name des Monsters vorangestellt.
+
+   Frage:
+    Schluessel muessen kleingeschrieben sein, koennen aber Leerzeichen
+    enthalten.
+
+   Meldung:
+    Wenn kein 'indent' angegeben ist, muss man die Meldung selbst
+    umbrechen.
+
+   Indent:
+    Wird ein 'indent' angegeben so wird jeder Zeile hinter dem
+    Monsternamen noch das 'indent' vorangesetzt. Zusaetzlich wird
+    'meldung' auf jeden Fall sauber umgebrochen.
+    Ein typisches indent ist "sagt: ".
+
+   Silent:
+    Bei 'silent'==1 erfolgt keine Textausgabe der Antwortmeldung im Raum,
+    ist 'silent' ein String, so wird jener an alle anderen Spieler ausser
+    dem Fragesteller im Raum ausgegeben.
+
+   Casebased:
+    Die als Closure angegebene Methode entscheidet, ob oder wie der NPC
+    auf diese Frage antworten soll:
+    - return 0:       normale Antwort mit "meldung"
+    - return 1:       keine Antwort/Antwort mit DEFAULT_NOINFO
+    - return string:  Antwort mit string unter Beruecksichtigung eines
+                      indent
+
+   Die Strings von 'silent' und 'meldung' werden geparsed.
+   Dabei koennen die @...-Tags von replace_personal() verwendet werden,
+   Objekt 1 ist this_player(). Ersetzte String am Satzanfang werden
+   automatisch gross geschrieben.
+   AddInfo() konvertiert die alten Schluesselworte @WER, @WESSEN, @WEM,
+   @WEN zu denen von replace_personal().
+
+   Mittels der in <npc.h> definierten Frage DEFAULT_INFO kann eine
+   Meldung gesetzt werden, die gegeben werden soll, wenn der Spieler
+   etwas fragt, auf das keine Antwort vorgegeben ist (das loest
+   SetProp(P_DEFAULT_INFO, <text>) ab).
+
+
+BEISPIELE
+=========
+
+   ### eine Standardantwort setzen ###
+   AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
+   // identisch zu
+   SetProp(P_DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
+
+   ### einfache Beispiele, auch mit casebased ###
+   AddInfo(({"knete","kohle"}),
+           "sagt: ich habe so etwas nicht.\n");
+   AddInfo("geld",
+           "Ich habe zwar kein Geld, aber ... blablabla ...",
+           "sagt: " );
+   AddInfo("muenzen",
+           "fluestert: Du willst Geld?\n",
+           0,
+           "fluestert @WEM etwas zu.\n");
+
+   // "frage monster nach geld": alle im Raum hoeren
+   //  Das Monster sagt: Ich habe zwar kein Geld, aber ...
+   //  Das Monster sagt: ... blablabla ...
+
+   // "frage monster nach muenzen":
+   // - der Fragensteller hoert:
+   //   "Das Monster fluestert: Du willst Geld?"
+   // - alle andere hoeren:
+   //   "Das Monster fluestert <Fragenstellernamen> etwas zu."
+
+   ### dynamisch ###
+   // ein Prototyp, damit wir die Methode bekannt machen
+   static string query_kekse();
+   ...
+   AddInfo(({"keks","kekse"}),
+           #'query_kekse,             // ein Verweis auf die Funktion
+           "sagt: ");
+   ...
+   static string query_kekse() {
+    if(present("keks"))
+     return("Ich hab noch welche. Aetsch!");
+    return("Menno. Keine mehr da!");
+   }
+
+   // "frage monster nach keks":
+   // - wenn es noch Kekse hat, hoeren alle:
+   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
+   // - sonst:
+   //   "Das Monster sagt: "Menno. Keine mehr da!
+
+   ### dynamischer ###
+   // ein Prototyp, damit wir die Methode bekannt machen
+   static string query_kekse();
+   static mixed case_fighting();
+   ...
+   AddInfo(({"keks","kekse"}),
+           #'query_kekse,"            // ein Verweis auf die Funktion
+           sagt: ",
+           0,                         // nicht silent :)
+           #'case_fighting);          // noch ein Funktionsverweis
+   ...
+   static string query_kekse() {
+    if(present("keks"))
+     return("Ich hab noch welche. Aetsch!");
+    return("Menno. Keine mehr da!");
+   }
+
+   static mixed case_fighting() {
+    if(InFight())
+     return("Keine Zeit fuer Kekse. Muss kaempfen.");
+    return 0;
+   }
+
+   // "frage monster nach keks":
+   // - wenn es kaempft, hoeren alle:
+   //   "Das Monster sagt: Keine Zeit fuer Kekse. Muss kaempfen.
+   // - sonst, wenn es noch Kekse hat, hoeren alle:
+   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
+   // - sonst:
+   //   "Das Monster sagt: "Menno. Keine mehr da!
+
+
+   ### dynamisch und komplex ###
+   // ein Prototyp, damit wir die Methode bekannt machen
+   static string question_gold();
+   ...
+
+   // "gold" wird eine Closure auf die Methode question_gold()
+   // zugewiesen, ausserdem soll es still bleiben (wir informieren
+   // den Restraum selbst)
+   AddInfo("gold",#'question_gold,"murmelt: ",1);
+   ...
+
+   // los gehts, wir generieren unsere Antwort selbst
+   static string question_gold() {
+    int money;
+    string *y, objstr;
+    object o;
+    // wieviel Kohle hat der Spieler
+    money=this_player()->QueryMoney();
+    y=allocate(0);
+    // und jetzt suchen wir die Dinge aus Gold
+    o=first_inventory(this_player());
+    while(o) {
+     if(o->QueryMaterial(MAT_GOLD)>0 &&
+        strstr(object_name(o),"/obj/money"))
+      y+=({o->name(WER,1)});
+     o=next_inventory(o);
+    }
+
+    // das geht an alle anderen im Raum, silent bietet sich hier
+    // nicht an, weil es mehrere Moeglichkeiten gibt
+    say(break_string(
+     Name(WER,1)+" murmelt "+
+     this_player()->name(WEM,1)+
+     " etwas zu"+
+     ((money || sizeof(y))?
+      " und glotzt "+
+      this_player()->QueryPronoun(WEN)+" gierig an.":
+      "."),78),({this_player()}));
+
+    // und hier die Antwort an den Spieler selbst, mit vielen
+    // Verzweigungen fuer dessen Besitztum
+    return("Ich hab kein Gold bei mir."+
+        ((money || sizeof(y))?
+         " Aber du "+
+         (money?"hast ja jede Menge Kohle bei dir, so etwa "+money+
+          " Muenzen."+
+          (sizeof(y)?
+           " Ausserdem "+
+           ((sizeof(y)==1)?"ist":"sind")+
+           " auch noch "+CountUp(y)+" aus Gold.":
+           ""):
+          (sizeof(y)?" Aber was du so bei dir hast: "+
+           CountUp(y)+
+           (sizeof(y)==1?" ist":" sind")+
+           " aus Gold.":"")):
+         ""));
+   }
+
+   // "frage monster nach gold"
+   // - der Fragesteller hoert zB:
+   //   Das Monster murmelt: Ich hab kein Gold bei mir. Aber du hast ja
+   //   Das Monster murmelt: jede Menge Kohle bei dir, so etwas <number>
+   //   Das Monster murmelt: Muenzen. Ausserdem ist/sind noch <object1>
+   //   Das Monster murmelt: und <object2> aus Gold."
+   // - die Umstehenden hoeren:
+   //   "Das Monster murmelt @WEM etwas zu."
+   //   oder
+   //   "Das Monster murmelt @WEM etwas zu und glotzt ihn/sie gierig an."
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  AddSpecialInfo(L), RemoveInfo(L)
+   Props:     P_PRE_INFO, P_DEFAULT_INFO
+   Files:     /std/npc/info.c
+   Loggen:    P_LOG_INFO
+   Interna:   GetInfoArr, do_frage
 
 7.Apr 2004 Gloinson
diff --git a/doc/lfun/AddItem b/doc/lfun/AddItem
index 8e812ea..222b24d 100644
--- a/doc/lfun/AddItem
+++ b/doc/lfun/AddItem
@@ -1,159 +1,184 @@
+
 AddItem()
+*********
 
-FUNKTION:
-	varargs object AddItem(mixed filename,int refresh,mixed props);
 
-DEFINIERT IN:
-	/std/room/items.c
-	/std/npc/items.c
+FUNKTION
+========
 
-ARGUMENTE:
-	filename
-	  String mit dem Namen des zu erzeugenden Objektes oder Array von
-	  Strings mit den Namen der zu erzeugenden Objekte. Bei einem Array
-	  wird ein Name zufaellig ausgewaehlt.
-	refresh
-	  Wann und wie soll das Objekt erneuert werden:
-	  - REFRESH_NONE      - Kein Refresh bis zum Neuladen des Raums
-                        - oder NPCs.
-	  - REFRESH_DESTRUCT  - Refresh bei Reset, wenn Item zerstoert
-	                        wurde.
-	  - REFRESH_REMOVE    - Refresh bei Reset, wenn Item entfernt wurde.
-	  - REFRESH_ALWAYS    - Neuer Clone bei jedem Reset.
-	  - REFRESH_MOVE_HOME - Objekt wird bei Reset automatisch
-	                        zurueckgeholt, wenn es wegbewegt wurde.
-	                        (nur in Raeumen!)
-	  Bei NPC's gilt zusaetzlich:
-	  - CLONE_WEAR       - Item Anziehen, wenn es eine Ruestung ist.
-	  - CLONE_WIELD      - Item zuecken, wenn es eine Waffe ist.
-	  - CLONE_NO_CHECK   - Zuecken oder Anziehen ohne Ueberpruefungen.
-	props (optional)
-	  Mapping mit denen in einem geclonten Objekt zu setzenden
-	  Properties oder 1 fuer die Erzeugung einer Blueprint.
+   varargs object AddItem(mixed filename,int refresh,mixed props);
 
-RUeCKGABEWERT:
-	Innerhalb von Raeumen wird das erzeugte Objekt zurueckgeliefert. Bei
-	NPC's klappt dies leider nicht, da dort die Objekte nicht sofort
-	erzeugt werden, sondern erst, nachdem der NPC an seinen
-	Bestimmungsort transferiert wurde. Daher wird bei NPC immer 0 
-	zurueckgegeben.
 
-BESCHREIBUNG:
-	Abhaengig von <filename> und <props> wird ein Objekt erzeugt und in
-	den Raum bzw. NPC bewegt. Dabei gibt es folgende Moeglichkeiten:
-	- <filename> ist ein Dateiname.
-	  Es wird ein Clone dieser Datei erstellt oder (wenn <props>=1 ist)
-	  deren Blueprint verwendet.
-	- <filename> ist ein Array von Dateinamen.
-	  Es wird eine Datei zufaellig aus dem Array ausgewaehlt und von
-	  dieser Datei ein Clone erstellt oder (wenn <props>=1 ist) deren
-	  Blueprint verwendet.
-	Uebergibt man fuer <props> ein Mapping mit dem Aufbau
-	  ([prop_name:prop_wert,...]),
-	so werden diese Properties im erzeugten Objekt gesetzt.
-	Der Parameter <refresh> gibt an, was waehrend eines Resets im Raum
-	bzw. in NPC's oder was beim Erzeugen von NPC's geschehen soll:
-	In <rooms.h> sind dazu folgende Moeglichkeiten definiert:
-	- REFRESH_NONE
-            Das Objekt wird niemals erneuert; falls es zerstoert wurde, wird
-	    es erst dann wieder erzeugt, wenn der Raum erneut geladen bzw.
-	    der NPC neu erzeugt wird. Man beachte, dass nicht jeder NPC
-	    wirklich refreshende Objekte benoetigt, REFRESH_NONE spart
-	    hierbei sowohl Rechenzeit als auch Speicher!
-	- REFRESH_DESTRUCT
-	    Das Objekt wird nur dann erneuert, wenn es in der Zwischenzeit
-	    zerstoert wurde (bei NPC's ist das zum Beispiel der Fall, wenn
-	    sie getoetet wurden).
-	    REFRESH_NONE & REFRESH_DESTRUCT + Blueprint-Objekt bedeutet bei
-	    NPC's ein Unique-Objekt, es wird also nicht beim Neuerzeugen des
-	    NPC's zurueckgesetzt.
-	- REFRESH_REMOVE
-	    Das Objekt wird erneuert, wenn es sich nicht mehr im Raum bzw.
-	    im NPC befindet. Das kein sein, weil es zerstoert wurde, aber
-	    auch zum Beispiel in folgenden Faellen:
-	    * weil es jemand mitgenommen hat
-	       (in Raeumen bei Gegenstaenden)
-	    * weil es fortgegangen ist
-	       (in Raeumen bei NPC's, die herumlaufen)
-	    * weil es weggeworfen wurde
-	       (in NPC's bei Gegenstaenden)
-	- REFRESH_ALWAYS
-	    Das Objekt wird immer erneuert. Von dieser Refreshmethode sollte
-	    man allerdings Abstand nehmen, da sich sonst mit der Zeit
-	    gewaltige Mengen von Objekten ansammeln koennen!
-	- REFRESH_MOVE_HOME
-	    Das Objekt wird in einen Raum zurueckbewegt, sofern es noch
-	    existiert, jedoch nicht mehr in dem Raum ist. Sinnvoll ist dies
-	    eigentlich nur fuer Lebewesen, funktioniert aber auch bei
-	    beliebigen Objekten. Hauptsaechlich geht es hierbei darum,
-	    herumlaufende NPCs oder bei erzwungenen Bewegungen nicht von
-	    P_GUARD zurueckgehaltene NPCs wieder an einen definierten
-	    Ausgangsort zurueckzubringen.
-	Hat man in Raeumen als <filename> ein Array von Dateinamen
-	uebergeben, so wird beim Reset jedesmal aufs Neue ein zufaelliges
-	Objekt aus der Liste ausgewaehlt (nicht in NPC's).
-	In NPC's gilt der Grundsatz der Vermeidung von ueberfluessigen
-	Objekten im MUD. Neu erzeugt werden Objekte beim Erzeugen eines
-	NPC's oder bei einem Reset im selbigen. Anstatt die Objekte gleich
-	neu zu erschaffen, wird erst geschaut, ob sich identische Objekte
-	schon im Raum befinden. Ist dies der Fall, so nimmt der NPC sie auf,
-	ruft jedoch vorher nochmals create() in ihnen auf!
-	  (noetig wegen moeglicher Veraenderungen an den Objekten)
-	Was dann passiert, haengt von weiteren Angaben in <refresh> ab.
-	Folgende weitere Moeglichkeiten sind in <npc.h> definiert:
-        - CLONE_WEAR
-	  Ist das hinzugefuegte Item eine Ruestung, so wird sie nach
-	  Aufnahme oder Neuerzeugung angezogen.
-        - CLONE_WIELD
-	  Ist das hinzugefuegte Item eine Waffe, so wird sie nach Aufnahme
-	  oder Neuerzeugung gezueckt.
-        - CLONE_NO_CHECK
-	  Hiermit verhindert man eine Ueberpruefung, ob eine Ruestung
-	  angezogen oder eine Waffe gezueckt werden kann. Es ist jedoch
-	  Vorsicht geboten: So kann es ohne weiteres passieren, dass ein NPC
-	  mehrere Ruestungen gleichen Typs angezogen oder mehrere Waffen
-	  gezueckt hat.
-	Benutzt man Blueprints (<props>=1) mit REFRESH_REMOVE oder
-	REFRESH_ALWAYS, so kann es zu ungewollten Ueberraschungen kommen, da
-	die Blueprint dann unabhaengig von ihrem momentanen Aufenthaltsort
-	wieder in den Raum bzw. NPC bewegt wird, von dem sie erzeugt wurde!
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-	Wenn man Blueprints benutzt, sollte man daran denken, dass sich von
-	dieser dann keine Clones mehr erstellen lassen!
-	RemoveItem() zum Entfernen von Items ist nur fuer Raeume definiert!
+   /std/room/items.c
+   /std/npc/items.c
 
-	Die Option CLONE_NEW ist veraltet. Die Objekte werden nun immer
-	neu erzeugt. Die Option darf noch angegeben werden, hat aber keine
-	Bedeutung mehr.
 
-BEISPIELE:
-	// Ein Wuerfel, der sich nach Entfernen erneuert:
-	  AddItem("/obj/misc/wuerfel",REFRESH_REMOVE);
-	// Ein etwas veraenderter Wuerfel:
-	  AddItem("/obj/misc/wuerfel",
-	          REFRESH_REMOVE,
-	          ([P_SHORT :"Ein schwerer Wuerfel",
-	            P_WEIGHT:100]));
-	// Eine Blueprint, die nur einmal im MUD existiert. Wenn sie
-	// zerstoert wurde, wird sie bei Reset neu erzeugt:
-	  AddItem("/mon/angsthase",REFRESH_DESTRUCT,1);
-	// Eine Blueprint, die nur einmal im MUD existiert. Wenn sie aus dem
-	// Raum entfernt wurde, wird sie bei Reset zurueckgeholt:
-	  AddItem("/mon/angsthase",REFRESH_MOVE_HOME,1);
-	// Ein zufaelliges Objekt:
-	  AddItem(({"/obj/misc/lolli",
-	            "/obj/misc/bonbon",
-	            "/obj/misc/bier"}),REFRESH_REMOVE);
-	// Eine Ruestung, die auch angezogen wird (nur in NPC's):
-	  AddItem("/ruestung/sommerkleid",REFRESH_REMOVE|CLONE_WEAR);
-	// Eine Unique-Waffe, die auch gezueckt wird (nur in NPC's):
-	  AddItem("/waffe/zapper",REFRESH_DESTRUCT|CLONE_WIELD,1);
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-	RemoveItem(), replace_program(), create(), P_GUARD,
-	/std/room/items.c, /std/npc/items.c,
-	/sys/rooms.h, /sys/npc.h
+   filename
+     String mit dem Namen des zu erzeugenden Objektes oder Array von
+     Strings mit den Namen der zu erzeugenden Objekte. Bei einem Array
+     wird ein Name zufaellig ausgewaehlt.
+   refresh
+     Wann und wie soll das Objekt erneuert werden:
+     - REFRESH_NONE      - Kein Refresh bis zum Neuladen des Raums
+                   - oder NPCs.
+     - REFRESH_DESTRUCT  - Refresh bei Reset, wenn Item zerstoert
+                           wurde.
+     - REFRESH_REMOVE    - Refresh bei Reset, wenn Item entfernt wurde.
+     - REFRESH_ALWAYS    - Neuer Clone bei jedem Reset.
+     - REFRESH_MOVE_HOME - Objekt wird bei Reset automatisch
+                           zurueckgeholt, wenn es wegbewegt wurde.
+                           (nur in Raeumen!)
+     Bei NPC's gilt zusaetzlich:
+     - CLONE_WEAR       - Item Anziehen, wenn es eine Ruestung ist.
+     - CLONE_WIELD      - Item zuecken, wenn es eine Waffe ist.
+     - CLONE_NO_CHECK   - Zuecken oder Anziehen ohne Ueberpruefungen.
+   props (optional)
+     Mapping mit denen in einem geclonten Objekt zu setzenden
+     Properties oder 1 fuer die Erzeugung einer Blueprint.
 
-----------------------------------------------------------------------------
+
+RUeCKGABEWERT
+=============
+
+   Innerhalb von Raeumen wird das erzeugte Objekt zurueckgeliefert. Bei
+   NPC's klappt dies leider nicht, da dort die Objekte nicht sofort
+   erzeugt werden, sondern erst, nachdem der NPC an seinen
+   Bestimmungsort transferiert wurde. Daher wird bei NPC immer 0
+   zurueckgegeben.
+
+
+BESCHREIBUNG
+============
+
+   Abhaengig von <filename> und <props> wird ein Objekt erzeugt und in
+   den Raum bzw. NPC bewegt. Dabei gibt es folgende Moeglichkeiten:
+   - <filename> ist ein Dateiname.
+     Es wird ein Clone dieser Datei erstellt oder (wenn <props>=1 ist)
+     deren Blueprint verwendet.
+   - <filename> ist ein Array von Dateinamen.
+     Es wird eine Datei zufaellig aus dem Array ausgewaehlt und von
+     dieser Datei ein Clone erstellt oder (wenn <props>=1 ist) deren
+     Blueprint verwendet.
+   Uebergibt man fuer <props> ein Mapping mit dem Aufbau
+     ([prop_name:prop_wert,...]),
+   so werden diese Properties im erzeugten Objekt gesetzt.
+   Der Parameter <refresh> gibt an, was waehrend eines Resets im Raum
+   bzw. in NPC's oder was beim Erzeugen von NPC's geschehen soll:
+   In <rooms.h> sind dazu folgende Moeglichkeiten definiert:
+   - REFRESH_NONE
+       Das Objekt wird niemals erneuert; falls es zerstoert wurde, wird
+       es erst dann wieder erzeugt, wenn der Raum erneut geladen bzw.
+       der NPC neu erzeugt wird. Man beachte, dass nicht jeder NPC
+       wirklich refreshende Objekte benoetigt, REFRESH_NONE spart
+       hierbei sowohl Rechenzeit als auch Speicher!
+   - REFRESH_DESTRUCT
+       Das Objekt wird nur dann erneuert, wenn es in der Zwischenzeit
+       zerstoert wurde (bei NPC's ist das zum Beispiel der Fall, wenn
+       sie getoetet wurden).
+       REFRESH_NONE & REFRESH_DESTRUCT + Blueprint-Objekt bedeutet bei
+       NPC's ein Unique-Objekt, es wird also nicht beim Neuerzeugen des
+       NPC's zurueckgesetzt.
+   - REFRESH_REMOVE
+       Das Objekt wird erneuert, wenn es sich nicht mehr im Raum bzw.
+       im NPC befindet. Das kein sein, weil es zerstoert wurde, aber
+       auch zum Beispiel in folgenden Faellen:
+       * weil es jemand mitgenommen hat
+          (in Raeumen bei Gegenstaenden)
+       * weil es fortgegangen ist
+          (in Raeumen bei NPC's, die herumlaufen)
+       * weil es weggeworfen wurde
+          (in NPC's bei Gegenstaenden)
+   - REFRESH_ALWAYS
+       Das Objekt wird immer erneuert. Von dieser Refreshmethode sollte
+       man allerdings Abstand nehmen, da sich sonst mit der Zeit
+       gewaltige Mengen von Objekten ansammeln koennen!
+   - REFRESH_MOVE_HOME
+       Das Objekt wird in einen Raum zurueckbewegt, sofern es noch
+       existiert, jedoch nicht mehr in dem Raum ist. Sinnvoll ist dies
+       eigentlich nur fuer Lebewesen, funktioniert aber auch bei
+       beliebigen Objekten. Hauptsaechlich geht es hierbei darum,
+       herumlaufende NPCs oder bei erzwungenen Bewegungen nicht von
+       P_GUARD zurueckgehaltene NPCs wieder an einen definierten
+       Ausgangsort zurueckzubringen.
+   Hat man in Raeumen als <filename> ein Array von Dateinamen
+   uebergeben, so wird beim Reset jedesmal aufs Neue ein zufaelliges
+   Objekt aus der Liste ausgewaehlt (nicht in NPC's).
+   In NPC's gilt der Grundsatz der Vermeidung von ueberfluessigen
+   Objekten im MUD. Neu erzeugt werden Objekte beim Erzeugen eines
+   NPC's oder bei einem Reset im selbigen. Anstatt die Objekte gleich
+   neu zu erschaffen, wird erst geschaut, ob sich identische Objekte
+   schon im Raum befinden. Ist dies der Fall, so nimmt der NPC sie auf,
+   ruft jedoch vorher nochmals create() in ihnen auf!
+     (noetig wegen moeglicher Veraenderungen an den Objekten)
+   Was dann passiert, haengt von weiteren Angaben in <refresh> ab.
+   Folgende weitere Moeglichkeiten sind in <npc.h> definiert:
+   - CLONE_WEAR
+     Ist das hinzugefuegte Item eine Ruestung, so wird sie nach
+     Aufnahme oder Neuerzeugung angezogen.
+   - CLONE_WIELD
+     Ist das hinzugefuegte Item eine Waffe, so wird sie nach Aufnahme
+     oder Neuerzeugung gezueckt.
+   - CLONE_NO_CHECK
+     Hiermit verhindert man eine Ueberpruefung, ob eine Ruestung
+     angezogen oder eine Waffe gezueckt werden kann. Es ist jedoch
+     Vorsicht geboten: So kann es ohne weiteres passieren, dass ein NPC
+     mehrere Ruestungen gleichen Typs angezogen oder mehrere Waffen
+     gezueckt hat.
+   Benutzt man Blueprints (<props>=1) mit REFRESH_REMOVE oder
+   REFRESH_ALWAYS, so kann es zu ungewollten Ueberraschungen kommen, da
+   die Blueprint dann unabhaengig von ihrem momentanen Aufenthaltsort
+   wieder in den Raum bzw. NPC bewegt wird, von dem sie erzeugt wurde!
+
+
+BEMERKUNGEN
+===========
+
+   Wenn man Blueprints benutzt, sollte man daran denken, dass sich von
+   dieser dann keine Clones mehr erstellen lassen!
+   RemoveItem() zum Entfernen von Items ist nur fuer Raeume definiert!
+
+   Die Option CLONE_NEW ist veraltet. Die Objekte werden nun immer
+   neu erzeugt. Die Option darf noch angegeben werden, hat aber keine
+   Bedeutung mehr.
+
+
+BEISPIELE
+=========
+
+   // Ein Wuerfel, der sich nach Entfernen erneuert:
+     AddItem("/obj/misc/wuerfel",REFRESH_REMOVE);
+   // Ein etwas veraenderter Wuerfel:
+     AddItem("/obj/misc/wuerfel",
+             REFRESH_REMOVE,
+             ([P_SHORT :"Ein schwerer Wuerfel",
+               P_WEIGHT:100]));
+   // Eine Blueprint, die nur einmal im MUD existiert. Wenn sie
+   // zerstoert wurde, wird sie bei Reset neu erzeugt:
+     AddItem("/mon/angsthase",REFRESH_DESTRUCT,1);
+   // Eine Blueprint, die nur einmal im MUD existiert. Wenn sie aus dem
+   // Raum entfernt wurde, wird sie bei Reset zurueckgeholt:
+     AddItem("/mon/angsthase",REFRESH_MOVE_HOME,1);
+   // Ein zufaelliges Objekt:
+     AddItem(({"/obj/misc/lolli",
+               "/obj/misc/bonbon",
+               "/obj/misc/bier"}),REFRESH_REMOVE);
+   // Eine Ruestung, die auch angezogen wird (nur in NPC's):
+     AddItem("/ruestung/sommerkleid",REFRESH_REMOVE|CLONE_WEAR);
+   // Eine Unique-Waffe, die auch gezueckt wird (nur in NPC's):
+     AddItem("/waffe/zapper",REFRESH_DESTRUCT|CLONE_WIELD,1);
+
+
+SIEHE AUCH
+==========
+
+   RemoveItem(), replace_program(), create(), P_GUARD,
+   /std/room/items.c, /std/npc/items.c,
+   /sys/rooms.h, /sys/npc.h
+
 Last modified: Thu Nov 23 13:43:30 CET 2006 by Rumata
diff --git a/doc/lfun/AddKnownPotion b/doc/lfun/AddKnownPotion
index 4d4d296..874e55c 100644
--- a/doc/lfun/AddKnownPotion
+++ b/doc/lfun/AddKnownPotion
@@ -1,25 +1,45 @@
+
 AddKnownPotion()
+****************
 
-FUNKTION:
-     int AddKnownPotion(int nr)
 
-DEFINIERT IN:
-     /std/player/potion.c
+FUNKTION
+========
 
-ARGUMENTE:
-     int nr       Nummer eines ZTs
+   int AddKnownPotion(int nr)
 
-BESCHREIBUNG:
-     Addiert einen ZT als bekannt in einem Spieler. Nur vom Orakel rufbar.
 
-RUeCKGABEWERT:
-     1  Erfolg
-     -1 fehlende Berechtigung
-     -2 Nummer bereits eingetragen
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
-     Verwandt:  FindPotion(), RemoveKnownPotion(), InList()
-     Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+   /std/player/potion.c
+
+
+ARGUMENTE
+=========
+
+   int nr       Nummer eines ZTs
+
+
+BESCHREIBUNG
+============
+
+   Addiert einen ZT als bekannt in einem Spieler. Nur vom Orakel rufbar.
+
+
+RUeCKGABEWERT
+=============
+
+   1  Erfolg
+   -1 fehlende Berechtigung
+   -2 Nummer bereits eingetragen
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
 
 6.Feb 2016 Gloinson
diff --git a/doc/lfun/AddMaterial b/doc/lfun/AddMaterial
index d4f50b7..7f90d82 100644
--- a/doc/lfun/AddMaterial
+++ b/doc/lfun/AddMaterial
@@ -1,76 +1,100 @@
+
 AddMaterial()
-FUNKTION:
-     private static varargs void AddMaterial(string mat, int gender,
-                                             mixed names, mixed groups,
-                                             mixed dif) {
+*************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     string mat
-       Materialstring, definiert in <thing/material.h>
+FUNKTION
+========
 
-     int gender
-       Geschlecht des einzutragenden Materials
+   private static varargs void AddMaterial(string mat, int gender,
+                                           mixed names, mixed groups,
+                                           mixed dif) {
 
-     mixed names
-       Name des Materials:
-       - "<Nominativ>" oder (meist nur Nom. und Gen. noetig)
-       - ({"<Nominativ>","<Genitiv>","<Dativ>","<Akkusativ>"})
 
-     mixed groups
-       Eingruppierung des Materials:
-       - MATGROUP_XXX oder ({MATGROUP_XXX,...})
-       - ([MAT_GROUP_XXX:xx,MATGROUP_YYY:yy,...])
+DEFINIERT IN
+============
 
-     mixed dif
-       Schwierigkeiten bei der Erkennbarkeit:
-       - int x oder ({MINMAT,x1,MATPOS1,x2,MATPOS2 ...})
-       - xn: Erkennbarkeitsschwierigkeit (100=100%) -100..100
-       - MINMAT: Erkennung zumindest als _dieses_ Material
-                 moeglich
-       - MATPOSn: moegliches Material, erkennbar, wenn
-                  Erkennbarkeitfaehigkeit>=xn
-                  -> das letzte MATPOS muss natuerlich
-                     string mat entsprechen
+   /p/daemon/materialdb.c (MATERIALDB)
 
-BESCHREIBUNG:
-     Es wird in die Materialiendatenbank eine neues Material aufgenommen,
-     die Stringkonstante dafuer wird vorher in <thing/material.h> fest-
-     gelegt. Falls der Genitiv nicht Nominativ+"s" entspricht (z.B. "Seide"),
-     sollte dieser explizit angegeben werden.
-     Nach Neuladen der Datenbank ist dieses Material auch per MaterialName(),
-     'erkennbar' (siehe mixed dif, siehe Beispiel) bzw. seinen einzelnen
-     Gruppen zuordnbar.
 
-BEISPIELE:
-     AddMaterial(MAT_NITROGLYCERINE,NEUTER,"Nitroglycerin",
-                 ({MATGROUP_EXPLOSIVE,MATGROUP_FLUID}),
-                 ({MAT_OIL,25,MAT_MISC_EXPLOSIVE,50,MAT_NITROGLYCERINE}));
+ARGUMENTE
+=========
 
-     Damit wird das Material Nytroglycerin aufgenommen, ein explosiver
-     (damit entflammbarer) sowie fluessiger Stoff. Liegt die Erkennungs-
-     faehigkeit (MaterialName()) unter 25, wird es nur als Oel erkannt,
-     liegt sie unter 50, wird es zumindest als explosives Material erkannt,
-     liegt sie ueber 49, so wird es korrekt erkannt (wie schade :) ).
+   string mat
+     Materialstring, definiert in <thing/material.h>
 
-BEMERKUNGEN:
-     Wird in der create() der Datenbank aufgerufen. Zu beachten:
-     - vor Eintrag eines _neuen_ Materials die Datenbank durchsuchen!
-     - bei den Materialiengruppen die automatischen Abhaengigkeiten in
-       AddMaterial() durchsehen!
-     - bitte Datenbank neu laden
+   int gender
+     Geschlecht des einzutragenden Materials
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+   mixed names
+     Name des Materials:
+     - "<Nominativ>" oder (meist nur Nom. und Gen. noetig)
+     - ({"<Nominativ>","<Genitiv>","<Dativ>","<Akkusativ>"})
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+   mixed groups
+     Eingruppierung des Materials:
+     - MATGROUP_XXX oder ({MATGROUP_XXX,...})
+     - ([MAT_GROUP_XXX:xx,MATGROUP_YYY:yy,...])
+
+   mixed dif
+     Schwierigkeiten bei der Erkennbarkeit:
+     - int x oder ({MINMAT,x1,MATPOS1,x2,MATPOS2 ...})
+     - xn: Erkennbarkeitsschwierigkeit (100=100%) -100..100
+     - MINMAT: Erkennung zumindest als _dieses_ Material
+               moeglich
+     - MATPOSn: moegliches Material, erkennbar, wenn
+                Erkennbarkeitfaehigkeit>=xn
+                -> das letzte MATPOS muss natuerlich
+                   string mat entsprechen
+
+
+BESCHREIBUNG
+============
+
+   Es wird in die Materialiendatenbank eine neues Material aufgenommen,
+   die Stringkonstante dafuer wird vorher in <thing/material.h> fest-
+   gelegt. Falls der Genitiv nicht Nominativ+"s" entspricht (z.B. "Seide"),
+   sollte dieser explizit angegeben werden.
+   Nach Neuladen der Datenbank ist dieses Material auch per MaterialName(),
+   'erkennbar' (siehe mixed dif, siehe Beispiel) bzw. seinen einzelnen
+   Gruppen zuordnbar.
+
+
+BEISPIELE
+=========
+
+   AddMaterial(MAT_NITROGLYCERINE,NEUTER,"Nitroglycerin",
+               ({MATGROUP_EXPLOSIVE,MATGROUP_FLUID}),
+               ({MAT_OIL,25,MAT_MISC_EXPLOSIVE,50,MAT_NITROGLYCERINE}));
+
+   Damit wird das Material Nytroglycerin aufgenommen, ein explosiver
+   (damit entflammbarer) sowie fluessiger Stoff. Liegt die Erkennungs-
+   faehigkeit (MaterialName()) unter 25, wird es nur als Oel erkannt,
+   liegt sie unter 50, wird es zumindest als explosives Material erkannt,
+   liegt sie ueber 49, so wird es korrekt erkannt (wie schade :) ).
+
+
+BEMERKUNGEN
+===========
+
+   Wird in der create() der Datenbank aufgerufen. Zu beachten:
+   - vor Eintrag eines _neuen_ Materials die Datenbank durchsuchen!
+   - bei den Materialiengruppen die automatischen Abhaengigkeiten in
+     AddMaterial() durchsehen!
+   - bitte Datenbank neu laden
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/AddMiniQuest b/doc/lfun/AddMiniQuest
index 91e7857..787e718 100644
--- a/doc/lfun/AddMiniQuest
+++ b/doc/lfun/AddMiniQuest
@@ -1,54 +1,71 @@
+
 AddMiniQuest()
-
-FUNKTION:
-    int AddMiniQuest(int stupse, string questgeber, string desc, int active,
-                     string titel, string erledigt, mapping voraussetzungen,
-                     string region, string *erlaubte)
-
-DEFINIERT IN:
-    /secure/questmaster
-
-BESCHREIBUNG:
-    Diese Funktion traegt eine neue Miniquest im Questmaster ein.
-
-ARGUMENTE:
-
-    stupse (>0)  - Anzahl Stufenpunkte, die fuer die MQ gutgeschrieben werden
-    questgeber   - Ladename des Objekts, das GiveMiniQuest() aufruft
-    desc         - Aufgabenbeschreibung der Miniquest
-    active (0/1) - ist die Miniquest aktiv, d.h. spielbar, oder nicht?
-    titel        - Titel der Miniquest, darf weder "in", noch "im" enthalten,
-                   weil dann der Eintrag in der Fraternitas-Bibliothek nicht
-                   gelesen werden kann.
-    erledigt     - Beschreibung der Miniquest, nachdem man sie erledigt hat
-                   Der Text kann in der Bibliothek der kleinen und grossen
-                   Heldentaten in der Fraternitas eingesehen werden.
-    voraussetzungen - Mapping im Format von P_RESTRICTIONS (s. dort), um
-                   die Voraussetzungen festzulegen, die ein Spieler 
-                   erfuellen muss, um die MQ ueberhaupt spielen zu koennen
-                   Wird fuer die regionsbezogenen Informationspunkte/-NPCs
-                   ausgewertet. 0 oder ([]) eintragen, wenn keine 
-                   Voraussetzungen bestehen.
-    region       - Zuordnung der Miniquest zu einer Region; wird fuer der
-                   Bibliothek der Fraternitas verwendet, um die MQs der
-                   einzelnen Regionen herauszufiltern.
-    erlaubte     - Array mit Ladenamen von Objekten, die berechtigt sind,
-                   die Daten der MQ abzufragen, um Spielern einen Hinweis
-                   darauf zu geben, die sie noch nicht bestanden haben.
-
-RUECKGABEWERTE:
-     1: Hat geklappt
-    -1: Parameterformat stimmt nicht (questgeber kein String oder Leerstring,
-        voraussetzungen kein Mapping, region oder titel keine Strings, 
-        erlaubte kein Array)
-    -2: weniger als 1 Stufenpunkt einzutragen versucht
-    -3: Das Array in "erlaubte" ist leer, oder zum angegebenen Questgeber
-        wurde keine Datei gefunden.
-    -4: Der angegebene Questgeber vergibt schon eine andere Miniquest
+**************
 
 
-SIEHE AUCH:
-    GiveMiniQuest(L), HasMiniQuest(L)
-    P_RESTRICTIONS
-    /secure/questmaster.c
+FUNKTION
+========
 
+   int AddMiniQuest(int stupse, string questgeber, string desc, int active,
+                    string titel, string erledigt, mapping voraussetzungen,
+                    string region, string *erlaubte)
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion traegt eine neue Miniquest im Questmaster ein.
+
+
+ARGUMENTE
+=========
+
+   stupse (>0)  - Anzahl Stufenpunkte, die fuer die MQ gutgeschrieben werden
+   questgeber   - Ladename des Objekts, das GiveMiniQuest() aufruft
+   desc         - Aufgabenbeschreibung der Miniquest
+   active (0/1) - ist die Miniquest aktiv, d.h. spielbar, oder nicht?
+   titel        - Titel der Miniquest, darf weder "in", noch "im" enthalten,
+                  weil dann der Eintrag in der Fraternitas-Bibliothek nicht
+                  gelesen werden kann.
+   erledigt     - Beschreibung der Miniquest, nachdem man sie erledigt hat
+                  Der Text kann in der Bibliothek der kleinen und grossen
+                  Heldentaten in der Fraternitas eingesehen werden.
+   voraussetzungen - Mapping im Format von P_RESTRICTIONS (s. dort), um
+                  die Voraussetzungen festzulegen, die ein Spieler
+                  erfuellen muss, um die MQ ueberhaupt spielen zu koennen
+                  Wird fuer die regionsbezogenen Informationspunkte/-NPCs
+                  ausgewertet. 0 oder ([]) eintragen, wenn keine
+                  Voraussetzungen bestehen.
+   region       - Zuordnung der Miniquest zu einer Region; wird fuer der
+                  Bibliothek der Fraternitas verwendet, um die MQs der
+                  einzelnen Regionen herauszufiltern.
+   erlaubte     - Array mit Ladenamen von Objekten, die berechtigt sind,
+                  die Daten der MQ abzufragen, um Spielern einen Hinweis
+                  darauf zu geben, die sie noch nicht bestanden haben.
+
+
+RUECKGABEWERTE
+==============
+
+    1: Hat geklappt
+   -1: Parameterformat stimmt nicht (questgeber kein String oder Leerstring,
+       voraussetzungen kein Mapping, region oder titel keine Strings,
+       erlaubte kein Array)
+   -2: weniger als 1 Stufenpunkt einzutragen versucht
+   -3: Das Array in "erlaubte" ist leer, oder zum angegebenen Questgeber
+       wurde keine Datei gefunden.
+   -4: Der angegebene Questgeber vergibt schon eine andere Miniquest
+
+
+SIEHE AUCH
+==========
+
+   GiveMiniQuest(L), HasMiniQuest(L)
+   P_RESTRICTIONS
+   /secure/questmaster.c
diff --git a/doc/lfun/AddMoney b/doc/lfun/AddMoney
index 229d1cc..b9e16b2 100644
--- a/doc/lfun/AddMoney
+++ b/doc/lfun/AddMoney
@@ -1,62 +1,92 @@
+
+AddMoney()
+**********
+
+
 AddMoney(L)
-FUNKTION:
-     public int AddMoney(int amount);
+===========
 
-DEFINIERT IN:
-     /std/container/moneyhandler.c
-     /std/living/moneyhandler.c
-     /std/player/moneyhandler.c
 
-ARGUMENTE:
-     int amount
-         Die zufuehrende oder abziehende Geldmenge
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Dem Spieler wird die in <amount> festgelegte Geldmenge abgezogen oder
-     zugefuehrt.
+   public int AddMoney(int amount);
 
-RUeCKGABEWERT:
-     Technisch gesehen wird Geld mit entsprechendem <amount> erzeugt
-     ("/items/money.c") und mittels "move" in den Spieler bewegt.  Das Ergebnis
-     dieses "move"-Aufrufes wird hier uebergeben, z.B. 1 fuer OK.
-     Die moeglichen Fehler-Konstanten sind in /sys/moving.h definiert, siehe
-     auch Dokumentation zu "move".
 
-BEMERKUNGEN:
-     <amount> kann sowohl positiv als auch negativ sein. Welche Auswirkungen
-     beide Faelle haben, sollte klar sein. Doch sollte bei einem negativen
-     <amount> vorher mittels QueryMoney() abgefragt werden, ob der Spieler
-     auch ueber ausreichend Geld verfuegt.
-     Wird dem Spieler Geld abgezogen, ist darauf zu achten, dieses in der
-     Zentralbank einzuzahlen (s.a.:PayIn() ). 
-     Verschafft man dem Spieler Geld aus dem Nichts, muss es vorher bei der
-     Zentralbank abgebucht (WithDraw()) werden.
+DEFINIERT IN
+============
 
-     Achtung: Kann der Spieler die in <amount> angebene Geldmenge nicht
-	      tragen, werden ihm keine Muenzen in sein Inventar bewegt.  Die
-	      Fehlermeldung erkennt man an dem Rueckgabewert ME_TOO_HEAVY.
+   /std/container/moneyhandler.c
+   /std/living/moneyhandler.c
+   /std/player/moneyhandler.c
 
-     Im Gegensatz zu Spielern haben alle anderen Objekte (Raeume, NPC, etc.)
-     standardmaessig keinen Moneyhandler. In diesem Fall muss in Lebewesen
-     "/std/living/moneyhandler"
-     und in nicht-Lebewesen
-     "/std/container/moneyhandler"
-     geerbt werden.
 
-BEISPIELE:
-     // gib ihm Geld
-     this_player()->AddMoney(50);
+ARGUMENTE
+=========
 
-     // nimm ihm Geld
-     if(this_player()->AddMoney(-50)==1)
-      write("Der Ork beklaut dich!\n");
+   int amount
+       Die zufuehrende oder abziehende Geldmenge
 
-SIEHE AUCH:
-     Geldhandling:	QueryMoney(L)
-     Zentralbank:	PayIn(L), WithDraw(L)
-     Sonstiges:		move(L),
-			/items/money.c, /sys/moving.h, /sys/money.h, /sys/bank.h
-			/std/container/moneyhandler.c
+
+BESCHREIBUNG
+============
+
+   Dem Spieler wird die in <amount> festgelegte Geldmenge abgezogen oder
+   zugefuehrt.
+
+
+RUeCKGABEWERT
+=============
+
+   Technisch gesehen wird Geld mit entsprechendem <amount> erzeugt
+   ("/items/money.c") und mittels "move" in den Spieler bewegt.  Das Ergebnis
+   dieses "move"-Aufrufes wird hier uebergeben, z.B. 1 fuer OK.
+   Die moeglichen Fehler-Konstanten sind in /sys/moving.h definiert, siehe
+   auch Dokumentation zu "move".
+
+
+BEMERKUNGEN
+===========
+
+   <amount> kann sowohl positiv als auch negativ sein. Welche Auswirkungen
+   beide Faelle haben, sollte klar sein. Doch sollte bei einem negativen
+   <amount> vorher mittels QueryMoney() abgefragt werden, ob der Spieler
+   auch ueber ausreichend Geld verfuegt.
+   Wird dem Spieler Geld abgezogen, ist darauf zu achten, dieses in der
+   Zentralbank einzuzahlen (s.a.:PayIn() ).
+   Verschafft man dem Spieler Geld aus dem Nichts, muss es vorher bei der
+   Zentralbank abgebucht (WithDraw()) werden.
+
+   Achtung: Kann der Spieler die in <amount> angebene Geldmenge nicht
+            tragen, werden ihm keine Muenzen in sein Inventar bewegt.  Die
+            Fehlermeldung erkennt man an dem Rueckgabewert ME_TOO_HEAVY.
+
+   Im Gegensatz zu Spielern haben alle anderen Objekte (Raeume, NPC, etc.)
+   standardmaessig keinen Moneyhandler. In diesem Fall muss in Lebewesen
+   "/std/living/moneyhandler"
+   und in nicht-Lebewesen
+   "/std/container/moneyhandler"
+   geerbt werden.
+
+
+BEISPIELE
+=========
+
+   // gib ihm Geld
+   this_player()->AddMoney(50);
+
+   // nimm ihm Geld
+   if(this_player()->AddMoney(-50)==1)
+    write("Der Ork beklaut dich!\n");
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      QueryMoney(L)
+   Zentralbank:       PayIn(L), WithDraw(L)
+   Sonstiges:         move(L),
+                      /items/money.c, /sys/moving.h, /sys/money.h, /sys/bank.h
+                      /std/container/moneyhandler.c
 
 18.02.2013, Zesstra
-
diff --git a/doc/lfun/AddMsg b/doc/lfun/AddMsg
index 974c905..9faad47 100644
--- a/doc/lfun/AddMsg
+++ b/doc/lfun/AddMsg
@@ -1,42 +1,62 @@
+
 AddMsg()
+********
 
-FUNKTION:
-     void AddMsg(string msg, int next);
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     msg
-          Die auszugebende Meldung.
-     next
-          Zeit bis zur naechsten Fahrplanstation.
+   void AddMsg(string msg, int next);
 
-BESCHREIBUNG:
-     Dem Fahrplan wird die Ausgabe einer Meldung an den Transporter
-     hinzugefuegt. Diese Meldung koennte zum Beispiel das Nahen der
-     naechsten Haltestelle ankuendigen o.ae. Nach Ausgabe der Meldung
-     vergehen next Sekunden, bis die naechste Station angefahren wird.
 
-     Um das Umbrechen der Meldung (normalerweise auf 78 Zeichen pro Zeile)
-     muss sich der Aufrufer selber kuemmern.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     keiner
+   /std/transport.c
 
-BEISPIELE:
 
-     AddMsg("In der Ferne taucht eine kleine Inseln auf.\n", 10);
-     AddMsg("Das Schiff steuert einen kleinen Steg an.\n");
-     AddRoute(...);
+ARGUMENTE
+=========
 
-     Nach der Ankuendigung der Insel vergehen 10 Sekunden, bis die naechste
-     Meldung ausgegeben wird. Da bei der zweiten Meldung keine Zeit
-     angegeben war, legt das Schiff direkt nach der Ausgabe der Meldung an.
+   msg
+        Die auszugebende Meldung.
+   next
+        Zeit bis zur naechsten Fahrplanstation.
 
-SIEHE AUCH:
-     AddRoute(), AddFun(), /std/transport.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Dem Fahrplan wird die Ausgabe einer Meldung an den Transporter
+   hinzugefuegt. Diese Meldung koennte zum Beispiel das Nahen der
+   naechsten Haltestelle ankuendigen o.ae. Nach Ausgabe der Meldung
+   vergehen next Sekunden, bis die naechste Station angefahren wird.
+
+   Um das Umbrechen der Meldung (normalerweise auf 78 Zeichen pro Zeile)
+   muss sich der Aufrufer selber kuemmern.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   AddMsg("In der Ferne taucht eine kleine Inseln auf.\n", 10);
+   AddMsg("Das Schiff steuert einen kleinen Steg an.\n");
+   AddRoute(...);
+
+   Nach der Ankuendigung der Insel vergehen 10 Sekunden, bis die naechste
+   Meldung ausgegeben wird. Da bei der zweiten Meldung keine Zeit
+   angegeben war, legt das Schiff direkt nach der Ausgabe der Meldung an.
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddFun(), /std/transport.c
+
 25.01.2015, Zesstra
-
diff --git a/doc/lfun/AddPlant b/doc/lfun/AddPlant
index a79bcff..ae2df8b 100644
--- a/doc/lfun/AddPlant
+++ b/doc/lfun/AddPlant
@@ -1,58 +1,84 @@
+
 AddPlant()
+**********
 
-FUNKTION:
-        varargs int AddPlant(string filename, [string|string* npcId]) 
 
-DEFINIERT IN:
-        /std/room/kraeuter.c
+FUNKTION
+========
 
-ARGUMENTE:
-        filename
-          Der Filename des Krauts das hier gefunden werden soll.
-        npcId
-          Die ID eines NPCs oder die IDs einer Liste von NPCs, der/die das 
-          Kraut bewachen soll/en. Befindet sich ein NPC mit einer dieser IDs
-          im Raum, kann das Kraut nicht gepflueckt werden. Dieses Argument 
-          ist optional!
+   varargs int AddPlant(string filename, [string|string* npcId])
 
-RUeCKGABEWERT:
-        -1 wenn das Objekt nicht geclont werden konnte
-        >=0 sonst
 
-BESCHREIBUNG:
-        Mit Hilfe dieser Funktion koennen Kraeuter fuer den mudweiten
-        Kraeuterskill recht einfach eingebaut werden. Alles was man
-        noch machen muss, ist den Namen der Pflanze in einem Detail oder
-        der Langbeschreibung zu erwaehnen.
-        Mit dem Befehl "showplant" in /obj/tools/planttool kann man sich 
-        bequem anzeigen lassen, was es alles an Kraeutern gibt, die man 
-        nehmen kann.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-        Damit die Kraeuter von den Spielern zum Brauen von Traenken benutzt
-        werden koennen, muss der Raum erst in einem Master eingetragen werden.
-        Derzeit schickt ihr dazu am besten eine kurze Mail an einen Erzmagier,
-        gerne nimmt Humni die derzeit entgegen.
-        Die Kraeuter wurden von der Balance bereits alle im vorhinein
-        abgenommen. Lediglich die Einhaltung der Kategorien ist zu beachten.
-        Sind Kraeuter nicht im Master konfiguriert (wie z.B. im Homemud), sind
-        alle erzeugten Kraeuter nur "Testkraeuter" mit nur der ID "kraut".
+   /std/room/kraeuter.c
 
-BEISPIELE:
-        #include <items/kraeuter/kraeuterliste.h>
-        inherit "/std/room/kraeuter";
-        inherit "/std/room";
-        
-        void create()
-        {
-          ::create();
-          SetProp(P_INT_LONG, "Du siehst eine Wiese voller Feldklee.\n");
-          AddPlant(FELDKLEE);
-        }
 
-SIEHE AUCH:
-        AddItem();
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   filename
+     Der Filename des Krauts das hier gefunden werden soll.
+   npcId
+     Die ID eines NPCs oder die IDs einer Liste von NPCs, der/die das
+     Kraut bewachen soll/en. Befindet sich ein NPC mit einer dieser IDs
+     im Raum, kann das Kraut nicht gepflueckt werden. Dieses Argument
+     ist optional!
+
+
+RUeCKGABEWERT
+=============
+
+   -1 wenn das Objekt nicht geclont werden konnte
+   >=0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Mit Hilfe dieser Funktion koennen Kraeuter fuer den mudweiten
+   Kraeuterskill recht einfach eingebaut werden. Alles was man
+   noch machen muss, ist den Namen der Pflanze in einem Detail oder
+   der Langbeschreibung zu erwaehnen.
+   Mit dem Befehl "showplant" in /obj/tools/planttool kann man sich
+   bequem anzeigen lassen, was es alles an Kraeutern gibt, die man
+   nehmen kann.
+
+
+BEMERKUNGEN
+===========
+
+   Damit die Kraeuter von den Spielern zum Brauen von Traenken benutzt
+   werden koennen, muss der Raum erst in einem Master eingetragen werden.
+   Derzeit schickt ihr dazu am besten eine kurze Mail an einen Erzmagier,
+   gerne nimmt Humni die derzeit entgegen.
+   Die Kraeuter wurden von der Balance bereits alle im vorhinein
+   abgenommen. Lediglich die Einhaltung der Kategorien ist zu beachten.
+   Sind Kraeuter nicht im Master konfiguriert (wie z.B. im Homemud), sind
+   alle erzeugten Kraeuter nur "Testkraeuter" mit nur der ID "kraut".
+
+
+BEISPIELE
+=========
+
+   #include <items/kraeuter/kraeuterliste.h>
+   inherit "/std/room/kraeuter";
+   inherit "/std/room";
+
+
+
+   void create()
+   {
+     ::create();
+     SetProp(P_INT_LONG, "Du siehst eine Wiese voller Feldklee.\n");
+     AddPlant(FELDKLEE);
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddItem();
+
 18.01.2015, Zesstra
-
diff --git a/doc/lfun/AddPluralId b/doc/lfun/AddPluralId
index fd37bb2..8d6d249 100644
--- a/doc/lfun/AddPluralId
+++ b/doc/lfun/AddPluralId
@@ -1,27 +1,49 @@
+
 AddPluralId()
+*************
 
-FUNKTION:
-     void AddPluralId(mixed id);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     id
-          Identfikationsstring oder Array von Strings
+   void AddPluralId(mixed id);
 
-BESCHREIBUNG:
-     Es werden ein oder mehrere Bezeichner hinzugefuegt, mit denen sich 
-     mehrere Einheiten der Menge ansprechen lassen.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     siehe /items/money.c
+   /std/unit.c
 
-SIEHE AUCH:
-     AddSingularId(), RemovePluralId(), AddId(), id(), /std/unit.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   id
+        Identfikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner hinzugefuegt, mit denen sich
+   mehrere Einheiten der Menge ansprechen lassen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   AddSingularId(), RemovePluralId(), AddId(), id(), /std/unit.c
+
 Last modified: Mon Jul 14 11:30:00 1997 by Silvana
diff --git a/doc/lfun/AddPursuer b/doc/lfun/AddPursuer
index 451ea9d..f4839e6 100644
--- a/doc/lfun/AddPursuer
+++ b/doc/lfun/AddPursuer
@@ -1,29 +1,52 @@
+
 AddPursuer()
+************
 
-FUNKTION:
-  void AddPursuer(object pursuer)
 
-ARGUMENTE:
-  pursuer: Objekt, das demjenigen folgen soll, in dem AddPursuer
-           aufgerufen wurde.
+FUNKTION
+========
 
-FUNKTION:
-  Durch den Aufruf von AddPursuer in einem Objekt, welches living() ist,
-  wird das Object, welches als Argument uebergeben wurde in die Liste
-  der Verfolger eingetragen. Alle Objekte, die in der Verfolgerliste stehen
-  werden bei Bewegungen des Verfolgten in dasselbe Environment bewegt.
+   void AddPursuer(object pursuer)
 
-RUECKGABEWERT:
-  keiner
 
-BEMERKUNG:
-  Im Verfolger wird PreventFollow mit dem Zielobjekt, in das der Verfolgte 
-  bewegt wird, aufgerufen. Dadurch kann der raeumliche Bereich, in dem 
-  verfolgt wird, eingeschraenkt werden.
+ARGUMENTE
+=========
 
-BEISPIELE:
-  find_player("jof")->AddPursuer(find_player("kirk"))
-  Danach wird Jof von Kirk verfolgt.
+   pursuer: Objekt, das demjenigen folgen soll, in dem AddPursuer
+            aufgerufen wurde.
 
-SIEHE AUCH:
-  "RemovePursuer", "PreventFollow"
+
+FUNKTION
+========
+
+   Durch den Aufruf von AddPursuer in einem Objekt, welches living() ist,
+   wird das Object, welches als Argument uebergeben wurde in die Liste
+   der Verfolger eingetragen. Alle Objekte, die in der Verfolgerliste stehen
+   werden bei Bewegungen des Verfolgten in dasselbe Environment bewegt.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNG
+=========
+
+   Im Verfolger wird PreventFollow mit dem Zielobjekt, in das der Verfolgte
+   bewegt wird, aufgerufen. Dadurch kann der raeumliche Bereich, in dem
+   verfolgt wird, eingeschraenkt werden.
+
+
+BEISPIELE
+=========
+
+   find_player("jof")->AddPursuer(find_player("kirk"))
+   Danach wird Jof von Kirk verfolgt.
+
+
+SIEHE AUCH
+==========
+
+   "RemovePursuer", "PreventFollow"
diff --git a/doc/lfun/AddReadDetail b/doc/lfun/AddReadDetail
index c8de775..7f36aa4 100644
--- a/doc/lfun/AddReadDetail
+++ b/doc/lfun/AddReadDetail
@@ -1,80 +1,102 @@
+
 AddReadDetail()
+***************
 
-FUNKTION:
-    void AddReadDetail(string|string*keys,
-                       string|string*|mapping|closure desc);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den Namen der Details.
-    desc
-      String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+   void AddReadDetail(string|string*keys,
+                      string|string*|mapping|closure desc);
 
-BESCHREIBUNG:
-    Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
-    beim Lesen ausgegeben werden, haengt im wesentlichen vom Typ der
-    Beschreibung <desc> ab:
-      <desc> ist ein String.
-       Beim Lesen wird dieser String zurueckgegeben.
-      <desc> ist ein String-Array.
-       Beim Lesen wird zufaellig einer der Strings zurueckgegeben.
-      <desc> ist ein Mapping.
-        Das Mapping muss folgenden Aufbau haben:
-          ([0:        "Defaulttext",
-            "rasse1": "r1text", ...]).
 
-        Falls fuer die Rasse des das Detail untersuchenden Spielers ein
-        Eintrag im Mapping existiert, wird der entsprechende Text
-        zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
-        rassenabhaengige Texte moeglich.
-      <desc> ist eine Closure.
-        In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
-        zurueckgegeben. Die Closure bekommt dabei den Namen des Details
-        als Parameter uebergeben.
+DEFINIERT IN
+============
 
-    Fuer lesbare Details koennen Forscherpunkte eingetragen werden.
+   /std/thing/description.c
 
-    Will man ein lesbares Detail an einem Objekt haben, welches der Spieler
-    mit "lies <id>" (<id> ist eine ID des Objekts) bekommt, muss man ein
-    Detail SENSE_DEFAULT hinzufuegen.
-    (Ein Detail "<id>" hinzuzufuegen, hat einen ganz anderes Effekt! Dieses
-     wuerde vom Spieler mit "lies <id> an <id>" gelesen werden und ist
-     meistens nicht das, was gewuenscht wird.)
 
-BEMERKUNGEN:
-    (1) Auf die 'desc' wird kein process_string() mehr angewendet.
-        Bitte stattdessen lfun closures bzw. 'inline closures'
-        verwenden.
+ARGUMENTE
+=========
 
-    (2) Im Gegensatz zum Verhalten von AddTouchDetail(), AddSmells() und
-        AddSounds() wirkt ein SENSE_DEFAULT-Detail in einem Raum nicht.
-        Ein einfaches "lies" bleibt dann ohne Rueckgabewert.
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
 
-BEISPIELE:
-    AddReadDetail( ({ "schild" }),
-      "BETRETEN STRENGSTENS VERBOTEN!\n" );
 
-    AddReadDetail("inschrift",
-                  ([0: "Dort steht: Ein Ring sie zu binden. ....\n",
-                    "elf": "Alles in dir straeubt sich, DAS DA zu lesen.\n"]));
+BESCHREIBUNG
+============
 
-    AddReadDetail("regeln",
-      function string() {
-        this_player()->More("/etc/WIZRULES", 1);
-        return "";
-      });
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   beim Lesen ausgegeben werden, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+      Beim Lesen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+      Beim Lesen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+           "rasse1": "r1text", ...]).
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Texte moeglich.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer lesbare Details koennen Forscherpunkte eingetragen werden.
+
+   Will man ein lesbares Detail an einem Objekt haben, welches der Spieler
+   mit "lies <id>" (<id> ist eine ID des Objekts) bekommt, muss man ein
+   Detail SENSE_DEFAULT hinzufuegen.
+   (Ein Detail "<id>" hinzuzufuegen, hat einen ganz anderes Effekt! Dieses
+    wuerde vom Spieler mit "lies <id> an <id>" gelesen werden und ist
+    meistens nicht das, was gewuenscht wird.)
+
+
+BEMERKUNGEN
+===========
+
+   (1) Auf die 'desc' wird kein process_string() mehr angewendet.
+       Bitte stattdessen lfun closures bzw. 'inline closures'
+       verwenden.
+
+   (2) Im Gegensatz zum Verhalten von AddTouchDetail(), AddSmells() und
+       AddSounds() wirkt ein SENSE_DEFAULT-Detail in einem Raum nicht.
+       Ein einfaches "lies" bleibt dann ohne Rueckgabewert.
+
+
+BEISPIELE
+=========
+
+   AddReadDetail( ({ "schild" }),
+     "BETRETEN STRENGSTENS VERBOTEN!\n" );
+
+   AddReadDetail("inschrift",
+                 ([0: "Dort steht: Ein Ring sie zu binden. ....\n",
+                   "elf": "Alles in dir straeubt sich, DAS DA zu lesen.\n"]));
+
+   AddReadDetail("regeln",
+     function string() {
+       this_player()->More("/etc/WIZRULES", 1);
+       return "";
+     });
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddResistanceModifier b/doc/lfun/AddResistanceModifier
index 6476f86..b8a5ad8 100644
--- a/doc/lfun/AddResistanceModifier
+++ b/doc/lfun/AddResistanceModifier
@@ -1,49 +1,75 @@
+
 AddResistanceModifier()
+***********************
 
-FUNKTION:
-     varargs int AddResistanceModifier(mapping mod, string add)
 
-DEFINIERT IN:
-     /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     mapping mod:
-      Mapping mit Schadensarten und ihrem Resistenzmodifikator (der im Bereich
-      von -1.0 bis +x liegen kann), z.B. ([DT_FIRE:-1.0]) (Totalresistenz).
-     string add:
-      Ein Identifikator fuer _diesen_ Eintrag des setzenden Objektes.
+   varargs int AddResistanceModifier(mapping mod, string add)
 
-BESCHREIBUNG:
-     Es werden Resistenzen in dem Objekt gesetzt, die solange bestehen, wie
-     das setzende Objekt existiert, oder nicht RemoveResistanceModifier
-     (mit eventuellem Schluessel add) aufgerufen wird. Zusaetzliche Resistenzen
-     werden eingerechnet.
 
-BEMERKUNGEN:
-     Fuer Ruestungen kann und sollte man P_RESISTANCE_STRENGTHS verwenden.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     // Oel mit vervierfachtem Feuerschaden
-     int add_action() {
-      ...
-      write(break_string("Du schuettest das Oel ueber "+
-			 npc->name(WEN)+".",78));
-      ...
-      npc->AddResistanceModifier(([DT_FIRE:3.0]), "oel");
-      SetProp(P_INVIS,1);
-      SetProp(P_EXTRA_LOOK, "Ueberall tropft Oel herunter.\n");
-      move(npc,M_NOCHECK);
-      ...
-     }
+   /std/living/combat.c
 
-RUeCKGABEWERT:
-     1 fuer Erfolg
 
-SIEHE AUCH:
-     Modifikatoren:	RemoveResistanceModifier(), P_RESISTANCE_MODIFIER
-     simple Resistenz:	P_RESISTANCE, P_VULNERABILITY
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+ARGUMENTE
+=========
+
+   mapping mod:
+    Mapping mit Schadensarten und ihrem Resistenzmodifikator (der im Bereich
+    von -1.0 bis +x liegen kann), z.B. ([DT_FIRE:-1.0]) (Totalresistenz).
+   string add:
+    Ein Identifikator fuer _diesen_ Eintrag des setzenden Objektes.
+
+
+BESCHREIBUNG
+============
+
+   Es werden Resistenzen in dem Objekt gesetzt, die solange bestehen, wie
+   das setzende Objekt existiert, oder nicht RemoveResistanceModifier
+   (mit eventuellem Schluessel add) aufgerufen wird. Zusaetzliche Resistenzen
+   werden eingerechnet.
+
+
+BEMERKUNGEN
+===========
+
+   Fuer Ruestungen kann und sollte man P_RESISTANCE_STRENGTHS verwenden.
+
+
+BEISPIELE
+=========
+
+   // Oel mit vervierfachtem Feuerschaden
+   int add_action() {
+    ...
+    write(break_string("Du schuettest das Oel ueber "+
+                       npc->name(WEN)+".",78));
+    ...
+    npc->AddResistanceModifier(([DT_FIRE:3.0]), "oel");
+    SetProp(P_INVIS,1);
+    SetProp(P_EXTRA_LOOK, "Ueberall tropft Oel herunter.\n");
+    move(npc,M_NOCHECK);
+    ...
+   }
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     RemoveResistanceModifier(), P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 29.Apr 2002, Gloinson@MG
diff --git a/doc/lfun/AddRoomCmd b/doc/lfun/AddRoomCmd
index 5e206fe..f4aeb68 100644
--- a/doc/lfun/AddRoomCmd
+++ b/doc/lfun/AddRoomCmd
@@ -1,13 +1,23 @@
+
 AddRoomCmd()
+************
 
-SYNTAX:
-	AddRoomCmd( string kommando, string funktion );
-	AddRoomCmd( string *kommandos, string funktion );
 
-FUNKTION:
-	
-	Diese Funktion ist veraltet. Sie wird vollstaendig durch
-	die Funktion AddCmd ersetzt.
+SYNTAX
+======
 
-SIEHE AUCH:
-	"AddCmd"
+   AddRoomCmd( string kommando, string funktion );
+   AddRoomCmd( string *kommandos, string funktion );
+
+
+FUNKTION
+========
+
+   Diese Funktion ist veraltet. Sie wird vollstaendig durch
+   die Funktion AddCmd ersetzt.
+
+
+SIEHE AUCH
+==========
+
+   "AddCmd"
diff --git a/doc/lfun/AddRoomMessage b/doc/lfun/AddRoomMessage
index 4a9ca12..aa700c1 100644
--- a/doc/lfun/AddRoomMessage
+++ b/doc/lfun/AddRoomMessage
@@ -1,80 +1,103 @@
+
 AddRoomMessage()
+****************
 
-FUNKTION:
-     void AddRoomMessage(string *msg, int time, mixed *func);
 
-DEFINIERT IN:
-     /std/room/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     msg
-          Array von Strings mit den Meldungen.
-     time
-          Der Abstand zwischen zwei Meldungen in Sekunden.
-     func (optional)
-          String oder Array von Strings mit Funktionsnamen
+   void AddRoomMessage(string *msg, int time, mixed *func);
 
-BESCHREIBUNG:
-     Mit dieser Funktion legt man fest, dass in bestimmten Zeitabstaenden
-     Meldungen an den Raum geschickt werden sollen.
 
-     Es wird alle time Sekunden zufaellig eine der in msg angegebenen
-     Meldungen ausgegeben. Hat man auch noch func angegeben, so wird
-     zusaetzlich diese Funktion (bei einem Array: eine zufaellig ausgesuchte
-     Funktion) im Raum aufgerufen. Als Parameter bekommt die Funktion die
-     Nummer der ausgegebenen Meldung.
+DEFINIERT IN
+============
 
-     Bevor man allerdings jeden Raum mit AddRoomMessage() pflastert, sollte
-     man folgendes bedenken:
-        o Viele Meldungen in vielen Raeumen tendieren dazu, den Spielern auf
-          die Nerven zu gehen!
-        o Da das Timing ueber einen call_out() gesteuert wird, ist das Ganze
-          aus Sicht des GameDrivers auch noch relativ teuer!
-     Fazit: weniger ist mehr!
+   /std/room/description.c
 
-BEMERKUNGEN:
-     * Falls time < 15 Sekunden ist, wird auf 15 Sekunden aufgerundet.
-     * der Praefix Add... taeuscht hier. Ein Aufruf von AddRoomMessage()
-       ueberschreibt alle vorherigen Werte
-     * THIS_PLAYER() NICHT VERWENDEN!
-     In Funktionen, die durch AddRoomMessage() ausgeloest werden, darf
-     this_player() nicht verwendet werden. AddRoomMessage ist call_out-
-     gesteuert und speichert somit das this_player(). Damit ist this_player()
-     immer der Spieler, der den Raum geladen, also den Raum als erster
-     betreten hat. 
-     Spieler also bitte selbst ueber filter(all_inventory(this_object()),
-                                            #'interactive) suchen.
 
-BEISPIELE:
-     Es soll alle halbe Minute eine Meldung ausgegeben werden. Falls es
-     unter den Fuessen knackt, soll man zudem mit 30%-iger
-     Wahrscheinlichkeit zusammenzucken:
+ARGUMENTE
+=========
 
-     inherit "/std/room";
+   msg
+        Array von Strings mit den Meldungen.
+   time
+        Der Abstand zwischen zwei Meldungen in Sekunden.
+   func (optional)
+        String oder Array von Strings mit Funktionsnamen
 
-     void create() {
-       ::create();
-       AddRoomMessage( ({ "In der Ferne schreit ein Kaeuzchen.\n",
-                          "Es raschelt im Gebuesch.\n",
-                          "Etwas knackt unter Deinen Fuessen.\n" }),
-                        30, ({"sound", "sound_more_rnd"}) );
-       ...
-     }
 
-     void sound(int msg) {
-       if (msg == 2)         // Es hat geknackt...
-         if (random(10) < 3) // Schreck lass nach! ;-)
-           tell_room(this_object(), "Erschrocken faehrst Du zusammen!\n" );
-     }
+BESCHREIBUNG
+============
 
-     // Extra-Beispiel: wir setzen die Wartedauer (Parameter tim) neu
-     void sound_more_rnd() {
-       sound(0);   // die Message-Nummer ist hier unwichtig
-       SetProp(P_MSG_PROB, 25+random(20));  // neue Wartedauer
-     }
+   Mit dieser Funktion legt man fest, dass in bestimmten Zeitabstaenden
+   Meldungen an den Raum geschickt werden sollen.
 
-SIEHE AUCH:
-     Verwandt: tell_room(), ReceiveMsg()
-     Props:    P_ROOM_MSG, P_FUNC_MSG, P_MSG_PROB
+   Es wird alle time Sekunden zufaellig eine der in msg angegebenen
+   Meldungen ausgegeben. Hat man auch noch func angegeben, so wird
+   zusaetzlich diese Funktion (bei einem Array: eine zufaellig ausgesuchte
+   Funktion) im Raum aufgerufen. Als Parameter bekommt die Funktion die
+   Nummer der ausgegebenen Meldung.
+
+   Bevor man allerdings jeden Raum mit AddRoomMessage() pflastert, sollte
+   man folgendes bedenken:
+      o Viele Meldungen in vielen Raeumen tendieren dazu, den Spielern auf
+        die Nerven zu gehen!
+      o Da das Timing ueber einen call_out() gesteuert wird, ist das Ganze
+        aus Sicht des GameDrivers auch noch relativ teuer!
+   Fazit: weniger ist mehr!
+
+
+BEMERKUNGEN
+===========
+
+   * Falls time < 15 Sekunden ist, wird auf 15 Sekunden aufgerundet.
+   * der Praefix Add... taeuscht hier. Ein Aufruf von AddRoomMessage()
+     ueberschreibt alle vorherigen Werte
+   * THIS_PLAYER() NICHT VERWENDEN!
+   In Funktionen, die durch AddRoomMessage() ausgeloest werden, darf
+   this_player() nicht verwendet werden. AddRoomMessage ist call_out-
+   gesteuert und speichert somit das this_player(). Damit ist this_player()
+   immer der Spieler, der den Raum geladen, also den Raum als erster
+   betreten hat.
+   Spieler also bitte selbst ueber filter(all_inventory(this_object()),
+                                          #'interactive) suchen.
+
+
+BEISPIELE
+=========
+
+   Es soll alle halbe Minute eine Meldung ausgegeben werden. Falls es
+   unter den Fuessen knackt, soll man zudem mit 30%-iger
+   Wahrscheinlichkeit zusammenzucken:
+
+   inherit "/std/room";
+
+   void create() {
+     ::create();
+     AddRoomMessage( ({ "In der Ferne schreit ein Kaeuzchen.\n",
+                        "Es raschelt im Gebuesch.\n",
+                        "Etwas knackt unter Deinen Fuessen.\n" }),
+                      30, ({"sound", "sound_more_rnd"}) );
+     ...
+   }
+
+   void sound(int msg) {
+     if (msg == 2)         // Es hat geknackt...
+       if (random(10) < 3) // Schreck lass nach! ;-)
+         tell_room(this_object(), "Erschrocken faehrst Du zusammen!\n" );
+   }
+
+   // Extra-Beispiel: wir setzen die Wartedauer (Parameter tim) neu
+   void sound_more_rnd() {
+     sound(0);   // die Message-Nummer ist hier unwichtig
+     SetProp(P_MSG_PROB, 25+random(20));  // neue Wartedauer
+   }
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: tell_room(), ReceiveMsg()
+   Props:    P_ROOM_MSG, P_FUNC_MSG, P_MSG_PROB
 
 2.Feb 2016 Gloinson
diff --git a/doc/lfun/AddRoute b/doc/lfun/AddRoute
index 3ca0093..265fa8a 100644
--- a/doc/lfun/AddRoute
+++ b/doc/lfun/AddRoute
@@ -1,84 +1,114 @@
+
 AddRoute()
-FUNKTION:
-    public varargs void AddRoute(string room, int stay, int next, 
-        string harbour_desc, mixed dest_ids, string deststr)
+**********
 
-DEFINIERT IN:
-    /std/transport.c
 
-ARGUMENTE:
-    string room
-        Filename der Haltestelle (des Ziels)
-    int stay
-        Aufenthaltszeit an der Haltestelle.
-    int next
-        Fahrtzeit von dort bis zum naechsten Fahrplanpunkt
-    string harbour_desc
-        Name der Haltestelle (fuer QueryArrived)
-    mixed dest_ids
-        kleingeschriebene IDs der Haltestelle
-    string destrstr
-        Unbenutzt / Undefiniert.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Dem Fahrplan des Transporters wird eine neue Haltestelle hinzugefuegt.
+   public varargs void AddRoute(string room, int stay, int next,
+       string harbour_desc, mixed dest_ids, string deststr)
 
-    Bei Erreichen der Haltestelle wird der Transporter in den Raum 'room'
-    bewegt und sichtbar gemacht. Nun kann man ihn fuer 'stay' Sekunden
-    betreten oder verlassen, bevor er ablegt (unsichtbar gemacht wird).
-    Nach 'next' Sekunden wird dann der naechste Punkt des Fahrplans
-    ausgefuehrt.
-     
-    'harbour_desc' ist ein String, den QueryArrived() zurueckgibt, wenn sich
-    der Transporter an einer Haltestelle befindet. In der Regel ist das ein
-    String, der die Haltestelle naeher beschreibt.
-    
-    'dest_ids' ist ein Array von Strings, die als ID-Code fuer diese 
-    Haltstelle dienen. Das wird zB bei der Ermittlung einer Haltestelle bei 
-    "reise nach" benutzt. Wenn 'dest_ids' nicht gesetzt ist, und auch 
-    P_HARBOUR des Zielhafens nicht korrekt gesetzt ist, werden 
-    grossgeschriebene Begriffe aus 'harbour_desc' verwendet.
 
-BEISPIELE:
-    #1 Hier ein Auszug aus /d/inseln/schiffe/jolle.c:
+DEFINIERT IN
+============
 
-      AddRoute("/d/ebene/room/PortVain/po_haf2", 40,
-               10, "Hafen von Port Vain");
+   /std/transport.c
 
-    Die Jolle wird also beim Anlegen in den Port Vainer Hafen bewegt und
-    laesst sich dort 40 Sekunden lang betreten oder verlassen.
-    QueryArrived() liefert waehrend dieser Zeit den String "Hafen von Port
-    Vain" zurueck. Nach den 40 Sekunden legt die Jolle ab, und nach
-    weiteren 10 Sekunden wird die naechste Station in ihrem Fahrplan
-    angefahren.
 
-    #2 Die Galeere nach Orkhausen:
-      AddRoute(INSEL("steg"), 30, 20, "Verlorene Land ( Orkhausen )" );
-      - haelt 30 Sekunden
-      - reist 20 Sekunden
-      - reist nach INSEL("steg"), bekannt als "Verlorene Land ( Orkhausen )"
-      - da keine 'dest_ids' angegeben sind, waere eine so definierte 
-        Haltstelle nur mit den IDs ansprechbar, die in P_HARBOURS im Zielraum
-        angegeben sind.
+ARGUMENTE
+=========
 
-    Wenn man nun erreichen wollte, dass das Ziel auch mit dem Kuerzel "vland"
-    ansprechbar ist, kann man zum einen explizite 'dest_ids' eintragen:
-      AddRoute(INSEL("steg"), 30, 20, "Verlorene Land ( Orkhausen )",
-               ({"verlorenes", "land", "orkhausen", "vland"}));
-    Dies laesst sich im Zielhafen aber auch durch Eintragen des Kuerzels
-    "vland" in P_HARBOUR erreichen. Dies hat den Vorteil, dass dieser Hafen
-    dann von allen Transportern, die dort anlegen, unter demselben Namen
-    erreicht werden kann.
-    
-HINWEISE:
-    Dadurch, dass die Eintraege aus P_HARBOUR und 'dest_ids' gleichberechtigt
-    fuer "reise nach <ziel>" verwendet werden koennen, ist es moeglich,
-    dass die Reiseziele auf einem Schiff unter zusaetzlichen Bezeichnungen 
-    bekannt sind, als an Land (zum Beispiel koennte eine fernwestliche
-    Besatzung die Ziele anders nennen).
+   string room
+       Filename der Haltestelle (des Ziels)
+   int stay
+       Aufenthaltszeit an der Haltestelle.
+   int next
+       Fahrtzeit von dort bis zum naechsten Fahrplanpunkt
+   string harbour_desc
+       Name der Haltestelle (fuer QueryArrived)
+   mixed dest_ids
+       kleingeschriebene IDs der Haltestelle
+   string destrstr
+       Unbenutzt / Undefiniert.
 
-SIEHE AUCH:
-Funktionen:  AddMsg(L), AddFun(L), /std/transport.c
-Properties:  P_HARBOUR, P_NO_TRAVELING, P_TRAVEL_INFO
+
+BESCHREIBUNG
+============
+
+   Dem Fahrplan des Transporters wird eine neue Haltestelle hinzugefuegt.
+
+   Bei Erreichen der Haltestelle wird der Transporter in den Raum 'room'
+   bewegt und sichtbar gemacht. Nun kann man ihn fuer 'stay' Sekunden
+   betreten oder verlassen, bevor er ablegt (unsichtbar gemacht wird).
+   Nach 'next' Sekunden wird dann der naechste Punkt des Fahrplans
+   ausgefuehrt.
+
+
+
+   'harbour_desc' ist ein String, den QueryArrived() zurueckgibt, wenn sich
+   der Transporter an einer Haltestelle befindet. In der Regel ist das ein
+   String, der die Haltestelle naeher beschreibt.
+
+
+
+   'dest_ids' ist ein Array von Strings, die als ID-Code fuer diese
+   Haltstelle dienen. Das wird zB bei der Ermittlung einer Haltestelle bei
+   "reise nach" benutzt. Wenn 'dest_ids' nicht gesetzt ist, und auch
+   P_HARBOUR des Zielhafens nicht korrekt gesetzt ist, werden
+   grossgeschriebene Begriffe aus 'harbour_desc' verwendet.
+
+
+BEISPIELE
+=========
+
+   #1 Hier ein Auszug aus /d/inseln/schiffe/jolle.c:
+
+     AddRoute("/d/ebene/room/PortVain/po_haf2", 40,
+              10, "Hafen von Port Vain");
+
+   Die Jolle wird also beim Anlegen in den Port Vainer Hafen bewegt und
+   laesst sich dort 40 Sekunden lang betreten oder verlassen.
+   QueryArrived() liefert waehrend dieser Zeit den String "Hafen von Port
+   Vain" zurueck. Nach den 40 Sekunden legt die Jolle ab, und nach
+   weiteren 10 Sekunden wird die naechste Station in ihrem Fahrplan
+   angefahren.
+
+   #2 Die Galeere nach Orkhausen:
+     AddRoute(INSEL("steg"), 30, 20, "Verlorene Land ( Orkhausen )" );
+     - haelt 30 Sekunden
+     - reist 20 Sekunden
+     - reist nach INSEL("steg"), bekannt als "Verlorene Land ( Orkhausen )"
+     - da keine 'dest_ids' angegeben sind, waere eine so definierte
+       Haltstelle nur mit den IDs ansprechbar, die in P_HARBOURS im Zielraum
+       angegeben sind.
+
+   Wenn man nun erreichen wollte, dass das Ziel auch mit dem Kuerzel "vland"
+   ansprechbar ist, kann man zum einen explizite 'dest_ids' eintragen:
+     AddRoute(INSEL("steg"), 30, 20, "Verlorene Land ( Orkhausen )",
+              ({"verlorenes", "land", "orkhausen", "vland"}));
+   Dies laesst sich im Zielhafen aber auch durch Eintragen des Kuerzels
+   "vland" in P_HARBOUR erreichen. Dies hat den Vorteil, dass dieser Hafen
+   dann von allen Transportern, die dort anlegen, unter demselben Namen
+   erreicht werden kann.
+
+
+HINWEISE
+========
+
+   Dadurch, dass die Eintraege aus P_HARBOUR und 'dest_ids' gleichberechtigt
+   fuer "reise nach <ziel>" verwendet werden koennen, ist es moeglich,
+   dass die Reiseziele auf einem Schiff unter zusaetzlichen Bezeichnungen
+   bekannt sind, als an Land (zum Beispiel koennte eine fernwestliche
+   Besatzung die Ziele anders nennen).
+
+
+SIEHE AUCH
+==========
+
+Funktionen  AddMsg(L), AddFun(L), /std/transport.c Properties
+P_HARBOUR, P_NO_TRAVELING, P_TRAVEL_INFO
+
 
 2015-Jan-18, Arathorn.
+======================
diff --git a/doc/lfun/AddSingularId b/doc/lfun/AddSingularId
index d956567..c45199e 100644
--- a/doc/lfun/AddSingularId
+++ b/doc/lfun/AddSingularId
@@ -1,27 +1,49 @@
+
 AddSingularId()
+***************
 
-FUNKTION:
-     void AddSingularId(mixed id);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     id
-          Identifikationsstring oder Array von Strings
+   void AddSingularId(mixed id);
 
-BESCHREIBUNG:
-     Es werden ein oder mehrere Bezeichner hinzugefuegt, mit denen sich eine
-     einzelne Einheit ansprechen laesst.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     siehe /items/money.c
+   /std/unit.c
 
-SIEHE AUCH:
-     AddPluralId(), RemoveSingularId(), AddId(), id(), /std/unit.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   id
+        Identifikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner hinzugefuegt, mit denen sich eine
+   einzelne Einheit ansprechen laesst.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   AddPluralId(), RemoveSingularId(), AddId(), id(), /std/unit.c
+
 Last modified: Mon Jul 14 11:31:00 1997 by Silvana
diff --git a/doc/lfun/AddSmells b/doc/lfun/AddSmells
index 5682f00..2623f98 100644
--- a/doc/lfun/AddSmells
+++ b/doc/lfun/AddSmells
@@ -1,71 +1,92 @@
+
 AddSmells()
+***********
 
-FUNKTION:
-    void AddSmells(string|string* keys, string|string*|mapping|closure desc);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den Namen der Details.
-    desc
-      String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+   void AddSmells(string|string* keys, string|string*|mapping|closure desc);
 
-BESCHREIBUNG:
-    Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
-    koennen hiermit Gerueche realisiert werden:
-    Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
-    bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
-    Beschreibung <desc> ab:
-      <desc> ist ein String.
-        Beim Untersuchen wird dieser String zurueckgegeben.
-      <desc> ist ein String-Array.
-        Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
-      <desc> ist ein Mapping.
-        Das Mapping muss folgenden Aufbau haben:
-          ([0:        "Defaulttext",
-            "rasse1": "r1text", ...]).
 
-        Falls fuer die Rasse des das Detail untersuchenden Spielers ein
-        Eintrag im Mapping existiert, wird der entsprechende Text
-        zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
-        rassenabhaengige Details moeglich. Siehe auch die Beispiele.
-      <desc> ist eine Closure.
-        In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
-        zurueckgegeben. Die Closure bekommt dabei den Namen des Details
-        als Parameter uebergeben.
+DEFINIERT IN
+============
 
-    Fuer Geruchsdetails koennen Forscherpunkte eingetragen werden.
+   /std/thing/description.c
 
-    Gerueche koennen allgemein einen Raum oder Objekt zugeordnet werden:
-    dafuer muss man als <key> SENSE_DEFAULT uebergeben.
-    
-    Spielerkommandos: "riech", "rieche", "schnupper", "schnuppere"
 
-BEISPIELE:
-    Ein kleines Beispiel fuer rassenabhaengige Gerueche mit Closures:
-      string strafe(string key);
-      ...
-      AddSmells(SENSE_DEFAULT,
-        "Der Geruch von Knoblauch ist ueberwaeltigend!\n");
-      AddSmells(({"knoblauch","geruch"}),
-                ([0:        "Puhh, das stinkt!\n",
-                  "vampir": #'strafe]));
-      ...
-      string strafe(string key) {
-        this_player()->reduce_hit_points(100);
-        return "Der Knoblauch schmerzt dich furchtbar!\n";
-      }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
+   koennen hiermit Gerueche realisiert werden:
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+       Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+           "rasse1": "r1text", ...]).
+
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer Geruchsdetails koennen Forscherpunkte eingetragen werden.
+
+   Gerueche koennen allgemein einen Raum oder Objekt zugeordnet werden:
+   dafuer muss man als <key> SENSE_DEFAULT uebergeben.
+
+
+
+   Spielerkommandos: "riech", "rieche", "schnupper", "schnuppere"
+
+
+BEISPIELE
+=========
+
+   Ein kleines Beispiel fuer rassenabhaengige Gerueche mit Closures:
+     string strafe(string key);
+     ...
+     AddSmells(SENSE_DEFAULT,
+       "Der Geruch von Knoblauch ist ueberwaeltigend!\n");
+     AddSmells(({"knoblauch","geruch"}),
+               ([0:        "Puhh, das stinkt!\n",
+                 "vampir": #'strafe]));
+     ...
+     string strafe(string key) {
+       this_player()->reduce_hit_points(100);
+       return "Der Knoblauch schmerzt dich furchtbar!\n";
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddSounds b/doc/lfun/AddSounds
index b38389a..b14b976 100644
--- a/doc/lfun/AddSounds
+++ b/doc/lfun/AddSounds
@@ -1,63 +1,82 @@
+
 AddSounds()
+***********
 
-FUNKTION:
-    void AddSounds(string|string* keys, string|string*|mapping|closure desc);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den Namen der Details.
-    desc
-      String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+   void AddSounds(string|string* keys, string|string*|mapping|closure desc);
 
-BESCHREIBUNG:
-    Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
-    koennen hiermit Geraeusche realisiert werden:
-    Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
-    bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
-    Beschreibung <desc> ab:
-      <desc> ist ein String.
-        Beim Untersuchen wird dieser String zurueckgegeben.
-      <desc> ist ein String-Array.
-        Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
-      <desc> ist ein Mapping.
-        Das Mapping muss folgenden Aufbau haben:
-          ([0:        "Defaulttext",
-           "rasse1": "r1text", ...]).
 
-        Falls fuer die Rasse des das Detail untersuchenden Spielers ein
-        Eintrag im Mapping existiert, wird der entsprechende Text
-        zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
-        rassenabhaengige Details moeglich. Siehe auch die Beispiele.
-      <desc> ist eine Closure.
-        In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
-        zurueckgegeben. Die Closure bekommt dabei den Namen des Details
-        als Parameter uebergeben.
+DEFINIERT IN
+============
 
-    Fuer Geraeuschdetails koennen Forscherpunkte eingetragen werden.
+   /std/thing/description.c
 
-    Gerauesche koennen allgemein einen Raum oder Objekt zugeordnet werden:
-    dafuer muss man als <key> SENSE_DEFAULT uebergeben.
 
-    Spielerkommandos: "lausche", "lausch", "hoer", "hoere"
+ARGUMENTE
+=========
 
-BEISPIELE:
-    Ein kleines Beispiel fuer rassenabhaengige Gerauesche
-      AddSounds(SENSE_DEFAULT, "Die Zwergenmusik uebertoent alles!\n");
-      AddSounds(({"zwergenmusik","musik"}),
-                ([0      : "Seltsamer Krach!\n",
-                  "zwerg": "Das klingt einfach fantastisch!\n"]));
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
+   koennen hiermit Geraeusche realisiert werden:
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+       Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+          "rasse1": "r1text", ...]).
+
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer Geraeuschdetails koennen Forscherpunkte eingetragen werden.
+
+   Gerauesche koennen allgemein einen Raum oder Objekt zugeordnet werden:
+   dafuer muss man als <key> SENSE_DEFAULT uebergeben.
+
+   Spielerkommandos: "lausche", "lausch", "hoer", "hoere"
+
+
+BEISPIELE
+=========
+
+   Ein kleines Beispiel fuer rassenabhaengige Gerauesche
+     AddSounds(SENSE_DEFAULT, "Die Zwergenmusik uebertoent alles!\n");
+     AddSounds(({"zwergenmusik","musik"}),
+               ([0      : "Seltsamer Krach!\n",
+                 "zwerg": "Das klingt einfach fantastisch!\n"]));
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddSpecialDetail b/doc/lfun/AddSpecialDetail
index 90c5543..3405eec 100644
--- a/doc/lfun/AddSpecialDetail
+++ b/doc/lfun/AddSpecialDetail
@@ -1,61 +1,87 @@
-VERALTET: AddSpecialDetail()
 
-FUNKTION:
-    void AddSpecialDetail(string|string* keys, string func);
+AddSpecialDetail()
+******************
 
-DEFINIERT IN:
-    /std/thing/description.c
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den Namen der Details.
-    func
-      String mit dem Namen der Funktion, die zur Auswertung aufgerufen
-      wird.
+VERALTET AddSpecialDetail()
+===========================
 
-BESCHREIBUNG:
-    Es wird ein Detail hinzugefuegt, dessen Inhalt nicht von vornherein
-    feststeht, sondern von aeusseren Bedingungen abhaengt. Zu diesem
-    Zweck wird immer, wenn dieses Detail untersucht wird, die Funktion
-    func aufgerufen, um den aktuellen Zustand des Details zu bestimmen.
-    Der Funktion wird als Parameter das Schluesselwort uebergeben, mit
-    dem das Detail untersucht wurde.
 
-    VERALTET: Bitte AddDetail mit Closure benutzen.
+FUNKTION
+========
 
-BEISPIELE:
-    Ein zustandsabhaengiges Detail:
+   void AddSpecialDetail(string|string* keys, string func);
 
-      int hebel_betaetigt;
-      string hebel(string key);
-      ...
-      // ALT: AddSpecialDetail( ({ "hebel", "schalter" }), "hebel" );
-      AddDetail(({ "hebel", "schalter" }), #'hebel );
-      ...
-      string hebel(string key)
-      { if(hebel_betaetigt)
-          return "Der "+capitalize(key)+" steht auf EIN.\n";
-        else
-          return "Der "+capitalize(key)+" steht auf AUS.\n";
-      }
 
-    Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
-    ob das Flag hebel_betaetigt gesetzt ist oder nicht.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Intern werden Details und SpecialDetails im selben Mapping
-    verwaltet.
-    Man kann statt dieser Funktion deshalb auch AddDetail mit Closures
-    nutzen.
+   /std/thing/description.c
 
-SIEHE AUCH:
-    Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   func
+     String mit dem Namen der Funktion, die zur Auswertung aufgerufen
+     wird.
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Detail hinzugefuegt, dessen Inhalt nicht von vornherein
+   feststeht, sondern von aeusseren Bedingungen abhaengt. Zu diesem
+   Zweck wird immer, wenn dieses Detail untersucht wird, die Funktion
+   func aufgerufen, um den aktuellen Zustand des Details zu bestimmen.
+   Der Funktion wird als Parameter das Schluesselwort uebergeben, mit
+   dem das Detail untersucht wurde.
+
+   VERALTET: Bitte AddDetail mit Closure benutzen.
+
+
+BEISPIELE
+=========
+
+   Ein zustandsabhaengiges Detail:
+
+     int hebel_betaetigt;
+     string hebel(string key);
+     ...
+     // ALT: AddSpecialDetail( ({ "hebel", "schalter" }), "hebel" );
+     AddDetail(({ "hebel", "schalter" }), #'hebel );
+     ...
+     string hebel(string key)
+     { if(hebel_betaetigt)
+         return "Der "+capitalize(key)+" steht auf EIN.\n";
+       else
+         return "Der "+capitalize(key)+" steht auf AUS.\n";
+     }
+
+   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
+   ob das Flag hebel_betaetigt gesetzt ist oder nicht.
+
+
+BEMERKUNG
+=========
+
+   Intern werden Details und SpecialDetails im selben Mapping
+   verwaltet.
+   Man kann statt dieser Funktion deshalb auch AddDetail mit Closures
+   nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AddSpecialExit b/doc/lfun/AddSpecialExit
index b6b54bb..2f16c17 100644
--- a/doc/lfun/AddSpecialExit
+++ b/doc/lfun/AddSpecialExit
@@ -1,58 +1,82 @@
+
 AddSpecialExit()
-FUNKTION:
-     void AddSpecialExit(string|string* cmd, string|closure func);
+****************
 
-DEFINIERT IN:
-     /std/room/exits
 
-ARGUMENTE:
-     string/string* cmd
-          die Richtung(en), in die der Ausgang fuehrt
-     string/closure func
-          der Name der aufzurufenden Funktion/Closure
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Wird der
-     Ausgang benutzt, so wird die Closure bzw. Funktion func ausgefuehrt.
+   void AddSpecialExit(string|string* cmd, string|closure func);
 
-     AddSpecialExit(cmd, "func") entspricht:
-     - AddExit(keys, #'func)
 
-BEMERKUNGEN:
-     In func muss man den Spieler selbst in den Zielraum bewegen. Im
-     Erfolgsfall sollte man einen Wert >0 zurueckgeben, im Fehlerfall einen
-     Wert <=0.
+DEFINIERT IN
+============
 
-     func bekommt als Parameter einen String mit der gewaehlten
-     Bewegungsrichtung uebergeben.
+   /std/room/exits
 
-BEISPIELE:
-     // ein Ausgang soll nur von Froeschen benutzbar sein:
 
-     AddSpecialExit("loch", "lochfkt");
-     // der gleiche Aufruf, nur anders:
-     // static int lochfkt(string dir);		// Prototyp
-     // ...
-     // AddSpecialExit("loch", #'lochfkt);
-     // auch identisch zu:
-     // AddExit("loch", #'lochfkt);
+ARGUMENTE
+=========
 
-     static int lochfkt(string dir) {
-       if (!(this_player()->QueryProp(P_FROG))) {
-         // Kein Frosch => passt nicht!
-         notify_fail("Du bist zu gross!\n");
-         return 0;
-       }
-       // Meldungen werden im move() gleich mitgegeben
-       return this_player()->move("/room/loch", M_GO, 0,
-                    "huepft ins Loch", "huepft herein");
+   string/string* cmd
+        die Richtung(en), in die der Ausgang fuehrt
+   string/closure func
+        der Name der aufzurufenden Funktion/Closure
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Wird der
+   Ausgang benutzt, so wird die Closure bzw. Funktion func ausgefuehrt.
+
+   AddSpecialExit(cmd, "func") entspricht:
+   - AddExit(keys, #'func)
+
+
+BEMERKUNGEN
+===========
+
+   In func muss man den Spieler selbst in den Zielraum bewegen. Im
+   Erfolgsfall sollte man einen Wert >0 zurueckgeben, im Fehlerfall einen
+   Wert <=0.
+
+   func bekommt als Parameter einen String mit der gewaehlten
+   Bewegungsrichtung uebergeben.
+
+
+BEISPIELE
+=========
+
+   // ein Ausgang soll nur von Froeschen benutzbar sein:
+
+   AddSpecialExit("loch", "lochfkt");
+   // der gleiche Aufruf, nur anders:
+   // static int lochfkt(string dir);         // Prototyp
+   // ...
+   // AddSpecialExit("loch", #'lochfkt);
+   // auch identisch zu:
+   // AddExit("loch", #'lochfkt);
+
+   static int lochfkt(string dir) {
+     if (!(this_player()->QueryProp(P_FROG))) {
+       // Kein Frosch => passt nicht!
+       notify_fail("Du bist zu gross!\n");
+       return 0;
      }
+     // Meldungen werden im move() gleich mitgegeben
+     return this_player()->move("/room/loch", M_GO, 0,
+                  "huepft ins Loch", "huepft herein");
+   }
 
-SIEHE AUCH:
-     AddExit(), GetExits(),
-     RemoveExit(), RemoveSpecialExit(),
-     GuardExit(),
-     H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+
+SIEHE AUCH
+==========
+
+   AddExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/AddSpecialInfo b/doc/lfun/AddSpecialInfo
index 735983f..efc3067 100644
--- a/doc/lfun/AddSpecialInfo
+++ b/doc/lfun/AddSpecialInfo
@@ -1,64 +1,88 @@
+
 AddSpecialInfo()
-FUNKTION:
-     varargs void AddSpecialInfo( frage, meldung
-			   [, indent [, [silent [, casebased] ] ] );
+****************
 
-ARGUMENTE:
-     string/string* frage
-	Schluesseltext(e) auf die Informationen gegeben werden sollen.
-     string/closure function
-	Methodenname im NPC/Closure
-     string indent
-	Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
-     int/string silent
-	Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
-     string/closure casebased
-	Funktionsname oder Closure mit Returnwert string oder int.
 
-DEFINIERT IN:
-     /std/npc/info.c
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
-     einer Information mit dem Schluessel frage fragt, so wird die Methode
-     "function" gerufen. Die Rueckgabe wird als Meldung ausgegeben.
+   varargs void AddSpecialInfo( frage, meldung
+                         [, indent [, [silent [, casebased] ] ] );
 
-     Fuer die Beschreibung der weiteren Parameter siehe man AddInfo(L).
 
-     AddSpecialInfo(keys, "function", ...) entspricht:
-     - AddInfo(keys, #'function, ...) 
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Da AddSpecialInfo() und AddInfo() auf die gleichen Daten zugreifen,
-     kann man Informationen, die mit AddSpecialInfo() gesetzt wurden, auch
-     mit RemoveInfo() entfernen. Es gibt kein RemoveSpecialInfo().
+   string/string* frage
+      Schluesseltext(e) auf die Informationen gegeben werden sollen.
+   string/closure function
+      Methodenname im NPC/Closure
+   string indent
+      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
+   int/string silent
+      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
+   string/closure casebased
+      Funktionsname oder Closure mit Returnwert string oder int.
 
-BEISPIELE:
-     // Das folgende Beispiel ist auch unter man AddInfo(L) zu finden.
-     ### dynamisch ###
-     AddSpecialInfo(({"keks","kekse"}),
-		    "query_kekse",	// der Methodenname
-		    "sagt: ");
-     // ist uebrigens das gleiche wie:
-     // static string query_kekse();
-     // ...
-     // AddInfo(({"keks","kekse"}),
-     //		#'query_kekse,		// ein Verweis auf die Methode
-     //		"sagt: ");
-     ...
-     static string query_kekse() {
-      if(present("keks"))
-       return("Ich hab noch welche. Aetsch!");
-      return("Menno. Keine mehr da!");
-     }
 
-     // "frage monster nach keks":
-     // - wenn es noch Kekse hat, hoeren alle:
-     //   "Das Monster sagt: Ich hab noch welche. Aetsch!
-     // - sonst:
-     //   "Das Monster sagt: "Menno. Keine mehr da!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddInfo(L), RemoveInfo(L)
+   /std/npc/info.c
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
+   einer Information mit dem Schluessel frage fragt, so wird die Methode
+   "function" gerufen. Die Rueckgabe wird als Meldung ausgegeben.
+
+   Fuer die Beschreibung der weiteren Parameter siehe man AddInfo(L).
+
+   AddSpecialInfo(keys, "function", ...) entspricht:
+   - AddInfo(keys, #'function, ...)
+
+
+BEMERKUNGEN
+===========
+
+   Da AddSpecialInfo() und AddInfo() auf die gleichen Daten zugreifen,
+   kann man Informationen, die mit AddSpecialInfo() gesetzt wurden, auch
+   mit RemoveInfo() entfernen. Es gibt kein RemoveSpecialInfo().
+
+
+BEISPIELE
+=========
+
+   // Das folgende Beispiel ist auch unter man AddInfo(L) zu finden.
+   ### dynamisch ###
+   AddSpecialInfo(({"keks","kekse"}),
+                  "query_kekse",      // der Methodenname
+                  "sagt: ");
+   // ist uebrigens das gleiche wie:
+   // static string query_kekse();
+   // ...
+   // AddInfo(({"keks","kekse"}),
+   //         #'query_kekse,          // ein Verweis auf die Methode
+   //         "sagt: ");
+   ...
+   static string query_kekse() {
+    if(present("keks"))
+     return("Ich hab noch welche. Aetsch!");
+    return("Menno. Keine mehr da!");
+   }
+
+   // "frage monster nach keks":
+   // - wenn es noch Kekse hat, hoeren alle:
+   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
+   // - sonst:
+   //   "Das Monster sagt: "Menno. Keine mehr da!
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(L), RemoveInfo(L)
 
 7.Apr 2004 Gloinson
diff --git a/doc/lfun/AddSpell b/doc/lfun/AddSpell
index 3ec1bf8..1661f8c 100644
--- a/doc/lfun/AddSpell
+++ b/doc/lfun/AddSpell
@@ -1,150 +1,173 @@
+
 AddSpell()
+**********
 
-FUNKTION:
-    varargs int AddSpell(int rate, int damage, string TextForEnemy,
-                         string TextForOthers, string|string* dam_type,
-                         string|closure func, int|mapping spellarg)
 
-DEFINIERT IN:
-    /std/npc/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-    rate          - Relative Haeufigkeit der Anwendung (*),
-                    muss >= 0 sein
-    damage        - Der Schadenswert fuer Defend(),
-                    muss > 0 sein
-    TextForEnemy  - Text, den der Feind erhalten soll
-    TextForOthers - Text, den andere im Raum erhalten sollen
-    dam_type      - Schadenstyp(en) fuer Defend(),
-                    (Default: ({DT_MAGIC}) )
-    func          - Funktionsname oder Closure, die nach Anwendung
-                    aufgerufen werden soll
-                    (Optional, bekommt als Argumente object enemy, 
-                    int real_damage, string* dam_type)
-    spellarg      - Spell-Argument fuer Defend(), Default ist "1"
+   varargs int AddSpell(int rate, int damage, string TextForEnemy,
+                        string TextForOthers, string|string* dam_type,
+                        string|closure func, int|mapping spellarg)
 
-BESCHREIBUNG:
-    Ermoeglicht einfache Angriffs-Zaubersprueche fuer NPCs. Das Ausfuehren von
-    Spells verursacht bei dem NPC keine KP-Kosten.
 
-    Mit P_SPELLRATE wird die generelle Wahrscheinlichkeit der Ausfuehrung
-    solcher Spells im Heartbeat angegeben, mit 'rate' kann man die relative
-    Wahrscheinlichkeit der Spells untereinander steuern.
+DEFINIERT IN
+============
 
-    (*) Relative Haeufigkeit heisst, dass sich alle 'rate' der Spells
-    aufaddieren und ein einzelnes 'rate' dann in Relation zur Gesamtsumme
-    steht. D.h. drei Spells mit 80, 10, 10 (Summe 100) haben die selben
-    Aufruf-Wahrscheinlichkeiten wie drei Spells mit 120, 15, 15 oder drei
-    Spells mit 160, 20, 20.
+   /std/npc/combat.c
 
-    Ein Spell wird immer in folgender Reihenfolge abgearbeitet:
-     1. Die Texte werden an die Beteiligten ausgegeben.
-     2. Es wird ggf. SpellDefend gerufen (wenn kein SP_PHYSICAL_ATTACK).
-        Abbruch bei Schutz.
-     3. Im Opfer wird Defend() mit den angegebenen Werten aufgerufen.
-        Abbruch bei Tod/Zerstoerung des Opfers.
-     4. Eine Funktion, so definiert, wird ausgefuehrt.
 
-BEMERKUNGEN:
-    TextForOthers wird vor der Ausgabe der Meldung durch replace_personal()
-    geschickt, d.h. es koennen Platzhalter wie @WER1, @WEMQP1 und aehnliche
-    verwendet werden (siehe auch die Manpage von replace_personal()).
-    Da Ersetzungen nur fuer das Gegnerobjekt beruecksichtigt werden, koennen
-    nur Platzhalter mit Endziffer 1 verwendet werden. Die Ersetzungen werden
-    so gesteuert, dass die eingefuegten Namen nach Satzanfaengen automatisch
-    gross geschrieben werden.
-    Frueher wurden statt replace_personal() die Platzhalter @WER, @WESSEN, 
-    @WEM, @WEN verwendet. Diese funktionieren weiterhin, sollten aber nicht 
-    mehr in neuem Code benutzt werden.
+ARGUMENTE
+=========
 
-    In der von AddSpell gerufenen Methode "func" koennen speziellere
-    Sachen mit dem aktuellen Feind angestellt werden koennen. Die Methode
-    muss im selben Objekt definiert sein, sofern der Funktionsname und
-    keine Closure uebergeben wird.
+   rate          - Relative Haeufigkeit der Anwendung (*),
+                   muss >= 0 sein
+   damage        - Der Schadenswert fuer Defend(),
+                   muss > 0 sein
+   TextForEnemy  - Text, den der Feind erhalten soll
+   TextForOthers - Text, den andere im Raum erhalten sollen
+   dam_type      - Schadenstyp(en) fuer Defend(),
+                   (Default: ({DT_MAGIC}) )
+   func          - Funktionsname oder Closure, die nach Anwendung
+                   aufgerufen werden soll
+                   (Optional, bekommt als Argumente object enemy,
+                   int real_damage, string* dam_type)
+   spellarg      - Spell-Argument fuer Defend(), Default ist "1"
 
-    Will man einen physischen Angriff ausloesen, MUSS <spellarg> ein Mapping
-    mit ([SP_PHYSICAL_ATTACK: 1]) sein. Bei Uebergeben einer 0 oder Weglassen
-    des Werts wird an Defend das Default '1' (da es Spells sind) uebergeben.
 
-    Wenn damage<=0 oder rate<0 oder keine Meldungen uebergeben werden, wird
-    der Spell NICHT eingetragen, sondern die Funktion bricht mit Rueckgabe
-    von 0 ab.
+BESCHREIBUNG
+============
 
-BEISPIELE:
-    // #1 Einfacher NPC mit drei Spells, Gesamtrate = 100, also sind die
-    //    Raten direkt als Prozent Aufrufwahrscheinlichkeit lesbar.
-    AddSpell(80, 400,
-             "Der Hexer greift Dich mit einem kleinen Feuerball an.\n",
-             "Der Hexer greift @WEN mit einem kleinen Feuerball an.\n",
-             ({DT_FIRE, DT_MAGIC}));
-    AddSpell(10, 800,
-             "Der Hexer greift Dich mit einem riesigen Feuerball an.\n",
-             "Der Hexer greift @WEN mit einem riesigen Feuerball an.\n",
-             ({DT_FIRE, DT_MAGIC}));
-    AddSpell(8, 100,
-             "Der Hexer piekst Dir in die Augen!",
-             "Der Hexer piekst @WEM in die Augen!", ({DT_PIERCE}),
-             "augen_stechen");
-    AddSpell(2, 5, (string)0, (string)0, (string*)0, "salto_mortalis");
+   Ermoeglicht einfache Angriffs-Zaubersprueche fuer NPCs. Das Ausfuehren von
+   Spells verursacht bei dem NPC keine KP-Kosten.
 
-    (Kleiner Feuerball mit 80% Wahrscheinlichkeit, riesiger mit 10%,
-     "augen_stechen" mit 8%, "salto_mortalis" mit 2%)
+   Mit P_SPELLRATE wird die generelle Wahrscheinlichkeit der Ausfuehrung
+   solcher Spells im Heartbeat angegeben, mit 'rate' kann man die relative
+   Wahrscheinlichkeit der Spells untereinander steuern.
 
-    // Die Funktion "augen_stechen" kann dann so aussehen:
-    void augen_stechen(object enemy, int damage, mixed dam_types ) {
-      if (damage>10 && !enemy->QueryProp(P_BLIND)) {
-        enemy->SetProp(P_BLIND, 1);
-        if(enemy->QueryProp(P_BLIND))
-          tell_object(enemy, "Du bist nun blind!\n");
-      }
-    }
+   (*) Relative Haeufigkeit heisst, dass sich alle 'rate' der Spells
+   aufaddieren und ein einzelnes 'rate' dann in Relation zur Gesamtsumme
+   steht. D.h. drei Spells mit 80, 10, 10 (Summe 100) haben die selben
+   Aufruf-Wahrscheinlichkeiten wie drei Spells mit 120, 15, 15 oder drei
+   Spells mit 160, 20, 20.
 
-    // Zur Funktion "salto_mortalis" gibt es keine Meldungen, dennoch
-    // wird Defend mit: enemy->Defend(5, ({DT_MAGIC}), 1, this_object())
-    // gerufen!
-    void salto_mortalis(object enemy, int damage, mixed dam_types ) {
-      // dem geneigten Leser ueberlassen, den Gegner zu toeten
-    }
+   Ein Spell wird immer in folgender Reihenfolge abgearbeitet:
+    1. Die Texte werden an die Beteiligten ausgegeben.
+    2. Es wird ggf. SpellDefend gerufen (wenn kein SP_PHYSICAL_ATTACK).
+       Abbruch bei Schutz.
+    3. Im Opfer wird Defend() mit den angegebenen Werten aufgerufen.
+       Abbruch bei Tod/Zerstoerung des Opfers.
+    4. Eine Funktion, so definiert, wird ausgefuehrt.
 
-    // #2 Physische Angriffe: die Ruestungen sollen beruecksichtigt werden!
-    //    SP_PHYSICAL_ATTACK muss in einem Mapping auf 1 gesetzt werden,
-    //    damit Ruestungen physisch wirken (ansonsten werden nur ihre
-    //    DefendFuncs() ausgewertet). Es muss auch eine physische Schadensart
-    //    enthalten sein!
-    //    SpellDefend() wird bei diesem Flag nicht mehr am Gegner gerufen.
-    AddSpell(100, 200+random(200),
-      "Die kleine Ratte beisst Dich!\n",
-      "@WER wird von einer kleinen Ratte gebissen!\n",
-      ({DT_PIERCE, DT_POISON}), (string)0,
-      ([SP_PHYSICAL_ATTACK:1]));
 
-    // #3 Selektive physische Angriffe (siehe auch man Defend_bsp):
-    //    Will man erreichen, dass einige Ruestungen wirken, andere aber
-    //    nicht oder nur teilweise, kann man das ueber die Spellparameter
-    //    ausfuehrlich steuern:
+BEMERKUNGEN
+===========
 
-    // erstmal fuer alle Ruestungsarten einen Schutz von 0% einstellen:
-    mapping armours = map_indices(VALID_ARMOUR_CLASS, #'!);
-    armours[AT_TROUSERS] = 120;  // 120% Schutz durch Hosen
-    armours[AT_BOOT] = 30;       //  30% Schutz durch Stiefel
+   TextForOthers wird vor der Ausgabe der Meldung durch replace_personal()
+   geschickt, d.h. es koennen Platzhalter wie @WER1, @WEMQP1 und aehnliche
+   verwendet werden (siehe auch die Manpage von replace_personal()).
+   Da Ersetzungen nur fuer das Gegnerobjekt beruecksichtigt werden, koennen
+   nur Platzhalter mit Endziffer 1 verwendet werden. Die Ersetzungen werden
+   so gesteuert, dass die eingefuegten Namen nach Satzanfaengen automatisch
+   gross geschrieben werden.
+   Frueher wurden statt replace_personal() die Platzhalter @WER, @WESSEN,
+   @WEM, @WEN verwendet. Diese funktionieren weiterhin, sollten aber nicht
+   mehr in neuem Code benutzt werden.
 
-    AddSpell(20,200+random(200),
-      "Die kleine Ratte beisst Dir blitzschnell in die Wade!\n",
-      "@WER wird von einer kleinen Ratte in die Wade gebissen!\n",
-      ({DT_PIERCE, DT_POISON}), (string)0,
-      ([SP_PHYSICAL_ATTACK:1, SP_NO_ACTIVE_DEFENSE:1,
-        SP_REDUCE_ARMOUR: armours]));
+   In der von AddSpell gerufenen Methode "func" koennen speziellere
+   Sachen mit dem aktuellen Feind angestellt werden koennen. Die Methode
+   muss im selben Objekt definiert sein, sofern der Funktionsname und
+   keine Closure uebergeben wird.
 
-    // SP_NO_ACTIVE_DEFENSE = 1 schaltet aktive Abwehr (Karate/Klerus) ab
-    // SP_REDUCE_ARMOUR enthaelt eine Liste von Ruestungstypen mit ihren
-    // neuen Wirkungsgraden in Prozent. Nicht enthaltene Ruestungen haben
-    // weiterhin 100% Schutzwirkung.
+   Will man einen physischen Angriff ausloesen, MUSS <spellarg> ein Mapping
+   mit ([SP_PHYSICAL_ATTACK: 1]) sein. Bei Uebergeben einer 0 oder Weglassen
+   des Werts wird an Defend das Default '1' (da es Spells sind) uebergeben.
 
-SIEHE AUCH:
-     Sonstiges:  SpellAttack, SpellDefend, Defend, QueryDefend, SelectEnemy
-                 replace_personal
-     Properties: P_DISABLE_ATTACK, P_SPELLRATE, P_AGGRESSIVE
-     Abwehr:     Defend, Defend_bsp, SpellDefend
-     Methoden:   modifiers
+   Wenn damage<=0 oder rate<0 oder keine Meldungen uebergeben werden, wird
+   der Spell NICHT eingetragen, sondern die Funktion bricht mit Rueckgabe
+   von 0 ab.
+
+
+BEISPIELE
+=========
+
+   // #1 Einfacher NPC mit drei Spells, Gesamtrate = 100, also sind die
+   //    Raten direkt als Prozent Aufrufwahrscheinlichkeit lesbar.
+   AddSpell(80, 400,
+            "Der Hexer greift Dich mit einem kleinen Feuerball an.\n",
+            "Der Hexer greift @WEN mit einem kleinen Feuerball an.\n",
+            ({DT_FIRE, DT_MAGIC}));
+   AddSpell(10, 800,
+            "Der Hexer greift Dich mit einem riesigen Feuerball an.\n",
+            "Der Hexer greift @WEN mit einem riesigen Feuerball an.\n",
+            ({DT_FIRE, DT_MAGIC}));
+   AddSpell(8, 100,
+            "Der Hexer piekst Dir in die Augen!",
+            "Der Hexer piekst @WEM in die Augen!", ({DT_PIERCE}),
+            "augen_stechen");
+   AddSpell(2, 5, (string)0, (string)0, (string*)0, "salto_mortalis");
+
+   (Kleiner Feuerball mit 80% Wahrscheinlichkeit, riesiger mit 10%,
+    "augen_stechen" mit 8%, "salto_mortalis" mit 2%)
+
+   // Die Funktion "augen_stechen" kann dann so aussehen:
+   void augen_stechen(object enemy, int damage, mixed dam_types ) {
+     if (damage>10 && !enemy->QueryProp(P_BLIND)) {
+       enemy->SetProp(P_BLIND, 1);
+       if(enemy->QueryProp(P_BLIND))
+         tell_object(enemy, "Du bist nun blind!\n");
+     }
+   }
+
+   // Zur Funktion "salto_mortalis" gibt es keine Meldungen, dennoch
+   // wird Defend mit: enemy->Defend(5, ({DT_MAGIC}), 1, this_object())
+   // gerufen!
+   void salto_mortalis(object enemy, int damage, mixed dam_types ) {
+     // dem geneigten Leser ueberlassen, den Gegner zu toeten
+   }
+
+   // #2 Physische Angriffe: die Ruestungen sollen beruecksichtigt werden!
+   //    SP_PHYSICAL_ATTACK muss in einem Mapping auf 1 gesetzt werden,
+   //    damit Ruestungen physisch wirken (ansonsten werden nur ihre
+   //    DefendFuncs() ausgewertet). Es muss auch eine physische Schadensart
+   //    enthalten sein!
+   //    SpellDefend() wird bei diesem Flag nicht mehr am Gegner gerufen.
+   AddSpell(100, 200+random(200),
+     "Die kleine Ratte beisst Dich!\n",
+     "@WER wird von einer kleinen Ratte gebissen!\n",
+     ({DT_PIERCE, DT_POISON}), (string)0,
+     ([SP_PHYSICAL_ATTACK:1]));
+
+   // #3 Selektive physische Angriffe (siehe auch man Defend_bsp):
+   //    Will man erreichen, dass einige Ruestungen wirken, andere aber
+   //    nicht oder nur teilweise, kann man das ueber die Spellparameter
+   //    ausfuehrlich steuern:
+
+   // erstmal fuer alle Ruestungsarten einen Schutz von 0% einstellen:
+   mapping armours = map_indices(VALID_ARMOUR_CLASS, #'!);
+   armours[AT_TROUSERS] = 120;  // 120% Schutz durch Hosen
+   armours[AT_BOOT] = 30;       //  30% Schutz durch Stiefel
+
+   AddSpell(20,200+random(200),
+     "Die kleine Ratte beisst Dir blitzschnell in die Wade!\n",
+     "@WER wird von einer kleinen Ratte in die Wade gebissen!\n",
+     ({DT_PIERCE, DT_POISON}), (string)0,
+     ([SP_PHYSICAL_ATTACK:1, SP_NO_ACTIVE_DEFENSE:1,
+       SP_REDUCE_ARMOUR: armours]));
+
+   // SP_NO_ACTIVE_DEFENSE = 1 schaltet aktive Abwehr (Karate/Klerus) ab
+   // SP_REDUCE_ARMOUR enthaelt eine Liste von Ruestungstypen mit ihren
+   // neuen Wirkungsgraden in Prozent. Nicht enthaltene Ruestungen haben
+   // weiterhin 100% Schutzwirkung.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges:  SpellAttack, SpellDefend, Defend, QueryDefend, SelectEnemy
+               replace_personal
+   Properties: P_DISABLE_ATTACK, P_SPELLRATE, P_AGGRESSIVE
+   Abwehr:     Defend, Defend_bsp, SpellDefend
+   Methoden:   modifiers
 
 Zuletzt geaendert: 20.11.2016, Bugfix
diff --git a/doc/lfun/AddToMenu b/doc/lfun/AddToMenu
index 7ceacbb..01d46b6 100644
--- a/doc/lfun/AddToMenu
+++ b/doc/lfun/AddToMenu
@@ -1,240 +1,271 @@
+
 AddToMenu()
+***********
 
-FUNKTION:
-        varargs string AddToMenu(string  menuetext,
-                                 mixed   ids,
-                                 mapping minfo,
-                                 mixed   rate,
-                                 mixed   msg,
-                                 mixed   refresh,
-                                 mixed   delay,
-                                 mixed   d_msg);
 
-DEFINIERT IN:
-        /std/pub.c
+FUNKTION
+========
 
-ARGUMENTE:
-        Die Erlaeuterung der Parameter beschraenkt sich im Folgenden
-        zunaechst auf die Grundfunktionalitaet bei Verwendung fester
-        Werte. Die Moeglichkeiten zur Realisierung dynamischen Verhaltens
-        sind in den Fussnoten zu den einzelnen Parametern beschrieben.
+   varargs string AddToMenu(string  menuetext,
+                            mixed   ids,
+                            mapping minfo,
+                            mixed   rate,
+                            mixed   msg,
+                            mixed   refresh,
+                            mixed   delay,
+                            mixed   d_msg);
 
-        menuetext
-          Der Text steht als kurze Beschreibung im Menue.
-        ids
-          String oder Array von Strings, mit denen sich die Speise bzw. das
-          Getraenk beim Bestellen ansprechen laesst.
-        minfo
-          Mapping mit Eintraegen fuer:
-          P_HP      LP-Heilung in Punkten [*]
-          P_SP      KP-Heilung in Punkten [*]
-          P_FOOD    Saettigungswirkung der Speise [*]
-          P_DRINK   Saettigungswirkung des Getraenks [*]
-          P_ALCOHOL Alkoholgehalt des Getraenks [*]
-          P_VALUE   Preis der Speise bzw. des Getraenks [*]
-        rate [*]
-          Heilrate in Punkten pro HeartBeat.
-        msg [**]
-          Meldung beim Essen:
-          Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
-          Verfuegbare Platzhalter sind weiter unten im Abschnitt "Beispiel"
-          dokumentiert.
-        refresh
-          Mapping mit Eintraegen fuer:
-            PR_USER (Kontingent fuer einzelnen Spieler) [*]
-            PR_ALL  (Zusatzkontingent fuer alle) [*]
-          Alternativ: 0 fuer unbegrenzte Verfuegbarkeit
-          Einem Key muessen dabei zwei Werte zugeordnet werden:
-          Der Erste gibt die Hoehe des Kontingents an, der Zweite legt
-          fest, alle wieviel reset()s das Kontingent wieder aufgefuellt
-          wird.
-          Verwendung des Mappings erfordert Inkludieren von pub.h.
-        delay [*]
-          Zahl der Sekunden, um die verzoegert die Heilung eintritt,
-          z.B. weil das Essen erst zubereitet werden muss.
-        d_msg [**]
-          Meldung beim Bestellen, falls die Heilung verzoegert wird
-          Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
 
-          
-        [*] Dieser Parameter kann statt eines festen Zahlenwerts mit 
-            folgenden Werten gefuellt werden:
+DEFINIERT IN
+============
 
-            1) Mapping <racemodifier> der Form:
-                   ([ 0 : <standardwert> ,
-                    <rasse_1> : <wert_1>, 
-                    ... , 
-                    <rasse_n> : <wert_n> ]).
-               Die Eintraege in diesem Mapping werden gegen die Rasse des
-               bestellenden Spielers geprueft und entsprechend die 
-               zugehoerigen Werte verwendet.
-            2) string <func>: Aufruf erfolgt mittels 
-                 call_other(this_object(), func, empfaenger);
-               gerufen (aber: siehe Hinweise).
-            3) closure <func>: Aufruf erfolgt mittels
-                 funcall(func, empfaenger);
-            4) Array der Form  ({string <obj>, string <func>}) oder
-                               ({object <obj>, string <func>})
-               Aufruf erfolgt mittels
-                 call_other(obj, func, empfaenger);
-               (aber: siehe Hinweise). <obj> ist folglich als Objektpointer 
-               oder dessen object_name() anzugeben. <func> wird mittels 
-               function_exists() auf Existenz ueberprueft.
+   /std/pub.c
 
-               HINWEISE: im Falle von Lieferverzoegerung ("delay") und
-               Preis (P_VALUE) wird bei allen Funktionsaufrufen NICHT der 
-               Empfaenger, sondern der Zahler uebergeben.
-               Im Falle der Kontingent-Liste ("refresh") kann nur die
-               verfuegbare Menge modifiziert werden, nicht die Zeit
-               bis zum Wieder-Auffuellen.
 
-        [**] Zur Erzeugung variabler Meldungen koennen folgende Werte
-             eingetragen werden:
+ARGUMENTE
+=========
 
-             1) closure <func>: Aufruf erfolgt mittels 
-                  funcall(func, zahler, empfaenger, ident, minfo);
-             2) string <func>: Aufruf erfolgt mittels
-                  call_other(this_object(), func, zahler, empfaenger, 
-                             ident, minfo);
-             <func> bekommt Zahler und Empfaenger als Objektpointer,
-             ident als String und minfo als Mapping mit den 
-             jeweiligen Heilwerten uebergeben. minfo entspricht hierbei
-             den Daten, die als dritter Parameter an AddToMenu()
-             uebergeben wurden.
-             HINWEIS: wenn in das minfo-Mapping keine int-Festwerte 
-             eingetragen wurden, werden diese gemaess den Regeln unter [*]
-             geprueft; Funktionen/Closures werden ggf. ausgewertet und 
-             deren Rueckgabewerte an die Funktion <func> uebergeben.
-             WICHTIG: Die Rueckgabewerte der Funktion werden nicht 
-             ausgewertet. Jeder, der anstatt einer Meldung einen 
-             Funktionsaufruf programmiert, muss fuer die Ausgabe der
-             Meldungen selbst sorgen.
-                   
-BESCHREIBUNG:
-        Mit dieser Funktion werden Speisen oder Getraenke in die Karte
-        von Kneipen und Restaurants eingefuegt.
+   Die Erlaeuterung der Parameter beschraenkt sich im Folgenden
+   zunaechst auf die Grundfunktionalitaet bei Verwendung fester
+   Werte. Die Moeglichkeiten zur Realisierung dynamischen Verhaltens
+   sind in den Fussnoten zu den einzelnen Parametern beschrieben.
 
-RUECKGABEWERT:
-        Rueckgabewert ist ein String "menuentry%d", wobei %d eine Nummer
-        ist, die darueber Auskunft gibt, den wievielten Eintrag in die
-        interne Karte der Kneipe diese Speise bzw. dieses Getraenk
-        darstellt. Im Prinzip handelt es sich bei dem String um einen Key
-        fuer ein Mapping, in dem die Speisen bzw. Getraenke gespeichert
-        sind.
+   menuetext
+     Der Text steht als kurze Beschreibung im Menue.
+   ids
+     String oder Array von Strings, mit denen sich die Speise bzw. das
+     Getraenk beim Bestellen ansprechen laesst.
+   minfo
+     Mapping mit Eintraegen fuer:
+     P_HP      LP-Heilung in Punkten [*]
+     P_SP      KP-Heilung in Punkten [*]
+     P_FOOD    Saettigungswirkung der Speise [*]
+     P_DRINK   Saettigungswirkung des Getraenks [*]
+     P_ALCOHOL Alkoholgehalt des Getraenks [*]
+     P_VALUE   Preis der Speise bzw. des Getraenks [*]
+   rate [*]
+     Heilrate in Punkten pro HeartBeat.
+   msg [**]
+     Meldung beim Essen:
+     Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
+     Verfuegbare Platzhalter sind weiter unten im Abschnitt "Beispiel"
+     dokumentiert.
+   refresh
+     Mapping mit Eintraegen fuer:
+       PR_USER (Kontingent fuer einzelnen Spieler) [*]
+       PR_ALL  (Zusatzkontingent fuer alle) [*]
+     Alternativ: 0 fuer unbegrenzte Verfuegbarkeit
+     Einem Key muessen dabei zwei Werte zugeordnet werden:
+     Der Erste gibt die Hoehe des Kontingents an, der Zweite legt
+     fest, alle wieviel reset()s das Kontingent wieder aufgefuellt
+     wird.
+     Verwendung des Mappings erfordert Inkludieren von pub.h.
+   delay [*]
+     Zahl der Sekunden, um die verzoegert die Heilung eintritt,
+     z.B. weil das Essen erst zubereitet werden muss.
+   d_msg [**]
+     Meldung beim Bestellen, falls die Heilung verzoegert wird
+     Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
 
-BEMERKUNGEN:
-        Die aelteren Funktionen 'AddDrink' bzw. 'AddFood' werden zwar mithilfe
-        dieser maechtigeren Funktion aus Gruenden der Abwaertskompatibilitaet
-        simuliert, sollen aber nicht mehr eingesetzt werden.
-        
-        Die alten Platzhalter && etc. (s.u.) werden weiterhin unterstuetzt,
-        sollten aber fuer bessere Wartbarkeit nicht mehr verwendet werden.
-        
-        Fuer das Testen der Kneipe gibt es in jeder Kneipe den Befehl
-        'pubinit'. Hiermit lassen sich die Speisen und Getraenke durch-
-        checken. Steht in der Ausgabe bei einem Getraenk/Essen ein FAIL,
-        so wird die entsprechende Speise (oder Getraenk) NICHT an Spieler
-        verkauft. Ausnahmen fuer Speisen/Getraenke mit hoeheren maximalen
-        Werten sind durch Balance-EM zu genehmigen.
 
-BEISPIEL:
 
-        include <pub.h>
+   [*] Dieser Parameter kann statt eines festen Zahlenwerts mit
+       folgenden Werten gefuellt werden:
 
-        create()
-        {
-        AddToMenu("'Opa's Drachenkeule'",({"drachenkeule","keule"}),
-        ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]), 5,
-        ({"Du isst die Keule mit einem schlechten Gewissen.",
-          "@WER1 isst die Keule mit einem schlechten Gewissen."}),
-        ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]), 9,
-        ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
-          "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
-          "wohl ein Tippfehler auf der Karte gewesen sein.",
-          "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
-          "Stueck aus dessen Keule und braet diese fuer @WEN1."}) );
-        }
+       1) Mapping <racemodifier> der Form:
+              ([ 0 : <standardwert> ,
+               <rasse_1> : <wert_1>,
+               ... ,
+               <rasse_n> : <wert_n> ]).
+          Die Eintraege in diesem Mapping werden gegen die Rasse des
+          bestellenden Spielers geprueft und entsprechend die
+          zugehoerigen Werte verwendet.
+       2) string <func>: Aufruf erfolgt mittels
+            call_other(this_object(), func, empfaenger);
+          gerufen (aber: siehe Hinweise).
+       3) closure <func>: Aufruf erfolgt mittels
+            funcall(func, empfaenger);
+       4) Array der Form  ({string <obj>, string <func>}) oder
+                          ({object <obj>, string <func>})
+          Aufruf erfolgt mittels
+            call_other(obj, func, empfaenger);
+          (aber: siehe Hinweise). <obj> ist folglich als Objektpointer
+          oder dessen object_name() anzugeben. <func> wird mittels
+          function_exists() auf Existenz ueberprueft.
 
-        1) Name der Speise (des Getraenks) auf der Karte (bei menue).
+          HINWEISE: im Falle von Lieferverzoegerung ("delay") und
+          Preis (P_VALUE) wird bei allen Funktionsaufrufen NICHT der
+          Empfaenger, sondern der Zahler uebergeben.
+          Im Falle der Kontingent-Liste ("refresh") kann nur die
+          verfuegbare Menge modifiziert werden, nicht die Zeit
+          bis zum Wieder-Auffuellen.
 
-           AddToMenu("'Opa's Drachenkeule'",     
+   [**] Zur Erzeugung variabler Meldungen koennen folgende Werte
+        eingetragen werden:
 
-        2) ids mit denen sich bestellen laesst (z.B. "kaufe keule").
+        1) closure <func>: Aufruf erfolgt mittels
+             funcall(func, zahler, empfaenger, ident, minfo);
+        2) string <func>: Aufruf erfolgt mittels
+             call_other(this_object(), func, zahler, empfaenger,
+                        ident, minfo);
+        <func> bekommt Zahler und Empfaenger als Objektpointer,
+        ident als String und minfo als Mapping mit den
+        jeweiligen Heilwerten uebergeben. minfo entspricht hierbei
+        den Daten, die als dritter Parameter an AddToMenu()
+        uebergeben wurden.
+        HINWEIS: wenn in das minfo-Mapping keine int-Festwerte
+        eingetragen wurden, werden diese gemaess den Regeln unter [*]
+        geprueft; Funktionen/Closures werden ggf. ausgewertet und
+        deren Rueckgabewerte an die Funktion <func> uebergeben.
+        WICHTIG: Die Rueckgabewerte der Funktion werden nicht
+        ausgewertet. Jeder, der anstatt einer Meldung einen
+        Funktionsaufruf programmiert, muss fuer die Ausgabe der
+        Meldungen selbst sorgen.
 
-           ({"drachen","drachenkeule","keule"}),
 
-        3) Heilung fuer LP und KP, Saettigung (P_FOOD oder P_DRINK,
-           P_ALCOHOL nach Belieben setzen), Preis (P_VALUE). 
-           HP und SP muessen nicht gleich sein. Speisen und Getraenke,
-           die nur eines von beiden heilen, sind auch moeglich.
+BESCHREIBUNG
+============
 
-           ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]),
+   Mit dieser Funktion werden Speisen oder Getraenke in die Karte
+   von Kneipen und Restaurants eingefuegt.
 
-        4) Heilung pro Heartbeat (in diesem Beispiel je 5 KP/LP).
-    
-           5,
 
-        5) Meldungen fuer Spieler und Umstehende die bei Genuss ausgege-
-           ben werden (also NICHT der Bestell-Text).
+RUECKGABEWERT
+=============
 
-           ({"Du isst die Keule mit einem schlechten Gewissen.",
-             "@WER1 isst die Keule mit einem schlechten Gewissen."}),
+   Rueckgabewert ist ein String "menuentry%d", wobei %d eine Nummer
+   ist, die darueber Auskunft gibt, den wievielten Eintrag in die
+   interne Karte der Kneipe diese Speise bzw. dieses Getraenk
+   darstellt. Im Prinzip handelt es sich bei dem String um einen Key
+   fuer ein Mapping, in dem die Speisen bzw. Getraenke gespeichert
+   sind.
 
-           Die Ausgabe-Strings werden vor der Ausgabe mit dem Empfaenger
-           als Objekt an replace_personal() uebergeben. Fuer die
-           moeglichen Platzhalter siehe dort.
-          
-        6) Die Speise ist in ihrer Anzahl begrenzt. Fuer jeden Spieler
-           sind 4 Keulen pro reset() da. Ausserdem gibt es noch einen
-           "Notvorrat" von 20 Keulen, der alle 3 reset()s aufgefuellt
-           wird. Aus diesem (so noch vorhanden) werden die Spieler
-           versorgt, wenn ihr "persoenlicher Vorrat" aufgebraucht ist.
 
-           ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]),
-           
-           HINWEIS: bei Benutzung des Mappings muss <pub.h> inkludiert 
-           werden!
-           
-           Wenn man keine reset-abhaengigen Speisen haben moechte, traegt
-           man hier eine 0 ein.
+BEMERKUNGEN
+===========
 
-        7) Die Zahl ist die Wartezeit in Sekunden, die der Wirt z.B. fuer
-           die Zubereitung und Auslieferung an den Spieler braucht.
+   Die aelteren Funktionen 'AddDrink' bzw. 'AddFood' werden zwar mithilfe
+   dieser maechtigeren Funktion aus Gruenden der Abwaertskompatibilitaet
+   simuliert, sollen aber nicht mehr eingesetzt werden.
 
-           9,
-         
-        8) Letztendlich die Meldungen an Spieler und Umstehende, die bei Be-
-           stellung (hier 'kaufe keule') ausgegeben werden.
 
-           ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
-           "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
-           "wohl ein Tippfehler auf der Karte gewesen sein.",
-           "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
-           "Stueck aus dessen Keule und braet diese fuer @WEN1."}));
+
+   Die alten Platzhalter && etc. (s.u.) werden weiterhin unterstuetzt,
+   sollten aber fuer bessere Wartbarkeit nicht mehr verwendet werden.
+
+
+
+   Fuer das Testen der Kneipe gibt es in jeder Kneipe den Befehl
+   'pubinit'. Hiermit lassen sich die Speisen und Getraenke durch-
+   checken. Steht in der Ausgabe bei einem Getraenk/Essen ein FAIL,
+   so wird die entsprechende Speise (oder Getraenk) NICHT an Spieler
+   verkauft. Ausnahmen fuer Speisen/Getraenke mit hoeheren maximalen
+   Werten sind durch Balance-EM zu genehmigen.
+
+
+BEISPIEL
+========
+
+   include <pub.h>
+
+   create()
+   {
+   AddToMenu("'Opa's Drachenkeule'",({"drachenkeule","keule"}),
+   ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]), 5,
+   ({"Du isst die Keule mit einem schlechten Gewissen.",
+     "@WER1 isst die Keule mit einem schlechten Gewissen."}),
+   ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]), 9,
+   ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
+     "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
+     "wohl ein Tippfehler auf der Karte gewesen sein.",
+     "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
+     "Stueck aus dessen Keule und braet diese fuer @WEN1."}) );
+   }
+
+   1) Name der Speise (des Getraenks) auf der Karte (bei menue).
+
+      AddToMenu("'Opa's Drachenkeule'",
+
+   2) ids mit denen sich bestellen laesst (z.B. "kaufe keule").
+
+      ({"drachen","drachenkeule","keule"}),
+
+   3) Heilung fuer LP und KP, Saettigung (P_FOOD oder P_DRINK,
+      P_ALCOHOL nach Belieben setzen), Preis (P_VALUE).
+      HP und SP muessen nicht gleich sein. Speisen und Getraenke,
+      die nur eines von beiden heilen, sind auch moeglich.
+
+      ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]),
+
+   4) Heilung pro Heartbeat (in diesem Beispiel je 5 KP/LP).
+
+
+
+      5,
+
+   5) Meldungen fuer Spieler und Umstehende die bei Genuss ausgege-
+      ben werden (also NICHT der Bestell-Text).
+
+      ({"Du isst die Keule mit einem schlechten Gewissen.",
+        "@WER1 isst die Keule mit einem schlechten Gewissen."}),
+
+      Die Ausgabe-Strings werden vor der Ausgabe mit dem Empfaenger
+      als Objekt an replace_personal() uebergeben. Fuer die
+      moeglichen Platzhalter siehe dort.
+
+
+
+   6) Die Speise ist in ihrer Anzahl begrenzt. Fuer jeden Spieler
+      sind 4 Keulen pro reset() da. Ausserdem gibt es noch einen
+      "Notvorrat" von 20 Keulen, der alle 3 reset()s aufgefuellt
+      wird. Aus diesem (so noch vorhanden) werden die Spieler
+      versorgt, wenn ihr "persoenlicher Vorrat" aufgebraucht ist.
+
+      ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]),
+
+
+
+      HINWEIS: bei Benutzung des Mappings muss <pub.h> inkludiert
+      werden!
+
+
+
+      Wenn man keine reset-abhaengigen Speisen haben moechte, traegt
+      man hier eine 0 ein.
+
+   7) Die Zahl ist die Wartezeit in Sekunden, die der Wirt z.B. fuer
+      die Zubereitung und Auslieferung an den Spieler braucht.
+
+      9,
+
+
+
+   8) Letztendlich die Meldungen an Spieler und Umstehende, die bei Be-
+      stellung (hier 'kaufe keule') ausgegeben werden.
+
+      ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
+      "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
+      "wohl ein Tippfehler auf der Karte gewesen sein.",
+      "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
+      "Stueck aus dessen Keule und braet diese fuer @WEN1."}));
 
 LISTE DER ALTEN PLATZHALTER (DEPRECATED):
-           &&  - pl->name(WER,2)
-           &1& - pl->name(WER,2)
-           &2& - pl->name(WESSEN,2)
-           &3& - pl->name(WEM,2)
-           &4& - pl->name(WEN,2)
-           &1# - capitalize(pl->name(WER,2))
-           &2# - capitalize(pl->name(WESSEN,2))
-           &3# - capitalize(pl->name(WEM,2))
-           &4# - capitalize(pl->name(WEN,2))
-           &!  - pl->QueryPronoun(WER)
-           &5& - pl->QueryPronoun(WE);
-           &6& - pl->QueryPronoun(WESSEN)
-           &7& - pl->QueryPronoun(WEM)
-           &8& - pl->QueryPronoun(WEN)
-           &5# - capitalize(pl->QueryPronoun(WER))
-           &6# - capitalize(pl->QueryPronoun(WESSEN))
-           &7# - capitalize(pl->QueryPronoun(WEM))
-           &8# - capitalize(pl->QueryPronoun(WEN))
+   &&  - pl->name(WER,2) &1& - pl->name(WER,2) &2& -
+   pl->name(WESSEN,2) &3& - pl->name(WEM,2) &4& - pl->name(WEN,2) &1#
+   - capitalize(pl->name(WER,2)) &2# - capitalize(pl->name(WESSEN,2))
+   &3# - capitalize(pl->name(WEM,2)) &4# - capitalize(pl->name(WEN,2))
+   &!  - pl->QueryPronoun(WER) &5& - pl->QueryPronoun(WE); &6& -
+   pl->QueryPronoun(WESSEN) &7& - pl->QueryPronoun(WEM) &8& -
+   pl->QueryPronoun(WEN) &5# - capitalize(pl->QueryPronoun(WER)) &6# -
+   capitalize(pl->QueryPronoun(WESSEN)) &7# -
+   capitalize(pl->QueryPronoun(WEM)) &8# -
+   capitalize(pl->QueryPronoun(WEN))
 
 
-SIEHE AUCH:
-        AddFood(), AddDrink(), /sys/pub.h
-        RemoveFromMenu(), replace_personal()
-----------------------------------------------------------------------------
+SIEHE AUCH
+==========
+
+   AddFood(), AddDrink(), /sys/pub.h
+   RemoveFromMenu(), replace_personal()
+
 Last modified: Sam, 01. Okt 2011, 23:40 by Arathorn
diff --git a/doc/lfun/AddTouchDetail b/doc/lfun/AddTouchDetail
index 413e3ca..6ca61e8 100644
--- a/doc/lfun/AddTouchDetail
+++ b/doc/lfun/AddTouchDetail
@@ -1,71 +1,90 @@
+
 AddTouchDetail()
+****************
 
-FUNKTION:
-    void AddTouchDetail(string|string* keys,
-                        string|string*|mapping|closure desc);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-     String oder Array von Strings mit den Namen der Details.
-    desc
-     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+   void AddTouchDetail(string|string* keys,
+                       string|string*|mapping|closure desc);
 
-BESCHREIBUNG:
-    Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
-    koennen hiermit (ab)tastbare bzw. fuehlbare Details realisiert werden:
-    Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
-    beim (Ab)Tasten aussehen, haengt im wesentlichen vom Typ der
-    Beschreibung <desc> ab:
-     <desc> ist ein String.
-       Beim Untersuchen wird dieser String zurueckgegeben.
-      <desc> ist ein String-Array.
-        Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
-     <desc> ist ein Mapping.
-       Das Mapping muss folgenden Aufbau haben:
-         ([0:        "Defaulttext",
-           "rasse1": "r1text", ...]).
 
-       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
-       Eintrag im Mapping existiert, wird der entsprechende Text
-       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
-       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
-     <desc> ist eine Closure.
-       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
-       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
-       als Parameter uebergeben.
+DEFINIERT IN
+============
 
-    Fuer fuehlbare Details koennen Forscherpunkte eingetragen werden.
+   /std/thing/description.c
 
-    Fuehlbare Details koennen allgemein einen Raum oder Objekt zugeordnet
-    werden: dafuer muss man als <key> SENSE_DEFAULT uebergeben.
 
-    Spielerkommandos: "taste"
+ARGUMENTE
+=========
 
-BEISPIELE:
-    Ein kleines Beispiel fuer rassenabhaengige, fuehlbare Details mit Closures:
-      string strafe(string key);
-      ...
-      AddTouchDetail(SENSE_DEFAULT, "Du fuehlst einige Knollen\n");
-      AddTouchDetail(({"knollen"}),
-                     ([0:       "Sie fuehlen sich an wie Knoblauchknollen. "
-                                "Riech doch mal daran.\n",
-                       "vampir": #'strafe]));
+   keys
+    String oder Array von Strings mit den Namen der Details.
+   desc
+    String, Mapping, String-Array oder Closure mit/zur Beschreibung.
 
-      string strafe(string key) {
-        this_player()->reduce_hit_points(100);
-        return "Au! Das waren ja Knoblauchknollen!\n";
-      }
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
+   koennen hiermit (ab)tastbare bzw. fuehlbare Details realisiert werden:
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   beim (Ab)Tasten aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+    <desc> ist ein String.
+      Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+    <desc> ist ein Mapping.
+      Das Mapping muss folgenden Aufbau haben:
+        ([0:        "Defaulttext",
+          "rasse1": "r1text", ...]).
+
+      Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+      Eintrag im Mapping existiert, wird der entsprechende Text
+      zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+      rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+    <desc> ist eine Closure.
+      In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+      zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+      als Parameter uebergeben.
+
+   Fuer fuehlbare Details koennen Forscherpunkte eingetragen werden.
+
+   Fuehlbare Details koennen allgemein einen Raum oder Objekt zugeordnet
+   werden: dafuer muss man als <key> SENSE_DEFAULT uebergeben.
+
+   Spielerkommandos: "taste"
+
+
+BEISPIELE
+=========
+
+   Ein kleines Beispiel fuer rassenabhaengige, fuehlbare Details mit Closures:
+     string strafe(string key);
+     ...
+     AddTouchDetail(SENSE_DEFAULT, "Du fuehlst einige Knollen\n");
+     AddTouchDetail(({"knollen"}),
+                    ([0:       "Sie fuehlen sich an wie Knoblauchknollen. "
+                               "Riech doch mal daran.\n",
+                      "vampir": #'strafe]));
+
+     string strafe(string key) {
+       this_player()->reduce_hit_points(100);
+       return "Au! Das waren ja Knoblauchknollen!\n";
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/AllGroups b/doc/lfun/AllGroups
index 8ffbbca..6511189 100644
--- a/doc/lfun/AllGroups
+++ b/doc/lfun/AllGroups
@@ -1,21 +1,36 @@
+
 AllGroups()
-FUNKTION:
-     string *AllGroups()
+***********
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-BESCHREIBUNG:
-     Gibt ein Array aller existenten Materialgruppen zurueck (ihre
-     Definitionsform wie in <thing/material.h> aufgelistet).
+FUNKTION
+========
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Listen:	  AllMaterials(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
+   string *AllGroups()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array aller existenten Materialgruppen zurueck (ihre
+   Definitionsform wie in <thing/material.h> aufgelistet).
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Listen:      AllMaterials(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/AllMaterials b/doc/lfun/AllMaterials
index 6230e9b..57d1f6d 100644
--- a/doc/lfun/AllMaterials
+++ b/doc/lfun/AllMaterials
@@ -1,21 +1,36 @@
+
 AllMaterials()
-FUNKTION:
-     string *AllMaterials()
+**************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-BESCHREIBUNG:
-     Gibt ein Array aller existenten Materialien zurueck (ihre Definitions-
-     form wie in <thing/material.h> aufgelistet).
+FUNKTION
+========
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Listen:	  AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
+   string *AllMaterials()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array aller existenten Materialien zurueck (ihre Definitions-
+   form wie in <thing/material.h> aufgelistet).
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Listen:      AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/AssocMember b/doc/lfun/AssocMember
index 349157b..139a670 100644
--- a/doc/lfun/AssocMember
+++ b/doc/lfun/AssocMember
@@ -1,52 +1,74 @@
 
 AssocMember()
+*************
 
 
-FUNKTION:
-        int AssocMember(object npc)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   int AssocMember(object npc)
 
-ARGUMENTE:
-        Der zuzuordnende NPC.
 
-BESCHREIBUNG:
-        Ordnet einen NPC einem Spieler zu. Dieser ist dann
-        immer im Team des Spielers, moeglichst in der gleichen Reihe.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        1, falls Zuordnung erfolgreich, sonst 0.
+   /std/living/team.c
 
-BEISPIEL:
-        void fun(object pl)
-        {
-          if ( pl && pl->AssocMember(this_object()) )
-            tell_object(pl,break_string(
-              "Ich kaempfe nun auf Deiner Seite!\n",78,"Ein Feuerteufel "
-              "teilt Dir mit:");
-         ...
-        }
 
-BEMERKUNGEN:
-        1. Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
-           zuzuordnenden NPC aufgerufen werden.
-        2. Einem NPC, der selber einem Spieler zugeordnet ist, kann kein
-           NPC zugeordnet werden.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_TEAM_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+   Der zuzuordnende NPC.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Ordnet einen NPC einem Spieler zu. Dieser ist dann
+   immer im Team des Spielers, moeglichst in der gleichen Reihe.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls Zuordnung erfolgreich, sonst 0.
+
+
+BEISPIEL
+========
+
+   void fun(object pl)
+   {
+     if ( pl && pl->AssocMember(this_object()) )
+       tell_object(pl,break_string(
+         "Ich kaempfe nun auf Deiner Seite!\n",78,"Ein Feuerteufel "
+         "teilt Dir mit:");
+    ...
+   }
+
+
+BEMERKUNGEN
+===========
+
+   1. Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
+      zuzuordnenden NPC aufgerufen werden.
+   2. Einem NPC, der selber einem Spieler zugeordnet ist, kann kein
+      NPC zugeordnet werden.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 04.10.2011, Zesstra
-
diff --git a/doc/lfun/Attack b/doc/lfun/Attack
index 4656ae9..08a0c20 100644
--- a/doc/lfun/Attack
+++ b/doc/lfun/Attack
@@ -1,22 +1,42 @@
+
 Attack()
+********
 
-FUNKTION:
-	void Attack(object enemy)
 
-ARGUMENTE:
-	enemy: Der Feind.
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
-	stark angegriffen.
+   void Attack(object enemy)
 
-RUECKGABEWERT:
-	Keiner.
 
-BEMERKUNG:
-	Diese Funktion gibt die Angriffsmeldung aus.
-	Falls mit blossen Haenden angegriffen wird, ist die Staerke
-	(2*Staerke_der_Haende + 10*A_STR)/3
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-	"Defend", "QueryDamage"
+   enemy: Der Feind.
+
+
+BESCHREIBUNG
+============
+
+   Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
+   stark angegriffen.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion gibt die Angriffsmeldung aus.
+   Falls mit blossen Haenden angegriffen wird, ist die Staerke
+   (2*Staerke_der_Haende + 10*A_STR)/3
+
+
+SIEHE AUCH
+==========
+
+   "Defend", "QueryDamage"
diff --git a/doc/lfun/BecomesNetAlive b/doc/lfun/BecomesNetAlive
index 22a6cdc..a64f328 100644
--- a/doc/lfun/BecomesNetAlive
+++ b/doc/lfun/BecomesNetAlive
@@ -1,46 +1,68 @@
+
 BecomesNetAlive()
+*****************
 
-FUNKTION:
-    void BecomesNetAlive(object pl);
 
-GERUFEN VON:
-    /std/player/base.c
+FUNKTION
+========
 
-ARGUMENTE:
-    pl
-      Spieler, der Verbindung zum MUD wiedererlangt.
+   void BecomesNetAlive(object pl);
 
-BESCHREIBUNG:
-    Spieler, welche die Verbindung zum MUD freiwillig
-    (z.B. per 'schlafe ein') oder unfreiwillig verlieren, gehen in den
-    Netztotenstatus ueber. Sie verbleiben noch eine definierte Zeit in
-    der zuletzt betretenen Umgebung und werden schliesslich automatisch
-    in den Netztotenraum ueberfuehrt.
-    Wird die Verbindung wieder aufgebaut, so wird der Spielercharakter
-    wieder zum Leben erweckt und gegebenenfalls zuvor aus dem
-    Netztotenraum zurueck zu seiner letzten Umgebung teleportiert.
-    Um nun einen Ueberblick darueber zu erhalten, wann ein Spieler die
-    Verbindung zum MUD wiederherstellt, gibt es die Funktion
-    BecomesNetAlive(). Sie wird automatisch in der Umgebung des
-    Spielers, in allen Objekten in der Umgebung des Spielers
-    (nicht rekursiv) und in allen Objekten im Spieler (rekursiv)
-    aufgerufen. Uebergeben wird hierbei das Spielerobjekt.
 
-    Es gibt auch noch die Funktion BecomesNetDead(), mit der man
-    auf aehnliche Weise einschlafende Spieler registrieren kann.
+GERUFEN VON
+===========
 
-BEISPIELE:
-    In einem NPC waere folgendes denkbar:
-    
-    void BecomesNetAlive(object pl) {
-      tell_room(environment(),break_string(
-        "Guten Morgen "+pl->name(WER)+", auch schon ausgeschlafen?!", 77,
-        Name(WER)+" sagt grinsend: "));
-    }
-    Steht der NPC in einem Raum, wo ein Spieler aufwacht, so wird der
-    Spieler gebuehrend begruesst.
+   /std/player/base.c
 
-SIEHE AUCH:
-    BecomesNetDead(), PlayerQuit(), /std/player/base.c, /room/netztot.c
 
-24. Aug 2011 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   pl
+     Spieler, der Verbindung zum MUD wiedererlangt.
+
+
+BESCHREIBUNG
+============
+
+   Spieler, welche die Verbindung zum MUD freiwillig
+   (z.B. per 'schlafe ein') oder unfreiwillig verlieren, gehen in den
+   Netztotenstatus ueber. Sie verbleiben noch eine definierte Zeit in
+   der zuletzt betretenen Umgebung und werden schliesslich automatisch
+   in den Netztotenraum ueberfuehrt.
+   Wird die Verbindung wieder aufgebaut, so wird der Spielercharakter
+   wieder zum Leben erweckt und gegebenenfalls zuvor aus dem
+   Netztotenraum zurueck zu seiner letzten Umgebung teleportiert.
+   Um nun einen Ueberblick darueber zu erhalten, wann ein Spieler die
+   Verbindung zum MUD wiederherstellt, gibt es die Funktion
+   BecomesNetAlive(). Sie wird automatisch in der Umgebung des
+   Spielers, in allen Objekten in der Umgebung des Spielers
+   (nicht rekursiv) und in allen Objekten im Spieler (rekursiv)
+   aufgerufen. Uebergeben wird hierbei das Spielerobjekt.
+
+   Es gibt auch noch die Funktion BecomesNetDead(), mit der man
+   auf aehnliche Weise einschlafende Spieler registrieren kann.
+
+
+BEISPIELE
+=========
+
+   In einem NPC waere folgendes denkbar:
+
+
+
+   void BecomesNetAlive(object pl) {
+     tell_room(environment(),break_string(
+       "Guten Morgen "+pl->name(WER)+", auch schon ausgeschlafen?!", 77,
+       Name(WER)+" sagt grinsend: "));
+   }
+   Steht der NPC in einem Raum, wo ein Spieler aufwacht, so wird der
+   Spieler gebuehrend begruesst.
+
+
+SIEHE AUCH
+==========
+
+   BecomesNetDead(), PlayerQuit(), /std/player/base.c, /room/netztot.c
+
+24. Aug 2011 Gloinson
diff --git a/doc/lfun/BecomesNetDead b/doc/lfun/BecomesNetDead
index fcfed7c..8938d13 100644
--- a/doc/lfun/BecomesNetDead
+++ b/doc/lfun/BecomesNetDead
@@ -1,45 +1,67 @@
+
 BecomesNetDead()
+****************
 
-FUNKTION:
-    void BecomesNetDead(object pl);
 
-GERUFEN VON:
-    /std/player/base.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object pl
-      Spieler, der Verbindung zum MUD verliert.
+   void BecomesNetDead(object pl);
 
-BESCHREIBUNG:
-    Spieler, welche die Verbindung zum MUD freiwillig
-    (z.B. per 'schlafe ein') oder unfreiwillig verlieren, gehen in den
-    Netztotenstatus ueber. Sie verbleiben noch eine definierte Zeit in
-    der zuletzt betretenen Umgebung und werden schliesslich automatisch
-    in den Netztotenraum ueberfuehrt.
-    Um nun einen Ueberblick darueber zu erhalten, wann ein Spieler die
-    Verbindung zum MUD verliert, gibt es die Funktion BecomesNetDead().
-    Sie wird automatisch in der Umgebung des Spielers, in allen Objekten
-    in der Umgebung des Spielers (nicht rekursiv) und in allen Objekten
-    im Spieler (rekursiv) aufgerufen. Uebergeben wird hierbei das
-    Spielerobjekt.
 
-    Es gibt auch noch die Funktion BecomesNetAlive(), mit der man
-    auf aehnliche Weise erwachende Spieler registrieren kann.
+GERUFEN VON
+===========
 
-BEISPIELE:
-    Es gibt Gebiete, in denen netztote Spieler unerwuenscht sind.
-    Folgendermassen kann man sich ihrer wirkungsvoll entledigen:
-    
-    void BecomesNetDead(object pl) {
-      pl->move("eingangsraum zu gebiet", M_TPORT|M_NOCHECK);
-    }
-    Man schickt diese Spieler wieder zum Eingang des Gebietes.
-    Da der letzte Aufenthaltsort eines Spielers, der in den
-    Netztotenstatus uebergeht, erst nach Aufruf der Funktion
-    BecomesNetDead() abgespeichert wird, wacht der Spieler dann an dem
-    Ort auf, wo man Ihn innerhalb dieser Funktion hinteleportiert hat.
+   /std/player/base.c
 
-SIEHE AUCH:
-    BecomesNetAlive(), PlayerQuit(), /std/player/base.c, /room/netztot.c
 
-24. Aug 2011, Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   object pl
+     Spieler, der Verbindung zum MUD verliert.
+
+
+BESCHREIBUNG
+============
+
+   Spieler, welche die Verbindung zum MUD freiwillig
+   (z.B. per 'schlafe ein') oder unfreiwillig verlieren, gehen in den
+   Netztotenstatus ueber. Sie verbleiben noch eine definierte Zeit in
+   der zuletzt betretenen Umgebung und werden schliesslich automatisch
+   in den Netztotenraum ueberfuehrt.
+   Um nun einen Ueberblick darueber zu erhalten, wann ein Spieler die
+   Verbindung zum MUD verliert, gibt es die Funktion BecomesNetDead().
+   Sie wird automatisch in der Umgebung des Spielers, in allen Objekten
+   in der Umgebung des Spielers (nicht rekursiv) und in allen Objekten
+   im Spieler (rekursiv) aufgerufen. Uebergeben wird hierbei das
+   Spielerobjekt.
+
+   Es gibt auch noch die Funktion BecomesNetAlive(), mit der man
+   auf aehnliche Weise erwachende Spieler registrieren kann.
+
+
+BEISPIELE
+=========
+
+   Es gibt Gebiete, in denen netztote Spieler unerwuenscht sind.
+   Folgendermassen kann man sich ihrer wirkungsvoll entledigen:
+
+
+
+   void BecomesNetDead(object pl) {
+     pl->move("eingangsraum zu gebiet", M_TPORT|M_NOCHECK);
+   }
+   Man schickt diese Spieler wieder zum Eingang des Gebietes.
+   Da der letzte Aufenthaltsort eines Spielers, der in den
+   Netztotenstatus uebergeht, erst nach Aufruf der Funktion
+   BecomesNetDead() abgespeichert wird, wacht der Spieler dann an dem
+   Ort auf, wo man Ihn innerhalb dieser Funktion hinteleportiert hat.
+
+
+SIEHE AUCH
+==========
+
+   BecomesNetAlive(), PlayerQuit(), /std/player/base.c, /room/netztot.c
+
+24. Aug 2011, Gloinson
diff --git a/doc/lfun/CannotSee b/doc/lfun/CannotSee
index 3869541..b86d33a 100644
--- a/doc/lfun/CannotSee
+++ b/doc/lfun/CannotSee
@@ -1,30 +1,49 @@
+
 CannotSee()
+***********
 
-FUNKTION:
-     varargs int CannotSee(int silent);
 
-DEFINIERT IN:
-     /std/living/light.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent - Soll an das Lebewesen direkt automatisch eine Meldung
-              ausgegeben werden wenn es nichts sehen kann?
+   varargs int CannotSee(int silent);
 
-BESCHREIBUNG:
-     Diese Funktion prueft ob das Lebewesen etwas sehen kann, oder nicht.
-     Hierbei wird sowohl das Lichtlevel mit saemtlichen Modifikatoren,
-     als auch Nachtsicht und die Property P_BLIND beruecksichtigt. Da
-     diese Funktion bei zukuenftigen Mudlibaenderungen immer aktualisiert
-     werden duerfte, sollte man sie nach Moeglichkeit benutzen und die
-     Abfragen nicht selbst implementieren.
 
-RUeCKGABEWERT:
-     0, wenn der Spieler etwas sehen kann
-     1, wenn der Spieler nichts sehen kann: Blindheit
-     2, wenn der Spieler nichts sehen kann: zu wenig Licht/keine Nachtsicht
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_BLIND, P_LIGHT_MODIFIER, P_PLAYER_LIGHT
+   /std/living/light.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   silent - Soll an das Lebewesen direkt automatisch eine Meldung
+            ausgegeben werden wenn es nichts sehen kann?
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion prueft ob das Lebewesen etwas sehen kann, oder nicht.
+   Hierbei wird sowohl das Lichtlevel mit saemtlichen Modifikatoren,
+   als auch Nachtsicht und die Property P_BLIND beruecksichtigt. Da
+   diese Funktion bei zukuenftigen Mudlibaenderungen immer aktualisiert
+   werden duerfte, sollte man sie nach Moeglichkeit benutzen und die
+   Abfragen nicht selbst implementieren.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn der Spieler etwas sehen kann
+   1, wenn der Spieler nichts sehen kann: Blindheit
+   2, wenn der Spieler nichts sehen kann: zu wenig Licht/keine Nachtsicht
+
+
+SIEHE AUCH
+==========
+
+   P_BLIND, P_LIGHT_MODIFIER, P_PLAYER_LIGHT
+
 Last modified: Mon Jan 17 18:22:27 2000 by Padreic
diff --git a/doc/lfun/ChangeMiniQuest b/doc/lfun/ChangeMiniQuest
index a6bfb7d..507bd68 100644
--- a/doc/lfun/ChangeMiniQuest
+++ b/doc/lfun/ChangeMiniQuest
@@ -1,48 +1,72 @@
-FUNKTION:
-    int ChangeMiniQuest(mixed questgeber, int parameter, mixed newvalue)
 
-DEFINIERT IN:
-    /secure/questmaster
+ChangeMiniQuest()
+*****************
 
-BESCHREIBUNG:
-    Diese Funktion aendert einen Parameter einer Miniquest im Questmaster,
-    schreibt fuer diese Aktion einen Log-Eintrag und erstellt das Miniquest-
-    Dumpfile neu.
 
-ARGUMENTE:
-    questgeber - Ladename des Objekts (string), das die Miniquest vergibt, 
-                 oderdie Indexnummer (int) der Miniquest in der MQ-Liste
-    parameter  - Angabe des zu aendernen Parameters (Position des Values
-                 im Miniquests-Mapping):
-                 0 : Miniquest-Stufenpunkte, mind. 1
-                 2 : Aufgabenbeschreibung der Miniquest (string)
-                 3 : Sichtbarkeit der Miniquest (0/1), default ist 1
-                 4 : aktiv/inaktiv (1/0)
-                 5 : Titel der Miniquest
-                 6 : "geschafft"-Beschreibung nach Abschluss der MQ
-                 7 : Voraussetzungen, Mapping im Format von P_RESTRICTIONS
-                 8 : zugeordnete Region, String wie z.B."polar", "gebirge"
-                 9 : erlaubte Abfrageobjekte, Array von Ladenamen, z.B.
-                     ({"/d/region/magier/npc/infonpc"}), es koennen mehrere 
-                     Objekte eingetragen sein
-    newvalue   - neuer Wert fuer den angegebenen Parameter
+FUNKTION
+========
 
-RUECKGABEWERTE:
-     1: hat geklappt
-     0: Zugriff verweigert
-    -2: ungueltiger Datentyp eines der Argumente, bei Parameter 9 wird
-        ein uebergebenes Array zusaetzlich auf Leerstrings und Elemente
-        geprueft, die keine Strings sind. Wenn das Array ausschliesslich
-        aus solchen Elementen besteht, wird ebenfalls -2 zurueckgegeben.
+   int ChangeMiniQuest(mixed questgeber, int parameter, mixed newvalue)
 
-BEMERKUNGEN:
-    Das Flag "active" laesst sich bequemer ueber die Questmaster-Funktion
-    SwitchMiniQuestActive() umschalten.
-    Der Miniquest-Titel darf kein "in" oder "im" enthalten, weil dann die
-    Eintraege in der Fraternitas-Bibliothek nicht gelesen werden
-    koennen.
 
-SIEHE AUCH:
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion aendert einen Parameter einer Miniquest im Questmaster,
+   schreibt fuer diese Aktion einen Log-Eintrag und erstellt das Miniquest-
+   Dumpfile neu.
+
+
+ARGUMENTE
+=========
+
+   questgeber - Ladename des Objekts (string), das die Miniquest vergibt,
+                oderdie Indexnummer (int) der Miniquest in der MQ-Liste
+   parameter  - Angabe des zu aendernen Parameters (Position des Values
+                im Miniquests-Mapping):
+                0 : Miniquest-Stufenpunkte, mind. 1
+                2 : Aufgabenbeschreibung der Miniquest (string)
+                3 : Sichtbarkeit der Miniquest (0/1), default ist 1
+                4 : aktiv/inaktiv (1/0)
+                5 : Titel der Miniquest
+                6 : "geschafft"-Beschreibung nach Abschluss der MQ
+                7 : Voraussetzungen, Mapping im Format von P_RESTRICTIONS
+                8 : zugeordnete Region, String wie z.B."polar", "gebirge"
+                9 : erlaubte Abfrageobjekte, Array von Ladenamen, z.B.
+                    ({"/d/region/magier/npc/infonpc"}), es koennen mehrere
+                    Objekte eingetragen sein
+   newvalue   - neuer Wert fuer den angegebenen Parameter
+
+
+RUECKGABEWERTE
+==============
+
+    1: hat geklappt
+    0: Zugriff verweigert
+   -2: ungueltiger Datentyp eines der Argumente, bei Parameter 9 wird
+       ein uebergebenes Array zusaetzlich auf Leerstrings und Elemente
+       geprueft, die keine Strings sind. Wenn das Array ausschliesslich
+       aus solchen Elementen besteht, wird ebenfalls -2 zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Das Flag "active" laesst sich bequemer ueber die Questmaster-Funktion
+   SwitchMiniQuestActive() umschalten.
+   Der Miniquest-Titel darf kein "in" oder "im" enthalten, weil dann die
+   Eintraege in der Fraternitas-Bibliothek nicht gelesen werden
+   koennen.
+
+
+SIEHE AUCH
+==========
+
    AddMiniQuest(L)
    P_RESTRICTIONS
-
diff --git a/doc/lfun/ChangeReputation b/doc/lfun/ChangeReputation
index e7c3af6..c3d010e 100644
--- a/doc/lfun/ChangeReputation
+++ b/doc/lfun/ChangeReputation
@@ -1,45 +1,72 @@
-ChangeReputation
-FUNKTION:
-     public varargs int ChangeReputation(string repid, int value, int silent)
 
-DEFINIERT IN:
-     /std/player/reputation.c
+ChangeReputation()
+******************
 
-ARGUMENTE:
-     repid
-       Jede neue Reputationsgruppe muss anfangs mit einer eindeutigen ID von 
-       einem EM in den Reputationsmaster eingetragen werden. Danach kann man 
-       ueber die eindeutige ID <repid> auf sie zugreifen.
-     value
-       Der Wert, um den die Reputation geaendert werden soll. Positive Werte 
-       erhoehen die Reputation, negative verschlechtern sie.
-     silent
-       Ein optionales Flag. Falls gesetzt, wird keine Standardmeldung ueber 
-       die Reputationsaenderung an den Spieler ausgegeben. Man koennte dann 
-       eigene Meldungen ausgeben.
 
-BESCHREIBUNG:
-     Vor der Aenderung wird ein Check auf die UID des ausfuehrenden Objektes
-     ausgefuehrt, "fremde" Reputationen darf man somit nicht veraendern.
-     Man kann aber selbstverstaendlich in begruendeten Faellen mit dem
-     zustaendigen Magier/Regionsmagier sprechen, ob man ebenfalls Zugriff
-     erhaelt. Eingetragen wird dies schlussendlich durch einen EM.
+FUNKTION
+========
 
-RUeCKGABEWERT:
-     REP_RET_SUCCESS    Reputation wurde veraender.
-     REP_RET_SUCCESSCUT Reputation wurde auf Min / Max veraendert
-     REP_RET_WRONGARGS  Falsche Argumente fuer ChangeRep()
-     REP_RET_INVALIDUID Unzulaessige UID / keine Zugriffsrechte
-     REP_RET_ALREADYMAX Reputation bereits Max / Min
-     REP_RET_INACTIVE   Reputation momentan inaktiv
-     REP_RET_INVALIDREP Reputation nicht vorhanden
+   public varargs int ChangeReputation(string repid, int value, int silent)
 
-BEISPIELE:
-     s. reputation
 
-SIEHE AUCH:
-     reputation
-     GetReputation(), GetReputations()
+DEFINIERT IN
+============
 
-ZULETZT GEAeNDERT:
+   /std/player/reputation.c
+
+
+ARGUMENTE
+=========
+
+   repid
+     Jede neue Reputationsgruppe muss anfangs mit einer eindeutigen ID von
+     einem EM in den Reputationsmaster eingetragen werden. Danach kann man
+     ueber die eindeutige ID <repid> auf sie zugreifen.
+   value
+     Der Wert, um den die Reputation geaendert werden soll. Positive Werte
+     erhoehen die Reputation, negative verschlechtern sie.
+   silent
+     Ein optionales Flag. Falls gesetzt, wird keine Standardmeldung ueber
+     die Reputationsaenderung an den Spieler ausgegeben. Man koennte dann
+     eigene Meldungen ausgeben.
+
+
+BESCHREIBUNG
+============
+
+   Vor der Aenderung wird ein Check auf die UID des ausfuehrenden Objektes
+   ausgefuehrt, "fremde" Reputationen darf man somit nicht veraendern.
+   Man kann aber selbstverstaendlich in begruendeten Faellen mit dem
+   zustaendigen Magier/Regionsmagier sprechen, ob man ebenfalls Zugriff
+   erhaelt. Eingetragen wird dies schlussendlich durch einen EM.
+
+
+RUeCKGABEWERT
+=============
+
+   REP_RET_SUCCESS    Reputation wurde veraender.
+   REP_RET_SUCCESSCUT Reputation wurde auf Min / Max veraendert
+   REP_RET_WRONGARGS  Falsche Argumente fuer ChangeRep()
+   REP_RET_INVALIDUID Unzulaessige UID / keine Zugriffsrechte
+   REP_RET_ALREADYMAX Reputation bereits Max / Min
+   REP_RET_INACTIVE   Reputation momentan inaktiv
+   REP_RET_INVALIDREP Reputation nicht vorhanden
+
+
+BEISPIELE
+=========
+
+   s. reputation
+
+
+SIEHE AUCH
+==========
+
+   reputation
+   GetReputation(), GetReputations()
+
+
+ZULETZT GEAeNDERT
+=================
+
 06.04.2009, Zesstra
diff --git a/doc/lfun/CheckFindRestrictions b/doc/lfun/CheckFindRestrictions
index f9c96e5..a021a58 100644
--- a/doc/lfun/CheckFindRestrictions
+++ b/doc/lfun/CheckFindRestrictions
@@ -1,23 +1,43 @@
-CheckFindRestrictions
 
-FUNKTION:
-    varargs int CheckFindRestrictions(object ob, mixed restr, closure qp)
- 
-DEFINIERT IN:
-    /std/room/shop.c
- 
-ARGUMENTE:
-    ob     - Objekt
-    restr  - zusaetzliches Argument
-    qp     - symbol_function("QueryProp",ob)
+CheckFindRestrictions()
+***********************
 
-BESCHREIBUNG:
-    Funktion, die FindBestWeapon / FindBestArmours einschraenkt.
-    Wird in Wert ungleich 0 zurueckgeliefert, so wird das Objekt
-    nicht genommen.
 
-RUECKGABEWERT:
-    Normalerweise 0
+FUNKTION
+========
 
-SIEHE AUCH:
-    FindBestWeapon(), FindBestArmours()
+   varargs int CheckFindRestrictions(object ob, mixed restr, closure qp)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob     - Objekt
+   restr  - zusaetzliches Argument
+   qp     - symbol_function("QueryProp",ob)
+
+
+BESCHREIBUNG
+============
+
+   Funktion, die FindBestWeapon / FindBestArmours einschraenkt.
+   Wird in Wert ungleich 0 zurueckgeliefert, so wird das Objekt
+   nicht genommen.
+
+
+RUECKGABEWERT
+=============
+
+   Normalerweise 0
+
+
+SIEHE AUCH
+==========
+
+   FindBestWeapon(), FindBestArmours()
diff --git a/doc/lfun/CheckLightType b/doc/lfun/CheckLightType
index 1a0490a..2296ab8 100644
--- a/doc/lfun/CheckLightType
+++ b/doc/lfun/CheckLightType
@@ -1,84 +1,110 @@
+
 CheckLightType()
+****************
 
-FUNKTION:
-	varargs int CheckLightType(int lighttype, int mode);
 
-DEFINIERT IN:
-	/std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-	lighttype
-	  Auf diesen Lichttyp wird getestet.
-	mode
-	  Die Methode, nach der der Lichttyp ueberprueft wird.
+   varargs int CheckLightType(int lighttype, int mode);
 
-BESCHREIBUNG:
-        Die Funktion prueft, ob der uebergebene lighttype mit dem in
-        P_LIGHT_TYPE definierten Lichttyp uebereinstimmt. 
 
-        Dabei kann in verschiedenen Modi getestet werden:
+DEFINIERT IN
+============
 
-        LT_CHECK_ANY
-          Es wird geprueft, ob mindestens einer der in lighttype ueber
-          gebenen Lichttypen im Objekt vorhanden ist. Dies ist das
-          Standardverhalten (default) der Funktion.
+   /std/thing/description.c
 
-        LT_CHECK_ALL     
-          Es wird geprueft, ob alle in lighttype definierten Lichttypen
-          vorhanden sind. Es koennen aber auch mehr Lichttypen definiert
-          sein.
 
-        LT_CHECK_MATCH   
-          Es wird geprueft, ob genau die in lighttype definierten Licht-
-          tyen definiert sind, sind mehr oder weniger vorhanden, gibt die
-          Funktion 0 zurueck.
+ARGUMENTE
+=========
 
-        LT_CHECK_NONE    
-          Es wird geprueft, ob keiner der uebergebenen Lichttypen vorhanden
-          sind. Ob sonst noch andere Lichttypen vorhanden sind, ist dabei 
-          egal.
+   lighttype
+     Auf diesen Lichttyp wird getestet.
+   mode
+     Die Methode, nach der der Lichttyp ueberprueft wird.
 
-RUeCKGABEWERT:
-	0 wenn die geprueften Bedingungen nicht korrekt sind, sonst 
-        ein Wert ungleich 0.
 
-BEISPIELE:
-        In einem Raum scheint die Sonne, ausserdem gibt es dort ein Lager-
-        feuer und ein Objekt mit magischem Gluehen (meine Phantasie streikt
-        grad):
+BESCHREIBUNG
+============
 
-        raum->SetProp( P_LIGHT_TYPE, LT_SUN|LT_OPEN_FIRE|LT_GLOWING );
+   Die Funktion prueft, ob der uebergebene lighttype mit dem in
+   P_LIGHT_TYPE definierten Lichttyp uebereinstimmt.
 
-        Es soll getestet werden, ob an in dem Raum Tageslicht herrscht:
+   Dabei kann in verschiedenen Modi getestet werden:
 
-        raum->CheckLightType(LT_DAYLIGHT, LT_CHECK_ANY);
-        raum->CheckLightType(LT_DAYLIGHT); // gleichwertig
+   LT_CHECK_ANY
+     Es wird geprueft, ob mindestens einer der in lighttype ueber
+     gebenen Lichttypen im Objekt vorhanden ist. Dies ist das
+     Standardverhalten (default) der Funktion.
 
-        Die Funktion ergibt wahr, da LT_DAYLIGHT unter anderem LT_SUN ent-
-        haelt (vgl man P_LIGHT_TYPES).
+   LT_CHECK_ALL
+     Es wird geprueft, ob alle in lighttype definierten Lichttypen
+     vorhanden sind. Es koennen aber auch mehr Lichttypen definiert
+     sein.
 
-        Es soll getestet werden, dass weder Mond noch Sterne im Raum sind:
+   LT_CHECK_MATCH
+     Es wird geprueft, ob genau die in lighttype definierten Licht-
+     tyen definiert sind, sind mehr oder weniger vorhanden, gibt die
+     Funktion 0 zurueck.
 
-        raum->CheckLightType(LT_MOON|LT_STARS, LT_CHECK_NONE);
+   LT_CHECK_NONE
+     Es wird geprueft, ob keiner der uebergebenen Lichttypen vorhanden
+     sind. Ob sonst noch andere Lichttypen vorhanden sind, ist dabei
+     egal.
 
-        Die Funktion ergibt wahr, da die beiden nicht gesetzt sind.
 
-        Es soll geprueft werden, ob Mond und Sterne im Raum leuchten:
+RUeCKGABEWERT
+=============
 
-        raum->CheckLightType(LT_MOON|LT_STARS, LT_CHECK_ALL);
+   0 wenn die geprueften Bedingungen nicht korrekt sind, sonst
+   ein Wert ungleich 0.
 
-        Die Funktion ergibt falsch, da keins der beiden Lichter vorhanden
-        ist. Sie ergaebe aber auch falsch, wenn einer der beiden Typen
-        vorhanden waer. Nur wenn beide vorhanden sind, gibt LT_CHECK_ALL
-        wahr.
 
-BEMERKUNG:
-        Lighttypes haben nichts mit dem Lichtsystem zu tun. Sie dienen 
-        nur der Beschreibung der Lichtverhaeltnisse an/in einem Objekt.
-        Objekte mit verschiedenen Lichtverhaeltnissen beeinflussen sich
-        gegenseitig nicht.
+BEISPIELE
+=========
 
-SIEHE AUCH:
-        /std/thing/description.c, /std/thing/lighttypes.h, P_LIGHT_TYPE
-----------------------------------------------------------------------------
+   In einem Raum scheint die Sonne, ausserdem gibt es dort ein Lager-
+   feuer und ein Objekt mit magischem Gluehen (meine Phantasie streikt
+   grad):
+
+   raum->SetProp( P_LIGHT_TYPE, LT_SUN|LT_OPEN_FIRE|LT_GLOWING );
+
+   Es soll getestet werden, ob an in dem Raum Tageslicht herrscht:
+
+   raum->CheckLightType(LT_DAYLIGHT, LT_CHECK_ANY);
+   raum->CheckLightType(LT_DAYLIGHT); // gleichwertig
+
+   Die Funktion ergibt wahr, da LT_DAYLIGHT unter anderem LT_SUN ent-
+   haelt (vgl man P_LIGHT_TYPES).
+
+   Es soll getestet werden, dass weder Mond noch Sterne im Raum sind:
+
+   raum->CheckLightType(LT_MOON|LT_STARS, LT_CHECK_NONE);
+
+   Die Funktion ergibt wahr, da die beiden nicht gesetzt sind.
+
+   Es soll geprueft werden, ob Mond und Sterne im Raum leuchten:
+
+   raum->CheckLightType(LT_MOON|LT_STARS, LT_CHECK_ALL);
+
+   Die Funktion ergibt falsch, da keins der beiden Lichter vorhanden
+   ist. Sie ergaebe aber auch falsch, wenn einer der beiden Typen
+   vorhanden waer. Nur wenn beide vorhanden sind, gibt LT_CHECK_ALL
+   wahr.
+
+
+BEMERKUNG
+=========
+
+   Lighttypes haben nichts mit dem Lichtsystem zu tun. Sie dienen
+   nur der Beschreibung der Lichtverhaeltnisse an/in einem Objekt.
+   Objekte mit verschiedenen Lichtverhaeltnissen beeinflussen sich
+   gegenseitig nicht.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, /std/thing/lighttypes.h, P_LIGHT_TYPE
+
 Last modified: Fri Jun 11 20:47:33 2004 by Vanion
diff --git a/doc/lfun/CheckResistance b/doc/lfun/CheckResistance
index 45486a5..bcf64ca 100644
--- a/doc/lfun/CheckResistance
+++ b/doc/lfun/CheckResistance
@@ -1,20 +1,37 @@
+
 CheckResistance()
+*****************
 
-FUNKTION:
-	CheckRessistance(string* dam_type_list)
 
-ARGUMENTE:
-	dam_type_list: Liste der Schadensarten, die geprueft werden
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Diese Funktion ueberprueft, gegen welche der angegebenen
-	Schadensarten das Lebewesen resistent oder verletzlich ist und
-	gibt einen Faktor zurueck, der mit dem Schaden multipliziert wird.
-	Dieser Faktor betraegt normalerweise 1, bei bei jeder Resistenz
-	wird er halbiert und bei jeder Verletzlichkeit verdoppelt.
+   CheckRessistance(string* dam_type_list)
 
-RUECKGABEWERT:
-	Ein Faktor, der mit dem Schaden multipliziert wird, vom Typ "float".
 
-SIEHE AUCH:
-	"Defend"
+ARGUMENTE
+=========
+
+   dam_type_list: Liste der Schadensarten, die geprueft werden
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ueberprueft, gegen welche der angegebenen
+   Schadensarten das Lebewesen resistent oder verletzlich ist und
+   gibt einen Faktor zurueck, der mit dem Schaden multipliziert wird.
+   Dieser Faktor betraegt normalerweise 1, bei bei jeder Resistenz
+   wird er halbiert und bei jeder Verletzlichkeit verdoppelt.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Faktor, der mit dem Schaden multipliziert wird, vom Typ "float".
+
+
+SIEHE AUCH
+==========
+
+   "Defend"
diff --git a/doc/lfun/CheckSensitiveAttack b/doc/lfun/CheckSensitiveAttack
index 32aec2e..74f6220 100644
--- a/doc/lfun/CheckSensitiveAttack
+++ b/doc/lfun/CheckSensitiveAttack
@@ -1,33 +1,54 @@
+
 CheckSensitiveAttack()
-FUNKTION:
-     void CheckSensitiveAttack(int dam, string *dam_type, mixed spell,
-			       object enemy)
+**********************
 
-DEFINIERT IN:
-     /std/living/inventory.c
 
-ARGUMENTE:
-     dam	- an Defend uebergebener Schaden
-     dam_type	- Schadenstyp(en)
-     spell	- spell, int oder mapping
-     enemy	- Feindesobjekt
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Wird von Defend() aufgerufen und prueft die Listen in
-     P_SENSITIVE_ATTACK durch.
-     Wenn die Schluessel und Threshold-Werte stimmen, wird
-     trigger_sensitive_attack(enemy,key,dam,spell,options)
-     im Objekt gerufen.
+   void CheckSensitiveAttack(int dam, string *dam_type, mixed spell,
+                             object enemy)
 
-BEMERKUNGEN:
-     Objekte mit P_SENSITIVE mit Schluessel SENSITIVE_ATTACK bitte vorsichtig
-     verwenden, da rechenintensiv.
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject, RemoveSensitiveObject
-     insert_sensitive_inv_trigger, insert_sensitive_inv
-     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
-     P_SENSITIVE_INVENTORY_TRIGGER
+DEFINIERT IN
+============
+
+   /std/living/inventory.c
+
+
+ARGUMENTE
+=========
+
+   dam        - an Defend uebergebener Schaden
+   dam_type   - Schadenstyp(en)
+   spell      - spell, int oder mapping
+   enemy      - Feindesobjekt
+
+
+BESCHREIBUNG
+============
+
+   Wird von Defend() aufgerufen und prueft die Listen in
+   P_SENSITIVE_ATTACK durch.
+   Wenn die Schluessel und Threshold-Werte stimmen, wird
+   trigger_sensitive_attack(enemy,key,dam,spell,options)
+   im Objekt gerufen.
+
+
+BEMERKUNGEN
+===========
+
+   Objekte mit P_SENSITIVE mit Schluessel SENSITIVE_ATTACK bitte vorsichtig
+   verwenden, da rechenintensiv.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+   P_SENSITIVE_INVENTORY_TRIGGER
 
 28.Jan.2001, Gloinson@MG
diff --git a/doc/lfun/CheckSpellFatigue b/doc/lfun/CheckSpellFatigue
index 0d7cc2a..ac9d3fe 100644
--- a/doc/lfun/CheckSpellFatigue
+++ b/doc/lfun/CheckSpellFatigue
@@ -1,61 +1,85 @@
-CheckSpellFatigue
 
-FUNKTION:
-    public varargs int CheckSpellFatigue(string key)
+CheckSpellFatigue()
+*******************
 
-DEFINIERT IN:
-    /std/living/skills.c
-    /std/player/skills.c
-    /sys/living/skills.h
 
-ARGUMENTE:
-    string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
-                  oder 0 fuer die globale Spruchermuedung.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion dient zum Pruefen von individuellen Spruchermuedungen
-    (Spellfatigue, Spruchsperren).
-    Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
-    Sprueche oder Gruppen von Spruechen gestalten.
+   public varargs int CheckSpellFatigue(string key)
 
-    Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
-    geprueft (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls 
-    die unter <key> gespeicherte Spruchermuedung.
-    Prueft man einen Eintrag ohne Angabe von <key> ist das Ergebnis dieser
-    Funktion identisch zur Abfrage von P_NEXT_SPELL_TIME.
 
-RUeCKGABEWERT:
-    0    Spruchermuedung existiert nicht oder ist abgelaufen.
+DEFINIERT IN
+============
 
-    >0   Spruchermuedung ist noch nicht abgelaufen, Rueckgabewert ist die
-         Zeit, bei der dieser Eintrag ablaeuft. Der Spruch darf _nicht_
-         ausgefuehrt werden.
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
 
-BEISPIELE:
-    Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
-    Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
-    Gruppe ausgefuehrt wurde.
-    if (ob->CheckSpellFatigue("extrasuess") {
-      // alte Sperre noch nicht abgelaufen.
-      tell_object(ob, "Deine unendliche Schokotorte ist noch nicht wieder "
-        "nachgewachsen.\n");
-      return ... ;
-    }
 
-BEMERKUNGEN:
-    Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
-    unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
-    auf volle 2s aufgerundet werden.
-    Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
-    werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
-    ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
-    Wuensche habt, sprecht den/die Mudlib-EM an.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    SetSpellFatigue(L), DeleteSpellFatigue(L)
-    P_NEXT_SPELL_TIME
-    spruchermuedung
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Pruefen von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+   Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
+   Sprueche oder Gruppen von Spruechen gestalten.
+
+   Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
+   geprueft (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls
+   die unter <key> gespeicherte Spruchermuedung.
+   Prueft man einen Eintrag ohne Angabe von <key> ist das Ergebnis dieser
+   Funktion identisch zur Abfrage von P_NEXT_SPELL_TIME.
+
+
+RUeCKGABEWERT
+=============
+
+   0    Spruchermuedung existiert nicht oder ist abgelaufen.
+
+   >0   Spruchermuedung ist noch nicht abgelaufen, Rueckgabewert ist die
+        Zeit, bei der dieser Eintrag ablaeuft. Der Spruch darf _nicht_
+        ausgefuehrt werden.
+
+
+BEISPIELE
+=========
+
+   Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
+   Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
+   Gruppe ausgefuehrt wurde.
+   if (ob->CheckSpellFatigue("extrasuess") {
+     // alte Sperre noch nicht abgelaufen.
+     tell_object(ob, "Deine unendliche Schokotorte ist noch nicht wieder "
+       "nachgewachsen.\n");
+     return ... ;
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
+   unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
+   auf volle 2s aufgerundet werden.
+   Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
+   werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
+   ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
+   Wuensche habt, sprecht den/die Mudlib-EM an.
+
+
+SIEHE AUCH
+==========
+
+   SetSpellFatigue(L), DeleteSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
 27.03.2010, Zesstra
-
diff --git a/doc/lfun/ClearRingBuffer b/doc/lfun/ClearRingBuffer
index 0095dec..869d298 100644
--- a/doc/lfun/ClearRingBuffer
+++ b/doc/lfun/ClearRingBuffer
@@ -1,34 +1,56 @@
+
 ClearRingBuffer()
+*****************
 
-FUNKTION:
-    protected struct std_ringbuffer ClearRingBuffer(struct std_ringbuffer b);
 
-DEFINIERT IN:
-    /std/util/ringbuffer.c
-    /sys/util/ringbuffer.h
+FUNKTION
+========
 
-ARGUMENTE:
-    b - der zu loeschende Ringpuffer
+   protected struct std_ringbuffer ClearRingBuffer(struct std_ringbuffer b);
 
-BESCHREIBUNG:
-    Diese Funktion loescht alle Daten aus dem Puffer <b> und re-initialisiert
-    ihn.
-    
-RUeCKGABEWERT:
-    Der geloeschte Puffer <b> wird wieder zurueckgegeben.
 
-BEISPIELE:
-    // Ringpuffer anlegen:
-    struct std_ringbuffer buffer=CreateRingBuffer(10, MODE_FIFO);
-    // mit irgendwelchen Daten fuellen...
-    // ...
-    // Puffer loeschen
-    buffer = ClearRingBuffer(buffer);
-    // oder:
-    ClearRingBuffer(buffer);
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    CreateRingBuffer(), RingBufferGet(), ResizeRingBuffer()
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   b - der zu loeschende Ringpuffer
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion loescht alle Daten aus dem Puffer <b> und re-initialisiert
+   ihn.
+
+
+RUeCKGABEWERT
+=============
+
+   Der geloeschte Puffer <b> wird wieder zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer=CreateRingBuffer(10, MODE_FIFO);
+   // mit irgendwelchen Daten fuellen...
+   // ...
+   // Puffer loeschen
+   buffer = ClearRingBuffer(buffer);
+   // oder:
+   ClearRingBuffer(buffer);
+
+
+SIEHE AUCH
+==========
+
+   CreateRingBuffer(), RingBufferGet(), ResizeRingBuffer()
 
 23.05.2008, Zesstra
-
diff --git a/doc/lfun/Configure b/doc/lfun/Configure
index 9763999..5a919ce 100644
--- a/doc/lfun/Configure
+++ b/doc/lfun/Configure
@@ -1,23 +1,38 @@
+
+Configure()
+***********
+
 Configure()
 
-  public mixed Configure(mixed data)
+   public mixed Configure(mixed data)
 
-DEFINIERT IN:
+
+DEFINIERT IN
+============
+
    Beliebigen Objekten
 
-ARGUMENTE:
+
+ARGUMENTE
+=========
+
    <data>
      0 fuer Datenabfrage
      beliebige Daten, die ein Configure(0) vorher lieferte
 
-BESCHREIBUNG:
+
+BESCHREIBUNG
+============
+
    Viele Objekte werden fuer bestimmte Spieler konfiguriert und so
    personalisiert. Sie enthalten zusaetzlich zu den Daten, welche waehrend des
    create() gesetzt wurden, noch weitere spieler-individuelle Daten.
    Damit diese Objekte im Bedarfsfall neu erstellt werden koennen, sollte ein
    geeignetes Configure() definfiert werden, um diese Daten abzurufen und in
    einem neuen Clone (oder neugeladener Blueprint) wieder zu setzen.
-   
+
+
+
    Existiert Configure() im Objekt, MUSS dieses bei einem Aufruf mit
    <data>==0 (d.h. Configure(0)) alle individuellen Daten zurueckliefern,
    die noetig sind, um den aktuellen Zustand des Objektes spaeter
@@ -29,7 +44,10 @@
    von Configure(data) wieder gesetzt. Das Configure MUSS genau die Daten, die
    es im alten Objekt zurueckliefert, wieder akzeptieren.
 
-RUeCKGABEWERT:
+
+RUeCKGABEWERT
+=============
+
    Wenn <data>==0:
      Alle individuellen Daten in einer beliebigen Form. Ein Mapping bietet
      sich jedoch an.
@@ -39,13 +57,19 @@
      1, wenn die Daten zur Konfiguration akzeptiert wurden.
      0, sonst.
 
-BEMERKUNGEN:
+
+BEMERKUNGEN
+===========
+
    Configure() ist nicht verpflichtet, erneut Daten zu akzeptieren, wenn es
    bereits einmal mit gueltigen Daten aufgerufen wurde.
    Das Zurueckschreiben der Daten kann auch nach Ablauf laengerer Zeit
    und/oder in einer anderen Uptime erfolgen.
 
-BEISPIELE:
+
+BEISPIELE
+=========
+
    Ein Objekt, welches ein anderes Objekt sicher ersetzt, d.h. die
    individuelle Konfiguration bleibt erhalten:
    mixed data;
@@ -71,6 +95,8 @@
          "Daten enthaelt.",78));
    }
 
-LETZTE AeNDERUNG:
-26.09.2011, Zesstra
 
+LETZTE AeNDERUNG
+================
+
+26.09.2011, Zesstra
diff --git a/doc/lfun/ConvMaterialList b/doc/lfun/ConvMaterialList
index ab4618a..874753b 100644
--- a/doc/lfun/ConvMaterialList
+++ b/doc/lfun/ConvMaterialList
@@ -1,41 +1,65 @@
+
 ConvMaterialList()
-FUNKTION:
-     varargs string ConvMaterialList(mixed mats, int casus, mixed idinf)
+******************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     mixed mats:  - das zu erkennende Material:
-                    - ein Mapping, ein String oder ein Stringarray
-                      ([MAT_A:y,MAT_B:x,..]) oder MAT_A oder ({MAT_A,MAT_B,..})
-     int casus:   - der Fall: 0..3 -> <language.h>: WAS, WESSEN, WEM, WEN
-     mixed idinf  - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
-		    (siehe "man MaterialList")
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Man uebergibt ConvMaterialList() eine Liste von Materialien, die die
-     Funktion unter Verwendung von MaterialName() in ihre Bestandteile
-     aufsplittet und mit "und" und "," verknuepft zurueckgibt.
+   varargs string ConvMaterialList(mixed mats, int casus, mixed idinf)
 
-RUECKGABEWERT:
-     string - Materialien, durch Komma und "und" getrennt oder
-              "unbekanntes Material"
 
-BEMERKUNGEN:
-     Wird von /std/thing/description::MaterialList() gerufen.
-     Bitte an Objekten auch MaterialList() verwenden.
-     Ruft direkt MaterialName() auf.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+   /p/daemon/materialdb.c (MATERIALDB)
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   mixed mats:  - das zu erkennende Material:
+                  - ein Mapping, ein String oder ein Stringarray
+                    ([MAT_A:y,MAT_B:x,..]) oder MAT_A oder ({MAT_A,MAT_B,..})
+   int casus:   - der Fall: 0..3 -> <language.h>: WAS, WESSEN, WEM, WEN
+   mixed idinf  - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
+                  (siehe "man MaterialList")
+
+
+BESCHREIBUNG
+============
+
+   Man uebergibt ConvMaterialList() eine Liste von Materialien, die die
+   Funktion unter Verwendung von MaterialName() in ihre Bestandteile
+   aufsplittet und mit "und" und "," verknuepft zurueckgibt.
+
+
+RUECKGABEWERT
+=============
+
+   string - Materialien, durch Komma und "und" getrennt oder
+            "unbekanntes Material"
+
+
+BEMERKUNGEN
+===========
+
+   Wird von /std/thing/description::MaterialList() gerufen.
+   Bitte an Objekten auch MaterialList() verwenden.
+   Ruft direkt MaterialName() auf.
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/CreateRingBuffer b/doc/lfun/CreateRingBuffer
index 0471af6..e10b671 100644
--- a/doc/lfun/CreateRingBuffer
+++ b/doc/lfun/CreateRingBuffer
@@ -1,45 +1,70 @@
+
 CreateRingBuffer()
+******************
 
-FUNKTION:
-    protected struct std_ringbuffer CreateRingBuffer(int size, int newmode);
 
-DEFINIERT IN:
-    /std/util/ringbuffer.c
-    /sys/util/ringbuffer.h
+FUNKTION
+========
 
-ARGUMENTE:
-    size    - Groesse des neuen Ringpuffers (int)
-    newmode - Ausgabemodus beim Abrufen des Puffers (int):
-              MODE_FIFO: First-in-First-Out
-              MODE_LIFO: Last-in-First-Out
+   protected struct std_ringbuffer CreateRingBuffer(int size, int newmode);
 
-BESCHREIBUNG:
-    Diese Funktion erstellt einen neuen, leeren Ringpuffer der Groesse <size>
-    und liefert ihn zurueck. Die Daten des Puffers werden spaeter gemaess
-    <newmode> so gespeichert, dass bei der Ausgabe des Puffers mittels
-    RingBufferGet() die entweder die neuesten Daten zuerst (MODE_LIFO) oder
-    die aeltesten Daten zuerst (MODE_FIFO) geliefert werden.
 
-RUeCKGABEWERT:
-    Der neue Ringpuffer. Dieser wird in einer Struct std_ringbuffer
-    gespeichert. Er ist in einer Variable 'mixed' oder in einer mittels
-    'struct std_ringbuffer' angelegten Variable speicherbar.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    Der gelieferte Ringpuffer sollte nicht per Hand verarbeitet oder
-    genaendert werden, sondern nur ueber die Verwaltungsfunktionen aus
-    /std/util/ringbuffer.c.
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
 
-BEISPIELE:
-    // Variable anlegen:
-    struct std_ringbuffer buffer;
-    // _oder_: mixed buffer;
-    // neuen Puffer mit max. 50 Elementen anlegen, der bei der Abfrage die
-    // aeltesten Daten zuerst zurueckliefert:
-    buffer = CreateRingBuffer(50, MODE_FIFO);
 
-SIEHE AUCH:
-    RingBufferPut(), RingBufferGet(), ResizeRingBuffer()
+ARGUMENTE
+=========
+
+   size    - Groesse des neuen Ringpuffers (int)
+   newmode - Ausgabemodus beim Abrufen des Puffers (int):
+             MODE_FIFO: First-in-First-Out
+             MODE_LIFO: Last-in-First-Out
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion erstellt einen neuen, leeren Ringpuffer der Groesse <size>
+   und liefert ihn zurueck. Die Daten des Puffers werden spaeter gemaess
+   <newmode> so gespeichert, dass bei der Ausgabe des Puffers mittels
+   RingBufferGet() die entweder die neuesten Daten zuerst (MODE_LIFO) oder
+   die aeltesten Daten zuerst (MODE_FIFO) geliefert werden.
+
+
+RUeCKGABEWERT
+=============
+
+   Der neue Ringpuffer. Dieser wird in einer Struct std_ringbuffer
+   gespeichert. Er ist in einer Variable 'mixed' oder in einer mittels
+   'struct std_ringbuffer' angelegten Variable speicherbar.
+
+
+BEMERKUNGEN
+===========
+
+   Der gelieferte Ringpuffer sollte nicht per Hand verarbeitet oder
+   genaendert werden, sondern nur ueber die Verwaltungsfunktionen aus
+   /std/util/ringbuffer.c.
+
+
+BEISPIELE
+=========
+
+   // Variable anlegen:
+   struct std_ringbuffer buffer;
+   // _oder_: mixed buffer;
+   // neuen Puffer mit max. 50 Elementen anlegen, der bei der Abfrage die
+   // aeltesten Daten zuerst zurueckliefert:
+   buffer = CreateRingBuffer(50, MODE_FIFO);
+
+
+SIEHE AUCH
+==========
+
+   RingBufferPut(), RingBufferGet(), ResizeRingBuffer()
 
 23.05.2008, Zesstra
-
diff --git a/doc/lfun/CustomizeObject b/doc/lfun/CustomizeObject
index 4b35092..2c7736a 100644
--- a/doc/lfun/CustomizeObject
+++ b/doc/lfun/CustomizeObject
@@ -1,19 +1,36 @@
-CustomizeObject()
 
-FUNKTION:
+CustomizeObject()
+*****************
+
+
+FUNKTION
+========
+
    string CustomizeObject();
 
-DEFINIERT IN:
+
+DEFINIERT IN
+============
+
    /std/virtual/v_compiler.c
 
-ARGUMENTE:
+
+ARGUMENTE
+=========
+
    keine
 
-RUeCKGABEWERT:
+
+RUeCKGABEWERT
+=============
+
    Den Objektnamen, den das zuletzt erzeugte Objekt (welches gerade die
    Funktion aufruft) spaeter vom Driver bekommen wird.
 
-BESCHREIBUNG:
+
+BESCHREIBUNG
+============
+
    Diese Funktion ist aus dem Grunde da, da zum Zeitpunkt des Clonens des
    VC-Objektes (P_STD_OBJECT) dieses Objekt ja noch nicht weiss Wer
    oder Was es spaeter mal sein wird.
@@ -24,29 +41,44 @@
    Da das VC-Objekt vom VC geclont wurde, ist previous_object() im create()
    des VC-Objektes der VC, in dem man CustomizeObject() ruft.
 
-BEMERKUNGEN:
+
+BEMERKUNGEN
+===========
+
    Das CustomizeObject() im Standard-VC gibt nur den zukuenftigen Objektnamen
    zurueck und macht sonst nix.
 
-BEISPIELE:
+
+BEISPIELE
+=========
+
    create() eines VC-Objektes:
-   
+
+
+
    protected void create() {
      ...
-     
+
+
+
      // wer bin ich denn eigentlich?
      string myname = previous_object()->CustomizeObject();
      switch(myname) {
-       // Kram konfigurier, ja nach myname... 
+       // Kram konfigurier, ja nach myname...
      }
-     
+
+
+
      ...
    }
 
-SIEHE AUCH:
-     virtual_compiler
-     CustomizeObject(), Validate(), NoParaObjects(), 
-     P_COMPILER_PATH, P_PARA
-     /std/virtual/v_compiler.c
-----------------------------------------------------------------------------
+
+SIEHE AUCH
+==========
+
+   virtual_compiler
+   CustomizeObject(), Validate(), NoParaObjects(),
+   P_COMPILER_PATH, P_PARA
+   /std/virtual/v_compiler.c
+
 21.10.2007, Zesstra
diff --git a/doc/lfun/Damage b/doc/lfun/Damage
index 3258531..b36061b 100644
--- a/doc/lfun/Damage
+++ b/doc/lfun/Damage
@@ -1,34 +1,56 @@
+
 Damage()
+********
 
-FUNKTION:
-     int Damage(int dam);
 
-DEFINIERT IN:
-     /std/armour/combat.c und
-     /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     dam  Der Wert, mit dem die Waffe/Ruestung beschaedig werden soll.
+   int Damage(int dam);
 
-BESCHREIBUNG:
-     P_WC bzw. P_AC wird um dam reduziert und P_DAMAGED wird um
-     dam erhoeht.
-     Bei dam>0 wird das Objekt beschaedigt, bei dam<0 repariert.
-     Dabei werden sowohl die Obergrenzen (s. /sys/combat.h) wie auch
-     die Untergrenzen (Waffen:30, Ruestungen: 0) fuer P_WC und P_AC
-     beachtet. Es kann auch nicht mehr repariert werden, als vorher
-     beschaedigt wurde.
 
-RUeCKGABEWERT:
-     Der Wert der Beschaedigung, die tatsaechlich vorgenommen wurde.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Ist das Objekt in Benutzung, setzt die Funktion Damage automatisch
-     die Properties P_TOTAL_WC bzw. P_TOTAL_AC in dem benutzenden Spieler
-     auf die richtigen Werte.
+   /std/armour/combat.c und
+   /std/weapon/combat.c
 
-SIEHE AUCH:
-     /std/armour/combat.c, /std/weapon/combat.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   dam  Der Wert, mit dem die Waffe/Ruestung beschaedig werden soll.
+
+
+BESCHREIBUNG
+============
+
+   P_WC bzw. P_AC wird um dam reduziert und P_DAMAGED wird um
+   dam erhoeht.
+   Bei dam>0 wird das Objekt beschaedigt, bei dam<0 repariert.
+   Dabei werden sowohl die Obergrenzen (s. /sys/combat.h) wie auch
+   die Untergrenzen (Waffen:30, Ruestungen: 0) fuer P_WC und P_AC
+   beachtet. Es kann auch nicht mehr repariert werden, als vorher
+   beschaedigt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Wert der Beschaedigung, die tatsaechlich vorgenommen wurde.
+
+
+BEMERKUNGEN
+===========
+
+   Ist das Objekt in Benutzung, setzt die Funktion Damage automatisch
+   die Properties P_TOTAL_WC bzw. P_TOTAL_AC in dem benutzenden Spieler
+   auf die richtigen Werte.
+
+
+SIEHE AUCH
+==========
+
+   /std/armour/combat.c, /std/weapon/combat.c
+
 Last modified: Thu May 22 10:13:23 1997 by Paracelsus
diff --git a/doc/lfun/DeAssocMember b/doc/lfun/DeAssocMember
index 5f35326..f47d548 100644
--- a/doc/lfun/DeAssocMember
+++ b/doc/lfun/DeAssocMember
@@ -1,48 +1,71 @@
 
 DeAssocMember()
+***************
 
 
-FUNKTION:
-        int DeAssocMember(object npc)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   int DeAssocMember(object npc)
 
-ARGUMENTE:
-        Der NPC, der nicht mehr zugeordnet sein soll.
 
-BESCHREIBUNG:
-        Hebt die Zuordnung eines NPCs zu einem Spieler auf.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        1, falls Aufhebung erfolgreich, sonst 0.
+   /std/living/team.c
 
-BEISPIEL:
-        void fun(object pl)
-        {
-         if ( pl && pl->DeAssocMember(this_object()) )
-          tell_object(pl,break_string(
-              "Ich kaempfe nun nicht mehr auf Deiner Seite!\n",78,
-              "Ein Feuerteufel teilt Dir mit:");
-         ...
-        }
 
-BEMERKUNGEN:
-        Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
-        zugeordneten NPC aufgerufen werden.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+   Der NPC, der nicht mehr zugeordnet sein soll.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Hebt die Zuordnung eines NPCs zu einem Spieler auf.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls Aufhebung erfolgreich, sonst 0.
+
+
+BEISPIEL
+========
+
+   void fun(object pl)
+   {
+    if ( pl && pl->DeAssocMember(this_object()) )
+     tell_object(pl,break_string(
+         "Ich kaempfe nun nicht mehr auf Deiner Seite!\n",78,
+         "Ein Feuerteufel teilt Dir mit:");
+    ...
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
+   zugeordneten NPC aufgerufen werden.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/DeclAdj b/doc/lfun/DeclAdj
index f6e4244..d7a7f91 100644
--- a/doc/lfun/DeclAdj
+++ b/doc/lfun/DeclAdj
@@ -1,46 +1,68 @@
+
 DeclAdj()
+*********
 
-FUNKTION:
-     varargs string DeclAdj( string adj, int casus, int demon);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     adj
-          Das zu deklinierende Adjektiv.
+   varargs string DeclAdj( string adj, int casus, int demon);
 
-     casus
-          Der Fall, in den es dekliniert werden soll.
 
-     demon
-          Bezieht sich das Adjektiv auf einen bestimmten oder einen
-          unbestimmten Gegenstand?
+DEFINIERT IN
+============
 
-BESCHREIBUNG:
-     Dekliniert das uebergebene Adjektiv in den angegebenen Fall. Ist demon
-     ungleich Null, so wird das Adjektiv so behandelt, als wuerde es sich
-     auf einen bestimmten Gegenstand beziehen, ansonsten bezieht es sich auf
-     einen unbestimmten Gegenstand.
+   /std/thing/language.c
 
-RUeCKGABEWERT:
-     Das deklinierte Adjektiv. Es wird zusaetzlich noch ein Leerzeichen
-     hinten angefuegt!
 
-BEISPIELE:
-     Zunaechst ein bestimmtes Adjektiv:
+ARGUMENTE
+=========
 
-     printf("Der %sBall.\n", ball->DeclAdj("gruen", WER, 1);
+   adj
+        Das zu deklinierende Adjektiv.
 
-     Nun ein unbestimmtes Adjektiv:
+   casus
+        Der Fall, in den es dekliniert werden soll.
 
-     printf("Ein %sBall.\n", ball->DeclAdj("gruen", WER, 0);
+   demon
+        Bezieht sich das Adjektiv auf einen bestimmten oder einen
+        unbestimmten Gegenstand?
 
-     Da DeclAdj() "gruene " bzw. "gruener " zurueckgibt, darf zwischen dem
-     "%s" und dem "Ball" kein Leerzeichen stehen!
 
-SIEHE AUCH:
-     /std/thing/language.c
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Dekliniert das uebergebene Adjektiv in den angegebenen Fall. Ist demon
+   ungleich Null, so wird das Adjektiv so behandelt, als wuerde es sich
+   auf einen bestimmten Gegenstand beziehen, ansonsten bezieht es sich auf
+   einen unbestimmten Gegenstand.
+
+
+RUeCKGABEWERT
+=============
+
+   Das deklinierte Adjektiv. Es wird zusaetzlich noch ein Leerzeichen
+   hinten angefuegt!
+
+
+BEISPIELE
+=========
+
+   Zunaechst ein bestimmtes Adjektiv:
+
+   printf("Der %sBall.\n", ball->DeclAdj("gruen", WER, 1);
+
+   Nun ein unbestimmtes Adjektiv:
+
+   printf("Ein %sBall.\n", ball->DeclAdj("gruen", WER, 0);
+
+   Da DeclAdj() "gruene " bzw. "gruener " zurueckgibt, darf zwischen dem
+   "%s" und dem "Ball" kein Leerzeichen stehen!
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+
 Last modified: Wed May 8 10:18:05 1996 by Wargon
diff --git a/doc/lfun/Defend b/doc/lfun/Defend
index e02264a..aa53945 100644
--- a/doc/lfun/Defend
+++ b/doc/lfun/Defend
@@ -1,150 +1,175 @@
+
 Defend()
-FUNKTION:
-     public int Defend(int dam, string|string* dam_type, int|mapping spell, 
-                        object enemy)
+********
 
-DEFINIERT IN:
-     /std/living/combat
 
-ARGUMENTE:
-     int dam                  initiale Staerke des Angriffs (10 dam ~ 1 HP)
-     string* dam_type         Art(en) des Schadens, der angerichtet werden
-                              soll
-                              Muss ein Array von Schadenstypen sein,
-                              alte Objekte uebergeben hier manchmal strings.
-     int/mapping spell        - 0 fuer normale Angriffe (keine Zauber)
-                              - 1 fuer Zauber (Standardruestungen ignorieren)
-                              - mapping fuer mehr Informationen
-                              Heute bitte nach Moeglichkeit ein Mapping
-                              uebergeben.
-     object enemy             der Feind/Schadenverursacher
+FUNKTION
+========
 
-BESCHREIBUNG:
-     1. Generell
-     Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark die
-     Ruestungen und koerpereigenen Abwehrkraefte sind und die Staerke des
-     Schadens dementsprechend vermindert.
-     Ggf. wird der Schaden zugefuegt und der Feind in  die Liste der Feinde
-     aufgenommen. Der Schaden betraegt:
-      (dam-Summe(Ruestungsstaerken)-random(P_BODY+A_DEX))*CheckResistance/10
-     aber nicht unter 0.
+   public int Defend(int dam, string|string* dam_type, int|mapping spell,
+                      object enemy)
 
-     2. Der Parameter 'spell'
-     Ist 'spell' 0, dann gilt der Angriff als normale physische Attacke
-     Uebergibt man als 'spell'-Parameter ein Mapping, so gibt es dafuer
-     diverse Flags, die das Ergebnis manipulieren (in new_skills.h
-     enthalten). Nichtangabe eines Flags gilt als 0.
 
-     - SP_PHYSICAL_ATTACK ---------- 0/1
-                1, wenn Ruestungen wirken sollen, 0 sonst
-                -> entspricht !spell, wenn dieses Int ist
-     - SP_NO_ENEMY ----------------- 0/1
-                1, falls der Angriff nicht toedlich ist, es also keinen echten
-                Gegner gibt
-                -> es wird dann reduce_hit_points() gerufen statt do_damage()
-     - SP_NO_ACTIVE_DEFENSE -------- 0/1
-                1, falls aktive Abwehren (wie zurueckschlagende Amulette,
-                Karateabwehren oder Ausweichmanoever) unterbleiben sollen
-                -> zB bei Kratzen durch Dornen oder Fall aus grosser Hoehe
-                   ist aktive Abwehr oder Ausweichen unlogisch
-     - SP_RECURSIVE ---------------- 0/1
-                1, falls der Spell aus einem Defend gerufen wurde (oder einer
-                DefendFunc)
-                -> verhindert Rekursionsprobleme
-     - SP_NAME --------------------- string
-                Name des Spells
-     - SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY, values int>=0
-                Die Schutzwirkung durch P_AC/Magie einer Ruestung wird
-                typabhaengig reduziert. Aufbau eines Mappings im Beispiel:
-                ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht
-                  P_BODY:  50,  // Koerper zu 50%
-                  AT_BELT: 600  // Guertel zu 600%
-                ])
-                -> alle 'fehlenden' Eintraege wirken normal
-     - SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays
-                0, fuer keine Treffermeldung, 1 sonst
-                In einem Array koennen Ersatz-Treffermeldungen definiert
-                werden. Format ist:
-                ({
-                 ({ int lphit1, string mess_me,
-                                string mess_en,
-                                string mess_room }),
-                 ({ lphit2, mess_me, mess_en, mess_room }),
-                 ...
-                 ({ lphitn, mess_me, mess_en, mess_room }),
-                })
-                wobei lphit1<lphit2<...<lphitn sein muss, d.h. das Array-
-                Array aufsteigend sortiert.
+DEFINIERT IN
+============
 
-                Ist ein Treffer x LP hart, werden die Meldungen des lphit-
-                Arrays ausgegeben, dessen Wert am naehesten unter dem Schaden
-                liegt.
+   /std/living/combat
 
-                In den Meldungen mess_me (an den Getroffenen), mess_en (an
-                den Feind), mess_room (an die restlichen Umstehenden) koennen
-                Ersatzstrings wie folgt verwendet werden:
-                @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
-                @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
-     - EINFO_DEFEND ------------ Mapping
-                Dieses Mapping liefert erweiterte Informationen zu dem
-                bisherigen Ablauf des aktiven Attacks.
-                Die verfuegbaren Informationen sind in der Manpage zu
-                DefendInfo festgehalten.
 
-     3. Reihenfolgen in Defend
-     - das Living wird angegriffen, wenn
-       - P_NO_ATTACK != 0
-       - 'enemy' existiert und kein netztoter Spieler ist
-     - P_DEFENDERS werden durchgegangen (und eventuell benachrichtigt)
-     - P_TMP_ATTACK_HOOK wird abgefragt
-     - die Ruestungen werden vom Schaden gegebenenfalls abgezogen
-     - magischer Ausweichskill beruecksichtigt
-     - sensitive Objekte werden ggf. benachrichtigt
-     - InternalModifyDefend wird gerufen
-     - Koerperabwehr abgezogen
-     - der Schaden an do_damage()/reduce_hit_points() uebergeben
-     - Flucht ueberpruefen mit CheckWimpyAndFlee()
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Ruestungen wirken konventionell nur, wenn mindestens ein Schadensanteil
-     mechanisch ist und es kein Spell oder ein Spell mit SP_PHYSICAL_ATTACK
-     auf 1 ist.
+   int dam                  initiale Staerke des Angriffs (10 dam ~ 1 HP)
+   string* dam_type         Art(en) des Schadens, der angerichtet werden
+                            soll
+                            Muss ein Array von Schadenstypen sein,
+                            alte Objekte uebergeben hier manchmal strings.
+   int/mapping spell        - 0 fuer normale Angriffe (keine Zauber)
+                            - 1 fuer Zauber (Standardruestungen ignorieren)
+                            - mapping fuer mehr Informationen
+                            Heute bitte nach Moeglichkeit ein Mapping
+                            uebergeben.
+   object enemy             der Feind/Schadenverursacher
 
-     Defend() beruecksichtigt magische Verteidigungen, die der Spieler bei
-     sich hat, sollte also aus Fairness gegenueber den Objekten anderer
-     Magier immer dem direkten reduce_hit_points() oder do_damage()
-     vorgezogen werden. Mittels der Flags in 'spell' kann man sehr viel
-     aendern.
 
-RUECKGABEWERT:
-     Hoehe des tatsaechlichen Schadens. Dies kann mehr sein als die
-     Lebenspunkte des Lebewesens.
+BESCHREIBUNG
+============
+
+   1. Generell
+   Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark die
+   Ruestungen und koerpereigenen Abwehrkraefte sind und die Staerke des
+   Schadens dementsprechend vermindert.
+   Ggf. wird der Schaden zugefuegt und der Feind in  die Liste der Feinde
+   aufgenommen. Der Schaden betraegt:
+    (dam-Summe(Ruestungsstaerken)-random(P_BODY+A_DEX))*CheckResistance/10
+   aber nicht unter 0.
+
+   2. Der Parameter 'spell'
+   Ist 'spell' 0, dann gilt der Angriff als normale physische Attacke
+   Uebergibt man als 'spell'-Parameter ein Mapping, so gibt es dafuer
+   diverse Flags, die das Ergebnis manipulieren (in new_skills.h
+   enthalten). Nichtangabe eines Flags gilt als 0.
+
+   - SP_PHYSICAL_ATTACK ---------- 0/1
+              1, wenn Ruestungen wirken sollen, 0 sonst
+              -> entspricht !spell, wenn dieses Int ist
+   - SP_NO_ENEMY ----------------- 0/1
+              1, falls der Angriff nicht toedlich ist, es also keinen echten
+              Gegner gibt
+              -> es wird dann reduce_hit_points() gerufen statt do_damage()
+   - SP_NO_ACTIVE_DEFENSE -------- 0/1
+              1, falls aktive Abwehren (wie zurueckschlagende Amulette,
+              Karateabwehren oder Ausweichmanoever) unterbleiben sollen
+              -> zB bei Kratzen durch Dornen oder Fall aus grosser Hoehe
+                 ist aktive Abwehr oder Ausweichen unlogisch
+   - SP_RECURSIVE ---------------- 0/1
+              1, falls der Spell aus einem Defend gerufen wurde (oder einer
+              DefendFunc)
+              -> verhindert Rekursionsprobleme
+   - SP_NAME --------------------- string
+              Name des Spells
+   - SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY, values int>=0
+              Die Schutzwirkung durch P_AC/Magie einer Ruestung wird
+              typabhaengig reduziert. Aufbau eines Mappings im Beispiel:
+              ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht
+                P_BODY:  50,  // Koerper zu 50%
+                AT_BELT: 600  // Guertel zu 600%
+              ])
+              -> alle 'fehlenden' Eintraege wirken normal
+   - SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays
+              0, fuer keine Treffermeldung, 1 sonst
+              In einem Array koennen Ersatz-Treffermeldungen definiert
+              werden. Format ist:
+              ({
+               ({ int lphit1, string mess_me,
+                              string mess_en,
+                              string mess_room }),
+               ({ lphit2, mess_me, mess_en, mess_room }),
+               ...
+               ({ lphitn, mess_me, mess_en, mess_room }),
+              })
+              wobei lphit1<lphit2<...<lphitn sein muss, d.h. das Array-
+              Array aufsteigend sortiert.
+
+              Ist ein Treffer x LP hart, werden die Meldungen des lphit-
+              Arrays ausgegeben, dessen Wert am naehesten unter dem Schaden
+              liegt.
+
+              In den Meldungen mess_me (an den Getroffenen), mess_en (an
+              den Feind), mess_room (an die restlichen Umstehenden) koennen
+              Ersatzstrings wie folgt verwendet werden:
+              @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
+              @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
+   - EINFO_DEFEND ------------ Mapping
+              Dieses Mapping liefert erweiterte Informationen zu dem
+              bisherigen Ablauf des aktiven Attacks.
+              Die verfuegbaren Informationen sind in der Manpage zu
+              DefendInfo festgehalten.
+
+   3. Reihenfolgen in Defend
+   - das Living wird angegriffen, wenn
+     - P_NO_ATTACK != 0
+     - 'enemy' existiert und kein netztoter Spieler ist
+   - P_DEFENDERS werden durchgegangen (und eventuell benachrichtigt)
+   - P_TMP_ATTACK_HOOK wird abgefragt
+   - die Ruestungen werden vom Schaden gegebenenfalls abgezogen
+   - magischer Ausweichskill beruecksichtigt
+   - sensitive Objekte werden ggf. benachrichtigt
+   - InternalModifyDefend wird gerufen
+   - Koerperabwehr abgezogen
+   - der Schaden an do_damage()/reduce_hit_points() uebergeben
+   - Flucht ueberpruefen mit CheckWimpyAndFlee()
+
+
+BEMERKUNGEN
+===========
+
+   Ruestungen wirken konventionell nur, wenn mindestens ein Schadensanteil
+   mechanisch ist und es kein Spell oder ein Spell mit SP_PHYSICAL_ATTACK
+   auf 1 ist.
+
+   Defend() beruecksichtigt magische Verteidigungen, die der Spieler bei
+   sich hat, sollte also aus Fairness gegenueber den Objekten anderer
+   Magier immer dem direkten reduce_hit_points() oder do_damage()
+   vorgezogen werden. Mittels der Flags in 'spell' kann man sehr viel
+   aendern.
+
+
+RUECKGABEWERT
+=============
+
+   Hoehe des tatsaechlichen Schadens. Dies kann mehr sein als die
+   Lebenspunkte des Lebewesens.
 
 BEISPIELE (SIEHE AUCH Defend_bsp):
-     // ein simpler Angriff:
-     enem->Defend(100, ({DT_BLUDGEON}), 0, this_object());
+   // ein simpler Angriff: enem->Defend(100, ({DT_BLUDGEON}), 0,
+   this_object());
 
-     // ein magischer Angriff (ohne Treffermeldung):
-     enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), 1, this_object());
+   // ein magischer Angriff (ohne Treffermeldung): enem->Defend(100,
+   ({DT_BLUDGEON, DT_FIRE}), 1, this_object());
 
-     // ein magischer Angriff mit Treffermeldung:
-     enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
-                         this_object());
+   // ein magischer Angriff mit Treffermeldung: enem->Defend(100,
+   ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
 
-SIEHE AUCH:
-     Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
-     Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE,
-                do_damage(L), reduce_hit_points(L)
-     Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L)
-                P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L)
-                P_BODY, A_DEX
-     Daten:     P_LAST_COMBAT_TIME
-                P_LAST_DAMTYPES, P_LAST_DAMTIME, P_LAST_DAMAGE
-                P_DAMAGE_MSG
-     Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
-     Sonstiges: CheckSensitiveAttack(L)
-                InternalModifyDefend(L)
-                UseSkill(L),
-                DefendInfo
+      this_object());
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
+   Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE,
+              do_damage(L), reduce_hit_points(L)
+   Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L)
+              P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L)
+              P_BODY, A_DEX
+   Daten:     P_LAST_COMBAT_TIME
+              P_LAST_DAMTYPES, P_LAST_DAMTIME, P_LAST_DAMAGE
+              P_DAMAGE_MSG
+   Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
+   Sonstiges: CheckSensitiveAttack(L)
+              InternalModifyDefend(L)
+              UseSkill(L),
+              DefendInfo
 
 15.09.2010, Zesstra
diff --git a/doc/lfun/DefendFunc b/doc/lfun/DefendFunc
index 7043e04..1683b3f 100644
--- a/doc/lfun/DefendFunc
+++ b/doc/lfun/DefendFunc
@@ -1,78 +1,107 @@
+
+DefendFunc()
+************
+
+
 DefendFunc(L)
+=============
 
-FUNKTION:
-     int DefendFunc(string|string *dtyp, int|mappingspell, object enemy);
 
-DEFINIERT IN:
-     eigenen Objekten; fuer /std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     dtyp
-          Schadenstypen der Angriffsart.
-          Sollte heute ein string* sein.
-     spell
-          0 bei veralteten konventionellen Angriffen im Regelfall jedoch
-          ein Mapping mit weiteren Infos.
-          Bei einem konventionellen Angriff ist spell[SP_PHYSICAL_ATTACK] gleich
-          1.
-     enemy
-          Der angreifende Gegner
+   int DefendFunc(string|string *dtyp, int|mappingspell, object enemy);
 
-BESCHREIBUNG:
-     Anhand der uebergebenen Parameter kann hier ein Ruestungsbonus (oder
-     auch ein Ruestungsmalus) errechnet werden, der zu dem normalen
-     Ruestungswert (abhaengig von der Angriffsart) hinzuaddiert wird.
 
-RUeCKGABEWERT:
-     Der Ruestungsbonus, der zur Ruestungsklasse addiert werden soll.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
-     zusammen mit der P_AC insgesamt nur in sehr seltenen, wohldurch-
-     dachten Ausnahmefaellen die maximal zulaessige P_AC fuer diesen
-     Ruestungstyp ueberschreiten. In solchen Ausnahmefaellen duerfen
-     die DefendFuncs nicht konstant wirken.
+   eigenen Objekten; fuer /std/armour/combat.c
 
-     Bei aktivem Zurueckschlagen IMMER auf Flags wie SP_RECURSIVE und
-     SP_NO_ACTIVE_DEFENSE pruefen und ggf. abbrechen.
 
-BEISPIELE:
-     Eine Ruestung, die bei Angriffen mit Feuer ihre volle Staerke entfaltet
-     und bei Angriffen durch Geister geschwaecht wird:
+ARGUMENTE
+=========
 
-     void create()
-     {
-       ::create();
+   dtyp
+        Schadenstypen der Angriffsart.
+        Sollte heute ein string* sein.
+   spell
+        0 bei veralteten konventionellen Angriffen im Regelfall jedoch
+        ein Mapping mit weiteren Infos.
+        Bei einem konventionellen Angriff ist spell[SP_PHYSICAL_ATTACK] gleich
+        1.
+   enemy
+        Der angreifende Gegner
 
-       SetProp(P_ARMOUR_TYPE, AT_ARMOUR);
-       SetProp(P_AC, 20);
-       ...
-       // Die DefendFunc() ist in der Ruestung selbst definiert
-       SetProp(P_DEFEND_FUNC, this_object());
-     }
 
-     int DefendFunc(string *dtyp, mixed spell, object enemy)
-     {
-       int prot;
+BESCHREIBUNG
+============
 
-       // Zuerst fragen wir den Angriff durch Feuer ab:
-       if (member(dtyp, DT_FIRE) >= 0)  // Feuer gehoert zu den Schadenstypen
-         prot = 5 + random(10); // Das ergibt maximal 14. Zusammen mit P_AC
-                                // kommt man also maximal auf 14+20 = 34,
-                                // liegt also unter der fuer AT_ARMOUR
-                                // geltenden Obergrenze
+   Anhand der uebergebenen Parameter kann hier ein Ruestungsbonus (oder
+   auch ein Ruestungsmalus) errechnet werden, der zu dem normalen
+   Ruestungswert (abhaengig von der Angriffsart) hinzuaddiert wird.
 
-       // Und jetzt der Geistertest
-       if (enemy->QueryProp(P_RACE) == "Geist" ||
-           enemy->is_class_member(CL_GHOST))
-         prot -= random(10);
 
-       // Der Rueckgabewert wird auf den aus P_AC errechneten Wert draufgeschlagen
-       return prot;
-     }
+RUeCKGABEWERT
+=============
 
-SIEHE AUCH:
-     P_DEFEND_FUNC, QueryDefend(), /std/armour/combat.c
+   Der Ruestungsbonus, der zur Ruestungsklasse addiert werden soll.
 
-----------------------------------------------------------------------------
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
+   zusammen mit der P_AC insgesamt nur in sehr seltenen, wohldurch-
+   dachten Ausnahmefaellen die maximal zulaessige P_AC fuer diesen
+   Ruestungstyp ueberschreiten. In solchen Ausnahmefaellen duerfen
+   die DefendFuncs nicht konstant wirken.
+
+   Bei aktivem Zurueckschlagen IMMER auf Flags wie SP_RECURSIVE und
+   SP_NO_ACTIVE_DEFENSE pruefen und ggf. abbrechen.
+
+
+BEISPIELE
+=========
+
+   Eine Ruestung, die bei Angriffen mit Feuer ihre volle Staerke entfaltet
+   und bei Angriffen durch Geister geschwaecht wird:
+
+   void create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_ARMOUR);
+     SetProp(P_AC, 20);
+     ...
+     // Die DefendFunc() ist in der Ruestung selbst definiert
+     SetProp(P_DEFEND_FUNC, this_object());
+   }
+
+   int DefendFunc(string *dtyp, mixed spell, object enemy)
+   {
+     int prot;
+
+     // Zuerst fragen wir den Angriff durch Feuer ab:
+     if (member(dtyp, DT_FIRE) >= 0)  // Feuer gehoert zu den Schadenstypen
+       prot = 5 + random(10); // Das ergibt maximal 14. Zusammen mit P_AC
+                              // kommt man also maximal auf 14+20 = 34,
+                              // liegt also unter der fuer AT_ARMOUR
+                              // geltenden Obergrenze
+
+     // Und jetzt der Geistertest
+     if (enemy->QueryProp(P_RACE) == "Geist" ||
+         enemy->is_class_member(CL_GHOST))
+       prot -= random(10);
+
+     // Der Rueckgabewert wird auf den aus P_AC errechneten Wert draufgeschlagen
+     return prot;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_DEFEND_FUNC, QueryDefend(), /std/armour/combat.c
+
 Last modified: 18.Jul 2006 Muadib
diff --git a/doc/lfun/DefendInfo b/doc/lfun/DefendInfo
index 460352a..21d41ac 100644
--- a/doc/lfun/DefendInfo
+++ b/doc/lfun/DefendInfo
@@ -1,168 +1,216 @@
-DefendInfo
-FUNKTION:
 
-DEFINIERT IN:
-     /sys/combat.h
+DefendInfo()
+************
 
-ARGUMENTE:
 
-BESCHREIBUNG:
-     Die DefendInformationen werden im Runde eines Attack/Defend Vorgangs 
-     in Attack initial angelegt und dem Defend ueber den Parameter spell
-     uebergeben. Ist dieser Parameter ein Mapping, so sind die 
-     DefendInformationen ueber den Key EINFO_DEFEND zu erhalten.
-     Die Informationen liegen in Form eines Mappings vor.
-     Vor Zugriff sollte immer auf die Existenz dieses Keys in dem Mapping
-     geprueft werden, da nicht alle Informationen immer existieren.
-     Die Keys sind in combat.h definiert und sind folgende:
-     
-    ORIGINAL_AINFO - Mapping 
-        Hier ist eine Kopie des originalen ainfo-mappings des Attacks 
-        vorhanden mit folgenden Eintraegen:
-        Immer vorhandene Eintraege:
-          SI_ENEMY              der angegriffene Gegner
-        
-        Angriff mit gezueckter Waffe:
-          P_WEAPON              das Waffenobjekt selbst
-          P_WEAPON_TYPE         P_WEAPON_TYPE der Waffe
-          P_WC                  P_WC der Waffe
-          P_NR_HANDS            P_NR_HANDS der Waffe
-          SI_SKILLDAMAGE_TYPE   P_DAM_TYPE der Waffe
-          SI_SKILLDAMAGE        waffe->QueryDamage(enemy)
-             bei vorhandenem Zweihandskill SK_TWOHANDED wird nur der durch 
-             den Skill modifizierte Schadenswert uebernommen
-          SI_SKILLDAMAGE_MSG    "mit "+waffe->name(WEM,0)
-          SI_SKILLDAMAGE_MSG2   "mit "+waffe->name(WEM,1)
-          SI_SPELL              0
+FUNKTION
+========
 
-        Angriff mit blossen Haenden:
-          P_WEAPON_TYPE         WT_HANDS
-          P_WC                  P_HANDS[1]
-          SI_SKILLDAMAGE        Schadenswert, aus P_HANDS[1] und A_STR 
-                                berechnet
-          SI_SKILLDAMAGE_TYPE   P_HANDS[2]
-          SI_SKILLDAMAGE_MSG
-          SI_SKILLDAMAGE_MSG2   beides P_HANDS[0]
-          SI_SPELL              0
-          
-        Angriff mit einem Spell (SK_MAGIC_ATTACK):
-          SI_SKILLDAMAGE        Schadenswert des Spells
-          SI_SKILLDAMAGE_TYPE   Schadenstypen des Spells
-          SI_SKILLDAMAGE_MSG    Schadensmeldung des Spells, wenn vorhanden,
-                                sonst "mit magischen Faehigkeiten"
-          SI_SKILLDAMAGE_MSG2   entsprechende Meldung des Spells, wenn 
-                                gesetzt, ansonsten identisch mit 
-                                SI_SKILLDAMAGE_MSG
-          P_WEAPON_TYPE         P_WEAPON_TYPE des Spells, wenn vorhanden,
-                                sonst WT_MAGIC
-          SI_SPELL              SI_SPELL des Spells
-          
-        Hinweise:
-        - Alle Eintraege in diesem Mapping koennen bereits durch
-          InternalModifyAttack() veraendert worden sein.
-        - Die Daten werden mittels deep_copy(ainfo) eingetragen.
-        - Daten in den Eintraegen SI_SKILLDAMAGE* und SI_SPELL koennen bei
-          physikalischen Angriffen durch die Skills FIGHT(P_WEAPON_TYPE) oder
-          SK_FIGHT oder durch einen P_TMP_ATTACK_MOD bzw. Hook vom Typ 
-          H_HOOK_ATTACK_MOD modifiziert worden sein.
-        
-    ORIGINAL_DAM - int
-        Der Originalschaden aus dem Attack
 
-    ORIGINAL_DAM_TYPE - string/string* 
-        Der Originaldamagetyp aus dem Attack
+DEFINIERT IN
+============
 
-    CURRENT_DAM - int
-        Der momentane Schaden, nach schon erfolgten Modifikationen
-  
-    CURRENT_DAM_TYPE - string/string*
-        Der momentane Damagetyp, nach schon erfolgten Modifikationen
-  
-    ENEMY_INSERTED - int
-        0 oder 1 je nachdem ob der Angreifer schon in der enemy-list
-        vorhanden war oder nicht
-  
-    RFR_REDUCE - int 
-        0 oder reduzierter Schaden durch RFR Modifikation
-  
-    PRESENT_DEFENDERS - Array 
-        Liste der durch InformDefend informierten Defender als Objekt.
-        Ein Defender wird immer NACH InformDefend
-        dazugefuegt
-  
-    DEFENDING_DEFENDER - Array ({})
-        Hat ein durch InformDefend ein Defender verteidigt, so wird
-        fuer diesen Defender ein Eintrag in diesem Array vorgenommen,
-        welcher folgende Struktur besitzt.
-                ({
-                        DEF_DEFENDER - Object
-                          Der Verteidiger, welcher VOR
-                          DefendOther eingefuegt wird
-                        DEF_DAM - int
-                          Der veraenderte Schaden, welcher NACH 
-                          DefendOther eingefuegt wird
-                        DEF_DAMTYPE string/string*  
-                          Die veraenderte Schadensart, welche 
-                          NACH DefendOther eingefuegt wird
-                        DEF_SPELL - Mapping   
-                          Das Mapping des veraenderten Spells, welches
-                          als Kopie NACH DefendOther eingefuegt wird
-                })
-  
-    DEFEND_HOOK - Int/Array 
-        DI_NOHOOK, wenn kein Hook da war, DI_HOOKINTERRUPT, wenn der
-        Hook das Defend unterbricht, DI_HOOK, wenn ein Hook vorhanden 
-        ist, dieser das Defend aber unveraendert laesst.
-        Veraendert ein Hook das Defend, so ist hier ein Array zu finden
-        mit den veraenderten Parametern in der Struktur:
-                ({
-                        HOOK_DAM - int
-                           Der veraenderte Schaden
-                        HOOK_DAMTYPE - string/string*   
-                           Die veraenderte Schadensart
-                        HOOK_SPELL - Mapping 
-                           Das Mapping des veraenderten Spells als Kopie
-                })
-  
-    DEFEND_ARMOURS - Mapping (2 Werte pro Key)
-        Liste der beruecksichtigten Ruestungen. Fuer jede Ruestung
-        wird ein Eintrag vorgenommen, mit dem Objekt der jeweiligen
-        Ruestung als Key. Hierbei werden die Ruestungen erst eingetragen,
-        wenn ihr jeweiliges QueryDefend() aufgerufen wird, d.h. es sind nicht
-        von Anfang an alle getragenen Ruestung drin. Jeder Eintrag im Mapping
-        besitzt die folgenden 2 Werte:
-                DEF_ARMOUR_DAM - int 
-                    Der Schaden NACH QueryDefend (vorher 0)
-                DEF_ARMOUR_PROT - int
-                    Verteidigungswert der Ruestung VOR DefendFunc
-        Bsp: Ich will wissen, wie gut 'ruestung' schuetzte:
-             spell[EINFO_DEFEND][DEFEND_ARMOURS][ruestung,DEF_ARMOUR_PROT]
+   /sys/combat.h
 
-    DEFEND_GUILD - Array 
-        Eine Liste mit der Modifikation der Gilde mit der Struktur
-                ({
-                        GUILD_DAM - int
+
+ARGUMENTE
+=========
+
+
+BESCHREIBUNG
+============
+
+    Die DefendInformationen werden im Runde eines Attack/Defend Vorgangs
+    in Attack initial angelegt und dem Defend ueber den Parameter spell
+    uebergeben. Ist dieser Parameter ein Mapping, so sind die
+    DefendInformationen ueber den Key EINFO_DEFEND zu erhalten.
+    Die Informationen liegen in Form eines Mappings vor.
+    Vor Zugriff sollte immer auf die Existenz dieses Keys in dem Mapping
+    geprueft werden, da nicht alle Informationen immer existieren.
+    Die Keys sind in combat.h definiert und sind folgende:
+
+
+
+   ORIGINAL_AINFO - Mapping
+       Hier ist eine Kopie des originalen ainfo-mappings des Attacks
+       vorhanden mit folgenden Eintraegen:
+       Immer vorhandene Eintraege:
+         SI_ENEMY              der angegriffene Gegner
+
+
+
+       Angriff mit gezueckter Waffe:
+         P_WEAPON              das Waffenobjekt selbst
+         P_WEAPON_TYPE         P_WEAPON_TYPE der Waffe
+         P_WC                  P_WC der Waffe
+         P_NR_HANDS            P_NR_HANDS der Waffe
+         SI_SKILLDAMAGE_TYPE   P_DAM_TYPE der Waffe
+         SI_SKILLDAMAGE        waffe->QueryDamage(enemy)
+            bei vorhandenem Zweihandskill SK_TWOHANDED wird nur der durch
+            den Skill modifizierte Schadenswert uebernommen
+         SI_SKILLDAMAGE_MSG    "mit "+waffe->name(WEM,0)
+         SI_SKILLDAMAGE_MSG2   "mit "+waffe->name(WEM,1)
+         SI_SPELL              0
+
+       Angriff mit blossen Haenden:
+         P_WEAPON_TYPE         WT_HANDS
+         P_WC                  P_HANDS[1]
+         SI_SKILLDAMAGE        Schadenswert, aus P_HANDS[1] und A_STR
+                               berechnet
+         SI_SKILLDAMAGE_TYPE   P_HANDS[2]
+         SI_SKILLDAMAGE_MSG
+         SI_SKILLDAMAGE_MSG2   beides P_HANDS[0]
+         SI_SPELL              0
+
+
+
+       Angriff mit einem Spell (SK_MAGIC_ATTACK):
+         SI_SKILLDAMAGE        Schadenswert des Spells
+         SI_SKILLDAMAGE_TYPE   Schadenstypen des Spells
+         SI_SKILLDAMAGE_MSG    Schadensmeldung des Spells, wenn vorhanden,
+                               sonst "mit magischen Faehigkeiten"
+         SI_SKILLDAMAGE_MSG2   entsprechende Meldung des Spells, wenn
+                               gesetzt, ansonsten identisch mit
+                               SI_SKILLDAMAGE_MSG
+         P_WEAPON_TYPE         P_WEAPON_TYPE des Spells, wenn vorhanden,
+                               sonst WT_MAGIC
+         SI_SPELL              SI_SPELL des Spells
+
+
+
+       Hinweise:
+       - Alle Eintraege in diesem Mapping koennen bereits durch
+         InternalModifyAttack() veraendert worden sein.
+       - Die Daten werden mittels deep_copy(ainfo) eingetragen.
+       - Daten in den Eintraegen SI_SKILLDAMAGE* und SI_SPELL koennen bei
+         physikalischen Angriffen durch die Skills FIGHT(P_WEAPON_TYPE) oder
+         SK_FIGHT oder durch einen P_TMP_ATTACK_MOD bzw. Hook vom Typ
+         H_HOOK_ATTACK_MOD modifiziert worden sein.
+
+
+
+   ORIGINAL_DAM - int
+       Der Originalschaden aus dem Attack
+
+   ORIGINAL_DAM_TYPE - string/string*
+       Der Originaldamagetyp aus dem Attack
+
+   CURRENT_DAM - int
+       Der momentane Schaden, nach schon erfolgten Modifikationen
+
+
+
+   CURRENT_DAM_TYPE - string/string*
+       Der momentane Damagetyp, nach schon erfolgten Modifikationen
+
+
+
+   ENEMY_INSERTED - int
+       0 oder 1 je nachdem ob der Angreifer schon in der enemy-list
+       vorhanden war oder nicht
+
+
+
+   RFR_REDUCE - int
+       0 oder reduzierter Schaden durch RFR Modifikation
+
+
+
+   PRESENT_DEFENDERS - Array
+       Liste der durch InformDefend informierten Defender als Objekt.
+       Ein Defender wird immer NACH InformDefend
+       dazugefuegt
+
+
+
+   DEFENDING_DEFENDER - Array ({})
+       Hat ein durch InformDefend ein Defender verteidigt, so wird
+       fuer diesen Defender ein Eintrag in diesem Array vorgenommen,
+       welcher folgende Struktur besitzt.
+               ({
+                       DEF_DEFENDER - Object
+                         Der Verteidiger, welcher VOR
+                         DefendOther eingefuegt wird
+                       DEF_DAM - int
+                         Der veraenderte Schaden, welcher NACH
+                         DefendOther eingefuegt wird
+                       DEF_DAMTYPE string/string*
+                         Die veraenderte Schadensart, welche
+                         NACH DefendOther eingefuegt wird
+                       DEF_SPELL - Mapping
+                         Das Mapping des veraenderten Spells, welches
+                         als Kopie NACH DefendOther eingefuegt wird
+               })
+
+
+
+   DEFEND_HOOK - Int/Array
+       DI_NOHOOK, wenn kein Hook da war, DI_HOOKINTERRUPT, wenn der
+       Hook das Defend unterbricht, DI_HOOK, wenn ein Hook vorhanden
+       ist, dieser das Defend aber unveraendert laesst.
+       Veraendert ein Hook das Defend, so ist hier ein Array zu finden
+       mit den veraenderten Parametern in der Struktur:
+               ({
+                       HOOK_DAM - int
                           Der veraenderte Schaden
-                        GUILD_DAMTYPE - string/string*
+                       HOOK_DAMTYPE - string/string*
                           Die veraenderte Schadensart
-                })
-  
-    DEFEND_RESI - int
-        Schaden nach CheckResistance
-  
-    DEFEND_BODY - int
-        Schaden nach Beruecksichtigung des Bodies (nur
-        physikalisch)
-  
-    DEFEND_LOSTLP - int
-        Tatsaechlich abgezogene LP
-  
-    DEFEND_CUR_ARMOUR_PROT - int
-        Schutz der Ruestung vor Call der
-        DefendFunc. Ist nur in der DefendFunc definiert. Kann auch aus
-        DEFEND_ARMOURS entnommen werden
-     
-SIEHE AUCH:
-     Attack, Defend
+                       HOOK_SPELL - Mapping
+                          Das Mapping des veraenderten Spells als Kopie
+               })
+
+
+
+   DEFEND_ARMOURS - Mapping (2 Werte pro Key)
+       Liste der beruecksichtigten Ruestungen. Fuer jede Ruestung
+       wird ein Eintrag vorgenommen, mit dem Objekt der jeweiligen
+       Ruestung als Key. Hierbei werden die Ruestungen erst eingetragen,
+       wenn ihr jeweiliges QueryDefend() aufgerufen wird, d.h. es sind nicht
+       von Anfang an alle getragenen Ruestung drin. Jeder Eintrag im Mapping
+       besitzt die folgenden 2 Werte:
+               DEF_ARMOUR_DAM - int
+                   Der Schaden NACH QueryDefend (vorher 0)
+               DEF_ARMOUR_PROT - int
+                   Verteidigungswert der Ruestung VOR DefendFunc
+       Bsp: Ich will wissen, wie gut 'ruestung' schuetzte:
+            spell[EINFO_DEFEND][DEFEND_ARMOURS][ruestung,DEF_ARMOUR_PROT]
+
+   DEFEND_GUILD - Array
+       Eine Liste mit der Modifikation der Gilde mit der Struktur
+               ({
+                       GUILD_DAM - int
+                         Der veraenderte Schaden
+                       GUILD_DAMTYPE - string/string*
+                         Die veraenderte Schadensart
+               })
+
+
+
+   DEFEND_RESI - int
+       Schaden nach CheckResistance
+
+
+
+   DEFEND_BODY - int
+       Schaden nach Beruecksichtigung des Bodies (nur
+       physikalisch)
+
+
+
+   DEFEND_LOSTLP - int
+       Tatsaechlich abgezogene LP
+
+
+
+   DEFEND_CUR_ARMOUR_PROT - int
+       Schutz der Ruestung vor Call der
+       DefendFunc. Ist nur in der DefendFunc definiert. Kann auch aus
+       DEFEND_ARMOURS entnommen werden
+
+
+SIEHE AUCH
+==========
+
+   Attack, Defend
 
 18.Jul 2006 Muadib
diff --git a/doc/lfun/DefendOther b/doc/lfun/DefendOther
index a0b2277..f0386f2 100644
--- a/doc/lfun/DefendOther
+++ b/doc/lfun/DefendOther
@@ -1,85 +1,107 @@
+
 DefendOther()
+*************
 
-FUNKTION:
-	mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	dam
-	  Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
-	  verursacht werden soll.
-	dam_type
-	  Der Schadenstyp (oder die Schadenstypen), der beim zu
-	  verteidigenden Lebewesen verursacht werden sollen.
-	spell
-	  Wenn das zu verteidigende Lebewesen mit Spells angegriffen wurde,
-	  so koennte man hier mehr Infos entnehmen.
-	enemy
-	  Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+   mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy);
 
-RUeCKGABEWERT:
-	Array mit den Eintraegen der gegebenenfalls veraenderten
-	uebergebenen Parameter: 
-            (1) dam      [Typ int], 
-            (2) dam_type [Typ string*], 
-            (3) spell    [Typ mapping].
 
-BESCHREIBUNG:
-	Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
-	umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
-	mittels AddDefender() angemeldet wurden und sich der selben Umgebung
-	befinden.
-	Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
-	andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
-	sind, verteidigen sollen.
-	Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
-	von DefendOther() in einen Angriff eingreifen, wobei die
-	Schadensstaerke, der Schadenstyp (die Schadenstypen),
-	Zusatzinformationen fuer Angriffsspells und der Angreifer als
-	Parameter uebergeben werden.
-	Desweiteren ist zu beachten, dass bei als physikalisch markierten
-	Angriffen in einem Team nur Verteidiger aus der ersten Reihe
-	beruecksichtigt werden und dass bei einem Angriff zufaellig aus
-	allen moeglichen Verteidigern ausgewaehlt wird.
-	Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
-	wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
+DEFINIERT IN
+============
 
-BEISPIEL:
-	Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
-	verteidigen, z.B. beschworene Daemonen:
-	  inherit "std/npc";
-	  include <properties.h>
-	  object owner;
-	  void create()
-	  { ::create();
-	    SetProp(P_NAME,"Daemon");
-	    ...
-	  }
-	// nach Clonen des Daemons folgende Funktion mit Beschwoerer als
-	// Parameter aufrufen
-	  Identify(object caster)
-	  { if(!objectp(caster))
-	      call_out(#'remove,0);
-	    owner=caster;
-	    owner->AddDefender(this_object());
-	  }
-	// der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
-	// den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
-	  mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy)
-	  { if(sizeof(dam_type)&&member_array(DT_FIRE,dam_type)!=-1)
-	      dam=0;
-	    return({dam,dam_type,spell});
-	  }
-	Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
-	Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
-	diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
-	uebergeben wird.
+   /std/living/combat.c
 
-SIEHE AUCH:
-	AddDefender(), RemoveDefender(), InformDefend(), Kill(), IsEnemy(),
-	P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   dam
+     Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
+     verursacht werden soll.
+   dam_type
+     Der Schadenstyp (oder die Schadenstypen), der beim zu
+     verteidigenden Lebewesen verursacht werden sollen.
+   spell
+     Wenn das zu verteidigende Lebewesen mit Spells angegriffen wurde,
+     so koennte man hier mehr Infos entnehmen.
+   enemy
+     Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit den Eintraegen der gegebenenfalls veraenderten
+   uebergebenen Parameter:
+       (1) dam      [Typ int],
+       (2) dam_type [Typ string*],
+       (3) spell    [Typ mapping].
+
+
+BESCHREIBUNG
+============
+
+   Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
+   umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
+   mittels AddDefender() angemeldet wurden und sich der selben Umgebung
+   befinden.
+   Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
+   andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
+   sind, verteidigen sollen.
+   Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
+   von DefendOther() in einen Angriff eingreifen, wobei die
+   Schadensstaerke, der Schadenstyp (die Schadenstypen),
+   Zusatzinformationen fuer Angriffsspells und der Angreifer als
+   Parameter uebergeben werden.
+   Desweiteren ist zu beachten, dass bei als physikalisch markierten
+   Angriffen in einem Team nur Verteidiger aus der ersten Reihe
+   beruecksichtigt werden und dass bei einem Angriff zufaellig aus
+   allen moeglichen Verteidigern ausgewaehlt wird.
+   Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
+   wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
+
+
+BEISPIEL
+========
+
+   Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
+   verteidigen, z.B. beschworene Daemonen:
+     inherit "std/npc";
+     include <properties.h>
+     object owner;
+     void create()
+     { ::create();
+       SetProp(P_NAME,"Daemon");
+       ...
+     }
+   // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
+   // Parameter aufrufen
+     Identify(object caster)
+     { if(!objectp(caster))
+         call_out(#'remove,0);
+       owner=caster;
+       owner->AddDefender(this_object());
+     }
+   // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
+   // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
+     mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy)
+     { if(sizeof(dam_type)&&member_array(DT_FIRE,dam_type)!=-1)
+         dam=0;
+       return({dam,dam_type,spell});
+     }
+   Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
+   Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
+   diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
+   uebergeben wird.
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), RemoveDefender(), InformDefend(), Kill(), IsEnemy(),
+   P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
+
 Last modified: Fri Feb 25 14:45:00 2000 by Paracelsus
diff --git a/doc/lfun/Defend_bsp b/doc/lfun/Defend_bsp
index 06458a5..9feb25f 100644
--- a/doc/lfun/Defend_bsp
+++ b/doc/lfun/Defend_bsp
@@ -1,137 +1,155 @@
+
+Defend_bsp()
+************
+
+
 Defend() - BEISPIELE
+====================
 
-FUNKTION:
-     varargs int Defend(int dam, mixed dam_type, mixed spell, object enemy)
 
-BEMERKUNGEN:
-     Die hier aufgefuehrten Komplexbeispiele sind zum Verstaendnis gedacht.
+FUNKTION
+========
 
-BEISPIELE:
-  1) Ein ordinaerer Biss ins Bein.
-     this_player()->Defend(random(500),
-                           ({DT_PIERCE, DT_RIP}),
-                           0,
-                           this_object());
+   varargs int Defend(int dam, mixed dam_type, mixed spell, object enemy)
 
-  2) Ein Biss ins Bein, mit der Hose als 200%ige Ruestung und Rest mit 100%.
-     this_player()->Defend(random(500),
-                           ({DT_PIERCE, DT_RIP}),
-                           ([SP_PHYSICAL_ATTACK: 1,
-                             SP_REDUCE_ARMOUR:   ([AT_TROUSERS: 200])
-                           ]),
-                           this_object());
 
-  3) Der Biss, wenn ein Tier in die Hose gekrochen ist und dieser ohne
-     Treffermeldung und physischen Ruestungsschutz durchgeht.
-     this_player()->Defend(random(500),
-                           ({DT_PIERCE, DT_RIP}),
-                           ([SP_PHYSICAL_ATTACK: 0]),
-                           this_object());
+BEMERKUNGEN
+===========
 
-  4) Spell-Parameter
-     // Beispiel fuer einen Spell, der nur vom Helm normal und von einem
-     // Amulett mit 115% aufgehalten wird, alle anderen (angebenenen)
-     // Ruestungen haben 0% Schutzwirkung.
-     // Mit Ausgabe eigener Meldungen: beginnend mit -1, da der verursachte
-     // Schadenswert minimal 0 wird (fuers Ersetzen: Feind: @WEx2,
-     // Spieler: WEx1); maximal wird er (Empfindlichkeiten jetzt mal aussen
-     // vor) 49 (499/10 = 49), nicht 499!!!
-     this_player()->Defend(
-       random(500),
-       ({DT_PIERCE, DT_AIR}),
-       ([SP_PHYSICAL_ATTACK: 1, // wegen DT_PIERCE
-         SP_REDUCE_ARMOUR:   ([AT_ARMOUR:   0,
-                               AT_HELMET: 100,
-                               AT_RING:     0,
-                               AT_GLOVE:    0,
-                               AT_CLOAK:    0,
-                               AT_BOOT:     0,
-                               AT_TROUSERS: 0,
-                               AT_SHIELD:   0,
-                               AT_AMULET: 115,
-                               AT_MISC:     0,
-                               AT_BELT:     0,
-                               AT_QUIVER:   0])
-         SP_SHOW_DAMAGE:
-               ({({-1,"@WER2 schrammt Dich mit einem durchbohrenden Blick.",
-                      "Du schrammst @WEN1 mit einem durchbohrenden Blick.",
-                      "@WER2 schrammt @WEN1 mit einem durchbohrenden Blick."
-                 }),
-                 ({5,"Der durchbohrende Blick von @WEM2 trifft Dich.",
-                     "Dein durchbohrender Blick trifft @WEN1.",
-                     "Der durchbohrende Blick von @WEM2 trifft @WEN1."
-                 }),
-                 ({20,"@WESSEN2 stechender Blick durchbohrt Dich.",
-                      "Dein stechender Blick durchbohrt @WEN1.",
-                      "@WESSEN2 stechender Blick durchbohrt @WEN1."
-               })})
-       ]),
-       this_object());
+   Die hier aufgefuehrten Komplexbeispiele sind zum Verstaendnis gedacht.
 
-     // Etwas geschickter geht das Ganze, wenn wir einfach aus der Mudlib
-     // alle existierenden Ruestungen in ein Mapping packen und diese
-     // nullen (damit sind wir auch gegen neue Ruestungstypen sicher):
-     mapping amap = map_indices(VALID_ARMOUR_CLASS,#'!);
-     amap[AT_HELMET]=100;
-     amap[AT_AMULET]=115;
 
-     this_player()->Defend(random(500),
-                           ({DT_PIERCE, DT_AIR}),
-                           ([SP_PHYSICAL_ATTACK: 1,
-                             SP_REDUCE_ARMOUR: amap,
-                             SP_SHOW_DAMAGE: ({ ... (siehe oben)
+BEISPIELE
+=========
 
-  5) Der Biss von weiter oben mit Meldung.
-     // Eine Meldung, die nur ausgegeben wird, wenn der Biss auch mindestens
-     // einen LP abzieht.
-     this_player()->Defend(random(500),
-                           ({DT_PIERCE, DT_RIP}),
-                           ([SP_PHYSICAL_ATTACK: 1,
-                             SP_REDUCE_ARMOUR:   ([AT_TROUSERS: 200]),
-                             SP_SHOW_DAMAGE: ({
-                               ({1,"@WER2 beisst Dich ins Bein!",
-                                   "Du beisst @WEN1 ins Bein!",
-                                   "@WER2 beisst @WEN1 ins Bein!"
-                                })           })
-                           ]),
-                           this_object());
+   1) Ein ordinaerer Biss ins Bein.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            0,
+                            this_object());
 
-  6) DefendFunc() und Defend() in einem Objekt
-     6a)
-     // eine Luftangriffe reflektierende Ruestung:
-     int DefendFunc(string *dtyp, mixed spell, object enemy) {
-       if(member(dtyp, DT_AIR)>=0 && !spell[SP_RECURSIVE])
-         enemy->Defend(random(200),
-                       ({DT_AIR}),
-                       ([SP_RECURSIVE: 1,
-                         SP_SHOW_DAMAGE:
-                         ({"Ein Luftwirbel erfasst auch Dich.",
-                           "Deine Ruestung wirbelt @WEN1 herum.",
-                           "@WESSEN2 Ruestung wirbelt @WEN1 herum."
-                          })
-                       ]),
-                       QueryProp(P_WORN));
+   2) Ein Biss ins Bein, mit der Hose als 200%ige Ruestung und Rest mit 100%.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            ([SP_PHYSICAL_ATTACK: 1,
+                              SP_REDUCE_ARMOUR:   ([AT_TROUSERS: 200])
+                            ]),
+                            this_object());
 
-       return 0; // -> In diesem Fall gibts keinen Ruestungsbonus!
-     }
+   3) Der Biss, wenn ein Tier in die Hose gekrochen ist und dieser ohne
+      Treffermeldung und physischen Ruestungsschutz durchgeht.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            ([SP_PHYSICAL_ATTACK: 0]),
+                            this_object());
 
-     6b)
-     // Eine NUR REINE Luftangriffe reflektierende Ruestung:
-     int DefendFunc(string *dtyp, mixed spell, object enemy) {
-       if(!sizeof(dtyp-({DT_AIR})) && !spell[SP_RECURSIVE])
-         ...
+   4) Spell-Parameter
+      // Beispiel fuer einen Spell, der nur vom Helm normal und von einem
+      // Amulett mit 115% aufgehalten wird, alle anderen (angebenenen)
+      // Ruestungen haben 0% Schutzwirkung.
+      // Mit Ausgabe eigener Meldungen: beginnend mit -1, da der verursachte
+      // Schadenswert minimal 0 wird (fuers Ersetzen: Feind: @WEx2,
+      // Spieler: WEx1); maximal wird er (Empfindlichkeiten jetzt mal aussen
+      // vor) 49 (499/10 = 49), nicht 499!!!
+      this_player()->Defend(
+        random(500),
+        ({DT_PIERCE, DT_AIR}),
+        ([SP_PHYSICAL_ATTACK: 1, // wegen DT_PIERCE
+          SP_REDUCE_ARMOUR:   ([AT_ARMOUR:   0,
+                                AT_HELMET: 100,
+                                AT_RING:     0,
+                                AT_GLOVE:    0,
+                                AT_CLOAK:    0,
+                                AT_BOOT:     0,
+                                AT_TROUSERS: 0,
+                                AT_SHIELD:   0,
+                                AT_AMULET: 115,
+                                AT_MISC:     0,
+                                AT_BELT:     0,
+                                AT_QUIVER:   0])
+          SP_SHOW_DAMAGE:
+                ({({-1,"@WER2 schrammt Dich mit einem durchbohrenden Blick.",
+                       "Du schrammst @WEN1 mit einem durchbohrenden Blick.",
+                       "@WER2 schrammt @WEN1 mit einem durchbohrenden Blick."
+                  }),
+                  ({5,"Der durchbohrende Blick von @WEM2 trifft Dich.",
+                      "Dein durchbohrender Blick trifft @WEN1.",
+                      "Der durchbohrende Blick von @WEM2 trifft @WEN1."
+                  }),
+                  ({20,"@WESSEN2 stechender Blick durchbohrt Dich.",
+                       "Dein stechender Blick durchbohrt @WEN1.",
+                       "@WESSEN2 stechender Blick durchbohrt @WEN1."
+                })})
+        ]),
+        this_object());
 
-SIEHE AUCH:
-     Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
-     Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE, do_damage(L),
-                reduce_hit_points(L), reduce_spell_points(L)
-     Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L),
-                P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L),
-                P_BODY, A_DEX, Defend(L)
-     Daten:     P_LAST_COMBAT_TIME, P_LAST_XP, P_LAST_DAMAGE,
-                P_LAST_DAMTYPES, P_LAST_DAMTIME
-     Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
-     Sonstiges: CheckSensitiveAttack(L), UseSkill(L),
-                InternalModifyDefend(L)
+      // Etwas geschickter geht das Ganze, wenn wir einfach aus der Mudlib
+      // alle existierenden Ruestungen in ein Mapping packen und diese
+      // nullen (damit sind wir auch gegen neue Ruestungstypen sicher):
+      mapping amap = map_indices(VALID_ARMOUR_CLASS,#'!);
+      amap[AT_HELMET]=100;
+      amap[AT_AMULET]=115;
+
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_AIR}),
+                            ([SP_PHYSICAL_ATTACK: 1,
+                              SP_REDUCE_ARMOUR: amap,
+                              SP_SHOW_DAMAGE: ({ ... (siehe oben)
+
+   5) Der Biss von weiter oben mit Meldung.
+      // Eine Meldung, die nur ausgegeben wird, wenn der Biss auch mindestens
+      // einen LP abzieht.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            ([SP_PHYSICAL_ATTACK: 1,
+                              SP_REDUCE_ARMOUR:   ([AT_TROUSERS: 200]),
+                              SP_SHOW_DAMAGE: ({
+                                ({1,"@WER2 beisst Dich ins Bein!",
+                                    "Du beisst @WEN1 ins Bein!",
+                                    "@WER2 beisst @WEN1 ins Bein!"
+                                 })           })
+                            ]),
+                            this_object());
+
+   6) DefendFunc() und Defend() in einem Objekt
+      6a)
+      // eine Luftangriffe reflektierende Ruestung:
+      int DefendFunc(string *dtyp, mixed spell, object enemy) {
+        if(member(dtyp, DT_AIR)>=0 && !spell[SP_RECURSIVE])
+          enemy->Defend(random(200),
+                        ({DT_AIR}),
+                        ([SP_RECURSIVE: 1,
+                          SP_SHOW_DAMAGE:
+                          ({"Ein Luftwirbel erfasst auch Dich.",
+                            "Deine Ruestung wirbelt @WEN1 herum.",
+                            "@WESSEN2 Ruestung wirbelt @WEN1 herum."
+                           })
+                        ]),
+                        QueryProp(P_WORN));
+
+        return 0; // -> In diesem Fall gibts keinen Ruestungsbonus!
+      }
+
+      6b)
+      // Eine NUR REINE Luftangriffe reflektierende Ruestung:
+      int DefendFunc(string *dtyp, mixed spell, object enemy) {
+        if(!sizeof(dtyp-({DT_AIR})) && !spell[SP_RECURSIVE])
+          ...
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
+   Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE, do_damage(L),
+              reduce_hit_points(L), reduce_spell_points(L)
+   Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L),
+              P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L),
+              P_BODY, A_DEX, Defend(L)
+   Daten:     P_LAST_COMBAT_TIME, P_LAST_XP, P_LAST_DAMAGE,
+              P_LAST_DAMTYPES, P_LAST_DAMTIME
+   Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
+   Sonstiges: CheckSensitiveAttack(L), UseSkill(L),
+              InternalModifyDefend(L)
 
 25. Mai 2011 Gabylon
diff --git a/doc/lfun/DeleteSpellFatigue b/doc/lfun/DeleteSpellFatigue
index c0049d9..f01755b 100644
--- a/doc/lfun/DeleteSpellFatigue
+++ b/doc/lfun/DeleteSpellFatigue
@@ -1,37 +1,55 @@
-DeleteSpellFatigue
 
-FUNKTION:
-    public void DeleteSpellFatigue(string key)
+DeleteSpellFatigue()
+********************
 
-DEFINIERT IN:
-    /std/living/skills.c
-    /std/player/skills.c
-    /sys/living/skills.h
 
-ARGUMENTE:
-    string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
-                  oder 0 fuer die globale Spruchermuedung.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion dient zum Loeschen von individuellen Spruchermuedungen
-    (Spellfatigue, Spruchsperren).
+   public void DeleteSpellFatigue(string key)
 
-    Ist <key> 0, wird die globale Spruchsperre geloescht (identisch zu der
-    Property P_NEXT_SPELL_TIME), anderenfalls die unter <key> gespeicherte
-    Spruchermuedung.
-    Loescht man einen Eintrag 0 ist das Ergebnis dieser Funktion identisch zum
-    Loeschen/Nullen von P_NEXT_SPELL_TIME.
 
-BEMERKUNGEN:
-    Spruchsperren (insb. fremde) duerfen nicht ohne weiteres geloescht oder
-    geaendert werden. Dieses bedarf grundsaetzlich der Genehmigung durch die
-    Gildenbalance!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    SetSpellFatigue(L), CheckSpellFatigue(L)
-    P_NEXT_SPELL_TIME
-    spruchermuedung
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Loeschen von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+
+   Ist <key> 0, wird die globale Spruchsperre geloescht (identisch zu der
+   Property P_NEXT_SPELL_TIME), anderenfalls die unter <key> gespeicherte
+   Spruchermuedung.
+   Loescht man einen Eintrag 0 ist das Ergebnis dieser Funktion identisch zum
+   Loeschen/Nullen von P_NEXT_SPELL_TIME.
+
+
+BEMERKUNGEN
+===========
+
+   Spruchsperren (insb. fremde) duerfen nicht ohne weiteres geloescht oder
+   geaendert werden. Dieses bedarf grundsaetzlich der Genehmigung durch die
+   Gildenbalance!
+
+
+SIEHE AUCH
+==========
+
+   SetSpellFatigue(L), CheckSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
 27.03.2010, Zesstra
-
diff --git a/doc/lfun/DeleteTimedAttrModifier b/doc/lfun/DeleteTimedAttrModifier
index 069aa90..2d1bd1e 100644
--- a/doc/lfun/DeleteTimedAttrModifier
+++ b/doc/lfun/DeleteTimedAttrModifier
@@ -1,30 +1,53 @@
+
 DeleteTimedAttrModifier()
-FUNKTION:
-     int DeleteTimedAttrModifier(string key)
+*************************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     key	-	aus P_TIMED_ATTR_MOD zu loeschender Eintrag
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der zu key gehoerende Eintrag in P_TIMED_ATTR_MOD wird geloescht und
-     update_max_sp_and_hp ausgefuehrt.
-
-RUeCKGABEWERT:
-     TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments 
-     TATTR_NO_SUCH_MODIFIER  -     Falls der Modifier mit diesem Key nicht
-                                   existiert
-     TATTR_OK                -     Im Erfolgsfall
-     
-     Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
-    
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+   int DeleteTimedAttrModifier(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       aus P_TIMED_ATTR_MOD zu loeschender Eintrag
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag in P_TIMED_ATTR_MOD wird geloescht und
+   update_max_sp_and_hp ausgefuehrt.
+
+
+RUeCKGABEWERT
+=============
+
+   TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments
+   TATTR_NO_SUCH_MODIFIER  -     Falls der Modifier mit diesem Key nicht
+                                 existiert
+   TATTR_OK                -     Im Erfolgsfall
+
+
+
+   Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/DiscoverDoor b/doc/lfun/DiscoverDoor
index 88310d5..9046a0e 100644
--- a/doc/lfun/DiscoverDoor
+++ b/doc/lfun/DiscoverDoor
@@ -1,31 +1,54 @@
+
 DiscoverDoor()
+**************
 
-FUNKTION:
-    varargs int DiscoverDoor(string dname)
 
-ARGUMENTE:
-    dname: Name des Raumes, in dem der Seher das Sehertor kennenlernen soll.
-           Default: Die Umgebung des Sehers.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Nachdem diese Funktion aufgerufen wurde, kann der Seher (this_player())
-    das Tor in dem angegebenen Raum immer verwenden.
+   varargs int DiscoverDoor(string dname)
 
-RUECKGABEWERT:
-    1, falls der Seher ein NEUES Tor kennengelernt hat
-    0, falls er das Tor schon kannte oder kein Seher war
 
-BEMERKUNGEN:
-    Von einem Sehertor wird diese Funktion automatisch beim Betreten des
-    umgebenden Raumes aufgerufen, falls P_SEERDOOR_DISCOVER gesetzt ist. Wenn
-    ein Tor auf diese Art nicht entdeckt werden soll, so darf
-    P_SEERDOOR_DISCOVER nicht gesetzt sein und muss DiscoverDoor() separat,
-    z.B. von einem Questobjekt, aufgerufen werden.
-    Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+ARGUMENTE
+=========
 
-BEISPIELE:
-    write("Der Zauberer sagt: Im Nichts wirst Du ein weiteres Tor finden!\n");
-    "/d/seher/portale/sehertormaster"->DiscoverDoor("/room/void");
+   dname: Name des Raumes, in dem der Seher das Sehertor kennenlernen soll.
+          Default: Die Umgebung des Sehers.
 
-SIEHE AUCH:
-    DoorIsKnown, ShowDoors, Teleport, GetDoorsMapping
+
+BESCHREIBUNG
+============
+
+   Nachdem diese Funktion aufgerufen wurde, kann der Seher (this_player())
+   das Tor in dem angegebenen Raum immer verwenden.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls der Seher ein NEUES Tor kennengelernt hat
+   0, falls er das Tor schon kannte oder kein Seher war
+
+
+BEMERKUNGEN
+===========
+
+   Von einem Sehertor wird diese Funktion automatisch beim Betreten des
+   umgebenden Raumes aufgerufen, falls P_SEERDOOR_DISCOVER gesetzt ist. Wenn
+   ein Tor auf diese Art nicht entdeckt werden soll, so darf
+   P_SEERDOOR_DISCOVER nicht gesetzt sein und muss DiscoverDoor() separat,
+   z.B. von einem Questobjekt, aufgerufen werden.
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   write("Der Zauberer sagt: Im Nichts wirst Du ein weiteres Tor finden!\n");
+   "/d/seher/portale/sehertormaster"->DiscoverDoor("/room/void");
+
+
+SIEHE AUCH
+==========
+
+   DoorIsKnown, ShowDoors, Teleport, GetDoorsMapping
diff --git a/doc/lfun/DistributeExp b/doc/lfun/DistributeExp
index 294eebe..e29427d 100644
--- a/doc/lfun/DistributeExp
+++ b/doc/lfun/DistributeExp
@@ -1,24 +1,42 @@
-DistributeExp()
-FUNKTION:
-     private void DistributeExp(object enemy, int exp_to_give)
-
-DEFINIERT IN:
-     /std/living/life.c
-
-ARGUMENTE:
-     object enemy     - toetender Feind
-     int exp_to_give  - zu verteilende XP (== P_XP/100)
-
-BESCHREIBUNG:
-     Das sterbende Wesen verteilt seine XP an seine Feinde.
-
-     Dabei bekommt jeder Gegner seinen Anteil (abhaengig von 50% von seinem
-     gemachten Schaden) und einen Teamanteil (die anderen 50% ueber das
-     gesamte Team addiert und durch die Teamanzahl geteilt).
-
-SIEHE AUCH:
-     Funktionen:  AddExp()
-     Properties:  P_XP
-     Sonstiges:   teamkampf
-
-Letzte Aenderung: 22.12.2016, Bugfix
+
+DistributeExp()
+***************
+
+
+FUNKTION
+========
+
+   private void DistributeExp(object enemy, int exp_to_give)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   object enemy     - toetender Feind
+   int exp_to_give  - zu verteilende XP (== P_XP/100)
+
+
+BESCHREIBUNG
+============
+
+   Das sterbende Wesen verteilt seine XP an seine Feinde.
+
+   Dabei bekommt jeder Gegner seinen Anteil (abhaengig von 50% von seinem
+   gemachten Schaden) und einen Teamanteil (die anderen 50% ueber das
+   gesamte Team addiert und durch die Teamanzahl geteilt).
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp()
+   Properties:  P_XP
+   Sonstiges:   teamkampf
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/DoDecay b/doc/lfun/DoDecay
index 85cf541..695856a 100644
--- a/doc/lfun/DoDecay
+++ b/doc/lfun/DoDecay
@@ -1,44 +1,69 @@
+
 DoDecay()
+*********
 
-FUNKTION:
-      public  int    DoDecay(int silent) 
 
-DEFINIERT IN:
-      /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent (int)
-       Falls != 0, erfolgt beim Zerfall keine Meldung, d.h. doDecayMessaage()
-       wird nicht gerufen.
+   public  int    DoDecay(int silent)
 
-RUeCKGABEWERT:
-     Die Funktion gibt die nach dem Zerfall noch uebrig gebliebene Menge
-     zurueck (int).
 
-BESCHREIBUNG:
-     Diese Funktion wird in Clones von Unitobjekten aus der Blueprint gerufen,
-     wenn ein Zerfallsintervall abgelaufen ist (natuerlich nur, wenn in der BP
-     der Zerfall konfiguriert ist).
-     Die Funktion prueft normalerweise via P_UNIT_DECAY_FLAGS, ob der Zerfall
-     stattfinden soll, bestimmt aus P_UNIT_DECAY_QUOTA die zu zerfallende
-     Menge, ruft DoDecayMessage() und reduziert P_AMOUNT.
-     
-     Sie kann auch von Hand gerufen werden, um einen Zerfall auszuloesen, auch
-     wenn mir gerade nicht einfaellt, in welchen Situationen das sinnvoll
-     waere (vielleicht als Spruchmisserfolg. *g*)
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn man einen anderen Zerfallsmechanismus haben, will muss man diese
-     Funktion wohl ueberschreiben. In fast allen Faellen sollte dies jedoch
-     unnoetig sein. Hat jemand das Verlangen, diese Funktion zu
-     ueberschreiben, ist vielleicht vorher eine Diskussion mit dem Mudlib-EM
-     angebracht.
+   /std/unit.c
 
-SIEHE AUCH:
-     unit
-     P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
-     P_UNIT_DECAY_MIN
-     DoDecayMessage()
-     /std/unit.c
+
+ARGUMENTE
+=========
+
+   silent (int)
+     Falls != 0, erfolgt beim Zerfall keine Meldung, d.h. doDecayMessaage()
+     wird nicht gerufen.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Funktion gibt die nach dem Zerfall noch uebrig gebliebene Menge
+   zurueck (int).
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in Clones von Unitobjekten aus der Blueprint gerufen,
+   wenn ein Zerfallsintervall abgelaufen ist (natuerlich nur, wenn in der BP
+   der Zerfall konfiguriert ist).
+   Die Funktion prueft normalerweise via P_UNIT_DECAY_FLAGS, ob der Zerfall
+   stattfinden soll, bestimmt aus P_UNIT_DECAY_QUOTA die zu zerfallende
+   Menge, ruft DoDecayMessage() und reduziert P_AMOUNT.
+
+
+
+   Sie kann auch von Hand gerufen werden, um einen Zerfall auszuloesen, auch
+   wenn mir gerade nicht einfaellt, in welchen Situationen das sinnvoll
+   waere (vielleicht als Spruchmisserfolg. *g*)
+
+
+BEMERKUNGEN
+===========
+
+   Wenn man einen anderen Zerfallsmechanismus haben, will muss man diese
+   Funktion wohl ueberschreiben. In fast allen Faellen sollte dies jedoch
+   unnoetig sein. Hat jemand das Verlangen, diese Funktion zu
+   ueberschreiben, ist vielleicht vorher eine Diskussion mit dem Mudlib-EM
+   angebracht.
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
+   P_UNIT_DECAY_MIN
+   DoDecayMessage()
+   /std/unit.c
 
 14.10.2007, Zesstra
diff --git a/doc/lfun/DoDecayMessage b/doc/lfun/DoDecayMessage
index fc39309..671f9c7 100644
--- a/doc/lfun/DoDecayMessage
+++ b/doc/lfun/DoDecayMessage
@@ -1,34 +1,54 @@
+
 DoDecayMessage()
+****************
 
-FUNKTION:
-      protected void DoDecayMessage(int oldamount, int zerfall);
-      
-DEFINIERT IN:
-      /std/unit.c
 
-ARGUMENTE:
-     oldamount (int)
-        Menge vor dem Zerfall
-     zerfall (int)
-        jetzt zerfallende Menge
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird von DoDecay() gerufen und gibt die Standardmeldungen
-     beim Zerfall von Unitobjekten aus.
-     Hierbei ist an der Unit noch alles unveraendert, wenn diese Funktion
-     gerufen wird, die Reduktion von P_AMOUNT erfolgt direkt im Anschluss.
-     Die Funktion wird nicht gerufen, wenn DoDecay() mit silent!=0 gerufen
-     wird.
+   protected void DoDecayMessage(int oldamount, int zerfall);
 
-BEMERKUNGEN:
-     Will man nicht die Standardzerfallsmeldungen (wovon ich meist ausgehe),
-     kann man diese Funktion ueberschreiben und eigene Meldungen erzeugen.
 
-SIEHE AUCH:
-     unit
-     P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
-     P_UNIT_DECAY_MIN
-     DoDecay()
-     /std/unit.c
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   oldamount (int)
+      Menge vor dem Zerfall
+   zerfall (int)
+      jetzt zerfallende Menge
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von DoDecay() gerufen und gibt die Standardmeldungen
+   beim Zerfall von Unitobjekten aus.
+   Hierbei ist an der Unit noch alles unveraendert, wenn diese Funktion
+   gerufen wird, die Reduktion von P_AMOUNT erfolgt direkt im Anschluss.
+   Die Funktion wird nicht gerufen, wenn DoDecay() mit silent!=0 gerufen
+   wird.
+
+
+BEMERKUNGEN
+===========
+
+   Will man nicht die Standardzerfallsmeldungen (wovon ich meist ausgehe),
+   kann man diese Funktion ueberschreiben und eigene Meldungen erzeugen.
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
+   P_UNIT_DECAY_MIN
+   DoDecay()
+   /std/unit.c
 
 14.10.2007, Zesstra
diff --git a/doc/lfun/DoUnwear b/doc/lfun/DoUnwear
index 638eda7..56e53d3 100644
--- a/doc/lfun/DoUnwear
+++ b/doc/lfun/DoUnwear
@@ -1,33 +1,55 @@
+
 DoUnwear()
+**********
 
-FUNKTION:
-     varargs int DoUnwear(int silent, int all);
 
-DEFINIERT IN:
-     /std/clothing/wear.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent
-          Falls ungleich 0, so werden keine Meldungen ausgegeben.
-          Falls (silent&M_NOCHECK) werden auch verfluchte Ruestungen
-          ausgezogen
-     all
-          Ungleich 0, wenn DoUnwear() aus einem "ziehe alles aus" heraus
-          aufgerufen wurde.
+   varargs int DoUnwear(int silent, int all);
 
-BESCHREIBUNG:
-     Es wird versucht, die Ruestung auszuziehen. Dabei werden eine eventuell
-     vorhandene RemoveFunc() und Flueche mit beruecksichtigt.
 
-RUeCKGABEWERT:
-     0, wenn die Ruestung gar nicht getragen war, ansonsten 1.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
-     Ruestung erfolgreich ausgezogen wurde!
+   /std/clothing/wear.c
 
-SIEHE AUCH:
-     DoWear(), RemoveFunc(), InformUnwear(), /std/armour/combat.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   silent
+        Falls ungleich 0, so werden keine Meldungen ausgegeben.
+        Falls (silent&M_NOCHECK) werden auch verfluchte Ruestungen
+        ausgezogen
+   all
+        Ungleich 0, wenn DoUnwear() aus einem "ziehe alles aus" heraus
+        aufgerufen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Ruestung auszuziehen. Dabei werden eine eventuell
+   vorhandene RemoveFunc() und Flueche mit beruecksichtigt.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn die Ruestung gar nicht getragen war, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
+   Ruestung erfolgreich ausgezogen wurde!
+
+
+SIEHE AUCH
+==========
+
+   DoWear(), RemoveFunc(), InformUnwear(), /std/armour/combat.c
+
 Last modified: Sun Jun 27 22:22:00 1999 by Paracelsus
diff --git a/doc/lfun/DoUnwield b/doc/lfun/DoUnwield
index f33e5f0..d003bfc 100644
--- a/doc/lfun/DoUnwield
+++ b/doc/lfun/DoUnwield
@@ -1,32 +1,54 @@
+
 DoUnwield()
+***********
 
-FUNKTION:
-     varargs int DoUnwield(int silent);
 
-DEFINIERT IN:
-     /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent
-          Ungleich 0, wenn die Waffe ohne Meldungen weggesteckt werden soll.
-          Wenn silent&M_NOCHECK wird die Waffe auch weggesteckt wenn sie
-          verflucht ist und UnwieldFunc() wird nicht ausgewertet.
+   varargs int DoUnwield(int silent);
 
-BESCHREIBUNG:
-     Es wird versucht, die Waffe wegzustecken.
 
-RUeCKGABEWERT:
-     0, wenn die Waffe gar nicht gezueckt war, ansonsten 1.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Anhand des Rueckgabewertes laesst sich nicht ersehen, ob die Waffe sich
-     wegstecken liess oder nicht!
+   /std/weapon/combat.c
 
-     Wenn die Waffe verflucht ist oder (falls definiert) UnwieldFunc() 0
-     zurueckgibt, laesst sie sich nicht wegstecken.
 
-SIEHE AUCH:
-     UnwieldFunc(), InformUnwield(), /std/weapon.c
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   silent
+        Ungleich 0, wenn die Waffe ohne Meldungen weggesteckt werden soll.
+        Wenn silent&M_NOCHECK wird die Waffe auch weggesteckt wenn sie
+        verflucht ist und UnwieldFunc() wird nicht ausgewertet.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Waffe wegzustecken.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn die Waffe gar nicht gezueckt war, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Anhand des Rueckgabewertes laesst sich nicht ersehen, ob die Waffe sich
+   wegstecken liess oder nicht!
+
+   Wenn die Waffe verflucht ist oder (falls definiert) UnwieldFunc() 0
+   zurueckgibt, laesst sie sich nicht wegstecken.
+
+
+SIEHE AUCH
+==========
+
+   UnwieldFunc(), InformUnwield(), /std/weapon.c
+
 Letzte Aenderung: 18.11.2016, Bugfix
diff --git a/doc/lfun/DoWear b/doc/lfun/DoWear
index 0d64e5a..e253290 100644
--- a/doc/lfun/DoWear
+++ b/doc/lfun/DoWear
@@ -1,42 +1,64 @@
+
 DoWear()
+********
 
-FUNKTION:
-     varargs int DoWear(int silent, int all);
 
-DEFINIERT IN:
-     /std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent
-          Falls ungleich 0, so werden keine Meldungen ausgegeben.
-     all
-          Ungleich 0, wenn DoWear() aus einem "ziehe alles an" heraus
-          aufgerufen wurde.
+   varargs int DoWear(int silent, int all);
 
-BESCHREIBUNG:
-     Es wird versucht, die Ruestung anzuziehen. Dabei wird eine eventuell
-     vorhandene WearFunc() mit beruecksichtigt.
 
-RUeCKGABEWERT:
-     0, wenn man die Ruestung gar nicht bei sich hat oder sie schon an hat,
-     ansonsten 1.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
-     Ruestung erfolgreich angezogen wurde!
+   /std/armour/combat.c
 
-     Gruende fuer ein Fehlschlagen des Anziehens koennen sein:
-        o Man hat die Ruestung nicht bei sich.
-        o Man hat die Ruestung schon an.
-        o Man hat schon eine Ruestung des gleichen Typs an.
-        o Der Typ der Ruestung oder die Ruestungsklasse ist illegal.
-        o Falls definiert: WearFunc() gab 0 zurueck.
-        o Falls es sich um einen Schild handelt: Man hat keine Hand mehr
-          frei.
 
-SIEHE AUCH:
-     DoUnwear(), WearFunc(), InformWear(), P_EQUIP_TIME, 
-     /std/armour/combat.c, P_UNWEAR_MSG, P_WEAR_MSG
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   silent
+        Falls ungleich 0, so werden keine Meldungen ausgegeben.
+   all
+        Ungleich 0, wenn DoWear() aus einem "ziehe alles an" heraus
+        aufgerufen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Ruestung anzuziehen. Dabei wird eine eventuell
+   vorhandene WearFunc() mit beruecksichtigt.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn man die Ruestung gar nicht bei sich hat oder sie schon an hat,
+   ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
+   Ruestung erfolgreich angezogen wurde!
+
+   Gruende fuer ein Fehlschlagen des Anziehens koennen sein:
+      o Man hat die Ruestung nicht bei sich.
+      o Man hat die Ruestung schon an.
+      o Man hat schon eine Ruestung des gleichen Typs an.
+      o Der Typ der Ruestung oder die Ruestungsklasse ist illegal.
+      o Falls definiert: WearFunc() gab 0 zurueck.
+      o Falls es sich um einen Schild handelt: Man hat keine Hand mehr
+        frei.
+
+
+SIEHE AUCH
+==========
+
+   DoUnwear(), WearFunc(), InformWear(), P_EQUIP_TIME,
+   /std/armour/combat.c, P_UNWEAR_MSG, P_WEAR_MSG
+
 Last modified: Sun Jun 27 22:22:00 1999 by Paracelsus
diff --git a/doc/lfun/DoWield b/doc/lfun/DoWield
index 9fc436d..6e6c06c 100644
--- a/doc/lfun/DoWield
+++ b/doc/lfun/DoWield
@@ -1,41 +1,63 @@
+
 DoWield()
+*********
 
-FUNKTION:
-     varargs int DoWield(int silent);
 
-DEFINIERT IN:
-     /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent
-          Ungleich 0, wenn die Waffe ohne Meldungen gezueckt werden soll.
+   varargs int DoWield(int silent);
 
-BESCHREIBUNG:
-     Es wird versucht, die Waffe zu zuecken. Hat man schon eine Waffe
-     gezueckt, so wird versucht, diese wegzustecken. Klappt das nicht, kann
-     die Waffe nicht gezueckt werden.
 
-RUeCKGABEWERT:
-     0, wenn man die Waffe gar nicht bei sich traegt, ansonsten 1.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Anhand des Rueckgabewertes laesst sich nicht entscheiden, ob die Waffe
-     sich erfolgreich zuecken liess!
+   /std/weapon/combat.c
 
-     Gruende, warum sich eine Waffe nicht zuecken lassen kann, sind
-     folgende:
-        o Man traegt sie nicht bei sich (oder sie steckt in einem Beutel
-          o.ae.).
-        o Man hat sie schon gezueckt.
-        o Falls definiert: WieldFunc() gibt 0 zurueck.
-        o Man ist nicht geschickt genug (das haengt von der Waffenklasse
-          ab).
-        o Eine schon gezueckte Waffe laesst sich nicht wegstecken.
-        o Die Waffenklasse ist hoeher als erlaubt.
-        o Man hat nicht genug Haende frei.
 
-SIEHE AUCH:
-     WieldFunc(), InformWield(), P_EQUIP_TIME, /std/weapon.c
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   silent
+        Ungleich 0, wenn die Waffe ohne Meldungen gezueckt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Waffe zu zuecken. Hat man schon eine Waffe
+   gezueckt, so wird versucht, diese wegzustecken. Klappt das nicht, kann
+   die Waffe nicht gezueckt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn man die Waffe gar nicht bei sich traegt, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Anhand des Rueckgabewertes laesst sich nicht entscheiden, ob die Waffe
+   sich erfolgreich zuecken liess!
+
+   Gruende, warum sich eine Waffe nicht zuecken lassen kann, sind
+   folgende:
+      o Man traegt sie nicht bei sich (oder sie steckt in einem Beutel
+        o.ae.).
+      o Man hat sie schon gezueckt.
+      o Falls definiert: WieldFunc() gibt 0 zurueck.
+      o Man ist nicht geschickt genug (das haengt von der Waffenklasse
+        ab).
+      o Eine schon gezueckte Waffe laesst sich nicht wegstecken.
+      o Die Waffenklasse ist hoeher als erlaubt.
+      o Man hat nicht genug Haende frei.
+
+
+SIEHE AUCH
+==========
+
+   WieldFunc(), InformWield(), P_EQUIP_TIME, /std/weapon.c
+
 Last modified: Wed Apr 08 10:25:00 2004 by Muadib
diff --git a/doc/lfun/DoorIsKnown b/doc/lfun/DoorIsKnown
index b909e30..b799698 100644
--- a/doc/lfun/DoorIsKnown
+++ b/doc/lfun/DoorIsKnown
@@ -1,24 +1,46 @@
+
 DoorIsKnown()
+*************
 
-FUNKTION:
-	int DoorIsKnown()
 
-ARGUMENTE:
-	Keine.
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Testet, ob der Seher (this_player()) das Tor in seiner momentanen
-	Umgebung schon kennt.
+   int DoorIsKnown()
 
-RUECKGABEWERT:
-	Die Nummer des Tores.
 
-BEMERKUNGEN:
-    Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+ARGUMENTE
+=========
 
-BEISPIELE:
-    /d/seher/portale/sehertormaster->DoorIsKnown()
+   Keine.
 
-SIEHE AUCH:
-    DiscoverDoor, ShowDoors, Teleport, GetDoorsMapping
 
+BESCHREIBUNG
+============
+
+   Testet, ob der Seher (this_player()) das Tor in seiner momentanen
+   Umgebung schon kennt.
+
+
+RUECKGABEWERT
+=============
+
+   Die Nummer des Tores.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   /d/seher/portale/sehertormaster->DoorIsKnown()
+
+
+SIEHE AUCH
+==========
+
+   DiscoverDoor, ShowDoors, Teleport, GetDoorsMapping
diff --git a/doc/lfun/Dump b/doc/lfun/Dump
index 274fbb4..9d8d7e0 100644
--- a/doc/lfun/Dump
+++ b/doc/lfun/Dump
@@ -1,23 +1,38 @@
+
 Dump()
-FUNKTION:
-     void Dump()
+******
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-BESCHREIBUNG:
-     Schreibt alle Materialien samt ihren Gruppen und alle Gruppen mit
-     dazugehoerenden Materialien in DUMPFILE (/p/daemon/save/MATERIALS)
-     Wird in create() der Materialiendatenbank automatisch aufgerufen.
-     Das Dumpfile ist zum Recherchieren der Materialien gedacht.
+FUNKTION
+========
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Listen:	  AllMaterials(), AllGroups()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
+   void Dump()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+BESCHREIBUNG
+============
+
+   Schreibt alle Materialien samt ihren Gruppen und alle Gruppen mit
+   dazugehoerenden Materialien in DUMPFILE (/p/daemon/save/MATERIALS)
+   Wird in create() der Materialiendatenbank automatisch aufgerufen.
+   Das Dumpfile ist zum Recherchieren der Materialien gedacht.
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Listen:      AllMaterials(), AllGroups()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/EnemyPresent b/doc/lfun/EnemyPresent
index 365ae3d..bf3853c 100644
--- a/doc/lfun/EnemyPresent
+++ b/doc/lfun/EnemyPresent
@@ -1,19 +1,34 @@
-EnemyPresent
-FUNKTION:
-     public mixed EnemyPresent()
 
-DEFINIERT IN:
-     /std/living/combat.c
+EnemyPresent()
+**************
 
-BESCHREIBUNG:
-     Gibt aus der Feindesliste den ersten anwesenden, lebenden und 
-     angreifbaren aktuellen Gegner im Raum zurueck.
-     Damit ist die Funktion identisch zu InFight().
 
-     Will man alle Gegner, auf die diese Kriterien zutreffen, sollte man
-     PresentEnemies() verwenden.
+FUNKTION
+========
 
-SIEHE AUCH:
-     PresentEnemies(), Infight()
+   public mixed EnemyPresent()
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Gibt aus der Feindesliste den ersten anwesenden, lebenden und
+   angreifbaren aktuellen Gegner im Raum zurueck.
+   Damit ist die Funktion identisch zu InFight().
+
+   Will man alle Gegner, auf die diese Kriterien zutreffen, sollte man
+   PresentEnemies() verwenden.
+
+
+SIEHE AUCH
+==========
+
+   PresentEnemies(), Infight()
 
 22.03.2009, Zesstra
diff --git a/doc/lfun/Enter b/doc/lfun/Enter
index 7987efa..0ebc7f0 100644
--- a/doc/lfun/Enter
+++ b/doc/lfun/Enter
@@ -1,40 +1,64 @@
+
 Enter()
+*******
 
-FUNKTION:
-     int Enter();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int Enter();
 
-BESCHREIBUNG:
-     Wenn sich der Spieler noch nicht auf dem Transporter befindet, und der
-     Transporter momentan an einer Haltestelle liegt, betritt der Spieler
-     den Transporter.
 
-RUeCKGABEWERT:
-     Null, wenn der Spieler den Transporter nicht betreten konnte, sonst
-     ungleich Null.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Es werden keine Tests durchgefuehrt, ob der Transporter ueberhaupt
-     angesprochen wurde! Das muss man selber machen.
+   /std/transport.c
 
-BEISPIELE:
 
-     int myEnter(string str)
-     {
-       if (str && id(str))
-         return Enter();
+ARGUMENTE
+=========
 
-       notify_fail("Was willst Du betreten?\n");
-       return 0;
-     }
+   keine
 
-SIEHE AUCH:
-     Leave(), /std/transport.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Wenn sich der Spieler noch nicht auf dem Transporter befindet, und der
+   Transporter momentan an einer Haltestelle liegt, betritt der Spieler
+   den Transporter.
+
+
+RUeCKGABEWERT
+=============
+
+   Null, wenn der Spieler den Transporter nicht betreten konnte, sonst
+   ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Es werden keine Tests durchgefuehrt, ob der Transporter ueberhaupt
+   angesprochen wurde! Das muss man selber machen.
+
+
+BEISPIELE
+=========
+
+   int myEnter(string str)
+   {
+     if (str && id(str))
+       return Enter();
+
+     notify_fail("Was willst Du betreten?\n");
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Leave(), /std/transport.c
+
 Last modified: Wed May 8 10:18:42 1996 by Wargon
diff --git a/doc/lfun/EvalArmour b/doc/lfun/EvalArmour
index f1d356a..7daf07c 100644
--- a/doc/lfun/EvalArmour
+++ b/doc/lfun/EvalArmour
@@ -1,21 +1,40 @@
+
 EvalArmour()
+************
 
-FUNKTION:
-    int EvalArmour(object ob, closure qp)
- 
-DEFINIERT IN:
-    /std/room/shop.c
- 
-ARGUMENTE:
-    ob - Eine Ruestung.
-    qp - symbol_function("QueryProp",ob)
 
-BESCHREIBUNG:
-    Bewertet die Ruestung.
- 
-RUECKGABEWERT:
-    Max(P_AC,P_EFFECTIVE_AC);
- 
-SIEHE AUCH:
-    FindBestArmour()
+FUNKTION
+========
 
+   int EvalArmour(object ob, closure qp)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob - Eine Ruestung.
+   qp - symbol_function("QueryProp",ob)
+
+
+BESCHREIBUNG
+============
+
+   Bewertet die Ruestung.
+
+
+RUECKGABEWERT
+=============
+
+   Max(P_AC,P_EFFECTIVE_AC);
+
+
+SIEHE AUCH
+==========
+
+   FindBestArmour()
diff --git a/doc/lfun/EvalWeapon b/doc/lfun/EvalWeapon
index 1e671a3..395a0a1 100644
--- a/doc/lfun/EvalWeapon
+++ b/doc/lfun/EvalWeapon
@@ -1,21 +1,40 @@
+
 EvalWeapon()
+************
 
-FUNKTION:
-    int EvalWeapon(object ob, closure qp)
- 
-DEFINIERT IN:
-    /std/room/shop.c
- 
-ARGUMENTE:
-    ob - Eine Waffe.
-    qp - symbol_function("QueryProp",ob)
 
-BESCHREIBUNG:
-    Bewertet die Waffe.
- 
-RUECKGABEWERT:
-    Max(P_WC,P_EFFECTIVE_WC);
- 
-SIEHE AUCH:
-    FindBestWeapon()
+FUNKTION
+========
 
+   int EvalWeapon(object ob, closure qp)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob - Eine Waffe.
+   qp - symbol_function("QueryProp",ob)
+
+
+BESCHREIBUNG
+============
+
+   Bewertet die Waffe.
+
+
+RUECKGABEWERT
+=============
+
+   Max(P_WC,P_EFFECTIVE_WC);
+
+
+SIEHE AUCH
+==========
+
+   FindBestWeapon()
diff --git a/doc/lfun/ExtraAttack b/doc/lfun/ExtraAttack
index 016b5c1..cc0b109 100644
--- a/doc/lfun/ExtraAttack
+++ b/doc/lfun/ExtraAttack
@@ -1,30 +1,49 @@
+
 ExtraAttack()
+*************
 
-FUNKTION:
-	varargs public void ExtraAttack(object enemy, int ignore_previous);
 
-ARGUMENTE:
-	enemy: Der Feind.
-	ignore_previous: Ein Flag
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
-	stark angegriffen. Hierbei wird Attack() aufgerufen.
-	Ist ignore_previous ungleich 0, dann wird die Erstschlagsperre von
-	Attack ignoriert. Dieser Angriff ist also auch dann moeglich, wenn
-	das Lebewesen eigentlich keinen Schlag mehr in dieser Runde ausfuehren
-	duerfte.
+   varargs public void ExtraAttack(object enemy, int ignore_previous);
 
-RUECKGABEWERT:
-	Keiner.
 
-BEMERKUNG:
-	Der Einsatz dieser Funktion ist genehmigungspflichtig.
-	Weitere Hinweise siehe "man Attack".
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-	"Attack"
-	/std/living/combat.c
+   enemy: Der Feind.
+   ignore_previous: Ein Flag
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
+   stark angegriffen. Hierbei wird Attack() aufgerufen.
+   Ist ignore_previous ungleich 0, dann wird die Erstschlagsperre von
+   Attack ignoriert. Dieser Angriff ist also auch dann moeglich, wenn
+   das Lebewesen eigentlich keinen Schlag mehr in dieser Runde ausfuehren
+   duerfte.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNG
+=========
+
+   Der Einsatz dieser Funktion ist genehmigungspflichtig.
+   Weitere Hinweise siehe "man Attack".
+
+
+SIEHE AUCH
+==========
+
+   "Attack"
+   /std/living/combat.c
+
 Last modified: Sun Nov 21 12:32:20 2004 by Bambi
diff --git a/doc/lfun/FilterArmours b/doc/lfun/FilterArmours
index f934933..32a7f2b 100644
--- a/doc/lfun/FilterArmours
+++ b/doc/lfun/FilterArmours
@@ -1,69 +1,99 @@
-FilterArmours
-FUNKTION:
-     public object *FilterArmours(closure filterfun, varargs mixed* extra)
 
-DEFINIERT IN:
-     /std/living/clothing.c
-
-ARGUMENTE:
-     closure filterfun
-       Die Closure, die entscheiden soll, ob eine Ruestung im Ergebnisarray
-       enthalten sein soll.
-     
-     mixed extra
-       Beliebig viele Extra-Argumente, die <filterfun> uebergeben werden.
-
-BESCHREIBUNG:
-     Diese Funktion ruft <filterfunc> fuer jede getragene Ruestung des
-     Lebewesen mit der jeweiligen Ruestung als Argument auf und liefert ein
-     Array mit allen Ruestungen zurueck, fuer die <filterfun> einen Wert != 0
-     zurueckliefert.
-     Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
-     uebergeben und duerfen keine Referenzen sein.
-     
-     Diese Variante ist zu bevorzugen, wenn man Ruestungen nach bestimmten
-     Kriterien durchsuchen will und QueryArmourByType() nicht ausreichend sein
-     sollte.
-
-RUeCKGABEWERT:
-     Ein Array von Objekten mit allen passenden Ruestungen.
-
-BEISPIELE:
-     1) Ich moechte gerne alle Ruestungen haben, die beschaedigt sind:
-     private int _is_damaged(object ruestung) {
-         return ruestung->QueryProp(P_DAMAGE);
-     }
-     ...
-     object *damaged_armours = PL->FilterArmours(#'_is_damaged);
-
-     2) Ich moechte alle Ruestungen, die groesser als 50cm sind.
-     private int _armour_is_bigger(object ruestung, int size) {
-       return ruestung->QueryProp(P_SIZE) > size;
-     }
-     ...
-     object *big_armours = PL->FilterArmours(#'_amour_is_bigger, 50); 
-
-     3) alle Ruestungen mit einer speziellen ID.
-     private int _has_id(object ruestung, string idstr) {
-       return ruestung->id(idstr);
-     }
-     object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung");
-
-     4) alle Ruestungen mit einer speziellen ID, die groesser als 50cm sind.
-     private int _has_id(object ruestung, string idstr, int size) {
-       return ruestung->id(idstr) && ruestung->QueryProp(P_SIZE) > size;
-     }
-     object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung", 50);
-
-     5) ueberhaupt alle getragene Ruestung
-     object *rue = PL->FilterArmours(#'objectp)
+FilterArmours()
+***************
 
 
-SIEHE AUCH:
-     Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(), 
-     UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), QueryArmourByType()
+FUNKTION
+========
 
-ZULETZT GEAeNDERT:
+   public object *FilterArmours(closure filterfun, varargs mixed* extra)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   closure filterfun
+     Die Closure, die entscheiden soll, ob eine Ruestung im Ergebnisarray
+     enthalten sein soll.
+
+
+
+   mixed extra
+     Beliebig viele Extra-Argumente, die <filterfun> uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ruft <filterfunc> fuer jede getragene Ruestung des
+   Lebewesen mit der jeweiligen Ruestung als Argument auf und liefert ein
+   Array mit allen Ruestungen zurueck, fuer die <filterfun> einen Wert != 0
+   zurueckliefert.
+   Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
+   uebergeben und duerfen keine Referenzen sein.
+
+
+
+   Diese Variante ist zu bevorzugen, wenn man Ruestungen nach bestimmten
+   Kriterien durchsuchen will und QueryArmourByType() nicht ausreichend sein
+   sollte.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von Objekten mit allen passenden Ruestungen.
+
+
+BEISPIELE
+=========
+
+   1) Ich moechte gerne alle Ruestungen haben, die beschaedigt sind:
+   private int _is_damaged(object ruestung) {
+       return ruestung->QueryProp(P_DAMAGE);
+   }
+   ...
+   object *damaged_armours = PL->FilterArmours(#'_is_damaged);
+
+   2) Ich moechte alle Ruestungen, die groesser als 50cm sind.
+   private int _armour_is_bigger(object ruestung, int size) {
+     return ruestung->QueryProp(P_SIZE) > size;
+   }
+   ...
+   object *big_armours = PL->FilterArmours(#'_amour_is_bigger, 50);
+
+   3) alle Ruestungen mit einer speziellen ID.
+   private int _has_id(object ruestung, string idstr) {
+     return ruestung->id(idstr);
+   }
+   object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung");
+
+   4) alle Ruestungen mit einer speziellen ID, die groesser als 50cm sind.
+   private int _has_id(object ruestung, string idstr, int size) {
+     return ruestung->id(idstr) && ruestung->QueryProp(P_SIZE) > size;
+   }
+   object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung", 50);
+
+   5) ueberhaupt alle getragene Ruestung
+   object *rue = PL->FilterArmours(#'objectp)
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
+   UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), QueryArmourByType()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/FilterClothing b/doc/lfun/FilterClothing
index 95b00e3..a7e1d01 100644
--- a/doc/lfun/FilterClothing
+++ b/doc/lfun/FilterClothing
@@ -1,51 +1,80 @@
-FilterClothing
-FUNKTION:
-     public object *FilterClothing(closure filterfun, varargs mixed* extra)
 
-DEFINIERT IN:
-     /std/living/clothing.c
+FilterClothing()
+****************
 
-ARGUMENTE:
-     closure filterfun
-       Die Closure, die entscheiden soll, ob eine Kleidung im Ergebnisarray
-       enthalten sein soll.
 
-BESCHREIBUNG:
-     Diese Funktion ruft <filterfunc> fuer jede getragene Kleidung des
-     Lebewesen mit der jeweiligen Kleidung als Argument auf und liefert ein
-     Array mit aller Kleidung zurueck, fuer die <filterfun> einen Wert != 0
-     zurueckliefert.
-     Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
-     uebergeben und duerfen keine Referenzen sein.
-     
-     Diese Variante ist zu bevorzugen, wenn man die getrage Kleidung nach
-     bestimmten Kriterien durchsuchen will. 
+FUNKTION
+========
 
-RUeCKGABEWERT:
-     Ein Array von Objekten mit allen passenden Kleidung.
+   public object *FilterClothing(closure filterfun, varargs mixed* extra)
 
-BEISPIELE:
-     1) Ich moechte alle Kleidung, die groesser als 50cm ist.
-     private int _armour_is_bigger(object clothing, int size) {
-       return clothing->QueryProp(P_SIZE) > size;
-     }
-     ...
-     object *big_armours = PL->FilterClothing(#'_amour_is_bigger, 50); 
 
-     2) alle Kleidung mit einer speziellen ID.
-     private int _has_id(object clothing, string idstr) {
-       return clothing->id(idstr);
-     }
-     object *has_id = PL->FilterClothing(#'_has_id, "\ntollekleidung");
+DEFINIERT IN
+============
 
-     3) ueberhaupt alle getragene Kleidung
-     object *clothing = PL->FilterClothing(#'objectp)
+   /std/living/clothing.c
 
-SIEHE AUCH:
-     Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(), 
-     UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterArmours(), QueryArmourByType()
 
-ZULETZT GEAeNDERT:
+ARGUMENTE
+=========
+
+   closure filterfun
+     Die Closure, die entscheiden soll, ob eine Kleidung im Ergebnisarray
+     enthalten sein soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ruft <filterfunc> fuer jede getragene Kleidung des
+   Lebewesen mit der jeweiligen Kleidung als Argument auf und liefert ein
+   Array mit aller Kleidung zurueck, fuer die <filterfun> einen Wert != 0
+   zurueckliefert.
+   Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
+   uebergeben und duerfen keine Referenzen sein.
+
+
+
+   Diese Variante ist zu bevorzugen, wenn man die getrage Kleidung nach
+   bestimmten Kriterien durchsuchen will.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von Objekten mit allen passenden Kleidung.
+
+
+BEISPIELE
+=========
+
+   1) Ich moechte alle Kleidung, die groesser als 50cm ist.
+   private int _armour_is_bigger(object clothing, int size) {
+     return clothing->QueryProp(P_SIZE) > size;
+   }
+   ...
+   object *big_armours = PL->FilterClothing(#'_amour_is_bigger, 50);
+
+   2) alle Kleidung mit einer speziellen ID.
+   private int _has_id(object clothing, string idstr) {
+     return clothing->id(idstr);
+   }
+   object *has_id = PL->FilterClothing(#'_has_id, "\ntollekleidung");
+
+   3) ueberhaupt alle getragene Kleidung
+   object *clothing = PL->FilterClothing(#'objectp)
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
+   UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterArmours(), QueryArmourByType()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/FindBestArmours b/doc/lfun/FindBestArmours
index 68e734b..10a5d80 100644
--- a/doc/lfun/FindBestArmours
+++ b/doc/lfun/FindBestArmours
@@ -1,38 +1,64 @@
+
 FindBestArmours()
+*****************
 
-FUNKTION:
-    varargs object *FindBestArmours(mixed type, int maxmon, int maxw,
-                                    mapping minac, mixed restr)
- 
-DEFINIERT IN:
-    /std/room/shop.c
- 
-ARGUMENTE:
-    type   - gewuenschter Ruestungstyp / Ruestungstypen
-    maxmon - Geld das ausgegeben werden darf
-    maxw   - Maximales Gewicht
-    minac  - minimale gewuenschte Ruestungsklasse pro Typ
-    restr  - zusaetzliches Argument fuer CheckFindRestrictions()
 
-BESCHREIBUNG:
-    Sucht die besten Ruestungen, die der Laden verkaufen kann.
- 
-RUECKGABEWERT:
-    Die besten Ruestungen
- 
-BEMERKUNG:
-    Die Qualitaet der Ruestung wird mit EvalArmour() bestimmt.
-    Haben zwei Ruestungen die gleiche Qualitaet,
-    wird die preiswertere genommen.
- 
-BEISPIEL:
-    FindBestArmours(AT_ARMOUR,5000)
-    Bestes Ruestung unter 5000 Muenzen.
+FUNKTION
+========
 
-    FindBestArmours(({AT_ARMOUR,AT_CLOAK,AT_BOOT}),10000,([AT_ARMOUR:20]))
-    Finded beste Ruestung, Umhang und Schuhe, die der Laden fuer
-    insgesamt 10000 Muenzen verkaufen kann, wobei die Ruestung mindestens
-    AC 20 haben muss.
+   varargs object *FindBestArmours(mixed type, int maxmon, int maxw,
+                                   mapping minac, mixed restr)
 
-SIEHE AUCH:
-    FindBestWeapon(), CheckFindRestrictions(), EvalArmour()
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   type   - gewuenschter Ruestungstyp / Ruestungstypen
+   maxmon - Geld das ausgegeben werden darf
+   maxw   - Maximales Gewicht
+   minac  - minimale gewuenschte Ruestungsklasse pro Typ
+   restr  - zusaetzliches Argument fuer CheckFindRestrictions()
+
+
+BESCHREIBUNG
+============
+
+   Sucht die besten Ruestungen, die der Laden verkaufen kann.
+
+
+RUECKGABEWERT
+=============
+
+   Die besten Ruestungen
+
+
+BEMERKUNG
+=========
+
+   Die Qualitaet der Ruestung wird mit EvalArmour() bestimmt.
+   Haben zwei Ruestungen die gleiche Qualitaet,
+   wird die preiswertere genommen.
+
+
+BEISPIEL
+========
+
+   FindBestArmours(AT_ARMOUR,5000)
+   Bestes Ruestung unter 5000 Muenzen.
+
+   FindBestArmours(({AT_ARMOUR,AT_CLOAK,AT_BOOT}),10000,([AT_ARMOUR:20]))
+   Finded beste Ruestung, Umhang und Schuhe, die der Laden fuer
+   insgesamt 10000 Muenzen verkaufen kann, wobei die Ruestung mindestens
+   AC 20 haben muss.
+
+
+SIEHE AUCH
+==========
+
+   FindBestWeapon(), CheckFindRestrictions(), EvalArmour()
diff --git a/doc/lfun/FindBestWeapon b/doc/lfun/FindBestWeapon
index d0ba8f1..1aaeb0d 100644
--- a/doc/lfun/FindBestWeapon
+++ b/doc/lfun/FindBestWeapon
@@ -1,33 +1,59 @@
+
 FindBestWeapon()
+****************
 
-FUNKTION:
-    varargs object FindBestWeapon(mixed type, int maxmon, int maxw, int hands,
-                                  int minwc, mixed restr)
- 
-DEFINIERT IN:
-    /std/room/shop.c
- 
-ARGUMENTE:
-    type   - gewuenschter Waffentyp / Waffentypen
-    maxmon - Geld das ausgegeben werden darf
-    maxw   - Maximales Gewicht
-    hands  - Anzahl Haende, die die Waffe belegen darf
-    minwc  - minimale gewuenschte Waffenklasse
-    restr  - zusaetzliches Argument fuer CheckFindRestrictions()
 
-BESCHREIBUNG:
-    Sucht die beste Waffe, die der Laden verkaufen kann.
- 
-RUECKGABEWERT:
-    Die beste Waffe :-)
- 
-BEMERKUNG:
-    Die Qualitaet der Waffe wird mit EvalWeapon() bestimmt.
-    Haben zwei Waffen die gleiche Qualitaet, wird die preiswertere genommen.
- 
-BEISPIEL:
-    FindBestWeapon(WT_SWORD,5000,1)
-    Bestes einhaendiges Schwert unter 5000 Muenzen.
+FUNKTION
+========
 
-SIEHE AUCH:
-    FindBestArmours(), CheckFindRestrictions(), EvalWeapon()
+   varargs object FindBestWeapon(mixed type, int maxmon, int maxw, int hands,
+                                 int minwc, mixed restr)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   type   - gewuenschter Waffentyp / Waffentypen
+   maxmon - Geld das ausgegeben werden darf
+   maxw   - Maximales Gewicht
+   hands  - Anzahl Haende, die die Waffe belegen darf
+   minwc  - minimale gewuenschte Waffenklasse
+   restr  - zusaetzliches Argument fuer CheckFindRestrictions()
+
+
+BESCHREIBUNG
+============
+
+   Sucht die beste Waffe, die der Laden verkaufen kann.
+
+
+RUECKGABEWERT
+=============
+
+   Die beste Waffe :-)
+
+
+BEMERKUNG
+=========
+
+   Die Qualitaet der Waffe wird mit EvalWeapon() bestimmt.
+   Haben zwei Waffen die gleiche Qualitaet, wird die preiswertere genommen.
+
+
+BEISPIEL
+========
+
+   FindBestWeapon(WT_SWORD,5000,1)
+   Bestes einhaendiges Schwert unter 5000 Muenzen.
+
+
+SIEHE AUCH
+==========
+
+   FindBestArmours(), CheckFindRestrictions(), EvalWeapon()
diff --git a/doc/lfun/FindDistantEnemyVictim b/doc/lfun/FindDistantEnemyVictim
index a51c27f..5ea712d 100644
--- a/doc/lfun/FindDistantEnemyVictim
+++ b/doc/lfun/FindDistantEnemyVictim
@@ -1,32 +1,55 @@
+
 FindDistantEnemyVictim()
+************************
 
-FUNKTION:
-	object FindDistantEnemyVictim(string wen, object pl, string msg,
-	                              int dist, int dy)
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	wen  - id des gewuenschten Gegners, falls nicht angegeben:
-               SelectEnemy(FindDistantGroup(pl,-1,dist,dy,10000)
-	pl   - Caster.
-	msg  - Nachricht falls Gegner nicht anwesend ist.
-	dist - Entfernung
-	dy   - 2*erlaubte Abweichung von der Entfernung, default 100
+   object FindDistantEnemyVictim(string wen, object pl, string msg,
+                                 int dist, int dy)
 
-BESCHREIBUNG:
-	Findet einen Gegner in Entfernung dist-dy/2 bis dist+dy/2
-	z.B. fuer einen Angriffsspruch.
-	
-RUECKGABEWERT:
-	Der Auserwaehlte :-)
 
-BEMERKUNGEN:
-	1. Der Gegner wird auf jeden Fall angegriffen.
-	2. dist wird mit SA_RANGE modifiziert,
-	   dy wird mit SA_EXTENSION modifiziert.
-	3. Die Entfernung ist relativ zum Spieler.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	teams, FindEnemyVictim, FindNearEnemyVictim, FindFarEnemyVictim
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen  - id des gewuenschten Gegners, falls nicht angegeben:
+          SelectEnemy(FindDistantGroup(pl,-1,dist,dy,10000)
+   pl   - Caster.
+   msg  - Nachricht falls Gegner nicht anwesend ist.
+   dist - Entfernung
+   dy   - 2*erlaubte Abweichung von der Entfernung, default 100
+
+
+BESCHREIBUNG
+============
+
+   Findet einen Gegner in Entfernung dist-dy/2 bis dist+dy/2
+   z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Der Gegner wird auf jeden Fall angegriffen.
+   2. dist wird mit SA_RANGE modifiziert,
+      dy wird mit SA_EXTENSION modifiziert.
+   3. Die Entfernung ist relativ zum Spieler.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindEnemyVictim, FindNearEnemyVictim, FindFarEnemyVictim
diff --git a/doc/lfun/FindDistantGroup b/doc/lfun/FindDistantGroup
index 4dedab6..b94e048 100644
--- a/doc/lfun/FindDistantGroup
+++ b/doc/lfun/FindDistantGroup
@@ -1,31 +1,53 @@
+
 FindDistantGroup()
+******************
 
-FUNKTION:
-	varargs object *FindDistantGroup(object pl, int who,
-                                         int dist, int dy, int dx)
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	pl   - Caster
-	who  - 1=Freunde, -1=Gegner, 0=beide
-	dist - Entfernung
-	dy   - Tiefe      (default 100)
-	dx   - Breite     (default 100*MAX_TEAM_ROWLEN)
+   varargs object *FindDistantGroup(object pl, int who,
+                                    int dist, int dy, int dx)
 
-BESCHREIBUNG:
-	Ermittelt Lebewesen, die sich in Entfernung <dist> in einem Bereich
-	der Breite <dx> und Tiefe <dy> befinden.
 
-RUECKGABEWERT:
-	Array mit den gefundenen Lebewesen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-	Genauere Hinweise unter "FindDistantGroups".
-	Wer sowohl Freunde wie auch Feinde in getrennten Arrays braucht,
-	sollte FindDistantGroups statt FindDistantGroup verwenden.
+   /std/spellbook.c
 
-SIEHE AUCH:
-	teams, FindDistantGroups
 
+ARGUMENTE
+=========
+
+   pl   - Caster
+   who  - 1=Freunde, -1=Gegner, 0=beide
+   dist - Entfernung
+   dy   - Tiefe      (default 100)
+   dx   - Breite     (default 100*MAX_TEAM_ROWLEN)
+
+
+BESCHREIBUNG
+============
+
+   Ermittelt Lebewesen, die sich in Entfernung <dist> in einem Bereich
+   der Breite <dx> und Tiefe <dy> befinden.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den gefundenen Lebewesen.
+
+
+BEMERKUNGEN
+===========
+
+   Genauere Hinweise unter "FindDistantGroups".
+   Wer sowohl Freunde wie auch Feinde in getrennten Arrays braucht,
+   sollte FindDistantGroups statt FindDistantGroup verwenden.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindDistantGroups
diff --git a/doc/lfun/FindDistantGroups b/doc/lfun/FindDistantGroups
index 507b72e..efb3354 100644
--- a/doc/lfun/FindDistantGroups
+++ b/doc/lfun/FindDistantGroups
@@ -1,59 +1,85 @@
+
 FindDistantGroups()
+*******************
 
-FUNKTION:
-	varargs mixed FindDistantGroups(object pl, int dist, int dy, int dx)
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	pl   - Caster
-	dist - Entfernung
-	dy   - Tiefe      (default 100)
-	dx   - Breite     (default 100*MAX_TEAM_ROWLEN)
+   varargs mixed FindDistantGroups(object pl, int dist, int dy, int dx)
 
-BESCHREIBUNG:
-	Ermitteld feindliche (bei Spielern NPCs, bei NPCs Spieler) und
-	freundliche (bei Spielern Spieler, bei NPCs NPCs) Lebewesen,
-	die sich in Entfernung <dist> in einem Bereich der Breite <dx>
-	und Tiefe <dy> befinden.
 
-RUECKGABEWERT:
-	Array mit zwei Arrays als Inhalt:
-	({ feindliche Lebewesen, freundliche Lebewesen })
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-	Die Entfernungsangaben sind als cm. zu verstehen.
-	Jedes Lebewesen belegt 50cm x 50cm mit Abstand 50cm
-	zum naechsten Lebewesen in jeder Richtung.
-	Die Breitenangabe wirkt sich nur in der Anzahl der
-	Lebewesen aus, die zufaellig pro Reihe ausgewaehlt werden.
-	Die Skillattribute SA_RANGE und SA_EXTENSION werden beruecksichtigt.
+   /std/spellbook.c
 
-BEISPIEL:
-	dist=200, dy=200, dx=200, ein Punkt = 50cm x 50cm
-	   . . . . . . . . . . . . .
-	3. . . . . . . G . . . . . .
-	   . . . . . . . . . . . . .
-	2. . . . . . G . G . . . . .dist+dy/2-+
-	   . . . . . . . . . . . . .          |  
-	1. . . . . G . G . G . . . .     dist +-+ (Gegner G)
-	---.-.-.-.-.-.-.-.-.-.-.-.-.          | |
-	1. . . . . F . F . F . . . .dist-dy/2-+ | (Freunde F)
-	   . . . . . . . . . . . . .            |
-	2. . . . . . F . S . . . . .------------+ (Reihe des Spielers S)
-	   . . . . . . . . . . . . .
-	3. . . . . . . F . . . . . .
-	   . . . . . . . . . . . . .
-	Abgedeckter Bereich:           100cm  bis  300cm
-                Reihe 3:  375cm..425cm         375>300 -> nicht erwischt
-                Reihe 2:  275cm..325cm         275<300 -> erwischt
-	Gegner  Reihe 1:  175cm..225cm 100<175,225<300 -> erwischt
-	Freunde Reihe 1:   75cm..125cm 100<125         -> erwischt
-	        Reihe 2:  -25cm...25cm 100> 25         -> nicht erwischt
-                Reihe 3: -125cm..-75cm 100>-75         -> nicht erwischt
-	Ergebnis: ({({G,G,G,G}),({F,F})})
-	(Maximal 2 Lebewesen pro Reihe bei Breite 200).
 
-SIEHE AUCH:
-	teams, FindDistantGroup
+ARGUMENTE
+=========
+
+   pl   - Caster
+   dist - Entfernung
+   dy   - Tiefe      (default 100)
+   dx   - Breite     (default 100*MAX_TEAM_ROWLEN)
+
+
+BESCHREIBUNG
+============
+
+   Ermitteld feindliche (bei Spielern NPCs, bei NPCs Spieler) und
+   freundliche (bei Spielern Spieler, bei NPCs NPCs) Lebewesen,
+   die sich in Entfernung <dist> in einem Bereich der Breite <dx>
+   und Tiefe <dy> befinden.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit zwei Arrays als Inhalt:
+   ({ feindliche Lebewesen, freundliche Lebewesen })
+
+
+BEMERKUNGEN
+===========
+
+   Die Entfernungsangaben sind als cm. zu verstehen.
+   Jedes Lebewesen belegt 50cm x 50cm mit Abstand 50cm
+   zum naechsten Lebewesen in jeder Richtung.
+   Die Breitenangabe wirkt sich nur in der Anzahl der
+   Lebewesen aus, die zufaellig pro Reihe ausgewaehlt werden.
+   Die Skillattribute SA_RANGE und SA_EXTENSION werden beruecksichtigt.
+
+
+BEISPIEL
+========
+
+   dist=200, dy=200, dx=200, ein Punkt = 50cm x 50cm
+      . . . . . . . . . . . . .
+   3. . . . . . . G . . . . . .
+      . . . . . . . . . . . . .
+   2. . . . . . G . G . . . . .dist+dy/2-+
+      . . . . . . . . . . . . .          |
+   1. . . . . G . G . G . . . .     dist +-+ (Gegner G)
+   ---.-.-.-.-.-.-.-.-.-.-.-.-.          | |
+   1. . . . . F . F . F . . . .dist-dy/2-+ | (Freunde F)
+      . . . . . . . . . . . . .            |
+   2. . . . . . F . S . . . . .------------+ (Reihe des Spielers S)
+      . . . . . . . . . . . . .
+   3. . . . . . . F . . . . . .
+      . . . . . . . . . . . . .
+   Abgedeckter Bereich:           100cm  bis  300cm
+           Reihe 3:  375cm..425cm         375>300 -> nicht erwischt
+           Reihe 2:  275cm..325cm         275<300 -> erwischt
+   Gegner  Reihe 1:  175cm..225cm 100<175,225<300 -> erwischt
+   Freunde Reihe 1:   75cm..125cm 100<125         -> erwischt
+           Reihe 2:  -25cm...25cm 100> 25         -> nicht erwischt
+           Reihe 3: -125cm..-75cm 100>-75         -> nicht erwischt
+   Ergebnis: ({({G,G,G,G}),({F,F})})
+   (Maximal 2 Lebewesen pro Reihe bei Breite 200).
+
+
+SIEHE AUCH
+==========
+
+   teams, FindDistantGroup
diff --git a/doc/lfun/FindEnemyVictim b/doc/lfun/FindEnemyVictim
index 0ab72fc..c5a81a6 100644
--- a/doc/lfun/FindEnemyVictim
+++ b/doc/lfun/FindEnemyVictim
@@ -1,24 +1,47 @@
+
 FindEnemyVictim()
+*****************
 
-FUNKTION:
-	object FindEnemyVictim(string wen, object pl, string msg)
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	wen - id des gewuenschten Gegners, falls nicht angegeben SelectEnemy.
-	pl  - Caster.
-	msg - Nachricht falls Gegner nicht anwesend ist.
+   object FindEnemyVictim(string wen, object pl, string msg)
 
-BESCHREIBUNG:
-	Findet einen Gegner, z.B. fuer einen Angriffsspruch.
-	
-RUECKGABEWERT:
-	Der Auserwaehlte :-)
 
-BEMERKUNGEN:
-	Der Gegner wird auf jeden Fall angegriffen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	FindLivingVictim
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen - id des gewuenschten Gegners, falls nicht angegeben SelectEnemy.
+   pl  - Caster.
+   msg - Nachricht falls Gegner nicht anwesend ist.
+
+
+BESCHREIBUNG
+============
+
+   Findet einen Gegner, z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   Der Gegner wird auf jeden Fall angegriffen.
+
+
+SIEHE AUCH
+==========
+
+   FindLivingVictim
diff --git a/doc/lfun/FindFarEnemyVictim b/doc/lfun/FindFarEnemyVictim
index e43dda6..455cf89 100644
--- a/doc/lfun/FindFarEnemyVictim
+++ b/doc/lfun/FindFarEnemyVictim
@@ -1,30 +1,53 @@
+
 FindFarEnemyVictim()
+********************
 
-FUNKTION:
-	object FindFarEnemyVictim(string wen, object pl, string msg,
-	                          int min, int max)
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	wen - id des gewuenschten Gegners, SelectFarEnemy falls n/a.
-	pl  - Caster.
-	msg - Nachricht falls Gegner nicht anwesend ist.
-	min - minimale Kampfreihe
-	max - maximale Kampfreihe
+   object FindFarEnemyVictim(string wen, object pl, string msg,
+                             int min, int max)
 
-BESCHREIBUNG:
-	Findet einen Gegner aus Kampfreihe <min> bis <max>
-	z.B. fuer einen Angriffsspruch.
-	
-RUECKGABEWERT:
-	Der Auserwaehlte :-)
 
-BEMERKUNGEN:
-	1. Der Gegner wird auf jeden Fall angegriffen.
-	2. Die Reihenangaben werden NICHT mit Skillattributen modifiziert.
-	3. Die Angabe der Reihe ist absolut.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	teams, FindEnemyVictim, FindNearEnemyVictim, FindDistantEnemyVictim
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen - id des gewuenschten Gegners, SelectFarEnemy falls n/a.
+   pl  - Caster.
+   msg - Nachricht falls Gegner nicht anwesend ist.
+   min - minimale Kampfreihe
+   max - maximale Kampfreihe
+
+
+BESCHREIBUNG
+============
+
+   Findet einen Gegner aus Kampfreihe <min> bis <max>
+   z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Der Gegner wird auf jeden Fall angegriffen.
+   2. Die Reihenangaben werden NICHT mit Skillattributen modifiziert.
+   3. Die Angabe der Reihe ist absolut.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindEnemyVictim, FindNearEnemyVictim, FindDistantEnemyVictim
diff --git a/doc/lfun/FindGroup b/doc/lfun/FindGroup
index ec1c693..112c76f 100644
--- a/doc/lfun/FindGroup
+++ b/doc/lfun/FindGroup
@@ -1,76 +1,98 @@
+
 FindGroup()
+***********
 
-FUNKTION:
-    object*FindGroup(object pl,int who);
 
-DEFINIERT IN:
-    /std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-    pl
-      Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
-      gefunden werden sollen.
-    who
-      Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
-      sollen (Konstanten definiert in '/sys/new_skills.h'):
-        FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
-        FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
-        FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+   object*FindGroup(object pl,int who);
 
-RUeCKGABEWERT:
-    Array mit gefundenen Lebewesen
 
-BESCHREIBUNG:
-    Bei Spells, die sich auf mehrere Gegner auswirken oder bei denen man
-    per Hand ein Opfer auswaehlen moechte, laesst sich mittels der
-    Funktion FindGroup() eine Liste von Lebewesen ermitteln, welche in
-    der Umgebung von <pl> zu finden sind.
-    Je nachdem, was man denn genau vorhat, kann man sich von der
-    Funktion freundlich oder feindlich gesinnte Lebewesen heraussuchen
-    lassen.
-    Will man die freundlich gesinnten Lebewesen ermitteln, so uebergibt
-    man in <who> die Konstante FG_FRIENDS, bei feindlich gesinnten die
-    Konstante FG_ENEMIES, und wenn man alle Lebewesen bekommen moechte
-    schliesslich FG_ALL.
-    Bei der Auswahl gelten folgende Regeln:
-      (1) Lebewesen, mit denen <pl> im Kampf ist, sind grundsaetzlich
-          feindlich gesinnt.
-      (2) Teammitglieder von <pl> sind grundsaetzlich freundlich
-          gesinnt.
-      (3) Spieler sind gegenueber Spielern freundlich gesinnt, NPCs
-          gegenueber NPCs. NPCs kann man hierbei mit Hilfe der Property
-          P_FRIEND den Spielern zuordnen.
-      (4) Daraus folgt natuerlich, dass Spieler und NPCs grundsaetzlich
-          eine feindliche Einstellung gegenueber haben, sofern die NPCs
-          nicht die Property P_FRIEND gesetzt haben
-           (was standardmaessig natuerlich nicht der Fall ist).
-      (5) Netztote werden nicht erkannt.
-      (6) Magier werden nicht erkannt, wenn sie unsichtbar sind.
-      (7) Ein Magier wird als feindlich gesinnt nur dann erkannt, wenn
-          <pl> mit ihm im Kampf ist.
-      (6) Sucht man feindlich gesinnte Lebewesen, so werden die, welche
-          eine von den Properties P_NO_ATTACK oder P_NO_GLOBAL_ATTACK
-          gesetzt haben, nicht erkannt.
-    Die Property P_FRIEND sollte man in NPCs setzen, die dem Spieler
-    hilfreich beiseite stehen, z.B. vom Spieler beschworene HilfsNPCs.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    Wenn man einen Feuerball nach jemandem wirft, so trifft dieser unter
-    Umstaenden auch andere, wenn er gross genug ist. Man nimmt hierbei
-    an, dass sich die freundlich gesinnten Lebewesen des Gegners auch
-    naeher bei ihm befinden als die feindlich gesinnten:
-      victim->Defend(500,DT_FIRE,([SP_SHOW_DAMAGE:1]),caster);
-      victimList=FindGroup(victim,FG_FRIENDS);
-      map_objects(victimList,
-                      "Defend",
-                      100,
-                      DT_FIRE,
-                      ([SP_SHOW_DAMAGE:1]),
-                      caster);
-    Hiermit trifft man also auch die Freunde von <victim>.
+   /std/spellbook.c
 
-SIEHE AUCH:
-    FindGroupN(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   pl
+     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
+     gefunden werden sollen.
+   who
+     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
+     sollen (Konstanten definiert in '/sys/new_skills.h'):
+       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
+       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
+       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit gefundenen Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Bei Spells, die sich auf mehrere Gegner auswirken oder bei denen man
+   per Hand ein Opfer auswaehlen moechte, laesst sich mittels der
+   Funktion FindGroup() eine Liste von Lebewesen ermitteln, welche in
+   der Umgebung von <pl> zu finden sind.
+   Je nachdem, was man denn genau vorhat, kann man sich von der
+   Funktion freundlich oder feindlich gesinnte Lebewesen heraussuchen
+   lassen.
+   Will man die freundlich gesinnten Lebewesen ermitteln, so uebergibt
+   man in <who> die Konstante FG_FRIENDS, bei feindlich gesinnten die
+   Konstante FG_ENEMIES, und wenn man alle Lebewesen bekommen moechte
+   schliesslich FG_ALL.
+   Bei der Auswahl gelten folgende Regeln:
+     (1) Lebewesen, mit denen <pl> im Kampf ist, sind grundsaetzlich
+         feindlich gesinnt.
+     (2) Teammitglieder von <pl> sind grundsaetzlich freundlich
+         gesinnt.
+     (3) Spieler sind gegenueber Spielern freundlich gesinnt, NPCs
+         gegenueber NPCs. NPCs kann man hierbei mit Hilfe der Property
+         P_FRIEND den Spielern zuordnen.
+     (4) Daraus folgt natuerlich, dass Spieler und NPCs grundsaetzlich
+         eine feindliche Einstellung gegenueber haben, sofern die NPCs
+         nicht die Property P_FRIEND gesetzt haben
+          (was standardmaessig natuerlich nicht der Fall ist).
+     (5) Netztote werden nicht erkannt.
+     (6) Magier werden nicht erkannt, wenn sie unsichtbar sind.
+     (7) Ein Magier wird als feindlich gesinnt nur dann erkannt, wenn
+         <pl> mit ihm im Kampf ist.
+     (6) Sucht man feindlich gesinnte Lebewesen, so werden die, welche
+         eine von den Properties P_NO_ATTACK oder P_NO_GLOBAL_ATTACK
+         gesetzt haben, nicht erkannt.
+   Die Property P_FRIEND sollte man in NPCs setzen, die dem Spieler
+   hilfreich beiseite stehen, z.B. vom Spieler beschworene HilfsNPCs.
+
+
+BEISPIELE
+=========
+
+   Wenn man einen Feuerball nach jemandem wirft, so trifft dieser unter
+   Umstaenden auch andere, wenn er gross genug ist. Man nimmt hierbei
+   an, dass sich die freundlich gesinnten Lebewesen des Gegners auch
+   naeher bei ihm befinden als die feindlich gesinnten:
+     victim->Defend(500,DT_FIRE,([SP_SHOW_DAMAGE:1]),caster);
+     victimList=FindGroup(victim,FG_FRIENDS);
+     map_objects(victimList,
+                     "Defend",
+                     100,
+                     DT_FIRE,
+                     ([SP_SHOW_DAMAGE:1]),
+                     caster);
+   Hiermit trifft man also auch die Freunde von <victim>.
+
+
+SIEHE AUCH
+==========
+
+   FindGroupN(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
+
 Last modified: Mon Jan 28 21:45:00 2002 by Tiamak
diff --git a/doc/lfun/FindGroupN b/doc/lfun/FindGroupN
index 8364f77..b0104ee 100644
--- a/doc/lfun/FindGroupN
+++ b/doc/lfun/FindGroupN
@@ -1,45 +1,67 @@
+
 FindGroupN()
+************
 
-FUNKTION:
-	object*FindGroupN(object pl,int who,int n);
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	pl
-	  Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
-	  gefunden werden sollen.
-	who
-	  Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
-	  sollen (Konstanten definiert in '/sys/new_skills.h'):
-	    FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
-	    FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
-	    FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
-	n
-	  Anzahl der Lebewesen, die zurueckgegeben werden sollen.
-	  Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!
-	  Es wird mindestens 1 Lebewesen zurueckgeliefert (sofern gefunden).
+   object*FindGroupN(object pl,int who,int n);
 
-RUeCKGABEWERT:
-	Array mit gefundenen Lebewesen
 
-BESCHREIBUNG:
-	Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
-	dass zum Schluss die Anzahl noch begrenzt wird.
+DEFINIERT IN
+============
 
-BEISPIELE:
-	Man moechte maximal 5 Feinde finden, die man gleichzeitig mit einem
-	Spell belegen kann:
-	  enemyList=FindGroupN(caster,FG_ENEMIES,5);
-	Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird
-	dementsprechend mehr oder weniger zurueckgegeben.
-	 (also bei SA_EXTENSION==200 doppelt so viele -> 10 Lebewesen)
-	Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
-	veraendert worden sein; das sollte beachtet werden.
+   /std/spellbook.c
 
-SIEHE AUCH:
-	FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   pl
+     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
+     gefunden werden sollen.
+   who
+     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
+     sollen (Konstanten definiert in '/sys/new_skills.h'):
+       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
+       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
+       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+   n
+     Anzahl der Lebewesen, die zurueckgegeben werden sollen.
+     Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!
+     Es wird mindestens 1 Lebewesen zurueckgeliefert (sofern gefunden).
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit gefundenen Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
+   dass zum Schluss die Anzahl noch begrenzt wird.
+
+
+BEISPIELE
+=========
+
+   Man moechte maximal 5 Feinde finden, die man gleichzeitig mit einem
+   Spell belegen kann:
+     enemyList=FindGroupN(caster,FG_ENEMIES,5);
+   Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird
+   dementsprechend mehr oder weniger zurueckgegeben.
+    (also bei SA_EXTENSION==200 doppelt so viele -> 10 Lebewesen)
+   Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
+   veraendert worden sein; das sollte beachtet werden.
+
+
+SIEHE AUCH
+==========
+
+   FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
+
 Last modified: Mon Jan 25 15:04:31 1999 by Patryn
diff --git a/doc/lfun/FindGroupP b/doc/lfun/FindGroupP
index efef568..e4c297b 100644
--- a/doc/lfun/FindGroupP
+++ b/doc/lfun/FindGroupP
@@ -1,46 +1,68 @@
+
 FindGroupP()
+************
 
-FUNKTION:
-	object*FindGroupP(object pl,int who,int pr);
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	pl
-	  Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
-	  gefunden werden sollen.
-	who
-	  Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
-	  sollen (Konstanten definiert in '/sys/new_skills.h'):
-	    FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
-	    FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
-	    FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
-	pr
-	  Wahrscheinlichkeit, mit der ein Lebewesen ausgesucht werden soll.
-	  Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!
+   object*FindGroupP(object pl,int who,int pr);
 
-RUeCKGABEWERT:
-	Array mit gefundenen Lebewesen
 
-BESCHREIBUNG:
-	Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
-	dass zum Schluss die einzelnen Lebewesen per Zufall ausgewaehlt
-	werden. Es ist also nicht gesichert, dass ueberhaupt ein Lebewesen
-	zurueckgeliefert wird, trotzdem welche gefunden wurden.
+DEFINIERT IN
+============
 
-BEISPIELE:
-	Man moechte im Schnitt 50% der Feinde finden, die man gleichzeitig
-	mit einem Spell belegt:
-	  enemyList=FindGroupP(caster,FG_ENEMIES,50);
-	Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird mit
-	dementsprechend mehr oder weniger Wahrscheinlichkeit zurueckgegeben.
-	 (also bei SA_EXTENSION==200 doppelt so viele -> 100%, also alle)
-	Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
-	veraendert worden sein; das sollte beachtet werden.
+   /std/spellbook.c
 
-SIEHE AUCH:
-	FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   pl
+     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
+     gefunden werden sollen.
+   who
+     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
+     sollen (Konstanten definiert in '/sys/new_skills.h'):
+       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
+       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
+       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+   pr
+     Wahrscheinlichkeit, mit der ein Lebewesen ausgesucht werden soll.
+     Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit gefundenen Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
+   dass zum Schluss die einzelnen Lebewesen per Zufall ausgewaehlt
+   werden. Es ist also nicht gesichert, dass ueberhaupt ein Lebewesen
+   zurueckgeliefert wird, trotzdem welche gefunden wurden.
+
+
+BEISPIELE
+=========
+
+   Man moechte im Schnitt 50% der Feinde finden, die man gleichzeitig
+   mit einem Spell belegt:
+     enemyList=FindGroupP(caster,FG_ENEMIES,50);
+   Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird mit
+   dementsprechend mehr oder weniger Wahrscheinlichkeit zurueckgegeben.
+    (also bei SA_EXTENSION==200 doppelt so viele -> 100%, also alle)
+   Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
+   veraendert worden sein; das sollte beachtet werden.
+
+
+SIEHE AUCH
+==========
+
+   FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
+
 Last modified: Mon Jan 25 15:04:31 1999 by Patryn
diff --git a/doc/lfun/FindNearEnemyVictim b/doc/lfun/FindNearEnemyVictim
index 86d77ce..4bd0458 100644
--- a/doc/lfun/FindNearEnemyVictim
+++ b/doc/lfun/FindNearEnemyVictim
@@ -1,25 +1,48 @@
+
 FindNearEnemyVictim()
+*********************
 
-FUNKTION:
-	object FindNearEnemyVictim(string wen, object pl, string msg)
 
-DEFINIERT IN:
-	/std/spellbook.c
+FUNKTION
+========
 
-ARGUMENTE:
-	wen - id des gewuenschten Gegners, SelectNearEnemy falls n/a.
-	pl  - Caster.
-	msg - Nachricht falls Gegner nicht anwesend ist.
+   object FindNearEnemyVictim(string wen, object pl, string msg)
 
-BESCHREIBUNG:
-	Findet einen im Nahkampf erreichbaren Gegner,
-	z.B. fuer einen Angriffsspruch.
-	
-RUECKGABEWERT:
-	Der Auserwaehlte :-)
 
-BEMERKUNGEN:
-	Der Gegner wird auf jeden Fall angegriffen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	teams, FindEnemyVictim, FindFarEnemyVictim, FindDistantEnemyVictim
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen - id des gewuenschten Gegners, SelectNearEnemy falls n/a.
+   pl  - Caster.
+   msg - Nachricht falls Gegner nicht anwesend ist.
+
+
+BESCHREIBUNG
+============
+
+   Findet einen im Nahkampf erreichbaren Gegner,
+   z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   Der Gegner wird auf jeden Fall angegriffen.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindEnemyVictim, FindFarEnemyVictim, FindDistantEnemyVictim
diff --git a/doc/lfun/FindPotion b/doc/lfun/FindPotion
index 417c89b..5d8cae1 100644
--- a/doc/lfun/FindPotion
+++ b/doc/lfun/FindPotion
@@ -1,49 +1,74 @@
+
 FindPotion()
+************
 
-FUNKTION:
-     varargs int FindPotion(string s);
 
-DEFINIERT IN:
-     /std/player/potion.c
+FUNKTION
+========
 
-ARGUMENTE:
-     string s
-       Ausgabetext. Wenn 0/Leerstring, wird Default verwendet.
+   varargs int FindPotion(string s);
 
-BESCHREIBUNG:
-     Diese Funktion gibt einem aufrufenden Spieler eventuell diesen ZT.
-     
-     Das aufrufende Spielerobjekt muss dafuer:
-     * diesen ZT im Potionmaster in seiner Liste eingetragen haben
-     * diesen ZT in der Liste der bekannten Traenke haben (durch
-       Orakel also fuer ihn auch freigeschaltet)
-     * darf keine Playerkills haben (P_KILLS)
-     * darf nicht im Editiermodus sein
-     * darf kein Geist sein (Ausnahme: Geisterschloss)
 
-     Wenn alle Kriterien erfolgreich erfuellt sind, wird 's' oder 
-     "Du findest einen Zaubertrank, den Du sofort trinkst." ausgegeben
-     und dem Spieler ggf die Wahl der Attribute gegeben.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     0 bei Nichtvergabe, 1 bei erfolgreicher Vergabe.
+   /std/player/potion.c
 
-BEISPIELE:
-     string detail_papiere() {
-       if (this_player()->FindPotion(
-         break_string("Beim Rumwuehlen in den Papieren entdeckst Du einen "
-                      "kleinen Zaubertrank, den Du sofort trinkst.", 78)))
-         return "";  
-         // Es muss ein String zurueckgegeben werden, da man sonst
-         // die Fehlermeldung "Sowas siehst du hier nicht." bekommt
-       else
-         return "Die Papiere sind alle unbeschriftet.\n";
-     }
 
-SIEHE AUCH:
-     Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
-     Verwandt:  AddKnownPotion(), RemoveKnownPotion(), InList()
-     Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
-     Befehl:    traenke (fuer Magier zum Einschalten des Findens von ZTs)
+ARGUMENTE
+=========
+
+   string s
+     Ausgabetext. Wenn 0/Leerstring, wird Default verwendet.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt einem aufrufenden Spieler eventuell diesen ZT.
+
+
+
+   Das aufrufende Spielerobjekt muss dafuer:
+   * diesen ZT im Potionmaster in seiner Liste eingetragen haben
+   * diesen ZT in der Liste der bekannten Traenke haben (durch
+     Orakel also fuer ihn auch freigeschaltet)
+   * darf keine Playerkills haben (P_KILLS)
+   * darf nicht im Editiermodus sein
+   * darf kein Geist sein (Ausnahme: Geisterschloss)
+
+   Wenn alle Kriterien erfolgreich erfuellt sind, wird 's' oder
+   "Du findest einen Zaubertrank, den Du sofort trinkst." ausgegeben
+   und dem Spieler ggf die Wahl der Attribute gegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   0 bei Nichtvergabe, 1 bei erfolgreicher Vergabe.
+
+
+BEISPIELE
+=========
+
+   string detail_papiere() {
+     if (this_player()->FindPotion(
+       break_string("Beim Rumwuehlen in den Papieren entdeckst Du einen "
+                    "kleinen Zaubertrank, den Du sofort trinkst.", 78)))
+       return "";
+       // Es muss ein String zurueckgegeben werden, da man sonst
+       // die Fehlermeldung "Sowas siehst du hier nicht." bekommt
+     else
+       return "Die Papiere sind alle unbeschriftet.\n";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+   Befehl:    traenke (fuer Magier zum Einschalten des Findens von ZTs)
 
 6.Feb 2016 Gloinson
diff --git a/doc/lfun/FindRangedTarget b/doc/lfun/FindRangedTarget
index 75970fb..5fa6776 100644
--- a/doc/lfun/FindRangedTarget
+++ b/doc/lfun/FindRangedTarget
@@ -1,40 +1,63 @@
+
 FindRangedTarget()
+******************
 
-FUNKTION:
-    static string FindRangedTarget(string str, mapping shoot)
 
-DEFINIERT IN:
-    /std/ranged_weapon.c
+FUNKTION
+========
 
-ARGUMENTE:
-    string str    - Schusssyntax
-    mapping shoot - Schussdaten
+   static string FindRangedTarget(string str, mapping shoot)
 
-BESCHREIBUNG:
-    Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und eine
-    eventuell bereits modifizierte Syntax und versucht einen passenden Gegner
-    im Raum oder im Gebiet (P_SHOOTING_AREA) zu finden.
-    Dieser wird in SI_ENEMY im Mapping 'shoot' eingetragen und ein Wert != 0
-    zurueckgegeben.
 
-RUECKGABEWERT:
-    0     bei Fehlschlag
-    != 0  bei gueltigem SI_ENEMY in 'shoot'
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    'shoot' enthaelt normalerweise folgende Eintraege:
-    * Key P_WEAPON:       die Schusswaffe
-    * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
-    * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
-    * Key P_WC:           P_SHOOTING_WC der Waffe
+   /std/ranged_weapon.c
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
-    Team:      PresentPosition(L)
-    Suche:     present, SelectFarEnemy(L)
-    Syntax:    _unparsed_args(L)
-    Sonstiges: fernwaffen
 
-28.Jul 2014 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   string str    - Schusssyntax
+   mapping shoot - Schussdaten
+
+
+BESCHREIBUNG
+============
+
+   Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und eine
+   eventuell bereits modifizierte Syntax und versucht einen passenden Gegner
+   im Raum oder im Gebiet (P_SHOOTING_AREA) zu finden.
+   Dieser wird in SI_ENEMY im Mapping 'shoot' eingetragen und ein Wert != 0
+   zurueckgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   0     bei Fehlschlag
+   != 0  bei gueltigem SI_ENEMY in 'shoot'
+
+
+BEMERKUNGEN
+===========
+
+   'shoot' enthaelt normalerweise folgende Eintraege:
+   * Key P_WEAPON:       die Schusswaffe
+   * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
+   * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
+   * Key P_WC:           P_SHOOTING_WC der Waffe
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Team:      PresentPosition(L)
+   Suche:     present, SelectFarEnemy(L)
+   Syntax:    _unparsed_args(L)
+   Sonstiges: fernwaffen
+
+28.Jul 2014 Gloinson
diff --git a/doc/lfun/Flee b/doc/lfun/Flee
index 6a63d89..995cf26 100644
--- a/doc/lfun/Flee
+++ b/doc/lfun/Flee
@@ -1,57 +1,83 @@
+
 Flee()
+******
 
-FUNKTION:
-        public varargs void Flee( object oldenv, int force )
 
-DEFINIERT IN:
-        /sys/living/combat.h
-        /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-        oldenv
-          Ein Raum oder 0.
-          Wird ein Raum angegeben, dann muss sich der Fluechtende in diesem
-          Raum befinden, damit er versucht, zu fluechten, es sei denn, das
-          optionale Flag "force" ist gesetzt.
-        force
-          1, wenn der spieler unabhaengig von seiner Vorsicht fluechten soll.
-          0 sonst.
+   public varargs void Flee( object oldenv, int force )
 
-BESCHREIBUNG:
-        Flee() wird im heart_beat() oder von CheckWimpyAndFlee() aufgerufen,
-        um den Spieler fluechten zu lassen. Man kann die Funktion im Spieler
-        auch "von Hand" aufrufen, beispielsweise in einem Spell. Man sollte
-        dann force auf 1 setzen, damit der Spieler unabhaengig von seiner
-        Vorsicht fluechtet.
-        Hierbei kann die Flucht dazu fuehren, dass man die Teamreihe wechselt,
-        aber auch, dass man den Raum verlaesst.
-        
-RUeCKGABEWERT:
-        keiner
 
-BEMERKUNGEN:
+DEFINIERT IN
+============
 
-BEISPIELE:
-        this_player()->Flee(0, 1);
-        // Der Spieler soll fluechten, egal, ob seine Lebenspunkte geringer
-        // als seine Vorsicht sind und unabhaengig von seiner Position.
-        
-        this_player()->Flee( find_object("/gilden/abenteurer") );
-        // Der Spieler soll fluechten, wenn er sich in der Abenteurergilde
-        // befindet (oder wenn diese nicht existiert)
-        
-        this_player()->Flee( "/gilden/abenteurer" );
-        // Der Spieler wird nicht fluechten, da der Vergleich von Dateiname
-        // und dem Raum 0 ergibt.
+   /sys/living/combat.h
+   /std/living/combat.c
 
-        this_player()->Flee( find_object("/gilden/abenteurer"), 1);
-        // Der Spieler soll auf jeden Fall fluechten, egal ob er sich in der
-        // Abenteurergilde befindet oder nicht. Grund: Gesetztes force-Flag.
-        
-        
-        
-SIEHE AUCH:
-        CheckWimpyAndFlee(), Defend(), heart_beat(), 
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   oldenv
+     Ein Raum oder 0.
+     Wird ein Raum angegeben, dann muss sich der Fluechtende in diesem
+     Raum befinden, damit er versucht, zu fluechten, es sei denn, das
+     optionale Flag "force" ist gesetzt.
+   force
+     1, wenn der spieler unabhaengig von seiner Vorsicht fluechten soll.
+     0 sonst.
+
+
+BESCHREIBUNG
+============
+
+   Flee() wird im heart_beat() oder von CheckWimpyAndFlee() aufgerufen,
+   um den Spieler fluechten zu lassen. Man kann die Funktion im Spieler
+   auch "von Hand" aufrufen, beispielsweise in einem Spell. Man sollte
+   dann force auf 1 setzen, damit der Spieler unabhaengig von seiner
+   Vorsicht fluechtet.
+   Hierbei kann die Flucht dazu fuehren, dass man die Teamreihe wechselt,
+   aber auch, dass man den Raum verlaesst.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   this_player()->Flee(0, 1);
+   // Der Spieler soll fluechten, egal, ob seine Lebenspunkte geringer
+   // als seine Vorsicht sind und unabhaengig von seiner Position.
+
+
+
+   this_player()->Flee( find_object("/gilden/abenteurer") );
+   // Der Spieler soll fluechten, wenn er sich in der Abenteurergilde
+   // befindet (oder wenn diese nicht existiert)
+
+
+
+   this_player()->Flee( "/gilden/abenteurer" );
+   // Der Spieler wird nicht fluechten, da der Vergleich von Dateiname
+   // und dem Raum 0 ergibt.
+
+   this_player()->Flee( find_object("/gilden/abenteurer"), 1);
+   // Der Spieler soll auf jeden Fall fluechten, egal ob er sich in der
+   // Abenteurergilde befindet oder nicht. Grund: Gesetztes force-Flag.
+
+
+SIEHE AUCH
+==========
+
+   CheckWimpyAndFlee(), Defend(), heart_beat(),
+
 Last modified: Wed Nov 12 14:44:42 2003 by Bambi
diff --git a/doc/lfun/FreeHands b/doc/lfun/FreeHands
index 2bed9b0..c876b21 100644
--- a/doc/lfun/FreeHands
+++ b/doc/lfun/FreeHands
@@ -1,36 +1,60 @@
-FreeHands
-FUNKTION:
-     public varargs int FreeHands(object ob)
 
-DEFINIERT IN:
-     /std/living/combat.c
+FreeHands()
+***********
 
-ARGUMENTE:
-     ob - das Objekt, dessen Handnutzung vorbei ist
-        - kann 0 sein, dann wird PO benutzt
 
-RUECKGABEWERT:
-     0, wenn kein Objekt uebergeben wurde oder kein PO existiert
-     1, sonst
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Befreit die Haende eines Livings von ein bestimmten Objekt.
-     Es werden _alle_ Haende wieder freigegeben.
+   public varargs int FreeHands(object ob)
 
-BEISPIELE:
-     > halte seil fest
-     ...
-     this_player()->UseHands(this_object(),2);
-     ...
 
-     > lasse seil los
-     ...
-     this_player()->FreeHands(this_object());
-     ...
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_HANDS, P_HANDS_USED_BY
-     P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
-     UseHands
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, dessen Handnutzung vorbei ist
+      - kann 0 sein, dann wird PO benutzt
+
+
+RUECKGABEWERT
+=============
+
+   0, wenn kein Objekt uebergeben wurde oder kein PO existiert
+   1, sonst
+
+
+BESCHREIBUNG
+============
+
+   Befreit die Haende eines Livings von ein bestimmten Objekt.
+   Es werden _alle_ Haende wieder freigegeben.
+
+
+BEISPIELE
+=========
+
+   > halte seil fest
+   ...
+   this_player()->UseHands(this_object(),2);
+   ...
+
+   > lasse seil los
+   ...
+   this_player()->FreeHands(this_object());
+   ...
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands
 
 1.Feb.2004 Gloinson
diff --git a/doc/lfun/GetAquarium b/doc/lfun/GetAquarium
index cea8d49..3896ac5 100644
--- a/doc/lfun/GetAquarium
+++ b/doc/lfun/GetAquarium
@@ -1,37 +1,59 @@
+
 GetAquarium()
+*************
 
-FUNKTION:
-     varargs public string* GetAquarium(object angel)
 
-ARGUMENTE:
-     Das optionale Argument <angel> ist die Angel selbst.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die Funktion wird beim Angeln in Raeumen gerufen, wenn diese als 
-     Gewaessertyp W_USER gesetzt haben (siehe Manpage zu P_WATER).
-     Aus der zurueckgegebenen Liste der Pfade wird einer zufaellig aus-
-     gewaehlt und das Objekt geclont. 
+   varargs public string* GetAquarium(object angel)
 
-RUECKGABEWERT:
-     String-Array mit Pfadnamen zu den in diesem Raum fangbaren Fischen.
 
-BEMERKUNG:
-     Man kann die Fangchancen durch Mehrfachnennung einzelner Eintraege 
-     modifizieren. Es muss sich bei den Eintraegen um lad- und clonebare
-     Objekte handeln.
-     Fuer selbstprogrammierte Fische ist das Basisobjekt 
-     /std/items/fishing/fish zu verwenden. Einige vorgefertigte Fische 
-     finden sich darueber hinaus in /items/fishing/aquarium/
+ARGUMENTE
+=========
 
-BEISPIEL:
-     varargs string* GetAquarium(object angel) {
-       return ({"/d/dschungel/rikus/q4e/obj/stichling",
-                "/d/dschungel/rikus/q4e/obj/karpfen",
-                "/p/seher/partymonster/obj/fisch"});
-     }
+   Das optionale Argument <angel> ist die Angel selbst.
 
-SIEHE AUCH:
-    Properties: P_WATER, P_FISH
 
------------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Die Funktion wird beim Angeln in Raeumen gerufen, wenn diese als
+   Gewaessertyp W_USER gesetzt haben (siehe Manpage zu P_WATER).
+   Aus der zurueckgegebenen Liste der Pfade wird einer zufaellig aus-
+   gewaehlt und das Objekt geclont.
+
+
+RUECKGABEWERT
+=============
+
+   String-Array mit Pfadnamen zu den in diesem Raum fangbaren Fischen.
+
+
+BEMERKUNG
+=========
+
+   Man kann die Fangchancen durch Mehrfachnennung einzelner Eintraege
+   modifizieren. Es muss sich bei den Eintraegen um lad- und clonebare
+   Objekte handeln.
+   Fuer selbstprogrammierte Fische ist das Basisobjekt
+   /std/items/fishing/fish zu verwenden. Einige vorgefertigte Fische
+   finden sich darueber hinaus in /items/fishing/aquarium/
+
+
+BEISPIEL
+========
+
+   varargs string* GetAquarium(object angel) {
+     return ({"/d/dschungel/rikus/q4e/obj/stichling",
+              "/d/dschungel/rikus/q4e/obj/karpfen",
+              "/p/seher/partymonster/obj/fisch"});
+   }
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_WATER, P_FISH
+
 zuletzt geaendert: 2014-Sep-02, Arathorn
diff --git a/doc/lfun/GetDetail b/doc/lfun/GetDetail
index 4bd7301..7e5a092 100644
--- a/doc/lfun/GetDetail
+++ b/doc/lfun/GetDetail
@@ -1,67 +1,90 @@
+
 GetDetail()
+***********
 
-FUNKTION:
-    varargs string GetDetail(string key, string race, int sense)
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    key
-      Das zu ermittelnde Detail.
-    race
-      Rasse des ermittelnden Objektes (falls es ein Lebewesen ist).
-    sense
-      Die Art des zu untersuchenden Details:
-        Untersuchen, Riechen, Hoeren, Tasten.
+   varargs string GetDetail(string key, string race, int sense)
 
-BESCHREIBUNG:
-    Die Beschreibung des gewuenschten Details wird ermittelt. Dabei
-    werden rassenspezifische Details beruecksichtigt. Es gibt hierbei
-    verschiedene Detailarten, deren Typ man in <sense> angibt:
-      SENSE_VIEW    - Fuer Defaultdetails zum Untersuchen.
-      SENSE_SMELL   - Fuer Details, die man riechen kann.
-      SENSE_SOUND   - Fuer Details, die man hoeren kann.
-      SENSE_TOUCH   - Fuer Details, die man abtasten kann.
-      SENSE_READ    - Fuer Details, die man lesen kann.
 
-    Dabei ist 0 == SENSE_VIEW.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Die Beschreibung des Details oder 0, wenn es dieses Detail nicht
-    gibt.
+   /std/thing/description.c
 
-BEISPIEL:
-    Im folgenden wird ein kleines Testdetail generiert:
-      AddDetail("test","Das ist ein Test!\n");
-    Im folgenden wird das Detail entfernt, wenn es existiert. Dies ist
-    eigentlich nicht noetig, da RemoveDetail() damit zurechtkommt, aber
-    eventuell sind ja noch weitere Aktionen noetig.
-      if(GetDetail("test"))
-      { RemoveDetail("test");
-        ...
-      }
-    Ein Geruch kann man folgendermassen erzeugen:
-      AddSmells("gold",
-        ([0      :"Gold kann man nicht riechen!\n",
-          "zwerg":"Deine trainierte Nase riecht es muehelos!\n"]));
-    Die Abfrage des Details gestaltet sich recht einfach:
-      GetDetail("gold","zwerg",SENSE_SMELL);
-    Die Funktion liefert das Detail fuer den Zwerg.
-      GetDetail("gold",0,SENSE_SMELL);
-    Die Funktion liefert das Detail fuer die restlichen Rassen.
-      GetDetail("gold",0,SENSE_SOUND);
-    Ein Sounddetail mit dem Namen "gold" existiert nicht, die Funktion
-    liefert 0 zurueck.
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveReadDetail(), RemoveSmells(), RemoveDetail(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
-               P_TOUCH_DETAILS, P_SPECIAL_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: break_string()
+ARGUMENTE
+=========
+
+   key
+     Das zu ermittelnde Detail.
+   race
+     Rasse des ermittelnden Objektes (falls es ein Lebewesen ist).
+   sense
+     Die Art des zu untersuchenden Details:
+       Untersuchen, Riechen, Hoeren, Tasten.
+
+
+BESCHREIBUNG
+============
+
+   Die Beschreibung des gewuenschten Details wird ermittelt. Dabei
+   werden rassenspezifische Details beruecksichtigt. Es gibt hierbei
+   verschiedene Detailarten, deren Typ man in <sense> angibt:
+     SENSE_VIEW    - Fuer Defaultdetails zum Untersuchen.
+     SENSE_SMELL   - Fuer Details, die man riechen kann.
+     SENSE_SOUND   - Fuer Details, die man hoeren kann.
+     SENSE_TOUCH   - Fuer Details, die man abtasten kann.
+     SENSE_READ    - Fuer Details, die man lesen kann.
+
+   Dabei ist 0 == SENSE_VIEW.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Beschreibung des Details oder 0, wenn es dieses Detail nicht
+   gibt.
+
+
+BEISPIEL
+========
+
+   Im folgenden wird ein kleines Testdetail generiert:
+     AddDetail("test","Das ist ein Test!\n");
+   Im folgenden wird das Detail entfernt, wenn es existiert. Dies ist
+   eigentlich nicht noetig, da RemoveDetail() damit zurechtkommt, aber
+   eventuell sind ja noch weitere Aktionen noetig.
+     if(GetDetail("test"))
+     { RemoveDetail("test");
+       ...
+     }
+   Ein Geruch kann man folgendermassen erzeugen:
+     AddSmells("gold",
+       ([0      :"Gold kann man nicht riechen!\n",
+         "zwerg":"Deine trainierte Nase riecht es muehelos!\n"]));
+   Die Abfrage des Details gestaltet sich recht einfach:
+     GetDetail("gold","zwerg",SENSE_SMELL);
+   Die Funktion liefert das Detail fuer den Zwerg.
+     GetDetail("gold",0,SENSE_SMELL);
+   Die Funktion liefert das Detail fuer die restlichen Rassen.
+     GetDetail("gold",0,SENSE_SOUND);
+   Ein Sounddetail mit dem Namen "gold" existiert nicht, die Funktion
+   liefert 0 zurueck.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveReadDetail(), RemoveSmells(), RemoveDetail(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: break_string()
 
 27. Jan 2013 Gloinson
diff --git a/doc/lfun/GetDoorsMapping b/doc/lfun/GetDoorsMapping
index 4c68a9d..68beb0d 100644
--- a/doc/lfun/GetDoorsMapping
+++ b/doc/lfun/GetDoorsMapping
@@ -1,24 +1,46 @@
+
 GetDoorsMapping()
+*****************
 
-FUNKTION:
-    mapping GetDoorsMapping()
 
-BESCHREIBUNG:
-    Mit dieser Funktion erhaelt man das Mapping der vorhandenen
-    Seherportale.
-    
-    Die Struktur ist von der Form: 
-	([ Pfad: Portalnummer; Portalbeschreibung, ])
-    Es wird eine Kopie dieses Mappings geliefert.
+FUNKTION
+========
 
-RUECKGABEWERT:
-    Das Sehertormapping
+   mapping GetDoorsMapping()
 
-BEMERKUNGEN:
-    Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
 
-BEISPIELE:
-    "/d/seher/portale/sehertormaster"->GetDoorsMapping();
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-    DoorIsKnown, ShowDoors, Teleport, DiscoverDoor
+   Mit dieser Funktion erhaelt man das Mapping der vorhandenen
+   Seherportale.
+
+
+
+   Die Struktur ist von der Form:
+       ([ Pfad: Portalnummer; Portalbeschreibung, ])
+   Es wird eine Kopie dieses Mappings geliefert.
+
+
+RUECKGABEWERT
+=============
+
+   Das Sehertormapping
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   "/d/seher/portale/sehertormaster"->GetDoorsMapping();
+
+
+SIEHE AUCH
+==========
+
+   DoorIsKnown, ShowDoors, Teleport, DiscoverDoor
diff --git a/doc/lfun/GetEnemies b/doc/lfun/GetEnemies
index 334d0bf..e288250 100644
--- a/doc/lfun/GetEnemies
+++ b/doc/lfun/GetEnemies
@@ -1,34 +1,53 @@
+
 GetEnemies()
+************
 
-FUNKTION:
-	mapping GetEnemies();
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	keine
+   mapping GetEnemies();
 
-RUeCKGABEWERT:
-	Mapping mit bekannten Gegnern als Schluessel und Zeiten als
-	Eintraegen.
 
-BESCHREIBUNG:
-	Diese Funktion liefert das interne Mapping zurueck, in dem alle
-	Gegner abgespeichert sind. Diese Gegner stellen die Schluessel in
-	dem Mapping dar. Als Eintraege sind die Zeiten vermerkt, nach
-	welcher Zeit ein Gegner automatisch wieder vergessen werden soll.
-	Mehr Informationen dazu sind in der Dokumentation zur aehnlich
-	gearteten Funktion QueryEnemies() zu finden, die jedoch zwei Arrays
-	getrennte zurueckliefert.
-	Achtung: Es wird keine Kopie des Mappings erstellt. Saemtliche
-	Veraenderungen in dem Mapping wirken sich unmittelbar auf die
-	interne Gegnerliste aus. Die Funktion sollte deshalb nicht genutzt
-	werden. Gegner ein- und austragen sollte man nur mittels
-	InsertEnemy() und StopHuntFor().
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	QueryEnemies(), SetEnemies(), InsertEnemy(), StopHuntFor()
+   /std/living/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   Mapping mit bekannten Gegnern als Schluessel und Zeiten als
+   Eintraegen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert das interne Mapping zurueck, in dem alle
+   Gegner abgespeichert sind. Diese Gegner stellen die Schluessel in
+   dem Mapping dar. Als Eintraege sind die Zeiten vermerkt, nach
+   welcher Zeit ein Gegner automatisch wieder vergessen werden soll.
+   Mehr Informationen dazu sind in der Dokumentation zur aehnlich
+   gearteten Funktion QueryEnemies() zu finden, die jedoch zwei Arrays
+   getrennte zurueckliefert.
+   Achtung: Es wird keine Kopie des Mappings erstellt. Saemtliche
+   Veraenderungen in dem Mapping wirken sich unmittelbar auf die
+   interne Gegnerliste aus. Die Funktion sollte deshalb nicht genutzt
+   werden. Gegner ein- und austragen sollte man nur mittels
+   InsertEnemy() und StopHuntFor().
+
+
+SIEHE AUCH
+==========
+
+   QueryEnemies(), SetEnemies(), InsertEnemy(), StopHuntFor()
+
 Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/lfun/GetExits b/doc/lfun/GetExits
index 03b9306..a235b1f 100644
--- a/doc/lfun/GetExits
+++ b/doc/lfun/GetExits
@@ -1,26 +1,46 @@
+
 GetExits()
+**********
 
-FUNKTION:
-     varargs string GetExits(object viewer);
 
-DEFINIERT IN:
-     /std/room/exits
+FUNKTION
+========
 
-ARGUMENTE:
-     viewer
-          Derjenige, der sich die Ausgaenge anschaut.
+   varargs string GetExits(object viewer);
 
-BESCHREIBUNG:
-     Es wird eine Liste der fuer viewer sichtbaren Ausgaenge erstellt.
 
-RUeCKGABEWERT:
-     String mit der Liste der sichtbaren Ausgaenge.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddExit(), AddSpecialExit(), GetExits(),
-     RemoveExit(), RemoveSpecialExit(),
-     GuardExit(),
-     H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   viewer
+        Derjenige, der sich die Ausgaenge anschaut.
+
+
+BESCHREIBUNG
+============
+
+   Es wird eine Liste der fuer viewer sichtbaren Ausgaenge erstellt.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit der Liste der sichtbaren Ausgaenge.
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/GetFValue b/doc/lfun/GetFValue
index ac17224..30db195 100644
--- a/doc/lfun/GetFValue
+++ b/doc/lfun/GetFValue
@@ -1,37 +1,47 @@
-FUNKTION:
 
-	varargs int GetFValue(string vname, mapping map, object pl) 
+GetFValue()
+***********
 
 
-ARGUMENTE:
+FUNKTION
+========
 
-	vname	: name des parameters aus dem spellmapping
-	map   	: spellmapping
-	pl 	: caster
+   varargs int GetFValue(string vname, mapping map, object pl)
 
 
-BESCHREIBUNG:
+ARGUMENTE
+=========
 
-	Berechnet den Wert und den Factor des Parameters in spellmapping.
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
 
 
-RUECKGABEWERT:
+BESCHREIBUNG
+============
 
-	Berechneter Wert*Factor aus dem Spellmapping.
+   Berechnet den Wert und den Factor des Parameters in spellmapping.
 
 
-BEMERKUNGEN:
+RUECKGABEWERT
+=============
 
-	Ruft GetValue(vname,map,pl)*GetFactor(vname,map,pl)/100 auf.
+   Berechneter Wert*Factor aus dem Spellmapping.
 
 
-BEISPIEL:
+BEMERKUNGEN
+===========
 
-	xxx=GetFValue(SI_SKILLDAMAGE,sinfo,caster);
+   Ruft GetValue(vname,map,pl)*GetFactor(vname,map,pl)/100 auf.
+
+
+BEISPIEL
+========
+
+   xxx=GetFValue(SI_SKILLDAMAGE,sinfo,caster);
 
 Siehe auch:
 
-	"GetValue", "GetFactor", "GetOffset", "GetValueO", "GetFValueO"
+   "GetValue", "GetFactor", "GetOffset", "GetValueO", "GetFValueO"
 
-	Ausfuehrliches Beispiel siehe "GetFValueO".
-
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/lfun/GetFValueO b/doc/lfun/GetFValueO
index e954e4b..25650fb 100644
--- a/doc/lfun/GetFValueO
+++ b/doc/lfun/GetFValueO
@@ -1,74 +1,85 @@
-FUNKTION:
 
-	varargs int GetFValueO(string vname, mapping map, object pl) 
+GetFValueO()
+************
 
 
-ARGUMENTE:
+FUNKTION
+========
 
-	vname	: name des parameters aus dem spellmapping
-	map   	: spellmapping
-	pl 	: caster
+   varargs int GetFValueO(string vname, mapping map, object pl)
 
 
-BESCHREIBUNG:
+ARGUMENTE
+=========
 
-	'Berechnet' den Wert, den Factor und den Offset des Parameters 
-	in spellmapping.
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
 
 
-RUECKGABEWERT:
+BESCHREIBUNG
+============
 
-	Berechneter (Wert*Factor)/100+Offset aus dem Spellmapping.
+   'Berechnet' den Wert, den Factor und den Offset des Parameters
+   in spellmapping.
 
 
-BEMERKUNGEN:
+RUECKGABEWERT
+=============
 
-	Ruft (GetValue(vname,map,pl)*GetFactor(vname,map,pl))/100+
-	GetOffset(vname,map,pl) auf.
+   Berechneter (Wert*Factor)/100+Offset aus dem Spellmapping.
 
 
-BEISPIEL:
+BEMERKUNGEN
+===========
 
-	AddSpell("egal",10,
-	([
-	OFFSET(SI_COST):([SM_RACE:(["Zwerg":4]) ]),
-	FACTOR(SI_COST):([SM_RACE:(["Mensch":90]) ]),
-	SI_SKILLDAMAGE:100,
-	OFFSET(SI_SKILLDAMAGE):25,
-	SI_SKILLDAMAGE_TYPE:DT_EXAMPLE,
-	FACTOR(SI_SKILLDAMAGE):([SM_RACE:(["Zwerg":80,"Elf":120]) ]) 
-	]));
+   Ruft (GetValue(vname,map,pl)*GetFactor(vname,map,pl))/100+
+   GetOffset(vname,map,pl) auf.
 
-	So, was sollen uns diese Zeilen sagen?
 
-	Es wird ein Spruch Names 'egal' ins Spellbook eingetragen. Er kostet
-	regulaer 10 MP. Fuer Zwerge allerdings wird ein Offset von 4 MP 
-	aufgeschlagen. Ausserdem machen Zwerge nur 80% Schaden, Elfen 
-	hingegen 120%. Der Grundschaden betraegt 100 Schadenspunkte, der 
-	Offset des Schadens nochmal 25. Menschen bezahlen fuer diesen 
-	Spruch nur 90% der Kosten.
+BEISPIEL
+========
 
-	Nun die Rechenbeispiele:
+   AddSpell("egal",10,
+   ([
+   OFFSET(SI_COST):([SM_RACE:(["Zwerg":4]) ]),
+   FACTOR(SI_COST):([SM_RACE:(["Mensch":90]) ]),
+   SI_SKILLDAMAGE:100,
+   OFFSET(SI_SKILLDAMAGE):25,
+   SI_SKILLDAMAGE_TYPE:DT_EXAMPLE,
+   FACTOR(SI_SKILLDAMAGE):([SM_RACE:(["Zwerg":80,"Elf":120]) ])
+   ]));
 
-	Fuer die Kosten:
-		Value	ValueO	FValue	FValueO
-	Mensch	   10	    10	     9	      9
-	Elf   	   10	    10	    10       10
-	Hobbit	   10	    10	    10	     10
-	Zwerg	   10	    14	    10	     14
+   So, was sollen uns diese Zeilen sagen?
 
-	Fuer den Schaden:
-			Value	ValueO	FValue	FValueO
-	Mensch		100	125	100	125
-	Elf  		100	125	120	150
-	Hobbit		100	125	100	125
-	Zwerg		100	125	 80	100
+   Es wird ein Spruch Names 'egal' ins Spellbook eingetragen. Er kostet
+   regulaer 10 MP. Fuer Zwerge allerdings wird ein Offset von 4 MP
+   aufgeschlagen. Ausserdem machen Zwerge nur 80% Schaden, Elfen
+   hingegen 120%. Der Grundschaden betraegt 100 Schadenspunkte, der
+   Offset des Schadens nochmal 25. Menschen bezahlen fuer diesen
+   Spruch nur 90% der Kosten.
 
-	An diesem Beispiel sieht man deutlich, wie man mit ein paar 
-	Offsets und Faktoren die Wirkung eines Spruches deutlich 
-	veraendern kann. Es sollte bei eigenen Berechnungen immer 
-	GetFValueO benutzt werden.
+   Nun die Rechenbeispiele:
+
+   Fuer die Kosten:
+           Value   ValueO  FValue  FValueO
+   Mensch     10       10       9        9
+   Elf        10       10      10       10
+   Hobbit     10       10      10       10
+   Zwerg      10       14      10       14
+
+   Fuer den Schaden:
+                   Value   ValueO  FValue  FValueO
+   Mensch          100     125     100     125
+   Elf             100     125     120     150
+   Hobbit          100     125     100     125
+   Zwerg           100     125      80     100
+
+   An diesem Beispiel sieht man deutlich, wie man mit ein paar
+   Offsets und Faktoren die Wirkung eines Spruches deutlich
+   veraendern kann. Es sollte bei eigenen Berechnungen immer
+   GetFValueO benutzt werden.
 
 Siehe auch:
 
-	"GetValue", "GetFactor", "GetOffset", "GetFValue", "GetValueO"
+   "GetValue", "GetFactor", "GetOffset", "GetFValue", "GetValueO"
diff --git a/doc/lfun/GetFactor b/doc/lfun/GetFactor
index 42812dd..adc6a19 100644
--- a/doc/lfun/GetFactor
+++ b/doc/lfun/GetFactor
@@ -1,37 +1,48 @@
-FUNKTION:
 
-	varargs int GetFactor(string vname, mapping map, object pl) 
+GetFactor()
+***********
 
 
-ARGUMENTE:
+FUNKTION
+========
 
-	vname	: name des parameters aus dem spellmapping
-	map   	: spellmapping
-	pl 	: caster
+   varargs int GetFactor(string vname, mapping map, object pl)
 
 
-BESCHREIBUNG:
+ARGUMENTE
+=========
 
-	'Berechnet' den Factor des Parameters in spellmapping.
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
 
 
-RUECKGABEWERT:
+BESCHREIBUNG
+============
 
-	Berechneter Factor aus dem Spellmapping.
+   'Berechnet' den Factor des Parameters in spellmapping.
 
 
-BEMERKUNGEN:
+RUECKGABEWERT
+=============
 
-	Beschraekung auf 10-1000. Werte groesser oder kleiner als diese
-	werden 'abgeschnitten'.
+   Berechneter Factor aus dem Spellmapping.
 
 
-BEISPIEL:
+BEMERKUNGEN
+===========
 
-	xxx=GetFactor(SI_SKILLDAMAGE,sinfo,caster);
+   Beschraekung auf 10-1000. Werte groesser oder kleiner als diese
+   werden 'abgeschnitten'.
+
+
+BEISPIEL
+========
+
+   xxx=GetFactor(SI_SKILLDAMAGE,sinfo,caster);
 
 Siehe auch:
 
-	"GetValue", "GetOffset", "GetFValue", "GetValueO", "GetFValueO"
+   "GetValue", "GetOffset", "GetFValue", "GetValueO", "GetFValueO"
 
-	Ausfuehrliches Beispiel siehe "GetFValueO".
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/lfun/GetGroupMembers b/doc/lfun/GetGroupMembers
index ef70aa3..8c765d7 100644
--- a/doc/lfun/GetGroupMembers
+++ b/doc/lfun/GetGroupMembers
@@ -1,36 +1,60 @@
+
 GetGroupMembers()
-FUNKTION:
-     string *GetGroupMembers(string grp)
+*****************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     string grp - Gruppenname
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Gibt alle dieser Gruppe zugehoerigen Materialien zurueck. Dazu gut, sich
-     einen Ueberblick ueber die aktuelle Liste zu verschaffen.
+   string *GetGroupMembers(string grp)
 
-RUECKGABEWERT:
-     Array von Strings mit Materialien oder ({})
 
-BEISPIELE:
-     // wir wollen irgend ein Metall haben, nennen dies aber beim Namen
-     int ind;
-     string* likeit;
-     likeit=MATERIALDB->GetGroupMembers(MATGROUP_METAL);
-     ind=random(sizeof(likeit));
-     ...
-     write("Der Schmied sagt: Mir fehlt noch "+
-	   MATERIALDB->MaterialName(likeit[ind], WER, 100)+".\n");
-     ...
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetMatMembership()
+   /p/daemon/materialdb.c (MATERIALDB)
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   string grp - Gruppenname
+
+
+BESCHREIBUNG
+============
+
+   Gibt alle dieser Gruppe zugehoerigen Materialien zurueck. Dazu gut, sich
+   einen Ueberblick ueber die aktuelle Liste zu verschaffen.
+
+
+RUECKGABEWERT
+=============
+
+   Array von Strings mit Materialien oder ({})
+
+
+BEISPIELE
+=========
+
+   // wir wollen irgend ein Metall haben, nennen dies aber beim Namen
+   int ind;
+   string* likeit;
+   likeit=MATERIALDB->GetGroupMembers(MATGROUP_METAL);
+   ind=random(sizeof(likeit));
+   ...
+   write("Der Schmied sagt: Mir fehlt noch "+
+         MATERIALDB->MaterialName(likeit[ind], WER, 100)+".\n");
+   ...
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/GetInfoArr b/doc/lfun/GetInfoArr
index ef71482..ba6c4c4 100644
--- a/doc/lfun/GetInfoArr
+++ b/doc/lfun/GetInfoArr
@@ -1,31 +1,55 @@
+
 GetInfoArr()
-FUNKTION:
-     static mixed *GetInfoArr(string str)
+************
 
-DEFINIERT IN:
-     /std/npc/info.c
 
-ARGUMENTE:
-     string str	 - Schluesselwort der Frage
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Sucht nach einem Schluesselwort in den abgelegten Antworten
-     und gibt die Informationen oder einen 0er-Array zurueck.
+   static mixed *GetInfoArr(string str)
 
-BEMERKUNGEN:
-     Ueberschreibbar :)
 
-RUECKGABEWERT:
-     Siehe Parameter von AddInfo:
+DEFINIERT IN
+============
 
-     Array mit:
-     ({ <Infostring> (0 fuer keine Antwort),
-        <Indent-String> (Default: 0),
-        <Silent> (Default: 0),
-        <Casebased> (Default: 0)
-     })
+   /std/npc/info.c
 
-SIEHE AUCH:
-     Verwandt: AddInfo, do_frage
+
+ARGUMENTE
+=========
+
+   string str  - Schluesselwort der Frage
+
+
+BESCHREIBUNG
+============
+
+   Sucht nach einem Schluesselwort in den abgelegten Antworten
+   und gibt die Informationen oder einen 0er-Array zurueck.
+
+
+BEMERKUNGEN
+===========
+
+   Ueberschreibbar :)
+
+
+RUECKGABEWERT
+=============
+
+   Siehe Parameter von AddInfo:
+
+   Array mit:
+   ({ <Infostring> (0 fuer keine Antwort),
+      <Indent-String> (Default: 0),
+      <Silent> (Default: 0),
+      <Casebased> (Default: 0)
+   })
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: AddInfo, do_frage
 
 31.Mar 2007 Gloinson
diff --git a/doc/lfun/GetMatMembership b/doc/lfun/GetMatMembership
index 8859a38..e25e991 100644
--- a/doc/lfun/GetMatMembership
+++ b/doc/lfun/GetMatMembership
@@ -1,55 +1,79 @@
+
 GetMatMembership()
-FUNKTION:
-     string *GetMatMembership(string mat)
+******************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     string mat - ein Material
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Gibt alle Gruppen, denen das Material angehoert zurueck. Geeignet, um
-     die Eigenschaften eines Materials zu ueberpruefen.
+   string *GetMatMembership(string mat)
 
-RUECKGABEWERT:
-     Array von Strings mit Materialiengruppen oder ({})
 
-BEISPIELE:
-     // ein weiser Schmied:
-     int i;
-     string *mat, mname, mgroup;
-     mat=m_indices(ob->QueryProp(P_MATERIAL));
-     i=sizeof(mat);
+DEFINIERT IN
+============
 
-     write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
-     while(i--) {
-      // den Namen erkennen/aussprechen:
-      // Materialien werden allgemein etwas besser erkannt (zu 5%), aber
-      // alles aus Metall wird zu +100% besser erkannt ...
-      mname=MATERIALDB->MaterialName(mat[i], WER,
-	     ({5, ([MATRGROUP_METAL, 100])}));
+   /p/daemon/materialdb.c (MATERIALDB)
 
-      // und nur Metalle analysieren ...
-      if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
-       int j;
-       string *mgr;
-       mgr=MATERIALDB->GetMatMembership(mat[i]);
-       j=sizeof(mgr);
-       mgroup=" gehoert zu ";
-       while(j--) {
-        mgroup+=MATERIALDB->GroupName(mgr[j]);
-        if(j>0) mgroup+=", ";
-       }
-      } else mgroup=" kenne ich nicht";
-      printf("%-12.12s: %s\n",mname, mgroup);
+
+ARGUMENTE
+=========
+
+   string mat - ein Material
+
+
+BESCHREIBUNG
+============
+
+   Gibt alle Gruppen, denen das Material angehoert zurueck. Geeignet, um
+   die Eigenschaften eines Materials zu ueberpruefen.
+
+
+RUECKGABEWERT
+=============
+
+   Array von Strings mit Materialiengruppen oder ({})
+
+
+BEISPIELE
+=========
+
+   // ein weiser Schmied:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein etwas besser erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% besser erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATRGROUP_METAL, 100])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
      }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/GetOffset b/doc/lfun/GetOffset
index e3eba54..ee982b7 100644
--- a/doc/lfun/GetOffset
+++ b/doc/lfun/GetOffset
@@ -1,38 +1,49 @@
-FUNKTION:
 
-	varargs int GetOffset(string vname, mapping map, object pl) 
+GetOffset()
+***********
 
 
-ARGUMENTE:
+FUNKTION
+========
 
-	vname	: name des parameters aus dem spellmapping
-	map   	: spellmapping
-	pl 	: caster
+   varargs int GetOffset(string vname, mapping map, object pl)
 
 
-BESCHREIBUNG:
+ARGUMENTE
+=========
 
-	'Berechnet' den Offset des Parameters in spellmapping.
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
 
 
-RUECKGABEWERT:
+BESCHREIBUNG
+============
 
-	Berechneter Offset aus dem Spellmapping.
+   'Berechnet' den Offset des Parameters in spellmapping.
 
 
-BEMERKUNGEN:
+RUECKGABEWERT
+=============
 
-	Beschraekung auf -10000 bis +10000. Werte groesser oder kleiner 
-	als diese werden 'abgeschnitten'. Mehr als 100% Bonus oder Malus
-	gibts nicht ;-).
+   Berechneter Offset aus dem Spellmapping.
 
 
-BEISPIEL:
+BEMERKUNGEN
+===========
 
-	xxx=GetOffset(SI_SKILLDAMAGE,sinfo,caster);
+   Beschraekung auf -10000 bis +10000. Werte groesser oder kleiner
+   als diese werden 'abgeschnitten'. Mehr als 100% Bonus oder Malus
+   gibts nicht ;-).
+
+
+BEISPIEL
+========
+
+   xxx=GetOffset(SI_SKILLDAMAGE,sinfo,caster);
 
 Siehe auch:
 
-	"GetValue", "GetFactor", "GetFValue", "GetValueO", "GetFValueO"
+   "GetValue", "GetFactor", "GetFValue", "GetValueO", "GetFValueO"
 
-	Ausfuehrliches Beispiel siehe "GetFValueO".
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/lfun/GetOwner b/doc/lfun/GetOwner
index f6b0f98..92543f0 100644
--- a/doc/lfun/GetOwner
+++ b/doc/lfun/GetOwner
@@ -1,19 +1,38 @@
+
+GetOwner()
+**********
+
+
 GetOwner(L)
-FUNKTION:
-     string GetOwner();
+===========
 
-BESCHREIBUNG:
-     Wird vom Hoerrohr gerufen:
-      /d/inseln/shakedbeer/shakyisland/obj/hoerrohr.c
-     und kann einen Besitzer der Dateien zurueckgeben, der vom Besitzer
-     der Pfade in denen die Datei liegt abweicht.
 
-BEISPIELE:
-     string GetOwner() {
-      return "Tiamak";
-     }
+FUNKTION
+========
 
-SIEHE AUCH:
-     P_INFO
+   string GetOwner();
+
+
+BESCHREIBUNG
+============
+
+   Wird vom Hoerrohr gerufen:
+    /d/inseln/shakedbeer/shakyisland/obj/hoerrohr.c
+   und kann einen Besitzer der Dateien zurueckgeben, der vom Besitzer
+   der Pfade in denen die Datei liegt abweicht.
+
+
+BEISPIELE
+=========
+
+   string GetOwner() {
+    return "Tiamak";
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_INFO
 
 11. Mai 2004 Gloinson
diff --git a/doc/lfun/GetPhiolenInfos b/doc/lfun/GetPhiolenInfos
index 604d697..ccd0f68 100644
--- a/doc/lfun/GetPhiolenInfos
+++ b/doc/lfun/GetPhiolenInfos
@@ -1,97 +1,122 @@
+
+GetPhiolenInfos()
+*****************
+
+
 GetPhiolenInfos(L)
+==================
 
-FUNKTION:
-     mixed *GetPhiolenInfos();
 
-BESCHREIBUNG:
+FUNKTION
+========
 
-     Wird von der Phiole aufgerufen:
-     /d/inseln/miril/sternquest/obj/phiole.c
-     Der Raum muss /p/service/miril/phiole.h includen.     
-     Mit der Phiole kann ein Spieler durch Tueren schauen. Bei Tueren, die
-     vom Doormaster (/obj/doormaster.c) verwaltet werden, klappt dies auto-
-     matisch. Moechte man das verbieten, so muss die Funktion 
-     GetPhiolenInfos() im entsprechenden Raum definiert sein.
-     Befinden sich Tueren im Raum, die nicht vom Doormaster verwaltet werden,
-     aber bei denen die Phiole funktionieren soll, so kann dies ebenfalls
-     mittels GetPhiolenInfos() geschehen.
-     
-     Funktion der Phiole:
-     Sie projiziert ein Bild dessen, was hinter der Tuer liegt auf die Tuer.
-     Steht die Tuer offen, so sieht der Spieler nur eine Wand, denn es wird
-     gezeigt, was hinter dieser Tuer ist.
-     
-     Ist die Tuer jedoch ge- oder verschlossen, so sieht er auf der Tuer
-     die Langbeschreibung des Raumes, der hinter der Tuer liegt, sowie das
-     Inventar dieses Raumes. 
+   mixed *GetPhiolenInfos();
 
-     Aufbau der Funktion:
-     mixed *GetPhiolenInfos() {
-       return ({
-                ([
-                  PHIOLE_DEST:     string,       
-                  PHIOLE_IDS:      *string,             
-                  PHIOLE_GENDER:   int,           
-                  PHIOLE_STATUS:   int,     (optional)
-                  PHIOLE_LONG:     string,  (optional)
-                  PHIOLE_VERBOTEN: int      (optional)
-                ]),
-                ([
-                  ... Naechste Tuer
-                ])
-              });
-     }
-     
-     PHIOLE_DEST      Dateiname des Zielraums
-     PHIOLE_IDS	      Array der Strings, mit denen sich die Tuer 
-                      ansprechen laesst
-     PHIOLE_GENDER    Geschlecht der Tuer
-     PHIOLE_STATUS    aktueller Status der Tuer:
-                      0 geschlossen/verschlossen, 1 offen
-                      Bei Tueren, die mit NewDoor erzeugt wurden
-                      nicht setzen
-     PHIOLE_LONG      Beschreibung des Zielraums (z.B. bei einer 
-                      Faketuer)
-     PHIOLE_VERBOTEN  0 erlaubt, 1 verboten
 
-BEISPIEL:
-     Ein Raum enthaelt eine Holztuer und ein Portal. Erstere ist mittels 
-     NewDoor(...) gebaut, soll aber nicht zu durchschauen sein, letztere ist 
-     selbstgestrickt. Die erste fuehrt in den Workroom von Jof, die zweite
-     ist nur ein Fake und immer geschlossen. Bei vom Doormaster erzeugten 
-     Tueren sollte PHIOLE_STATUS nicht gesetzt werden, da dies automatisch
-     abgefragt wird.
-     
-     #include "/p/service/miril/phiole.h"
-     ...
-     mixed *GetPhiolenInfos(){
-       return ({
-                ([
-                  PHIOLE_DEST:"/players/jof/workroom",
-                  PHIOLE_IDS:({"holztuer"}),           
-                  PHIOLE_GENDER:FEMALE,                    
-                  PHIOLE_VERBOTEN:1          
-                ]),
-                ([
-                  PHIOLE_DEST:0,
-                  PHIOLE_IDS:({"portal"}),           
-                  PHIOLE_GENDER:NEUTER, 
-                  PHIOLE_STATUS:0,
-                  PHIOLE_LONG:"Du stehst in einer riesigen Schatzkammer und "
-                              "kannst Dein Glueck kaum fassen. Nun brauchst "
-                              "Du nur noch zuzugreifen und bist der reichste "
-                              "Bewohner des MorgenGrauen.",
-                  PHIOLE_VERBOTEN:0
-                ])
-              });
-      }
-      Mittels PHIOLE_LONG laesst sich auch bei erlaubten und verbotenen Tueren 
-      einstellen, was der Spieler statt der normalen Raumbeschreibung und den 
-      im Raum befindlichen Objekten sehen soll. Das koennte z.B. sinnvoll 
-      sein, falls der Spieler zwar die Raumbeschreibung, aber nicht den fiesen 
-      Drachen sehen soll, der sich ebenfalls im Raum befindet.
-      
-SIEHE AUCH:
-      NewDoor(), QueryDoorStatus(), SetDoorStatus(), QueryAllDoors()
------------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Wird von der Phiole aufgerufen:
+   /d/inseln/miril/sternquest/obj/phiole.c
+   Der Raum muss /p/service/miril/phiole.h includen.
+   Mit der Phiole kann ein Spieler durch Tueren schauen. Bei Tueren, die
+   vom Doormaster (/obj/doormaster.c) verwaltet werden, klappt dies auto-
+   matisch. Moechte man das verbieten, so muss die Funktion
+   GetPhiolenInfos() im entsprechenden Raum definiert sein.
+   Befinden sich Tueren im Raum, die nicht vom Doormaster verwaltet werden,
+   aber bei denen die Phiole funktionieren soll, so kann dies ebenfalls
+   mittels GetPhiolenInfos() geschehen.
+
+
+
+   Funktion der Phiole:
+   Sie projiziert ein Bild dessen, was hinter der Tuer liegt auf die Tuer.
+   Steht die Tuer offen, so sieht der Spieler nur eine Wand, denn es wird
+   gezeigt, was hinter dieser Tuer ist.
+
+
+
+   Ist die Tuer jedoch ge- oder verschlossen, so sieht er auf der Tuer
+   die Langbeschreibung des Raumes, der hinter der Tuer liegt, sowie das
+   Inventar dieses Raumes.
+
+   Aufbau der Funktion:
+   mixed *GetPhiolenInfos() {
+     return ({
+              ([
+                PHIOLE_DEST:     string,
+                PHIOLE_IDS:      *string,
+                PHIOLE_GENDER:   int,
+                PHIOLE_STATUS:   int,     (optional)
+                PHIOLE_LONG:     string,  (optional)
+                PHIOLE_VERBOTEN: int      (optional)
+              ]),
+              ([
+                ... Naechste Tuer
+              ])
+            });
+   }
+
+
+
+   PHIOLE_DEST      Dateiname des Zielraums
+   PHIOLE_IDS       Array der Strings, mit denen sich die Tuer
+                    ansprechen laesst
+   PHIOLE_GENDER    Geschlecht der Tuer
+   PHIOLE_STATUS    aktueller Status der Tuer:
+                    0 geschlossen/verschlossen, 1 offen
+                    Bei Tueren, die mit NewDoor erzeugt wurden
+                    nicht setzen
+   PHIOLE_LONG      Beschreibung des Zielraums (z.B. bei einer
+                    Faketuer)
+   PHIOLE_VERBOTEN  0 erlaubt, 1 verboten
+
+
+BEISPIEL
+========
+
+   Ein Raum enthaelt eine Holztuer und ein Portal. Erstere ist mittels
+   NewDoor(...) gebaut, soll aber nicht zu durchschauen sein, letztere ist
+   selbstgestrickt. Die erste fuehrt in den Workroom von Jof, die zweite
+   ist nur ein Fake und immer geschlossen. Bei vom Doormaster erzeugten
+   Tueren sollte PHIOLE_STATUS nicht gesetzt werden, da dies automatisch
+   abgefragt wird.
+
+
+
+   #include "/p/service/miril/phiole.h"
+   ...
+   mixed *GetPhiolenInfos(){
+     return ({
+              ([
+                PHIOLE_DEST:"/players/jof/workroom",
+                PHIOLE_IDS:({"holztuer"}),
+                PHIOLE_GENDER:FEMALE,
+                PHIOLE_VERBOTEN:1
+              ]),
+              ([
+                PHIOLE_DEST:0,
+                PHIOLE_IDS:({"portal"}),
+                PHIOLE_GENDER:NEUTER,
+                PHIOLE_STATUS:0,
+                PHIOLE_LONG:"Du stehst in einer riesigen Schatzkammer und "
+                            "kannst Dein Glueck kaum fassen. Nun brauchst "
+                            "Du nur noch zuzugreifen und bist der reichste "
+                            "Bewohner des MorgenGrauen.",
+                PHIOLE_VERBOTEN:0
+              ])
+            });
+    }
+    Mittels PHIOLE_LONG laesst sich auch bei erlaubten und verbotenen Tueren
+    einstellen, was der Spieler statt der normalen Raumbeschreibung und den
+    im Raum befindlichen Objekten sehen soll. Das koennte z.B. sinnvoll
+    sein, falls der Spieler zwar die Raumbeschreibung, aber nicht den fiesen
+    Drachen sehen soll, der sich ebenfalls im Raum befindet.
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorStatus(), SetDoorStatus(), QueryAllDoors()
+
 Letzte Aenderung: Sam, 14. Jan 2006, 12:21, Miril
diff --git a/doc/lfun/GetReputation b/doc/lfun/GetReputation
index b60cdf8..b27d053 100644
--- a/doc/lfun/GetReputation
+++ b/doc/lfun/GetReputation
@@ -1,26 +1,53 @@
-GetReputation
-FUNKTION:
-     public int GetReputation(string repid)
 
-DEFINIERT IN:
-     /std/player/reputation.c
+GetReputation()
+***************
 
-ARGUMENTE:
-     repid
-       Eindeutige ID der angefragten Reputation.
 
-BESCHREIBUNG:
-     Liefert den aktuellen Wert der angegebenen Reputation <repid> zurueck.
+FUNKTION
+========
 
-RUeCKGABEWERT:
-     Zahlenwert, Integer.
+   public int GetReputation(string repid)
 
-BEISPIELE:
-     s. reputation
 
-SIEHE AUCH:
-     reputation
-     ChangeReputation(), GetReputations()
+DEFINIERT IN
+============
 
-ZULETZT GEAeNDERT:
+   /std/player/reputation.c
+
+
+ARGUMENTE
+=========
+
+   repid
+     Eindeutige ID der angefragten Reputation.
+
+
+BESCHREIBUNG
+============
+
+   Liefert den aktuellen Wert der angegebenen Reputation <repid> zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Zahlenwert, Integer.
+
+
+BEISPIELE
+=========
+
+   s. reputation
+
+
+SIEHE AUCH
+==========
+
+   reputation
+   ChangeReputation(), GetReputations()
+
+
+ZULETZT GEAeNDERT
+=================
+
 06.04.2009, Zesstra
diff --git a/doc/lfun/GetReputations b/doc/lfun/GetReputations
index 81d571e..134bd2c 100644
--- a/doc/lfun/GetReputations
+++ b/doc/lfun/GetReputations
@@ -1,23 +1,47 @@
-GetReputations
-FUNKTION:
-     public mapping GetReputations()
 
-DEFINIERT IN:
-     /std/player/reputation.c
+GetReputations()
+****************
 
-BESCHREIBUNG:
-     Liefert ein Mapping aller im Spieler gespeicherten Reputationen und ihrer
-     Werte zurueck.
 
-RUeCKGABEWERT:
-     Mapping ([(string)repid: (int)wert])
+FUNKTION
+========
 
-BEISPIELE:
-     s. repuation
+   public mapping GetReputations()
 
-SIEHE AUCH:
-     reputation
-     GetReputation(), GetReputations()
 
-ZULETZT GEAeNDERT:
+DEFINIERT IN
+============
+
+   /std/player/reputation.c
+
+
+BESCHREIBUNG
+============
+
+   Liefert ein Mapping aller im Spieler gespeicherten Reputationen und ihrer
+   Werte zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Mapping ([(string)repid: (int)wert])
+
+
+BEISPIELE
+=========
+
+   s. repuation
+
+
+SIEHE AUCH
+==========
+
+   reputation
+   GetReputation(), GetReputations()
+
+
+ZULETZT GEAeNDERT
+=================
+
 06.04.2009, Zesstra
diff --git a/doc/lfun/GetValue b/doc/lfun/GetValue
index 1c95119..29eea03 100644
--- a/doc/lfun/GetValue
+++ b/doc/lfun/GetValue
@@ -1,37 +1,46 @@
-FUNKTION:
 
-	varargs int GetValue(string vname, mapping map, object pl) 
+GetValue()
+**********
 
 
-ARGUMENTE:
+FUNKTION
+========
 
-	vname	: name des parameters aus dem spellmapping
-	map   	: spellmapping
-	pl 	: caster
+   varargs int GetValue(string vname, mapping map, object pl)
 
 
-BESCHREIBUNG:
+ARGUMENTE
+=========
 
-	'Berechnet' den Wert des uebergebenen Parameters aus dem 
-	Spellmapping.
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
 
 
-RUECKGABEWERT:
+BESCHREIBUNG
+============
 
-	Berechneter Wert aus dem Spellmapping.
+   'Berechnet' den Wert des uebergebenen Parameters aus dem
+   Spellmapping.
 
 
-BEMERKUNGEN:
+RUECKGABEWERT
+=============
 
-	
+   Berechneter Wert aus dem Spellmapping.
 
 
-BEISPIEL:
+BEMERKUNGEN
+===========
 
-	xxx=GetValue(SI_SKILLDAMAGE,sinfo,caster);
+
+BEISPIEL
+========
+
+   xxx=GetValue(SI_SKILLDAMAGE,sinfo,caster);
 
 Siehe auch:
 
-	"GetFactor", "GetOffset", "GetFValue", "GetValueO", "GetFValueO"
+   "GetFactor", "GetOffset", "GetFValue", "GetValueO", "GetFValueO"
 
-	Ausfuehrliches Beispiel siehe "GetFValueO".
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/lfun/GetValueO b/doc/lfun/GetValueO
index e55b8f3..e9a7522 100644
--- a/doc/lfun/GetValueO
+++ b/doc/lfun/GetValueO
@@ -1,36 +1,47 @@
-FUNKTION:
 
-	varargs int GetValueO(string vname, mapping map, object pl) 
+GetValueO()
+***********
 
 
-ARGUMENTE:
+FUNKTION
+========
 
-	vname	: name des parameters aus dem spellmapping
-	map   	: spellmapping
-	pl 	: caster
+   varargs int GetValueO(string vname, mapping map, object pl)
 
 
-BESCHREIBUNG:
+ARGUMENTE
+=========
 
-	Berechnet den Wert und den Offset des Parameters in spellmapping.
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
 
 
-RUECKGABEWERT:
+BESCHREIBUNG
+============
 
-	Berechneter Wert+Offset aus dem Spellmapping.
+   Berechnet den Wert und den Offset des Parameters in spellmapping.
 
 
-BEMERKUNGEN:
+RUECKGABEWERT
+=============
 
-	Ruft GetValue(vname,map,pl)+GetOffset(vname,map,pl) auf.
+   Berechneter Wert+Offset aus dem Spellmapping.
 
 
-BEISPIEL:
+BEMERKUNGEN
+===========
 
-	xxx=GetValueO(SI_SKILLDAMAGE,sinfo,caster);
+   Ruft GetValue(vname,map,pl)+GetOffset(vname,map,pl) auf.
+
+
+BEISPIEL
+========
+
+   xxx=GetValueO(SI_SKILLDAMAGE,sinfo,caster);
 
 Siehe auch:
 
-	"GetValue", "GetFactor", "GetOffset", "GetFValue", "GetFValueO"
+   "GetValue", "GetFactor", "GetOffset", "GetFValue", "GetFValueO"
 
-	Ausfuehrliches Beispiel siehe "GetFValueO".
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/lfun/Gildenproperties b/doc/lfun/Gildenproperties
index 30a16c3..dd5676f 100644
--- a/doc/lfun/Gildenproperties
+++ b/doc/lfun/Gildenproperties
@@ -1,131 +1,186 @@
-Name			Beschreibung
 
-P_GUILD_SKILLS		Property fuer Skills in der Gilde
-P_GUILD_RESTRICTIONS 	Restriktionen fuer den Eintritt in die Gilde
-P_GUILD_DEFAULT_SPELLBOOK  
-P_GUILD_MALE_TITLES 	Maennliche Gildentitel
-P_GUILD_FEMALE_TITLES	Weibliche Gildentitel
-P_GUILD_LEVELS		Gildenstufen
-P_SB_SPELLS 		Property fuer Spells in Spellbook
-P_GLOBAL_SKILLPROPS	Properties der Gilde UND des Spellbooks
+Gildenproperties()
+******************
 
-Properties des Spielers:
-P_GUILD			String mit dem Namen der Gilde
-P_GUILD_LEVEL		Gildenstufe
-P_GUILD_TITLE		Gildentitel
-P_GUILD_RATING		Rating in der Gilde
-P_NEWSKILLS		mapping mit Skills und Spells
-P_NEXT_SPELL_TIME	Zeit bis der naechste Spell gesprochen werden kann
-P_TMP_ATTACK_HOOK	Angriffs-Ersatzfunktion
-P_TMP_ATTACK_MOD	Angriffs-Modifizierung
-P_TMP_DEFEND_HOOK	Abwehr-Ersatzfunktion
-P_TMP_DIE_HOOK		"Die"-Ersatzfunktion
-P_TMP_MOVE_HOOK		Bewegungs-Ersatzfunktion
-P_DEFENDERS		Verteidiger
-P_PREPARED_SPELL	Vorbereiteter Spell
-P_DEFAULT_GUILD		Standardgilde
+Name                    Beschreibung
+
+P_GUILD_SKILLS          Property fuer Skills in der Gilde
+P_GUILD_RESTRICTIONS    Restriktionen fuer den Eintritt in die Gilde
+P_GUILD_DEFAULT_SPELLBOOK P_GUILD_MALE_TITLES     Maennliche
+Gildentitel P_GUILD_FEMALE_TITLES   Weibliche Gildentitel
+P_GUILD_LEVELS          Gildenstufen P_SB_SPELLS             Property
+fuer Spells in Spellbook P_GLOBAL_SKILLPROPS     Properties der Gilde
+UND des Spellbooks
+
+Properties des Spielers P_GUILD                 String mit dem Namen
+der Gilde P_GUILD_LEVEL           Gildenstufe P_GUILD_TITLE
+Gildentitel P_GUILD_RATING          Rating in der Gilde P_NEWSKILLS
+mapping mit Skills und Spells P_NEXT_SPELL_TIME       Zeit bis der
+naechste Spell gesprochen werden kann P_TMP_ATTACK_HOOK
+Angriffs-Ersatzfunktion P_TMP_ATTACK_MOD        Angriffs-Modifizierung
+P_TMP_DEFEND_HOOK       Abwehr-Ersatzfunktion P_TMP_DIE_HOOK
+"Die"-Ersatzfunktion P_TMP_MOVE_HOOK         Bewegungs-Ersatzfunktion
+P_DEFENDERS             Verteidiger P_PREPARED_SPELL
+Vorbereiteter Spell P_DEFAULT_GUILD         Standardgilde
 P_MAGIC_RESISTANCE_OFFSET Offset fuer Magie-Resistenzen
 
-Standard-Skills:
-SK_FIGHT		Kampfskill(global)
-SK_SWORDFIGHTING	Schwertkampf
-SK_WEAPONLESS		Waffenloser Kampf
-SK_TWOHANDED       	Zweihandkampf
-SK_CASTING         	Zauber-Skill
-SK_MAGIC_ATTACK    	Magischer Angriff
-SK_MAGIC_DEFENSE   	Magische Abwehr
-SK_NIGHTVISION     	Nachtsicht
-SK_BOOZE           	Sauf-Skill
-SK_INFORM_DEFEND   	
-SK_DEFEND_OTHER		
-SK_CARRY		Trage-Skill
-SK_SPELL_DEFEND		Spruch-Abwehr
+Standard-Skills SK_FIGHT                Kampfskill(global)
+SK_SWORDFIGHTING        Schwertkampf SK_WEAPONLESS
+Waffenloser Kampf SK_TWOHANDED            Zweihandkampf SK_CASTING
+Zauber-Skill SK_MAGIC_ATTACK         Magischer Angriff
+SK_MAGIC_DEFENSE        Magische Abwehr SK_NIGHTVISION
+Nachtsicht SK_BOOZE                Sauf-Skill SK_INFORM_DEFEND
+SK_DEFEND_OTHER SK_CARRY                Trage-Skill SK_SPELL_DEFEND
+Spruch-Abwehr
 
-Skill-Attribute:
-P_SKILL_ATTRIBUTES	Property fuer Skill-Attribute
+Skill-Attribute P_SKILL_ATTRIBUTES      Property fuer Skill-Attribute
 P_SKILL_ATTRIBUTE_OFFSETS   Property fuer Offsets der Skill-Attribute
-SA_QUALITY		Allgemeine Qualitaet
-SA_DAMAGE		Schaden
-SA_SPEED		Geschwindigkeit
-SA_DURATION		Dauer
-SA_EXTENSION		Ausdehnung
-SA_RANGE		Reichweit
-SA_ENEMY_SAVE: identisch zu SA_SPELL_PENETRATION (OBSOLET!)
-SA_SPELL_PENETRATION: Chance des _Casters_, einen Spell durch ein
-                      P_NOMAGIC durchzukriegen.
+SA_QUALITY              Allgemeine Qualitaet SA_DAMAGE
+Schaden SA_SPEED                Geschwindigkeit SA_DURATION
+Dauer SA_EXTENSION            Ausdehnung SA_RANGE
+Reichweit SA_ENEMY_SAVE identisch zu SA_SPELL_PENETRATION (OBSOLET!)
+SA_SPELL_PENETRATION Chance des _Casters_, einen Spell durch ein
 
-Skill-Info:
-FACTOR(x)		Faktor
-OFFSET(x)		Offset
-SI_SKILLFUNC		Funktion, die aufgerufen wird
-SI_CLOSURE		Intern (Geschwindigkeitsoptimierung)
-SI_SPELLBOOK		Spellbook, in dem der Spell steht
-SI_SPELLCOST		Kosten des Spells
-SI_TIME_MSG		Die Meldung wird anstelle von "Du bist noch zu 
-			erschoepft von Deinem letzten Spruch." ausgegeben.
-SI_SP_LOW_MSG		Die Meldung wird anstelle von "Du hast zu wenig 
-			Zauberpunkte fuer diesen Spruch." ausgegeben.
-SI_NOMAGIC		Prozentwert, mit dem P_NOMAGIC mgangen werden kann
-SI_SPELLFATIGUE		Erschoepfung - Zeit, in der keine weiteren Spells
-			aufgerufen werden koennen
-SI_SKILLLEARN		Lerngeschwindigkeit in 0.01% pro A_INT/2
-SI_SKILLABILITY		Faehigkeit, diesen Spruch zu benutzen
-SI_SKILLARG		Argumente, die uebergeben wurden
-SI_SKILLRESTR_USE	Beschraenkungen beim Gebrauch
-SI_SKILLRESTR_LEARN	Beschraenkungen beim Lernen
-SI_SKILLINFO		Kurzer Informationstext
-SI_SKILLINFO_LONG	Langer Informationstext
-SI_SKILLDAMAGE		Schaden
-SI_SKILLDAMAGE_TYPE	Art des Schadens
-SI_SKILLDAMAGE_MSG	Meldung die anstelle einer Waffe kommen soll
-SI_SKILLDAMAGE_MSG2	dito fuer den Text fuer andere im Raum
-SI_SPELL		Spell, mit dem angegriffen wurde
-SI_INHERIT		Skill, von dem etwas uebernommen werden soll
-SI_DIFFICULTY		Wert, der die Obergrenze der Faehigkeit abgrenzt
-SI_LASTLIGHT		Fuer Nachtsicht: Wann hat der Spieler zum letzten 
-			mal Licht gesehen.
-SI_SKILLHEAL		Heilung
-SI_USR			selbst definierte Infos
-SI_GUILD		Gilde, falls Auswahl aus mehreren moeglich
-SI_ENEMY		Feind bei Kampfspruechen
-SI_FRIEND		Der zu verteidigende Freund bei DefendOther 
-			und InformDefend
-SI_MAGIC_TYPE		Von was fuer einer Art ist die Magie (s.u.)
-SI_PREPARE_TIME		Zeit die zur Vorbereitung benoetigt wird.
-SI_ATTACK_BUSY_MSG	Meldung, wenn der Spieler zu beschaeftigt ist
-SI_NO_ATTACK_BUSY	Wenn der Spell nicht als Taetigkeit zaehlen/gezaehlt 
-			werden soll, kann man hier 
-			NO_ATTACK_BUSY[_SET|_QUERY] setzen
-SP_NAME			Name des Spells, falls Mapping
-SP_SHOW_DAMAGE		Treffermeldung soll gezeigt werden.
-SP_REDUCE_ARMOUR	AC soll Typabhaengig reduziert werden.
-SP_PHYSICAL_ATTACK	Koerperlicher Angriff
-SP_RECURSIVE		Rekursionen
+   P_NOMAGIC durchzukriegen.
 
-Skill-Restrictions:
-SR_FUN			Funktion, die weitere Einschraenkungen prueft
-SR_EXCLUDE_RACE		Ausgeschlossene Rassen
-SR_INCLUDE_RACE		Eingeschlossene Rassen
-SR_GOOD			Align < 
-SR_BAD			Align >
-SR_FREE_HANDS		Benoetigte freie Haende
-SR_SEER			Muss Seher sein
-SR_MIN_SIZE		Mindestgroesse
-SR_MAX_SIZE		Maximalgroesse
-SM_RACE			Rassenspezifische Besonderheiten
+Skill-Info FACTOR(x)               Faktor OFFSET(x)
+Offset SI_SKILLFUNC            Funktion, die aufgerufen wird
+SI_CLOSURE              Intern (Geschwindigkeitsoptimierung)
+SI_SPELLBOOK            Spellbook, in dem der Spell steht SI_SPELLCOST
+Kosten des Spells SI_TIME_MSG             Die Meldung wird anstelle
+von "Du bist noch zu
 
-Magie-Arten:
-MT_ANGRIFF      	Angriff
-MT_SCHUTZ       	Schutz
-MT_ILLUSION     	Illusion
-MT_BEHERRSCHUNG 	Beherrschung
-MT_HELLSICHT    	Hellsicht
-MT_VERWANDLUNG  	Verwandlung
-MT_BESCHWOERUNG 	Beschwoerung
-MT_BEWEGUNG     	Bewegung
-MT_SAKRAL       	'Goettliches'
-MT_HEILUNG      	Heilung
-MT_CREATION     	Erschaffung
-MT_PSYCHO       	Psycho-Kram
-MT_MISC         	Sonstiges
+   erschoepft von Deinem letzten Spruch." ausgegeben.
 
+SI_SP_LOW_MSG           Die Meldung wird anstelle von "Du hast zu
+wenig
+   Zauberpunkte fuer diesen Spruch." ausgegeben.
+
+SI_NOMAGIC              Prozentwert, mit dem P_NOMAGIC mgangen werden
+kann SI_SPELLFATIGUE         Erschoepfung - Zeit, in der keine
+weiteren Spells
+
+   aufgerufen werden koennen
+
+SI_SKILLLEARN           Lerngeschwindigkeit in 0.01% pro A_INT/2
+SI_SKILLABILITY         Faehigkeit, diesen Spruch zu benutzen
+SI_SKILLARG             Argumente, die uebergeben wurden
+SI_SKILLRESTR_USE       Beschraenkungen beim Gebrauch
+SI_SKILLRESTR_LEARN     Beschraenkungen beim Lernen SI_SKILLINFO
+Kurzer Informationstext SI_SKILLINFO_LONG       Langer
+Informationstext SI_SKILLDAMAGE          Schaden SI_SKILLDAMAGE_TYPE
+Art des Schadens SI_SKILLDAMAGE_MSG      Meldung die anstelle einer
+Waffe kommen soll SI_SKILLDAMAGE_MSG2     dito fuer den Text fuer
+andere im Raum SI_SPELL                Spell, mit dem angegriffen
+wurde SI_INHERIT              Skill, von dem etwas uebernommen werden
+soll SI_DIFFICULTY           Wert, der die Obergrenze der Faehigkeit
+abgrenzt SI_LASTLIGHT            Fuer Nachtsicht Wann hat der Spieler
+zum letzten
+
+   mal Licht gesehen.
+
+SI_SKILLHEAL            Heilung SI_USR                  selbst
+definierte Infos SI_GUILD                Gilde, falls Auswahl aus
+mehreren moeglich SI_ENEMY                Feind bei Kampfspruechen
+SI_FRIEND               Der zu verteidigende Freund bei DefendOther
+
+   und InformDefend
+
+SI_MAGIC_TYPE           Von was fuer einer Art ist die Magie (s.u.)
+SI_PREPARE_TIME         Zeit die zur Vorbereitung benoetigt wird.
+SI_ATTACK_BUSY_MSG      Meldung, wenn der Spieler zu beschaeftigt ist
+SI_NO_ATTACK_BUSY       Wenn der Spell nicht als Taetigkeit
+zaehlen/gezaehlt
+
+   werden soll, kann man hier NO_ATTACK_BUSY[_SET|_QUERY] setzen
+
+SP_NAME                 Name des Spells, falls Mapping SP_SHOW_DAMAGE
+Treffermeldung soll gezeigt werden. SP_REDUCE_ARMOUR        AC soll
+Typabhaengig reduziert werden. SP_PHYSICAL_ATTACK      Koerperlicher
+Angriff SP_RECURSIVE            Rekursionen
+
+Skill-Restrictions SR_FUN                  Funktion, die weitere
+Einschraenkungen prueft SR_EXCLUDE_RACE         Ausgeschlossene Rassen
+SR_INCLUDE_RACE         Eingeschlossene Rassen SR_GOOD
+Align < SR_BAD                  Align > SR_FREE_HANDS
+Benoetigte freie Haende SR_SEER                 Muss Seher sein
+SR_MIN_SIZE             Mindestgroesse SR_MAX_SIZE
+Maximalgroesse SM_RACE                 Rassenspezifische
+Besonderheiten
+
+Magie-Arten MT_ANGRIFF              Angriff MT_SCHUTZ
+Schutz MT_ILLUSION             Illusion MT_BEHERRSCHUNG
+Beherrschung MT_HELLSICHT            Hellsicht MT_VERWANDLUNG
+Verwandlung MT_BESCHWOERUNG         Beschwoerung MT_BEWEGUNG
+Bewegung MT_SAKRAL               'Goettliches' MT_HEILUNG
+Heilung MT_CREATION             Erschaffung MT_PSYCHO
+Psycho-Kram MT_MISC                 Sonstiges -----------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+-------
diff --git a/doc/lfun/GiveMiniQuest b/doc/lfun/GiveMiniQuest
index c08418c..d208dbd 100644
--- a/doc/lfun/GiveMiniQuest
+++ b/doc/lfun/GiveMiniQuest
@@ -1,43 +1,68 @@
+
 GiveMiniQuest()
+***************
 
-FUNKTION:
-        int GiveMiniQuest(object winner)
 
-DEFINIERT IN:
-        /secure/questmaster
+FUNKTION
+========
 
-ARGUMENTE:
-	winner
-	  Spielerobjekt, das die Quest bestanden hat.
+   int GiveMiniQuest(object winner)
 
-RUeCKGABEWERT:
-        (Die Defines fuer den Rueckgabewert finden sich in 
-         /secure/questmaster.h)
-         1 : Hat geklappt                           (OK)
-        -1 : Spieler hat die Quest bereits geloest  (MQ_ALREADY_SET)
-        -2 : Ungueltiger Questname                  (MQ_KEY_INVALID)
-        -3 : Unbefugter Zugriff                     (MQ_ILLEGAL_OBJ)
-        -4 : Quest zur Zeit inaktiv                 (MQ_IS_INACTIVE)
-        -5 : Gaeste loesen keine Quests             (MQ_GUEST)
 
-BESCHREIBUNG:
-	Mit dieser Funktion wird nach dem erfolgreichen Loesen einer 
-        MiniQuest die Quest im Spieler eingetragen. Dabei muss der
-        Aufruf in dem Objekt erfolgen, welches im Questmaster 
-        eingetragen ist. Als Argument muss das Spielerobjekt 
-	angegeben werden, welches die Quest bestanden hat.
-        
-BEISPIEL:
-	QM->GiveMiniQuest(this_player());
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        HasMiniQuest
-        /secure/questmaster.h, /secure/questmaster.c
+   /secure/questmaster
 
-HINWEIS:
-        Die Informationen fuer den EM fuer Quests sollten diesem
-        beim Eintragen der Miniquest in den Questmaster per Mail
-        zugeschickt werden. Siehe dazu die Hilfe zu AddMiniQuest.
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   winner
+     Spielerobjekt, das die Quest bestanden hat.
+
+
+RUeCKGABEWERT
+=============
+
+   (Die Defines fuer den Rueckgabewert finden sich in
+    /secure/questmaster.h)
+    1 : Hat geklappt                           (OK)
+   -1 : Spieler hat die Quest bereits geloest  (MQ_ALREADY_SET)
+   -2 : Ungueltiger Questname                  (MQ_KEY_INVALID)
+   -3 : Unbefugter Zugriff                     (MQ_ILLEGAL_OBJ)
+   -4 : Quest zur Zeit inaktiv                 (MQ_IS_INACTIVE)
+   -5 : Gaeste loesen keine Quests             (MQ_GUEST)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird nach dem erfolgreichen Loesen einer
+   MiniQuest die Quest im Spieler eingetragen. Dabei muss der
+   Aufruf in dem Objekt erfolgen, welches im Questmaster
+   eingetragen ist. Als Argument muss das Spielerobjekt
+   angegeben werden, welches die Quest bestanden hat.
+
+
+BEISPIEL
+========
+
+   QM->GiveMiniQuest(this_player());
+
+
+SIEHE AUCH
+==========
+
+   HasMiniQuest
+   /secure/questmaster.h, /secure/questmaster.c
+
+
+HINWEIS
+=======
+
+   Die Informationen fuer den EM fuer Quests sollten diesem
+   beim Eintragen der Miniquest in den Questmaster per Mail
+   zugeschickt werden. Siehe dazu die Hilfe zu AddMiniQuest.
+
 Zuletzt geaendert: Don, 30. Jan 2014, 22:14:12 von Ark.
diff --git a/doc/lfun/GiveQuest b/doc/lfun/GiveQuest
index 613a501..daedc6c 100644
--- a/doc/lfun/GiveQuest
+++ b/doc/lfun/GiveQuest
@@ -1,63 +1,86 @@
+
 GiveQuest()
+***********
 
-FUNKTION:
-        varargs int GiveQuest(string questname, string message)
 
-DEFINIERT IN:
-        /std/player/quests.c
+FUNKTION
+========
 
-ARGUMENTE:
-        questname
-          Questname, wie er im Questmaster eingetragen wurde.
-        message 
-          Optionale Meldung, die auf dem Abenteuer-Kanal statt der 
-          Standardmeldung gesendet wird.
-          Dabei wird @@name@@ durch den Spielernamen ersetzt.
+   varargs int GiveQuest(string questname, string message)
 
-RUeCKGABEWERT:
-        (Die Defines fuer den Rueckgabewert finden sich in 
-         /secure/questmaster.h)
-         1 : Hat geklappt                           (OK)
-        -1 : Spieler hat die Quest bereits geloest  (GQ_ALREADY_SET)
-        -2 : Ungueltiger Questname                  (GQ_KEY_INVALID)
-        -3 : Unbefugter Zugriff                     (GQ_ILLEGAL_OBJ)
-        -4 : Quest zur Zeit inaktiv                 (GQ_IS_INACTIVE)
 
-BESCHREIBUNG:
-        Mit dieser Funktion wird nach dem erfolgreichen Loesen einer 
-        Quest die Quest im Spieler eingetragen. Dabei muss der Aufruf 
-        in dem Objekt erfolgen, welches im Questmaster eingetragen ist.
-        Zusaetzlich wird der Zeitpunkt eingetragen, an dem die Quest
-        bestanden wurde.
-        
-        Wer sich da nicht sicher ist, kann mit dem Questtool 
-        (/obj/tools/questtool) nachsehen. 
+DEFINIERT IN
+============
 
-        Nachdem eine Quest als geloest markiert wurde, ist dies in einem 
-        Logfile fuer die Quest im Verzeichnis /log/quest einzutragen. Dazu
-        wird write_file verwendet.
+   /std/player/quests.c
 
-BEISPIEL:
 
-        int quest;
+ARGUMENTE
+=========
 
-        quest = this_player()->GiveQuest("Zacharias Eispalast");
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+   message
+     Optionale Meldung, die auf dem Abenteuer-Kanal statt der
+     Standardmeldung gesendet wird.
+     Dabei wird @@name@@ durch den Spielernamen ersetzt.
 
-        if (quest == 1)
-        {
-          write("Du fuehlst, wie Deine Erfahrung ansteigt.\n");
-          write_file("/log/quest/eispalast", 
-                     dtime(time())+"   Aufgabe geloest von "
-                     +this_player()->name()+"\n");
-        } 
-        else if (quest != -1)
-          write( "Die Weltenmaschine will Dir Deine Arbeit "
-                 +"nicht anerkennen.\n"
-                 +"Frage einen Erzmagier um Hilfe.\n" );
 
-SIEHE AUCH:
-        /secure/questmaster.h, /obj/tools/questtool
-        QueryQuest(), write_file(), ModifyQuestTime()
+RUeCKGABEWERT
+=============
 
-----------------------------------------------------------------------------
+   (Die Defines fuer den Rueckgabewert finden sich in
+    /secure/questmaster.h)
+    1 : Hat geklappt                           (OK)
+   -1 : Spieler hat die Quest bereits geloest  (GQ_ALREADY_SET)
+   -2 : Ungueltiger Questname                  (GQ_KEY_INVALID)
+   -3 : Unbefugter Zugriff                     (GQ_ILLEGAL_OBJ)
+   -4 : Quest zur Zeit inaktiv                 (GQ_IS_INACTIVE)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird nach dem erfolgreichen Loesen einer
+   Quest die Quest im Spieler eingetragen. Dabei muss der Aufruf
+   in dem Objekt erfolgen, welches im Questmaster eingetragen ist.
+   Zusaetzlich wird der Zeitpunkt eingetragen, an dem die Quest
+   bestanden wurde.
+
+
+
+   Wer sich da nicht sicher ist, kann mit dem Questtool
+   (/obj/tools/questtool) nachsehen.
+
+   Nachdem eine Quest als geloest markiert wurde, ist dies in einem
+   Logfile fuer die Quest im Verzeichnis /log/quest einzutragen. Dazu
+   wird write_file verwendet.
+
+
+BEISPIEL
+========
+
+   int quest;
+
+   quest = this_player()->GiveQuest("Zacharias Eispalast");
+
+   if (quest == 1)
+   {
+     write("Du fuehlst, wie Deine Erfahrung ansteigt.\n");
+     write_file("/log/quest/eispalast",
+                dtime(time())+"   Aufgabe geloest von "
+                +this_player()->name()+"\n");
+   }
+   else if (quest != -1)
+     write( "Die Weltenmaschine will Dir Deine Arbeit "
+            +"nicht anerkennen.\n"
+            +"Frage einen Erzmagier um Hilfe.\n" );
+
+
+SIEHE AUCH
+==========
+
+   /secure/questmaster.h, /obj/tools/questtool
+   QueryQuest(), write_file(), ModifyQuestTime()
+
 Zuletzt geaendert: Son, 27. Apr 2014, Arathorn
diff --git a/doc/lfun/GroupName b/doc/lfun/GroupName
index 7a81c45..7b819be 100644
--- a/doc/lfun/GroupName
+++ b/doc/lfun/GroupName
@@ -1,63 +1,87 @@
+
 GroupName()
-FUNKTION:
-     string GroupName(string grp)
+***********
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     string grp - ein Gruppenname
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Gibt die Langbeschreibung des Gruppennamens zurueck.
+   string GroupName(string grp)
 
-RUECKGABEWERT:
-     Die Gruppenbeschreibung oder "Unbekanntes"
 
-BEISPIELE:
-     // simpel
-     tmp=m_indices(ob->QueryProp(P_MATERIAL));
-     write("Dieses Objekt gehoert u.a. zur Gruppe "+
-           MATERIALDB->GroupName(MATERIALDB->GetMatMembership(tmp[0])[0])+
-           ".\n");
-     // gibt die erste Gruppenzugehoerigkeit des erste Materials in
-     // P_MATERIAL zurueck (bei MATGROUP_METAL z.B. "... zur Gruppe Metalle.")
+DEFINIERT IN
+============
 
-     // ein weiser Schmied:
-     int i;
-     string *mat, mname, mgroup;
-     mat=m_indices(ob->QueryProp(P_MATERIAL));
-     i=sizeof(mat);
+   /p/daemon/materialdb.c (MATERIALDB)
 
-     write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
-     while(i--) {
-      // den Namen erkennen/aussprechen:
-      // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
-      // alles aus Metall wird zu +100% gut erkannt ...
-      mname=MATERIALDB->MaterialName(mat[i], WER,
-	     ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
-			({MATGROUP_METAL, 100})])}));
 
-      // und nur Metalle analysieren ...
-      if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
-       int j;
-       string *mgr;
-       mgr=MATERIALDB->GetMatMembership(mat[i]);
-       j=sizeof(mgr);
-       mgroup=" gehoert zu ";
-       while(j--) {
-        mgroup+=MATERIALDB->GroupName(mgr[j]);
-        if(j>0) mgroup+=", ";
-       }
-      } else mgroup=" kenne ich nicht";
-      printf("%-12.12s: %s\n",mname, mgroup);
+ARGUMENTE
+=========
+
+   string grp - ein Gruppenname
+
+
+BESCHREIBUNG
+============
+
+   Gibt die Langbeschreibung des Gruppennamens zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   Die Gruppenbeschreibung oder "Unbekanntes"
+
+
+BEISPIELE
+=========
+
+   // simpel
+   tmp=m_indices(ob->QueryProp(P_MATERIAL));
+   write("Dieses Objekt gehoert u.a. zur Gruppe "+
+         MATERIALDB->GroupName(MATERIALDB->GetMatMembership(tmp[0])[0])+
+         ".\n");
+   // gibt die erste Gruppenzugehoerigkeit des erste Materials in
+   // P_MATERIAL zurueck (bei MATGROUP_METAL z.B. "... zur Gruppe Metalle.")
+
+   // ein weiser Schmied:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% gut erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
+                      ({MATGROUP_METAL, 100})])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
      }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/GuardExit b/doc/lfun/GuardExit
index 1cdf8cc..88da3c9 100644
--- a/doc/lfun/GuardExit
+++ b/doc/lfun/GuardExit
@@ -1,85 +1,111 @@
-FUNKTION:
-     protected <int|<string|closure>* >* GuardExit(object room, int hookid,
-                                                   <string|closure>* hdata);
 
-DEFINIERT IN:
-     /std/npc/moving.c
-
-ARGUMENTE:
-     room
-          Der den Hook ausloesende Raum (environment())
-     hookid
-          Die ID des Hooks (H_HOOK_EXIT_USE)
-     hdata
-          Ein Array mit 3 Elementen:
-          ({
-              verb - Das Kommandoverb/Ausgangsname (string)
-              dest - Zielraum (string) oder closure (special exits)
-              msg  - Bewegungsrichtung (string) oder 0
-          })
-
-BESCHREIBUNG:
-     Ist diese Funktion in einem NPC definiert, traegt sich der NPC bei jeder
-     Bewegung automatisch als Konsument von H_HOOK_EXIT_USE ein und diese
-     Funktion wird immer gerufen, wenn ein Lebewesen im gleichen Environment
-     wie der NPC versucht, einen Ausgang zu benutzen.
-     Der NPC kann dann die Bewegung abbrechen (und so den Ausgang
-     blockieren), Ziel oder Bewegungsmeldung aendern oder keine Veraenderung
-     vornehmen.
-     Die Konstanten fuer Hookid und Hookstatus (s. Rueckgabewert) sind in
-     <hook.h> definiert.
-
-RUeCKGABEWERT:
-     Array mit zwei Elementen:
-     ({
-         H_NO_MOD / H_ALTERED / H_CANCELLED,
-         hdata
-     })
-     hdata ist ggf. das geaenderte Array, welches die Funktion uebergeben
-     wird. Weitere Details s. auch /doc/std/hooks
-
-BEMERKUNGEN:
-     Die Anzahl an Konsumenten eines Hooks ist begrenzt. Es ist daher
-     moeglich, dass die Registrierung nicht klappt, wenn zuviele (>5) Waechter
-     im Raum sind. Will man darauf reagieren, muesste man die Registrierung
-     pruefen.
-     Ein NPC, welcher GuardExit() definiert, aber im aktuellen Environment
-     keine Wache halten will, koennte sich selber de-registrieren.
-
-BEISPIELE:
-     <int|<string|closure>* >* GuardExit(object room, int hookid,
-                                         <string|closure>* hdata)
-     {
-       // Nur in Gefaengnisraeumen Wache halten
-       if (strstr(object_name(environment()), "/room/jail")==0)
-       {
-         // Hier gehts nicht raus. ;-)
-         if (hdata[0] == "raus") {
-             tell_object(this_player(), ...);
-             return ({H_CANCELLED, hdata});
-         }
-         // Special exits ersetzen wir durch einen eigenen
-         else if (closurep(hdata[1])) {
-           hdata[1] = #'my_special_exit;
-           return ({H_ALTERED, hdata});
-         }
-         // alle anderen Ausgaenge in die persoenliche Zelle
-         else {
-           tell_object(this_player(), ...);
-           hdata[1] = "/room/jail_"+getuid(this_player());
-           hdata[2] = "Sueden";
-           return ({H_ALTERED, hdata});
-         }
-      }
-      // in allen anderen Raeumen nicht eingreifen
-      return ({H_NO_MOD, hdata});
-    }
+GuardExit()
+***********
 
 
-SIEHE AUCH:
-     AddExit, AddSpecialExit, RemoveExit
-     HRegisterToHook, HRegisterModifier, HUnregisterFromHook
-     /doc/std/hooks
-----------------------------------------------------------------------------
-20.02.2016, Zesstra
-22.05.2016, Mupfel (Beispiel korrigiert)
+FUNKTION
+========
+
+   protected <int|<string|closure>* >* GuardExit(object room, int hookid,
+                                                 <string|closure>* hdata);
+
+
+DEFINIERT IN
+============
+
+   /std/npc/moving.c
+
+
+ARGUMENTE
+=========
+
+   room
+        Der den Hook ausloesende Raum (environment())
+   hookid
+        Die ID des Hooks (H_HOOK_EXIT_USE)
+   hdata
+        Ein Array mit 3 Elementen:
+        ({
+            verb - Das Kommandoverb/Ausgangsname (string)
+            dest - Zielraum (string) oder closure (special exits)
+            msg  - Bewegungsrichtung (string) oder 0
+        })
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Funktion in einem NPC definiert, traegt sich der NPC bei jeder
+   Bewegung automatisch als Konsument von H_HOOK_EXIT_USE ein und diese
+   Funktion wird immer gerufen, wenn ein Lebewesen im gleichen Environment
+   wie der NPC versucht, einen Ausgang zu benutzen.
+   Der NPC kann dann die Bewegung abbrechen (und so den Ausgang
+   blockieren), Ziel oder Bewegungsmeldung aendern oder keine Veraenderung
+   vornehmen.
+   Die Konstanten fuer Hookid und Hookstatus (s. Rueckgabewert) sind in
+   <hook.h> definiert.
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit zwei Elementen:
+   ({
+       H_NO_MOD / H_ALTERED / H_CANCELLED,
+       hdata
+   })
+   hdata ist ggf. das geaenderte Array, welches die Funktion uebergeben
+   wird. Weitere Details s. auch /doc/std/hooks
+
+
+BEMERKUNGEN
+===========
+
+   Die Anzahl an Konsumenten eines Hooks ist begrenzt. Es ist daher
+   moeglich, dass die Registrierung nicht klappt, wenn zuviele (>5) Waechter
+   im Raum sind. Will man darauf reagieren, muesste man die Registrierung
+   pruefen.
+   Ein NPC, welcher GuardExit() definiert, aber im aktuellen Environment
+   keine Wache halten will, koennte sich selber de-registrieren.
+
+
+BEISPIELE
+=========
+
+    <int|<string|closure>* >* GuardExit(object room, int hookid,
+                                        <string|closure>* hdata)
+    {
+      // Nur in Gefaengnisraeumen Wache halten
+      if (strstr(object_name(environment()), "/room/jail")==0)
+      {
+        // Hier gehts nicht raus. ;-)
+        if (hdata[0] == "raus") {
+            tell_object(this_player(), ...);
+            return ({H_CANCELLED, hdata});
+        }
+        // Special exits ersetzen wir durch einen eigenen
+        else if (closurep(hdata[1])) {
+          hdata[1] = #'my_special_exit;
+          return ({H_ALTERED, hdata});
+        }
+        // alle anderen Ausgaenge in die persoenliche Zelle
+        else {
+          tell_object(this_player(), ...);
+          hdata[1] = "/room/jail_"+getuid(this_player());
+          hdata[2] = "Sueden";
+          return ({H_ALTERED, hdata});
+        }
+     }
+     // in allen anderen Raeumen nicht eingreifen
+     return ({H_NO_MOD, hdata});
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddExit, AddSpecialExit, RemoveExit
+   HRegisterToHook, HRegisterModifier, HUnregisterFromHook
+   /doc/std/hooks
+
+20.02.2016, Zesstra 22.05.2016, Mupfel (Beispiel korrigiert)
diff --git a/doc/lfun/Halt b/doc/lfun/Halt
index 06bfda4..2fb45e8 100644
--- a/doc/lfun/Halt
+++ b/doc/lfun/Halt
@@ -1,30 +1,52 @@
+
 Halt()
+******
 
-FUNKTION:
-     void Halt();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   void Halt();
 
-BESCHREIBUNG:
-     Die Fahrt des Transporters wird abgebrochen. Sie muss explizit mit
-     Start() wieder aufgenommen werden!
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Es gibt keine einfache Moeglichkeit, die Fahrt eines Transporters an
-     der Stelle wieder aufzunehmen, an der sie unterbrochen wurde. Man
-     muesste die aktuelle Position mit QueryPosition() ermitteln, mit Hilfe
-     der AddXXX()-Aufrufe in eine Positionsnummer umwandlen und diese an
-     Start() uebergeben.
+   /std/transport.c
 
-SIEHE AUCH:
-     Start(), /std/transport.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Die Fahrt des Transporters wird abgebrochen. Sie muss explizit mit
+   Start() wieder aufgenommen werden!
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Es gibt keine einfache Moeglichkeit, die Fahrt eines Transporters an
+   der Stelle wieder aufzunehmen, an der sie unterbrochen wurde. Man
+   muesste die aktuelle Position mit QueryPosition() ermitteln, mit Hilfe
+   der AddXXX()-Aufrufe in eine Positionsnummer umwandlen und diese an
+   Start() uebergeben.
+
+
+SIEHE AUCH
+==========
+
+   Start(), /std/transport.c
+
 Last modified: Wed May 8 10:19:23 1996 by Wargon
diff --git a/doc/lfun/HasMiniQuest b/doc/lfun/HasMiniQuest
index 76fc394..c832f00 100644
--- a/doc/lfun/HasMiniQuest
+++ b/doc/lfun/HasMiniQuest
@@ -1,37 +1,59 @@
+
 HasMiniQuest()
+**************
 
-FUNKTION:
-        int HasMiniQuest(mixed pl, mixed name)
 
-DEFINIERT IN:
-        /secure/questmaster
+FUNKTION
+========
 
-ARGUMENTE:
-        pl
-          Name des Spielers oder das Spielerobjekt
-        name
-          Filename des Objekts oder das Objekt selbst, welches die Miniquest
-          im Spieler eintragen darf, oder die Nummer (int) der Miniquest
+   int HasMiniQuest(mixed pl, mixed name)
 
-RUeCKGABEWERT:
-         1 : Der Spieler hat die MiniQuest
-         0 : Der Spieler hat die MiniQuest noch nicht
-        -2 : angegebene Miniquest existiert nicht
-        -3 : falsche Datentypen fuer pl oder name uebergeben
 
-BESCHREIBUNG:
-        Mit dieser Funktion kann getestet werden, ob ein Spieler eine 
-        MiniQuest bereits geloest hat. Dabei ist entweder der Filename des 
-        Objektes anzugeben, das die Quest im Spieler eintragen darf oder
-        das Objekt selbst.
-        
-BEISPIEL:
-        if( QM->HasMiniQuest(getuid(this_player()), this_object())!=1 )
-          write("Du bist noch nicht reif genug.\n");
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        GiveMiniQuest(L)
-        /secure/questmaster.h, /secure/questmaster.c
+   /secure/questmaster
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   pl
+     Name des Spielers oder das Spielerobjekt
+   name
+     Filename des Objekts oder das Objekt selbst, welches die Miniquest
+     im Spieler eintragen darf, oder die Nummer (int) der Miniquest
+
+
+RUeCKGABEWERT
+=============
+
+    1 : Der Spieler hat die MiniQuest
+    0 : Der Spieler hat die MiniQuest noch nicht
+   -2 : angegebene Miniquest existiert nicht
+   -3 : falsche Datentypen fuer pl oder name uebergeben
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann getestet werden, ob ein Spieler eine
+   MiniQuest bereits geloest hat. Dabei ist entweder der Filename des
+   Objektes anzugeben, das die Quest im Spieler eintragen darf oder
+   das Objekt selbst.
+
+
+BEISPIEL
+========
+
+   if( QM->HasMiniQuest(getuid(this_player()), this_object())!=1 )
+     write("Du bist noch nicht reif genug.\n");
+
+
+SIEHE AUCH
+==========
+
+   GiveMiniQuest(L)
+   /secure/questmaster.h, /secure/questmaster.c
+
 Zuletzt geaendert: 2014-Feb-03, Arathorn.
diff --git a/doc/lfun/HitFunc b/doc/lfun/HitFunc
index 3d22075..2fb9b79 100644
--- a/doc/lfun/HitFunc
+++ b/doc/lfun/HitFunc
@@ -1,68 +1,94 @@
+
 HitFunc()
+*********
 
-FUNKTION:
-     int HitFunc(object enemy);
 
-DEFINIERT IN:
-     eigenen Objekten, fuer /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     enemy
-          Der Gegner, gegen den die Waffe eingesetzt wird.
+   int HitFunc(object enemy);
 
-BESCHREIBUNG:
-     Die Waffe kann anhand des Gegners enemy entscheiden, ob ein
-     Schadensbonus oder auch ein Schadensmalus wirksam wird. Dieser Bonus
-     wird zu dem normalen Schaden der Waffe hinzuaddiert.
 
-RUeCKGABEWERT:
-     Der Schadensbonus bzw. der Abschlag.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn durch den Bonus die Genehmigungsgrenzen der Balance
-     ueberschritten werden koennen, muss man seinen Regionsmagier und
-     die Objekt-Balance konsultieren!
+   eigenen Objekten, fuer /std/weapon/combat.c
 
-     Werte der HitFunc sollten immer ueber ein random() zurueckgegeben 
-     werden!
 
-     Diese Funktion sollte die Waffe nicht zerstoeren! Falls ihr im Kampf eine
-     Waffe (ggf. in Abhaengigkeit vom Gegner) zerstoeren wollt, nutzt dazu
-     bitte TakeFlaw(). 
+ARGUMENTE
+=========
 
-BEISPIELE:
-     Eine Waffe, die gegen Orks besonders gut wirkt:
+   enemy
+        Der Gegner, gegen den die Waffe eingesetzt wird.
 
-     inherit "std/weapon";
 
-     #include <properties.h>
-     #include <combat.h>
-     #include <class.h>
+BESCHREIBUNG
+============
 
-     create(){
-       if(!clonep(this_object())) {
-           set_next_reset(-1);
-           return;
-       }
-       ::create();
-       /* 
-       zig SetProp's, um die Waffe zu konfigurieren
-       HitFunc() ist in der Waffe selbst definiert 
-       */
-       SetProp(P_HIT_FUNC, this_object());
+   Die Waffe kann anhand des Gegners enemy entscheiden, ob ein
+   Schadensbonus oder auch ein Schadensmalus wirksam wird. Dieser Bonus
+   wird zu dem normalen Schaden der Waffe hinzuaddiert.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Schadensbonus bzw. der Abschlag.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn durch den Bonus die Genehmigungsgrenzen der Balance
+   ueberschritten werden koennen, muss man seinen Regionsmagier und
+   die Objekt-Balance konsultieren!
+
+   Werte der HitFunc sollten immer ueber ein random() zurueckgegeben
+   werden!
+
+   Diese Funktion sollte die Waffe nicht zerstoeren! Falls ihr im Kampf eine
+   Waffe (ggf. in Abhaengigkeit vom Gegner) zerstoeren wollt, nutzt dazu
+   bitte TakeFlaw().
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, die gegen Orks besonders gut wirkt:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+   #include <class.h>
+
+   create(){
+     if(!clonep(this_object())) {
+         set_next_reset(-1);
+         return;
      }
+     ::create();
+     /*
+     zig SetProp's, um die Waffe zu konfigurieren
+     HitFunc() ist in der Waffe selbst definiert
+     */
+     SetProp(P_HIT_FUNC, this_object());
+   }
 
-     int HitFunc(object enemy)
-     {
-       /* laesst sich der Gegner als Ork ansprechen? */
-       if (enemy->is_class_member(CL_ORC))
-         return random(10+random(50)); /* Ja => Schaden erhoehen */
+   int HitFunc(object enemy)
+   {
+     /* laesst sich der Gegner als Ork ansprechen? */
+     if (enemy->is_class_member(CL_ORC))
+       return random(10+random(50)); /* Ja => Schaden erhoehen */
 
-       return 0;   /* ansonsten keinen zusaetzlichen Schaden anrichten */
-     }
+     return 0;   /* ansonsten keinen zusaetzlichen Schaden anrichten */
+   }
 
-SIEHE AUCH:
-     QueryDefend(), /std/weapon.c
-     TakeFlaw()
-----------------------------------------------------------------------------
+
+SIEHE AUCH
+==========
+
+   QueryDefend(), /std/weapon.c
+   TakeFlaw()
+
 11.08.2007, Zesstra
diff --git a/doc/lfun/Identify b/doc/lfun/Identify
index 836e58b..9f55541 100644
--- a/doc/lfun/Identify
+++ b/doc/lfun/Identify
@@ -1,24 +1,43 @@
+
 Identify()
+**********
 
-FUNKTION:
-     void Identify(object ob);
 
-DEFINIERT IN:
-     /std/corpse.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob
-          Das kuerzlich nach langem, hartem Kampf verstorbene Objekt.
+   void Identify(object ob);
 
-BESCHREIBUNG:
-     In dieser Funktion werden Lang- und Kurzbeschreibung der Leiche gesetzt
-     sowie die Verwesung in Gang gesetzt.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/corpse.c
+   /std/corpse.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ob
+        Das kuerzlich nach langem, hartem Kampf verstorbene Objekt.
+
+
+BESCHREIBUNG
+============
+
+   In dieser Funktion werden Lang- und Kurzbeschreibung der Leiche gesetzt
+   sowie die Verwesung in Gang gesetzt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   /std/corpse.c
+
 Last modified: Wed May 8 10:19:57 1996 by Wargon
diff --git a/doc/lfun/InFight b/doc/lfun/InFight
index 086c5bd..73fef03 100644
--- a/doc/lfun/InFight
+++ b/doc/lfun/InFight
@@ -1,32 +1,52 @@
+
 InFight()
+*********
 
-FUNKTION:
-        mixed InFight()
 
-ARGUMENTE:
-        keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wurde dazu geschrieben, um herauszufinden,
-        ob sich ein PC/NPC direkt im Kampf befindet. Dazu wird
-        das Array mit den Namen der Feinden des PC/NPCs durch die
-        Funktion environment gefiltert und so festgestellt, ob
-        die Umgebung der beiden Feinde gleich ist.
+   mixed InFight()
 
-RUECKGABEWERT: 
-        Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt
-        im Moment keine Feinde hat bzw. die nicht im selben Raum
-        sind, oder aber das Feindobjekt, das als erstes im Array
-        steht und anwesend ist.
 
-BEISPIEL:
-        Selbsterklaerend ;)
+ARGUMENTE
+=========
 
-BEMERKUNG:
-        InFight() gibt lediglich das Ergebnis von EnemyPresent() zurueck.
+   keine
 
-SIEHE AUCH:
-        EnemyPresent(), PresentEnemies()
-        /std/living/combat.c
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wurde dazu geschrieben, um herauszufinden,
+   ob sich ein PC/NPC direkt im Kampf befindet. Dazu wird
+   das Array mit den Namen der Feinden des PC/NPCs durch die
+   Funktion environment gefiltert und so festgestellt, ob
+   die Umgebung der beiden Feinde gleich ist.
+
+RUECKGABEWERT:
+   Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt im
+   Moment keine Feinde hat bzw. die nicht im selben Raum sind, oder
+   aber das Feindobjekt, das als erstes im Array steht und anwesend
+   ist.
+
+
+BEISPIEL
+========
+
+   Selbsterklaerend ;)
+
+
+BEMERKUNG
+=========
+
+   InFight() gibt lediglich das Ergebnis von EnemyPresent() zurueck.
+
+
+SIEHE AUCH
+==========
+
+   EnemyPresent(), PresentEnemies()
+   /std/living/combat.c
 
 22.03.2009, Zesstra
diff --git a/doc/lfun/InList b/doc/lfun/InList
index adcd431..82de3c9 100644
--- a/doc/lfun/InList
+++ b/doc/lfun/InList
@@ -1,28 +1,48 @@
+
 InList()
+********
 
-FUNKTION:
-     int InList(object room, int *potionlist, int *knownlist)
 
-DEFINIERT IN:
-     /secure/potionmaster.c
+FUNKTION
+========
 
-ARGUMENTE:
-     Implizit: previous_object() - Spielerobjekt, das ZT bekommen soll
-     object room                 - Objekt, welches ZT vergeben will
-     int* potionlist             - Liste der ZTs des Spielers
-     int* knownlist              - Liste der bekannten ZTs des Spielers
+   int InList(object room, int *potionlist, int *knownlist)
 
-BESCHREIBUNG:
-     Prueft, ob 'room' einen ZT vergeben darf und gibt zurueck, ob die
-     Nummer dieses ZTs in der 'knownlist' enthalten ist.
 
-RUeCKGABEWERT:
-     0  Kein aktiver ZT oder nicht in Liste enthalten.
-     1  Aktiver ZT und in Liste.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Sonstiges: zaubertraenke, /room/orakel.c
-     Verwandt:  FindPotion(), RemoveKnownPotion(), AddKnownPotion()
-     Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+   /secure/potionmaster.c
+
+
+ARGUMENTE
+=========
+
+   Implizit: previous_object() - Spielerobjekt, das ZT bekommen soll
+   object room                 - Objekt, welches ZT vergeben will
+   int* potionlist             - Liste der ZTs des Spielers
+   int* knownlist              - Liste der bekannten ZTs des Spielers
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob 'room' einen ZT vergeben darf und gibt zurueck, ob die
+   Nummer dieses ZTs in der 'knownlist' enthalten ist.
+
+
+RUeCKGABEWERT
+=============
+
+   0  Kein aktiver ZT oder nicht in Liste enthalten.
+   1  Aktiver ZT und in Liste.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /room/orakel.c
+   Verwandt:  FindPotion(), RemoveKnownPotion(), AddKnownPotion()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
 
 6.Feb 2016 Gloinson
diff --git a/doc/lfun/InformAlcoholEffect b/doc/lfun/InformAlcoholEffect
index 0fa5297..4967510 100644
--- a/doc/lfun/InformAlcoholEffect
+++ b/doc/lfun/InformAlcoholEffect
@@ -1,43 +1,65 @@
-InformAlcoholEffect
 
-FUNKTION:
-	void InformAlcoholEffect(object pl, int msgid, int area)
+InformAlcoholEffect()
+*********************
 
-DEFINIERT IN:
-     eigenen Objekten; fuer /std/living/life.c
- 
-ARGUMENTE:
-	pl
-          Das Lebewesen, das alkoholisiert ist.
-        msgid
-          Flag fuer die Meldung, die ausgegeben wird.
-        area
-          Aufruf erfolgt in Gilde (0) oder im Environment (1).
 
-BESCHREIBUNG:
-        Wenn ein Lebewesen alkoholisiert ist, werden in unregelmaessigen
-        Abstaenden Meldungen an die Umgebung und ans Lebewesen ausgegeben.
-        Gleichzeitig wird die Funktion InformAlcoholEffect in der Gilde
-        und im Environment des Lebewesens aufgerufen.
-        
-        Es gibt vier verschiedene Meldungen (definiert in /sys/health.h):
-        ALC_EFFECT_HICK      (0) : "<Hick>! Oh, Tschuldigung.\n"
-        ALC_EFFECT_RUELPS    (1) : "Du ruelpst.\n"
-        ALC_EFFECT_LOOKDRUNK (2) : "Du fuehlst Dich benommen.\n"
-        ALC_EFFECT_STUMBLE   (3) : "Du stolperst.\n"
-        
-        Wird die Funktion in einem Gildenraum implementiert, so kann man
-        anhand des 3. Parameters unterscheiden, ob die Gilde als Gilde
-        oder als Raum gemeint ist (die Funktion wird je einmal aufgerufen):
-        ALC_EFFECT_AREA_GUILD (0) : der Aufruf betrifft die Gilde,
-        ALC_EFFECT_AREA_ENV   (1) : der Aufruf betrifft die Umgebung.
+FUNKTION
+========
 
-RUeCKGABEWERT:
-	keiner
+   void InformAlcoholEffect(object pl, int msgid, int area)
 
-SIEHE AUCH:
-        P_ALCOHOL, /sys/health.h
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   eigenen Objekten; fuer /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das alkoholisiert ist.
+   msgid
+     Flag fuer die Meldung, die ausgegeben wird.
+   area
+     Aufruf erfolgt in Gilde (0) oder im Environment (1).
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Lebewesen alkoholisiert ist, werden in unregelmaessigen
+   Abstaenden Meldungen an die Umgebung und ans Lebewesen ausgegeben.
+   Gleichzeitig wird die Funktion InformAlcoholEffect in der Gilde
+   und im Environment des Lebewesens aufgerufen.
+
+
+
+   Es gibt vier verschiedene Meldungen (definiert in /sys/health.h):
+   ALC_EFFECT_HICK      (0) : "<Hick>! Oh, Tschuldigung.\n"
+   ALC_EFFECT_RUELPS    (1) : "Du ruelpst.\n"
+   ALC_EFFECT_LOOKDRUNK (2) : "Du fuehlst Dich benommen.\n"
+   ALC_EFFECT_STUMBLE   (3) : "Du stolperst.\n"
+
+
+
+   Wird die Funktion in einem Gildenraum implementiert, so kann man
+   anhand des 3. Parameters unterscheiden, ob die Gilde als Gilde
+   oder als Raum gemeint ist (die Funktion wird je einmal aufgerufen):
+   ALC_EFFECT_AREA_GUILD (0) : der Aufruf betrifft die Gilde,
+   ALC_EFFECT_AREA_ENV   (1) : der Aufruf betrifft die Umgebung.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, /sys/health.h
+
 Last modified: Thu May 23 23:08:00 2002 by Mupfel
-
diff --git a/doc/lfun/InformDefend b/doc/lfun/InformDefend
index eb36921..d6a401e 100644
--- a/doc/lfun/InformDefend
+++ b/doc/lfun/InformDefend
@@ -1,62 +1,81 @@
+
 InformDefend()
+**************
 
-FUNKTION:
-	void InformDefend(object enemy);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	enemy
-	  Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+   void InformDefend(object enemy);
 
-BESCHREIBUNG:
-	Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
-	informiert werden, sofern diese Objekte bei dem angegriffenen
-	Lebewesen mittels AddDefender() angemeldet wurden und sich der
-	selben Umgebung befinden.
-	Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
-	andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
-	sind, verteidigen sollen.
-	Bei einem Angriff auf das Lebewesen werden alle Objekte per Aufruf
-	von InformDefend() darueber informiert, wobei der Angreifer als
-	Parameter uebergeben wird.
-	Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
-	wobei der Skill SK_INFORM_DEFEND, sofern vorhanden, aufgerufen wird.
 
-BEISPIEL:
-	Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
-	verteidigen, z.B. beschworene Daemonen:
-	  inherit "std/npc";
-	  include <properties.h>
-	  object owner;
-	  void create()
-	  { ::create();
-	    SetProp(P_NAME,"Daemon");
-	    ...
-	  }
-	// nach Clonen des Daemons folgende Funktion mit Beschwoerer als
-	// Parameter aufrufen
-	  Identify(object caster)
-	  { if(!objectp(caster))
-	      call_out(#'remove,0);
-	    owner=caster;
-	    owner->AddDefender(this_object());
-	  }
-	// folgende Funktion wird automatisch aufgerufen, wenn der
-	// Beschwoerer angegriffen wird
-	  void InformDefend(object enemy)
-	  { if(!IsEnemy(enemy)&&enemy!=owner)
-	      Kill(enemy);
-	  }
-	Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
-	Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
-	diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
-	uebergeben wird.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	AddDefender(), RemoveDefender(), DefendOther(), Kill(), IsEnemy(),
-	P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
+   /std/living/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   enemy
+     Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+
+
+BESCHREIBUNG
+============
+
+   Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
+   informiert werden, sofern diese Objekte bei dem angegriffenen
+   Lebewesen mittels AddDefender() angemeldet wurden und sich der
+   selben Umgebung befinden.
+   Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
+   andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
+   sind, verteidigen sollen.
+   Bei einem Angriff auf das Lebewesen werden alle Objekte per Aufruf
+   von InformDefend() darueber informiert, wobei der Angreifer als
+   Parameter uebergeben wird.
+   Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
+   wobei der Skill SK_INFORM_DEFEND, sofern vorhanden, aufgerufen wird.
+
+
+BEISPIEL
+========
+
+   Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
+   verteidigen, z.B. beschworene Daemonen:
+     inherit "std/npc";
+     include <properties.h>
+     object owner;
+     void create()
+     { ::create();
+       SetProp(P_NAME,"Daemon");
+       ...
+     }
+   // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
+   // Parameter aufrufen
+     Identify(object caster)
+     { if(!objectp(caster))
+         call_out(#'remove,0);
+       owner=caster;
+       owner->AddDefender(this_object());
+     }
+   // folgende Funktion wird automatisch aufgerufen, wenn der
+   // Beschwoerer angegriffen wird
+     void InformDefend(object enemy)
+     { if(!IsEnemy(enemy)&&enemy!=owner)
+         Kill(enemy);
+     }
+   Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
+   Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
+   diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
+   uebergeben wird.
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), RemoveDefender(), DefendOther(), Kill(), IsEnemy(),
+   P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
+
 Last modified: Thu Jul 29 18:48:45 1999 by Patryn
diff --git a/doc/lfun/InformRowChange b/doc/lfun/InformRowChange
index e2aa8fc..7e7b804 100644
--- a/doc/lfun/InformRowChange
+++ b/doc/lfun/InformRowChange
@@ -1,23 +1,43 @@
+
 InformRowChange()
+*****************
 
-FUNKTION:
-	varargs void InformRowChange(int from, int to, object caster);
 
-DEFINIERT IN:
-	/std/living/team.c
+FUNKTION
+========
 
-ARGUMENTE:
-	from   - Reihe, in die der Spieler vorher war.
-	to     - Reihe in der der Spieler jetzt ist.
-	caster - Der Spieler, falls die Funktion in der Gilde aufgerufen wird.
-        
-BESCHREIBUNG:
-	Diese Funktion wird im Spieler und in seiner Gilde aufgerufen,
-	falls sich die aktuelle Kampfreihe in der Teamaufstellung
-	aendert.
+   varargs void InformRowChange(int from, int to, object caster);
 
-RUECKGABEWERT:
-	Keiner.
 
-SIEHE AUCH:
-	teams
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   from   - Reihe, in die der Spieler vorher war.
+   to     - Reihe in der der Spieler jetzt ist.
+   caster - Der Spieler, falls die Funktion in der Gilde aufgerufen wird.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Spieler und in seiner Gilde aufgerufen,
+   falls sich die aktuelle Kampfreihe in der Teamaufstellung
+   aendert.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+SIEHE AUCH
+==========
+
+   teams
diff --git a/doc/lfun/InformUnwear b/doc/lfun/InformUnwear
index 9471028..01e9886 100644
--- a/doc/lfun/InformUnwear
+++ b/doc/lfun/InformUnwear
@@ -1,29 +1,48 @@
-InformUnwear
 
-FUNKTION:
-	protected void InformUnwear(object pl, int silent, int all)
+InformUnwear()
+**************
 
-DEFINIERT IN:
-        /std/clothing/wear.c
 
-ARGUMENTE:
-	pl
-          Das Lebewesen, das die Ruestung ausgezogen hat.
-        silent
-          Flag, ob Meldungen unterdruckt werden sollen.
-        all
-          Flag, ob die Ruestung mit "ziehe alles aus"/
-          "ziehe alle ruestungen aus" ausgezogen wurde.
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
-        ausgezogen wurde.
+   protected void InformUnwear(object pl, int silent, int all)
 
-RUeCKGABEWERT:
-	keiner
 
-SIEHE AUCH:
-        InformUnwield(), InformWield(), InformWear()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/clothing/wear.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Ruestung ausgezogen hat.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+   all
+     Flag, ob die Ruestung mit "ziehe alles aus"/
+     "ziehe alle ruestungen aus" ausgezogen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
+   ausgezogen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformUnwield(), InformWield(), InformWear()
+
 06.10.2007, Zesstra
diff --git a/doc/lfun/InformUnwield b/doc/lfun/InformUnwield
index ef2d9bc..1f10e72 100644
--- a/doc/lfun/InformUnwield
+++ b/doc/lfun/InformUnwield
@@ -1,26 +1,45 @@
-InformUnwield
 
-FUNKTION:
-	protected void InformUnwield(object pl, int silent)
+InformUnwield()
+***************
 
-DEFINIERT IN:
-	/std/weapon/combat.c
 
-ARGUMENTE:
-	pl
-          Das Lebewesen, das die Waffe gezueckt hatte.
-        silent
-          Flag, ob Meldungen unterdruckt werden sollen.
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wird aufgerufen, wenn die Waffe erfolgreich
-        weggesteckt wurde.
+   protected void InformUnwield(object pl, int silent)
 
-RUeCKGABEWERT:
-	keiner
 
-SIEHE AUCH:
-        InformWield(), InformWear(), InformUnwear()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Waffe gezueckt hatte.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Waffe erfolgreich
+   weggesteckt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformWield(), InformWear(), InformUnwear()
+
 06.10.2007, Zesstra
diff --git a/doc/lfun/InformWear b/doc/lfun/InformWear
index 4c7c9b4..6860633 100644
--- a/doc/lfun/InformWear
+++ b/doc/lfun/InformWear
@@ -1,29 +1,48 @@
-InformWear
 
-FUNKTION:
-	protected void InformWear(object pl, int silent, int all)
+InformWear()
+************
 
-DEFINIERT IN:
-        /std/clothing/wear.c
 
-ARGUMENTE:
-	pl
-          Das Lebewesen, das die Ruestung angezogen hat.
-        silent
-          Flag, ob Meldungen unterdruckt werden sollen.
-        all
-          Flag, ob die Ruestung mit "trage alles"/"trage alle ruestungen"
-          angezogen wurde.
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
-        angezogen wurde.
+   protected void InformWear(object pl, int silent, int all)
 
-RUeCKGABEWERT:
-	keiner
 
-SIEHE AUCH:
-        InformUnwield(), InformWield(), InformUnwear()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/clothing/wear.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Ruestung angezogen hat.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+   all
+     Flag, ob die Ruestung mit "trage alles"/"trage alle ruestungen"
+     angezogen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
+   angezogen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformUnwield(), InformWield(), InformUnwear()
+
 06.10.2007, Zesstra
diff --git a/doc/lfun/InformWield b/doc/lfun/InformWield
index 67c6b98..0c14c2a 100644
--- a/doc/lfun/InformWield
+++ b/doc/lfun/InformWield
@@ -1,26 +1,45 @@
-InformWield
 
-FUNKTION:
-	protected void InformWield(object pl, int silent)
+InformWield()
+*************
 
-DEFINIERT IN:
-	/std/weapon/combat.c
 
-ARGUMENTE:
-	pl
-          Das Lebewesen, das die Waffe gezueckt hat.
-        silent
-          Flag, ob Meldungen unterdruckt werden sollen.
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wird aufgerufen, wenn die Waffe erfolgreich
-        gezueckt wurde.
+   protected void InformWield(object pl, int silent)
 
-RUeCKGABEWERT:
-	keiner
 
-SIEHE AUCH:
-        InformUnwield(), InformWear(), InformUnwear()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Waffe gezueckt hat.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Waffe erfolgreich
+   gezueckt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformUnwield(), InformWear(), InformUnwear()
+
 06.10.2007, Zesstra
diff --git a/doc/lfun/InsertEnemy b/doc/lfun/InsertEnemy
index 03d1d7d..84885db 100644
--- a/doc/lfun/InsertEnemy
+++ b/doc/lfun/InsertEnemy
@@ -1,28 +1,53 @@
+
+InsertEnemy()
+*************
+
 gefunden : lfun/InsertEnemy
 
-FUNKTION:
-        int InsertEnemy(object enemy)
-        
-DEFINIERT IN:
-        /std/living/combat.c
-        
-ARGUMENTE:
-        enemy: Das Lebewesen, das angegriffen werden soll.
-        
-BESCHREIBUNG:
-        Nach Aufruf der Funktion wird das Wesen in die Liste der Feinde
-        aufgenommen.
-        In jedem heart_beat() wird dann ein anwesender Feind
-        angegriffen.
-        
-RUECKGABEWERT:
-        0, falls der Feind nicht existiert, kein Lebewesen ist, ein Geist ist, 
-           oder im Gegner P_NO_ATTACK gesetzt ist, oder schon angegegriffen 
-           wurde
-        1  sonst
-        
-SIEHE AUCH:
-        Kill, IsEnemy, StopHuntFor, P_NO_ATTACK
 
-LETZTE AENDERUNG:
+FUNKTION
+========
+
+   int InsertEnemy(object enemy)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   enemy: Das Lebewesen, das angegriffen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Nach Aufruf der Funktion wird das Wesen in die Liste der Feinde
+   aufgenommen.
+   In jedem heart_beat() wird dann ein anwesender Feind
+   angegriffen.
+
+
+RUECKGABEWERT
+=============
+
+   0, falls der Feind nicht existiert, kein Lebewesen ist, ein Geist ist,
+      oder im Gegner P_NO_ATTACK gesetzt ist, oder schon angegegriffen
+      wurde
+   1  sonst
+
+
+SIEHE AUCH
+==========
+
+   Kill, IsEnemy, StopHuntFor, P_NO_ATTACK
+
+
+LETZTE AENDERUNG
+================
+
 26.08.2010, Zesstra
diff --git a/doc/lfun/InsertEnemyTeam b/doc/lfun/InsertEnemyTeam
index e9ade63..b25843d 100644
--- a/doc/lfun/InsertEnemyTeam
+++ b/doc/lfun/InsertEnemyTeam
@@ -1,46 +1,66 @@
 
 InsertEnemyTeam()
+*****************
 
 
-FUNKTION:
-        varargs void InsertEnemyTeam(mixed ens, int rek)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   varargs void InsertEnemyTeam(mixed ens, int rek)
 
-ARGUMENTE:
-        ens     object Feind oder object *Feinde
-        rek     Wurde von InsertEnemyTeam aufgerufen
 
-BESCHREIBUNG:
-        Alle Teammitglieder des Feindes bzw. die angegebenen Feinde (aber
-        nicht deren Teammitglieder) werden zu Feinden
-         a) des Spielers und aller Teammitglieder, falls rek==0
-         b) des Spielers, falls rek!=0
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        keiner
+   /std/living/team.c
 
-BEMERKUNGEN:
-        1. Nur wenn Gegner und Teammitglied im gleichen Raum stehen (aber
-           nicht notwendigerweise im gleichen Raum wie der Spieler) werden
-           sie zu Feinden.
-        2. Falls Teammitglied und Gegner beides Spieler sind, werden sie
-           nicht zu Feinden gemacht.
-        3. Ist der Gegner im eigenen Team, so wird nichts gemacht.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   ens     object Feind oder object *Feinde
+   rek     Wurde von InsertEnemyTeam aufgerufen
+
+
+BESCHREIBUNG
+============
+
+   Alle Teammitglieder des Feindes bzw. die angegebenen Feinde (aber
+   nicht deren Teammitglieder) werden zu Feinden
+    a) des Spielers und aller Teammitglieder, falls rek==0
+    b) des Spielers, falls rek!=0
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   1. Nur wenn Gegner und Teammitglied im gleichen Raum stehen (aber
+      nicht notwendigerweise im gleichen Raum wie der Spieler) werden
+      sie zu Feinden.
+   2. Falls Teammitglied und Gegner beides Spieler sind, werden sie
+      nicht zu Feinden gemacht.
+   3. Ist der Gegner im eigenen Team, so wird nichts gemacht.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/InsertSensitiveObject b/doc/lfun/InsertSensitiveObject
index c89cef8..534db19 100644
--- a/doc/lfun/InsertSensitiveObject
+++ b/doc/lfun/InsertSensitiveObject
@@ -1,48 +1,68 @@
+
 InsertSensitiveObject()
-FUNKTION:
-     void InsertSensitiveObject(object ob, mixed *arg)
+***********************
 
-DEFINIERT IN:
-     /std/container/inventory.c
-     generalizes /std/living/inventory.c
 
-BESCHREIBUNG:
-     Fuegt "ob" in die Benachrichtigungslisten des Containers ein.
-     Wird von thing/moving.c im Ziel-Environment gerufen, wenn
-     P_SENSITIVE gesetzt ist.
+FUNKTION
+========
 
-BEMERKUNGEN:
-     Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
-     dann muss man auch InsertSensitiveObject() im Environment
-     auch selbst rufen!
+   void InsertSensitiveObject(object ob, mixed *arg)
 
-BEISPIEL:
-     // Fackel (inheriting lightsource)
-     // wenn angezuendet, aendert es die Eigenschaften und wird zum
-     // aktiven Objekt - das muss man dem environment() mitteilen
-     static int light(string str) {
-      int i;
-      i=::light(str);
-      if(i && QueryProp(P_LIGHT)>0) {
-       SetProp(P_SENSITIVE,
-        ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
-       if(environment())
-        environment()->InsertSensitiveObject(this_object(),
-					     QueryProp(P_SENSITIVE));
-      }
-      return i;
-     }
 
-     - falls ein empfindliches Objekt im environment() ist, dann wird
-       in diesem nun eventuell (Treshold) trigger_sensitive_inv()
-       gerufen
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_SENSITIVE
-     RemoveSensitiveObject
-     insert_sensitive_inv_trigger, insert_sensitive_inv
-     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
-     CheckSensitiveAttack
+   /std/container/inventory.c
+   generalizes /std/living/inventory.c
+
+
+BESCHREIBUNG
+============
+
+   Fuegt "ob" in die Benachrichtigungslisten des Containers ein.
+   Wird von thing/moving.c im Ziel-Environment gerufen, wenn
+   P_SENSITIVE gesetzt ist.
+
+
+BEMERKUNGEN
+===========
+
+   Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
+   dann muss man auch InsertSensitiveObject() im Environment
+   auch selbst rufen!
+
+
+BEISPIEL
+========
+
+   // Fackel (inheriting lightsource)
+   // wenn angezuendet, aendert es die Eigenschaften und wird zum
+   // aktiven Objekt - das muss man dem environment() mitteilen
+   static int light(string str) {
+    int i;
+    i=::light(str);
+    if(i && QueryProp(P_LIGHT)>0) {
+     SetProp(P_SENSITIVE,
+      ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
+     if(environment())
+      environment()->InsertSensitiveObject(this_object(),
+                                           QueryProp(P_SENSITIVE));
+    }
+    return i;
+   }
+
+   - falls ein empfindliches Objekt im environment() ist, dann wird
+     in diesem nun eventuell (Treshold) trigger_sensitive_inv()
+     gerufen
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
 
 25.Apr.2001, Gloinson@MG
-
diff --git a/doc/lfun/InternalModifyAttack b/doc/lfun/InternalModifyAttack
index 0ac2d19..2d9f3eb 100644
--- a/doc/lfun/InternalModifyAttack
+++ b/doc/lfun/InternalModifyAttack
@@ -1,37 +1,58 @@
+
+InternalModifyAttack()
+**********************
+
+
 InternalModifyAttack(L)
+=======================
 
-FUNKTION:
-     protected void InternalModifyAttack(mapping ainfo)
 
-DEFINIERT IN:
-     /std/living/combat
+FUNKTION
+========
 
-ARGUMENTE:
-     mapping ainfo		Werte aus der Attack
+   protected void InternalModifyAttack(mapping ainfo)
 
-BESCHREIBUNG:
-     Dient dazu noch Aenderungen am Verhalten der Attack() vornehmen zu
-     koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
-     wirken also direkt in der Attack()!
-     Einfach ueberschreiben (aber ::InternalModifyAttack(&ainfo) nicht
-     vergessen!
 
-     Aufbau von 'ainfo':
-     ([ SI_ENEMY :            object Angreifer,			(-> Defend)
-        SI_SPELL :           0/1/array Spellparameter,		(-> Defend)
-        P_WEAPON :           - oder Waffe,
-        SI_SKILLDAMAGE_MSG:  string Angriffsmeldungsende an Raum,
-        SI_SKILLDAMAGE_MSG2: string Angriffsmeldungsende an Kaempfende,
-        SI_SKILLDAMAGE:      int Schaden in Zehntel HP (Skills schon drin)
-								(-> Defend),
-        SI_SKILLDAMAGE_TYPE: string/string* Schadenstypen,	(-> Defend)
-        P_WEAPON_TYPE:       string Waffentyp (combat.h),
-        P_WC:		     - oder int WC der Waffe/Hand,
-        P_NR_HANDS:	     - oder int Hands der Waffe/Hand,
-     ]);
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     InternalModifyDefend(L)
-     Attack(L)
+   /std/living/combat
+
+
+ARGUMENTE
+=========
+
+   mapping ainfo              Werte aus der Attack
+
+
+BESCHREIBUNG
+============
+
+   Dient dazu noch Aenderungen am Verhalten der Attack() vornehmen zu
+   koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
+   wirken also direkt in der Attack()!
+   Einfach ueberschreiben (aber ::InternalModifyAttack(&ainfo) nicht
+   vergessen!
+
+   Aufbau von 'ainfo':
+   ([ SI_ENEMY :            object Angreifer,                 (-> Defend)
+      SI_SPELL :           0/1/array Spellparameter,          (-> Defend)
+      P_WEAPON :           - oder Waffe,
+      SI_SKILLDAMAGE_MSG:  string Angriffsmeldungsende an Raum,
+      SI_SKILLDAMAGE_MSG2: string Angriffsmeldungsende an Kaempfende,
+      SI_SKILLDAMAGE:      int Schaden in Zehntel HP (Skills schon drin)
+                                                              (-> Defend),
+      SI_SKILLDAMAGE_TYPE: string/string* Schadenstypen,      (-> Defend)
+      P_WEAPON_TYPE:       string Waffentyp (combat.h),
+      P_WC:                - oder int WC der Waffe/Hand,
+      P_NR_HANDS:          - oder int Hands der Waffe/Hand,
+   ]);
+
+
+SIEHE AUCH
+==========
+
+   InternalModifyDefend(L)
+   Attack(L)
 
 28.03.2008, Zesstra
diff --git a/doc/lfun/InternalModifyDefend b/doc/lfun/InternalModifyDefend
index 93f0d39..3015534 100644
--- a/doc/lfun/InternalModifyDefend
+++ b/doc/lfun/InternalModifyDefend
@@ -1,29 +1,50 @@
+
+InternalModifyDefend()
+**********************
+
+
 InternalModifyDefend(L)
+=======================
 
-FUNKTION:
-     protected void InternalModifyDefend(int dam, mixed dt, mixed spell,
-				      object enemy)
 
-DEFINIERT IN:
-     /std/living/combat
+FUNKTION
+========
 
-ARGUMENTE:
-     int dam             Staerke des abzuwehrenden Angriffs (in HP/10)
-     string/string* dt   Art(en) des Schadens, der angerichtet werden soll
-     int/mapping spell   0 fuer normale Angriffe (keine Zauber)
-                         1 fuer Zauber (Standardruestungen ignorieren)
-                         mapping fuer mehr Informationen
-     object enemy        der Feind/Schadenverursacher
+   protected void InternalModifyDefend(int dam, mixed dt, mixed spell,
+                                    object enemy)
 
-BESCHREIBUNG:
-     Dient dazu noch Aenderungen am Verhalten der Defend() vornehmen zu
-     koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
-     wirken also direkt in der Defend()!
-     Einfach ueberschreiben, aber ::InternalModifyDefend(&..., &....) nicht
-     vergessen!
 
-SIEHE AUCH:
-     InternalModifyAttack(L)
-     Defend(L)
+DEFINIERT IN
+============
+
+   /std/living/combat
+
+
+ARGUMENTE
+=========
+
+   int dam             Staerke des abzuwehrenden Angriffs (in HP/10)
+   string/string* dt   Art(en) des Schadens, der angerichtet werden soll
+   int/mapping spell   0 fuer normale Angriffe (keine Zauber)
+                       1 fuer Zauber (Standardruestungen ignorieren)
+                       mapping fuer mehr Informationen
+   object enemy        der Feind/Schadenverursacher
+
+
+BESCHREIBUNG
+============
+
+   Dient dazu noch Aenderungen am Verhalten der Defend() vornehmen zu
+   koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
+   wirken also direkt in der Defend()!
+   Einfach ueberschreiben, aber ::InternalModifyDefend(&..., &....) nicht
+   vergessen!
+
+
+SIEHE AUCH
+==========
+
+   InternalModifyAttack(L)
+   Defend(L)
 
 28.03.2008, Zesstra
diff --git a/doc/lfun/IsArmour b/doc/lfun/IsArmour
index 8ef812a..a7e5daf 100644
--- a/doc/lfun/IsArmour
+++ b/doc/lfun/IsArmour
@@ -1,32 +1,55 @@
+
 IsArmour()
+**********
 
-FUNKTION:
-    status IsArmour()
 
-DEFINIERT IN:
-    /std/armour/wear.c
+FUNKTION
+========
 
-RUeCKGABEWERT:
-    1 wenn ein Ruestung
-    0 sonst
+   status IsArmour()
 
-BESCHREIBUNG:
-    Gibt 1 zurueck, wenn entsprechende Klasse irgendwo geerbt wurden, es
-    also eine Ruestung ist.
 
-BEMERKUNGEN:
-    Entsprechende Basisklasse ueberschreibt und gibt fuer IsClothing()
-    explizit 0 zurueck.
+DEFINIERT IN
+============
 
-BEISPIEL:
-    // enthaelt im Gegensatz zu P_ARMOURS auch nichtgetragenen Kram
-    // im Inventory L1
-    object *allarmours =
-      filter_objects(all_inventory(this_player()), "IsArmour")
+   /std/armour/wear.c
 
-SIEHE AUCH:
-    Aehnlich: living, interactive
-    Aehnlich: IsBottle, IsClothing, IsPlayerCorpse, IsRoom, IsUnit
-    Props:    P_ARMOURS
+
+RUeCKGABEWERT
+=============
+
+   1 wenn ein Ruestung
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn entsprechende Klasse irgendwo geerbt wurden, es
+   also eine Ruestung ist.
+
+
+BEMERKUNGEN
+===========
+
+   Entsprechende Basisklasse ueberschreibt und gibt fuer IsClothing()
+   explizit 0 zurueck.
+
+
+BEISPIEL
+========
+
+   // enthaelt im Gegensatz zu P_ARMOURS auch nichtgetragenen Kram
+   // im Inventory L1
+   object *allarmours =
+     filter_objects(all_inventory(this_player()), "IsArmour")
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsBottle, IsClothing, IsPlayerCorpse, IsRoom, IsUnit
+   Props:    P_ARMOURS
 
 3. Sep 2016, Gloinson
diff --git a/doc/lfun/IsBottle b/doc/lfun/IsBottle
index 8ac0c96..08f0125 100644
--- a/doc/lfun/IsBottle
+++ b/doc/lfun/IsBottle
@@ -1,21 +1,42 @@
+
+IsBottle()
+**********
+
+
 IsPlayerCorpse
+==============
 
-FUNKTION:
-    int IsBottle()
 
-DEFINIERT IN:
-    /std/items/flasche.c
+FUNKTION
+========
 
-RUeCKGABEWERT:
-    1 wenn Flasche
-    0 sonst
+   int IsBottle()
 
-BESCHREIBUNG:
-    Gibt 1 zurueck, wenn das eine Flasche mit ordentlichem Flaschenverhalten
-    ist.
 
-SIEHE AUCH:
-    Aehnlich: living, interactive
-    Aehnlich: IsArmour, IsClothing, IsPlayerCorpse, IsRoom, IsUnit
+DEFINIERT IN
+============
+
+   /std/items/flasche.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn Flasche
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn das eine Flasche mit ordentlichem Flaschenverhalten
+   ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsClothing, IsPlayerCorpse, IsRoom, IsUnit
 
 3. Sep 2016, Gloinson
diff --git a/doc/lfun/IsClothing b/doc/lfun/IsClothing
index 843e18d..c51f3f6 100644
--- a/doc/lfun/IsClothing
+++ b/doc/lfun/IsClothing
@@ -1,29 +1,49 @@
+
 IsClothing()
+************
 
-FUNKTION:
-    status IsClothing()
 
-DEFINIERT IN:
-    /std/clothing.c
-    /std/clothing_container.c
+FUNKTION
+========
 
-RUeCKGABEWERT:
-    1 wenn ein Kleidungsstueck
-    0 sonst
+   status IsClothing()
 
-BESCHREIBUNG:
-    Gibt 1 zurueck, wenn entsprechende Klassen irgendwo geerbt wurden, es
-    also ein Kleidungsstueck (oder ein Kleidungsstueck mit Taschen) ist.
 
-BEISPIEL:
-    // enthaelt im Gegensatz zu P_CLOTHING auch nichtgetragenen Kram
-    // im Inventory L1
-    object *allcloth =
-      filter_objects(all_inventory(this_player()), "IsClothing")
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    Aehnlich: living, interactive
-    Aehnlich: IsArmour, IsBottle, IsPlayerCorpse, IsRoom, IsUnit
-    Props:    P_CLOTHING
+   /std/clothing.c
+   /std/clothing_container.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn ein Kleidungsstueck
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn entsprechende Klassen irgendwo geerbt wurden, es
+   also ein Kleidungsstueck (oder ein Kleidungsstueck mit Taschen) ist.
+
+
+BEISPIEL
+========
+
+   // enthaelt im Gegensatz zu P_CLOTHING auch nichtgetragenen Kram
+   // im Inventory L1
+   object *allcloth =
+     filter_objects(all_inventory(this_player()), "IsClothing")
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsBottle, IsPlayerCorpse, IsRoom, IsUnit
+   Props:    P_CLOTHING
 
 3. Sep 2016, Gloinson
diff --git a/doc/lfun/IsEnemy b/doc/lfun/IsEnemy
index c406cd5..45fb1fc 100644
--- a/doc/lfun/IsEnemy
+++ b/doc/lfun/IsEnemy
@@ -1,31 +1,50 @@
+
 IsEnemy()
+*********
 
-FUNKTION:
-	int IsEnemy(object wer);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	wer
-	  Das Objekt, welches darauf ueberprueft werden soll, ob es
-	  derzeit als Gegner bekannt ist.
+   int IsEnemy(object wer);
 
-RUeCKGABEWERT:
-	Flag: 1 bei Feindschaft, 0 sonst
 
-BESCHREIBUNG:
-	Mit dieser Funktion kann man ueberpruefen, ob das Objekt <wer>, also
-	im Normalfall ein Lebewesen, derzeit als Gegner erkannt wird. Nach
-	einer gewissen Zeit laeuft die Feindschaft automatisch aus, sodass
-	man sich nicht darauf verlassen, dass ein Gegner auch zukuenftig als
-	solchiger erkannt wird. (Diese Zeit betraegt normal 300 Sekunden.)
-	Solch eine Feindschaft kann im uebrigen auch einseitig sein! Mehr
-	dazu findet man in der Dokumentation zu StopHuntFor(), einer
-	Funktion, die Frieden zwischen Gegnern stiften soll.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	SelectEnemy(), QueryEnemies(), StopHuntFor()
+   /std/living/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   wer
+     Das Objekt, welches darauf ueberprueft werden soll, ob es
+     derzeit als Gegner bekannt ist.
+
+
+RUeCKGABEWERT
+=============
+
+   Flag: 1 bei Feindschaft, 0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man ueberpruefen, ob das Objekt <wer>, also
+   im Normalfall ein Lebewesen, derzeit als Gegner erkannt wird. Nach
+   einer gewissen Zeit laeuft die Feindschaft automatisch aus, sodass
+   man sich nicht darauf verlassen, dass ein Gegner auch zukuenftig als
+   solchiger erkannt wird. (Diese Zeit betraegt normal 300 Sekunden.)
+   Solch eine Feindschaft kann im uebrigen auch einseitig sein! Mehr
+   dazu findet man in der Dokumentation zu StopHuntFor(), einer
+   Funktion, die Frieden zwischen Gegnern stiften soll.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryEnemies(), StopHuntFor()
+
 Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/lfun/IsEqual b/doc/lfun/IsEqual
index 806661e..34d142f 100644
--- a/doc/lfun/IsEqual
+++ b/doc/lfun/IsEqual
@@ -1,39 +1,58 @@
+
 IsEqual()
+*********
+
 
 FUNKTION
-    int IsEqual(object ob)
+========
 
-DEFINIERT IN:
-    /std/unit.c
+   int IsEqual(object ob)
 
-ARGUMENTE:
-    ob      Das Objekt das geprueft werden soll.
 
-BESCHREIBUNG:                                                               
-    Diese Funktion prueft ob zwei Objekte vom gleichen Typ sind, also ob
-    z.B. ob und this_object() beides Muenzen sind oder beides Edelsteine.
-    Bei einem Ergebnis != 0 fasst unit.c diese zwei Objekte automatisch
-    zusammen, wenn ob->IsEqual(this_object()) auch einen Wert != 0 ergibt.
-    Hierbei wird das IsEqual() von beiden beteiligten Objekten gerufen und sie
-    muessen uebereinstimmen, dass sie eigentlich das gleiche Objekt sind.
-    Selbstverstaendlich ist diese Funktion nur im Falle von Unitobjekten
-    sinnvoll.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    0 - this_object() ist nicht vom selben Typ wie ob
-    1 - this_object() ist vom gleichen Typ wie ob
+   /std/unit.c
 
-BEISPIELE:
-    o Ein Unitobjekt das verschiedene Beschreibungen haben kann...
 
-       int IsEqual(object ob)
-       {
-          if (!(int)::IsEqual(ob)) return 0;
-          return (QueryProp(P_SHORT)==ob->QueryProp(P_SHORT));
-       }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    /std/unit.c
-------------------------------------------------------------------------------
+   ob      Das Objekt das geprueft werden soll.
+
+BESCHREIBUNG:
+   Diese Funktion prueft ob zwei Objekte vom gleichen Typ sind, also
+   ob z.B. ob und this_object() beides Muenzen sind oder beides
+   Edelsteine. Bei einem Ergebnis != 0 fasst unit.c diese zwei Objekte
+   automatisch zusammen, wenn ob->IsEqual(this_object()) auch einen
+   Wert != 0 ergibt. Hierbei wird das IsEqual() von beiden beteiligten
+   Objekten gerufen und sie muessen uebereinstimmen, dass sie
+   eigentlich das gleiche Objekt sind. Selbstverstaendlich ist diese
+   Funktion nur im Falle von Unitobjekten sinnvoll.
+
+
+RUeCKGABEWERT
+=============
+
+   0 - this_object() ist nicht vom selben Typ wie ob
+   1 - this_object() ist vom gleichen Typ wie ob
+
+
+BEISPIELE
+=========
+
+   o Ein Unitobjekt das verschiedene Beschreibungen haben kann...
+
+      int IsEqual(object ob)
+      {
+         if (!(int)::IsEqual(ob)) return 0;
+         return (QueryProp(P_SHORT)==ob->QueryProp(P_SHORT));
+      }
+
+
+SIEHE AUCH
+==========
+
+   /std/unit.c
+
 25.01.2015, Zesstra
-
diff --git a/doc/lfun/IsPlayerCorpse b/doc/lfun/IsPlayerCorpse
index a92a830..3cccc05 100644
--- a/doc/lfun/IsPlayerCorpse
+++ b/doc/lfun/IsPlayerCorpse
@@ -1,21 +1,38 @@
-IsPlayerCorpse
 
-FUNKTION:
-    public int IsPlayerCorpse()
+IsPlayerCorpse()
+****************
 
-DEFINIERT IN:
-    /std/corpse.c
 
-RUeCKGABEWERT:
-    1 wenn Spielerleiche
-    0 sonst
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Gibt 1 zurueck, wenn diese Leiche eine Spielerleiche ist. Es kann auch
-    eine "normale" NPC-Leiche sein.
+   public int IsPlayerCorpse()
 
-SIEHE AUCH:
-    Aehnlich: living, interactive
-    Aehnlich: IsArmour, IsBottle, IsClothing, IsRoom, IsUnit
+
+DEFINIERT IN
+============
+
+   /std/corpse.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn Spielerleiche
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn diese Leiche eine Spielerleiche ist. Es kann auch
+   eine "normale" NPC-Leiche sein.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsBottle, IsClothing, IsRoom, IsUnit
 
 3. Sep 2016, Gloinson
diff --git a/doc/lfun/IsRoom b/doc/lfun/IsRoom
index d595ed0..61ce904 100644
--- a/doc/lfun/IsRoom
+++ b/doc/lfun/IsRoom
@@ -1,21 +1,38 @@
+
 IsRoom()
+********
 
-FUNKTION:
-    status IsRoom()
 
-DEFINIERT IN:
-    /std/room.c
+FUNKTION
+========
 
-RUeCKGABEWERT:
-    1 wenn ein Raum
-    0 sonst
+   status IsRoom()
 
-BESCHREIBUNG:
-    Gibt 1 zurueck, wenn /std/room.c irgendwo geerbt wurde, es also ein
-    Raum ist.
 
-SIEHE AUCH:
-    Aehnlich: living, interactive
-    Aehnlich: IsArmour, IsBottle, IsClothing, IsPlayerCorpse, IsUnit
+DEFINIERT IN
+============
+
+   /std/room.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn ein Raum
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn /std/room.c irgendwo geerbt wurde, es also ein
+   Raum ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsBottle, IsClothing, IsPlayerCorpse, IsUnit
 
 3. Sep 2016, Gloinson
diff --git a/doc/lfun/IsTeamLeader b/doc/lfun/IsTeamLeader
index eaa008f..1880cc9 100644
--- a/doc/lfun/IsTeamLeader
+++ b/doc/lfun/IsTeamLeader
@@ -1,48 +1,68 @@
 
 IsTeamLeader()
+**************
 
 
-FUNKTION:
-        object IsTeamLeader()
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   object IsTeamLeader()
 
-ARGUMENTE:
-        keine
 
-BESCHREIBUNG:
-        Testet, ob der Spieler ein Teamleiter ist.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Falls der Spieler Teamleiter ist, wird das Teamobjekt zurueckgegeben,
-        sonst 0.
+   /std/living/team.c
 
-BEISPIEL:
-        string leader_test(object pl)
-        {
-         ...
 
-         if ( objectp(pl->IsTeamLeader()) )
-          return "Als Leiter eines Teams hast Du grosse Verantwortung zu "
-            "tragen!";
-         else
-          return "Wenn Du mal Leiter eines Teams sein moechtes, solltest "
-            "Du Dir vorher der Verantwortung bewusst werden!";
-        }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+   keine
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Testet, ob der Spieler ein Teamleiter ist.
+
+
+RUECKGABEWERT
+=============
+
+   Falls der Spieler Teamleiter ist, wird das Teamobjekt zurueckgegeben,
+   sonst 0.
+
+
+BEISPIEL
+========
+
+   string leader_test(object pl)
+   {
+    ...
+
+    if ( objectp(pl->IsTeamLeader()) )
+     return "Als Leiter eines Teams hast Du grosse Verantwortung zu "
+       "tragen!";
+    else
+     return "Wenn Du mal Leiter eines Teams sein moechtes, solltest "
+       "Du Dir vorher der Verantwortung bewusst werden!";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/IsTeamMove b/doc/lfun/IsTeamMove
index 844b041..584dc13 100644
--- a/doc/lfun/IsTeamMove
+++ b/doc/lfun/IsTeamMove
@@ -1,40 +1,60 @@
 
 IsTeamMove()
+************
 
 
-FUNKTION:
-        object IsTeamMove()
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   object IsTeamMove()
 
-ARGUMENTE:
-        keine
 
-BESCHREIBUNG:
-        Testet, ob momentan die Angriffsbewegung ausgefuehrt wird.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Falls die Angriffsbewegung gerade ausgefuehrt wird, wird das
-        Teamobjekt zurueckgegeben, sonst 0.
+   /std/living/team.c
 
-BEMERKUNGEN:
-        Wird intern benoetigt, damit der Begruessungsschlag verzoegert
-        werden kann, bis alle Teammitglieder ihre Angriffsbewegung
-        ausgefuehrt haben.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob momentan die Angriffsbewegung ausgefuehrt wird.
+
+
+RUECKGABEWERT
+=============
+
+   Falls die Angriffsbewegung gerade ausgefuehrt wird, wird das
+   Teamobjekt zurueckgegeben, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Wird intern benoetigt, damit der Begruessungsschlag verzoegert
+   werden kann, bis alle Teammitglieder ihre Angriffsbewegung
+   ausgefuehrt haben.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/IsUnit b/doc/lfun/IsUnit
index bce8ab0..230f09e 100644
--- a/doc/lfun/IsUnit
+++ b/doc/lfun/IsUnit
@@ -1,23 +1,42 @@
+
 IsUnit()
+********
 
-FUNKTION:
-     int IsUnit();
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int IsUnit();
 
-BESCHREIBUNG:
-     Diese Funktion liefert immer 1 zurueck und zeigt damit an, dass es sich
-     bei diesem Objekt um ein Mengenobjekt handelt.
 
-RUeCKGABEWERT:
-     1 bei allen Objekten, die /std/unit.c erben, ansonsten 0.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/unit.c
+   /std/unit.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert immer 1 zurueck und zeigt damit an, dass es sich
+   bei diesem Objekt um ein Mengenobjekt handelt.
+
+
+RUeCKGABEWERT
+=============
+
+   1 bei allen Objekten, die /std/unit.c erben, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   /std/unit.c
+
 Last modified: Wed May 8 10:20:19 1996 by Wargon
diff --git a/doc/lfun/Kill b/doc/lfun/Kill
index a8e4540..1125345 100644
--- a/doc/lfun/Kill
+++ b/doc/lfun/Kill
@@ -1,24 +1,43 @@
+
 Kill()
+******
 
-FUNKTION:
-	int Kill(object enemy)
 
-ARGUMENTE:
-	enemy: Der boese, boese Feind.
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Nach Aufruf der Funktion wird der Feind in jedem
-	heart_beat() attackiert.
+   int Kill(object enemy)
 
-RUECKGABEWERT:
-	0,  Falls der Feind nicht existiert
-  -1, falls der Feind ein Geist ist
-  -2, falls der Feind P_NO_ATTACK gesetzt hat
-  -3, falls der Angreifer selber P_NO_ATTACK gesetzt hat
-  -4, falls der Feind bereits angegriffen wurde
-	1   falls der Feind erfolgreich als Find registriert wurde.
 
-BEMERKUNGEN:
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-	InsertEnemy
+   enemy: Der boese, boese Feind.
+
+
+BESCHREIBUNG
+============
+
+   Nach Aufruf der Funktion wird der Feind in jedem
+   heart_beat() attackiert.
+
+
+RUECKGABEWERT
+=============
+
+         0,  Falls der Feind nicht existiert
+   -1, falls der Feind ein Geist ist
+   -2, falls der Feind P_NO_ATTACK gesetzt hat
+   -3, falls der Angreifer selber P_NO_ATTACK gesetzt hat
+   -4, falls der Feind bereits angegriffen wurde
+         1   falls der Feind erfolgreich als Find registriert wurde.
+
+
+BEMERKUNGEN
+===========
+
+
+SIEHE AUCH
+==========
+
+   InsertEnemy
diff --git a/doc/lfun/LearnSkill b/doc/lfun/LearnSkill
index 6373fbb..caab276 100644
--- a/doc/lfun/LearnSkill
+++ b/doc/lfun/LearnSkill
@@ -1,35 +1,53 @@
+
 LearnSkill()
-FUNKTION:
-    public varargs void LearnSkill(string sname, int add, int diff)
+************
 
-DEFINIERT IN:
-    /std/living/skills.c
 
-ARGUMENTE:
-    string sname     der zu lernende Skill
-    string add       Anzahl zu lernender Skillpunkte
-    int diff         Schwierigkeit
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Die Methode laesst einen interaktiven (eingeloggten) Spieler den
-    Skill 'sname' um 'add' Punkte lernen.
+   public varargs void LearnSkill(string sname, int add, int diff)
 
-    Dabei wird sichergestellt, dass 'add' den Wert MAX_SKILLEARN nicht
-    ueberschreitet, der Skill nicht verschwindet und fuer uebergeordnete
-    Skills (SI_INHERIT) dieser uebergeordnete Skill auch einen Lerneffekt
-    erfaehrt.
 
-    Wird zB von Learn (spellbook) und SpellSuccess (spellbook) gerufen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    Skills Lernen:  ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung
-    * Properties:   P_NEWSKILLS
-    Spellbook:      Learn, SpellSuccess
+   /std/living/skills.c
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   string sname     der zu lernende Skill
+   string add       Anzahl zu lernender Skillpunkte
+   int diff         Schwierigkeit
+
+
+BESCHREIBUNG
+============
+
+   Die Methode laesst einen interaktiven (eingeloggten) Spieler den
+   Skill 'sname' um 'add' Punkte lernen.
+
+   Dabei wird sichergestellt, dass 'add' den Wert MAX_SKILLEARN nicht
+   ueberschreitet, der Skill nicht verschwindet und fuer uebergeordnete
+   Skills (SI_INHERIT) dieser uebergeordnete Skill auch einen Lerneffekt
+   erfaehrt.
+
+   Wird zB von Learn (spellbook) und SpellSuccess (spellbook) gerufen.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+   Spellbook:      Learn, SpellSuccess
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/Leave b/doc/lfun/Leave
index b3b52d2..fef5e6f 100644
--- a/doc/lfun/Leave
+++ b/doc/lfun/Leave
@@ -1,40 +1,64 @@
+
 Leave()
+*******
 
-FUNKTION:
-     int Leave();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int Leave();
 
-BESCHREIBUNG:
-     Wenn sich der Spieler auf einem Transporter befindet, und dieser sich
-     momentan an einer Haltestelle liegt, verlaesst der Spieler den
-     Transporter.
 
-RUeCKGABEWERT:
-     Null, wenn der Spieler den Transporter nicht verlassen konnte, sonst
-     ungleich Null.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Es werden keine Tests durchgefuehrt, ob der Transporter ueberhaupt
-     angesprochen wurde! Das muss man selber machen.
+   /std/transport.c
 
-BEISPIELE:
 
-     int myLeave(string str)
-     {
-       if (str && id(str))
-         return Leave();
+ARGUMENTE
+=========
 
-       notify_fail("Was willst Du verlassen?\n");
-       return 0;
-     }
+   keine
 
-SIEHE AUCH:
-     Enter(), /std/transport.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Wenn sich der Spieler auf einem Transporter befindet, und dieser sich
+   momentan an einer Haltestelle liegt, verlaesst der Spieler den
+   Transporter.
+
+
+RUeCKGABEWERT
+=============
+
+   Null, wenn der Spieler den Transporter nicht verlassen konnte, sonst
+   ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Es werden keine Tests durchgefuehrt, ob der Transporter ueberhaupt
+   angesprochen wurde! Das muss man selber machen.
+
+
+BEISPIELE
+=========
+
+   int myLeave(string str)
+   {
+     if (str && id(str))
+       return Leave();
+
+     notify_fail("Was willst Du verlassen?\n");
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Enter(), /std/transport.c
+
 Last modified: Wed May 8 10:20:30 1996 by Wargon
diff --git a/doc/lfun/LimitAbility b/doc/lfun/LimitAbility
index e6a2810..6c31eed 100644
--- a/doc/lfun/LimitAbility
+++ b/doc/lfun/LimitAbility
@@ -1,47 +1,67 @@
+
 LimitAbility()
-FUNKTION:
-    protected varargs mixed LimitAbility(mixed sinfo, int diff)
+**************
 
-DEFINIERT IN:
-    /std/living/skills.c
 
-ARGUMENTE:
-    mixed sinfo      Skill-Informationen
-    int diff         Schwierigkeit
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Setzt ein Maximum an Skillfertigkeit basierend auf der Schwierigkeit
-    und dem P_LEVEL des Spielers.
-    
-    Folgend eine Kopie (!) der Tabelle aus /std/living/skills:
-    diff|lvl 1:|   3:|   7:| 10:| 13:| 16:| 19:| 22:| 25:| 28:| 31:| 34:|
-    ----+------+-----+-----+----+----+----+----+----+----+----+----+----+
-     -50|   83%|  84%|  86%| 87%| 89%| 90%| 92%| 93%| 95%| 96%| 98%| 99%|
-     -10|   69%|  72%|  74%| 77%| 80%| 82%| 85%| 88%| 91%| 93%| 96%| 99%|
-       0|   66%|  69%|  72%| 75%| 78%| 81%| 84%| 87%| 90%| 93%| 96%| 99%|
-      10|   62%|  65%|  69%| 72%| 75%| 79%| 82%| 85%| 89%| 92%| 95%| 98%|
-      20|   59%|  62%|  66%| 70%| 73%| 77%| 80%| 84%| 88%| 91%| 95%| 98%|
-      30|   55%|  59%|  63%| 67%| 71%| 75%| 79%| 83%| 87%| 90%| 94%| 98%|
-      40|   52%|  56%|  60%| 65%| 69%| 73%| 77%| 81%| 86%| 90%| 94%| 98%|
-      50|   49%|  53%|  58%| 62%| 67%| 71%| 76%| 80%| 85%| 89%| 94%| 98%|
-     100|   32%|  38%|  44%| 50%| 56%| 62%| 68%| 74%| 80%| 86%| 92%| 98%|
-     150|   15%|  22%|  30%| 37%| 45%| 52%| 60%| 67%| 75%| 82%| 90%| 97%|
-     200|   -2%|   7%|  16%| 25%| 34%| 43%| 52%| 61%| 70%| 79%| 88%| 97%|
-     250|  -19%|  -8%|   2%| 12%| 23%| 33%| 44%| 54%| 65%| 75%| 86%| 96%|
-     300|  -36%| -24%| -12%|  0%| 12%| 24%| 36%| 48%| 60%| 72%| 84%| 96%|
-     400|  -70%| -55%| -40%|-25%|-10%|  5%| 20%| 35%| 50%| 65%| 80%| 95%|
-     500| -104%| -86%| -68%|-50%|-32%|-14%|  4%| 22%| 40%| 58%| 76%| 94%|
-     600| -138%|-117%| -96%|-75%|-54%|-33%|-12%|  9%| 30%| 51%| 72%| 93%|
+   protected varargs mixed LimitAbility(mixed sinfo, int diff)
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung
-    * Properties:   P_NEWSKILLS
-    Spellbook:      Learn, SpellSuccess
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   mixed sinfo      Skill-Informationen
+   int diff         Schwierigkeit
+
+
+BESCHREIBUNG
+============
+
+   Setzt ein Maximum an Skillfertigkeit basierend auf der Schwierigkeit
+   und dem P_LEVEL des Spielers.
+
+
+
+   Folgend eine Kopie (!) der Tabelle aus /std/living/skills:
+   diff|lvl 1:|   3:|   7:| 10:| 13:| 16:| 19:| 22:| 25:| 28:| 31:| 34:|
+   ----+------+-----+-----+----+----+----+----+----+----+----+----+----+
+    -50|   83%|  84%|  86%| 87%| 89%| 90%| 92%| 93%| 95%| 96%| 98%| 99%|
+    -10|   69%|  72%|  74%| 77%| 80%| 82%| 85%| 88%| 91%| 93%| 96%| 99%|
+      0|   66%|  69%|  72%| 75%| 78%| 81%| 84%| 87%| 90%| 93%| 96%| 99%|
+     10|   62%|  65%|  69%| 72%| 75%| 79%| 82%| 85%| 89%| 92%| 95%| 98%|
+     20|   59%|  62%|  66%| 70%| 73%| 77%| 80%| 84%| 88%| 91%| 95%| 98%|
+     30|   55%|  59%|  63%| 67%| 71%| 75%| 79%| 83%| 87%| 90%| 94%| 98%|
+     40|   52%|  56%|  60%| 65%| 69%| 73%| 77%| 81%| 86%| 90%| 94%| 98%|
+     50|   49%|  53%|  58%| 62%| 67%| 71%| 76%| 80%| 85%| 89%| 94%| 98%|
+    100|   32%|  38%|  44%| 50%| 56%| 62%| 68%| 74%| 80%| 86%| 92%| 98%|
+    150|   15%|  22%|  30%| 37%| 45%| 52%| 60%| 67%| 75%| 82%| 90%| 97%|
+    200|   -2%|   7%|  16%| 25%| 34%| 43%| 52%| 61%| 70%| 79%| 88%| 97%|
+    250|  -19%|  -8%|   2%| 12%| 23%| 33%| 44%| 54%| 65%| 75%| 86%| 96%|
+    300|  -36%| -24%| -12%|  0%| 12%| 24%| 36%| 48%| 60%| 72%| 84%| 96%|
+    400|  -70%| -55%| -40%|-25%|-10%|  5%| 20%| 35%| 50%| 65%| 80%| 95%|
+    500| -104%| -86%| -68%|-50%|-32%|-14%|  4%| 22%| 40%| 58%| 76%| 94%|
+    600| -138%|-117%| -96%|-75%|-54%|-33%|-12%|  9%| 30%| 51%| 72%| 93%|
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+   Spellbook:      Learn, SpellSuccess
 
 3. Okt 2011 Gloinson
diff --git a/doc/lfun/MaterialGroup b/doc/lfun/MaterialGroup
index da51cad..1b4e61e 100644
--- a/doc/lfun/MaterialGroup
+++ b/doc/lfun/MaterialGroup
@@ -1,37 +1,64 @@
+
 MaterialGroup()
-FUNKTION:
-     int MaterialGroup(mapping mats, string grp)
+***************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     mapping mats - Materialienmapping
-     string grp   - Materialiengruppe
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die Materialien im Mapping werden auf Zugehoerigkeit zu der Gruppe
-     untersucht und der Gesamtanteil dieser Materialiengruppe am Mapping
-     in Prozent zurueckgegeben (wenn das Mapping sich auf 100% aufaddiert).
+   int MaterialGroup(mapping mats, string grp)
 
-RUECKGABEWERT:
-     int - prozentualer Anteil der Materialiengruppe -100 ... 100 %
 
-BEISPIELE:
-     if(MATERIALDB->MaterialGroup(
-		([MAT_MISC_STONE:40,MAT_AMETHYST:50,MAT_MISC_METAL:10]),
-		MATGROUP_JEWEL)>50)
-      write("Oh ja, darin sind sehr viele Edelsteine!\n");
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wird von /std/thing/description::QueryMaterialGroup() gerufen.
-     Bitte an Objekten auch QueryMaterialGroup() verwenden.
+   /p/daemon/materialdb.c (MATERIALDB)
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Master:	  AddMaterial(), ConvMaterialList()
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   mapping mats - Materialienmapping
+   string grp   - Materialiengruppe
+
+
+BESCHREIBUNG
+============
+
+   Die Materialien im Mapping werden auf Zugehoerigkeit zu der Gruppe
+   untersucht und der Gesamtanteil dieser Materialiengruppe am Mapping
+   in Prozent zurueckgegeben (wenn das Mapping sich auf 100% aufaddiert).
+
+
+RUECKGABEWERT
+=============
+
+   int - prozentualer Anteil der Materialiengruppe -100 ... 100 %
+
+
+BEISPIELE
+=========
+
+   if(MATERIALDB->MaterialGroup(
+              ([MAT_MISC_STONE:40,MAT_AMETHYST:50,MAT_MISC_METAL:10]),
+              MATGROUP_JEWEL)>50)
+    write("Oh ja, darin sind sehr viele Edelsteine!\n");
+
+
+BEMERKUNGEN
+===========
+
+   Wird von /std/thing/description::QueryMaterialGroup() gerufen.
+   Bitte an Objekten auch QueryMaterialGroup() verwenden.
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList()
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/MaterialList b/doc/lfun/MaterialList
index 17ef526..228f7a8 100644
--- a/doc/lfun/MaterialList
+++ b/doc/lfun/MaterialList
@@ -1,65 +1,96 @@
+
+MaterialList()
+**************
+
+
 MaterialList(L)
-FUNKTION:
-     varargs string MaterialList(int casus, mixed idinf)
+===============
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     int casus	 - der Fall, in dem die Materialien dekliniert werden sollen
-     mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen:
-		   Einzelne Werte:
-                   * x: allgemeine Erkennung -100 ... 100
-                   * who: der Spieler - P_MATERIAL_KNOWLEDGE wird abgefragt
-                   * fun: wird evaluiert
-                   * what, kann folgendes enthalten:
-                     - Eintrag fuer Materialien ([MAT_XXX:-100...100])
-                     - Eintrag fuer Materialiengruppen (dito)
-                     - ([MATERIAL_SYMMETRIC_RECOGNIZABILITY: mixed mg])
-                       * mg ein Array:
-                         ({MATGROUP_X1,int z1, MATGROUP_X2, int z2, ...})
-                         wobei bei Zugehoerigkeit von string mat zu Gruppe
-                         z<n> auf die Faehigkeit addiert, andernfalls davon
-                         subtrahiert wird
-		   Array mit obigen Werten:
-                   - alle Parameter des Arrays sind optional und additiv
-                   - ({int x, object who, mapping what, closure fun})
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Listet die Materialien auf, aus denen ein Objekt besteht.
-     Dabei haengt die Genauigkeit der Materialerkennung von idinf ab. D.h.
-     je nach den Faehigkeiten/der angegebenen Faehigkeit wird zB Wolfram
-     als "Wolfram" oder nur als "Metall" erkannt.
+   varargs string MaterialList(int casus, mixed idinf)
 
-     Wenn ein Spieler etwas identifiziert, sollte auch TP uebergeben werden,
-     bei NPCs koennte das anders aussehen.
 
-RUECKGABEWERT:
-     String mit Liste der Materialien.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     - es werden nur die Materialien angegeben, nicht die Menge.
-     - ruft ConvMaterialList() an der MATERIALDB
+   /std/thing/description.c
 
-BEISPIELE:
-     // simpel
-     write("Der Gegenstand besteht aus"+ob->MaterialList(WEM,TP)+".\n")
-     // -> "Der Gegenstand besteht aus Gold, Silber und Rubin.\n"
 
-     // komplexer
-     ob->SetProp(P_MATERIAL, ([P_NITROGLYCERINE:90,P_GUNPOWDER:10]));
-     write("Das enthaelt "+ob->MaterialList(WER,TP)+".\n");
-     // -> "Das enthaelt Schwarzpulver und Nitroglycerin."
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterial(), QueryMaterialGroup()
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+   int casus   - der Fall, in dem die Materialien dekliniert werden sollen
+   mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen:
+                 Einzelne Werte:
+                 * x: allgemeine Erkennung -100 ... 100
+                 * who: der Spieler - P_MATERIAL_KNOWLEDGE wird abgefragt
+                 * fun: wird evaluiert
+                 * what, kann folgendes enthalten:
+                   - Eintrag fuer Materialien ([MAT_XXX:-100...100])
+                   - Eintrag fuer Materialiengruppen (dito)
+                   - ([MATERIAL_SYMMETRIC_RECOGNIZABILITY: mixed mg])
+                     * mg ein Array:
+                       ({MATGROUP_X1,int z1, MATGROUP_X2, int z2, ...})
+                       wobei bei Zugehoerigkeit von string mat zu Gruppe
+                       z<n> auf die Faehigkeit addiert, andernfalls davon
+                       subtrahiert wird
+                 Array mit obigen Werten:
+                 - alle Parameter des Arrays sind optional und additiv
+                 - ({int x, object who, mapping what, closure fun})
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Listet die Materialien auf, aus denen ein Objekt besteht.
+   Dabei haengt die Genauigkeit der Materialerkennung von idinf ab. D.h.
+   je nach den Faehigkeiten/der angegebenen Faehigkeit wird zB Wolfram
+   als "Wolfram" oder nur als "Metall" erkannt.
+
+   Wenn ein Spieler etwas identifiziert, sollte auch TP uebergeben werden,
+   bei NPCs koennte das anders aussehen.
+
+
+RUECKGABEWERT
+=============
+
+   String mit Liste der Materialien.
+
+
+BEMERKUNGEN
+===========
+
+   - es werden nur die Materialien angegeben, nicht die Menge.
+   - ruft ConvMaterialList() an der MATERIALDB
+
+
+BEISPIELE
+=========
+
+   // simpel
+   write("Der Gegenstand besteht aus"+ob->MaterialList(WEM,TP)+".\n")
+   // -> "Der Gegenstand besteht aus Gold, Silber und Rubin.\n"
+
+   // komplexer
+   ob->SetProp(P_MATERIAL, ([P_NITROGLYCERINE:90,P_GUNPOWDER:10]));
+   write("Das enthaelt "+ob->MaterialList(WER,TP)+".\n");
+   // -> "Das enthaelt Schwarzpulver und Nitroglycerin."
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup()
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/MaterialName b/doc/lfun/MaterialName
index 0e338a3..782a9f7 100644
--- a/doc/lfun/MaterialName
+++ b/doc/lfun/MaterialName
@@ -1,72 +1,96 @@
+
 MaterialName()
-FUNKTION:
-     varargs string MaterialName(string mat, int casus, mixed idinf)
+**************
 
-DEFINIERT IN:
-     /p/daemon/materialdb.c (MATERIALDB)
 
-ARGUMENTE:
-     string mat	 - das zu erkennende Material
-     int casus	 - der Fall
-     mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
-		   (siehe "man MaterialList")
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion sucht unter Beruecksichtigung der Erkennungsbe-
-     schraenkungen des Materials und Faehigkeiten des Spielers den
-     Klarnamen des Materials heraus und gibt den zurueck.
+   varargs string MaterialName(string mat, int casus, mixed idinf)
 
-RUECKGABEWERT:
-     string: Materialname oder genereller Name.
 
-BEISPIELE:
-     // der hier mag alle existierenden Juwelen, auch wenn welche ergaenzt
-     // werden sollten
-     // Parameter: 1. ein Juwel, 2. Casus, 3. 100% Erkennung - ob er sie
-     // beim Empfang dann auch zu 100% erkennt, steht hier nicht!
-     string* likeit;
-     likeit=MATERIALDB->GetGroupMembers(MATGROUP_JEWEL);
-     ...
-     write("Der Alte sagt: Ich mag "+
-	   MATERIALDB->MaterialName(likeit[random(sizeof(likeit))], WEN, 100)+
-	   ".\n");
-     ...
+DEFINIERT IN
+============
 
-     // ein weiser schmied:
-     int i;
-     string *mat, mname, mgroup;
-     mat=m_indices(ob->queryprop(p_material));
-     i=sizeof(mat);
+   /p/daemon/materialdb.c (MATERIALDB)
 
-     write("der schmied sagt: "+ob->name(wer)+" besteht aus ...\n");
-     while(i--) {
-      // den namen erkennen/aussprechen:
-      // materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
-      // alles aus metall wird zu +100% gut erkannt ...
-      mname=materialdb->materialname(mat[i], wer,
-	     ({5, ([material_symmetric_recognizability:
-			({matgroup_metal, 100})])}));
 
-      // und nur metalle analysieren ...
-      if(materialdb->materialgroup(([mat[i]:100]),matgroup_metal)>=100) {
-       int j;
-       string *mgr;
-       mgr=materialdb->getmatmembership(mat[i]);
-       j=sizeof(mgr);
-       mgroup=" gehoert zu ";
-       while(j--) {
-        mgroup+=materialdb->groupname(mgr[j]);
-        if(j>0) mgroup+=", ";
-       }
-      } else mgroup=" kenne ich nicht";
-      printf("%-12.12s: %s\n",mname, mgroup);
+ARGUMENTE
+=========
+
+   string mat  - das zu erkennende Material
+   int casus   - der Fall
+   mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
+                 (siehe "man MaterialList")
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion sucht unter Beruecksichtigung der Erkennungsbe-
+   schraenkungen des Materials und Faehigkeiten des Spielers den
+   Klarnamen des Materials heraus und gibt den zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   string: Materialname oder genereller Name.
+
+
+BEISPIELE
+=========
+
+   // der hier mag alle existierenden Juwelen, auch wenn welche ergaenzt
+   // werden sollten
+   // Parameter: 1. ein Juwel, 2. Casus, 3. 100% Erkennung - ob er sie
+   // beim Empfang dann auch zu 100% erkennt, steht hier nicht!
+   string* likeit;
+   likeit=MATERIALDB->GetGroupMembers(MATGROUP_JEWEL);
+   ...
+   write("Der Alte sagt: Ich mag "+
+         MATERIALDB->MaterialName(likeit[random(sizeof(likeit))], WEN, 100)+
+         ".\n");
+   ...
+
+   // ein weiser schmied:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->queryprop(p_material));
+   i=sizeof(mat);
+
+   write("der schmied sagt: "+ob->name(wer)+" besteht aus ...\n");
+   while(i--) {
+    // den namen erkennen/aussprechen:
+    // materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus metall wird zu +100% gut erkannt ...
+    mname=materialdb->materialname(mat[i], wer,
+           ({5, ([material_symmetric_recognizability:
+                      ({matgroup_metal, 100})])}));
+
+    // und nur metalle analysieren ...
+    if(materialdb->materialgroup(([mat[i]:100]),matgroup_metal)>=100) {
+     int j;
+     string *mgr;
+     mgr=materialdb->getmatmembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=materialdb->groupname(mgr[j]);
+      if(j>0) mgroup+=", ";
      }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName()
-		  GetGroupMembers(), GetMatMembership()
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName()
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/MayAddObject b/doc/lfun/MayAddObject
index d502da4..1df06ea 100644
--- a/doc/lfun/MayAddObject
+++ b/doc/lfun/MayAddObject
@@ -1,33 +1,55 @@
+
 MayAddObject()
+**************
 
-FUNKTION:
-     int MayAddObject(object ob);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob - Das Object bei dem geprueft werden soll, ob es noch in den
-          Container passt.
+   int MayAddObject(object ob);
 
-BESCHREIBUNG:
-     Wenn ein Objekt in einen Container bewegt wird, prueft move() ueber
-     diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
-     passt. Dazu uebergibt move() das Objekt das in den Container bewegt
-     werden soll. (In Raeumen ist diese Funktionen ueberschrieben und
-     liefert immer True zurueck.)
 
-RUeCKGABEWERT:
-     1 - wenn das Objekt noch vom Container aufgenommen werden kann.
-     0 sonst.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     invis-Objekte passen immer in den Container hinein!
-     move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
-     gesetzt war!
+   /std/container/restrictions.c
 
-SIEHE AUCH:
-     MayAddWeight(), PreventInsert(), move(), /std/container/restrictions.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   ob - Das Object bei dem geprueft werden soll, ob es noch in den
+        Container passt.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt in einen Container bewegt wird, prueft move() ueber
+   diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
+   passt. Dazu uebergibt move() das Objekt das in den Container bewegt
+   werden soll. (In Raeumen ist diese Funktionen ueberschrieben und
+   liefert immer True zurueck.)
+
+
+RUeCKGABEWERT
+=============
+
+   1 - wenn das Objekt noch vom Container aufgenommen werden kann.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   invis-Objekte passen immer in den Container hinein!
+   move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
+   gesetzt war!
+
+
+SIEHE AUCH
+==========
+
+   MayAddWeight(), PreventInsert(), move(), /std/container/restrictions.c
+
 Last modified: 23.09.2007, Zesstra
diff --git a/doc/lfun/MayAddWeight b/doc/lfun/MayAddWeight
index 1cc4e47..bc8e06d 100644
--- a/doc/lfun/MayAddWeight
+++ b/doc/lfun/MayAddWeight
@@ -1,47 +1,72 @@
+
 MayAddWeight()
+**************
 
-FUNKTION:
-     int MayAddWeight(int gewicht);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     gewicht
-          Das zu pruefende Gewicht.
+   int MayAddWeight(int gewicht);
 
-BESCHREIBUNG:
-     Wenn ein Objekt ein einen Behaelter bewegt wird, prueft move() ueber
-     diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
-     passt. Dazu uebergibt move() dieser Funktion das Gewicht des zu
-     bewegenden Objektes.
 
-RUeCKGABEWERT:
-     0, wenn der Behaelter noch ein gewicht Gramm wiegendes Objekt aufnehmen
-     kann, -1 im anderen Fall.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
-     gesetzt war!
+   /std/container/restrictions.c
 
-BEISPIELE:
-     Die entsprechende Abfrage in /std/thing/moving.c sieht etwa
-     folgendermassen aus:
 
-     int weight;
+ARGUMENTE
+=========
 
-     ...
-     weight = QueryProp(P_TOTAL_WEIGHT);   // Behaelter? Ja => Gesamtgewicht
-     if (!weight)
-       weight = QueryProp(P_WEIGHT);       // Nein: einfaches Gewicht
+   gewicht
+        Das zu pruefende Gewicht.
 
-     if (ziel->MayAddWeight(weight) == -1) // Passt es noch rein?
-       return ME_TOO_HEAVY;                // Nein, entspr. Fehler zurueckgeben
 
-     ...
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     MayAddObject(), PreventInsert(), move(), /std/container/restrictions.c
+   Wenn ein Objekt ein einen Behaelter bewegt wird, prueft move() ueber
+   diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
+   passt. Dazu uebergibt move() dieser Funktion das Gewicht des zu
+   bewegenden Objektes.
 
-----------------------------------------------------------------------------
+
+RUeCKGABEWERT
+=============
+
+   0, wenn der Behaelter noch ein gewicht Gramm wiegendes Objekt aufnehmen
+   kann, -1 im anderen Fall.
+
+
+BEMERKUNGEN
+===========
+
+   move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
+   gesetzt war!
+
+
+BEISPIELE
+=========
+
+   Die entsprechende Abfrage in /std/thing/moving.c sieht etwa
+   folgendermassen aus:
+
+   int weight;
+
+   ...
+   weight = QueryProp(P_TOTAL_WEIGHT);   // Behaelter? Ja => Gesamtgewicht
+   if (!weight)
+     weight = QueryProp(P_WEIGHT);       // Nein: einfaches Gewicht
+
+   if (ziel->MayAddWeight(weight) == -1) // Passt es noch rein?
+     return ME_TOO_HEAVY;                // Nein, entspr. Fehler zurueckgeben
+
+   ...
+
+
+SIEHE AUCH
+==========
+
+   MayAddObject(), PreventInsert(), move(), /std/container/restrictions.c
+
 Last modified: 23.09.2007, Zesstra
diff --git a/doc/lfun/Message b/doc/lfun/Message
index 3635f6e..bee1d46 100644
--- a/doc/lfun/Message
+++ b/doc/lfun/Message
@@ -1,23 +1,40 @@
+
 Message()
+*********
 
-FUNKTION:
-        varargs int Message(string str, int flag)
 
-ARGUMENTE:
-        str: Den zu uebermittelnden Text.
-	flag: Beschreibt die Art der Meldung naeher, siehe
-	      /sys/player/comm.h
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Einem Spieler wird der Text str uebermittelt.
+   varargs int Message(string str, int flag)
 
-RUECKGABEWERT:
-        1 bei erfolgreicher Uebermittlung
-        0 wenn der Kobold aktiv war
-       <0 wenn Spieler oder verwendetes Verb ignoriert
-          werden
 
-SIEHE AUCH:
-     P_IGNORE, TestIgnore()
+ARGUMENTE
+=========
+
+   str: Den zu uebermittelnden Text.
+   flag: Beschreibt die Art der Meldung naeher, siehe
+         /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Einem Spieler wird der Text str uebermittelt.
+
+
+RUECKGABEWERT
+=============
+
+    1 bei erfolgreicher Uebermittlung
+    0 wenn der Kobold aktiv war
+   <0 wenn Spieler oder verwendetes Verb ignoriert
+      werden
+
+
+SIEHE AUCH
+==========
+
+   P_IGNORE, TestIgnore()
 
 12. Mai 2004 Gloinson
diff --git a/doc/lfun/ModifyQuestTime b/doc/lfun/ModifyQuestTime
index 0020bad..432a362 100644
--- a/doc/lfun/ModifyQuestTime
+++ b/doc/lfun/ModifyQuestTime
@@ -1,44 +1,66 @@
+
 ModifyQuestTime()
+*****************
 
-FUNKTION:
-        int ModifyQuestTime(string questname, int zeit)
 
-DEFINIERT IN:
-        /std/player/quests.c
+FUNKTION
+========
 
-ARGUMENTE:
-        questname
-          Questname, wie er im Questmaster eingetragen wurde.
-        zeit
-          Zeitpunkt, zu dem die Quest geloest wurde
+   int ModifyQuestTime(string questname, int zeit)
 
-RUeCKGABEWERT:
-         1 : Questzeitpunkt erfolgreich nachgetragen
-        -1 : keine Zugriffsrechte (nur EM+ und der Tagebuchmaster erlaubt)
-        -2 : Questliste im Spielerobjekt ist unerwartet kein Mapping
-        -3 : Spieler hat diese Quest noch nicht bestanden
-        -4 : kein gueltiger Zeitpunkt uebergeben (kein Integer, Wert < -1
-             oder Wert > time()).
 
-BESCHREIBUNG:
-        Mit dieser Funktion kann der Zeitpunkt nachgetragen werden, zu
-        dem ein Spieler eine bestimmte Quest bereits geloest hat. 
-        Als Questname wird dazu der Name angegeben, der im Questmaster 
-        eingetragen ist. Der Zeitpunkt ist als Integer-Wert im ueblichen
-        time()-Format anzugeben. Uebergibt man -1 als <zeit>, dann wird
-        der Tagebuchmaster erneut versuchen, das Logfile einzulesen, 
-        wenn der Spieler das naechste mal sein Abenteuertagebuch liest.
+DEFINIERT IN
+============
 
-HINWEIS:
-        Die Funktion mktime() ist nuetzlich, wenn der Zeitpunkt des 
-        Bestehens einer Quest manuell rekonstruiert werden muss, der
-        Zeitpunkt aber nur als Datums-/Zeitangabe in Textform vorliegt 
-        (etwa aus einem Logfile oder aus der Quest-Feedbackmail).
+   /std/player/quests.c
 
-SIEHE AUCH:
-        /secure/questmaster.h, /obj/tools/questtool
-        GiveQuest(L)
-        mktime(E), dtime(SE)
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+   zeit
+     Zeitpunkt, zu dem die Quest geloest wurde
+
+
+RUeCKGABEWERT
+=============
+
+    1 : Questzeitpunkt erfolgreich nachgetragen
+   -1 : keine Zugriffsrechte (nur EM+ und der Tagebuchmaster erlaubt)
+   -2 : Questliste im Spielerobjekt ist unerwartet kein Mapping
+   -3 : Spieler hat diese Quest noch nicht bestanden
+   -4 : kein gueltiger Zeitpunkt uebergeben (kein Integer, Wert < -1
+        oder Wert > time()).
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann der Zeitpunkt nachgetragen werden, zu
+   dem ein Spieler eine bestimmte Quest bereits geloest hat.
+   Als Questname wird dazu der Name angegeben, der im Questmaster
+   eingetragen ist. Der Zeitpunkt ist als Integer-Wert im ueblichen
+   time()-Format anzugeben. Uebergibt man -1 als <zeit>, dann wird
+   der Tagebuchmaster erneut versuchen, das Logfile einzulesen,
+   wenn der Spieler das naechste mal sein Abenteuertagebuch liest.
+
+
+HINWEIS
+=======
+
+   Die Funktion mktime() ist nuetzlich, wenn der Zeitpunkt des
+   Bestehens einer Quest manuell rekonstruiert werden muss, der
+   Zeitpunkt aber nur als Datums-/Zeitangabe in Textform vorliegt
+   (etwa aus einem Logfile oder aus der Quest-Feedbackmail).
+
+
+SIEHE AUCH
+==========
+
+   /secure/questmaster.h, /obj/tools/questtool
+   GiveQuest(L)
+   mktime(E), dtime(SE)
+
 Zuletzt geaendert: Mon, 27. Jan. 2015, Arathorn
diff --git a/doc/lfun/ModifySkill b/doc/lfun/ModifySkill
index 8dd622f..70c33ba 100644
--- a/doc/lfun/ModifySkill
+++ b/doc/lfun/ModifySkill
@@ -1,73 +1,98 @@
+
 ModifySkill()
-FUNKTION:
-    public varargs void ModifySkill(string sname, mixed val,
-                                    int diff, string gilde)
+*************
 
-DEFINIERT IN:
-    /std/living/skills.c
 
-ARGUMENTE:
-    string sname     der zu aendernde Skill
-    mixed val        Aenderungswert: int fuer SI_SKILLABILITY, sonst mapping
-    int diff         Schwierigkeit (optional: default ist existierendes diff)
-    string gilde     Gilde (optional: default ist eigene Gilde)
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Mit der Methode kann man die Werte eines Skills/Spells veraendern. Dabei
-    wird ein Skill immer in ein Mapping umgewandelt (Skills/Spells koennen
-    auch einfach nur ihren Skillwert enthalten, diese ist aequivalent zu
-    einem Mapping mit ([SI_SKILLABILITY:<Skillwert>]).
+   public varargs void ModifySkill(string sname, mixed val,
+                                   int diff, string gilde)
 
-    Ist 'val' ein int, wird dieses als SI_SKILLABILITY gesetzt. Falls der
-    Skill nur ein int war, wird ein 'diff'!=0 als SI_DIFFICULTY gesetzt.
 
-    Ist 'val' ein Mapping, wird dieses zum Skillmapping addiert.
-    
-    Etwaige SI_SKILLABILITY-Aenderungen laufen danach noch durch LimitAbility.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    // #1a: Lerne einen Spell/Skill (einer Gilde)
-    caster->ModifySkill("feuerball", MAX_ABILITY, 100, "abenteurer")
-    // #1b: ... oder ...
-    caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100,
-                        "abenteurer")
-    // #1c: ... oder fuer einen Abenteurer ...
-    caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100);
-    
-    // #2: Setze eine Skill-Funktion fuer einen Kampfskill des Klerus
-    this_player()->ModifySkill(FIGHT(WT_CLUB),
-                               ([SI_SKILLFUNC: "Keulenkampf",
-                                 SI_DIFFICULTY: 100]),
-                               100, "klerus");
+   /std/living/skills.c
 
-    // #3: Speichere im Skill (also Spieler) eine Option fuer diesen Skill
-    // Vorteil: dieser Eintrag wird dem Spell immer uebergeben
-    caster->ModifySkill("blitz", (["klerus_spell_option": 2]));
 
-    (Code in /doc/beispiele/testobjekte/modifyskillspell_test)
-    // #4: Lerne einen unabhaengigen Spell: ACHTUNG
-    // dieser Spell funktioniert nur solange, wie die Closure existiert,
-    // SI_SKILLABILITY und Spell bleiben jedoch im Spieler gespeichert (!)
-    this_player()->ModifySkill("fnrx",
-      ([SI_CLOSURE:
-          function int (object caster, string skill, mapping sinf) {
-            caster->LearnSkill("fnrx", 1);
-            tell_object(caster, "Peng! Dein Skillwert steigt auf "+
-                                caster->QuerySkillAbility("fnrx")+".\n");
-            return ERFOLG;
-          },
-        SI_SKILLABILITY: 8432]),
-      100,
-      "ANY");
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung
-    * Properties:   P_NEWSKILLS
+   string sname     der zu aendernde Skill
+   mixed val        Aenderungswert: int fuer SI_SKILLABILITY, sonst mapping
+   int diff         Schwierigkeit (optional: default ist existierendes diff)
+   string gilde     Gilde (optional: default ist eigene Gilde)
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Mit der Methode kann man die Werte eines Skills/Spells veraendern. Dabei
+   wird ein Skill immer in ein Mapping umgewandelt (Skills/Spells koennen
+   auch einfach nur ihren Skillwert enthalten, diese ist aequivalent zu
+   einem Mapping mit ([SI_SKILLABILITY:<Skillwert>]).
+
+   Ist 'val' ein int, wird dieses als SI_SKILLABILITY gesetzt. Falls der
+   Skill nur ein int war, wird ein 'diff'!=0 als SI_DIFFICULTY gesetzt.
+
+   Ist 'val' ein Mapping, wird dieses zum Skillmapping addiert.
+
+
+
+   Etwaige SI_SKILLABILITY-Aenderungen laufen danach noch durch LimitAbility.
+
+
+BEISPIELE
+=========
+
+   // #1a: Lerne einen Spell/Skill (einer Gilde)
+   caster->ModifySkill("feuerball", MAX_ABILITY, 100, "abenteurer")
+   // #1b: ... oder ...
+   caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100,
+                       "abenteurer")
+   // #1c: ... oder fuer einen Abenteurer ...
+   caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100);
+
+
+
+   // #2: Setze eine Skill-Funktion fuer einen Kampfskill des Klerus
+   this_player()->ModifySkill(FIGHT(WT_CLUB),
+                              ([SI_SKILLFUNC: "Keulenkampf",
+                                SI_DIFFICULTY: 100]),
+                              100, "klerus");
+
+   // #3: Speichere im Skill (also Spieler) eine Option fuer diesen Skill
+   // Vorteil: dieser Eintrag wird dem Spell immer uebergeben
+   caster->ModifySkill("blitz", (["klerus_spell_option": 2]));
+
+   (Code in /doc/beispiele/testobjekte/modifyskillspell_test)
+   // #4: Lerne einen unabhaengigen Spell: ACHTUNG
+   // dieser Spell funktioniert nur solange, wie die Closure existiert,
+   // SI_SKILLABILITY und Spell bleiben jedoch im Spieler gespeichert (!)
+   this_player()->ModifySkill("fnrx",
+     ([SI_CLOSURE:
+         function int (object caster, string skill, mapping sinf) {
+           caster->LearnSkill("fnrx", 1);
+           tell_object(caster, "Peng! Dein Skillwert steigt auf "+
+                               caster->QuerySkillAbility("fnrx")+".\n");
+           return ERFOLG;
+         },
+       SI_SKILLABILITY: 8432]),
+     100,
+     "ANY");
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/ModifySkillAttribute b/doc/lfun/ModifySkillAttribute
index e5b3669..1b4fe40 100644
--- a/doc/lfun/ModifySkillAttribute
+++ b/doc/lfun/ModifySkillAttribute
@@ -1,105 +1,133 @@
+
 ModifySkillAttribute()
-FUNKTION:
-    public int ModifySkillAttribute(string atrname, mixed value, 
-                                    int duration)
+**********************
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
 
-ARGUMENTE:
-    <atrname>   string
-                Name des zu veraendernden Attributes
-                (Definiert in /sys/living/skill_attributes.h)
+FUNKTION
+========
 
-    <value>     int oder closure
-                Wert des Modifikators
-                oder
-                eine Closure, welche bei Abfrage des betreffenden SAs
-                abgefragt um den Modifikator zu bestimmen.
+   public int ModifySkillAttribute(string atrname, mixed value,
+                                   int duration)
 
-    <duration>  int
-                Dauer in Sekunden
 
-BESCHREIBUNG:
-    Aendert temporaer, d.h. fuer eine bestimmte Zeit, ein Skill-Attribut
-    eines Lebewesen, indem ein Modifikator hinzugefuegt wird.
-    
-    Der Standardwert eines SA wird von P_SKILL_ATTRIBUTE_OFFSETS festgelegt
-    oder ist 100, wenn besagte Property leer ist.
-    Alle Modifikatoren (negativ wie positiv) werden addiert und bilden
-    zusammen mit dem Standardwert eine Gesamtsumme.
-    Bei allen SAs ausser SA_QUALITY wird diese Gesamtsumme noch mit
-    SA_QUALITY (welches sich damit auf alle anderen Skill-Attribute
-    auswirkt) multipliziert und das Ergebnis stellt den Endwert des SA dar.
-    (Beispiel s.u.)
+DEFINIERT IN
+============
 
-    Der Wert eines Modifikators muss zwischen -1000 und 1000 liegen. Der
-    Gesamtwert eines SA kann 10 nicht unter- und 1000 nicht ueberschreiten.
+   /std/living/skill_attributes.c
 
-    Falle <value> eine Closure ist, wird diese Closure jedesmal
-    ausgefuehrt, wenn das entsprechende SA abgefragt wird. Der
-    Rueckgabewert dieser Closure stellt dann den Wert des Modifikators
-    dar. Auch dieser muss zwischen -1000 und 1000 liegen. Gibt die
-    Closure keinen int zurueck, wird der Modifikator geloescht.
 
-    Gueltige Skill-Attribute sind momentan:
-    * SA_QUALITY:    Allgemeine Qualitaet: wirkt sich auf alle anderen
-                     Attribute auch aus (multplikativ auf Basis 100)
-    * SA_DAMAGE:     Schaden, den das Lebewesen macht
-    * SA_SPEED:      Geschwindigkeit des Lebewesens (zB Angriffe/Runde)
-    * SA_DURATION:   Spell-/Skilldauer
-    * SA_ENEMY_SAVE: identisch zu SA_SPELL_PENETRATION (OBSOLET!)
-    * SA_SPELL_PENETRATION: Chance des _Casters_, einen Spell durch ein
-                            P_NOMAGIC durchzukriegen.
-    * SA_RANGE:      Reichweite des Lebewesens (eher unbenutzt)
-    * SA_EXTENSION:  "Ausdehnung" bei Gruppen-/Flaechenspells: FindGroupN/P
+ARGUMENTE
+=========
 
-RUECKGABEWERT:
-    SA_MOD_OK              wenn der Modifikator gesetzt wurde
-    SA_TOO_MANY_MODS       wenn die max. Anzahl an Mods schon erreicht ist.
-    SA_MOD_TOO_SMALL       wenn der Modifikator zu klein ist 
-    SA_MOD_TOO_BIG         wenn der Modifikator zu gross ist
-    SA_MOD_INVALID_ATTR    wenn das gewuenschte SA gar nicht existiert
-    SA_MOD_INVALID_OBJECT  wenn das setzende Objekt ungueltig ist
-    SA_MOD_INVALID_VALUE   wenn der Modifikator ungueltig ist
-    Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt
-    es sich, auf == SA_MOD_OK zu pruefen.
+   <atrname>   string
+               Name des zu veraendernden Attributes
+               (Definiert in /sys/living/skill_attributes.h)
 
-BEMERKUNGEN:
-    Nachdem ein Objekt, welches Modifikatoren setzte, zerstoert wurde,
-    werden die Modifikatoren spaetestens ungueltig, sobald in dem
-    manipulierten Lebewesen erneut ModifySkillAttribute() gerufen wird!
-    Bei Closures ist der Mod sofort weg.
+   <value>     int oder closure
+               Wert des Modifikators
+               oder
+               eine Closure, welche bei Abfrage des betreffenden SAs
+               abgefragt um den Modifikator zu bestimmen.
 
-BEISPIELE:
-    // sei PL ein Spieler, den mein NPC schwaechen will:
-    PL->ModifySkillAttribute(SA_QUALITY, -75, 13);
-    // Fuer 13s wird SA_QUALITY um 75 reduziert. Dies wirkt sich auf alle
-    // anderen SAs aus! (s. drittes Beispiel)
+   <duration>  int
+               Dauer in Sekunden
 
-    // sei PL ein Lebewesen, welchem ich fuer 11s 2 Schlaege pro Kampfrunde
-    // zusaetzlich geben moechte:
-    PL->ModifySkillAttribute(SA_SPEED, 200, 11);
-    // wenn keine weiteres Modifikatoren wirken, hat PL jetzt 3 Schlaege
-    // pro Kampfrunde (Basiswert 100 + 200 == 300 => 3).
 
-    Angenommen, ein Lebewesen hat einen Basiswert von 130 auf SA_SPEED und
-    100 auf SA_QUALITY (P_SKILL_ATTRIBUTE_OFFSETS) und nun 3 Modifikatoren
-    gesetzt: SA_SPEED +100, SA_SPEED -30 und SA_QUALITY von -10:
-    Zunaechst wird SA_QUALITY bestimmt: 100 - 10 = 90  => 0.9
-    Anschliessend wird SA_SPEED bestimmt: 130 + 100 - 30 = 200 => 2
-    Nun wird SA_SPEED noch mit SA_QUALITY multipliziert: 2 * 0.9 = 1.8
-    Das Lebewesen hat nun also im Endeffekt 1.8 Schlaege pro Kampfrunde.
+BESCHREIBUNG
+============
 
-    
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill
-    * Modifikation: QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+   Aendert temporaer, d.h. fuer eine bestimmte Zeit, ein Skill-Attribut
+   eines Lebewesen, indem ein Modifikator hinzugefuegt wird.
+
+
+
+   Der Standardwert eines SA wird von P_SKILL_ATTRIBUTE_OFFSETS festgelegt
+   oder ist 100, wenn besagte Property leer ist.
+   Alle Modifikatoren (negativ wie positiv) werden addiert und bilden
+   zusammen mit dem Standardwert eine Gesamtsumme.
+   Bei allen SAs ausser SA_QUALITY wird diese Gesamtsumme noch mit
+   SA_QUALITY (welches sich damit auf alle anderen Skill-Attribute
+   auswirkt) multipliziert und das Ergebnis stellt den Endwert des SA dar.
+   (Beispiel s.u.)
+
+   Der Wert eines Modifikators muss zwischen -1000 und 1000 liegen. Der
+   Gesamtwert eines SA kann 10 nicht unter- und 1000 nicht ueberschreiten.
+
+   Falle <value> eine Closure ist, wird diese Closure jedesmal
+   ausgefuehrt, wenn das entsprechende SA abgefragt wird. Der
+   Rueckgabewert dieser Closure stellt dann den Wert des Modifikators
+   dar. Auch dieser muss zwischen -1000 und 1000 liegen. Gibt die
+   Closure keinen int zurueck, wird der Modifikator geloescht.
+
+   Gueltige Skill-Attribute sind momentan:
+   * SA_QUALITY:    Allgemeine Qualitaet: wirkt sich auf alle anderen
+                    Attribute auch aus (multplikativ auf Basis 100)
+   * SA_DAMAGE:     Schaden, den das Lebewesen macht
+   * SA_SPEED:      Geschwindigkeit des Lebewesens (zB Angriffe/Runde)
+   * SA_DURATION:   Spell-/Skilldauer
+   * SA_ENEMY_SAVE: identisch zu SA_SPELL_PENETRATION (OBSOLET!)
+   * SA_SPELL_PENETRATION: Chance des _Casters_, einen Spell durch ein
+                           P_NOMAGIC durchzukriegen.
+   * SA_RANGE:      Reichweite des Lebewesens (eher unbenutzt)
+   * SA_EXTENSION:  "Ausdehnung" bei Gruppen-/Flaechenspells: FindGroupN/P
+
+
+RUECKGABEWERT
+=============
+
+   SA_MOD_OK              wenn der Modifikator gesetzt wurde
+   SA_TOO_MANY_MODS       wenn die max. Anzahl an Mods schon erreicht ist.
+   SA_MOD_TOO_SMALL       wenn der Modifikator zu klein ist
+   SA_MOD_TOO_BIG         wenn der Modifikator zu gross ist
+   SA_MOD_INVALID_ATTR    wenn das gewuenschte SA gar nicht existiert
+   SA_MOD_INVALID_OBJECT  wenn das setzende Objekt ungueltig ist
+   SA_MOD_INVALID_VALUE   wenn der Modifikator ungueltig ist
+   Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt
+   es sich, auf == SA_MOD_OK zu pruefen.
+
+
+BEMERKUNGEN
+===========
+
+   Nachdem ein Objekt, welches Modifikatoren setzte, zerstoert wurde,
+   werden die Modifikatoren spaetestens ungueltig, sobald in dem
+   manipulierten Lebewesen erneut ModifySkillAttribute() gerufen wird!
+   Bei Closures ist der Mod sofort weg.
+
+
+BEISPIELE
+=========
+
+   // sei PL ein Spieler, den mein NPC schwaechen will:
+   PL->ModifySkillAttribute(SA_QUALITY, -75, 13);
+   // Fuer 13s wird SA_QUALITY um 75 reduziert. Dies wirkt sich auf alle
+   // anderen SAs aus! (s. drittes Beispiel)
+
+   // sei PL ein Lebewesen, welchem ich fuer 11s 2 Schlaege pro Kampfrunde
+   // zusaetzlich geben moechte:
+   PL->ModifySkillAttribute(SA_SPEED, 200, 11);
+   // wenn keine weiteres Modifikatoren wirken, hat PL jetzt 3 Schlaege
+   // pro Kampfrunde (Basiswert 100 + 200 == 300 => 3).
+
+   Angenommen, ein Lebewesen hat einen Basiswert von 130 auf SA_SPEED und
+   100 auf SA_QUALITY (P_SKILL_ATTRIBUTE_OFFSETS) und nun 3 Modifikatoren
+   gesetzt: SA_SPEED +100, SA_SPEED -30 und SA_QUALITY von -10:
+   Zunaechst wird SA_QUALITY bestimmt: 100 - 10 = 90  => 0.9
+   Anschliessend wird SA_SPEED bestimmt: 130 + 100 - 30 = 200 => 2
+   Nun wird SA_SPEED noch mit SA_QUALITY multipliziert: 2 * 0.9 = 1.8
+   Das Lebewesen hat nun also im Endeffekt 1.8 Schlaege pro Kampfrunde.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill
+   * Modifikation: QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 5. Okt 2011 Gloinson
diff --git a/doc/lfun/More b/doc/lfun/More
index 2e73fa2..c504209 100644
--- a/doc/lfun/More
+++ b/doc/lfun/More
@@ -1,56 +1,80 @@
+
 More()
+******
 
-FUNKTION:
-     varargs public void More(string txt, int file,
-                              mixed ctrl, mixed *ctrlargs, int flags);
 
-DEFINIERT IN:
-     /std/util/pager.c
+FUNKTION
+========
 
-ARGUMENTE:
-     txt  - entweder ein Text der ausgegeben werden soll, oder ein filename.
-     file - das flag file gibt an, ob es sich bei <txt> um einen text oder
-            einen Filenamen handelt. Bei einem Filenamen wird der Inhalt
-            dieses Files eingelesen und ausgegeben.
-     ctrl - Eine closure, die aufgerufen wird, falls kein <txt> angegeben
-            wurde.
-     ctrlargs - ctrlargs wird als Parameter an ctrl uebergeben.
-     flags - flags wird mit den im Spieler definierten P_MORE_FLAGS
-             kombiniert.
+   varargs public void More(string txt, int file,
+                            mixed ctrl, mixed *ctrlargs, int flags);
 
-BESCHREIBUNG:
 
-     More() dient der Ausgabe von Texten an Spieler. Mit Hilfe eines
-     PL->More(txt) oder PL->More(txt, 1) ist es sehr einfach laengere Texte
-     an Spieler auszugeben. Bei der Ausgabe werden die persoenlichen
-     Einstellungen des Spielern (wie z.b. Zeilen pro Bildschirmseite)
-     automatisch beruecksichtigt und der Text dadurch ggf. zerstueckelt
-     und in mehreren Schritten nacheinander angezeigt.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     keiner
+   /std/util/pager.c
 
-BEMERKUNGEN:
-     Beim einlesen des Files sind die Leserechte des Spieler in dem More()
-     aufgerufen wird von Bedeutung und nicht die Rechte des Objektes das
-     More() aufruft. Spielerobjekte haben im MorgenGrauen jedoch nur sehr
-     eingeschraenkte Leserechte! Ausgegeben werden koennen nur files
-     aus /p/*, /gilden/* und /d/* die _keinen_ code enthalten. Als Code
-     wird hierbei jedes File betrachtet das als vorletztes Zeichen einen .
-     hat (also .c, .h, .o usw.).
-     Will man aus irgendwelchen Gruenden ein File (z.b. aus /players/)
-     ausgeben, so sollte man stattdessen folgendes verwenden:
-     this_player()->More(read_file(filename))
 
-BEISPIELE:
+ARGUMENTE
+=========
 
-     // Ausgabe eines normalen textes...
-     this_player()->More("Einfach nur mal so ein Test...\n");
+   txt  - entweder ein Text der ausgegeben werden soll, oder ein filename.
+   file - das flag file gibt an, ob es sich bei <txt> um einen text oder
+          einen Filenamen handelt. Bei einem Filenamen wird der Inhalt
+          dieses Files eingelesen und ausgegeben.
+   ctrl - Eine closure, die aufgerufen wird, falls kein <txt> angegeben
+          wurde.
+   ctrlargs - ctrlargs wird als Parameter an ctrl uebergeben.
+   flags - flags wird mit den im Spieler definierten P_MORE_FLAGS
+           kombiniert.
 
-     // Ausgabe eines kompletten files
-     this_player()->More("/etc/WIZRULES", 1);
 
-SIEHE AUCH:
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   More() dient der Ausgabe von Texten an Spieler. Mit Hilfe eines
+   PL->More(txt) oder PL->More(txt, 1) ist es sehr einfach laengere Texte
+   an Spieler auszugeben. Bei der Ausgabe werden die persoenlichen
+   Einstellungen des Spielern (wie z.b. Zeilen pro Bildschirmseite)
+   automatisch beruecksichtigt und der Text dadurch ggf. zerstueckelt
+   und in mehreren Schritten nacheinander angezeigt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Beim einlesen des Files sind die Leserechte des Spieler in dem More()
+   aufgerufen wird von Bedeutung und nicht die Rechte des Objektes das
+   More() aufruft. Spielerobjekte haben im MorgenGrauen jedoch nur sehr
+   eingeschraenkte Leserechte! Ausgegeben werden koennen nur files
+   aus /p/*, /gilden/* und /d/* die _keinen_ code enthalten. Als Code
+   wird hierbei jedes File betrachtet das als vorletztes Zeichen einen .
+   hat (also .c, .h, .o usw.).
+   Will man aus irgendwelchen Gruenden ein File (z.b. aus /players/)
+   ausgeben, so sollte man stattdessen folgendes verwenden:
+   this_player()->More(read_file(filename))
+
+
+BEISPIELE
+=========
+
+   // Ausgabe eines normalen textes...
+   this_player()->More("Einfach nur mal so ein Test...\n");
+
+   // Ausgabe eines kompletten files
+   this_player()->More("/etc/WIZRULES", 1);
+
+
+SIEHE AUCH
+==========
+
+   ----------------------------------------------------------------------------
+
 Last modified: Mon Feb 22 15:09:18 1999 by Padreic
diff --git a/doc/lfun/NPC_Killed_by b/doc/lfun/NPC_Killed_by
index 37392ba..3b8801d 100644
--- a/doc/lfun/NPC_Killed_by
+++ b/doc/lfun/NPC_Killed_by
@@ -1,13 +1,28 @@
-FUNKTION:
-	void NPC_Killed_By(object pl)
-	
-ARGUMENTE:
-	Spieler, der einen NPC gekillt hat.
-	
-BESCHREIBUNG:
-	Wird in der Gilde des Spielers aufgerufen,
-	wenn dieser einen NPC gekillt hat.
-	
-RUECKGABEWERT:
-	Keiner
-	
+
+NPC_Killed_by()
+***************
+
+
+FUNKTION
+========
+
+   void NPC_Killed_By(object pl)
+
+
+ARGUMENTE
+=========
+
+   Spieler, der einen NPC gekillt hat.
+
+
+BESCHREIBUNG
+============
+
+   Wird in der Gilde des Spielers aufgerufen,
+   wenn dieser einen NPC gekillt hat.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner
diff --git a/doc/lfun/NewDoor b/doc/lfun/NewDoor
index 09f5796..c534be5 100644
--- a/doc/lfun/NewDoor
+++ b/doc/lfun/NewDoor
@@ -1,223 +1,252 @@
-FUNKTION:
-     varargs int NewDoor(string|string* cmds, string dest, string|string* ids,
-                         mapping|<int|string|string*>* props);
-DEFINIERT IN:
-     /std/room/doors.c
 
-ARGUMENTE:
-     cmds (string|string*)
-          String oder Array von Strings mit den Befehlen, mit denen man
-          durch die Tuer geht (in der Regel Richtungen wie "norden").
-     dest (string)
-          Pfad des Zielraumes, OHNE ".c", sonst wird eine zweiseitige Tuer
-          (wie sie ueblich ist) nicht als solche erkannt.
-     ids (string|string*)
-          String oder Array von Strings mit den Bezeichnern der Tuer. Kann
-          auch 0 sein; in diesem Fall laesst sich die Tuer nur als "tuer"
-          ansprechen.
-     props (mapping|<int|string|string*>*)
-          Die Eigenschaften der Tuer (s.u.).
+NewDoor()
+*********
 
-BESCHREIBUNG:
-     Es wird eine neue Tuer geschaffen. Die Tuer laesst sich, wenn sie
-     geoeffnet ist, mit den in <cmds> angegebenen Befehlen durchschreiten.
-     Man gelangt dann in den Raum <dest>.
 
-     Die Kommandos werden bei geoeffneter Tuer in die Liste der sichtbaren
-     Ausgaenge eingefuegt.
+FUNKTION
+========
 
-     In <props> lassen sich Aussehen und Eigenschaften der Tuer festlegen.
-     Historisch ist es ein Array mit Paaren von Schluesseln und Werten, d.h.
-     es kommt immer erst ein Element, welches die Eigenschaft bezeichnet und
-     dann ein Element mit dem Wert dieser Eigenschaft.
-     Moderner ist es, ein Mapping mit den entsprechenden Schluesseln und
-     Werten zu uebergeben. Dies ist auch dringend empfohlen.
+   varargs int NewDoor(string|string* cmds, string dest, string|string* ids,
+                       mapping|<int|string|string*>* props);
 
-     In <doorroom.h> sind dazu folgende Eigenschaften definiert:
-     D_FLAGS
-          DOOR_OPEN
-               Die Tuer ist beim Erzeugen geoeffnet.
-          DOOR_CLOSED
-               Die Tuer ist beim Erzeugen geschlossen.
-          DOOR_NEEDKEY
-               Man benoetigt einen Schluessel zum Oeffnen der Tuer.
-          DOOR_CLOSEKEY
-               Man benoetigt einen Schluessel zum Schliessen der Tuer.
-          DOOR_RESET_CL
-               Die Tuer schliesst sich beim Reset.
-          DOOR_RESET_OP
-               Die Tuer oeffnet sich beim Reset.
 
-     D_LONG
-          Die Langbeschreibung der Tuer. 
-          Hier kann ein Mapping eingetragen werden, das als Keys den Tuer-
-          Status hat und die zugehoerige Langbeschreibung dazu. Beispiel:
-          ([ D_STATUS_CLOSED : "Die Tuer ist geschlossen.\n",
-             D_STATUS_OPEN   : "Die Tuer ist offen.\n" ])
-          
-          Default: "Eine Tuer.\n"
+DEFINIERT IN
+============
 
-     D_SHORT
-          Die Kurzbeschreibung der Tuer. Ein "%s" wird durch "geoeffnet"
-          bzw. "geschlossen" ersetzt.
+   /std/room/doors.c
 
-          Es werden die Kurzbeschreibungen aller im Raum vorhandenen Tueren
-          aneinandergehaengt (es wird jeweils ein Leerzeichen eingeschoben),
-          das Ganze mit break_string() umgebrochen und an P_INT_LONG
-          angehaengt.
 
-          Default: "Eine %se Tuer."
+ARGUMENTE
+=========
 
-     D_NAME
-          Der Name der Tuer. Dieser Name wird beim Oeffnen und Schliessen
-          der Tuer sowie bei Fehlermeldungen ausgegeben. Man kann wie bei
-          P_NAME einen String oder ein Array von Strings angeben.
+   cmds (string|string*)
+        String oder Array von Strings mit den Befehlen, mit denen man
+        durch die Tuer geht (in der Regel Richtungen wie "norden").
+   dest (string)
+        Pfad des Zielraumes, OHNE ".c", sonst wird eine zweiseitige Tuer
+        (wie sie ueblich ist) nicht als solche erkannt.
+   ids (string|string*)
+        String oder Array von Strings mit den Bezeichnern der Tuer. Kann
+        auch 0 sein; in diesem Fall laesst sich die Tuer nur als "tuer"
+        ansprechen.
+   props (mapping|<int|string|string*>*)
+        Die Eigenschaften der Tuer (s.u.).
 
-          Default: "Tuer"
 
-     D_GENDER
-          Das Geschlecht der Tuer.
+BESCHREIBUNG
+============
 
-          Default: FEMALE
+   Es wird eine neue Tuer geschaffen. Die Tuer laesst sich, wenn sie
+   geoeffnet ist, mit den in <cmds> angegebenen Befehlen durchschreiten.
+   Man gelangt dann in den Raum <dest>.
 
-     D_MSGS
-          String oder Array von drei Strings. Diese Strings werden beim
-          Durchschreiten der Tuer an move() als dir bzw. dir, textout und
-          textin uebergeben.
+   Die Kommandos werden bei geoeffneter Tuer in die Liste der sichtbaren
+   Ausgaenge eingefuegt.
 
-     D_FUNC
-          String mit dem Namen einer Funktion, die im Startraum vor dem
-          Durchschreiten der Tuer aufgerufen werden soll. Diese Funktion
-          kann das Durchschreiten jedoch nicht verhindern!
+   In <props> lassen sich Aussehen und Eigenschaften der Tuer festlegen.
+   Historisch ist es ein Array mit Paaren von Schluesseln und Werten, d.h.
+   es kommt immer erst ein Element, welches die Eigenschaft bezeichnet und
+   dann ein Element mit dem Wert dieser Eigenschaft.
+   Moderner ist es, ein Mapping mit den entsprechenden Schluesseln und
+   Werten zu uebergeben. Dies ist auch dringend empfohlen.
 
-     D_FUNC2
-          String mit dem Namen einer Funktion, die im Zielraum nach dem
-          Durchschreiten der Tuer aufgerufen werden soll.
+   In <doorroom.h> sind dazu folgende Eigenschaften definiert:
+   D_FLAGS
+        DOOR_OPEN
+             Die Tuer ist beim Erzeugen geoeffnet.
+        DOOR_CLOSED
+             Die Tuer ist beim Erzeugen geschlossen.
+        DOOR_NEEDKEY
+             Man benoetigt einen Schluessel zum Oeffnen der Tuer.
+        DOOR_CLOSEKEY
+             Man benoetigt einen Schluessel zum Schliessen der Tuer.
+        DOOR_RESET_CL
+             Die Tuer schliesst sich beim Reset.
+        DOOR_RESET_OP
+             Die Tuer oeffnet sich beim Reset.
 
-     D_TESTFUNC
-          Falls auf den Namen einer Funktion gesetzt, wird diese Funktion
-          vor dem Durchschreiten im Startraum aufgerufen. Wenn sie einen
-          Wert != 0 zurueckliefert, wird die Tuer NICHT durchschritten. 
+   D_LONG
+        Die Langbeschreibung der Tuer.
+        Hier kann ein Mapping eingetragen werden, das als Keys den Tuer-
+        Status hat und die zugehoerige Langbeschreibung dazu. Beispiel:
+        ([ D_STATUS_CLOSED : "Die Tuer ist geschlossen.\n",
+           D_STATUS_OPEN   : "Die Tuer ist offen.\n" ])
 
-     D_RESET_MSG
-          Meldung, die beim Reset der Tuer ausgegeben wird.
 
-     D_OPEN_WITH_MOVE
-          Tuer oeffnet automatisch bei Eingabe des Befehls zum 
-          Hindurchgehen.
-          
-RUECKGABEWERT:
-     1, wenn die Tuer ordungsgemaess eingebaut werden konnte, sonst 0.
 
-BEMERKUNGEN:
-     Zwei Tuerseiten gelten als verschiedene Seiten einer Tuer, wenn als
-     Ziel in Raum A Raum B und in Raum B Raum A angegeben ist. Der Zustand
-     wird abgefragt, wenn der Raum betreten wird (init), wenn die Tuer
-     geoeffnet/geschlossen wird, P_INT_LONG oder P_EXITS abgefragt wird
-     und beim Reset.
+        Default: "Eine Tuer.\n"
 
-     Es sind auch Tueren moeglich, die nur auf einer Seite existieren, oder
-     auch solche, die auf beiden Seiten verschieden aussehen oder gar auf
-     einer Seite nur mit einem Schluessel zu oeffnen sind, auf der anderen
-     jedoch kein Schluessel noetig ist.
+   D_SHORT
+        Die Kurzbeschreibung der Tuer. Ein "%s" wird durch "geoeffnet"
+        bzw. "geschlossen" ersetzt.
 
-     Wer aus irgendeinem Grund den Zustand einer Tuer selber abfragen oder
-     veraendern will, kann dafuer in /obj/doormaster die Funktionen
-     QueryDoorStatus(ziel) bzw. SetDoorStatus(ziel,status) aufrufen.
+        Es werden die Kurzbeschreibungen aller im Raum vorhandenen Tueren
+        aneinandergehaengt (es wird jeweils ein Leerzeichen eingeschoben),
+        das Ganze mit break_string() umgebrochen und an P_INT_LONG
+        angehaengt.
 
-     *** ACHTUNG ***
-     Es gibt eine Questbelohnung (Phiole aus der Sternenlicht-Quest von
-     Miril), mit der man durch Tueren hindurchschauen kann. Derzeit ist das
-     per default fuer alle Tueren erlaubt. Wenn man das nicht moechte,
-     oder andere Texte ausgeben, als die Phiole normalerweise erzeugt,
-     dann kann man dies durch Nutzung bestimmter Funktionen bzw. Flags
-     erreichen. Zur Dokumentation siehe Manpage zu GetPhiolenInfos().
+        Default: "Eine %se Tuer."
 
-BEISPIELE:
+   D_NAME
+        Der Name der Tuer. Dieser Name wird beim Oeffnen und Schliessen
+        der Tuer sowie bei Fehlermeldungen ausgegeben. Man kann wie bei
+        P_NAME einen String oder ein Array von Strings angeben.
 
-  ** Dies ist eine gewoehnliche Tuer ohne Besonderheiten und ohne
-     Extra-Beschreibung:
+        Default: "Tuer"
 
-     NewDoor("sueden","/players/rochus/room/test1");
+   D_GENDER
+        Das Geschlecht der Tuer.
 
-  ** Ein Portal:
+        Default: FEMALE
 
-     NewDoor("norden","/players/rochus/room/test2",
-             "portal",
-             ([ D_NAME:   "Portal",
-                D_GENDER: NEUTER,
-                D_SHORT:  "Im Norden siehst Du ein %ses Portal.",
-                D_LONG:   "Das Portal ist einfach nur gigantisch.\n",
-              ]) );
+   D_MSGS
+        String oder Array von drei Strings. Diese Strings werden beim
+        Durchschreiten der Tuer an move() als dir bzw. dir, textout und
+        textin uebergeben.
 
-     Alternativ mit props in alter Arraynotation:
-     NewDoor("norden","/players/rochus/room/test2",
-             "portal",
-             ({ D_NAME,   "Portal",
-                D_GENDER, NEUTER,
-                D_SHORT,  "Im Norden siehst Du ein %ses Portal.",
-                D_LONG,   "Das Portal ist einfach nur gigantisch.\n"
+   D_FUNC
+        String mit dem Namen einer Funktion, die im Startraum vor dem
+        Durchschreiten der Tuer aufgerufen werden soll. Diese Funktion
+        kann das Durchschreiten jedoch nicht verhindern!
+
+   D_FUNC2
+        String mit dem Namen einer Funktion, die im Zielraum nach dem
+        Durchschreiten der Tuer aufgerufen werden soll.
+
+   D_TESTFUNC
+        Falls auf den Namen einer Funktion gesetzt, wird diese Funktion
+        vor dem Durchschreiten im Startraum aufgerufen. Wenn sie einen
+        Wert != 0 zurueckliefert, wird die Tuer NICHT durchschritten.
+
+   D_RESET_MSG
+        Meldung, die beim Reset der Tuer ausgegeben wird.
+
+   D_OPEN_WITH_MOVE
+        Tuer oeffnet automatisch bei Eingabe des Befehls zum
+        Hindurchgehen.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn die Tuer ordungsgemaess eingebaut werden konnte, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Zwei Tuerseiten gelten als verschiedene Seiten einer Tuer, wenn als
+   Ziel in Raum A Raum B und in Raum B Raum A angegeben ist. Der Zustand
+   wird abgefragt, wenn der Raum betreten wird (init), wenn die Tuer
+   geoeffnet/geschlossen wird, P_INT_LONG oder P_EXITS abgefragt wird
+   und beim Reset.
+
+   Es sind auch Tueren moeglich, die nur auf einer Seite existieren, oder
+   auch solche, die auf beiden Seiten verschieden aussehen oder gar auf
+   einer Seite nur mit einem Schluessel zu oeffnen sind, auf der anderen
+   jedoch kein Schluessel noetig ist.
+
+   Wer aus irgendeinem Grund den Zustand einer Tuer selber abfragen oder
+   veraendern will, kann dafuer in /obj/doormaster die Funktionen
+   QueryDoorStatus(ziel) bzw. SetDoorStatus(ziel,status) aufrufen.
+
+   *** ACHTUNG ***
+   Es gibt eine Questbelohnung (Phiole aus der Sternenlicht-Quest von
+   Miril), mit der man durch Tueren hindurchschauen kann. Derzeit ist das
+   per default fuer alle Tueren erlaubt. Wenn man das nicht moechte,
+   oder andere Texte ausgeben, als die Phiole normalerweise erzeugt,
+   dann kann man dies durch Nutzung bestimmter Funktionen bzw. Flags
+   erreichen. Zur Dokumentation siehe Manpage zu GetPhiolenInfos().
+
+
+BEISPIELE
+=========
+
+   ** Dies ist eine gewoehnliche Tuer ohne Besonderheiten und ohne
+      Extra-Beschreibung:
+
+      NewDoor("sueden","/players/rochus/room/test1");
+
+   ** Ein Portal:
+
+      NewDoor("norden","/players/rochus/room/test2",
+              "portal",
+              ([ D_NAME:   "Portal",
+                 D_GENDER: NEUTER,
+                 D_SHORT:  "Im Norden siehst Du ein %ses Portal.",
+                 D_LONG:   "Das Portal ist einfach nur gigantisch.\n",
+               ]) );
+
+      Alternativ mit props in alter Arraynotation:
+      NewDoor("norden","/players/rochus/room/test2",
+              "portal",
+              ({ D_NAME,   "Portal",
+                 D_GENDER, NEUTER,
+                 D_SHORT,  "Im Norden siehst Du ein %ses Portal.",
+                 D_LONG,   "Das Portal ist einfach nur gigantisch.\n"
+               }) );
+
+
+
+   ** Tueren mit Bewegungsmeldung:
+
+      NewDoor("norden","/room/see2",
+              ({ D_MSGS,  ({"nach Norden","schwimmt",
+                            "kommt hereingeschwommen"}) }) );
+
+   ** Eine Tuer mit Testfunktion:
+
+      NewDoor("osten","/mein/zielraum",
+              ({ D_TESTFUNC, "blocker_da" }) );
+
+      Die Funktion blocker_da:
+
+      int blocker_da()      // KEINE protected-Funktion! Sie wird sonst NICHT
+      {                     // aufgerufen und ausgewertet!
+        if ( present("mein_fieses_mo\nster",this_object()) )
+         {
+          write("Ein fieses Monster stellt sich Dir in den Weg.\n");
+          return 1;
+         }
+        return 0;           // optional
+      }
+
+   ** Nun noch eine Tuer mit einigen Extras:
+
+      NewDoor("nordwesten","/rooms/kammer",
+              ({"tuer","holztuer"}),
+              ({
+                D_FLAGS,  (DOOR_CLOSED|DOOR_RESET_CL),
+                D_MSGS,   ({"nach Nordwesten","geht",
+                          "kommt durch eine Tuer herein"}),
+                D_SHORT,  "Im Nordwesten siehst Du eine %se Holztuer.",
+                D_LONG,   "Sie trennt den Laden vom dahinterliegenden Raum.\n",
+                D_NAME,   "Holztuer",
+                D_FUNC,   "view",
+                D_FUNC2,  "look_up"
               }) );
-     
-  ** Tueren mit Bewegungsmeldung:
 
-     NewDoor("norden","/room/see2",
-             ({ D_MSGS,  ({"nach Norden","schwimmt",
-                           "kommt hereingeschwommen"}) }) );
+      Im Startraum:
 
-  ** Eine Tuer mit Testfunktion:
+      void view()
+      {
+        write("Der Angestellte wirft Dir einen missbilligenden Blick zu, "
+              "laesst Dich aber passieren.\n");
+      }
 
-     NewDoor("osten","/mein/zielraum",
-             ({ D_TESTFUNC, "blocker_da" }) );
+      Im Zielraum:
 
-     Die Funktion blocker_da:
-
-     int blocker_da()      // KEINE protected-Funktion! Sie wird sonst NICHT
-     {                     // aufgerufen und ausgewertet!
-       if ( present("mein_fieses_mo\nster",this_object()) )
-        {
-         write("Ein fieses Monster stellt sich Dir in den Weg.\n");
-         return 1;
-        }
-       return 0;           // optional
-     }
-
-  ** Nun noch eine Tuer mit einigen Extras:
-
-     NewDoor("nordwesten","/rooms/kammer",
-             ({"tuer","holztuer"}),
-             ({
-               D_FLAGS,  (DOOR_CLOSED|DOOR_RESET_CL),
-               D_MSGS,   ({"nach Nordwesten","geht",
-                         "kommt durch eine Tuer herein"}),
-               D_SHORT,  "Im Nordwesten siehst Du eine %se Holztuer.",
-               D_LONG,   "Sie trennt den Laden vom dahinterliegenden Raum.\n",
-               D_NAME,   "Holztuer",
-               D_FUNC,   "view",
-               D_FUNC2,  "look_up"
-             }) );
-
-     Im Startraum:
-
-     void view()
-     {
-       write("Der Angestellte wirft Dir einen missbilligenden Blick zu, "
-             "laesst Dich aber passieren.\n");
-     }
-
-     Im Zielraum:
-
-     void look_up()
-     {
-       write("Ein alter Mann schaut kurz zu Dir auf und vertieft sich dann "
-             "wieder in seine Akten.\n");
-     }
+      void look_up()
+      {
+        write("Ein alter Mann schaut kurz zu Dir auf und vertieft sich dann "
+              "wieder in seine Akten.\n");
+      }
 
 
-SIEHE AUCH:
-    QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
-    /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+SIEHE AUCH
+==========
 
------------------------------------------------------------------------------
+   QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
 08.02.2015, Arathorn
-
diff --git a/doc/lfun/NoParaObjects b/doc/lfun/NoParaObjects
index 804e7b7..4b6013a 100644
--- a/doc/lfun/NoParaObjects
+++ b/doc/lfun/NoParaObjects
@@ -1,28 +1,46 @@
+
+NoParaObjects()
+***************
+
 ********************** VERALTETE LFUN ****************************
 NoParaObjects()
 
-FUNKTION:
-	int NoParaObjects()
 
-DEFINIERT IN:
-	/std/virtual/v_compiler.c
+FUNKTION
+========
 
-RUeCKGABEWERT:
-    1, wenn der VC keine Parawelt-Objekte erzeugt,
-    0, wenn er es doch tut.
+   int NoParaObjects()
 
-BESCHREIBUNG:
-    Diese Funktion ist veraltet. QueryValidObject() ist genereller und
-    einfacher zu handhaben. Bitte in Zukunft P_PARA im VC setzen, siehe hierzu
-    die Manpage von QueryValidObject().
 
-    Die Funktion gibt an, ob ein Virtual Compiler auch Parawelt-Objekte
-    erzeugen kann.
-    Wichtig: Entweder dieser Funktion im VC definieren, wenn der VC keine
-    Para-Objekte erzeugen wird oder P_PARA passend setzen!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	virtual_compiler, P_PARA, QueryValidObject
+   /std/virtual/v_compiler.c
 
-----------------------------------------------------------------------------
+
+RUeCKGABEWERT
+=============
+
+   1, wenn der VC keine Parawelt-Objekte erzeugt,
+   0, wenn er es doch tut.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ist veraltet. QueryValidObject() ist genereller und
+   einfacher zu handhaben. Bitte in Zukunft P_PARA im VC setzen, siehe hierzu
+   die Manpage von QueryValidObject().
+
+   Die Funktion gibt an, ob ein Virtual Compiler auch Parawelt-Objekte
+   erzeugen kann.
+   Wichtig: Entweder dieser Funktion im VC definieren, wenn der VC keine
+   Para-Objekte erzeugen wird oder P_PARA passend setzen!
+
+
+SIEHE AUCH
+==========
+
+   virtual_compiler, P_PARA, QueryValidObject
+
 04.03.2007, Zesstra
diff --git a/doc/lfun/NotifyDestruct b/doc/lfun/NotifyDestruct
index 48e71ee..31e02e9 100644
--- a/doc/lfun/NotifyDestruct
+++ b/doc/lfun/NotifyDestruct
@@ -1,47 +1,66 @@
+
 NotifyDestruct()
+****************
 
-FUNKTION:
-     public int|string NotifyRemove(object zerstoerer);
 
-ARGUMENTE:
-     zerstoerer
-          Das Objekt, welches destruct() auf dieses Objekt anwendet.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird vom Master der Mudlib in jedem Objekt gerufen,
-     welches zerstoert wird, um Objekten eine letzte Chance zu geben, sich
-     aufzuraeumen.
-     Wenn ihr diese Funktion selber definiert, achtet bittet darauf, dass sie
-     in keinem Fall Fehler ausloesen sollte, d.h. testet entsprechend
-     gruendlich.
-     Wenn ihr aus /std/ erbt und diese Funktion ueberschreibt,, _muesst_ ihr
-     die geerbte NotifyDestruct() aufrufen, da sonst das Lichtsystem nicht
-     aktualisiert wird.
+   public int|string NotifyRemove(object zerstoerer);
 
-     Privilegierte Objekte (z.B. Root-Objekte, spezielle Ausnahmen wie der
-     Netztotenraum, Armageddon) koennen die Zerstoerung in letzter Sekunde
-     verhindern, indem sie hier einen Wert != 0 zurueckliefern. Wird ein
-     string zurueckgeliefert, wird dieser die Fehlermeldung des
-     prepare_destruct() im Master sein.
-     Bei nicht-privilegierten Objekten (also fast alle) ist an dieser Stelle
-     _kein_ Abbruch der Zerstoerung moeglich!
 
-RUeCKGABEWERT:
-     Der Rueckgabewert muss ein string oder ein int sein. Allerdings wird der
-     Master den Rueckgabewert nur fuer privilegierte Objekte auswerten.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Wie gesagt, bitte keine Fehler ausloesen (auch wenn der Master
-     grundsaetzlich damit klar kommt). Speziell ist ein raise_error() zur
-     Verhinderung eines destructs nutzlos.
-     Bitte macht in dieser Funkion nur das, was _unbedingt_ notwendig ist.
-     Wenn jemand ein destruct() anwendet statt ein remove() zu rufen, hat das
-     in der Regel einen Grund (z.B. um buggende remove() zu umgehen). Insb.
-     ist ein save_object() in remove() und NotifyDestruct() vollstaendig
-     ueberfluessig.
+   zerstoerer
+        Das Objekt, welches destruct() auf dieses Objekt anwendet.
 
-SIEHE AUCH:
-    NotifyLeave(), NotifyInsert(), NotifyRemove()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom Master der Mudlib in jedem Objekt gerufen,
+   welches zerstoert wird, um Objekten eine letzte Chance zu geben, sich
+   aufzuraeumen.
+   Wenn ihr diese Funktion selber definiert, achtet bittet darauf, dass sie
+   in keinem Fall Fehler ausloesen sollte, d.h. testet entsprechend
+   gruendlich.
+   Wenn ihr aus /std/ erbt und diese Funktion ueberschreibt,, _muesst_ ihr
+   die geerbte NotifyDestruct() aufrufen, da sonst das Lichtsystem nicht
+   aktualisiert wird.
+
+   Privilegierte Objekte (z.B. Root-Objekte, spezielle Ausnahmen wie der
+   Netztotenraum, Armageddon) koennen die Zerstoerung in letzter Sekunde
+   verhindern, indem sie hier einen Wert != 0 zurueckliefern. Wird ein
+   string zurueckgeliefert, wird dieser die Fehlermeldung des
+   prepare_destruct() im Master sein.
+   Bei nicht-privilegierten Objekten (also fast alle) ist an dieser Stelle
+   _kein_ Abbruch der Zerstoerung moeglich!
+
+
+RUeCKGABEWERT
+=============
+
+   Der Rueckgabewert muss ein string oder ein int sein. Allerdings wird der
+   Master den Rueckgabewert nur fuer privilegierte Objekte auswerten.
+
+
+BEMERKUNGEN
+===========
+
+   Wie gesagt, bitte keine Fehler ausloesen (auch wenn der Master
+   grundsaetzlich damit klar kommt). Speziell ist ein raise_error() zur
+   Verhinderung eines destructs nutzlos.
+   Bitte macht in dieser Funkion nur das, was _unbedingt_ notwendig ist.
+   Wenn jemand ein destruct() anwendet statt ein remove() zu rufen, hat das
+   in der Regel einen Grund (z.B. um buggende remove() zu umgehen). Insb.
+   ist ein save_object() in remove() und NotifyDestruct() vollstaendig
+   ueberfluessig.
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), NotifyInsert(), NotifyRemove()
+
 Last modified: 25.02.2009, Zesstra
diff --git a/doc/lfun/NotifyInsert b/doc/lfun/NotifyInsert
index aa2c6ec..fa2f2ac 100644
--- a/doc/lfun/NotifyInsert
+++ b/doc/lfun/NotifyInsert
@@ -1,28 +1,47 @@
+
 NotifyInsert()
+**************
 
-FUNKTION:
-     void NotifyInsert(object ob, object oldenv);
 
-ARGUMENTE:
-     ob
-          Das Objekt, das in den Behaelter eingefuegt wurde.
-     oldenv
-          Das Objekt, aus dem <ob> kam.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt in
-     besagten Behaelter hinein bewegt wurde. 
+   void NotifyInsert(object ob, object oldenv);
 
-RUeCKGABEWERT:
-     keiner
 
-BEMERKUNGEN:
-     Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer 
-     Lebewesen s. bitte. init().
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    NotifyLeave(), PreventInsert(), PreventLeave(), move(), NotifyRemove()
-    exit(), init(), NotifyMove(), PreventMove()
+   ob
+        Das Objekt, das in den Behaelter eingefuegt wurde.
+   oldenv
+        Das Objekt, aus dem <ob> kam.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt in
+   besagten Behaelter hinein bewegt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer
+   Lebewesen s. bitte. init().
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), PreventInsert(), PreventLeave(), move(), NotifyRemove()
+   exit(), init(), NotifyMove(), PreventMove()
+
 Last modified: 21.05.2012, Zesstra
diff --git a/doc/lfun/NotifyLeave b/doc/lfun/NotifyLeave
index 621fca8..fbfc1c3 100644
--- a/doc/lfun/NotifyLeave
+++ b/doc/lfun/NotifyLeave
@@ -1,28 +1,47 @@
+
 NotifyLeave()
+*************
 
-FUNKTION:
-     void NotifyLeave(object ob, object dest);
 
-ARGUMENTE:
-     ob
-          Das Objekt, das aus dem Behaelter entfernt wurde.
-     dest
-          Das Objekt, in das <ob> bewegt wurde.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt aus
-     besagten Behaelter entfernt wurde.
+   void NotifyLeave(object ob, object dest);
 
-RUeCKGABEWERT:
-     keiner
 
-BEMERKUNGEN:
-     Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer
-     Lebewesen s. bitte. exit().
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    NotifyRemove(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
-    exit(), init(), NotifyMove(), PreventMove()
+   ob
+        Das Objekt, das aus dem Behaelter entfernt wurde.
+   dest
+        Das Objekt, in das <ob> bewegt wurde.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt aus
+   besagten Behaelter entfernt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer
+   Lebewesen s. bitte. exit().
+
+
+SIEHE AUCH
+==========
+
+   NotifyRemove(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
+   exit(), init(), NotifyMove(), PreventMove()
+
 Last modified: 21.05.2012, Zesstra
diff --git a/doc/lfun/NotifyMove b/doc/lfun/NotifyMove
index 9fe1861..18261f8 100644
--- a/doc/lfun/NotifyMove
+++ b/doc/lfun/NotifyMove
@@ -1,58 +1,83 @@
 
-FUNKTION:
-     protected void NotifyMove(object dest, object oldenv, int method);
-
-DEFINIERT IN:
-     /std/thing/moving.c
-     /std/living/moving.c
-     /std/player/moving.c
-
-ARGUMENTE:
-     dest
-          Das Ziel des Moves bzw. das jetzt aktuelle Environment
-     oldenv
-          Das alte Environment des Objekts
-     method
-          Die Move-Methode(n), mit der/denen bewegt wurde.
-
-BESCHREIBUNG:
-     Diese Funktion wird vom move() im Objekt gerufen, sobald die Bewegung im
-     wesentlichen abgeschlossen ist. Sie soll einerseits das Objekt ueber eine
-     stattgefundene Bewegung informieren, aber auch einige Dinge erledigen,
-     die bei der Bewegung stattfinden muessen (bei Livings z.B. das Team
-     nachholen).
-
-RUeCKGABEWERT:
-     keiner
-
-BEMERKUNGEN:
-     Diese Funktion kann ueberschrieben werden, damit das Objekt Bewegungen
-     mitgekommt, ohne das move() selber zu ueberschreiben oder einen Move-Hook
-     zu setzen. Dabei aber bitte unbedingt beachten:
-     Das geerbte NotifyMove() _MUSS IN JEDEM FALL_ mit aufgerufen werden!
-     Solltet ihr das vergessen, werden eure Objekte buggen. ;-)
-     Die Funktion darf nur objektintern verwendet werden. Beim Ueberschreiben
-     das 'protected' nicht vergessen!
-
-BEISPIELE:
-     Eine Bombe, die in Seherhaustruhen explodiert:
-
-     protected void NotifyMove(object dest, object oldenv, int method) {
-         ::NotifyMove(dest, oldenv, method); // WICHTIG!
-         if (objectp(dest) &&
-             load_name(dest) == "/d/seher/haeuser/truhe") {
-             if (find_call_out("explodiere")==-1)
-                 call_out("explodiere",900);
-         }
-         else
-             remove_call_out("explodiere");
-     }
+NotifyMove()
+************
 
 
-SIEHE AUCH:
-     PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
-     PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
-     PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   protected void NotifyMove(object dest, object oldenv, int method);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/moving.c
+   /std/living/moving.c
+   /std/player/moving.c
+
+
+ARGUMENTE
+=========
+
+   dest
+        Das Ziel des Moves bzw. das jetzt aktuelle Environment
+   oldenv
+        Das alte Environment des Objekts
+   method
+        Die Move-Methode(n), mit der/denen bewegt wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom move() im Objekt gerufen, sobald die Bewegung im
+   wesentlichen abgeschlossen ist. Sie soll einerseits das Objekt ueber eine
+   stattgefundene Bewegung informieren, aber auch einige Dinge erledigen,
+   die bei der Bewegung stattfinden muessen (bei Livings z.B. das Team
+   nachholen).
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion kann ueberschrieben werden, damit das Objekt Bewegungen
+   mitgekommt, ohne das move() selber zu ueberschreiben oder einen Move-Hook
+   zu setzen. Dabei aber bitte unbedingt beachten:
+   Das geerbte NotifyMove() _MUSS IN JEDEM FALL_ mit aufgerufen werden!
+   Solltet ihr das vergessen, werden eure Objekte buggen. ;-)
+   Die Funktion darf nur objektintern verwendet werden. Beim Ueberschreiben
+   das 'protected' nicht vergessen!
+
+
+BEISPIELE
+=========
+
+   Eine Bombe, die in Seherhaustruhen explodiert:
+
+   protected void NotifyMove(object dest, object oldenv, int method) {
+       ::NotifyMove(dest, oldenv, method); // WICHTIG!
+       if (objectp(dest) &&
+           load_name(dest) == "/d/seher/haeuser/truhe") {
+           if (find_call_out("explodiere")==-1)
+               call_out("explodiere",900);
+       }
+       else
+           remove_call_out("explodiere");
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/NotifyPlayerDeath b/doc/lfun/NotifyPlayerDeath
index 9166150..96678ea 100644
--- a/doc/lfun/NotifyPlayerDeath
+++ b/doc/lfun/NotifyPlayerDeath
@@ -1,74 +1,99 @@
+
 NotifyPlayerDeath()
+*******************
 
-FUNKTION:
-  void NotifyPlayerDeath(object victim,object killer,int lost_exp);
 
-DEFINIERT IN:
-  /std/player/life.c
+FUNKTION
+========
 
-ARGUMENTE:
-  victim
-    Getoeteter Spieler.
-  killer
-    Objekt, welches den Spieler getoetet hat.
-  lost_exp
-    Erfahrungspunkte, die der Spieler durch den Tod verloren hat.
+   void NotifyPlayerDeath(object victim,object killer,int lost_exp);
 
-BESCHREIBUNG:
-  Diese Funktion wird aus dem Spielerobjekt heraus immer dann
-  aufgerufen, wenn der Spieler stirbt und zwar:
-    1) im Gegner, der den Spieler getoetet hat,
-    2) im Environment des getoeteten Spielers,
-    3) in der Gilde des Spielers,
-    4) in allen Objekten in diesem Environment und
-    5) in allen Objekten (auch innerhalb Containern) im Spieler.
-  Der Gegner wird hierbei nur einmal informiert, also bei letzteren
-  Faellen herausgefiltert, falls noetig!
-  Hauptaufgabe dieser Funktion ist es somit, auf Tode von Spielern zu
-  reagieren oder selbige einfach nur mitzuloggen.
 
-  Zu dem Zeitpunkt des Aufrufs dieser Funktion ist der Spieler noch _nicht_
-  Geist und noch _nicht_ im Todesraum - dies wird im Anschluss an den Aufruf
-  der NotifyPlayerDeath() durchgefuehrt.
-  
-  Aufgerufen wird die Funktion aus '/std/player/life.c' mittels catch() und
-  werden mit limited() auf max. 150k (Gegner, Environment, Gilde) bzw. 80k 
-  (alle anderen Objekte) Ticks beschraenkt.
-  Fehler in dieser Funktion haben somit keine negativen Auswirkungen
-  auf das Sterben des Spielers.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-  keiner
+   /std/player/life.c
 
-BEISPIELE:
-  Folgendes Beispiel demonstriert beispielsweise, wie man Tode von
-  Spielern mitloggen kann (das Beispiel ist hierbei auf den am
-  haeufigsten auftretenden Fall bezogen, dass nur das toetende Objekt
-  den Tod protokollieren soll):
 
-    void NotifyPlayerDeath(object dead, object killer, int lost_exp) 
-    { 
-      if ( intp(lost_exp) && objectp(dead) && objectp(killer) && 
-           killer==this_object() )
-        write_file( "/log/patryn/dead", sprintf(
-          "%s - %s von %s getoetet. XP: -%d", ctime(), getuid(dead),
-           killer->name(WEM), lost_exp) );
-    }
+ARGUMENTE
+=========
 
-  Bitte beachten: write_file() schreibt ohne Groessenbegrenzung in das
-  Logfile. Da dies auf Dauer bzw. in Gebieten mit hoher Log-Aktivitaet
-  zu Logfiles von enormer Groesse fuehren kann, ist die Verwendung
-  von write_file() nicht empfehlenswert. Ausnahmen koennen natuerlich
-  mit dem zustaendigen Regionsmagier abgesprochen werden, z.B. fuer
-  begrenzte Anwendung etwa bei sehr starken, selten besiegten Gegnern.
+   victim
+     Getoeteter Spieler.
+   killer
+     Objekt, welches den Spieler getoetet hat.
+   lost_exp
+     Erfahrungspunkte, die der Spieler durch den Tod verloren hat.
 
-  Weiterhin ist es empfehlenswert, das toetende Objekt (killer) nicht
-  im NotifyPlayerDeath() zu zestoeren, sondern etwas zeitversetzt,
-  damit nicht etwa im nachfolgenden NotifyPlayerDeath() eines anderen
-  Objektes (s.o. Reihenfolge) killer==0 ist.
 
-SIEHE AUCH:
-  Defend(), do_damage(), NotifyHpChange(), catch(), write_file(), log_file()
-  P_LAST_DEATH_PROPS
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aus dem Spielerobjekt heraus immer dann
+   aufgerufen, wenn der Spieler stirbt und zwar:
+     1) im Gegner, der den Spieler getoetet hat,
+     2) im Environment des getoeteten Spielers,
+     3) in der Gilde des Spielers,
+     4) in allen Objekten in diesem Environment und
+     5) in allen Objekten (auch innerhalb Containern) im Spieler.
+   Der Gegner wird hierbei nur einmal informiert, also bei letzteren
+   Faellen herausgefiltert, falls noetig!
+   Hauptaufgabe dieser Funktion ist es somit, auf Tode von Spielern zu
+   reagieren oder selbige einfach nur mitzuloggen.
+
+   Zu dem Zeitpunkt des Aufrufs dieser Funktion ist der Spieler noch _nicht_
+   Geist und noch _nicht_ im Todesraum - dies wird im Anschluss an den Aufruf
+   der NotifyPlayerDeath() durchgefuehrt.
+
+
+
+   Aufgerufen wird die Funktion aus '/std/player/life.c' mittels catch() und
+   werden mit limited() auf max. 150k (Gegner, Environment, Gilde) bzw. 80k
+   (alle anderen Objekte) Ticks beschraenkt.
+   Fehler in dieser Funktion haben somit keine negativen Auswirkungen
+   auf das Sterben des Spielers.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Folgendes Beispiel demonstriert beispielsweise, wie man Tode von
+   Spielern mitloggen kann (das Beispiel ist hierbei auf den am
+   haeufigsten auftretenden Fall bezogen, dass nur das toetende Objekt
+   den Tod protokollieren soll):
+
+     void NotifyPlayerDeath(object dead, object killer, int lost_exp)
+     {
+       if ( intp(lost_exp) && objectp(dead) && objectp(killer) &&
+            killer==this_object() )
+         write_file( "/log/patryn/dead", sprintf(
+           "%s - %s von %s getoetet. XP: -%d", ctime(), getuid(dead),
+            killer->name(WEM), lost_exp) );
+     }
+
+   Bitte beachten: write_file() schreibt ohne Groessenbegrenzung in das
+   Logfile. Da dies auf Dauer bzw. in Gebieten mit hoher Log-Aktivitaet
+   zu Logfiles von enormer Groesse fuehren kann, ist die Verwendung
+   von write_file() nicht empfehlenswert. Ausnahmen koennen natuerlich
+   mit dem zustaendigen Regionsmagier abgesprochen werden, z.B. fuer
+   begrenzte Anwendung etwa bei sehr starken, selten besiegten Gegnern.
+
+   Weiterhin ist es empfehlenswert, das toetende Objekt (killer) nicht
+   im NotifyPlayerDeath() zu zestoeren, sondern etwas zeitversetzt,
+   damit nicht etwa im nachfolgenden NotifyPlayerDeath() eines anderen
+   Objektes (s.o. Reihenfolge) killer==0 ist.
+
+
+SIEHE AUCH
+==========
+
+   Defend(), do_damage(), NotifyHpChange(), catch(), write_file(), log_file()
+   P_LAST_DEATH_PROPS
+
 24.03.2012, Zesstra
diff --git a/doc/lfun/NotifyRemove b/doc/lfun/NotifyRemove
index 48b04fa..2604b77 100644
--- a/doc/lfun/NotifyRemove
+++ b/doc/lfun/NotifyRemove
@@ -1,26 +1,45 @@
+
 NotifyRemove()
+**************
 
-FUNKTION:
-     void NotifyRemove(object ob);
 
-ARGUMENTE:
-     ob
-          Das Objekt, das aus dem Behaelter entfernt wurde.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird im Behaelter aufgerufen, wenn ein Objekt im
-     besagten Behaelter zerstoert wird.
+   void NotifyRemove(object ob);
 
-RUeCKGABEWERT:
-     keiner
 
-BEMERKUNGEN:
-     Wird nicht gerufen, wenn ein Spielerobjekt zerstoert wird.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    NotifyLeave(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
-    NotifyMove(), PreventMove(),
-    BecomesNetDead()
+   ob
+        Das Objekt, das aus dem Behaelter entfernt wurde.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Behaelter aufgerufen, wenn ein Objekt im
+   besagten Behaelter zerstoert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Wird nicht gerufen, wenn ein Spielerobjekt zerstoert wird.
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
+   NotifyMove(), PreventMove(),
+   BecomesNetDead()
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/NotifyTimedAttrModExpired b/doc/lfun/NotifyTimedAttrModExpired
index f59a79a..09dc168 100644
--- a/doc/lfun/NotifyTimedAttrModExpired
+++ b/doc/lfun/NotifyTimedAttrModExpired
@@ -1,20 +1,38 @@
-NotifyTimedAttrModExpired
-FUNKTION:
-     void NotifyTimedAttrModExpired(string key)
 
-DEFINIERT IN:
-     Push-Methode in notify-Objekten.
+NotifyTimedAttrModExpired()
+***************************
 
-ARGUMENTE:
-     string key		- der geloeschte Modifier
 
-BESCHREIBUNG:
-     Wird aus dem Lebewesen aus aufgerufen, in dem der entsprechenden
-     Modifier soeben ungueltig geworden ist.     
+FUNKTION
+========
 
-SIEHE AUCH:
-     Properties: P_ATTRIBUTES, P_TIMED_ATTR_MOD
-     Methoden:	 SetTimedAttrModifier(L), DeleteTimedAttrModifier(L),
-		 QueryTimedAttrModifier(L)
+   void NotifyTimedAttrModExpired(string key)
+
+
+DEFINIERT IN
+============
+
+   Push-Methode in notify-Objekten.
+
+
+ARGUMENTE
+=========
+
+   string key         - der geloeschte Modifier
+
+
+BESCHREIBUNG
+============
+
+   Wird aus dem Lebewesen aus aufgerufen, in dem der entsprechenden
+   Modifier soeben ungueltig geworden ist.
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_ATTRIBUTES, P_TIMED_ATTR_MOD
+   Methoden:   SetTimedAttrModifier(L), DeleteTimedAttrModifier(L),
+               QueryTimedAttrModifier(L)
 
 27. Juli 2004 Gloinson
diff --git a/doc/lfun/NotifyXMAttrModLimitViolation b/doc/lfun/NotifyXMAttrModLimitViolation
index 44f39c0..f3c54a4 100644
--- a/doc/lfun/NotifyXMAttrModLimitViolation
+++ b/doc/lfun/NotifyXMAttrModLimitViolation
@@ -1,20 +1,35 @@
+
 NotifyXMAttrModLimitViolation()
-FUNKTION:
-      void NotifyXMAttrModLimitViolation()
+*******************************
 
-DEFINIERT IN:
-     /std/thing/restrictions.c
-
-BESCHREIBUNG:
-     Wird gerufen wenn die Summe der in P_X_ATTR_MOD oder P_X_ATTR_MOD
-     angegebenen Modifikatoren die Summe aller Modifikatoren im Spieler 
-     ueber den zugelassenen Grenzwert hebt und somit nicht mehr in die
-     Berechnung eingeht.
-     
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
-     P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
-13.Jun.2004, Muadib
\ No newline at end of file
+FUNKTION
+========
+
+   void NotifyXMAttrModLimitViolation()
+
+
+DEFINIERT IN
+============
+
+   /std/thing/restrictions.c
+
+
+BESCHREIBUNG
+============
+
+   Wird gerufen wenn die Summe der in P_X_ATTR_MOD oder P_X_ATTR_MOD
+   angegebenen Modifikatoren die Summe aller Modifikatoren im Spieler
+   ueber den zugelassenen Grenzwert hebt und somit nicht mehr in die
+   Berechnung eingeht.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/lfun/Pacify b/doc/lfun/Pacify
index b90ed83..feca7bf 100644
--- a/doc/lfun/Pacify
+++ b/doc/lfun/Pacify
@@ -1,113 +1,146 @@
+
+Pacify()
+********
+
+
 FUNKTION
-	public int Pacify(object caster)
+========
+
+   public int Pacify(object caster)
+
 
 DEFINIERT IN
-	/std/living/combat.c
+============
+
+   /std/living/combat.c
+
 
 BESCHREIBUNG
-	Diese Funktion versucht, ein Lebewesen zu befrieden.
-  Will eine Gilde ein Lebewesen befrieden, muss sie hierfuer diese Funktion
-  in dem Lebewesen aufrufen.
+============
 
-  Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in einem
-  Lebewesen realisiert werden.
+         Diese Funktion versucht, ein Lebewesen zu befrieden.
+   Will eine Gilde ein Lebewesen befrieden, muss sie hierfuer diese Funktion
+   in dem Lebewesen aufrufen.
 
-	Standardmaessig funktioniert die Funktion wie folgt:
-  * Kommt der Versuch vom Spellcaster selbst, ist er immer erfolgreich.
-  * Kommt der Versuch von einem Teamkollegen, ist er immer erfolgreich.
-  * Hat das Lebewesen keine Gegner, ist der Versuch immer erfolglos.
-  In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.
-  
-  In anderen Faellen wird die in P_PEACE_HISTORY fuer die Gilde des Casters
-  abgelegte Zahl erfolgreicher Befriedungen (ANZ), die Intelligenz des
-  Casters (INT_CASTER) und die Intelligenz des Lebenwesens selber (INT_ME)
-  ermittelt.
-  Anschliessend wird eine Wahrscheinlichkeit w ausgerechnet:
-  
-    w = (INT_CASTER + 10 - ANZ*4) / (INT_ME + 10)
-  
-  Hierbei gibt w die Chance auf eine erfolgreiche Befriedung an. Mittels einer
-  Zufallszahl wird bestimmt, ob der aktuelle Versuch erfolgreich ist. Falls
-  ja, wird der Zaehler fuer die Gilde des Casters in P_PEACE_HISTORY erhoeht.
+   Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in einem
+   Lebewesen realisiert werden.
 
-  Je oefter ein Lebewesen als von einer Gilde schon befriedet wurde, desto
-  unwahrscheinlicher, dass es erneut darauf 'hereinfaellt'.
+         Standardmaessig funktioniert die Funktion wie folgt:
+   * Kommt der Versuch vom Spellcaster selbst, ist er immer erfolgreich.
+   * Kommt der Versuch von einem Teamkollegen, ist er immer erfolgreich.
+   * Hat das Lebewesen keine Gegner, ist der Versuch immer erfolglos.
+   In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.
 
-BEMERKUNGEN:
-  *	Die Funktion kann auch ueberschrieben werden, um ein vom Magier
-    gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen von
-    Befriedungen sollte dabei aber die Ausnahme sein!
-  * Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die Reduktion
-    der Erfolgszaehler. Ueberschreibt man sie ohne das geerbte Pacify()
-    zu nutzen, wird P_PEACE_HISTORY nicht mehr verwaltet.
 
-RUECKGABEWERTE:
-    1 - das Lebewesen wurde erfolgreich befriedet..
-    0 - der Befriedeversuch ist gescheitert.
-    
-BEISPIELE:
-    Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
-    gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
-    (in Abhaengigkeit von eigener Intelligenz und vergangener erfolgreicher
-     Versuche)
- INT_ME  Erfolgswahrscheinlichkeiten je nach Anzahl erfolgreicher Versuche
-              1       2       3       4       5       6       7       8
-      0     280     240     200     160     120      80      40       0
-      2  233,33     200  166,67  133,33     100   66,67   33,33       0
-      4     200  171,43  142,86  114,29   85,71   57,14   28,57       0
-      6     175     150     125     100      75      50      25       0
-      8  155,56  133,33  111,11   88,89   66,67   44,44   22,22       0
-     10     140     120     100      80      60      40      20       0
-     12  127,27  109,09   90,91   72,73   54,55   36,36   18,18       0
-     14  116,67     100   83,33   66,67      50   33,33   16,67       0
-     16  107,69   92,31   76,92   61,54   46,15   30,77   15,38       0
-     18     100   85,71   71,43   57,14   42,86   28,57   14,29       0
-     20   93,33      80   66,67   53,33      40   26,67   13,33       0
-     22    87,5      75    62,5      50    37,5      25    12,5       0
-     24   82,35   70,59   58,82   47,06   35,29   23,53   11,76       0
-     26   77,78   66,67   55,56   44,44   33,33   22,22   11,11       0
-     28   73,68   63,16   52,63   42,11   31,58   21,05   10,53       0
-     30      70      60      50      40      30      20      10       0
-     32   66,67   57,14   47,62    38,1   28,57   19,05    9,52       0
-     34   63,64   54,55   45,45   36,36   27,27   18,18    9,09       0
-     35   62,22   53,33   44,44   35,56   26,67   17,78    8,89       0
-     36   60,87   52,17   43,48   34,78   26,09   17,39     8,7       0
-     38   58,33      50   41,67   33,33      25   16,67    8,33       0
-     40      56      48      40      32      24      16       8       0
-     42   53,85   46,15   38,46   30,77   23,08   15,38    7,69       0
-     44   51,85   44,44   37,04   29,63   22,22   14,81    7,41       0
-     46      50   42,86   35,71   28,57   21,43   14,29    7,14       0
-     48   48,28   41,38   34,48   27,59   20,69   13,79     6,9       0
-     50   46,67      40   33,33   26,67      20   13,33    6,67       0
-     52   45,16   38,71   32,26   25,81   19,35    12,9    6,45       0
-     54   43,75    37,5   31,25      25   18,75    12,5    6,25       0
-     56   42,42   36,36    30,3   24,24   18,18   12,12    6,06       0
-     58   41,18   35,29   29,41   23,53   17,65   11,76    5,88       0
-     60      40   34,29   28,57   22,86   17,14   11,43    5,71       0
-     62   38,89   33,33   27,78   22,22   16,67   11,11    5,56       0
-     64   37,84   32,43   27,03   21,62   16,22   10,81    5,41       0
-     66   36,84   31,58   26,32   21,05   15,79   10,53    5,26       0
-     68    35,9   30,77   25,64   20,51   15,38   10,26    5,13       0
-     70      35      30      25      20      15      10       5       0
-     72   34,15   29,27   24,39   19,51   14,63    9,76    4,88       0
-     74   33,33   28,57   23,81   19,05   14,29    9,52    4,76       0
-     76   32,56   27,91   23,26    18,6   13,95     9,3    4,65       0
-     78   31,82   27,27   22,73   18,18   13,64    9,09    4,55       0
-     80   31,11   26,67   22,22   17,78   13,33    8,89    4,44       0
-     82   30,43   26,09   21,74   17,39   13,04     8,7    4,35       0
-     84   29,79   25,53   21,28   17,02   12,77    8,51    4,26       0
-     86   29,17      25   20,83   16,67    12,5    8,33    4,17       0
-     88   28,57   24,49   20,41   16,33   12,24    8,16    4,08       0
-     90      28      24      20      16      12       8       4       0
-     92   27,45   23,53   19,61   15,69   11,76    7,84    3,92       0
-     94   26,92   23,08   19,23   15,38   11,54    7,69    3,85       0
-     96   26,42   22,64   18,87   15,09   11,32    7,55    3,77       0
-     98   25,93   22,22   18,52   14,81   11,11    7,41     3,7       0
-    100   25,45   21,82   18,18   14,55   10,91    7,27    3,64       0
+
+   In anderen Faellen wird die in P_PEACE_HISTORY fuer die Gilde des Casters
+   abgelegte Zahl erfolgreicher Befriedungen (ANZ), die Intelligenz des
+   Casters (INT_CASTER) und die Intelligenz des Lebenwesens selber (INT_ME)
+   ermittelt.
+   Anschliessend wird eine Wahrscheinlichkeit w ausgerechnet:
+
+
+
+     w = (INT_CASTER + 10 - ANZ*4) / (INT_ME + 10)
+
+
+
+   Hierbei gibt w die Chance auf eine erfolgreiche Befriedung an. Mittels einer
+   Zufallszahl wird bestimmt, ob der aktuelle Versuch erfolgreich ist. Falls
+   ja, wird der Zaehler fuer die Gilde des Casters in P_PEACE_HISTORY erhoeht.
+
+   Je oefter ein Lebewesen als von einer Gilde schon befriedet wurde, desto
+   unwahrscheinlicher, dass es erneut darauf 'hereinfaellt'.
+
+
+BEMERKUNGEN
+===========
+
+   *     Die Funktion kann auch ueberschrieben werden, um ein vom Magier
+     gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen von
+     Befriedungen sollte dabei aber die Ausnahme sein!
+   * Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die Reduktion
+     der Erfolgszaehler. Ueberschreibt man sie ohne das geerbte Pacify()
+     zu nutzen, wird P_PEACE_HISTORY nicht mehr verwaltet.
+
+
+RUECKGABEWERTE
+==============
+
+   1 - das Lebewesen wurde erfolgreich befriedet..
+   0 - der Befriedeversuch ist gescheitert.
+
+
+BEISPIELE
+=========
+
+      Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
+      gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
+      (in Abhaengigkeit von eigener Intelligenz und vergangener erfolgreicher
+       Versuche)
+   INT_ME  Erfolgswahrscheinlichkeiten je nach Anzahl erfolgreicher Versuche
+                1       2       3       4       5       6       7       8
+        0     280     240     200     160     120      80      40       0
+        2  233,33     200  166,67  133,33     100   66,67   33,33       0
+        4     200  171,43  142,86  114,29   85,71   57,14   28,57       0
+        6     175     150     125     100      75      50      25       0
+        8  155,56  133,33  111,11   88,89   66,67   44,44   22,22       0
+       10     140     120     100      80      60      40      20       0
+       12  127,27  109,09   90,91   72,73   54,55   36,36   18,18       0
+       14  116,67     100   83,33   66,67      50   33,33   16,67       0
+       16  107,69   92,31   76,92   61,54   46,15   30,77   15,38       0
+       18     100   85,71   71,43   57,14   42,86   28,57   14,29       0
+       20   93,33      80   66,67   53,33      40   26,67   13,33       0
+       22    87,5      75    62,5      50    37,5      25    12,5       0
+       24   82,35   70,59   58,82   47,06   35,29   23,53   11,76       0
+       26   77,78   66,67   55,56   44,44   33,33   22,22   11,11       0
+       28   73,68   63,16   52,63   42,11   31,58   21,05   10,53       0
+       30      70      60      50      40      30      20      10       0
+       32   66,67   57,14   47,62    38,1   28,57   19,05    9,52       0
+       34   63,64   54,55   45,45   36,36   27,27   18,18    9,09       0
+       35   62,22   53,33   44,44   35,56   26,67   17,78    8,89       0
+       36   60,87   52,17   43,48   34,78   26,09   17,39     8,7       0
+       38   58,33      50   41,67   33,33      25   16,67    8,33       0
+       40      56      48      40      32      24      16       8       0
+       42   53,85   46,15   38,46   30,77   23,08   15,38    7,69       0
+       44   51,85   44,44   37,04   29,63   22,22   14,81    7,41       0
+       46      50   42,86   35,71   28,57   21,43   14,29    7,14       0
+       48   48,28   41,38   34,48   27,59   20,69   13,79     6,9       0
+       50   46,67      40   33,33   26,67      20   13,33    6,67       0
+       52   45,16   38,71   32,26   25,81   19,35    12,9    6,45       0
+       54   43,75    37,5   31,25      25   18,75    12,5    6,25       0
+       56   42,42   36,36    30,3   24,24   18,18   12,12    6,06       0
+       58   41,18   35,29   29,41   23,53   17,65   11,76    5,88       0
+       60      40   34,29   28,57   22,86   17,14   11,43    5,71       0
+       62   38,89   33,33   27,78   22,22   16,67   11,11    5,56       0
+       64   37,84   32,43   27,03   21,62   16,22   10,81    5,41       0
+       66   36,84   31,58   26,32   21,05   15,79   10,53    5,26       0
+       68    35,9   30,77   25,64   20,51   15,38   10,26    5,13       0
+       70      35      30      25      20      15      10       5       0
+       72   34,15   29,27   24,39   19,51   14,63    9,76    4,88       0
+       74   33,33   28,57   23,81   19,05   14,29    9,52    4,76       0
+       76   32,56   27,91   23,26    18,6   13,95     9,3    4,65       0
+       78   31,82   27,27   22,73   18,18   13,64    9,09    4,55       0
+       80   31,11   26,67   22,22   17,78   13,33    8,89    4,44       0
+       82   30,43   26,09   21,74   17,39   13,04     8,7    4,35       0
+       84   29,79   25,53   21,28   17,02   12,77    8,51    4,26       0
+       86   29,17      25   20,83   16,67    12,5    8,33    4,17       0
+       88   28,57   24,49   20,41   16,33   12,24    8,16    4,08       0
+       90      28      24      20      16      12       8       4       0
+       92   27,45   23,53   19,61   15,69   11,76    7,84    3,92       0
+       94   26,92   23,08   19,23   15,38   11,54    7,69    3,85       0
+       96   26,42   22,64   18,87   15,09   11,32    7,55    3,77       0
+       98   25,93   22,22   18,52   14,81   11,11    7,41     3,7       0
+      100   25,45   21,82   18,18   14,55   10,91    7,27    3,64       0
+
 
 SIEHE AUCH
-        P_ACCEPT_PEACE, P_PEACE_HISTORY
+==========
+
+   P_ACCEPT_PEACE, P_PEACE_HISTORY
+
 
 LETZTE AENDERUNG
-07.06.2008, Zesstra
+================
 
+07.06.2008, Zesstra
diff --git a/doc/lfun/PayIn b/doc/lfun/PayIn
index 0714c53..35616de 100644
--- a/doc/lfun/PayIn
+++ b/doc/lfun/PayIn
@@ -1,47 +1,73 @@
+
 PayIn()
-FUNKTION:
-     varargs void PayIn(int amount, int percent);
+*******
 
-DEFINIERT IN:
-     /p/daemon/zentralbank.c
 
-ARGUMENTE:
-     int amount	-	einzuzahlender Betrag
-     int percent -	Bewertungsprozentsatz
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Es wird Brutto amount Geld in die Bank eingezahlt. Der Prozentsatz legt
-     fest, wieviel tatsaechlich gutgeschrieben wird:
-     Gutschrift = amount*percent/100
+   varargs void PayIn(int amount, int percent);
 
-     Wird percent nicht angegeben, dann wird der derzeitige Bankbewertungs-
-     massstab fuer Geld angenommen.
 
-BEISPIELE:
-     #include <bank.h>
-     ...
-     AddCmd("spende",#'action_spende,
-	    "Was willst du spenden?");
-     ...
-     int action_spende(string str, extra *o) {
-      int i;
-      if(sscanf("%d muenze",i)==1 && i>0)
-       if(this_player()->QueryMoney(i) && this_player()->AddMoney(-i)) {
-        write("Du spendest "+i+" Muenzen.\n");
-	say(this_player()->Name(WER)+" spendet "+i+" Muenzen.\n");
-	ZENTRALBANK->PayIn(i);
-	
-       } else
-        write("Soviel hast du nicht dabei!\n");
-      ...
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
-     an anderen Stellen Geld erzeugt wird.
+   /p/daemon/zentralbank.c
 
-SIEHE AUCH:
-     Geldhandling:	AddMoney(L), QueryMoney(L)
-     Zentralbank:	WithDraw(L), _query_current_money(L)
-     Sonstiges:		/items/money.c, /sys/bank.h
+
+ARGUMENTE
+=========
+
+   int amount -       einzuzahlender Betrag
+   int percent -      Bewertungsprozentsatz
+
+
+BESCHREIBUNG
+============
+
+   Es wird Brutto amount Geld in die Bank eingezahlt. Der Prozentsatz legt
+   fest, wieviel tatsaechlich gutgeschrieben wird:
+   Gutschrift = amount*percent/100
+
+   Wird percent nicht angegeben, dann wird der derzeitige Bankbewertungs-
+   massstab fuer Geld angenommen.
+
+
+BEISPIELE
+=========
+
+   #include <bank.h>
+   ...
+   AddCmd("spende",#'action_spende,
+          "Was willst du spenden?");
+   ...
+   int action_spende(string str, extra *o) {
+    int i;
+    if(sscanf("%d muenze",i)==1 && i>0)
+     if(this_player()->QueryMoney(i) && this_player()->AddMoney(-i)) {
+      write("Du spendest "+i+" Muenzen.\n");
+      say(this_player()->Name(WER)+" spendet "+i+" Muenzen.\n");
+      ZENTRALBANK->PayIn(i);
+
+
+
+     } else
+      write("Soviel hast du nicht dabei!\n");
+    ...
+
+
+BEMERKUNGEN
+===========
+
+   Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
+   an anderen Stellen Geld erzeugt wird.
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L), QueryMoney(L)
+   Zentralbank:       WithDraw(L), _query_current_money(L)
+   Sonstiges:         /items/money.c, /sys/bank.h
 
 27. Apr 2004 Gloinson
diff --git a/doc/lfun/PlayerQuit b/doc/lfun/PlayerQuit
index 22e3d6e..0eb8fbf 100644
--- a/doc/lfun/PlayerQuit
+++ b/doc/lfun/PlayerQuit
@@ -1,20 +1,37 @@
+
 PlayerQuit()
+************
 
-FUNKTION:
-    void PlayerQuit(object pl);
 
-GERUFEN VON:
-    /std/player/base.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object pl
-      Spieler, der Verbindung beendet
+   void PlayerQuit(object pl);
 
-BESCHREIBUNG:
-    Wird im environment() gerufen, wenn der Spieler das MUD mit "ende"
-    verlaesst.
 
-SIEHE AUCH:
-    BecomesNetAlive(), BecomesNetDead()
-    
-24. Aug 2011 Gloinson
\ No newline at end of file
+GERUFEN VON
+===========
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   object pl
+     Spieler, der Verbindung beendet
+
+
+BESCHREIBUNG
+============
+
+   Wird im environment() gerufen, wenn der Spieler das MUD mit "ende"
+   verlaesst.
+
+
+SIEHE AUCH
+==========
+
+   BecomesNetAlive(), BecomesNetDead()
+
+24. Aug 2011 Gloinson
diff --git a/doc/lfun/PresentEnemies b/doc/lfun/PresentEnemies
index 9c31efe..12ac650 100644
--- a/doc/lfun/PresentEnemies
+++ b/doc/lfun/PresentEnemies
@@ -1,71 +1,95 @@
-FUNKTION:
-	object *PresentEnemies();
 
-DEFINIERT IN:
-	/std/living/combat.c
+PresentEnemies()
+****************
 
-ARGUMENTE:
-	keine
 
-RUeCKGABEWERT:
-	anwesende Feinde
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Diese Funktion liefert genau die Feinde zurueck, die sich derzeit im
-	selben Raum befinden. Die Feinde unterliegen hierbei noch gewissen
-	Einschraenkungen:
-	  (1) Sie duerfen als NPC nicht gestorben sein, das heisst, sie
-	      muessen als Objekt noch existieren.
-	  (2) Sie duerfen als Spieler nicht gestorben sein, das heisst, sie
-	      duerfen keine Geister sein (Property P_GHOST nicht gesetzt).
-	  (3) Sie muessen angreifbar sein, das heisst, die Property
-	      P_NO_ATTACK darf nicht gesetzt sein.
-	Wird eine dieser Bedingungen verletzt, so wird der Gegner aus der
-	internen Gegnerliste entfernt. Zusaetzlich gilt:
-	  Netztote werden nur als Gegner erkannt, wenn keine anderen Gegner
-	  zur Verfuegung stehen.
+   object *PresentEnemies();
 
-BEISPIEL:
-	Im Folgenden erblinden alle Gegner im Raum:
-	  string blindThemAll()
-	  { ob*livList;
-	    if(!livList=PresentEnemies())
-	      return break_string(
-	 "Mist...keiner da, der blind werden moechte.",77,
-	 Name(WER)+" grummelt: ");
-	    for(i=sizeof(livList);i--;)
-	    { if(livList[i]->QueryProp(P_BLIND))
-	      { tell_object(this_object(),break_string(
-	 livList[i]->Name(WER)+" ist schon blind.",77));
-	        continue;
-	      }
-	      tell_object(this_object(),break_string(
-	 "Du kratzt "+livList[i]->name(WEM)+" die Augen aus.",77));
-	      tell_object(livList[i],break_string(
-	 Name(WER)+" kratzt Dir die Augen aus!",77));
-	      tell_room(environment(this_object()),break_string(
-	 Name(WER)+" kratzt "+livList[i]->name(WEM)
-	+" die Augen aus.",77),({this_object(),livList[i]}));
-	      livList[i]->SetProp(P_BLIND,1);
-	    }
-	    return"";
-	  }
-	Aufgerufen wird das ganze am Besten in einem Chat:
-	  void create()
-	  { ::create();
-	    ...
-	    SetProp(P_CHAT_CHANCE,10);
-	    SetChats(20,({break_string(
-	 "Nicht angreifen, sonst wirst Du noch blind!",77,
-	 Name(WER)+" bruellt: "),
-	                  "@@blindThemAll@@"}));
-	  }
-	Natuerlich sind auch noch mehr Funktionen und Meldungen als Chats
-	moeglich: Die zwei im Beispiel sind im Normalfall etwas wenig.
 
-SIEHE AUCH:
-	SelectEnemy(), QueryEnemies(), IsEnemy(), P_GHOST, P_NO_ATTACK,
-	SetChats, P_CHAT_CHANCE
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   anwesende Feinde
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert genau die Feinde zurueck, die sich derzeit im
+   selben Raum befinden. Die Feinde unterliegen hierbei noch gewissen
+   Einschraenkungen:
+     (1) Sie duerfen als NPC nicht gestorben sein, das heisst, sie
+         muessen als Objekt noch existieren.
+     (2) Sie duerfen als Spieler nicht gestorben sein, das heisst, sie
+         duerfen keine Geister sein (Property P_GHOST nicht gesetzt).
+     (3) Sie muessen angreifbar sein, das heisst, die Property
+         P_NO_ATTACK darf nicht gesetzt sein.
+   Wird eine dieser Bedingungen verletzt, so wird der Gegner aus der
+   internen Gegnerliste entfernt. Zusaetzlich gilt:
+     Netztote werden nur als Gegner erkannt, wenn keine anderen Gegner
+     zur Verfuegung stehen.
+
+
+BEISPIEL
+========
+
+   Im Folgenden erblinden alle Gegner im Raum:
+     string blindThemAll()
+     { ob*livList;
+       if(!livList=PresentEnemies())
+         return break_string(
+    "Mist...keiner da, der blind werden moechte.",77,
+    Name(WER)+" grummelt: ");
+       for(i=sizeof(livList);i--;)
+       { if(livList[i]->QueryProp(P_BLIND))
+         { tell_object(this_object(),break_string(
+    livList[i]->Name(WER)+" ist schon blind.",77));
+           continue;
+         }
+         tell_object(this_object(),break_string(
+    "Du kratzt "+livList[i]->name(WEM)+" die Augen aus.",77));
+         tell_object(livList[i],break_string(
+    Name(WER)+" kratzt Dir die Augen aus!",77));
+         tell_room(environment(this_object()),break_string(
+    Name(WER)+" kratzt "+livList[i]->name(WEM)
+   +" die Augen aus.",77),({this_object(),livList[i]}));
+         livList[i]->SetProp(P_BLIND,1);
+       }
+       return"";
+     }
+   Aufgerufen wird das ganze am Besten in einem Chat:
+     void create()
+     { ::create();
+       ...
+       SetProp(P_CHAT_CHANCE,10);
+       SetChats(20,({break_string(
+    "Nicht angreifen, sonst wirst Du noch blind!",77,
+    Name(WER)+" bruellt: "),
+                     "@@blindThemAll@@"}));
+     }
+   Natuerlich sind auch noch mehr Funktionen und Meldungen als Chats
+   moeglich: Die zwei im Beispiel sind im Normalfall etwas wenig.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryEnemies(), IsEnemy(), P_GHOST, P_NO_ATTACK,
+   SetChats, P_CHAT_CHANCE
+
 Last modified: Thu May 27 15:01:48 1999 by Patryn
diff --git a/doc/lfun/PresentEnemyRows b/doc/lfun/PresentEnemyRows
index 339642c..003d6c3 100644
--- a/doc/lfun/PresentEnemyRows
+++ b/doc/lfun/PresentEnemyRows
@@ -1,40 +1,60 @@
 
 PresentEnemyRows()
+******************
 
 
-FUNKTION:
-        varargs mixed *PresentEnemyRows(object *here)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   varargs mixed *PresentEnemyRows(object *here)
 
-ARGUMENTE:
-        Rueckgabewert von PresentEnemies kann uebergeben werden.
 
-BESCHREIBUNG:
-        Ergibt die feindlichen Reihen.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Ein Array, bestehend aus MAX_TEAMROWS Arrays mit den Objekten
-        der anwesenden Feinde.
+   /std/living/team.c
 
-BEMERKUNGEN:
-        Jede Reihe ist Summe der entsprechenden Reihen der
-        anwesenden Teams.
-        Feinde, die in keinem Team sind, stehen im ersten Array.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentTeamPosition,
-                    SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   Rueckgabewert von PresentEnemies kann uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Ergibt die feindlichen Reihen.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Array, bestehend aus MAX_TEAMROWS Arrays mit den Objekten
+   der anwesenden Feinde.
+
+
+BEMERKUNGEN
+===========
+
+   Jede Reihe ist Summe der entsprechenden Reihen der
+   anwesenden Teams.
+   Feinde, die in keinem Team sind, stehen im ersten Array.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentTeamPosition,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/PresentPosition b/doc/lfun/PresentPosition
index ea765cf..c94d129 100644
--- a/doc/lfun/PresentPosition
+++ b/doc/lfun/PresentPosition
@@ -1,38 +1,58 @@
 
 PresentPosition()
+*****************
 
 
-FUNKTION:
-        varargs int PresentPosition(mixed pmap)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   varargs int PresentPosition(mixed pmap)
 
-ARGUMENTE:
-        Rueckgabewert von PresentTeamRows() oder PresentTeamPositions()
-        kann uebergeben werden.
 
-BESCHREIBUNG:
-        Ergibt die Nummer der Reihe, in der der Spieler gerade steht.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Reihennummer im Bereich von 1 bis TEAM_MAXROWS.
+   /std/living/team.c
 
-BEMERKUNGEN:
-        Ist ein Spieler in keinem Team, so steht er automatisch in Reihe 1.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentRows, PresentEnemyRows, PresentTeamPosition,
-                    SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   Rueckgabewert von PresentTeamRows() oder PresentTeamPositions()
+   kann uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Ergibt die Nummer der Reihe, in der der Spieler gerade steht.
+
+
+RUECKGABEWERT
+=============
+
+   Reihennummer im Bereich von 1 bis TEAM_MAXROWS.
+
+
+BEMERKUNGEN
+===========
+
+   Ist ein Spieler in keinem Team, so steht er automatisch in Reihe 1.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentRows, PresentEnemyRows, PresentTeamPosition,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/PresentRows b/doc/lfun/PresentRows
index e8c854a..37e3ab8 100644
--- a/doc/lfun/PresentRows
+++ b/doc/lfun/PresentRows
@@ -1,88 +1,120 @@
 
 PresentRows()
+*************
 
 
-FUNKTION:
-    mixed *PresentRows(object env);
+FUNKTION
+========
 
-DEFINIERT IN:
-    TEAM_OBJECT (s. <living/team.h>)
+   mixed *PresentRows(object env);
 
-ARGUMENTE:
-    object env
-        Das Environment des gewuenschten Objektes.
 
-BESCHREIBUNG:
-    Mit dieser Funktion bekommt man die aktuellen Teamreihen, die im Argument
-    env anwesend sind, des Teams zurueckgegeben. Ist env kein Objekt, so
-    wird environment(this_player()) als solches angenommen.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-    Es wird ein mixed-Array zurueckgegeben, dabei sind die einzelnen Reihen
-    selbst wiederum Arrays mit den Spielerobjekten.
+   TEAM_OBJECT (s. <living/team.h>)
 
-BEISPIEL:
 
-    Ein NPC im Kampf laesst eine Feuerwalze auf ein Team los, welche aber nur
-    Spieler in der ersten und zweiten Teamreihe Schaden zufuegen soll.
+ARGUMENTE
+=========
 
-    void Attack( object enemy )
-    {
-     ...
+   object env
+       Das Environment des gewuenschten Objektes.
 
-     object team = enemy->QueryProp(P_TEAM);
 
-     if ( objectp(team) )
-      {
-       mixed teamrows = team->PresentRows(enemy);
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion bekommt man die aktuellen Teamreihen, die im Argument
+   env anwesend sind, des Teams zurueckgegeben. Ist env kein Objekt, so
+   wird environment(this_player()) als solches angenommen.
+
+
+RUECKGABEWERT
+=============
+
+   Es wird ein mixed-Array zurueckgegeben, dabei sind die einzelnen Reihen
+   selbst wiederum Arrays mit den Spielerobjekten.
+
+
+BEISPIEL
+========
+
+   Ein NPC im Kampf laesst eine Feuerwalze auf ein Team los, welche aber nur
+   Spieler in der ersten und zweiten Teamreihe Schaden zufuegen soll.
+
+   void Attack( object enemy )
+   {
+    ...
+
+    object team = enemy->QueryProp(P_TEAM);
+
+    if ( objectp(team) )
+     {
+      mixed teamrows = team->PresentRows(enemy);
 
 //  Inhalt von "teamrows" zu diesem Zeitpunkt:
 
 //  ({ ({[/dwarf:hauweg]}),({}),({[/elf:spitzohr]}),({}),({}),({}) })
 
-//  In der Umgebung von Zwerg Hauweg steht also noch Elf Spitzohr, und zwar
-//  in der dritten Teamreihe (der hat Glueck gehabt).
-//  Wenn dem Team noch mehr Spieler angehoeren, befinden sie sich gerade
-//  nicht in der Umgebung (sprich im selben Raum) wie Hauweg.
+//  In der Umgebung von Zwerg Hauweg steht also noch Elf Spitzohr, und
+zwar //  in der dritten Teamreihe (der hat Glueck gehabt). //  Wenn
+dem Team noch mehr Spieler angehoeren, befinden sie sich gerade //
+nicht in der Umgebung (sprich im selben Raum) wie Hauweg.
 
-       foreach ( i : 2 )
-        {
-         foreach ( object pl : teamrows[i] )
-          {
-           tell_object(pl,"Der Feuerteufel laesst eine Feuerwalze auf Dich "
-               "und Dein Team los.\n");
+            foreach ( i : 2 )
+               {
+                  foreach ( object pl : teamrows[i] )
+                     {
+                        tell_object(pl,"Der Feuerteufel laesst eine
+                        Feuerwalze auf Dich "
+                           "und Dein Team los.n");
 
-           pl->Defend(200+random(200),({DT_FIRE}),([SP_SHOW_DAMAGE:1]),TO);
-          }
-        }
-      }
-     else
-      {
-       tell_object(enemy,"Der Feuerteufel laesst eine Feuerwalze auf Dich "
-           "los.\n");
+                        pl->Defend(200+random(200),({DT_FIRE}),([SP_S
+                        HOW_DAMAGE:1]),TO);
 
-       enemy->Defend(200+random(200),({DT_FIRE}),([SP_SHOW_DAMAGE:1]),TO);
-      }
+                     }
 
-     ...
-    }
+               }
 
-BEMERKUNG:
-    Man beachte, dass das erste Argument (also Argument 0) die erste
-    Teamreihe ist.
+         }
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentEnemyRows, PresentTeamPosition,
-                    SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+      else
+         {
+            tell_object(enemy,"Der Feuerteufel laesst eine Feuerwalze
+            auf Dich "
+               "los.n");
 
-----------------------------------------------------------------------------
+            enemy->Defend(200+random(200),({DT_FIRE}),([SP_SHOW_DAMAG
+            E:1]),TO);
+
+         }
+
+      ...
+
+   }
+
+
+BEMERKUNG
+=========
+
+   Man beachte, dass das erste Argument (also Argument 0) die erste
+   Teamreihe ist.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentEnemyRows, PresentTeamPosition,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/PresentTeamPositions b/doc/lfun/PresentTeamPositions
index 76adc17..3af354b 100644
--- a/doc/lfun/PresentTeamPositions
+++ b/doc/lfun/PresentTeamPositions
@@ -1,40 +1,60 @@
 
 PresentTeamPositions()
+**********************
 
 
-FUNKTION:
-        varargs mapping PresentTeamPositions(mixed pmap)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   varargs mapping PresentTeamPositions(mixed pmap)
 
-ARGUMENTE:
-        Rueckgabewert von PresentTeamRows() kann uebergeben werden.
 
-BESCHREIBUNG:
-        Ermittelt die Reihennummern aller anwesender Teammitglieder.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Ein Mapping mit den Reihennummern (von 1 bis MAX_TEAMROWS)
-        der anwesenden Teammitglieder.
+   /std/living/team.c
 
-BEMERKUNGEN:
-        Kann auch zur Konvertierung anderer Kampfreihen-Arrays in
-        ein Positions-Mapping verwendet werden.
-        Ist der Spieler in keinem Team, so steht er in Reihe 1.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   Rueckgabewert von PresentTeamRows() kann uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Ermittelt die Reihennummern aller anwesender Teammitglieder.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Mapping mit den Reihennummern (von 1 bis MAX_TEAMROWS)
+   der anwesenden Teammitglieder.
+
+
+BEMERKUNGEN
+===========
+
+   Kann auch zur Konvertierung anderer Kampfreihen-Arrays in
+   ein Positions-Mapping verwendet werden.
+   Ist der Spieler in keinem Team, so steht er in Reihe 1.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/PresentTeamRows b/doc/lfun/PresentTeamRows
index 38bfa7e..7875918 100644
--- a/doc/lfun/PresentTeamRows
+++ b/doc/lfun/PresentTeamRows
@@ -1,24 +1,47 @@
+
 PresentTeamRows()
+*****************
 
-FUNKTION:
-	mixed *PresentTeamRows()
 
-DEFINIERT IN:
-	/std/living/team.c
+FUNKTION
+========
 
-ARGUMENTE:
-	keine
+   mixed *PresentTeamRows()
 
-BESCHREIBUNG:
-	Ergibt die Reihen mit den anwesenden Teammitgliedern.
 
-RUECKGABEWERT:
-	Ein Array bestehend aus MAX_TEAMROWS Arrays mit den Objekten
-        der anwesenden Teammitglieder.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-	Wenn der Spieler in keinem Team ist, enthaelt das erste Array
-	nur den Spieler und die anderen Arrays sind leer.
+   /std/living/team.c
 
-SIEHE AUCH:
-	teams
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Ergibt die Reihen mit den anwesenden Teammitgliedern.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Array bestehend aus MAX_TEAMROWS Arrays mit den Objekten
+   der anwesenden Teammitglieder.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn der Spieler in keinem Team ist, enthaelt das erste Array
+   nur den Spieler und die anderen Arrays sind leer.
+
+
+SIEHE AUCH
+==========
+
+   teams
diff --git a/doc/lfun/PreventFollow b/doc/lfun/PreventFollow
index 100f92d..c3de6b1 100644
--- a/doc/lfun/PreventFollow
+++ b/doc/lfun/PreventFollow
@@ -1,49 +1,72 @@
+
 PreventFollow()
+***************
 
-FUNKTION:
-  int PreventFollow(object dest)
 
-ARGUMENTE:
-  dest: Zielobjekt, in das der Verfolgte bewegt werden soll.
+FUNKTION
+========
 
-FUNKTION:
-  In jedem Verfolger, der mit AddPursuer in die Liste der Verfolger 
-  eingetragen wurde, wird vor dem Bewegen in das Zielobjekt die Funktion
-  PreventFollow mit dem Zielobjekt als Argument aufgerufen.
+   int PreventFollow(object dest)
 
-RUECKGABEWERT:
-  0: Verfolger darf in das Zielobjekt folgen
-  1: Verfolger darf in dieses Zielobjekt nicht folgen
-     (Verfolgung bleibt weiterhin aktiv)
-  2: Verfolger darf in dieses Zielobjekt nicht folgen
-     (Verfolgung wird abgebrochen und Verfolger aus der Verfolgerliste
-      ausgetragen)
 
-BEMERKUNG:
-  Durch PreventFollow kann der raeumliche Bereich, in dem verfolgt werden
-  darf, eingeschraenkt werden.
+ARGUMENTE
+=========
 
-BEISPIELE:
-  Man moechte, dass ein NPC auf einer Insel nicht mit dem Spieler in das
-  Boot steigt, um mit dem Spieler zusammen von der Insel herunterzukommen.
+   dest: Zielobjekt, in das der Verfolgte bewegt werden soll.
 
-  #define PATH(x) ("/d/.../.../mein/pfad/+(x)")                           
 
-  ...                                          
+FUNKTION
+========
 
-  int PreventFollow(object boot)                                           
-   {
-    if ( object_name(boot)[0..strlen(PATH("boot"))-1] == PATH("boot") )
-     return 1;
-   }                                                                         
+   In jedem Verfolger, der mit AddPursuer in die Liste der Verfolger
+   eingetragen wurde, wird vor dem Bewegen in das Zielobjekt die Funktion
+   PreventFollow mit dem Zielobjekt als Argument aufgerufen.
 
-  Diese Funktions-Definition ist sehr flexibel, denn sie erlaubt sowohl
-  spaetere Pfadanpassung als auch mehrere Boote.
-  Da ueber die Funktion strlen() nur bis zum letzten Buchstaben des    
-  angegebenen Strings getestet wird, wird also gleichzeitig auch auf          
-  boot[1], boot[2] usw. getestet.
 
-SIEHE AUCH:
-  "AddPursuer", "RemovePursuer"
-----------------------------------------------------------------------------
-Last modified: Tue Jun 10 13:59:30 2003 by Gabylon
\ No newline at end of file
+RUECKGABEWERT
+=============
+
+   0: Verfolger darf in das Zielobjekt folgen
+   1: Verfolger darf in dieses Zielobjekt nicht folgen
+      (Verfolgung bleibt weiterhin aktiv)
+   2: Verfolger darf in dieses Zielobjekt nicht folgen
+      (Verfolgung wird abgebrochen und Verfolger aus der Verfolgerliste
+       ausgetragen)
+
+
+BEMERKUNG
+=========
+
+   Durch PreventFollow kann der raeumliche Bereich, in dem verfolgt werden
+   darf, eingeschraenkt werden.
+
+
+BEISPIELE
+=========
+
+   Man moechte, dass ein NPC auf einer Insel nicht mit dem Spieler in das
+   Boot steigt, um mit dem Spieler zusammen von der Insel herunterzukommen.
+
+   #define PATH(x) ("/d/.../.../mein/pfad/+(x)")
+
+   ...
+
+   int PreventFollow(object boot)
+    {
+     if ( object_name(boot)[0..strlen(PATH("boot"))-1] == PATH("boot") )
+      return 1;
+    }
+
+   Diese Funktions-Definition ist sehr flexibel, denn sie erlaubt sowohl
+   spaetere Pfadanpassung als auch mehrere Boote.
+   Da ueber die Funktion strlen() nur bis zum letzten Buchstaben des
+   angegebenen Strings getestet wird, wird also gleichzeitig auch auf
+   boot[1], boot[2] usw. getestet.
+
+
+SIEHE AUCH
+==========
+
+   "AddPursuer", "RemovePursuer"
+
+Last modified: Tue Jun 10 13:59:30 2003 by Gabylon
diff --git a/doc/lfun/PreventInsert b/doc/lfun/PreventInsert
index 55c1533..3635142 100644
--- a/doc/lfun/PreventInsert
+++ b/doc/lfun/PreventInsert
@@ -1,46 +1,71 @@
+
 PreventInsert()
+***************
 
-FUNKTION:
-     int PreventInsert(object ob);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob
-          Das Objekt, das in den Behaelter eingefuegt werden soll.
+   int PreventInsert(object ob);
 
-BESCHREIBUNG:
-     Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
-     aufnehmen moechte oder nicht.
 
-RUeCKGABEWERT:
-     0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
-     zeigt an, dass das Objekt nicht aufgenommen werden soll.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
-     aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
-     bewegt, unabhaengig vom Rueckgabewert!
+   /std/container/restrictions.c
 
-BEISPIELE:
-     Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
-     man wie folgt vorgehen:
 
-     varargs int PreventInsert(object ob)
-     {
-       // Wenn es Geld ist, erheben wir sofort Einspruch
-       if (ob->id("geld"))
-         return 1;
-       // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
-       else
-         return ::PreventInsert(ob);
-     }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
-     PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
-     PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+   ob
+        Das Objekt, das in den Behaelter eingefuegt werden soll.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
+   aufnehmen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
+   zeigt an, dass das Objekt nicht aufgenommen werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
+   aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+BEISPIELE
+=========
+
+   Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
+   man wie folgt vorgehen:
+
+   varargs int PreventInsert(object ob)
+   {
+     // Wenn es Geld ist, erheben wir sofort Einspruch
+     if (ob->id("geld"))
+       return 1;
+     // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
+     else
+       return ::PreventInsert(ob);
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
 Last modified: Sat Dec 18 02:00:00 1999 by Tiamak
diff --git a/doc/lfun/PreventInsertLiving b/doc/lfun/PreventInsertLiving
index 78f431f..fbde29f 100644
--- a/doc/lfun/PreventInsertLiving
+++ b/doc/lfun/PreventInsertLiving
@@ -1,35 +1,56 @@
+
 PreventInsertLiving()
-
-FUNKTION:
-     int PreventInsertLiving(object ob);
-
-DEFINIERT IN:
-     /std/container/restrictions.c
-
-ARGUMENTE:
-     ob
-          Das Living, das in den Behaelter eingefuegt werden soll.
-
-BESCHREIBUNG:
-     Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
-     aufnehmen moechte oder nicht.
-
-RUeCKGABEWERT:
-     0, wenn das Living aufgenommen werden kann; ein Wert groesser als 0
-     zeigt an, dass das Living nicht aufgenommen werden soll.
-
-BEMERKUNGEN:
-     Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsertLiving() 
-     zwar aufgerufen, das Living wird jedoch auf jeden Fall in den Behaelter
-     bewegt, unabhaengig vom Rueckgabewert!
+*********************
 
 
-SIEHE AUCH:
-     PreventLeaveLiving(), /std/container/restrictions.c,
-     PreventMove(), PreventInsert(), PreventLeave(),
-     NotifyMove(), NotifyInsert(), NotifyLeave(), NotifyRemove(),
-     move(), init(), exit(),
-     InitAttack(), ExitAttack()
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   int PreventInsertLiving(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Living, das in den Behaelter eingefuegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
+   aufnehmen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Living aufgenommen werden kann; ein Wert groesser als 0
+   zeigt an, dass das Living nicht aufgenommen werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsertLiving()
+   zwar aufgerufen, das Living wird jedoch auf jeden Fall in den Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+SIEHE AUCH
+==========
+
+   PreventLeaveLiving(), /std/container/restrictions.c,
+   PreventMove(), PreventInsert(), PreventLeave(),
+   NotifyMove(), NotifyInsert(), NotifyLeave(), NotifyRemove(),
+   move(), init(), exit(),
+   InitAttack(), ExitAttack()
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/PreventLeave b/doc/lfun/PreventLeave
index 85d46a3..24c33d2 100644
--- a/doc/lfun/PreventLeave
+++ b/doc/lfun/PreventLeave
@@ -1,35 +1,57 @@
+
 PreventLeave()
+**************
 
-FUNKTION:
-     int PreventLeave(object ob, mixed dest);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob
-          Das Objekt, das aus dem Behaelter genommen werden soll.
-     dest 
-          Das Ziel in das das Objekt ob bewegt werden soll.
+   int PreventLeave(object ob, mixed dest);
 
-BESCHREIBUNG:
-     Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
-     sich bewegen lassen moechte oder nicht.
 
-RUeCKGABEWERT:
-     0, wenn das Objekt bewegt werden kann; ein Wert groesser als 0
-     zeigt an, dass das Objekt nicht bewegt werden soll.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
-     aufgerufen, das Objekt wird jedoch auf jeden Fall aus dem Behaelter
-     bewegt, unabhaengig vom Rueckgabewert!
+   /std/container/restrictions.c
 
-SIEHE AUCH:
-     PreventInsert(), NotifyInsert(), NotifyLeave(),
-     MayAddWeight(), move(), /std/container/restrictions.c
-     PreventLeaveLiving(), PreventInsertLiving(), PreventMove(),
-     NotifyMove(), MayAddObject(), NotifyRemove()
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das aus dem Behaelter genommen werden soll.
+   dest
+        Das Ziel in das das Objekt ob bewegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
+   sich bewegen lassen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt bewegt werden kann; ein Wert groesser als 0
+   zeigt an, dass das Objekt nicht bewegt werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
+   aufgerufen, das Objekt wird jedoch auf jeden Fall aus dem Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+SIEHE AUCH
+==========
+
+   PreventInsert(), NotifyInsert(), NotifyLeave(),
+   MayAddWeight(), move(), /std/container/restrictions.c
+   PreventLeaveLiving(), PreventInsertLiving(), PreventMove(),
+   NotifyMove(), MayAddObject(), NotifyRemove()
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/PreventLeaveLiving b/doc/lfun/PreventLeaveLiving
index 4d13b54..20a5844 100644
--- a/doc/lfun/PreventLeaveLiving
+++ b/doc/lfun/PreventLeaveLiving
@@ -1,35 +1,58 @@
+
 PreventLeaveLiving()
+********************
 
-FUNKTION:
-     int PreventLeaveLiving(object ob, mixed dest);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob
-          Das Living, das aus dem Behaelter genommen werden soll.
-     dest 
-          Das Ziel in das das Living ob bewegt werden soll.
+   int PreventLeaveLiving(object ob, mixed dest);
 
-BESCHREIBUNG:
-     Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
-     sich bewegen lassen moechte oder nicht.
 
-RUeCKGABEWERT:
-     0, wenn das Living bewegt werden kann; ein Wert groesser als 0
-     zeigt an, dass das Living nicht bewegt werden soll.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
-     aufgerufen, das Living wird jedoch auf jeden Fall aus dem Behaelter
-     bewegt, unabhaengig vom Rueckgabewert!
+   /std/container/restrictions.c
 
-SIEHE AUCH:
-     PreventInsertLiving(), /std/container/restrictions.c
-     PreventMove(), PreventLeave(), PreventInsert(),
-     NotifyMove(), NotifyLeave(), NotifyInsert(), NotifyRemove(),
-     move(), exit(), init(),
-     InitAttack, ExitAttack()
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ob
+        Das Living, das aus dem Behaelter genommen werden soll.
+   dest
+        Das Ziel in das das Living ob bewegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
+   sich bewegen lassen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Living bewegt werden kann; ein Wert groesser als 0
+   zeigt an, dass das Living nicht bewegt werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
+   aufgerufen, das Living wird jedoch auf jeden Fall aus dem Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+SIEHE AUCH
+==========
+
+   PreventInsertLiving(), /std/container/restrictions.c
+   PreventMove(), PreventLeave(), PreventInsert(),
+   NotifyMove(), NotifyLeave(), NotifyInsert(), NotifyRemove(),
+   move(), exit(), init(),
+   InitAttack, ExitAttack()
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/PreventMove b/doc/lfun/PreventMove
index 798ee0b..920372d 100644
--- a/doc/lfun/PreventMove
+++ b/doc/lfun/PreventMove
@@ -1,81 +1,109 @@
+
+PreventMove()
+*************
+
+
 PreventInsert()
+===============
 
-FUNKTION:
-     protected int PreventMove(object dest, object oldenv, int method);
 
-DEFINIERT IN:
-     /std/thing/moving.c
-     /std/living/moving.c
-     /std/player/moving.c
+FUNKTION
+========
 
-ARGUMENTE:
-     dest
-          Das Ziel des Moves
-     oldenv
-          Das (Noch-)Environment des Objekts
-     method
-          Die Move-Methode(n), mit der/denen bewegt werden soll
+   protected int PreventMove(object dest, object oldenv, int method);
 
-BESCHREIBUNG:
-     Mit dieser Funktion prueft ein Objekt, ob es von 'oldenv' nach 'dest'
-     bewegt werden mag. Dabei wird 'method' beruecksichtigt (z.B. schaltet
-     M_NOCHECK die meisten Pruefungen ab).
-     Bei Gegenstaenden wird z.B. P_NODROP, P_NOGET, das Gewicht, ob das Ziel
-     das Objekt aufnehmen will (MayAddWeight(), PreventInsert) oder auch
-     PreventLeave() geprueft.
-     Bei Lebewesen wird z.B. P_NO_TPORT in 'dest' und 'oldenv' und
-     PreventLeaveLiving/PreventInsertLiving() ausgewertet.
-     Bei Spielern wird auch noch getestet, ob method M_GO oder M_TPORT
-     enthaelt und ob das Ziel nur von Testspielern betreten werden kann.
 
-RUeCKGABEWERT:
-     0, wenn das Objekt bewegt werden darf.
-     Wenn es nicht bewegt werden darf, sind als Rueckgabewerte die in
-     /sys/moving.h definierten Move-Fehlerwerte zulaessig (s. move()). Sollte
-     hier ein ungueltiger Fehlerwert zurueckgegeben werden, wird das move()
-     ebenfalls abgebrochen und ME_DONT_WANT_TO_BE_MOVED zurueckgeben.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Diese Funktion kann ueberschrieben, um feinere Kontrolle ueber die
-     Bewegungen des Objekt zu haben. Dabei aber bitte einige Dinge beachten:
-     1. Denkt daran, ggf. M_NOCHECK zu beruecksichtigen und und eure
-     Pruefungen nur zu machen, wenn es nicht in method vorkommt.
-     2. GANZ WICHTIG: Wenn ihr mit euren Pruefungen fertig sein und das Objekt
-     bewegt werden duerfte, die geerbten Pruefungen noch testen, also _IMMER_
-     das geerbte PreventMove() noch aufrufen und dessen Wert
-     zurueckgeben/beruecksichtigen, da sonst Pruefungen des Gewichts etc. 
-     nicht funktionieren oder bei Lebewesen die Prevent*() im Environment 
-     nicht gerufen werden!
-     3. Die Funktion ist nur objektintern zu verwenden, Call-Other von aussen
-     sind nicht moeglich, beim Ueberschreiben 'protected' nicht vergessen.
-     4. Nochmal: Geerbtes PreventMove() _NICHT VERGESSEN_!
+   /std/thing/moving.c
+   /std/living/moving.c
+   /std/player/moving.c
 
-BEISPIELE:
-     Ein Objekt, was nur im Sternenlicht aufgenommen werden kann (warum
-     auch immer):
 
-     protected int PreventMove(object dest, object oldenv, int method) {
-       if ( (method & M_NOCHECK) ) {
-           // wenn mit M_NOCHECK bewegt, ist das Sternenlicht egal, nur
-           // geerbtes PreventMove() beruecksichten:
-           return ::PreventMove(dest, oldenv, method);
-       }
-       else if ( method & M_GET) {
-           // wenn es aufgenommen werden soll: nach Sternenlicht im Raum
-           // gucken:
-           if (objectp(dest) && 
-               (dest->QueryProp(P_LIGHT_TYPE) != LT_STARS))
-               return ME_CANT_BE_TAKEN;
-       }
-       // Fall-through:
-       return ::PreventMove(dest, oldenv, method);
+ARGUMENTE
+=========
+
+   dest
+        Das Ziel des Moves
+   oldenv
+        Das (Noch-)Environment des Objekts
+   method
+        Die Move-Methode(n), mit der/denen bewegt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion prueft ein Objekt, ob es von 'oldenv' nach 'dest'
+   bewegt werden mag. Dabei wird 'method' beruecksichtigt (z.B. schaltet
+   M_NOCHECK die meisten Pruefungen ab).
+   Bei Gegenstaenden wird z.B. P_NODROP, P_NOGET, das Gewicht, ob das Ziel
+   das Objekt aufnehmen will (MayAddWeight(), PreventInsert) oder auch
+   PreventLeave() geprueft.
+   Bei Lebewesen wird z.B. P_NO_TPORT in 'dest' und 'oldenv' und
+   PreventLeaveLiving/PreventInsertLiving() ausgewertet.
+   Bei Spielern wird auch noch getestet, ob method M_GO oder M_TPORT
+   enthaelt und ob das Ziel nur von Testspielern betreten werden kann.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt bewegt werden darf.
+   Wenn es nicht bewegt werden darf, sind als Rueckgabewerte die in
+   /sys/moving.h definierten Move-Fehlerwerte zulaessig (s. move()). Sollte
+   hier ein ungueltiger Fehlerwert zurueckgegeben werden, wird das move()
+   ebenfalls abgebrochen und ME_DONT_WANT_TO_BE_MOVED zurueckgeben.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion kann ueberschrieben, um feinere Kontrolle ueber die
+   Bewegungen des Objekt zu haben. Dabei aber bitte einige Dinge beachten:
+   1. Denkt daran, ggf. M_NOCHECK zu beruecksichtigen und und eure
+   Pruefungen nur zu machen, wenn es nicht in method vorkommt.
+   2. GANZ WICHTIG: Wenn ihr mit euren Pruefungen fertig sein und das Objekt
+   bewegt werden duerfte, die geerbten Pruefungen noch testen, also _IMMER_
+   das geerbte PreventMove() noch aufrufen und dessen Wert
+   zurueckgeben/beruecksichtigen, da sonst Pruefungen des Gewichts etc.
+   nicht funktionieren oder bei Lebewesen die Prevent*() im Environment
+   nicht gerufen werden!
+   3. Die Funktion ist nur objektintern zu verwenden, Call-Other von aussen
+   sind nicht moeglich, beim Ueberschreiben 'protected' nicht vergessen.
+   4. Nochmal: Geerbtes PreventMove() _NICHT VERGESSEN_!
+
+
+BEISPIELE
+=========
+
+   Ein Objekt, was nur im Sternenlicht aufgenommen werden kann (warum
+   auch immer):
+
+   protected int PreventMove(object dest, object oldenv, int method) {
+     if ( (method & M_NOCHECK) ) {
+         // wenn mit M_NOCHECK bewegt, ist das Sternenlicht egal, nur
+         // geerbtes PreventMove() beruecksichten:
+         return ::PreventMove(dest, oldenv, method);
      }
+     else if ( method & M_GET) {
+         // wenn es aufgenommen werden soll: nach Sternenlicht im Raum
+         // gucken:
+         if (objectp(dest) &&
+             (dest->QueryProp(P_LIGHT_TYPE) != LT_STARS))
+             return ME_CANT_BE_TAKEN;
+     }
+     // Fall-through:
+     return ::PreventMove(dest, oldenv, method);
+   }
 
 
-SIEHE AUCH:
-     PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
-     PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
-     PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+SIEHE AUCH
+==========
 
-----------------------------------------------------------------------------
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/Query b/doc/lfun/Query
index 2b39998..27c2d9e 100644
--- a/doc/lfun/Query
+++ b/doc/lfun/Query
@@ -1,81 +1,108 @@
+
 Query()
-FUNKTION:
-     public varargs mixed Query(string name, int Type);
+*******
 
-DEFINIERT IN:
-     /std/thing/properties.c
 
-ARGUMENTE:
-     string name - Property, deren Wert(e) ausgelesen werden
-     int type  - Art der gewuenschten Information.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Wert einer der inneren Eigenschaften der Property 'name' wird
-     zurueckgegeben.  'Type' ist dabei einer der in /sys/thing/properties.h
-     und folgend aufgelisteten F_XXX-Werte:
+   public varargs mixed Query(string name, int Type);
 
-     F_VALUE (==0, Default)
-         Unter Umgehung einer eventuell vorhandenen Abfragemethode oder
-         _query_'name'() wird der Datenwert der Property 'name'
-         zurueckgegeben.
-     F_MODE
-          Die internen Flags der Property werden zurueckgegeben.Dies koennen
-          (logisch mit & verknuepft) sein:
-          SAVE  - Property soll bei save_object() gespeichert werden
-          PROTECTED - Objekt selbst/EM/Root kann Property manipulieren
-          SECURED  - wie PROTECTED, das Flag kann aber nicht
-                     zurueckgesetzt werden (immer SECURED)
-          NOSETMETHOD - niemand kann Property manipulieren
-                        (auch kein F_SET_METHOD oder _set_'name'())
-     F_SET_METHOD
-          Ein eventuell fuer die Property eingetragene F_SET_METHOD wird
-          zurueckgegeben.
-          (_set_'name'()-Methoden werden so nicht aufgefuehrt!)
-     F_QUERY_METHOD
-          Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird
-          zurueckgegeben.
-          (_query_'name'()-Methoden werden so nicht aufgefuehrt!)
 
-RUeCKGABEWERT:
-     Die gewuenschte Eigenschaft, abhaengig von 'Type'.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer
-       Property verwendet werden, da sowohl F_QUERY_METHOD als auch
-       libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis
-       fuer so veraenderte Propertys undefiniert ist
-     - _set_'name'() und _query_'name'() sind alte Propertymethoden und
-       sollten nicht in normalen Objekten benutzt werden ->
-       F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen
-     - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
-       sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
-       diese geht nur 'static' (in diesem Fall empfohlen).
+   /std/thing/properties.c
 
-BEISPIELE:
-     // Auslesen des Wertes unter Umgehung einer Abfragemethode
-     Query(P_XYZ, F_VALUE);
 
-     // Auslesen der Flags erfaehrt man mit:
-     Query(P_XYZ, F_MODE);
+ARGUMENTE
+=========
 
-     // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen,
-     // pruefen vorher auf Existenz:
-     if(this_player()->Query(P_FROG, F_QUERY_METHOD) {
-      write(break_string(
-       "Ich kann dich nicht weiter vor Froschsein schuetzen!",
-       "Der Magier winkt ab: ", 78));
-      say(break_string(
-       "Ich kann dich nicht weiter vor Froschsein schuetzen!",
-       "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78));
-     } else {
-      this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD);
-      ...
-     }
+   string name - Property, deren Wert(e) ausgelesen werden
+   int type  - Art der gewuenschten Information.
 
-SIEHE AUCH:
-     Aehnliches: SetProp(L), QueryProp(L), Set(L)
-     Generell:  SetProperties(L), QueryProperties(L)
-     Konzept:  properties, /std/thing/properties.c
-     Sonstiges:  P_AUTOLOADOBJ
+
+BESCHREIBUNG
+============
+
+   Der Wert einer der inneren Eigenschaften der Property 'name' wird
+   zurueckgegeben.  'Type' ist dabei einer der in /sys/thing/properties.h
+   und folgend aufgelisteten F_XXX-Werte:
+
+   F_VALUE (==0, Default)
+       Unter Umgehung einer eventuell vorhandenen Abfragemethode oder
+       _query_'name'() wird der Datenwert der Property 'name'
+       zurueckgegeben.
+   F_MODE
+        Die internen Flags der Property werden zurueckgegeben.Dies koennen
+        (logisch mit & verknuepft) sein:
+        SAVE  - Property soll bei save_object() gespeichert werden
+        PROTECTED - Objekt selbst/EM/Root kann Property manipulieren
+        SECURED  - wie PROTECTED, das Flag kann aber nicht
+                   zurueckgesetzt werden (immer SECURED)
+        NOSETMETHOD - niemand kann Property manipulieren
+                      (auch kein F_SET_METHOD oder _set_'name'())
+   F_SET_METHOD
+        Ein eventuell fuer die Property eingetragene F_SET_METHOD wird
+        zurueckgegeben.
+        (_set_'name'()-Methoden werden so nicht aufgefuehrt!)
+   F_QUERY_METHOD
+        Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird
+        zurueckgegeben.
+        (_query_'name'()-Methoden werden so nicht aufgefuehrt!)
+
+
+RUeCKGABEWERT
+=============
+
+   Die gewuenschte Eigenschaft, abhaengig von 'Type'.
+
+
+BEMERKUNGEN
+===========
+
+   - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer
+     Property verwendet werden, da sowohl F_QUERY_METHOD als auch
+     libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis
+     fuer so veraenderte Propertys undefiniert ist
+   - _set_'name'() und _query_'name'() sind alte Propertymethoden und
+     sollten nicht in normalen Objekten benutzt werden ->
+     F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen
+   - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
+     sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
+     diese geht nur 'static' (in diesem Fall empfohlen).
+
+
+BEISPIELE
+=========
+
+   // Auslesen des Wertes unter Umgehung einer Abfragemethode
+   Query(P_XYZ, F_VALUE);
+
+   // Auslesen der Flags erfaehrt man mit:
+   Query(P_XYZ, F_MODE);
+
+   // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen,
+   // pruefen vorher auf Existenz:
+   if(this_player()->Query(P_FROG, F_QUERY_METHOD) {
+    write(break_string(
+     "Ich kann dich nicht weiter vor Froschsein schuetzen!",
+     "Der Magier winkt ab: ", 78));
+    say(break_string(
+     "Ich kann dich nicht weiter vor Froschsein schuetzen!",
+     "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78));
+   } else {
+    this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD);
+    ...
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: SetProp(L), QueryProp(L), Set(L)
+   Generell:  SetProperties(L), QueryProperties(L)
+   Konzept:  properties, /std/thing/properties.c
+   Sonstiges:  P_AUTOLOADOBJ
 
 28.03.2008, Zesstra
diff --git a/doc/lfun/QueryAllDoors b/doc/lfun/QueryAllDoors
index 3bbbfbb..cdf7140 100644
--- a/doc/lfun/QueryAllDoors
+++ b/doc/lfun/QueryAllDoors
@@ -1,32 +1,52 @@
-FUNKTION:
-     mapping QueryAllDoors();
 
-DEFINIERT IN:
-     /obj/doormaster.c
-
-ARGUMENTE:
-     keine
-
-BESCHREIBUNG:
-     Es werden die Zustaende ALLER Tueren im MorgenGrauen ermittelt.
-
-RUECKGABEWERT:
-     Ein Mapping mit den Zustaenden aller Tueren im MorgenGrauen. Als
-     Schluessel dienen die Dateinamen der Start- und Zielraeume in
-     lexikographischer (alphabetischer) Reihenfolge, getrennt durch ":",
-     der Wert des Keys ist der aktuelle Zustand dieser Tuer, z.B.:
-
-    ([ "/d/inseln/schiffe/jolle:/d/inseln/schiffe/jolle/masch" : -1,
-       ...
-     ]);
-
-     Es gibt also eine Tuer zwischen Jolle und Maschinenraum, die
-     momenten geschlossen ist (-1 = D_STATUS_CLOSED).
+QueryAllDoors()
+***************
 
 
-SIEHE AUCH:
-    NewDoor(), QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
-    /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), P_DOOR_INFOS
+FUNKTION
+========
 
------------------------------------------------------------------------------
+   mapping QueryAllDoors();
+
+
+DEFINIERT IN
+============
+
+   /obj/doormaster.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Es werden die Zustaende ALLER Tueren im MorgenGrauen ermittelt.
+
+
+RUECKGABEWERT
+=============
+
+    Ein Mapping mit den Zustaenden aller Tueren im MorgenGrauen. Als
+    Schluessel dienen die Dateinamen der Start- und Zielraeume in
+    lexikographischer (alphabetischer) Reihenfolge, getrennt durch ":",
+    der Wert des Keys ist der aktuelle Zustand dieser Tuer, z.B.:
+
+   ([ "/d/inseln/schiffe/jolle:/d/inseln/schiffe/jolle/masch" : -1,
+      ...
+    ]);
+
+    Es gibt also eine Tuer zwischen Jolle und Maschinenraum, die
+    momenten geschlossen ist (-1 = D_STATUS_CLOSED).
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), P_DOOR_INFOS
+
 Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/lfun/QueryArmourByType b/doc/lfun/QueryArmourByType
index 22d43e9..20fcab5 100644
--- a/doc/lfun/QueryArmourByType
+++ b/doc/lfun/QueryArmourByType
@@ -1,64 +1,91 @@
+
+QueryArmourByType()
+*******************
+
+
 QyeryArmourByType()
-
-FUNKTION:
-     mixed QueryArmourByType(string type)
-
-DEFINIERT IN:
-     /std/living/combat.c
-
-ARGUMENTE:
-     string type
-        Typ der Ruestung aus /sys/combat.h, auf die getestet werden soll.
-
-BESCHREIBUNG:
-     Abfrage, ob das Lebewesen eine Ruestung des angegebenen Typs traegt.
-
-     Zurueckgegeben wird je nach Tragestatus und <type>:
-     * 0, falls das Lebewesen die gesuchte Ruestungsart nicht traegt
-     * im Erfolgsfall das Ruestungsobjekt
-     * falls <type> AT_MISC ist:
-       * ({}), wenn es keine AT_MISC-Ruestung traegt
-       * ein Array von AT_MISC-Ruestungen
-     * falls <type> 0 ist: ein Mapping, das diese Informationen mit dem
-       Ruestungstypen als Schluessel enthaelt:
-       ([AT_MISC: ({[object], ...}),
-         AT_...: <object>,
-         ... ])
-
-BEMERKUNG:
-     Ist <type> AT_MISC, so wird auf jeden Fall ein Array zurueckgegeben!
-
-BEISPIELE:
-     Wir wollen wissen, ob this_player() Handschuhe traegt:
-
-     if (objectp(this_player()->QueryArmourByType(AT_GLOVE)))
-       ...
+===================
 
 
-     Wir bauen einen Tuersteher, der auf AT_MISC-Kleidung achtet:
+FUNKTION
+========
 
-     if (sizeof(this_player()->QueryArmourByType(AT_MISC)) > 3) {
-       if(this_player()->ReceiveMsg(
-            "Du darfst nicht passieren, Du hast zuviele "
-            "unpassende Dinge an!",
-            MT_LISTEN|MSG_DONT_STORE, MA_TELL,
-            "Der Waechter teilt Dir mit: ")<MSG_DELIVERED && // taub?
+   mixed QueryArmourByType(string type)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   string type
+      Typ der Ruestung aus /sys/combat.h, auf die getestet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Abfrage, ob das Lebewesen eine Ruestung des angegebenen Typs traegt.
+
+   Zurueckgegeben wird je nach Tragestatus und <type>:
+   * 0, falls das Lebewesen die gesuchte Ruestungsart nicht traegt
+   * im Erfolgsfall das Ruestungsobjekt
+   * falls <type> AT_MISC ist:
+     * ({}), wenn es keine AT_MISC-Ruestung traegt
+     * ein Array von AT_MISC-Ruestungen
+   * falls <type> 0 ist: ein Mapping, das diese Informationen mit dem
+     Ruestungstypen als Schluessel enthaelt:
+     ([AT_MISC: ({[object], ...}),
+       AT_...: <object>,
+       ... ])
+
+
+BEMERKUNG
+=========
+
+   Ist <type> AT_MISC, so wird auf jeden Fall ein Array zurueckgegeben!
+
+
+BEISPIELE
+=========
+
+   Wir wollen wissen, ob this_player() Handschuhe traegt:
+
+   if (objectp(this_player()->QueryArmourByType(AT_GLOVE)))
+     ...
+
+
+   Wir bauen einen Tuersteher, der auf AT_MISC-Kleidung achtet:
+
+   if (sizeof(this_player()->QueryArmourByType(AT_MISC)) > 3) {
+     if(this_player()->ReceiveMsg(
+          "Du darfst nicht passieren, Du hast zuviele "
+          "unpassende Dinge an!",
+          MT_LISTEN|MSG_DONT_STORE, MA_TELL,
+          "Der Waechter teilt Dir mit: ")<MSG_DELIVERED && // taub?
+        this_player()->ReceiveMsg(
+          "Der Waechter haelt dich auf.", MT_LOOK)<MSG_DELIVERED) // blind?
           this_player()->ReceiveMsg(
-            "Der Waechter haelt dich auf.", MT_LOOK)<MSG_DELIVERED) // blind?
-            this_player()->ReceiveMsg(
-              "Jemand haelt dich auf.", MT_FEEL); // nu aber!
-       // Aufhalten!
-     } else this_player()->ReceiveMsg(
-              "Du darfst passieren, viel Spass im Casino!",
-              MT_LISTEN|MSG_DONT_STORE, MA_TELL,
-              "Der Waechter teilt Dir mit: ");
-       // im Erfolgsfall ist es uns egal, wenn es der Spieler nicht
-       // liest: er wird dann eben "wortlos" durchgelassen
+            "Jemand haelt dich auf.", MT_FEEL); // nu aber!
+     // Aufhalten!
+   } else this_player()->ReceiveMsg(
+            "Du darfst passieren, viel Spass im Casino!",
+            MT_LISTEN|MSG_DONT_STORE, MA_TELL,
+            "Der Waechter teilt Dir mit: ");
+     // im Erfolgsfall ist es uns egal, wenn es der Spieler nicht
+     // liest: er wird dann eben "wortlos" durchgelassen
 
-SIEHE AUCH:
-     Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
-     UnwearClothing(), FilterClothing(),
-     P_ARMOUR_TYPE, P_CLOTHING, P_ARMOURS,
-     /std/living/combat.c
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
+   UnwearClothing(), FilterClothing(),
+   P_ARMOUR_TYPE, P_CLOTHING, P_ARMOURS,
+   /std/living/combat.c
 
 02.02.2016, Gloinson
diff --git a/doc/lfun/QueryArrived b/doc/lfun/QueryArrived
index 33cf887..9c4de60 100644
--- a/doc/lfun/QueryArrived
+++ b/doc/lfun/QueryArrived
@@ -1,26 +1,45 @@
+
 QueryArrived()
+**************
 
-FUNKTION:
-     mixed QueryArrived();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   mixed QueryArrived();
 
-BESCHREIBUNG:
-     Diese Funktion ermittelt, ob sich der Transporter momentan an einer
-     Haltestelle befindet (und bestiegen oder verlassen werden kann) oder ob
-     er unterwegs ist.
 
-RUeCKGABEWERT:
-     Null, wenn der Transporter unterwegs ist. Liegt der Transporter an
-     einer Haltestelle, so wird der mit AddRoute als name uebergebene String
-     zurueckgegeben.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddRoute(), /std/transport.c
+   /std/transport.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt, ob sich der Transporter momentan an einer
+   Haltestelle befindet (und bestiegen oder verlassen werden kann) oder ob
+   er unterwegs ist.
+
+
+RUeCKGABEWERT
+=============
+
+   Null, wenn der Transporter unterwegs ist. Liegt der Transporter an
+   einer Haltestelle, so wird der mit AddRoute als name uebergebene String
+   zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), /std/transport.c
+
 Last modified: Wed May 8 10:21:47 1996 by Wargon
diff --git a/doc/lfun/QueryArticle b/doc/lfun/QueryArticle
index 0993b3e..3be5ecc 100644
--- a/doc/lfun/QueryArticle
+++ b/doc/lfun/QueryArticle
@@ -1,92 +1,118 @@
+
 QueryArticle()
+**************
 
-FUNKTION:
-     varargs string QueryArticle(int casus, int dem, int force);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     casus
-          Der Fall, in dem der Artikel gewuenscht wird.
-          (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
+   varargs string QueryArticle(int casus, int dem, int force);
 
-     dem
-          Wird ein bestimmter oder ein unbestimmter Artikel verlangt?
-             + dem = 0: Unbestimmter Artikel!
-             + dem = 1: Bestimmter Artikel!
-             + dem = 2: Finde selbst heraus, welcher Artikel passt!
 
-     force
-          Falls ungleich Null, so wird auf jeden Fall ein Artikel
-          zurueckgegeben, trotz P_ARTICLE == 0.
+DEFINIERT IN
+============
 
-BESCHREIBUNG:
-     Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
-     zurueck, der in den passenden Fall dekliniert wird.
+   /std/thing/language.c
 
-     Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
-     Situationen, in denen mehrere gleichnamige Objekte im selben Environment
-     sind. Man 'nimmt' dann zB nicht "den Stamm" sondern "einen Stamm".
 
-     Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn,
-     man uebergibt in dem Argument 'force' einen Wert ungleich Null.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt!
+   casus
+        Der Fall, in dem der Artikel gewuenscht wird.
+        (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
 
-     Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt
-     ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem
-     QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks
-     im Raum herumstehen und man eine Nachricht wie:
-       "Du haust den Ork." und folgend
-       "[Des|Eines] Orks Nase schwillt an."
-     haben moechte:
-       "Du haust "+ork->name(WEN, 1)+". "
-       ork->Name(WESSEN, 2)+" Nase schwillt an."
+   dem
+        Wird ein bestimmter oder ein unbestimmter Artikel verlangt?
+           + dem = 0: Unbestimmter Artikel!
+           + dem = 1: Bestimmter Artikel!
+           + dem = 2: Finde selbst heraus, welcher Artikel passt!
 
-RUeCKGABEWERT:
-     * gewuenschter Artikel als String plus Leerzeichen (!) ODER
-     * Leerstring
+   force
+        Falls ungleich Null, so wird auf jeden Fall ein Artikel
+        zurueckgegeben, trotz P_ARTICLE == 0.
 
-BEISPIELE:
-     // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt."
-     // Man will:
-     // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
-     // * nur den bestimmten Artikel
-     send_room(this_object(),
-       pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+
-       capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.",
-       MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
 
-     // "X gibt dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
-     // Man will:
-     // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
-     // * nur den bestimmten Artikel
-     send_room(this_object(),
-       pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+
-       capitalize(pl2->QueryPronoun(WER))+" prueft "+
-       ob->QueryArticle(WEN, 1, 1)+"...",
-       MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+BESCHREIBUNG
+============
 
-     // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines "
-     // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das "
-     // "von dir?"
-     // Man will:
-     // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
-     // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende
-     //   (zB Kokosnuesse) auf dem Boden liegen ...
-     ob->move(environment(), M_NOCHECK); // vorher machen!
-     pl->ReceiveMsg(
-       "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+
-       ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+
-       capitalize(ob->QueryPronoun(WER))+" sieht blutig ...
+   Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
+   zurueck, der in den passenden Fall dekliniert wird.
 
-SIEHE AUCH:
-     Aehnlich:  SuggestArticle(), query_c_article(), query_g_suffix()
-     Sonstiges: QueryOwn(), QueryDu(),
-                QueryPronoun(), QueryPossPronoun()
-                DeclAdj()
-                name()
+   Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
+   Situationen, in denen mehrere gleichnamige Objekte im selben Environment
+   sind. Man 'nimmt' dann zB nicht "den Stamm" sondern "einen Stamm".
+
+   Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn,
+   man uebergibt in dem Argument 'force' einen Wert ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt!
+
+   Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt
+   ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem
+   QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks
+   im Raum herumstehen und man eine Nachricht wie:
+     "Du haust den Ork." und folgend
+     "[Des|Eines] Orks Nase schwillt an."
+   haben moechte:
+     "Du haust "+ork->name(WEN, 1)+". "
+     ork->Name(WESSEN, 2)+" Nase schwillt an."
+
+
+RUeCKGABEWERT
+=============
+
+   * gewuenschter Artikel als String plus Leerzeichen (!) ODER
+   * Leerstring
+
+
+BEISPIELE
+=========
+
+   // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt."
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * nur den bestimmten Artikel
+   send_room(this_object(),
+     pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+
+     capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.",
+     MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+
+   // "X gibt dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * nur den bestimmten Artikel
+   send_room(this_object(),
+     pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+
+     capitalize(pl2->QueryPronoun(WER))+" prueft "+
+     ob->QueryArticle(WEN, 1, 1)+"...",
+     MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+
+   // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines "
+   // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das "
+   // "von dir?"
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende
+   //   (zB Kokosnuesse) auf dem Boden liegen ...
+   ob->move(environment(), M_NOCHECK); // vorher machen!
+   pl->ReceiveMsg(
+     "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+
+     ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+
+     capitalize(ob->QueryPronoun(WER))+" sieht blutig ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  SuggestArticle(), query_c_article(), query_g_suffix()
+   Sonstiges: QueryOwn(), QueryDu(),
+              QueryPronoun(), QueryPossPronoun()
+              DeclAdj()
+              name()
 
 9. Jun 2016, Gloinson
diff --git a/doc/lfun/QueryAttribute b/doc/lfun/QueryAttribute
index 60a68c9..978c6c0 100644
--- a/doc/lfun/QueryAttribute
+++ b/doc/lfun/QueryAttribute
@@ -1,32 +1,59 @@
+
 QueryAttribute()
-FUNKTION:
-     int QueryAttribute(string attr)
+****************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     attr       - interessierendes Gesamtattribut
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Attribut samt seiner Offsets (Modifier) wird zurueckgegeben.
+   int QueryAttribute(string attr)
 
-RUeCKGABEWERT:
-     Wert des Attributes, bei Spielern nicht groesser als 30.
 
-BEISPIELE:
-     if (this_player()->QueryAttribute(A_CON) > 20)
-       write("Du schaffst es den Berg hoch. Aber nur muehsam.\n");
+DEFINIERT IN
+============
 
-BENERKUNGEN:
-     Wenn es um Attributabfragen geht, bitte diese Methode verwenden!
+   /std/living/attributes.c
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+
+ARGUMENTE
+=========
+
+   attr       - interessierendes Gesamtattribut
+
+
+BESCHREIBUNG
+============
+
+   Das Attribut samt seiner Offsets (Modifier) wird zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Wert des Attributes, bei Spielern nicht groesser als 30.
+
+
+BEISPIELE
+=========
+
+   if (this_player()->QueryAttribute(A_CON) > 20)
+     write("Du schaffst es den Berg hoch. Aber nur muehsam.\n");
+
+
+BENERKUNGEN
+===========
+
+   Wenn es um Attributabfragen geht, bitte diese Methode verwenden!
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/QueryAttributeOffset b/doc/lfun/QueryAttributeOffset
index f938ab8..b16d10c 100644
--- a/doc/lfun/QueryAttributeOffset
+++ b/doc/lfun/QueryAttributeOffset
@@ -1,26 +1,47 @@
+
 QueryAttributeOffset()
-FUNKTION:
-     int QueryAttributeOffset(string attr)
+**********************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     attr	-	gesuchter AttributOffset
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die Offsets des Attributs (inklusive Modifier) werden zurueckgegeben.
+   int QueryAttributeOffset(string attr)
 
-BEISPIELE:
-     if(this_player()->QueryAttributeOffset(A_STR)<0)
-      write("Du bist geschwaecht.\n");
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       -       gesuchter AttributOffset
+
+
+BESCHREIBUNG
+============
+
+   Die Offsets des Attributs (inklusive Modifier) werden zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   if(this_player()->QueryAttributeOffset(A_STR)<0)
+    write("Du bist geschwaecht.\n");
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/QueryBuyFact b/doc/lfun/QueryBuyFact
index 435e8be..3f728c3 100644
--- a/doc/lfun/QueryBuyFact
+++ b/doc/lfun/QueryBuyFact
@@ -1,22 +1,41 @@
+
 QueryBuyFact()
+**************
 
-FUNKTION:
-     int QueryBuyFact();
 
-DEFINIERT IN:
-     /std/laden.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int QueryBuyFact();
 
-BESCHREIBUNG:
-     Gibt den mit SetBuyFact() gesetzten Faktor zurueck.
 
-RUeCKGABEWERT:
-     Der Einkaufspreismultiplikator.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     SetBuyFact(), /std/laden.c
+   /std/laden.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Gibt den mit SetBuyFact() gesetzten Faktor zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Einkaufspreismultiplikator.
+
+
+SIEHE AUCH
+==========
+
+   SetBuyFact(), /std/laden.c
+
 Last modified: Wed May 8 10:21:57 1996 by Wargon
diff --git a/doc/lfun/QueryBuyValue b/doc/lfun/QueryBuyValue
index 261a435..cecc57c 100644
--- a/doc/lfun/QueryBuyValue
+++ b/doc/lfun/QueryBuyValue
@@ -1,52 +1,56 @@
-QueryBuyValue()
-
-Funktion:
-    static varargs int QueryBuyValue(mixed ob, object client)
-
-Definiert in:
-    /std/room/shop
-
-Argumente:
-    ob: 
-      Das zu kaufende Objekt (String oder object).
-      Im Normalfall handelt es sich um ein Objekt. Ausnahme sind 
-      Gegenstaende, die mit AddFixedObject() hinzugefuegt wurden.
-    client: 
-      Der Kaeufer.
-
-Beschreibung:
-    Ermittelt den Preis, den <client> fuer <ob> zu bezahlen hat.
-
-Rueckgabewert:
-    Der Preis als Integer.
-
-Beispiel:
-    Ein Haendler, der Spielern die ihm geholfen haben einen Rabatt von 10% 
-    gewaehrt:
-    
-    object *helpers;
-    protected void create()
-    {
-      ::create();
-      helpers=({});
-      ...
-    }
-    
-    static varargs int QueryBuyValue(mixed ob, object client)
-    {
-      if(member(helpers,client)!=-1)
-      {
-        return ::QueryBuyValue(ob,client)*9/10;
-      }
-      return ::QueryBuyValue(ob,client);
-    }
-
-Siehe auch:
-    Funktionen:
-      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(), 
-      QueryStorageRoom(), QueryBuyFact(), sell_obj(), buy_obj()
-    Properties:
-      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
-
-------------------------------------------------------------------------------
-Letzte Aenderung: 21.05.2014, Bugfix
\ No newline at end of file
+
+QueryBuyValue()
+***************
+
+QueryBuyValue()
+
+Funktion
+   static varargs int QueryBuyValue(mixed ob, object client)
+
+Definiert in
+   /std/room/shop
+
+Argumente
+   ob
+      Das zu kaufende Objekt (String oder object). Im Normalfall
+      handelt es sich um ein Objekt. Ausnahme sind Gegenstaende, die
+      mit AddFixedObject() hinzugefuegt wurden.
+
+   client
+      Der Kaeufer.
+
+Beschreibung
+   Ermittelt den Preis, den <client> fuer <ob> zu bezahlen hat.
+
+Rueckgabewert
+   Der Preis als Integer.
+
+Beispiel
+   Ein Haendler, der Spielern die ihm geholfen haben einen Rabatt von
+   10% gewaehrt
+
+   object >>*<<helpers; protected void create() {
+
+      ::create(); helpers=({}); ...
+
+   }
+
+   static varargs int QueryBuyValue(mixed ob, object client) {
+
+      if(member(helpers,client)!=-1) {
+
+         return ::QueryBuyValue(ob,client)*9/10;
+
+      } return ::QueryBuyValue(ob,client);
+
+   }
+
+Siehe auch:
+   Funktionen:
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryStorageRoom(), QueryBuyFact(), sell_obj(), buy_obj()
+
+   Properties:
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+Letzte Aenderung: 21.05.2014, Bugfix
diff --git a/doc/lfun/QueryCoinsPerUnits b/doc/lfun/QueryCoinsPerUnits
index 948c1b0..7261758 100644
--- a/doc/lfun/QueryCoinsPerUnits
+++ b/doc/lfun/QueryCoinsPerUnits
@@ -1,31 +1,57 @@
+
+QueryCoinsPerUnits()
+********************
+
+
 QueryCoinsPerUnit()
+===================
 
-FUNKTION:
-     int *QueryCoinsPerUnits();
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int *QueryCoinsPerUnits();
 
-BESCHREIBUNG:
-     Liefert das Wertverhaeltnis fuer die Einheiten zurueck.
 
-RUeCKGABEWERT:
-     Ein Array von zwei Zahlen. Die erste Zahl ist der Wert der in der
-     zweiten Zahl angegebenen Einheiten.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Steht im Unit-Objekt folgende Wertzuweisung:
+   /std/unit.c
 
-       SetCoinsPerUnits(7,2);
 
-     so liefert QueryCoinsPerUnits() als Ergebnis ({7, 2}).
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     SetCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnit(),
-     /std/unit.c
+   keine
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Liefert das Wertverhaeltnis fuer die Einheiten zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von zwei Zahlen. Die erste Zahl ist der Wert der in der
+   zweiten Zahl angegebenen Einheiten.
+
+
+BEISPIELE
+=========
+
+   Steht im Unit-Objekt folgende Wertzuweisung:
+
+     SetCoinsPerUnits(7,2);
+
+   so liefert QueryCoinsPerUnits() als Ergebnis ({7, 2}).
+
+
+SIEHE AUCH
+==========
+
+   SetCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnit(),
+   /std/unit.c
+
 Last modified: Wed May 8 10:22:02 1996 by Wargon
diff --git a/doc/lfun/QueryDamage b/doc/lfun/QueryDamage
index 99c4fed..812636a 100644
--- a/doc/lfun/QueryDamage
+++ b/doc/lfun/QueryDamage
@@ -1,39 +1,61 @@
+
 QueryDamage()
+*************
 
-FUNKTION:
-     int QueryDamage(object enemy);
 
-DEFINIERT IN:
-     /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     enemy
-          Der Gegner, gegen den die Waffe eingesetzt wird.
+   int QueryDamage(object enemy);
 
-BESCHREIBUNG:
-     Dies ist die zentrale Funktion der Waffe. Sie wird in jeder Kampfrunde
-     von Attack() aus aufgerufen und gibt den Schaden zurueck, den der
-     Gegner abwehren muss.
 
-     In den Schaden gehen sowohl die Staerke der Waffe als auch die Staerke
-     des Traegers der Waffe ein.
+DEFINIERT IN
+============
 
-     Wurde eine HitFunc() angegeben, so wird diese mit den gleichen
-     Parametern wie QueryDamage() aufgerufen.
+   /std/weapon/combat.c
 
-RUeCKGABEWERT:
-     Die Staerke des Schlages fuer diese Kampfrunde. Sie ermittelt sich als
-     Zufallszahl zwischen 0 und einem Wert, der sich aus der Staerke der
-     Waffe und der Staerke ihres Traegers ergibt. Das Ergebnis des
-     HitFunc()-Aufrufs wird zu dieser Zahl hinzugezaehlt.
 
-BEMERKUNGEN:
-     Auch wenn man eine HitFunc() verwendet, darf der Rueckgabewert
-     insgesamt nicht groesser als 200 werden. Im Zweifelsfall sollte 
-     man sich mit der zustaendigen Balance besprechen!
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     HitFunc(), Attack(), /std/weapon.c, grenzwerte
+   enemy
+        Der Gegner, gegen den die Waffe eingesetzt wird.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Dies ist die zentrale Funktion der Waffe. Sie wird in jeder Kampfrunde
+   von Attack() aus aufgerufen und gibt den Schaden zurueck, den der
+   Gegner abwehren muss.
+
+   In den Schaden gehen sowohl die Staerke der Waffe als auch die Staerke
+   des Traegers der Waffe ein.
+
+   Wurde eine HitFunc() angegeben, so wird diese mit den gleichen
+   Parametern wie QueryDamage() aufgerufen.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Staerke des Schlages fuer diese Kampfrunde. Sie ermittelt sich als
+   Zufallszahl zwischen 0 und einem Wert, der sich aus der Staerke der
+   Waffe und der Staerke ihres Traegers ergibt. Das Ergebnis des
+   HitFunc()-Aufrufs wird zu dieser Zahl hinzugezaehlt.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine HitFunc() verwendet, darf der Rueckgabewert
+   insgesamt nicht groesser als 200 werden. Im Zweifelsfall sollte
+   man sich mit der zustaendigen Balance besprechen!
+
+
+SIEHE AUCH
+==========
+
+   HitFunc(), Attack(), /std/weapon.c, grenzwerte
+
 Last modified: Fre Feb 16.02.01 12:58:00 von Tilly
diff --git a/doc/lfun/QueryDefend b/doc/lfun/QueryDefend
index 4d3d3e0..fa3fb11 100644
--- a/doc/lfun/QueryDefend
+++ b/doc/lfun/QueryDefend
@@ -1,45 +1,68 @@
+
 QueryDefend()
+*************
 
-FUNKTION:
-     int QueryDefend(string|string* dtyp, int|mapping spell, object enemy);
 
-DEFINIERT IN:
-     /std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     dtyp  - Schadenstypen der Angriffsart
-     spell - 0       bei konventionellem Angriff,
-             != 0    bei Angriff mit einem nichtphysischen Spell,
-             mapping bei genaueren Angaben zur Wirkung
-     enemy - Der angreifende Gegner
+   int QueryDefend(string|string* dtyp, int|mapping spell, object enemy);
 
-BESCHREIBUNG:
-     Dies ist die zentrale Funktion einer Ruestung. Sie wird in jeder
-     Kampfrunde aus /std/living/combat::Defend() fuer jede Ruestung aufgerufen,
-     die der Spieler angezogen hat.
 
-     Der Schutzwert von P_AC entfaltet seine Wirkung nur bei konventionellen
-     Angriffen:
-     * wenn 'spell' 0 ist (bei Aufruf aus der Defend heraus ausgeschlossen)
-     * wenn 'spell' ein Mapping mit dem Flag SP_PHYSICAL_ATTACK != 0 UND
-                    in 'dtyp' mindestens ein physischer Schaden enthalten ist
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     Die Ruestungsstaerke in dieser Kampfrunde. Sie ermittelt sich als
-     Zufallszahl zwischen 0 und P_AC, zuzueglich des Ergebnisses des
-     DefendFunc()-Aufrufs.
+   /std/armour/combat.c
 
-BEMERKUNGEN:
-     Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
-     insgesamt nicht groesser werden als der fuer den Ruestungstyp
-     maximal zulaessige!
 
-SIEHE AUCH:
-     Ruestungen: P_ARMOUR_TYPE, P_NR_HANDS, P_ARMOURS, P_WORN
-     Schutz:     P_AC, Defend(), DefendFunc
-     Sonstiges:  P_EQUIP_TIME, P_LAST_USE, P_DAM_TYPE
-     Verwandt:   QueryArmourByType(L), P_WEAPON, FilterClothing(),
-                 FilterArmours()
-     Resistenz:  P_RESISTANCE_STRENGTHS, CheckResistance(L)
+ARGUMENTE
+=========
+
+   dtyp  - Schadenstypen der Angriffsart
+   spell - 0       bei konventionellem Angriff,
+           != 0    bei Angriff mit einem nichtphysischen Spell,
+           mapping bei genaueren Angaben zur Wirkung
+   enemy - Der angreifende Gegner
+
+
+BESCHREIBUNG
+============
+
+   Dies ist die zentrale Funktion einer Ruestung. Sie wird in jeder
+   Kampfrunde aus /std/living/combat::Defend() fuer jede Ruestung aufgerufen,
+   die der Spieler angezogen hat.
+
+   Der Schutzwert von P_AC entfaltet seine Wirkung nur bei konventionellen
+   Angriffen:
+   * wenn 'spell' 0 ist (bei Aufruf aus der Defend heraus ausgeschlossen)
+   * wenn 'spell' ein Mapping mit dem Flag SP_PHYSICAL_ATTACK != 0 UND
+                  in 'dtyp' mindestens ein physischer Schaden enthalten ist
+
+
+RUeCKGABEWERT
+=============
+
+   Die Ruestungsstaerke in dieser Kampfrunde. Sie ermittelt sich als
+   Zufallszahl zwischen 0 und P_AC, zuzueglich des Ergebnisses des
+   DefendFunc()-Aufrufs.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
+   insgesamt nicht groesser werden als der fuer den Ruestungstyp
+   maximal zulaessige!
+
+
+SIEHE AUCH
+==========
+
+   Ruestungen: P_ARMOUR_TYPE, P_NR_HANDS, P_ARMOURS, P_WORN
+   Schutz:     P_AC, Defend(), DefendFunc
+   Sonstiges:  P_EQUIP_TIME, P_LAST_USE, P_DAM_TYPE
+   Verwandt:   QueryArmourByType(L), P_WEAPON, FilterClothing(),
+               FilterArmours()
+   Resistenz:  P_RESISTANCE_STRENGTHS, CheckResistance(L)
 
 28.Jul 2014 Gloinson
diff --git a/doc/lfun/QueryDisguise b/doc/lfun/QueryDisguise
index c30aa3f..3cf4b8d 100644
--- a/doc/lfun/QueryDisguise
+++ b/doc/lfun/QueryDisguise
@@ -1,29 +1,51 @@
+
 QueryDisguise()
+***************
 
-FUNKTION:
-     mixed QueryDisguise();
 
-DEFINIERT IN:
-     ???
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   mixed QueryDisguise();
 
-BESCHREIBUNG:
-     Prueft, ob der Spieler durch einen Shadow (meistens der Tarnhelm) 
-     'manipuliert' ist.
 
-RUeCKGABEWERT:
-     0, wenn dies nicht der Fall ist, ansonsten die Beschreibung des Shadow
-     vom Typ string.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     In Waffen / Ruestungen u.ae. die P_RESTRICTIONS gesetzt haben,
-     eruebrigt sich eine Abfrage auf QueryDisguise(), da dies bereits im
-     restriction_checker erledigt wird.
+   ???
 
-SIEHE AUCH:
-     P_RESTRICTIONS, /std/restriction_checker.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob der Spieler durch einen Shadow (meistens der Tarnhelm)
+   'manipuliert' ist.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn dies nicht der Fall ist, ansonsten die Beschreibung des Shadow
+   vom Typ string.
+
+
+BEMERKUNGEN
+===========
+
+   In Waffen / Ruestungen u.ae. die P_RESTRICTIONS gesetzt haben,
+   eruebrigt sich eine Abfrage auf QueryDisguise(), da dies bereits im
+   restriction_checker erledigt wird.
+
+
+SIEHE AUCH
+==========
+
+   P_RESTRICTIONS, /std/restriction_checker.c
+
 Last modified: Mon Mar 26 14:48:20 2001 von Tilly
diff --git a/doc/lfun/QueryDoorKey b/doc/lfun/QueryDoorKey
index cfd6a29..f606c52 100644
--- a/doc/lfun/QueryDoorKey
+++ b/doc/lfun/QueryDoorKey
@@ -1,48 +1,71 @@
-FUNKTION:
-     mixed QueryDoorKey();
 
-DEFINIERT IN:
-     versch. Schluesseln
-
-ARGUMENTE:
-     keine
-
-BESCHREIBUNG:
-     Diese Funktion wird in einem Schluessel aufgerufen, wenn man mit diesem
-     eine Tuer auf- oder abschliessen will. Anhand des Rueckgabewertes wird
-     entschieden, ob der Schluessel passt oder nicht.
-
-RUECKGABEWERT:
-     String oder Array von Strings der Raumpfade, deren gemeinsame Tueren
-     sich mit diesem Schluessel auf- bzw. abschliessen lassen. Die Keys sind
-     dabei die Raumpfade, getrennt durch ein ":". Dabei muessen die Pfade
-     in lexikographischer (alphabetischer) Reihenfolge sortiert sein:
-
-     "<name_raum_1>:<name_raum_2>"
-
-BEISPIELE:
-     Ein Schluessel, mit dem sich eine einzige Tuer oeffnen laesst (falls es
-     jemals eine Tuer zwischen Karate- und Abenteurergilde geben sollte...):
-
-     string QueryDoorKey()
-     {
-       return "/gilden/abenteurer:/gilden/karate";
-     }
-
-     Ein Schluessel, der in mehreren Tueren passt:
-
-     string* QueryDoorKey()
-     {
-       return ({ "/gilden/abenteurer:/players/wargon/workroom",
-                 "/gilden/abenteurer:/gilden/karate",
-                 "/players/jof/workroom:/players/wargon/workroom"
-              });
-     }
+QueryDoorKey()
+**************
 
 
-SIEHE AUCH:
-    NewDoor(), QueryDoorStatus(), SetDoorStatus(), P_DOOR_INFOS,
-    /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+FUNKTION
+========
 
------------------------------------------------------------------------------
+   mixed QueryDoorKey();
+
+
+DEFINIERT IN
+============
+
+   versch. Schluesseln
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in einem Schluessel aufgerufen, wenn man mit diesem
+   eine Tuer auf- oder abschliessen will. Anhand des Rueckgabewertes wird
+   entschieden, ob der Schluessel passt oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   String oder Array von Strings der Raumpfade, deren gemeinsame Tueren
+   sich mit diesem Schluessel auf- bzw. abschliessen lassen. Die Keys sind
+   dabei die Raumpfade, getrennt durch ein ":". Dabei muessen die Pfade
+   in lexikographischer (alphabetischer) Reihenfolge sortiert sein:
+
+   "<name_raum_1>:<name_raum_2>"
+
+
+BEISPIELE
+=========
+
+   Ein Schluessel, mit dem sich eine einzige Tuer oeffnen laesst (falls es
+   jemals eine Tuer zwischen Karate- und Abenteurergilde geben sollte...):
+
+   string QueryDoorKey()
+   {
+     return "/gilden/abenteurer:/gilden/karate";
+   }
+
+   Ein Schluessel, der in mehreren Tueren passt:
+
+   string* QueryDoorKey()
+   {
+     return ({ "/gilden/abenteurer:/players/wargon/workroom",
+               "/gilden/abenteurer:/gilden/karate",
+               "/players/jof/workroom:/players/wargon/workroom"
+            });
+   }
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorStatus(), SetDoorStatus(), P_DOOR_INFOS,
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
 Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/lfun/QueryDoorStatus b/doc/lfun/QueryDoorStatus
index c1ee6b8..74f7034 100644
--- a/doc/lfun/QueryDoorStatus
+++ b/doc/lfun/QueryDoorStatus
@@ -1,28 +1,48 @@
-FUNKTION:
-     int QueryDoorStatus(string dest);
 
-DEFINIERT IN:
-     /obj/doormaster.c
-
-ARGUMENTE:
-     <dest> = Zielraum der Tuer.
-
-BESCHREIBUNG:
-     Es wird der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt,
-     ermittelt.
-
-RUeCKGABEWERT:
-     0 bei nicht vorhandene Tuer, ansonsten einer der folgenden Zustaende (aus
-       <doorroom.h>):
-
-       D_STATUS_LOCKED - Tuer abgeschlossen
-       D_STATUS_CLOSED - Tuer geschlossen
-       D_STATUS_OPEN   - Tuer geoeffnet
+QueryDoorStatus()
+*****************
 
 
-SIEHE AUCH:
-    NewDoor(), QueryDoorKey(), SetDoorStatus(), P_DOOR_INFOS,
-    /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+FUNKTION
+========
 
------------------------------------------------------------------------------
+   int QueryDoorStatus(string dest);
+
+
+DEFINIERT IN
+============
+
+   /obj/doormaster.c
+
+
+ARGUMENTE
+=========
+
+   <dest> = Zielraum der Tuer.
+
+
+BESCHREIBUNG
+============
+
+   Es wird der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt,
+   ermittelt.
+
+
+RUeCKGABEWERT
+=============
+
+   0 bei nicht vorhandene Tuer, ansonsten einer der folgenden Zustaende (aus
+     <doorroom.h>):
+
+     D_STATUS_LOCKED - Tuer abgeschlossen
+     D_STATUS_CLOSED - Tuer geschlossen
+     D_STATUS_OPEN   - Tuer geoeffnet
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), SetDoorStatus(), P_DOOR_INFOS,
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
 Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/lfun/QueryDu b/doc/lfun/QueryDu
index 9be62a8..aa184cc 100644
--- a/doc/lfun/QueryDu
+++ b/doc/lfun/QueryDu
@@ -1,39 +1,61 @@
+
 QueryDu()
+*********
 
-FUNKTION:
-     varargs string QueryDu(int casus, int gender, int anzahl);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     casus
-          Der Fall fuer die Anrede.
+   varargs string QueryDu(int casus, int gender, int anzahl);
 
-     gender
-          Das Geschlecht des anzuredenden Objektes.
 
-     anzahl
-          Ist nur ein Objekt anzusprechen oder mehrere?
+DEFINIERT IN
+============
 
-BESCHREIBUNG:
-     Diese Funktion liefert die dem Anlass entsprechende Anrede fuer ein
-     Objekt.
+   /std/thing/language.c
 
-RUeCKGABEWERT:
-     Ein String mit der Anrede.
 
-BEISPIELE:
+ARGUMENTE
+=========
 
-     printf("%s setzt %s auf den Boden.\n",
-           capitalize(QueryDu(WER, TP->QueryProp(P_GENDER), SINGULAR),
-           QueryDu(WEN, TP->QueryProp(P_GENDER), SINGULAR));
+   casus
+        Der Fall fuer die Anrede.
 
-     (In den meisten Faellen kann man hier auch direkt "Du" und "dich"
-     einsetzen.)
+   gender
+        Das Geschlecht des anzuredenden Objektes.
 
-SIEHE AUCH:
-     /std/thing/language.c
-     QueryPossPronoun(), QueryOwn(), QueryPronoun()
-----------------------------------------------------------------------------
+   anzahl
+        Ist nur ein Objekt anzusprechen oder mehrere?
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die dem Anlass entsprechende Anrede fuer ein
+   Objekt.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String mit der Anrede.
+
+
+BEISPIELE
+=========
+
+   printf("%s setzt %s auf den Boden.\n",
+         capitalize(QueryDu(WER, TP->QueryProp(P_GENDER), SINGULAR),
+         QueryDu(WEN, TP->QueryProp(P_GENDER), SINGULAR));
+
+   (In den meisten Faellen kann man hier auch direkt "Du" und "dich"
+   einsetzen.)
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+   QueryPossPronoun(), QueryOwn(), QueryPronoun()
+
 Last modified: Wed May 8 10:22:27 1996 by Wargon
diff --git a/doc/lfun/QueryEnemies b/doc/lfun/QueryEnemies
index 7c393b4..fc00c0e 100644
--- a/doc/lfun/QueryEnemies
+++ b/doc/lfun/QueryEnemies
@@ -1,33 +1,54 @@
-FUNKTION:
-	mixed QueryEnemies();
 
-DEFINIERT IN:
-	/std/living/combat.c
+QueryEnemies()
+**************
 
-ARGUMENTE:
-	keine
 
-RUeCKGABEWERT:
-	Array mit Array aus bekannten Gegnern und Array aus Zeiten
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Diese Funktion enthaelt ein Array, das zwei Elemente enthaelt, die
-	wiederum Arrays sind:
-	  1. Array: Die bekannten Gegner als Objektpointer.
-	  2. Array: Die zugeordneten Zeiten, wie lange ein Gegner noch als
-	            solcher bekannt sein soll.
-	Im Normalfall wird ein Gegner dann bekannt, wenn man gezielt
-	jemanden atackiert, oder wenn man einen Angriff abwehren muss.
-	Dann wird der Gegner intern abgespeichert, und es wird eine Zeit
-	gesetzt, die dann runtergezaehlt wird. Ist die Zeit auf 0, so wird
-	der Gegner wieder automatisch ausgetragen.
-	(Standardmaessig betraegt diese Zeit 600 Sekunden (300 Heartbeats).)
-	Man kann sich die Gegner auch in Form eines Mappings zurueckgeben
-	lassen. Dies erreicht man mittels der Funktion GetEnemies().
+   mixed QueryEnemies();
 
-SIEHE AUCH:
-	Kill(), Attack(), Defend(), do_my_heart_beat(), PresentEnemies(),
-	GetEnemies(), SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit Array aus bekannten Gegnern und Array aus Zeiten
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion enthaelt ein Array, das zwei Elemente enthaelt, die
+   wiederum Arrays sind:
+     1. Array: Die bekannten Gegner als Objektpointer.
+     2. Array: Die zugeordneten Zeiten, wie lange ein Gegner noch als
+               solcher bekannt sein soll.
+   Im Normalfall wird ein Gegner dann bekannt, wenn man gezielt
+   jemanden atackiert, oder wenn man einen Angriff abwehren muss.
+   Dann wird der Gegner intern abgespeichert, und es wird eine Zeit
+   gesetzt, die dann runtergezaehlt wird. Ist die Zeit auf 0, so wird
+   der Gegner wieder automatisch ausgetragen.
+   (Standardmaessig betraegt diese Zeit 600 Sekunden (300 Heartbeats).)
+   Man kann sich die Gegner auch in Form eines Mappings zurueckgeben
+   lassen. Dies erreicht man mittels der Funktion GetEnemies().
+
+
+SIEHE AUCH
+==========
+
+   Kill(), Attack(), Defend(), do_my_heart_beat(), PresentEnemies(),
+   GetEnemies(), SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
+
 29.12.2007, Zesstra
diff --git a/doc/lfun/QueryFlaw b/doc/lfun/QueryFlaw
index 8137d81..e12a119 100644
--- a/doc/lfun/QueryFlaw
+++ b/doc/lfun/QueryFlaw
@@ -1,41 +1,63 @@
+
 QueryFlaw()
+***********
 
-FUNKTION:
-     mixed *QueryFlaw();
 
-DEFINIERT IN:
-     /std/armour/combat.c,
-     /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   mixed *QueryFlaw();
 
-BESCHREIBUNG:
-     QueryFlaw() liefert Informationen ueber den Grad der Abnutzung der
-     Waffe bzw. Ruestung. Der Zustand wird als Array mit der Zahl der
-     TakeFlaw()-Aufrufe und dem Datum des ersten TakeFlaw()-Aufrufs
-     zurueckgegeben.
 
-RUeCKGABEWERT:
-     Ein Array mit drei Elementen:
-       1. der aktuelle Zaehlerstand
-       2. Zeit der ersten Benutzung
-       3. die Zeit der ersten Benutzung als String
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Den aktuellen Abnutzungsgrad einer Ruestung kann man sich wie folgt
-     anzeigen lassen:
+   /std/armour/combat.c,
+   /std/weapon/combat.c
 
-     mixed *flaw;
 
-     flaw = ruestung->QueryFlaw();
+ARGUMENTE
+=========
 
-     printf("Zaehlerstand: %d, erster Schlag: %s\n", flaw[0], flaw[2]);
-     // oder analog:
-     printf("Zaehlerstand: %d, erster Schlag: %s\n", flaw[0], dtime(flaw[1]));
+   keine
 
-SIEHE AUCH:
-     TakeFlaw(), /std/armour/combat.c, /std/weapon/combat.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   QueryFlaw() liefert Informationen ueber den Grad der Abnutzung der
+   Waffe bzw. Ruestung. Der Zustand wird als Array mit der Zahl der
+   TakeFlaw()-Aufrufe und dem Datum des ersten TakeFlaw()-Aufrufs
+   zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array mit drei Elementen:
+     1. der aktuelle Zaehlerstand
+     2. Zeit der ersten Benutzung
+     3. die Zeit der ersten Benutzung als String
+
+
+BEISPIELE
+=========
+
+   Den aktuellen Abnutzungsgrad einer Ruestung kann man sich wie folgt
+   anzeigen lassen:
+
+   mixed *flaw;
+
+   flaw = ruestung->QueryFlaw();
+
+   printf("Zaehlerstand: %d, erster Schlag: %s\n", flaw[0], flaw[2]);
+   // oder analog:
+   printf("Zaehlerstand: %d, erster Schlag: %s\n", flaw[0], dtime(flaw[1]));
+
+
+SIEHE AUCH
+==========
+
+   TakeFlaw(), /std/armour/combat.c, /std/weapon/combat.c
+
 Last modified: Wed May 8 10:22:32 1996 by Wargon
diff --git a/doc/lfun/QueryGenderString b/doc/lfun/QueryGenderString
index 967a16e..845758f 100644
--- a/doc/lfun/QueryGenderString
+++ b/doc/lfun/QueryGenderString
@@ -1,23 +1,42 @@
+
 QueryGenderString()
+*******************
 
-FUNKTION:
-     string QueryGenderString();
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   string QueryGenderString();
 
-BESCHREIBUNG:
-     Es wird ein String mit dem Geschlecht des Objektes zurueckgegeben
-     ("maennlich", "weiblich", "saechlich").
 
-RUeCKGABEWERT:
-     Der String mit dem Geschlecht.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/thing/language.c
+   /std/thing/language.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein String mit dem Geschlecht des Objektes zurueckgegeben
+   ("maennlich", "weiblich", "saechlich").
+
+
+RUeCKGABEWERT
+=============
+
+   Der String mit dem Geschlecht.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+
 Last modified: Wed May 8 10:23:00 1996 by Wargon
diff --git a/doc/lfun/QueryGramsPerUnits b/doc/lfun/QueryGramsPerUnits
index 3549e54..62d5580 100644
--- a/doc/lfun/QueryGramsPerUnits
+++ b/doc/lfun/QueryGramsPerUnits
@@ -1,31 +1,53 @@
+
 QueryGramsPerUnits()
+********************
 
-FUNKTION:
-     int *QueryGramsPerUnits();
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int *QueryGramsPerUnits();
 
-BESCHREIBUNG:
-     Liefert das Gewichtsverhaeltnis fuer die Einheiten zurueck.
 
-RUeCKGABEWERT:
-     Ein Array von zwei Zahlen. Die erste Zahl ist das Gewicht der in der
-     zweiten Zahl angegebenen Einheiten.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Steht im Unit-Objekt folgende Gewichtszuweisung:
+   /std/unit.c
 
-       SetGramsPerUnits(4,1);
 
-     so liefert QueryGramsPerUnits() als Ergebnis ({4, 1}).
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     SetCoinsPerUnits(), QueryCoinsPerUnits() SetGramsPerUnits(),
-     /std/unit.c
+   keine
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Liefert das Gewichtsverhaeltnis fuer die Einheiten zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von zwei Zahlen. Die erste Zahl ist das Gewicht der in der
+   zweiten Zahl angegebenen Einheiten.
+
+
+BEISPIELE
+=========
+
+   Steht im Unit-Objekt folgende Gewichtszuweisung:
+
+     SetGramsPerUnits(4,1);
+
+   so liefert QueryGramsPerUnits() als Ergebnis ({4, 1}).
+
+
+SIEHE AUCH
+==========
+
+   SetCoinsPerUnits(), QueryCoinsPerUnits() SetGramsPerUnits(),
+   /std/unit.c
+
 Last modified: Wed May 8 10:22:39 1996 by Wargon
diff --git a/doc/lfun/QueryGroupedKeys b/doc/lfun/QueryGroupedKeys
index ce7e316..5101e8d 100644
--- a/doc/lfun/QueryGroupedKeys
+++ b/doc/lfun/QueryGroupedKeys
@@ -1,26 +1,44 @@
+
 QueryGroupedKeys()
+******************
 
-FUNKTION:
-    mixed *QueryGroupedKeys()
 
-DEFINIERT IN:
-    /secure/questmaster.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   mixed *QueryGroupedKeys()
 
-RUECKGABEWERT:
-    Array mit Arrays mit den Schluesselwoertern der Quests
 
-BESCHREIBUNG:
-    Diese Funktion liefert ein Array mit mehreren Arrays zurueck, die
-    die Schluesselwoerter der Quests enthalten. Dabei enthaelt das 
-    erste Array die Schluesselwoerter der Quests der ersten Gruppe etc.
-    Das letzte Array enthaelt die Gruppe der optionalen Quests.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GiveQuest, QueryQuest, /secure/questmaster.h
+   /secure/questmaster.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Array mit Arrays mit den Schluesselwoertern der Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Array mit mehreren Arrays zurueck, die
+   die Schluesselwoerter der Quests enthalten. Dabei enthaelt das
+   erste Array die Schluesselwoerter der Quests der ersten Gruppe etc.
+   Das letzte Array enthaelt die Gruppe der optionalen Quests.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h
+
 Zuletzt geaendert: Son, 19. Nov 2000, 13:22:15 von Zook.
-
diff --git a/doc/lfun/QueryGuest b/doc/lfun/QueryGuest
index cc9971b..61cfb04 100644
--- a/doc/lfun/QueryGuest
+++ b/doc/lfun/QueryGuest
@@ -1,33 +1,54 @@
+
 QueryGuest()
-FUNKTION:
-     int QueryGuest();
+************
 
-DEFINIERT IN:
-     /std/player/base
 
-BESCHREIBUNG:
-     Auf der uid basierende Hilfsfunktion, um Gaeste zu identifizieren.
+FUNKTION
+========
 
-RUeCKGABEWERT:
-     1, wenn Spielerobjekt ein Gast ist; 0 sonst
+   int QueryGuest();
 
-BEISPIELE:
-     if(this_interactive()->QueryGuest())
-     {
-       (this_interactive()->ReceiveMsg(
-          "Wir bedienen hier nur ordentliche Charaktere.",
-          MT_LISTEN, MA_SAY,
-          "Der Wirt sagt: ") != MSG_SENSE_BLOCK) ||
-       (this_interactive()->ReceiveMsg(
-          "Der Wirt gestikuliert dich hinaus.",
-          MT_LOOK, MA_LOOK) != MSG_SENSE_BLOCK) ||
-       (this_interactive()->ReceiveMsg(
-          "Irgendwer stupst dich an. Du sollst wohl gehen.",
-          MT_FEEL, MA_FEEL));
-       return 1;
-     }
 
-SIEHE AUCH:
-     getuid()
+DEFINIERT IN
+============
+
+   /std/player/base
+
+
+BESCHREIBUNG
+============
+
+   Auf der uid basierende Hilfsfunktion, um Gaeste zu identifizieren.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn Spielerobjekt ein Gast ist; 0 sonst
+
+
+BEISPIELE
+=========
+
+   if(this_interactive()->QueryGuest())
+   {
+     (this_interactive()->ReceiveMsg(
+        "Wir bedienen hier nur ordentliche Charaktere.",
+        MT_LISTEN, MA_SAY,
+        "Der Wirt sagt: ") != MSG_SENSE_BLOCK) ||
+     (this_interactive()->ReceiveMsg(
+        "Der Wirt gestikuliert dich hinaus.",
+        MT_LOOK, MA_LOOK) != MSG_SENSE_BLOCK) ||
+     (this_interactive()->ReceiveMsg(
+        "Irgendwer stupst dich an. Du sollst wohl gehen.",
+        MT_FEEL, MA_FEEL));
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   getuid()
 
 14. Mai 2015 Gloinson
diff --git a/doc/lfun/QueryHealInfo b/doc/lfun/QueryHealInfo
index 07b7542..cc42fbc 100644
--- a/doc/lfun/QueryHealInfo
+++ b/doc/lfun/QueryHealInfo
@@ -1,26 +1,45 @@
+
 QueryHealInfo()
+***************
 
-FUNKTION:
-     string QueryHealInfo();
 
-DEFINIERT IN:
-     /std/corpse.c,
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   string QueryHealInfo();
 
-BESCHREIBUNG:
-     QueryHealInfo() liefert einen Standardtext zurueck, der grob Auskunft 
-     darueber gibt, welche Auswirkungen das Essen einer Leiche haette. 
-     Diese Info kann z.B. von Gilden verwendet werden, die P_HEAL (s.dort)
-     einer Leiche nicht selbst auswerten wollen.
 
-RUeCKGABEWERT:
-     Ein nicht umbrochener String. Fuer Zeilenumbrueche kann derjenige,
-     der den Text ausliest, selbst sorgen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/corpse.c, P_HEAL
+   /std/corpse.c,
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   QueryHealInfo() liefert einen Standardtext zurueck, der grob Auskunft
+   darueber gibt, welche Auswirkungen das Essen einer Leiche haette.
+   Diese Info kann z.B. von Gilden verwendet werden, die P_HEAL (s.dort)
+   einer Leiche nicht selbst auswerten wollen.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein nicht umbrochener String. Fuer Zeilenumbrueche kann derjenige,
+   der den Text ausliest, selbst sorgen.
+
+
+SIEHE AUCH
+==========
+
+   /std/corpse.c, P_HEAL
+
 Last modified: 31.03.2008, Arathorn
diff --git a/doc/lfun/QueryMaterial b/doc/lfun/QueryMaterial
index 71e3a33..94a5367 100644
--- a/doc/lfun/QueryMaterial
+++ b/doc/lfun/QueryMaterial
@@ -1,34 +1,62 @@
+
+QueryMaterial()
+***************
+
+
 QueryMaterial(L)
-FUNKTION:
-     int QueryMaterial(string mat)
+================
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     string mat -	Material, auf das getestet werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Testet, ob ein Gegenstand aus dem angegebenen Material besteht
-     und gibt dessen Anteil zurueck.
-     Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+   int QueryMaterial(string mat)
 
-RUECKGABEWERT:
-     Anteil in Prozent.
 
-BEISPIELE:
-     if(ob->QueryMaterial(MAT_IVORY)<=0)
-       write("Daraus kannst Du keine Billiardkugeln schnitzen!\n");
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterialGroup(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+   /std/thing/description.c
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   string mat -       Material, auf das getestet werden soll
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob ein Gegenstand aus dem angegebenen Material besteht
+   und gibt dessen Anteil zurueck.
+   Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+
+
+RUECKGABEWERT
+=============
+
+   Anteil in Prozent.
+
+
+BEISPIELE
+=========
+
+   if(ob->QueryMaterial(MAT_IVORY)<=0)
+     write("Daraus kannst Du keine Billiardkugeln schnitzen!\n");
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/QueryMaterialGroup b/doc/lfun/QueryMaterialGroup
index c3b6860..3365f73 100644
--- a/doc/lfun/QueryMaterialGroup
+++ b/doc/lfun/QueryMaterialGroup
@@ -1,50 +1,81 @@
+
+QueryMaterialGroup()
+********************
+
+
 QueryMaterialGroup(L)
-FUNKTION:
-     int QueryMaterialGroup(string grp)
+=====================
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     string grp		- Materialgruppe, auf die getestet werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Liefert eine Angabe, zu welchem Anteil das Objekt aus Materialien
-     dieser Gruppe besteht.
-     Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+   int QueryMaterialGroup(string grp)
 
-RUECKGABEWERT:
-     Anteil in Prozent.
 
-BEMERKUNGEN:
-     Ruft MaterialGroup() an der MATERIALDB.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     // kann man damit was anfangen?
-     if(ob->QueryMaterialGroup(MATGROUP_METAL)<50)
-       write("Der Schmied sagt: Daraus kann ich kein Schwert fertigen.\n");
+   /std/thing/description.c
 
-     // verbrennt das Ding?
-     if(ob->QueryMaterialGroup(MATGROUP_INFLAMMABLE)>50) {
-       write(ob->Name(WER)+" geht in Flammen auf.\n");
-       ob->remove();
-     }
 
-     // wie magnetisch ist es denn?
-     if(ob->QueryMaterialGroup(MATGROUP_MAGNETIC)>50)
-      write(break_string(
-       ob->Name(WER)+" flutscht Dir aus der Hand und bleibt am Magneten "
-		     "kleben!",78));
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterial(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+   string grp         - Materialgruppe, auf die getestet werden soll
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Liefert eine Angabe, zu welchem Anteil das Objekt aus Materialien
+   dieser Gruppe besteht.
+   Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+
+
+RUECKGABEWERT
+=============
+
+   Anteil in Prozent.
+
+
+BEMERKUNGEN
+===========
+
+   Ruft MaterialGroup() an der MATERIALDB.
+
+
+BEISPIELE
+=========
+
+   // kann man damit was anfangen?
+   if(ob->QueryMaterialGroup(MATGROUP_METAL)<50)
+     write("Der Schmied sagt: Daraus kann ich kein Schwert fertigen.\n");
+
+   // verbrennt das Ding?
+   if(ob->QueryMaterialGroup(MATGROUP_INFLAMMABLE)>50) {
+     write(ob->Name(WER)+" geht in Flammen auf.\n");
+     ob->remove();
+   }
+
+   // wie magnetisch ist es denn?
+   if(ob->QueryMaterialGroup(MATGROUP_MAGNETIC)>50)
+    write(break_string(
+     ob->Name(WER)+" flutscht Dir aus der Hand und bleibt am Magneten "
+                   "kleben!",78));
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/QueryMaxQP b/doc/lfun/QueryMaxQP
index 9fa0f5a..7b5aba2 100644
--- a/doc/lfun/QueryMaxQP
+++ b/doc/lfun/QueryMaxQP
@@ -1,27 +1,45 @@
+
 QueryMaxQP()
+************
 
-FUNKTION:
-    int QueryMaxQP()
 
-DEFINIERT IN:
-    /secure/questmaster.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   int QueryMaxQP()
 
-RUECKGABEWERT:
-    Abenteuerpunkte der Pflichtquests
 
-BESCHREIBUNG:
-    Diese Funktion liefert die Abenteuerpunkte der als Pflichtquest
-    eingetragenen Abenteuer zurueck. Pflichtquest bedeutet entweder,
-    dass die Quest zwingend geloest werden muss oder dass sie zu
-    der 80%-Regel gehoert.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
-    QueryOptQP, QueryTotalQP
+   /secure/questmaster.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte der Pflichtquests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der als Pflichtquest
+   eingetragenen Abenteuer zurueck. Pflichtquest bedeutet entweder,
+   dass die Quest zwingend geloest werden muss oder dass sie zu
+   der 80%-Regel gehoert.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryOptQP, QueryTotalQP
+
 Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
-
diff --git a/doc/lfun/QueryMoney b/doc/lfun/QueryMoney
index 899b50e..775a65c 100644
--- a/doc/lfun/QueryMoney
+++ b/doc/lfun/QueryMoney
@@ -1,28 +1,49 @@
+
 QueryMoney()
-FUNKTION:
-     int QueryMoney()
+************
 
-DEFINIERT IN:
-     /std/player/moneyhandler.c
 
-BESCHREIBUNG:
-     Testet, ob ein Spieler, Objekt, Raum oder Npc ueber eine definierte 
-     Geldmenge verfuegt, oder nicht.
+FUNKTION
+========
 
-RUECKGABEWERT:
-     Geldmenge im Besitz des abgefragten Spielers
+   int QueryMoney()
 
-BEISPIELE:
-     int i;
-     i=50+random(10);
-     if(!this_player()->QueryMoney())
-       write("Du besitzt keine Muenzen!\n");
-     if(this_player()->QueryMoney() < i)
-       write("Du besitzt nicht die erforderlichen "+i+" Muenzen.\n");
 
-SIEHE AUCH:
-     Geldhandling:	AddMoney(L)
-     Zentralbank:	PayIn(L), WithDraw(L), _query_current_money(L)
-     Sonstiges:		/items/money.c
+DEFINIERT IN
+============
+
+   /std/player/moneyhandler.c
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob ein Spieler, Objekt, Raum oder Npc ueber eine definierte
+   Geldmenge verfuegt, oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   Geldmenge im Besitz des abgefragten Spielers
+
+
+BEISPIELE
+=========
+
+   int i;
+   i=50+random(10);
+   if(!this_player()->QueryMoney())
+     write("Du besitzt keine Muenzen!\n");
+   if(this_player()->QueryMoney() < i)
+     write("Du besitzt nicht die erforderlichen "+i+" Muenzen.\n");
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L)
+   Zentralbank:       PayIn(L), WithDraw(L), _query_current_money(L)
+   Sonstiges:         /items/money.c
 
 Last modified: Die,  1. Aug 2000, 16:39:06 by Tilly
diff --git a/doc/lfun/QueryName b/doc/lfun/QueryName
index d26cd1a..71e65e3 100644
--- a/doc/lfun/QueryName
+++ b/doc/lfun/QueryName
@@ -1,24 +1,43 @@
+
 QueryName()
+***********
 
-FUNKTION:
-     mixed QueryName();
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   mixed QueryName();
 
-BESCHREIBUNG:
-     DIESE FUNKTION SOLLTE NICHT MEHR BENUTZT WERDEN!
-     Es wird der Inhalt der Property P_NAME zuueckgegeben; dies laesst sich
-     jedoch genau so gut mit QueryProp(P_NAME) bewerkstelligen!
 
-RUeCKGABEWERT:
-     String oder Array von Strings mit dem Namen des Objektes.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     QueryProp(), Name(), name(), /std/thing/description.c
+   /std/thing/description.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   DIESE FUNKTION SOLLTE NICHT MEHR BENUTZT WERDEN!
+   Es wird der Inhalt der Property P_NAME zuueckgegeben; dies laesst sich
+   jedoch genau so gut mit QueryProp(P_NAME) bewerkstelligen!
+
+
+RUeCKGABEWERT
+=============
+
+   String oder Array von Strings mit dem Namen des Objektes.
+
+
+SIEHE AUCH
+==========
+
+   QueryProp(), Name(), name(), /std/thing/description.c
+
 Last modified: Sat Aug  3 11:21:05 2002 by Vanion
diff --git a/doc/lfun/QueryOpenMiniQuestsForPlayer b/doc/lfun/QueryOpenMiniQuestsForPlayer
index 40246ae..f43d7cc 100644
--- a/doc/lfun/QueryOpenMiniQuestsForPlayer
+++ b/doc/lfun/QueryOpenMiniQuestsForPlayer
@@ -1,54 +1,80 @@
-FUNKTION:
-    mapping QueryOpenMiniQuestsForPlayer(object player)
 
-DEFINIERT IN:
-    /secure/questmaster
+QueryOpenMiniQuestsForPlayer()
+******************************
 
-BESCHREIBUNG:
-    Diese Funktion gibt die Liste der offenen Miniquests des Spielers als
-    Mapping zurueck.
 
-ARGUMENTE:
-    player - das interessierende Spielerobjekt
+FUNKTION
+========
 
-RUECKGABEWERTE:
-    Mapping mit der Liste der Miniquests, fuer die das abfragende Objekt
-    zustaendig ist, oder leeres Mapping, wenn der Spieler keine MQs mehr
-    offen hat.
+   mapping QueryOpenMiniQuestsForPlayer(object player)
 
-    Die Liste enthaelt die Miniquestnummer als Key. Diesem sind zwei Werte
-    zugeordnet: zum einen ein Miniquest-Aufgabentext, und zum anderen -
-    falls der Spieler eine der Vorbedingungen fuer die Miniquest nicht
-    erfuellt - ein Hinweistext, der Auskunft gibt, welche Bedingung noch
-    zu erfuellen ist ("Seherstatus fehlt"). Diese Hinweistexte entsprechen
-    denen aus check_restrictions() in /std/restriction_checker.c. Der 
-    jeweils andere Text wird auf 0 gesetzt.
 
-    Die Struktur des Mappings ist daher folgende:
-      ([ MQ-Nummer : <Aufgabenstellung> ; <Hinderungsgrund> ])
-    
-    Beispiel: ein Spieler hat die Miniquests 18 und 49 noch nicht geloest,
-    erfuellt aber nur fuer Miniquest 49 die Anforderungen. Miniquest 18
-    erfordert den Seherstatus. Dann saehe das Mapping so aus:
-      ([ 18 : 0                    ; "Dazu musst Du erst Seher werden.\n",
-         49 : "Aufgabentext_zu_49" ; 0 ])
+DEFINIERT IN
+============
 
-    Jedes abfragende Objekt muss daher dieses Mapping zunaecht geeignet
-    auf seinen Inhalt pruefen, um zu ermitteln, welche Meldung jeweils
-    auszugeben ist.
+   /secure/questmaster
 
-BEMERKUNGEN:
-    Das abfragende Objekt muss von einem Erzmagier oder Gott (z.B. dem
-    zustaendigen Quest-EM) im Questmaster als zugriffsberechtigt bei den-
-    jenigen Miniquests eingetragen sein, fuer die es die entsprechenden
-    Miniquest-Hinweise ausgeben darf. Diese Berechtigung ist mit dem 
-    Quest-EM abzustimmen. Anderen Objekten wird ein leeres Mapping zurueck-
-    gegeben.
 
-SIEHE AUCH:
-    AddMiniQuest(L), ChangeMiniQuest(L)
-    P_RESTRICTIONS
-    erzmagier
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Diese Funktion gibt die Liste der offenen Miniquests des Spielers als
+   Mapping zurueck.
+
+
+ARGUMENTE
+=========
+
+   player - das interessierende Spielerobjekt
+
+
+RUECKGABEWERTE
+==============
+
+   Mapping mit der Liste der Miniquests, fuer die das abfragende Objekt
+   zustaendig ist, oder leeres Mapping, wenn der Spieler keine MQs mehr
+   offen hat.
+
+   Die Liste enthaelt die Miniquestnummer als Key. Diesem sind zwei Werte
+   zugeordnet: zum einen ein Miniquest-Aufgabentext, und zum anderen -
+   falls der Spieler eine der Vorbedingungen fuer die Miniquest nicht
+   erfuellt - ein Hinweistext, der Auskunft gibt, welche Bedingung noch
+   zu erfuellen ist ("Seherstatus fehlt"). Diese Hinweistexte entsprechen
+   denen aus check_restrictions() in /std/restriction_checker.c. Der
+   jeweils andere Text wird auf 0 gesetzt.
+
+   Die Struktur des Mappings ist daher folgende:
+     ([ MQ-Nummer : <Aufgabenstellung> ; <Hinderungsgrund> ])
+
+
+
+   Beispiel: ein Spieler hat die Miniquests 18 und 49 noch nicht geloest,
+   erfuellt aber nur fuer Miniquest 49 die Anforderungen. Miniquest 18
+   erfordert den Seherstatus. Dann saehe das Mapping so aus:
+     ([ 18 : 0                    ; "Dazu musst Du erst Seher werden.\n",
+        49 : "Aufgabentext_zu_49" ; 0 ])
+
+   Jedes abfragende Objekt muss daher dieses Mapping zunaecht geeignet
+   auf seinen Inhalt pruefen, um zu ermitteln, welche Meldung jeweils
+   auszugeben ist.
+
+
+BEMERKUNGEN
+===========
+
+   Das abfragende Objekt muss von einem Erzmagier oder Gott (z.B. dem
+   zustaendigen Quest-EM) im Questmaster als zugriffsberechtigt bei den-
+   jenigen Miniquests eingetragen sein, fuer die es die entsprechenden
+   Miniquest-Hinweise ausgeben darf. Diese Berechtigung ist mit dem
+   Quest-EM abzustimmen. Anderen Objekten wird ein leeres Mapping zurueck-
+   gegeben.
+
+
+SIEHE AUCH
+==========
+
+   AddMiniQuest(L), ChangeMiniQuest(L)
+   P_RESTRICTIONS
+   erzmagier
+
 Last modified: 6. Juni 2014, Arathorn.
diff --git a/doc/lfun/QueryOwn b/doc/lfun/QueryOwn
index b1a55f6..22e9e5f 100644
--- a/doc/lfun/QueryOwn
+++ b/doc/lfun/QueryOwn
@@ -1,32 +1,53 @@
+
 QueryOwn()
+**********
 
-FUNKTION:
-     varargs string QueryOwn(int casus)
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     casus
-          Der Fall fuer die Anrede.
+   varargs string QueryOwn(int casus)
 
-BESCHREIBUNG:
-     Diese Funktion liefert das dem Anlass entsprechende Possessiv-
-     pronomen fuer den Spieler selber (Dein/Deine).
 
-RUeCKGABEWERT:
-     Ein String mit dem Pronomen.
+DEFINIERT IN
+============
 
-BEISPIELE:
+   /std/thing/language.c
 
-     printf("%s %s loest sich auf.\n",
-           capitalize(obj->QueryOwn(WER)),obj->name(WER));
 
-     (In den meisten Faellen kann man hier auch direkt "Dein" oder "Deine"
-      einsetzen.)
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     /std/thing/language.c
+   casus
+        Der Fall fuer die Anrede.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert das dem Anlass entsprechende Possessiv-
+   pronomen fuer den Spieler selber (Dein/Deine).
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String mit dem Pronomen.
+
+
+BEISPIELE
+=========
+
+   printf("%s %s loest sich auf.\n",
+         capitalize(obj->QueryOwn(WER)),obj->name(WER));
+
+   (In den meisten Faellen kann man hier auch direkt "Dein" oder "Deine"
+    einsetzen.)
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+
 Last modified: Sun Aug 10 23:55:27 2003 by Mandragon
diff --git a/doc/lfun/QueryPassengers b/doc/lfun/QueryPassengers
index a71af67..d6f9331 100644
--- a/doc/lfun/QueryPassengers
+++ b/doc/lfun/QueryPassengers
@@ -1,29 +1,51 @@
+
 QueryPassengers()
+*****************
 
-FUNKTION:
-     object *QueryPassengers();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   object *QueryPassengers();
 
-BESCHREIBUNG:
-     Diese Funktion ermittelt die momentan auf dem Transporter befindlichen
-     Passagiere.
 
-RUeCKGABEWERT:
-     Array von Objekten mit den Passagieren.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Es werden nur die Passagiere zurueckgegeben, die sich in dem
-     eigentlichen Transporterobjekt befinden! Wenn der Transporter noch um
-     zusaetzliche Raeume vergroessert wird, werden unter Umstaenden nicht
-     alle Passagiere erfasst!
+   /std/transport.c
 
-SIEHE AUCH:
-     /std/transport.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt die momentan auf dem Transporter befindlichen
+   Passagiere.
+
+
+RUeCKGABEWERT
+=============
+
+   Array von Objekten mit den Passagieren.
+
+
+BEMERKUNGEN
+===========
+
+   Es werden nur die Passagiere zurueckgegeben, die sich in dem
+   eigentlichen Transporterobjekt befinden! Wenn der Transporter noch um
+   zusaetzliche Raeume vergroessert wird, werden unter Umstaenden nicht
+   alle Passagiere erfasst!
+
+
+SIEHE AUCH
+==========
+
+   /std/transport.c
+
 Last modified: Wed May 8 10:22:48 1996 by Wargon
diff --git a/doc/lfun/QueryPosition b/doc/lfun/QueryPosition
index 4d5179d..08af6fe 100644
--- a/doc/lfun/QueryPosition
+++ b/doc/lfun/QueryPosition
@@ -1,29 +1,48 @@
+
 QueryPosition()
+***************
 
-FUNKTION:
-     string *QueryPosition();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   string *QueryPosition();
 
-BESCHREIBUNG:
-     Es wird ein Array von zwei Strings mit Kennzeichnern der letzten (oder
-     aktuellen) und der naechsten Station im Fahrplan zurueckgegeben.
 
-     Die Kennzeichner sind dabei die ersten Argumente der entsprechenden
-     AddXXX()-Aufrufen, also der Name der Haltestelle bei AddRoute, der Text
-     der Meldung bei AddMsg() und der Name der Funktion bei AddFun().
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     Array mit zwei Strings. Der erste String gibt den Kennzeichner der
-     momentanen Fahrplanstation an, der zweite String den Kennzeichner der
-     naechsten Fahrplanstation.
+   /std/transport.c
 
-SIEHE AUCH:
-     AddRoute(), AddMsg(), AddFun(), /std/transport.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Array von zwei Strings mit Kennzeichnern der letzten (oder
+   aktuellen) und der naechsten Station im Fahrplan zurueckgegeben.
+
+   Die Kennzeichner sind dabei die ersten Argumente der entsprechenden
+   AddXXX()-Aufrufen, also der Name der Haltestelle bei AddRoute, der Text
+   der Meldung bei AddMsg() und der Name der Funktion bei AddFun().
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit zwei Strings. Der erste String gibt den Kennzeichner der
+   momentanen Fahrplanstation an, der zweite String den Kennzeichner der
+   naechsten Fahrplanstation.
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddMsg(), AddFun(), /std/transport.c
+
 Last modified: Wed May 8 10:22:52 1996 by Wargon
diff --git a/doc/lfun/QueryPossPronoun b/doc/lfun/QueryPossPronoun
index c3f4106..90af78a 100644
--- a/doc/lfun/QueryPossPronoun
+++ b/doc/lfun/QueryPossPronoun
@@ -1,48 +1,74 @@
+
 QueryPossPronoun()
+******************
 
-FUNKTION:
-     varargs string QueryPossPronoun(mixed what, int casus, int anzahl);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     what
-          Geschlecht des Objektes, das besessen wird, oder das Objekt
-          selbst.
+   varargs string QueryPossPronoun(mixed what, int casus, int anzahl);
 
-     casus
-          Der Fall, in dem das Objekt besessen wird.
 
-     anzahl
-          Handelt es sich um nur ein Objekt oder um mehrere?
+DEFINIERT IN
+============
 
-BESCHREIBUNG:
-     Diese Funktion gibt ein Possessivpronomen zurueck, das das
-     Besitzverhaeltnis eines Objektes zu diesem Objekt anzeigt.
+   /std/thing/language.c
 
-RUeCKGABEWERT:
-     Das Possessivpronomen im entsprechenden Fall.
 
-BEMERKUNGEN:
-     what und casus beziehen sich auf das Objekt, welches besessen wird, und
-     nicht auf den Besitzer!!!
+ARGUMENTE
+=========
 
-BEISPIELE:
-     Um eine korrekte Ausgabe beim Haendeklatschen zu erreichen, koennte man
-     zB. folgende Zeile verwenden:
+   what
+        Geschlecht des Objektes, das besessen wird, oder das Objekt
+        selbst.
 
-      printf("%s klatscht in %s Haende.\n",this_player()->name(WER),
-           this_player()->QueryPossPronoun(FEMALE, WEN, PLURAL));
+   casus
+        Der Fall, in dem das Objekt besessen wird.
 
-     FEMALE, da "die Hand" weiblich ist, WEN, da man im Akkusativ klatscht,
-     und PLURAL, da man dazu beide Haende braucht.
+   anzahl
+        Handelt es sich um nur ein Objekt oder um mehrere?
 
-     Ein beliebter Fehler ist es, als Fall WESSEN zu verwenden (in WESSEN
-     Haende klatscht man? => in seine).
-     Die richtige Frage waere aber: WEN klatscht man? (in die Haende)
 
-SIEHE AUCH:
-     QueryOwn(), QueryPronoun(), /std/thing/language.c
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt ein Possessivpronomen zurueck, das das
+   Besitzverhaeltnis eines Objektes zu diesem Objekt anzeigt.
+
+
+RUeCKGABEWERT
+=============
+
+   Das Possessivpronomen im entsprechenden Fall.
+
+
+BEMERKUNGEN
+===========
+
+   what und casus beziehen sich auf das Objekt, welches besessen wird, und
+   nicht auf den Besitzer!!!
+
+
+BEISPIELE
+=========
+
+   Um eine korrekte Ausgabe beim Haendeklatschen zu erreichen, koennte man
+   zB. folgende Zeile verwenden:
+
+    printf("%s klatscht in %s Haende.\n",this_player()->name(WER),
+         this_player()->QueryPossPronoun(FEMALE, WEN, PLURAL));
+
+   FEMALE, da "die Hand" weiblich ist, WEN, da man im Akkusativ klatscht,
+   und PLURAL, da man dazu beide Haende braucht.
+
+   Ein beliebter Fehler ist es, als Fall WESSEN zu verwenden (in WESSEN
+   Haende klatscht man? => in seine).
+   Die richtige Frage waere aber: WEN klatscht man? (in die Haende)
+
+
+SIEHE AUCH
+==========
+
+   QueryOwn(), QueryPronoun(), /std/thing/language.c
+
 Last modified: Wed Jan 11 13:13:35 CET 2006 by Rumata
diff --git a/doc/lfun/QueryPrayRoom b/doc/lfun/QueryPrayRoom
index 0a097d3..b783174 100644
--- a/doc/lfun/QueryPrayRoom
+++ b/doc/lfun/QueryPrayRoom
@@ -1,33 +1,50 @@
+
 QueryPrayRoom()
-
-FUNKTION:
-     public string QueryPrayRoom()
-
-DEFINIERT IN:
-     /std/player/base.c
-
-ARGUMENTE:
-     keine
-
-BESCHREIBUNG:
-    Dies ist der Raum, in den der Spieler nach dem Ende der Todessequenz
-    bewegt wird, d.h. ein Raum, wo er beten kann, um einen neuen Koerper zu
-    erhalten.
-    Der Raum wird als String angegeben (kein Objekt).
-
-    Jede Rasse hat einen Default fuer diese Funktion, welcher mit
-    SetDefaultPrayRoom() gesetzt wird. Dieser Default kann mit der Property
-    P_PRAY_ROOM ueberlagert werden. Wird die Property auf 0 dgesetzt, wird
-    dieser Default aktiv.
-
-RUeCKGABEWERT:
-    Der Objektname des Betraums (string)
+***************
 
 
-SIEHE AUCH:
-     P_PRAY_ROOM
-     SetDefaultPrayRoom
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   public string QueryPrayRoom()
+
+
+DEFINIERT IN
+============
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Dies ist der Raum, in den der Spieler nach dem Ende der Todessequenz
+   bewegt wird, d.h. ein Raum, wo er beten kann, um einen neuen Koerper zu
+   erhalten.
+   Der Raum wird als String angegeben (kein Objekt).
+
+   Jede Rasse hat einen Default fuer diese Funktion, welcher mit
+   SetDefaultPrayRoom() gesetzt wird. Dieser Default kann mit der Property
+   P_PRAY_ROOM ueberlagert werden. Wird die Property auf 0 dgesetzt, wird
+   dieser Default aktiv.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Objektname des Betraums (string)
+
+
+SIEHE AUCH
+==========
+
+   P_PRAY_ROOM
+   SetDefaultPrayRoom
+
 21.05.2013, Zesstra
-
diff --git a/doc/lfun/QueryPreferedEnemy b/doc/lfun/QueryPreferedEnemy
index 267d27d..10a8ae0 100644
--- a/doc/lfun/QueryPreferedEnemy
+++ b/doc/lfun/QueryPreferedEnemy
@@ -1,35 +1,56 @@
-FUNKTION:
-	object QueryPreferedEnemy();
 
-DEFINIERT IN:
-	/std/living/combat.c
+QueryPreferedEnemy()
+********************
 
-ARGUMENTE:
-	keine
 
-RUeCKGABEWERT:
-	bevorzugter Gegner
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Diese Funktion liefert unter folgenden Bedingungen zufaellig eines
-	der Lebewesen als bevorzugten Gegner zurueck, welche in der
-	Property P_PREFERED_ENEMY in einem Array eingetragen sind:
-	  (1) Der erste Eintrag des erwaehnten Propertyarrays enthaelt
-	      einen Wert zwischen 0 und 100, der die Wahrscheinlichkeit
-	      dafuer angibt, dass ein Lebewesen als Gegner bevorzugt werden
-	      soll. Es wird also nicht immer bevorzugt, wenn dort ein Wert
-	      kleiner 100 steht! In diesem Fall wird eine 0 zurueckgegeben.
-	  (2) Das per Zufall aus den Arrayelementen ab Element 2 gewaehlte
-	      Lebewesen muss auch wirklich existieren. Ist dies nicht der
-	      Fall, wird das nunmehr leere Element aus dem Array entfernt
-	      und eine 0 zurueckgeliefert.
-	  (3) Das Lebewesen muss derzeit auch wirklich Feind sein! Ist dies
-	      nicht der Fall, wird eine 0 zurueckgegeben.
-	Will man eine andere Bevorzugung von Gegnern erreichen,
-	ueberschreibt man am besten diese Funktion.
+   object QueryPreferedEnemy();
 
-SIEHE AUCH:
-	SelectEnemy(), IsEnemy(), P_PREFERED_ENEMY
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   bevorzugter Gegner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert unter folgenden Bedingungen zufaellig eines
+   der Lebewesen als bevorzugten Gegner zurueck, welche in der
+   Property P_PREFERED_ENEMY in einem Array eingetragen sind:
+     (1) Der erste Eintrag des erwaehnten Propertyarrays enthaelt
+         einen Wert zwischen 0 und 100, der die Wahrscheinlichkeit
+         dafuer angibt, dass ein Lebewesen als Gegner bevorzugt werden
+         soll. Es wird also nicht immer bevorzugt, wenn dort ein Wert
+         kleiner 100 steht! In diesem Fall wird eine 0 zurueckgegeben.
+     (2) Das per Zufall aus den Arrayelementen ab Element 2 gewaehlte
+         Lebewesen muss auch wirklich existieren. Ist dies nicht der
+         Fall, wird das nunmehr leere Element aus dem Array entfernt
+         und eine 0 zurueckgeliefert.
+     (3) Das Lebewesen muss derzeit auch wirklich Feind sein! Ist dies
+         nicht der Fall, wird eine 0 zurueckgegeben.
+   Will man eine andere Bevorzugung von Gegnern erreichen,
+   ueberschreibt man am besten diese Funktion.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), IsEnemy(), P_PREFERED_ENEMY
+
 Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/lfun/QueryPronoun b/doc/lfun/QueryPronoun
index fd041cb..39088f9 100644
--- a/doc/lfun/QueryPronoun
+++ b/doc/lfun/QueryPronoun
@@ -1,32 +1,54 @@
+
 QueryPronoun()
+**************
 
-FUNKTION:
-     string QueryPronoun(int casus);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     casus
-          Der Fall, in dem das Personalpronomen verlangt wird.
+   string QueryPronoun(int casus);
 
-BESCHREIBUNG:
-     Es wird ein Personalpronomen ("er", "sie", "es") im entsprechenden Fall
-     fuer dieses Objekt berechnet.
 
-RUeCKGABEWERT:
-     Das Pronomen im entsprechenden Fall.
+DEFINIERT IN
+============
 
-BEISPIELE:
+   /std/thing/language.c
 
-     printf("Du versucht, %s zu nehmen, aber %s ist zu schwer.\n",
-           ob->name(WEN), ob->QueryPronoun(WER));
 
-     Hier wird immer das richtige Pronomen verwendet, egal, welches
-     Geschlecht das Objekt ob hat.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     SuggestArticle(), QueryPossPronoun(), /std/thing/language.c
-     QueryOwn()
-----------------------------------------------------------------------------
+   casus
+        Der Fall, in dem das Personalpronomen verlangt wird.
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Personalpronomen ("er", "sie", "es") im entsprechenden Fall
+   fuer dieses Objekt berechnet.
+
+
+RUeCKGABEWERT
+=============
+
+   Das Pronomen im entsprechenden Fall.
+
+
+BEISPIELE
+=========
+
+   printf("Du versucht, %s zu nehmen, aber %s ist zu schwer.\n",
+         ob->name(WEN), ob->QueryPronoun(WER));
+
+   Hier wird immer das richtige Pronomen verwendet, egal, welches
+   Geschlecht das Objekt ob hat.
+
+
+SIEHE AUCH
+==========
+
+   SuggestArticle(), QueryPossPronoun(), /std/thing/language.c
+   QueryOwn()
+
 Last modified: Wed May 8 10:23:14 1996 by Wargon
diff --git a/doc/lfun/QueryProp b/doc/lfun/QueryProp
index ee752e0..71c4fdf 100644
--- a/doc/lfun/QueryProp
+++ b/doc/lfun/QueryProp
@@ -1,39 +1,63 @@
+
 QueryProp()
-FUNKTION:
-     mixed QueryProp(string name);
+***********
 
-DEFINIERT IN:
-     /std/thing/properties.c
 
-ARGUMENTE:
-     string name	- abzufragende Property
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Datenwert der Property 'name' wird zurueckgegeben.
+   mixed QueryProp(string name);
 
-     Existiert eine F_QUERY_METHOD oder eine _query_'name'()-Methode fuer
-     diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
-     Eine F_QUERY_METHOD hat dabei Vorrang vor _query_'name'(), d.h.
-     _query_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
-     gerufen.
 
-     (Diese Methoden nutzen dann Set(), um auf den Datenwert der Property
-      'name' zurueckzugreifen. Teilweise werden aber auch interne Variablen
-      so oeffentlich gemacht und sind nicht in der ueber Set/Query
-      verfuegbaren Property 'name' abgelegt.)
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     Der Datenwert der Property.
-     0, falls diese nicht existiert.
+   /std/thing/properties.c
 
-BEISPIELE:
-     // wie hoch sind die aktuelle LP des Spielers?
-     hp = this_player()->QueryProp(P_HP);
 
-SIEHE AUCH:
-     Aehnliches:	SetProp(L), Set(L), Query(L)
-     Generell:		SetProperties(L), QueryProperties(L)
-     Konzept:		properties, /std/thing/properties.c
-     Sonstiges:		P_AUTOLOADOBJ
+ARGUMENTE
+=========
+
+   string name        - abzufragende Property
+
+
+BESCHREIBUNG
+============
+
+   Der Datenwert der Property 'name' wird zurueckgegeben.
+
+   Existiert eine F_QUERY_METHOD oder eine _query_'name'()-Methode fuer
+   diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
+   Eine F_QUERY_METHOD hat dabei Vorrang vor _query_'name'(), d.h.
+   _query_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
+   gerufen.
+
+   (Diese Methoden nutzen dann Set(), um auf den Datenwert der Property
+    'name' zurueckzugreifen. Teilweise werden aber auch interne Variablen
+    so oeffentlich gemacht und sind nicht in der ueber Set/Query
+    verfuegbaren Property 'name' abgelegt.)
+
+
+RUeCKGABEWERT
+=============
+
+   Der Datenwert der Property.
+   0, falls diese nicht existiert.
+
+
+BEISPIELE
+=========
+
+   // wie hoch sind die aktuelle LP des Spielers?
+   hp = this_player()->QueryProp(P_HP);
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        SetProp(L), Set(L), Query(L)
+   Generell:          SetProperties(L), QueryProperties(L)
+   Konzept:           properties, /std/thing/properties.c
+   Sonstiges:         P_AUTOLOADOBJ
 
 15.Dez 2004 Gloinson
diff --git a/doc/lfun/QueryProperties b/doc/lfun/QueryProperties
index aa740b5..6949e0f 100644
--- a/doc/lfun/QueryProperties
+++ b/doc/lfun/QueryProperties
@@ -1,30 +1,54 @@
+
 QueryProperties()
-FUNKTION:
-     mapping QueryProperties()
+*****************
 
-DEFINIERT IN:
-     /std/thing/properties.c
 
-ARGUMENTE:
-     keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion liefert ein Mapping mit allen fuer das Objekt
-     definierten Properties zurueck.
+   mapping QueryProperties()
 
-RUeCKGABEWERT:
-     Ein Mapping mit den Properties. Das Mapping hat folgenden Aufbau:
-	([ name: wert; flags; set_method; query_method,
-	   name2: ... ]);
 
-BEMERKUNGEN:
-     - diese Funktion wird von restore_object() und save_object()
-     - F_QUERY_METHODs und _query_'prop'()-Methoden haben keine Auswirkung
-       auf die Wertefelder!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Aehnliches:	SetProp(L), QueryProp(L), Set(L), Query(L)
-     Generell:		SetProperties(L) 
-     Konzept:		properties, /std/thing/properties.c
+   /std/thing/properties.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Mapping mit allen fuer das Objekt
+   definierten Properties zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Mapping mit den Properties. Das Mapping hat folgenden Aufbau:
+      ([ name: wert; flags; set_method; query_method,
+         name2: ... ]);
+
+
+BEMERKUNGEN
+===========
+
+   - diese Funktion wird von restore_object() und save_object()
+   - F_QUERY_METHODs und _query_'prop'()-Methoden haben keine Auswirkung
+     auf die Wertefelder!
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        SetProp(L), QueryProp(L), Set(L), Query(L)
+   Generell:          SetProperties(L)
+   Konzept:           properties, /std/thing/properties.c
 
 1.Mai 2004 Gloinson
diff --git a/doc/lfun/QueryQuest b/doc/lfun/QueryQuest
index 295ad16..338ed77 100644
--- a/doc/lfun/QueryQuest
+++ b/doc/lfun/QueryQuest
@@ -1,34 +1,53 @@
+
 QueryQuest()
+************
 
-FUNKTION:
-        int QueryQuest(string questname)
 
-DEFINIERT IN:
-        /std/player/quests.c
+FUNKTION
+========
 
-ARGUMENTE:
-        questname
-          Questname, wie er im Questmaster eingetragen wurde.
+   int QueryQuest(string questname)
 
-RUeCKGABEWERT:
-        (Die Defines fuer den Rueckgabewert finden sich in 
-         /secure/questmaster.h)
-         1 : Spieler hat die Quest bereits geloest  (OK)
-         0 : Ungueltiger Questname oder der Spieler
-             hat die Quest noch nicht.              (QQ_KEY_INVALID)
-         2 : Gaeste koennen keine Quest loesen      (QQ_QUEST)
 
-BESCHREIBUNG:
-	Mit dieser Funktion kann getestet werden, ob ein Spieler eine 
-        bestimmte Quest bereits geloest hat. Als Questname wird dazu
-        der Name angegeben, der im Questmaster eingetragen wurde.
+DEFINIERT IN
+============
 
-        Wer sich da nicht sicher ist, kann mit dem Questtool 
-        (/obj/tools/questtool) nachsehen. 
+   /std/player/quests.c
 
-SIEHE AUCH:
-        /secure/questmaster.h, /obj/tools/questtool
-        GiveQuest
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   (Die Defines fuer den Rueckgabewert finden sich in
+    /secure/questmaster.h)
+    1 : Spieler hat die Quest bereits geloest  (OK)
+    0 : Ungueltiger Questname oder der Spieler
+        hat die Quest noch nicht.              (QQ_KEY_INVALID)
+    2 : Gaeste koennen keine Quest loesen      (QQ_QUEST)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann getestet werden, ob ein Spieler eine
+   bestimmte Quest bereits geloest hat. Als Questname wird dazu
+   der Name angegeben, der im Questmaster eingetragen wurde.
+
+   Wer sich da nicht sicher ist, kann mit dem Questtool
+   (/obj/tools/questtool) nachsehen.
+
+
+SIEHE AUCH
+==========
+
+   /secure/questmaster.h, /obj/tools/questtool
+   GiveQuest
+
 Zuletzt geaendert: Mon, 17. Jul 2000, 12:16:41 von Zook.
diff --git a/doc/lfun/QueryQuestTime b/doc/lfun/QueryQuestTime
index 2410d6a..9b93c8d 100644
--- a/doc/lfun/QueryQuestTime
+++ b/doc/lfun/QueryQuestTime
@@ -1,29 +1,48 @@
+
 QueryQuestTime()
+****************
 
-FUNKTION:
-        int QueryQuestTime(string questname)
 
-DEFINIERT IN:
-        /std/player/quests.c
+FUNKTION
+========
 
-ARGUMENTE:
-        questname
-          Questname, wie er im Questmaster eingetragen wurde.
+   int QueryQuestTime(string questname)
 
-RUeCKGABEWERT:
-        Questzeitpunkt in Sekunden seit Epoch als positiver Integer-Wert
-         0 : Tagebuchmaster hat keine Daten in den Logfiles gefunden und
-             macht das auf diese Weise kenntlich
-        -1 : Questzeitpunkt unbekannt
 
-BESCHREIBUNG:
-        Mit dieser Funktion kann der Zeitpunkt abgefragt werden, zu
-        dem ein Spieler eine bestimmte Quest geloest hat. 
-        Als Questname wird dazu der Name angegeben, der im Questmaster 
-        eingetragen ist.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        GiveQuest(L), QueryQuest(L), ModifyQuestTime(L)
+   /std/player/quests.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   Questzeitpunkt in Sekunden seit Epoch als positiver Integer-Wert
+    0 : Tagebuchmaster hat keine Daten in den Logfiles gefunden und
+        macht das auf diese Weise kenntlich
+   -1 : Questzeitpunkt unbekannt
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann der Zeitpunkt abgefragt werden, zu
+   dem ein Spieler eine bestimmte Quest geloest hat.
+   Als Questname wird dazu der Name angegeben, der im Questmaster
+   eingetragen ist.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest(L), QueryQuest(L), ModifyQuestTime(L)
+
 Zuletzt geaendert: 19. Dez. 2015, Arathorn
diff --git a/doc/lfun/QueryRealAttribute b/doc/lfun/QueryRealAttribute
index 7ee9f83..246008f 100644
--- a/doc/lfun/QueryRealAttribute
+++ b/doc/lfun/QueryRealAttribute
@@ -1,26 +1,47 @@
+
 QueryRealAttribute()
-FUNKTION:
-     int QueryRealAttribute(string attr)
+********************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     attr       -       das interessierende Attribut
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das reale Attribut (ohne Offsets) wird zurueckgegeben.
+   int QueryRealAttribute(string attr)
 
-BEISPIELE:
-     if(this_player()->QueryRealAttribute(A_INT)>15)
-      write("Du bist auch so ganz schoen clever.\n");
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       -       das interessierende Attribut
+
+
+BESCHREIBUNG
+============
+
+   Das reale Attribut (ohne Offsets) wird zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   if(this_player()->QueryRealAttribute(A_INT)>15)
+    write("Du bist auch so ganz schoen clever.\n");
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/QuerySellValue b/doc/lfun/QuerySellValue
index 544cb29..4d5a518 100644
--- a/doc/lfun/QuerySellValue
+++ b/doc/lfun/QuerySellValue
@@ -1,43 +1,54 @@
-FUNKTION:
 
-      varargs int QuerySellValue(object ob, object client);
+QuerySellValue()
+****************
 
-DEFINIERT IN:
 
-      /std/trading_price.c
+FUNKTION
+========
 
-BESCHREIBUNG:
+   varargs int QuerySellValue(object ob, object client);
 
-      Diese Funktion kann dazu genutzt werden, den Verkaufspreis in einem 
-      Laden global zu veraendern. Sofern dies zugunsten der Spieler geschieht,
-      muss dafuer die Zustimmung des zustaendigen Regionsmagiers und der
-      Balance eingeholt werden. Zudem sollte es nicht in jedem x-beliebigen 
-      Laden genutzt werden, sondern nur in recht abgelegenen Gebieten, in
-      die man nicht einfach skripten kann.
 
-      Ein Beispiel ist der Laden auf dem Kutter in Port Vain, der nur in
-      laengeren Intervallen mal zugaenglich ist.
+DEFINIERT IN
+============
 
-BEISPIEL:
+   /std/trading_price.c
 
-      Ein Laden zahlt 10% ueber dem normalen Verkaufspreis:
 
-      private int sell_factor = 110;
+BESCHREIBUNG
+============
 
-      varargs int QuerySellValue(object ob, object client) {
-        // Es wird nicht naeher geprueft, ob <ob> ein gueltiger Objektpointer
-        // ist, da der Laden selbst sicherstellt, dass das so ist. Wenn 
-        // das doch einmal nicht der Fall sein sollte, liegt der Fehler
-        // woanders. Einen Bug auszuloesen ist dann sinnvoll.
+   Diese Funktion kann dazu genutzt werden, den Verkaufspreis in einem
+   Laden global zu veraendern. Sofern dies zugunsten der Spieler geschieht,
+   muss dafuer die Zustimmung des zustaendigen Regionsmagiers und der
+   Balance eingeholt werden. Zudem sollte es nicht in jedem x-beliebigen
+   Laden genutzt werden, sondern nur in recht abgelegenen Gebieten, in
+   die man nicht einfach skripten kann.
 
-        // Basispreis ermitteln 
-        int preis = ::QuerySellValue(ob, client);
-        // und den Bonus aufschlagen.
-        preis = (sell_factor * preis)/100; 
+   Ein Beispiel ist der Laden auf dem Kutter in Port Vain, der nur in
+   laengeren Intervallen mal zugaenglich ist.
 
-        // Nicht mehr auszahlen, als das Objekt an sich wert ist.
-        return min(preis, ob->QueryProp(P_VALUE));
-      }
 
-----------------------------------------------------------------------------
+BEISPIEL
+========
+
+   Ein Laden zahlt 10% ueber dem normalen Verkaufspreis:
+
+   private int sell_factor = 110;
+
+   varargs int QuerySellValue(object ob, object client) {
+     // Es wird nicht naeher geprueft, ob <ob> ein gueltiger Objektpointer
+     // ist, da der Laden selbst sicherstellt, dass das so ist. Wenn
+     // das doch einmal nicht der Fall sein sollte, liegt der Fehler
+     // woanders. Einen Bug auszuloesen ist dann sinnvoll.
+
+     // Basispreis ermitteln
+     int preis = ::QuerySellValue(ob, client);
+     // und den Bonus aufschlagen.
+     preis = (sell_factor * preis)/100;
+
+     // Nicht mehr auszahlen, als das Objekt an sich wert ist.
+     return min(preis, ob->QueryProp(P_VALUE));
+   }
+
 LETZTE AENDERUNG: 18-Jun-2015, Arathorn
diff --git a/doc/lfun/QuerySkill b/doc/lfun/QuerySkill
index 017b9f9..0978df1 100644
--- a/doc/lfun/QuerySkill
+++ b/doc/lfun/QuerySkill
@@ -1,35 +1,56 @@
+
 QuerySkill()
-FUNKTION:
-    public varargs mapping QuerySkill(string sname, string gilde)
+************
 
-DEFINIERT IN:
-    /std/living/skills.c
-    
-ARGUMENTE:
-    string sname    Name des abzufragenden Skill
-    string gilde    Name der Gilde, unter der der Skill gesucht werden soll
 
-BESCHREIBUNG:
-    Diese Funktion liefert das Skillmappings des Skills 'snme' im Lebewesen
-    zurueck. Diese enthaelt Eintraege, die in der Man-Page skill_info_liste
-    beschrieben sind.
+FUNKTION
+========
 
-    Falls 'gilde' nicht angegeben wird, wird der Skill zuerst fuer die Gilde
-    P_GUILD des Lebewesens gesucht, ansonsten in den allgemeinen Skills
-    "ANY" (es wird NICHT in Gildenobjekt oder Spellbook etwas abgefragt).
+   public varargs mapping QuerySkill(string sname, string gilde)
 
-RUECKGABEWERT:
-    Ein Mapping mit Skillinfos oder 0, falls der Skill nicht vorhanden ist.
-    Das Mapping ist eine Kopie.
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+DEFINIERT IN
+============
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string sname    Name des abzufragenden Skill
+   string gilde    Name der Gilde, unter der der Skill gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert das Skillmappings des Skills 'snme' im Lebewesen
+   zurueck. Diese enthaelt Eintraege, die in der Man-Page skill_info_liste
+   beschrieben sind.
+
+   Falls 'gilde' nicht angegeben wird, wird der Skill zuerst fuer die Gilde
+   P_GUILD des Lebewesens gesucht, ansonsten in den allgemeinen Skills
+   "ANY" (es wird NICHT in Gildenobjekt oder Spellbook etwas abgefragt).
+
+
+RUECKGABEWERT
+=============
+
+   Ein Mapping mit Skillinfos oder 0, falls der Skill nicht vorhanden ist.
+   Das Mapping ist eine Kopie.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/QuerySkillAbility b/doc/lfun/QuerySkillAbility
index 5cfd815..fd8666f 100644
--- a/doc/lfun/QuerySkillAbility
+++ b/doc/lfun/QuerySkillAbility
@@ -1,29 +1,47 @@
+
 QuerySkillAbility()
-FUNKTION:
-    public varargs int QuerySkillAbility(string sname, string gilde)
+*******************
 
-DEFINIERT IN:
-    /std/living/skills.c
-    
-ARGUMENTE:
-    string sname        Name des abzufragenden Skill
-    string gilde         Gilde, unter der der Skill gesucht werden soll
 
-BESCHREIBUNG:
-    Diese Funktion liefert einen Wert zurueck, der aussagt, wie gut das
-    Lebewesen den Skill 'sname' beherrscht (Key SI_SKILLABILITY im
-    Skillmapping).
-    Dieser Wert kann zwischen -MAX_ABILITY und MAX_ABILITY liegen,
-    normal ist 0 bis MAX_ABILITY (10000 - Skill perfektioniert).
+FUNKTION
+========
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+   public varargs int QuerySkillAbility(string sname, string gilde)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string sname        Name des abzufragenden Skill
+   string gilde         Gilde, unter der der Skill gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert einen Wert zurueck, der aussagt, wie gut das
+   Lebewesen den Skill 'sname' beherrscht (Key SI_SKILLABILITY im
+   Skillmapping).
+   Dieser Wert kann zwischen -MAX_ABILITY und MAX_ABILITY liegen,
+   normal ist 0 bis MAX_ABILITY (10000 - Skill perfektioniert).
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 5. Okt 2011 Gloinson
diff --git a/doc/lfun/QuerySkillAttribute b/doc/lfun/QuerySkillAttribute
index d0b1bd1..1b3a71e 100644
--- a/doc/lfun/QuerySkillAttribute
+++ b/doc/lfun/QuerySkillAttribute
@@ -1,58 +1,87 @@
+
 QuerySkillAttribute()
-FUNKTION:
-    public int QuerySkillAttribute(string atrname)
+*********************
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
-    
-ARGUMENTE:
-    string atrname            Name des abzufragenden Attributs
-    
-BESCHREIBUNG:
-    Mit dieser Funktion kann man den Wert bestimmter Attribute
-    abfragen, dabei werden das abgefragte Attribut, Todesfolgen,
-    SA_QUALITY und Werte in P_SKILL_ATTRIBUTE_OFFSETS
-    beruecksichtigt.
-    
-    Momentane Skills siehe ModifySkillAttribute.
 
-RUECKGABEWERT:
-    Der Wert des Attributs. Ist nichts bestimmtes gesetzt, wird
-    der Standardwert 100 zurueckgegeben.
-    Der Rueckgabewert liegt zwischen 10 bis 1000 (Prozent).
-    
-BEMERKUNG:
-    Die Funktion ist zwar als 'varargs' definiert, gibt man allerdings
-    keinen Attributnamen an, wird immer 100 zurueckgegeben.
-    
-BEISPIEL:
-    // ein Spieler kann ein Stueck Kaese stibitzen, wenn er schnell
-    // genug ist ... (15% ueber normal)
-    if(this_player()->QuerySkillAttribute(SA_SPEED)>=115) {
-      tell_object(this_player(),
-        "Du schnappst das Stueck Kaese aus der Falle.\n");
-      obj kaese = clone_object(...);
-      [...]
-    } else {
-      mapping amap=map_indices(VALID_ARMOUR_CLASS,#'!);
-      amap[AT_GLOVE]=100;
-      tell_object(this_player(),
-        "Du bist zu langsam und die Falle schnappt hungrig zu.\n");
-      this_player()->Defend(random(100),
-                           ({DT_PIERCE, DT_SQUEEZE}),
-                           ([SP_PHYSICAL_ATTACK: 1,
-                             SP_REDUCE_ARMOUR: amap,
-                             SP_SHOW_DAMAGE: 0]));
-    }
+FUNKTION
+========
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+   public int QuerySkillAttribute(string atrname)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   string atrname            Name des abzufragenden Attributs
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man den Wert bestimmter Attribute
+   abfragen, dabei werden das abgefragte Attribut, Todesfolgen,
+   SA_QUALITY und Werte in P_SKILL_ATTRIBUTE_OFFSETS
+   beruecksichtigt.
+
+
+
+   Momentane Skills siehe ModifySkillAttribute.
+
+
+RUECKGABEWERT
+=============
+
+   Der Wert des Attributs. Ist nichts bestimmtes gesetzt, wird
+   der Standardwert 100 zurueckgegeben.
+   Der Rueckgabewert liegt zwischen 10 bis 1000 (Prozent).
+
+
+BEMERKUNG
+=========
+
+   Die Funktion ist zwar als 'varargs' definiert, gibt man allerdings
+   keinen Attributnamen an, wird immer 100 zurueckgegeben.
+
+
+BEISPIEL
+========
+
+   // ein Spieler kann ein Stueck Kaese stibitzen, wenn er schnell
+   // genug ist ... (15% ueber normal)
+   if(this_player()->QuerySkillAttribute(SA_SPEED)>=115) {
+     tell_object(this_player(),
+       "Du schnappst das Stueck Kaese aus der Falle.\n");
+     obj kaese = clone_object(...);
+     [...]
+   } else {
+     mapping amap=map_indices(VALID_ARMOUR_CLASS,#'!);
+     amap[AT_GLOVE]=100;
+     tell_object(this_player(),
+       "Du bist zu langsam und die Falle schnappt hungrig zu.\n");
+     this_player()->Defend(random(100),
+                          ({DT_PIERCE, DT_SQUEEZE}),
+                          ([SP_PHYSICAL_ATTACK: 1,
+                            SP_REDUCE_ARMOUR: amap,
+                            SP_SHOW_DAMAGE: 0]));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 5. Okt 2011 Gloinson
diff --git a/doc/lfun/QuerySkillAttributeModifier b/doc/lfun/QuerySkillAttributeModifier
index 507c51b..055815e 100644
--- a/doc/lfun/QuerySkillAttributeModifier
+++ b/doc/lfun/QuerySkillAttributeModifier
@@ -1,90 +1,118 @@
+
 QuerySkillAttributeModifier()
-FUNKTION:
-    public varargs mapping QuerySkillAttributeModifier(object caster, 
-                                                    string *atrnames)
+*****************************
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
 
-ARGUMENTE:
-    <caster>    object
-                Objekt, welches die gesuchten Mods gesetzt hat
+FUNKTION
+========
 
-    <atrnames>  string*
-                Array von Skill-Attributen, welche durchsucht werden sollen.
+   public varargs mapping QuerySkillAttributeModifier(object caster,
+                                                   string *atrnames)
 
-BESCHREIBUNG:
-    Diese Funktion liefert alle Mods von <caster> auf den Skill-
-    Attributen <atrnames> in einem Mapping zurueck.
-    Wird <atrnames> nicht angegeben oder ist ein leeres Array, werden alle
-    Skill-Attribute nach Mods abgesucht.
-    Wird <caster> nicht angeben oder ist 0, so werden alle Mods der 
-    gewuenschten Skill-Attribute geliefert.
-    Dementsprechend bekommt man alle Mods aller Skill-Attribute, wenn keins
-    von beidem angegeben wird.
 
-RUECKGABEWERT:
-    ([]), falls keine Modifikatoren gefunden wurden.
-    In anderen Faellen ist die Datenstruktur des Mappings wie folgt:
-    ([ atrname1: ([ <caster>: <value>; <duration> ]),
-       atrname2: ([ <caster>: <value>; <duration> ]) ])
-    Die Schluessel im Mapping sind die jeweiligen Skill-Attribute, die Werte
-    des Mappings sind erneut Mappings, welche als Schluessel die Objekte
-    haben, welche die Mods gesetzt haben. In diesem Mapping gehoeren zu jedem
-    Schluessel zwei Werte, den Wert des Modifikators und die Ablaufzeit.
-    <value> kann hierbei ein int oder eine closure sein, <duration> ist ein
-    int, <caster> ist ein Objekt.
-    Ggf. kann das innere Mapping natuerlich auch mehrere Modifikatoren
-    enthalten (also caster1, caster2, usw.).
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
+   /std/living/skill_attributes.c
 
-BEISPIELE:
-     Ein Objekt moechte seinen bestehenden Modifikator um 20 und die
-     Gueltigkeit um 13 erhoehen.
-     mapping res = ob->QuerySkillAttributeModifier(this_object(),
-                                                  ({SA_DAMAGE}) );
-     if (member(res, SA_DAMAGE) && member(res[SA_DAMAGE], this_object())) {
-          // alten Mod ueberschreiben und Werte dabei anheben.
-          ob->ModifySkillAttributeModifier(SA_DAMAGE,
-              res[SA_DAMAGE][this_object(),0] + 20,
-              res[SA_DAMAGE][this_object(),1] + 13 );
-     }
-     else
-          // neuen Mod setzen.
-          ob->ModifySkilAttributeModifier(SA_DAMAGE, 20, 13);
-      
-     Ein Objekt hat den Fluch der unpraezisen Schnelligkeit, welcher SA_DAMAGE
-     reduziert, sofern das Lebewesen einen positiven Modifikator auf SA_SPEED
-     hat:
-     mapping res = ob->QuerySkillAttributeModifier(0, ({SA_SPEED}) );
-     if (member(res, SA_SPEED) {
-         int val, int dur;
-         foreach(object caster, int v, int d: res[SA_SPEED]) {
-             // groessten Mod rausfinden, dabei keine closures
-             // beruecksichtigen.
-             if (intp(v) && v>val) {
-                 val=v;
-                 dur=d;
-             }
-         }
-         if (val > 0) {
-             // pos. Mod auf SA_SPEED gefunden, entsprechenden neg. Mod auf
-             // SA_DAMAGE setzen, der zum gleichen Zeitpunkt ungueltig wird
-             // wie der Mod auf SA_SPEED.
-             if (ob->ModifySkillAttribute(SA_DAMAGE, -val, dur) == SA_MOD_OK)
-                tell_object(ob, "tolle Fluchmeldung.");
-         }
-     }
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+ARGUMENTE
+=========
+
+   <caster>    object
+               Objekt, welches die gesuchten Mods gesetzt hat
+
+   <atrnames>  string*
+               Array von Skill-Attributen, welche durchsucht werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert alle Mods von <caster> auf den Skill-
+   Attributen <atrnames> in einem Mapping zurueck.
+   Wird <atrnames> nicht angegeben oder ist ein leeres Array, werden alle
+   Skill-Attribute nach Mods abgesucht.
+   Wird <caster> nicht angeben oder ist 0, so werden alle Mods der
+   gewuenschten Skill-Attribute geliefert.
+   Dementsprechend bekommt man alle Mods aller Skill-Attribute, wenn keins
+   von beidem angegeben wird.
+
+
+RUECKGABEWERT
+=============
+
+   ([]), falls keine Modifikatoren gefunden wurden.
+   In anderen Faellen ist die Datenstruktur des Mappings wie folgt:
+   ([ atrname1: ([ <caster>: <value>; <duration> ]),
+      atrname2: ([ <caster>: <value>; <duration> ]) ])
+   Die Schluessel im Mapping sind die jeweiligen Skill-Attribute, die Werte
+   des Mappings sind erneut Mappings, welche als Schluessel die Objekte
+   haben, welche die Mods gesetzt haben. In diesem Mapping gehoeren zu jedem
+   Schluessel zwei Werte, den Wert des Modifikators und die Ablaufzeit.
+   <value> kann hierbei ein int oder eine closure sein, <duration> ist ein
+   int, <caster> ist ein Objekt.
+   Ggf. kann das innere Mapping natuerlich auch mehrere Modifikatoren
+   enthalten (also caster1, caster2, usw.).
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   Ein Objekt moechte seinen bestehenden Modifikator um 20 und die
+   Gueltigkeit um 13 erhoehen.
+   mapping res = ob->QuerySkillAttributeModifier(this_object(),
+                                                ({SA_DAMAGE}) );
+   if (member(res, SA_DAMAGE) && member(res[SA_DAMAGE], this_object())) {
+        // alten Mod ueberschreiben und Werte dabei anheben.
+        ob->ModifySkillAttributeModifier(SA_DAMAGE,
+            res[SA_DAMAGE][this_object(),0] + 20,
+            res[SA_DAMAGE][this_object(),1] + 13 );
+   }
+   else
+        // neuen Mod setzen.
+        ob->ModifySkilAttributeModifier(SA_DAMAGE, 20, 13);
+
+
+
+   Ein Objekt hat den Fluch der unpraezisen Schnelligkeit, welcher SA_DAMAGE
+   reduziert, sofern das Lebewesen einen positiven Modifikator auf SA_SPEED
+   hat:
+   mapping res = ob->QuerySkillAttributeModifier(0, ({SA_SPEED}) );
+   if (member(res, SA_SPEED) {
+       int val, int dur;
+       foreach(object caster, int v, int d: res[SA_SPEED]) {
+           // groessten Mod rausfinden, dabei keine closures
+           // beruecksichtigen.
+           if (intp(v) && v>val) {
+               val=v;
+               dur=d;
+           }
+       }
+       if (val > 0) {
+           // pos. Mod auf SA_SPEED gefunden, entsprechenden neg. Mod auf
+           // SA_DAMAGE setzen, der zum gleichen Zeitpunkt ungueltig wird
+           // wie der Mod auf SA_SPEED.
+           if (ob->ModifySkillAttribute(SA_DAMAGE, -val, dur) == SA_MOD_OK)
+              tell_object(ob, "tolle Fluchmeldung.");
+       }
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 14.08.2008, Zesstra
diff --git a/doc/lfun/QuerySkillBonus b/doc/lfun/QuerySkillBonus
index 1a4ef47..1cb82e8 100644
--- a/doc/lfun/QuerySkillBonus
+++ b/doc/lfun/QuerySkillBonus
@@ -1,65 +1,91 @@
+
 QuerySkillBonus()
+*****************
 
-FUNKTION:
-     int QuerySkillBonus(object caster, object target, mapping sinfo)
 
-DEFINIERT IN:
-     beliebigen Objekten
+FUNKTION
+========
 
-ARGUMENTE:
-     object caster
-          der Benutzer eines Skills/Spells (Lebewesen)
-     object target
-          das Ziel eines Skills/Spells (beliebiges Objekt oder 0)
-     mapping sinfo
-          das Skillinfomapping
+   int QuerySkillBonus(object caster, object target, mapping sinfo)
 
-BESCHREIBUNG:
-     Diese Funktion wird von der Gilde des Casters im Environment und ggf.
-     auch im Ziel eines Skills/Spells gerufen.
-     Die Gilde uebergibt neben Caster und Ziel ein Mapping mit Skillinfos (s.
-     SI Konstanten aus new_skills.h fuer Details), welches alle wesentlichen
-     Informationen ueber den benutzten Skill/Spell enthaelt.
 
-     QuerySkillBonus() liefert einen Bonus (oder Malus) zurueck, den der
-     Aufrufer als Faktor in der Berechnung des Effekts des Skills
-     beruecksichtigen kann (aber nicht muss).
-     Der Bonus/Malus wird hierbei als ganzzahliger 0.01-Prozentwert aufgefasst
-     (10000 == 100% == keine Veraenderung, 1 == 0.01%).
+DEFINIERT IN
+============
 
-     Diese Funktion kann in beliebigen Objekten (re-)definiert werden. Im
-     Falle mobiler Objekte oder anhaltender Effekte ist jedoch eine
-     Balancegenehmigung erforderlich, sofern kampfrelevante Skills beeinflusst
-     werden.
-     Eine flaechendeckende Reduzierung von Skills/Gildenfaehigkeiten ist
-     explizit _nicht_ erwuenscht und soll auf einzelne Raeume und Objekte
-     beschraenkt sein.
+   beliebigen Objekten
 
-BEMERKUNGEN:
-     Das Mapping <sinfo> kann in dieser Funktion geaendert werden. Dieses kann
-     allerdings sehr weitreichende Folgen haben, speziell bei mangelnden
-     Kenntnissen ueber Interna des Skillsystems. Daher bitte von Aenderungen
-     absehen bzw. vorher mit dem jeweiligen Gildenmagier und/oder der
-     Gildenbalance abklaeren.
-     Die Bedeutung der Werte in <sinfo> kann je nach Gilde variieren. Im
-     Zweifelsfall bitte bei den jeweiligen Gildenmagiern nachfragen. 
-     Die Gilde kann diese Funktion rufen, muss aber nicht. Ebenso kann sie das
-     Ergebnis beruecksichtigen, muss aber nicht.
 
-BEISPIELE:
-     In einem Raum sollen Heilzauber besonders effizient sein:
-     int QuerySkillBonus(object caster, object target, mapping sinfo) {
-        if (pointerp(sinfo[SI_MAGIC_TYPE])
-            && member(sinfo[SI_MAGIC_TYPE], MT_HEILUNG) > -1)
-        {
-            return 12000 + random(3000); // bonus von 120-150%
-        }
-        return 10000;
-     }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     gilden-doku
-     <new_skills.h>
+   object caster
+        der Benutzer eines Skills/Spells (Lebewesen)
+   object target
+        das Ziel eines Skills/Spells (beliebiges Objekt oder 0)
+   mapping sinfo
+        das Skillinfomapping
 
-LETZTE AeNDERUNG:
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von der Gilde des Casters im Environment und ggf.
+   auch im Ziel eines Skills/Spells gerufen.
+   Die Gilde uebergibt neben Caster und Ziel ein Mapping mit Skillinfos (s.
+   SI Konstanten aus new_skills.h fuer Details), welches alle wesentlichen
+   Informationen ueber den benutzten Skill/Spell enthaelt.
+
+   QuerySkillBonus() liefert einen Bonus (oder Malus) zurueck, den der
+   Aufrufer als Faktor in der Berechnung des Effekts des Skills
+   beruecksichtigen kann (aber nicht muss).
+   Der Bonus/Malus wird hierbei als ganzzahliger 0.01-Prozentwert aufgefasst
+   (10000 == 100% == keine Veraenderung, 1 == 0.01%).
+
+   Diese Funktion kann in beliebigen Objekten (re-)definiert werden. Im
+   Falle mobiler Objekte oder anhaltender Effekte ist jedoch eine
+   Balancegenehmigung erforderlich, sofern kampfrelevante Skills beeinflusst
+   werden.
+   Eine flaechendeckende Reduzierung von Skills/Gildenfaehigkeiten ist
+   explizit _nicht_ erwuenscht und soll auf einzelne Raeume und Objekte
+   beschraenkt sein.
+
+
+BEMERKUNGEN
+===========
+
+   Das Mapping <sinfo> kann in dieser Funktion geaendert werden. Dieses kann
+   allerdings sehr weitreichende Folgen haben, speziell bei mangelnden
+   Kenntnissen ueber Interna des Skillsystems. Daher bitte von Aenderungen
+   absehen bzw. vorher mit dem jeweiligen Gildenmagier und/oder der
+   Gildenbalance abklaeren.
+   Die Bedeutung der Werte in <sinfo> kann je nach Gilde variieren. Im
+   Zweifelsfall bitte bei den jeweiligen Gildenmagiern nachfragen.
+   Die Gilde kann diese Funktion rufen, muss aber nicht. Ebenso kann sie das
+   Ergebnis beruecksichtigen, muss aber nicht.
+
+
+BEISPIELE
+=========
+
+   In einem Raum sollen Heilzauber besonders effizient sein:
+   int QuerySkillBonus(object caster, object target, mapping sinfo) {
+      if (pointerp(sinfo[SI_MAGIC_TYPE])
+          && member(sinfo[SI_MAGIC_TYPE], MT_HEILUNG) > -1)
+      {
+          return 12000 + random(3000); // bonus von 120-150%
+      }
+      return 10000;
+   }
+
+
+SIEHE AUCH
+==========
+
+   gilden-doku
+   <new_skills.h>
+
+
+LETZTE AeNDERUNG
+================
+
 19.08.2013, Zesstra
diff --git a/doc/lfun/QueryStorageRoom b/doc/lfun/QueryStorageRoom
index b62e40d..4442237 100644
--- a/doc/lfun/QueryStorageRoom
+++ b/doc/lfun/QueryStorageRoom
@@ -1,21 +1,27 @@
-QueryStorageRoom()
-
-Funktion:
-    string QueryStorageRoom()
-
-Definiert in:
-    /std/room/shop
-
-Rueckgabewert:
-    Dateiname des Lagers, in dem die aufgekauften Gegenstaende aufbewahrt 
-    werden.
-
-Siehe auch:
-    Funktionen:
-      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(), 
-      QueryBuyValue(), QueryBuyFact(), sell_obj(), buy_obj()
-    Properties:
-      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
-
-------------------------------------------------------------------------------
-Letzte Aenderung: 21.05.2014, Bugfix
+
+QueryStorageRoom()
+******************
+
+QueryStorageRoom()
+
+Funktion
+   string QueryStorageRoom()
+
+Definiert in
+   /std/room/shop
+
+Rueckgabewert
+   Dateiname des Lagers, in dem die aufgekauften Gegenstaende
+   aufbewahrt werden.
+
+Siehe auch
+   Funktionen
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryBuyValue(), QueryBuyFact(), sell_obj(), buy_obj()
+
+   Properties
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+
+Letzte Aenderung 21.05.2014, Bugfix
+===================================
diff --git a/doc/lfun/QueryTimedAttrModifier b/doc/lfun/QueryTimedAttrModifier
index 1908608..4d858a8 100644
--- a/doc/lfun/QueryTimedAttrModifier
+++ b/doc/lfun/QueryTimedAttrModifier
@@ -1,42 +1,67 @@
+
 QueryTimedAttrModifier()
-FUNKTION:
-     mapping QueryTimedAttrModifier(string key)
+************************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     key	-	aus P_TIMED_ATTR_MOD abzufragender Eintrag
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der zu key gehoerende Eintrag in P_TIMED_ATTR_MOD wird abgefragt.
-
-RUeCKGABEWERT:
-     Ein leeres Mapping im Falle eines fehlerhaften key-Argumentes oder 
-     eines nicht existenten Keys.
-     
-     Ansonsten wird ein Mapping der Form
-     
-        ([
-           Key : ([ Mapping mit den Modifikatoren ]) ;
-                 Ablaufzeit ; Ablaufobjekt ; Nachrichtenempfaenger 
-        ])    
-
-     zurueckgegeben.Die Ablaufzeit ist hierbei die Zeit in Sekunden seit
-     dem 1. Jan 1970, 0.0:0 GMT, das Ablaufobjekt ist das Objekt an dessen
-     Existenz die Attributveraenderungen gebunden ist und der
-     Nachrichtenempfaenger ist dasjenigen Objekte welches im Falle 
-     durch den Aufruf von "NotifyTimedAttrModExpired" benachrichtigt 
-     wird sobald das Attribut abgelaufen ist. 
-     Der Funktion NotifyTimedAttrModExpired wird als Argument der key
-     der abgelaufenen Attributveraenderung uebergeben.
-     Das Mapping ist eine Kopie der Originaldatenstruktur zu diesem Key.
-    
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+   mapping QueryTimedAttrModifier(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       aus P_TIMED_ATTR_MOD abzufragender Eintrag
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag in P_TIMED_ATTR_MOD wird abgefragt.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein leeres Mapping im Falle eines fehlerhaften key-Argumentes oder
+   eines nicht existenten Keys.
+
+
+
+   Ansonsten wird ein Mapping der Form
+
+
+
+      ([
+         Key : ([ Mapping mit den Modifikatoren ]) ;
+               Ablaufzeit ; Ablaufobjekt ; Nachrichtenempfaenger
+      ])
+
+   zurueckgegeben.Die Ablaufzeit ist hierbei die Zeit in Sekunden seit
+   dem 1. Jan 1970, 0.0:0 GMT, das Ablaufobjekt ist das Objekt an dessen
+   Existenz die Attributveraenderungen gebunden ist und der
+   Nachrichtenempfaenger ist dasjenigen Objekte welches im Falle
+   durch den Aufruf von "NotifyTimedAttrModExpired" benachrichtigt
+   wird sobald das Attribut abgelaufen ist.
+   Der Funktion NotifyTimedAttrModExpired wird als Argument der key
+   der abgelaufenen Attributveraenderung uebergeben.
+   Das Mapping ist eine Kopie der Originaldatenstruktur zu diesem Key.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/QueryTotalQP b/doc/lfun/QueryTotalQP
index cf15cc0..1471010 100644
--- a/doc/lfun/QueryTotalQP
+++ b/doc/lfun/QueryTotalQP
@@ -1,25 +1,43 @@
+
 QueryTotalQP()
+**************
 
-FUNKTION:
-    int QueryTotalQP()
 
-DEFINIERT IN:
-    /secure/questmaster.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   int QueryTotalQP()
 
-RUECKGABEWERT:
-    Abenteuerpunkte saemtlicher Quests
 
-BESCHREIBUNG:
-    Diese Funktion liefert die Abenteuerpunkte der saemtlicher aktivierter
-    Quests zurueck.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
-    QueryMaxQP, QueryOptQP
+   /secure/questmaster.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte saemtlicher Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der saemtlicher aktivierter
+   Quests zurueck.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryMaxQP, QueryOptQP
+
 Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
-
diff --git a/doc/lfun/QueryUser b/doc/lfun/QueryUser
index 129a0a5..ad1e4fa 100644
--- a/doc/lfun/QueryUser
+++ b/doc/lfun/QueryUser
@@ -1,50 +1,77 @@
+
 QueryUser()
+***********
 
-FUNKTION:
-     public object QueryUser()
 
-DEFINIERT IN:
-     /std/npc/combat.c
-     /std/clothing/wear.c
-     /std/weapon/combat.c
-     alle Objekte, in denen es darueber hinaus noetig ist
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   public object QueryUser()
 
-BESCHREIBUNG:
-     Liefert den aktuellen Nutzer (Lebewesen) eines Items oder NPCs.
-     
-     Diese Funktion wird z.B. von get_killing_player() benutzt, um
-     herauszufinden, zu welchem Spieler denn das Objekt gehoert, was den
-     toedlichen Schaden verursacht hat.
 
-     Im Falle eines NPCs ist dies standardmaessig der Spieler, bei dem der
-     NPC als Helfer-NPC eingetragen ist (s. RegisterHelperNPC).
-     Im Falle einer Ruestung ist es das Lebewesen, welches sie gerade traegt.
-     Im Falle einer Waffe ist es das Lebewesen, welches sie gerade gezueckt
-     hat.
-     Alle anderen Objekte enthalten keinen Default fuer diese Funktion.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     Das nutzende Lebewesen, falls es ermittelt werden konnte, sonst 0.
+   /std/npc/combat.c
+   /std/clothing/wear.c
+   /std/weapon/combat.c
+   alle Objekte, in denen es darueber hinaus noetig ist
 
-BEMERKUNGEN:
-     Sollte in allen Objekten definiert werden, welche Lebewesen Schaden
-     zufuegen, ohne dass das verursachende Lebewesen dabei als Feind im
-     Defend() angeben wird.
-     Der gelieferte Nutzer muss explizit kein Spieler sein. Es waere z.B.
-     moeglich, dass von einem Spieler kontrollierter NPC einen Bumerang nutzt.
 
-BEISPIELE:
-     Ein von einem Spieler beschworenes Wesen wirft einen Bumerang nach einem
-     Feind.
-     Dann liefert QueryUser() im Bumerang den NPC als Nutzer und
-     QueryUser() im NPC wiederum den Spieler.
-     
-SIEHE AUCH:
-     RegisterHelperNPC(), get_killer_player()
-     P_WORN, P_WIELDED
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert den aktuellen Nutzer (Lebewesen) eines Items oder NPCs.
+
+
+
+   Diese Funktion wird z.B. von get_killing_player() benutzt, um
+   herauszufinden, zu welchem Spieler denn das Objekt gehoert, was den
+   toedlichen Schaden verursacht hat.
+
+   Im Falle eines NPCs ist dies standardmaessig der Spieler, bei dem der
+   NPC als Helfer-NPC eingetragen ist (s. RegisterHelperNPC).
+   Im Falle einer Ruestung ist es das Lebewesen, welches sie gerade traegt.
+   Im Falle einer Waffe ist es das Lebewesen, welches sie gerade gezueckt
+   hat.
+   Alle anderen Objekte enthalten keinen Default fuer diese Funktion.
+
+
+RUeCKGABEWERT
+=============
+
+   Das nutzende Lebewesen, falls es ermittelt werden konnte, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Sollte in allen Objekten definiert werden, welche Lebewesen Schaden
+   zufuegen, ohne dass das verursachende Lebewesen dabei als Feind im
+   Defend() angeben wird.
+   Der gelieferte Nutzer muss explizit kein Spieler sein. Es waere z.B.
+   moeglich, dass von einem Spieler kontrollierter NPC einen Bumerang nutzt.
+
+
+BEISPIELE
+=========
+
+   Ein von einem Spieler beschworenes Wesen wirft einen Bumerang nach einem
+   Feind.
+   Dann liefert QueryUser() im Bumerang den NPC als Nutzer und
+   QueryUser() im NPC wiederum den Spieler.
+
+
+SIEHE AUCH
+==========
+
+   RegisterHelperNPC(), get_killer_player()
+   P_WORN, P_WIELDED
+
 12.11.2013, Zesstra
-
diff --git a/doc/lfun/QueryValidObject b/doc/lfun/QueryValidObject
index 4622d65..649a0b2 100644
--- a/doc/lfun/QueryValidObject
+++ b/doc/lfun/QueryValidObject
@@ -1,47 +1,69 @@
+
 QueryValidObject()
-
-FUNKTION:
-     public int QueryValidObject(string oname);
-
-DEFINIERT IN:
-     /std/virtual/v_compiler.c
-
-ARGUMENTE:
-     oname
-       Objektname, der geprueft werden soll (kompletter Pfad mit / am Anfang) 
-
-RUeCKGABEWERT:
-     <=0 - falls VC nicht zustaendig ist.
-     >0 - falls der VC sich fuer das Objekt zustaendig erklaert.
-
-BESCHREIBUNG:
-     Ueber die Funktion laesst sich herausfinden, ob ein VC sich fuer das
-     gewuenschte Objekt zustaendig fuehlt. Dabei wird Validate(),
-     P_COMPILER_PATH, NoParaObjects() und P_PARA im VC ausgewertet:
-     1. Zuerst wird mit Validate() geprueft, ob der Filename (ohne Pfad) ok ist.
-     2. wird geguckt, ob das angefragte Objekt im richtigen Pfad liegt 
-        (P_COMPILER_PATH).
-     3. wenn das angefragte Objekt ein Para-Objekt ist:
-       a) wird NoParaObjects() geprueft, wenn das !=0 ist, sind gar keine Para-
-          Objekte erlaubt.
-       b) wird P_PARA _im VC_ abgefragt, dort kann man ein Array aller 
-          erlaubten Para-Dimensionen reinschreiben. Fuer alle anderen erklaert 
-          sich der VC fuer nicht zustaendig. Wenn P_PARA nicht gesetzt ist, 
-          sind alle erlaubt. Ein leeres Array ({}) wuerde einem 
-          NoParaObjects() {return 1;} entsprechen.
-
-BEMERKUNGEN:
-     Diese Funktion wird vom move abgefragt. Bitte auf jeden Fall P_PARA oder
-     NoParaObjects() passend definieren, sonst buggts.
-
-     Wenn jemand mit dem oben beschrieben Standardverhalten nicht gluecklich
-     ist, kann man die Funktion passend ueberschreiben.
+******************
 
 
-SIEHE AUCH:
-     virtual_compiler
-     CustomizeObject(), Validate(), NoParaObjects(), 
-     P_COMPILER_PATH, P_PARA
-     /std/virtual/v_compiler.c
-----------------------------------------------------------------------------
+FUNKTION
+========
+
+   public int QueryValidObject(string oname);
+
+
+DEFINIERT IN
+============
+
+   /std/virtual/v_compiler.c
+
+
+ARGUMENTE
+=========
+
+   oname
+     Objektname, der geprueft werden soll (kompletter Pfad mit / am Anfang)
+
+
+RUeCKGABEWERT
+=============
+
+   <=0 - falls VC nicht zustaendig ist.
+   >0 - falls der VC sich fuer das Objekt zustaendig erklaert.
+
+
+BESCHREIBUNG
+============
+
+   Ueber die Funktion laesst sich herausfinden, ob ein VC sich fuer das
+   gewuenschte Objekt zustaendig fuehlt. Dabei wird Validate(),
+   P_COMPILER_PATH, NoParaObjects() und P_PARA im VC ausgewertet:
+   1. Zuerst wird mit Validate() geprueft, ob der Filename (ohne Pfad) ok ist.
+   2. wird geguckt, ob das angefragte Objekt im richtigen Pfad liegt
+      (P_COMPILER_PATH).
+   3. wenn das angefragte Objekt ein Para-Objekt ist:
+     a) wird NoParaObjects() geprueft, wenn das !=0 ist, sind gar keine Para-
+        Objekte erlaubt.
+     b) wird P_PARA _im VC_ abgefragt, dort kann man ein Array aller
+        erlaubten Para-Dimensionen reinschreiben. Fuer alle anderen erklaert
+        sich der VC fuer nicht zustaendig. Wenn P_PARA nicht gesetzt ist,
+        sind alle erlaubt. Ein leeres Array ({}) wuerde einem
+        NoParaObjects() {return 1;} entsprechen.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird vom move abgefragt. Bitte auf jeden Fall P_PARA oder
+   NoParaObjects() passend definieren, sonst buggts.
+
+   Wenn jemand mit dem oben beschrieben Standardverhalten nicht gluecklich
+   ist, kann man die Funktion passend ueberschreiben.
+
+
+SIEHE AUCH
+==========
+
+   virtual_compiler
+   CustomizeObject(), Validate(), NoParaObjects(),
+   P_COMPILER_PATH, P_PARA
+   /std/virtual/v_compiler.c
+
 21.10.2007, Zesstra
diff --git a/doc/lfun/ReceiveMsg b/doc/lfun/ReceiveMsg
index 6443bcd..cd1a34d 100644
--- a/doc/lfun/ReceiveMsg
+++ b/doc/lfun/ReceiveMsg
@@ -1,250 +1,278 @@
+
+ReceiveMsg()
+************
+
 ReceiveMsg()
 
-public varargs int ReceiveMsg(string msg, int msg_typ, string msg_action,
-                              string msg_prefix, mixed origin)
+public varargs int ReceiveMsg(string msg, int msg_typ, string
+msg_action,
+   string msg_prefix, mixed origin)
 
-DEFINIERT IN:
-    /std/living/comm.c
-    /std/npc/comm.c
-    /std/player/comm.c
-    /std/room/items.c
 
-ARGUMENTE:
-    string msg
-      String mit der uebermittelten Nachricht. Muss nicht umgebrochen sein,
-      da ReceiveMsg() das ebenfalls erledigt.
-    int msg_typ
-      Nachrichtentyp(en) fuer Filterung und Flags fuer Behandlung/Umbruch.
-      Siehe unten fuer mit | kombinierbare Konstanten.
-    string msg_action (optional)
-      Ausloesende Aktion, wird auch fuer Ignorieren verwendet.
-      Default ist query_verb(). Siehe unten fuer alternative Konstanten.
-    string msg_prefix (optional)
-      String, welcher ggf. im break_string() als indent verwendet wird.
-      Default ist 0 (kein Indent)
-    mixed origin (<object>) (optional)
-      Das die Meldung ausloesende Objekt, wird fuer Ignorieren verwendet.
-      Default: previous_object()
+DEFINIERT IN
+============
 
-BESCHREIBUNG:
-    ReceiveMsg() wird benutzt, um einem Lebewesen eine Nachricht zu senden.
-    Dabei ruft es das sonst uebliche tell_object() fuer Spieler bzw.
-    catch_tell() im NPC auf.
+   /std/living/comm.c
+   /std/npc/comm.c
+   /std/player/comm.c
+   /std/room/items.c
 
-    Gerade fuer Nachrichten an Spieler bietet die Methode weitere Features,
-    die bisher sonst haendisch zu implementieren waren:
-    1) Pruefung auf Empfangbarkeit, je nach 'msg_typ', zB
-       MT_LOOK nur an Nichtblinde
-       MT_LISTEN nur an Nichttaube
-       MT_DEBUG nur an Magier/Testspieler
-    2) Pruefen auf Ignorieren von
-       - Aktion ('msg_action')
-         - mit 'msg_action' || query_verb()
-       - Urheber ('origin')
-         - fuer sendende Spieler mit origin->query_realname()
-         - fuer sendende NPCs mit origin->Name(RAW))
-    3) Speicherung in der tmhist (Typ MT_COMM)
-    4) Speicherung im Kobold (Typ MT_COMM + aktiver Kobold)
-    5) Umbrechen unter Beruecksichtigung von indent, 'msg_typ'-Flags
-       fuer Umbruch und P_PREPEND_BS
 
-    Raeume definieren standardmaessig ebenfalls ein ReceiveMsg(), welches in
-    jedem Objekt im Raum ReceiveMsg() mit den uebergebenen Argumenten aufruft.
-    In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
-    ReceiveMsg() zurueckgelieferte Wert.
-    
-RUeCKGABEWERT:
-    > 0 fuer Erfolg, < 0 fuer Misserfolg, s.u.
-    MSG_DELIVERED    bei erfolgreicher Zustellung
-    MSG_BUFFERED     bei Zwischenspeicherung durch den Kobold
+ARGUMENTE
+=========
 
-    MSG_FAILED       nicht naeher spezifizierter Fehler bei Zustellung
-    MSG_IGNORED      Nachricht wurde ignoriert (Absender, origin)
-    MSG_VERB_IGN     Nachricht wurde ignoriert (Kommandoverb, msg_action)
-    MSG_MUD_IGN      Absendendes Mud wurde ignoriert.
-    MSG_SENSE_BLOCK  Passende Sinne des Empfaenger sind blockiert (z.B.
-                     blind, taub)
-    MSG_BUFFER_FULL  Kobold kann sich nichts mehr merken
+   string msg
+     String mit der uebermittelten Nachricht. Muss nicht umgebrochen sein,
+     da ReceiveMsg() das ebenfalls erledigt.
+   int msg_typ
+     Nachrichtentyp(en) fuer Filterung und Flags fuer Behandlung/Umbruch.
+     Siehe unten fuer mit | kombinierbare Konstanten.
+   string msg_action (optional)
+     Ausloesende Aktion, wird auch fuer Ignorieren verwendet.
+     Default ist query_verb(). Siehe unten fuer alternative Konstanten.
+   string msg_prefix (optional)
+     String, welcher ggf. im break_string() als indent verwendet wird.
+     Default ist 0 (kein Indent)
+   mixed origin (<object>) (optional)
+     Das die Meldung ausloesende Objekt, wird fuer Ignorieren verwendet.
+     Default: previous_object()
 
-BEMERKUNGEN:
-    Fuer saemtliche Alternativmeldungen im Falle einer nicht erfolgreich
-    zugestellten Nachricht ist der Aufrufer von ReceiveMsg() verantwortlich.
 
-    NPCs:
-    * ReceiveMsg() ruft zwecks Abwaertskompatibilitaet catch_tell() auf
-    * empfohlen ist, in NPCs nun ReceiveMsg() zu ueberschreiben.
-      * catch_tell() muss weiterhin fuer andere tell_object()
-        ueberschrieben  werden
+BESCHREIBUNG
+============
 
-BEISPIELE:
-    #1.1 Nachricht an einen Spieler, zB in der Wueste
-    this_player()->ReceiveMsg("Die Sonne brennt dir auf den Kopf.",
-                              MT_FEEL|MT_LOOK);
+   ReceiveMsg() wird benutzt, um einem Lebewesen eine Nachricht zu senden.
+   Dabei ruft es das sonst uebliche tell_object() fuer Spieler bzw.
+   catch_tell() im NPC auf.
 
-    #1.2 Nachricht an einen Spieler von einem NPC mit Indent
-    // bei aktivem Editor+Kobold landet dieser Text auch im Kobold
-    this_player()->ReceiveMsg("Du haust ja ganz schoen rein!",
+   Gerade fuer Nachrichten an Spieler bietet die Methode weitere Features,
+   die bisher sonst haendisch zu implementieren waren:
+   1) Pruefung auf Empfangbarkeit, je nach 'msg_typ', zB
+      MT_LOOK nur an Nichtblinde
+      MT_LISTEN nur an Nichttaube
+      MT_DEBUG nur an Magier/Testspieler
+   2) Pruefen auf Ignorieren von
+      - Aktion ('msg_action')
+        - mit 'msg_action' || query_verb()
+      - Urheber ('origin')
+        - fuer sendende Spieler mit origin->query_realname()
+        - fuer sendende NPCs mit origin->Name(RAW))
+   3) Speicherung in der tmhist (Typ MT_COMM)
+   4) Speicherung im Kobold (Typ MT_COMM + aktiver Kobold)
+   5) Umbrechen unter Beruecksichtigung von indent, 'msg_typ'-Flags
+      fuer Umbruch und P_PREPEND_BS
+
+   Raeume definieren standardmaessig ebenfalls ein ReceiveMsg(), welches in
+   jedem Objekt im Raum ReceiveMsg() mit den uebergebenen Argumenten aufruft.
+   In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
+   ReceiveMsg() zurueckgelieferte Wert.
+
+
+RUeCKGABEWERT
+=============
+
+   > 0 fuer Erfolg, < 0 fuer Misserfolg, s.u.
+   MSG_DELIVERED    bei erfolgreicher Zustellung
+   MSG_BUFFERED     bei Zwischenspeicherung durch den Kobold
+
+   MSG_FAILED       nicht naeher spezifizierter Fehler bei Zustellung
+   MSG_IGNORED      Nachricht wurde ignoriert (Absender, origin)
+   MSG_VERB_IGN     Nachricht wurde ignoriert (Kommandoverb, msg_action)
+   MSG_MUD_IGN      Absendendes Mud wurde ignoriert.
+   MSG_SENSE_BLOCK  Passende Sinne des Empfaenger sind blockiert (z.B.
+                    blind, taub)
+   MSG_BUFFER_FULL  Kobold kann sich nichts mehr merken
+
+
+BEMERKUNGEN
+===========
+
+   Fuer saemtliche Alternativmeldungen im Falle einer nicht erfolgreich
+   zugestellten Nachricht ist der Aufrufer von ReceiveMsg() verantwortlich.
+
+   NPCs:
+   * ReceiveMsg() ruft zwecks Abwaertskompatibilitaet catch_tell() auf
+   * empfohlen ist, in NPCs nun ReceiveMsg() zu ueberschreiben.
+     * catch_tell() muss weiterhin fuer andere tell_object()
+       ueberschrieben  werden
+
+
+BEISPIELE
+=========
+
+   #1.1 Nachricht an einen Spieler, zB in der Wueste
+   this_player()->ReceiveMsg("Die Sonne brennt dir auf den Kopf.",
+                             MT_FEEL|MT_LOOK);
+
+   #1.2 Nachricht an einen Spieler von einem NPC mit Indent
+   // bei aktivem Editor+Kobold landet dieser Text auch im Kobold
+   this_player()->ReceiveMsg("Du haust ja ganz schoen rein!",
+                             MT_COMM|MT_FAR|MSG_DONT_STORE,
+                             MA_TELL,
+                             "Arkshat teilt dir mit: ");
+
+   #1.3 Nachricht an einen Spieler mit Fallback-Kaskade
+   // Achtung, bei MT_COMM oder Ignorieren gibt es natuerlich auch
+   // Misserfolgs-Rueckgaben. Bei einem normalen Kommando wie diesem
+   // hier ist das unproblematisch und daher sinnvoll:
+   if(this_player()->ReceiveMsg(
+        "Du drueckst den Knopf und es oeffnet sich knirschend "
+        "ein kleines Fach in der Wand.", MT_LOOK) < MSG_DELIVERED &&
+      this_player()->ReceiveMsg(
+        "Du drueckst den Knopf und irgend etwas scheint sich "
+        "knirschend zu oeffnen. Das Geraeusch kam von der Wand.",
+        MT_LISTEN) < MSG_DELIVERED) // leider blind UND taub ... also:
+     this_player()->ReceiveMsg(
+       "Du drueckst den Knopf und irgend etwas scheint zu passieren, "
+       "aber leider siehst und hoerst du nichts.", MT_FEEL);
+
+
+   #2.1 Im NPC als Empfaenger auf ein TM reagieren
+   public varargs int ReceiveMsg(string msg, int msg_typ, string msg_action,
+                                 string msg_prefix, mixed origin) {
+     int ret = MSG_DELIVERED;  // Default
+
+     // eine OOC-Kommunikation?
+     if(msg_typ&MT_COMM) {
+       if(strstr(msg, "hilfe")>=0)
+         if(environment(origin)==environment()) {
+           origin->ReceiveMsg("Ich werd dir gleich helfen!",
+                              MT_COMM|MSG_DONT_STORE, MA_TELL,
+                              "Arkshat teilt dir mit: ");
+         } else {
+           origin->ReceiveMsg("Hilf dir selbst, dann hilft dir Gott!",
                               MT_COMM|MT_FAR|MSG_DONT_STORE,
                               MA_TELL,
                               "Arkshat teilt dir mit: ");
+         }
+       else if(...)
+       [...]
+     } else if(msg_typ&MT_LISTEN && msg_action==MA_SAY) {
+       [...]
+     }
 
-    #1.3 Nachricht an einen Spieler mit Fallback-Kaskade
-    // Achtung, bei MT_COMM oder Ignorieren gibt es natuerlich auch
-    // Misserfolgs-Rueckgaben. Bei einem normalen Kommando wie diesem
-    // hier ist das unproblematisch und daher sinnvoll:
-    if(this_player()->ReceiveMsg(
-         "Du drueckst den Knopf und es oeffnet sich knirschend "
-         "ein kleines Fach in der Wand.", MT_LOOK) < MSG_DELIVERED &&
-       this_player()->ReceiveMsg(
-         "Du drueckst den Knopf und irgend etwas scheint sich "
-         "knirschend zu oeffnen. Das Geraeusch kam von der Wand.",
-         MT_LISTEN) < MSG_DELIVERED) // leider blind UND taub ... also:
-      this_player()->ReceiveMsg(
-        "Du drueckst den Knopf und irgend etwas scheint zu passieren, "
-        "aber leider siehst und hoerst du nichts.", MT_FEEL);
+     return ret;
+   }
 
 
-    #2.1 Im NPC als Empfaenger auf ein TM reagieren
-    public varargs int ReceiveMsg(string msg, int msg_typ, string msg_action,
-                                  string msg_prefix, mixed origin) {
-      int ret = MSG_DELIVERED;  // Default
+   #3.1 als Sender an viele, Variante mit eigenem filter
+   // Achtung: siehe 3.3. send_room() loest vieles.
+   // Living nickt nur seinen Nichtgegnern zu
+   object *all = filter(all_inventory(environment(this_player())),
+                        #'living) - ({this_player()});
+   all -= this_player()->PresentEnemies();
+   all->ReceiveMsg(this_player()->Name()+
+                   " nickt dir verstohlen zu und scheint bereit.",
+                   MT_LOOK, MA_EMOTE);
 
-      // eine OOC-Kommunikation?
-      if(msg_typ&MT_COMM) {
-        if(strstr(msg, "hilfe")>=0)
-          if(environment(origin)==environment()) {
-            origin->ReceiveMsg("Ich werd dir gleich helfen!",
-                               MT_COMM|MSG_DONT_STORE, MA_TELL,
-                               "Arkshat teilt dir mit: ");
-          } else {
-            origin->ReceiveMsg("Hilf dir selbst, dann hilft dir Gott!",
-                               MT_COMM|MT_FAR|MSG_DONT_STORE,
-                               MA_TELL,
-                               "Arkshat teilt dir mit: ");
-          }
-        else if(...)
-        [...]
-      } else if(msg_typ&MT_LISTEN && msg_action==MA_SAY) {
-        [...]
-      }
+   #3.2 als Sender an viele, Variante mit einzelnem Iterieren
+   // Achtung: siehe 3.3. send_room() loest vieles.
+   // Living trinkt etwas, jeder im Raum soll es sehen oder hoeren
+   object ob = first_inventory(environment(this_player()));
+   do {
+     if(living(ob) && ob!=this_player())
+       ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
+                      MT_LOOK|MT_LISTEN,
+                      MA_DRINK);
+     ob = next_inventory(ob);
+   } while(ob);
 
-      return ret;
-    }
+   #3.3 als Sender an viele, Variante mit send_room
+   // Living gruesst seine Freunde
+   // send_room() ruft ReceiveMsg mit allen entsprechenden Parametern
+   object *exclude = this_player()->PresentEnemies();
+   send_room(this_object(),
+             this_player()->Name()+" gruesst dich.",
+             MT_LOOK|MT_LISTEN,
+             MA_EMOTE,
+             0,
+             exclude);
+
+   #3.4 als Sender an viele mit send_room und ReceiveMsg()
+   // Living gruesst seine Freunde, seine Feinde sehen das
+   // send_room() ruft ReceiveMsg mit allen entsprechenden Parametern
+   object *exclude = this_player()->PresentEnemies();
+   send_room(this_object(),
+             this_player()->Name()+" gruesst dich.",
+             MT_LOOK|MT_LISTEN, MA_EMOTE, 0, exclude);
+   exclude->ReceiveMessage(
+     this_player()->Name()+" gruesst, aber nicht dich.",
+     MT_LOOK|MT_LISTEN, MA_EMOTE);
 
 
-    #3.1 als Sender an viele, Variante mit eigenem filter
-    // Achtung: siehe 3.3. send_room() loest vieles.
-    // Living nickt nur seinen Nichtgegnern zu
-    object *all = filter(all_inventory(environment(this_player())),
-                         #'living) - ({this_player()});
-    all -= this_player()->PresentEnemies();
-    all->ReceiveMsg(this_player()->Name()+
-                    " nickt dir verstohlen zu und scheint bereit.",
-                    MT_LOOK, MA_EMOTE);
+KONSTANTEN FUER PARAMETER
+=========================
 
-    #3.2 als Sender an viele, Variante mit einzelnem Iterieren
-    // Achtung: siehe 3.3. send_room() loest vieles.
-    // Living trinkt etwas, jeder im Raum soll es sehen oder hoeren
-    object ob = first_inventory(environment(this_player()));
-    do {
-      if(living(ob) && ob!=this_player())
-        ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
-                       MT_LOOK|MT_LISTEN,
-                       MA_DRINK);
-      ob = next_inventory(ob);
-    } while(ob);
+   Saemtlich in "/sys/living/comm.h". Hier nicht notwendigerweise
+   immer aktuell oder vollstaendig.
 
-    #3.3 als Sender an viele, Variante mit send_room
-    // Living gruesst seine Freunde
-    // send_room() ruft ReceiveMsg mit allen entsprechenden Parametern
-    object *exclude = this_player()->PresentEnemies();
-    send_room(this_object(),
-              this_player()->Name()+" gruesst dich.",
-              MT_LOOK|MT_LISTEN,
-              MA_EMOTE,
-              0,
-              exclude);
+   <msg_typ>
+     MT_UNKNOWN      unspez. Nachrichtentyp (nicht verwenden). Es wird
+                     versucht, aufgrund <msg_action> den Typ zu erraten.
+     MT_LOOK         alles, was man sieht
+     MT_LISTEN       alles, was man hoert
+     MT_FEEL         alles, was man fuehlt
+     MT_TASTE        alles, was man schmeckt
+     MT_SMELL        alles, was man riecht
+     MT_MAGIC        alle sonstigen (uebersinnlichen) Wahrnehmungen
+     MT_NOTIFICATION Statusmeldungen, Kommandobestaetigungen
+     MT_COMM         alle OOC-Kommunikation, d.h. nicht durch o.g. Sinne
+                     abgedeckt.
+     MT_FAR          alles, was aus der Ferne / einem anderen Raum kommt.
+                     muss mit min. einem anderen Typ kombiniert werden
+     MT_DEBUG        Debugmeldungen, sehen nur Magier im Magiermodus
+     MT_NEWS         Mails & MPA
 
-    #3.4 als Sender an viele mit send_room und ReceiveMsg()
-    // Living gruesst seine Freunde, seine Feinde sehen das
-    // send_room() ruft ReceiveMsg mit allen entsprechenden Parametern
-    object *exclude = this_player()->PresentEnemies();
-    send_room(this_object(),
-              this_player()->Name()+" gruesst dich.",
-              MT_LOOK|MT_LISTEN, MA_EMOTE, 0, exclude);
-    exclude->ReceiveMessage(
-      this_player()->Name()+" gruesst, aber nicht dich.",
-      MT_LOOK|MT_LISTEN, MA_EMOTE);
+     MSG_DONT_BUFFER Nachricht darf nicht im Kobold gespeichert werden
+     MSG_DONT_STORE  Nachricht darf nicht in die Comm-History
+     MSG_DONT_WRAP   Nachricht nicht per break_string umbrechen
+     MSG_DONT_IGNORE Nachricht kann nicht ignoriert werden
 
-KONSTANTEN FUER PARAMETER:
-    Saemtlich in "/sys/living/comm.h". Hier nicht notwendigerweise
-    immer aktuell oder vollstaendig.
+     MSG_BS_LEAVE_LFS    wie BS_LEAVE_MY_LFS fuer break_string()
+     MSG_BS_SINGLE_SPACE wie BS_SINGLE_SPACE fuer break_string()
+     MSG_BS_BLOCK        wie BS_BLOCK fuer break_string()
+     MSG_BS_NO_PARINDENT wie BS_NO_PARINDENT fuer break_string()
+     MSG_BS_INDENT_ONCE  wie BS_INDENT_ONCE fuer break_string()
+     MSG_BS_PREP_INDENT  wie BS_PREPEND_INDENT fuer break_string()
 
-    <msg_typ>
-      MT_UNKNOWN      unspez. Nachrichtentyp (nicht verwenden). Es wird
-                      versucht, aufgrund <msg_action> den Typ zu erraten.
-      MT_LOOK         alles, was man sieht
-      MT_LISTEN       alles, was man hoert
-      MT_FEEL         alles, was man fuehlt
-      MT_TASTE        alles, was man schmeckt
-      MT_SMELL        alles, was man riecht
-      MT_MAGIC        alle sonstigen (uebersinnlichen) Wahrnehmungen
-      MT_NOTIFICATION Statusmeldungen, Kommandobestaetigungen
-      MT_COMM         alle OOC-Kommunikation, d.h. nicht durch o.g. Sinne
-                      abgedeckt.
-      MT_FAR          alles, was aus der Ferne / einem anderen Raum kommt.
-                      muss mit min. einem anderen Typ kombiniert werden
-      MT_DEBUG        Debugmeldungen, sehen nur Magier im Magiermodus
-      MT_NEWS         Mails & MPA
+   <msg_action> (optional)
+     MA_UNKNOWN     Unspez. Aktion. Es wird der Default query_verb()
+                    benutzt bzw. versucht, die Aktion zu erraten.
+     MA_PUT         Jemand legt etwas hin und gibt jemanden etwas
+     MA_TAKE        Jemand nimmt etwas
+     MA_MOVE_IN     Jemand betritt den Raum
+     MA_MOVE_OUT    Jemand verlaesst den Raum
+     MA_MOVE        Jemand bewegt sich
+     MA_FIGHT       Jemand kaempft
+     MA_WIELD       Jemand zueckt eine Waffe
+     MA_UNWIELD     Jemand steckt eine Waffe weg
+     MA_WEAR        Jemand zieht etwas an
+     MA_UNWEAR      Jemand zieht etwas aus
+     MA_EAT         Jemand isst etwas
+     MA_DRINK       Jemand trinkt etwas
+     MA_SPELL       Jemand wirkt einen Spell
+     MA_LOOK        Jemand sieht etwas an, untersucht etwas
+     MA_LISTEN      Jemand horcht oder lauscht an etwas
+     MA_FEEL        Jemand betastet etwas
+     MA_SMELL       Jemand schnueffelt herum
+     MA_SENSE       Jemand macht eine uebersinnliche Wahrnehmung
+     MA_READ        Jemand liest etwas
+     MA_USE         Jemand benutzt etwas
+     MA_SAY         Jemand sagt etwas
+     MA_REMOVE      Etwas verschwindet
+     // MA_CHAT        Chatkrams (z.B. teile-mit, Teamkampfchat)
+     MA_CHANNEL     Ebenen
+     MA_EMOTE       (r)Emotes, Soulverben (remotes mit Typ MT_COMM|MT_FAR)
+     MA_SHOUT       Rufen (nicht: shout()!)
+     MA_SHOUT_SEFUN Rufen ueber shout(SE)
 
-      MSG_DONT_BUFFER Nachricht darf nicht im Kobold gespeichert werden
-      MSG_DONT_STORE  Nachricht darf nicht in die Comm-History
-      MSG_DONT_WRAP   Nachricht nicht per break_string umbrechen
-      MSG_DONT_IGNORE Nachricht kann nicht ignoriert werden
 
-      MSG_BS_LEAVE_LFS    wie BS_LEAVE_MY_LFS fuer break_string()
-      MSG_BS_SINGLE_SPACE wie BS_SINGLE_SPACE fuer break_string()
-      MSG_BS_BLOCK        wie BS_BLOCK fuer break_string()
-      MSG_BS_NO_PARINDENT wie BS_NO_PARINDENT fuer break_string()
-      MSG_BS_INDENT_ONCE  wie BS_INDENT_ONCE fuer break_string()
-      MSG_BS_PREP_INDENT  wie BS_PREPEND_INDENT fuer break_string()
+SIEHE AUCH
+==========
 
-    <msg_action> (optional)
-      MA_UNKNOWN     Unspez. Aktion. Es wird der Default query_verb()
-                     benutzt bzw. versucht, die Aktion zu erraten.
-      MA_PUT         Jemand legt etwas hin und gibt jemanden etwas
-      MA_TAKE        Jemand nimmt etwas
-      MA_MOVE_IN     Jemand betritt den Raum
-      MA_MOVE_OUT    Jemand verlaesst den Raum
-      MA_MOVE        Jemand bewegt sich 
-      MA_FIGHT       Jemand kaempft
-      MA_WIELD       Jemand zueckt eine Waffe
-      MA_UNWIELD     Jemand steckt eine Waffe weg
-      MA_WEAR        Jemand zieht etwas an
-      MA_UNWEAR      Jemand zieht etwas aus
-      MA_EAT         Jemand isst etwas
-      MA_DRINK       Jemand trinkt etwas
-      MA_SPELL       Jemand wirkt einen Spell
-      MA_LOOK        Jemand sieht etwas an, untersucht etwas
-      MA_LISTEN      Jemand horcht oder lauscht an etwas
-      MA_FEEL        Jemand betastet etwas
-      MA_SMELL       Jemand schnueffelt herum
-      MA_SENSE       Jemand macht eine uebersinnliche Wahrnehmung
-      MA_READ        Jemand liest etwas
-      MA_USE         Jemand benutzt etwas
-      MA_SAY         Jemand sagt etwas
-      MA_REMOVE      Etwas verschwindet
-      // MA_CHAT        Chatkrams (z.B. teile-mit, Teamkampfchat)
-      MA_CHANNEL     Ebenen
-      MA_EMOTE       (r)Emotes, Soulverben (remotes mit Typ MT_COMM|MT_FAR)
-      MA_SHOUT       Rufen (nicht: shout()!)
-      MA_SHOUT_SEFUN Rufen ueber shout(SE)
-
-SIEHE AUCH:
-    Verwandt: send_room(SE)
-    Lfuns:    TestIgnore(L)
-    Efuns:    tell_object(E), catch_tell(L), catch_msg(L)
-              query_verb(E), query_once_interactive(E), break_string(SE)
+   Verwandt: send_room(SE)
+   Lfuns:    TestIgnore(L)
+   Efuns:    tell_object(E), catch_tell(L), catch_msg(L)
+             query_verb(E), query_once_interactive(E), break_string(SE)
 
 13.03.2016, Zesstra
-
diff --git a/doc/lfun/RegisterEvent b/doc/lfun/RegisterEvent
index 8bc5d8d..a664b3b 100644
--- a/doc/lfun/RegisterEvent
+++ b/doc/lfun/RegisterEvent
@@ -1,82 +1,113 @@
 
-FUNKTION:
-     int RegisterEvent(string eid, string fun, object listener);
-
-DEFINIERT IN:
-     /p/daemon/eventd.c
-DEKLARIERT IN:
-     /sys/events.h
-
-ARGUMENTE:
-     string eid,
-       Die ID des Events, fuer den man sich registrieren will. Da dieser
-       String fuer alle Events jeweils eindeutig sein muss, empfiehlt es sich,
-       fuer eigene Events z.B. als Praefix den eigenen Magiernamen zu nehmen,
-       z.B. "zesstra_vulkanausbruch".
-       ACHTUNG: IDs, die mit '_evt_lib_' beginnen, sind AUSSCHLIESSLICH der
-       Mudlib vorbehalten!
-     string fun,
-       Name der Funktion, die im Objekt listener bei Auftreten des Events
-       gerufen werden soll.
-     object listener,
-       Das Objekt, das als Lauscher fuer diesen Event registriert werden soll.
-
-BESCHREIBUNG:
-     Das Objekt 'listener' wird als Lauscher dieses Events registriert. Ab
-     diesem Moment wird immer dann, wenn ein Event mit der ID 'eid' ausgeloest
-     wird, in 'listener' die Funktion 'fun' aufgerufen (zeitverzoegert, meist
-     0-2s).
-     
-     Die Funktion wird dabei immer mit 3 Argumenten aufgerufen:
-     listener->fun(eid, triggerob, data);
-     Hierbei ist 'eid' die jeweilige Event-ID und 'triggerob' ist das Objekt,
-     welches den Event ausloeste. 
-     'data' kann jeder LPC-Datentyp sein und enthaelt die Daten, die das
-     triggernde Objekt an alle Listener uebermitteln will (damit sind Datentyp
-     und Inhalt komplett abhaengig vom Event!)
-
-     Existiert bisher noch kein Event mit der ID 'eid', wird implizit ein
-     neuer Event erstellt, der erstmal nur das sich gerade registrierende
-     Objekt als Lauscher hat.
+RegisterEvent()
+***************
 
 
-RUeCKGABEWERT:
-     1 fuer Erfolg, <=0 fuer Misserfolg.
-     1   - Erfolg, 'listener' wurde eingetragen.
-     -1  - falsche Argumente wurden uebergeben
-     -2  - nicht-oeffentlicher Event und 'listener' wurde nicht fuer diesen
-           Event freigegeben (momentan gibt es noch keine nicht-oeffentlichen
-           Events)
-     -3  - 'fun' in 'listener' ist nicht vorhanden oder nicht von aussen 
-           aufrufbar (protected, static, private).
-     
-BEMERKUNGEN:
-     Wenn 'listener' bereits fuer den Event registriert wird, wird die alte
-     Registrierung ueberschrieben (als ggf. gilt dann der jetzt uebergebene
-     Funktionsname).
-     Die Funktion 'fun' sollte sparsam mit den Eval-Ticks umgehen. Momentan
-     ist die max. Menge an Ticks auf 30000 beschraenkt. Dies kann bei
-     Problemen auch jederzeit reduziert werden!
-     Der EVENTD merkt sich Event-Lauscher nicht ueber Reboots hinaus.
-     Sollte sich eine Blueprint anmelden, sich zerstoeren und neugeladen
-     werden, ist die neue Blueprint noch angemeldet, weil das neue Objekt
-     unter dem alten Namen wiedergefunden wird. Dies gilt _nicht_ fuer
-     Clones!
+FUNKTION
+========
 
-BEISPIELE:
-     1. Ein Objekt moechte ueber Spielertode informiert werden:
-          EVENTD->RegisterEvent(EVT_LIB_PLAYER_DEATH, "spieler_ist_tot", 
+   int RegisterEvent(string eid, string fun, object listener);
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/eventd.c
+
+
+DEKLARIERT IN
+=============
+
+   /sys/events.h
+
+
+ARGUMENTE
+=========
+
+   string eid,
+     Die ID des Events, fuer den man sich registrieren will. Da dieser
+     String fuer alle Events jeweils eindeutig sein muss, empfiehlt es sich,
+     fuer eigene Events z.B. als Praefix den eigenen Magiernamen zu nehmen,
+     z.B. "zesstra_vulkanausbruch".
+     ACHTUNG: IDs, die mit '_evt_lib_' beginnen, sind AUSSCHLIESSLICH der
+     Mudlib vorbehalten!
+   string fun,
+     Name der Funktion, die im Objekt listener bei Auftreten des Events
+     gerufen werden soll.
+   object listener,
+     Das Objekt, das als Lauscher fuer diesen Event registriert werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Objekt 'listener' wird als Lauscher dieses Events registriert. Ab
+   diesem Moment wird immer dann, wenn ein Event mit der ID 'eid' ausgeloest
+   wird, in 'listener' die Funktion 'fun' aufgerufen (zeitverzoegert, meist
+   0-2s).
+
+
+
+   Die Funktion wird dabei immer mit 3 Argumenten aufgerufen:
+   listener->fun(eid, triggerob, data);
+   Hierbei ist 'eid' die jeweilige Event-ID und 'triggerob' ist das Objekt,
+   welches den Event ausloeste.
+   'data' kann jeder LPC-Datentyp sein und enthaelt die Daten, die das
+   triggernde Objekt an alle Listener uebermitteln will (damit sind Datentyp
+   und Inhalt komplett abhaengig vom Event!)
+
+   Existiert bisher noch kein Event mit der ID 'eid', wird implizit ein
+   neuer Event erstellt, der erstmal nur das sich gerade registrierende
+   Objekt als Lauscher hat.
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg, <=0 fuer Misserfolg.
+   1   - Erfolg, 'listener' wurde eingetragen.
+   -1  - falsche Argumente wurden uebergeben
+   -2  - nicht-oeffentlicher Event und 'listener' wurde nicht fuer diesen
+         Event freigegeben (momentan gibt es noch keine nicht-oeffentlichen
+         Events)
+   -3  - 'fun' in 'listener' ist nicht vorhanden oder nicht von aussen
+         aufrufbar (protected, static, private).
+
+
+BEMERKUNGEN
+===========
+
+   Wenn 'listener' bereits fuer den Event registriert wird, wird die alte
+   Registrierung ueberschrieben (als ggf. gilt dann der jetzt uebergebene
+   Funktionsname).
+   Die Funktion 'fun' sollte sparsam mit den Eval-Ticks umgehen. Momentan
+   ist die max. Menge an Ticks auf 30000 beschraenkt. Dies kann bei
+   Problemen auch jederzeit reduziert werden!
+   Der EVENTD merkt sich Event-Lauscher nicht ueber Reboots hinaus.
+   Sollte sich eine Blueprint anmelden, sich zerstoeren und neugeladen
+   werden, ist die neue Blueprint noch angemeldet, weil das neue Objekt
+   unter dem alten Namen wiedergefunden wird. Dies gilt _nicht_ fuer
+   Clones!
+
+
+BEISPIELE
+=========
+
+   1. Ein Objekt moechte ueber Spielertode informiert werden:
+        EVENTD->RegisterEvent(EVT_LIB_PLAYER_DEATH, "spieler_ist_tot",
+                              this_object());
+      Ab jetzt wird im Objekt jedes Mal, wenn ein Spieler stirbt, die
+      Funktion "spieler_ist_tot" aufgerufen.
+
+   2. Ein Objekt will informiert werden, wenn der Event
+      "boing_zwergenkoenig_angriff" ausgeloest wird:
+         EVENTD->RegisterEvent("boing_zwergenkoenig_angriff","alarm",
                                 this_object());
-        Ab jetzt wird im Objekt jedes Mal, wenn ein Spieler stirbt, die 
-        Funktion "spieler_ist_tot" aufgerufen.
 
-     2. Ein Objekt will informiert werden, wenn der Event
-        "boing_zwergenkoenig_angriff" ausgeloest wird:
-           EVENTD->RegisterEvent("boing_zwergenkoenig_angriff","alarm",
-                                  this_object());
 
-SIEHE AUCH:
-     events, eventd, UnregisterEvent(), TriggerEvent()
+SIEHE AUCH
+==========
 
-----------------------------------------------------------------------------
+   events, eventd, UnregisterEvent(), TriggerEvent()
+
 Last modified: 15.08.2007, Zesstra
diff --git a/doc/lfun/RegisterHelperNPC b/doc/lfun/RegisterHelperNPC
index 170e8b1..f8b6a2e 100644
--- a/doc/lfun/RegisterHelperNPC
+++ b/doc/lfun/RegisterHelperNPC
@@ -1,87 +1,114 @@
+
 RegisterHelperNPC()
-FUNKTION:
-     public int RegisterHelperNPC(object npc, int flags);
+*******************
 
-DEFINIERT IN:
-     /std/player/combat.c
-     /sys/living/combat.h
 
-ARGUMENTE:
-     object npc
-       Objekt des helfenden NPC, der angemeldet werden soll.
+FUNKTION
+========
 
-     int flags
-       ver-oder-te Konstanten, die die Art des Helfer-NPC beschreiben (s.u.)
+   public int RegisterHelperNPC(object npc, int flags);
 
-BESCHREIBUNG:
-     Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
-     angemeldet. Hierdurch kann spaeter herausgefunden werden, welche NPC
-     einem Spieler helfen und ggf. den von diesen verursachten Schaden im
-     Kampf dem Spieler zuzurechnen.
 
-     Die Flags sind eine der folgenden Konstanten oder eine beliebige durch
-     ver-oder-ung gebildete Kombination.
+DEFINIERT IN
+============
 
-     Momentan gibt es 2 Klassen von Helfer-NPC:
-     + GUILD_HELPER: der Helfer-NPC ist ein Gilden-NPC
-     + MISC_HELPER:  der Helfer-NPC ist irgendein NPC, der nicht zu einer Gilde
-                     gehoert.
+   /std/player/combat.c
+   /sys/living/combat.h
 
-     Zusaetzlich zu den Klassen gibt es noch weitere Flags, die etwas ueber
-     den Helfer-NPC sagen:
 
-     + EXCLUSIVE_HELPER: dieser Helfer-NPC duldet keinen weiteren NPC der
-                         gleichen Klasse.
-     + ACTIVE_HELPER: ist dieses Flag gesetzt, ist der NPC mehr als nur reiner
-                      Schlagfaenger.
+ARGUMENTE
+=========
 
-     Wird EXCLUSIVE_HELPER gesetzt und es ist in der gleichen Klasse schon ein
-     NPC angemeldet, schlaegt die Registrierung fehl.
-     Ist in der gleichen Klasse bereits ein NPC mit EXCLUSIVE_HELPER
-     angemeldet, schlaegt die Registierung ebenfalls fehl, auch wenn der neue
-     NPC kein EXCLUSIVE_HELPER setzt.
+   object npc
+     Objekt des helfenden NPC, der angemeldet werden soll.
 
-RUeCKGABEWERT:
-     1, wenn die Registrierung erfolgreich war.
-     0 sonst. In diesem Fall darf der NPC dem Spieler NICHT helfen, weder
-       passiv (Schlagfaenger), noch aktiv.
+   int flags
+     ver-oder-te Konstanten, die die Art des Helfer-NPC beschreiben (s.u.)
 
-BEMERKUNGEN:
-     Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
-     auf passende Werte.
-     Bitte auf gar keinen Fall die numerischen Werte der Konstanten fuer
-     <flags> nutzen, diese koennen sich jederzeit aendern.
 
-BEISPIELE:
-     1. Ein nicht-exklusiver Gilden-NPC, der dem Spieler folgt.
-     if (spieler->RegisterHelperNPC(this_object(), GUILD_HELPER) == 1) {
-       move(environment(spieler), M_GO);
-       spieler->AddPursuer(this_object());
-       // meldung ausgebene...
-     }
+BESCHREIBUNG
+============
 
-     2a. Ein exklusiver Nicht-Gilden-NPC
-     if (spieler->RegisterHelperNPC(this_object(),
-                                    MISC_HELPER|EXCLUSIVE_HELPER) == 1) {
-       move(environment(spieler), M_GO);
-     }
+   Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
+   angemeldet. Hierdurch kann spaeter herausgefunden werden, welche NPC
+   einem Spieler helfen und ggf. den von diesen verursachten Schaden im
+   Kampf dem Spieler zuzurechnen.
 
-     2b. Ein nicht-exklusiver Nicht-Gilde-NPC, der nach 2a. kommt.
-     if (spieler->RegisterHelperNPC(this_object(), MISC_HELPER) == 1) {
-       // ... wenn der NPC aus 2a noch existiert, trifft dies hier nie zu.
-     }
+   Die Flags sind eine der folgenden Konstanten oder eine beliebige durch
+   ver-oder-ung gebildete Kombination.
 
-     3. Ein exklusiver NPC, der weitere Gilden- und sonstige NPC ausschliesst
-        (Solche Kombination bitte mit der Gilden-Balance abstimmen.)
-     if (spieler->RegisterHelperNPC(this_object(), 
-                            MISC_HELPER|GUILD_HELPER|EXCLUSIVE_HELPER) == 1) {
-       move(environment(spieler), M_GO);
-     }
+   Momentan gibt es 2 Klassen von Helfer-NPC:
+   + GUILD_HELPER: der Helfer-NPC ist ein Gilden-NPC
+   + MISC_HELPER:  der Helfer-NPC ist irgendein NPC, der nicht zu einer Gilde
+                   gehoert.
 
-     4. Die Registrierung ohne Klasse schlaegt fehl, z.B.:
-       spieler->RegisterHelperNPC(this_object(), 0);
-       spieler->RegisterHelperNPC(this_object(), EXCLUSIVE_HELPER);
+   Zusaetzlich zu den Klassen gibt es noch weitere Flags, die etwas ueber
+   den Helfer-NPC sagen:
 
-SIEHE AUCH:
-    UnregisterHelperNPC()
-    P_HELPER_NPC
+   + EXCLUSIVE_HELPER: dieser Helfer-NPC duldet keinen weiteren NPC der
+                       gleichen Klasse.
+   + ACTIVE_HELPER: ist dieses Flag gesetzt, ist der NPC mehr als nur reiner
+                    Schlagfaenger.
+
+   Wird EXCLUSIVE_HELPER gesetzt und es ist in der gleichen Klasse schon ein
+   NPC angemeldet, schlaegt die Registrierung fehl.
+   Ist in der gleichen Klasse bereits ein NPC mit EXCLUSIVE_HELPER
+   angemeldet, schlaegt die Registierung ebenfalls fehl, auch wenn der neue
+   NPC kein EXCLUSIVE_HELPER setzt.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn die Registrierung erfolgreich war.
+   0 sonst. In diesem Fall darf der NPC dem Spieler NICHT helfen, weder
+     passiv (Schlagfaenger), noch aktiv.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
+   auf passende Werte.
+   Bitte auf gar keinen Fall die numerischen Werte der Konstanten fuer
+   <flags> nutzen, diese koennen sich jederzeit aendern.
+
+
+BEISPIELE
+=========
+
+   1. Ein nicht-exklusiver Gilden-NPC, der dem Spieler folgt.
+   if (spieler->RegisterHelperNPC(this_object(), GUILD_HELPER) == 1) {
+     move(environment(spieler), M_GO);
+     spieler->AddPursuer(this_object());
+     // meldung ausgebene...
+   }
+
+   2a. Ein exklusiver Nicht-Gilden-NPC
+   if (spieler->RegisterHelperNPC(this_object(),
+                                  MISC_HELPER|EXCLUSIVE_HELPER) == 1) {
+     move(environment(spieler), M_GO);
+   }
+
+   2b. Ein nicht-exklusiver Nicht-Gilde-NPC, der nach 2a. kommt.
+   if (spieler->RegisterHelperNPC(this_object(), MISC_HELPER) == 1) {
+     // ... wenn der NPC aus 2a noch existiert, trifft dies hier nie zu.
+   }
+
+   3. Ein exklusiver NPC, der weitere Gilden- und sonstige NPC ausschliesst
+      (Solche Kombination bitte mit der Gilden-Balance abstimmen.)
+   if (spieler->RegisterHelperNPC(this_object(),
+                          MISC_HELPER|GUILD_HELPER|EXCLUSIVE_HELPER) == 1) {
+     move(environment(spieler), M_GO);
+   }
+
+   4. Die Registrierung ohne Klasse schlaegt fehl, z.B.:
+     spieler->RegisterHelperNPC(this_object(), 0);
+     spieler->RegisterHelperNPC(this_object(), EXCLUSIVE_HELPER);
+
+
+SIEHE AUCH
+==========
+
+   UnregisterHelperNPC()
+   P_HELPER_NPC
diff --git a/doc/lfun/RegisterHelperObject b/doc/lfun/RegisterHelperObject
index aa1cb66..af33a5c 100644
--- a/doc/lfun/RegisterHelperObject
+++ b/doc/lfun/RegisterHelperObject
@@ -1,113 +1,145 @@
 
-FUNKTION:
-     int RegisterHelperObject(object helper, int type, 
-                              string|closure callback);
+RegisterHelperObject()
+**********************
 
-DEFINIERT IN:
-     /std/living/helpers.c
 
-ARGUMENTE:
-     object helper
-       Das Objekt, das bei einem Lebewesen als Hilfsobjekt registriert 
-       werden soll. Das Objekt muss sich dazu nicht im Inventar des
-       Lebewesens befinden.
-     int type
-       Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
-       - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
-       - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung
-     string|closure callback
-        Closure oder Funktionsname als String; dies ist die Funktion, die im
-        Objekt helper gerufen wird, um abzufragen, ob es sich aktuell fuer
-        zustaendig erklaert oder nicht.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Objekt "helper" wird als Hilfsobjekt fuer bestimmte Aktivitaeten wie
-     zum Beispiel Fliegen oder Tauchen registriert. 
-     
-     Die als Callback uebergebene Funktion wird bei der Abfrage der 
-     P_*_HELPERS-Properties (siehe unten) aufgerufen und deren 
-     Rueckgabewert in der Property vermerkt. 
-     
-     Der Rueckgabewert der Callback-Methode muss im Wertebereich 
-     0..10000 liegen, wobei ein Wert von 0 bedeutet, dass das Hilfsobjekt 
-     sich gerade nicht zustaendig fuehlt. Bei den Werten >0 ist es dem 
-     abfragenden Objekt ueberlassen, wie es diese Daten bewertet.
+   int RegisterHelperObject(object helper, int type,
+                            string|closure callback);
 
-     Die Funktion muss existieren und public sein, d.h. von aussen gerufen 
-     werden koennen.
-     
-     Die Funktion bekommt das Spielerobjekt und das abfragende Objekt als
-     Parameter uebergeben.
 
-HINWEIS:
-     Es ist ein Unterschied, ob sich ein Objekt via UnregisterHelperObject()
-     als Helfer austraegt, oder ob der Aufruf der Callback-Funktion eine
-     0 zurueckgibt. Im letzteren Fall ist das Objekt nach wie vor 
-     registriert und kann trotzdem vom abfragenden Objekt als 
-     funktionsfaehig angesehen werden.
+DEFINIERT IN
+============
 
-RUECKGABEWERTE:
-      1  Objekt wurde erfolgreich registriert (HELPER_SUCCESS)
-     -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
-     -2  angegebenes Hilfsobjekt ist bereits fuer diese Art der
-         Unterstuetzung registriert (HELPER_ALREADY_LISTED)
+   /std/living/helpers.c
 
-BEISPIELE:
-     a) Eine luftgefuellte Blase will sich als Tauch-Helfer am Spieler
-     anmelden und ist zustaendig, solange sich noch Luft in ihr befindet:
 
-     int luft = 5; // globale Variable z.B. fuer Luftinhalt von 5 Atemzuegen
+ARGUMENTE
+=========
 
-     // Registrierung im Spielerobjekt
-     if ( TP->RegisterHelperObject(ME, HELPER_TYPE_AQUATIC,
-          "DivingCallback") == HELPER_SUCCESS ) {
-       tell_object(TP, "Du kannst jetzt mit Hilfe der Luftblase unter Wasser "
-         "atmen.\n");
+   object helper
+     Das Objekt, das bei einem Lebewesen als Hilfsobjekt registriert
+     werden soll. Das Objekt muss sich dazu nicht im Inventar des
+     Lebewesens befinden.
+   int type
+     Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
+     - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
+     - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung
+   string|closure callback
+      Closure oder Funktionsname als String; dies ist die Funktion, die im
+      Objekt helper gerufen wird, um abzufragen, ob es sich aktuell fuer
+      zustaendig erklaert oder nicht.
+
+
+BESCHREIBUNG
+============
+
+   Das Objekt "helper" wird als Hilfsobjekt fuer bestimmte Aktivitaeten wie
+   zum Beispiel Fliegen oder Tauchen registriert.
+
+
+
+   Die als Callback uebergebene Funktion wird bei der Abfrage der
+   P_*_HELPERS-Properties (siehe unten) aufgerufen und deren
+   Rueckgabewert in der Property vermerkt.
+
+
+
+   Der Rueckgabewert der Callback-Methode muss im Wertebereich
+   0..10000 liegen, wobei ein Wert von 0 bedeutet, dass das Hilfsobjekt
+   sich gerade nicht zustaendig fuehlt. Bei den Werten >0 ist es dem
+   abfragenden Objekt ueberlassen, wie es diese Daten bewertet.
+
+   Die Funktion muss existieren und public sein, d.h. von aussen gerufen
+   werden koennen.
+
+
+
+   Die Funktion bekommt das Spielerobjekt und das abfragende Objekt als
+   Parameter uebergeben.
+
+
+HINWEIS
+=======
+
+   Es ist ein Unterschied, ob sich ein Objekt via UnregisterHelperObject()
+   als Helfer austraegt, oder ob der Aufruf der Callback-Funktion eine
+   0 zurueckgibt. Im letzteren Fall ist das Objekt nach wie vor
+   registriert und kann trotzdem vom abfragenden Objekt als
+   funktionsfaehig angesehen werden.
+
+
+RUECKGABEWERTE
+==============
+
+    1  Objekt wurde erfolgreich registriert (HELPER_SUCCESS)
+   -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
+   -2  angegebenes Hilfsobjekt ist bereits fuer diese Art der
+       Unterstuetzung registriert (HELPER_ALREADY_LISTED)
+
+
+BEISPIELE
+=========
+
+   a) Eine luftgefuellte Blase will sich als Tauch-Helfer am Spieler
+   anmelden und ist zustaendig, solange sich noch Luft in ihr befindet:
+
+   int luft = 5; // globale Variable z.B. fuer Luftinhalt von 5 Atemzuegen
+
+   // Registrierung im Spielerobjekt
+   if ( TP->RegisterHelperObject(ME, HELPER_TYPE_AQUATIC,
+        "DivingCallback") == HELPER_SUCCESS ) {
+     tell_object(TP, "Du kannst jetzt mit Hilfe der Luftblase unter Wasser "
+       "atmen.\n");
+   }
+
+   // hier koennen natuerlich auch noch komplexere Dinge ablaufen, z.B.
+   // wenn ein Wert zurueckgegeben werden soll, der nicht nur 0 oder 1 ist.
+   public int DivingCallback(object player, object caller) {
+     return (environment(ME)==player && luft>0);
+   }
+
+   b) Ein Spieler befindet sich in einem Raum mit einem steilen Abhang, den
+   man hinunterspringen kann. Dies geht aber nur dann gefahrlos, wenn es
+   Hilfsobjekte gibt, die den (Segel)flug erlauben:
+
+   // cmd_springen() sei die Funktion, die bei der Eingabe des Befehls durch
+   // den Spieler aufgerufen wird.
+   static int cmd_springen(string str) {
+     [...]
+     // Property abfragen
+     mapping helpers = TP->QueryProp(P_AERIAL_HELPERS);
+     // Liste der Werte fuer die einzelnen Unterstuetzungsobjekte ermitteln
+     int *values = m_values(helpers,0);
+     // Spieler schonmal runterbewegen, die Folgen seines Handelns spuert
+     // er dann, wenn er unten angekommen ist.
+     TP->move(zielraum, M_GO|M_SILENT);
+     // "helpers" ist immer ein Mapping, das pruefen wir nicht extra.
+     // Wenn die Liste der Objekte noch mindestens ein Element enthaelt,
+     // nachdem alle unzustaendigen Hilfsobjekte (Rueckgabewert der
+     // Callback-Funktion == 0) rausgerechnet wurden, existiert mindestens
+     // ein geeignetes Hilfsobjekt.
+     if ( sizeof(values-({0})) ) {
+       tell_object(TP, "Sanft segelst Du den Hang hinab.\n");
      }
-
-     // hier koennen natuerlich auch noch komplexere Dinge ablaufen, z.B.
-     // wenn ein Wert zurueckgegeben werden soll, der nicht nur 0 oder 1 ist.
-     public int DivingCallback(object player, object caller) {
-       return (environment(ME)==player && luft>0);
+     else {
+       tell_object(TP, BS("Todesmutig springst Du den Hang hinab und "
+         "schlaegst hart unten auf. Du haettest vielleicht daran denken "
+         "sollen, Dir geeignete Hilfsmittel fuer so eine Aktion zu "
+         "besorgen.");
+       TP->Defend(800, ({DT_BLUDGEON}), ([SP_NO_ACTIVE_DEFENSE:1]), ME);
      }
+     return 1;
+   }
 
-     b) Ein Spieler befindet sich in einem Raum mit einem steilen Abhang, den
-     man hinunterspringen kann. Dies geht aber nur dann gefahrlos, wenn es
-     Hilfsobjekte gibt, die den (Segel)flug erlauben:
 
-     // cmd_springen() sei die Funktion, die bei der Eingabe des Befehls durch
-     // den Spieler aufgerufen wird.
-     static int cmd_springen(string str) {
-       [...]
-       // Property abfragen
-       mapping helpers = TP->QueryProp(P_AERIAL_HELPERS);
-       // Liste der Werte fuer die einzelnen Unterstuetzungsobjekte ermitteln
-       int *values = m_values(helpers,0);
-       // Spieler schonmal runterbewegen, die Folgen seines Handelns spuert
-       // er dann, wenn er unten angekommen ist.
-       TP->move(zielraum, M_GO|M_SILENT);
-       // "helpers" ist immer ein Mapping, das pruefen wir nicht extra.
-       // Wenn die Liste der Objekte noch mindestens ein Element enthaelt,
-       // nachdem alle unzustaendigen Hilfsobjekte (Rueckgabewert der
-       // Callback-Funktion == 0) rausgerechnet wurden, existiert mindestens
-       // ein geeignetes Hilfsobjekt.
-       if ( sizeof(values-({0})) ) {
-         tell_object(TP, "Sanft segelst Du den Hang hinab.\n");
-       }
-       else {
-         tell_object(TP, BS("Todesmutig springst Du den Hang hinab und "
-           "schlaegst hart unten auf. Du haettest vielleicht daran denken "
-           "sollen, Dir geeignete Hilfsmittel fuer so eine Aktion zu "
-           "besorgen.");
-         TP->Defend(800, ({DT_BLUDGEON}), ([SP_NO_ACTIVE_DEFENSE:1]), ME);
-       }
-       return 1;
-     }
+SIEHE AUCH
+==========
 
-SIEHE AUCH:
-     Funktionen:  UnregisterHelperObject()
-     Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
-     Sonstiges:   /sys/living/helpers.h
+   Funktionen:  UnregisterHelperObject()
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+   Sonstiges:   /sys/living/helpers.h
 
 05.02.2015 Arathorn
-
diff --git a/doc/lfun/RemoveAdjective b/doc/lfun/RemoveAdjective
index 48605dd..bd1796f 100644
--- a/doc/lfun/RemoveAdjective
+++ b/doc/lfun/RemoveAdjective
@@ -1,24 +1,43 @@
+
 RemoveAdjective()
+*****************
 
-FUNKTION:
-     void RemoveAdjective(string|string* adj);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     adj
-          String oder Array von String mit den Adjektiven.
+   void RemoveAdjective(string|string* adj);
 
-BESCHREIBUNG:
-     Falls einige der vorhandenen Adjektive nicht mehr verwendet werden
-     sollen, koennen sie mit dieser Funktion entfernt werden.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddAdjective(), RemoveId(), /std/thing/description.c
+   /std/thing/description.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   adj
+        String oder Array von String mit den Adjektiven.
+
+
+BESCHREIBUNG
+============
+
+   Falls einige der vorhandenen Adjektive nicht mehr verwendet werden
+   sollen, koennen sie mit dieser Funktion entfernt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   AddAdjective(), RemoveId(), /std/thing/description.c
+
 20.01.2015, Zesstra
diff --git a/doc/lfun/RemoveClass b/doc/lfun/RemoveClass
index 3eeda6c..26b0b79 100644
--- a/doc/lfun/RemoveClass
+++ b/doc/lfun/RemoveClass
@@ -1,23 +1,38 @@
+
 RemoveClass()
+*************
 
-FUNKTION:
-     void RemoveClass(string|string* class);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     string/string* class	- String oder Stringarray der Klasse(n)
+   void RemoveClass(string|string* class);
 
-BESCHREIBUNG:
-     Dem Objekt werden einige der mit AddClass() gesetzten Klassen wieder 
-     entzogen.
-     Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.
 
-SIEHE AUCH:
-     AddClass(), is_class_member()
-     P_CLASS
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   string/string* class       - String oder Stringarray der Klasse(n)
+
+
+BESCHREIBUNG
+============
+
+   Dem Objekt werden einige der mit AddClass() gesetzten Klassen wieder
+   entzogen.
+   Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   AddClass(), is_class_member()
+   P_CLASS
+
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/RemoveCmd b/doc/lfun/RemoveCmd
index 25941c6..6adffbf 100644
--- a/doc/lfun/RemoveCmd
+++ b/doc/lfun/RemoveCmd
@@ -1,60 +1,91 @@
+
+RemoveCmd()
+***********
+
+
 RemoveCmd(L)
-FUNKTION:
-    varargs int RemoveCmd(mixed cmd, int norule, mixed id)
+============
 
-DEFINIERT IN:
-    /std/thing/commands.c
 
-ARGUMENTE:
-    com
-         String oder Array von Strings mit den zu entfernenden Kommandos.
-    norule
-         Kommandos mit Regeln werden nicht entfernt (ausser bei cmd==0)
-    id
-         eine ID, mit der man ein vorher mit dieser ID gespeichertes
-         Kommando eindeutig lvschen kann
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Mit AddCmd() hinzugefuegte Kommandos koennen mit diesem Befehl wieder
-    abgemeldet werden. Die entfernten Kommandos sind direkt nach dem
-    RemoveCmd()-Aufruf nicht mehr ansprechbar.
+   varargs int RemoveCmd(mixed cmd, int norule, mixed id)
 
-    Wird ein Regelstring angegeben, so wird die identische AddCmd-
-    Regel entfernt.
 
-BEMERKUNGEN:
-    Uebergibt man fuer com eine 0, so werden alle definierten Kommandos
-    entfernt!
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-    Anzahl der entfernten Kommandos.
+   /std/thing/commands.c
 
-BEISPIELE:
-    (1) AddCmd("test");
-    (2) AddCmd("test|teste&mit&parameter");
-    (3) AddCmd(({"test"}),1);
-    (4) AddCmd("test",0,0,"XYZ");
-    (5) AddCmd("test&mit&parameter",0,0,"XYZ");
 
-    RemoveCmd(0);
-    - entfernt alle Kommandos
-    RemoveCmd("test",1);
-    - entfernt (1) und (3)
-    RemoveCmd("test");
-    - entfernt (1), (3) und einen Teil von (2),
-      es verbleibt "teste&mit&parameter"
-    RemoveCmd("test|teste&mit&parameter"
-    - entfernt (2)
-    RemoveCmd("test",0,"XYZ");
-    - entfernt (4) und (5)
-    RemoveCmd("test",1,"XYZ");
-    - entfernt (4), nicht (5)
-    RemoveCmd(0,0,"XYZ");
-    - entfernt (4) und (5)
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-			AddCmd(L), AddCmd_bsp
-    Sonstiges:		replace_personal(E), enable_commands(E), init(E)
-    Alternativen:	AddAction(L), add_action(E)
+   com
+        String oder Array von Strings mit den zu entfernenden Kommandos.
+   norule
+        Kommandos mit Regeln werden nicht entfernt (ausser bei cmd==0)
+   id
+        eine ID, mit der man ein vorher mit dieser ID gespeichertes
+        Kommando eindeutig lvschen kann
+
+
+BESCHREIBUNG
+============
+
+   Mit AddCmd() hinzugefuegte Kommandos koennen mit diesem Befehl wieder
+   abgemeldet werden. Die entfernten Kommandos sind direkt nach dem
+   RemoveCmd()-Aufruf nicht mehr ansprechbar.
+
+   Wird ein Regelstring angegeben, so wird die identische AddCmd-
+   Regel entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer com eine 0, so werden alle definierten Kommandos
+   entfernt!
+
+
+RUECKGABEWERT
+=============
+
+   Anzahl der entfernten Kommandos.
+
+
+BEISPIELE
+=========
+
+   (1) AddCmd("test");
+   (2) AddCmd("test|teste&mit&parameter");
+   (3) AddCmd(({"test"}),1);
+   (4) AddCmd("test",0,0,"XYZ");
+   (5) AddCmd("test&mit&parameter",0,0,"XYZ");
+
+   RemoveCmd(0);
+   - entfernt alle Kommandos
+   RemoveCmd("test",1);
+   - entfernt (1) und (3)
+   RemoveCmd("test");
+   - entfernt (1), (3) und einen Teil von (2),
+     es verbleibt "teste&mit&parameter"
+   RemoveCmd("test|teste&mit&parameter"
+   - entfernt (2)
+   RemoveCmd("test",0,"XYZ");
+   - entfernt (4) und (5)
+   RemoveCmd("test",1,"XYZ");
+   - entfernt (4), nicht (5)
+   RemoveCmd(0,0,"XYZ");
+   - entfernt (4) und (5)
+
+
+SIEHE AUCH
+==========
+
+                       AddCmd(L), AddCmd_bsp
+   Sonstiges:          replace_personal(E), enable_commands(E), init(E)
+   Alternativen:       AddAction(L), add_action(E)
 
 24.Maerz 2004 Gloinson
diff --git a/doc/lfun/RemoveDefender b/doc/lfun/RemoveDefender
index aad46df..1dec97a 100644
--- a/doc/lfun/RemoveDefender
+++ b/doc/lfun/RemoveDefender
@@ -1,36 +1,52 @@
+
 RemoveDefender()
+****************
 
-FUNKTION:
-	void RemoveDefender(object friend);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	friend
-	  Objekt (normal Lebewesen), welches zukuenftig nicht mehr ueber
-	  Angriffe informiert werden soll und diese auch nicht mehr abwehrt.
+   void RemoveDefender(object friend);
 
-BESCHREIBUNG:
-	Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
-	einen solchen Angriff per InformDefend() informieren oder ihnen
-	sogar die Moeglichkeit geben, per DefendOther() direkt in den
-	laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
-	Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
-	als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
-	Name der Funktion. Ausserdem besteht die Einschraenkung, dass diese
-	Objekte in der gleichen Umgebung sein muessen, wie das zu
-	verteidigende Lebewesen.
-	Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
-	abgespeichert und koennen dort abgerufen werden. Natuerlich kann
-	man alte Objekte direkt dort loeschen, jedoch sollte man die
-	hierfuer bereitgestellte Funktionen RemoveDefender() verwenden.
-	Zum Hinzufuegen von Eintraegen im Array steht ebenfalls eine
-	Funktion bereit: AddDefender().
 
-SIEHE AUCH:
-	AddDefender(), InformDefend(), DefendOther(),
-	P_DEFENDERS, /std/living/combat.c
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   friend
+     Objekt (normal Lebewesen), welches zukuenftig nicht mehr ueber
+     Angriffe informiert werden soll und diese auch nicht mehr abwehrt.
+
+
+BESCHREIBUNG
+============
+
+   Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
+   einen solchen Angriff per InformDefend() informieren oder ihnen
+   sogar die Moeglichkeit geben, per DefendOther() direkt in den
+   laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
+   Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
+   als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
+   Name der Funktion. Ausserdem besteht die Einschraenkung, dass diese
+   Objekte in der gleichen Umgebung sein muessen, wie das zu
+   verteidigende Lebewesen.
+   Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
+   abgespeichert und koennen dort abgerufen werden. Natuerlich kann
+   man alte Objekte direkt dort loeschen, jedoch sollte man die
+   hierfuer bereitgestellte Funktionen RemoveDefender() verwenden.
+   Zum Hinzufuegen von Eintraegen im Array steht ebenfalls eine
+   Funktion bereit: AddDefender().
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), InformDefend(), DefendOther(),
+   P_DEFENDERS, /std/living/combat.c
+
 Last modified: Thu Jul 29 18:48:45 1999 by Patryn
diff --git a/doc/lfun/RemoveDetail b/doc/lfun/RemoveDetail
index f73af2a..48a0330 100644
--- a/doc/lfun/RemoveDetail
+++ b/doc/lfun/RemoveDetail
@@ -1,57 +1,80 @@
+
 RemoveDetail()
+**************
 
-FUNKTION:
-    void RemoveDetail(mixed *keys);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den zu entfernenden Details.
+   void RemoveDetail(mixed *keys);
 
-BESCHREIBUNG:
-    Entfernt die in <keys> angegebenen Details aus der Liste der
-    vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
-    saemtliche Details entfernt!
 
-BEISPIEL:
-    Ein kleines Beispiel, bei dem eine Oeffnung erscheint und wieder
-    verschwindet, je nachdem, ob man eine Luke oeffnet oder schliesst.
-      int oeffneLuke(string str);
-      int schliesseLuke(string str);
-      ...
-      AddCmd("oeffne", #'oeffneLuke);
-      AddCmd("schliesse", #'schliesseLuke);
-      ...
-      int oeffneLuke(string str) {
-        if(str!="luke" || GetDetail("oeffnung"))
-          return 0;
-        AddDetail("oeffnung","Du siehst eine kleine Oeffnung.\n");
-        return 1;
-      }
+DEFINIERT IN
+============
 
-      int schliesseLuke(string str) {
-        if(str!="luke" || !GetDetail("oeffnung"))
-          return 0;
-        RemoveDetail("oeffnung"); // Detail wieder entfernen
-        return 1;
-      }
+   /std/thing/description.c
 
-BEMERKUNGEN:
-    Da intern Details und SpecialDetails im gleichen Mapping verwaltet
-    werden, lassen sich mit dieser Funktion auch SpecialDetails
-    entfernen.
-    Die Funktion RemoveSpecialDetail() sollte also nicht genutzt werden!
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
-               P_TOUCH_DETAILS, P_SPECIAL_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+ARGUMENTE
+=========
 
-8. Juli 2011 Gloinson
\ No newline at end of file
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche Details entfernt!
+
+
+BEISPIEL
+========
+
+   Ein kleines Beispiel, bei dem eine Oeffnung erscheint und wieder
+   verschwindet, je nachdem, ob man eine Luke oeffnet oder schliesst.
+     int oeffneLuke(string str);
+     int schliesseLuke(string str);
+     ...
+     AddCmd("oeffne", #'oeffneLuke);
+     AddCmd("schliesse", #'schliesseLuke);
+     ...
+     int oeffneLuke(string str) {
+       if(str!="luke" || GetDetail("oeffnung"))
+         return 0;
+       AddDetail("oeffnung","Du siehst eine kleine Oeffnung.\n");
+       return 1;
+     }
+
+     int schliesseLuke(string str) {
+       if(str!="luke" || !GetDetail("oeffnung"))
+         return 0;
+       RemoveDetail("oeffnung"); // Detail wieder entfernen
+       return 1;
+     }
+
+
+BEMERKUNGEN
+===========
+
+   Da intern Details und SpecialDetails im gleichen Mapping verwaltet
+   werden, lassen sich mit dieser Funktion auch SpecialDetails
+   entfernen.
+   Die Funktion RemoveSpecialDetail() sollte also nicht genutzt werden!
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+8. Juli 2011 Gloinson
diff --git a/doc/lfun/RemoveExit b/doc/lfun/RemoveExit
index edc61f2..6854229 100644
--- a/doc/lfun/RemoveExit
+++ b/doc/lfun/RemoveExit
@@ -1,28 +1,49 @@
+
 RemoveExit()
-FUNKTION:
-     void RemoveExit(string|string* cmd);
+************
 
-DEFINIERT IN:
-     /std/room/exits
 
-ARGUMENTE:
-     string/string* cmd
-          Richtung(en), die entfernt werden sollen.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die in cmd angegebenen Ausgaenge werden wieder entfernt.
+   void RemoveExit(string|string* cmd);
 
-     Ist cmd = 0, so werden alle Ausgaenge entfernt.
 
-BEMERKUNGEN:
-     Ausgaenge werden an der gleichen Stelle gespeichert:
-     - RemoveExit() greift auf die gleichen Daten wie RemoveSpecialExit()
-       zu, entfernt also auch spezielle Ausgaenge!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddExit(), AddSpecialExit(), GetExits()
-     RemoveSpecialExit(),
-     H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   string/string* cmd
+        Richtung(en), die entfernt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Die in cmd angegebenen Ausgaenge werden wieder entfernt.
+
+   Ist cmd = 0, so werden alle Ausgaenge entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Ausgaenge werden an der gleichen Stelle gespeichert:
+   - RemoveExit() greift auf die gleichen Daten wie RemoveSpecialExit()
+     zu, entfernt also auch spezielle Ausgaenge!
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits()
+   RemoveSpecialExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 31.01.2015, Zesstra
diff --git a/doc/lfun/RemoveExtraLook b/doc/lfun/RemoveExtraLook
index af929ea..0369992 100644
--- a/doc/lfun/RemoveExtraLook
+++ b/doc/lfun/RemoveExtraLook
@@ -1,39 +1,65 @@
+
+RemoveExtraLook()
+*****************
+
 RemoveExtraLook()
 
-int RemoveExtraLook(string look);
 
-DEFINIERT IN:
+int RemoveExtraLook(string look);
+=================================
+
+
+DEFINIERT IN
+============
+
    /std/living/description.c
 
-BESCHREIBUNG:
+
+BESCHREIBUNG
+============
+
    Der Extralook erscheint in der Langbeschreibung des Lebewesens.
    Eintraege koennen mit dieser Funktion (vorzeitig) wieder entfernt werden.
 
-ARGUMENTE:
-  - string look:
-    Schluesselwort, unter dem der Eintrag, den man entfernen moechte, von
-    AddExtraLook() registriert wurde.
 
-RUECKGABEWERTE:
-  > 0, falls der Eintrag erfolgreich entfernt wurde.
-  < 0 sonst.
-    -1: keinen (gueltigen) <key> uebergeben.
-    -2: kein Eintrag fuer <key> gefunden.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-  Beim Entfernen mit dieser Funktion wird die "Endemeldung" des entfernten
-  Eintrages nicht ausgegeben.
+   - string look:
+     Schluesselwort, unter dem der Eintrag, den man entfernen moechte, von
+     AddExtraLook() registriert wurde.
 
-BEISPIELE:
-  # Extralook registrieren.
-  living->AddExtraLook("@WER1 wird von einer Horde Daemonen verfolgt.",
-                       "ennox_daemonenhordenverfolgerlook");
-  # Nun kann der Eintrag auch wieder entfernt werden:
-  living->RemoveExtraLook("ennox_daemonenhordenverfolgerlook");
 
-SIEHE AUCH:
+RUECKGABEWERTE
+==============
+
+   > 0, falls der Eintrag erfolgreich entfernt wurde.
+   < 0 sonst.
+     -1: keinen (gueltigen) <key> uebergeben.
+     -2: kein Eintrag fuer <key> gefunden.
+
+
+BEMERKUNGEN
+===========
+
+   Beim Entfernen mit dieser Funktion wird die "Endemeldung" des entfernten
+   Eintrages nicht ausgegeben.
+
+
+BEISPIELE
+=========
+
+   # Extralook registrieren.
+   living->AddExtraLook("@WER1 wird von einer Horde Daemonen verfolgt.",
+                        "ennox_daemonenhordenverfolgerlook");
+   # Nun kann der Eintrag auch wieder entfernt werden:
+   living->RemoveExtraLook("ennox_daemonenhordenverfolgerlook");
+
+
+SIEHE AUCH
+==========
+
    AddExtraLook(),
    P_INTERNAL_EXTRA_LOOK
 
 14.05.2007, Zesstra
-
diff --git a/doc/lfun/RemoveFixedObject b/doc/lfun/RemoveFixedObject
index 7616b2b..22179de 100644
--- a/doc/lfun/RemoveFixedObject
+++ b/doc/lfun/RemoveFixedObject
@@ -1,40 +1,62 @@
+
 RemoveFixedObject()
+*******************
 
-FUNKTION:
-	void RemoveFixedObject(string filename);
 
-DEFINIERT IN:
-	/std/laden.c
+FUNKTION
+========
 
-ARGUMENTE:
-	str
-	  Dateiname des Objektes, welches nicht mehr dauerhaft im Laden sein
-	  soll.
+   void RemoveFixedObject(string filename);
 
-RUeCKGABEWERT:
-        keiner
 
-BESCHREIBUNG:
-	Objekte, die mittels der Funktion AddFixedObject() im Laden
-	eingebunden werden, sind dort staendig verfuegbar. Um diesen Zustand
-	wieder aufzuheben, kann man sie mittels dieser Funktion wieder
-	entfernen. Eventuell im Lager befindliche Objekte dieser Art werden
-	hierbei nicht zerstoert und koennen durchaus noch gekauft werden,
-	bis sie alle sind. Danach gibt es sie dort nicht mehr!
+DEFINIERT IN
+============
 
-BEISPIELE:
-	Im allen Laeden gibt es schon ein Objekt, welches dort
-	standardmaessig erhaeltlich ist. Folgende Zeile sorgt dafuer:
-	  AddFixedObject("/obj/boerse",80,({"boerse","geldboerse"}));
-	Wenn man das in seinem Laden nicht wuenscht, kann man die Geldboerse
-	mittels folgender Zeile wieder aus dem Laden loeschen:
-	  RemoveFixedObject("/obj/boerse");
-	Es ist nicht moeglich, keine oder mehrere Objekte anzugeben, um auf
-	diese Weise alle bzw. mehrere Objekte als nicht mehr staendig
-	verfuegbar zu markieren.
+   /std/laden.c
 
-SIEHE AUCH:
-	AddFixedObject(), SetStorageRoom(), /std/store.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   str
+     Dateiname des Objektes, welches nicht mehr dauerhaft im Laden sein
+     soll.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Objekte, die mittels der Funktion AddFixedObject() im Laden
+   eingebunden werden, sind dort staendig verfuegbar. Um diesen Zustand
+   wieder aufzuheben, kann man sie mittels dieser Funktion wieder
+   entfernen. Eventuell im Lager befindliche Objekte dieser Art werden
+   hierbei nicht zerstoert und koennen durchaus noch gekauft werden,
+   bis sie alle sind. Danach gibt es sie dort nicht mehr!
+
+
+BEISPIELE
+=========
+
+   Im allen Laeden gibt es schon ein Objekt, welches dort
+   standardmaessig erhaeltlich ist. Folgende Zeile sorgt dafuer:
+     AddFixedObject("/obj/boerse",80,({"boerse","geldboerse"}));
+   Wenn man das in seinem Laden nicht wuenscht, kann man die Geldboerse
+   mittels folgender Zeile wieder aus dem Laden loeschen:
+     RemoveFixedObject("/obj/boerse");
+   Es ist nicht moeglich, keine oder mehrere Objekte anzugeben, um auf
+   diese Weise alle bzw. mehrere Objekte als nicht mehr staendig
+   verfuegbar zu markieren.
+
+
+SIEHE AUCH
+==========
+
+   AddFixedObject(), SetStorageRoom(), /std/store.c
+
 Last modified: Thu Jun 18 14:19:19 1998 by Patryn
diff --git a/doc/lfun/RemoveFromMenu b/doc/lfun/RemoveFromMenu
index a8326af..fdcb916 100644
--- a/doc/lfun/RemoveFromMenu
+++ b/doc/lfun/RemoveFromMenu
@@ -1,32 +1,55 @@
+
 RemoveFromMenu()
+****************
 
-FUNKTION:
-     int RemoveFromMenu(mixed ids)
 
-DEFINIERT IN:
-     /std/pub.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ids - string oder string*
-	   String oder Array von Strings, mit denen sich die Speise bzw.
-           das Getraenk beim Bestellen ansprechen laesst.
+   int RemoveFromMenu(mixed ids)
 
-RUECKGABEWERT:
-     int - Anzahl entfernter Einzelmenueeintraege
 
-BESCHREIBUNG:
-     Mit dieser Methode kann man id-basiert Speisen und Getraenke
-     wieder von der Karte entfernen (wenn zB nur saisonbasiert
-     bestimmte Dinge angeboten werden sollen).
-     
-BEMERKUNGEN:
-     - sich zwischen zwei Speisen ueberschneidende IDs fuehren zu
-       undefiniertem Verhalten!
-     - bei Benutzung von RemoveFromMenu sollte man in Delay-Speisen oder
-       -Getraenken auf die Nutzung vom ident-Parameter in den
-       Serviernachrichten verzichten (es sei, man weiss was man tut)
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddToMenu(), AddFood(), AddDrink(), /sys/pub.h
+   /std/pub.c
+
+
+ARGUMENTE
+=========
+
+   ids - string oder string*
+         String oder Array von Strings, mit denen sich die Speise bzw.
+         das Getraenk beim Bestellen ansprechen laesst.
+
+
+RUECKGABEWERT
+=============
+
+   int - Anzahl entfernter Einzelmenueeintraege
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Methode kann man id-basiert Speisen und Getraenke
+   wieder von der Karte entfernen (wenn zB nur saisonbasiert
+   bestimmte Dinge angeboten werden sollen).
+
+
+BEMERKUNGEN
+===========
+
+   - sich zwischen zwei Speisen ueberschneidende IDs fuehren zu
+     undefiniertem Verhalten!
+   - bei Benutzung von RemoveFromMenu sollte man in Delay-Speisen oder
+     -Getraenken auf die Nutzung vom ident-Parameter in den
+     Serviernachrichten verzichten (es sei, man weiss was man tut)
+
+
+SIEHE AUCH
+==========
+
+   AddToMenu(), AddFood(), AddDrink(), /sys/pub.h
 
 15. Februar 2009 Gloinson
diff --git a/doc/lfun/RemoveFunc b/doc/lfun/RemoveFunc
index 054abe4..bf01ae9 100644
--- a/doc/lfun/RemoveFunc
+++ b/doc/lfun/RemoveFunc
@@ -1,87 +1,113 @@
+
 RemoveFunc()
+************
 
-FUNKTION:
-     int RemoveFunc(object ruest, int info, object user);
 
-DEFINIERT IN:
-     eigenen Objekten (fuer /std/clothing/wear)
+FUNKTION
+========
 
-ARGUMENTE:
-     ruest (object)
-          Die Ruestung/Kleidung, die ausgezogen werden soll.
-     info (int)
-          Bei (info&M_SILENT) wird keine Meldung ueber das Ausziehen
-          ausgegeben.
-          Bei (info&M_NOCHECK) wird die Kleidung ausgezogen, egal was diese
-          Funktion zurueckgibt. Dies tritt insbesondere dann auf, wenn der
-          Spieler, der die Ruestung traegt, stirbt und die Ruestung in
-          die Leiche bewegt wird.
-     user (object)
-          Das Lebewesen, welches die Ruestung/Kleidung gerade traegt und sie
-          ausziehen will.
+   int RemoveFunc(object ruest, int info, object user);
 
-BESCHREIBUNG:
-     Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
-     Ruestung <ruest> von this_player() ausziehen laesst oder nicht.
-     Kann die Ruestung ausgezogen werden, so muss ein Wert ungleich 0
-     zurueckgegeben werden.
-     
-     Diese Funktion meldet nur einen _Wunsch_ an. Dieser kann ignoriert
-     werden (z.B. bei bestimmten Bewegungen, Tod des Spielers etc.).
-     Unabhaengig vom Wert dieser Funktion kann das Ausziehen noch Scheitern
-     oder Erzwungen werden.
-     Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
-     benutzt bitte InformUnwear().
 
-RUeCKGABEWERT:
-     0, wenn sich die Ruestung nicht ausziehen laesst, ansonsten ungleich 0.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Verfluchte Ruestungen, die sich erst nach Entfernung des Fluches wieder
-     ausziehen lassen, sollte man besser mit P_CURSED realisieren (man spart
-     die RemoveFunc() ein).
-     Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
-     ist.
-     Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
-     erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
-     Objekte zu aendern.
+   eigenen Objekten (fuer /std/clothing/wear)
 
-BEISPIELE:
-     Ein Umhang, den man nur mit guter Einstellung wieder ausziehen kann:
 
-     inherit "std/armour.c";
+ARGUMENTE
+=========
 
-     #include <properties.h>
-     #include <moving.h>
+   ruest (object)
+        Die Ruestung/Kleidung, die ausgezogen werden soll.
+   info (int)
+        Bei (info&M_SILENT) wird keine Meldung ueber das Ausziehen
+        ausgegeben.
+        Bei (info&M_NOCHECK) wird die Kleidung ausgezogen, egal was diese
+        Funktion zurueckgibt. Dies tritt insbesondere dann auf, wenn der
+        Spieler, der die Ruestung traegt, stirbt und die Ruestung in
+        die Leiche bewegt wird.
+   user (object)
+        Das Lebewesen, welches die Ruestung/Kleidung gerade traegt und sie
+        ausziehen will.
 
-     create()
-     {
-       ::create();
 
-       SetProp(P_ARMOUR_TYPE, AT_CLOAK);
-       /* zig weitere SetProp's, um den Umhang zu konfigurieren */
+BESCHREIBUNG
+============
 
-       /* RemoveFunc() ist im Umhang selbst zu finden */
-       SetProp(P_REMOVE_FUNC, this_object());
-     }
+   Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
+   Ruestung <ruest> von this_player() ausziehen laesst oder nicht.
+   Kann die Ruestung ausgezogen werden, so muss ein Wert ungleich 0
+   zurueckgegeben werden.
 
-     int RemoveFunc(object me, int info, object user)
-     {
-       if (user->QueryProp(P_ALIGN) >= 0 || (info&M_NOCHECK))
-         return 1;   /* gute Charaktere koennen den Umhang ausziehen */
 
-       /* Ansonsten geben wir evtl. einen entsprechenden Hinweis aus: */
-       if (!(info&M_SILENT))
-           write( "Der Umhang wird von Deiner Bosheit so sehr "
-                 +"angezogen, dass Du ihn\nnicht mehr ausziehen kannst!\n");
-       return 0;
-     }
 
-SIEHE AUCH:
-     P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
-     DoUnwear(), DoWear(), InformWear(), InformUnwear()
-     /std/clothing/wear.c
+   Diese Funktion meldet nur einen _Wunsch_ an. Dieser kann ignoriert
+   werden (z.B. bei bestimmten Bewegungen, Tod des Spielers etc.).
+   Unabhaengig vom Wert dieser Funktion kann das Ausziehen noch Scheitern
+   oder Erzwungen werden.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
+   benutzt bitte InformUnwear().
 
-----------------------------------------------------------------------------
+
+RUeCKGABEWERT
+=============
+
+   0, wenn sich die Ruestung nicht ausziehen laesst, ansonsten ungleich 0.
+
+
+BEMERKUNGEN
+===========
+
+   Verfluchte Ruestungen, die sich erst nach Entfernung des Fluches wieder
+   ausziehen lassen, sollte man besser mit P_CURSED realisieren (man spart
+   die RemoveFunc() ein).
+   Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
+   ist.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+BEISPIELE
+=========
+
+   Ein Umhang, den man nur mit guter Einstellung wieder ausziehen kann:
+
+   inherit "std/armour.c";
+
+   #include <properties.h>
+   #include <moving.h>
+
+   create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_CLOAK);
+     /* zig weitere SetProp's, um den Umhang zu konfigurieren */
+
+     /* RemoveFunc() ist im Umhang selbst zu finden */
+     SetProp(P_REMOVE_FUNC, this_object());
+   }
+
+   int RemoveFunc(object me, int info, object user)
+   {
+     if (user->QueryProp(P_ALIGN) >= 0 || (info&M_NOCHECK))
+       return 1;   /* gute Charaktere koennen den Umhang ausziehen */
+
+     /* Ansonsten geben wir evtl. einen entsprechenden Hinweis aus: */
+     if (!(info&M_SILENT))
+         write( "Der Umhang wird von Deiner Bosheit so sehr "
+               +"angezogen, dass Du ihn\nnicht mehr ausziehen kannst!\n");
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+   DoUnwear(), DoWear(), InformWear(), InformUnwear()
+   /std/clothing/wear.c
+
 02.07.2013, Zesstra
-
diff --git a/doc/lfun/RemoveId b/doc/lfun/RemoveId
index 85e7099..efd709d 100644
--- a/doc/lfun/RemoveId
+++ b/doc/lfun/RemoveId
@@ -1,26 +1,44 @@
+
 RemoveId()
+**********
 
-FUNKTION:
-     void RemoveId(string|string* ids);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ids
-          String oder Array von Strings mit den Bezeichnungen, die aus der
-          Liste der IDs des Objektes entfernt werden sollen.
+   void RemoveId(string|string* ids);
 
-BESCHREIBUNG:
-     Wenn ein Objekt sich nicht mehr mit gewissen Bezeichnern ansprechen
-     lassen soll, kann man diese mit dieser Funktion entfernen.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddId(), RemoveAdjective(), /std/thing/description.c
+   /std/thing/description.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ids
+        String oder Array von Strings mit den Bezeichnungen, die aus der
+        Liste der IDs des Objektes entfernt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt sich nicht mehr mit gewissen Bezeichnern ansprechen
+   lassen soll, kann man diese mit dieser Funktion entfernen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   AddId(), RemoveAdjective(), /std/thing/description.c
+
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/RemoveInfo b/doc/lfun/RemoveInfo
index 5ced62c..75485c6 100644
--- a/doc/lfun/RemoveInfo
+++ b/doc/lfun/RemoveInfo
@@ -1,24 +1,45 @@
+
 RemoveInfo()
-FUNKTION:
-     void RemoveInfo(string key)
+************
 
-DEFINIERT IN:
-     /std/npc/info.c
 
-ARGUMENTE:
-     key	zu loeschender Schluessel
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Loescht die Antwort zum entsprechenden Frageschluessel.
+   void RemoveInfo(string key)
 
-BEISPIEL:
-     // erstellen und loeschen
-     AddInfo("gold","sagt: Ich habe keines.\n");
-     RemoveInfo("gold");
 
-SIEHE AUCH:
-     AddInfo(L), AddSpecialInfo(L)
-     P_PRE_INFO, P_DEFAULT_INFO
-     /std/npc/info.c
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+ARGUMENTE
+=========
+
+   key        zu loeschender Schluessel
+
+
+BESCHREIBUNG
+============
+
+   Loescht die Antwort zum entsprechenden Frageschluessel.
+
+
+BEISPIEL
+========
+
+   // erstellen und loeschen
+   AddInfo("gold","sagt: Ich habe keines.\n");
+   RemoveInfo("gold");
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(L), AddSpecialInfo(L)
+   P_PRE_INFO, P_DEFAULT_INFO
+   /std/npc/info.c
 
 17.Aug.2003 Gloinson
diff --git a/doc/lfun/RemoveItem b/doc/lfun/RemoveItem
index aa454f7..a21cdc2 100644
--- a/doc/lfun/RemoveItem
+++ b/doc/lfun/RemoveItem
@@ -1,41 +1,64 @@
+
 RemoveItem()
+************
 
-FUNKTION:
-	void RemoveItem(mixed file);
 
-DEFINIERT IN:
-	/std/room/items.c
+FUNKTION
+========
 
-ARGUMENTE:
-	file
-	     String oder Array von Strings mit dem Namen des zu entfernenden
-	     Objekts.
+   void RemoveItem(mixed file);
 
-BESCHREIBUNG:
-	Das mit AddItem(file) dem Raum hinzugefuegte Objekt wird wieder aus
-	der Liste der Objekte entfernt.
-	Wurde bei AddItem() ein Array von Dateinamen uebergeben, so muss das
-	selbe Array auch bei RemoveItem() uebergeben werden!
-	Falls das Objekt, das durch den AddItem()-Aufruf erzeugt wurde, sich
-	noch im Raum befindet, wird es durch den RemoveItem()-Aufruf zerstoert.
 
-RUECKGABEWERT:
-	keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-	Ein muellschluckerfreier Laden laesst sich wie folgt erzeugen:
+   /std/room/items.c
 
-	inherit "/std/laden";
-	#include <properties.h>
 
-	create()
-	{
-	  ::create();  // Hier wird u.a. der Muellschlucker erzeugt
+ARGUMENTE
+=========
 
-	  RemoveItem("/obj/entsorg"); // und weg damit!
+   file
+        String oder Array von Strings mit dem Namen des zu entfernenden
+        Objekts.
 
-	  SetProp(...);  // und die normale Beschreibung...
-	}
 
-SIEHE AUCH:
-	AddItem(), /std/room/items.c
+BESCHREIBUNG
+============
+
+   Das mit AddItem(file) dem Raum hinzugefuegte Objekt wird wieder aus
+   der Liste der Objekte entfernt.
+   Wurde bei AddItem() ein Array von Dateinamen uebergeben, so muss das
+   selbe Array auch bei RemoveItem() uebergeben werden!
+   Falls das Objekt, das durch den AddItem()-Aufruf erzeugt wurde, sich
+   noch im Raum befindet, wird es durch den RemoveItem()-Aufruf zerstoert.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Ein muellschluckerfreier Laden laesst sich wie folgt erzeugen:
+
+   inherit "/std/laden";
+   #include <properties.h>
+
+   create()
+   {
+     ::create();  // Hier wird u.a. der Muellschlucker erzeugt
+
+     RemoveItem("/obj/entsorg"); // und weg damit!
+
+     SetProp(...);  // und die normale Beschreibung...
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddItem(), /std/room/items.c
diff --git a/doc/lfun/RemoveKnownPotion b/doc/lfun/RemoveKnownPotion
index 5b1418c..f7af610 100644
--- a/doc/lfun/RemoveKnownPotion
+++ b/doc/lfun/RemoveKnownPotion
@@ -1,25 +1,45 @@
+
 RemoveKnownPotion()
+*******************
 
-FUNKTION:
-     int RemoveKnownPotion(int nr)
 
-DEFINIERT IN:
-     /std/player/potion.c
+FUNKTION
+========
 
-ARGUMENTE:
-     int nr       Nummer eines ZTs
+   int RemoveKnownPotion(int nr)
 
-BESCHREIBUNG:
-     Entfernt einen bekannten ZT aus einen Spieler. Nur vom Orakel rufbar.
 
-RUeCKGABEWERT:
-     1  Erfolg
-     -1 fehlende Berechtigung
-     -2 Nummer nicht eingetragen
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
-     Verwandt:  FindPotion(), AddKnownPotion(), InList()
-     Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+   /std/player/potion.c
+
+
+ARGUMENTE
+=========
+
+   int nr       Nummer eines ZTs
+
+
+BESCHREIBUNG
+============
+
+   Entfernt einen bekannten ZT aus einen Spieler. Nur vom Orakel rufbar.
+
+
+RUeCKGABEWERT
+=============
+
+   1  Erfolg
+   -1 fehlende Berechtigung
+   -2 Nummer nicht eingetragen
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), AddKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
 
 6.Feb 2016 Gloinson
diff --git a/doc/lfun/RemovePluralId b/doc/lfun/RemovePluralId
index 0960e02..23f394a 100644
--- a/doc/lfun/RemovePluralId
+++ b/doc/lfun/RemovePluralId
@@ -1,28 +1,49 @@
+
 RemovePluralId()
+****************
 
-FUNKTION:
-     void RemovePluralId(mixed id);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     id
-          Identfikationsstring oder Array von Strings
+   void RemovePluralId(mixed id);
 
-BESCHREIBUNG:
-     Es werden ein oder mehrere Bezeichner entfernt, mit denen sich 
-     mehrere Einheiten der Menge ansprechen lassen.
 
-RUECKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     siehe /items/money.c
+   /std/unit.c
 
-SIEHE AUCH:
-     RemoveSingularId(), AddPluralId(), AddId(), id(), /std/unit.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   id
+        Identfikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner entfernt, mit denen sich
+   mehrere Einheiten der Menge ansprechen lassen.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   RemoveSingularId(), AddPluralId(), AddId(), id(), /std/unit.c
+
 Last modified: Mon Jul 14 11:30:00 1997 by Silvana
-
diff --git a/doc/lfun/RemovePursuer b/doc/lfun/RemovePursuer
index 8ba2358..cf8f0dc 100644
--- a/doc/lfun/RemovePursuer
+++ b/doc/lfun/RemovePursuer
@@ -1,26 +1,53 @@
+
+RemovePursuer()
+***************
+
+
 RemoveRursuer()
+===============
 
-FUNKTION:
-  void RemovePursuer(object pursuer)
 
-ARGUMENTE:
-  pursuer: Objekt, das aus der Verfolgerliste des Objektes, in dem
-           RemovePursuer aufgerufen wurde, ausgetragen werden soll.
+FUNKTION
+========
 
-FUNKTION:
-  Durch den Aufruf von RemovePursuer in einem Objekt, welches living() ist,
-  wird das Object, welches als Argument uebergeben wurde aus der Liste
-  der Verfolger ausgetragen.
+   void RemovePursuer(object pursuer)
 
-RUECKGABEWERT:
-  keiner
 
-BEMERKUNG:
-  keine
+ARGUMENTE
+=========
 
-BEISPIELE:
-  find_player("jof")->RemovePursuer(find_player("kirk"))
-  Danach wird Jof nicht mehr von Kirk verfolgt.
+   pursuer: Objekt, das aus der Verfolgerliste des Objektes, in dem
+            RemovePursuer aufgerufen wurde, ausgetragen werden soll.
 
-SIEHE AUCH:
-  "AddPursuer", "PreventFollow"
+
+FUNKTION
+========
+
+   Durch den Aufruf von RemovePursuer in einem Objekt, welches living() ist,
+   wird das Object, welches als Argument uebergeben wurde aus der Liste
+   der Verfolger ausgetragen.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNG
+=========
+
+   keine
+
+
+BEISPIELE
+=========
+
+   find_player("jof")->RemovePursuer(find_player("kirk"))
+   Danach wird Jof nicht mehr von Kirk verfolgt.
+
+
+SIEHE AUCH
+==========
+
+   "AddPursuer", "PreventFollow"
diff --git a/doc/lfun/RemoveReadDetail b/doc/lfun/RemoveReadDetail
index f357954..495dfe3 100644
--- a/doc/lfun/RemoveReadDetail
+++ b/doc/lfun/RemoveReadDetail
@@ -1,31 +1,50 @@
+
 RemoveReadDetail()
+******************
 
-FUNKTION:
-    void RemoveReadDetail(string|string* keys);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-         String oder Array von Strings mit den zu entfernenden Details.
+   void RemoveReadDetail(string|string* keys);
 
-BESCHREIBUNG:
-    Entfernt die in keys angegebenen Details aus der Liste der vorhandenen
-    lesbaren Details.
 
-BEMERKUNGEN:
-    Uebergibt man fuer keys eine 0, so werden saemtliche lesbaren Details
-    entfernt!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+        String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt die in keys angegebenen Details aus der Liste der vorhandenen
+   lesbaren Details.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer keys eine 0, so werden saemtliche lesbaren Details
+   entfernt!
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/RemoveResistanceModifier b/doc/lfun/RemoveResistanceModifier
index 0e630fb..ca14c74 100644
--- a/doc/lfun/RemoveResistanceModifier
+++ b/doc/lfun/RemoveResistanceModifier
@@ -1,37 +1,57 @@
+
 RemoveResistanceModifier()
+**************************
 
-FUNKTION:
-     varargs void RemoveResistanceModifier(string add);
 
-DEFINIERT IN:
-     /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     string add:
-      Ein eventueller Identifikator fuer einen gesetzten Modifikator.
+   varargs void RemoveResistanceModifier(string add);
 
-BESCHREIBUNG:
-     Die von einem Objekt im Zielobjekt gesetzte Resistenz wird geloescht,
-     der Schluessel add wird dazu benutzt, eine bestimmte Resistenz zu
-     loeschen (so kann ein setzendes Objekt mehrere verschiedene Re-
-     sistenzen setzen und selektiv loeschen).
 
-BEISPIELE:
-     // unser Oel aus AddResistanceModifier() verbrennt endgueltig
-     varargs void trigger_sensitive_attack() {
-      ...
-      if(environment() && living(environment())) {
-       environment()->RemoveResistanceModifier("oel");
-       tell_object(environment(),"Das Oel verbrennt endgueltig.\n");
-      }
-      remove();
-     }
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Modifikatoren:	AddResistanceModifier, P_RESISTANCE_MODIFIER
-     simple Resistenz:	P_RESISTANCE, P_VULNERABILITY
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   string add:
+    Ein eventueller Identifikator fuer einen gesetzten Modifikator.
+
+
+BESCHREIBUNG
+============
+
+   Die von einem Objekt im Zielobjekt gesetzte Resistenz wird geloescht,
+   der Schluessel add wird dazu benutzt, eine bestimmte Resistenz zu
+   loeschen (so kann ein setzendes Objekt mehrere verschiedene Re-
+   sistenzen setzen und selektiv loeschen).
+
+
+BEISPIELE
+=========
+
+   // unser Oel aus AddResistanceModifier() verbrennt endgueltig
+   varargs void trigger_sensitive_attack() {
+    ...
+    if(environment() && living(environment())) {
+     environment()->RemoveResistanceModifier("oel");
+     tell_object(environment(),"Das Oel verbrennt endgueltig.\n");
+    }
+    remove();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     AddResistanceModifier, P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 29.Apr 2002, Gloinson@MG
diff --git a/doc/lfun/RemoveRoute b/doc/lfun/RemoveRoute
index e301719..61fb082 100644
--- a/doc/lfun/RemoveRoute
+++ b/doc/lfun/RemoveRoute
@@ -1,23 +1,42 @@
+
 RemoveRoute()
+*************
 
-FUNKTION:
-     void RemoveRoute();
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   void RemoveRoute();
 
-BESCHREIBUNG:
-     Der Transporter wird angehalten und der gesamte Fahrplan wird
-     geloescht. Damit lassen sich zum Beispiel variable Routen konstruieren.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddRoute(), AddMsg(), AddFun(), /std/transport.c
+   /std/transport.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Der Transporter wird angehalten und der gesamte Fahrplan wird
+   geloescht. Damit lassen sich zum Beispiel variable Routen konstruieren.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddMsg(), AddFun(), /std/transport.c
+
 Last modified: Wed May 8 10:24:26 1996 by Wargon
diff --git a/doc/lfun/RemoveSensitiveObject b/doc/lfun/RemoveSensitiveObject
index 5f6e0dc..0678e70 100644
--- a/doc/lfun/RemoveSensitiveObject
+++ b/doc/lfun/RemoveSensitiveObject
@@ -1,56 +1,79 @@
+
 RemoveSensitiveObject()
-FUNKTION:
-     void RemoveSensitiveObject(object ob)
+***********************
 
-DEFINIERT IN:
-     /std/container/inventory.c
-     generalizes /std/living/inventory.c
 
-ARGUMENTE:
-     ob - zu entfernendes Objekt
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Entfernt ob aus den Benachrichtigungslisten des Containers.
-     Wird von thing/moving.c im alten Environment gerufen, wenn
-     P_SENSITIVE gesetzt ist.
-     Ruft dazu RemoveSensitiveObjectFromList().
+   void RemoveSensitiveObject(object ob)
 
-BEMERKUNGEN:
-     Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
-     dann muss man auch RemoveSensitiveObject im Environment
-     auch selbst rufen!
 
-BEISPIEL:
-     // Fackel (inheriting lightsource)
-     void create() {
-     ...
-       SetProp(P_SENSITIVE,
-        ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
-     ...
-     }
+DEFINIERT IN
+============
 
-     // wenn die Fackel geloescht wird, verliert sie ihre aktive
-     // Eigenschaft und muss das dem environment() mitteilen
-     static int extinguish(string str) {
-      int i;
-      i=::extinguish(str);
-      if(i && QueryProp(P_LIGHT)<=0) {
-       SetProp(P_SENSITIVE,0);
-       if(environment())
-        environment()->RemoveSensitiveObject(this_object());
-      }
-      return i;
-     }
+   /std/container/inventory.c
+   generalizes /std/living/inventory.c
 
-     - empfindliche Objekte wie Eiszapfen koennen jetzt wieder gefahrlos
-       in das selbe environment() bewegt werden
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject
-     insert_sensitive_inv_trigger, insert_sensitive_inv
-     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
-     CheckSensitiveAttack
+ARGUMENTE
+=========
+
+   ob - zu entfernendes Objekt
+
+
+BESCHREIBUNG
+============
+
+   Entfernt ob aus den Benachrichtigungslisten des Containers.
+   Wird von thing/moving.c im alten Environment gerufen, wenn
+   P_SENSITIVE gesetzt ist.
+   Ruft dazu RemoveSensitiveObjectFromList().
+
+
+BEMERKUNGEN
+===========
+
+   Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
+   dann muss man auch RemoveSensitiveObject im Environment
+   auch selbst rufen!
+
+
+BEISPIEL
+========
+
+   // Fackel (inheriting lightsource)
+   void create() {
+   ...
+     SetProp(P_SENSITIVE,
+      ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
+   ...
+   }
+
+   // wenn die Fackel geloescht wird, verliert sie ihre aktive
+   // Eigenschaft und muss das dem environment() mitteilen
+   static int extinguish(string str) {
+    int i;
+    i=::extinguish(str);
+    if(i && QueryProp(P_LIGHT)<=0) {
+     SetProp(P_SENSITIVE,0);
+     if(environment())
+      environment()->RemoveSensitiveObject(this_object());
+    }
+    return i;
+   }
+
+   - empfindliche Objekte wie Eiszapfen koennen jetzt wieder gefahrlos
+     in das selbe environment() bewegt werden
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
 
 25.Apr.2001, Gloinson@MG
-
diff --git a/doc/lfun/RemoveSingularId b/doc/lfun/RemoveSingularId
index 016999c..fcf0c3d 100644
--- a/doc/lfun/RemoveSingularId
+++ b/doc/lfun/RemoveSingularId
@@ -1,28 +1,49 @@
+
 RemoveSingularId()
+******************
 
-FUNKTION:
-     void RemoveSingularId(mixed id);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     id
-          Identifikationsstring oder Array von Strings
+   void RemoveSingularId(mixed id);
 
-BESCHREIBUNG:
-     Es werden ein oder mehrere Bezeichner entfernt, mit denen sich eine
-     einzelne Einheit ansprechen laesst.
 
-RUECKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     siehe /items/money.c
+   /std/unit.c
 
-SIEHE AUCH:
-     AddSingularId(), RemovePluralId(), AddId(), id(), /std/unit.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   id
+        Identifikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner entfernt, mit denen sich eine
+   einzelne Einheit ansprechen laesst.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   AddSingularId(), RemovePluralId(), AddId(), id(), /std/unit.c
+
 Last modified: Mon Jul 14 11:31:00 1997 by Silvana
-
diff --git a/doc/lfun/RemoveSkillAttributeModifier b/doc/lfun/RemoveSkillAttributeModifier
index 71dfd10..5fa69b2 100644
--- a/doc/lfun/RemoveSkillAttributeModifier
+++ b/doc/lfun/RemoveSkillAttributeModifier
@@ -1,59 +1,83 @@
+
 RemoveSkillAttributeModifier()
-FUNKTION:
-    public int RemoveSkillAttributeModifier(object caster, string atrname)
+******************************
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
 
-ARGUMENTE:
-    <atrname>   string
-                Name des Skill-Attributes, von dem der Modifikator geloescht
-                werden soll.
-                (Definiert in /sys/living/skill_attributes.h)
+FUNKTION
+========
 
-    <caster>    object
-                Objekt, dessen Modifikator wieder entfernt werden soll.
+   public int RemoveSkillAttributeModifier(object caster, string atrname)
 
-BESCHREIBUNG:
-    Entfernt den Modifikator, den Object <caster> gesetzt hat, wieder. Dies
-    ist nur notwendig, wenn der Effekt vor Ablauf der Gueltigkeit des
-    Modifikators aufgehoben werden soll.
 
-RUECKGABEWERT:
-    SA_MOD_REMOVED         wenn der Modifikator geloescht wurde
-    SA_MOD_NOT_FOUND       wenn der Modifikator nicht gefunden wurde
-    Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt es
-    sich, auf == SA_MOD_REMOVED zu pruefen.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    // eine Waffe setzt im InformWield() einen Bonus auf SA_DAMAGE fuer 10min
-    protected void InformWield(object pl, int silent) {
-      if (objectp(pl)) {
-        if (pl->ModifySkillAttribute(SA_DAMAGE, 20, 600) == SA_MOD_OK)
-          // Erfolgsmeldung an Spieler
-        else
-          // Misserfolgsmeldung an Spieler.
-      }
-    }
+   /std/living/skill_attributes.c
 
-    // wenn der Spieler die Waffe vor Ablauf der 600s wegstecken will, muss
-    // der Bonus natuerlich auch wieder raus
-    protected void InformUnwield(object pl, int silent) {
-      if (objectp(pl))
-        pl->RemoveSkillAttributeModifier(this_object(), SA_DAMAGE);
-        // falls kein solcher Mod mehr gesetzt war, liefert RSAM()
-        // SA_MOD_NOT_FOUND zurueck. Auswertung des Rueckgabewertes ist
-        // vernachlaessigt.
-    }
-    
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+
+ARGUMENTE
+=========
+
+   <atrname>   string
+               Name des Skill-Attributes, von dem der Modifikator geloescht
+               werden soll.
+               (Definiert in /sys/living/skill_attributes.h)
+
+   <caster>    object
+               Objekt, dessen Modifikator wieder entfernt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt den Modifikator, den Object <caster> gesetzt hat, wieder. Dies
+   ist nur notwendig, wenn der Effekt vor Ablauf der Gueltigkeit des
+   Modifikators aufgehoben werden soll.
+
+
+RUECKGABEWERT
+=============
+
+   SA_MOD_REMOVED         wenn der Modifikator geloescht wurde
+   SA_MOD_NOT_FOUND       wenn der Modifikator nicht gefunden wurde
+   Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt es
+   sich, auf == SA_MOD_REMOVED zu pruefen.
+
+
+BEISPIELE
+=========
+
+   // eine Waffe setzt im InformWield() einen Bonus auf SA_DAMAGE fuer 10min
+   protected void InformWield(object pl, int silent) {
+     if (objectp(pl)) {
+       if (pl->ModifySkillAttribute(SA_DAMAGE, 20, 600) == SA_MOD_OK)
+         // Erfolgsmeldung an Spieler
+       else
+         // Misserfolgsmeldung an Spieler.
+     }
+   }
+
+   // wenn der Spieler die Waffe vor Ablauf der 600s wegstecken will, muss
+   // der Bonus natuerlich auch wieder raus
+   protected void InformUnwield(object pl, int silent) {
+     if (objectp(pl))
+       pl->RemoveSkillAttributeModifier(this_object(), SA_DAMAGE);
+       // falls kein solcher Mod mehr gesetzt war, liefert RSAM()
+       // SA_MOD_NOT_FOUND zurueck. Auswertung des Rueckgabewertes ist
+       // vernachlaessigt.
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 13.08.2008, Zesstra
diff --git a/doc/lfun/RemoveSmells b/doc/lfun/RemoveSmells
index cc72207..b56fe27 100644
--- a/doc/lfun/RemoveSmells
+++ b/doc/lfun/RemoveSmells
@@ -1,38 +1,57 @@
+
 RemoveSmells()
+**************
 
-FUNKTION:
-    void RemoveSmells(string|string* keys);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den zu entfernenden Details.
+   void RemoveSmells(string|string* keys);
 
-BESCHREIBUNG:
-    Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
-    nur koennen hiermit Gerueche entfernt werden:
-    Entfernt die in <keys> angegebenen Details aus der Liste der
-    vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
-    saemtliche Details entfernt!
 
-BEISPIEL:
-    Zuerst erzeugen wir ein kleines Detail, mit dem wir am Rauch riechen
-    koennen. Das Feuer brennt langsam ab und das Detail wird wieder
-    entfernt:
+DEFINIERT IN
+============
 
-      AddSmells("rauch",* H U S T *\n");
-      call_out(#'RemoveSmells, 100, "rauch");
+   /std/thing/description.c
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
+   nur koennen hiermit Gerueche entfernt werden:
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche Details entfernt!
+
+
+BEISPIEL
+========
+
+   Zuerst erzeugen wir ein kleines Detail, mit dem wir am Rauch riechen
+   koennen. Das Feuer brennt langsam ab und das Detail wird wieder
+   entfernt:
+
+     AddSmells("rauch",* H U S T *\n");
+     call_out(#'RemoveSmells, 100, "rauch");
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/RemoveSounds b/doc/lfun/RemoveSounds
index 50d900a..4ef4263 100644
--- a/doc/lfun/RemoveSounds
+++ b/doc/lfun/RemoveSounds
@@ -1,46 +1,66 @@
+
 RemoveSounds()
+**************
 
-FUNKTION:
-    void RemoveSounds(string|string* keys);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den zu entfernenden Details.
+   void RemoveSounds(string|string* keys);
 
-BESCHREIBUNG:
-    Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,   
-    nur koennen hiermit Gerauesche entfernt werden:
-    Entfernt die in <keys> angegebenen Details aus der Liste der
-    vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
-    saemtliche Details entfernt!
 
-BEISPIEL:
-    Wir lassen etwas Musik spielen und wenn wir den Plattenspieler
-    ausmachen, dann endet sie und man hoert auch nichts mehr:
+DEFINIERT IN
+============
 
-      int ausmachen(string str);
-      ...
-      AddSounds(({"musik","hip-hop"}) ,"Klingt nach Hip-Hop...\n");
-      AddCmd("mach|mache&plattenspieler&aus", #'ausmachen,
-             "Was willst du (aus)machen?|Willst du den ausmachen?^");
-      ...
-      int ausmachen(string str) {
-        if(!GetDetail("musik", 0, SENSE_SOUND)) // existiert Musikdetail ?
-          return("Der Plattenspieler laeuft doch gar nicht!\n", 1);
-        RemoveSounds(0);
-         return 1;
-      }
+   /std/thing/description.c
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
+   nur koennen hiermit Gerauesche entfernt werden:
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche Details entfernt!
+
+
+BEISPIEL
+========
+
+   Wir lassen etwas Musik spielen und wenn wir den Plattenspieler
+   ausmachen, dann endet sie und man hoert auch nichts mehr:
+
+     int ausmachen(string str);
+     ...
+     AddSounds(({"musik","hip-hop"}) ,"Klingt nach Hip-Hop...\n");
+     AddCmd("mach|mache&plattenspieler&aus", #'ausmachen,
+            "Was willst du (aus)machen?|Willst du den ausmachen?^");
+     ...
+     int ausmachen(string str) {
+       if(!GetDetail("musik", 0, SENSE_SOUND)) // existiert Musikdetail ?
+         return("Der Plattenspieler laeuft doch gar nicht!\n", 1);
+       RemoveSounds(0);
+        return 1;
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 8. Juli 2011 Gloinson
diff --git a/doc/lfun/RemoveSpecialDetail b/doc/lfun/RemoveSpecialDetail
index ebec4cb..96a7a39 100644
--- a/doc/lfun/RemoveSpecialDetail
+++ b/doc/lfun/RemoveSpecialDetail
@@ -1,37 +1,60 @@
-VERALTET: RemoveSpecialDetail()
 
-FUNKTION:
-    void RemoveSpecialDetail(string|string* keys);
+RemoveSpecialDetail()
+*********************
 
-DEFINIERT IN:
-    /std/thing/description.c
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den zu entfernenden Details.
+VERALTET RemoveSpecialDetail()
+==============================
 
-BESCHREIBUNG:
-    Entfernt die in keys angegebenen Details aus der Liste der
-    vorhandenen SpecialDetails.
 
-    VERALTET: Bitte RemoveDetail() benutzen.
+FUNKTION
+========
 
-BEMERKUNGEN:
-    Uebergibt man fuer keys eine 0, so werden saemtliche SpecialDetails
-    entfernt!
-    Da intern Details und SpecialDetails im gleichen Mapping verwaltet
-    werden, lassen sich mit dieser Funktion auch Details entfernen.
-    Man sollte diese Funktion deshalb nicht mehr verwenden, siehe
-    AddDetail mit Closures.
+   void RemoveSpecialDetail(string|string* keys);
 
-SIEHE AUCH:
-    Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt die in keys angegebenen Details aus der Liste der
+   vorhandenen SpecialDetails.
+
+   VERALTET: Bitte RemoveDetail() benutzen.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer keys eine 0, so werden saemtliche SpecialDetails
+   entfernt!
+   Da intern Details und SpecialDetails im gleichen Mapping verwaltet
+   werden, lassen sich mit dieser Funktion auch Details entfernen.
+   Man sollte diese Funktion deshalb nicht mehr verwenden, siehe
+   AddDetail mit Closures.
+
+
+SIEHE AUCH
+==========
+
+   Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/RemoveSpecialExit b/doc/lfun/RemoveSpecialExit
index 69a18e4..ee2e8e8 100644
--- a/doc/lfun/RemoveSpecialExit
+++ b/doc/lfun/RemoveSpecialExit
@@ -1,29 +1,49 @@
+
 RemoveSpecialExit()
-FUNKTION:
-     void RemoveSpecialExit(string|string* cmd);
+*******************
 
-DEFINIERT IN:
-     /std/room/exits
 
-ARGUMENTE:
-     string/string* cmd
-          Richtung(en), die entfernt werden sollen.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die in cmd angegebenen Ausgaenge werden wieder entfernt.
+   void RemoveSpecialExit(string|string* cmd);
 
-     Ist cmd = 0, so werden alle Ausgaenge entfernt.
 
-BEMERKUNGEN:
-     Ausgaenge werden an der gleichen Stelle gespeichert:
-     - RemoveSpecialExit() greift auf die gleichen Daten wie RemoveExit()
-       zu, entfernt also auch normale Ausgaenge!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddExit(), AddSpecialExit(), AddGuardedExit(), GetExits()
-     RemoveExit(),
-     P_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   string/string* cmd
+        Richtung(en), die entfernt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Die in cmd angegebenen Ausgaenge werden wieder entfernt.
+
+   Ist cmd = 0, so werden alle Ausgaenge entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Ausgaenge werden an der gleichen Stelle gespeichert:
+   - RemoveSpecialExit() greift auf die gleichen Daten wie RemoveExit()
+     zu, entfernt also auch normale Ausgaenge!
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), AddGuardedExit(), GetExits()
+   RemoveExit(),
+   P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 31.01.2015, Zesstra
-
diff --git a/doc/lfun/RemoveTouchDetail b/doc/lfun/RemoveTouchDetail
index 8b816a4..4f6ace3 100644
--- a/doc/lfun/RemoveTouchDetail
+++ b/doc/lfun/RemoveTouchDetail
@@ -1,54 +1,75 @@
+
 RemoveTouchDetail()
+*******************
 
-FUNKTION:
-    void RemoveTouchDetail(string|string* keys);
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keys
-      String oder Array von Strings mit den zu entfernenden Details.
+   void RemoveTouchDetail(string|string* keys);
 
-BESCHREIBUNG:
-    Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
-    nur koennen hiermit (ab)tastbare Details entfernt werden:
-    Entfernt die in <keys> angegebenen Details aus der Liste der
-    vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
-    saemtliche tastbaren/fuehlbaren Details entfernt!
 
-BEISPIEL:
-    Zuerst wird ein Detail "boden" erzeugt, das abgetastet werden kann.
-    Dieses kann durch Betaetigen eines Knopfes, aeh, entfernt werden.
+DEFINIERT IN
+============
 
-      int knopf();
-      void knopf2();
+   /std/thing/description.c
 
-      AddTouchDetail("boden", "Er ist aus Stein.\n");
-      AddCmd("drueck|druecke&knopf", #'knopf, "Was willst du druecken?");
 
-      void knopf() {
-        tell_room(this_object(), break_string(
-          this_player()->Name(WER)+" drueckt einen Knopf, der dabei satt "+
-          "klackt.", 78));
+ARGUMENTE
+=========
 
-        if(find_call_out(#'knopf2)<=0)
-          call_out(#'knopf2, 1);
-      }
-      
-      void knopf2() {
-        tell_room(this_object(), "Uhoh. Der Boden klappt weg. Du faellst.");
-        RemoveTouchDetails("boden");
-      }
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
-               RemoveSounds()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
+   nur koennen hiermit (ab)tastbare Details entfernt werden:
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche tastbaren/fuehlbaren Details entfernt!
+
+
+BEISPIEL
+========
+
+   Zuerst wird ein Detail "boden" erzeugt, das abgetastet werden kann.
+   Dieses kann durch Betaetigen eines Knopfes, aeh, entfernt werden.
+
+     int knopf();
+     void knopf2();
+
+     AddTouchDetail("boden", "Er ist aus Stein.\n");
+     AddCmd("drueck|druecke&knopf", #'knopf, "Was willst du druecken?");
+
+     void knopf() {
+       tell_room(this_object(), break_string(
+         this_player()->Name(WER)+" drueckt einen Knopf, der dabei satt "+
+         "klackt.", 78));
+
+       if(find_call_out(#'knopf2)<=0)
+         call_out(#'knopf2, 1);
+     }
+
+
+
+     void knopf2() {
+       tell_room(this_object(), "Uhoh. Der Boden klappt weg. Du faellst.");
+       RemoveTouchDetails("boden");
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
 
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/ResizeRingBuffer b/doc/lfun/ResizeRingBuffer
index c5a6c08..17c3332 100644
--- a/doc/lfun/ResizeRingBuffer
+++ b/doc/lfun/ResizeRingBuffer
@@ -1,44 +1,66 @@
+
 ResizeRingBuffer()
+******************
 
-FUNKTION:
-    protected struct std_ringbuffer buf RingBufferPut(
-                                                   struct std_ringbuffer buf, 
-                                                   int size);
 
-DEFINIERT IN:
-    /std/util/ringbuffer.c
-    /sys/util/ringbuffer.h
-    
-ARGUMENTE:
-    buf  - Ringpuffer, dessen Groesse geaendert werden soll
-    size - neue Groesse (int) 
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion erstellt einen neuen Ringpuffer der Groesse <size>, welcher
-    den gleichen Modus hat wie <buf> und die gleichen Daten enthaelt.
-    Ist der neue Puffer kleiner als <buf>, so kommt es hierbei zu
-    Datenverlust.
-    <buf> wird nicht veraendert. Ist die Groesse von <buf> gleich der
-    neuen gewuenschten Groesse, wird letztendlich der Ringpuffer kopiert. 
-    Je nach Groesse von <buf> und Wert von <size> kann dies eine teure
-    Angelegenheit sein.
+   protected struct std_ringbuffer buf RingBufferPut(
+                                                  struct std_ringbuffer buf,
+                                                  int size);
 
-RUeCKGABEWERT:
-    Der neue Ringpuffer mit Groesse <size>.
 
-BEISPIELE:
-    // Ringpuffer anlegen:
-    struct std_ringbuffer buffer = CreateRingBuffer(5, MODE_FIFO);
-    // 5 Werte reinschreiben:
-    foreach(int i: 5) RingBufferPut(buffer, i);
-    // Groesse aendern
-    buffer = ResizeRingBuffer(buffer, 10);
-    // Daten als Array ermitteln:
-    mixed array = RingBufferGet(buffer);
-    // array enthaelt: ({0,0,0,0,0,0,1,2,3,4})
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    RingBufferGet(), RingBufferPut(), CreateRingBuffer()
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   buf  - Ringpuffer, dessen Groesse geaendert werden soll
+   size - neue Groesse (int)
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion erstellt einen neuen Ringpuffer der Groesse <size>, welcher
+   den gleichen Modus hat wie <buf> und die gleichen Daten enthaelt.
+   Ist der neue Puffer kleiner als <buf>, so kommt es hierbei zu
+   Datenverlust.
+   <buf> wird nicht veraendert. Ist die Groesse von <buf> gleich der
+   neuen gewuenschten Groesse, wird letztendlich der Ringpuffer kopiert.
+   Je nach Groesse von <buf> und Wert von <size> kann dies eine teure
+   Angelegenheit sein.
+
+
+RUeCKGABEWERT
+=============
+
+   Der neue Ringpuffer mit Groesse <size>.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer = CreateRingBuffer(5, MODE_FIFO);
+   // 5 Werte reinschreiben:
+   foreach(int i: 5) RingBufferPut(buffer, i);
+   // Groesse aendern
+   buffer = ResizeRingBuffer(buffer, 10);
+   // Daten als Array ermitteln:
+   mixed array = RingBufferGet(buffer);
+   // array enthaelt: ({0,0,0,0,0,0,1,2,3,4})
+
+
+SIEHE AUCH
+==========
+
+   RingBufferGet(), RingBufferPut(), CreateRingBuffer()
 
 23.05.2008, Zesstra
-
diff --git a/doc/lfun/RingBufferGet b/doc/lfun/RingBufferGet
index 8d6b467..128807f 100644
--- a/doc/lfun/RingBufferGet
+++ b/doc/lfun/RingBufferGet
@@ -1,41 +1,63 @@
+
 RingBufferGet()
+***************
 
-FUNKTION:
-    protected mixed RingBufferGet(struct std_ringbuffer buf);
 
-DEFINIERT IN:
-    /std/util/ringbuffer.c
-    /sys/util/ringbuffer.h
+FUNKTION
+========
 
-ARGUMENTE:
-    buf - Ringpuffer, welcher ausgeben werden soll
+   protected mixed RingBufferGet(struct std_ringbuffer buf);
 
-BESCHREIBUNG:
-    Diese Funktion liefert die Daten des Ringpuffers in Form eines Arrays
-    zurueck, welches dann weiterverarbeitet werden kann.
-    Die Reihenfolge der Daten ist entsprechend des beim Anlegen des
-    Ringpuffers angebenen Modes:
-    MODE_FIFO: aelteste Daten zuerst
-    MODE_LIFO: neueste Daten zuerst
 
-BEMERKUNGEN:
-    Aenderungen am Array beeinflussen die Daten des Ringpuffers nicht. Aber:
-    Hierbei werden die Daten nicht tief kopiert. D.h. enthaelt der Ringpuffer
-    Referenzen auf weitere Daten, zeigen der Ringpuffer und das hier
-    gelieferte Array auf die gleichen Daten.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    // Ringpuffer anlegen:
-    struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
-    // 15 Werte reinschreiben:
-    foreach(int i: 15) RingBufferPut(buffer, i);
-    // Werte abrufen:
-    mixed array=RingBufferGet(buffer);
-    // array enthaelt nun:
-    // ({5,6,7,8,9,10,11,12,13,14}) 
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
 
-SIEHE AUCH:
-    CreateRingBuffer(), RingBufferPut(), ResizeRingBuffer()
+
+ARGUMENTE
+=========
+
+   buf - Ringpuffer, welcher ausgeben werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Daten des Ringpuffers in Form eines Arrays
+   zurueck, welches dann weiterverarbeitet werden kann.
+   Die Reihenfolge der Daten ist entsprechend des beim Anlegen des
+   Ringpuffers angebenen Modes:
+   MODE_FIFO: aelteste Daten zuerst
+   MODE_LIFO: neueste Daten zuerst
+
+
+BEMERKUNGEN
+===========
+
+   Aenderungen am Array beeinflussen die Daten des Ringpuffers nicht. Aber:
+   Hierbei werden die Daten nicht tief kopiert. D.h. enthaelt der Ringpuffer
+   Referenzen auf weitere Daten, zeigen der Ringpuffer und das hier
+   gelieferte Array auf die gleichen Daten.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
+   // 15 Werte reinschreiben:
+   foreach(int i: 15) RingBufferPut(buffer, i);
+   // Werte abrufen:
+   mixed array=RingBufferGet(buffer);
+   // array enthaelt nun:
+   // ({5,6,7,8,9,10,11,12,13,14})
+
+
+SIEHE AUCH
+==========
+
+   CreateRingBuffer(), RingBufferPut(), ResizeRingBuffer()
 
 23.05.2008, Zesstra
-
diff --git a/doc/lfun/RingBufferPut b/doc/lfun/RingBufferPut
index 82a78bb..00c046c 100644
--- a/doc/lfun/RingBufferPut
+++ b/doc/lfun/RingBufferPut
@@ -1,30 +1,49 @@
+
 RingBufferPut()
+***************
 
-FUNKTION:
-    protected void RingBufferPut(struct std_ringbuffer buf, mixed val);
 
-DEFINIERT IN:
-    /std/util/ringbuffer.c
-    /sys/util/ringbuffer.h
+FUNKTION
+========
 
-ARGUMENTE:
-    buf - Ringpuffer, in den <val> geschrieben werden soll
-    val - neues Datum
+   protected void RingBufferPut(struct std_ringbuffer buf, mixed val);
 
-BESCHREIBUNG:
-    Diese Funktion schreibt <val> in den Ringpuffer <buf>. Hierbei wird ggf.
-    das aelteste im Puffer existierende Datum ueberschrieben. <buf> muss eine
-    von CreateRingBuffer() oder ResizeRingBuffer() zurueckgelieferter
-    Ringpuffer sein.
 
-BEISPIELE:
-    // Ringpuffer anlegen:
-    struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
-    // 15 Werte reinschreiben:
-    foreach(int i: 15) RingBufferPut(buffer, i);
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    RingBufferGet(), CreateRingBuffer(), ResizeRingBuffer()
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   buf - Ringpuffer, in den <val> geschrieben werden soll
+   val - neues Datum
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion schreibt <val> in den Ringpuffer <buf>. Hierbei wird ggf.
+   das aelteste im Puffer existierende Datum ueberschrieben. <buf> muss eine
+   von CreateRingBuffer() oder ResizeRingBuffer() zurueckgelieferter
+   Ringpuffer sein.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
+   // 15 Werte reinschreiben:
+   foreach(int i: 15) RingBufferPut(buffer, i);
+
+
+SIEHE AUCH
+==========
+
+   RingBufferGet(), CreateRingBuffer(), ResizeRingBuffer()
 
 23.05.2008, Zesstra
-
diff --git a/doc/lfun/SearchPath b/doc/lfun/SearchPath
index 035fdcb..040965e 100644
--- a/doc/lfun/SearchPath
+++ b/doc/lfun/SearchPath
@@ -1,58 +1,82 @@
-SearchPath
 
-FUNKTION:
-     public int SearchPath(string from, string to, int para,
-                           closure callback)
+SearchPath()
+************
 
-DEFINIERT IN:
-     /p/daemon/pathd.c
-     <sys/path.d>
 
-ARGUMENTE:
-     from     - Der Startpunkt
-     to       - Der Endpunkt
-     para     - Die Parawelt in der gesucht wird (Normalwelt: 0)
-     callback - Closure, die am Ende der Pfadsuche gerufen wird
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion berechnet - sofern moeglich - den kuerzesten Pfad zwischen
-    <from> und <to> in der (Para-)Welt <para>.
-    
-    Die Pfadsuche wird anhand von Daten ueber von Spielern gelaufene Wege
-    durchgefuehrt. D.h. Gebiete, die von Spielern nicht (in letzter Zeit mal)
-    betreten werden, sind auch dem Pfaddaemon nicht bekannt. Auch kann es
-    Gebiete geben, wo zwar gebietsintern Pfade bekannt sind, aber keine Wege
-    in den Rest vom MG.
+   public int SearchPath(string from, string to, int para,
+                         closure callback)
 
-    Da diese Suche im Allgemeinen SEHR aufwendig sein kann, wird sie meistens
-    nicht sofort fertig, sondern dauert eine Weile. Wenn sie fertig ist, wird
-    die Closure <callback> aufgerufen und ihr die Argumente <from>, <to>,
-    <parawelt>, <kosten>, <path> und <cmds> uebergeben. Die Bedeutung
-    dieser Argumente ist unten erklaert.
 
-    Eine Suche nach einem Pfad in einer Parawelt fuehrt durch Raeume der
-    gewuenschen Parawelt und durch Raeume der Normalwelt.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     1      - Suche wurde gestartet
-     2      - Pfad gefunden (und callback gerufen)
-    -1      - es laeuft schon ein Suchauftrage fuer die UID des anfragenden
-              Objektes
-    -2      - es laufen bereits zuviele Suchanfragen
-    -3      - <from> und/oder <to> sind nicht bekannt
-    
-    An <callback> uebergebene Argumente am Ende der Pfadsuche:
-        <from> - Startpunkt des Weges (string)
-        <to>   - Zielpunkt des Weges (string)
-        <para> - Parawelt des Weges (int)
-        <costs>- Kosten des Wege. (int) Je hoeher, desto
-                 laenger/unguenstiger. 0, wenn kein Pfad gefunden
-        <path> - Array mit Raumnamen, die durchlaufen werden (string*)
-                 0, wenn kein Pfad gefunden
-        <cmds> - Array mit Kommandos zum Ablaufen des Weges (string*)
-                 0, wenn kein Pfad gefunden
+   /p/daemon/pathd.c
+   <sys/path.d>
 
-BEMERKUNGEN:
+
+ARGUMENTE
+=========
+
+   from     - Der Startpunkt
+   to       - Der Endpunkt
+   para     - Die Parawelt in der gesucht wird (Normalwelt: 0)
+   callback - Closure, die am Ende der Pfadsuche gerufen wird
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion berechnet - sofern moeglich - den kuerzesten Pfad zwischen
+   <from> und <to> in der (Para-)Welt <para>.
+
+
+
+   Die Pfadsuche wird anhand von Daten ueber von Spielern gelaufene Wege
+   durchgefuehrt. D.h. Gebiete, die von Spielern nicht (in letzter Zeit mal)
+   betreten werden, sind auch dem Pfaddaemon nicht bekannt. Auch kann es
+   Gebiete geben, wo zwar gebietsintern Pfade bekannt sind, aber keine Wege
+   in den Rest vom MG.
+
+   Da diese Suche im Allgemeinen SEHR aufwendig sein kann, wird sie meistens
+   nicht sofort fertig, sondern dauert eine Weile. Wenn sie fertig ist, wird
+   die Closure <callback> aufgerufen und ihr die Argumente <from>, <to>,
+   <parawelt>, <kosten>, <path> und <cmds> uebergeben. Die Bedeutung
+   dieser Argumente ist unten erklaert.
+
+   Eine Suche nach einem Pfad in einer Parawelt fuehrt durch Raeume der
+   gewuenschen Parawelt und durch Raeume der Normalwelt.
+
+
+RUeCKGABEWERT
+=============
+
+    1      - Suche wurde gestartet
+    2      - Pfad gefunden (und callback gerufen)
+   -1      - es laeuft schon ein Suchauftrage fuer die UID des anfragenden
+             Objektes
+   -2      - es laufen bereits zuviele Suchanfragen
+   -3      - <from> und/oder <to> sind nicht bekannt
+
+
+
+   An <callback> uebergebene Argumente am Ende der Pfadsuche:
+       <from> - Startpunkt des Weges (string)
+       <to>   - Zielpunkt des Weges (string)
+       <para> - Parawelt des Weges (int)
+       <costs>- Kosten des Wege. (int) Je hoeher, desto
+                laenger/unguenstiger. 0, wenn kein Pfad gefunden
+       <path> - Array mit Raumnamen, die durchlaufen werden (string*)
+                0, wenn kein Pfad gefunden
+       <cmds> - Array mit Kommandos zum Ablaufen des Weges (string*)
+                0, wenn kein Pfad gefunden
+
+
+BEMERKUNGEN
+===========
+
    Es ist natuerlich nicht dazu gedacht, Spielern fertige Routen zwischen
    Orten zu geben - bzw. nur in Ausnahmefaellen.
    Pfadabfrgen werden geloggt.
@@ -64,7 +88,10 @@
 
    Die Closure <callback> sollte nicht zuviele Ticks verbrauchen.
 
-BEISPIEL:
+
+BEISPIEL
+========
+
    #include <pathd.h>
    void suchergebnis(string from, string to, int para, int costs, string*
         path, string* cmds) {
@@ -78,6 +105,4 @@
                                "/d/ebene/dancer/lucky/room/pova_la3",
                                0, #'suchergebnis);
 
-----------------------------------------------------------------------------
 22.12.2015, Zesstra
-
diff --git a/doc/lfun/SelectEnemy b/doc/lfun/SelectEnemy
index 863e0c0..5a05eab 100644
--- a/doc/lfun/SelectEnemy
+++ b/doc/lfun/SelectEnemy
@@ -1,32 +1,51 @@
+
 SelectEnemy()
+*************
 
-FUNKTION:
-	varargs object SelectEnemy(object*here);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	here
-	  Gegner, aus welchen ausgewaehlt werden soll (optional!)
+   varargs object SelectEnemy(object*here);
 
-RUeCKGABEWERT:
-	Ausgewaehlter Gegner, der angegriffen werden soll.
 
-BESCHREIBUNG:
-	Diese Funktion waehlt einen Gegner aus, der angegriffen werden soll.
-	Werden keine Gegner im Parameter <here> angegeben, so wird der
-	Rueckgabewert der Funktion PresentEnemies() verwandt, welche die
-	aktuell anwesenden Gegner im Raum liefert.
-	Sind keine Gegner anwesend, so wird 0 zurueckgeliefert.
-	Danach wird geschaut, ob Gegner bevorzugt ausgewaehlt werden sollen.
-	Dies geschieht mittels der Funktion QueryPreferedEnemy().
-	Auch dieser bevorzugte Gegner muss im selben Raum sein! Wenn nicht,
-	wird doch irgendein anderer Gegner ausgewaehlt und zurueckgegeben.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	PresentEnemies(), QueryPreferedEnemy(), P_PREFERED_ENEMY,
-	InsertEnemy(), StopHuntFor()
+   /std/living/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   here
+     Gegner, aus welchen ausgewaehlt werden soll (optional!)
+
+
+RUeCKGABEWERT
+=============
+
+   Ausgewaehlter Gegner, der angegriffen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion waehlt einen Gegner aus, der angegriffen werden soll.
+   Werden keine Gegner im Parameter <here> angegeben, so wird der
+   Rueckgabewert der Funktion PresentEnemies() verwandt, welche die
+   aktuell anwesenden Gegner im Raum liefert.
+   Sind keine Gegner anwesend, so wird 0 zurueckgeliefert.
+   Danach wird geschaut, ob Gegner bevorzugt ausgewaehlt werden sollen.
+   Dies geschieht mittels der Funktion QueryPreferedEnemy().
+   Auch dieser bevorzugte Gegner muss im selben Raum sein! Wenn nicht,
+   wird doch irgendein anderer Gegner ausgewaehlt und zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   PresentEnemies(), QueryPreferedEnemy(), P_PREFERED_ENEMY,
+   InsertEnemy(), StopHuntFor()
+
 Last modified: Thu May 27 15:01:48 1999 by Patryn
diff --git a/doc/lfun/SelectFarEnemy b/doc/lfun/SelectFarEnemy
index d574dcc..c390d42 100644
--- a/doc/lfun/SelectFarEnemy
+++ b/doc/lfun/SelectFarEnemy
@@ -1,45 +1,65 @@
 
 SelectFarEnemy()
+****************
 
 
-FUNKTION:
-        varargs object SelectFarEnemy(object *here, int min, int max,
-                                      int forcefrom)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   varargs object SelectFarEnemy(object *here, int min, int max,
+                                 int forcefrom)
 
-ARGUMENTE:
-        here       - Rueckgabewert von PresentEnemies()
-        min        - minimale Kampfreihe
-        max        - maximale Kampfreihe
-        forcefrom  - Gegner MUSS aus uebergebenem Array ausgewaehlt werden
 
-BESCHREIBUNG:
-        Waehlt einen Feind aus Reihe <min> bis <max> aus.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Der Auserwaehlte :-)
+   /std/living/team.c
 
-BEMERKUNGEN:
-        1. Wenn in den angegeben Reihen kein Feind ist oder <max> kleiner
-           als <min> ist, wird auch keiner zurueckgegeben.
-        2. Aus Effizienzgruenden sollte forcefrom nur benutzt werden, wenn
-           es wirklich noetig ist (s. hierzu auch SelectNearEnemy()).
-        3. 0 <= <min> <= <max> < MAX_TEAMROWS
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   here       - Rueckgabewert von PresentEnemies()
+   min        - minimale Kampfreihe
+   max        - maximale Kampfreihe
+   forcefrom  - Gegner MUSS aus uebergebenem Array ausgewaehlt werden
+
+
+BESCHREIBUNG
+============
+
+   Waehlt einen Feind aus Reihe <min> bis <max> aus.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Wenn in den angegeben Reihen kein Feind ist oder <max> kleiner
+      als <min> ist, wird auch keiner zurueckgegeben.
+   2. Aus Effizienzgruenden sollte forcefrom nur benutzt werden, wenn
+      es wirklich noetig ist (s. hierzu auch SelectNearEnemy()).
+   3. 0 <= <min> <= <max> < MAX_TEAMROWS
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/SelectNearEnemy b/doc/lfun/SelectNearEnemy
index 998bee8..43ba033 100644
--- a/doc/lfun/SelectNearEnemy
+++ b/doc/lfun/SelectNearEnemy
@@ -1,49 +1,69 @@
 
 SelectNearEnemy()
+*****************
 
 
-FUNKTION:
-        varargs object SelectNearEnemy(object *here, int forcefrom)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   varargs object SelectNearEnemy(object *here, int forcefrom)
 
-ARGUMENTE:
-        here      - Rueckgabewert von PresentEnemies()
-        forcefrom - Gegner MUSS aus uebergebenem Array ausgewaehlt werden
 
-BESCHREIBUNG:
-        Waehlt einen im Nahkampf erreichbaren Feind aus
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Der Auserwaehlte :-)
+   /std/living/team.c
 
-BEMERKUNGEN:
-        1. Falls der Spieler in einem Team ist und in einer hinteren Reihe
-           steht, wird kein Feind ausgewaehlt, es sei denn, der Spieler hat
-           einen Kampf mit einem Teammitglied angefangen.
-        2. Wenn ein bevorzugter Feind in einer der hinteren Reihen eines
-           Teams steht, wird solange das Team bevorzugt.
-        3. Auch Feinde in den hinteren Reihen koennen im Nahkampf erreichbar
-           sein, wenn die vorderen Reihen nicht genuegend Deckung bieten.
-        4. ACHTUNG: Der Auserwaehlte kommt nicht notwendigerweise aus dem
-           uebergebenen Array, wenn forcefrom=0 ist. Normalerweise ist dieses
-           Verhalten beabsichtigt, damit jemand, der sich in der Reihe vor
-           einen Gegner stellt, angegriffen wird, auch wenn er noch nicht
-           Feind ist.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   here      - Rueckgabewert von PresentEnemies()
+   forcefrom - Gegner MUSS aus uebergebenem Array ausgewaehlt werden
+
+
+BESCHREIBUNG
+============
+
+   Waehlt einen im Nahkampf erreichbaren Feind aus
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Falls der Spieler in einem Team ist und in einer hinteren Reihe
+      steht, wird kein Feind ausgewaehlt, es sei denn, der Spieler hat
+      einen Kampf mit einem Teammitglied angefangen.
+   2. Wenn ein bevorzugter Feind in einer der hinteren Reihen eines
+      Teams steht, wird solange das Team bevorzugt.
+   3. Auch Feinde in den hinteren Reihen koennen im Nahkampf erreichbar
+      sein, wenn die vorderen Reihen nicht genuegend Deckung bieten.
+   4. ACHTUNG: Der Auserwaehlte kommt nicht notwendigerweise aus dem
+      uebergebenen Array, wenn forcefrom=0 ist. Normalerweise ist dieses
+      Verhalten beabsichtigt, damit jemand, der sich in der Reihe vor
+      einen Gegner stellt, angegriffen wird, auch wenn er noch nicht
+      Feind ist.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/Set b/doc/lfun/Set
index 42e6930..d654027 100644
--- a/doc/lfun/Set
+++ b/doc/lfun/Set
@@ -1,137 +1,174 @@
+
 Set()
-FUNKTION:
-     public varargs mixed Set(string name, mixed Value, int Type, int extern);
+*****
 
-DEFINIERT IN:
-     /std/thing/properties.c
-     /sys/thing/properties.h (Prototyp)
 
-ARGUMENTE:
-     name - Property, die manipuliert werden soll
-     Value - der zu setzende/aendernde Wert
-     Type - die Eigenschaft der Property, die manipuliert werden soll
-     extern - Interne Verwendung:
-    Wurde Set ueber SetProp von aussen gerufen.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Eine der inneren Eigenschaften der Property 'name' wird veraendert.
-     'Type' ist dabei einer der in /sys/thing/properties.h definierten
-     F_XXX - Werte:
+   public varargs mixed Set(string name, mixed Value, int Type, int extern);
 
-     F_VALUE (==0, default)
-       Setzt den Inhalt der Property auf 'Value'. Aehnlich "SetProp",
-       umgeht jedoch eine etwaige F_SET_METHOD oder _set_'name'()-Methode.
-     F_MODE
-     F_MODE_AS
-     F_MODE_AD
-       Aendert eines der internen Flags der Property. F_MODE negiert den
-       vorherigen Wert vom Flag 'Value', F_MODE_AS setzt und F_MODE_AD
-       loescht ihn.
-       Verfuegbare interne Flags:
-         SAVE 
-           Property wird bei save_object() gespeichert
-         PROTECTED 
-           Flag setzbar durch:   beliebiges Objekt
-           Flag loeschbar durch: this_object(), ROOT, EM+
-           Inhalt der Property veraendern sowie Set- und Query-Methoden
-           setzen oder loeschen duerfen nur noch this_object(), ROOT, EM+
-           WARNUNG: Dieses Flag nicht leichtfertig bei Spielern setzen!
-         SECURED  
-           Flag setzbar durch:   this_object(), ROOT, EM+
-           Flag loeschbar durch: Niemanden!
-           Inhalt der Property veraendern sowie Set- und Query-Methoden
-           setzen oder loeschen duerfen nur noch this_object(), ROOT, EM+
-         NOSETMETHOD 
-           Property nicht mehr ueber SetProp() aenderbar
-           (damit entfallen auch SET_METHOD, _set_'name')
-     F_SET_METHOD
-       Aendert den Eintrag fuer eine SetMethod - eine Closure, die anstatt
-       des Setzens der Property beim Aufruf von SetProp mit 'Value'
-       aufgerufen wird.
-     F_QUERY_METHOD
-       Aendert den Eintrag fuer eine QueryMethod - eine Closure, die anstatt
-       des Lesens der Property beim Aufruf von QueryProp aufgerufen wird.
 
-RUeCKGABEWERT:
-     Das Ergebnis der Manipulation bzw. einer der definierten
-     Fehlercodes.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     - Set() sollte nicht zum regulaeren Manipulieren des Inhalts einer
-       Property verwendet werden, da sowohl F_SET_METHOD als auch libinterne
-       _set_'name'()-Methoden umgangen werden und das Ergebnis fuer so
-       veraenderte Properties undefiniert ist.
-     - eine gesetzte F_SET/F_QUERY_METHOD hat bei SetProp/QueryProp Vorrang
-       vor einer _set/_query_method
-       -> _set/_query wird nach erfolgreichem Ruf von F_XXX_METHOD ignoriert
-     - F_SET/F_QUERY_METHOD sollte normalerweise Vorzug vor einer
-       _set_/_query_* gegeben werden.
+   /std/thing/properties.c
+   /sys/thing/properties.h (Prototyp)
 
-    SetMethods/QueryMethods:
-     - falls ihr Query/SetMethods an oeffentlichen Properties setzen
-       wollt, prueft bitte vorher, ob dort nicht schon eine (fremde) gesetzt
-       ist und brecht ggf. euer Set() ab, um nicht die Arbeit anderer
-       Mitmagier zu sabotieren (z.B. P_HANDS)
-     - Properties sollten mit Query- oder SetMethoden nur so lange wie
-       noetig belegt werden
-       -> manche Properties sollte man als Wert setzen, _auch wenn_ die
-          Spieler sie zuruecksetzen koennten (zB P_MSGIN/P_MSGOUT)
-     - auf keinen Fall den Wert speichern, ueberschreiben, rueckschreiben,
-       das fuehrt fast immer zu Problemen.
-     - Set/QueryMethoden sollten nicht als Trigger/Listener fuer ein
-       Ereignis (z.B. P_DIE_MSG fuer das Ereignis "Tod des Spielers")
-       missbraucht werden
-       -> es gibt sichere und saubere Moeglichkeiten (NotifyPlayerDeath),
-          und wenn nicht, wendet euch an den EM eures Vertrauens
-     - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
-       sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
-       geht nur 'static' (in diesem Fall empfohlen).
 
-BEISPIELE:
-     ### Aendern von Eigenschaften einer Property ###
-     // Setzen des SAVE-Flags (bei save_object() mitzuspeichern)
-     Set(P_XYZ, SAVE, F_MODE_AS);
+ARGUMENTE
+=========
 
-     // Loeschen des SAVE-Flags
-     Set(P_XYZ, SAVE, F_MODE_AD);
-     
-     // Negieren des bisherigen SAVE-Flags
-     Set(P_XYZ, SAVE, F_MODE);
-     // Hinweis: das Setzen des Flags funktioniert mittels F_MODE nur dann,
-     // wenn sichergestellt ist, dass es vorher nicht gesetzt war. Die 
-     // sichere Variante ist daher, F_MODE_AS zu verwenden.
+    name - Property, die manipuliert werden soll
+    Value - der zu setzende/aendernde Wert
+    Type - die Eigenschaft der Property, die manipuliert werden soll
+    extern - Interne Verwendung:
+   Wurde Set ueber SetProp von aussen gerufen.
 
-     // Sperren des SetProp/SET_METHOD-Zugriffs:
-     Set(P_XYZ, NOSETMETHOD, F_MODE_AS);
 
-     // Vorlaeufiger Zugriffsschutz fuer eine Property:
-     Set(P_XYZ, PROTECTED, F_MODE_AS);
+BESCHREIBUNG
+============
 
-     // Permanenter Zugriffsschutz fuer eine Property:
-     Set(P_XYZ, SECURED, F_MODE_AS);
+   Eine der inneren Eigenschaften der Property 'name' wird veraendert.
+   'Type' ist dabei einer der in /sys/thing/properties.h definierten
+   F_XXX - Werte:
 
-     ### Setzen einer SetMethod/QueryMethod ###
-     // Setzen einer internen SetMethod
-     mixed foo(mixed val);
-     ...
-     Set(P_XYZ, #'foo, F_SET_METHOD);
-     ...
+   F_VALUE (==0, default)
+     Setzt den Inhalt der Property auf 'Value'. Aehnlich "SetProp",
+     umgeht jedoch eine etwaige F_SET_METHOD oder _set_'name'()-Methode.
+   F_MODE
+   F_MODE_AS
+   F_MODE_AD
+     Aendert eines der internen Flags der Property. F_MODE negiert den
+     vorherigen Wert vom Flag 'Value', F_MODE_AS setzt und F_MODE_AD
+     loescht ihn.
+     Verfuegbare interne Flags:
 
-     // Setzen einer QueryMethod bei einem anderen Objekt
-     mixed bar();
-     ...
-     other->Set(P_XYZ, #'bar, F_QUERY_METHOD);
-     ...
+       SAVE
 
-     // Der Vollstaendigkeit halber sei das Aendern einer Property unter
-     // Umgehung von Set-Methoden angegeben. Es ist aber aus o.g. Gruenden
-     // zu empfehlen, diese Variante nicht zu verwenden.
-     Set(P_XYZ, "bla", F_VALUE);
+         Property wird bei save_object() gespeichert
 
-SIEHE AUCH:
-     Aehnliches: SetProp(L), QueryProp(L), Query(L)
-     Generell:  SetProperties(L), QueryProperties(L)
-     Konzept:  properties, /std/thing/properties.c
-     Sonstiges:  P_AUTOLOADOBJ
+       PROTECTED
 
-06. Jan 2008 Arathorn
+         Flag setzbar durch:   beliebiges Objekt
+         Flag loeschbar durch: this_object(), ROOT, EM+
+         Inhalt der Property veraendern sowie Set- und Query-Methoden
+         setzen oder loeschen duerfen nur noch this_object(), ROOT, EM+
+         WARNUNG: Dieses Flag nicht leichtfertig bei Spielern setzen!
+
+       SECURED
+
+         Flag setzbar durch:   this_object(), ROOT, EM+
+         Flag loeschbar durch: Niemanden!
+         Inhalt der Property veraendern sowie Set- und Query-Methoden
+         setzen oder loeschen duerfen nur noch this_object(), ROOT, EM+
+
+       NOSETMETHOD
+
+         Property nicht mehr ueber SetProp() aenderbar
+         (damit entfallen auch SET_METHOD, _set_'name')
+   F_SET_METHOD
+     Aendert den Eintrag fuer eine SetMethod - eine Closure, die anstatt
+     des Setzens der Property beim Aufruf von SetProp mit 'Value'
+     aufgerufen wird.
+   F_QUERY_METHOD
+     Aendert den Eintrag fuer eine QueryMethod - eine Closure, die anstatt
+     des Lesens der Property beim Aufruf von QueryProp aufgerufen wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Das Ergebnis der Manipulation bzw. einer der definierten
+   Fehlercodes.
+
+
+BEMERKUNGEN
+===========
+
+    - Set() sollte nicht zum regulaeren Manipulieren des Inhalts einer
+      Property verwendet werden, da sowohl F_SET_METHOD als auch libinterne
+      _set_'name'()-Methoden umgangen werden und das Ergebnis fuer so
+      veraenderte Properties undefiniert ist.
+    - eine gesetzte F_SET/F_QUERY_METHOD hat bei SetProp/QueryProp Vorrang
+      vor einer _set/_query_method
+      -> _set/_query wird nach erfolgreichem Ruf von F_XXX_METHOD ignoriert
+    - F_SET/F_QUERY_METHOD sollte normalerweise Vorzug vor einer
+      _set_/_query_* gegeben werden.
+
+   SetMethods/QueryMethods:
+    - falls ihr Query/SetMethods an oeffentlichen Properties setzen
+      wollt, prueft bitte vorher, ob dort nicht schon eine (fremde) gesetzt
+      ist und brecht ggf. euer Set() ab, um nicht die Arbeit anderer
+      Mitmagier zu sabotieren (z.B. P_HANDS)
+    - Properties sollten mit Query- oder SetMethoden nur so lange wie
+      noetig belegt werden
+      -> manche Properties sollte man als Wert setzen, _auch wenn_ die
+         Spieler sie zuruecksetzen koennten (zB P_MSGIN/P_MSGOUT)
+    - auf keinen Fall den Wert speichern, ueberschreiben, rueckschreiben,
+      das fuehrt fast immer zu Problemen.
+    - Set/QueryMethoden sollten nicht als Trigger/Listener fuer ein
+      Ereignis (z.B. P_DIE_MSG fuer das Ereignis "Tod des Spielers")
+      missbraucht werden
+      -> es gibt sichere und saubere Moeglichkeiten (NotifyPlayerDeath),
+         und wenn nicht, wendet euch an den EM eures Vertrauens
+    - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
+      sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
+      geht nur 'static' (in diesem Fall empfohlen).
+
+
+BEISPIELE
+=========
+
+   ### Aendern von Eigenschaften einer Property ###
+   // Setzen des SAVE-Flags (bei save_object() mitzuspeichern)
+   Set(P_XYZ, SAVE, F_MODE_AS);
+
+   // Loeschen des SAVE-Flags
+   Set(P_XYZ, SAVE, F_MODE_AD);
+
+
+
+   // Negieren des bisherigen SAVE-Flags
+   Set(P_XYZ, SAVE, F_MODE);
+   // Hinweis: das Setzen des Flags funktioniert mittels F_MODE nur dann,
+   // wenn sichergestellt ist, dass es vorher nicht gesetzt war. Die
+   // sichere Variante ist daher, F_MODE_AS zu verwenden.
+
+   // Sperren des SetProp/SET_METHOD-Zugriffs:
+   Set(P_XYZ, NOSETMETHOD, F_MODE_AS);
+
+   // Vorlaeufiger Zugriffsschutz fuer eine Property:
+   Set(P_XYZ, PROTECTED, F_MODE_AS);
+
+   // Permanenter Zugriffsschutz fuer eine Property:
+   Set(P_XYZ, SECURED, F_MODE_AS);
+
+   ### Setzen einer SetMethod/QueryMethod ###
+   // Setzen einer internen SetMethod
+   mixed foo(mixed val);
+   ...
+   Set(P_XYZ, #'foo, F_SET_METHOD);
+   ...
+
+   // Setzen einer QueryMethod bei einem anderen Objekt
+   mixed bar();
+   ...
+   other->Set(P_XYZ, #'bar, F_QUERY_METHOD);
+   ...
+
+   // Der Vollstaendigkeit halber sei das Aendern einer Property unter
+   // Umgehung von Set-Methoden angegeben. Es ist aber aus o.g. Gruenden
+   // zu empfehlen, diese Variante nicht zu verwenden.
+   Set(P_XYZ, "bla", F_VALUE);
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: SetProp(L), QueryProp(L), Query(L)
+   Generell:  SetProperties(L), QueryProperties(L)
+   Konzept:  properties, /std/thing/properties.c
+   Sonstiges:  P_AUTOLOADOBJ
+
+6. Jan 2008 Arathorn
diff --git a/doc/lfun/SetAttackChats b/doc/lfun/SetAttackChats
index 87203a1..90e8a66 100644
--- a/doc/lfun/SetAttackChats
+++ b/doc/lfun/SetAttackChats
@@ -1,68 +1,104 @@
+
 SetAttackChats()
+****************
 
-FUNKTION:
-     void SetAttackChats(int chance, mixed strs);
 
-DEFINIERT IN:
-     /std/npc/chat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     chance
-          Prozentuale Wahrscheinlichkeit einer Ausgabe
-     strs
-          Stringarray mit den Monsterchats
+   void SetAttackChats(int chance, mixed strs);
 
-BESCHREIBUNG:
-     Der NPC gibt mit der Wahrscheinlichkeit 'chance' einen zufaellig
-     gewaehlten Text aus 'strs' von sich. Die Arrayelemente koennen 
-     auch Funktionen ("@@func@@") oder Closures enthalten, die dann
-     aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
 
-RUECKGABEWERT:
-     keiner
-     
-BEMERKUNGEN:
-     AttackChats werden nur im Kampf ausgegeben. Ansonsten ist SetChats()
-     zu verwenden.
-     
-     'chance' wird in der Property P_ACHAT_CHANCE abgelegt. Um einen NPC
-     voruebergehend 'stillzulegen', kann man P_ACHAT_CHANCE auf 0 setzen.
-     
-     Man kann AttackChats nutzen, um Monsterspells zu realisieren. Besser
-     ist es aber, dafuer 'AddSpell' zu verwenden.
-     
-BEISPIELE:
+DEFINIERT IN
+============
 
-     SetAttackChats( 20,
-       ({ "Der Ork tritt Dir in den Hintern.\n",
-          "Der Ork bruellt: Lebend kommst Du hier nicht raus!\n",
-          "Der Ork blutet schon aus mehreren Wunden.\n",
-          "@@knirsch@@" }) );
-          
-     string knirsch()
-     {
-       object *ruestung, *tmp, helm;
-       
-       ruestung = this_player()->QueryProp(P_ARMOURS); // getragene Ruestung
-       tmp = filter_objects(ruestung, "id", AT_HELMET);
-       // Wenn der Spieler einen Helm traegt, enthaelt 'tmp' jetzt
-       // ein Array mit dem Helmobjekt als einzigem Element
-       if (sizeof(tmp)) helm = tmp[0];
-	 if (objectp(helm))
-	 {
-	   // AC nur dann senken, wenn sie nicht schon 0 ist.
-	   if (helm->QueryProp(P_AC)>0) {
-	     helm->Damage(1);
-	     return "Der Ork beschaedigt Deinen Helm!\n";
-	   }
-	   return "";
-	 }
-	 else
-	   return ""; // keine Meldung
-     }
+   /std/npc/chat.c
 
-SIEHE AUCH:
-     P_ACHAT_CHANCE, SetChats(), /std/npc/chat.c, AddSpell()
 
-LETZTE AENDERUNG:
-	Don, 27.12.2007, 16:35:00 von Arathorn
+ARGUMENTE
+=========
+
+   chance
+        Prozentuale Wahrscheinlichkeit einer Ausgabe
+   strs
+        Stringarray mit den Monsterchats
+
+
+BESCHREIBUNG
+============
+
+   Der NPC gibt mit der Wahrscheinlichkeit 'chance' einen zufaellig
+   gewaehlten Text aus 'strs' von sich. Die Arrayelemente koennen
+   auch Funktionen ("@@func@@") oder Closures enthalten, die dann
+   aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   AttackChats werden nur im Kampf ausgegeben. Ansonsten ist SetChats()
+   zu verwenden.
+
+
+
+   'chance' wird in der Property P_ACHAT_CHANCE abgelegt. Um einen NPC
+   voruebergehend 'stillzulegen', kann man P_ACHAT_CHANCE auf 0 setzen.
+
+
+
+   Man kann AttackChats nutzen, um Monsterspells zu realisieren. Besser
+   ist es aber, dafuer 'AddSpell' zu verwenden.
+
+
+BEISPIELE
+=========
+
+   SetAttackChats( 20,
+     ({ "Der Ork tritt Dir in den Hintern.\n",
+        "Der Ork bruellt: Lebend kommst Du hier nicht raus!\n",
+        "Der Ork blutet schon aus mehreren Wunden.\n",
+        "@@knirsch@@" }) );
+
+
+
+   string knirsch()
+   {
+     object *ruestung, *tmp, helm;
+
+
+
+     ruestung = this_player()->QueryProp(P_ARMOURS); // getragene Ruestung
+     tmp = filter_objects(ruestung, "id", AT_HELMET);
+     // Wenn der Spieler einen Helm traegt, enthaelt 'tmp' jetzt
+     // ein Array mit dem Helmobjekt als einzigem Element
+     if (sizeof(tmp)) helm = tmp[0];
+       if (objectp(helm))
+       {
+         // AC nur dann senken, wenn sie nicht schon 0 ist.
+         if (helm->QueryProp(P_AC)>0) {
+           helm->Damage(1);
+           return "Der Ork beschaedigt Deinen Helm!\n";
+         }
+         return "";
+       }
+       else
+         return ""; // keine Meldung
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_ACHAT_CHANCE, SetChats(), /std/npc/chat.c, AddSpell()
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 27.12.2007, 16:35:00 von Arathorn
diff --git a/doc/lfun/SetAttr b/doc/lfun/SetAttr
index 8ed476f..fe5d97b 100644
--- a/doc/lfun/SetAttr
+++ b/doc/lfun/SetAttr
@@ -1,31 +1,55 @@
+
 SetAttr()
-FUNKTION:
-     public int SetAttr(string attr, int val)
+*********
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     attr       - zu setzendes Attribut
-     val        - Wert
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Filtert den Wert durch _filterattr(). Dadurch werden STR, INT, CON, DEX
-     auf 20 begrenzt. Setzt dann das Attribut.
-     Offsets werden hier nicht beruecksichtigt, QueryAttribute() gibt also
-     val + etwaige Offsets/Modifier zurueck.
+   public int SetAttr(string attr, int val)
 
-RUeCKGABEWERT:
-     Tatsaechlich gesetzter Wert.
 
-BEMERKUNGEN:
-     Wird von SetAttribute() und SetRealAttribute() aufgerufen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     TestAttributeLock(),
-     P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
-     P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - zu setzendes Attribut
+   val        - Wert
+
+
+BESCHREIBUNG
+============
+
+   Filtert den Wert durch _filterattr(). Dadurch werden STR, INT, CON, DEX
+   auf 20 begrenzt. Setzt dann das Attribut.
+   Offsets werden hier nicht beruecksichtigt, QueryAttribute() gibt also
+   val + etwaige Offsets/Modifier zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Tatsaechlich gesetzter Wert.
+
+
+BEMERKUNGEN
+===========
+
+   Wird von SetAttribute() und SetRealAttribute() aufgerufen.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   TestAttributeLock(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/SetAttribute b/doc/lfun/SetAttribute
index bab54f2..139fc99 100644
--- a/doc/lfun/SetAttribute
+++ b/doc/lfun/SetAttribute
@@ -1,28 +1,49 @@
+
 SetAttribute()
-FUNKTION:
-     int SetAttribute(string attr, int val)
+**************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     attr       - zu setzendes Attribut
-     val        - Wert
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Nimm val als Gesamtwert des Attributes, d.h. zieht etwaige Offsets vor
-     Setzen ab. (QueryAttribute gibt dann also val zurueck)
+   int SetAttribute(string attr, int val)
 
-RUeCKGABEWERT:
-     Den durch SetAttr gefilterten gesetzten Wert.
-     Bitte nicht auf Spieler anwenden!
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - zu setzendes Attribut
+   val        - Wert
+
+
+BESCHREIBUNG
+============
+
+   Nimm val als Gesamtwert des Attributes, d.h. zieht etwaige Offsets vor
+   Setzen ab. (QueryAttribute gibt dann also val zurueck)
+
+
+RUeCKGABEWERT
+=============
+
+   Den durch SetAttr gefilterten gesetzten Wert.
+   Bitte nicht auf Spieler anwenden!
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/SetBuyFact b/doc/lfun/SetBuyFact
index b5154c7..8994bd3 100644
--- a/doc/lfun/SetBuyFact
+++ b/doc/lfun/SetBuyFact
@@ -1,36 +1,58 @@
+
 SetBuyFact()
+************
 
-FUNKTION:
-     void SetBuyFact(int fact);
 
-DEFINIERT IN:
-     /std/laden.c
+FUNKTION
+========
 
-ARGUMENTE:
-     fact
-          Der Einkaufspreismultiplikator.
+   void SetBuyFact(int fact);
 
-BESCHREIBUNG:
-     Der Preis, der beim Kauf eines Objekts im Laden zu entrichten ist,
-     errechnet sich aus seinem Wert ( P_VALUE), multipliziert mit dem Faktor
-     fact. Dieser Preis ist konstant und nicht von der aktuellen Marktlage
-     abhaengig.
 
-     Der Defaultwert ist 3. Ein hoeherer Wert entspricht einem teuren Laden,
-     waehrend ein kleinerer Wert zu kleinen Preisen fuehrt.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     keiner
+   /std/laden.c
 
-BEMERKUNGEN:
-     Normalerweise kommt man ohne diese Funktion aus: in teuren Laeden wird
-     nicht viel eingekauft (es sei denn, es liegen standardmaessig gute
-     Objekte im Speicher), einem Billigladen wird bald das Geld ausgehen mit
-     der Folge, dass der Ladenbesitzer nichts mehr ankaufen kann und sein
-     Lager gaehnend leer ist.
 
-SIEHE AUCH:
-     QueryBuyFact(), /std/laden.c
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   fact
+        Der Einkaufspreismultiplikator.
+
+
+BESCHREIBUNG
+============
+
+   Der Preis, der beim Kauf eines Objekts im Laden zu entrichten ist,
+   errechnet sich aus seinem Wert ( P_VALUE), multipliziert mit dem Faktor
+   fact. Dieser Preis ist konstant und nicht von der aktuellen Marktlage
+   abhaengig.
+
+   Der Defaultwert ist 3. Ein hoeherer Wert entspricht einem teuren Laden,
+   waehrend ein kleinerer Wert zu kleinen Preisen fuehrt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Normalerweise kommt man ohne diese Funktion aus: in teuren Laeden wird
+   nicht viel eingekauft (es sei denn, es liegen standardmaessig gute
+   Objekte im Speicher), einem Billigladen wird bald das Geld ausgehen mit
+   der Folge, dass der Ladenbesitzer nichts mehr ankaufen kann und sein
+   Lager gaehnend leer ist.
+
+
+SIEHE AUCH
+==========
+
+   QueryBuyFact(), /std/laden.c
+
 Last modified: Wed May 8 10:24:52 1996 by Wargon
diff --git a/doc/lfun/SetChats b/doc/lfun/SetChats
index 3f425a8..70d312e 100644
--- a/doc/lfun/SetChats
+++ b/doc/lfun/SetChats
@@ -1,69 +1,94 @@
+
 SetChats()
+**********
 
-FUNKTION:
-	void SetChats(int chance,mixed strs);
 
-DEFINIERT IN:
-	/std/npc/chat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	chance
-	  Prozentuale Wahrscheinlichkeit einer Ausgabe
-	strs
-	  Stringarray mit den Monsterchats
+   void SetChats(int chance,mixed strs);
 
-BESCHREIBUNG:
-	Der NPC gibt mit der Wahrscheinlichkeit <chance> pro Heartbeat einen
-	zufaellig gewaehlten Text aus dem Array <strs> von sich.
-	Die Arrayelemente koennen auch Closures oder
-	process_string()-Funktionen ("@@func@@") enthalten, die dann
-	aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
-	 (Fuer keine Ausgabe dann Leerstring "" zurueckgeben!)
-	In diesen Funktionen ist this_player() das Monster selbst!
-	Fuer Zeilenumbrueche ist immer selbst zu sorgen.
 
-RUECKGABEWERT:
-	keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-	Ein einfaches Beispiel:
-	  // Prototype fuer Closure.
-	  static string info1();
-	  void create()
-	  { ...
-	    SetChats(20,
-	   ({"Der Ork sagt: Hau ab, bevor ich Dich fresse.\n",
-	     "Der Ork grinst Dich unverschaemt an.\n",
-	     "Der Ork wedelt mit seinem Saebel vor Deinem Gesicht herum.\n",
-	     "Der Ork droht Dir mit der Faust.\n",
-             #'info1,
-	     "@@info2@@"}));
-          }
-	  // Funktion als Closure. Prototype notwendig!
-	  static string info1()
-	  { if(QueryProp(P_HP)<QueryProp(P_ALIGN))
-	      return"Gleich werde ich von hier fliehen!\n";
-	    return"";
-	  }
-	  // Funktion als process_string().
-	  string info2()
-	  { return QueryProp(P_HP)==QueryProp(P_MAX_HP)?
-	 "Der Ork grinst: Mir geht es fantastisch!\n":
-	 "Der Ork seufzt: Mir ging es wirklich schon mal besser.\n";
-	  }
+   /std/npc/chat.c
 
-BEMERKUNGEN:
-	Im Kampf werden keine Chats ausgegeben. Es ist dann SetAttackChats()
-	zu verwenden.
-	Funktionen als process_string() sollte man nicht mehr verwenden.
-	<chance> wird in der Property P_CHAT_CHANCE abgelegt. Um einen NPC
-	voruebergehend 'stillzulegen', kann man P_CHAT_CHANCE auf 0 setzen.
-  Wenn kein Spieler anwesend ist, haben NPC in der Regel keinen Heartbeat,
-  weswegen dann auch die Chats ausgeschaltet sind.
-  Spieler koennen NPC 'stillen', d.h. Chats und AttackChats abschalten.
 
-SIEHE AUCH:
-	P_CHAT_CHANCE, SetAttackChats(), process_string()
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   chance
+     Prozentuale Wahrscheinlichkeit einer Ausgabe
+   strs
+     Stringarray mit den Monsterchats
+
+
+BESCHREIBUNG
+============
+
+   Der NPC gibt mit der Wahrscheinlichkeit <chance> pro Heartbeat einen
+   zufaellig gewaehlten Text aus dem Array <strs> von sich.
+   Die Arrayelemente koennen auch Closures oder
+   process_string()-Funktionen ("@@func@@") enthalten, die dann
+   aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
+    (Fuer keine Ausgabe dann Leerstring "" zurueckgeben!)
+   In diesen Funktionen ist this_player() das Monster selbst!
+   Fuer Zeilenumbrueche ist immer selbst zu sorgen.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Ein einfaches Beispiel:
+     // Prototype fuer Closure.
+     static string info1();
+     void create()
+     { ...
+       SetChats(20,
+      ({"Der Ork sagt: Hau ab, bevor ich Dich fresse.\n",
+        "Der Ork grinst Dich unverschaemt an.\n",
+        "Der Ork wedelt mit seinem Saebel vor Deinem Gesicht herum.\n",
+        "Der Ork droht Dir mit der Faust.\n",
+        #'info1,
+        "@@info2@@"}));
+     }
+     // Funktion als Closure. Prototype notwendig!
+     static string info1()
+     { if(QueryProp(P_HP)<QueryProp(P_ALIGN))
+         return"Gleich werde ich von hier fliehen!\n";
+       return"";
+     }
+     // Funktion als process_string().
+     string info2()
+     { return QueryProp(P_HP)==QueryProp(P_MAX_HP)?
+    "Der Ork grinst: Mir geht es fantastisch!\n":
+    "Der Ork seufzt: Mir ging es wirklich schon mal besser.\n";
+     }
+
+
+BEMERKUNGEN
+===========
+
+         Im Kampf werden keine Chats ausgegeben. Es ist dann SetAttackChats()
+         zu verwenden.
+         Funktionen als process_string() sollte man nicht mehr verwenden.
+         <chance> wird in der Property P_CHAT_CHANCE abgelegt. Um einen NPC
+         voruebergehend 'stillzulegen', kann man P_CHAT_CHANCE auf 0 setzen.
+   Wenn kein Spieler anwesend ist, haben NPC in der Regel keinen Heartbeat,
+   weswegen dann auch die Chats ausgeschaltet sind.
+   Spieler koennen NPC 'stillen', d.h. Chats und AttackChats abschalten.
+
+
+SIEHE AUCH
+==========
+
+   P_CHAT_CHANCE, SetAttackChats(), process_string()
+
 Last modified: Sat Jan 18 18:48:06 2003 by Patryn
diff --git a/doc/lfun/SetCoinsPerUnits b/doc/lfun/SetCoinsPerUnits
index 07e3879..0533275 100644
--- a/doc/lfun/SetCoinsPerUnits
+++ b/doc/lfun/SetCoinsPerUnits
@@ -1,38 +1,63 @@
+
 SetCoinsPerUnits()
+******************
 
-FUNKTION:
-     void SetCoinsPerUnits(int coins, int units);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     coins
-          Zahl der Muenzen
-     units
-          Zahl der Einheiten
+   void SetCoinsPerUnits(int coins, int units);
 
-BESCHREIBUNG:
-     Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten kostet.
-     Eine einzelne Einheit kostet coins/units Muenzen.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Bei der Preisberechnung wird abgerundet. Hat man also ein Verhaeltnis
-     von einer Muenze pro zwei Einheiten, so ist der Preis einer einzelnen
-     Einheit 0!
+   /std/unit.c
 
-BEISPIELE:
-     Eine Einheit soll 3.5 Muenzen wert sein:
 
-     /* 7 Muenzen / 2 Einheiten = 3.5 Muenzen / Einheit */
-     SetCoinsPerUnits(7,2);
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     QueryCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnits(),
-     /std/unit.c
+   coins
+        Zahl der Muenzen
+   units
+        Zahl der Einheiten
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten kostet.
+   Eine einzelne Einheit kostet coins/units Muenzen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Bei der Preisberechnung wird abgerundet. Hat man also ein Verhaeltnis
+   von einer Muenze pro zwei Einheiten, so ist der Preis einer einzelnen
+   Einheit 0!
+
+
+BEISPIELE
+=========
+
+   Eine Einheit soll 3.5 Muenzen wert sein:
+
+   /* 7 Muenzen / 2 Einheiten = 3.5 Muenzen / Einheit */
+   SetCoinsPerUnits(7,2);
+
+
+SIEHE AUCH
+==========
+
+   QueryCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnits(),
+   /std/unit.c
+
 Last modified: Wed May 8 10:24:57 1996 by Wargon
diff --git a/doc/lfun/SetDoorStatus b/doc/lfun/SetDoorStatus
index 1948637..c433c40 100644
--- a/doc/lfun/SetDoorStatus
+++ b/doc/lfun/SetDoorStatus
@@ -1,29 +1,49 @@
-FUNKTION:
-     void SetDoorStatus(string dest, int status);
 
-DEFINIERT IN:
-     /obj/doormaster.c
-
-ARGUMENTE:
-     <dest>   = Zielraum der Tuer.
-     <status> = Der neue Zustand der Tuer.
-
-BESCHREIBUNG:
-     Der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt, wird auf
-     <status> geaendert. Hierbei muss <status> einer der drei folgenden Werte
-     aus <doorroom.h> sein:
-
-       D_STATUS_LOCKED - Tuer abgeschlossen
-       D_STATUS_CLOSED - Tuer geschlossen
-       D_STATUS_OPEN   - Tuer geoeffnet
-
-RUECKGABEWERT:
-     keiner
+SetDoorStatus()
+***************
 
 
-SIEHE AUCH:
-    NewDoor(), QueryDoorKey(), QueryDoorStatus(), P_DOOR_INFOS,
-    /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+FUNKTION
+========
 
------------------------------------------------------------------------------
+   void SetDoorStatus(string dest, int status);
+
+
+DEFINIERT IN
+============
+
+   /obj/doormaster.c
+
+
+ARGUMENTE
+=========
+
+   <dest>   = Zielraum der Tuer.
+   <status> = Der neue Zustand der Tuer.
+
+
+BESCHREIBUNG
+============
+
+   Der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt, wird auf
+   <status> geaendert. Hierbei muss <status> einer der drei folgenden Werte
+   aus <doorroom.h> sein:
+
+     D_STATUS_LOCKED - Tuer abgeschlossen
+     D_STATUS_CLOSED - Tuer geschlossen
+     D_STATUS_OPEN   - Tuer geoeffnet
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), QueryDoorStatus(), P_DOOR_INFOS,
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
 Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/lfun/SetEnemies b/doc/lfun/SetEnemies
index 6c79a56..2c92035 100644
--- a/doc/lfun/SetEnemies
+++ b/doc/lfun/SetEnemies
@@ -1,33 +1,53 @@
+
 SetEnemies()
+************
 
-FUNKTION:
-     mapping SetEnemies(object *myenemies);
 
-DEFINIERT IN:
-     /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     myenemies
-	  Array: ({Gegnerarray, Zeitenarray})
+   mapping SetEnemies(object *myenemies);
 
-RUeCKGABEWERT:
-     Internes Mapping mit bekannten Gegnern und Zeiten.
 
-BESCHREIBUNG:
-     Normalerweise fuegt man einzelne Gegner mittels InsertEnemy() ein und
-     loescht alte Feinde mittels StopHuntFor().
+DEFINIERT IN
+============
 
-     Um jedoch mit einem Schlag viele Veraenderungen vorzunehmen, kann man
-     die Funktion SetEnemies() nutzen.
+   /std/living/combat.c
 
-     Ihr uebergibt man ein Array mit einem Array mit den gewuenschten Gegnern
-     als und einem zweiten, gleichgrossen Array mit den Zeiten, wie lange
-     diese Gegner aktuell sein sollen, als Eintraege.
 
-     Die Funktion traegt diese Werte als Gegner mit entsprechender
-     Feindeszeit ein.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     InsertEnemy(), StopHuntFor(), SelectEnemy(), PresentEnemies()
+   myenemies
+        Array: ({Gegnerarray, Zeitenarray})
+
+
+RUeCKGABEWERT
+=============
+
+   Internes Mapping mit bekannten Gegnern und Zeiten.
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise fuegt man einzelne Gegner mittels InsertEnemy() ein und
+   loescht alte Feinde mittels StopHuntFor().
+
+   Um jedoch mit einem Schlag viele Veraenderungen vorzunehmen, kann man
+   die Funktion SetEnemies() nutzen.
+
+   Ihr uebergibt man ein Array mit einem Array mit den gewuenschten Gegnern
+   als und einem zweiten, gleichgrossen Array mit den Zeiten, wie lange
+   diese Gegner aktuell sein sollen, als Eintraege.
+
+   Die Funktion traegt diese Werte als Gegner mit entsprechender
+   Feindeszeit ein.
+
+
+SIEHE AUCH
+==========
+
+   InsertEnemy(), StopHuntFor(), SelectEnemy(), PresentEnemies()
 
 10.Feb 2005 Gloinson
diff --git a/doc/lfun/SetGramsPerUnits b/doc/lfun/SetGramsPerUnits
index fcbf9a4..66c1934 100644
--- a/doc/lfun/SetGramsPerUnits
+++ b/doc/lfun/SetGramsPerUnits
@@ -1,32 +1,54 @@
+
 SetGramsPerUnits()
+******************
 
-FUNKTION:
-     void SetGramsPerUnits(int grams, int units);
 
-DEFINIERT IN:
-     /std/unit.c
+FUNKTION
+========
 
-ARGUMENTE:
-     grams
-          Gewicht in Gramm
-     units
-          Zahl der Einheiten
+   void SetGramsPerUnits(int grams, int units);
 
-BESCHREIBUNG:
-     Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten wiegt.
-     Eine einzelne Einheit wiegt grams/units Gramm.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Vier Einheiten sollen 3 Gramm wiegen:
+   /std/unit.c
 
-     SetGramsPerUnits(3,4);
 
-SIEHE AUCH:
-     SetCoinsPerUnits(), QueryCoinsPerUnits(), QueryGramsPerUnits(),
-     /std/unit.c
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   grams
+        Gewicht in Gramm
+   units
+        Zahl der Einheiten
+
+
+BESCHREIBUNG
+============
+
+   Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten wiegt.
+   Eine einzelne Einheit wiegt grams/units Gramm.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Vier Einheiten sollen 3 Gramm wiegen:
+
+   SetGramsPerUnits(3,4);
+
+
+SIEHE AUCH
+==========
+
+   SetCoinsPerUnits(), QueryCoinsPerUnits(), QueryGramsPerUnits(),
+   /std/unit.c
+
 Last modified: Wed May 8 10:25:09 1996 by Wargon
diff --git a/doc/lfun/SetProp b/doc/lfun/SetProp
index b2602fb..9664be8 100644
--- a/doc/lfun/SetProp
+++ b/doc/lfun/SetProp
@@ -1,47 +1,70 @@
+
 SetProp()
-FUNKTION:
-     public mixed SetProp(string name, mixed Value);
+*********
 
-DEFINIERT IN:
-     /std/thing/properties.c
-     /sys/thing/properties.h (Prototyp)
 
-ARGUMENTE:
-     name	- Property, deren Wert veraendert werden soll.
-     Value	- Wert, auf den der Inhalt der Property gesetzt werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Datenwert der Property 'name' wird auf den Wert 'Value' gesetzt.
+   public mixed SetProp(string name, mixed Value);
 
-     Existiert eine F_SET_METHOD oder eine _set_'name'()-Methode fuer
-     diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
-     Eine F_SET_METHOD hat dabei Vorrang vor _set_'name'(), d.h.
-     _set_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
-     gerufen.
 
-     (Diese Methoden nutzen dann Set(), um den Datenwert der Property
-      'name' zu aendern. Teilweise werden aber auch interne Variablen so
-      oeffentlich gemacht und sind nicht in der ueber Set/Query verfuegbaren
-      Property 'name' abgelegt.)
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     Der Wert, der nun in der Property gespeichert ist.
-     In der Regel ist das 'Value'. Wenn die Property ueber eine SET_METHOD
-     oder eine _set_'name'()-Funktion verfuegt und diese 'Value' aendert
-     (zum Beispiel, indem sie 'Value' an einen bestimmten erlaubten
-     Wertebereich anpasst), kann der Rueckgabewert jedoch auch veraendert
-     sein.
+   /std/thing/properties.c
+   /sys/thing/properties.h (Prototyp)
 
-     Wenn die Property nicht veraendert werden darf, wird -1 zurueckgegeben.
 
-BEISPIELE:
-     // geben wir dem Zwerg eine Kurzbeschreibung
-     SetProp(P_SHORT, "Ein kleiner Zwerg");
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Aehnliches:	QueryProp(L), Set(L), Query(L)
-     Generell:		SetProperties(L), QueryProperties(L)
-     Konzept:		properties, /std/thing/properties.c
+   name       - Property, deren Wert veraendert werden soll.
+   Value      - Wert, auf den der Inhalt der Property gesetzt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Der Datenwert der Property 'name' wird auf den Wert 'Value' gesetzt.
+
+   Existiert eine F_SET_METHOD oder eine _set_'name'()-Methode fuer
+   diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
+   Eine F_SET_METHOD hat dabei Vorrang vor _set_'name'(), d.h.
+   _set_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
+   gerufen.
+
+   (Diese Methoden nutzen dann Set(), um den Datenwert der Property
+    'name' zu aendern. Teilweise werden aber auch interne Variablen so
+    oeffentlich gemacht und sind nicht in der ueber Set/Query verfuegbaren
+    Property 'name' abgelegt.)
+
+
+RUeCKGABEWERT
+=============
+
+   Der Wert, der nun in der Property gespeichert ist.
+   In der Regel ist das 'Value'. Wenn die Property ueber eine SET_METHOD
+   oder eine _set_'name'()-Funktion verfuegt und diese 'Value' aendert
+   (zum Beispiel, indem sie 'Value' an einen bestimmten erlaubten
+   Wertebereich anpasst), kann der Rueckgabewert jedoch auch veraendert
+   sein.
+
+   Wenn die Property nicht veraendert werden darf, wird -1 zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   // geben wir dem Zwerg eine Kurzbeschreibung
+   SetProp(P_SHORT, "Ein kleiner Zwerg");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        QueryProp(L), Set(L), Query(L)
+   Generell:          SetProperties(L), QueryProperties(L)
+   Konzept:           properties, /std/thing/properties.c
 
 15.Dez 2004 Gloinson
-
diff --git a/doc/lfun/SetProperties b/doc/lfun/SetProperties
index 4a1fa1d..a4ac72a 100644
--- a/doc/lfun/SetProperties
+++ b/doc/lfun/SetProperties
@@ -1,27 +1,48 @@
+
 SetProperties()
-FUNKTION:
-     void SetProperties(mapping props);
+***************
 
-DEFINIERT IN:
-     /std/thing/properties.c
 
-ARGUMENTE:
-     props	- Mapping mit den Daten fuer alle Properties
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion setzt angegebene Properties auf einen Schlag.
-     Mapping muss wie folgt aufgebaut sein:
-	([ name: wert; flags; set_method; query_method,
-	   name2: ... ]);
+   void SetProperties(mapping props);
 
-BEMERKUNGEN:
-     - diese Funktion wird von restore_object() verwendet, um nicht alle
-       restaurierten Properties einzeln setzen zu muessen.
-     - SECURED/PROTECTED/NOSETMETHOD Properties werden beruecksichtigt
 
-SIEHE AUCH:
-     Aehnliches:	SetProp(L), QueryProp(L), Set(L), Query(L)
-     Generell:		QueryProperties(L)
-     Konzept:		properties, /std/thing/properties.c
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+
+
+ARGUMENTE
+=========
+
+   props      - Mapping mit den Daten fuer alle Properties
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion setzt angegebene Properties auf einen Schlag.
+   Mapping muss wie folgt aufgebaut sein:
+      ([ name: wert; flags; set_method; query_method,
+         name2: ... ]);
+
+
+BEMERKUNGEN
+===========
+
+   - diese Funktion wird von restore_object() verwendet, um nicht alle
+     restaurierten Properties einzeln setzen zu muessen.
+   - SECURED/PROTECTED/NOSETMETHOD Properties werden beruecksichtigt
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        SetProp(L), QueryProp(L), Set(L), Query(L)
+   Generell:          QueryProperties(L)
+   Konzept:           properties, /std/thing/properties.c
 
 1.Mai 2004 Gloinson
diff --git a/doc/lfun/SetRealAttribute b/doc/lfun/SetRealAttribute
index 68ea14c..fc72d9b 100644
--- a/doc/lfun/SetRealAttribute
+++ b/doc/lfun/SetRealAttribute
@@ -1,31 +1,55 @@
+
 SetRealAttribute()
-FUNKTION:
-     int SetRealAttribute(string attr, int val)
+******************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-ARGUMENTE:
-     attr       - zu setzendes Attribut
-     val        - Wert
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Setzt den realen Wert des Attributes, d.h. das reine Attribut,
-     wenn moeglich. Lediglich eine Alias-Methode fuer SetAttr().
-     (QueryAttribute() gibt also val + etwaige Offsets/Modifier zurueck)
+   int SetRealAttribute(string attr, int val)
 
-RUeCKGABEWERT:
-     Den gesetzten Wert.
 
-BEMERKUNGEN:
-     Bitte nicht auf Spieler anwenden!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-Last modified: Tue Jul 27 20:00:20 2004 by Muadib
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - zu setzendes Attribut
+   val        - Wert
+
+
+BESCHREIBUNG
+============
+
+   Setzt den realen Wert des Attributes, d.h. das reine Attribut,
+   wenn moeglich. Lediglich eine Alias-Methode fuer SetAttr().
+   (QueryAttribute() gibt also val + etwaige Offsets/Modifier zurueck)
+
+
+RUeCKGABEWERT
+=============
+
+   Den gesetzten Wert.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte nicht auf Spieler anwenden!
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/lfun/SetSpellFatigue b/doc/lfun/SetSpellFatigue
index c34627b..f2c5861 100644
--- a/doc/lfun/SetSpellFatigue
+++ b/doc/lfun/SetSpellFatigue
@@ -1,75 +1,99 @@
-SetSpellFatigue
 
-FUNKTION:
-    public varargs int SetSpellFatigue(int duration, string key)
+SetSpellFatigue()
+*****************
 
-DEFINIERT IN:
-    /std/living/skills.c
-    /std/player/skills.c
-    /sys/living/skills.h
 
-ARGUMENTE:
-    int duration: Wie lang soll die Spruchermuedung andauern?
-    string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
-                  oder 0 fuer die globale Spruchermuedung.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion dient zum Verwalten von individuellen Spruchermuedungen
-    (Spellfatigue, Spruchsperren).
-    Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
-    Sprueche oder Gruppen von Spruechen gestalten.
+   public varargs int SetSpellFatigue(int duration, string key)
 
-    <duration> ist die Zeit (in Sekunden), welche die Spruchermuedung
-    anhalten soll (nicht die Endzeit).
 
-    Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
-    gesetzt (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls die
-    unter <key> gespeicherte Spruchermuedung.
-    Setzt man einen Eintrag ohne Angabe von <key> bedeutet dies damit auch,
-    dass der Wert von P_NEXT_SPELL_TIME geaendert wird.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    -1    Der Eintrag <key> ist noch nicht abgelaufen, es wurde _keine_
-          neue Spruchermuedung/-Sperre gespeichert.
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
 
-    >0    Eintrag wurde gespeichert, Rueckgabewert ist die Zeit, zu der die
-          Sperre ablaeuft.
 
-BEISPIELE:
-    Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
-    Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
-    Gruppe ausgefuehrt wurde.
-    if (CalculateSpellSuccess(...) > x) {
-      // Spellfatigue setzen (und Erfolg pruefen!)
-      if (ob->SetSpellFatigue(5, "extrasuess") > -1) {
-        tell_object(ob, "Du fuetterst " + enemy->Name(WEN) + " mit einem "
-          "Stueck suesser Schokotorte.\n");
-        ...
-      }
-      else {
-        // Sauerei! Zu ermuedet fuer diesen Spruch. Fehlermdeldung ...
-      }
-    }
-    Dieses setzt natuerlich voraus, dass alle anderen Sprueche der Gruppe
-    "extrasuess" den gleichen <key> pruefen und setzen.
-    (Will man vor CalculateSpellSuccess() wissen, ob der Spruch ueberhaupt
-     gewirkt werden duerfte, sollte man hierzu dann CheckSpellFatigue()
-     verwenden.)
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-    Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
-    unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
-    auf volle 2s aufgerundet werden. (Dies ist nicht der Fall bei NPC.)
-    Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
-    werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
-    ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
-    Wuensche habt, sprecht den/die Mudlib-EM an.
+   int duration: Wie lang soll die Spruchermuedung andauern?
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
 
-SIEHE AUCH:
-    CheckSpellFatigue(L), DeleteSpellFatigue(L)
-    P_NEXT_SPELL_TIME
-    spruchermuedung
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Verwalten von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+   Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
+   Sprueche oder Gruppen von Spruechen gestalten.
+
+   <duration> ist die Zeit (in Sekunden), welche die Spruchermuedung
+   anhalten soll (nicht die Endzeit).
+
+   Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
+   gesetzt (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls die
+   unter <key> gespeicherte Spruchermuedung.
+   Setzt man einen Eintrag ohne Angabe von <key> bedeutet dies damit auch,
+   dass der Wert von P_NEXT_SPELL_TIME geaendert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   -1    Der Eintrag <key> ist noch nicht abgelaufen, es wurde _keine_
+         neue Spruchermuedung/-Sperre gespeichert.
+
+   >0    Eintrag wurde gespeichert, Rueckgabewert ist die Zeit, zu der die
+         Sperre ablaeuft.
+
+
+BEISPIELE
+=========
+
+   Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
+   Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
+   Gruppe ausgefuehrt wurde.
+   if (CalculateSpellSuccess(...) > x) {
+     // Spellfatigue setzen (und Erfolg pruefen!)
+     if (ob->SetSpellFatigue(5, "extrasuess") > -1) {
+       tell_object(ob, "Du fuetterst " + enemy->Name(WEN) + " mit einem "
+         "Stueck suesser Schokotorte.\n");
+       ...
+     }
+     else {
+       // Sauerei! Zu ermuedet fuer diesen Spruch. Fehlermdeldung ...
+     }
+   }
+   Dieses setzt natuerlich voraus, dass alle anderen Sprueche der Gruppe
+   "extrasuess" den gleichen <key> pruefen und setzen.
+   (Will man vor CalculateSpellSuccess() wissen, ob der Spruch ueberhaupt
+    gewirkt werden duerfte, sollte man hierzu dann CheckSpellFatigue()
+    verwenden.)
+
+
+BEMERKUNGEN
+===========
+
+   Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
+   unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
+   auf volle 2s aufgerundet werden. (Dies ist nicht der Fall bei NPC.)
+   Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
+   werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
+   ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
+   Wuensche habt, sprecht den/die Mudlib-EM an.
+
+
+SIEHE AUCH
+==========
+
+   CheckSpellFatigue(L), DeleteSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
 27.03.2010, Zesstra
-
diff --git a/doc/lfun/SetStorageRoom b/doc/lfun/SetStorageRoom
index 4655a1e..f1d66a5 100644
--- a/doc/lfun/SetStorageRoom
+++ b/doc/lfun/SetStorageRoom
@@ -1,74 +1,108 @@
+
 SetStorageRoom()
+****************
 
-FUNKTION:
-        void SetStorageRoom(string store);
 
-DEFINIERT IN:
-        /std/room/shop.c
+FUNKTION
+========
 
-ARGUMENTE:
-        store
-          Dateiname des Lagers, in dem die aufgekauften Objekte aufbewahrt
-          werden.
+   void SetStorageRoom(string store);
 
-RUeCKGABEWERT:
-        keiner
 
-BESCHREIBUNG:
-        Mit dieser Funktion wird dem Laden bekannt gegeben, welches Objekt
-        als Lager fuer angekaufte Objekte dienen soll. Jeder Laden muss
-        explizit einen eigenen Lagerraum setzen, ansonsten wird ein 
-        Laufzeitfehler ausgeloest und der Laden ist nicht ladbar.
-        
-        Das Speicherobjekt sollte /std/store.c erben, da dort einige
-        Aufraeumfunktionen definiert sind. Entscheidend fuer selbige sind
-        die Properties P_MIN_STOCK und P_STORE_CONSUME.
+DEFINIERT IN
+============
 
-BEISPIELE:
-        Der Raum 'myladen.c' koennte etwa so aussehen:
-          
-          // myladen.c
-          inherit "/std/shop";
-          #include <properties.h>
-          
-          protected void create() {
-            ::create();
-            SetProp(...); // Beschreibung wie bei normalen Raeumen
-            SetStorageRoom("/d/beispiel/mystore");
-            AddFixedObject("/items/fackel");
-          }
+   /std/room/shop.c
 
-        In diesem Laden wird nun die Standardfackel als mengenmaessig 
-        unbegrenzter Artikel verkauft.
 
-        Der zugehoerige Lagerraum 'mystore.c' kann dann im einfachsten Fall
-        so aussehen:
-          
-          // mystore.c
-          inherit "/std/store";
-          #include <rooms.h>  // Fuer AddItem-Konstanten
-          
-          protected void create() {
-            ::create();
-            // KEINE weiteren Beschreibungen!
-            // 1. erbt der Speicher keine Beschreibungsmodule,
-            // 2. sollen da eh nur Sachen und keine Spieler rein!
-            AddItem("/items/schaufel", REFRESH_REMOVE);
-          }
-        
-        Der Laden verkauft nun auch Schaufeln, jedoch nur eine pro Reset.
+ARGUMENTE
+=========
 
-HINWEISE:        
-        Fuer standardmaessig verkaufte Waren beachte man den Unterschied 
-        zwischen den Funktionen AddItem() und AddFixedObject().
-        Die erstgenannte Funktion ist im Lager zu verwenden, letztere jedoch
-        im Laden.
+   store
+     Dateiname des Lagers, in dem die aufgekauften Objekte aufbewahrt
+     werden.
 
-SIEHE AUCH:
-        Allgemeines:  laden
-        Funktionen:   AddItem(L), AddFixedObject(L), RemoveFixedObject(L) 
-        Basisobjekte: /std/store.c
-        Properties:   P_MIN_STOCK, P_STORE_CONSUME
 
-----------------------------------------------------------------------------
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird dem Laden bekannt gegeben, welches Objekt
+   als Lager fuer angekaufte Objekte dienen soll. Jeder Laden muss
+   explizit einen eigenen Lagerraum setzen, ansonsten wird ein
+   Laufzeitfehler ausgeloest und der Laden ist nicht ladbar.
+
+
+
+   Das Speicherobjekt sollte /std/store.c erben, da dort einige
+   Aufraeumfunktionen definiert sind. Entscheidend fuer selbige sind
+   die Properties P_MIN_STOCK und P_STORE_CONSUME.
+
+
+BEISPIELE
+=========
+
+   Der Raum 'myladen.c' koennte etwa so aussehen:
+
+
+
+     // myladen.c
+     inherit "/std/shop";
+     #include <properties.h>
+
+
+
+     protected void create() {
+       ::create();
+       SetProp(...); // Beschreibung wie bei normalen Raeumen
+       SetStorageRoom("/d/beispiel/mystore");
+       AddFixedObject("/items/fackel");
+     }
+
+   In diesem Laden wird nun die Standardfackel als mengenmaessig
+   unbegrenzter Artikel verkauft.
+
+   Der zugehoerige Lagerraum 'mystore.c' kann dann im einfachsten Fall
+   so aussehen:
+
+
+
+     // mystore.c
+     inherit "/std/store";
+     #include <rooms.h>  // Fuer AddItem-Konstanten
+
+
+
+     protected void create() {
+       ::create();
+       // KEINE weiteren Beschreibungen!
+       // 1. erbt der Speicher keine Beschreibungsmodule,
+       // 2. sollen da eh nur Sachen und keine Spieler rein!
+       AddItem("/items/schaufel", REFRESH_REMOVE);
+     }
+
+
+
+   Der Laden verkauft nun auch Schaufeln, jedoch nur eine pro Reset.
+
+HINWEISE:
+   Fuer standardmaessig verkaufte Waren beachte man den Unterschied
+   zwischen den Funktionen AddItem() und AddFixedObject(). Die
+   erstgenannte Funktion ist im Lager zu verwenden, letztere jedoch im
+   Laden.
+
+
+SIEHE AUCH
+==========
+
+   Allgemeines:  laden
+   Funktionen:   AddItem(L), AddFixedObject(L), RemoveFixedObject(L)
+   Basisobjekte: /std/store.c
+   Properties:   P_MIN_STOCK, P_STORE_CONSUME
+
 Last modified: 19-Jun-2015, Arathorn
diff --git a/doc/lfun/SetTimedAttrModifier b/doc/lfun/SetTimedAttrModifier
index 5804823..5ab39dd 100644
--- a/doc/lfun/SetTimedAttrModifier
+++ b/doc/lfun/SetTimedAttrModifier
@@ -1,92 +1,113 @@
+
 SetTimedAttrModifier()
-FUNKTION:
-     int SetTimedAttrModifier(string key, mapping modifier, 
-                              int outdated, object dependent, mixed notify) 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-ARGUMENTE:
-     key	-	in P_TIMED_ATTR_MOD vorzunehmender oder zu 
-                        aendernder Eintrag
-     modifier   -       Mapping mit den Attributveraenderungen
-     outdated   -       Zeitpunkt zu dem die Attributveraenderungen
-                        ablaufen sollen in Sekunden seit dem
-                        1. Jan 1970, 0.0:0 GMT oder 0
-     dependent  -       Objekt dessen Existenz eine Bedingung fuer die
-                        Attributveraenderung sein soll oder 0
-     notify     -       Objekt oder File das mittels 
-                        NotifyTimedAttrModExpired ueber
-                        den Attributablauf informiert werden soll
-
-BESCHREIBUNG:
-     Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
-     modifiziert und update_max_sp_and_hp aufgerufen.
-     Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
-     besonderes Augenmerk zu legen.
-
-     Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
-     welcher die Attribute des Livings um die in modifier stehenden Offsets
-     veraendert.
-
-     Diese Veraenderung ist solange aktiv bis entweder die in outdated
-     stehende Zeit ueberschritten ist oder das in dependent uebergebene
-     Objekt nicht mehr existiert.
-     Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
-     und kann durch DeleteTimedAttrModifier geloescht werden.
-     Laeuft die Attributveraenderung ab, so wird der in notify angegebene
-     Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon 
-     benachrichtigt.
-     Der Funktion NotifyTimedAttrModExpired wird als Argument der key
-     der abgelaufenen Attributveraenderung uebergeben.
-
-BEISPIELE:
-     Ein NPC kann einen Spieler auf die folgende Weise solange die
-     Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
-     ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
-     wurde.
-
-       player->SetTimedAttrModifier( player->query_real_name(),
-                                     ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
-                                     time()+3600,
-                                     this_object(),
-                                     this_object()
-                                   );
-
-     Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
-     durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.
-
-       void NotifyTimedAttrModExpired(string str)
-       {
-           // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
-           // gerade abgelaufen ist. Also Meldungsausgabe an
-           // previous_object().
-           tell_object(previous_object()
-               ,"Da hast Du aber nochmal Glueck gehabt.\n");
-       }
-
-
-RUeCKGABEWERT:
-     TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
-                                   eines fehlenden modifier-Arguments oder
-                                   eines bereits abgelaufenen
-                                   outdatet-Arguments
-     TATTR_OK                -     Im Erfolgsfall
-
-     Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
-
-SIEHE AUCH:
-     Attribute:  QueryAttribute(), SetAttribute()
-                 SetRealAttribute(), QueryRealAttribute(),
-                 QueryAttributeOffset(),
-                 UpdateAttributes()
-     Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
-     Callback:   NotifyTimedAttrModExpired()
-     Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
-		 P_X_ATTR_MOD, P_M_ATTR_MOD
-		 P_TIMED_ATTR_MOD
-     Sonstiges:  /std/living/attributes.c
-
-LETZTE Aenderung:
-15.02.2009, Zesstra
+**********************
 
 
+FUNKTION
+========
+
+   int SetTimedAttrModifier(string key, mapping modifier,
+                            int outdated, object dependent, mixed notify)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       in P_TIMED_ATTR_MOD vorzunehmender oder zu
+                      aendernder Eintrag
+   modifier   -       Mapping mit den Attributveraenderungen
+   outdated   -       Zeitpunkt zu dem die Attributveraenderungen
+                      ablaufen sollen in Sekunden seit dem
+                      1. Jan 1970, 0.0:0 GMT oder 0
+   dependent  -       Objekt dessen Existenz eine Bedingung fuer die
+                      Attributveraenderung sein soll oder 0
+   notify     -       Objekt oder File das mittels
+                      NotifyTimedAttrModExpired ueber
+                      den Attributablauf informiert werden soll
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
+   modifiziert und update_max_sp_and_hp aufgerufen.
+   Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
+   besonderes Augenmerk zu legen.
+
+   Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
+   welcher die Attribute des Livings um die in modifier stehenden Offsets
+   veraendert.
+
+   Diese Veraenderung ist solange aktiv bis entweder die in outdated
+   stehende Zeit ueberschritten ist oder das in dependent uebergebene
+   Objekt nicht mehr existiert.
+   Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
+   und kann durch DeleteTimedAttrModifier geloescht werden.
+   Laeuft die Attributveraenderung ab, so wird der in notify angegebene
+   Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon
+   benachrichtigt.
+   Der Funktion NotifyTimedAttrModExpired wird als Argument der key
+   der abgelaufenen Attributveraenderung uebergeben.
+
+
+BEISPIELE
+=========
+
+   Ein NPC kann einen Spieler auf die folgende Weise solange die
+   Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
+   ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
+   wurde.
+
+     player->SetTimedAttrModifier( player->query_real_name(),
+                                   ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
+                                   time()+3600,
+                                   this_object(),
+                                   this_object()
+                                 );
+
+   Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
+   durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.
+
+     void NotifyTimedAttrModExpired(string str)
+     {
+         // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
+         // gerade abgelaufen ist. Also Meldungsausgabe an
+         // previous_object().
+         tell_object(previous_object()
+             ,"Da hast Du aber nochmal Glueck gehabt.\n");
+     }
+
+
+RUeCKGABEWERT
+=============
+
+   TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
+                                 eines fehlenden modifier-Arguments oder
+                                 eines bereits abgelaufenen
+                                 outdatet-Arguments
+   TATTR_OK                -     Im Erfolgsfall
+
+   Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   Attribute:  QueryAttribute(), SetAttribute()
+               SetRealAttribute(), QueryRealAttribute(),
+               QueryAttributeOffset(),
+               UpdateAttributes()
+   Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
+   Callback:   NotifyTimedAttrModExpired()
+   Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
+               P_X_ATTR_MOD, P_M_ATTR_MOD
+               P_TIMED_ATTR_MOD
+   Sonstiges:  /std/living/attributes.c
+
+LETZTE Aenderung: 15.02.2009, Zesstra
diff --git a/doc/lfun/ShowDoors b/doc/lfun/ShowDoors
index ecd36b0..c315632 100644
--- a/doc/lfun/ShowDoors
+++ b/doc/lfun/ShowDoors
@@ -1,23 +1,46 @@
+
 ShowDoors()
+***********
 
-FUNKTION:
-	void ShowDoors()
 
-ARGUMENTE:
-	Keine.
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Zeigt alle Sehertor an, die der Seher (this_player()) schon kennt.
-	Falls in seiner Umgebung ein Tor steht, so wird dieses eingeklammert.
+   void ShowDoors()
 
-RUECKGABEWERT:
-	Keiner.
 
-BEMERKUNGEN:
-    Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+ARGUMENTE
+=========
 
-BEISPIELE:
-    /d/seher/portale/sehertormaster->ShowDoors()
+   Keine.
 
-SIEHE AUCH:
-    DiscoverDoor, DoorIsKnown, Teleport, GetDoorsMapping
+
+BESCHREIBUNG
+============
+
+   Zeigt alle Sehertor an, die der Seher (this_player()) schon kennt.
+   Falls in seiner Umgebung ein Tor steht, so wird dieses eingeklammert.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   /d/seher/portale/sehertormaster->ShowDoors()
+
+
+SIEHE AUCH
+==========
+
+   DiscoverDoor, DoorIsKnown, Teleport, GetDoorsMapping
diff --git a/doc/lfun/ShowPropList b/doc/lfun/ShowPropList
index 64bc4cb..41599d7 100644
--- a/doc/lfun/ShowPropList
+++ b/doc/lfun/ShowPropList
@@ -1,49 +1,74 @@
+
 ShowPropList()
+**************
 
-FUNKTION:
-     void ShowPropList(string *props);
 
-DEFINIERT IN:
-     /std/thing/util.c
+FUNKTION
+========
 
-ARGUMENTE:
-     props
-          Array von Strings mit den Namen der Properties, die ausgegeben
-          werden sollen.
+   void ShowPropList(string *props);
 
-BESCHREIBUNG:
-     Gibt die Inhalte der in props angegebenen Properties aus.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Sei test.c folgendes Programm:
+   /std/thing/util.c
 
-     inherit "std/thing";
-     inherit "std/thing/util";
 
-     create() {
-       ::create();
+ARGUMENTE
+=========
 
-       SetProp(P_SHORT, "Kurz");
-       SetProp(P_NAME, ({ "Name", "Namens", "Namen", "Namen" }));
-       SetProp("me", this_object() );
-     }
+   props
+        Array von Strings mit den Namen der Properties, die ausgegeben
+        werden sollen.
 
-     Mit xcall test->ShowPropList( ({ P_SHORT, P_NAME, "me" }) ); erhielte
-     man dann folgende Ausgabe:
 
-     *short: "Kurz"
-     *name: ({ "Name", "Namens", "Namen", "Namen" })
-     *me: OBJ(/players/wargon/test#12345)
+BESCHREIBUNG
+============
 
-BEMERKUNGEN:
-     Mit dem Befehl xprops des MGtools lassen sich uebrigens saemtliche
-     Properties eines Objekte auf einen Schlag ausgeben.
+   Gibt die Inhalte der in props angegebenen Properties aus.
 
-SIEHE AUCH:
-     /std/ting/util.c
 
-----------------------------------------------------------------------------
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Sei test.c folgendes Programm:
+
+   inherit "std/thing";
+   inherit "std/thing/util";
+
+   create() {
+     ::create();
+
+     SetProp(P_SHORT, "Kurz");
+     SetProp(P_NAME, ({ "Name", "Namens", "Namen", "Namen" }));
+     SetProp("me", this_object() );
+   }
+
+   Mit xcall test->ShowPropList( ({ P_SHORT, P_NAME, "me" }) ); erhielte
+   man dann folgende Ausgabe:
+
+   *short: "Kurz"
+   *name: ({ "Name", "Namens", "Namen", "Namen" })
+   *me: OBJ(/players/wargon/test#12345)
+
+
+BEMERKUNGEN
+===========
+
+   Mit dem Befehl xprops des MGtools lassen sich uebrigens saemtliche
+   Properties eines Objekte auf einen Schlag ausgeben.
+
+
+SIEHE AUCH
+==========
+
+   /std/ting/util.c
+
 Last modified: Wed May 8 10:25:26 1996 by Wargon
diff --git a/doc/lfun/SkillResTransfer b/doc/lfun/SkillResTransfer
index 6983eea..128cea7 100644
--- a/doc/lfun/SkillResTransfer
+++ b/doc/lfun/SkillResTransfer
@@ -1,28 +1,48 @@
+
 SkillResTransfer()
+******************
 
-FUNKTION:
-     protected void SkillResTransfer(mapping from_M, mapping to_M)
 
-DEFINIERT IN:
-     /std/living/skill_utils
+FUNKTION
+========
 
-ARGUMENTE:
-     mapping from_M: Mapping mit zu kopierenden Werten
-     mapping to_M:   Zielmapping
+   protected void SkillResTransfer(mapping from_M, mapping to_M)
 
-BESCHREIBUNG:
-     Interne Methode, die zB (!) waehrend der Ausfuehrung von Attack() durch
-     Skills oder P_TMP_ATTACK_MOD geaenderte Werte selektiert in das
-     Hauptangriffsmapping uebertraegt.
 
-     Derzeit werden folgende Werte kopiert:
-     SI_SKILLDAMAGE, SI_SKILLDAMAGE_MSG, SI_SKILLDAMAGE_MSG2,
-     SI_SKILLDAMAGE_TYPE, SI_SPELL
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     * wird an mehreren Stellen, nicht nur der living/combat verwendet
+   /std/living/skill_utils
 
-SIEHE AUCH:
-     P_TMP_ATTACK_MOD, UseSkill (Waffenfaehigkeiten)
+
+ARGUMENTE
+=========
+
+   mapping from_M: Mapping mit zu kopierenden Werten
+   mapping to_M:   Zielmapping
+
+
+BESCHREIBUNG
+============
+
+   Interne Methode, die zB (!) waehrend der Ausfuehrung von Attack() durch
+   Skills oder P_TMP_ATTACK_MOD geaenderte Werte selektiert in das
+   Hauptangriffsmapping uebertraegt.
+
+   Derzeit werden folgende Werte kopiert:
+   SI_SKILLDAMAGE, SI_SKILLDAMAGE_MSG, SI_SKILLDAMAGE_MSG2,
+   SI_SKILLDAMAGE_TYPE, SI_SPELL
+
+
+BEMERKUNGEN
+===========
+
+   * wird an mehreren Stellen, nicht nur der living/combat verwendet
+
+
+SIEHE AUCH
+==========
+
+   P_TMP_ATTACK_MOD, UseSkill (Waffenfaehigkeiten)
 
 18.Jul 2014 Gloinson
diff --git a/doc/lfun/SpellAttack b/doc/lfun/SpellAttack
index 0e24fd9..ba00347 100644
--- a/doc/lfun/SpellAttack
+++ b/doc/lfun/SpellAttack
@@ -1,71 +1,97 @@
+
 SpellAttack()
+*************
 
-FUNKTION:
-        void SpellAttack(object enemy)
 
-ARGUMENTE:
-        enemy: Der Feind.
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wird in jedem Heartbeat eines NPCs ausgefuehrt,
-        falls nicht P_DISABLE_ATTACK gesetzt ist (Paralyse).
-        Standardmaessig tut diese Funktion nichts, aber man kann sie
-        ueberschreiben, damit in jedem Heartbeat Angriffe mit Spells
-        ausgefuehrt werden.
+   void SpellAttack(object enemy)
 
-        Man sollte hierbei ein random() einbauen, damit der NPC nicht
-        in jedem Heartbeat auch wirklich einen Angriff ausfuehrt.
-        Ausserdem sollte man auch fuer eventuelle Ausgaben sorgen.
 
-RUECKGABEWERT:
-        Keiner.
+ARGUMENTE
+=========
 
-BEMERKUNG:
-        Die AttackChats, die mittels SetAttackChats gesetzt werden
-        koennen, macht im Grunde nichts anderes, aber Chats sind halt
-        keine Angriffe. :-)
+   enemy: Der Feind.
 
-BEISPIELE:
-        Im Grunde ist dieses simple Beispiel eine Nachbildung von
-        Attack-Chats und soll dementsprechend nur der Anschauung dienen.
 
-        void SpellAttack(object enemy) 
-        {
-          // mit 80% Wahrscheinlichkeit wird nichts gemacht.
-          switch(random(5))
-          {
-            case 0: 
-              write("Der Ork tritt Dir in den Hintern.\n");
-              return;
-            case 1: 
-              write("Der Ork bruellt: Lebend kommst Du hier nicht raus!\n");
-              return;
-            case 2:
-              write("Der Ork blutet schon aus mehreren Wunden.\n");
-              return;
-            case 3:
-              write(knirsch(enemy));
-              return;
-            default:
-              return;
-          }
-        }
+BESCHREIBUNG
+============
 
-        string knirsch(object enemy)
-        {
-           if (objectp(enemy))
-             helm = enemy->QueryArmourByType(AT_HELMET);
-           if (objectp(helm))
-           {
-             helm->Damage(1);
-             return "Der Ork beschaedigt Deinen Helm!\n";
-           }
-           else
-             return ""; // keine Meldung
-        }
+   Diese Funktion wird in jedem Heartbeat eines NPCs ausgefuehrt,
+   falls nicht P_DISABLE_ATTACK gesetzt ist (Paralyse).
+   Standardmaessig tut diese Funktion nichts, aber man kann sie
+   ueberschreiben, damit in jedem Heartbeat Angriffe mit Spells
+   ausgefuehrt werden.
 
-SIEHE AUCH:
-        "Attack", "SetAttackChats", /std/npc/combat.c
+   Man sollte hierbei ein random() einbauen, damit der NPC nicht
+   in jedem Heartbeat auch wirklich einen Angriff ausfuehrt.
+   Ausserdem sollte man auch fuer eventuelle Ausgaben sorgen.
 
-LETZTE AENDERUNG:
- Don, 27.02.2003, 12:50:00 von Hirudo
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNG
+=========
+
+   Die AttackChats, die mittels SetAttackChats gesetzt werden
+   koennen, macht im Grunde nichts anderes, aber Chats sind halt
+   keine Angriffe. :-)
+
+
+BEISPIELE
+=========
+
+   Im Grunde ist dieses simple Beispiel eine Nachbildung von
+   Attack-Chats und soll dementsprechend nur der Anschauung dienen.
+
+   void SpellAttack(object enemy)
+   {
+     // mit 80% Wahrscheinlichkeit wird nichts gemacht.
+     switch(random(5))
+     {
+       case 0:
+         write("Der Ork tritt Dir in den Hintern.\n");
+         return;
+       case 1:
+         write("Der Ork bruellt: Lebend kommst Du hier nicht raus!\n");
+         return;
+       case 2:
+         write("Der Ork blutet schon aus mehreren Wunden.\n");
+         return;
+       case 3:
+         write(knirsch(enemy));
+         return;
+       default:
+         return;
+     }
+   }
+
+   string knirsch(object enemy)
+   {
+      if (objectp(enemy))
+        helm = enemy->QueryArmourByType(AT_HELMET);
+      if (objectp(helm))
+      {
+        helm->Damage(1);
+        return "Der Ork beschaedigt Deinen Helm!\n";
+      }
+      else
+        return ""; // keine Meldung
+   }
+
+
+SIEHE AUCH
+==========
+
+   "Attack", "SetAttackChats", /std/npc/combat.c
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 27.02.2003, 12:50:00 von Hirudo
diff --git a/doc/lfun/SpellDefend b/doc/lfun/SpellDefend
index 79537d5..22b038c 100644
--- a/doc/lfun/SpellDefend
+++ b/doc/lfun/SpellDefend
@@ -1,43 +1,71 @@
+
 SpellDefend()
-FUNKTION:
-     public int SpellDefend(object caster,mapping sinfo);
+*************
 
-DEFINIERT IN:
-     /std/living/combat.c
 
-ARGUMENTE:
-     object caster	- Gegner
-     mapping sinfo	- Zusatzinformationen zum Spell
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Ueber den Skill SK_SPELL_DEFEND mit den Aufrufparametern
-       SI_ENEMY    : <caster>
-     und
-       SI_SKILLARG : <sinfo>
-     wird eine Abwehrchance in 0.01%-Schritten fuer einen
-     Spell ermittelt, also 0% - 100% bzw. als Rueckgabewert
-     0 - 10000.
-     
-     Weiterhin wird automatisch P_MAGIC_RESISTANCE_OFFSET und der Skill
-     SK_SPELL_DEFEND beruecksichtigt.
+   public int SpellDefend(object caster,mapping sinfo);
 
-RUeCKGABEWERT:
-     Die Abwehrchance in 0.01%-Schritten.
-     
-     Fuer Spieler wird dieser Rueckgabewert auf 3333 maximal, also 33,33%
-     Abwehrmoeglichkeit beschraenkt.
 
-BEMERKUNGEN:
-     Die Spellbooks muessen selbst auf die Auswertung dieser Funktion
-     achten! Dies geschieht nur im Falle von TryGlobalAttackSpell()
-     und bei Spells fuer NPCs mittels P_SPELLS automatisch!
+DEFINIERT IN
+============
 
-     Bitte bei NPCs nicht pauschal 100% / 10000 zurueckgeben. Danke.
+   /std/living/combat.c
 
-SIEHE AUCH:
-     Verwandt:     P_MAGIC_RESISTANCE_OFFSET
-     Aehnlich:     P_NOMAGIC
-     Generell:     TryGlobalAttackSpell, /std/spellbook.c
-     Sonstiges:    UseSkill, SK_SPELL_DEFEND
+
+ARGUMENTE
+=========
+
+   object caster      - Gegner
+   mapping sinfo      - Zusatzinformationen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Ueber den Skill SK_SPELL_DEFEND mit den Aufrufparametern
+     SI_ENEMY    : <caster>
+   und
+     SI_SKILLARG : <sinfo>
+   wird eine Abwehrchance in 0.01%-Schritten fuer einen
+   Spell ermittelt, also 0% - 100% bzw. als Rueckgabewert
+   0 - 10000.
+
+
+
+   Weiterhin wird automatisch P_MAGIC_RESISTANCE_OFFSET und der Skill
+   SK_SPELL_DEFEND beruecksichtigt.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Abwehrchance in 0.01%-Schritten.
+
+
+
+   Fuer Spieler wird dieser Rueckgabewert auf 3333 maximal, also 33,33%
+   Abwehrmoeglichkeit beschraenkt.
+
+
+BEMERKUNGEN
+===========
+
+   Die Spellbooks muessen selbst auf die Auswertung dieser Funktion
+   achten! Dies geschieht nur im Falle von TryGlobalAttackSpell()
+   und bei Spells fuer NPCs mittels P_SPELLS automatisch!
+
+   Bitte bei NPCs nicht pauschal 100% / 10000 zurueckgeben. Danke.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:     P_MAGIC_RESISTANCE_OFFSET
+   Aehnlich:     P_NOMAGIC
+   Generell:     TryGlobalAttackSpell, /std/spellbook.c
+   Sonstiges:    UseSkill, SK_SPELL_DEFEND
 
 29.Dez 2007 Gloinson
diff --git a/doc/lfun/SpellInform b/doc/lfun/SpellInform
index 369b201..ce8fdbd 100644
--- a/doc/lfun/SpellInform
+++ b/doc/lfun/SpellInform
@@ -1,31 +1,51 @@
-SpellInform
 
-FUNKTION:
-        void SpellInform(caster,spell,sinfo);
+SpellInform()
+*************
 
-DEFINIERT IN:
-        selber zu definieren
 
-ARGUMENTE:
-        pl
-          Das Lebewesen, das erfolgreich gezaubert hat.
-        spell
-          Der Name des gezauberten Spells
-        sinfo
-          Das komplette Spellmapping des gezauberten Spells
+FUNKTION
+========
 
-BESCHREIBUNG:
-        Diese Funktion wird vom Spellbuch einer Gilde in der Umgebung
-        (Environment) eines Lebewesens aufgerufen, wenn immer das Lebewesen
-        einen Spell _erfolgreich_ gezaubert hat.
-        Bemerkung: Bitte vermeiden, aufwaendige Sachen in der Funktion zu
-        machen, da sonst u.U. deswegen Gilden anfangen zu buggen. Falls es
-        sein muss, macht dann lieber einen call_out mit 2s Wartezeit.
+   void SpellInform(caster,spell,sinfo);
 
-RUeCKGABEWERT:
-        keiner
 
-SIEHE AUCH:
-        
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   selber zu definieren
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das erfolgreich gezaubert hat.
+   spell
+     Der Name des gezauberten Spells
+   sinfo
+     Das komplette Spellmapping des gezauberten Spells
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom Spellbuch einer Gilde in der Umgebung
+   (Environment) eines Lebewesens aufgerufen, wenn immer das Lebewesen
+   einen Spell _erfolgreich_ gezaubert hat.
+   Bemerkung: Bitte vermeiden, aufwaendige Sachen in der Funktion zu
+   machen, da sonst u.U. deswegen Gilden anfangen zu buggen. Falls es
+   sein muss, macht dann lieber einen call_out mit 2s Wartezeit.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   ----------------------------------------------------------------------------
+
 16.04.2007, Zesstra
diff --git a/doc/lfun/Start b/doc/lfun/Start
index 89f63ef..e0b1070 100644
--- a/doc/lfun/Start
+++ b/doc/lfun/Start
@@ -1,25 +1,44 @@
+
 Start()
+*******
 
-FUNKTION:
-     varargs void Start(int pos);
 
-DEFINIERT IN:
-     /std/transport.c
+FUNKTION
+========
 
-ARGUMENTE:
-     pos
-          Fahrplanstation, an der begonnen werden soll.
+   varargs void Start(int pos);
 
-BESCHREIBUNG:
-     Diese Funktion schickt den Transporter auf die Strecke. Dabei beginnt
-     der Weg an der mit pos bezeichneten Stelle im Fahrplan. Default ist 0,
-     d.h. der Transporter beginnt seinen Weg an der ersten Fahrplanposition.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Halt(), /std/transport.c
+   /std/transport.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   pos
+        Fahrplanstation, an der begonnen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion schickt den Transporter auf die Strecke. Dabei beginnt
+   der Weg an der mit pos bezeichneten Stelle im Fahrplan. Default ist 0,
+   d.h. der Transporter beginnt seinen Weg an der ersten Fahrplanposition.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   Halt(), /std/transport.c
+
 Last modified: Wed May 8 10:25:30 1996 by Wargon
diff --git a/doc/lfun/StopHuntFor b/doc/lfun/StopHuntFor
index 738b920..e09d9fa 100644
--- a/doc/lfun/StopHuntFor
+++ b/doc/lfun/StopHuntFor
@@ -1,52 +1,77 @@
+
 StopHuntFor()
+*************
 
-FUNKTION:
-  varargs int StopHuntFor(object arg,int silent);
 
-DEFINIERT IN:
-  /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-  arg
-    Der Gegner, welcher nicht mehr bekaempft werden soll.
-  silent
-    Flag, welches gesetzt anzeigt, dass die beiden Ex-Streithaehne
-    ueber das einseitige Friedensangebot nicht informiert werden
-    sollen.
+   varargs int StopHuntFor(object arg,int silent);
 
-RUeCKGABEWERT:
-  Flag: Bei 0 war der Gegner nicht auffindbar, bei 1 Erfolg.
 
-BESCHREIBUNG:
-  Mit dieser Funktion kann man ein Lebewesen <arg> als Gegner
-  austragen. Im Normalfall erhalten sowohl das aktuelle Objekt, als
-  auch der Gegner eine Information darueber. Dies kann jedoch mit dem
-  gesetzten Flag <silent> unterbunden werden.
-  Es ist auch moeglich, auf diese Meldung Einfluss zu nehmen, indem
-  man die Funktion StopHuntText() ueberschreibt, welche dafuer
-  verantwortlich ist.
-  Achtung: Um zwischen beiden Streithaehnen Frieden zu schliessen,
-  muss der eine Gegner jeweils bei dem anderen ausgetragen werden. Ein
-  einzelnes StopHuntFor() ist sozusagen nur ein einseitiges
-  Friedensangebot.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-  Soll ein Viech unter bestimmten Umstaenden nicht angreifbar sein, ist in
-  keinem Fall StopHuntFor() im Defend() zu verwenden, sondern P_NO_ATTACK.
-  Grund: Stoppt man unliebsame Kaempfe jeweils am Anfang vom Defend, kann ein
-  Gegner gefahrlos Angriffsspells ausfuehren (und ueben), ohne dass die Gefahr
-  besteht, dass der NPC zurueckschlaegt.
+   /std/living/combat.c
 
-BEISPIELE:
-  Man will aus irgendeinem Grund den Kampf zwischen sich und Gegner enemy
-  einstellen:
-  ...
-  StopHuntFor(enemy); // enemy nicht mehr bekaempfen
-  enemy->StopHuntFor(this_object()); // enemy soll mich nicht bekaempfen.
-  ...
 
-SIEHE AUCH:
-  StopHuntText(), SelectEnemy(), QueryEnemies(), IsEnemy()
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
-16.03.2008, Zesstra 
+   arg
+     Der Gegner, welcher nicht mehr bekaempft werden soll.
+   silent
+     Flag, welches gesetzt anzeigt, dass die beiden Ex-Streithaehne
+     ueber das einseitige Friedensangebot nicht informiert werden
+     sollen.
+
+
+RUeCKGABEWERT
+=============
+
+   Flag: Bei 0 war der Gegner nicht auffindbar, bei 1 Erfolg.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man ein Lebewesen <arg> als Gegner
+   austragen. Im Normalfall erhalten sowohl das aktuelle Objekt, als
+   auch der Gegner eine Information darueber. Dies kann jedoch mit dem
+   gesetzten Flag <silent> unterbunden werden.
+   Es ist auch moeglich, auf diese Meldung Einfluss zu nehmen, indem
+   man die Funktion StopHuntText() ueberschreibt, welche dafuer
+   verantwortlich ist.
+   Achtung: Um zwischen beiden Streithaehnen Frieden zu schliessen,
+   muss der eine Gegner jeweils bei dem anderen ausgetragen werden. Ein
+   einzelnes StopHuntFor() ist sozusagen nur ein einseitiges
+   Friedensangebot.
+
+
+BEMERKUNGEN
+===========
+
+   Soll ein Viech unter bestimmten Umstaenden nicht angreifbar sein, ist in
+   keinem Fall StopHuntFor() im Defend() zu verwenden, sondern P_NO_ATTACK.
+   Grund: Stoppt man unliebsame Kaempfe jeweils am Anfang vom Defend, kann ein
+   Gegner gefahrlos Angriffsspells ausfuehren (und ueben), ohne dass die Gefahr
+   besteht, dass der NPC zurueckschlaegt.
+
+
+BEISPIELE
+=========
+
+   Man will aus irgendeinem Grund den Kampf zwischen sich und Gegner enemy
+   einstellen:
+   ...
+   StopHuntFor(enemy); // enemy nicht mehr bekaempfen
+   enemy->StopHuntFor(this_object()); // enemy soll mich nicht bekaempfen.
+   ...
+
+
+SIEHE AUCH
+==========
+
+   StopHuntText(), SelectEnemy(), QueryEnemies(), IsEnemy()
+
+16.03.2008, Zesstra
diff --git a/doc/lfun/StopHuntText b/doc/lfun/StopHuntText
index 1ca8cfb..fca271b 100644
--- a/doc/lfun/StopHuntText
+++ b/doc/lfun/StopHuntText
@@ -1,58 +1,77 @@
+
 StopHuntText()
+**************
 
-FUNKTION:
-	void StopHuntText(object arg);
 
-DEFINIERT IN:
-	/std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	arg
-	  Der Gegner, welcher nicht mehr bekaempft wird.
+   void StopHuntText(object arg);
 
-BESCHREIBUNG:
-	Mit der Funktion StopHuntFor() kann man ein Lebewesen als Gegner
-	austragen. Dabei erhalten sowohl der Gegner, als auch das Lebewesen,
-	welches (einseitig!) Frieden schliesst, jeweils eine Meldung, sofern
-	man dies nicht mittels eines Flags unterbindet.
-	Es ist nun moeglich, auf diese Meldung Einfluss zu nehmen, indem
-	man die Funktion StopHuntText() ueberschreibt, welche dafuer
-	verantwortlich ist.
 
-BEISPIEL:
-	Ein Lebewesen moechte einen Kampf sofort abbrechen, wenn es von
-	einem Frosch angegriffen wird:
-	  int Defend(int dam,mixed dam_type,mixed spell,object enemy)
-	  { if(enemy&&enemy->QueryProp(P_FROG))
-	    { if(StopHuntFor(enemy))
-              { // wenn Frosch angreifen will, der noch kein Gegner war
-                tell_object(arg,
-         this_object()->Name(WER)+" kaempft nicht mit Dir.\n"
-	+"Wahrscheinlich werden Froesche verschont.\n");
-	        tell_object(this_object(),
-	 "Der bloede Frosch wollte Dich doch tatsaechlich angreifen.\n");
-              }
-	      enemy->StopHuntFor(this_object(),1);
-              return 0;
-            }
-	    return::Defend(dam,dam_type,spell,enemy);
-	  }
-	  // wird nur aufgerufen, wenn der Gegner irgendwann Frosch wurde
-	  void StopHuntText(object arg)
-	  { tell_object(arg,
-	 this_object()->Name(WER)+" jagd Dich nicht mehr.\n"
-	+"Wahrscheinlich werden Froesche verschont.\n");
-	    tell_object(this_object(),
-	"Dein Gegner ist doch tatsaechlich ploetzlich Frosch geworden!\n");
-	  }
-	Warum braucht man nun das erste StopHuntFor(), wenn doch Gegner erst
-	in ::Defend() eingetragen werden, welches doch gar nicht ausgefuehrt
-	wird, wenn der Gegner ein Frosch ist? Man beachte hierbei, dass der
-	Gegner ja auch waehrend des Kampfes oder waehrend der Feindschaft
-	irgendwann Frosch werden koennte und dann schon Gegner war.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	StopHuntFor(), SelectEnemy(), QueryEnemies(), IsEnemy()
+   /std/living/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   arg
+     Der Gegner, welcher nicht mehr bekaempft wird.
+
+
+BESCHREIBUNG
+============
+
+   Mit der Funktion StopHuntFor() kann man ein Lebewesen als Gegner
+   austragen. Dabei erhalten sowohl der Gegner, als auch das Lebewesen,
+   welches (einseitig!) Frieden schliesst, jeweils eine Meldung, sofern
+   man dies nicht mittels eines Flags unterbindet.
+   Es ist nun moeglich, auf diese Meldung Einfluss zu nehmen, indem
+   man die Funktion StopHuntText() ueberschreibt, welche dafuer
+   verantwortlich ist.
+
+
+BEISPIEL
+========
+
+   Ein Lebewesen moechte einen Kampf sofort abbrechen, wenn es von
+   einem Frosch angegriffen wird:
+     int Defend(int dam,mixed dam_type,mixed spell,object enemy)
+     { if(enemy&&enemy->QueryProp(P_FROG))
+       { if(StopHuntFor(enemy))
+         { // wenn Frosch angreifen will, der noch kein Gegner war
+           tell_object(arg,
+    this_object()->Name(WER)+" kaempft nicht mit Dir.\n"
+   +"Wahrscheinlich werden Froesche verschont.\n");
+           tell_object(this_object(),
+    "Der bloede Frosch wollte Dich doch tatsaechlich angreifen.\n");
+         }
+         enemy->StopHuntFor(this_object(),1);
+         return 0;
+       }
+       return::Defend(dam,dam_type,spell,enemy);
+     }
+     // wird nur aufgerufen, wenn der Gegner irgendwann Frosch wurde
+     void StopHuntText(object arg)
+     { tell_object(arg,
+    this_object()->Name(WER)+" jagd Dich nicht mehr.\n"
+   +"Wahrscheinlich werden Froesche verschont.\n");
+       tell_object(this_object(),
+   "Dein Gegner ist doch tatsaechlich ploetzlich Frosch geworden!\n");
+     }
+   Warum braucht man nun das erste StopHuntFor(), wenn doch Gegner erst
+   in ::Defend() eingetragen werden, welches doch gar nicht ausgefuehrt
+   wird, wenn der Gegner ein Frosch ist? Man beachte hierbei, dass der
+   Gegner ja auch waehrend des Kampfes oder waehrend der Feindschaft
+   irgendwann Frosch werden koennte und dann schon Gegner war.
+
+
+SIEHE AUCH
+==========
+
+   StopHuntFor(), SelectEnemy(), QueryEnemies(), IsEnemy()
+
 Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/lfun/SuggestArticle b/doc/lfun/SuggestArticle
index 7a4ba5c..31c2047 100644
--- a/doc/lfun/SuggestArticle
+++ b/doc/lfun/SuggestArticle
@@ -1,35 +1,57 @@
+
 SuggestArticle()
+****************
 
-FUNKTION:
-     varargs int SuggestArticle(string name);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     name
-          Der Name zur Entscheidungshilfe.
+   varargs int SuggestArticle(string name);
 
-BESCHREIBUNG:
-     Diese Funktion versucht herauszufinden, ob der Artikel zu diesem Objekt
-     ein unbestimmter oder besser ein bestimmter Artikel sein sollte. Die
-     Vorgehensweise ist folgende: Gibt es in der Umgebung dieses Objektes
-     ein weiteres Objekt, das den Namen name besitzt, so wird ein
-     unbestimmter Artikel vorgeschlagen, ansonsten ein bestimmter.
 
-RUeCKGABEWERT:
-     0, wenn ein unbestimmter Artikel geeignet ist, ansonsten 1.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Der Vergleich erfolgt mittels der Property P_NAME. Um Erfolg zu haben,
-     sollte man diese Funktion daher in der Form
+   /std/thing/language.c
 
-     SuggestArticle(QueryProp(P_NAME))
 
-     aufrufen.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     QueryArticle(), name(), /std/thing/language.c
+   name
+        Der Name zur Entscheidungshilfe.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Funktion versucht herauszufinden, ob der Artikel zu diesem Objekt
+   ein unbestimmter oder besser ein bestimmter Artikel sein sollte. Die
+   Vorgehensweise ist folgende: Gibt es in der Umgebung dieses Objektes
+   ein weiteres Objekt, das den Namen name besitzt, so wird ein
+   unbestimmter Artikel vorgeschlagen, ansonsten ein bestimmter.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn ein unbestimmter Artikel geeignet ist, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Der Vergleich erfolgt mittels der Property P_NAME. Um Erfolg zu haben,
+   sollte man diese Funktion daher in der Form
+
+   SuggestArticle(QueryProp(P_NAME))
+
+   aufrufen.
+
+
+SIEHE AUCH
+==========
+
+   QueryArticle(), name(), /std/thing/language.c
+
 Last modified: Wed May 8 10:25:34 1996 by Wargon
diff --git a/doc/lfun/SwapRows b/doc/lfun/SwapRows
index 7d5d928..aa18364 100644
--- a/doc/lfun/SwapRows
+++ b/doc/lfun/SwapRows
@@ -1,40 +1,60 @@
 
 SwapRows()
+**********
 
 
-FUNKTION:
-    int SwapRows( object ob1, object ob2 )
+FUNKTION
+========
 
-DEFINIERT IN:
-    /std/living/team.c
+   int SwapRows( object ob1, object ob2 )
 
-ARGUMENTE:
-    ob1, ob2 - Spieler, die die Reihen tauschen sollen.
 
-BESCHREIBUNG:
-    Die angegebenen Spieler tauschen die Reihen.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-    1 bei erfolgreichem Tausch, 0 sonst.
+   /std/living/team.c
 
-BEMERKUNG:
-    Der Tausch wird nur durchgefuehrt, wenn die angegebenen Spieler auch
-    tatsaechlich im Team sind und damit kein NPC vor einen Spieler gestellt
-    wuerde.
-    Moechte man wissen, ob ein Spieler eine Reihe gewechselt hat, muss man
-    sich der Hilfe eines Hooks bedienen: H_HOOK_TEAMROWCHANGE
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_TEAM_LEADER, P_TEAM_ASSOC_MEMBERS,
-                    P_TEAM_NEWMEMBER
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   ob1, ob2 - Spieler, die die Reihen tauschen sollen.
+
+
+BESCHREIBUNG
+============
+
+   Die angegebenen Spieler tauschen die Reihen.
+
+
+RUECKGABEWERT
+=============
+
+   1 bei erfolgreichem Tausch, 0 sonst.
+
+
+BEMERKUNG
+=========
+
+   Der Tausch wird nur durchgefuehrt, wenn die angegebenen Spieler auch
+   tatsaechlich im Team sind und damit kein NPC vor einen Spieler gestellt
+   wuerde.
+   Moechte man wissen, ob ein Spieler eine Reihe gewechselt hat, muss man
+   sich der Hilfe eines Hooks bedienen: H_HOOK_TEAMROWCHANGE
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_LEADER, P_TEAM_ASSOC_MEMBERS,
+               P_TEAM_NEWMEMBER
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/TakeFlaw b/doc/lfun/TakeFlaw
index 7bfd03a..40d99a2 100644
--- a/doc/lfun/TakeFlaw
+++ b/doc/lfun/TakeFlaw
@@ -1,75 +1,100 @@
+
 TakeFlaw()
+**********
 
-FUNKTION:
-     varargs void TakeFlaw(object enemy); (Waffen)
-     varargs void TakeFlaw(mixed dam_types,mapping einfos) (Ruestungen)
 
-DEFINIERT IN:
-     /std/armour/combat.c,
-     /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   varargs void TakeFlaw(object enemy); (Waffen)
+   varargs void TakeFlaw(mixed dam_types,mapping einfos) (Ruestungen)
 
-BESCHREIBUNG:
-     Diese Funktion wird in Waffen und Ruestungen waehrend des Kampfes
-     aufgerufen. In einer Waffe erfolgt der Aufruf bei jedem Schlag mit
-     dieser Waffe, bei Ruestungen wird TakeFlaw() in einer zufaellig
-     ausgewaehlten getragenen Ruestung aufgerufen.
-     Waffen bekommen das Gegnerobjekt uebergeben, Ruestungen die erweiterten
-     DefendInfos (s. dort fuer Details). Aufgrund dieser Informationen kann
-     man den Schaden, den ein Gegenstand nimmt, flexibler gestalten (z.B. bei
-     einer Waffe in Abhaengigkeit von P_BODY des Gegners.)
 
-     Soweit man die Funktion nicht ueberlaedt, bewirkt sie nichts weiter als
-     das Erhoehen eines Zaehlers, der mit QueryFlaw() abgefragt werden kann.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     keiner
+   /std/armour/combat.c,
+   /std/weapon/combat.c
 
-BEMERKUNGEN:
-     Die Waffen-/ Ruestungsklasse wird nicht automatisch reduziert! Wenn
-     eine Waffe oder Ruestung sich abnutzen soll, muss man TakeFlaw()
-     ueberladen und dort entsprechend handeln, oder (fuer einfache
-     Faelle) die Property P_QUALITY setzen.
 
-BEISPIELE:
-     Eine Waffe, deren Waffenklasse alle 20 Schlaege um 1 abnimmt:
+ARGUMENTE
+=========
 
-     inherit "std/weapon";
+   keine
 
-     #include <properties.h>
-     #include <combat.h>
 
-     create()
-     {
-       /* Das Uebliche... */
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in Waffen und Ruestungen waehrend des Kampfes
+   aufgerufen. In einer Waffe erfolgt der Aufruf bei jedem Schlag mit
+   dieser Waffe, bei Ruestungen wird TakeFlaw() in einer zufaellig
+   ausgewaehlten getragenen Ruestung aufgerufen.
+   Waffen bekommen das Gegnerobjekt uebergeben, Ruestungen die erweiterten
+   DefendInfos (s. dort fuer Details). Aufgrund dieser Informationen kann
+   man den Schaden, den ein Gegenstand nimmt, flexibler gestalten (z.B. bei
+   einer Waffe in Abhaengigkeit von P_BODY des Gegners.)
+
+   Soweit man die Funktion nicht ueberlaedt, bewirkt sie nichts weiter als
+   das Erhoehen eines Zaehlers, der mit QueryFlaw() abgefragt werden kann.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Waffen-/ Ruestungsklasse wird nicht automatisch reduziert! Wenn
+   eine Waffe oder Ruestung sich abnutzen soll, muss man TakeFlaw()
+   ueberladen und dort entsprechend handeln, oder (fuer einfache
+   Faelle) die Property P_QUALITY setzen.
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, deren Waffenklasse alle 20 Schlaege um 1 abnimmt:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+
+   create()
+   {
+     /* Das Uebliche... */
+   }
+
+   TakeFlaw()
+   {
+     int flaw;
+
+     /* erst mal den Zaehler erhoehen... */
+     ::TakeFlaw();
+
+     /* jetzt den aktuellen Zaehlerstand abfragen */
+     flaw = QueryFlaw()[0];
+
+     /* Abzug nur jeden 20. Schlag */
+     if (!(flaw % 20)) {
+       /* So, jetzt fuer den Schaden sorgen. Hierfuer benutzt */
+       /* man am sichersten die eingebaute Funktion Damage() */
+       Damage(1);
      }
+   }
 
-     TakeFlaw()
-     {
-       int flaw;
+   Dieses einfache Beispiel haette natuerlich auch ueber ein
+   SetProp(P_QUALITY,20); im create() realisiert werden koennen.
 
-       /* erst mal den Zaehler erhoehen... */
-       ::TakeFlaw();
 
-       /* jetzt den aktuellen Zaehlerstand abfragen */
-       flaw = QueryFlaw()[0];
+SIEHE AUCH
+==========
 
-       /* Abzug nur jeden 20. Schlag */
-       if (!(flaw % 20)) {
-         /* So, jetzt fuer den Schaden sorgen. Hierfuer benutzt */
-         /* man am sichersten die eingebaute Funktion Damage() */
-         Damage(1);
-       }
-     }
+   QueryFlaw(), Damage(), DefendInfo, P_QUIALITY, /std/armour/combat.c,
+   /std/weapon/combat.c
 
-     Dieses einfache Beispiel haette natuerlich auch ueber ein
-     SetProp(P_QUALITY,20); im create() realisiert werden koennen.
-
-SIEHE AUCH:
-     QueryFlaw(), Damage(), DefendInfo, P_QUIALITY, /std/armour/combat.c,
-     /std/weapon/combat.c
-
-----------------------------------------------------------------------------
 Last modified: Thu May 22 10:30:10 1997 by Paracelsus
diff --git a/doc/lfun/TeamFlee b/doc/lfun/TeamFlee
index fb317a0..216fbbf 100644
--- a/doc/lfun/TeamFlee
+++ b/doc/lfun/TeamFlee
@@ -1,40 +1,60 @@
 
 TeamFlee()
+**********
 
 
-FUNKTION:
-        int TeamFlee()
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   int TeamFlee()
 
-ARGUMENTE:
-        keine
 
-BESCHREIBUNG:
-        Spieler wird zur Flucht in hintere Reihe veranlasst, falls er dies
-        eingestellt hat.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        1, falls der Spieler in eine hintere Reihe fliehen wollte und nach
-        dem Versuch nicht mehr in der ersten Reihe steht, sonst 0.
+   /std/living/team.c
 
-BEMERKUNGEN:
-        Beim Teamleiter fuehrt der Fluchtversuch dazu, dass sein Team nicht
-        mehr folgt.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Spieler wird zur Flucht in hintere Reihe veranlasst, falls er dies
+   eingestellt hat.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls der Spieler in eine hintere Reihe fliehen wollte und nach
+   dem Versuch nicht mehr in der ersten Reihe steht, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Beim Teamleiter fuehrt der Fluchtversuch dazu, dass sein Team nicht
+   mehr folgt.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/TeamMembers b/doc/lfun/TeamMembers
index 28ca93b..5971bfb 100644
--- a/doc/lfun/TeamMembers
+++ b/doc/lfun/TeamMembers
@@ -1,38 +1,58 @@
 
 TeamMembers()
+*************
 
 
-FUNKTION:
-        object *TeamMembers()
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   object *TeamMembers()
 
-ARGUMENTE:
-        keine
 
-BESCHREIBUNG:
-        Liefert Teammitglieder des Teams des Spielers.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        Array mit ALLEN Teammitgliedern.
+   /std/living/team.c
 
-BEMERKUNGEN:
-        Falls der Spieler in keinem Team ist, enthaelt das Array nur den
-        Spieler.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert Teammitglieder des Teams des Spielers.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit ALLEN Teammitgliedern.
+
+
+BEMERKUNGEN
+===========
+
+   Falls der Spieler in keinem Team ist, enthaelt das Array nur den
+   Spieler.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/TeamPrefix b/doc/lfun/TeamPrefix
index efbebb7..2cf1582 100644
--- a/doc/lfun/TeamPrefix
+++ b/doc/lfun/TeamPrefix
@@ -1,37 +1,56 @@
 
 TeamPrefix()
+************
 
 
-FUNKTION:
-        string TeamPrefix()
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   string TeamPrefix()
 
-ARGUMENTE:
-        keine
 
-BESCHREIBUNG:
-        Ergibt Team-Prefix eines Spielers.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        "[Team Teamname] ", falls der Spieler in einem Team ist,
-        ""                  sonst.
+   /std/living/team.c
 
-BEMERKUNGEN:
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-                    SelectNearEnemy, SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  teamkampf_intern
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Ergibt Team-Prefix eines Spielers.
+
+
+RUECKGABEWERT
+=============
+
+   "[Team Teamname] ", falls der Spieler in einem Team ist,
+   ""                  sonst.
+
+
+BEMERKUNGEN
+===========
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/Teleport b/doc/lfun/Teleport
index b902d07..ddddb89 100644
--- a/doc/lfun/Teleport
+++ b/doc/lfun/Teleport
@@ -1,28 +1,51 @@
+
 Teleport()
+**********
 
-FUNKTION:
-    int Teleport(string ziel)
 
-ARGUMENTE:
-    ziel: Nummer des Sehertors, zu dem teleportiert werden soll.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Teleportiert den Seher (this_player()) zu dem Tor mit der angegebenen
-    Nummer. Falls keine Nummer angegeben wird, wird mit ShowDoors() die
-    Liste der bekannten Tore angezeigt und auf die Eingabe einer Nummer
-    gewartet.
+   int Teleport(string ziel)
 
-RUECKGABEWERT:
-    0, falls der Seher nicht neben einem Tor steht, dass er kennt.
-    1  sonst.
 
-BEMERKUNGEN:
-    Der Seher muss in einem Raum stehen, in dem sich ein Sehertor befindet,
-    dass er kennt. Der Seher muss auch das angegebene Ziel kennen.
-    Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+ARGUMENTE
+=========
 
-BEISPIELE:
-    /d/seher/portale/sehertormaster->Teleport(1)
+   ziel: Nummer des Sehertors, zu dem teleportiert werden soll.
 
-SIEHE AUCH:
-    DiscoverDoor, DoorIsKnown, ShowDoors, GetDoorsMapping
+
+BESCHREIBUNG
+============
+
+   Teleportiert den Seher (this_player()) zu dem Tor mit der angegebenen
+   Nummer. Falls keine Nummer angegeben wird, wird mit ShowDoors() die
+   Liste der bekannten Tore angezeigt und auf die Eingabe einer Nummer
+   gewartet.
+
+
+RUECKGABEWERT
+=============
+
+   0, falls der Seher nicht neben einem Tor steht, dass er kennt.
+   1  sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Der Seher muss in einem Raum stehen, in dem sich ein Sehertor befindet,
+   dass er kennt. Der Seher muss auch das angegebene Ziel kennen.
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   /d/seher/portale/sehertormaster->Teleport(1)
+
+
+SIEHE AUCH
+==========
+
+   DiscoverDoor, DoorIsKnown, ShowDoors, GetDoorsMapping
diff --git a/doc/lfun/TestIgnore b/doc/lfun/TestIgnore
index 3e664c0..d1d2b95 100644
--- a/doc/lfun/TestIgnore
+++ b/doc/lfun/TestIgnore
@@ -1,66 +1,88 @@
+
 TestIgnore()
+************
 
-FUNKTION:
-     public int TestIgnore(string|string* arg)
 
-DEFINIERT IN:
-     /std/player/comm.c
+FUNKTION
+========
 
-ARGUMENTE:
-     arg
-         String oder Array von Strings, die getestet werden sollen,
-         Format jeweils: [spieler].aktion[.qualifizierer]
+   public int TestIgnore(string|string* arg)
 
-RUeCKGABEWERT:
-     0, wenn arg nicht ignoriert wird
-     MSG_IGNORED, wenn (min. ein Element von) arg ignoriert wird
 
-BESCHREIBUNG:
-     Es wird geprueft, ob der Spieler irgendeinen Eintrag auf seiner Liste
-     hat, der dazu fuehrt, dass <arg> ignoriert wird. Hierbei kommen je nach
-     den Angaben in <arg> folgende Regeln zum Tragen:
-     1) spieler
-        Wird der Spieler ignoriert?
-     2) .aktion
-        Ignoriert der Spieler .aktion, d.h. die Aktion komplett (OHNE
-        Qualifizierer)?
-     3) spieler.aktion
-        Ignoriert der Spieler spieler, .aktion oder spieler.aktion?
-     4) spieler.aktion.qualifizierer
-        Ignoriert der Spieler spieler, .aktion, spieler.aktion oder
-        spieler.aktion.qualifizierer?
-     5) .aktion.qualifizierer
-        Ignoriert der Spieler .aktion oder .aktion.qualifizierer?
+DEFINIERT IN
+============
 
-     Da TestIgnore() damit durchaus etwas aufwendiger sein kann, sollte
-     man dies nicht unnoetig oft aufrufen. (Braucht man das Ergebnis z.B.
-     kurz spaeter nochmal, koennte man das Ergebnis speichern.) Wird der
-     Qualifizierer nicht gebraucht, sollte man ihn weglassen.
+   /std/player/comm.c
 
-BEISPIEL:
-     if (!this_player()->TestIgnore("andy"))
-       tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
 
-     // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
-     // Spieler (this_player()) an einem anderen Spieler (target)
-     if (!target->TestIgnore( ({getuid(this_player()) + ".kratze",
-                                   getuid(this_player()) + ".kratz"}) ))
-     {
-       tell_object(target, this_player()->Name()+" kratzt dich.\n");
-       tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
-     }
-     else
-       tell_object(this_player(), target->Name()+" ignoriert dich.\n");
+ARGUMENTE
+=========
 
-     // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
-     // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
-     // an einem zu kurierenden Spieler (target)
-     if (target->TestIgnore(getuid(caster)+".kuriere.klerus"))
-       tell_object(caster, break_string(
-         target->Name()+" ignoriert deinen Versuch.", 78));
+   arg
+       String oder Array von Strings, die getestet werden sollen,
+       Format jeweils: [spieler].aktion[.qualifizierer]
 
-SIEHE AUCH:
-     P_IGNORE, AddIgnore, RemoveIgnore, TestIgnoreSimple, /std/player/comm.c
+
+RUeCKGABEWERT
+=============
+
+   0, wenn arg nicht ignoriert wird
+   MSG_IGNORED, wenn (min. ein Element von) arg ignoriert wird
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob der Spieler irgendeinen Eintrag auf seiner Liste
+   hat, der dazu fuehrt, dass <arg> ignoriert wird. Hierbei kommen je nach
+   den Angaben in <arg> folgende Regeln zum Tragen:
+   1) spieler
+      Wird der Spieler ignoriert?
+   2) .aktion
+      Ignoriert der Spieler .aktion, d.h. die Aktion komplett (OHNE
+      Qualifizierer)?
+   3) spieler.aktion
+      Ignoriert der Spieler spieler, .aktion oder spieler.aktion?
+   4) spieler.aktion.qualifizierer
+      Ignoriert der Spieler spieler, .aktion, spieler.aktion oder
+      spieler.aktion.qualifizierer?
+   5) .aktion.qualifizierer
+      Ignoriert der Spieler .aktion oder .aktion.qualifizierer?
+
+   Da TestIgnore() damit durchaus etwas aufwendiger sein kann, sollte
+   man dies nicht unnoetig oft aufrufen. (Braucht man das Ergebnis z.B.
+   kurz spaeter nochmal, koennte man das Ergebnis speichern.) Wird der
+   Qualifizierer nicht gebraucht, sollte man ihn weglassen.
+
+
+BEISPIEL
+========
+
+   if (!this_player()->TestIgnore("andy"))
+     tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
+
+   // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
+   // Spieler (this_player()) an einem anderen Spieler (target)
+   if (!target->TestIgnore( ({getuid(this_player()) + ".kratze",
+                                 getuid(this_player()) + ".kratz"}) ))
+   {
+     tell_object(target, this_player()->Name()+" kratzt dich.\n");
+     tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
+   }
+   else
+     tell_object(this_player(), target->Name()+" ignoriert dich.\n");
+
+   // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
+   // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
+   // an einem zu kurierenden Spieler (target)
+   if (target->TestIgnore(getuid(caster)+".kuriere.klerus"))
+     tell_object(caster, break_string(
+       target->Name()+" ignoriert deinen Versuch.", 78));
+
+
+SIEHE AUCH
+==========
+
+   P_IGNORE, AddIgnore, RemoveIgnore, TestIgnoreSimple, /std/player/comm.c
 
 26.04.2014 Zesstra
-
diff --git a/doc/lfun/TestIgnoreSimple b/doc/lfun/TestIgnoreSimple
index 542632e..c0ec76e 100644
--- a/doc/lfun/TestIgnoreSimple
+++ b/doc/lfun/TestIgnoreSimple
@@ -1,55 +1,77 @@
+
 TestIgnoreSimple()
+******************
 
-FUNKTION:
-     public int TestIgnoreSimple(string *arg)
 
-DEFINIERT IN:
-     /std/player/comm.c
+FUNKTION
+========
 
-ARGUMENTE:
-     arg
-         Liste von Strings, die getestet werden sollen
+   public int TestIgnoreSimple(string *arg)
 
-BESCHREIBUNG:
-     TestIgnoreSimple() prueft, ob der Spieler min. einen der uebergebenen
-     Eintraege auf seiner Ignoriereliste hat.
-     Falls man mehrere Eintraege pruefen muss/moechte, ist es schneller, alle
-     Eintraege in einem zu uebergeben anstatt fuer jeden einzeln 
-     TestIgnoreSimple() aufzurufen.
 
-RUeCKGABEWERT:
-     1, falls es mindestens eine Uebereinstimmungen von arg und der
-     Ignoriere-Liste des Spielers gibt.
-     0, sonst.
+DEFINIERT IN
+============
 
-BEISPIEL:
-     if (!this_player()->TestIgnoreSimple(({"andy"})))
-       tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
+   /std/player/comm.c
 
-     // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
-     // Spieler (this_player()) an einem anderen Spieler (target)
-     if (!target->TestIgnoreSimple(getuid(this_player()),
-                             getuid(this_player())+".kratz",
-                             getuid(this_player())+".kratze",
-                             ".kratz", ".kratze"}))) {
-       tell_object(target, this_player()->Name()+" kratzt dich.\n");
-       tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
-     } else
-       tell_object(this_player(), target->Name()+" ignoriert dich.\n");
 
-     // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
-     // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
-     // an einem zu kurierenden Spieler (target)
-     if (target->TestIgnoreSimple(({getuid(caster),
-                              getuid(caster)+".kuriere",
-                              getuid(caster)+".kuriere.klerus",
-                              ".kuriere",
-                              ".kuriere.klerus"})))
-       tell_object(caster, break_string(
-         target->Name()+" ignoriert deinen Versuch.", 78));
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     P_IGNORE, AddIgnore, RemoveIgnore, TestIgnore, /std/player/comm.c
+   arg
+       Liste von Strings, die getestet werden sollen
+
+
+BESCHREIBUNG
+============
+
+   TestIgnoreSimple() prueft, ob der Spieler min. einen der uebergebenen
+   Eintraege auf seiner Ignoriereliste hat.
+   Falls man mehrere Eintraege pruefen muss/moechte, ist es schneller, alle
+   Eintraege in einem zu uebergeben anstatt fuer jeden einzeln
+   TestIgnoreSimple() aufzurufen.
+
+
+RUeCKGABEWERT
+=============
+
+   1, falls es mindestens eine Uebereinstimmungen von arg und der
+   Ignoriere-Liste des Spielers gibt.
+   0, sonst.
+
+
+BEISPIEL
+========
+
+   if (!this_player()->TestIgnoreSimple(({"andy"})))
+     tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
+
+   // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
+   // Spieler (this_player()) an einem anderen Spieler (target)
+   if (!target->TestIgnoreSimple(getuid(this_player()),
+                           getuid(this_player())+".kratz",
+                           getuid(this_player())+".kratze",
+                           ".kratz", ".kratze"}))) {
+     tell_object(target, this_player()->Name()+" kratzt dich.\n");
+     tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
+   } else
+     tell_object(this_player(), target->Name()+" ignoriert dich.\n");
+
+   // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
+   // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
+   // an einem zu kurierenden Spieler (target)
+   if (target->TestIgnoreSimple(({getuid(caster),
+                            getuid(caster)+".kuriere",
+                            getuid(caster)+".kuriere.klerus",
+                            ".kuriere",
+                            ".kuriere.klerus"})))
+     tell_object(caster, break_string(
+       target->Name()+" ignoriert deinen Versuch.", 78));
+
+
+SIEHE AUCH
+==========
+
+   P_IGNORE, AddIgnore, RemoveIgnore, TestIgnore, /std/player/comm.c
 
 26.04.2014 Zesstra
-
diff --git a/doc/lfun/TestLimitViolation b/doc/lfun/TestLimitViolation
index 9344299..df9f7b2 100644
--- a/doc/lfun/TestLimitViolation
+++ b/doc/lfun/TestLimitViolation
@@ -1,21 +1,39 @@
+
 TestLimitViolation()
-FUNKTION:
-      status TestLimitViolation(mapping check)
+********************
 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-PARAMETER:
-     check	- Mapping mit Attributen: ([<attr>:<wert>])
 
-BESCHREIBUNG:
-     Prueft, ob die Summe der in check enthaltenen Modifikatoren die Summe
-     aller Modifikatoren im Spieler ueber den zugelassenen Grenzwert hebt.
-     
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
-     P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+FUNKTION
+========
 
-13.Jun.2004, Muadib
\ No newline at end of file
+   status TestLimitViolation(mapping check)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   check      - Mapping mit Attributen: ([<attr>:<wert>])
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob die Summe der in check enthaltenen Modifikatoren die Summe
+   aller Modifikatoren im Spieler ueber den zugelassenen Grenzwert hebt.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/lfun/TriggerEvent b/doc/lfun/TriggerEvent
index 7b0089f..44dd2e4 100644
--- a/doc/lfun/TriggerEvent
+++ b/doc/lfun/TriggerEvent
@@ -1,59 +1,87 @@
 
-FUNKTION:
-     varargs int TriggerEvent(string eid, mixed data);
-
-DEFINIERT IN:
-     /p/daemon/eventd.c
-DEKLARIERT IN:
-     /sys/events.h
-
-ARGUMENTE:
-     string eid,
-       Die ID des Events, der ausgeloest werden soll.
-       Da dieser String fuer alle Events jeweils eindeutig sein muss, 
-       empfiehlt es sich, fuer eigene Events z.B. als Praefix den eigenen 
-       Magiernamen zu nehmen, z.B. "zesstra_vulkanausbruch".
-       ACHTUNG: IDs, die mit 'evt_lib_' beginnen, sind AUSSCHLIESSLICH der
-       Mudlib vorbehalten!
-
-     mixed data,
-       Daten, die jeder Lauscher uebergeben bekommt. Kann ein beliebiger
-       Datentyp sein. Ggf. ein Mapping oder Array benutzen.
-
-BESCHREIBUNG:
-     Der Event mit der ID 'eid' wird ausgeloest. Mit kurzer Verzoegerung
-     (meist 0-2s) werden alle fuer 'eid' registrierten Lauscher durch Aufruf
-     einer Funktion in ihnen informiert:
-     listener->fun(eid, triggerob, data);
-     'triggerob' ist hierbei das Objekt, welche TriggerEvent() gerufen hat,
-     'data' das, was das triggernde Objekte als Daten weiterverteilen moechte.
-     Die einzelnen fun() in den lauschenden Objekten muessen wissen, was sie
-     mit 'data' anfangen sollen. ;-)
-
-RUeCKGABEWERT:
-     1 fuer Erfolg, <=0 fuer Misserfolg.
-     1   - Erfolg, Event 'eid' wurde ausgeloest.
-     -1  - falsche Argumente wurden uebergeben
-     -2  - nicht-oeffentlicher Event und das triggernde Objekt wurde nicht
-           fuer diesen Event freigegeben (momentan gibt es noch keine
-           nicht-oeffentlichen Events)
-     -3  - Event 'eid' existiert nicht, d.h. es gibt keine Lauscher.
-     -4  - Es gibt zuviele nicht verarbeitete Events.
-
-BEMERKUNGEN:
+TriggerEvent()
+**************
 
 
-BEISPIELE:
-     1. Ein Waechter wird angegriffen:
-        EVENTD->TriggerEvent("xand_holzfaellerlager_angriff", 
-                             (["angreifer": enemy,
-                               "ort": environment(this_object()) ]) );
-        Alle anderen angemeldeten Waechter der Lagers werden nun informiert
-        und koennen ihrerseits reagieren (dem ersten Waechter zuhilfe kommen
-        oder auch die Lagertore schliessen).
+FUNKTION
+========
 
-SIEHE AUCH:
-     events, eventd, UnregisterEvent(), RegisterEvent()
+   varargs int TriggerEvent(string eid, mixed data);
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /p/daemon/eventd.c
+
+
+DEKLARIERT IN
+=============
+
+   /sys/events.h
+
+
+ARGUMENTE
+=========
+
+   string eid,
+     Die ID des Events, der ausgeloest werden soll.
+     Da dieser String fuer alle Events jeweils eindeutig sein muss,
+     empfiehlt es sich, fuer eigene Events z.B. als Praefix den eigenen
+     Magiernamen zu nehmen, z.B. "zesstra_vulkanausbruch".
+     ACHTUNG: IDs, die mit 'evt_lib_' beginnen, sind AUSSCHLIESSLICH der
+     Mudlib vorbehalten!
+
+   mixed data,
+     Daten, die jeder Lauscher uebergeben bekommt. Kann ein beliebiger
+     Datentyp sein. Ggf. ein Mapping oder Array benutzen.
+
+
+BESCHREIBUNG
+============
+
+   Der Event mit der ID 'eid' wird ausgeloest. Mit kurzer Verzoegerung
+   (meist 0-2s) werden alle fuer 'eid' registrierten Lauscher durch Aufruf
+   einer Funktion in ihnen informiert:
+   listener->fun(eid, triggerob, data);
+   'triggerob' ist hierbei das Objekt, welche TriggerEvent() gerufen hat,
+   'data' das, was das triggernde Objekte als Daten weiterverteilen moechte.
+   Die einzelnen fun() in den lauschenden Objekten muessen wissen, was sie
+   mit 'data' anfangen sollen. ;-)
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg, <=0 fuer Misserfolg.
+   1   - Erfolg, Event 'eid' wurde ausgeloest.
+   -1  - falsche Argumente wurden uebergeben
+   -2  - nicht-oeffentlicher Event und das triggernde Objekt wurde nicht
+         fuer diesen Event freigegeben (momentan gibt es noch keine
+         nicht-oeffentlichen Events)
+   -3  - Event 'eid' existiert nicht, d.h. es gibt keine Lauscher.
+   -4  - Es gibt zuviele nicht verarbeitete Events.
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   1. Ein Waechter wird angegriffen:
+      EVENTD->TriggerEvent("xand_holzfaellerlager_angriff",
+                           (["angreifer": enemy,
+                             "ort": environment(this_object()) ]) );
+      Alle anderen angemeldeten Waechter der Lagers werden nun informiert
+      und koennen ihrerseits reagieren (dem ersten Waechter zuhilfe kommen
+      oder auch die Lagertore schliessen).
+
+
+SIEHE AUCH
+==========
+
+   events, eventd, UnregisterEvent(), RegisterEvent()
+
 Last modified: 15.08.2007, Zesstra
diff --git a/doc/lfun/UnregisterEvent b/doc/lfun/UnregisterEvent
index 0de361a..6d9bfb7 100644
--- a/doc/lfun/UnregisterEvent
+++ b/doc/lfun/UnregisterEvent
@@ -1,49 +1,79 @@
 
-FUNKTION:
-     int UnregisterEvent(string eid, object listener);
+UnregisterEvent()
+*****************
 
-DEFINIERT IN:
-     /p/daemon/eventd.c
-DEKLARIERT IN:
-     /sys/events.h
 
-ARGUMENTE:
-     string eid,
-       Die ID des Events, vom dem man sich abmelden will.
-     object listener,
-       Das Objekt, das als Lauscher ausgetragen werden soll.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Objekt 'listener' wird als Lauscher dieses Events ausgetragen. Ab
-     diesem Moment wird es bei Events vom Typ 'eid' nicht mehr informiert.     
+   int UnregisterEvent(string eid, object listener);
 
-     Hat der Event 'eid' im Anschluss keine Lauscher mehr, wird er implizit
-     geloescht.
 
-RUeCKGABEWERT:
-     1 fuer Erfolg, <=0 fuer Misserfolg.
-     1   - Erfolg, 'listener' wurde eingetragen.
-     -1  - falsche Argumente uebergeben
-     -2  - 'listener' ist nicht fuer 'eid' registriert.
-    
-BEMERKUNGEN:
-     Wenn sich ein Objekt vor Zerstoerung nicht abmeldet, wird es ggf. beim
-     naechsten Auftreten von 'eid' automatisch ausgetragen.
-     Falls Blueprints nach Neuladen nicht automatisch angemeldet sein sollen,
-     sollten sie sich im remove() explizit abmelden.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     1. Ein Objekt moechte nicht mehr ueber Spielertode informiert werden:
-          EVENTD->UnregisterEvent(EVT_LIB_PLAYER_DEATH, this_object());
+   /p/daemon/eventd.c
 
-     2. Ein Objekt moechte sich bei Zerstoerung abmelden:
-       varargs int remove(int silent) {
-           ...
-           EVENTD->UnregisterEvent("zesstra_vulkanausbruch",this_object());
-       }
 
-SIEHE AUCH:
-     events, eventd, UnregisterEvent(), RegisterEvent()
+DEKLARIERT IN
+=============
 
-----------------------------------------------------------------------------
+   /sys/events.h
+
+
+ARGUMENTE
+=========
+
+   string eid,
+     Die ID des Events, vom dem man sich abmelden will.
+   object listener,
+     Das Objekt, das als Lauscher ausgetragen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Objekt 'listener' wird als Lauscher dieses Events ausgetragen. Ab
+   diesem Moment wird es bei Events vom Typ 'eid' nicht mehr informiert.
+
+   Hat der Event 'eid' im Anschluss keine Lauscher mehr, wird er implizit
+   geloescht.
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg, <=0 fuer Misserfolg.
+   1   - Erfolg, 'listener' wurde eingetragen.
+   -1  - falsche Argumente uebergeben
+   -2  - 'listener' ist nicht fuer 'eid' registriert.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn sich ein Objekt vor Zerstoerung nicht abmeldet, wird es ggf. beim
+   naechsten Auftreten von 'eid' automatisch ausgetragen.
+   Falls Blueprints nach Neuladen nicht automatisch angemeldet sein sollen,
+   sollten sie sich im remove() explizit abmelden.
+
+
+BEISPIELE
+=========
+
+   1. Ein Objekt moechte nicht mehr ueber Spielertode informiert werden:
+        EVENTD->UnregisterEvent(EVT_LIB_PLAYER_DEATH, this_object());
+
+   2. Ein Objekt moechte sich bei Zerstoerung abmelden:
+     varargs int remove(int silent) {
+         ...
+         EVENTD->UnregisterEvent("zesstra_vulkanausbruch",this_object());
+     }
+
+
+SIEHE AUCH
+==========
+
+   events, eventd, UnregisterEvent(), RegisterEvent()
+
 Last modified: 15.08.2007, Zesstra
diff --git a/doc/lfun/UnregisterHelperNPC b/doc/lfun/UnregisterHelperNPC
index de384fd..79c18f6 100644
--- a/doc/lfun/UnregisterHelperNPC
+++ b/doc/lfun/UnregisterHelperNPC
@@ -1,45 +1,72 @@
+
 UnregisterHelperNPC()
-FUNKTION:
-     public int UnregisterHelperNPC(object npc);
+*********************
 
-DEFINIERT IN:
-     /std/player/combat.c
 
-ARGUMENTE:
-     object npc
-       Objekt des helfenden NPC, der abgemeldet werden soll.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
-     wieder abgemeldet, wenn dieser dem Spieler ab jetzt nicht mehr hilft.
+   public int UnregisterHelperNPC(object npc);
 
-     Wenn ein Helfer-NPC zerstoert wird, ist der Aufruf nicht noetig.
-     Bleibt das Objekt des NPC aber existent, bitte auf jeden Fall wieder
-     ordentlich abmelden, da ansonsten ggf. der Spieler unnoetig blockiert
-     wird.
 
-RUeCKGABEWERT:
-     1, wenn die Abmeldung erfolgreich war.
-     0 sonst, z.B. wenn der NPC gar nicht als Helfer registriert war.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
-     auf 0.
+   /std/player/combat.c
 
-BEISPIELE:
-     1. Ein NPC, der dem Spieler nicht mehr helfen will und normalerweisen im
-        Raum verbleiben soll:
-     tell_object(spieler, "Ich mag Dich nicht mehr, Du bist doof!\n");
-     if (spieler->UnregisterHelperNPC(this_object()) != 1) {
-       // das ist ja bloed...
-       remove(0);
-     }
-     else {
-       tell_room(environment(),
-           Name()+" dreht " +spieler->Name(WEM) + " schmollend den Ruecken "
-           "zu.\n");
-     }
 
-SIEHE AUCH:
-    UnregisterHelperNPC()
-    P_HELPER_NPC
+ARGUMENTE
+=========
+
+   object npc
+     Objekt des helfenden NPC, der abgemeldet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
+   wieder abgemeldet, wenn dieser dem Spieler ab jetzt nicht mehr hilft.
+
+   Wenn ein Helfer-NPC zerstoert wird, ist der Aufruf nicht noetig.
+   Bleibt das Objekt des NPC aber existent, bitte auf jeden Fall wieder
+   ordentlich abmelden, da ansonsten ggf. der Spieler unnoetig blockiert
+   wird.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn die Abmeldung erfolgreich war.
+   0 sonst, z.B. wenn der NPC gar nicht als Helfer registriert war.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
+   auf 0.
+
+
+BEISPIELE
+=========
+
+   1. Ein NPC, der dem Spieler nicht mehr helfen will und normalerweisen im
+      Raum verbleiben soll:
+   tell_object(spieler, "Ich mag Dich nicht mehr, Du bist doof!\n");
+   if (spieler->UnregisterHelperNPC(this_object()) != 1) {
+     // das ist ja bloed...
+     remove(0);
+   }
+   else {
+     tell_room(environment(),
+         Name()+" dreht " +spieler->Name(WEM) + " schmollend den Ruecken "
+         "zu.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   UnregisterHelperNPC()
+   P_HELPER_NPC
diff --git a/doc/lfun/UnregisterHelperObject b/doc/lfun/UnregisterHelperObject
index eefd84e..d6242c9 100644
--- a/doc/lfun/UnregisterHelperObject
+++ b/doc/lfun/UnregisterHelperObject
@@ -1,47 +1,71 @@
-FUNKTION:
-     int UnregisterHelperObject(object helper, int type);
 
-DEFINIERT IN:
-     /std/living/helpers.c
+UnregisterHelperObject()
+************************
 
-ARGUMENTE:
-     object helper
-       Das Objekt, das als Hilfsobjekt deregistriert werden soll.
-     int type
-       Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
-       - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
-       - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung
 
-BESCHREIBUNG:
-     Das als Hilfsobjekt fuer bestimmte Aktivitaeten wie zum Beispiel Tauchen
-     oder Fliegen bei einem Lebewesen registrierte Objekt "helper" meldet
-     sich bei diesem ab.
-     Hinweis: fuer eine temporaer gueltige "Nicht-Zustaendigkeit" kaeme auch
-     in Frage, in dieser Zeit einfach "0" zurueckzugeben, statt sich
-     komplett abzumelden.
+FUNKTION
+========
 
-RUECKGABEWERTE:
-      1  Objekt wurde erfolgreich ausgetragen (HELPER_SUCCESS)
-     -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
-     -3  angegebenes Hilfsobjekt war gar nicht angemeldet
-         (HELPER_NOTHING_TO_UNREGISTER)
+   int UnregisterHelperObject(object helper, int type);
 
-BEISPIEL:
-     Eine luftgefuellte Blase hatte sich als Tauch-Helfer am Spieler
-     angemeldet, ist jetzt aber verbraucht und meldet sich daher ab:
 
-     // Austragen im Spielerobjekt
-     void BlaseAustragen() {
-       [...]
-       if ( TP->UnregisterHelperObject(ME, HELPER_TYPE_AQUATIC)
-            == HELPER_SUCCESS )
-         remove();
-     }
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Funktionen:  RegisterHelperObject()
-     Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
-     Sonstiges:   /sys/living/helpers.h
+   /std/living/helpers.c
+
+
+ARGUMENTE
+=========
+
+   object helper
+     Das Objekt, das als Hilfsobjekt deregistriert werden soll.
+   int type
+     Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
+     - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
+     - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung
+
+
+BESCHREIBUNG
+============
+
+   Das als Hilfsobjekt fuer bestimmte Aktivitaeten wie zum Beispiel Tauchen
+   oder Fliegen bei einem Lebewesen registrierte Objekt "helper" meldet
+   sich bei diesem ab.
+   Hinweis: fuer eine temporaer gueltige "Nicht-Zustaendigkeit" kaeme auch
+   in Frage, in dieser Zeit einfach "0" zurueckzugeben, statt sich
+   komplett abzumelden.
+
+
+RUECKGABEWERTE
+==============
+
+    1  Objekt wurde erfolgreich ausgetragen (HELPER_SUCCESS)
+   -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
+   -3  angegebenes Hilfsobjekt war gar nicht angemeldet
+       (HELPER_NOTHING_TO_UNREGISTER)
+
+
+BEISPIEL
+========
+
+   Eine luftgefuellte Blase hatte sich als Tauch-Helfer am Spieler
+   angemeldet, ist jetzt aber verbraucht und meldet sich daher ab:
+
+   // Austragen im Spielerobjekt
+   void BlaseAustragen() {
+     [...]
+     if ( TP->UnregisterHelperObject(ME, HELPER_TYPE_AQUATIC)
+          == HELPER_SUCCESS )
+       remove();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  RegisterHelperObject()
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+   Sonstiges:   /sys/living/helpers.h
 
 19.02.2013 Arathorn
-
diff --git a/doc/lfun/Unwear b/doc/lfun/Unwear
index 624c7fc..0ef0a2a 100644
--- a/doc/lfun/Unwear
+++ b/doc/lfun/Unwear
@@ -1,38 +1,65 @@
+
 Unwear()
-FUNKTION:
-     public int Unwear(object ob) 
+********
 
-DEFINIERT IN:
-     /std/living/clothing.c
 
-ARGUMENTE:
-     object ob
-       Die Ruestung oder Kleidung, die ausgezogen wird.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
-     oder das Kleidungsstueck <ob> aus.
-     ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
-     Ruestung/Kleidung aus P_ARMOURS bzw. P_CLOTHING ausgetragen wird. Es
-     finden zur Zeit keine Pruefungen statt, ob das Lebewesen den Gegenstand
-     ueberhaupt ausziehen kann. Genausowenig werden Funktionen wie
-     InformUnwear()/RemoveFunc() gerufen oder etwaige Stat-Boni deaktiviert.
+   public int Unwear(object ob)
 
-     Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
-     von diesem im Lebewesen gerufen zu werden.
 
-RUeCKGABEWERT:
-     1, wenn das Ausziehen erfolgreich war.
-     0 sonst.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
-     besten auch dann nicht.
+   /std/living/clothing.c
 
-SIEHE AUCH:
-     Wear(), WearArmour(), WearClothing(), UnwearArmour(), UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), FilterArmours()
 
-ZULETZT GEAeNDERT:
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung oder Kleidung, die ausgezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   oder das Kleidungsstueck <ob> aus.
+   ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung aus P_ARMOURS bzw. P_CLOTHING ausgetragen wird. Es
+   finden zur Zeit keine Pruefungen statt, ob das Lebewesen den Gegenstand
+   ueberhaupt ausziehen kann. Genausowenig werden Funktionen wie
+   InformUnwear()/RemoveFunc() gerufen oder etwaige Stat-Boni deaktiviert.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Ausziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/UnwearArmour b/doc/lfun/UnwearArmour
index 86b55da..b3c7d77 100644
--- a/doc/lfun/UnwearArmour
+++ b/doc/lfun/UnwearArmour
@@ -1,38 +1,65 @@
+
 UnwearArmour()
-FUNKTION:
-     public int UnwearArmour(object ob) 
+**************
 
-DEFINIERT IN:
-     /std/living/clothing.c
 
-ARGUMENTE:
-     object ob
-       Die Ruestung, die ausgezogen wird.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
-     <ob> aus.
-     ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
-     Ruestung/Kleidung aus P_ARMOURS ausgetragen wird. Es finden zur Zeit
-     keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
-     ausziehen kann. Genausowenig werden Funktionen wie
-     InformUnwear()/RemoveFunc() gerufen oder etwaige Stat-Boni deaktiviert.
+   public int UnwearArmour(object ob)
 
-     Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
-     von diesem im Lebewesen gerufen zu werden.
 
-RUeCKGABEWERT:
-     1, wenn das Ausziehen erfolgreich war.
-     0 sonst.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
-     besten auch dann nicht.
+   /std/living/clothing.c
 
-SIEHE AUCH:
-     Wear(), WearArmour(), WearClothing(), Unwear(), UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), FilterArmours()
 
-ZULETZT GEAeNDERT:
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung, die ausgezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   <ob> aus.
+   ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung aus P_ARMOURS ausgetragen wird. Es finden zur Zeit
+   keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
+   ausziehen kann. Genausowenig werden Funktionen wie
+   InformUnwear()/RemoveFunc() gerufen oder etwaige Stat-Boni deaktiviert.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Ausziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/UnwearClothing b/doc/lfun/UnwearClothing
index 0556654..fe0372b 100644
--- a/doc/lfun/UnwearClothing
+++ b/doc/lfun/UnwearClothing
@@ -1,38 +1,65 @@
+
 UnwearClothing()
-FUNKTION:
-     public int UnwearClothing(object ob) 
+****************
 
-DEFINIERT IN:
-     /std/living/clothing.c
 
-ARGUMENTE:
-     object ob
-       Das Kleidungsstuck, das ausgezogen wird.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Lebewesen, in dem diese Funktion gerufen wird, zieht das
-     Kleidungsstueck <ob> aus.
-     ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
-     Ruestung/Kleidung aus P_CLOTHING ausgetragen wird. Es finden zur Zeit
-     keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
-     ausziehen kann. Genausowenig werden Funktionen wie
-     InformUnwear()/RemoveFunc() gerufen.
+   public int UnwearClothing(object ob)
 
-     Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
-     von diesem im Lebewesen gerufen zu werden.
 
-RUeCKGABEWERT:
-     1, wenn das Ausziehen erfolgreich war.
-     0 sonst.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
-     besten auch dann nicht.
+   /std/living/clothing.c
 
-SIEHE AUCH:
-     Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), FilterArmours()
 
-ZULETZT GEAeNDERT:
+ARGUMENTE
+=========
+
+   object ob
+     Das Kleidungsstuck, das ausgezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht das
+   Kleidungsstueck <ob> aus.
+   ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung aus P_CLOTHING ausgetragen wird. Es finden zur Zeit
+   keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
+   ausziehen kann. Genausowenig werden Funktionen wie
+   InformUnwear()/RemoveFunc() gerufen.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Ausziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/UnwieldFunc b/doc/lfun/UnwieldFunc
index 9e4929c..0301182 100644
--- a/doc/lfun/UnwieldFunc
+++ b/doc/lfun/UnwieldFunc
@@ -1,52 +1,74 @@
+
 UnwieldFunc()
+*************
 
-FUNKTION:
-     int UnwieldFunc(object weapon, int info, object user);
 
-DEFINIERT IN:
-     eigenen Objekten, fuer /std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     weapon (object)
-          Die Waffe, die weggesteckt werden soll.
-     info (int)
-          Bei (info&M_SILENT) wird keine Meldung ueber das Wegstecken
-          ausgegeben.
-          Bei (info&M_NOCHECK) wird die Waffe auch weggesteckt, wenn
-          sie verflucht ist. Die tritt insbesondere dann auf, wenn der
-          Spieler, der die Waffe benutzt, stirbt und die Waffe in
-          die Leiche bewegt wird.
-     user (object)
-          Das Lebewesen, welches die Waffe gerade gezueckt hat und sie nun
-          ausziehen will.
+   int UnwieldFunc(object weapon, int info, object user);
 
-BESCHREIBUNG:
-     Hier koennen zusaetzliche Abfragen vorgenommen werden, ob sich die
-     Waffe <weapon> wegstecken laesst oder nicht.
 
-RUeCKGABEWERT:
-     0, wenn sich die Waffe nicht wegstecken laesst, ansonsten ungleich 0.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Verfluchte Waffen, die sich erst nach Entfernung des Fluches wegstecken
-     lassen, sollte man besser mit P_CURSED realisieren.
-     Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
-     keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
-     Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
-     nicht wegstecken laesst, etc.
-     Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
-     benutzt bitte InformWear().
-     Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
-     welches die Waffe gezueckt und wegstecken will.
-     Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
-     erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
-     Objekte zu aendern.
+   eigenen Objekten, fuer /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   weapon (object)
+        Die Waffe, die weggesteckt werden soll.
+   info (int)
+        Bei (info&M_SILENT) wird keine Meldung ueber das Wegstecken
+        ausgegeben.
+        Bei (info&M_NOCHECK) wird die Waffe auch weggesteckt, wenn
+        sie verflucht ist. Die tritt insbesondere dann auf, wenn der
+        Spieler, der die Waffe benutzt, stirbt und die Waffe in
+        die Leiche bewegt wird.
+   user (object)
+        Das Lebewesen, welches die Waffe gerade gezueckt hat und sie nun
+        ausziehen will.
+
+
+BESCHREIBUNG
+============
+
+   Hier koennen zusaetzliche Abfragen vorgenommen werden, ob sich die
+   Waffe <weapon> wegstecken laesst oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn sich die Waffe nicht wegstecken laesst, ansonsten ungleich 0.
+
+
+BEMERKUNGEN
+===========
+
+   Verfluchte Waffen, die sich erst nach Entfernung des Fluches wegstecken
+   lassen, sollte man besser mit P_CURSED realisieren.
+   Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
+   keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
+   Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
+   nicht wegstecken laesst, etc.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
+   benutzt bitte InformWear().
+   Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
+   welches die Waffe gezueckt und wegstecken will.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
 
 SIEHE AUCH
-     P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
-     DoWield(), DoUnwield(), InformWield(), InformUnwield(), 
-     UnwieldFunc, WieldFunc() 
-     /std/weapon/combat.c
+==========
 
-----------------------------------------------------------------------------
+   P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+   DoWield(), DoUnwield(), InformWield(), InformUnwield(),
+   UnwieldFunc, WieldFunc()
+   /std/weapon/combat.c
+
 02.02.2009, Zesstra
diff --git a/doc/lfun/UpdateAttributes b/doc/lfun/UpdateAttributes
index ef5a24f..cdebaa7 100644
--- a/doc/lfun/UpdateAttributes
+++ b/doc/lfun/UpdateAttributes
@@ -1,32 +1,52 @@
+
 UpdateAttributes()
-FUNKTION:
-     void UpdateAttributes()
+******************
 
-DEFINIERT IN:
-     /std/living/attributes.c
 
-BESCHREIBUNG:
-     Rechnet damit alle Attributmodifier der im Inventory befindlichen 
-     (P_X_ATTR_MOD, P_X_HEALTH_MOD) und getragenen/gezueckten 
-     (P_M_HEALTH_MOD, P_M_ATTR_MOD) Objekte und aller Attributoffsets 
-     zusammen und speichert sie in einer intern fuer Attribute 
-     verwendete Variablen.
-     Berechnet darauf basierend HP und SP neu.
-     
-     Die Bedingungen fuer die ueber P_TIMED_ATTR_MOD gesetzten 
-     Attributveraenderungen werden im Heartbeat in der Funktion
-     attribute_hb ueberprueft.
+FUNKTION
+========
 
-BEMERKUNGEN:
-     Sollte nach Einbringen neuer Modifikatorobjekte am Living gerufen
-     werden.
+   void UpdateAttributes()
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(), 
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
-09.05.2007 by Zesstra
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+BESCHREIBUNG
+============
+
+   Rechnet damit alle Attributmodifier der im Inventory befindlichen
+   (P_X_ATTR_MOD, P_X_HEALTH_MOD) und getragenen/gezueckten
+   (P_M_HEALTH_MOD, P_M_ATTR_MOD) Objekte und aller Attributoffsets
+   zusammen und speichert sie in einer intern fuer Attribute
+   verwendete Variablen.
+   Berechnet darauf basierend HP und SP neu.
+
+
+
+   Die Bedingungen fuer die ueber P_TIMED_ATTR_MOD gesetzten
+   Attributveraenderungen werden im Heartbeat in der Funktion
+   attribute_hb ueberprueft.
+
+
+BEMERKUNGEN
+===========
+
+   Sollte nach Einbringen neuer Modifikatorobjekte am Living gerufen
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+09.05.2007 by Zesstra
diff --git a/doc/lfun/UpdateResistanceStrengths b/doc/lfun/UpdateResistanceStrengths
index 48747b3..8ae9198 100644
--- a/doc/lfun/UpdateResistanceStrengths
+++ b/doc/lfun/UpdateResistanceStrengths
@@ -1,26 +1,43 @@
+
 UpdateResistanceStrengths()
+***************************
 
-FUNKTION:
-     public void UpdateResistanceStrengths()
 
-DEFINIERT IN:
-     /std/living/combat.c
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die Funktion wird intern mehrmals (durch Defend, AddResistanceModifier
-     und RemoveResistanceModifier) aufgerufen. In ihr wird das Resistenz-
-     mapping zusammengerechnet und Eintraege geloescht, deren Eintraege
-     invalid sind oder deren setzende Objekte geloescht wurden.
+   public void UpdateResistanceStrengths()
 
-RUeCKGABEWERT:
-     keiner
 
-SIEHE AUCH:
-     Berechnung:	CheckResistance(), Defend()
-     Modifikatoren:	AddResistanceModifier, RemoveResistanceModifier(),
-			P_RESISTANCE_MODIFIER
-     simple Resistenz:	P_RESISTANCE, P_VULNERABILITY
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion wird intern mehrmals (durch Defend, AddResistanceModifier
+   und RemoveResistanceModifier) aufgerufen. In ihr wird das Resistenz-
+   mapping zusammengerechnet und Eintraege geloescht, deren Eintraege
+   invalid sind oder deren setzende Objekte geloescht wurden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   Berechnung:        CheckResistance(), Defend()
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier(),
+                      P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 29.Apr 2002, Gloinson@MG
diff --git a/doc/lfun/UseHands b/doc/lfun/UseHands
index a4fbc8d..d11723c 100644
--- a/doc/lfun/UseHands
+++ b/doc/lfun/UseHands
@@ -1,37 +1,61 @@
-UseHands
-FUNKTION:
-     public varargs int UseHands(object ob, int num)
 
-DEFINIERT IN:
-     /std/living/combat.c
+UseHands()
+**********
 
-ARGUMENTE:
-     ob  - das Objekt, das die Haende belegen soll
-     num - die Anzahl der zu belegenden Haende    
 
-RUECKGABEWERT:
-     1, fuer Erfolg
-     0, sonst     
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Belegt, wenn moeglich Haende eines Livings durch ein bestimmtes
-     Objekt. Wenn die Anzahl der freien Haende (P_MAX_HANDS-P_USED_HANDS)
-     kleiner ist als "num", dann schlaegt diese Belegung fehl.
+   public varargs int UseHands(object ob, int num)
 
-BEISPIELE:
-     > halte seil fest
-     ...
-     this_player()->UseHands(this_object(),2);
-     ...
 
-     > lasse seil los
-     ...
-     this_player()->FreeHands(this_object());
-     ...
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_HANDS, P_HANDS_USED_BY
-     P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
-     FreeHands
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   ob  - das Objekt, das die Haende belegen soll
+   num - die Anzahl der zu belegenden Haende
+
+
+RUECKGABEWERT
+=============
+
+   1, fuer Erfolg
+   0, sonst
+
+
+BESCHREIBUNG
+============
+
+   Belegt, wenn moeglich Haende eines Livings durch ein bestimmtes
+   Objekt. Wenn die Anzahl der freien Haende (P_MAX_HANDS-P_USED_HANDS)
+   kleiner ist als "num", dann schlaegt diese Belegung fehl.
+
+
+BEISPIELE
+=========
+
+   > halte seil fest
+   ...
+   this_player()->UseHands(this_object(),2);
+   ...
+
+   > lasse seil los
+   ...
+   this_player()->FreeHands(this_object());
+   ...
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   FreeHands
 
 1.Feb.2004 Gloinson
diff --git a/doc/lfun/UseSkill b/doc/lfun/UseSkill
index 3b12bd8..4f3398d 100644
--- a/doc/lfun/UseSkill
+++ b/doc/lfun/UseSkill
@@ -1,48 +1,74 @@
+
 UseSkill()
-FUNKTION:
-    public varargs mixed UseSkill(string skill, mapping args)
+**********
 
-DEFINIERT IN:
-    /std/living/skills.c
 
-ARGUMENTE:
-    string skill     Skill-Name
-    mapping args     Argumente (veraenderte Skillmapping-Informationen)
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Benutzt einen Skill. Dieser Skill sollte (als grossgeschriebener Skill)
-    im Living vorliegen und das Living darf kein Geist sein.
-    
-    Die Argumente 'args' werden temporaer auf das Skillmapping des Living
-    addiert (also nur fuer diesen Aufruf und SI_INHERIT gueltig).
-    
-    Eine ausfuehrbare Skill-Funktion zum Skill wird in folgender
-    Reihenfolge bestimmt:
-    - eine gesetzte SI_CLOSURE nutzen
-    - ein gesetztes SI_SKILLFUNC in der gesetzten Gilde nutzen
-    - im Living die Funktion "StdSkill_"+skill (zB Waffenskills) nutzen
-    - QuerySkillAbility() nutzen
-    Die so bestimmte Skill-Funktion wird dann als SI_CLOSURE im Spieler
-    gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
-    Die Methode wird dann gerufen (der Skill also angewandt).
-    
-    Standardmaessig gibt ein UseSkill() also einfach den SI_SKILLABILITY-Wert
-    eines Skills zurueck, es sei denn, eine Funktion wurde fuer den Skill
-    an einer der oben genannten Stellen implementiert.
-    
-    Ein eventuell uebergeordneter Skill (SI_INHERIT) wird mit dem durch den
-    Aufruf der Skill-Funktion veraenderten Mapping mit UseSkill(skill, args)
-    ebenfalls noch ausgefuehrt, bevor das Resultat zurueckgegeben wird.
+   public varargs mixed UseSkill(string skill, mapping args)
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
-    Spellbook:      Learn, SpellSuccess, Erfolg, Misserfolg
 
-4. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string skill     Skill-Name
+   mapping args     Argumente (veraenderte Skillmapping-Informationen)
+
+
+BESCHREIBUNG
+============
+
+   Benutzt einen Skill. Dieser Skill sollte (als grossgeschriebener Skill)
+   im Living vorliegen und das Living darf kein Geist sein.
+
+
+
+   Die Argumente 'args' werden temporaer auf das Skillmapping des Living
+   addiert (also nur fuer diesen Aufruf und SI_INHERIT gueltig).
+
+
+
+   Eine ausfuehrbare Skill-Funktion zum Skill wird in folgender
+   Reihenfolge bestimmt:
+   - eine gesetzte SI_CLOSURE nutzen
+   - ein gesetztes SI_SKILLFUNC in der gesetzten Gilde nutzen
+   - im Living die Funktion "StdSkill_"+skill (zB Waffenskills) nutzen
+   - QuerySkillAbility() nutzen
+   Die so bestimmte Skill-Funktion wird dann als SI_CLOSURE im Spieler
+   gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
+   Die Methode wird dann gerufen (der Skill also angewandt).
+
+
+
+   Standardmaessig gibt ein UseSkill() also einfach den SI_SKILLABILITY-Wert
+   eines Skills zurueck, es sei denn, eine Funktion wurde fuer den Skill
+   an einer der oben genannten Stellen implementiert.
+
+
+
+   Ein eventuell uebergeordneter Skill (SI_INHERIT) wird mit dem durch den
+   Aufruf der Skill-Funktion veraenderten Mapping mit UseSkill(skill, args)
+   ebenfalls noch ausgefuehrt, bevor das Resultat zurueckgegeben wird.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+   Spellbook:      Learn, SpellSuccess, Erfolg, Misserfolg
+
+4. Okt 2011 Gloinson
diff --git a/doc/lfun/UseSpell b/doc/lfun/UseSpell
index ddf1c4d..b5cfbf7 100644
--- a/doc/lfun/UseSpell
+++ b/doc/lfun/UseSpell
@@ -1,77 +1,105 @@
+
 UseSpell()
-FUNKTION:
-    public varargs int UseSpell(string str, string spell)
+**********
 
-DEFINIERT IN:
-    /std/living/skills.c
 
-ARGUMENTE:
-    string str       Spell-Optionen
-    string spell     optionaler Spellname
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Benutzt einen Spell, dessen Spellname 'spell' ggf ueber query_verb()
-    ermittelt wird. Dieser Spell sollte (als kleingeschriebener
-    Skill/Spell) im Living vorliegen.
-    
-    Die Argumente 'str' werden als SI_SKILLARG temporaer in das
-    Skillmapping eingetragen (also nur fuer diesen Aufruf gueltig).
-    
-    Eine ausfuehrbare Spell-Funktion zum Spell wird in folgender
-    Reihenfolge bestimmt:
-    - eine gesetzte SI_CLOSURE nutzen
-    - "UseSpell" an einem gesetzten SI_SPELLBOOK nutzen
-    - "UseSpell" an der gesetzten P_GUILD nutzen
-      - [UseSpell der Gilde sucht iA ebenfalls nur den Spell am Spellbook]
-    - eine Closure mit Rueckgabewert 0 erstellen
-    Die so bestimmte Spell-Funktion wird dann als SI_CLOSURE im Spieler
-    gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
-    Die Methode wird dann gerufen (der Spell also angewandt).
+   public varargs int UseSpell(string str, string spell)
 
-    Standardmaessig gibt ein UseSpell() also 0 zurueck, es sei denn, eine
-    Funktion wurde fuer den Spell an einer der oben genannten Stellen
-    implementiert.
 
-    SI_INHERIT ist fuer Spells beim Aufruf wirkungslos (gilt aber bei
-    LearnSkill normal).
+DEFINIERT IN
+============
 
-    Ein Durchlauf von UseSpell durch den Spieler sieht in etwa so aus:
-      1) Die Methode wird als Empfaenger fuer Kommandos bekannt gemacht.
-         Das passiert mit der Anweisung
-         'add_action("UseSpell", "", 1);' in den Dateien player/base.c und
-         in living/npc.c.
+   /std/living/skills.c
 
-      2) /std/living/skills::UseSpell wird durch Kommando oder Heartbeat
-         gerufen.
-      
-      3) UseSpell() ermittelt eine SI_CLOSURE oder delegiert diesen Aufruf
-         an die gueltige Gilde/das Spellbook weiter.
-      
-      4) Eine gueltige Closure wird ausgefuehrt. UseSpell() uebergibt dabei
-         die Spell/Skill-Informationen und SI_SKILLARG.
-      
-      4.1.) Im Normalfall einer Gilde/Spellbook landet der Aufruf ueber
-            /std/gilden_ob::UseSpell() in /std/spellbook::UseSpell() und
-            dieses ruft eine Spellfunktion im Spellbook auf.
-            Die Spellfunktion arbeitet mit den Spell-Informationen und
-            gibt ein ERFOLG, MISSERFOLG oder 0 dafuer zurueck, ob das
-            Spellbook Lernen/Fehlermeldung oder nichts machen soll.
-            Dementsprechend werden P_SP, P_ATTACK_BUSY und
-            P_NEXT_SPELL_TIME im Spellbook geaendert.
 
-      5.) Der Aufruf der Closure kehrt zurueck und wird zurueckgegeben.
-          Damit ist der 0-Rueckgabewert der Spellfunktion im Spellbook
-          aequivalent einem nicht ausgefuehrten Kommando.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
-    Spellbook:      UseSpell (spellbook), Learn, SpellSuccess
+   string str       Spell-Optionen
+   string spell     optionaler Spellname
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Benutzt einen Spell, dessen Spellname 'spell' ggf ueber query_verb()
+   ermittelt wird. Dieser Spell sollte (als kleingeschriebener
+   Skill/Spell) im Living vorliegen.
+
+
+
+   Die Argumente 'str' werden als SI_SKILLARG temporaer in das
+   Skillmapping eingetragen (also nur fuer diesen Aufruf gueltig).
+
+
+
+   Eine ausfuehrbare Spell-Funktion zum Spell wird in folgender
+   Reihenfolge bestimmt:
+   - eine gesetzte SI_CLOSURE nutzen
+   - "UseSpell" an einem gesetzten SI_SPELLBOOK nutzen
+   - "UseSpell" an der gesetzten P_GUILD nutzen
+     - [UseSpell der Gilde sucht iA ebenfalls nur den Spell am Spellbook]
+   - eine Closure mit Rueckgabewert 0 erstellen
+   Die so bestimmte Spell-Funktion wird dann als SI_CLOSURE im Spieler
+   gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
+   Die Methode wird dann gerufen (der Spell also angewandt).
+
+   Standardmaessig gibt ein UseSpell() also 0 zurueck, es sei denn, eine
+   Funktion wurde fuer den Spell an einer der oben genannten Stellen
+   implementiert.
+
+   SI_INHERIT ist fuer Spells beim Aufruf wirkungslos (gilt aber bei
+   LearnSkill normal).
+
+   Ein Durchlauf von UseSpell durch den Spieler sieht in etwa so aus:
+     1) Die Methode wird als Empfaenger fuer Kommandos bekannt gemacht.
+        Das passiert mit der Anweisung
+        'add_action("UseSpell", "", 1);' in den Dateien player/base.c und
+        in living/npc.c.
+
+     2) /std/living/skills::UseSpell wird durch Kommando oder Heartbeat
+        gerufen.
+
+
+
+     3) UseSpell() ermittelt eine SI_CLOSURE oder delegiert diesen Aufruf
+        an die gueltige Gilde/das Spellbook weiter.
+
+
+
+     4) Eine gueltige Closure wird ausgefuehrt. UseSpell() uebergibt dabei
+        die Spell/Skill-Informationen und SI_SKILLARG.
+
+
+
+     4.1.) Im Normalfall einer Gilde/Spellbook landet der Aufruf ueber
+           /std/gilden_ob::UseSpell() in /std/spellbook::UseSpell() und
+           dieses ruft eine Spellfunktion im Spellbook auf.
+           Die Spellfunktion arbeitet mit den Spell-Informationen und
+           gibt ein ERFOLG, MISSERFOLG oder 0 dafuer zurueck, ob das
+           Spellbook Lernen/Fehlermeldung oder nichts machen soll.
+           Dementsprechend werden P_SP, P_ATTACK_BUSY und
+           P_NEXT_SPELL_TIME im Spellbook geaendert.
+
+     5.) Der Aufruf der Closure kehrt zurueck und wird zurueckgegeben.
+         Damit ist der 0-Rueckgabewert der Spellfunktion im Spellbook
+         aequivalent einem nicht ausgefuehrten Kommando.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+   Spellbook:      UseSpell (spellbook), Learn, SpellSuccess
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/Validate b/doc/lfun/Validate
index 10f4791..ddfceef 100644
--- a/doc/lfun/Validate
+++ b/doc/lfun/Validate
@@ -1,36 +1,60 @@
-Validate()
 
-FUNKTION:
+Validate()
+**********
+
+
+FUNKTION
+========
+
    string Validate(string oname);
 
-DEFINIERT IN:
+
+DEFINIERT IN
+============
+
    /std/virtual/v_compiler.c
 
-ARGUMENTE:
-   oname
-       Objektname, der geprueft werden soll 
 
-RUeCKGABEWERT:
-   
-BESCHREIBUNG:
+ARGUMENTE
+=========
+
+   oname
+       Objektname, der geprueft werden soll
+
+
+RUeCKGABEWERT
+=============
+
+
+BESCHREIBUNG
+============
+
    Diese Funktion hat die Aufgabe zu ueberpruefen ob ein Objekt welches
-   geladen werden soll, in dem VC  ueberhaupt erlaubt ist. Dieser 
+   geladen werden soll, in dem VC  ueberhaupt erlaubt ist. Dieser
    Funktion wird nur der reine Filename uebergeben, ohne Pfad!
    Diese Funktion macht im Standard-VC in /std/ nichts weiter, als
    das '.c' am File Namen abzuschneiden.
    Sollte der Dateiname gueltig sein liefert die Funktion als Rueckgabewert
    den Filenamen ohne .c und sonst 0.
 
-BEMERKUNGEN:
+
+BEMERKUNGEN
+===========
+
    Am besten ruft man in seinem Validate() das ::Validate(), was einem die
    Arbeit abnimmt, ein .c am Ende zu entfernen.
 
-BEISPIEL:
+
+BEISPIEL
+========
+
    string Validate(string oname) {
      string raum, spieler;
      //.c abschneiden
      oname=::Validate(oname);
-     
+
+
+
      // folgt der Raum dem Muster "arena|name"? Wenn nein -> ungueltig,
      // 0 zureckgeben, sonst den Filenamen.
      if(sscanf(oname,"%s|%s",raum,spieler)<2 || raum!="arena")
@@ -38,10 +62,13 @@
      return oname;
    }
 
-SIEHE AUCH:
-     virtual_compiler
-     CustomizeObject(), Validate(), NoParaObjects(), 
-     P_COMPILER_PATH, P_PARA
-     /std/virtual/v_compiler.c
-----------------------------------------------------------------------------
+
+SIEHE AUCH
+==========
+
+   virtual_compiler
+   CustomizeObject(), Validate(), NoParaObjects(),
+   P_COMPILER_PATH, P_PARA
+   /std/virtual/v_compiler.c
+
 27.10.2007, Zesstra
diff --git a/doc/lfun/Wear b/doc/lfun/Wear
index bfc8ad2..6a46903 100644
--- a/doc/lfun/Wear
+++ b/doc/lfun/Wear
@@ -1,37 +1,64 @@
+
 Wear()
-FUNKTION:
-     public int Wear(object ob) 
+******
 
-DEFINIERT IN:
-     /std/living/clothing.c
 
-ARGUMENTE:
-     object ob
-       Die Ruestung oder Kleidung, die angezogen wird.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
-     oder das Kleidungsstueck <ob> an.
-     ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
-     Ruestung/Kleidung in P_ARMOURS bzw. P_CLOTHING eingetragen wird. Es
-     finden zur Zeit keine Pruefungen statt, ob das Lebewesen den Gegenstand
-     ueberhaupt anziehen kann. Genausowenig werden Funktionen wie InformWear()
-     gerufen oder etwaige Stat-Boni aktiviert.
-     Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
-     von diesem im Lebewesen gerufen zu werden.
+   public int Wear(object ob)
 
-RUeCKGABEWERT:
-     1, wenn das Anziehen erfolgreich war.
-     0 sonst.
 
-BEMERKUNGEN:
-     Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
-     besten auch dann nicht.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     WearArmour(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), FilterArmours()
+   /std/living/clothing.c
 
-ZULETZT GEAeNDERT:
+
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung oder Kleidung, die angezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   oder das Kleidungsstueck <ob> an.
+   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung in P_ARMOURS bzw. P_CLOTHING eingetragen wird. Es
+   finden zur Zeit keine Pruefungen statt, ob das Lebewesen den Gegenstand
+   ueberhaupt anziehen kann. Genausowenig werden Funktionen wie InformWear()
+   gerufen oder etwaige Stat-Boni aktiviert.
+   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Anziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   WearArmour(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/WearArmour b/doc/lfun/WearArmour
index 9fd8e95..a6961b2 100644
--- a/doc/lfun/WearArmour
+++ b/doc/lfun/WearArmour
@@ -1,37 +1,64 @@
+
 WearArmour()
-FUNKTION:
-     public int WearArmour(object ob) 
+************
 
-DEFINIERT IN:
-     /std/living/clothing.c
 
-ARGUMENTE:
-     object ob
-       Die Ruestung, die angezogen wird.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
-     <ob> an.
-     ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
-     Ruestung/Kleidung in P_ARMOURS eingetragen wird. Es finden zur Zeit keine
-     Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt anziehen
-     kann. Genausowenig werden Funktionen wie InformWear() gerufen oder
-     etwaige Stat-Boni aktiviert.
-     Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
-     von diesem im Lebewesen gerufen zu werden.
+   public int WearArmour(object ob)
 
-RUeCKGABEWERT:
-     1, wenn das Anziehen erfolgreich war.
-     0 sonst.
 
-BEMERKUNGEN:
-     Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
-     besten auch dann nicht.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Wear(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), FilterArmours()
+   /std/living/clothing.c
 
-ZULETZT GEAeNDERT:
+
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung, die angezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   <ob> an.
+   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung in P_ARMOURS eingetragen wird. Es finden zur Zeit keine
+   Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt anziehen
+   kann. Genausowenig werden Funktionen wie InformWear() gerufen oder
+   etwaige Stat-Boni aktiviert.
+   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Anziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/WearClothing b/doc/lfun/WearClothing
index 17c0280..51cc015 100644
--- a/doc/lfun/WearClothing
+++ b/doc/lfun/WearClothing
@@ -1,37 +1,64 @@
+
 WearClothing()
-FUNKTION:
-     public int WearClothing(object ob) 
+**************
 
-DEFINIERT IN:
-     /std/living/clothing.c
 
-ARGUMENTE:
-     object ob
-       Das Kleidungsstuck, das angezogen wird.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Das Lebewesen, in dem diese Funktion gerufen wird, zieht das
-     Kleidungsstueck <ob> an.
-     ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
-     Ruestung/Kleidung in P_CLOTHING eingetragen wird. Es finden zur Zeit
-     keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
-     anziehen kann. Genausowenig werden Funktionen wie InformWear() gerufen.
+   public int WearClothing(object ob)
 
-     Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
-     von diesem im Lebewesen gerufen zu werden.
 
-RUeCKGABEWERT:
-     1, wenn das Anziehen erfolgreich war.
-     0 sonst.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
-     besten auch dann nicht.
+   /std/living/clothing.c
 
-SIEHE AUCH:
-     Wear(), WearArmour(), Unwear(), UnwearArmour(), UnwearClothing()
-     P_CLOTHING, P_ARMOURS
-     FilterClothing(), FilterArmours()
 
-ZULETZT GEAeNDERT:
+ARGUMENTE
+=========
+
+   object ob
+     Das Kleidungsstuck, das angezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht das
+   Kleidungsstueck <ob> an.
+   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung in P_CLOTHING eingetragen wird. Es finden zur Zeit
+   keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
+   anziehen kann. Genausowenig werden Funktionen wie InformWear() gerufen.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Anziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), Unwear(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2009, Zesstra
diff --git a/doc/lfun/WearFunc b/doc/lfun/WearFunc
index 626fd64..d1d0121 100644
--- a/doc/lfun/WearFunc
+++ b/doc/lfun/WearFunc
@@ -1,80 +1,105 @@
+
 WearFunc()
+**********
 
-FUNKTION:
-     int WearFunc(object ruest, int silent, object user);
 
-DEFINIERT IN:
-     eigenen Objekten (fuer /std/clothing/wear)
+FUNKTION
+========
 
-ARGUMENTE:
-     ruest (object)
-          Die Ruestung/Kleidung, die angezogen werden soll.
-     silent (int)
-          Ob dabei eine Meldung ausgegeben wird.
-     user (object)
-          Das Lebewesen, welches die Ruestung/Kleidung anziehen will.
+   int WearFunc(object ruest, int silent, object user);
 
-BESCHREIBUNG:
-     Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
-     Ruestung <ruest> von this_player() anziehen laesst oder nicht.
-     Kann die Ruestung angezogen werden, so muss ein Wert ungleich 0
-     zurueckgegeben werden.
 
-RUeCKGABEWERT:
-     0, wenn sich die Ruestung nicht anziehen laesst, ansonsten ungleich 0.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Bitte nicht darauf verlassen, dass der Spieler das Objekt auch wirklich
-     anzieht, wenn man hier 1 zurueckgibt.
-     Speziell bei Schilden kann das Anziehen trotz eines Rueckgabewertes 
-     != 0 immer noch schief gehen, wenn der Spieler keine Hand mehr frei hat.
-     Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
-     benutzt bitte InformWear().
-     Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
-     ist.
-     Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
-     erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
-     Objekte zu aendern.
+   eigenen Objekten (fuer /std/clothing/wear)
 
-BEISPIELE:
-     Ein Helm, der nur von Elfen getragen werden kann:
 
-     inherit "std/armour.c";
+ARGUMENTE
+=========
 
-     #include <properties.h>
+   ruest (object)
+        Die Ruestung/Kleidung, die angezogen werden soll.
+   silent (int)
+        Ob dabei eine Meldung ausgegeben wird.
+   user (object)
+        Das Lebewesen, welches die Ruestung/Kleidung anziehen will.
 
-     create()
-     {
-       ::create();
 
-       SetProp(P_ARMOUR_TYPE, AT_HELMET);
-       /* zig weitere SetProp's, um den Helm zu konfigurieren */
+BESCHREIBUNG
+============
 
-       /* WearFunc() ist im Helm selbst zu finden */
-       SetProp(P_WEAR_FUNC, this_object());
-     }
+   Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
+   Ruestung <ruest> von this_player() anziehen laesst oder nicht.
+   Kann die Ruestung angezogen werden, so muss ein Wert ungleich 0
+   zurueckgegeben werden.
 
-     int WearFunc(object me, int silent, object user)
-     {
-       if (user->QueryProp(P_RACE) == "Elf")
-         return 1;   /* Elfen duerfen den Helm tragen */
 
-       /* Die anderen Rassen sollten zumindest erfahren koennen, wieso
-          sie den Helm nicht tragen koennen... */
-       if (!silent)
-           write( "Der Helm rutscht Dir immer ueber Deine runden "
-                 +"Ohren.\n" );
-       return 0;
-     }
+RUeCKGABEWERT
+=============
 
-     Gibt jetzt ein Nicht-Elf "trage helm" ein, so bekommt er die Meldung
-     "Der Helm rutscht Dir immer ueber Deine runden Ohren.", Elfen dagegen
-     passt das Teil wie angegossen.
+   0, wenn sich die Ruestung nicht anziehen laesst, ansonsten ungleich 0.
 
-SIEHE AUCH:
-     P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
-     DoWear(), DoUnwear(), InformUnwear(), InformWear()
-     /std/clothing/wear.c
 
-----------------------------------------------------------------------------
+BEMERKUNGEN
+===========
+
+   Bitte nicht darauf verlassen, dass der Spieler das Objekt auch wirklich
+   anzieht, wenn man hier 1 zurueckgibt.
+   Speziell bei Schilden kann das Anziehen trotz eines Rueckgabewertes
+   != 0 immer noch schief gehen, wenn der Spieler keine Hand mehr frei hat.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
+   benutzt bitte InformWear().
+   Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
+   ist.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+BEISPIELE
+=========
+
+   Ein Helm, der nur von Elfen getragen werden kann:
+
+   inherit "std/armour.c";
+
+   #include <properties.h>
+
+   create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_HELMET);
+     /* zig weitere SetProp's, um den Helm zu konfigurieren */
+
+     /* WearFunc() ist im Helm selbst zu finden */
+     SetProp(P_WEAR_FUNC, this_object());
+   }
+
+   int WearFunc(object me, int silent, object user)
+   {
+     if (user->QueryProp(P_RACE) == "Elf")
+       return 1;   /* Elfen duerfen den Helm tragen */
+
+     /* Die anderen Rassen sollten zumindest erfahren koennen, wieso
+        sie den Helm nicht tragen koennen... */
+     if (!silent)
+         write( "Der Helm rutscht Dir immer ueber Deine runden "
+               +"Ohren.\n" );
+     return 0;
+   }
+
+   Gibt jetzt ein Nicht-Elf "trage helm" ein, so bekommt er die Meldung
+   "Der Helm rutscht Dir immer ueber Deine runden Ohren.", Elfen dagegen
+   passt das Teil wie angegossen.
+
+
+SIEHE AUCH
+==========
+
+   P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+   DoWear(), DoUnwear(), InformUnwear(), InformWear()
+   /std/clothing/wear.c
+
 02.02.2009, Zesstra
diff --git a/doc/lfun/WieldFunc b/doc/lfun/WieldFunc
index 23e299f..7c607e4 100644
--- a/doc/lfun/WieldFunc
+++ b/doc/lfun/WieldFunc
@@ -1,77 +1,102 @@
+
 WieldFunc()
+***********
 
-FUNKTION:
-     int WieldFunc(object weapon, int silent, object user);
 
-DEFINIERT IN:
-     eigenen Objekten (fuer /std/weapon/combat)
+FUNKTION
+========
 
-ARGUMENTE:
-     weapon (object)
-          Die Waffe, die gezueckt werden soll.
-     silent (int)
-          Ob dabei eine Meldung ausgegeben werden soll.
-     user (object)
-          Das Lebewesen, welches die Waffe zuecken will.
+   int WieldFunc(object weapon, int silent, object user);
 
-BESCHREIBUNG:
-     In dieser Funktion kann man zusaetzliche Abfragen vornehmen, ob sich
-     die Waffe <weapon> von <user> zuecken laesst oder nicht.
 
-RUeCKGABEWERT:
-     0, wenn die Waffe nicht gezueckt werden kann, sonst ungleich 0.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
-     keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
-     Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
-     nicht wegstecken laesst, etc.
-     Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
-     benutzt bitte InformWield().
-     Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
-     welches die Waffe zuecke will.
-     Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
-     erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
-     Objekte zu aendern.
+   eigenen Objekten (fuer /std/weapon/combat)
 
-BEISPIELE:
-     Eine Waffe, die sich nicht von Zwergen zuecken laesst:
 
-     inherit "std/weapon";
+ARGUMENTE
+=========
 
-     #include <properties.h>
-     #include <combat.h>
+   weapon (object)
+        Die Waffe, die gezueckt werden soll.
+   silent (int)
+        Ob dabei eine Meldung ausgegeben werden soll.
+   user (object)
+        Das Lebewesen, welches die Waffe zuecken will.
 
-     create()
-     {
-       ::create();
 
-       ... /* zig SetProp's, um die Waffe zu konfigurieren */
+BESCHREIBUNG
+============
 
-       /* WieldFunc() ist in der Waffe selbst zu finden */
-       SetProp(P_WIELD_FUNC, this_object());
-     }
+   In dieser Funktion kann man zusaetzliche Abfragen vornehmen, ob sich
+   die Waffe <weapon> von <user> zuecken laesst oder nicht.
 
-     int WieldFunc(object weapon, int silent, object user)
-     {
-       /* Nicht-Zwerge duerfen die Waffe zuecken */
-       if (user->QueryProp(P_RACE) != "Zwerg")
-         return 1;
 
-       /* Ansonsten sagen wir evtl., warum das Zuecken nicht klappt... */
-       if (!silent)
-         write( "Deine kleinen Haendchen koennen den Griff nicht "+
-                "umklammern.\n");
+RUeCKGABEWERT
+=============
 
-       /* ...und brechen das Zuecken ab. */
-       return 0;
-     }
+   0, wenn die Waffe nicht gezueckt werden kann, sonst ungleich 0.
 
-SIEHE AUCH:
-     P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
-     DoWield(), DoUnwield(), InformUnwield(), InformWield() 
-     UnwieldFunc, WieldFunc 
-     /std/weapon/combat.c
 
----------------------------------------------------------------------------
+BEMERKUNGEN
+===========
+
+   Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
+   keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
+   Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
+   nicht wegstecken laesst, etc.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
+   benutzt bitte InformWield().
+   Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
+   welches die Waffe zuecke will.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, die sich nicht von Zwergen zuecken laesst:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+
+   create()
+   {
+     ::create();
+
+     ... /* zig SetProp's, um die Waffe zu konfigurieren */
+
+     /* WieldFunc() ist in der Waffe selbst zu finden */
+     SetProp(P_WIELD_FUNC, this_object());
+   }
+
+   int WieldFunc(object weapon, int silent, object user)
+   {
+     /* Nicht-Zwerge duerfen die Waffe zuecken */
+     if (user->QueryProp(P_RACE) != "Zwerg")
+       return 1;
+
+     /* Ansonsten sagen wir evtl., warum das Zuecken nicht klappt... */
+     if (!silent)
+       write( "Deine kleinen Haendchen koennen den Griff nicht "+
+              "umklammern.\n");
+
+     /* ...und brechen das Zuecken ab. */
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+   DoWield(), DoUnwield(), InformUnwield(), InformWield()
+   UnwieldFunc, WieldFunc
+   /std/weapon/combat.c
+
 02.02.2009, Zesstra
diff --git a/doc/lfun/WithDraw b/doc/lfun/WithDraw
index d1532a2..1bff547 100644
--- a/doc/lfun/WithDraw
+++ b/doc/lfun/WithDraw
@@ -1,42 +1,69 @@
+
 WithDraw()
-FUNKTION:
-     int WithDraw(int amount);
+**********
 
-DEFINIERT IN:
-     /p/daemon/zentralbank.c
 
-ARGUMENTE:
-     int amount	- angeforderte Geldmenge
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Damit wird bei der Zentralbank eine bestimmte Menge Geld angefordert.
-     Der Rueckgabewert haengt vom Kassenstand der Zentralbank ab und ist
-     entweder amount oder amount/3.
+   int WithDraw(int amount);
 
-RUeCKGABEWERT:
-     Menge des bei der Zentralbank "abgehobenen" Geldes.
 
-BEISPIELE:
-     #include <bank.h>
-     ...
-     if(ZENTRALBANK->WithDraw(50000)<50000)
-      write(break_string(
-       "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
-       "geben!",
-       "Der Beamte sagt: ",78));
-      say(break_string(
-       "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
-       "geben!",
-       "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
-      ...
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
-     an anderen Stellen Geld erzeugt wird.
+   /p/daemon/zentralbank.c
 
-SIEHE AUCH:
-     Geldhandling:	AddMoney(L), QueryMoney(L)
-     Zentralbank:	PayIn(L), _query_current_money(L)
-     Sonstiges:		/items/money.c, /sys/bank.h
+
+ARGUMENTE
+=========
+
+   int amount - angeforderte Geldmenge
+
+
+BESCHREIBUNG
+============
+
+   Damit wird bei der Zentralbank eine bestimmte Menge Geld angefordert.
+   Der Rueckgabewert haengt vom Kassenstand der Zentralbank ab und ist
+   entweder amount oder amount/3.
+
+
+RUeCKGABEWERT
+=============
+
+   Menge des bei der Zentralbank "abgehobenen" Geldes.
+
+
+BEISPIELE
+=========
+
+   #include <bank.h>
+   ...
+   if(ZENTRALBANK->WithDraw(50000)<50000)
+    write(break_string(
+     "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
+     "geben!",
+     "Der Beamte sagt: ",78));
+    say(break_string(
+     "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
+     "geben!",
+     "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
+    ...
+
+
+BEMERKUNGEN
+===========
+
+   Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
+   an anderen Stellen Geld erzeugt wird.
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L), QueryMoney(L)
+   Zentralbank:       PayIn(L), _query_current_money(L)
+   Sonstiges:         /items/money.c, /sys/bank.h
 
 27. Apr 2004 Gloinson
diff --git a/doc/lfun/__INIT b/doc/lfun/__INIT
index 208b655..3ba4793 100644
--- a/doc/lfun/__INIT
+++ b/doc/lfun/__INIT
@@ -1,12 +1,25 @@
-SYNOPSIS:
-	__INIT
 
-DESCRIPTION:
-	This function is constructed automagically by the parser at
-	compiler, if the parser was compiled with #define
-	INITIALISATION__INIT. This function is not intended to be
-	defined by the lpc objects, and never to be called from lpc
-	objects. This man page is here just for completeness.
+__INIT()
+********
 
-SEE ALSO:
-	initialisation(LPC)
+
+SYNOPSIS
+========
+
+   __INIT
+
+
+DESCRIPTION
+===========
+
+   This function is constructed automagically by the parser at
+   compiler, if the parser was compiled with #define
+   INITIALISATION__INIT. This function is not intended to be
+   defined by the lpc objects, and never to be called from lpc
+   objects. This man page is here just for completeness.
+
+
+SEE ALSO
+========
+
+   initialisation(LPC)
diff --git a/doc/lfun/_query_current_money b/doc/lfun/_query_current_money
index 16b7ee5..db3663f 100644
--- a/doc/lfun/_query_current_money
+++ b/doc/lfun/_query_current_money
@@ -1,32 +1,53 @@
+
 _query_current_money()
-FUNKTION:
-     int _query_current_money()
+**********************
 
-DEFINIERT IN:
-     /p/daemon/zentralbank.c
 
-BESCHREIBUNG:
-     Es wird zurueckgegeben, wieviel Geld die Zentralbank besitzt.
+FUNKTION
+========
 
-BEISPIELE:
-     #include <bank.h>
-     ...
-     if(ZENTRALBANK->_query_current_money()<30000) {
-      write(break_string(
-       "Leider koennen wir ihren Bausparvertrag derzeit nicht einloesen.",
-       "Der Beamte sagt: ",78));
-      say(break_string(
-       "Leider koennen wir ihren Bausparvertrag derzeit nicht einloesen.",
-       "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
-     }
+   int _query_current_money()
 
-BEMERKUNGEN:
-     Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
-     an anderen Stellen Geld erzeugt wird.
 
-SIEHE AUCH:
-     Geldhandling:	AddMoney(L), QueryMoney(L)
-     Zentralbank:	WithDraw(L), PayIn(L)
-     Sonstiges:		/items/money.c, /sys/bank.h
+DEFINIERT IN
+============
+
+   /p/daemon/zentralbank.c
+
+
+BESCHREIBUNG
+============
+
+   Es wird zurueckgegeben, wieviel Geld die Zentralbank besitzt.
+
+
+BEISPIELE
+=========
+
+   #include <bank.h>
+   ...
+   if(ZENTRALBANK->_query_current_money()<30000) {
+    write(break_string(
+     "Leider koennen wir ihren Bausparvertrag derzeit nicht einloesen.",
+     "Der Beamte sagt: ",78));
+    say(break_string(
+     "Leider koennen wir ihren Bausparvertrag derzeit nicht einloesen.",
+     "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
+   an anderen Stellen Geld erzeugt wird.
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L), QueryMoney(L)
+   Zentralbank:       WithDraw(L), PayIn(L)
+   Sonstiges:         /items/money.c, /sys/bank.h
 
 27. Apr 2004 Gloinson
diff --git a/doc/lfun/_unparsed_args b/doc/lfun/_unparsed_args
index cbac1bb..caf3653 100644
--- a/doc/lfun/_unparsed_args
+++ b/doc/lfun/_unparsed_args
@@ -1,28 +1,49 @@
+
 _unparsed_args()
-FUNKTION:
-     varargs string _unparsed_args(int level)
+****************
 
-DEFINIERT IN:
-     /std/player/command.c:
 
-ARGUMENTE:
-     level
-          Gibt an, wieviel des Textes "weggeparsed" werden soll.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Gibt den Text des letzten Befehls des Spielers (ohne das Befehlswort
-     selbst) zurueck. "level" gibt dabei an, wieviel geparsed wird:
-     level = 0 : Gar kein Parsing.
-     level = 1 : Der Text wird in Kleinbuchstaben umgewandelt, doppelte
-                 Leerzeichen werden entfernt.
-     level = 2 : Semikoli, Kommata und Doppelpunkte werden in Leerzeichen
-		 umgewandelt, doppelte Leerzeichen und Artikel (der, die,
-		 das, ein,...) werden entfernt.
+   varargs string _unparsed_args(int level)
 
-RUeCKGABEWERT:
-     Der geparste Text.
 
-SIEHE AUCH:
-     query_command(), query_verb(), modify_command()
+DEFINIERT IN
+============
+
+   /std/player/command.c:
+
+
+ARGUMENTE
+=========
+
+   level
+        Gibt an, wieviel des Textes "weggeparsed" werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Text des letzten Befehls des Spielers (ohne das Befehlswort
+   selbst) zurueck. "level" gibt dabei an, wieviel geparsed wird:
+   level = 0 : Gar kein Parsing.
+   level = 1 : Der Text wird in Kleinbuchstaben umgewandelt, doppelte
+               Leerzeichen werden entfernt.
+   level = 2 : Semikoli, Kommata und Doppelpunkte werden in Leerzeichen
+               umgewandelt, doppelte Leerzeichen und Artikel (der, die,
+               das, ein,...) werden entfernt.
+
+
+RUeCKGABEWERT
+=============
+
+   Der geparste Text.
+
+
+SIEHE AUCH
+==========
+
+   query_command(), query_verb(), modify_command()
 
 25.08.2016, Arathorn
diff --git a/doc/lfun/access_rights b/doc/lfun/access_rights
index 9859761..7a99a99 100644
--- a/doc/lfun/access_rights
+++ b/doc/lfun/access_rights
@@ -1,75 +1,98 @@
+
 access_rights()
+***************
 
-FUNKTION:
-    int access_rights(string euid, string file);
 
-DEFINIERT IN:
-    access_rights.c (muss man selber schreiben)
+FUNKTION
+========
 
-PARAMETER:
-    euid
-        Die euid desjenigen, der auf das Verzeichnis schreiben will
-    file
-        Name der Datei, auf die zugegriffen werden soll
+   int access_rights(string euid, string file);
 
-BESCHREIBUNG:
-    access_rights() wird immer dann aufgerufen, wenn jemand, der nicht
-    sowieso schon schreibberechtigt ist, in die Datei/das Verzeichnis file
-    schreiben oder loeschen will.
 
-    Anhand von euid kann man dann entscheiden, ob der Schreibzugriff erlaubt
-    wird oder nicht.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-    0, wenn der Zugriff verweigert wird,
-    1, wenn der Zugriff erlaubt wird.
+   access_rights.c (muss man selber schreiben)
 
-BEISPIELE:
-    /* /d/inseln/wargon/access_rights.c */
 
-    int access_rights(string euid, string file)
-    {
-      string dir, rest;
+PARAMETER
+=========
 
-      // Catweazle darf auf alles zugreifen (*argl* ;^)
-      if (euid == "catweazle")
-        return 1;
+   euid
+       Die euid desjenigen, der auf das Verzeichnis schreiben will
+   file
+       Name der Datei, auf die zugegriffen werden soll
 
-      // Rechte auf einzelne Verzeichnisse ermitteln:
-      if (sscanf(file, "%s/%s", dir, rest) != 2)
-        rest = file;
 
-      // Jof und Boing duerfen an Tarko Reub rumpfuschen:
-      if (dir == "tarko" && (euid == "jof" || euid == "boing"))
-        return 1;
+BESCHREIBUNG
+============
 
-      // Anthea darf die Karten von Aurora und der Piratenhoehle bearbeiten:
-      if (dir == "MAPS" && 
-          member( ({"Aurora", "Piratenhoehle" }), rest) >= 0 && 
-          euid == "anthea")
-        return 1;
+   access_rights() wird immer dann aufgerufen, wenn jemand, der nicht
+   sowieso schon schreibberechtigt ist, in die Datei/das Verzeichnis file
+   schreiben oder loeschen will.
 
-      // alle anderen duerfen nicht!
-      return 0;
-    }
+   Anhand von euid kann man dann entscheiden, ob der Schreibzugriff erlaubt
+   wird oder nicht.
 
-BEMERKUNGEN:
-    file ist immer relativ zu dem Verzeichnis, in dem das access_rights.c
-    liegt! Will also jemand auf /d/inseln/wargon/tarko/macros.h schreiben,
-    wird file "tarko/macros.h" uebergeben.
 
-    In Verzeichnissen von Magiern mit einem Level >= ELDER_LVL wird das
-    access_rights.c NICHT ausgewertet (da damit andere Magier zB. an
-    Erzmagierrechte gelangen koennten).
+RUECKGABEWERT
+=============
 
-    Es wird immer nur EIN access_rights.c ausgewertet, naemlich das in der
-    tiefsten Verzeichnisebene.
+   0, wenn der Zugriff verweigert wird,
+   1, wenn der Zugriff erlaubt wird.
 
-    Man kann sowohl in seinen Regionsverzeichnissen als auch in seinen
-    Homeverzeichnissen access_rights.c-Dateien anlegen.
 
-    GANZ WICHTIG!!!
-    Fuer die Dateien, die evtl. von anderen angelegt werden, ist man immer
-    noch selbst verantwortlich! Wenn jemand also ein Gebiet bei Dir an-
-    schliesst, muss es erst von den verantwortlichen Regionsmagiern abgesegnet
-    sein!
+BEISPIELE
+=========
+
+   /* /d/inseln/wargon/access_rights.c */
+
+   int access_rights(string euid, string file)
+   {
+     string dir, rest;
+
+     // Catweazle darf auf alles zugreifen (*argl* ;^)
+     if (euid == "catweazle")
+       return 1;
+
+     // Rechte auf einzelne Verzeichnisse ermitteln:
+     if (sscanf(file, "%s/%s", dir, rest) != 2)
+       rest = file;
+
+     // Jof und Boing duerfen an Tarko Reub rumpfuschen:
+     if (dir == "tarko" && (euid == "jof" || euid == "boing"))
+       return 1;
+
+     // Anthea darf die Karten von Aurora und der Piratenhoehle bearbeiten:
+     if (dir == "MAPS" &&
+         member( ({"Aurora", "Piratenhoehle" }), rest) >= 0 &&
+         euid == "anthea")
+       return 1;
+
+     // alle anderen duerfen nicht!
+     return 0;
+   }
+
+
+BEMERKUNGEN
+===========
+
+   file ist immer relativ zu dem Verzeichnis, in dem das access_rights.c
+   liegt! Will also jemand auf /d/inseln/wargon/tarko/macros.h schreiben,
+   wird file "tarko/macros.h" uebergeben.
+
+   In Verzeichnissen von Magiern mit einem Level >= ELDER_LVL wird das
+   access_rights.c NICHT ausgewertet (da damit andere Magier zB. an
+   Erzmagierrechte gelangen koennten).
+
+   Es wird immer nur EIN access_rights.c ausgewertet, naemlich das in der
+   tiefsten Verzeichnisebene.
+
+   Man kann sowohl in seinen Regionsverzeichnissen als auch in seinen
+   Homeverzeichnissen access_rights.c-Dateien anlegen.
+
+   GANZ WICHTIG!!!
+   Fuer die Dateien, die evtl. von anderen angelegt werden, ist man immer
+   noch selbst verantwortlich! Wenn jemand also ein Gebiet bei Dir an-
+   schliesst, muss es erst von den verantwortlichen Regionsmagiern abgesegnet
+   sein!
diff --git a/doc/lfun/buffer_hp b/doc/lfun/buffer_hp
index c3e7b1b..181751c 100644
--- a/doc/lfun/buffer_hp
+++ b/doc/lfun/buffer_hp
@@ -1,76 +1,104 @@
-FUNKTION:
-    int buffer_hp( int val, int rate );
 
-DEFINIERT IN:
-    /std/living/life.c
+buffer_hp()
+***********
 
-ARGUMENTE:
-    val:  Gesamte Heilung.
-    rate: LP-Rate.
-        
-BESCHREIBUNG:
-    Erhoeht die LP eines Spielers automatisch insgesamt um den Wert "val".
-    Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
-    Sollen neben P_HP noch weitere Props manipuliert werden - bspw. zur
-    P_FOOD - bietet sich die Funktion consume() an.
 
-RUECKGABEWERTE:
-    Der getankte Wert pro heart_beat().
+FUNKTION
+========
 
-BEMERKUNG:
-    Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
-    darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
-    (Essen, Trinken) geheilt worden zu sein.
+   int buffer_hp( int val, int rate );
 
-BEISPIEL:
-    #define TP this_player()
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   val:  Gesamte Heilung.
+   rate: LP-Rate.
+
+
+BESCHREIBUNG
+============
+
+   Erhoeht die LP eines Spielers automatisch insgesamt um den Wert "val".
+   Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
+   Sollen neben P_HP noch weitere Props manipuliert werden - bspw. zur
+   P_FOOD - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERTE
+==============
+
+   Der getankte Wert pro heart_beat().
+
+
+BEMERKUNG
+=========
+
+   Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
+   darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
+   (Essen, Trinken) geheilt worden zu sein.
+
+
+BEISPIEL
+========
+
+   #define TP this_player()
+   ...
+
+   int heilung=1;
+   ...
+
+   create()
+   {
+    ::create();
+    SetProp(P_NAME,"Heilpflanze");
     ...
 
-    int heilung=1;
-    ...
+    AddCmd("iss","eat");
+   }
 
-    create()
-    {
-     ::create();
-     SetProp(P_NAME,"Heilpflanze");
+   int eat(string str)
+   {
+     notify_fail("WAS willst Du essen?\n");
+     if ( !str || !id(str) )
+      return 0;
      ...
 
-     AddCmd("iss","eat");
-    }
-
-    int eat(string str)
-    {
-      notify_fail("WAS willst Du essen?\n");
-      if ( !str || !id(str) )
-       return 0;
-      ...
-
-      if ( !TP->eat_food(25) )
-       return 1;
-
-      TP->buffer_hp(20,5);
-      TP->buffer_sp(80,10);
-      heilung--;
-      write(BS("Du fuehlst langsam, wie Deine Kraefte zurueckkehren."));
-
+     if ( !TP->eat_food(25) )
       return 1;
-    }
 
-    reset()
-    {
-      heilung=1;
-      ::reset();
-    }
+     TP->buffer_hp(20,5);
+     TP->buffer_sp(80,10);
+     heilung--;
+     write(BS("Du fuehlst langsam, wie Deine Kraefte zurueckkehren."));
 
-    Es wird durch eat_food getestet, ob der Spieler noch genuegend essen kann.
-    Wenn ja, kriegt unser Held die 25 automatisch oben drauf und ausserdem
-    20 LP in 5-LP-Schritten und 80 KP in 10-LP-Schritten gutgeschrieben.
+     return 1;
+   }
 
-SIEHE AUCH:
-     Aehnlich:  heal_self, restore_spell_points, restore_hit_points, 
-                buffer_sp
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Props:     P_SP, P_HP,
-     Konzepte:  heilung
+   reset()
+   {
+     heilung=1;
+     ::reset();
+   }
+
+   Es wird durch eat_food getestet, ob der Spieler noch genuegend essen kann.
+   Wenn ja, kriegt unser Held die 25 automatisch oben drauf und ausserdem
+   20 LP in 5-LP-Schritten und 80 KP in 10-LP-Schritten gutgeschrieben.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  heal_self, restore_spell_points, restore_hit_points,
+              buffer_sp
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Props:     P_SP, P_HP,
+   Konzepte:  heilung
 
 9. August 2015 Gloinson
diff --git a/doc/lfun/buffer_sp b/doc/lfun/buffer_sp
index dc7341c..09cad72 100644
--- a/doc/lfun/buffer_sp
+++ b/doc/lfun/buffer_sp
@@ -1,36 +1,63 @@
-FUNKTION:
-    int buffer_sp( int val, int rate );
 
-DEFINIERT IN:
-    /std/living/life.c
+buffer_sp()
+***********
 
-ARGUMENTE:
-    val:  Gesamte Heilung.
-    rate: KP-Rate.
-        
-BESCHREIBUNG:
-    Erhoeht die KP eines Spielers automatisch insgesamt um den Wert "val".
-    Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
-    Sollen neben P_SP noch weitere Props manipuliert werden - bspw. zur
-    P_FOOD - bietet sich die Funktion consume() an.
 
-RUECKGABEWERTE:
-    Der getankte Wert pro heart_beat().
+FUNKTION
+========
 
-BEMERKUNG:
-    Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
-    darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
-    (Essen, Trinken) geheilt worden zu sein.
+   int buffer_sp( int val, int rate );
 
-BEISPIEL:
-    s. Bsp. zu "buffer_hp"
 
-SIEHE AUCH:
-     Aehnlich:  heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Props:     P_SP, P_HP,
-     Konzepte:  heilung
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   val:  Gesamte Heilung.
+   rate: KP-Rate.
+
+
+BESCHREIBUNG
+============
+
+   Erhoeht die KP eines Spielers automatisch insgesamt um den Wert "val".
+   Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
+   Sollen neben P_SP noch weitere Props manipuliert werden - bspw. zur
+   P_FOOD - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERTE
+==============
+
+   Der getankte Wert pro heart_beat().
+
+
+BEMERKUNG
+=========
+
+   Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
+   darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
+   (Essen, Trinken) geheilt worden zu sein.
+
+
+BEISPIEL
+========
+
+   s. Bsp. zu "buffer_hp"
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Props:     P_SP, P_HP,
+   Konzepte:  heilung
 
 9. August 2015 Gloinson
-
diff --git a/doc/lfun/buy_obj b/doc/lfun/buy_obj
index bf1995b..0f0b965 100644
--- a/doc/lfun/buy_obj
+++ b/doc/lfun/buy_obj
@@ -1,42 +1,65 @@
+
 buy_obj()
+*********
 
-FUNKTION:
-	static string buy_obj(mixed ob, int short);
 
-DEFINIERT IN:
-	/std/shop.c
+FUNKTION
+========
 
-ARGUMENTE:
-	ob - der Gegenstand bei dem geprueft werden soll, ob der Laden ihn
-	     an this_player() verkauft. Sollte es sich hierbei um ein
-	     FixedObject handeln, wird ein String uebergeben, ansonsten ein
-	     object.
-        short - Bisher noch nicht in Benutzung. Aber fuer die Zukunft
-             vorgesehn, falls man mehrere Objekte auf einmal kauft.
-             Ein auswerten ist keine Pflicht, waere aber praktisch, damit
-             der Scroll dabei nicht zu gross wird.
+   static string buy_obj(mixed ob, int short);
 
-RUeCKGABEWERT:
-        Ein String was der Haendler sagen soll wieso der Gegenstand nicht
-	verkauft wird. Der String wird dabei wie folgt umgebrochen:
-        break_string(str, 78, Name(WER, 1)+" sagt: ")
-BESCHREIBUNG:
-	Durch ueberschreiben dieser Funktion ist es moeglich bestimmte
-	Objekte (wie z.b. Questobjekte) nur an ausgewaehlte Spieler zu
-	verkaufen). Aber auch abfragen ob der Laden ueberhaupt mit
-	this_player() handelt, sind moeglich.
 
-BEISPIELE:
-	static string buy_obj(mixed ob, int short)
-	{
-	   if (PL->QueryProp(P_RACE)=="Zwerg")
-	      return "Ich verkaufe nichts an Zwerge!";
-	   return ::buy_obj(ob, short);
-	}
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	sell_obj(), AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
-        /std/shop.c
+   /std/shop.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ob - der Gegenstand bei dem geprueft werden soll, ob der Laden ihn
+        an this_player() verkauft. Sollte es sich hierbei um ein
+        FixedObject handeln, wird ein String uebergeben, ansonsten ein
+        object.
+   short - Bisher noch nicht in Benutzung. Aber fuer die Zukunft
+        vorgesehn, falls man mehrere Objekte auf einmal kauft.
+        Ein auswerten ist keine Pflicht, waere aber praktisch, damit
+        der Scroll dabei nicht zu gross wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String was der Haendler sagen soll wieso der Gegenstand nicht
+   verkauft wird. Der String wird dabei wie folgt umgebrochen:
+   break_string(str, 78, Name(WER, 1)+" sagt: ")
+
+
+BESCHREIBUNG
+============
+
+   Durch ueberschreiben dieser Funktion ist es moeglich bestimmte
+   Objekte (wie z.b. Questobjekte) nur an ausgewaehlte Spieler zu
+   verkaufen). Aber auch abfragen ob der Laden ueberhaupt mit
+   this_player() handelt, sind moeglich.
+
+
+BEISPIELE
+=========
+
+   static string buy_obj(mixed ob, int short)
+   {
+      if (PL->QueryProp(P_RACE)=="Zwerg")
+         return "Ich verkaufe nichts an Zwerge!";
+      return ::buy_obj(ob, short);
+   }
+
+
+SIEHE AUCH
+==========
+
+   sell_obj(), AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+   /std/shop.c
+
 Last modified: Thu Mar 4 15:26:13 1999 by Padreic
diff --git a/doc/lfun/catch_msg b/doc/lfun/catch_msg
index 3bf09c9..42d1950 100644
--- a/doc/lfun/catch_msg
+++ b/doc/lfun/catch_msg
@@ -1,15 +1,26 @@
+
 catch_msg()
+***********
 
-SYNOPSIS:
-    void catch_msg(mixed *arr, object obj)
 
-DESCRIPTION:
-    When say(), tell_object()  or tell_room() are used with an array 
-    as message, the array will be passed to catch_message() in all living
-    objects that can hear it, instead of writing to the user resp.
-    sending to catch_tell(). This can be used to implement
-    communication protocols between livings. The second denotes
-    the object that has sent the message.
+SYNOPSIS
+========
 
-SEE ALSO:
- say(E), tell_room(E), tell_object(E), catch_tell(L)
+   void catch_msg(mixed *arr, object obj)
+
+
+DESCRIPTION
+===========
+
+   When say(), tell_object()  or tell_room() are used with an array
+   as message, the array will be passed to catch_message() in all living
+   objects that can hear it, instead of writing to the user resp.
+   sending to catch_tell(). This can be used to implement
+   communication protocols between livings. The second denotes
+   the object that has sent the message.
+
+
+SEE ALSO
+========
+
+   say(E), tell_room(E), tell_object(E), catch_tell(L)
diff --git a/doc/lfun/catch_tell b/doc/lfun/catch_tell
index b64832b..ff4e030 100644
--- a/doc/lfun/catch_tell
+++ b/doc/lfun/catch_tell
@@ -1,25 +1,36 @@
+
 catch_tell()
+************
 
-SYNOPSIS:
-	void catch_tell(string)
 
-DESCRIPTION:
-	When a message is sent to a noninteractive player, via say(),
-	tell_object, tell_room(), printf() or write(), it will get to the
-	function catch_tell(string). This will enable communications between
-	NPCs and from a player to an NPC.
+SYNOPSIS
+========
 
-	Also, if an interactive object is being shadowed and the
-	shadow has catch_tell() defined, it will receive all output
-	that would otherwise be written to the user.
+   void catch_tell(string)
 
-	If a message is sent by an interactive object, catch_tell() is
-	not called in that object, to prevent recursive calls. Thus
-	catch_tell() in interactive objects can be used to filter the
-	output that goes to the users.
 
-	The efun shout() sends to interactive objects only.
+DESCRIPTION
+===========
 
-SEE ALSO:
-	enable_commands(E), say(E), tell_object(E), tell_room(E),
-	write(E), catch_msg(L) 
+   When a message is sent to a noninteractive player, via say(),
+   tell_object, tell_room(), printf() or write(), it will get to the
+   function catch_tell(string). This will enable communications between
+   NPCs and from a player to an NPC.
+
+   Also, if an interactive object is being shadowed and the
+   shadow has catch_tell() defined, it will receive all output
+   that would otherwise be written to the user.
+
+   If a message is sent by an interactive object, catch_tell() is
+   not called in that object, to prevent recursive calls. Thus
+   catch_tell() in interactive objects can be used to filter the
+   output that goes to the users.
+
+   The efun shout() sends to interactive objects only.
+
+
+SEE ALSO
+========
+
+   enable_commands(E), say(E), tell_object(E), tell_room(E),
+   write(E), catch_msg(L)
diff --git a/doc/lfun/check_and_update_timed_key b/doc/lfun/check_and_update_timed_key
index 513c261..aa96667 100644
--- a/doc/lfun/check_and_update_timed_key
+++ b/doc/lfun/check_and_update_timed_key
@@ -1,93 +1,114 @@
+
 check_and_update_timed_key()
+****************************
 
-FUNKTION:
-       public int check_and_update_timed_key(int duration, string key)
-       
-DEFINIERT IN:
-       /std/living/life.c    
 
-ARGUMENTE:
-       int duration: In wieviel Sekunden wird <key> wieder freigebeben,
-                     (z.B. wann kann der Spieler an dieser Stelle eine neue 
-                     Heilung bekommen).
-       string key  : Eindeutiger Name, wird zusammen mit <duration>
-                     gespeichert.
+FUNKTION
+========
 
-BESCHREIBUNG:
-       Diese Funktion hat die Aufgabe, Zeitsperren verschiedenster Art
-       einfach zu ermoeglichen (z.B. die Realisierung charakter-abhaengiger
-       Heilstellen u.ae.).
+   public int check_and_update_timed_key(int duration, string key)
 
-       <key> muss eindeutig sein, am besten verwendet man den eigenen
-       Magiernamen (und ggf. nen Gebietsnamen) als Teil des Strings.
 
-       Die Funktion ist definiert in /std/living/life.c. Somit funktioniert
-       sie auch bei NPCs. Die Daten werden in P_TIMING_MAP gespeichert, sind
-       also gegen "ende" resistent. (werden allerdings nach Ablauf ggf.
-       'aufgeraeumt')
+DEFINIERT IN
+============
 
-       Das Mapping P_TIMING_MAP ist NICHT zur Abfrage und / oder Manipulation
-       'per Hand' vorgesehen.
+   /std/living/life.c
 
-RUeCKGABEWERT:
-       0    Irgendein Fehler im Aufruf, evtl. existiert die Funktion (noch)
-            nicht im jew. Objekt.
 
-      -1    Alles okay. Neuer Zeitpunkt wird automatisch gespeichert. In
-            diesem Fall darf der Spieler geheilt werden.
+ARGUMENTE
+=========
 
-      >0    Key noch gesperrt, in dem Fall darf also nicht geheilt werden. 
-            Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
-            laesst sich daher dazu nutzen, um dem Spieler einen Anhaltspunkt
-            zu geben, wann er die Stelle wieder nutzen kann, etwa:
+   int duration: In wieviel Sekunden wird <key> wieder freigebeben,
+                 (z.B. wann kann der Spieler an dieser Stelle eine neue
+                 Heilung bekommen).
+   string key  : Eindeutiger Name, wird zusammen mit <duration>
+                 gespeichert.
 
-            "Die Schale ist erst halb voll, Du musst noch etwas warten."
 
-BEISPIELE:
-       Eine Heilstelle soll jedem Spieler alle 5min zur Verfuegung stehen:
+BESCHREIBUNG
+============
 
-       AddCmd(({"trink","trinke"}),"trink_cmd");
+   Diese Funktion hat die Aufgabe, Zeitsperren verschiedenster Art
+   einfach zu ermoeglichen (z.B. die Realisierung charakter-abhaengiger
+   Heilstellen u.ae.).
 
-       int trink_cmd(string str){
-         ...
-         ...
-         /*
-         Der key sollte natuerlich eine etwas eindeutigere Kennzeichnung
-         wie etwa "tilly_trinken" bekommen, auch wenn er durch einen
-         anderen (gleichnamigen) nicht ueberschrieben werden kann.
+   <key> muss eindeutig sein, am besten verwendet man den eigenen
+   Magiernamen (und ggf. nen Gebietsnamen) als Teil des Strings.
 
-         Trifft diese Abfrage hier zu, kann dem Spieler Heilung o.ae. zu-
-         gefuehrt werden. Die neue Zeit (duration) wird automatisch gesetzt.
-         */
-         if(this_player()->check_and_update_timed_key(300,"jof_trinken")==-1){
-           if(this_player()->drink_soft(2)){
-             this_player()->heal_self(50);
-             write("Du fuehlst Dich sichtlich erfrischt.\n");
-             return 1;
-            }
-           else{
-             write("Du hast schon zuviel getrunken.\n");
-             return 1;
-            }
-          }
-         else {
-           write("Du trinkst und denkst . o O (Hmm, nicht schlecht).\n");
-           return 1;
-          }
-         return 0;
+   Die Funktion ist definiert in /std/living/life.c. Somit funktioniert
+   sie auch bei NPCs. Die Daten werden in P_TIMING_MAP gespeichert, sind
+   also gegen "ende" resistent. (werden allerdings nach Ablauf ggf.
+   'aufgeraeumt')
+
+   Das Mapping P_TIMING_MAP ist NICHT zur Abfrage und / oder Manipulation
+   'per Hand' vorgesehen.
+
+
+RUeCKGABEWERT
+=============
+
+    0    Irgendein Fehler im Aufruf, evtl. existiert die Funktion (noch)
+         nicht im jew. Objekt.
+
+   -1    Alles okay. Neuer Zeitpunkt wird automatisch gespeichert. In
+         diesem Fall darf der Spieler geheilt werden.
+
+   >0    Key noch gesperrt, in dem Fall darf also nicht geheilt werden.
+         Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
+         laesst sich daher dazu nutzen, um dem Spieler einen Anhaltspunkt
+         zu geben, wann er die Stelle wieder nutzen kann, etwa:
+
+         "Die Schale ist erst halb voll, Du musst noch etwas warten."
+
+
+BEISPIELE
+=========
+
+   Eine Heilstelle soll jedem Spieler alle 5min zur Verfuegung stehen:
+
+   AddCmd(({"trink","trinke"}),"trink_cmd");
+
+   int trink_cmd(string str){
+     ...
+     ...
+     /*
+     Der key sollte natuerlich eine etwas eindeutigere Kennzeichnung
+     wie etwa "tilly_trinken" bekommen, auch wenn er durch einen
+     anderen (gleichnamigen) nicht ueberschrieben werden kann.
+
+     Trifft diese Abfrage hier zu, kann dem Spieler Heilung o.ae. zu-
+     gefuehrt werden. Die neue Zeit (duration) wird automatisch gesetzt.
+     */
+     if(this_player()->check_and_update_timed_key(300,"jof_trinken")==-1){
+       if(this_player()->drink_soft(2)){
+         this_player()->heal_self(50);
+         write("Du fuehlst Dich sichtlich erfrischt.\n");
+         return 1;
         }
+       else{
+         write("Du hast schon zuviel getrunken.\n");
+         return 1;
+        }
+      }
+     else {
+       write("Du trinkst und denkst . o O (Hmm, nicht schlecht).\n");
+       return 1;
+      }
+     return 0;
+    }
 
-BEMERKUNGEN: 
-       Auch bei dieser Funktion ist darauf zu achten, dass Properties wie
-       P_FOOD, P_DRINK und P_ALCOHOL beruecksichtigt werden.
-       Heilstellen sind dem zustaendigen Magier fuer Heilungs-Balance zu 
-       melden. Wer dies momentan ist, kann dem Mailalias heilungs_balance
-       entnommen werden.
+BEMERKUNGEN:
+   Auch bei dieser Funktion ist darauf zu achten, dass Properties wie
+   P_FOOD, P_DRINK und P_ALCOHOL beruecksichtigt werden. Heilstellen
+   sind dem zustaendigen Magier fuer Heilungs-Balance zu melden. Wer
+   dies momentan ist, kann dem Mailalias heilungs_balance entnommen
+   werden.
 
-SIEHE AUCH:
-       check_timed_key, eat_food, drink_alcohol, drink_soft, heal_self,
-       restore_spell_points, reduce_hit_point
 
-----------------------------------------------------------------------------
+SIEHE AUCH
+==========
+
+   check_timed_key, eat_food, drink_alcohol, drink_soft, heal_self,
+   restore_spell_points, reduce_hit_point
+
 08.01.2012, Zesstra
-
diff --git a/doc/lfun/check_restrictions b/doc/lfun/check_restrictions
index 2c815cd..e173e8f 100644
--- a/doc/lfun/check_restrictions
+++ b/doc/lfun/check_restrictions
@@ -1,149 +1,202 @@
+
 check_restrictions()
-FUNKTION:
-    string check_restrictions(object pl, mapping restr)
+********************
 
-DEFINIERT IN:
-    /std/restriction_checker.c
 
-ARGUMENTE:
-    object pl        geprueftes Lebewesen
-    mapping restr    Mapping mit Restriktionen, s.u.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Die Methode wird verwendet, um Restriktionen (zum Beispiel fuer das
-    Casten eines Spells) zu pruefen. Sie wird von Spellbook und
-    Gildenobjekt direkt genutzt.
+   string check_restrictions(object pl, mapping restr)
 
-    Ihr wird dabei ein Spielerobjekt sowie ein Mapping mit den jeweiligen
-    Restriktionen uebergeben. Die aktuell moeglichen Keys des Mappings sind
-    weiter unten gelistet.
 
-BEMERKUNGEN:
-    Es wird bei der Rasse P_REAL_RACE geprueft. Der Tarnhelm funktioniert
-    also nicht.
+DEFINIERT IN
+============
 
-    Bei Erweiterungsvorschlaegen wendet euch bitte an einen EM oder
-    inheritet im Zweifelsfall nach Absprache.
-    NIEMALS solchen Code einfach KOPIEREN. Spaeter muss nur irgendwer
-    eurem alten Code hinterherraeumen.
+   /std/restriction_checker.c
+
+
+ARGUMENTE
+=========
+
+   object pl        geprueftes Lebewesen
+   mapping restr    Mapping mit Restriktionen, s.u.
+
+
+BESCHREIBUNG
+============
+
+   Die Methode wird verwendet, um Restriktionen (zum Beispiel fuer das
+   Casten eines Spells) zu pruefen. Sie wird von Spellbook und
+   Gildenobjekt direkt genutzt.
+
+   Ihr wird dabei ein Spielerobjekt sowie ein Mapping mit den jeweiligen
+   Restriktionen uebergeben. Die aktuell moeglichen Keys des Mappings sind
+   weiter unten gelistet.
+
+
+BEMERKUNGEN
+===========
+
+   Es wird bei der Rasse P_REAL_RACE geprueft. Der Tarnhelm funktioniert
+   also nicht.
+
+   Bei Erweiterungsvorschlaegen wendet euch bitte an einen EM oder
+   inheritet im Zweifelsfall nach Absprache.
+   NIEMALS solchen Code einfach KOPIEREN. Spaeter muss nur irgendwer
+   eurem alten Code hinterherraeumen.
 
 Aktuelle Liste der pruefbaren Parameter:
-    P_LEVEL
+   P_LEVEL
       Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
       auszufuehren.
-    P_GUILD_LEVEL
-      Gildenlevel, das das Lebewesen mindestens erreicht haben muss, um die
-      Aktion auszufuehren.
-    SR_SEER
-      Ist gesetzt, wenn das Lebewesen Seher sein muss.
-      Auswertung nur fuer Interactives, NSC ignorieren das Flag.
-    P_XP
-      Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen muss,
+
+   P_GUILD_LEVEL
+      Gildenlevel, das das Lebewesen mindestens erreicht haben muss,
       um die Aktion auszufuehren.
-    P_QP
+
+   SR_SEER
+      Ist gesetzt, wenn das Lebewesen Seher sein muss. Auswertung nur
+      fuer Interactives, NSC ignorieren das Flag.
+
+   P_XP
+      Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen
+      muss, um die Aktion auszufuehren.
+
+   P_QP
       Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
-    P_ALCOHOL
-      Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen liegen
-      muss, um die Aktion noch ausfuehren zu koennen.
-    P_DRINK
+
+   P_ALCOHOL
+      Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen
+      liegen muss, um die Aktion noch ausfuehren zu koennen.
+
+   P_DRINK
       Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
       Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
-    P_FOOD
-      Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel des
-      Spielers liegen muss, um die Aktion noch ausfuehren zu koennen.
-    P_DEAF
-      Ist gesetzt, falls der Spieler nicht taub sein darf.
-    P_FROG
-      Ist gesetzt, falls der Spieler kein Frosch sein darf.
-    P_BLIND
-      Ist gesetzt, falls der Spieler nicht blind sein darf.
-      Achtung: das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
-      nichts mehr sehen kann. Auch andere Gruende (zum Beispiel Dunkelheit)
-      koennen bewirken, dass ein Spieler nichts mehr sieht.
-    A_INT, A_DEX, A_CON, A_STR
-      Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren zu
+
+   P_FOOD
+      Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel
+      des Spielers liegen muss, um die Aktion noch ausfuehren zu
       koennen.
-    SR_BAD, SR_GOOD
-      Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein Charakter sein
-      darf, um eine Aktion ausfuehren zu koennen.
-    SR_MIN_SIZE, SR_MAX_SIZE
-      Gibt die minimale, bzw. die maximale Groesse an, die ein Charakter
-      maximal haben darf, um eine Aktion ausfuehren zu koennen.
-    SR_FREE_HANDS
+
+   P_DEAF
+      Ist gesetzt, falls der Spieler nicht taub sein darf.
+
+   P_FROG
+      Ist gesetzt, falls der Spieler kein Frosch sein darf.
+
+   P_BLIND
+      Ist gesetzt, falls der Spieler nicht blind sein darf. Achtung:
+      das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
+      nichts mehr sehen kann. Auch andere Gruende (zum Beispiel
+      Dunkelheit) koennen bewirken, dass ein Spieler nichts mehr
+      sieht.
+
+   A_INT, A_DEX, A_CON, A_STR
+      Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren
+      zu koennen.
+
+   SR_BAD, SR_GOOD
+      Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein
+      Charakter sein darf, um eine Aktion ausfuehren zu koennen.
+
+   SR_MIN_SIZE, SR_MAX_SIZE
+      Gibt die minimale, bzw. die maximale Groesse an, die ein
+      Charakter maximal haben darf, um eine Aktion ausfuehren zu
+      koennen.
+
+   SR_FREE_HANDS
       Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
       besitzen muss.
-    SR_EXCLUDE_RACE
+
+   SR_EXCLUDE_RACE
       Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
       diese Aktion nicht ausfuehren.
-    SR_INCLUDE_RACE
-      Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen koennen
-      diese Aktion nicht ausfuehren.
-    SM_RACE
-      Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese Rasse
-      geltenden Einschraenkungen vorgenommen werden. Als Keys sind die
-      in dieser Manpage beschriebenen Keys erlaubt, wobei SM_RACE nicht
-      rekursiv ausgewertet wird.
-      Der Rassenname ist gross geschrieben und "*" steht fuer alle Rassen.
-    SR_EXCLUDE_GUILD
-    SR_INCLUDE_GUILD
-      Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
-      genannt werden.
-    SR_FUN
+
+   SR_INCLUDE_RACE
+      Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen
+      koennen diese Aktion nicht ausfuehren.
+
+   SM_RACE
+      Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese
+      Rasse geltenden Einschraenkungen vorgenommen werden. Als Keys
+      sind die in dieser Manpage beschriebenen Keys erlaubt, wobei
+      SM_RACE nicht rekursiv ausgewertet wird. Der Rassenname ist
+      gross geschrieben und "*" steht fuer alle Rassen.
+
+   SR_EXCLUDE_GUILD SR_INCLUDE_GUILD
+
+      Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier
+      Gilden genannt werden.
+
+   SR_FUN
       Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
-      Restriktionen angegeben werden, siehe execute_anything().
-      Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
-      wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
-      Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
-    SR_PROP
-      Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
-      werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
-      eine Meldung angegeben werden, die als Fehlermeldung ausgegeben wird,
-      wenn der Spieler die Bedingung nicht erfuellt. Es sollte immer eine
-      passende Meldung fuer den Spieler eingebaut werden. Beispiel:
-      ([ SR_PROP: ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
-          "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn Du "
-          "Dich als wuerdig erwiesen hast!"]) ])
-      Aufgrund der Meldung wird empfohlen, SR_PROP nicht in Restriktionen
-      einzusetzen, die massenweise in Savefiles landen (z.B.
-      Spielersavefiles).
-    SR_QUEST
-      Hier kann ein String-Array mit den Namen (Keys) der Quest(s) angegeben
-      werden, die der Spieler bestanden haben muss, um die Aktion ausfuehren
-      zu koennen.
-    SQ_MINIQUEST
-      Hier kann entweder ein String-Array mit den Ladenamen der vergebenden
-      Objekte oder ein Int-Array mit den Index-Nummern (IDs) der
-      Miniquest(s) (empfohlen!) angegeben werden, die der Spieler bestanden
-      haben muss, um die Aktion ausfuehren zu koennen.
+      Restriktionen angegeben werden, siehe execute_anything(). Das
+      kann nuetzlich sein, um andere Restriktionen zu pruefen, wie das
+      Bestehen von Miniquests oder andere Faehigkeiten/Flags. Ist der
+      Test nicht bestanden, gibt die Funktion einen String zurueck.
 
-BEISPIELE:
-    // #1 Levelbeschraenkung in der Abenteurergilde
-    AddSpell("feuerball",20,
-             ([SI_SKILLRESTR_LEARN:([P_LEVEL:15]), ...
+   SR_PROP
+      Hier kann ein Mapping mit Properties und zugehoerigen Werten
+      angegeben werden, die jeweils auf Identitaet geprueft werden.
+      Zusaetzlich sollte eine Meldung angegeben werden, die als
+      Fehlermeldung ausgegeben wird, wenn der Spieler die Bedingung
+      nicht erfuellt. Es sollte immer eine passende Meldung fuer den
+      Spieler eingebaut werden. Beispiel: ([ SR_PROP:
+      ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
 
-    // #2 Glaubenstest im Klerus
-    AddSpell("bete",
-             ([SI_SKILLRESTR_LEARN: ([P_GUILD_LEVEL : LVL_NOVIZE,
-                                      SR_FUN : #'glaubensTest ]), ...
-    // mit
-    static string glaubensTest(object pl) {
-      if (pl->QueryProp(K_STRENGTH) < 8000)
-        return ("Deine Glaubensstaerke laesst zu wuenschen uebrig!\n");
-      return 0;
-    }
+         "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn
+         Du " "Dich als wuerdig erwiesen hast!"]) ])
 
-    // #3 SM_RACE-Modifikation der Restriktionen:
-    //    haertere Restriktionen fuer Zwerge
-    //    - hoeheres Level
-    //    - zusaetzlich A_STR pruefen
-    ([P_LEVEL:15,
-      A_INT:10,
-      SM_RACE: (["Zwerg": ([P_LEVEL:17, A_STR:20])])])
-    // ist identisch zu
-    ([SM_RACE: (["*":     ([P_LEVEL:15, A_INT:10]),
-                 "Zwerg": ([P_LEVEL:17, A_INT:10, A_STR:20])])])
+      Aufgrund der Meldung wird empfohlen, SR_PROP nicht in
+      Restriktionen einzusetzen, die massenweise in Savefiles landen
+      (z.B. Spielersavefiles).
 
-SIEHE AUCH:
-    execute_anything(L), AddSpell (Gilde), P_RESTRICTIONS
+   SR_QUEST
+      Hier kann ein String-Array mit den Namen (Keys) der Quest(s)
+      angegeben werden, die der Spieler bestanden haben muss, um die
+      Aktion ausfuehren zu koennen.
 
-03. Januar 2014, Arathorn
+   SQ_MINIQUEST
+      Hier kann entweder ein String-Array mit den Ladenamen der
+      vergebenden Objekte oder ein Int-Array mit den Index-Nummern
+      (IDs) der Miniquest(s) (empfohlen!) angegeben werden, die der
+      Spieler bestanden haben muss, um die Aktion ausfuehren zu
+      koennen.
+
+
+BEISPIELE
+=========
+
+   // #1 Levelbeschraenkung in der Abenteurergilde
+   AddSpell("feuerball",20,
+            ([SI_SKILLRESTR_LEARN:([P_LEVEL:15]), ...
+
+   // #2 Glaubenstest im Klerus
+   AddSpell("bete",
+            ([SI_SKILLRESTR_LEARN: ([P_GUILD_LEVEL : LVL_NOVIZE,
+                                     SR_FUN : #'glaubensTest ]), ...
+   // mit
+   static string glaubensTest(object pl) {
+     if (pl->QueryProp(K_STRENGTH) < 8000)
+       return ("Deine Glaubensstaerke laesst zu wuenschen uebrig!\n");
+     return 0;
+   }
+
+   // #3 SM_RACE-Modifikation der Restriktionen:
+   //    haertere Restriktionen fuer Zwerge
+   //    - hoeheres Level
+   //    - zusaetzlich A_STR pruefen
+   ([P_LEVEL:15,
+     A_INT:10,
+     SM_RACE: (["Zwerg": ([P_LEVEL:17, A_STR:20])])])
+   // ist identisch zu
+   ([SM_RACE: (["*":     ([P_LEVEL:15, A_INT:10]),
+                "Zwerg": ([P_LEVEL:17, A_INT:10, A_STR:20])])])
+
+
+SIEHE AUCH
+==========
+
+   execute_anything(L), AddSpell (Gilde), P_RESTRICTIONS
+
+3. Januar 2014, Arathorn
diff --git a/doc/lfun/check_timed_key b/doc/lfun/check_timed_key
index 81baff7..58c70ab 100644
--- a/doc/lfun/check_timed_key
+++ b/doc/lfun/check_timed_key
@@ -1,34 +1,52 @@
+
 check_timed_key()
+*****************
 
-FUNKTION:
-       public int check_timed_key(string key)
-       
-DEFINIERT IN:
-       /std/living/life.c    
 
-ARGUMENTE:
-       string key  : Eindeutiger Name
+FUNKTION
+========
 
-BESCHREIBUNG:
-       Diese Funktion hat die Aufgabe, mittels check_and_update_timed_key()
-       gespeicherte Zeitsperren zu pruefen, aber dabei nicht zu veraendern.
+   public int check_timed_key(string key)
 
-       Es MUSS bei der eigentlichen Aktion (z.B. Heilung des Spielers) der
-       Rueckgabewert von check_and_update_timed_key() beruecksichtigt werden,
-       sollte dieses nicht -1 geliefert haben, MUSS <key> als gesperrt
-       betrachtet werden, d.h. check_timed_key() hat nur informativen
-       Charakter.
 
-RUeCKGABEWERT:
-       0    Die Zeitsperre <key> ist abgelaufen.
+DEFINIERT IN
+============
 
-       >0   <key> ist noch gesperrt.
-            Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
+   /std/living/life.c
 
-SIEHE AUCH:
-       check_and_update_timed_key, eat_food, drink_alcohol, drink_soft,
-       heal_self, restore_spell_points, reduce_hit_point
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   string key  : Eindeutiger Name
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion hat die Aufgabe, mittels check_and_update_timed_key()
+   gespeicherte Zeitsperren zu pruefen, aber dabei nicht zu veraendern.
+
+   Es MUSS bei der eigentlichen Aktion (z.B. Heilung des Spielers) der
+   Rueckgabewert von check_and_update_timed_key() beruecksichtigt werden,
+   sollte dieses nicht -1 geliefert haben, MUSS <key> als gesperrt
+   betrachtet werden, d.h. check_timed_key() hat nur informativen
+   Charakter.
+
+
+RUeCKGABEWERT
+=============
+
+   0    Die Zeitsperre <key> ist abgelaufen.
+
+   >0   <key> ist noch gesperrt.
+        Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
+
+
+SIEHE AUCH
+==========
+
+   check_and_update_timed_key, eat_food, drink_alcohol, drink_soft,
+   heal_self, restore_spell_points, reduce_hit_point
+
 08.01.2012, Zesstra
-
diff --git a/doc/lfun/clean_up b/doc/lfun/clean_up
index 97ddf09..7c124fb 100644
--- a/doc/lfun/clean_up
+++ b/doc/lfun/clean_up
@@ -1,43 +1,67 @@
+
 clean_up()
-FUNKTION:
-     int clean_up(int ref);
+**********
 
-DEFINIERT IN:
-     /std/room.c
-     man kann die Funktion jedoch auch in beliebigen Objekten selbst
-     definieren.
 
-ARGUMENTE:
-     ref
-             + 0 bei gecloneten Objekten
-             + 1 bei einfachen geladenen Objekten
-             + >1 bei Objekten, die geerbt wurden oder als Blueprint dienen
-             + <0, wenn clean_up() von aussen aufgerufen wurde (das muss man
-               selbst beachten!)
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Wenn ein Objekt seit langer Zeit nicht mehr benutzt wurde, kann es sich
-     hier selbst zerstoeren. Das sollte das Objekt allerdings nur tun, wenn
-     ref kleiner oder gleich 1 ist.
+   int clean_up(int ref);
 
-RUeCKGABEWERT:
-     Der Rueckgabewert hat nur dann eine Bedeutung, wenn sich das Objekt
-     nicht selbst zerstoert hat. Wird 0 zurueckgegeben, so wird clean_up()
-     erst dann wieder aufgerufen, nachdem das Objekt aus- und wieder
-     eingeswappt wurde.
 
-     Ein Rueckgabewert ungleich 0 zeigt an, dass das Objekt sich
-     wahrscheinlich in der naechsten clean_up()-Runde zerstoeren kann, wenn
-     in der Zwischenzeit zB. noch einmal reset() aufgerufen wurde.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Standardmaessig definieren nur Raeume clean_up().
+   /std/room.c
+   man kann die Funktion jedoch auch in beliebigen Objekten selbst
+   definieren.
 
-     Die Zeiten zwischen zwei Aufrufen von clean_up() betragen momentan
-     einen Tag (86400 Sekunden).
 
-SIEHE AUCH:
-     reset(), P_NEVER_CLEAN
-     memory
+ARGUMENTE
+=========
+
+   ref
+           + 0 bei gecloneten Objekten
+           + 1 bei einfachen geladenen Objekten
+           + >1 bei Objekten, die geerbt wurden oder als Blueprint dienen
+           + <0, wenn clean_up() von aussen aufgerufen wurde (das muss man
+             selbst beachten!)
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt seit langer Zeit nicht mehr benutzt wurde, kann es sich
+   hier selbst zerstoeren. Das sollte das Objekt allerdings nur tun, wenn
+   ref kleiner oder gleich 1 ist.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Rueckgabewert hat nur dann eine Bedeutung, wenn sich das Objekt
+   nicht selbst zerstoert hat. Wird 0 zurueckgegeben, so wird clean_up()
+   erst dann wieder aufgerufen, nachdem das Objekt aus- und wieder
+   eingeswappt wurde.
+
+   Ein Rueckgabewert ungleich 0 zeigt an, dass das Objekt sich
+   wahrscheinlich in der naechsten clean_up()-Runde zerstoeren kann, wenn
+   in der Zwischenzeit zB. noch einmal reset() aufgerufen wurde.
+
+
+BEMERKUNGEN
+===========
+
+   Standardmaessig definieren nur Raeume clean_up().
+
+   Die Zeiten zwischen zwei Aufrufen von clean_up() betragen momentan
+   einen Tag (86400 Sekunden).
+
+
+SIEHE AUCH
+==========
+
+   reset(), P_NEVER_CLEAN
+   memory
 
 21. Maerz 2004 Gloinson
diff --git a/doc/lfun/cmd_shoot b/doc/lfun/cmd_shoot
index ccd52ce..9cbc9b9 100644
--- a/doc/lfun/cmd_shoot
+++ b/doc/lfun/cmd_shoot
@@ -1,31 +1,54 @@
+
 cmd_shoot()
+***********
 
-FUNKTION:
-    static int cmd_shoot(string str)
 
-DEFINIERT IN:
-    /std/ranged_weapon.c
+FUNKTION
+========
 
-ARGUMENTE:
-    string str    - Schusssyntax
+   static int cmd_shoot(string str)
 
-BESCHREIBUNG:
-    Kommandofunktion der Fernwaffe. Enthaelt die Vorbereitung und den Schuss.
 
-BEMERKUNGEN:
-    Ist in der Fernwaffe mit AddCmd( ({"schiess", "schiesse"}), "cmd_shoot");
-    angebunden. Will man eine andere Syntax haben, kann man mit
-    AddCmd/RemoveCmd diese umsetzen.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    RemoveCmd(({"schiess", "schiesse"})); // entferne Default-Kommando
-    AddCmd(({"schleuder", "schleudere"}), #'cmd_shoot);
+   /std/ranged_weapon.c
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  shoot_dam(L), cmd_shoot(L)
-    Kommandos: AddCmd(L), RemoveCmd(L)
-    Syntax:    _unparsed_args(L)
-    Sonstiges: fernwaffen
 
-28.Jul 2014 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   string str    - Schusssyntax
+
+
+BESCHREIBUNG
+============
+
+   Kommandofunktion der Fernwaffe. Enthaelt die Vorbereitung und den Schuss.
+
+
+BEMERKUNGEN
+===========
+
+   Ist in der Fernwaffe mit AddCmd( ({"schiess", "schiesse"}), "cmd_shoot");
+   angebunden. Will man eine andere Syntax haben, kann man mit
+   AddCmd/RemoveCmd diese umsetzen.
+
+
+BEISPIELE
+=========
+
+   RemoveCmd(({"schiess", "schiesse"})); // entferne Default-Kommando
+   AddCmd(({"schleuder", "schleudere"}), #'cmd_shoot);
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  shoot_dam(L), cmd_shoot(L)
+   Kommandos: AddCmd(L), RemoveCmd(L)
+   Syntax:    _unparsed_args(L)
+   Sonstiges: fernwaffen
+
+28.Jul 2014 Gloinson
diff --git a/doc/lfun/command_me b/doc/lfun/command_me
index cdb1ef2..77a3cc5 100644
--- a/doc/lfun/command_me
+++ b/doc/lfun/command_me
@@ -1,81 +1,110 @@
+
 command_me()
-FUNKTION:
-    int command_me(string str)
+************
 
-ARGUMENTE:
-    string str - auszufuehrendes Kommando
 
-DEFINIERT IN:
-    /std/npc.c, /std/player/command.c
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Fuehrt 'str' wie ein Kommando aus, welches direkt vom Living
-    abgegeben wurde.
+   int command_me(string str)
 
-    Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg. 
-    Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks. 
 
-    command_me() leitet den Befehl an command()(E) weiter und erlaubt
-    dadurch auch den Aufruf von sonst durch "static", "protected" oder
-    "private" vor externem Aufruf geschuetzten Kommando-Funktionen.
+ARGUMENTE
+=========
 
-    Kommandos mit oeffentlichen Kommandofunktionen (also damit alle mit
-    AddCmd definierten Kommandos) koennen auch durch command()(E)
-    von aussen ausgeloest werden.
+   string str - auszufuehrendes Kommando
 
-BEMERKUNGEN:    
-    - beruecksichtigt Aliase, d.h. wenn man Aliase eines Spielers
-      ignorieren will, muss man ein \\ (fuer ein \ im Eingabestring)
-      vor den Befehl stellen
-    - fuer objektinterne Kommandos funktioniert also auch command()(E)
 
-BEISPIEL:
-    (Code des Testraum ist in /doc/beispiele/testobjekte/command_me_testraum)
-    // #1: Testraum, zwinge Spieler bei "schleiche heran" zum Furzen
-    //     command_me() ist hier noetig, da das Furzen eine geschuetzte
-    //     Kommandofunktion hat
-    inherit "/std/room";
+DEFINIERT IN
+============
 
-    void create() {
-      ::create();
-      AddCmd("schleiche&heran|herum", "action_schleichen");
-    }
-    
-    void init() {
-      ::init();
-      add_action("action_kriechen", "kriech", 1);
-    }
+   /std/npc.c, /std/player/command.c
 
-    static int action_schleichen(string str) {
-      string tmp = this_player()->QueryProp(P_RACE);
-      // ... 
-      if(tmp[<1]=='e') tmp=tmp[0..<2];
-      write(break_string("Du versuchst leise zu schleichen, dabei passiert "
-        "dir aber ein allzu "+
-        (tmp=="Mensch"?"menschliches":lower_case(tmp)+"isches")+
-        " Missgeschick. Verflucht!", 78));
-      this_player()->command_me("\\furze");
-      return 1;
-    }
-    
-    static int action_kriechen(string str) {
-      write(break_string("Deine Knie tun zu sehr weh dafuer.", 78));
-      tell_room(this_object(), break_string(this_player()->Name(WER)+
-        " knackt mit den Knien.", 78));
-      return 1;
-    }
-    
-    // #2 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
-    //    Beide Kommandos gelingen, da Kommando mit AddCmd definiert.
-    find_player("naddl")->command_me("schleiche herum")
-    command("schleiche herum", find_player("naddl")); 
 
-    // #3 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
-    find_player("naddl")->command_me("krieche")
-    //    Folgendes Kommando schlaegt fehl, da Kommandofunktion static ist.
-    command("krieche", find_player("naddl"));
-    
-SIEHE AUCH:
-     enable_commands(E), command(E)
+BESCHREIBUNG
+============
+
+   Fuehrt 'str' wie ein Kommando aus, welches direkt vom Living
+   abgegeben wurde.
+
+   Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg.
+   Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks.
+
+   command_me() leitet den Befehl an command()(E) weiter und erlaubt
+   dadurch auch den Aufruf von sonst durch "static", "protected" oder
+   "private" vor externem Aufruf geschuetzten Kommando-Funktionen.
+
+   Kommandos mit oeffentlichen Kommandofunktionen (also damit alle mit
+   AddCmd definierten Kommandos) koennen auch durch command()(E)
+   von aussen ausgeloest werden.
+
+BEMERKUNGEN:
+   * beruecksichtigt Aliase, d.h. wenn man Aliase eines Spielers
+     ignorieren will, muss man ein \ (fuer ein im Eingabestring) vor
+     den Befehl stellen
+
+   * fuer objektinterne Kommandos funktioniert also auch
+     command()(E)
+
+
+BEISPIEL
+========
+
+   (Code des Testraum ist in /doc/beispiele/testobjekte/command_me_testraum)
+   // #1: Testraum, zwinge Spieler bei "schleiche heran" zum Furzen
+   //     command_me() ist hier noetig, da das Furzen eine geschuetzte
+   //     Kommandofunktion hat
+   inherit "/std/room";
+
+   void create() {
+     ::create();
+     AddCmd("schleiche&heran|herum", "action_schleichen");
+   }
+
+
+
+   void init() {
+     ::init();
+     add_action("action_kriechen", "kriech", 1);
+   }
+
+   static int action_schleichen(string str) {
+     string tmp = this_player()->QueryProp(P_RACE);
+     // ...
+     if(tmp[<1]=='e') tmp=tmp[0..<2];
+     write(break_string("Du versuchst leise zu schleichen, dabei passiert "
+       "dir aber ein allzu "+
+       (tmp=="Mensch"?"menschliches":lower_case(tmp)+"isches")+
+       " Missgeschick. Verflucht!", 78));
+     this_player()->command_me("\\furze");
+     return 1;
+   }
+
+
+
+   static int action_kriechen(string str) {
+     write(break_string("Deine Knie tun zu sehr weh dafuer.", 78));
+     tell_room(this_object(), break_string(this_player()->Name(WER)+
+       " knackt mit den Knien.", 78));
+     return 1;
+   }
+
+
+
+   // #2 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
+   //    Beide Kommandos gelingen, da Kommando mit AddCmd definiert.
+   find_player("naddl")->command_me("schleiche herum")
+   command("schleiche herum", find_player("naddl"));
+
+   // #3 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
+   find_player("naddl")->command_me("krieche")
+   //    Folgendes Kommando schlaegt fehl, da Kommandofunktion static ist.
+   command("krieche", find_player("naddl"));
+
+
+SIEHE AUCH
+==========
+
+   enable_commands(E), command(E)
 
 06 Sep 2012 Gloinson
diff --git a/doc/lfun/consume b/doc/lfun/consume
index 9979ec4..f07ece3 100644
--- a/doc/lfun/consume
+++ b/doc/lfun/consume
@@ -1,22 +1,38 @@
+
+consume()
+*********
+
 public varargs int consume(mapping cinfo, int testonly)
 
-FUNKTION:
-    public varargs int consume(mapping cinfo, int testonly);
 
-    Aenderung der Gesundheit eines Lebewesens durch etwas Konsumierbares.
+FUNKTION
+========
 
-DEFINIERT IN:
-    /std/living/life.c
+   public varargs int consume(mapping cinfo, int testonly);
 
-ARGUMENTE:
-    cinfo
-        Mapping mit Informationen ueber die Gesundheitsaenderung
-        Heilung.
-    testonly
-        Gibt an, ob nur die Bedingungen abgetestet werden sollen,
-        oder auch die Wirkung eintreten soll.
+   Aenderung der Gesundheit eines Lebewesens durch etwas Konsumierbares.
 
-RUECKGABEWERT:
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   cinfo
+       Mapping mit Informationen ueber die Gesundheitsaenderung
+       Heilung.
+   testonly
+       Gibt an, ob nur die Bedingungen abgetestet werden sollen,
+       oder auch die Wirkung eintreten soll.
+
+
+RUECKGABEWERT
+=============
+
     1 erfolgreich konsumiert
     0 keine oder falsche Aenderungsdaten in cinfo (nicht benutzbar)
    <0 Bedingung fuer konsumieren nicht erfuellt, Bitset aus:
@@ -25,61 +41,75 @@
       HC_MAX_ALCOHOL_REACHED - Kann nichts mehr saufen
       HC_HOOK_CANCELLETION   - durch H_HOOK_CONSUME abgebrochen
 
-BESCHREIBUNG:
-    Die Funktion stellt eine Moeglichkeit zur Verfuegung, die Aenderung
-    der Gesundheit eines Lebewesens beim Konsumieren von irgendetwas (z.B in
-    einer Kneipe, durch eine Heilstellte oder tragbare Tanke, ...) zentral zu
-    erledigen. Sie vereint in sich die Pruefung auf Durchfuerbarkeit der
-    Aenderung und Anwendung der Aenderung.
 
-    Der erste Parameter gibt die Eigenschaften der Aenderung an, der zweite ob
-    ausschliesslich die Pruefung auf Anwendbarkeit erfolgen soll.
+BESCHREIBUNG
+============
 
-    Das Mapping cinfo hat folgende Struktur:
-    a) Einfache Angabe der betroffenen Properties. In neuem Code bitte nicht
-       machen, dort ein Mapping wie unter b) beschrieben nutzen!
+   Die Funktion stellt eine Moeglichkeit zur Verfuegung, die Aenderung
+   der Gesundheit eines Lebewesens beim Konsumieren von irgendetwas (z.B in
+   einer Kneipe, durch eine Heilstellte oder tragbare Tanke, ...) zentral zu
+   erledigen. Sie vereint in sich die Pruefung auf Durchfuerbarkeit der
+   Aenderung und Anwendung der Aenderung.
 
-    b) Strukturiert in Effekte und Bedingungen mit folgenden Schluesseln:
-      H_EFFECTS - Mapping der zu aendernden Properties mit dem Umfang der
-                  Aenderung, erlaubte Properties siehe H_ALLOWED_EFFECTS
+   Der erste Parameter gibt die Eigenschaften der Aenderung an, der zweite ob
+   ausschliesslich die Pruefung auf Anwendbarkeit erfolgen soll.
 
-      H_CONDITIONS - Mapping der zu pruefenden Properties mit dem Umfang der
-                     Aenderung, erlaubte Properties siehe H_ALLOWED_CONDITIONS
+   Das Mapping cinfo hat folgende Struktur:
+   a) Einfache Angabe der betroffenen Properties. In neuem Code bitte nicht
+      machen, dort ein Mapping wie unter b) beschrieben nutzen!
 
-      H_DISTRIBUTION - Verteilung der Aenderung fuer P_SP, P_HP
-                       HD_INSTANT bzw. 0: instante Heilung
-                       1 - 50: angebene Zahl pro Heartbeat
-                       HD_STANDARD: 5 pro Heartbeat
+   b) Strukturiert in Effekte und Bedingungen mit folgenden Schluesseln:
+     H_EFFECTS - Mapping der zu aendernden Properties mit dem Umfang der
+                 Aenderung, erlaubte Properties siehe H_ALLOWED_EFFECTS
 
-    Aenderungen koennen sowohl positiv als auch negativ sein.
+     H_CONDITIONS - Mapping der zu pruefenden Properties mit dem Umfang der
+                    Aenderung, erlaubte Properties siehe H_ALLOWED_CONDITIONS
 
-BEMERKUNGEN:
-    Hierbei aber bitte beachten, dass Tanken/Entanken sowie Heilungen ggf. von
-    der (Heilungs-)Balance genehmigt werden muessen!
+     H_DISTRIBUTION - Verteilung der Aenderung fuer P_SP, P_HP
+                      HD_INSTANT bzw. 0: instante Heilung
+                      1 - 50: angebene Zahl pro Heartbeat
+                      HD_STANDARD: 5 pro Heartbeat
 
-BEISPIELE:
-    Heilung um 100 KP, 50 LP, aber nur wenn 30 P_FOOD gegessen werden kann:
+   Aenderungen koennen sowohl positiv als auch negativ sein.
 
-    consume( ([H_EFFECTS: ([P_HP:50, P_SP:100]),
-               H_CONDITIONS: ([P_FOOD:30]) ]) );
 
-    Heilung um 100 KP und Vergiftung um 2, wenn 15 Alkohol getrunken werden
-    koennen. Die SP werden zeitverzoegert mit 10 pro Heartbeat zugefuehrt.
+BEMERKUNGEN
+===========
 
-    consume(([H_EFFECTS: ([P_SP: 100, P_POISON: 2]),
-              H_CONDITIONS: ([P_ALCOHOL: 15]),
-              H_DISTRIBUTION: 10]) )
+   Hierbei aber bitte beachten, dass Tanken/Entanken sowie Heilungen ggf. von
+   der (Heilungs-)Balance genehmigt werden muessen!
 
-SIEHE AUCH:
-     Aehnlich:  drink_alcohol, eat_food, drink_soft
-     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp, buffer_sp
-     Timing:    check_and_update_timed_key
-     Enttanken: defuel_drink, defuel_food
-     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
 
-LETZTE AeNDERUNG:
-    29.05.2015, Boing
+BEISPIELE
+=========
 
+   Heilung um 100 KP, 50 LP, aber nur wenn 30 P_FOOD gegessen werden kann:
+
+   consume( ([H_EFFECTS: ([P_HP:50, P_SP:100]),
+              H_CONDITIONS: ([P_FOOD:30]) ]) );
+
+   Heilung um 100 KP und Vergiftung um 2, wenn 15 Alkohol getrunken werden
+   koennen. Die SP werden zeitverzoegert mit 10 pro Heartbeat zugefuehrt.
+
+   consume(([H_EFFECTS: ([P_SP: 100, P_POISON: 2]),
+             H_CONDITIONS: ([P_ALCOHOL: 15]),
+             H_DISTRIBUTION: 10]) )
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  drink_alcohol, eat_food, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+
+LETZTE AeNDERUNG
+================
+
+   29.05.2015, Boing
diff --git a/doc/lfun/create b/doc/lfun/create
index 9582609..03fc91a 100644
--- a/doc/lfun/create
+++ b/doc/lfun/create
@@ -1,78 +1,104 @@
+
 create()
+********
 
-FUNKTION:
-     protected void create();
-     void create();
 
-DEFINIERT IN:
-     allen Standardobjekten
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   protected void create();
+   void create();
 
-BESCHREIBUNG:
-     Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder geclont
-     wird.
-     In dieser Funktion wird das Objekt initialisiert und konfiguriert.
-     Waehrend des create() kann es einen this_player()/this_interactive()
-     geben, muss aber nicht!
-     Im create() hat das Objekt noch kein environment().
-     create() wird nur gerufen, wenn das Objekte geclont oder explizit geladen
-     wird. Wenn es aufgrund eines inherit in einem anderen Objekt vom Driver
-     geladen wird, wird das create() nicht ausgefuehrt (s. create_super()).
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Erbt man von anderen Objekten, so besteht die erste Aktion innerhalb
-     von create() normalerweise darin, in diesen Objekten create()
-     aufzurufen.
-     Die Funktion kann protected oder static sein (aber nicht private). Es
-     duerfte fuer die meisten Objekte sinnvoll sein, create() protected zu
-     deklarieren.
+   allen Standardobjekten
 
-     Um Speicher zu sparen, kann man bei Blueprints von der Konfigurierung
-     absehen (siehe Beispiel). Dies sollte man allerdings nicht bei Objekten
-     machen, von denen keine Clones erzeugt werden sollen (zB. bei Raeumen). 
 
-     Man sollte bei Abbruch des create() in BP unbedingt set_next_reset(-1);
-     rufen, da sonst die (nicht konfigurierte) BP resetten kann und dann
-     buggt.
+ARGUMENTE
+=========
 
-BEISPIELE:
-     Ein Gegenstand wuerde wie folgt konfiguriert:
+   keine
 
-     inherit "std/thing";
 
-     #include <properties.h>
+BESCHREIBUNG
+============
 
-     create()
-     {
-       // Wenn wir die Blueprint sind: NICHT konfigurieren!
-       // Bei normalen Raeumen oder Transportern sind diese beiden
-       // Zeilen wegzulassen!!!
-       if (!clonep(this_object())) {
-           set_next_reset(-1);    // wichtig, damit die BP nicht resettet.
-           return;
-       }
+   Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder geclont
+   wird.
+   In dieser Funktion wird das Objekt initialisiert und konfiguriert.
+   Waehrend des create() kann es einen this_player()/this_interactive()
+   geben, muss aber nicht!
+   Im create() hat das Objekt noch kein environment().
+   create() wird nur gerufen, wenn das Objekte geclont oder explizit geladen
+   wird. Wenn es aufgrund eines inherit in einem anderen Objekt vom Driver
+   geladen wird, wird das create() nicht ausgefuehrt (s. create_super()).
 
-       // Ansonsten die allgemeinen Eigenschaften von /std/thing
-       // konfigurieren...
-       ::create();
 
-       // ...und nun unsere speziellen Eigenschaften:
-       SetProp(P_NAME, "Muell");
-       SetProp(P_SHORT, "Muell");
-       SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
-       SetProp(P_ARTICLE, 0);
-       SetProp(P_VALUE, 0);
-       SetProp(P_GENDER, MALE);
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Erbt man von anderen Objekten, so besteht die erste Aktion innerhalb
+   von create() normalerweise darin, in diesen Objekten create()
+   aufzurufen.
+   Die Funktion kann protected oder static sein (aber nicht private). Es
+   duerfte fuer die meisten Objekte sinnvoll sein, create() protected zu
+   deklarieren.
+
+   Um Speicher zu sparen, kann man bei Blueprints von der Konfigurierung
+   absehen (siehe Beispiel). Dies sollte man allerdings nicht bei Objekten
+   machen, von denen keine Clones erzeugt werden sollen (zB. bei Raeumen).
+
+   Man sollte bei Abbruch des create() in BP unbedingt set_next_reset(-1);
+   rufen, da sonst die (nicht konfigurierte) BP resetten kann und dann
+   buggt.
+
+
+BEISPIELE
+=========
+
+   Ein Gegenstand wuerde wie folgt konfiguriert:
+
+   inherit "std/thing";
+
+   #include <properties.h>
+
+   create()
+   {
+     // Wenn wir die Blueprint sind: NICHT konfigurieren!
+     // Bei normalen Raeumen oder Transportern sind diese beiden
+     // Zeilen wegzulassen!!!
+     if (!clonep(this_object())) {
+         set_next_reset(-1);    // wichtig, damit die BP nicht resettet.
+         return;
      }
 
-SIEHE AUCH:
-     create(L), reset(L)
-     hook(C), create(H), create_ob(H), create_super(H, reset(H)
-     create(A), reset(A)
-----------------------------------------------------------------------------
+     // Ansonsten die allgemeinen Eigenschaften von /std/thing
+     // konfigurieren...
+     ::create();
+
+     // ...und nun unsere speziellen Eigenschaften:
+     SetProp(P_NAME, "Muell");
+     SetProp(P_SHORT, "Muell");
+     SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
+     SetProp(P_ARTICLE, 0);
+     SetProp(P_VALUE, 0);
+     SetProp(P_GENDER, MALE);
+   }
+
+
+SIEHE AUCH
+==========
+
+   create(L), reset(L)
+   hook(C), create(H), create_ob(H), create_super(H, reset(H)
+   create(A), reset(A)
+
 22.10.2007, Zesstra
diff --git a/doc/lfun/create_default_npc b/doc/lfun/create_default_npc
index b331c5c..09c3a14 100644
--- a/doc/lfun/create_default_npc
+++ b/doc/lfun/create_default_npc
@@ -1,55 +1,76 @@
+
 create_default_npc()
-FUNKTION:
-     varargs void create_default_npc( int level, int maxhp );
+********************
 
-BENUTZUNG:
-     inherit "std/npc";
 
-FUNKTION:
-     Setze die Daten eines Monsters auf einen gewissen Level.
+FUNKTION
+========
 
-     Der Level sollte zwischen 1 und 20 liegen. Die Stats werden auf diesen
-     Level gesetzt und mehrere andere Werte, so dass das Monster von der
-     Staerke her einem Spieler gleichen Levels entspricht.
+   varargs void create_default_npc( int level, int maxhp );
 
-     Wird der (optionale) Parameter maxhp weggelassen, wird dieser berechnet
-     nach:
-          maxhp = 42 + 8 * level
 
-     Die genauen Werte sind:
-          P_LEVEL : level
-          P_MAX_HP: maxhp
-          P_MAX_SP: maxhp
-          P_HANDS : 10 * level
-          P_BODY  : (20/3) * level
-          P_XP    : 50 * level * maxhp (== 5 * P_HANDS * max_hp)
+BENUTZUNG
+=========
 
-          A_STR, A_INT, A_DEX, A_CON : level
+   inherit "std/npc";
 
-BEMERKUNG:
-     Diese Funktion sollte nur im create() eines Monsters benutzt werden.
-     Oben beschriebene Werte, die vor dem Aufruf der Funktion gesetzt
-     wurden, werden durch die neuen Werte ersetzt.
 
-     Ab einem Aufruf mit Level 20 werden P_XP = 202000 gesetzt, also ein
-     Kill-Stup vergeben (siehe P_XP).
+FUNKTION
+========
 
-BEISPIEL:
-     create_default_npc(17) ergibt:
+   Setze die Daten eines Monsters auf einen gewissen Level.
 
-          P_LEVEL : 17
-          P_MAX_HP: 178
-          P_MAX_SP: 178
-          P_HANDS : 170
-          P_BODY  : 113
-          P_XP    : 151300
+   Der Level sollte zwischen 1 und 20 liegen. Die Stats werden auf diesen
+   Level gesetzt und mehrere andere Werte, so dass das Monster von der
+   Staerke her einem Spieler gleichen Levels entspricht.
 
-          A_STR, A_INT, A_DEX, A_CON : 17
+   Wird der (optionale) Parameter maxhp weggelassen, wird dieser berechnet
+   nach:
+        maxhp = 42 + 8 * level
 
-SIEHE AUCH:
-     Funktionen:  AddExp(), GiveKillScore()
-     Properties:  P_XP
-                  P_LEVEL, P_MAX_HP, P_MAX_SP, P_HANDS, P_BODY
-     Sonstiges:   npcs
+   Die genauen Werte sind:
+        P_LEVEL : level
+        P_MAX_HP: maxhp
+        P_MAX_SP: maxhp
+        P_HANDS : 10 * level
+        P_BODY  : (20/3) * level
+        P_XP    : 50 * level * maxhp (== 5 * P_HANDS * max_hp)
 
-14.Feb 2007 Gloinson
\ No newline at end of file
+        A_STR, A_INT, A_DEX, A_CON : level
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion sollte nur im create() eines Monsters benutzt werden.
+   Oben beschriebene Werte, die vor dem Aufruf der Funktion gesetzt
+   wurden, werden durch die neuen Werte ersetzt.
+
+   Ab einem Aufruf mit Level 20 werden P_XP = 202000 gesetzt, also ein
+   Kill-Stup vergeben (siehe P_XP).
+
+
+BEISPIEL
+========
+
+   create_default_npc(17) ergibt:
+
+        P_LEVEL : 17
+        P_MAX_HP: 178
+        P_MAX_SP: 178
+        P_HANDS : 170
+        P_BODY  : 113
+        P_XP    : 151300
+
+        A_STR, A_INT, A_DEX, A_CON : 17
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp(), GiveKillScore()
+   Properties:  P_XP
+                P_LEVEL, P_MAX_HP, P_MAX_SP, P_HANDS, P_BODY
+   Sonstiges:   npcs
+
+14.Feb 2007 Gloinson
diff --git a/doc/lfun/create_super b/doc/lfun/create_super
index 14725a6..101531f 100644
--- a/doc/lfun/create_super
+++ b/doc/lfun/create_super
@@ -1,49 +1,75 @@
+
 create_super()
+**************
 
-FUNKTION:
-     protected void create_super();
 
-DEFINIERT IN:
-     allen Standardobjekten
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   protected void create_super();
 
-BESCHREIBUNG:
-     Diese Funktion wird immer dann aufgerufen, wenn ein Objekt implizit durch
-     ein 'inherit' in einem erbenden Objekte geladen wird.
-     Normalweise muss man dieses so geladene Objekte nicht konfigurieren, weil
-     nur das Programm dieses Objektes fuer die erbenden Objekte interessant
-     ist, nicht seine Daten.
-     Was hier aber z.B. sinnvoll ist, ist das Abschalten des Resets, denn ein
-     Objekt, was nur dazu dient, dass es von anderen geerbt wird, braucht
-     keinen Reset, auch wenn es ein reset() definiert (was in erbenden Objekte
-     benutzt wird).
-     Die create_super() in den Standardobjekten tun momentan genau dieses.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn ihr von /std/ erbt, braucht ihr euch in aller Regel um diese
-     Funktion keine Gedanken machen.
-     Ihr koennt diese Funktion aber in Objekten selber definieren, die nur zum
-     Erben gedacht sind. Dies kann sinnvoll ein, wenn ihr nicht von /std/ erbt
-     und ein reset() im Objekt habt oder was machen wollt, was ueber das
-     Abschalten des Resets hinausgeht.
+   allen Standardobjekten
 
-BEISPIELE:
-     Gegeben sei folgende Vererbungskette:
-     /std/room -> /d/inseln/zesstra/stdraum -> /d/inseln/zesstra/raum
 
-     Wird nun 'raum' geladen und 'stdraum' ist noch nicht geladen, wird der
-     Driver implizit von selbst 'stdraum' laden (weil 'raum' das Programm von
-     'stdraum' braucht). Bei diesem Laden wird das create() in 'stdraum' nicht
-     ausgefuehrt, sondern stattdessen create_super().
-    
-SIEHE AUCH:
-     create(L), reset(L)
-     hook(C), create(H), create_ob(H), create_super(H, reset(H)
-     create(A), reset(A)
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird immer dann aufgerufen, wenn ein Objekt implizit durch
+   ein 'inherit' in einem erbenden Objekte geladen wird.
+   Normalweise muss man dieses so geladene Objekte nicht konfigurieren, weil
+   nur das Programm dieses Objektes fuer die erbenden Objekte interessant
+   ist, nicht seine Daten.
+   Was hier aber z.B. sinnvoll ist, ist das Abschalten des Resets, denn ein
+   Objekt, was nur dazu dient, dass es von anderen geerbt wird, braucht
+   keinen Reset, auch wenn es ein reset() definiert (was in erbenden Objekte
+   benutzt wird).
+   Die create_super() in den Standardobjekten tun momentan genau dieses.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ihr von /std/ erbt, braucht ihr euch in aller Regel um diese
+   Funktion keine Gedanken machen.
+   Ihr koennt diese Funktion aber in Objekten selber definieren, die nur zum
+   Erben gedacht sind. Dies kann sinnvoll ein, wenn ihr nicht von /std/ erbt
+   und ein reset() im Objekt habt oder was machen wollt, was ueber das
+   Abschalten des Resets hinausgeht.
+
+
+BEISPIELE
+=========
+
+   Gegeben sei folgende Vererbungskette:
+   /std/room -> /d/inseln/zesstra/stdraum -> /d/inseln/zesstra/raum
+
+   Wird nun 'raum' geladen und 'stdraum' ist noch nicht geladen, wird der
+   Driver implizit von selbst 'stdraum' laden (weil 'raum' das Programm von
+   'stdraum' braucht). Bei diesem Laden wird das create() in 'stdraum' nicht
+   ausgefuehrt, sondern stattdessen create_super().
+
+
+SIEHE AUCH
+==========
+
+   create(L), reset(L)
+   hook(C), create(H), create_ob(H), create_super(H, reset(H)
+   create(A), reset(A)
+
 22.10.2007, Zesstra
diff --git a/doc/lfun/defuel_drink b/doc/lfun/defuel_drink
index 67e834d..266907e 100644
--- a/doc/lfun/defuel_drink
+++ b/doc/lfun/defuel_drink
@@ -1,59 +1,87 @@
-FUNKTION:
-    int defuel_drink();
 
-DEFINIERT IN:
-    /std/living/life.c
+defuel_drink()
+**************
 
-ARGUMENTE:
-    Keine.
-        
-BESCHREIBUNG:
-    Enttankt den Spieler automatisch um einen gewissen Fluessigkeits-Wert,
-    sofern der Spieler ueber einer bestimmten Enttank-Grenze liegt und seit
-    seinem letzten Enttanken eine gewisse Zeit vergangen ist.
-    Alle diese Werte sind rassenabhaengig.
-    Ausserdem wird dem Spieler eine gewisse Menge Alkohol entzogen. Er wird
-    also mit jedem fluessigen Enttanken etwas nuechterner.
 
-    Es ist also NICHT moeglich, Einfluss auf die Menge des Enttankens
-    zu nehmen. Das ist hier so gewollt.
+FUNKTION
+========
 
-    Hat der Spieler mindestens 
-    * P_DEFUEL_LIMIT_DRINK in P_DRINK
-    kann er alle
-    * P_DEFUEL_TIME_DRINK
-    um
-    * (x=P_DRINK*P_DEFUEL_AMOUNT_DRINK/2) + random(x)
-      (also um (50 bis 100 * P_DRINK) Prozent)
-    enttanken.
+   int defuel_drink();
 
-RUECKGABEWERTE:
-    DEFUEL_TOO_SOON: -2, wenn Enttankintervallzeiten zu kurz.
-    DEFUEL_TOO_LOW:  -1, wenn Enttankgrenze noch nicht erreicht.
-    NO_DEFUEL:        0, wenn Enttanken nicht noetig war (Spieler war leer)
-    >0, wenn Erfolg (enttankte Wert wird zurueckgegeben).
 
-    (Konstanten kommen aus /sys/defuel.h)
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Bitte defuel_drink() benutzen und nicht P_DRINK oder P_MAX_DRINK des
-    manipulieren!
+   /std/living/life.c
 
-    Es gibt keine eigene Methode fuer die Verringerung von P_ALCOHOL.
 
-    Achtung: Nur Toiletten sollten diese Funktion im Spieler aufrufen!
+ARGUMENTE
+=========
 
-BEISPIEL:
-    s. Bsp. zu defuel_food()
+   Keine.
 
-SIEHE AUCH:
-     Aehnlich:  defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp, buffer_sp
-     Timing:    check_and_update_timed_key
-     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+BESCHREIBUNG
+============
+
+   Enttankt den Spieler automatisch um einen gewissen Fluessigkeits-Wert,
+   sofern der Spieler ueber einer bestimmten Enttank-Grenze liegt und seit
+   seinem letzten Enttanken eine gewisse Zeit vergangen ist.
+   Alle diese Werte sind rassenabhaengig.
+   Ausserdem wird dem Spieler eine gewisse Menge Alkohol entzogen. Er wird
+   also mit jedem fluessigen Enttanken etwas nuechterner.
+
+   Es ist also NICHT moeglich, Einfluss auf die Menge des Enttankens
+   zu nehmen. Das ist hier so gewollt.
+
+   Hat der Spieler mindestens
+   * P_DEFUEL_LIMIT_DRINK in P_DRINK
+   kann er alle
+   * P_DEFUEL_TIME_DRINK
+   um
+   * (x=P_DRINK*P_DEFUEL_AMOUNT_DRINK/2) + random(x)
+     (also um (50 bis 100 * P_DRINK) Prozent)
+   enttanken.
+
+
+RUECKGABEWERTE
+==============
+
+   DEFUEL_TOO_SOON: -2, wenn Enttankintervallzeiten zu kurz.
+   DEFUEL_TOO_LOW:  -1, wenn Enttankgrenze noch nicht erreicht.
+   NO_DEFUEL:        0, wenn Enttanken nicht noetig war (Spieler war leer)
+   >0, wenn Erfolg (enttankte Wert wird zurueckgegeben).
+
+   (Konstanten kommen aus /sys/defuel.h)
+
+
+BEMERKUNG
+=========
+
+   Bitte defuel_drink() benutzen und nicht P_DRINK oder P_MAX_DRINK des
+   manipulieren!
+
+   Es gibt keine eigene Methode fuer die Verringerung von P_ALCOHOL.
+
+   Achtung: Nur Toiletten sollten diese Funktion im Spieler aufrufen!
+
+
+BEISPIEL
+========
+
+   s. Bsp. zu defuel_food()
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/lfun/defuel_food b/doc/lfun/defuel_food
index 1e89110..380c2bc 100644
--- a/doc/lfun/defuel_food
+++ b/doc/lfun/defuel_food
@@ -1,85 +1,113 @@
-FUNKTION:
-    int defuel_food();
 
-DEFINIERT IN:
-    /std/living/life.c
+defuel_food()
+*************
 
-ARGUMENTE:
-    Keine.
 
-BESCHREIBUNG:
-    Enttankt den Spieler automatisch um einen gewissen Essens-Wert,
-    sofern der Spieler ueber einer bestimmten Enttank-Grenze liegt und seit
-    seinem letzten Enttanken eine gewisse Zeit vergangen ist.
-    Alle diese Werte sind rassenabhaengig.
+FUNKTION
+========
 
-    Es ist also NICHT moeglich, Einfluss auf die Menge des Enttankens
-    zu nehmen. Das ist hier so gewollt.
+   int defuel_food();
 
-    Hat der Spieler mindestens 
-    * P_DEFUEL_LIMIT_FOOD in P_FOOD
-    kann er alle
-    * P_DEFUEL_TIME_FOOD
-    um
-    * (x=P_DRINK*P_DEFUEL_AMOUNT_FOOD/2) + random(x)
-      (also um (50 bis 100 * P_FOOD) Prozent)
-    enttanken.
 
-RUECKGABEWERTE:
-    DEFUEL_TOO_SOON: -2, wenn Enttankintervallzeiten zu kurz.
-    DEFUEL_TOO_LOW:  -1, wenn Enttankgrenze noch nicht erreicht.
-    NO_DEFUEL:        0, wenn Enttanken nicht noetig war (Spieler war leer)
-    >0, wenn Erfolg (enttankte Wert wird zurueckgegeben).
+DEFINIERT IN
+============
 
-    (Konstanten kommen aus /sys/defuel.h)
+   /std/living/life.c
 
-BEMERKUNG:
-    Bitte defuel_food() benutzen und nicht P_FOOD oder P_MAX_FOOD des
-    Spielers manipulieren!
 
-    Achtung: Nur Toiletten sollten diese Funktion im Spieler aufrufen!
+ARGUMENTE
+=========
 
-BEISPIEL:
-    int action_enttanken() {
-      string msg;
-      int val = this_player()->defuel_food();
+   Keine.
 
-      switch (val) {
-        case DEFUEL_TOO_SOON:
-          msg = "Du warst doch erst vor kurzem auf Toilette...";
-          break;
-        case DEFUEL_TOO_LOW:
-          msg = "Du versuchst Dich zu entleeren, aber irgendwie will "
-                "das nicht so recht klappen.";
-          break;
-        case NO_DEFUEL:
-          msg = "Du hast seit langem nichts gegessen, wie willst Du dann "
-                "was loswerden koennen?";
-          break;
-        default:
-          string qualifier;
-          int fuzzypercent = (90+random(20)) *
-                             val/this_player()->QueryProp(P_MAX_FOOD);
-          switch(fuzzypercent) {
-            case 0..50:  qualifier = "etwas"; break;
-            case 51..75: qualifier = "enorm"; break;
-            default:     qualifier = "unglaublich"; break;
-          }
-          msg = "Du entleerst Dich "+qualifier"+. Puh, das tat gut!";
-          break;
-      }
-      tell_object(this_player(), break_string(msg, 78));
-      return 1;
-    }
 
-SIEHE AUCH:
-     Aehnlich:  defuel_drink
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp, buffer_sp
-     Timing:    check_and_update_timed_key
-     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+BESCHREIBUNG
+============
+
+   Enttankt den Spieler automatisch um einen gewissen Essens-Wert,
+   sofern der Spieler ueber einer bestimmten Enttank-Grenze liegt und seit
+   seinem letzten Enttanken eine gewisse Zeit vergangen ist.
+   Alle diese Werte sind rassenabhaengig.
+
+   Es ist also NICHT moeglich, Einfluss auf die Menge des Enttankens
+   zu nehmen. Das ist hier so gewollt.
+
+   Hat der Spieler mindestens
+   * P_DEFUEL_LIMIT_FOOD in P_FOOD
+   kann er alle
+   * P_DEFUEL_TIME_FOOD
+   um
+   * (x=P_DRINK*P_DEFUEL_AMOUNT_FOOD/2) + random(x)
+     (also um (50 bis 100 * P_FOOD) Prozent)
+   enttanken.
+
+
+RUECKGABEWERTE
+==============
+
+   DEFUEL_TOO_SOON: -2, wenn Enttankintervallzeiten zu kurz.
+   DEFUEL_TOO_LOW:  -1, wenn Enttankgrenze noch nicht erreicht.
+   NO_DEFUEL:        0, wenn Enttanken nicht noetig war (Spieler war leer)
+   >0, wenn Erfolg (enttankte Wert wird zurueckgegeben).
+
+   (Konstanten kommen aus /sys/defuel.h)
+
+
+BEMERKUNG
+=========
+
+   Bitte defuel_food() benutzen und nicht P_FOOD oder P_MAX_FOOD des
+   Spielers manipulieren!
+
+   Achtung: Nur Toiletten sollten diese Funktion im Spieler aufrufen!
+
+
+BEISPIEL
+========
+
+   int action_enttanken() {
+     string msg;
+     int val = this_player()->defuel_food();
+
+     switch (val) {
+       case DEFUEL_TOO_SOON:
+         msg = "Du warst doch erst vor kurzem auf Toilette...";
+         break;
+       case DEFUEL_TOO_LOW:
+         msg = "Du versuchst Dich zu entleeren, aber irgendwie will "
+               "das nicht so recht klappen.";
+         break;
+       case NO_DEFUEL:
+         msg = "Du hast seit langem nichts gegessen, wie willst Du dann "
+               "was loswerden koennen?";
+         break;
+       default:
+         string qualifier;
+         int fuzzypercent = (90+random(20)) *
+                            val/this_player()->QueryProp(P_MAX_FOOD);
+         switch(fuzzypercent) {
+           case 0..50:  qualifier = "etwas"; break;
+           case 51..75: qualifier = "enorm"; break;
+           default:     qualifier = "unglaublich"; break;
+         }
+         msg = "Du entleerst Dich "+qualifier"+. Puh, das tat gut!";
+         break;
+     }
+     tell_object(this_player(), break_string(msg, 78));
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  defuel_drink
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/lfun/deregister_modifier b/doc/lfun/deregister_modifier
index cbb541e..eb0c160 100644
--- a/doc/lfun/deregister_modifier
+++ b/doc/lfun/deregister_modifier
@@ -1,24 +1,42 @@
+
 deregister_modifier()
-FUNKTION:
-     void deregister_modifier(object modifier)
+*********************
 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-PARAMETER:
-     modifier	- Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD
 
-BESCHREIBUNG:
-     Meldet einen Modifier im Spieler ab. Wird durch RemoveSensitiveObject
-     beziehungsweise beim Ausziehen oder Wegstecken gerufen.
-     Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
-     sollte stattdessen UpdateAttributes gerufen werden.     
+FUNKTION
+========
 
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     register_modifier(),P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, 
-     P_ATTRIBUTES_MODIFIER, P_X_ATTR_MOD, P_M_ATTR_MOD, 
-     /std/living/attributes.c
+   void deregister_modifier(object modifier)
 
-13.Jun.2004, Muadib
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   modifier   - Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD
+
+
+BESCHREIBUNG
+============
+
+   Meldet einen Modifier im Spieler ab. Wird durch RemoveSensitiveObject
+   beziehungsweise beim Ausziehen oder Wegstecken gerufen.
+   Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
+   sollte stattdessen UpdateAttributes gerufen werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   register_modifier(),P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_ATTRIBUTES_MODIFIER, P_X_ATTR_MOD, P_M_ATTR_MOD,
+   /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/lfun/die b/doc/lfun/die
index ce055f8..a76a1aa 100644
--- a/doc/lfun/die
+++ b/doc/lfun/die
@@ -1,45 +1,67 @@
+
 die()
+*****
 
-FUNKTION:
-     public varargs void die(int poisondeath,int extern);
 
-DEFINIERT IN:
-     /std/living/life.c
+FUNKTION
+========
 
-ARGUMENTE:
-     int poisondeath
-	  Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
-     int extern
-	  Intern.
+   public varargs void die(int poisondeath,int extern);
 
-BESCHREIBUNG:
-     Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest, wenn
-     0 HP unterschritten werden. In diesem Fall wird der Kampf beendet, Gift,
-     Alkohol, Trink- und Esswerte, Blindheit, Taubheit u.s.w. auf Null
-     gesetzt oder geloescht.
 
-     Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE) nebst
-     Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer Spieler werden
-     Killstupse vergeben, sofern notwendig.
+DEFINIERT IN
+============
 
-     Ueber den Hook P_TMP_DIE_HOOK kann man jedoch auf den Automatismus
-     Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
-     Sterben fuer kurze Zeit verhindern.
+   /std/living/life.c
 
-RUeCKGABEWERT:
-     keiner
 
-BEMERKUNGEN:
-     Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
-     uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
-     und balancetechnisch guenstigere Loesung.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Todesursachen:	Defend(L), do_damage(L), P_POISON
-     Verwandt:		P_TMP_DIE_HOOK, P_DEADS
-     Todesmeldungen:	P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG, P_DIE_MSG
-			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /std/corpse.c
+   int poisondeath
+        Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
+   int extern
+        Intern.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest, wenn
+   0 HP unterschritten werden. In diesem Fall wird der Kampf beendet, Gift,
+   Alkohol, Trink- und Esswerte, Blindheit, Taubheit u.s.w. auf Null
+   gesetzt oder geloescht.
+
+   Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE) nebst
+   Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer Spieler werden
+   Killstupse vergeben, sofern notwendig.
+
+   Ueber den Hook P_TMP_DIE_HOOK kann man jedoch auf den Automatismus
+   Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
+   Sterben fuer kurze Zeit verhindern.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
+   uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
+   und balancetechnisch guenstigere Loesung.
+
+
+SIEHE AUCH
+==========
+
+   Todesursachen:     Defend(L), do_damage(L), P_POISON
+   Verwandt:          P_TMP_DIE_HOOK, P_DEADS
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG, P_DIE_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c
+
 Last modified: Mon May 14 16:20:34 2001 by Patryn
diff --git a/doc/lfun/doUnwearMessage b/doc/lfun/doUnwearMessage
index e029ea2..b6128ce 100644
--- a/doc/lfun/doUnwearMessage
+++ b/doc/lfun/doUnwearMessage
@@ -1,28 +1,46 @@
+
 doUnwearMessage()
+*****************
 
-FUNKTION:
-	void doUnwearMessage(object worn_by, int all);
 
-DEFINIERT IN:
-	/std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	worn_by
-          Das Lebewesen, dass die Ruestung bisher getragen hat
-        all
-          Wurde "ziehe alles aus"/"ziehe alle ruestungen aus" eingegeben,
-          so ist all gesetzt, ansonsten nicht.
+   void doUnwearMessage(object worn_by, int all);
 
-BESCHREIBUNG:
-        Diese Funktion gibt beim Ausziehen einer Ruestung die entspr.
-        Meldung an den Traeger und die Umgebung aus.
 
-RUeCKGABEWERT:
-	keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        doWearMessage(), doWieldMessage(), doUnwieldMessage()
+   /std/armour/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   worn_by
+     Das Lebewesen, dass die Ruestung bisher getragen hat
+   all
+     Wurde "ziehe alles aus"/"ziehe alle ruestungen aus" eingegeben,
+     so ist all gesetzt, ansonsten nicht.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Ausziehen einer Ruestung die entspr.
+   Meldung an den Traeger und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doWearMessage(), doWieldMessage(), doUnwieldMessage()
+
 Last modified: Sat Jun 26 15:41:00 1999 by Paracelsus
-
diff --git a/doc/lfun/doUnwieldMessage b/doc/lfun/doUnwieldMessage
index dbf07ce..f2245b6 100644
--- a/doc/lfun/doUnwieldMessage
+++ b/doc/lfun/doUnwieldMessage
@@ -1,25 +1,43 @@
+
 doUnwieldMessage()
+******************
 
-FUNKTION:
-	void doUnwieldMessage(object wielded_by);
 
-DEFINIERT IN:
-	/std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	wielded_by
-          Das Lebewesen, dass die (Parier)Waffe bisher gezueckt hatte.
+   void doUnwieldMessage(object wielded_by);
 
-BESCHREIBUNG:
-        Diese Funktion gibt beim Wegstecken einer Waffe die entspr.
-        Meldung an den Benutzer und die Umgebung aus.
 
-RUeCKGABEWERT:
-	keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        doWearMessage(), doUnwearMessage(), doWieldMessage()
+   /std/weapon/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   wielded_by
+     Das Lebewesen, dass die (Parier)Waffe bisher gezueckt hatte.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Wegstecken einer Waffe die entspr.
+   Meldung an den Benutzer und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doWearMessage(), doUnwearMessage(), doWieldMessage()
+
 Last modified: Sat Jun 26 15:32:00 1999 by Paracelsus
-
diff --git a/doc/lfun/doWearMessage b/doc/lfun/doWearMessage
index 1962d5c..6770180 100644
--- a/doc/lfun/doWearMessage
+++ b/doc/lfun/doWearMessage
@@ -1,26 +1,44 @@
+
 doWearMessage()
+***************
 
-FUNKTION:
-	varargs void doWearMessage(int all);
 
-DEFINIERT IN:
-	/std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	all
-          Wurde "trage alles"/"trage alle ruestungen" eingegeben, so
-          ist all gesetzt, ansonsten nicht.
+   varargs void doWearMessage(int all);
 
-BESCHREIBUNG:
-        Diese Funktion gibt beim Anziehen einer Ruestung die entspr.
-        Meldung an den Traeger und die Umgebung aus.
 
-RUeCKGABEWERT:
-	keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        doUnwearMessage(), doWieldMessage(), doUnwieldMessage()
+   /std/armour/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   all
+     Wurde "trage alles"/"trage alle ruestungen" eingegeben, so
+     ist all gesetzt, ansonsten nicht.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Anziehen einer Ruestung die entspr.
+   Meldung an den Traeger und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doUnwearMessage(), doWieldMessage(), doUnwieldMessage()
+
 Last modified: Sat Jun 26 15:30:00 1999 by Paracelsus
-
diff --git a/doc/lfun/doWieldMessage b/doc/lfun/doWieldMessage
index 2315faa..a3b737f 100644
--- a/doc/lfun/doWieldMessage
+++ b/doc/lfun/doWieldMessage
@@ -1,24 +1,42 @@
+
 doWieldMessage()
+****************
 
-FUNKTION:
-	void doWieldMessage();
 
-DEFINIERT IN:
-	/std/weapon/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-	keine
+   void doWieldMessage();
 
-BESCHREIBUNG:
-        Diese Funktion gibt beim Zuecken einer Waffe die entspr.
-        Meldung an den Benutzer und die Umgebung aus.
 
-RUeCKGABEWERT:
-	keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-        doWearMessage(), doUnwearMessage(), doUnwieldMessage()
+   /std/weapon/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Zuecken einer Waffe die entspr.
+   Meldung an den Benutzer und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doWearMessage(), doUnwearMessage(), doUnwieldMessage()
+
 Last modified: Sat Jun 26 15:33:00 1999 by Paracelsus
-
diff --git a/doc/lfun/do_damage b/doc/lfun/do_damage
index 2d58839..91c6bc8 100644
--- a/doc/lfun/do_damage
+++ b/doc/lfun/do_damage
@@ -1,44 +1,70 @@
+
+do_damage()
+***********
+
 do_damage(L)
-FUNKTION:
-     int do_damage(int dam,mixed enemy);
 
-DEFINIERT IN:
-     /std/living/life.c
 
-ARGUMENTE:
-     int dam
-	  Die abzuziehenden Lebenspunkte (HP).
-     object enemy
-	  Das Objekt, welches den Schaden zufuegt.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Dem Lebewesen werden <dam> HP abgezogen. Falls weniger als 0 HP uebrig
-     bleiben, so stirbt es automatisch mittels die().
-     Ein Lebewesen, welches sich bewegt hat, trifft die ersten Kampfrunden
-     sehr viel schlechter, um Rein-Raus-Attacken zu verhindern. Dieses
-     Vorgehen kann man mittels P_ENABLE_IN_ATTACK_OUT deaktivieren.
-     Lebewesen, welche P_NO_ATTACK gesetzt haben, kann man mit dieser
-     Funktion nicht schaden.
+   int do_damage(int dam,mixed enemy);
 
-RUeCKGABEWERT:
-     Der tatsaechlich verursachte Schaden.
 
-BEMERKUNGEN:
-     Beim Gegner <enemy>, falls vorhanden, werden XP und ALIGN entsprechend
-     angepasst, im Opfer wird der Gegner in P_KILLER vermerkt, der Kampf wird
-     beendet.
-     Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
-     uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
-     und balancetechnisch guenstigere Loesung, da Defend() magische
-     Verteidigungen, die der Spieler bei sich hat beruecksichtigt.
-     Es sollte also allein schon aus Fairness gegenueber den Objekten
-     anderer Magier Defend() immer dem direkten reduce_hit_points() oder
-     do_damage() vorgezogen werden. Mittels der Flags in 'spell' kann man
-     sehr viele Parameter beeinflussen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Verwandt:	Defend(L), reduce_hit_points(L), die(L)
-     Props:	P_NO_ATTACK, P_ENABLE_IN_ATTACK_OUT, P_KILLER
-		P_XP, P_ALIGN
+   /std/living/life.c
 
-23.Feb.2004 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   int dam
+        Die abzuziehenden Lebenspunkte (HP).
+   object enemy
+        Das Objekt, welches den Schaden zufuegt.
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden <dam> HP abgezogen. Falls weniger als 0 HP uebrig
+   bleiben, so stirbt es automatisch mittels die().
+   Ein Lebewesen, welches sich bewegt hat, trifft die ersten Kampfrunden
+   sehr viel schlechter, um Rein-Raus-Attacken zu verhindern. Dieses
+   Vorgehen kann man mittels P_ENABLE_IN_ATTACK_OUT deaktivieren.
+   Lebewesen, welche P_NO_ATTACK gesetzt haben, kann man mit dieser
+   Funktion nicht schaden.
+
+
+RUeCKGABEWERT
+=============
+
+   Der tatsaechlich verursachte Schaden.
+
+
+BEMERKUNGEN
+===========
+
+   Beim Gegner <enemy>, falls vorhanden, werden XP und ALIGN entsprechend
+   angepasst, im Opfer wird der Gegner in P_KILLER vermerkt, der Kampf wird
+   beendet.
+   Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
+   uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
+   und balancetechnisch guenstigere Loesung, da Defend() magische
+   Verteidigungen, die der Spieler bei sich hat beruecksichtigt.
+   Es sollte also allein schon aus Fairness gegenueber den Objekten
+   anderer Magier Defend() immer dem direkten reduce_hit_points() oder
+   do_damage() vorgezogen werden. Mittels der Flags in 'spell' kann man
+   sehr viele Parameter beeinflussen.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  Defend(L), reduce_hit_points(L), die(L)
+   Props:     P_NO_ATTACK, P_ENABLE_IN_ATTACK_OUT, P_KILLER
+              P_XP, P_ALIGN
+
+23.Feb.2004 Gloinson
diff --git a/doc/lfun/do_frage b/doc/lfun/do_frage
index dc08610..6c848b8 100644
--- a/doc/lfun/do_frage
+++ b/doc/lfun/do_frage
@@ -1,21 +1,42 @@
+
 do_frage()
-FUNKTION:
-     int do_frage(string text)
+**********
 
-DEFINIERT IN:
-     /std/npc/info.c
 
-ARGUMENTE:
-     string str	 - Schluesselwort der Frage
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Bearbeitet ein Schluesselwort, das mit "frage <wen> nach " uebergeben
-     wurde. Gibt entsprechende Antworten formatiert aus.
+   int do_frage(string text)
 
-BEMERKUNGEN:
-     Recht komplex, besser nicht ueberschreiben wenn man es nicht versteht.
 
-SIEHE AUCH:
-     Verwandt:  GetInfoArr, AddInfo
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+ARGUMENTE
+=========
+
+   string str  - Schluesselwort der Frage
+
+
+BESCHREIBUNG
+============
+
+   Bearbeitet ein Schluesselwort, das mit "frage <wen> nach " uebergeben
+   wurde. Gibt entsprechende Antworten formatiert aus.
+
+
+BEMERKUNGEN
+===========
+
+   Recht komplex, besser nicht ueberschreiben wenn man es nicht versteht.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  GetInfoArr, AddInfo
 
 31.Mar 2007 Gloinson
diff --git a/doc/lfun/do_unwear b/doc/lfun/do_unwear
index cecfa34..dd91478 100644
--- a/doc/lfun/do_unwear
+++ b/doc/lfun/do_unwear
@@ -1,34 +1,56 @@
+
 do_unwear()
+***********
 
-FUNKTION:
-     varargs int do_unwear(string str, int silent);
 
-DEFINIERT IN:
-     /std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     str
-          String der normalerweise dem Parameter des "ziehe"-Kommandos
-          entspricht.
+   varargs int do_unwear(string str, int silent);
 
-     silent
-          1, wenn das Ausziehen ohne Meldungen durchgefuehrt werden soll.
 
-BESCHREIBUNG:
-     Diese Funktion stellt fest, ob die Ruestung sich durch str
-     identifizieren laesst und angezogen ist und ruft im Erfolgsfall
-     UnWear(silent) auf.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     1, wenn alles gut ging, ansonsten 0.
+   /std/armour/combat.c
 
-BEMERKUNGEN:
-     Wenn man Ruestungen "von aussen" ausziehen will, sollte man direkt
-     UnWear() verwenden!
 
-SIEHE AUCH:
-     do_wear(), UnWear(), RemoveFunc(), InformUnwear(),
-     /std/armour/combat.c
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   str
+        String der normalerweise dem Parameter des "ziehe"-Kommandos
+        entspricht.
+
+   silent
+        1, wenn das Ausziehen ohne Meldungen durchgefuehrt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion stellt fest, ob die Ruestung sich durch str
+   identifizieren laesst und angezogen ist und ruft im Erfolgsfall
+   UnWear(silent) auf.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn alles gut ging, ansonsten 0.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn man Ruestungen "von aussen" ausziehen will, sollte man direkt
+   UnWear() verwenden!
+
+
+SIEHE AUCH
+==========
+
+   do_wear(), UnWear(), RemoveFunc(), InformUnwear(),
+   /std/armour/combat.c
+
 Last modified: Sun Jun 27 22:29:00 1999 by Paracelsus
diff --git a/doc/lfun/do_wear b/doc/lfun/do_wear
index fe227d6..abf7051 100644
--- a/doc/lfun/do_wear
+++ b/doc/lfun/do_wear
@@ -1,27 +1,46 @@
+
 do_wear()
+*********
 
-FUNKTION:
-     varargs int do_wear(string str, int silent);
 
-DEFINIERT IN:
-     /std/armour/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     str
-          String, der normalerweise dem Parameter des
-          "ziehe/trage"-Kommandos entspricht.
-     silent
-          1, wenn das Anziehen ohne Meldungen durchgefuehrt werden soll.
+   varargs int do_wear(string str, int silent);
 
-BESCHREIBUNG:
-     Wenn sich die Ruestung mit "str" identifizieren laesst, wird versucht,
-     sie mittels DoWear() anzuziehen.
 
-RUeCKGABEWERT:
-     1, wenn sich die Ruestung anziehen liess, sonst 0.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     do_unwear(), DoWear(), WearFunc(), InformWear(), /std/armour/combat.c
+   /std/armour/combat.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   str
+        String, der normalerweise dem Parameter des
+        "ziehe/trage"-Kommandos entspricht.
+   silent
+        1, wenn das Anziehen ohne Meldungen durchgefuehrt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich die Ruestung mit "str" identifizieren laesst, wird versucht,
+   sie mittels DoWear() anzuziehen.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn sich die Ruestung anziehen liess, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   do_unwear(), DoWear(), WearFunc(), InformWear(), /std/armour/combat.c
+
 Last modified: Sun Jun 27 22:31:00 1999 by Paracelsus
diff --git a/doc/lfun/drink_alcohol b/doc/lfun/drink_alcohol
index 28ed1dd..01d0a77 100644
--- a/doc/lfun/drink_alcohol
+++ b/doc/lfun/drink_alcohol
@@ -1,83 +1,112 @@
-FUNKTION:
-    public varargs int drink_alcohol(int strength, int testonly, string mytext)
 
-DEFINIERT IN:
-    /std/living/life.c
+drink_alcohol()
+***************
 
-ARGUMENTE:
-    strength: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert
-    testonly: Ist das Flag gesetzt, wird dem Spieler kein ALCOHOL zugefuehrt.
-              Darf nur zum Testen der Heilstelle verwendet werden und muss
-              im normalen Betrieb auf '0' stehen!
-    mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
-            darf sich hier was nettes ausdenken.
-            Achtung: Das unterdrueckt nicht die "Nuechtern"-Meldung, die bei
-            negativem strength auftreten kann, wenn P_ALCOHOL wieder 0 ist.
 
-BESCHREIBUNG:
-    Es wird geprueft, ob dem Spieler der angegebene Wert fuer 'strength'
-    auf seine aktuelle P_ALCOHOL addiert werden kann oder nicht. Falls
-    das moeglich ist und testonly = 0, wird P_ALCOHOL entsprechend
-    aktualisiert.
+FUNKTION
+========
 
-    Sollen neben P_ALCOHOL noch weitere Props manipuliert werden - bspw. zur
-    Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+   public varargs int drink_alcohol(int strength, int testonly, string mytext)
 
-RUECKGABEWERT:
-    0 bei [potentiellem] Misserfolg (strength + P_ALCOHOL > P_MAX_ALCOHOL)
-    1 bei [potentiellem] Erfolg
-    * potentiell bezieht sich hier auf Nutzung mit 'testonly' != 0
 
-BEMERKUNG:
-    drink_alocohol() bitte anstatt eigener Manipulationen von P_ALCOHOL und
-    P_MAX_ALCOHOL verwenden.
+DEFINIERT IN
+============
 
-    Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+   /std/living/life.c
 
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
 
-BEISPIEL:
-    int heilstelle() {
-      if(this_player()->drink_alcohol(10, 0,
-                                      "Du prustest in den Schnaps. "
-                                      "Der passt nicht mehr rein.\n")) {
-        // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert
-        // Nachricht an den Spieler:
-        tell_object(this_player(),
-                    break_string("Du trinkst den Schnaps aus.", 78));
+ARGUMENTE
+=========
 
-        // Nachricht an andere Livings im Raum
-        object ob = first_inventory(environment(this_player()));
-        do {
-          if(living(ob) && ob!=this_player())
-            ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
-                           MT_LOOK|MT_LISTEN,
-                           MA_DRINK);
-          ob = next_inventory(ob);
-        } while(ob);
+   strength: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein ALCOHOL zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Nuechtern"-Meldung, die bei
+           negativem strength auftreten kann, wenn P_ALCOHOL wieder 0 ist.
 
-        // Rassenabhaengige Heilung: Sofort oder in Schritten
-        // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
-        if(this_player()->QueryProp(P_REAL_RACE)=="Schnapsdrossel")
-          this_player()->heal_self(30);
-        else {
-          this_player()->buffer_hp(30,5);
-          this_player()->buffer_sp(30,5);
-        }
-      }
 
-      return 1;
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob dem Spieler der angegebene Wert fuer 'strength'
+   auf seine aktuelle P_ALCOHOL addiert werden kann oder nicht. Falls
+   das moeglich ist und testonly = 0, wird P_ALCOHOL entsprechend
+   aktualisiert.
+
+   Sollen neben P_ALCOHOL noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei [potentiellem] Misserfolg (strength + P_ALCOHOL > P_MAX_ALCOHOL)
+   1 bei [potentiellem] Erfolg
+   * potentiell bezieht sich hier auf Nutzung mit 'testonly' != 0
+
+
+BEMERKUNG
+=========
+
+   drink_alocohol() bitte anstatt eigener Manipulationen von P_ALCOHOL und
+   P_MAX_ALCOHOL verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     if(this_player()->drink_alcohol(10, 0,
+                                     "Du prustest in den Schnaps. "
+                                     "Der passt nicht mehr rein.\n")) {
+       // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert
+       // Nachricht an den Spieler:
+       tell_object(this_player(),
+                   break_string("Du trinkst den Schnaps aus.", 78));
+
+       // Nachricht an andere Livings im Raum
+       object ob = first_inventory(environment(this_player()));
+       do {
+         if(living(ob) && ob!=this_player())
+           ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
+                          MT_LOOK|MT_LISTEN,
+                          MA_DRINK);
+         ob = next_inventory(ob);
+       } while(ob);
+
+       // Rassenabhaengige Heilung: Sofort oder in Schritten
+       // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+       if(this_player()->QueryProp(P_REAL_RACE)=="Schnapsdrossel")
+         this_player()->heal_self(30);
+       else {
+         this_player()->buffer_hp(30,5);
+         this_player()->buffer_sp(30,5);
+       }
      }
-SIEHE AUCH:
-     Aehnlich:  consume, eat_food, drink_soft
-     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp, buffer_sp
-     Timing:    check_and_update_timed_key
-     Enttanken: defuel_drink, defuel_food
-     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+     return 1;
+    }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, eat_food, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/lfun/drink_soft b/doc/lfun/drink_soft
index 4ab6e07..0f030f6 100644
--- a/doc/lfun/drink_soft
+++ b/doc/lfun/drink_soft
@@ -1,83 +1,111 @@
-FUNKTION:
-    public varargs int drink_soft(int strength, int testonly, string mytext)
 
-DEFINIERT IN:
-    /std/living/life.c
+drink_soft()
+************
 
-ARGUMENTE:
-    strength: Wird zu dem augenblicklichen Saettigungsgrad (P_DRINK) addiert.
-    testonly: Ist das Flag gesetzt, wird dem Spieler kein DRINK zugefuehrt.
-              Darf nur zum Testen der Heilstelle verwendet werden und muss
-              im normalen Betrieb auf '0' stehen!
-    mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
-            darf sich hier was nettes ausdenken.
-            Achtung: Das unterdrueckt nicht die "Durst"-Meldung, die bei
-            negativem strength auftritt, wenn P_DRINK wieder 0 ist.
 
-BESCHREIBUNG:
-    Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf
-    aktuelle P_DRINK addiert werden kann oder nicht. Ist dies moeglich,
-    wird es gemacht, es sei denn das testonly != 0.
+FUNKTION
+========
 
-    Sollen neben P_DRINK noch weitere Props manipuliert werden - bspw. zur
-    Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+   public varargs int drink_soft(int strength, int testonly, string mytext)
 
-RUECKGABEWERT:
-     0, wenn strength + P_DRINK > P_MAX_DRINK
-    >0, wenn Erfolg
 
-BEMERKUNG:
-    drink_soft() bitte anstatt eigener Manipulationen von P_DRINK und
-    P_MAX_DRINK verwenden.
+DEFINIERT IN
+============
 
-    Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+   /std/living/life.c
 
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
 
-BEISPIEL:
-    int heilstelle() {
-      if(this_player()->drink_soft(10, 0, "Du blubberst nicht ueberzeugt "
-                                   "in der Limonade. Das ist zu viel.\n")) {
-        // Platz fuer 10 "Trinken" war noch, diese sind jetzt bereits addiert
-        // Nachricht an den Spieler:
-        tell_object(this_player(), break_string("Du nimmst einen grossen "
-                    "Schluck zuckersuesse Limonade.", 78));
+ARGUMENTE
+=========
 
-        // alle anderen im Raum bekommen es ggf auch mit:
-        // 1) filter(..., #'living) ergibt die Lebewesen im Raum
-        // 2) filter_objects(..., "ReceiveMsg") ruft ReceiveMsg an jedem
-        // 3) ReceiveMsg(...) bekommt die Folgeparameter
-        filter_objects(filter(all_inventory(environment(this_player())),
-                              #'living) - ({this_player()}),
-                       "ReceiveMsg",
-                       this_player()->Name()+
-                         " trinkt einen Schluck Limonade.",
-                       MT_LOOK|MT_LISTEN,
-                       MA_DRINK);
+   strength: Wird zu dem augenblicklichen Saettigungsgrad (P_DRINK) addiert.
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein DRINK zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Durst"-Meldung, die bei
+           negativem strength auftritt, wenn P_DRINK wieder 0 ist.
 
-        // Rassenabhaengige Heilung: Sofort oder in Schritten
-        // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
-        if(this_player()->QueryProp(P_REAL_RACE)=="Saufziege")
-          this_player()->heal_self(30);
-        else {
-          this_player()->buffer_hp(30,5);
-          this_player()->buffer_sp(30,5);
-        }
-      }
 
-      return 1;
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf
+   aktuelle P_DRINK addiert werden kann oder nicht. Ist dies moeglich,
+   wird es gemacht, es sei denn das testonly != 0.
+
+   Sollen neben P_DRINK noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+    0, wenn strength + P_DRINK > P_MAX_DRINK
+   >0, wenn Erfolg
+
+
+BEMERKUNG
+=========
+
+   drink_soft() bitte anstatt eigener Manipulationen von P_DRINK und
+   P_MAX_DRINK verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     if(this_player()->drink_soft(10, 0, "Du blubberst nicht ueberzeugt "
+                                  "in der Limonade. Das ist zu viel.\n")) {
+       // Platz fuer 10 "Trinken" war noch, diese sind jetzt bereits addiert
+       // Nachricht an den Spieler:
+       tell_object(this_player(), break_string("Du nimmst einen grossen "
+                   "Schluck zuckersuesse Limonade.", 78));
+
+       // alle anderen im Raum bekommen es ggf auch mit:
+       // 1) filter(..., #'living) ergibt die Lebewesen im Raum
+       // 2) filter_objects(..., "ReceiveMsg") ruft ReceiveMsg an jedem
+       // 3) ReceiveMsg(...) bekommt die Folgeparameter
+       filter_objects(filter(all_inventory(environment(this_player())),
+                             #'living) - ({this_player()}),
+                      "ReceiveMsg",
+                      this_player()->Name()+
+                        " trinkt einen Schluck Limonade.",
+                      MT_LOOK|MT_LISTEN,
+                      MA_DRINK);
+
+       // Rassenabhaengige Heilung: Sofort oder in Schritten
+       // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+       if(this_player()->QueryProp(P_REAL_RACE)=="Saufziege")
+         this_player()->heal_self(30);
+       else {
+         this_player()->buffer_hp(30,5);
+         this_player()->buffer_sp(30,5);
+       }
      }
 
-SIEHE AUCH:
-     Aehnlich:  consume, drink_alcohol, eat_food
-     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp, buffer_sp
-     Timing:    check_and_update_timed_key
-     Enttanken: defuel_drink, defuel_food
-     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+     return 1;
+    }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, drink_alcohol, eat_food
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/lfun/drop b/doc/lfun/drop
index ab8dd19..cdd372b 100644
--- a/doc/lfun/drop
+++ b/doc/lfun/drop
@@ -1,45 +1,70 @@
+
 drop()
+******
 
-FUNKTION:
-    public varargs int drop(object o, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object o
-        Das Objekt, das fallengelassen werden soll.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int drop(object o, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC laesst das Objekt fallen. Gibt o->move() keinen
-    positiven Wert zurueck, beispielsweise weil das Objekt verflucht ist,
-    bekommt er eine entsprechende Fehlermeldung.
 
-RUECKGABEWERT:
-    Wenn das Fallenlassen geklappt hat, 1, ansonsten 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
-    fallenlassen lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
-    moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
-    manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+   /std/living/put_and_get.c
 
-    Die Funktion prueft nicht, ob der Spieler/NPC das Objekt ueberhaupt hat,
-    das muss man ggf. selbst ermitteln.
 
-BEISPIEL:
-    if (this_player()->drop(obj, ({
-            "Du wirfst @WEN2 in den Saeureteich.\n",
-            "@WER1 wirft @WENU2 in den Saeureteich.\n" })))
-        obj->remove();
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    move(L), P_DROP_MSG, drop_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
-    P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP
+   object o
+       Das Objekt, das fallengelassen werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC laesst das Objekt fallen. Gibt o->move() keinen
+   positiven Wert zurueck, beispielsweise weil das Objekt verflucht ist,
+   bekommt er eine entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Fallenlassen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
+   fallenlassen lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob der Spieler/NPC das Objekt ueberhaupt hat,
+   das muss man ggf. selbst ermitteln.
+
+
+BEISPIEL
+========
+
+   if (this_player()->drop(obj, ({
+           "Du wirfst @WEN2 in den Saeureteich.\n",
+           "@WER1 wirft @WENU2 in den Saeureteich.\n" })))
+       obj->remove();
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_DROP_MSG, drop_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP
+
 Last modified: Thu Aug 28 22:20:37 2008 by Amynthor
diff --git a/doc/lfun/drop_obj b/doc/lfun/drop_obj
index 2f25e0f..3e1057f 100644
--- a/doc/lfun/drop_obj
+++ b/doc/lfun/drop_obj
@@ -1,28 +1,44 @@
+
 drop_obj()
+**********
+
 
 FUNKTION
-    int drop_obj(object ob);
+========
 
-DEFINIERT IN:
+   int drop_obj(object ob);
 
-    /std/living/put_and_get.c
 
-ARGUMENTE:
+DEFINIERT IN
+============
 
-    ob  Das Objekt, das von dem Lebewesen, in dem diese Funktion aufgerufen
-        wird, fallengelassen werden soll.
+   /std/living/put_and_get.c
 
-BESCHREIBUNG:
 
-    Das Lebewesen, in dem diese Funktion aufgerufen werden soll, laesst
-    den angegebenen Gegenstand fallen, wenn dies moeglich ist.
+ARGUMENTE
+=========
 
-RUeCKGABEWERT:
-    1, wenn das Objekt fallen gelassen wurde oder dies nicht moeglich war.
-    (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
-    0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
-    plaziert.
+   ob  Das Objekt, das von dem Lebewesen, in dem diese Funktion aufgerufen
+       wird, fallengelassen werden soll.
 
-SIEHE AUCH:
 
-    find_obs(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, laesst
+   den angegebenen Gegenstand fallen, wenn dies moeglich ist.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt fallen gelassen wurde oder dies nicht moeglich war.
+   (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
+   plaziert.
+
+
+SIEHE AUCH
+==========
+
+   find_obs(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
diff --git a/doc/lfun/drop_objects b/doc/lfun/drop_objects
index c1045f4..93cbee5 100644
--- a/doc/lfun/drop_objects
+++ b/doc/lfun/drop_objects
@@ -1,48 +1,73 @@
+
 drop_objects()
+**************
 
-FUNKTION:
-    public varargs int drop_objects(string str, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    string str
-        Was fallengelassen werden soll.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int drop_objects(string str, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC laesst die in <str> benannten Sachen fallen.
-    Kann er ein Objekt nicht fallenlassen, bekommt er eine entsprechende
-    Fehlermeldung. Wenn keine Objekte auf <str> passen, wird per
-    _notify_fail() eine Meldung gesetzt, aber noch nicht ausgegeben.
 
-RUECKGABEWERT:
-    Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
-    etwas fallengelassen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
-    Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+   /std/living/put_and_get.c
 
-BEISPIEL:
-    private int cmd_opfern(string str)
-    {
-        notify_fail("WAS moechtest Du opfern?\n");
 
-        if (!this_player()->drop_objects(str, ({ "Du opferst @WEN2.",
-                                                 "@WER1 opfert @WENU2.\n" })))
-            return 0;
+ARGUMENTE
+=========
 
-        filter_objects(this_player()->moved_objects(), "remove");
-        return 1;
-    }
+   string str
+       Was fallengelassen werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
 
-SIEHE AUCH:
-    move(L), drop(L), P_DROP_MSG, find_objects(L), moved_objects(L)
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC laesst die in <str> benannten Sachen fallen.
+   Kann er ein Objekt nicht fallenlassen, bekommt er eine entsprechende
+   Fehlermeldung. Wenn keine Objekte auf <str> passen, wird per
+   _notify_fail() eine Meldung gesetzt, aber noch nicht ausgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
+   etwas fallengelassen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
+   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+
+
+BEISPIEL
+========
+
+   private int cmd_opfern(string str)
+   {
+       notify_fail("WAS moechtest Du opfern?\n");
+
+       if (!this_player()->drop_objects(str, ({ "Du opferst @WEN2.",
+                                                "@WER1 opfert @WENU2.\n" })))
+           return 0;
+
+       filter_objects(this_player()->moved_objects(), "remove");
+       return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   move(L), drop(L), P_DROP_MSG, find_objects(L), moved_objects(L)
+
 Last modified: Fri Jul 25 10:59:37 2008 by Amynthor
diff --git a/doc/lfun/eat_food b/doc/lfun/eat_food
index ec0102d..32327e2 100644
--- a/doc/lfun/eat_food
+++ b/doc/lfun/eat_food
@@ -1,86 +1,114 @@
-FUNKTION:
-    public varargs int eat_food(int food, int testonly, string mytext)
 
-DEFINIERT IN:
-    /std/living/life.c
+eat_food()
+**********
 
-ARGUMENTE:
-    food: Wird zu dem augenblicklichen Saettigungsgrad (P_FOOD) addiert.
-    testonly: Ist das Flag gesetzt, wird dem Spieler kein FOOD zugefuehrt.
-              Darf nur zum Testen der Heilstelle verwendet werden und muss
-              im normalen Betrieb auf '0' stehen!
-    mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
-            darf sich hier was nettes ausdenken.
-            Achtung: Das unterdrueckt nicht die "Hunger"-Meldung, die bei
-            negativem food auftreten kann, wenn P_FOOD wieder 0 ist.
 
-BESCHREIBUNG:
-    Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf seine
-    aktuelle P_FOOD addiert werden kann oder nicht. Ist dies moeglich, wird
-    wird es gemacht, es sei denn das testonly != 0.
+FUNKTION
+========
 
-    Sollen neben P_FOOD noch weitere Props manipuliert werden - bspw. zur
-    Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+   public varargs int eat_food(int food, int testonly, string mytext)
 
-RUECKGABEWERT:
-     0, wenn strength + P_FOOD > P_MAX_FOOD.
-    >0, wenn Erfolg.
 
-BEMERKUNG:
-    eat_food() bitte anstatt eigener Manipulationen von P_FOOD und
-    P_MAX_FOOD verwenden.
+DEFINIERT IN
+============
 
-    Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+   /std/living/life.c
 
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
 
-BEISPIEL:
-    int heilstelle() {
-      // Wenn auf das P_FOOD des Spielers die angegebenen 10 nicht mehr addiert
-      // addiert werden koennen (weil sonst P_MAX_FOOD ueberschritten wird),
-      // wird die Fehlermeldung ausgegeben, dass der Spieler nichts mehr
-      // essen/trinken kann.
-      // Bei gesetztem 'mytext' wird 'mytext' an den Spieler ausgegeben.
-      // Ansonsten wird die Standardmeldung ausgegeben.
-      if (!this_player()->eat_food(10, 0, "Der Keks ist einfach "
-                                          "zuviel fuer Dich.\n") )
-        return 1;
+ARGUMENTE
+=========
 
-      // Spieler hatte noch ausreichend Spielraum bei P_FOOD. Die 10 sind 
-      // schon addiert worden. Jetzt Nachricht ausgeben:
-      tell_object(this_player(), break_string("Du knabberst ein bisschen an "
-                  "dem Keks herum und fuehlst Dich gleich viel besser.", 78));
+   food: Wird zu dem augenblicklichen Saettigungsgrad (P_FOOD) addiert.
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein FOOD zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Hunger"-Meldung, die bei
+           negativem food auftreten kann, wenn P_FOOD wieder 0 ist.
 
-      // alle Lebewesen im Raum bekommen das auch mit
-      foreach(object ob:
-              (filter(all_inventory(environment(this_player())), #'living) -
-               ({this_player()})))
-        ob->ReceiveMsg(this_player()->Name()+" knuspert einen Keks weg.",
-                       MT_LOOK|MT_LISTEN,
-                       MA_EAT);
 
-      // Rassenabhaengige Heilung: Sofort oder in Schritten
-      // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
-      if(this_player()->QueryProp(P_REAL_RACE)=="Kruemelmonster")
-        this_player()->heal_self(30);
-      else {
-        this_player()->buffer_hp(30,5);
-        this_player()->buffer_sp(30,5);
-      }
+BESCHREIBUNG
+============
 
-      return 1;
-    }
+   Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf seine
+   aktuelle P_FOOD addiert werden kann oder nicht. Ist dies moeglich, wird
+   wird es gemacht, es sei denn das testonly != 0.
 
-SIEHE AUCH:
-     Aehnlich:  consume, drink_alcohol, drink_soft
-     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
-                buffer_hp, buffer_sp
-     Timing:    check_and_update_timed_key
-     Enttanken: defuel_drink, defuel_food
-     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+   Sollen neben P_FOOD noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+    0, wenn strength + P_FOOD > P_MAX_FOOD.
+   >0, wenn Erfolg.
+
+
+BEMERKUNG
+=========
+
+   eat_food() bitte anstatt eigener Manipulationen von P_FOOD und
+   P_MAX_FOOD verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     // Wenn auf das P_FOOD des Spielers die angegebenen 10 nicht mehr addiert
+     // addiert werden koennen (weil sonst P_MAX_FOOD ueberschritten wird),
+     // wird die Fehlermeldung ausgegeben, dass der Spieler nichts mehr
+     // essen/trinken kann.
+     // Bei gesetztem 'mytext' wird 'mytext' an den Spieler ausgegeben.
+     // Ansonsten wird die Standardmeldung ausgegeben.
+     if (!this_player()->eat_food(10, 0, "Der Keks ist einfach "
+                                         "zuviel fuer Dich.\n") )
+       return 1;
+
+     // Spieler hatte noch ausreichend Spielraum bei P_FOOD. Die 10 sind
+     // schon addiert worden. Jetzt Nachricht ausgeben:
+     tell_object(this_player(), break_string("Du knabberst ein bisschen an "
+                 "dem Keks herum und fuehlst Dich gleich viel besser.", 78));
+
+     // alle Lebewesen im Raum bekommen das auch mit
+     foreach(object ob:
+             (filter(all_inventory(environment(this_player())), #'living) -
+              ({this_player()})))
+       ob->ReceiveMsg(this_player()->Name()+" knuspert einen Keks weg.",
+                      MT_LOOK|MT_LISTEN,
+                      MA_EAT);
+
+     // Rassenabhaengige Heilung: Sofort oder in Schritten
+     // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+     if(this_player()->QueryProp(P_REAL_RACE)=="Kruemelmonster")
+       this_player()->heal_self(30);
+     else {
+       this_player()->buffer_hp(30,5);
+       this_player()->buffer_sp(30,5);
+     }
+
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, drink_alcohol, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/lfun/execute_anything b/doc/lfun/execute_anything
index 9c889f0..39ec45a 100644
--- a/doc/lfun/execute_anything
+++ b/doc/lfun/execute_anything
@@ -1,42 +1,64 @@
+
 execute_anything()
-FUNKTION:
-    protected mixed execute_anything(mixed fun, mixed args, ...)
+******************
 
-DEFINIERT IN:
-    /std/util/executer.c
 
-ARGUMENTE:
-    mixed fun        auszufuehrende Funktion/Array/Closure ... anything
-    mixed args       weitere Argumente, werden weiter uebergeben
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Fuehrt "alles" aus:
-    
-    'fun' kann sein:
-    - eine Closure
-      [funcall(fun, args, ...)]
-    - einen String als Funktion im Objekt
-      [call_other(this_object(), fun, args, ...)]
-    - ein Array mit Objekt/Objektnamen + Funktion als Aufruf der Funktion am
-      Objekt/Objektnamen:
-      [call_other(array[0], array[1], args...)]
+   protected mixed execute_anything(mixed fun, mixed args, ...)
 
-    Wird execute_anything() aus dem restriction_checker gerufen, wird als
-    erster Parameter immer das gepruefte Living uebergeben.
 
-BEMERKUNGEN:
-    Es kann sich anbieten, die gerufene Funktion mit varargs-Argumenten zu
-    gestalten, damit ihr mehr Argumente uebergeben werden koennen als in der
-    Funktionsdefinition angegeben sind. 
+DEFINIERT IN
+============
 
-    Der Restriktionspruefer (/std/restriction_checker) versteht im Falle eines
-    Arrays mit Objekt/Objektnamen + Funktion auch ein Array mit mehr als 2
-    Elementen. Die weiteren Elemente werden dann zu weiteren Argumenten der
-    gerufenen Funktion. Hierbei wird <pl> ggf. aber als erstes Argument vor
-    alle anderen eingefuegt.
+   /std/util/executer.c
 
-SIEHE AUCH:
-    check_restrictions, varargs
+
+ARGUMENTE
+=========
+
+   mixed fun        auszufuehrende Funktion/Array/Closure ... anything
+   mixed args       weitere Argumente, werden weiter uebergeben
+
+
+BESCHREIBUNG
+============
+
+   Fuehrt "alles" aus:
+
+
+
+   'fun' kann sein:
+   - eine Closure
+     [funcall(fun, args, ...)]
+   - einen String als Funktion im Objekt
+     [call_other(this_object(), fun, args, ...)]
+   - ein Array mit Objekt/Objektnamen + Funktion als Aufruf der Funktion am
+     Objekt/Objektnamen:
+     [call_other(array[0], array[1], args...)]
+
+   Wird execute_anything() aus dem restriction_checker gerufen, wird als
+   erster Parameter immer das gepruefte Living uebergeben.
+
+
+BEMERKUNGEN
+===========
+
+   Es kann sich anbieten, die gerufene Funktion mit varargs-Argumenten zu
+   gestalten, damit ihr mehr Argumente uebergeben werden koennen als in der
+   Funktionsdefinition angegeben sind.
+
+   Der Restriktionspruefer (/std/restriction_checker) versteht im Falle eines
+   Arrays mit Objekt/Objektnamen + Funktion auch ein Array mit mehr als 2
+   Elementen. Die weiteren Elemente werden dann zu weiteren Argumenten der
+   gerufenen Funktion. Hierbei wird <pl> ggf. aber als erstes Argument vor
+   alle anderen eingefuegt.
+
+
+SIEHE AUCH
+==========
+
+   check_restrictions, varargs
 
 31.12.2013, Zesstra
-
diff --git a/doc/lfun/exit b/doc/lfun/exit
index 190db91..f2d0b00 100644
--- a/doc/lfun/exit
+++ b/doc/lfun/exit
@@ -1,33 +1,56 @@
+
 exit()
+******
 
-FUNKTION:
-  varargs void exit(object liv, object dest);
 
-DEFINIERT IN:
-  /std/room/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-  liv - (object) Das bewegte Lebewesen.
-  dest - (object) Das Environment, in welches bewegt wird.
+   varargs void exit(object liv, object dest);
 
-BESCHREIBUNG:
-  Diese Funktion wird immer dann aufgerufen, wenn ein Lebewesen den
-  Raum verlaesst. Standardmaessig werden hier ggf. die Raummeldungen
-  abgestellt, man kann aber auch eigene Checks einhaengen. In dem Fall MUSS
-  man aber das geerbte exit() auf jeden Fall aufrufen.
 
-RUeCKGABEWERT:
-  keiner
+DEFINIERT IN
+============
 
-BEMERKUNG:
-  Man beachte, dass this_player() 0 sein kann, wenn z.B. ein netztoter Spieler
-  Spieler den Raum verlaesst.
-  Man beachte ausserdem, dass this_player() nicht unbedingt das bewegte Living
-  sein muss. Wenn z.B. jemand ein Lebewesen bewegt, ist TP der, der die
-  Bewegung durchfuehrt, nicht das Lebewesen.
+   /std/room/description.c
 
-SIEHE AUCH:
-  init(), this_player(), previous_object(), caller_stack(),
-  NotfiyLeave(), NotifyRemove(), NotifyDestruct()
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   liv - (object) Das bewegte Lebewesen.
+   dest - (object) Das Environment, in welches bewegt wird.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird immer dann aufgerufen, wenn ein Lebewesen den
+   Raum verlaesst. Standardmaessig werden hier ggf. die Raummeldungen
+   abgestellt, man kann aber auch eigene Checks einhaengen. In dem Fall MUSS
+   man aber das geerbte exit() auf jeden Fall aufrufen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNG
+=========
+
+   Man beachte, dass this_player() 0 sein kann, wenn z.B. ein netztoter Spieler
+   Spieler den Raum verlaesst.
+   Man beachte ausserdem, dass this_player() nicht unbedingt das bewegte Living
+   sein muss. Wenn z.B. jemand ein Lebewesen bewegt, ist TP der, der die
+   Bewegung durchfuehrt, nicht das Lebewesen.
+
+
+SIEHE AUCH
+==========
+
+   init(), this_player(), previous_object(), caller_stack(),
+   NotfiyLeave(), NotifyRemove(), NotifyDestruct()
+
 Last modified: 25.02.2009, Zesstra
diff --git a/doc/lfun/find_obs b/doc/lfun/find_obs
index 8f44384..994ac6f 100644
--- a/doc/lfun/find_obs
+++ b/doc/lfun/find_obs
@@ -1,38 +1,53 @@
+
 find_obs()
+**********
+
 
 FUNKTION
-    object* find_obs(string str, int meth)
+========
 
-DEFINIERT IN:
+   object* find_obs(string str, int meth)
 
-    /std/living/put_and_get.c
 
-ARGUMENTE:
+DEFINIERT IN
+============
 
-    str     Der String der geparsed werden soll.
-    meth    Mit Hilfe dieses Parameters koennen bestimmte Bereichs-
-            eingrenzungen vorgenommen werden (definiert in moving.h):
+   /std/living/put_and_get.c
 
-            PUT_GET_NONE - keinerlei Bereichseingrenzung.
-            PUT_GET_TAKE - es handelt sich um ein Nehmen von Gegenstaenden
-                           also wird das inventory ausgenommen.
-            PUT_GET_DROP - es handelt sich um das Entfernen von Gegenstaenden
-                           also wird das environment ausgenommen.           
-                                                                            
-BESCHREIBUNG:                                                               
-                                                                            
-    Der String (str) muss folgendes Format haben damit Objekte gefunden
-    werden.
 
-    <gegenstand> [aus container] [in mir|im raum]
+ARGUMENTE
+=========
 
-    <gegenstand> kann hierbei sowohl eine Objekt-ID als auch ein
-    Gruppenbezeichner wie z.b. "alles" sein.
+   str     Der String der geparsed werden soll.
+   meth    Mit Hilfe dieses Parameters koennen bestimmte Bereichs-
+           eingrenzungen vorgenommen werden (definiert in moving.h):
 
-RUeCKGABEWERT:
+           PUT_GET_NONE - keinerlei Bereichseingrenzung.
+           PUT_GET_TAKE - es handelt sich um ein Nehmen von Gegenstaenden
+                          also wird das inventory ausgenommen.
+           PUT_GET_DROP - es handelt sich um das Entfernen von Gegenstaenden
+                          also wird das environment ausgenommen.
 
-    Ein Array mit allen Objekten die sich angesprochen fuehlen, oder aber 0.
 
-SIEHE AUCH:
+BESCHREIBUNG
+============
 
-    drop_obj(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
+   Der String (str) muss folgendes Format haben damit Objekte gefunden
+   werden.
+
+   <gegenstand> [aus container] [in mir|im raum]
+
+   <gegenstand> kann hierbei sowohl eine Objekt-ID als auch ein
+   Gruppenbezeichner wie z.b. "alles" sein.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array mit allen Objekten die sich angesprochen fuehlen, oder aber 0.
+
+
+SIEHE AUCH
+==========
+
+   drop_obj(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
diff --git a/doc/lfun/get_killing_player b/doc/lfun/get_killing_player
index 16685b9..3500be1 100644
--- a/doc/lfun/get_killing_player
+++ b/doc/lfun/get_killing_player
@@ -1,39 +1,61 @@
+
 get_killing_player()
+********************
 
-FUNKTION:
-     protected object get_killing_player()
 
-DEFINIERT IN:
-     /std/living/life.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   protected object get_killing_player()
 
-BESCHREIBUNG:
-     Liefert im Tod (nach dem toetenden do_damage()) das Spielerobjekt, was
-     den Tod wohl zu verantworten hat, falls es ermittelt werden kann. Es
-     werden registrierte Helfer-NPC und einige schadenverursachende Objekte
-     beruecksichtigt. Hierbei wird QueryUser() in den Objekten abgefragt.
 
-     Es benoetigt ein gueltiges P_KILLER, d.h. falls das Lebewesen vergiftet
-     wurde oder das toetende Objekt aus sonstigen Gruenden nicht in P_KILLER
-     steht, funktioniert es nicht.
-     Auch gibt es bestimmt Objekte, die fuer Spieler toeten koennen, die die
-     diese Funktion nicht kennt.
-     (Dies gilt beides ebenso fuer /p/service/mupfel/getkill.c, ist also kein
-      Grund, jenes statt dieser Funktion zu nutzen.)
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     Das Objekt des Spielers, falls es ermittelt werden konnte, sonst 0.
+   /std/living/life.c
 
-BEMERKUNGEN:
-    Der Name des Spieler ist mittel Name() ermittelbar. Will man die Info, 
-    womit ein Spieler den Kill ggf. gemacht hat, kann man P_KILLER
-    auswerten/nutzen.
 
-SIEHE AUCH:
-     QueryUser
-     P_KILLER
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert im Tod (nach dem toetenden do_damage()) das Spielerobjekt, was
+   den Tod wohl zu verantworten hat, falls es ermittelt werden kann. Es
+   werden registrierte Helfer-NPC und einige schadenverursachende Objekte
+   beruecksichtigt. Hierbei wird QueryUser() in den Objekten abgefragt.
+
+   Es benoetigt ein gueltiges P_KILLER, d.h. falls das Lebewesen vergiftet
+   wurde oder das toetende Objekt aus sonstigen Gruenden nicht in P_KILLER
+   steht, funktioniert es nicht.
+   Auch gibt es bestimmt Objekte, die fuer Spieler toeten koennen, die die
+   diese Funktion nicht kennt.
+   (Dies gilt beides ebenso fuer /p/service/mupfel/getkill.c, ist also kein
+    Grund, jenes statt dieser Funktion zu nutzen.)
+
+
+RUeCKGABEWERT
+=============
+
+   Das Objekt des Spielers, falls es ermittelt werden konnte, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Der Name des Spieler ist mittel Name() ermittelbar. Will man die Info,
+   womit ein Spieler den Kill ggf. gemacht hat, kann man P_KILLER
+   auswerten/nutzen.
+
+
+SIEHE AUCH
+==========
+
+   QueryUser
+   P_KILLER
+
 11.11.2013, Zesstra
-
diff --git a/doc/lfun/gilde/AddSkill b/doc/lfun/gilde/AddSkill
index 21db504..6be310b 100644
--- a/doc/lfun/gilde/AddSkill
+++ b/doc/lfun/gilde/AddSkill
@@ -1,33 +1,57 @@
+
 AddSkill()
-FUNKTION:
-    varargs int AddSkill(string sname, mapping ski)
+**********
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    string sname       Name des Skills
-    mapping ski        Skill-Mapping
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Fuegt den Skill zur Liste der in dieser Gilde lernbaren Skills
-    hinzu. Das Mapping enthaelt Informationen, die der Gildenraum
-    bzw. das Gildenobjekt zum Skill herausgeben und die das Lernen
-    des Skills beeinflussen.
+   varargs int AddSkill(string sname, mapping ski)
 
-RUECKGABWERT:
-    1 fuer Erfolg
 
-BEISPIEL:
-    AddSkill( FIGHT(WT_CLUB), ([ OFFSET(SI_SKILLLEARN) : 1 ]) );
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   /std/gilden_ob.c
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   string sname       Name des Skills
+   mapping ski        Skill-Mapping
+
+
+BESCHREIBUNG
+============
+
+   Fuegt den Skill zur Liste der in dieser Gilde lernbaren Skills
+   hinzu. Das Mapping enthaelt Informationen, die der Gildenraum
+   bzw. das Gildenobjekt zum Skill herausgeben und die das Lernen
+   des Skills beeinflussen.
+
+
+RUECKGABWERT
+============
+
+   1 fuer Erfolg
+
+
+BEISPIEL
+========
+
+   AddSkill( FIGHT(WT_CLUB), ([ OFFSET(SI_SKILLLEARN) : 1 ]) );
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/AddSpell b/doc/lfun/gilde/AddSpell
index c0ca935..027b4d6 100644
--- a/doc/lfun/gilde/AddSpell
+++ b/doc/lfun/gilde/AddSpell
@@ -1,47 +1,74 @@
+
 AddSpell()
-FUNKTION:
-    varargs int AddSpell(string verb, mapping ski)
+**********
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    string verb        Name des Spells
-    mapping ski        Skill-Mapping
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Fuegt den Spell zur Liste der in dieser Gilde lernbaren Spells
-    hinzu. Das Mapping enthaelt Informationen, die der Gildenraum
-    bzw. das Gildenobjekt zum Spell herausgeben und die das Lernen
-    des Spells beeinflussen.
+   varargs int AddSpell(string verb, mapping ski)
 
-RUECKGABWERT:
-    1 fuer Erfolg
 
-BEMERKUNGEN:
-    Siehe das Verhalten von QuerySpell (gilde) zum Zusammenfuegen
-    der AddSpell-Informationen aus Gilde und Spellbook. Relevant
-    zB fuer Lernrestriktionen.
+DEFINIERT IN
+============
 
-BEISPIEL:
-    AddSpell("entfluche",
-      ([SI_SKILLRESTR_LEARN :
-        ([P_GUILD_LEVEL: LVL_WANDER,
-          SR_FUN:        #'glaubensTest]),
-        SI_DIFFICULTY: 100,
-        SI_SKILLINFO:  "Wanderprediger ab Stufe 7",
-        SI_SKILLINFO_LONG: break_string(
-          "Um jemanden von einem laestigen Sprachfluch zu befreien, "
-          "sollte man diese Anrufung benutzen [...]", 78),
-        SI_GOD:        LEMBOLD]));
+   /std/gilden_ob.c
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSkill, QuerySpell, QuerySkill, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+ARGUMENTE
+=========
+
+   string verb        Name des Spells
+   mapping ski        Skill-Mapping
+
+
+BESCHREIBUNG
+============
+
+   Fuegt den Spell zur Liste der in dieser Gilde lernbaren Spells
+   hinzu. Das Mapping enthaelt Informationen, die der Gildenraum
+   bzw. das Gildenobjekt zum Spell herausgeben und die das Lernen
+   des Spells beeinflussen.
+
+
+RUECKGABWERT
+============
+
+   1 fuer Erfolg
+
+
+BEMERKUNGEN
+===========
+
+   Siehe das Verhalten von QuerySpell (gilde) zum Zusammenfuegen
+   der AddSpell-Informationen aus Gilde und Spellbook. Relevant
+   zB fuer Lernrestriktionen.
+
+
+BEISPIEL
+========
+
+   AddSpell("entfluche",
+     ([SI_SKILLRESTR_LEARN :
+       ([P_GUILD_LEVEL: LVL_WANDER,
+         SR_FUN:        #'glaubensTest]),
+       SI_DIFFICULTY: 100,
+       SI_SKILLINFO:  "Wanderprediger ab Stufe 7",
+       SI_SKILLINFO_LONG: break_string(
+         "Um jemanden von einem laestigen Sprachfluch zu befreien, "
+         "sollte man diese Anrufung benutzen [...]", 78),
+       SI_GOD:        LEMBOLD]));
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSkill, QuerySpell, QuerySkill, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
 
 3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/GuildRating b/doc/lfun/gilde/GuildRating
index 7bfb6b2..ca4ec1b 100644
--- a/doc/lfun/gilde/GuildRating
+++ b/doc/lfun/gilde/GuildRating
@@ -1,27 +1,47 @@
+
 GuildRating()
-FUNKTION:
-    int GuildRating(object pl)
+*************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    object pl          Spieler, der geratet werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Gibt das Guild-Rating des Spielers im Bereich 0-MAX_ABILITY zurueck
-    und schreibt sie in P_GUILD_RATING. Wichtig fuer Levelbestimmung!
-    
-    Normalerweise ist das der Mittelwert der Skill-Abilities aller Skills
-    und Spells, das Verhalten kann aber ueberschrieben werden.
+   int GuildRating(object pl)
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS, P_GUILD_RATING
-    Gildenfkt.:
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
 
-10. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   object pl          Spieler, der geratet werden soll
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Guild-Rating des Spielers im Bereich 0-MAX_ABILITY zurueck
+   und schreibt sie in P_GUILD_RATING. Wichtig fuer Levelbestimmung!
+
+
+
+   Normalerweise ist das der Mittelwert der Skill-Abilities aller Skills
+   und Spells, das Verhalten kann aber ueberschrieben werden.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS, P_GUILD_RATING
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+10. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/InitialSkillAbility b/doc/lfun/gilde/InitialSkillAbility
index 28a2689..afea3e9 100644
--- a/doc/lfun/gilde/InitialSkillAbility
+++ b/doc/lfun/gilde/InitialSkillAbility
@@ -1,31 +1,52 @@
+
 InitialSkillAbility()
-FUNKTION:
-    static int InitialSkillAbility(mapping ski, object pl)
+*********************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    mapping ski     Der zu lernende Skill
-    object  pl      Spieler
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Gibt den initialen Ability-Wert fuer einen neu zu lernenden Skill (Spell)
-    zurueck. Die Standardformel benutzt nur Intelligenz und SI_SKILLLEARN und
-    kann in der Gilde ueberschrieben werden.
+   static int InitialSkillAbility(mapping ski, object pl)
 
-BEMERKUNGEN:
-    Der zurueckgegebene Wert wird noch in das Spieler-Skillsystem eingegeben
-    und daher kann der real gelernte Wert abweichen
 
-SIEHE AUCH:
-    Skills:         LimitAbility, ModifySkill
-    GObj Lernen:    LearnSkill, LearnSpell
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+DEFINIERT IN
+============
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   mapping ski     Der zu lernende Skill
+   object  pl      Spieler
+
+
+BESCHREIBUNG
+============
+
+   Gibt den initialen Ability-Wert fuer einen neu zu lernenden Skill (Spell)
+   zurueck. Die Standardformel benutzt nur Intelligenz und SI_SKILLLEARN und
+   kann in der Gilde ueberschrieben werden.
+
+
+BEMERKUNGEN
+===========
+
+   Der zurueckgegebene Wert wird noch in das Spieler-Skillsystem eingegeben
+   und daher kann der real gelernte Wert abweichen
+
+
+SIEHE AUCH
+==========
+
+   Skills:         LimitAbility, ModifySkill
+   GObj Lernen:    LearnSkill, LearnSpell
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/LearnSkill b/doc/lfun/gilde/LearnSkill
index c381959..07a4dc9 100644
--- a/doc/lfun/gilde/LearnSkill
+++ b/doc/lfun/gilde/LearnSkill
@@ -1,35 +1,59 @@
+
 LearnSkill()
-FUNKTION:
-    int LearnSkill(string skill)
+************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    string skill     Der zu lernende Skill
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion ueberprueft den Spieler auf Gildenzugehoerigkeit
-    und ruft, falls kein 'skill' angegeben ist die SkillListe()
-    fuer Skills auf.
+   int LearnSkill(string skill)
 
-    Falls ein Argument angegeben wird, wird bei dem Spieler dieser Skill
-    initialisiert, sofern er die notwendigen Anforderungen erfuellt hat.
 
-RUECKGABEWERT:
-    0 bei Fehler, 1 bei Erfolg.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    Fuer die Lebewesen-Skills gibt es eine gleichnamige Funktion.
-    Siehe dafuer LearnSkill.
+   /std/gilden_ob.c
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   string skill     Der zu lernende Skill
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ueberprueft den Spieler auf Gildenzugehoerigkeit
+   und ruft, falls kein 'skill' angegeben ist die SkillListe()
+   fuer Skills auf.
+
+   Falls ein Argument angegeben wird, wird bei dem Spieler dieser Skill
+   initialisiert, sofern er die notwendigen Anforderungen erfuellt hat.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei Fehler, 1 bei Erfolg.
+
+
+BEMERKUNGEN
+===========
+
+   Fuer die Lebewesen-Skills gibt es eine gleichnamige Funktion.
+   Siehe dafuer LearnSkill.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/LearnSpell b/doc/lfun/gilde/LearnSpell
index 55c5840..385da3e 100644
--- a/doc/lfun/gilde/LearnSpell
+++ b/doc/lfun/gilde/LearnSpell
@@ -1,32 +1,53 @@
+
 LearnSpell()
-FUNKTION:
-    varargs int LearnSpell(string spell, object pl)
+************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    string spell     Der zu lernende Spell
-    object pl        lernender Spieler, wenn 0, wird this_player() genommen
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion ueberprueft den Spieler auf Gildenzugehoerigkeit
-    und ruft, falls kein 'spell' angegeben ist die SkillListe()
-    fuer Spells auf.
+   varargs int LearnSpell(string spell, object pl)
 
-    Falls ein Argument angegeben wird, wird bei dem Spieler dieser Spell
-    initialisiert, sofern er die notwendigen Anforderungen erfuellt hat.
 
-RUECKGABEWERT:
-    0 bei Fehler, 1 bei Erfolg.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   /std/gilden_ob.c
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   string spell     Der zu lernende Spell
+   object pl        lernender Spieler, wenn 0, wird this_player() genommen
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ueberprueft den Spieler auf Gildenzugehoerigkeit
+   und ruft, falls kein 'spell' angegeben ist die SkillListe()
+   fuer Spells auf.
+
+   Falls ein Argument angegeben wird, wird bei dem Spieler dieser Spell
+   initialisiert, sofern er die notwendigen Anforderungen erfuellt hat.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei Fehler, 1 bei Erfolg.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/QuerySkill b/doc/lfun/gilde/QuerySkill
index 59dce12..ee3e68a 100644
--- a/doc/lfun/gilde/QuerySkill
+++ b/doc/lfun/gilde/QuerySkill
@@ -1,33 +1,54 @@
+
 QuerySkill()
-FUNKTION:
-    mapping QuerySkill(string skill)
+************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    string skill       Name des Skills
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Liefert fuer diesen Skill die Gildeninformationen in einem
-    Mapping zurueck.
+   mapping QuerySkill(string skill)
 
-BEISPIEL:
-    // /gilden/klerus->QuerySkill(FIGHT(WT_CLUB)) gibt zB zurueck:
-    ([SI_FUN:                "Fight_club",
-      OFFSET(SI_SKILLLEARN): 1
-      SI_SKILLRESTR_USE:     ([SR_FUN:#'gilden/klerus->spellTest()]),
-      OFFSET(SI_SKILLLEARN): #'gilden/klerus->learnOffset,
-      OFFSET(SI_SPELLCOST):  #'gilden/klerus->costOffset,
-      FACTOR(SI_SPELLCOST):  #'gilden/klerus->costFactor])
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSkill, AddSpell, QuerySpell
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+DEFINIERT IN
+============
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string skill       Name des Skills
+
+
+BESCHREIBUNG
+============
+
+   Liefert fuer diesen Skill die Gildeninformationen in einem
+   Mapping zurueck.
+
+
+BEISPIEL
+========
+
+   // /gilden/klerus->QuerySkill(FIGHT(WT_CLUB)) gibt zB zurueck:
+   ([SI_FUN:                "Fight_club",
+     OFFSET(SI_SKILLLEARN): 1
+     SI_SKILLRESTR_USE:     ([SR_FUN:#'gilden/klerus->spellTest()]),
+     OFFSET(SI_SKILLLEARN): #'gilden/klerus->learnOffset,
+     OFFSET(SI_SPELLCOST):  #'gilden/klerus->costOffset,
+     FACTOR(SI_SPELLCOST):  #'gilden/klerus->costFactor])
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSkill, AddSpell, QuerySpell
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/QuerySpell b/doc/lfun/gilde/QuerySpell
index 22f1965..32eff3a 100644
--- a/doc/lfun/gilde/QuerySpell
+++ b/doc/lfun/gilde/QuerySpell
@@ -1,54 +1,75 @@
+
 QuerySpell()
-FUNKTION:
-    mapping QuerySpell(string spell)
+************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    string spell       Name des Spells
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Liefert fuer diesen Spell die Gilden- und Spellbookinformationen
-    zusammengefasst in ein Mapping zurueck.
-    Die Gildeninformationen haben dabei Vorrang (d.h. eine Lernrestriktion
-    im Spellbook wird benutzt, bei unterschiedlichen Werten fuer das gleiche
-    Attribut geht der Wert in der Gilde vor).
+   mapping QuerySpell(string spell)
 
-BEISPIEL:
-    // /gilden/klerus->QuerySpell("entfluche") gibt zB zurueck:
-    ([SI_SPELLFATIGUE: 2,
-      SI_SP_LOW_MSG:   "Deine Konzentration reicht nicht aus, das Interesse "
-                       "der Goetter zu "wecken.\n",
-      SI_TIME_MSG:     "So schnell koennen sich die Goetter nicht wieder um "
-                       "Dich kuemmern!\n",
-      SI_SKILLLEARN:   5,
-      OFFSET(SI_SKILLLEARN):15
-      SI_SKILLRESTR_LEARN:
-      ([P_LEVEL:       7,
-        P_GUILD_LEVEL: LVL_WANDER,
-        SR_FUN:        #'gilden/klerus->glaubensTest]),
-      SI_DIFFICULTY:   100,
-      SI_SKILLINFO:    "Wanderprediger ab Stufe 7",
-      SI_SKILLINFO_LONG:
-        "Um jemanden von einem laestigen Sprachfluch zu befreien, "
-        "sollte man diese Anrufung benutzen [...]",
-      SP_NAME:         "entfluche",
-      SI_SKILLRESTR_USE: ([ SR_FREE_HANDS : 0 ]),
-      SI_MAGIC_TYPE:   ({MT_SAKRAL})
-      SI_GOD:          LEMBOLD,
-      SI_SKILLRESTR_USE:     ([SR_FUN:#'gilden/klerus->spellTest()]),
-      OFFSET(SI_SKILLLEARN): #'gilden/klerus->learnOffset,
-      OFFSET(SI_SPELLCOST):  #'gilden/klerus->costOffset,
-      FACTOR(SI_SPELLCOST):  #'gilden/klerus->costFactor])
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSkill, AddSpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string spell       Name des Spells
+
+
+BESCHREIBUNG
+============
+
+   Liefert fuer diesen Spell die Gilden- und Spellbookinformationen
+   zusammengefasst in ein Mapping zurueck.
+   Die Gildeninformationen haben dabei Vorrang (d.h. eine Lernrestriktion
+   im Spellbook wird benutzt, bei unterschiedlichen Werten fuer das gleiche
+   Attribut geht der Wert in der Gilde vor).
+
+
+BEISPIEL
+========
+
+   // /gilden/klerus->QuerySpell("entfluche") gibt zB zurueck:
+   ([SI_SPELLFATIGUE: 2,
+     SI_SP_LOW_MSG:   "Deine Konzentration reicht nicht aus, das Interesse "
+                      "der Goetter zu "wecken.\n",
+     SI_TIME_MSG:     "So schnell koennen sich die Goetter nicht wieder um "
+                      "Dich kuemmern!\n",
+     SI_SKILLLEARN:   5,
+     OFFSET(SI_SKILLLEARN):15
+     SI_SKILLRESTR_LEARN:
+     ([P_LEVEL:       7,
+       P_GUILD_LEVEL: LVL_WANDER,
+       SR_FUN:        #'gilden/klerus->glaubensTest]),
+     SI_DIFFICULTY:   100,
+     SI_SKILLINFO:    "Wanderprediger ab Stufe 7",
+     SI_SKILLINFO_LONG:
+       "Um jemanden von einem laestigen Sprachfluch zu befreien, "
+       "sollte man diese Anrufung benutzen [...]",
+     SP_NAME:         "entfluche",
+     SI_SKILLRESTR_USE: ([ SR_FREE_HANDS : 0 ]),
+     SI_MAGIC_TYPE:   ({MT_SAKRAL})
+     SI_GOD:          LEMBOLD,
+     SI_SKILLRESTR_USE:     ([SR_FUN:#'gilden/klerus->spellTest()]),
+     OFFSET(SI_SKILLLEARN): #'gilden/klerus->learnOffset,
+     OFFSET(SI_SPELLCOST):  #'gilden/klerus->costOffset,
+     FACTOR(SI_SPELLCOST):  #'gilden/klerus->costFactor])
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSkill, AddSpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
 
 3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/SkillListe b/doc/lfun/gilde/SkillListe
index 8cc2b39..200650b 100644
--- a/doc/lfun/gilde/SkillListe
+++ b/doc/lfun/gilde/SkillListe
@@ -1,27 +1,49 @@
+
 SkillListe()
-FUNKTION:
-    int SkillListe(int what)
+************
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    int what        Rueckgabeoption:
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Gibt eine Text mit Liste mit lernbaren Skills/Spells zurueck:
-    
-    Fuer 'what': 0 - alle; 1 - Spells; 2 - Skills.
-    
-    Zeigt Eintraege aus SI_SKILLINFO.
+   int SkillListe(int what)
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
-    Skills:         skill_info_liste
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   int what        Rueckgabeoption:
+
+
+BESCHREIBUNG
+============
+
+   Gibt eine Text mit Liste mit lernbaren Skills/Spells zurueck:
+
+
+
+   Fuer 'what': 0 - alle; 1 - Spells; 2 - Skills.
+
+
+
+   Zeigt Eintraege aus SI_SKILLINFO.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   Skills:         skill_info_liste
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/UseSpell b/doc/lfun/gilde/UseSpell
index 96823cc..4f3724c 100644
--- a/doc/lfun/gilde/UseSpell
+++ b/doc/lfun/gilde/UseSpell
@@ -1,32 +1,53 @@
+
 UseSpell()
-FUNKTION:
-    varargs int UseSpell(object caster, string spell, mapping sinfo)
+**********
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-ARGUMENTE:
-    object caster      Spieler, der Spell nutzt
-    string spell       Spell-Name
-    mapping sinfo      Spell-Informationen
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Prueft, ob der Spell in der Gilde definiert ist und ruft ihn dann
-    ggf in aus dem Spell-Mapping gelesenen Gilden-SI_SPELLBOOK auf.
+   varargs int UseSpell(object caster, string spell, mapping sinfo)
 
-    Wird von living/skills::UseSpell gerufen, wenn dieses die SI_CLOSURE,
-    also die Funktion eines Spells sucht, fuer den kein SI_SPELLBOOK
-    explizit angegeben wurde.
 
-RUECKGABWERT:
-    Rueckgabewert des Spells aus dem Spellbook oder 0.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:     GuildRating
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   /std/gilden_ob.c
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   object caster      Spieler, der Spell nutzt
+   string spell       Spell-Name
+   mapping sinfo      Spell-Informationen
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob der Spell in der Gilde definiert ist und ruft ihn dann
+   ggf in aus dem Spell-Mapping gelesenen Gilden-SI_SPELLBOOK auf.
+
+   Wird von living/skills::UseSpell gerufen, wenn dieses die SI_CLOSURE,
+   also die Funktion eines Spells sucht, fuer den kein SI_SPELLBOOK
+   explizit angegeben wurde.
+
+
+RUECKGABWERT
+============
+
+   Rueckgabewert des Spells aus dem Spellbook oder 0.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/austreten b/doc/lfun/gilde/austreten
index 4770bef..cde77e2 100644
--- a/doc/lfun/gilde/austreten
+++ b/doc/lfun/gilde/austreten
@@ -1,34 +1,52 @@
+
 austreten()
-FUNKTION:
-    varargs int austreten(int loss)
+***********
 
-ARGUMENTE:
-    int loss       Prozentsatz, um den sich die Gildenskills verschlechtern
 
-DEFINIERT IN:
-    /std/gilden_ob.c
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Austrittsfunktion der Gilde. Prueft die Restriktionen der Gilde und
-    laesst this_player() ggf austreten. Das Austreten aus der Standard-
-    gilde ist dabei nicht moeglich.
+   varargs int austreten(int loss)
 
-    Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
-    E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.
 
-    Der Gildenmaster senkt auch die Skill/Spell-Faehigkeiten um 'loss' bzw.
-    normalerweise mindestens 20%.
+ARGUMENTE
+=========
 
-    Durch Ueberschreiben koennen hier zB Abschiedsmeldungen gesendet werden.
+   int loss       Prozentsatz, um den sich die Gildenskills verschlechtern
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:
-    * Ein/Austritt: beitreten, bei_oder_aus_treten
-    * Props dafuer: P_GUILD_RESTRICTIONS
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+BESCHREIBUNG
+============
+
+   Austrittsfunktion der Gilde. Prueft die Restriktionen der Gilde und
+   laesst this_player() ggf austreten. Das Austreten aus der Standard-
+   gilde ist dabei nicht moeglich.
+
+   Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
+   E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.
+
+   Der Gildenmaster senkt auch die Skill/Spell-Faehigkeiten um 'loss' bzw.
+   normalerweise mindestens 20%.
+
+   Durch Ueberschreiben koennen hier zB Abschiedsmeldungen gesendet werden.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, bei_oder_aus_treten
+   * Props dafuer: P_GUILD_RESTRICTIONS
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/bei_oder_aus_treten b/doc/lfun/gilde/bei_oder_aus_treten
index 0a5de78..abed024 100644
--- a/doc/lfun/gilde/bei_oder_aus_treten
+++ b/doc/lfun/gilde/bei_oder_aus_treten
@@ -1,25 +1,43 @@
+
 bei_oder_aus_treten()
-FUNKTION:
-    int bei_oder_aus_treten(string str)
+*********************
 
-ARGUMENTE:
-    string str       Spielerparameter
 
-DEFINIERT IN:
-    /std/gilden_ob.c
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Aus- oder Eintrittsfunktion, ruft beitreten() bzw. austreten() auf.
-    Wird im Std-Gildenraum per AddCmd zur Verfuegung gestellt.
+   int bei_oder_aus_treten(string str)
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:
-    * Ein/Austritt: beitreten, austreten
-    * Props dafuer: P_GUILD_RESTRICTIONS
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   string str       Spielerparameter
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+BESCHREIBUNG
+============
+
+   Aus- oder Eintrittsfunktion, ruft beitreten() bzw. austreten() auf.
+   Wird im Std-Gildenraum per AddCmd zur Verfuegung gestellt.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, austreten
+   * Props dafuer: P_GUILD_RESTRICTIONS
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/gilde/beitreten b/doc/lfun/gilde/beitreten
index 3938f7b..6e5a957 100644
--- a/doc/lfun/gilde/beitreten
+++ b/doc/lfun/gilde/beitreten
@@ -1,28 +1,43 @@
+
 beitreten()
-FUNKTION:
-    int beitreten()
+***********
 
-DEFINIERT IN:
-    /std/gilden_ob.c
 
-BESCHREIBUNG:
-    Beitrittsfunktion der Gilde. Prueft die Gilde selbst im Gildenmaster,
-    dann die Restriktionen der Gilde und laesst this_player() ggf eintreten.
+FUNKTION
+========
 
-    Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
-    E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.
+   int beitreten()
 
-    Durch Ueberschreiben koennen hier zB Standard-Skills und Spells den
-    Spieler bei Eintritt gelehrt werden.
 
-SIEHE AUCH:
-    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
-    * Anzeigen:     SkillListe
-    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell
-    * Nutzen:       UseSpell (gilde)
-    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
-    Gildenfkt.:
-    * Ein/Austritt: bei_oder_aus_treten, austreten
-    * Props dafuer: P_GUILD_RESTRICTIONS
+DEFINIERT IN
+============
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+   /std/gilden_ob.c
+
+
+BESCHREIBUNG
+============
+
+   Beitrittsfunktion der Gilde. Prueft die Gilde selbst im Gildenmaster,
+   dann die Restriktionen der Gilde und laesst this_player() ggf eintreten.
+
+   Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
+   E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.
+
+   Durch Ueberschreiben koennen hier zB Standard-Skills und Spells den
+   Spieler bei Eintritt gelehrt werden.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:
+   * Ein/Austritt: bei_oder_aus_treten, austreten
+   * Props dafuer: P_GUILD_RESTRICTIONS
+
+3. Okt 2011 Gloinson
diff --git a/doc/lfun/give b/doc/lfun/give
index 39a2624..866c1e3 100644
--- a/doc/lfun/give
+++ b/doc/lfun/give
@@ -1,43 +1,65 @@
+
 give()
+******
 
-FUNKTION:
-    public varargs int give(object o, object dest, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object o
-        Das Objekt, das uebergeben werden soll.
-    object dest
-        Der Spieler oder NPC, der das Objekt bekommen soll.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_GIVE_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int give(object o, object dest, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC uebergibt dem Empfaenger das Objekt. Gibt o->move()
-    keinen positiven Wert zurueck, beispielsweise weil das Objekt verflucht
-    ist oder der Empfaenger es nicht mehr tragen kann, bekommt er eine
-    entsprechende Fehlermeldung.
 
-RUECKGABEWERT:
-    Wenn die Uebergabe geklappt hat, 1, ansonsten 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
-    weitergeben lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
-    moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
-    manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+   /std/living/put_and_get.c
 
-    Die Funktion prueft nicht, ob der Spieler/NPC der Objekt ueberhaupt hat,
-    das muss man ggf. selbst ermitteln.
 
-SIEHE AUCH:
-    move(L), P_GIVE_MSG, give_objects(L), give_notify(L),
-    P_NOINSERT_MSG, P_NOLEAVE_MSG, P_TOO_MANY_MSG,
-    P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   object o
+       Das Objekt, das uebergeben werden soll.
+   object dest
+       Der Spieler oder NPC, der das Objekt bekommen soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_GIVE_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC uebergibt dem Empfaenger das Objekt. Gibt o->move()
+   keinen positiven Wert zurueck, beispielsweise weil das Objekt verflucht
+   ist oder der Empfaenger es nicht mehr tragen kann, bekommt er eine
+   entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn die Uebergabe geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
+   weitergeben lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob der Spieler/NPC der Objekt ueberhaupt hat,
+   das muss man ggf. selbst ermitteln.
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_GIVE_MSG, give_objects(L), give_notify(L),
+   P_NOINSERT_MSG, P_NOLEAVE_MSG, P_TOO_MANY_MSG,
+   P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP
+
 Last modified: Thu Aug 28 22:21:19 2008 by Amynthor
diff --git a/doc/lfun/give_notify b/doc/lfun/give_notify
index 010d68e..ef316cb 100644
--- a/doc/lfun/give_notify
+++ b/doc/lfun/give_notify
@@ -1,59 +1,87 @@
+
 give_notify()
-FUNKTION:
-     void give_notify(object obj);
+*************
 
-DEFINIERT IN:
-     /std/npc/put_and_get.c
 
-ARGUMENTE:
-     obj
-       an den NPC uebergebenes Objekt
-RUeCKGABEWERT:
-     keiner
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird automatisch immer dann aufgerufen, wenn ein
-     Lebewesen (welches kein Spielercharakter ist) ein Objekt uebergeben
-     bekommt. Dies muss jedoch ueber die Funktionalitaet von
-     put_and_get.c geschehen sein, innerhalb von move() wird die Funktion
-     nicht aufgerufen!
+   void give_notify(object obj);
 
-BEISPIEL:
-     Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
-     Item als Beweis der Erfuellung einer bestimmten Aufgabe ueberbracht
-     wird. Folgendermasse kann dies realisiert werden:
-     void create() {
-       ::create();
-       ...
-       SetProp(P_REJECT,({REJECT_GIVE,
-         Name(WER)+" sagt: Das brauche ich nicht!\n"}));
-       ...
-     }
 
-     void quest_ok(object obj) { ...
-       // Vernichtung des Questobjektes und Questtexte
-       // Questbelohnung und Questanerkennung
-     }
+DEFINIERT IN
+============
 
-     void give_notify(object obj) {
-       if(obj->id("\nquestitem")) // Questitem bekommen?
-         quest_ok(obj);
-       else
-         ::give_notify(obj);  // P_REJECT soll sonst greifen
-     }
-     Der Aufruf von ::give_notify() stellt sicher, dass ein Objekt
-     zurueckgegeben wird, sofern es nicht das gesuchte ist. Erreicht wird
-     dies ueber P_REJECT (siehe Bemerkungen).
+   /std/npc/put_and_get.c
 
-BEMERKUNGEN:
-     Speziell in NPCs ist diese Funktion normalerweise dafuer
-     verantwortlich, dass mittels der Property P_REJECT die Annahme von
-     Objekten verweigert werden kann. Ueberschreibt man sie, so sollte
-     man gegebenenfalls darauf achten, dass diese Standardfunktion
-     ebenfalls aufgerufen wird.
 
-SIEHE AUCH:
-     P_REJECT, show_notify(), 
-     /std/npc/put_and_get.c, /std/living/put_and_get.c
+ARGUMENTE
+=========
+
+   obj
+     an den NPC uebergebenes Objekt
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird automatisch immer dann aufgerufen, wenn ein
+   Lebewesen (welches kein Spielercharakter ist) ein Objekt uebergeben
+   bekommt. Dies muss jedoch ueber die Funktionalitaet von
+   put_and_get.c geschehen sein, innerhalb von move() wird die Funktion
+   nicht aufgerufen!
+
+
+BEISPIEL
+========
+
+   Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
+   Item als Beweis der Erfuellung einer bestimmten Aufgabe ueberbracht
+   wird. Folgendermasse kann dies realisiert werden:
+   void create() {
+     ::create();
+     ...
+     SetProp(P_REJECT,({REJECT_GIVE,
+       Name(WER)+" sagt: Das brauche ich nicht!\n"}));
+     ...
+   }
+
+   void quest_ok(object obj) { ...
+     // Vernichtung des Questobjektes und Questtexte
+     // Questbelohnung und Questanerkennung
+   }
+
+   void give_notify(object obj) {
+     if(obj->id("\nquestitem")) // Questitem bekommen?
+       quest_ok(obj);
+     else
+       ::give_notify(obj);  // P_REJECT soll sonst greifen
+   }
+   Der Aufruf von ::give_notify() stellt sicher, dass ein Objekt
+   zurueckgegeben wird, sofern es nicht das gesuchte ist. Erreicht wird
+   dies ueber P_REJECT (siehe Bemerkungen).
+
+
+BEMERKUNGEN
+===========
+
+   Speziell in NPCs ist diese Funktion normalerweise dafuer
+   verantwortlich, dass mittels der Property P_REJECT die Annahme von
+   Objekten verweigert werden kann. Ueberschreibt man sie, so sollte
+   man gegebenenfalls darauf achten, dass diese Standardfunktion
+   ebenfalls aufgerufen wird.
+
+
+SIEHE AUCH
+==========
+
+   P_REJECT, show_notify(),
+   /std/npc/put_and_get.c, /std/living/put_and_get.c
 
 22. Oktober 2013, Arathorn.
diff --git a/doc/lfun/give_obj b/doc/lfun/give_obj
index 59f8c99..753fd09 100644
--- a/doc/lfun/give_obj
+++ b/doc/lfun/give_obj
@@ -1,27 +1,43 @@
+
 give_obj()
+**********
+
 
 FUNKTION
-    int give_obj(object ob, object where)
+========
 
-DEFINIERT IN:
+   int give_obj(object ob, object where)
 
-    /std/living/put_and_get.c
 
-ARGUMENTE:
+DEFINIERT IN
+============
 
-    ob      Das Objekt, das abgegeben werden soll.
-    where   Das Lebewesen, dass das Objekt erhaelt.
+   /std/living/put_and_get.c
 
-BESCHREIBUNG:
 
-    Das Lebewesen, in dem diese Funktion aufgerufen werden soll, gibt
-    den angegebenen Gegenstand (ob) an das angegebene Lebewesen (where).
+ARGUMENTE
+=========
 
-RUeCKGABEWERT:
-    1, wenn das Objekt uebergeben wurde oder die Uebergabe nicht moeglich war.
-    (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
-    0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe plaziert.
+   ob      Das Objekt, das abgegeben werden soll.
+   where   Das Lebewesen, dass das Objekt erhaelt.
 
-SIEHE AUCH:
 
-    pick_obj(), drop_obj(), put_obj(), find_obs(), /std/living/put_and_get.c
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, gibt
+   den angegebenen Gegenstand (ob) an das angegebene Lebewesen (where).
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt uebergeben wurde oder die Uebergabe nicht moeglich war.
+   (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe plaziert.
+
+
+SIEHE AUCH
+==========
+
+   pick_obj(), drop_obj(), put_obj(), find_obs(), /std/living/put_and_get.c
diff --git a/doc/lfun/heal_self b/doc/lfun/heal_self
index 5f60547..53697a2 100644
--- a/doc/lfun/heal_self
+++ b/doc/lfun/heal_self
@@ -1,49 +1,68 @@
+
 heal_self()
+***********
 
-FUNKTION:
-    void heal_self(int points);
 
-ARGUMENTE:
-    points: Die dem Lebewesen zukommende Heilung.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Dem Lebewesen werden points Lebens- und Konzentrationspunkte 
-    gutgeschrieben und auf die aktuellen addiert. Es werden aber nicht
-    die maximalen Werte ueberschritten.
+   void heal_self(int points);
 
-RUECKGABEWERT:
-    Keiner
 
-BEISPIELE:
-    
-    AddCmd("pflueck&beere","pfluecke_cmd","Was moechtest Du pfluecken?");
+ARGUMENTE
+=========
 
-    int pfluecke_cmd(string str){
-        write("Du pflueckst eine Beere, isst sie und fuehlst Dich gleich "
-             +"viel besser.\n");
-        this_player()->heal_self(30);
-        return 1;
-    }
+   points: Die dem Lebewesen zukommende Heilung.
 
-    Der Spieler bekommt hier pro Beere die er pflueckt und isst je 30 LP/KP
-    zu seinen momentanen.
 
-BEMERKUNGEN: 
-    heal_self wird gerne fuer Heilstellen in Gebieten genommen, in denen ein
-    Spieler diese Heilung auch wirklich braucht. Dennoch ist der Einsatz un-
-    bedingt mit der Heilungsbalance abzusprechen und darauf zu achten, dass
-    pro reset() nur eine bestimmte Anzahl an Heilungen ausgegeben werden.
+BESCHREIBUNG
+============
 
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
+   Dem Lebewesen werden points Lebens- und Konzentrationspunkte
+   gutgeschrieben und auf die aktuellen addiert. Es werden aber nicht
+   die maximalen Werte ueberschritten.
 
-SIEHE AUCH:
-    Verwandt:   restore_spell_points, restore_hit_points, buffer_hp
-		buffer_sp, check_and_update_timed_key
-    Gegenparts: do_damage, reduce_hit_points, reduce_spell_points
-    Props:      P_HP, P_SP
-    Konzept:    heilung
 
-----------------------------------------------------------------------------
+RUECKGABEWERT
+=============
+
+   Keiner
+
+
+BEISPIELE
+=========
+
+   AddCmd("pflueck&beere","pfluecke_cmd","Was moechtest Du pfluecken?");
+
+   int pfluecke_cmd(string str){
+       write("Du pflueckst eine Beere, isst sie und fuehlst Dich gleich "
+            +"viel besser.\n");
+       this_player()->heal_self(30);
+       return 1;
+   }
+
+   Der Spieler bekommt hier pro Beere die er pflueckt und isst je 30 LP/KP
+   zu seinen momentanen.
+
+BEMERKUNGEN:
+   heal_self wird gerne fuer Heilstellen in Gebieten genommen, in
+   denen ein Spieler diese Heilung auch wirklich braucht. Dennoch ist
+   der Einsatz un- bedingt mit der Heilungsbalance abzusprechen und
+   darauf zu achten, dass pro reset() nur eine bestimmte Anzahl an
+   Heilungen ausgegeben werden.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der
+   eigens dafuer eingerichteten Funktion check_and_update_timed_key
+   realisiert werden.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:   restore_spell_points, restore_hit_points, buffer_hp
+               buffer_sp, check_and_update_timed_key
+   Gegenparts: do_damage, reduce_hit_points, reduce_spell_points
+   Props:      P_HP, P_SP
+   Konzept:    heilung
+
 Last modified: 27.05.2007 by Ennox
diff --git a/doc/lfun/heart_beat b/doc/lfun/heart_beat
index 6a314bd..475a781 100644
--- a/doc/lfun/heart_beat
+++ b/doc/lfun/heart_beat
@@ -1,42 +1,57 @@
+
 heart_beat()
+************
 
-FUNKTION:
-     protected void heart_beat();
 
-DEFINIERT IN:
-     /std/living/life.c
-     /std/living/combat.c
-     und anderen...
-     kann auch in beliebigen Objekten selbst definiert werden.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird alle zwei Sekunden vom GameDriver aufgerufen. Sie
-     regelt in der MG-MudLib das Heilen von Spielern und Monstern, den
-     Ablauf von Kampfrunden, die Verdauung etc.
+   protected void heart_beat();
 
-     Da heart_beat() ziemlich viele Ressourcen des GameDrivers verbraet,
-     sollte man Objekte mit heart_beat() nur so selten wie moeglich
-     benutzen! Und selbst dann sollte der heart_beat() nicht die ganze Zeit
-     ueber laufen, sondern sich so bald wie moeglich abschalten.
 
-     Das Ein- und Ausschalten des heart_beat()s erfolgt mit
-     set_heart_beat().
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     1. Teuer, teuer, teuer!
-     2. Soll euer Viech pro "echtem" Heartbeat mehrere Kampfrunden haben,
-        benutzt dafuer SA_SPEED und ruft auf gar keinen Fall mehrfach 
-        ::heart_beat() auf. Also _NICHT_
-        void heart_beat() {
-            ::heart_beat();
-            ::heart_beat(); }
-        sondern:
-        SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPEED: 200]) );
+   /std/living/life.c
+   /std/living/combat.c
+   und anderen...
+   kann auch in beliebigen Objekten selbst definiert werden.
 
-SIEHE AUCH:
-     Efuns:     set_heart_beat(), absolute_hb_count(), set_next_reset()
-     Fehler:    make_immortal(L)
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Funktion wird alle zwei Sekunden vom GameDriver aufgerufen. Sie
+   regelt in der MG-MudLib das Heilen von Spielern und Monstern, den
+   Ablauf von Kampfrunden, die Verdauung etc.
+
+   Da heart_beat() ziemlich viele Ressourcen des GameDrivers verbraet,
+   sollte man Objekte mit heart_beat() nur so selten wie moeglich
+   benutzen! Und selbst dann sollte der heart_beat() nicht die ganze Zeit
+   ueber laufen, sondern sich so bald wie moeglich abschalten.
+
+   Das Ein- und Ausschalten des heart_beat()s erfolgt mit
+   set_heart_beat().
+
+
+BEMERKUNGEN
+===========
+
+   1. Teuer, teuer, teuer!
+   2. Soll euer Viech pro "echtem" Heartbeat mehrere Kampfrunden haben,
+      benutzt dafuer SA_SPEED und ruft auf gar keinen Fall mehrfach
+      ::heart_beat() auf. Also _NICHT_
+      void heart_beat() {
+          ::heart_beat();
+          ::heart_beat(); }
+      sondern:
+      SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPEED: 200]) );
+
+
+SIEHE AUCH
+==========
+
+   Efuns:     set_heart_beat(), absolute_hb_count(), set_next_reset()
+   Fehler:    make_immortal(L)
+
 22.3.2008, Zesstra
-
diff --git a/doc/lfun/id b/doc/lfun/id
index 7cf5aed..4921395 100644
--- a/doc/lfun/id
+++ b/doc/lfun/id
@@ -1,76 +1,99 @@
+
 id()
+****
 
-FUNKTION:
-     varargs int id(string str, int lvl);
 
-DEFINIERT IN:
-     /std/thing/description.c
-     /std/player/base.c
+FUNKTION
+========
 
-ARGUMENTE:
-     string str
-          String, auf den getestet werden soll.
-     int lvl
-          In /std/player/base.c benutzt. Wenn der Spieler unsichtbar ist
-          und lvl kleiner ist als sein Level, wird 0 zurueckgegeben.
+   varargs int id(string str, int lvl);
 
-BESCHREIBUNG:
-     Es wird geprueft, ob sich das Objekt mit str ansprechen laesst. Dazu
-     wird str mit dem Inhalt der Property P_IDS verglichen. Falls
-     P_ADJECTIVES gesetzt ist, werden auch alle Adjektivkombinationen mit
-     den Bezeichnern geprueft.
 
-     Besondere Bedeutung hat diese Funktion bei Mengenobjekten: Anhand von
-     str wird vermerkt, welche Menge des Objektes angesprochen wird. Es
-     werden dabei mehrere Faelle unterschieden:
-     o str ist einer der mit AddId() angegebener Bezeichner. In diesem
-       Fall ist die angesprochene Menge die Gesamtmenge.
-     o str ist einer der mit AddSingularId() angegebenen Bezeichner. Die
-       angesprochene Menge ist in diesem Fall 1.
-     o str ist einer der mit AddPluralId() angegebenen Bezeichner. Die
-       angesprochene Menge ist in diesem Fall . die Gesamtmenge.
-     o Hat str die Form "<n> <id>", wobei <n>=1 und <id> eine SingularId
-       oder 1 < <n> <= der Gesamtmenge und <id> eine PluralId, so ist die
-       angesprochene Menge = <n>.
-     Wie gesagt, gilt dies einzig und allein bei Mengenobjekten!
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     1, wenn sich das Objekt von str angesprochen fuehlt, ansonsten 0.
+   /std/thing/description.c
+   /std/player/base.c
 
-BEISPIELE:
-     Angenommen, ein Objekt habe folgende Bezeichner:
 
-     AddId( "murmel" );
-     AddAdjective( "runde" );
+ARGUMENTE
+=========
 
-     Dann liefern die angegebenen id()-Aufrufe folgende Ergebnisse:
+   string str
+        String, auf den getestet werden soll.
+   int lvl
+        In /std/player/base.c benutzt. Wenn der Spieler unsichtbar ist
+        und lvl kleiner ist als sein Level, wird 0 zurueckgegeben.
 
-     id( "murmel" );         => 1
-     id( "runde murmel" );   => 1
-     id( "kleine murmel" );  => 0
-     id( "runder ball" );    => 0
-     id( "runde murmel 2" ); => 1, wenn dies die zweite Murmel in der
-                                   gleichen Umgebung ist, ansonsten 0
 
-     Bei einem Haufen von 100 Muenzen haette man zB.:
+BESCHREIBUNG
+============
 
-     AddId( "geld" );
-     AddSingularId( "muenze" );
-     AddPluralId( "muenzen" );
+   Es wird geprueft, ob sich das Objekt mit str ansprechen laesst. Dazu
+   wird str mit dem Inhalt der Property P_IDS verglichen. Falls
+   P_ADJECTIVES gesetzt ist, werden auch alle Adjektivkombinationen mit
+   den Bezeichnern geprueft.
 
-     Nach fuehlen sich nach den folgenden id()-Aufrufen folgende Anzahlen
-     angesprochen:
+   Besondere Bedeutung hat diese Funktion bei Mengenobjekten: Anhand von
+   str wird vermerkt, welche Menge des Objektes angesprochen wird. Es
+   werden dabei mehrere Faelle unterschieden:
+   o str ist einer der mit AddId() angegebener Bezeichner. In diesem
+     Fall ist die angesprochene Menge die Gesamtmenge.
+   o str ist einer der mit AddSingularId() angegebenen Bezeichner. Die
+     angesprochene Menge ist in diesem Fall 1.
+   o str ist einer der mit AddPluralId() angegebenen Bezeichner. Die
+     angesprochene Menge ist in diesem Fall . die Gesamtmenge.
+   o Hat str die Form "<n> <id>", wobei <n>=1 und <id> eine SingularId
+     oder 1 < <n> <= der Gesamtmenge und <id> eine PluralId, so ist die
+     angesprochene Menge = <n>.
+   Wie gesagt, gilt dies einzig und allein bei Mengenobjekten!
 
-     id( "geld" );       => 100 Muenzen
-     id( "muenze" );     => 1 Muenze
-     id( "muenzen" );    => 100 Muenzen
-     id( "1 muenze" );   => 1 Muenze
-     id( "42 muenzen" ); => 42 Muenzen
 
-     id() liefert in all diesen Faellen 1 zurueck.
+RUeCKGABEWERT
+=============
 
-SIEHE AUCH:
-     AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
-     match_ids(), /std/thing/description.c, /std/unit.c
+   1, wenn sich das Objekt von str angesprochen fuehlt, ansonsten 0.
 
-6. Sep 2012 Gloinson
\ No newline at end of file
+
+BEISPIELE
+=========
+
+   Angenommen, ein Objekt habe folgende Bezeichner:
+
+   AddId( "murmel" );
+   AddAdjective( "runde" );
+
+   Dann liefern die angegebenen id()-Aufrufe folgende Ergebnisse:
+
+   id( "murmel" );         => 1
+   id( "runde murmel" );   => 1
+   id( "kleine murmel" );  => 0
+   id( "runder ball" );    => 0
+   id( "runde murmel 2" ); => 1, wenn dies die zweite Murmel in der
+                                 gleichen Umgebung ist, ansonsten 0
+
+   Bei einem Haufen von 100 Muenzen haette man zB.:
+
+   AddId( "geld" );
+   AddSingularId( "muenze" );
+   AddPluralId( "muenzen" );
+
+   Nach fuehlen sich nach den folgenden id()-Aufrufen folgende Anzahlen
+   angesprochen:
+
+   id( "geld" );       => 100 Muenzen
+   id( "muenze" );     => 1 Muenze
+   id( "muenzen" );    => 100 Muenzen
+   id( "1 muenze" );   => 1 Muenze
+   id( "42 muenzen" ); => 42 Muenzen
+
+   id() liefert in all diesen Faellen 1 zurueck.
+
+
+SIEHE AUCH
+==========
+
+   AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
+   match_ids(), /std/thing/description.c, /std/unit.c
+
+6. Sep 2012 Gloinson
diff --git a/doc/lfun/init b/doc/lfun/init
index f9d0cad..481eec2 100644
--- a/doc/lfun/init
+++ b/doc/lfun/init
@@ -1,65 +1,91 @@
+
 init()
+******
 
-FUNKTION:
-	void init();
 
-DEFINIERT IN:
-	/std/room/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-	keine
+   void init();
 
-BESCHREIBUNG:
-	init() wird immer dann aufgerufen, wenn ein lebendes Objekt in die
-	Naehe anderer Objekte bewegt wird oder ein nicht lebendiges Objekt
-	in die Naehe von Lebewesen gelangt. init() wird dabei in allen
-	Objekten aufgerufen, bei denen es notwendig ist.
 
-	Der Hauptzweck dieser Funktion besteht darin, den Objekten
-	untereinander ihre jeweiligen Befehle zugaenglich zu machen.
-	Waehrend dies in anderen MudLibs durch eine Reihe von
-	add_action()-Aufrufen im Rumpf von init() geschah, geschieht dies in
-	der MG-MudLib bei Objekten, die /std/thing/commands.c erben
-	 (das sind zB. alle Standardobjekte) quasi automatisch
-	 (dort werden die Befehle dann per AddCmd() im create() angemeldet,
-	  man spart sich die Implementierung von init() und dem Mud somit
-	  Speicher). Der andere Weg ist aber natuerlich immer noch moeglich.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-	keiner
+   /std/room/description.c
 
-BEMERKUNGEN:
-	Der Ablauf der init()-Kette ist wie folgt:
-	o Ist das Objekt X, welches ins Zielobjekt D bewegt wurde, ein
-	  Lebewesen, so wird in D init() aufgerufen, wobei this_player() auf
-	  X gesetzt ist.
-	o Dann wird fuer jedes Objekt C in D folgendes ausgefuehrt:
-	  + Ist C ein Lebewesen, dann wird init() in X aufgerufen, wobei
-	    this_player() auf C gesetzt ist.
-	  + Ist X ein Lebewesen, dann wird init() in C aufgerufen, wobei
-	  this_player() auf X gesetzt ist.
-	o Schliesslich wird in dem Fall, dass D lebendig ist, in X init()
-	  aufgerufen, wobei this_player() auf D gesetzt ist.
 
-BEISPIELE:
-	D sei ein Raum, in dem sich das Lebewesen L1 sowie die Gegenstaende
-	N1 und N2 befinden.
-	Betritt ein Spieler X diesen Raum, so werden folgende init()s
-	aufgerufen:
+ARGUMENTE
+=========
 
-	  D->init();  // this_player() == X
-	  X->init();  // this_player() == L1
-	  L1->init(); // this_player() == X
-	  N1->init(); // this_player() == X
-	  N2->init(); // this_player() == X
+   keine
 
-	Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
-	wie folgt aus:
 
-	  X->init();    // this_player() == L1
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-	exit(), AddCmd(), add_action(),
-  NotifyInsert()
-----------------------------------------------------------------------------
+   init() wird immer dann aufgerufen, wenn ein lebendes Objekt in die
+   Naehe anderer Objekte bewegt wird oder ein nicht lebendiges Objekt
+   in die Naehe von Lebewesen gelangt. init() wird dabei in allen
+   Objekten aufgerufen, bei denen es notwendig ist.
+
+   Der Hauptzweck dieser Funktion besteht darin, den Objekten
+   untereinander ihre jeweiligen Befehle zugaenglich zu machen.
+   Waehrend dies in anderen MudLibs durch eine Reihe von
+   add_action()-Aufrufen im Rumpf von init() geschah, geschieht dies in
+   der MG-MudLib bei Objekten, die /std/thing/commands.c erben
+    (das sind zB. alle Standardobjekte) quasi automatisch
+    (dort werden die Befehle dann per AddCmd() im create() angemeldet,
+     man spart sich die Implementierung von init() und dem Mud somit
+     Speicher). Der andere Weg ist aber natuerlich immer noch moeglich.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Der Ablauf der init()-Kette ist wie folgt:
+   o Ist das Objekt X, welches ins Zielobjekt D bewegt wurde, ein
+     Lebewesen, so wird in D init() aufgerufen, wobei this_player() auf
+     X gesetzt ist.
+   o Dann wird fuer jedes Objekt C in D folgendes ausgefuehrt:
+     + Ist C ein Lebewesen, dann wird init() in X aufgerufen, wobei
+       this_player() auf C gesetzt ist.
+     + Ist X ein Lebewesen, dann wird init() in C aufgerufen, wobei
+     this_player() auf X gesetzt ist.
+   o Schliesslich wird in dem Fall, dass D lebendig ist, in X init()
+     aufgerufen, wobei this_player() auf D gesetzt ist.
+
+
+BEISPIELE
+=========
+
+   D sei ein Raum, in dem sich das Lebewesen L1 sowie die Gegenstaende
+   N1 und N2 befinden.
+   Betritt ein Spieler X diesen Raum, so werden folgende init()s
+   aufgerufen:
+
+     D->init();  // this_player() == X
+     X->init();  // this_player() == L1
+     L1->init(); // this_player() == X
+     N1->init(); // this_player() == X
+     N2->init(); // this_player() == X
+
+   Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
+   wie folgt aus:
+
+     X->init();    // this_player() == L1
+
+
+SIEHE AUCH
+==========
+
+         exit(), AddCmd(), add_action(),
+   NotifyInsert()
+
 Last modified: 04.08.2007, Zesstra
diff --git a/doc/lfun/insert_sensitive_inv b/doc/lfun/insert_sensitive_inv
index 5b54df4..513632a 100644
--- a/doc/lfun/insert_sensitive_inv
+++ b/doc/lfun/insert_sensitive_inv
@@ -1,21 +1,36 @@
-insert_sensitive_inv
-FUNKTION:
-     void insert_sensitive_inv(object ob, string key,
-			       int threshold, mixed *opt)
 
-DEFINIERT IN:
-     /std/container/inventory.c
+insert_sensitive_inv()
+**********************
 
-BESCHREIBUNG:
-     Diese Funktion sucht, ob beim Hinzufuegen eines sensitiven Objekts
-     schon ein Objekt da ist, dass dieses ausloest.
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject, RemoveSensitiveObject
-     insert_sensitive_inv_trigger
-     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
-     P_SENSITIVE_INVENTORY_TRIGGER
-     CheckSensitiveAttack
+FUNKTION
+========
+
+   void insert_sensitive_inv(object ob, string key,
+                             int threshold, mixed *opt)
+
+
+DEFINIERT IN
+============
+
+   /std/container/inventory.c
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion sucht, ob beim Hinzufuegen eines sensitiven Objekts
+   schon ein Objekt da ist, dass dieses ausloest.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+   P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
 
 28.Jan.2001, Gloinson@MG
diff --git a/doc/lfun/insert_sensitive_inv_trigger b/doc/lfun/insert_sensitive_inv_trigger
index 766f0f5..edb78f8 100644
--- a/doc/lfun/insert_sensitive_inv_trigger
+++ b/doc/lfun/insert_sensitive_inv_trigger
@@ -1,21 +1,36 @@
-insert_sensitive_inv_trigger
-FUNKTION:
-     void insert_sensitive_inv_trigger(object ob, string key,
-				       int threshold, mixed *opt)
 
-DEFINIERT IN:
-     /std/container/inventory.c
+insert_sensitive_inv_trigger()
+******************************
 
-BESCHREIBUNG:
-     Diese Funktion sucht, ob ein sensitives Objekt im Inventory ist,
-     das durch dieses (soeben eingefuegte) Objekt ausgeloest wird.
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject, RemoveSensitiveObject
-     insert_sensitive_inv
-     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
-     P_SENSITIVE_INVENTORY_TRIGGER
-     CheckSensitiveAttack
+FUNKTION
+========
+
+   void insert_sensitive_inv_trigger(object ob, string key,
+                                     int threshold, mixed *opt)
+
+
+DEFINIERT IN
+============
+
+   /std/container/inventory.c
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion sucht, ob ein sensitives Objekt im Inventory ist,
+   das durch dieses (soeben eingefuegte) Objekt ausgeloest wird.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+   P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
 
 28.Jan.2001, Gloinson@MG
diff --git a/doc/lfun/int_long b/doc/lfun/int_long
index 7513e87..931e132 100644
--- a/doc/lfun/int_long
+++ b/doc/lfun/int_long
@@ -1,64 +1,91 @@
+
 int_long()
-FUNKTION:
-     varargs string int_long(mixed viewer, mixed viewpoint, int flags)
+**********
 
-DEFINIERT IN:
-     /std/room/description.c
 
-ARGUMENTE:
-     mixed viewer	- der Betrachter des Raumes
-     mixed viewpoint	- 0/Objekt/Array der/die Ausgangspunkt(e) des
-			  Betrachtens (und damit nicht sichtbar!)
-     int flags		- Modifikatoren fuer die Anzeige
-			  (siehe "man make_invlist", wird mit 3 verUNDet!)
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Es wird die Beschreibung des Rauminneren erstellt. Dabei wird die
-     Langbeschreibung des Raumes, die enthaltenen Objekte (exklusive
-     aller viewpoints (normalerweise nur der Betrachter)) und Ausgaenge,
-     wenn vom Viewer eingeschaltet dargestellt.
-     Falls der Raum innerhalb eines anderen Raumes liegt und selbst
-     transparent ist, wie zusaetzlich die Kurzbeschreibung des Aussen-
-     raumes angezeigt.
+   varargs string int_long(mixed viewer, mixed viewpoint, int flags)
 
-     Ist Viewer ein Magier mit eingeschaltetem Magiermodus, so wird der
-     Beschreibung der Dateiname des Raumes vorangestellt.
 
-RUeCKGABEWERT:
-     Die Langbeschreibung des Raumes von innen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Die Trennung von viewer und viewpoint hat durchaus ihren Sinn. So ist
-     es zum Beispiel moeglich, einen Raum "mit den Augen eines Anderen" zu
-     betrachten. Dabei saehe man sich selbst, wenn man im Raum waere.
+   /std/room/description.c
 
-BEISPIELE:
-     // in diesem Raum sieht man keine Mitspieler im "schau" oder beim
-     // Betreten (vielleicht ist es zu neblig)
-     // dazu werden einfach alle Interactives zu den viewpoints addiert
-     string int_long(object viewer, mixed viewpoints, int flags) {
-      if(!pointerp(viewpoints)) viewpoints=({viewpoints});
-      return ::int_long(&viewer,
-			viewpoints+
-			filter(all_inventory(this_object()),
-				     #'interactive),
-			&flags);
-     }
 
-     string int_short(object viewer, mixed viewpoints) {
-      if(!pointerp(viewpoints)) viewpoints=({viewpoints});
-      return ::int_short(&viewer,
-			 viewpoints+
-			 filter(all_inventory(this_object()),
-				      #'interactive));
-     }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Aehnliches:	int_short()
-     Properties:	P_INT_LONG, P_SHORT
-			P_HIDE_EXITS, P_SHOW_EXITS
-			P_TRANSPARENT
-     Kommandokette:	make_invlist(), short()
-     Sonstiges:		P_REFERENCE_OBJECT, P_WANTS_TO_LEARN
+   mixed viewer       - der Betrachter des Raumes
+   mixed viewpoint    - 0/Objekt/Array der/die Ausgangspunkt(e) des
+                        Betrachtens (und damit nicht sichtbar!)
+   int flags          - Modifikatoren fuer die Anzeige
+                        (siehe "man make_invlist", wird mit 3 verUNDet!)
+
+
+BESCHREIBUNG
+============
+
+   Es wird die Beschreibung des Rauminneren erstellt. Dabei wird die
+   Langbeschreibung des Raumes, die enthaltenen Objekte (exklusive
+   aller viewpoints (normalerweise nur der Betrachter)) und Ausgaenge,
+   wenn vom Viewer eingeschaltet dargestellt.
+   Falls der Raum innerhalb eines anderen Raumes liegt und selbst
+   transparent ist, wie zusaetzlich die Kurzbeschreibung des Aussen-
+   raumes angezeigt.
+
+   Ist Viewer ein Magier mit eingeschaltetem Magiermodus, so wird der
+   Beschreibung der Dateiname des Raumes vorangestellt.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Langbeschreibung des Raumes von innen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Trennung von viewer und viewpoint hat durchaus ihren Sinn. So ist
+   es zum Beispiel moeglich, einen Raum "mit den Augen eines Anderen" zu
+   betrachten. Dabei saehe man sich selbst, wenn man im Raum waere.
+
+
+BEISPIELE
+=========
+
+   // in diesem Raum sieht man keine Mitspieler im "schau" oder beim
+   // Betreten (vielleicht ist es zu neblig)
+   // dazu werden einfach alle Interactives zu den viewpoints addiert
+   string int_long(object viewer, mixed viewpoints, int flags) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_long(&viewer,
+                      viewpoints+
+                      filter(all_inventory(this_object()),
+                                   #'interactive),
+                      &flags);
+   }
+
+   string int_short(object viewer, mixed viewpoints) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_short(&viewer,
+                       viewpoints+
+                       filter(all_inventory(this_object()),
+                                    #'interactive));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        int_short()
+   Properties:        P_INT_LONG, P_SHORT
+                      P_HIDE_EXITS, P_SHOW_EXITS
+                      P_TRANSPARENT
+   Kommandokette:     make_invlist(), short()
+   Sonstiges:         P_REFERENCE_OBJECT, P_WANTS_TO_LEARN
 
 11. Mai 2004 Gloinson
diff --git a/doc/lfun/int_short b/doc/lfun/int_short
index e4a8d3a..aabd547 100644
--- a/doc/lfun/int_short
+++ b/doc/lfun/int_short
@@ -1,58 +1,85 @@
+
 int_short()
-FUNKTION:
-     string int_short(mixed viewer, mixed viewpoint);
+***********
 
-DEFINIERT IN:
-     /std/room/description.c
 
-ARGUMENTE:
-     mixed viewer	- der Betrachter des Raumes
-     mixed viewpoint	- 0/Objekt/Array der/die Ausgangspunkt(e) des
-			  Betrachtens (und damit nicht sichtbar!)
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Es wird eine kurze  Beschreibung des Rauminneren erstellt. Dabei wird
-     die Kurzbeschreibung des Raumes, die enthaltenen Objekte (exklusive
-     aller viewpoints (normalerweise nur der Betrachter)) und Ausgaenge,
-     wenn vom Viewer eingeschaltet dargestellt.
+   string int_short(mixed viewer, mixed viewpoint);
 
-     Ist Viewer ein Magier mit eingeschaltetem Magiermodus, so wird der
-     Beschreibung der Dateiname des Raumes vorangestellt.
 
-RUeCKGABEWERT:
-     Die Kurzbeschreibung des Raumes von innen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Die Trennung von viewer und viewpoint hat durchaus ihren Sinn. So ist
-     es zum Beispiel moeglich, einen Raum "mit den Augen eines Anderen" zu
-     betrachten. Dabei saehe man sich selbst, wenn man im Raum waere.
+   /std/room/description.c
 
-BEISPIELE:
-     // in diesem Raum sieht man keine Mitspieler im "schau" oder beim
-     // Betreten (vielleicht ist es zu neblig)
-     // dazu werden einfach alle Interactives zu den viewpoints addiert
-     string int_long(object viewer, mixed viewpoints, int flags) {
-      if(!pointerp(viewpoints)) viewpoints=({viewpoints});
-      return ::int_long(&viewer,
-			viewpoints+
-			filter(all_inventory(this_object()),
-				     #'interactive),
-			&flags);
-     }
 
-     string int_short(object viewer, mixed viewpoints) {
-      if(!pointerp(viewpoints)) viewpoints=({viewpoints});
-      return ::int_short(&viewer,
-			 viewpoints+
-			 filter(all_inventory(this_object()),
-				      #'interactive));
-     }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Aehnliches:	int_long()
-     Properties:	P_INT_SHORT, P_SHORT
-			P_HIDE_EXITS, P_SHOW_EXITS
-     Kommandokette:	make_invlist(), short()
-     Sonstiges:		P_REFERENCE_OBJECT, P_WANTS_TO_LEARN
+   mixed viewer       - der Betrachter des Raumes
+   mixed viewpoint    - 0/Objekt/Array der/die Ausgangspunkt(e) des
+                        Betrachtens (und damit nicht sichtbar!)
+
+
+BESCHREIBUNG
+============
+
+   Es wird eine kurze  Beschreibung des Rauminneren erstellt. Dabei wird
+   die Kurzbeschreibung des Raumes, die enthaltenen Objekte (exklusive
+   aller viewpoints (normalerweise nur der Betrachter)) und Ausgaenge,
+   wenn vom Viewer eingeschaltet dargestellt.
+
+   Ist Viewer ein Magier mit eingeschaltetem Magiermodus, so wird der
+   Beschreibung der Dateiname des Raumes vorangestellt.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Kurzbeschreibung des Raumes von innen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Trennung von viewer und viewpoint hat durchaus ihren Sinn. So ist
+   es zum Beispiel moeglich, einen Raum "mit den Augen eines Anderen" zu
+   betrachten. Dabei saehe man sich selbst, wenn man im Raum waere.
+
+
+BEISPIELE
+=========
+
+   // in diesem Raum sieht man keine Mitspieler im "schau" oder beim
+   // Betreten (vielleicht ist es zu neblig)
+   // dazu werden einfach alle Interactives zu den viewpoints addiert
+   string int_long(object viewer, mixed viewpoints, int flags) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_long(&viewer,
+                      viewpoints+
+                      filter(all_inventory(this_object()),
+                                   #'interactive),
+                      &flags);
+   }
+
+   string int_short(object viewer, mixed viewpoints) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_short(&viewer,
+                       viewpoints+
+                       filter(all_inventory(this_object()),
+                                    #'interactive));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        int_long()
+   Properties:        P_INT_SHORT, P_SHORT
+                      P_HIDE_EXITS, P_SHOW_EXITS
+   Kommandokette:     make_invlist(), short()
+   Sonstiges:         P_REFERENCE_OBJECT, P_WANTS_TO_LEARN
 
 11. Mai 2004 Gloinson
diff --git a/doc/lfun/is_class_member b/doc/lfun/is_class_member
index 7019447..1018e71 100644
--- a/doc/lfun/is_class_member
+++ b/doc/lfun/is_class_member
@@ -1,155 +1,174 @@
+
 is_class_member()
-FUNKTION:
-     int is_class_member(string|string* class);
+*****************
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     string/string* class	- String oder Stringarray der Klasse(n)
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Es wird getestet, ob das Objekt in eine der in class angegebenen
-     Klassen faellt. In diesen Test werden die folgenden Eigenschaften des
-     Objektes einbezogen:
+   int is_class_member(string|string* class);
 
-       1. Die Rasse des Objektes (bei Lebewesen),
-       2. die IDs des Objektes und
-       3. die explizit angegebenen Klassen des Objektes.
-       4. einigen impliziten Klassen, die sich aus den Klassen in 3 ergeben.
 
-     Die moeglichen Klassen sind in /sys/class.h definiert. Momentan stehen
-     folgende Klassen zur Verfuegung:
+DEFINIERT IN
+============
 
-     CL_AMMUNITION
-          Das Objekt eignet sich als Munition.
-     CL_ANIMAL
-          Das Objekt ist ein Tier.
-     CL_ARACHNID
-          Das Objekt in ein Spinnenwesen.
-     CL_BIGBANG
-          Dieses Objekt kann mehreren Lebewesen auf einmal Schaden zufuegen.
-     CL_BIRD
-          Ein Vogel.
-     CL_CRAWLING
-          Dieses Wesen bewegt sich kriechend.
-     CL_CURSE
-          Das Objekt ist ein Fluch (zB. ein Sprachfluch).
-     CL_DEMON
-          Bei dem Objekt handelt es sich um einen Daemon.
-     CL_DISEASE
-          Eine Krankheit.
-     CL_DRAGON
-          Ein Drache.
-     CL_DWARF
-          Fuer unsere kleinen Gaeste...
-     CL_ELF
-          Elfen aller Art.
-     CL_ELEMENTAL
-          Ein Elementar irgendeiner Art. Material setzen waere angebracht.
-     CL_EXPLOSIVE
-          Bei dem Objekt handelt es sich um einen Sprengstoff.
-     CL_FELINE
-          Felinen und andere katzenartigen Lebewesen.
-     CL_FISH
-          Fische - keine Meeressaeuger!
-     CL_FLYING
-          Dieses Wesen bewegt sich fliegend.
-     CL_FROG
-          Froesche - auch gefroschte Spieler.
-     CL_GHOST
-          Geister und geisterhafte Wesen.
-     CL_GHOUL
-          Ein Ghoul. Er faellt automatisch in die Klasse CL_UNDEAD.
-     CL_GIANT
-          Ein riesiges Lebewesen.
-     CL_GNOME
-          Ein Gnom.
-     CL_GOBLIN
-          Ein Goblin.
-     CL_HOBBIT
-          Ein Hobbit.
-     CL_HOBGOBLIN
-          Ein Hobgoblin. Er faellt automatisch auch in die Klasse CL_GOBLIN.
-     CL_HUMAN
-          Ein Mensch.
-     CL_INORGANIC
-          Anorganische Lebewesen wie Metallmonster
-     CL_INSECT
-          Insekten (Nicht mit Spinnen verwechseln)
-     CL_LIVING
-          Lebewesen im allgemeinen.
-     CL_MAMMAL
-          Saeugetiere.
-     CL_MAMMAL_LAND
-          Landsaeugetiere
-     CL_MAMMAL_WATER
-          Meeressaeuger.
-     CL_ORC
-          Ein Ork.
-     CL_PLANT
-          Pflanzen und pflanzenartige Monster.
-     CL_POISON
-          Das Objekt ist selbst ein Gift
-     CL_POISONOUS
-          Das Objekt kann einen Spieler/NPC vergiften.
-     CL_REPTILE
-          Reptilien.
-     CL_SHADOW
-          Schattenwesen.
-     CL_SKELETON
-          Ein Skelett. Es faellt automatisch in die Klasse CL_UNDEAD.
-     CL_SLIME
-          Fuer Einzeller und aehnliches Schleimgetier
-     CL_SNAKE
-          Schlangen.
-     CL_SWIMMING
-          Dieses Wesen bewegt sich schwimmend.
-     CL_TROLL
-          Ein Troll.
-     CL_UNDEAD
-          Ein untotes Lebewesen.
-     CL_WALKING
-          Dieses Wesen bewegt sich gehend.
-     CL_VAMPIRE
-          Ein Vampir. Er faellt automatisch in die Klasse CL_UNDEAD.
-     CL_ZOMBIE
-          Ein Zombie. Er faellt automatisch in die Klasse CL_UNDEAD.
+   /std/thing/description.c
 
-     Implizite Klassen:
-     Bei einigen Klassen wird im AddClass() automatisch eine oder mehrere
-     weiterer Klassen hinzugefuegt und im RemoveClass() die entsprechenden
-     impliziten Klassen auch automatisch entfernt.
-     Wuenscht man diese impliziten Klassen nicht, muss man nach dem AddClass()
-     diese mittels eines entsprechenden RemoveClass() entfernen.
-     Die impliziten Klassen einer Klasse lassen sich mit Hilfe der Funktion
-     QueryImplicitClasses() in CLASSDB herausfinden:
-       CLASSDB->QueryImplicitClasses(...)
-     Momentan sind dies:
-     CL_ZOMBIE:       CL_UNDEAD
-     CL_SKELETON:     CL_UNDEAD
-     CL_GHOUL:        CL_UNDEAD
-     CL_VAMPIRE:      CL_UNDEAD
-     CL_HOBGOBLIN:    CL_GOBLIN
-     CL_MAMMAL_LAND:  CL_MAMMAL, CL_ANIMAL
-     CL_MAMMAL_WATER: CL_MAMMAL, CL_ANIMAL
-     CL_SNAKE:        CL_REPTILE
-     CL_ARACHNID:     CL_ANIMAL
-     CL_BIRD:         CL_ANIMAL
-     CL_FISH:         CL_ANIMAL
-     CL_FROG:         CL_ANIMAL
-     CL_INSECT:       CL_ANIMAL
-     CL_MAMMAL:       CL_ANIMAL
-     CL_REPTILE:      CL_ANIMAL
-     CL_SNAKE:        CL_ANIMAL
 
-RUeCKGABEWERT:
-     1, wenn das Objekt in eine der angegebenen Klassen faellt, ansonsten 0.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     AddClass(), RemoveClass(), /std/thing/description.c
-     P_CLASS
+   string/string* class       - String oder Stringarray der Klasse(n)
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Es wird getestet, ob das Objekt in eine der in class angegebenen
+   Klassen faellt. In diesen Test werden die folgenden Eigenschaften des
+   Objektes einbezogen:
+
+     1. Die Rasse des Objektes (bei Lebewesen),
+     2. die IDs des Objektes und
+     3. die explizit angegebenen Klassen des Objektes.
+     4. einigen impliziten Klassen, die sich aus den Klassen in 3 ergeben.
+
+   Die moeglichen Klassen sind in /sys/class.h definiert. Momentan stehen
+   folgende Klassen zur Verfuegung:
+
+   CL_AMMUNITION
+        Das Objekt eignet sich als Munition.
+   CL_ANIMAL
+        Das Objekt ist ein Tier.
+   CL_ARACHNID
+        Das Objekt in ein Spinnenwesen.
+   CL_BIGBANG
+        Dieses Objekt kann mehreren Lebewesen auf einmal Schaden zufuegen.
+   CL_BIRD
+        Ein Vogel.
+   CL_CRAWLING
+        Dieses Wesen bewegt sich kriechend.
+   CL_CURSE
+        Das Objekt ist ein Fluch (zB. ein Sprachfluch).
+   CL_DEMON
+        Bei dem Objekt handelt es sich um einen Daemon.
+   CL_DISEASE
+        Eine Krankheit.
+   CL_DRAGON
+        Ein Drache.
+   CL_DWARF
+        Fuer unsere kleinen Gaeste...
+   CL_ELF
+        Elfen aller Art.
+   CL_ELEMENTAL
+        Ein Elementar irgendeiner Art. Material setzen waere angebracht.
+   CL_EXPLOSIVE
+        Bei dem Objekt handelt es sich um einen Sprengstoff.
+   CL_FELINE
+        Felinen und andere katzenartigen Lebewesen.
+   CL_FISH
+        Fische - keine Meeressaeuger!
+   CL_FLYING
+        Dieses Wesen bewegt sich fliegend.
+   CL_FROG
+        Froesche - auch gefroschte Spieler.
+   CL_GHOST
+        Geister und geisterhafte Wesen.
+   CL_GHOUL
+        Ein Ghoul. Er faellt automatisch in die Klasse CL_UNDEAD.
+   CL_GIANT
+        Ein riesiges Lebewesen.
+   CL_GNOME
+        Ein Gnom.
+   CL_GOBLIN
+        Ein Goblin.
+   CL_HOBBIT
+        Ein Hobbit.
+   CL_HOBGOBLIN
+        Ein Hobgoblin. Er faellt automatisch auch in die Klasse CL_GOBLIN.
+   CL_HUMAN
+        Ein Mensch.
+   CL_INORGANIC
+        Anorganische Lebewesen wie Metallmonster
+   CL_INSECT
+        Insekten (Nicht mit Spinnen verwechseln)
+   CL_LIVING
+        Lebewesen im allgemeinen.
+   CL_MAMMAL
+        Saeugetiere.
+   CL_MAMMAL_LAND
+        Landsaeugetiere
+   CL_MAMMAL_WATER
+        Meeressaeuger.
+   CL_ORC
+        Ein Ork.
+   CL_PLANT
+        Pflanzen und pflanzenartige Monster.
+   CL_POISON
+        Das Objekt ist selbst ein Gift
+   CL_POISONOUS
+        Das Objekt kann einen Spieler/NPC vergiften.
+   CL_REPTILE
+        Reptilien.
+   CL_SHADOW
+        Schattenwesen.
+   CL_SKELETON
+        Ein Skelett. Es faellt automatisch in die Klasse CL_UNDEAD.
+   CL_SLIME
+        Fuer Einzeller und aehnliches Schleimgetier
+   CL_SNAKE
+        Schlangen.
+   CL_SWIMMING
+        Dieses Wesen bewegt sich schwimmend.
+   CL_TROLL
+        Ein Troll.
+   CL_UNDEAD
+        Ein untotes Lebewesen.
+   CL_WALKING
+        Dieses Wesen bewegt sich gehend.
+   CL_VAMPIRE
+        Ein Vampir. Er faellt automatisch in die Klasse CL_UNDEAD.
+   CL_ZOMBIE
+        Ein Zombie. Er faellt automatisch in die Klasse CL_UNDEAD.
+
+   Implizite Klassen:
+   Bei einigen Klassen wird im AddClass() automatisch eine oder mehrere
+   weiterer Klassen hinzugefuegt und im RemoveClass() die entsprechenden
+   impliziten Klassen auch automatisch entfernt.
+   Wuenscht man diese impliziten Klassen nicht, muss man nach dem AddClass()
+   diese mittels eines entsprechenden RemoveClass() entfernen.
+   Die impliziten Klassen einer Klasse lassen sich mit Hilfe der Funktion
+   QueryImplicitClasses() in CLASSDB herausfinden:
+     CLASSDB->QueryImplicitClasses(...)
+   Momentan sind dies:
+   CL_ZOMBIE:       CL_UNDEAD
+   CL_SKELETON:     CL_UNDEAD
+   CL_GHOUL:        CL_UNDEAD
+   CL_VAMPIRE:      CL_UNDEAD
+   CL_HOBGOBLIN:    CL_GOBLIN
+   CL_MAMMAL_LAND:  CL_MAMMAL, CL_ANIMAL
+   CL_MAMMAL_WATER: CL_MAMMAL, CL_ANIMAL
+   CL_SNAKE:        CL_REPTILE
+   CL_ARACHNID:     CL_ANIMAL
+   CL_BIRD:         CL_ANIMAL
+   CL_FISH:         CL_ANIMAL
+   CL_FROG:         CL_ANIMAL
+   CL_INSECT:       CL_ANIMAL
+   CL_MAMMAL:       CL_ANIMAL
+   CL_REPTILE:      CL_ANIMAL
+   CL_SNAKE:        CL_ANIMAL
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt in eine der angegebenen Klassen faellt, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   AddClass(), RemoveClass(), /std/thing/description.c
+   P_CLASS
+
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/lfun b/doc/lfun/lfun
index eadd45a..6e35081 100644
--- a/doc/lfun/lfun
+++ b/doc/lfun/lfun
@@ -1,12 +1,25 @@
-NAME:
-	lfun()
 
-DESCRIPTION:
-	This directory contains descriptions for the lfuns used by
-	Amylaar's version of the LPC parser.
+lfun()
+******
 
-	These are functions that are applied by the parser to the LPC
-	objects on various occasions.
 
-SEE ALSO:
-	efun(E), master(M), concepts(C), lpc(LPC), driver(D)
+NAME
+====
+
+   lfun()
+
+
+DESCRIPTION
+===========
+
+   This directory contains descriptions for the lfuns used by
+   Amylaar's version of the LPC parser.
+
+   These are functions that are applied by the parser to the LPC
+   objects on various occasions.
+
+
+SEE ALSO
+========
+
+   efun(E), master(M), concepts(C), lpc(LPC), driver(D)
diff --git a/doc/lfun/locate_objects b/doc/lfun/locate_objects
index 1d56e9a..5854980 100644
--- a/doc/lfun/locate_objects
+++ b/doc/lfun/locate_objects
@@ -1,54 +1,79 @@
+
 locate_objects()
+****************
 
-FUNKTION:
-     object *locate_objects(string desc, int info);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     desc
-          Die Umschreibung des gesuchten Objektes.
+   object *locate_objects(string desc, int info);
 
-     info
-          Ist ungleich 0, wenn diese Funktion von /std/living/put_and_get.c
-          aus aufgerufen wurde.
 
-BESCHREIBUNG:
-     Diese Funktion erweitert die Funktionalitaet von present_objects()
-     insofern, als dass es moeglich ist, auch noch Behaelter innerhalb des
-     Behaelters zu durchsuchen. Das genaue Verhalten haengt von desc ab:
+DEFINIERT IN
+============
 
-     Ist desc von der Form "<id>", so wird das Ergebnis von
-     present_objects(desc) zurueckgegeben.
+   /std/container/restrictions.c
 
-     Ist desc von der Form "<gesucht> in <id>", so wird in allen Objekten,
-     die von present_objects("<id>") erfasst wurden,
-     locate_objects("<desc>") aufgerufen. Zurueckgegeben werden alle auf
-     diese Weise gefundenen Objekte.
 
-RUeCKGABEWERT:
-     Array von Objekten, die auf die oben geschilderte Art und Weise
-     ermittelt wurden. Konnte kein Objekt ermittelt werden, wird ein leeres
-     Array zurueckgegeben.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Theoretisch sollte es moeglich sein, ueber desc rekursiv mehrere
-     Behaelterebenen erfassen zu koennen (etwa mit "schwert in beutel in
-     beutel in wargon"). In der aktuellen Implementierung klappt das jedoch
-     nicht; nach dem ersten "in" ist Schluss!
+   desc
+        Die Umschreibung des gesuchten Objektes.
 
-BEISPIELE:
-     Was steckt alles dem Beutel, den der Spieler bei sich traegt?
+   info
+        Ist ungleich 0, wenn diese Funktion von /std/living/put_and_get.c
+        aus aufgerufen wurde.
 
-     object *obs;
-     obs = this_player()->locate_objects("alles in beutel");
 
-     Traegt der Spieler keinen Beutel bei sich oder ist dieser leer, so wird
-     ein leeres Array zurueckgegeben.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     present_objects(), /std/container/restrictions.c
+   Diese Funktion erweitert die Funktionalitaet von present_objects()
+   insofern, als dass es moeglich ist, auch noch Behaelter innerhalb des
+   Behaelters zu durchsuchen. Das genaue Verhalten haengt von desc ab:
 
-----------------------------------------------------------------------------
+   Ist desc von der Form "<id>", so wird das Ergebnis von
+   present_objects(desc) zurueckgegeben.
+
+   Ist desc von der Form "<gesucht> in <id>", so wird in allen Objekten,
+   die von present_objects("<id>") erfasst wurden,
+   locate_objects("<desc>") aufgerufen. Zurueckgegeben werden alle auf
+   diese Weise gefundenen Objekte.
+
+
+RUeCKGABEWERT
+=============
+
+   Array von Objekten, die auf die oben geschilderte Art und Weise
+   ermittelt wurden. Konnte kein Objekt ermittelt werden, wird ein leeres
+   Array zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Theoretisch sollte es moeglich sein, ueber desc rekursiv mehrere
+   Behaelterebenen erfassen zu koennen (etwa mit "schwert in beutel in
+   beutel in wargon"). In der aktuellen Implementierung klappt das jedoch
+   nicht; nach dem ersten "in" ist Schluss!
+
+
+BEISPIELE
+=========
+
+   Was steckt alles dem Beutel, den der Spieler bei sich traegt?
+
+   object *obs;
+   obs = this_player()->locate_objects("alles in beutel");
+
+   Traegt der Spieler keinen Beutel bei sich oder ist dieser leer, so wird
+   ein leeres Array zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   present_objects(), /std/container/restrictions.c
+
 Last modified: Wed May 8 10:20:36 1996 by Wargon
diff --git a/doc/lfun/logon b/doc/lfun/logon
index 700f1e0..4fb7117 100644
--- a/doc/lfun/logon
+++ b/doc/lfun/logon
@@ -1,15 +1,26 @@
+
 logon()
+*******
 
-SYNOPSIS:
-	int logon(void)
 
-DESCRIPTION:
-	When the parser accepts a new connection, it first calls
-	connect() in the master object and then applies logon() to
-	the object that is returned by the master. That will usually be
-	a special login object, that is expected to clone and get going
-	a user shell or player object.
-	Should return 0 on failure, everything else means success.
+SYNOPSIS
+========
 
-SEE ALSO:
-	connect(M)
+   int logon(void)
+
+
+DESCRIPTION
+===========
+
+   When the parser accepts a new connection, it first calls
+   connect() in the master object and then applies logon() to
+   the object that is returned by the master. That will usually be
+   a special login object, that is expected to clone and get going
+   a user shell or player object.
+   Should return 0 on failure, everything else means success.
+
+
+SEE ALSO
+========
+
+   connect(M)
diff --git a/doc/lfun/long b/doc/lfun/long
index 34ac4f9..a186cf9 100644
--- a/doc/lfun/long
+++ b/doc/lfun/long
@@ -1,31 +1,55 @@
+
 long()
-FUNKTION:
-     varargs string long(int mode);
+******
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     int mode		- Modifikatoren fuer die Anzeige, falls this_object()
-			  ein Container ist
-			  (siehe "man make_invlist")
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Inhalt der Property P_LONG wird ausgewertet und zurueckgegeben.
-     Falls das Objekt ein Container und transparent (offen) ist, wird
-     zudem make_invlist() auf den Inhalt zurueckgegeben.
+   varargs string long(int mode);
 
-RUeCKGABEWERT:
-     Die Langbeschreibung des Objektes.
 
-BEMERKUNGEN:
-     Durch Ueberladen von long() lassen sich noch weitere Eigenschaften des
-     Objektes anzeigen. Behaelter koennen zum Beispiel noch ihren Inhalt
-     anzeigen, Lebewesen ihren Gesundheitszustand, o.ae.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Aehnliches:	short()
-     Properties:	P_LONG, P_INVIS, P_TRANSPARENT
-     Sonstiges:		make_invlist()
+   /std/thing/description.c
 
-11. Mai 2004 Gloinson
\ No newline at end of file
+
+ARGUMENTE
+=========
+
+   int mode           - Modifikatoren fuer die Anzeige, falls this_object()
+                        ein Container ist
+                        (siehe "man make_invlist")
+
+
+BESCHREIBUNG
+============
+
+   Der Inhalt der Property P_LONG wird ausgewertet und zurueckgegeben.
+   Falls das Objekt ein Container und transparent (offen) ist, wird
+   zudem make_invlist() auf den Inhalt zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Langbeschreibung des Objektes.
+
+
+BEMERKUNGEN
+===========
+
+   Durch Ueberladen von long() lassen sich noch weitere Eigenschaften des
+   Objektes anzeigen. Behaelter koennen zum Beispiel noch ihren Inhalt
+   anzeigen, Lebewesen ihren Gesundheitszustand, o.ae.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        short()
+   Properties:        P_LONG, P_INVIS, P_TRANSPARENT
+   Sonstiges:         make_invlist()
+
+11. Mai 2004 Gloinson
diff --git a/doc/lfun/make_immortal b/doc/lfun/make_immortal
index a567229..9d0f402 100644
--- a/doc/lfun/make_immortal
+++ b/doc/lfun/make_immortal
@@ -1,27 +1,44 @@
-make_immortal()
-
-FUNKTION:
-     void make_immortal();
-
-DEFINIERT IN:
-     /std/npc/combat.c
-
-BESCHREIBUNG:
-     Macht den NPC fuer 5 Minuten unangreifbar und heilt ihn.
-
-     Wird bei Fehlern im Herzschlag des NPCs gerufen um Bugnutzung
-     zu unterbinden.
-
-     Ausschrift:
-     "... versteckt sich hinter einem Fehler im Raum-Zeit-Gefuege und
-      entgeht so voruebergehend allen Angriffen."
-
-BEMERKUNGEN:
-     Nicht missbrauchen.
-
-SIEHE AUCH:
-     Methoden:       heart_beat(), static _check_immortality()
-     Master:         heart_beat_error()
-     Properties:     "time_to_mortality"
-
-1.Juni 2007 Gloinson
+
+make_immortal()
+***************
+
+
+FUNKTION
+========
+
+   void make_immortal();
+
+
+DEFINIERT IN
+============
+
+   /std/npc/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Macht den NPC fuer 5 Minuten unangreifbar und heilt ihn.
+
+   Wird bei Fehlern im Herzschlag des NPCs gerufen um Bugnutzung
+   zu unterbinden.
+
+   Ausschrift:
+   "... versteckt sich hinter einem Fehler im Raum-Zeit-Gefuege und
+    entgeht so voruebergehend allen Angriffen."
+
+
+BEMERKUNGEN
+===========
+
+   Nicht missbrauchen.
+
+
+SIEHE AUCH
+==========
+
+   Methoden:       heart_beat(), static _check_immortality()
+   Master:         heart_beat_error()
+   Properties:     "time_to_mortality"
+
+1.Juni 2007 Gloinson
diff --git a/doc/lfun/make_invlist b/doc/lfun/make_invlist
index effbcca..379b47c 100644
--- a/doc/lfun/make_invlist
+++ b/doc/lfun/make_invlist
@@ -1,38 +1,59 @@
+
 make_invlist()
-FUNKTION:
-     varargs mixed make_invlist(object viewer, mixed inv, int flags)
+**************
 
-DEFINIERT IN:
-     /std/container/description.c
 
-ARGUMENTE:
-     object viewer	- das Objekt, welches sich den Inhalt ansieht (in
-			  der Regel this_player())
-     mixed inv		- ein Array von Objekten, die in die Liste
-			  aufgenommen werden sollen
-     int flags		- Folgende Werte koennen verODERt werden:
-			  1: das Inv nicht als String, sondern als ein
-			     Array zurueckgeben
-			  2: gleiche Objekte nicht zusammengefassen
-			  4: unterdrueckt die Ausgabe des Dateinamens hinter
-			     jedem trotz eingeschaltetem Magiermodus
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Die Kurzbeschreibungen der Objekte in inv werden zu einer Liste
-     zusammengefasst (eine Zeile pro Objekt). Unsichtbare Objekte tauchen in
-     dieser Liste nicht auf.
+   varargs mixed make_invlist(object viewer, mixed inv, int flags)
 
-     Ist viewer ein Magier mit eingeschaltetem Magiermodus, so wird hinter
-     die Kurzbeschreibungen noch der Dateiname des jeweiligen Objektes in
-     eckigen Klammern angegeben. Unsichtbare Objekte erscheinen in diesem
-     Fall als Filenamen.
 
-RUeCKGABEWERT:
-     Ein String oder ein Array, die das inv beschreiben.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Kommandokette:	short()
-     Properties:	P_SHORT, P_INVIS, P_WANTS_TO_LEARN
-     Sonstiges:		P_REFERENCE_OBJECT
+   /std/container/description.c
+
+
+ARGUMENTE
+=========
+
+   object viewer      - das Objekt, welches sich den Inhalt ansieht (in
+                        der Regel this_player())
+   mixed inv          - ein Array von Objekten, die in die Liste
+                        aufgenommen werden sollen
+   int flags          - Folgende Werte koennen verODERt werden:
+                        1: das Inv nicht als String, sondern als ein
+                           Array zurueckgeben
+                        2: gleiche Objekte nicht zusammengefassen
+                        4: unterdrueckt die Ausgabe des Dateinamens hinter
+                           jedem trotz eingeschaltetem Magiermodus
+
+
+BESCHREIBUNG
+============
+
+   Die Kurzbeschreibungen der Objekte in inv werden zu einer Liste
+   zusammengefasst (eine Zeile pro Objekt). Unsichtbare Objekte tauchen in
+   dieser Liste nicht auf.
+
+   Ist viewer ein Magier mit eingeschaltetem Magiermodus, so wird hinter
+   die Kurzbeschreibungen noch der Dateiname des jeweiligen Objektes in
+   eckigen Klammern angegeben. Unsichtbare Objekte erscheinen in diesem
+   Fall als Filenamen.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String oder ein Array, die das inv beschreiben.
+
+
+SIEHE AUCH
+==========
+
+   Kommandokette:     short()
+   Properties:        P_SHORT, P_INVIS, P_WANTS_TO_LEARN
+   Sonstiges:         P_REFERENCE_OBJECT
 
 Last modified: Tue Oct 15 10:10:00 2002 by Rikus
diff --git a/doc/lfun/master/AddWizardForUID b/doc/lfun/master/AddWizardForUID
index c58463b..249e27c 100644
--- a/doc/lfun/master/AddWizardForUID
+++ b/doc/lfun/master/AddWizardForUID
@@ -1,47 +1,74 @@
+
 AddWizardForUID()
+*****************
 
-FUNKTION:
-    string* AddWizardForUID(string uid, string wizard);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uid
-      Die UID, fuer die man einen (weiteren) verantwortlichen Magier
-      explizit eintragen moechte.
-    wizard
-      Der Magier, den man eintragen moechte.
+   string* AddWizardForUID(string uid, string wizard);
 
-BESCHREIBUNG:
-    Die Funktion traegt einen Magier 'wizard' explizit als verantwortlichen
-    Magier fuer die UID 'uid' ein. Hierbei kann 'uid' sogar der Name eines
-		anderen Magiers sein, dessen UIDs 'wizard' sozusagen "adoptiert".
 
-		Berechtigt zum Eintragen von Magiern fuer bestimmte UIDs sind alle Magier,
-    die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
-    Z.B. kann Zesstra ohne weiteres jemand weiteren als verantwortlich fuer
-    d.inseln.zesstra eintragen.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
-    fuer die dier Magier jetzt explizit eingetragen ist.
+   /secure/master/userinfo.c
 
-BEMERKUNGEN:
-    Es ist nicht noetig, z.B. Zesstra als verantwortlich fuer d.inseln.zesstra
-    einzutragen, da sie ohnehin schon implizit dafuer zustaendig ist. Auch
-    fuer RMs bzw. GMs muss ihre Region bzw. Gilde nicht explizit eingetragen 
-    werden.
 
-BEISPIELE:
-    master()->AddWizardForUID("p.waterluh","zook");
-		
-		string *uids = master()->AddWizardForUID("jof","zook");
-    printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    QueryWizardsForUID(), QueryUIDsForWizard,
-		RemoveWizardFromUID()
+   uid
+     Die UID, fuer die man einen (weiteren) verantwortlichen Magier
+     explizit eintragen moechte.
+   wizard
+     Der Magier, den man eintragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion traegt einen Magier 'wizard' explizit als verantwortlichen
+   Magier fuer die UID 'uid' ein. Hierbei kann 'uid' sogar der Name eines
+               anderen Magiers sein, dessen UIDs 'wizard' sozusagen "adoptiert".
+
+               Berechtigt zum Eintragen von Magiern fuer bestimmte UIDs sind alle Magier,
+   die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
+   Z.B. kann Zesstra ohne weiteres jemand weiteren als verantwortlich fuer
+   d.inseln.zesstra eintragen.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
+   fuer die dier Magier jetzt explizit eingetragen ist.
+
+
+BEMERKUNGEN
+===========
+
+   Es ist nicht noetig, z.B. Zesstra als verantwortlich fuer d.inseln.zesstra
+   einzutragen, da sie ohnehin schon implizit dafuer zustaendig ist. Auch
+   fuer RMs bzw. GMs muss ihre Region bzw. Gilde nicht explizit eingetragen
+   werden.
+
+
+BEISPIELE
+=========
+
+   master()->AddWizardForUID("p.waterluh","zook");
+
+
+
+               string *uids = master()->AddWizardForUID("jof","zook");
+   printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(), QueryUIDsForWizard,
+               RemoveWizardFromUID()
 
 20.02.2007, Zesstra
-
diff --git a/doc/lfun/master/QueryUIDAlias b/doc/lfun/master/QueryUIDAlias
index 0ea844c..8f58509 100644
--- a/doc/lfun/master/QueryUIDAlias
+++ b/doc/lfun/master/QueryUIDAlias
@@ -1,43 +1,65 @@
+
 QueryUIDAlias()
+***************
 
-FUNKTION:
-    varargs string* QueryUIDsForWizard(string uidalias, int recursive);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uidalias
-      UID, die expandiert werden soll.
-    recursive (optional)
-      Gibt an, ob QueryUIDAlias() (indirekt) rekursiv aufgerufen wurde.
-      Sollte normalerweise nicht per Hand gesetzt werden.
+   varargs string* QueryUIDsForWizard(string uidalias, int recursive);
 
-BESCHREIBUNG:
-    Die Funktion ermittelt aus einer "Alias-UID" die UID, fuer die sie steht.
-    Hierbei werden folgende UID-Aliase beruecksichtigt:
-    "region":    d.region.* + region + d.region
-    "gilde":     GUILD.gilde, GUILD.gildenspellbook, p.gilde
-    "p":         p.* (ohne p.service)
-    "p.service": p.service.*
-    "magierid":  QueryUIDsForWizard()
 
-    Das Ergebnis dieser Funktion wird laengere Zeit gecachet (bis zu 24h).
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
-    Sollte uidaliase keines der o.g. sein, wird ein ({uidalias}) geliefert.
+   /secure/master/userinfo.c
 
-BEISPIELE:
-    string *uids = master()->QueryUIDAlias("schattenwelt");
-    // uids enthaelt nun:
-    // ({"d.anfaenger","anfaenger","d.anfaenger.ark","d.anfaenger.ennox",
-    //   "d.anfaenger.humni","d.anfaenger.kiria","d.anfaenger.konzepte",
-    //   "d.anfaenger.miril"})
 
-SIEHE AUCH:
-    QueryWizardsForUID(), 
-		AddWizardForUID(), RemoveWizardFromUID()
+ARGUMENTE
+=========
+
+   uidalias
+     UID, die expandiert werden soll.
+   recursive (optional)
+     Gibt an, ob QueryUIDAlias() (indirekt) rekursiv aufgerufen wurde.
+     Sollte normalerweise nicht per Hand gesetzt werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt aus einer "Alias-UID" die UID, fuer die sie steht.
+   Hierbei werden folgende UID-Aliase beruecksichtigt:
+   "region":    d.region.* + region + d.region
+   "gilde":     GUILD.gilde, GUILD.gildenspellbook, p.gilde
+   "p":         p.* (ohne p.service)
+   "p.service": p.service.*
+   "magierid":  QueryUIDsForWizard()
+
+   Das Ergebnis dieser Funktion wird laengere Zeit gecachet (bis zu 24h).
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
+   Sollte uidaliase keines der o.g. sein, wird ein ({uidalias}) geliefert.
+
+
+BEISPIELE
+=========
+
+   string *uids = master()->QueryUIDAlias("schattenwelt");
+   // uids enthaelt nun:
+   // ({"d.anfaenger","anfaenger","d.anfaenger.ark","d.anfaenger.ennox",
+   //   "d.anfaenger.humni","d.anfaenger.kiria","d.anfaenger.konzepte",
+   //   "d.anfaenger.miril"})
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(),
+               AddWizardForUID(), RemoveWizardFromUID()
 
 16.12.2007, Zesstra
-
diff --git a/doc/lfun/master/QueryUIDsForWizard b/doc/lfun/master/QueryUIDsForWizard
index a4028c1..e0d5816 100644
--- a/doc/lfun/master/QueryUIDsForWizard
+++ b/doc/lfun/master/QueryUIDsForWizard
@@ -1,42 +1,64 @@
+
 QueryUIDsForWizard()
+********************
 
-FUNKTION:
-    varargs string* QueryUIDsForWizard(string wizname, int recursive);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    wizname
-      Der Magier, fuer den man die UIDs ermitteln will, fuer die er
-      zustaendig ist.
-    recursive (optional)
-      Gibt an, ob QueryUIDsForWizard() (indirekt) rekursiv aufgerufen wurde.
-      Sollte normalerweise nicht per Hand gesetzt werden.
+   varargs string* QueryUIDsForWizard(string wizname, int recursive);
 
-BESCHREIBUNG:
-    Die Funktion ermittelt die UIDs, fuer die dieser Magier zustaendig ist.
-    Dabei wird impliziert beruecksichtigt, wenn der Magier RM einer Region
-    oder Gildenmagier einer Gilde ist, ebenso wie Verzeichnisse in den
-    Regionen oder in /p/service.
-    Ausserdem wird nachgeschaut, fuer welche UIDs dieser Magier explizit
-    eingetragen worden ist.
-    Wenn z.B. Magier A auch fuer alle UIDs von Magier B zustaendig sein
-    sollte, liefert die Funktion auch die UIDs von B zurueck.
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
-    Sollte fuer einen Namen keine UID ermittelbar sein, ist das Arrays leer.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    string *uids = master()->QueryUIDsForWizard("ennox");
-    // uids enthaelt nun:
-    // ({"ennox","d.anfaenger.ennox","d.schattenwelt.ennox",
-    //   "p.service.ennox","GUILD.chaos","p.chaos"})
+   /secure/master/userinfo.c
 
-SIEHE AUCH:
-    QueryWizardsForUID(), 
-		AddWizardForUID(), RemoveWizardFromUID()
+
+ARGUMENTE
+=========
+
+   wizname
+     Der Magier, fuer den man die UIDs ermitteln will, fuer die er
+     zustaendig ist.
+   recursive (optional)
+     Gibt an, ob QueryUIDsForWizard() (indirekt) rekursiv aufgerufen wurde.
+     Sollte normalerweise nicht per Hand gesetzt werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt die UIDs, fuer die dieser Magier zustaendig ist.
+   Dabei wird impliziert beruecksichtigt, wenn der Magier RM einer Region
+   oder Gildenmagier einer Gilde ist, ebenso wie Verzeichnisse in den
+   Regionen oder in /p/service.
+   Ausserdem wird nachgeschaut, fuer welche UIDs dieser Magier explizit
+   eingetragen worden ist.
+   Wenn z.B. Magier A auch fuer alle UIDs von Magier B zustaendig sein
+   sollte, liefert die Funktion auch die UIDs von B zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
+   Sollte fuer einen Namen keine UID ermittelbar sein, ist das Arrays leer.
+
+
+BEISPIELE
+=========
+
+   string *uids = master()->QueryUIDsForWizard("ennox");
+   // uids enthaelt nun:
+   // ({"ennox","d.anfaenger.ennox","d.schattenwelt.ennox",
+   //   "p.service.ennox","GUILD.chaos","p.chaos"})
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(),
+               AddWizardForUID(), RemoveWizardFromUID()
 
 16.12.2007, Zesstra
-
diff --git a/doc/lfun/master/QueryWizardsForUID b/doc/lfun/master/QueryWizardsForUID
index 93095b6..6ddbdc3 100644
--- a/doc/lfun/master/QueryWizardsForUID
+++ b/doc/lfun/master/QueryWizardsForUID
@@ -1,46 +1,71 @@
+
 QueryWizardsForUID()
+********************
 
-FUNKTION:
-    varargs string* QueryWizardsForUID(string uid, int recursive);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uid
-      Die UID, fuer die man die Magier ermitteln will, die fuer sie
-      zustaendig sind.
-    recursive (optional)
-      gibt an, ob das QueryWizardsForUID() (indirekt) aus einem 
-      QueryWizardsForUID() heraus gerufen wurde. Sollte nicht manuell gesetzt
-      werden.
+   varargs string* QueryWizardsForUID(string uid, int recursive);
 
-BESCHREIBUNG:
-    Die Funktion ermittelt die Magier, die fuer diese UID zustaendig sind.
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist ein Magier.
-    Sollte fuer eine UID kein Magier ermittelbar sein, ist das Array leer.
-    Wenn z.B. fuer die UID der Magier "Atamur" gefunden wird, aber fuer alle 
-    UIDs von "Atamur" auch der Magier "Rumata" zustaendig sein sollte, wird 
-    "Rumata" ueber eine rekursive Suche gefunden.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    Wenn die UID den Magier nicht implizit enthaelt (z.B. GUILD.gilde, im 
-    Gegensatz zu d.region.magier), findet diese Funktion nur Magier, fuer die 
-    seit Laden des Master bereits einmal get_userinfo() oder 
-    QueryUIDsForWizard() im Master gerufen wurde, was z.B. Einloggen passiert.
-    Magier, die lang nicht einloggten, werden also manchmal nicht gefunden,
-    was in der Regel nicht schlimm sein sollte, da sie ja ohnehin den
-    entsprechenden Code gerade nicht warten...
+   /secure/master/userinfo.c
 
-BEISPIELE:
-    string *wiz = master()->QueryWizards("GUILD.klerus");
-    // wiz enthaelt nun: ({"morgoth","magdalena"})
 
-SIEHE AUCH:
-    QueryUIDsForWizard(), 
-		AddWizardForUID(), RemoveWizardFromUID()
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man die Magier ermitteln will, die fuer sie
+     zustaendig sind.
+   recursive (optional)
+     gibt an, ob das QueryWizardsForUID() (indirekt) aus einem
+     QueryWizardsForUID() heraus gerufen wurde. Sollte nicht manuell gesetzt
+     werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt die Magier, die fuer diese UID zustaendig sind.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist ein Magier.
+   Sollte fuer eine UID kein Magier ermittelbar sein, ist das Array leer.
+   Wenn z.B. fuer die UID der Magier "Atamur" gefunden wird, aber fuer alle
+   UIDs von "Atamur" auch der Magier "Rumata" zustaendig sein sollte, wird
+   "Rumata" ueber eine rekursive Suche gefunden.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn die UID den Magier nicht implizit enthaelt (z.B. GUILD.gilde, im
+   Gegensatz zu d.region.magier), findet diese Funktion nur Magier, fuer die
+   seit Laden des Master bereits einmal get_userinfo() oder
+   QueryUIDsForWizard() im Master gerufen wurde, was z.B. Einloggen passiert.
+   Magier, die lang nicht einloggten, werden also manchmal nicht gefunden,
+   was in der Regel nicht schlimm sein sollte, da sie ja ohnehin den
+   entsprechenden Code gerade nicht warten...
+
+
+BEISPIELE
+=========
+
+   string *wiz = master()->QueryWizards("GUILD.klerus");
+   // wiz enthaelt nun: ({"morgoth","magdalena"})
+
+
+SIEHE AUCH
+==========
+
+   QueryUIDsForWizard(),
+               AddWizardForUID(), RemoveWizardFromUID()
 
 16.12.2007, Zesstra
-
diff --git a/doc/lfun/master/RemoveWizardFromUID b/doc/lfun/master/RemoveWizardFromUID
index da97132..1fdeba5 100644
--- a/doc/lfun/master/RemoveWizardFromUID
+++ b/doc/lfun/master/RemoveWizardFromUID
@@ -1,38 +1,62 @@
+
 RemoveWizardFromUID()
+*********************
 
-FUNKTION:
-    string* RemoveWizardFromUID(string uid, string wizard);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uid
-      Die UID, fuer die man einen zustaendigen Magier austragen will.
-    wizard
-      Der Magier, den man austragen moechte.
+   string* RemoveWizardFromUID(string uid, string wizard);
 
-BESCHREIBUNG:
-    Die Funktion loescht die UID 'uid' aus der Liste der UIDs, fuer die
-    'wizard' explizit zustaendig ist.
 
-    Berechtigt zum Austragen von Magiern fuer bestimmte UIDs sind alle Magier,
-    die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
-    Man kann sich auch selber austragen. ;-)
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
-    fuer die dier Magier jetzt explizit eingetragen ist.
+   /secure/master/userinfo.c
 
-BEISPIELE:
-    master()->RemoveWizardFromUID("p.waterluh","zook");
-		
-    string *uids = master()->RemoveWizardFromUID("jof","zook");
-    printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
 
-SIEHE AUCH:
-    QueryWizardsForUID(), QueryUIDsForWizard()
-		AddWizardForUID()
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man einen zustaendigen Magier austragen will.
+   wizard
+     Der Magier, den man austragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion loescht die UID 'uid' aus der Liste der UIDs, fuer die
+   'wizard' explizit zustaendig ist.
+
+   Berechtigt zum Austragen von Magiern fuer bestimmte UIDs sind alle Magier,
+   die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
+   Man kann sich auch selber austragen. ;-)
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
+   fuer die dier Magier jetzt explizit eingetragen ist.
+
+
+BEISPIELE
+=========
+
+   master()->RemoveWizardFromUID("p.waterluh","zook");
+
+
+
+   string *uids = master()->RemoveWizardFromUID("jof","zook");
+   printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(), QueryUIDsForWizard()
+               AddWizardForUID()
 
 20.02.2007, Zesstra
-
diff --git a/doc/lfun/match_ids b/doc/lfun/match_ids
index d2c985b..48f368f 100644
--- a/doc/lfun/match_ids
+++ b/doc/lfun/match_ids
@@ -1,47 +1,69 @@
+
 match_ids()
+***********
 
-FUNKTION:
-     int match_ids(string *list);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     *list	String-Array mit zu testenden IDs
+   int match_ids(string *list);
 
-BESCHREIBUNG:
-     Die Liste der uebergebenen IDs wird mit den IDs des Objektes
-     UND-Verknuepft. Die Groesse des resultierenden Arrays wird
-     zurueckgegeben.
-     Diese Funktion erlaubt also das gleichzeitige Pruefen auf
-     mehrere IDs. Allerdings werden - im Gegensatz zu id() -
-     Adjektive und Ausdruecke der Art "<ID> <nummer>" nicht
-     beruecksichtigt.
-     Ebenso werden Spezialitaeten wie Unitobjekte und Objekte mit
-     ueberschriebenem id() nicht beruecksichtigt! Im Zweifelsfall ist daher
-     doch die Nutzung von id() zu empfehlen.
 
-RUeCKGABEWERT:
-     Anzahl der zutreffenden IDs.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Angenommen, ein Objekt habe folgende Bezeichner:
+   /std/thing/description.c
 
-     AddId( ({"murmel","kugel","glasmurmel","glaskugel"}) );
-     AddAdjective( "rund" );
 
-     Dann liefern die angegebenen match_ids()-Aufrufe folgende Ergebnisse:
+ARGUMENTE
+=========
 
-     match_ids( ({"murmel","stein"}) );         => 1
-     match_ids( ({"murmel","kugel"}) );         => 2
-     match_ids( ({"runde murmel"}) );           => 0
-     match_ids( ({"murmel 2"}) );               => 0, auch wenn dies die 
-                                               zweite Murmel in der
-                                               gleichen Umgebung ist
+   *list      String-Array mit zu testenden IDs
 
-SIEHE AUCH:
-     AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
-     id(), /std/thing/description.c, /std/unit.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Die Liste der uebergebenen IDs wird mit den IDs des Objektes
+   UND-Verknuepft. Die Groesse des resultierenden Arrays wird
+   zurueckgegeben.
+   Diese Funktion erlaubt also das gleichzeitige Pruefen auf
+   mehrere IDs. Allerdings werden - im Gegensatz zu id() -
+   Adjektive und Ausdruecke der Art "<ID> <nummer>" nicht
+   beruecksichtigt.
+   Ebenso werden Spezialitaeten wie Unitobjekte und Objekte mit
+   ueberschriebenem id() nicht beruecksichtigt! Im Zweifelsfall ist daher
+   doch die Nutzung von id() zu empfehlen.
+
+
+RUeCKGABEWERT
+=============
+
+   Anzahl der zutreffenden IDs.
+
+
+BEISPIELE
+=========
+
+   Angenommen, ein Objekt habe folgende Bezeichner:
+
+   AddId( ({"murmel","kugel","glasmurmel","glaskugel"}) );
+   AddAdjective( "rund" );
+
+   Dann liefern die angegebenen match_ids()-Aufrufe folgende Ergebnisse:
+
+   match_ids( ({"murmel","stein"}) );         => 1
+   match_ids( ({"murmel","kugel"}) );         => 2
+   match_ids( ({"runde murmel"}) );           => 0
+   match_ids( ({"murmel 2"}) );               => 0, auch wenn dies die
+                                             zweite Murmel in der
+                                             gleichen Umgebung ist
+
+
+SIEHE AUCH
+==========
+
+   AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
+   id(), /std/thing/description.c, /std/unit.c
+
 Last modified: Sat Mar 15 21:40:00 2000 by Paracelsus
diff --git a/doc/lfun/move b/doc/lfun/move
index b323c34..bd9d924 100644
--- a/doc/lfun/move
+++ b/doc/lfun/move
@@ -1,212 +1,242 @@
+
+move()
+******
+
 move()
 
-FUNKTION: 
-     Fuer unbelebte Gegenstaende (/std/thing):
-       varargs int move(object|string dest, int method);
+FUNKTION:
+   Fuer unbelebte Gegenstaende (/std/thing):
+      varargs int move(object|string dest, int method);
 
-     Fuer Lebewesen (/std/living, /std/npc, usw.):
-       varargs int move(object|string dest, int method, string dir, 
-                        string textout, string textin);
+   Fuer Lebewesen (/std/living, /std/npc, usw.):
+      varargs int move(object|string dest, int method, string dir,
+         string textout, string textin);
 
-DEFINIERT IN:
-     /std/thing/moving.c
-     /std/living/moving.c
 
-ARGUMENTE:
-     dest
-          Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
+DEFINIERT IN
+============
 
-     method
-          Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
-          koennen auch mehrere zusammenge-ODER-t werden).
+   /std/thing/moving.c
+   /std/living/moving.c
 
-     dir
-          Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
-          eingeschlagene Laufrichtung (zB. "nach Norden").
 
-     textout
-          Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
-          Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
-          noch an textout angehaengt. Der Name des Lebewesens wird der
-          Meldung in jedem Fall vorangestellt.
+ARGUMENTE
+=========
 
-     textin
-          Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
-          betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
-          wird noch der Name des Spielers vorangestellt.
+   dest
+        Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
 
-BESCHREIBUNG:
-     Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
-     Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
-     Bewegungsmethode method zu waehlen.
+   method
+        Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
+        koennen auch mehrere zusammenge-ODER-t werden).
 
-     In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
-     definiert:
-     M_NOCHECK
-          Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
-          in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
-          Fall sein koennte).
+   dir
+        Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
+        eingeschlagene Laufrichtung (zB. "nach Norden").
 
-     M_GO
-          Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
-          Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
-          benutzen, wenn man Spieler ueber einen SpecialExit in einen
-          benachbarten Raum bewegt.
+   textout
+        Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
+        Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
+        noch an textout angehaengt. Der Name des Lebewesens wird der
+        Meldung in jedem Fall vorangestellt.
 
-     M_TPORT
-          Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
-          Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
-          mittels M_TPORT verlaesst oder betritt.
+   textin
+        Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
+        betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
+        wird noch der Name des Spielers vorangestellt.
 
-     M_NO_SHOW
-          Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
-          Zielraumes nicht ausgegeben.
 
-     M_NO_ATTACK
-          Beim Bewegen von Lebewesen bekommen diese keinen
-          Begruessungsschlag, wenn ein Feind im Zielraum steht.
+BESCHREIBUNG
+============
 
-     M_SILENT
-          Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
-          Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
+   Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
+   Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
+   Bewegungsmethode method zu waehlen.
 
-     M_GET
-          Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
-          Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
-          bewegt.
+   In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
+   definiert:
+   M_NOCHECK
+        Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
+        in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
+        Fall sein koennte).
 
-     M_PUT
-          Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
-          bewegt.
+   M_GO
+        Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
+        Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
+        benutzen, wenn man Spieler ueber einen SpecialExit in einen
+        benachbarten Raum bewegt.
 
-     M_GIVE
-          Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
-          weitergereicht.
+   M_TPORT
+        Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
+        Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
+        mittels M_TPORT verlaesst oder betritt.
 
-     M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
-          Es wird die gesamte Menge bewegt, nicht nur ein Teil.
+   M_NO_SHOW
+        Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
+        Zielraumes nicht ausgegeben.
 
-     Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
-     reicht es, als method M_NOCHECK zu uebergeben.
+   M_NO_ATTACK
+        Beim Bewegen von Lebewesen bekommen diese keinen
+        Begruessungsschlag, wenn ein Feind im Zielraum steht.
 
-     Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
-     beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
-     M_SILENT enthalten, so geschieht dies ohne Meldungen.
+   M_SILENT
+        Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
+        Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
 
-     Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
-     Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
-     laesst sich nur bei Lebewesen anwenden.
+   M_GET
+        Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
+        Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
+        bewegt.
 
-ANMERKUNG:
-     Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
-     greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
-     aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
-     anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
-     ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
-     genau macht. ;-)
-     
-     Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
-     von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
-     landet.
+   M_PUT
+        Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
+        bewegt.
 
-     Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
-     auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
-     innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
-     allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
+   M_GIVE
+        Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
+        weitergereicht.
 
-     Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
-     oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
-     erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
+   M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
+        Es wird die gesamte Menge bewegt, nicht nur ein Teil.
 
-RUeCKGABEWERT:
-     Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
-     definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
-     Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
-     Zukunft wird == MOVE_OK empfohlen.)
-     
-     MOVE_OK
-          Die Bewegung wurde erfolgreich abgeschlossen.
+   Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
+   reicht es, als method M_NOCHECK zu uebergeben.
 
-     ME_PLAYER
-          Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
-          mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
-          angegeben werden.
+   Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
+   beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
+   M_SILENT enthalten, so geschieht dies ohne Meldungen.
 
-     ME_TOO_HEAVY
-          Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
-          aufnehmen.
+   Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
+   Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
+   laesst sich nur bei Lebewesen anwenden.
 
-     ME_CANT_TPORT_IN
-          Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
-          M_TPORT ohne M_NOCHECK).
 
-     ME_CANT_TPORT_OUT
-          Der Raum, in dem sich das Lebewesen befindet, verbietet das
-          Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
+ANMERKUNG
+=========
 
-     ME_CANT_BE_DROPPED
-          Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
-          gesetzt ist).
+   Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
+   greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
+   aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
+   anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
+   ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
+   genau macht. ;-)
 
-     ME_CANT_BE_TAKEN
-          Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
-          ist).
 
-     ME_CANT_BE_INSERTED
-          Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
 
-     ME_CANT_LEAVE_ENV
-          Der Container verhindert ein verlassen des Objektes
+   Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
+   von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
+   landet.
 
-     ME_TOO_HEAVY_FOR_ENV
-          Ein Objekt kann einen Behaelter nicht verlassen, da es dem 
-          Lebewesen sonst zu schwer wuerde.
+   Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
+   auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
+   innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
+   allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
 
-     TOO_MANY_OBJECTS
-          Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
+   Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
+   oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
+   erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
 
-     ME_NOT_ALLOWED
-          Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
-          Testspielern und Magiern betreten werden. Bei Spielern oder
-          Gildentesties gibt es diese Fehlermeldung.
-     ME_WAS_DESTRUCTED
-          Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
-          zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
-          beendet werden konnte. (Bsp: sensitive Objekte)
 
-     ME_DONT_WANT_TO_BE_MOVED
-          Das Objekt moechte nicht bewegt werden.
+RUeCKGABEWERT
+=============
 
-BEISPIELE:
-        o Ein Objekt "gibt sich" dem Spieler:
+   Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
+   definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
+   Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
+   Zukunft wird == MOVE_OK empfohlen.)
 
-          move(this_player(), M_GET);
 
-        o Ein Lebewesen wird in die Abenteurergilde teleportiert:
 
-          lv->move("/gilden/abenteurer", M_TPORT);
+   MOVE_OK
+        Die Bewegung wurde erfolgreich abgeschlossen.
 
-        o Ein Spieler "wird in die Gilde gegangen":
+   ME_PLAYER
+        Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
+        mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
+        angegeben werden.
 
-          this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
+   ME_TOO_HEAVY
+        Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
+        aufnehmen.
 
-          Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
-          Meldung:
-          "<name> geht in die Gilde."
+   ME_CANT_TPORT_IN
+        Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
+        M_TPORT ohne M_NOCHECK).
 
-        o Ein Spieler schwimmt durchs Meer:
+   ME_CANT_TPORT_OUT
+        Der Raum, in dem sich das Lebewesen befindet, verbietet das
+        Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
 
-          this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
-                              "schwimmt herein");
+   ME_CANT_BE_DROPPED
+        Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
+        gesetzt ist).
 
-          Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
-          Spieler in seinem Zielraum sehen "<name> schwimmt herein."
+   ME_CANT_BE_TAKEN
+        Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
+        ist).
 
-SIEHE AUCH:
-     move_object(), remove(), setmin, setmmin, setmout, setmmout, review,
-     PreventInsert(), PreventLeave(), PreventInsertLiving(),
-     PreventLeaveLiving(), PreventMove(), NotifyInsert(), NotifyLeave(),
-     NotifyMove(), NotifyRemove(), init(), exit(),
-     P_NO_PLAYERS, P_PARA, /std/thing/moving.c, /std/living/moving.c
-     -----------------------------------------------------------------------
+   ME_CANT_BE_INSERTED
+        Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
+
+   ME_CANT_LEAVE_ENV
+        Der Container verhindert ein verlassen des Objektes
+
+   ME_TOO_HEAVY_FOR_ENV
+        Ein Objekt kann einen Behaelter nicht verlassen, da es dem
+        Lebewesen sonst zu schwer wuerde.
+
+   TOO_MANY_OBJECTS
+        Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
+
+   ME_NOT_ALLOWED
+        Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
+        Testspielern und Magiern betreten werden. Bei Spielern oder
+        Gildentesties gibt es diese Fehlermeldung.
+   ME_WAS_DESTRUCTED
+        Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
+        zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
+        beendet werden konnte. (Bsp: sensitive Objekte)
+
+   ME_DONT_WANT_TO_BE_MOVED
+        Das Objekt moechte nicht bewegt werden.
+
+
+BEISPIELE
+=========
+
+   o Ein Objekt "gibt sich" dem Spieler:
+
+     move(this_player(), M_GET);
+
+   o Ein Lebewesen wird in die Abenteurergilde teleportiert:
+
+     lv->move("/gilden/abenteurer", M_TPORT);
+
+   o Ein Spieler "wird in die Gilde gegangen":
+
+     this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
+
+     Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
+     Meldung:
+     "<name> geht in die Gilde."
+
+   o Ein Spieler schwimmt durchs Meer:
+
+     this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
+                         "schwimmt herein");
+
+     Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
+     Spieler in seinem Zielraum sehen "<name> schwimmt herein."
+
+
+SIEHE AUCH
+==========
+
+   move_object(), remove(), setmin, setmmin, setmout, setmmout, review,
+   PreventInsert(), PreventLeave(), PreventInsertLiving(),
+   PreventLeaveLiving(), PreventMove(), NotifyInsert(), NotifyLeave(),
+   NotifyMove(), NotifyRemove(), init(), exit(),
+   P_NO_PLAYERS, P_PARA, /std/thing/moving.c, /std/living/moving.c
+   -----------------------------------------------------------------------
+
 2015-Jan-19, Arathorn
diff --git a/doc/lfun/moved_objects b/doc/lfun/moved_objects
index edcbd6e..8a5b536 100644
--- a/doc/lfun/moved_objects
+++ b/doc/lfun/moved_objects
@@ -1,30 +1,52 @@
+
 moved_objects()
+***************
 
-FUNKTION:
-    public object *moved_objects(void);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   public object *moved_objects(void);
 
-BESCHREIBUNG:
-    Mit dieser Funktion lassen sich die Objekte ermitteln, die das Lebewesen
-    beim letzten Aufruf von drop_objects(L) oder einer aehnlichen Funktion
-    bewegt hat.
 
-RUECKGABEWERT:
-    Array mit den zuletzt bewegten Objekten, oder ein leeres Array, falls
-    keine Objekte auf die Beschreibung des letzten drop_objects() / 
-    pick_objects() / put_objects() / give_objects() passten.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    siehe drop_objects() und give_objects()
+   /std/living/put_and_get.c
 
-SIEHE AUCH:
-    drop_objects(L), give_objects(L), pick_objects(L), put_objects(L),
-    show_objects(L), NotifyMove(L)
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion lassen sich die Objekte ermitteln, die das Lebewesen
+   beim letzten Aufruf von drop_objects(L) oder einer aehnlichen Funktion
+   bewegt hat.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den zuletzt bewegten Objekten, oder ein leeres Array, falls
+   keine Objekte auf die Beschreibung des letzten drop_objects() /
+   pick_objects() / put_objects() / give_objects() passten.
+
+
+BEISPIELE
+=========
+
+   siehe drop_objects() und give_objects()
+
+
+SIEHE AUCH
+==========
+
+   drop_objects(L), give_objects(L), pick_objects(L), put_objects(L),
+   show_objects(L), NotifyMove(L)
+
 Last modified: Thu Aug 28 22:19:26 2008 by Amynthor
diff --git a/doc/lfun/moved_where b/doc/lfun/moved_where
index 8bb7e9c..640acae 100644
--- a/doc/lfun/moved_where
+++ b/doc/lfun/moved_where
@@ -1,28 +1,50 @@
+
 moved_where()
+*************
 
-FUNKTION:
-    public object moved_where(void);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   public object moved_where(void);
 
-BESCHREIBUNG:
-    Mit dieser Funktion laesst sich ermitteln, wohin das Lebewesen zuletzt
-    mittels put_objects(L) oder give_objects(L) etwas bewegt oder wem es mit
-    show_objects(L) etwas gezeigt hat.
 
-RUECKGABEWERT:
-    Der Container oder das Lebewesen, wohin die Gegenstaende bewegt wurden.
+DEFINIERT IN
+============
 
-BEISPIEL:
-    siehe give_objects()
+   /std/living/put_and_get.c
 
-SIEHE AUCH:
-    put_objects(L), give_objects(L), show_objects(L), NotifyInsert(L),
-    P_LAST_CONTENT_CHANGE
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion laesst sich ermitteln, wohin das Lebewesen zuletzt
+   mittels put_objects(L) oder give_objects(L) etwas bewegt oder wem es mit
+   show_objects(L) etwas gezeigt hat.
+
+
+RUECKGABEWERT
+=============
+
+   Der Container oder das Lebewesen, wohin die Gegenstaende bewegt wurden.
+
+
+BEISPIEL
+========
+
+   siehe give_objects()
+
+
+SIEHE AUCH
+==========
+
+   put_objects(L), give_objects(L), show_objects(L), NotifyInsert(L),
+   P_LAST_CONTENT_CHANGE
+
 Last modified: Thu Aug 28 22:16:15 2008 by Amynthor
diff --git a/doc/lfun/muster b/doc/lfun/muster
index d519f69..aa7279c 100644
--- a/doc/lfun/muster
+++ b/doc/lfun/muster
@@ -1,16 +1,33 @@
+
 muster()
+********
 
-FUNKTION:
-	type muster(...)
-	
-ARGUMENTE:
-	
-BESCHREIBUNG:
 
-RUECKGABEWERT:
-	
-BEMERKUNG:
-	
-BEISPIEL:
+FUNKTION
+========
 
-SIEHE AUCH:
+   type muster(...)
+
+
+ARGUMENTE
+=========
+
+
+BESCHREIBUNG
+============
+
+
+RUECKGABEWERT
+=============
+
+
+BEMERKUNG
+=========
+
+
+BEISPIEL
+========
+
+
+SIEHE AUCH
+==========
diff --git a/doc/lfun/name b/doc/lfun/name
index 74eac45..3509366 100644
--- a/doc/lfun/name
+++ b/doc/lfun/name
@@ -1,54 +1,81 @@
+
+name()
+******
+
 name()|Name()
 
-FUNKTION:
-     varargs string name(int casus, int demon);
-     varargs string Name(int casus, int demon);
 
-DEFINIERT IN:
-     /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-     casus
-          Der Fall, in dem der Name dekliniert werden soll.
-     demon
-          Gibt an, ob der Name mit bestimmtem oder unbestimmtem Artikel
-          versehen werden soll:
-             + demon = 0: Unbestimmter Artikel.
-             + demon = 1: Bestimmter Artikel.
-             + demon = 2: Finde selbst heraus, ob ein bestimmter oder ein
-               unbestimmter Artikel verwendet werden soll.
+   varargs string name(int casus, int demon);
+   varargs string Name(int casus, int demon);
 
-BESCHREIBUNG:
-     Diese Funktion ermittelt den Namen des Objektes im gewuenschten Fall
-     und mit dem angegebenen Artikel. Moegliche Werte fuer casus sind in
-     <thing/language.h> definiert. Weiterhin werden auch (falls angegeben)
-     die Namensadjektive dekliniert und in den Namen eingebaut.
 
-     Name() ist ein Alias fuer capitalize(name()), der Artikel wird also
-     gross geschrieben.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     String mit dem Namen des Objektes.
+   /std/thing/description.c
 
-BEMERKUNGEN:
-     Falls P_ARTICLE gesetzt ist, werden weder Artikel noch Namensadjektive
-     in den Namen eingebaut.
 
-     Wenn man als casus RAW angibt, wird der Name im Nominativ ohne Artikel
-     und Namensadjektive zurueckgegeben.
+ARGUMENTE
+=========
 
-BEISPIELE:
-     Wenn das Objekt ein Ball mit P_NAME="Ball" und P_NAME_ADJ="klein" ist,
-     so liefern die folgenden Aufrufe die angegebenen Ergebnisse:
+   casus
+        Der Fall, in dem der Name dekliniert werden soll.
+   demon
+        Gibt an, ob der Name mit bestimmtem oder unbestimmtem Artikel
+        versehen werden soll:
+           + demon = 0: Unbestimmter Artikel.
+           + demon = 1: Bestimmter Artikel.
+           + demon = 2: Finde selbst heraus, ob ein bestimmter oder ein
+             unbestimmter Artikel verwendet werden soll.
 
-     name(WER,0);    => "ein kleiner Ball"
-     name(WESSEN,1); => "des kleinen Balls"
-     name(RAW);      => "Ball"
-     name(WEM,2);    => "einem kleinen Ball" oder "dem kleinen Ball",
-                        abhaengig davon, wieviele Baelle gerade da sind.
 
-SIEHE AUCH:
-     /std/thing/description.c, Name()
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Diese Funktion ermittelt den Namen des Objektes im gewuenschten Fall
+   und mit dem angegebenen Artikel. Moegliche Werte fuer casus sind in
+   <thing/language.h> definiert. Weiterhin werden auch (falls angegeben)
+   die Namensadjektive dekliniert und in den Namen eingebaut.
+
+   Name() ist ein Alias fuer capitalize(name()), der Artikel wird also
+   gross geschrieben.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit dem Namen des Objektes.
+
+
+BEMERKUNGEN
+===========
+
+   Falls P_ARTICLE gesetzt ist, werden weder Artikel noch Namensadjektive
+   in den Namen eingebaut.
+
+   Wenn man als casus RAW angibt, wird der Name im Nominativ ohne Artikel
+   und Namensadjektive zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   Wenn das Objekt ein Ball mit P_NAME="Ball" und P_NAME_ADJ="klein" ist,
+   so liefern die folgenden Aufrufe die angegebenen Ergebnisse:
+
+   name(WER,0);    => "ein kleiner Ball"
+   name(WESSEN,1); => "des kleinen Balls"
+   name(RAW);      => "Ball"
+   name(WEM,2);    => "einem kleinen Ball" oder "dem kleinen Ball",
+                      abhaengig davon, wieviele Baelle gerade da sind.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, Name()
+
 Letzte Aenderung: 29.07.2016, Bugfix
diff --git a/doc/lfun/notify_player_change b/doc/lfun/notify_player_change
index 1765af6..34c4024 100644
--- a/doc/lfun/notify_player_change
+++ b/doc/lfun/notify_player_change
@@ -1,56 +1,82 @@
+
+notify_player_change()
+**********************
+
 void notify_player_change(string/object who, int rein [, int invis])
 
-FUNKTION:
-    void /notify_player_change(object who, int rein)
-    void /std/player/base::notify_player_change(string who, int rein,
-                                                int invis)
-  
-GERUFEN VON:
-    /std/player/base.c (d.h. alle Spielershells/-Objekte)
 
-ARGUMENTE:
-    string who
-      getuid() eines Spielers
-    object who
-      Spieler-Objekt
-    int rein
-      0 fuer das MUD verlassende, 1 fuer hereinkommende Spieler
-    int invis
-      1 fuer unsichtbare Spieler (Magier)
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion wird von Lebewesen fuer hereinkommende und das Spiel
-    verlassende Spieler an verschiedenen Stellen aufgerufen:
-    
-    * in anderen Spielern mit notify_player_change() mit drei Parametern
-      - dies dient fuer die "erwarte"-Funktionalitaet
-    * in der Gilde des Spielern mit zwei Parameter
-      - damit koennen Gilden notwendige Anpassungen vornehmen
+   void /notify_player_change(object who, int rein)
+   void /std/player/base::notify_player_change(string who, int rein,
+                                               int invis)
 
-    Diese Funktionen werden auch gerufen, wenn Magier "invis -e" bzw.
-    "vis e" benutzen.
 
-BEISPIELE:
-    // in einer Gilde:
-    void notify_player_change(object pl, int rein) {
-      if (rein && objectp(pl)) {
-        // Checks, ob Spielerskills in Ordnung sind
-        mapping bete = pl->QuerySkill("bete");
-        
-        if (!mappingp(bete)) {
-          if (IS_LEARNER(pl) || pl->QueryProp(P_TESTPLAYER)) {
-            tell_object(pl, break_string(
-              "Du bist ein kaputter Test-Kleriker ...", 78,
-              "Arkshat teilt dir mit: "));
-            // notduerftige Reparaturen
-          } else
-            raise_error("Klerus: Kaputter oder gesetzer Kleriker!\n");
-        }
-      }
-    }
+GERUFEN VON
+===========
 
-SIEHE AUCH:
-    RegisterEvent mit (EVT_LIB_LOGIN, EVT_LIB_LOGOUT)
-    erwarte
+   /std/player/base.c (d.h. alle Spielershells/-Objekte)
+
+
+ARGUMENTE
+=========
+
+   string who
+     getuid() eines Spielers
+   object who
+     Spieler-Objekt
+   int rein
+     0 fuer das MUD verlassende, 1 fuer hereinkommende Spieler
+   int invis
+     1 fuer unsichtbare Spieler (Magier)
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von Lebewesen fuer hereinkommende und das Spiel
+   verlassende Spieler an verschiedenen Stellen aufgerufen:
+
+
+
+   * in anderen Spielern mit notify_player_change() mit drei Parametern
+     - dies dient fuer die "erwarte"-Funktionalitaet
+   * in der Gilde des Spielern mit zwei Parameter
+     - damit koennen Gilden notwendige Anpassungen vornehmen
+
+   Diese Funktionen werden auch gerufen, wenn Magier "invis -e" bzw.
+   "vis e" benutzen.
+
+
+BEISPIELE
+=========
+
+   // in einer Gilde:
+   void notify_player_change(object pl, int rein) {
+     if (rein && objectp(pl)) {
+       // Checks, ob Spielerskills in Ordnung sind
+       mapping bete = pl->QuerySkill("bete");
+
+
+
+       if (!mappingp(bete)) {
+         if (IS_LEARNER(pl) || pl->QueryProp(P_TESTPLAYER)) {
+           tell_object(pl, break_string(
+             "Du bist ein kaputter Test-Kleriker ...", 78,
+             "Arkshat teilt dir mit: "));
+           // notduerftige Reparaturen
+         } else
+           raise_error("Klerus: Kaputter oder gesetzer Kleriker!\n");
+       }
+     }
+   }
+
+
+SIEHE AUCH
+==========
+
+   RegisterEvent mit (EVT_LIB_LOGIN, EVT_LIB_LOGOUT)
+   erwarte
 
 1. Sep 2011 Gloinson
diff --git a/doc/lfun/obsolete/AddHpHook b/doc/lfun/obsolete/AddHpHook
index e227951..5a2adce 100644
--- a/doc/lfun/obsolete/AddHpHook
+++ b/doc/lfun/obsolete/AddHpHook
@@ -1,29 +1,52 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 AddHpHook()
-FUNKTION:
-     int AddHpHook(object ob)
+***********
 
-DEFINIERT IN:
-     /std/player/life.c
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** AddHpHook()
 
-ARGUMENTE:
-     ob - das Objekt, das sich eintragen moechte.
 
-BESCHREIBUNG:
-     Traegt ein Objekt in P_HP_HOOKS ein, wenn es nicht schon darin steht.
+FUNKTION
+========
 
-     Aendern sich beim Spieler dann HP oder KP (nicht durch Set()), wird
-     an allen eingetragenen Objekten NotifyHpChange() gerufen.
+   int AddHpHook(object ob)
 
-RUECKGABEWERT:
-     1, wenn Erfolg, 0 sonst
 
-SIEHE AUCH:
-     Gegenpart:	RemoveHpHook()
-     Props:	P_HP_HOOKS, P_HP
-     Verwandt:	reduce_hit_points(), do_damage(), buffer_hp()
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, das sich eintragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Traegt ein Objekt in P_HP_HOOKS ein, wenn es nicht schon darin steht.
+
+   Aendern sich beim Spieler dann HP oder KP (nicht durch Set()), wird
+   an allen eingetragenen Objekten NotifyHpChange() gerufen.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn Erfolg, 0 sonst
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart: RemoveHpHook()
+   Props:     P_HP_HOOKS, P_HP
+   Verwandt:  reduce_hit_points(), do_damage(), buffer_hp()
 
 23.Feb.2004 Gloinson
diff --git a/doc/lfun/obsolete/AddInsertHook b/doc/lfun/obsolete/AddInsertHook
index 5e80272..9a372ba 100644
--- a/doc/lfun/obsolete/AddInsertHook
+++ b/doc/lfun/obsolete/AddInsertHook
@@ -1,59 +1,85 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 AddInsertHook()
+***************
 
-FUNKTION:
-     void AddInsertHook(object ob);
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** AddInsertHook()
 
-DEFINIERT IN:
-     /std/player/restrictions.c
 
-ARGUMENTE:
-     ob - Das Objekt, das informiert werden soll, wenn ein Objekt dem
-          Spielerinventar hinzugefuegt wurde.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-      H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-      vorhanden.)
+   void AddInsertHook(object ob);
 
-     Diese Funktion wird im Spielerobjekt aufgerufen, um das Objekt ob als
-     Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
-     werden informiert, wenn ein Objekt ins Spielerinventar bewegt wurde.
-     Technisch wird die Bewegung ueber NotifyInsert() im Spielerobjekt
-     detektiert, und im Listener-Objekt wird die Funktion InsertNotify()
-     gerufen, die als Parameter das neu ins Spielerinventar bewegte Objekt
-     uebergeben bekommt.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Das Listener-Objekt muss sich ebenfalls im Spielerinventar befinden,
-     ansonsten wird der eingetragene Hook wieder geloescht.
+   /std/player/restrictions.c
 
-BEISPIEL:
-     
-     a) Objekt "ob" wird im Spieler als Listener angemeldet:
-        this_player()->AddInsertHook(ob);
 
-     b) Objekt "new" wird ins Spielerinventar bewegt, das Spielerobjekt
-        informiert "ob" darueber:
-        ob->InsertNotify(new);
+ARGUMENTE
+=========
 
-     c) Das Listener-Objekt "ob" reagiert darauf, z.B. indem es die Fackel
-        loescht, sofern sie vorher brannte:
-        void InsertNotify(object new) {
-          if ( objectp(new) && new->id("\nfackel") && 
-               new->QueryProp(P_LIGHTED) )
-            new->unlight();
-          return;
-        }
+   ob - Das Objekt, das informiert werden soll, wenn ein Objekt dem
+        Spielerinventar hinzugefuegt wurde.
 
-SIEHE AUCH:
-    NotifyInsert(), RemoveInsertHook(), QueryInsertHooks()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion wird im Spielerobjekt aufgerufen, um das Objekt ob als
+   Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
+   werden informiert, wenn ein Objekt ins Spielerinventar bewegt wurde.
+   Technisch wird die Bewegung ueber NotifyInsert() im Spielerobjekt
+   detektiert, und im Listener-Objekt wird die Funktion InsertNotify()
+   gerufen, die als Parameter das neu ins Spielerinventar bewegte Objekt
+   uebergeben bekommt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Das Listener-Objekt muss sich ebenfalls im Spielerinventar befinden,
+   ansonsten wird der eingetragene Hook wieder geloescht.
+
+
+BEISPIEL
+========
+
+   a) Objekt "ob" wird im Spieler als Listener angemeldet:
+      this_player()->AddInsertHook(ob);
+
+   b) Objekt "new" wird ins Spielerinventar bewegt, das Spielerobjekt
+      informiert "ob" darueber:
+      ob->InsertNotify(new);
+
+   c) Das Listener-Objekt "ob" reagiert darauf, z.B. indem es die Fackel
+      loescht, sofern sie vorher brannte:
+      void InsertNotify(object new) {
+        if ( objectp(new) && new->id("\nfackel") &&
+             new->QueryProp(P_LIGHTED) )
+          new->unlight();
+        return;
+      }
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), RemoveInsertHook(), QueryInsertHooks()
+
 Last modified: 14.04.2010, Arathorn
diff --git a/doc/lfun/obsolete/ModifySkillAttributeOld b/doc/lfun/obsolete/ModifySkillAttributeOld
index 65d9afc..b0b81ab 100644
--- a/doc/lfun/obsolete/ModifySkillAttributeOld
+++ b/doc/lfun/obsolete/ModifySkillAttributeOld
@@ -1,90 +1,118 @@
+
 ModifySkillAttributeOld()
+*************************
 
-FUNKTION:
-    varargs int ModifySkillAttributeOld(object caster, string atrname, 
-                                        int value, int duration, mixed fun)
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
+FUNKTION
+========
 
-ARGUMENTE:
-    <caster>    IGNORIERT
-                frueher Objekt, das die Modifikation vornimmt, heute ist
-                dieses Argument ohne Bedeutung und wird ignoriert.
+   varargs int ModifySkillAttributeOld(object caster, string atrname,
+                                       int value, int duration, mixed fun)
 
-    <atrname>   STRING
-                Name des zu veraendernden Attributes
-                (Definiert in /sys/living/skill_attributes.h)
 
-    <value>     INT
-                Neuer Wert des Attributs (Standard: 100)
+DEFINIERT IN
+============
 
-    <duration>  INT
-                Dauer in Sekunden
+   /std/living/skill_attributes.c
 
-    <fun>       NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
 
-BESCHREIBUNG:
-    Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
-    Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
+ARGUMENTE
+=========
 
-    Aendert ein Skill-Attribut eines Living.
-    
-    Fuer <value> ist folgendes zu beachten:
-    Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
-    Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
-    additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
-    uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur 
-    ein Modifikator zur gleichen Zeit aktiv war.)
-    Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
-    tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
-    tragen, bei 50 einer von -50, welcher das Skillattribute folglich 
-    reduziert.
+   <caster>    IGNORIERT
+               frueher Objekt, das die Modifikation vornimmt, heute ist
+               dieses Argument ohne Bedeutung und wird ignoriert.
 
-    Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
-    zulaessig.
+   <atrname>   STRING
+               Name des zu veraendernden Attributes
+               (Definiert in /sys/living/skill_attributes.h)
 
-RUECKGABEWERT:
-     0  wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
-        werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
-    >0  wenn alles okay war
+   <value>     INT
+               Neuer Wert des Attributs (Standard: 100)
 
-BEMERKUNGEN:
-    Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
-    Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
-    ueberschreiben. Dies ist inzwischen ohne Bedeutung.
+   <duration>  INT
+               Dauer in Sekunden
 
-BEISPIELE:
-    Ein NPC:
+   <fun>       NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
 
-    void
-    create() {
-    .
-    .
-    .
-    AddSpell(1, 1,
-      "Der fuerchterliche NPC haut Dir auf den Kopf.\n",
-      "Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
-      DT_MAGIC, "schwaechen");
-    .
-    .
-    }
 
-    schwaechen(object enemy, int damage, mixed *dam_type) {
-      int ergebnis;
-      ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
-      if (ergebnis > 0)
-          tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
-    }
-    
-    Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
-    50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-    P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
-    ModifySkillAttribute, QuerySkillAttribute(),
-    RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
+   Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
+   Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
 
------------------------------------------------------------------------------
+   Aendert ein Skill-Attribut eines Living.
+
+
+
+   Fuer <value> ist folgendes zu beachten:
+   Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
+   Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
+   additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
+   uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur
+   ein Modifikator zur gleichen Zeit aktiv war.)
+   Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
+   tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
+   tragen, bei 50 einer von -50, welcher das Skillattribute folglich
+   reduziert.
+
+   Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
+   zulaessig.
+
+
+RUECKGABEWERT
+=============
+
+    0  wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
+       werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
+   >0  wenn alles okay war
+
+
+BEMERKUNGEN
+===========
+
+   Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
+   Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
+   ueberschreiben. Dies ist inzwischen ohne Bedeutung.
+
+
+BEISPIELE
+=========
+
+   Ein NPC:
+
+   void
+   create() {
+   .
+   .
+   .
+   AddSpell(1, 1,
+     "Der fuerchterliche NPC haut Dir auf den Kopf.\n",
+     "Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
+     DT_MAGIC, "schwaechen");
+   .
+   .
+   }
+
+   schwaechen(object enemy, int damage, mixed *dam_type) {
+     int ergebnis;
+     ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
+     if (ergebnis > 0)
+         tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
+   }
+
+
+
+   Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
+   50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
+
+
+SIEHE AUCH
+==========
+
+   P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
+   ModifySkillAttribute, QuerySkillAttribute(),
+   RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
+
 07.08.2008 Zesstra
-
diff --git a/doc/lfun/obsolete/NotifyGiveQuest b/doc/lfun/obsolete/NotifyGiveQuest
index 7e29798..220942b 100644
--- a/doc/lfun/obsolete/NotifyGiveQuest
+++ b/doc/lfun/obsolete/NotifyGiveQuest
@@ -1,37 +1,62 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Events (siehe "man events").                                        *
-***********************************************************************
+
+NotifyGiveQuest()
+*****************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Events (siehe "man
+events").                                        * ******************
+*****************************************************
 
 NotifyGiveQuest()
 
-FUNKTION:
-     void NotifyGiveQuest(object pl, string key);
-     
-DEFINIERT IN:
-     /std/gilden_ob.c
-     
-ARGUMENTE:
-     pl     Der Spieler, der eine Quest geloest hat.
-     key    Name der geloesten Quest.
-     
-BESCHREIBUNG:
-     Die Funktion wird in der Gilde des Spielers aufgerufen, wenn der 
-     Spieler eine gueltige Quest besteht - und zwar unabhaengig davon,
-     ob er sie bereits geloest hat, oder nicht.
-     
-RUECKGABEWERT:
-     keiner
-     
-BEMERKUNGEN:
-     Die Funktion ist dafuer gedacht, von Gildenprogrammierern ueberschrieben
-     zu werden, wenn beispielsweise bestimmte Quests als Aufstiegsbedingung
-     verlangt werden, diese aber in der entsprechenden Gilde geloest sein
-     muessen (z.B. Obergladiator als Level-5-Zauberer).
-     
-SIEHE AUCH:
-     /std/gilden_ob.c
-     /std/player/quests.c
 
-----------------------------------------------------------------------------
+FUNKTION
+========
+
+   void NotifyGiveQuest(object pl, string key);
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   pl     Der Spieler, der eine Quest geloest hat.
+   key    Name der geloesten Quest.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion wird in der Gilde des Spielers aufgerufen, wenn der
+   Spieler eine gueltige Quest besteht - und zwar unabhaengig davon,
+   ob er sie bereits geloest hat, oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion ist dafuer gedacht, von Gildenprogrammierern ueberschrieben
+   zu werden, wenn beispielsweise bestimmte Quests als Aufstiegsbedingung
+   verlangt werden, diese aber in der entsprechenden Gilde geloest sein
+   muessen (z.B. Obergladiator als Level-5-Zauberer).
+
+
+SIEHE AUCH
+==========
+
+   /std/gilden_ob.c
+   /std/player/quests.c
+
 Last modified: Fri Oct 4 10:17:00 1996 by Silvana
diff --git a/doc/lfun/obsolete/NotifyHpChange b/doc/lfun/obsolete/NotifyHpChange
index 6f82b03..3c96222 100644
--- a/doc/lfun/obsolete/NotifyHpChange
+++ b/doc/lfun/obsolete/NotifyHpChange
@@ -1,47 +1,71 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 NotifyHpChange()
+****************
 
-FUNKTION:
-	void NotifyHpChange();
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** NotifyHpChange()
 
-DEFINIERT IN:
-	/std/player/life.c
 
-ARGUMENTE:
-	keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Wenn sich die Lebenspunkte eines Spielers aendern, so werden davon
-	auch andere Objekte unterrichtet, sofern diese mittels der Funktion
-	AddHpHook() bei eben diesem Spieler angemeldet wurden.
-	Fortan wird dann die Funktion NotifyHpChange() in diesen
-	angemeldeten Objekten aufgerufen, wenn sich die Property P_HP des
-	Spielers aendert. Es werden hierbei keine Argumente an
-	NotifyHpChange() uebergeben, die aktuellen Lebenspunkte kann man ja
-	auch ohne weiteres ueber die Property P_HP in Erfahrung bringen und
-	aeltere Werte muss man sich gesondert merken. Zu beachten ist, dass
-	die Property P_HP bei Aufruf der Funktion NotifyHpChange() bereits
-	den neuen Wert enthaelt.
-	Bei dem Spieler angemeldete Objekte, die von Lebenspunkteaenderungen
-	informiert werden sollen, werden automatisch aus der Liste entfernt,
-	wenn sie zerstoert wurden. Diese Liste ist in der Property
-	P_HP_HOOKS zu finden. Per Hand kann man sie auch explizit mittels
-	der Funktion RemoveHpHook() entfernen.
-	Stirbt ein Spieler, so wird die Funktion NotifyPlayerDeath()
-	aufgerufen und nicht NotifyHpChange()!
+   void NotifyHpChange();
 
-RUeCKGABEWERT:
-	keiner
 
-BEISPIELE:
-	ist in Arbeit
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	P_HP, P_HP_HOOKS, AddHpHook(), RemoveHpHook(),
-	Defend(), do_damage(), NotifyPlayerDeath()
+   /std/player/life.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich die Lebenspunkte eines Spielers aendern, so werden davon
+   auch andere Objekte unterrichtet, sofern diese mittels der Funktion
+   AddHpHook() bei eben diesem Spieler angemeldet wurden.
+   Fortan wird dann die Funktion NotifyHpChange() in diesen
+   angemeldeten Objekten aufgerufen, wenn sich die Property P_HP des
+   Spielers aendert. Es werden hierbei keine Argumente an
+   NotifyHpChange() uebergeben, die aktuellen Lebenspunkte kann man ja
+   auch ohne weiteres ueber die Property P_HP in Erfahrung bringen und
+   aeltere Werte muss man sich gesondert merken. Zu beachten ist, dass
+   die Property P_HP bei Aufruf der Funktion NotifyHpChange() bereits
+   den neuen Wert enthaelt.
+   Bei dem Spieler angemeldete Objekte, die von Lebenspunkteaenderungen
+   informiert werden sollen, werden automatisch aus der Liste entfernt,
+   wenn sie zerstoert wurden. Diese Liste ist in der Property
+   P_HP_HOOKS zu finden. Per Hand kann man sie auch explizit mittels
+   der Funktion RemoveHpHook() entfernen.
+   Stirbt ein Spieler, so wird die Funktion NotifyPlayerDeath()
+   aufgerufen und nicht NotifyHpChange()!
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   ist in Arbeit
+
+
+SIEHE AUCH
+==========
+
+   P_HP, P_HP_HOOKS, AddHpHook(), RemoveHpHook(),
+   Defend(), do_damage(), NotifyPlayerDeath()
+
 Last modified: Thu Nov 19 13:54:33 1998 by Patryn
diff --git a/doc/lfun/obsolete/QueryEnemy b/doc/lfun/obsolete/QueryEnemy
index bf0b583..2613f53 100644
--- a/doc/lfun/obsolete/QueryEnemy
+++ b/doc/lfun/obsolete/QueryEnemy
@@ -1,24 +1,51 @@
-********************* OBSOLETE LFUN ***********************************
-FUNKTION:
-	object QueryEnemy();
 
-DEFINIERT IN:
-	/std/living/combat.c
+QueryEnemy()
+************
 
-ARGUMENTE:
-	keine
+********************* OBSOLETE LFUN
+***********************************
 
-RUeCKGABEWERT:
-	gefundener Gegner
 
-BESCHREIBUNG:
-	Diese Funktion liefert zufaellig einen der anwesenden Gegner
-	zurueck, sofern keine Gegner bevorzugt ausgewaehlt werden.
+FUNKTION
+========
 
-BEMERKUNGEN:
-  Diese Lfun existiert nicht mehr. Bitte SelectEnemy() benutzen.
+   object QueryEnemy();
 
-SIEHE AUCH:
-	SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   gefundener Gegner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert zufaellig einen der anwesenden Gegner
+   zurueck, sofern keine Gegner bevorzugt ausgewaehlt werden.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Lfun existiert nicht mehr. Bitte SelectEnemy() benutzen.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
+
 07.02.2009, Zesstra
diff --git a/doc/lfun/obsolete/QueryInsertHooks b/doc/lfun/obsolete/QueryInsertHooks
index c43d036..317104c 100644
--- a/doc/lfun/obsolete/QueryInsertHooks
+++ b/doc/lfun/obsolete/QueryInsertHooks
@@ -1,31 +1,52 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 QueryInsertHooks()
+******************
 
-FUNKTION:
-     object *QueryInsertHooks();
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** QueryInsertHooks()
 
-DEFINIERT IN:
-     /std/player/restrictions.c
 
-ARGUMENTE:
-     keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-     (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-      H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-      vorhanden.)
+   object *QueryInsertHooks();
 
-     Diese Funktion gibt die aktuell beim Spielerobjekt angemeldeten
-     Listener-Objekte zurueck.
 
-RUeCKGABEWERT:
-     Array aus Objektpointern oder leeres Array
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    NotifyInsert(), AddInsertHook(), RemoveInsertHook()
+   /std/player/restrictions.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion gibt die aktuell beim Spielerobjekt angemeldeten
+   Listener-Objekte zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Array aus Objektpointern oder leeres Array
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), AddInsertHook(), RemoveInsertHook()
+
 Last modified: 14.04.2010, Arathorn
diff --git a/doc/lfun/obsolete/QueryOptQP b/doc/lfun/obsolete/QueryOptQP
index f6f72c5..77404ad 100644
--- a/doc/lfun/obsolete/QueryOptQP
+++ b/doc/lfun/obsolete/QueryOptQP
@@ -1,25 +1,43 @@
+
 QueryOptQP()
+************
 
-FUNKTION:
-    int QueryOptQP()
 
-DEFINIERT IN:
-    /secure/questmaster.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   int QueryOptQP()
 
-RUECKGABEWERT:
-    Abenteuerpunkte der optionalen Quests
 
-BESCHREIBUNG:
-    Diese Funktion liefert die Abenteuerpunkte der optionalen
-    Abenteuer zurueck. 
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
-    QueryMaxQP, QueryTotalQP
+   /secure/questmaster.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte der optionalen Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der optionalen
+   Abenteuer zurueck.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryMaxQP, QueryTotalQP
+
 Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
-
diff --git a/doc/lfun/obsolete/RemoveHpHook b/doc/lfun/obsolete/RemoveHpHook
index d3177f1..54c93ec 100644
--- a/doc/lfun/obsolete/RemoveHpHook
+++ b/doc/lfun/obsolete/RemoveHpHook
@@ -1,25 +1,48 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 RemoveHpHook()
-FUNKTION:
-     int RemoveHpHook(object ob)
+**************
 
-DEFINIERT IN:
-     /std/player/life.c
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** RemoveHpHook()
 
-ARGUMENTE:
-     ob - das Objekt, das sich austragen moechte.
 
-BESCHREIBUNG:
-     Entfernt den Eintrag fuer dieses Objekt in P_HP_HOOKS.
+FUNKTION
+========
 
-RUECKGABEWERT:
-     1, wenn Erfolg, 0 sonst
+   int RemoveHpHook(object ob)
 
-SIEHE AUCH:
-     Gegenpart:	AddHpHook()
-     Props:	P_HP_HOOKS, P_HP
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, das sich austragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt den Eintrag fuer dieses Objekt in P_HP_HOOKS.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn Erfolg, 0 sonst
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart: AddHpHook()
+   Props:     P_HP_HOOKS, P_HP
 
 23.Feb.2004 Gloinson
diff --git a/doc/lfun/obsolete/RemoveInsertHook b/doc/lfun/obsolete/RemoveInsertHook
index f232eed..6c77edf 100644
--- a/doc/lfun/obsolete/RemoveInsertHook
+++ b/doc/lfun/obsolete/RemoveInsertHook
@@ -1,31 +1,52 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 RemoveInsertHook()
+******************
 
-FUNKTION:
-     void RemoveInsertHook(object ob);
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** RemoveInsertHook()
 
-DEFINIERT IN:
-     /std/player/restrictions.c
 
-ARGUMENTE:
-     ob - Das Objekt, das als Listener aus der Liste ausgetragen werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-     (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-      H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-      vorhanden.)
+   void RemoveInsertHook(object ob);
 
-     Diese Funktion wird im Spielerobjekt aufgerufen, um ein als Listener
-     eingetragenes Hook-Objekt ob wieder auszutragen.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    NotifyInsert(), AddInsertHook(), QueryInsertHooks()
+   /std/player/restrictions.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ob - Das Objekt, das als Listener aus der Liste ausgetragen werden soll
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion wird im Spielerobjekt aufgerufen, um ein als Listener
+   eingetragenes Hook-Objekt ob wieder auszutragen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), AddInsertHook(), QueryInsertHooks()
+
 Last modified: 14.04.2010, Arathorn
diff --git a/doc/lfun/obsolete/TestAttributeLock b/doc/lfun/obsolete/TestAttributeLock
index 126e931..3d5d54d 100644
--- a/doc/lfun/obsolete/TestAttributeLock
+++ b/doc/lfun/obsolete/TestAttributeLock
@@ -1,25 +1,47 @@
-********************* OBSOLETE LFUN ***********************************
+
 TestAttributeLock()
-FUNKTION:
-     string TestAttributeLock(mapping check)
+*******************
 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-PARAMETER:
-     check	- Mapping mit Attributen: ([<attr>:<wert>])
+********************* OBSOLETE LFUN
+*********************************** TestAttributeLock()
 
-BESCHREIBUNG:
-     Prueft, ob eines der im Mapping enthaltenen Attribute blockiert
-     ist (bereits durch einen anderen Modifier belegt wurde).
-     
-     Da Modifier nicht mehr direkt blockieren ist diese Funktion obsolet
-     und in Livings inzwischen nicht mehr existent.
 
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
-     P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+FUNKTION
+========
+
+   string TestAttributeLock(mapping check)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   check      - Mapping mit Attributen: ([<attr>:<wert>])
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob eines der im Mapping enthaltenen Attribute blockiert
+   ist (bereits durch einen anderen Modifier belegt wurde).
+
+
+
+   Da Modifier nicht mehr direkt blockieren ist diese Funktion obsolet
+   und in Livings inzwischen nicht mehr existent.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
 11.05.2007, Zesstra
diff --git a/doc/lfun/obsolete/extra_look b/doc/lfun/obsolete/extra_look
index 753a8ed..d8e9703 100644
--- a/doc/lfun/obsolete/extra_look
+++ b/doc/lfun/obsolete/extra_look
@@ -1,19 +1,32 @@
-********************* VERALTETE LFUN ******************************
-* Diese LFUN ist veraltet. Bitte benutzt sie NICHT mehr, sondern  *
-* stattdessden AddExtraLook().                                    *
+
+extra_look()
+************
+
+********************* VERALTETE LFUN ****************************** *
+Diese LFUN ist veraltet. Bitte benutzt sie NICHT mehr, sondern  * *
+stattdessden AddExtraLook().                                    *
 *******************************************************************
 
 extra_look()
 
-FUNKTION:
-    string extra_look();
 
-BESCHREIBUNG:
-    Kann in Objekt definiert sein. Wenn ein Living (std/living/description)
-    das Objekt enthaelt, wird zu dessen long() der zurueckgegebene String
-    hinzugefuegt.
+FUNKTION
+========
 
-SIEHE AUCH:
-    AddExtraLook()
+   string extra_look();
+
+
+BESCHREIBUNG
+============
+
+   Kann in Objekt definiert sein. Wenn ein Living (std/living/description)
+   das Objekt enthaelt, wird zu dessen long() der zurueckgegebene String
+   hinzugefuegt.
+
+
+SIEHE AUCH
+==========
+
+   AddExtraLook()
 
 25.Jan 2015 Gloinson
diff --git a/doc/lfun/obsolete/paramove b/doc/lfun/obsolete/paramove
index 96686a2..25ce252 100644
--- a/doc/lfun/obsolete/paramove
+++ b/doc/lfun/obsolete/paramove
@@ -1,45 +1,66 @@
-****************************************************************************
-************************* VERALTETE LFUN ***********************************
-************************* DO NOT USE!    ***********************************
-****************************************************************************
+
 paramove()
+**********
 
-FUNKTION:
-     int paramove();
 
-DEFINIERT IN:
-     /std/room/para.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int paramove();
 
-BESCHREIBUNG:
-     Bewegt den Spieler ggf. in eine Paralleldimension.
 
-RUeCKGABEWERT:
-     1, wenn der Spieler die Dimension gewechselt hat.
+DEFINIERT IN
+============
 
-BEISPIEL:
-     init(){
-       if(!paramove()) ::init();
-      }
+   /std/room/para.c
 
-BEMERKUNGEN:
-     DIESE FUNKTION NICHT MEHR BENUTZEN!
 
-     Diese Funktion sollte nur aus einem init() aufgerufen werden!
+ARGUMENTE
+=========
 
-     Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit 
-     von P_PARA landet, ist die Funktion move() zustaendig. Als Magier 
-     muss man sich darum nicht gesondert kuemmern. Das heisst aber auch, 
-     dass beim Anschluss eines Normalweltraumes automatisch alle in dem 
-     Verzeichnis mit gleichem Namen vorhandenen Parallelweltraeume mit 
-     angeschlossen werden.
+   keine
 
-     Deswegen ist paramove() veraltet und sollte nicht mehr genutzt werden.
 
-SIEHE AUCH:
-     /std/room/para.c, P_PARA, P_NO_PLAYERS, move
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Bewegt den Spieler ggf. in eine Paralleldimension.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn der Spieler die Dimension gewechselt hat.
+
+
+BEISPIEL
+========
+
+   init(){
+     if(!paramove()) ::init();
+    }
+
+
+BEMERKUNGEN
+===========
+
+   DIESE FUNKTION NICHT MEHR BENUTZEN!
+
+   Diese Funktion sollte nur aus einem init() aufgerufen werden!
+
+   Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit
+   von P_PARA landet, ist die Funktion move() zustaendig. Als Magier
+   muss man sich darum nicht gesondert kuemmern. Das heisst aber auch,
+   dass beim Anschluss eines Normalweltraumes automatisch alle in dem
+   Verzeichnis mit gleichem Namen vorhandenen Parallelweltraeume mit
+   angeschlossen werden.
+
+   Deswegen ist paramove() veraltet und sollte nicht mehr genutzt werden.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/para.c, P_PARA, P_NO_PLAYERS, move
+
 Last modified: 05.08.2007, Zesstra
diff --git a/doc/lfun/pick b/doc/lfun/pick
index 59bf51f..5063ee6 100644
--- a/doc/lfun/pick
+++ b/doc/lfun/pick
@@ -1,48 +1,73 @@
+
 pick()
+******
 
-FUNKTION:
-    public varargs int pick(object o, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object o
-        Das Objekt, das aufgehoben werden soll.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int pick(object o, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC nimmt das Objekt auf. Gibt o->move() keinen positiven
-    Wert zurueck, beispielsweise weil das Objekt zu schwer ist oder nicht
-    genommen werden darf, bekommt er eine entsprechende Fehlermeldung.
 
-RUECKGABEWERT:
-    Wenn das Aufnehmen geklappt hat, 1, ansonsten 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
-    aufnehmen lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
-    moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
-    manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+   /std/living/put_and_get.c
 
-    Die Funktion prueft nicht, ob sich das Objekt ueberhaupt in der Reichweite
-    des Spielers/NPC befindet, das muss man ggf. selbst ermitteln.
 
-BEISPIEL:
-    ob = clone_object(WEINGUMMI);
+ARGUMENTE
+=========
 
-    if (this_player()->pick(ob, ({ "Du nimmst @WENU2 aus dem Regal.",
-                                   "@WER1 nimmt @WENU2 aus dem Regal." })))
-        weingummi--;
-    else
-        ob->remove();
+   object o
+       Das Objekt, das aufgehoben werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
 
-SIEHE AUCH:
-    move(L), P_PICK_MSG, pick_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
-    P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC nimmt das Objekt auf. Gibt o->move() keinen positiven
+   Wert zurueck, beispielsweise weil das Objekt zu schwer ist oder nicht
+   genommen werden darf, bekommt er eine entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Aufnehmen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
+   aufnehmen lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob sich das Objekt ueberhaupt in der Reichweite
+   des Spielers/NPC befindet, das muss man ggf. selbst ermitteln.
+
+
+BEISPIEL
+========
+
+   ob = clone_object(WEINGUMMI);
+
+   if (this_player()->pick(ob, ({ "Du nimmst @WENU2 aus dem Regal.",
+                                  "@WER1 nimmt @WENU2 aus dem Regal." })))
+       weingummi--;
+   else
+       ob->remove();
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_PICK_MSG, pick_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET
+
 Last modified: Thu Aug 28 22:21:41 2008 by Amynthor
diff --git a/doc/lfun/pick_obj b/doc/lfun/pick_obj
index a4c7c17..6557cee 100644
--- a/doc/lfun/pick_obj
+++ b/doc/lfun/pick_obj
@@ -1,27 +1,43 @@
+
 pick_obj()
+**********
+
 
 FUNKTION
-    int pick_obj(object ob)
+========
 
-DEFINIERT IN:
+   int pick_obj(object ob)
 
-    /std/living/put_and_get.c
 
-ARGUMENTE:
+DEFINIERT IN
+============
 
-    ob      Das Objekt, das genommen werden soll.
+   /std/living/put_and_get.c
 
-BESCHREIBUNG:
 
-    Das Lebewesen, in dem diese Funktion aufgerufen werden soll, hebt
-    den angegebenen Gegenstand (ob) auf, falls es ihm moeglich ist.
+ARGUMENTE
+=========
 
-RUeCKGABEWERT:
-    1, wenn das Objekt genommen wurde oder dies nicht moeglich war. (in diesem
-    Fall wird auch direkt eine Textausgabe ausgegeben)
-    0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
-    plaziert
+   ob      Das Objekt, das genommen werden soll.
 
-SIEHE AUCH:
 
-    drop_obj(), find_obs(), give_obj(), put_obj(), /std/living/put_and_get.c
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, hebt
+   den angegebenen Gegenstand (ob) auf, falls es ihm moeglich ist.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt genommen wurde oder dies nicht moeglich war. (in diesem
+   Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
+   plaziert
+
+
+SIEHE AUCH
+==========
+
+   drop_obj(), find_obs(), give_obj(), put_obj(), /std/living/put_and_get.c
diff --git a/doc/lfun/pick_objects b/doc/lfun/pick_objects
index 92c083d..ac70415 100644
--- a/doc/lfun/pick_objects
+++ b/doc/lfun/pick_objects
@@ -1,39 +1,61 @@
+
 pick_objects()
+**************
 
-FUNKTION:
-    public varargs int pick_objects(string str, int flag, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    string str
-        Was aufgehoben werden soll.
-    int flag
-        Muss das Objekt irgendwo drinstecken (flag = 1), oder darf es einfach
-        so herumliegen (flag = 0)? Dieses Argument ist hauptsaechlich fuer das
-        Kommando "hole" gedacht, in der Regel braucht man es nicht anzugeben.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int pick_objects(string str, int flag, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC nimmt die in <str> benannten Sachen. Kann er ein
-    Objekt nicht nehmen, bekommt er eine entsprechende Fehlermeldung. Wenn
-    keine Objekte auf <str> passen, wird per _notify_fail() eine Meldung
-    gesetzt, aber noch nicht ausgegeben.
 
-RUECKGABEWERT:
-    Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
-    etwas genommen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
-    Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+   /std/living/put_and_get.c
 
-SIEHE AUCH:
-    move(L), pick(L), P_PICK_MSG, find_objects(L), moved_objects(L)
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   string str
+       Was aufgehoben werden soll.
+   int flag
+       Muss das Objekt irgendwo drinstecken (flag = 1), oder darf es einfach
+       so herumliegen (flag = 0)? Dieses Argument ist hauptsaechlich fuer das
+       Kommando "hole" gedacht, in der Regel braucht man es nicht anzugeben.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC nimmt die in <str> benannten Sachen. Kann er ein
+   Objekt nicht nehmen, bekommt er eine entsprechende Fehlermeldung. Wenn
+   keine Objekte auf <str> passen, wird per _notify_fail() eine Meldung
+   gesetzt, aber noch nicht ausgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
+   etwas genommen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
+   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+
+
+SIEHE AUCH
+==========
+
+   move(L), pick(L), P_PICK_MSG, find_objects(L), moved_objects(L)
+
 Last modified: Fri Jul 25 10:58:43 2008 by Amynthor
diff --git a/doc/lfun/present_objects b/doc/lfun/present_objects
index 15cf4be..77f31fa 100644
--- a/doc/lfun/present_objects
+++ b/doc/lfun/present_objects
@@ -1,32 +1,50 @@
+
 present_objects()
+*****************
 
-FUNKTION:
-     object *present_objects(string desc);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     desc
-          Umschreibung des gesuchten Objektes oder "alles" oder "alle".
+   object *present_objects(string desc);
 
-BESCHREIBUNG:
-     Diese Funktion gibt die Objekte im Inneren des Behaelters zurueck, die
-     sich mit desc ansprechen lassen. In dem Fall, dass "alle(s)"
-     angefordert wird, sind das alle sichtbaren Objekte, ansonsten das erste
-     Objekt, das sich mit desc ansprechen laesst.
-     Objekte, die P_INVIS gesetzt haben, zaehlen als nicht ansprechbar, im
-     Gegensatz zu solchen Objekten, die keine P_SHORT haben.
 
-RUeCKGABEWERT:
-     Ein Array von Objekten mit den geforderten Eigenschaften.
+DEFINIERT IN
+============
 
-     Befindet sich kein Objekt im Behaelter, das sich durch desc ansprechen
-     laesst, so wird ein leeres Array zurueckgegeben.
+   /std/container/restrictions.c
 
-SIEHE AUCH:
-     locate_objects(), /std/container/restrictions.c
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   desc
+        Umschreibung des gesuchten Objektes oder "alles" oder "alle".
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt die Objekte im Inneren des Behaelters zurueck, die
+   sich mit desc ansprechen lassen. In dem Fall, dass "alle(s)"
+   angefordert wird, sind das alle sichtbaren Objekte, ansonsten das erste
+   Objekt, das sich mit desc ansprechen laesst.
+   Objekte, die P_INVIS gesetzt haben, zaehlen als nicht ansprechbar, im
+   Gegensatz zu solchen Objekten, die keine P_SHORT haben.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von Objekten mit den geforderten Eigenschaften.
+
+   Befindet sich kein Objekt im Behaelter, das sich durch desc ansprechen
+   laesst, so wird ein leeres Array zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   locate_objects(), /std/container/restrictions.c
+
 03.03.2013, Zesstra
-
diff --git a/doc/lfun/put b/doc/lfun/put
index 33e7eaf..9b1d5eb 100644
--- a/doc/lfun/put
+++ b/doc/lfun/put
@@ -1,43 +1,65 @@
+
 put()
+*****
 
-FUNKTION:
-    public varargs int put(object o, object dest, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object o
-        Das Objekt, das irgendwo hingesteckt werden soll.
-    object dest
-        Der Behaelter, in den das Objekt gesteckt werden soll.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_PUT_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int put(object o, object dest, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC steckt das Objekt in einen Behaelter. Gibt o->move()
-    keinen positiven Wert zurueck, beispielsweise weil er das Objekt nicht
-    weggeben darf oder der Behaelter schon voll ist, bekommt er eine
-    entsprechende Fehlermeldung.
 
-RUECKGABEWERT:
-    Wenn das Bewegen geklappt hat, 1, ansonsten 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt irgendwo
-    hinstecken lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
-    moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
-    manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+   /std/living/put_and_get.c
 
-    Die Funktion prueft nicht, ob sich das Objekt und der Behaelter ueberhaupt
-    in der Reichweite des Spielers/NPC befinden, das muss man ggf. selbst
-    ermitteln.
 
-SIEHE AUCH:
-    move(L), P_PUT_MSG, put_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
-    P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET, P_NODROP
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   object o
+       Das Objekt, das irgendwo hingesteckt werden soll.
+   object dest
+       Der Behaelter, in den das Objekt gesteckt werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PUT_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC steckt das Objekt in einen Behaelter. Gibt o->move()
+   keinen positiven Wert zurueck, beispielsweise weil er das Objekt nicht
+   weggeben darf oder der Behaelter schon voll ist, bekommt er eine
+   entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Bewegen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt irgendwo
+   hinstecken lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob sich das Objekt und der Behaelter ueberhaupt
+   in der Reichweite des Spielers/NPC befinden, das muss man ggf. selbst
+   ermitteln.
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_PUT_MSG, put_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET, P_NODROP
+
 Last modified: Thu Aug 28 22:21:58 2008 by Amynthor
diff --git a/doc/lfun/put_obj b/doc/lfun/put_obj
index 1f1b299..ff4dd91 100644
--- a/doc/lfun/put_obj
+++ b/doc/lfun/put_obj
@@ -1,30 +1,46 @@
+
 put_obj()
+*********
+
 
 FUNKTION
-    int put_obj(object ob, object where)
+========
 
-DEFINIERT IN:
+   int put_obj(object ob, object where)
 
-    /std/living/put_and_get.c
 
-ARGUMENTE:
+DEFINIERT IN
+============
 
-    ob      Das Objekt, das irgendwo hineingelegt werden soll.
-    where   Das (tote) Objekt, in das etwas hineingelegt werden soll.
+   /std/living/put_and_get.c
 
-BESCHREIBUNG:
 
-    Das Lebewesen, in dem diese Funktion aufgerufen werden soll, legt
-    den angegebenen Gegenstand (ob) in das angegebene Zielobjekt (where).
-    Dabei sollte es sich bei where um einen Container/Raum handeln.
-    Ist where ein Lebewesen, verwendet man besser give_obj().
+ARGUMENTE
+=========
 
-RUeCKGABEWERT:
-    1, wenn das Objekt weggelegt wurde oder dies nicht moeglich war. (in diesem
-    Fall wird auch direkt eine Textausgabe ausgegeben)
-    0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
-    plaziert
+   ob      Das Objekt, das irgendwo hineingelegt werden soll.
+   where   Das (tote) Objekt, in das etwas hineingelegt werden soll.
 
-SIEHE AUCH:
 
-    drop_obj(), find_obs(), give_obj(), pick_obj(), /std/living/put_and_get.c
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, legt
+   den angegebenen Gegenstand (ob) in das angegebene Zielobjekt (where).
+   Dabei sollte es sich bei where um einen Container/Raum handeln.
+   Ist where ein Lebewesen, verwendet man besser give_obj().
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt weggelegt wurde oder dies nicht moeglich war. (in diesem
+   Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
+   plaziert
+
+
+SIEHE AUCH
+==========
+
+   drop_obj(), find_obs(), give_obj(), pick_obj(), /std/living/put_and_get.c
diff --git a/doc/lfun/query_prevent_shadow b/doc/lfun/query_prevent_shadow
index 80b0c7d..2c8d2f3 100644
--- a/doc/lfun/query_prevent_shadow
+++ b/doc/lfun/query_prevent_shadow
@@ -1,34 +1,54 @@
+
+query_prevent_shadow()
+**********************
+
 query_prevent_shadow(L)
-FUNKTION:
-     varargs int query_prevent_shadow(object shadower)
 
-PARAMETER:
-     object shadower	- da Objekt, das eine Beschattung beantragt
 
-BESCHREIBUNG:
-     Diese Methode kann in Objekten definiert werden, die nicht beschattet
-     werden wollen oder anhand des Objektes shadower entscheiden wollen ob
-     sie beschattet werden wollen.
+FUNKTION
+========
 
-     Gibt die Funktion 0 zurueck, wird ein Shadow auf das Objekt erlaubt,
-     sonst schlaegt es fehl.
+   varargs int query_prevent_shadow(object shadower)
 
-BEISPIEL:
-     // generell keine Beschattung
-     int query_prevent_shadow(object who) {
-      return 1;
-     }
 
-     // Beschattung durch offizielle Objekte erlaubt
-     int query_prevent_shadow(object who) {
-      if(who && !strstr(object_name(who),"/std/player"))
-       return 0;
-      return 1;
-     }
+PARAMETER
+=========
 
-SIEHE AUCH:
-     Rechte:	     query_allow_shadow(M)
-     Generell:	     shadow(E), unshadow(E)
-     Informationen:  query_shadowing(E)
+   object shadower    - da Objekt, das eine Beschattung beantragt
 
-20. Mai 2004 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Diese Methode kann in Objekten definiert werden, die nicht beschattet
+   werden wollen oder anhand des Objektes shadower entscheiden wollen ob
+   sie beschattet werden wollen.
+
+   Gibt die Funktion 0 zurueck, wird ein Shadow auf das Objekt erlaubt,
+   sonst schlaegt es fehl.
+
+
+BEISPIEL
+========
+
+   // generell keine Beschattung
+   int query_prevent_shadow(object who) {
+    return 1;
+   }
+
+   // Beschattung durch offizielle Objekte erlaubt
+   int query_prevent_shadow(object who) {
+    if(who && !strstr(object_name(who),"/std/player"))
+     return 0;
+    return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Rechte:         query_allow_shadow(M)
+   Generell:       shadow(E), unshadow(E)
+   Informationen:  query_shadowing(E)
+
+20. Mai 2004 Gloinson
diff --git a/doc/lfun/query_real_name b/doc/lfun/query_real_name
index d7633de..1ebc69f 100644
--- a/doc/lfun/query_real_name
+++ b/doc/lfun/query_real_name
@@ -1,15 +1,26 @@
+
 query_real_name()
+*****************
 
-SYNOPSIS:
-	string query_real_name(void)
 
-DESCRIPTION:
-	The result of this_player()->query_real_name() is used as
-	default argument for the efun wizlist().
+SYNOPSIS
+========
 
-	If LOG_SHOUT was #defined in the parser at compile time, the
-	efun shout will use query_real_name() to log the shouter's
-	name.
+   string query_real_name(void)
 
-SEE ALSO:
-	shout(E), wizlist(E)
+
+DESCRIPTION
+===========
+
+   The result of this_player()->query_real_name() is used as
+   default argument for the efun wizlist().
+
+   If LOG_SHOUT was #defined in the parser at compile time, the
+   efun shout will use query_real_name() to log the shouter's
+   name.
+
+
+SEE ALSO
+========
+
+   shout(E), wizlist(E)
diff --git a/doc/lfun/query_weight_contents b/doc/lfun/query_weight_contents
index 13980f8..bd644f5 100644
--- a/doc/lfun/query_weight_contents
+++ b/doc/lfun/query_weight_contents
@@ -1,20 +1,36 @@
+
 query_weight_contents()
+***********************
 
-FUNKTION:
-     int query_weight_contents()
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int query_weight_contents()
 
-BESCHREIBUNG:
-     Gibt das Gewicht des Inhaltes des Behaelters zurueck (ohne
-     Beruecksichtigung von P_WEIGHT_PERCENT!)
 
-RUeCKGABEWERT:
-     Das Gewicht des Behaelterinhaltes.
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Gewicht des Inhaltes des Behaelters zurueck (ohne
+   Beruecksichtigung von P_WEIGHT_PERCENT!)
+
+
+RUeCKGABEWERT
+=============
+
+   Das Gewicht des Behaelterinhaltes.
+
 Last modified: Wed May 8 10:23:32 1996 by Wargon
diff --git a/doc/lfun/reduce_hit_points b/doc/lfun/reduce_hit_points
index 39b3368..7a1dcf0 100644
--- a/doc/lfun/reduce_hit_points
+++ b/doc/lfun/reduce_hit_points
@@ -1,43 +1,69 @@
+
 reduce_hit_points()
-FUNKTION:
-    int reduce_hit_points(int damage)
+*******************
 
-DEFINIERT IN:
-    /std/living/life.c
 
-ARGUMENTE:
-    int damage	- der zugefuegte Schaden
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Dem Lebewesen werden damage Lebenspunkte abgezogen, aber der
-    Wert wird hinterher nicht kleiner als 1 sein und das Lebewesen
-    wird dadurch nicht sterben.
+   int reduce_hit_points(int damage)
 
-RUECKGABEWERT:
-    Die verbleibenden Lebenspunkte.
 
-BEISPIELE:
-    write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
-          "heraus und\nbeisst Dich ins Bein, sie verschwindet so schnell, "+
-          "wie sie gekommen ist.\n");
-    this_player()->reduce_hit_points(50);
-    (Auszug aus /players/boing/friedhof/room/cat1x9)
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    damage kann auch ein negativer Wert sein, dann werden dem Lebewesen
-    diese Lebenspunkte gutgeschrieben und auf die aktuellen Lebenspunkte
-    addiert. Da dies eine Form der Heilung ist, nur nach Ruecksprache mit
-    dem Regionsmagier verwenden.
+   /std/living/life.c
 
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
 
-SIEHE AUCH:
-    Gegenpart:	restore_hit_points()
-    Verwandt:	do_damage(), Defend(), reduce_spell_points()
-    Props:	P_HP
-    Konzept:	heilung
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   int damage  - der zugefuegte Schaden
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden damage Lebenspunkte abgezogen, aber der
+   Wert wird hinterher nicht kleiner als 1 sein und das Lebewesen
+   wird dadurch nicht sterben.
+
+
+RUECKGABEWERT
+=============
+
+   Die verbleibenden Lebenspunkte.
+
+
+BEISPIELE
+=========
+
+   write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
+         "heraus und\nbeisst Dich ins Bein, sie verschwindet so schnell, "+
+         "wie sie gekommen ist.\n");
+   this_player()->reduce_hit_points(50);
+   (Auszug aus /players/boing/friedhof/room/cat1x9)
+
+
+BEMERKUNGEN
+===========
+
+   damage kann auch ein negativer Wert sein, dann werden dem Lebewesen
+   diese Lebenspunkte gutgeschrieben und auf die aktuellen Lebenspunkte
+   addiert. Da dies eine Form der Heilung ist, nur nach Ruecksprache mit
+   dem Regionsmagier verwenden.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  restore_hit_points()
+   Verwandt:   do_damage(), Defend(), reduce_spell_points()
+   Props:      P_HP
+   Konzept:    heilung
+
 Last modified: Sat Dec 13 01:00:47 1999 by Tilly
diff --git a/doc/lfun/reduce_spell_points b/doc/lfun/reduce_spell_points
index 13c0630..cddb7da 100644
--- a/doc/lfun/reduce_spell_points
+++ b/doc/lfun/reduce_spell_points
@@ -1,27 +1,48 @@
+
 reduce_spell_points()
-FUNKTION:
-    void reduce_spell_points(int points)
+*********************
 
-DEFINIERT IN:
-    /std/living/life.c
 
-ARGUMENTE:
-    points: Anzahl der Konzentrationspunkte die abgezogen werden sollen.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Dem Lebewesen werden points Konzentrationspunkte abgezogen. Falls
-    das Lebewesen weniger Konzentrationspunkte hat, als abgezogen werden
-    sollen, werden sie auf 0 gesetzt.
+   void reduce_spell_points(int points)
 
-BEISPIELE:
-    write("Das boese boese Monster schaut Dich grimmig an und labt sich an "
-         +"Deiner Konzentration.\n");
-    this_player()->reduce_spell_points(50);
 
-SIEHE AUCH:
-    Gegenpart:	restore_spell_points(L)
-    Verwandt:	reduce_hit_points(L), buffer_sp(L)
-    Props:	P_SP
-    Konzept:	heilung
+DEFINIERT IN
+============
 
-23.Feb.2004 Gloinson
\ No newline at end of file
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   points: Anzahl der Konzentrationspunkte die abgezogen werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden points Konzentrationspunkte abgezogen. Falls
+   das Lebewesen weniger Konzentrationspunkte hat, als abgezogen werden
+   sollen, werden sie auf 0 gesetzt.
+
+
+BEISPIELE
+=========
+
+   write("Das boese boese Monster schaut Dich grimmig an und labt sich an "
+        +"Deiner Konzentration.\n");
+   this_player()->reduce_spell_points(50);
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  restore_spell_points(L)
+   Verwandt:   reduce_hit_points(L), buffer_sp(L)
+   Props:      P_SP
+   Konzept:    heilung
+
+23.Feb.2004 Gloinson
diff --git a/doc/lfun/register_modifier b/doc/lfun/register_modifier
index 359a050..afe086c 100644
--- a/doc/lfun/register_modifier
+++ b/doc/lfun/register_modifier
@@ -1,24 +1,42 @@
+
 register_modifier()
-FUNKTION:
-     void register_modifier(object modifier)
+*******************
 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-PARAMETER:
-     modifier	- Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD
 
-BESCHREIBUNG:
-     Registriert einen Modifier im Spieler. Wird durch InsertSensitiveObject
-     beziehungsweise beim Anziehen oder Zuecken gerufen.
-     Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
-     sollte stattdessen UpdateAttributes gerufen werden.     
+FUNKTION
+========
 
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     deregister_modifier(), P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, 
-     P_ATTRIBUTES_MODIFIER,P_X_ATTR_MOD, P_M_ATTR_MOD, 
-     /std/living/attributes.c
+   void register_modifier(object modifier)
 
-13.Jun.2004, Muadib
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   modifier   - Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD
+
+
+BESCHREIBUNG
+============
+
+   Registriert einen Modifier im Spieler. Wird durch InsertSensitiveObject
+   beziehungsweise beim Anziehen oder Zuecken gerufen.
+   Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
+   sollte stattdessen UpdateAttributes gerufen werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   deregister_modifier(), P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_ATTRIBUTES_MODIFIER,P_X_ATTR_MOD, P_M_ATTR_MOD,
+   /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/lfun/remove b/doc/lfun/remove
index 21fc59a..914c1e1 100644
--- a/doc/lfun/remove
+++ b/doc/lfun/remove
@@ -1,34 +1,56 @@
+
 remove()
+********
 
-FUNKTION:
-     varargs int remove(int silent);
 
-DEFINIERT IN:
-     /std/thing/moving.c
-     /std/living/moving.c
-     /std/room/moving.c
+FUNKTION
+========
 
-ARGUMENTE:
-     silent
-          Falls ungleich 0, so werden beim Zerstoeren keine Meldungen
-          ausgegeben.
+   varargs int remove(int silent);
 
-BESCHREIBUNG:
-     Beim Aufruf dieser Funktion entfernt sich das Objekt selbst. Durch
-     Ueberladen dieser Funktion kann man diesen Vorgang noch durch die
-     Ausgabe von Meldungen kommentieren, oder irgendwelche Daten
-     abspeichern, oder das Zerstoeren ganz verhindern (auf diesem Weg... Mit
-     destruct() kann das Objekt immer noch direkt zerstoert werden!)
 
-RUeCKGABEWERT:
-     1, wenn sich das Objekt erfolgreich selbst zerstoert hat, sonst 0.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Nach einem erfolgreichen ::remove() gelten die selben Einschraenkungen
-     wie nach einem destruct()!
+   /std/thing/moving.c
+   /std/living/moving.c
+   /std/room/moving.c
 
-SIEHE AUCH:
-     destruct()
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   silent
+        Falls ungleich 0, so werden beim Zerstoeren keine Meldungen
+        ausgegeben.
+
+
+BESCHREIBUNG
+============
+
+   Beim Aufruf dieser Funktion entfernt sich das Objekt selbst. Durch
+   Ueberladen dieser Funktion kann man diesen Vorgang noch durch die
+   Ausgabe von Meldungen kommentieren, oder irgendwelche Daten
+   abspeichern, oder das Zerstoeren ganz verhindern (auf diesem Weg... Mit
+   destruct() kann das Objekt immer noch direkt zerstoert werden!)
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn sich das Objekt erfolgreich selbst zerstoert hat, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Nach einem erfolgreichen ::remove() gelten die selben Einschraenkungen
+   wie nach einem destruct()!
+
+
+SIEHE AUCH
+==========
+
+   destruct()
+
 Last modified: Wed May 8 10:23:40 1996 by Wargon
diff --git a/doc/lfun/remove_multiple b/doc/lfun/remove_multiple
index 6340fd1..9e60d55 100644
--- a/doc/lfun/remove_multiple
+++ b/doc/lfun/remove_multiple
@@ -1,58 +1,86 @@
+
 remove_multiple()
-FUNKTION:
-     public varargs int remove_multiple(int limit, mixed fun);
+*****************
 
-DEFINIERT IN:
-     /std/container/items.c
 
-ARGUMENTE:
-     limit: Anzahl gleicher Objekte, die verbleiben sollen.
-     fun:   Funktionsname (string) oder Closure.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Wird diese Funktion aufgerufen, werden alle gleichen Objekte
-     (standardmaessig definiert als gleicher Ladename, gleiche
-      Kurzbeschreibung und gleiche Langbeschreibung), deren Anzahl <limit>
-     ueberschreitet, entfernt.
-     
-     Ausnahmen: Lebewesen und per AddItem() hinzugefuegte Objekte.
+   public varargs int remove_multiple(int limit, mixed fun);
 
-     Mit dem Argument <fun> lassen sich die Kriterien fuer die "Gleichheit"
-     aendern.
-     Ist <fun> ein Funktionsname, wird diese Funktion an allen in Frage
-     kommenenden Objekten im Container gerufen.
-     Ist <fun> eine Closure, werden sie fuer jedes in Frage kommende Objekt
-     einmal gerufen und ihr das Objekt uebergeben.
-     Als 'gleich' werden alle Objekte betrachtet, fuer die <fun> den gleichen
-     Wert zurueckliefert.
-     Objekte, fuer die <fun> 0 zurueckliefert, werden ignoriert.
 
-BEMERKUNGEN:
-     1) Raeume rufen remove_multiple(3) standardmaessig im reset(), jedoch
-        nur, wenn kein Spieler anwesend ist und mehr als 10 Objekte im Raum
-        sind.
-     2) remove_multipe(0) entfernt alle entfernbaren Objekte (s. Ausnahmen).
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Ein Container enthaelt 5 Fackeln. Im reset() ruft man nun
-     remove_multiple(3) auf. Anschliessend sind noch 3 Fackeln uebrig.
-     
-     Alle verbleibenden Objekte im Container sollen unterschiedliche Namen
-     haben:
-     remove_multiple(1, "name");
+   /std/container/items.c
 
-     Ein Container soll nur ein Objekt behalten, welches groesser als 70 cm
-     ist:
-     int groessen_filter(object ob) {
-       if (ob->QueryProp(P_SIZE > 70)) return 1;
-       return 0; // damit das Objekt ignoriert wird.
-       // Alternativ koennte man statt 0 auch object_name(ob) zurueckliefern,
-       // dann sind diese Objekte alle unterschiedlich.
-     }
-     ...
-     remove_multiple(1, #'groessen_filter);
 
-SIEHE AUCH:
-     reset()
+ARGUMENTE
+=========
+
+   limit: Anzahl gleicher Objekte, die verbleiben sollen.
+   fun:   Funktionsname (string) oder Closure.
+
+
+BESCHREIBUNG
+============
+
+   Wird diese Funktion aufgerufen, werden alle gleichen Objekte
+   (standardmaessig definiert als gleicher Ladename, gleiche
+    Kurzbeschreibung und gleiche Langbeschreibung), deren Anzahl <limit>
+   ueberschreitet, entfernt.
+
+
+
+   Ausnahmen: Lebewesen und per AddItem() hinzugefuegte Objekte.
+
+   Mit dem Argument <fun> lassen sich die Kriterien fuer die "Gleichheit"
+   aendern.
+   Ist <fun> ein Funktionsname, wird diese Funktion an allen in Frage
+   kommenenden Objekten im Container gerufen.
+   Ist <fun> eine Closure, werden sie fuer jedes in Frage kommende Objekt
+   einmal gerufen und ihr das Objekt uebergeben.
+   Als 'gleich' werden alle Objekte betrachtet, fuer die <fun> den gleichen
+   Wert zurueckliefert.
+   Objekte, fuer die <fun> 0 zurueckliefert, werden ignoriert.
+
+
+BEMERKUNGEN
+===========
+
+   1) Raeume rufen remove_multiple(3) standardmaessig im reset(), jedoch
+      nur, wenn kein Spieler anwesend ist und mehr als 10 Objekte im Raum
+      sind.
+   2) remove_multipe(0) entfernt alle entfernbaren Objekte (s. Ausnahmen).
+
+
+BEISPIELE
+=========
+
+   Ein Container enthaelt 5 Fackeln. Im reset() ruft man nun
+   remove_multiple(3) auf. Anschliessend sind noch 3 Fackeln uebrig.
+
+
+
+   Alle verbleibenden Objekte im Container sollen unterschiedliche Namen
+   haben:
+   remove_multiple(1, "name");
+
+   Ein Container soll nur ein Objekt behalten, welches groesser als 70 cm
+   ist:
+   int groessen_filter(object ob) {
+     if (ob->QueryProp(P_SIZE > 70)) return 1;
+     return 0; // damit das Objekt ignoriert wird.
+     // Alternativ koennte man statt 0 auch object_name(ob) zurueckliefern,
+     // dann sind diese Objekte alle unterschiedlich.
+   }
+   ...
+   remove_multiple(1, #'groessen_filter);
+
+
+SIEHE AUCH
+==========
+
+   reset()
 
 31.01.2009, Zesstra
diff --git a/doc/lfun/reset b/doc/lfun/reset
index 07a22ee..5959b3f 100644
--- a/doc/lfun/reset
+++ b/doc/lfun/reset
@@ -1,88 +1,106 @@
+
 reset()
-FUNKTION:
-     void reset();
-     protected void reset();
+*******
 
-BESCHREIBUNG:
-     reset() wird vom GameDriver in jedem Objekt aufgerufen, um dem Objekt
-     die Gelegenheit zu geben, sich wieder in einen definierten Zustand zu
-     versetzen: Raeume und Monster erzeugen per AddItem() eingefuegte und
-     zwischenzeitlich entfernte Objekte neu, Tueren schliessen sich ...
 
-     Solange das Objekt "benutzt" wird, wird reset() regelmaessig alle
-     45 Minuten (+/-15 Minuten) mit einer Aufloesung von 2s aufgerufen
-     (d.h. der Driver prueft und ruft nur alle 2 Sekunden reset() auf
-     allen Objekten).
+FUNKTION
+========
 
-     Wird eine Objekt nicht mehr "benutzt", d.h. wird an einem Objekt nicht
-     von aussen (durch call_other etc.) _nach_ einem reset() eine Methode
-     bzw. LFun gerufen, so bekommt dieses Objekt keinen weiteren reset().
+   void reset();
+   protected void reset();
 
-     Ein Funktionsaufruf am Objekt schaltet den reset() wieder ein.
-     Bei einem Objekt in einem Container waere das zB das Benutzen des
-     Containers (Hineinlegen/Herausnehmen/Hineinsehen). Das kann
-     sehr lange dauern.
 
-     Die Abschaltung kann man verhindern, indem man im reset() per call_out()
-     eine Funktion im Objekt ruft. Dies aber bitte _nur_ machen, wenn das
-     Objekt _unbedingt_ auf einen staendigen Reset angewiesen ist, auch wenn
-     es nicht "benutzt" wird.
+BESCHREIBUNG
+============
 
-     Aendern laesst sich die Zeit zwischen den Aufrufen von reset() mit
-     set_next_reset(). Die Aufloesung von 2s kann man nicht aendern.
+   reset() wird vom GameDriver in jedem Objekt aufgerufen, um dem Objekt
+   die Gelegenheit zu geben, sich wieder in einen definierten Zustand zu
+   versetzen: Raeume und Monster erzeugen per AddItem() eingefuegte und
+   zwischenzeitlich entfernte Objekte neu, Tueren schliessen sich ...
 
-BEMERKUNGEN:
-     - man kann reset() nutzen, um Ereignisse auszuloesen:
-       - es ist billiger als lange call_out()
-       - siehe Warnung bezueglich Abschalten des reset
-     - man kann reset() als protected oder static definieren, wenn man nicht
-       moechte, dass die Funktion von aussen gerufen werden kann. Dies
-       verhindert Einflussnahme von aussen, kann aber auch Debugmassnahmen
-       erschweren. Es ist aber dennoch fuer einige Objekte sinnvoll.
-     - der Driver ruft reset() unabhaengig von zusaetzlichen, "manuellen"
-       Rufen von reset()
-       - keine Rufe von reset() mit call_out() aus reset() (Callout-Ketten-
-         bildung droht), fuer solche Faelle ist set_next_reset(E) da!
-     - bei Blueprints sollte der reset() in der Regel abgeschaltet werden,
-       sofern er nicht auf wichtige Aufgaben in der BP zu tun hat:
-       protected void create() {
-         if(!clonep(ME)) {
-             set_next_reset(-1);
-             return;
-         }
-         ::create();
-         ...
+   Solange das Objekt "benutzt" wird, wird reset() regelmaessig alle
+   45 Minuten (+/-15 Minuten) mit einer Aufloesung von 2s aufgerufen
+   (d.h. der Driver prueft und ruft nur alle 2 Sekunden reset() auf
+   allen Objekten).
+
+   Wird eine Objekt nicht mehr "benutzt", d.h. wird an einem Objekt nicht
+   von aussen (durch call_other etc.) _nach_ einem reset() eine Methode
+   bzw. LFun gerufen, so bekommt dieses Objekt keinen weiteren reset().
+
+   Ein Funktionsaufruf am Objekt schaltet den reset() wieder ein.
+   Bei einem Objekt in einem Container waere das zB das Benutzen des
+   Containers (Hineinlegen/Herausnehmen/Hineinsehen). Das kann
+   sehr lange dauern.
+
+   Die Abschaltung kann man verhindern, indem man im reset() per call_out()
+   eine Funktion im Objekt ruft. Dies aber bitte _nur_ machen, wenn das
+   Objekt _unbedingt_ auf einen staendigen Reset angewiesen ist, auch wenn
+   es nicht "benutzt" wird.
+
+   Aendern laesst sich die Zeit zwischen den Aufrufen von reset() mit
+   set_next_reset(). Die Aufloesung von 2s kann man nicht aendern.
+
+
+BEMERKUNGEN
+===========
+
+   - man kann reset() nutzen, um Ereignisse auszuloesen:
+     - es ist billiger als lange call_out()
+     - siehe Warnung bezueglich Abschalten des reset
+   - man kann reset() als protected oder static definieren, wenn man nicht
+     moechte, dass die Funktion von aussen gerufen werden kann. Dies
+     verhindert Einflussnahme von aussen, kann aber auch Debugmassnahmen
+     erschweren. Es ist aber dennoch fuer einige Objekte sinnvoll.
+   - der Driver ruft reset() unabhaengig von zusaetzlichen, "manuellen"
+     Rufen von reset()
+     - keine Rufe von reset() mit call_out() aus reset() (Callout-Ketten-
+       bildung droht), fuer solche Faelle ist set_next_reset(E) da!
+   - bei Blueprints sollte der reset() in der Regel abgeschaltet werden,
+     sofern er nicht auf wichtige Aufgaben in der BP zu tun hat:
+     protected void create() {
+       if(!clonep(ME)) {
+           set_next_reset(-1);
+           return;
        }
-
-BEISPIELE:
-     // ein NPC, der bei jedem reset() schaut, ob um ihn herum bessere
-     // Ausruestung liegt als die, die er selbst gerade traegt:
-
-     ...
-     void reset() {
-       ::reset();
-
-       if(clonep(this_object()) && environment()) {
-         object o;
-         o=first_inventory(environment());
-         while(o) {
-             look_for_good_weapons_and_use_them_if_better(o);
-             o=next_inventory(o);
-         }
-       }
+       ::create();
+       ...
      }
 
-     // ein reset fuer einen Gegenstand, der vielleicht in
-     // in einem Container landet und dann weiter einen reset
-     // bekommen muss/soll
 
-     void reset() {
-       // irgend ein Code hier
-       call_other(this_object(), "???"); // einfach nur was aufrufen
+BEISPIELE
+=========
+
+   // ein NPC, der bei jedem reset() schaut, ob um ihn herum bessere
+   // Ausruestung liegt als die, die er selbst gerade traegt:
+
+   ...
+   void reset() {
+     ::reset();
+
+     if(clonep(this_object()) && environment()) {
+       object o;
+       o=first_inventory(environment());
+       while(o) {
+           look_for_good_weapons_and_use_them_if_better(o);
+           o=next_inventory(o);
+       }
      }
+   }
 
-SIEHE AUCH:
-     clean_up(), set_next_reset(E), query_next_reset(E)
-     memory
+   // ein reset fuer einen Gegenstand, der vielleicht in
+   // in einem Container landet und dann weiter einen reset
+   // bekommen muss/soll
+
+   void reset() {
+     // irgend ein Code hier
+     call_other(this_object(), "???"); // einfach nur was aufrufen
+   }
+
+
+SIEHE AUCH
+==========
+
+   clean_up(), set_next_reset(E), query_next_reset(E)
+   memory
 
 letzte Aenderung: 2009-01-14 Rumata
diff --git a/doc/lfun/restore_hit_points b/doc/lfun/restore_hit_points
index 7ae3457..b4917cf 100644
--- a/doc/lfun/restore_hit_points
+++ b/doc/lfun/restore_hit_points
@@ -1,33 +1,57 @@
+
 restore_hit_points()
-FUNKTION:
-    int restore_hit_points(int heal)
+********************
 
-ARGUMENTE:
-    int heal	- der zu heilende Betrag
 
-BESCHREIBUNG:
-    Dem Lebewesen werden heal Lebenspunkte aufgeschlagen. Die HP
-    steigen nicht ueber P_MAX_HP.
+FUNKTION
+========
 
-RUECKGABEWERT:
-    Die verbleibenden Lebenspunkte.
+   int restore_hit_points(int heal)
 
-BEISPIELE:
-    write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
-          "heraus und\nschleimt dich heilend voll, sie verschwindet so, "+
-          "wie sie gekommen ist.\n");
-    this_player()->restore_hit_points(50);
 
-BEMERKUNGEN:
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
-    Ansonsten bitte buffer_hp() benutzen und die Konzeptseite lesen!
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    Gegenpart:	reduce_hit_points()
-    Verwandt:	buffer_hp(), heal_self(), restore_spell_points()
-    Props:	P_HP
-    Konzept:	heilung
+   int heal    - der zu heilende Betrag
 
-23.Feb.2004 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden heal Lebenspunkte aufgeschlagen. Die HP
+   steigen nicht ueber P_MAX_HP.
+
+
+RUECKGABEWERT
+=============
+
+   Die verbleibenden Lebenspunkte.
+
+
+BEISPIELE
+=========
+
+   write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
+         "heraus und\nschleimt dich heilend voll, sie verschwindet so, "+
+         "wie sie gekommen ist.\n");
+   this_player()->restore_hit_points(50);
+
+
+BEMERKUNGEN
+===========
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+   Ansonsten bitte buffer_hp() benutzen und die Konzeptseite lesen!
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  reduce_hit_points()
+   Verwandt:   buffer_hp(), heal_self(), restore_spell_points()
+   Props:      P_HP
+   Konzept:    heilung
+
+23.Feb.2004 Gloinson
diff --git a/doc/lfun/restore_spell_points b/doc/lfun/restore_spell_points
index 87c2a6c..2c8e42c 100644
--- a/doc/lfun/restore_spell_points
+++ b/doc/lfun/restore_spell_points
@@ -1,37 +1,61 @@
+
 restore_spell_points()
-FUNKTION:
-    void restore_spell_points(int points)
+**********************
 
-ARGUMENTE:
-    points: Anzahl der Konzentrationspunkte die gutgeschrieben werden sollen.
 
-BESCHREIBUNG:
-    Dem Lebewesen werden points Konzentrationspunkte gutgeschrieben. Falls
-    Punkte abgezogen werden sollen und das Lebewesen nicht ueber <points>
-    Konzentrationspunkte verfuegt, werden sie auf 0 gesetzt.
+FUNKTION
+========
 
-RUECKGABEWERT:
-    Keiner
+   void restore_spell_points(int points)
 
-BEISPIELE:
-    write("Das boese boese Monster schaut Dich suess an und gibt dir mehr "
-         +"Konzentration.\n");
-    this_player()->restore_spell_points(50);
 
-BEMERKUNGEN:
-    Da das Benutzen der Funktion eine Heilung bedeutet, sollte man bei
-    Verwendung auf jeden Fall Ruecksprache mit seinem RM nehmen, bzw
-    die Heilstelle bei der Heilungsbalance genehmigen lassen.
+ARGUMENTE
+=========
 
-    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
-    werden.
-    Ansonsten bitte buffer_sp() benutzen und die Konzeptseite lesen!
+   points: Anzahl der Konzentrationspunkte die gutgeschrieben werden sollen.
 
-SIEHE AUCH:
-    Gegenpart:	reduce_spell_points(L)
-    Verwandt:	buffer_sp(L), restore_hit_points(L)
-    Props:	P_SP
-    Konzept:	heilung
 
-23.Feb.2004 Gloinson
\ No newline at end of file
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden points Konzentrationspunkte gutgeschrieben. Falls
+   Punkte abgezogen werden sollen und das Lebewesen nicht ueber <points>
+   Konzentrationspunkte verfuegt, werden sie auf 0 gesetzt.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner
+
+
+BEISPIELE
+=========
+
+   write("Das boese boese Monster schaut Dich suess an und gibt dir mehr "
+        +"Konzentration.\n");
+   this_player()->restore_spell_points(50);
+
+
+BEMERKUNGEN
+===========
+
+   Da das Benutzen der Funktion eine Heilung bedeutet, sollte man bei
+   Verwendung auf jeden Fall Ruecksprache mit seinem RM nehmen, bzw
+   die Heilstelle bei der Heilungsbalance genehmigen lassen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+   Ansonsten bitte buffer_sp() benutzen und die Konzeptseite lesen!
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  reduce_spell_points(L)
+   Verwandt:   buffer_sp(L), restore_hit_points(L)
+   Props:      P_SP
+   Konzept:    heilung
+
+23.Feb.2004 Gloinson
diff --git a/doc/lfun/save_me b/doc/lfun/save_me
index d7f9e0a..cbce90a 100644
--- a/doc/lfun/save_me
+++ b/doc/lfun/save_me
@@ -1,21 +1,41 @@
+
+save_me()
+*********
+
 save_me(L)
-FUNKTION:
-    void save_me(mixed value_items)
 
-DEFINIERT IN:
-    /std/player/base.c
 
-ARGUMENTE:
-    value_items
-       Ungleich 0, wenn Wert der Gegenstaende berechnet werden soll.
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Speichert einen Spieler, seine Autoloader, bestimmt sein GuildRating
-    und berechnet/speichert auf Anforderung den Wert der getragenen
-    Gegenstaende.
+   void save_me(mixed value_items)
 
-SIEHE AUCH:
-    Props:       P_CARRIED_VALUE, P_AUTOLOADOBJ, P_LAST_LOGOUT
-    Kommandos:   save, ende
+
+DEFINIERT IN
+============
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   value_items
+      Ungleich 0, wenn Wert der Gegenstaende berechnet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Speichert einen Spieler, seine Autoloader, bestimmt sein GuildRating
+   und berechnet/speichert auf Anforderung den Wert der getragenen
+   Gegenstaende.
+
+
+SIEHE AUCH
+==========
+
+   Props:       P_CARRIED_VALUE, P_AUTOLOADOBJ, P_LAST_LOGOUT
+   Kommandos:   save, ende
 
 1.September 2008 Gloinson
diff --git a/doc/lfun/second_life b/doc/lfun/second_life
index b5abfd5..1c3fc8b 100644
--- a/doc/lfun/second_life
+++ b/doc/lfun/second_life
@@ -1,30 +1,52 @@
+
 second_life()
+*************
 
-FUNKTION:
-	varargs int second_life(object obj);
 
-DEFINIERT IN:
-	/std/player/life.c
+FUNKTION
+========
 
-ARGUMENTE:
-	obj
-	  Leiche des Lebewesens.
+   varargs int second_life(object obj);
 
-BESCHREIBUNG:
-        Diese Funktion wird im die() des Lebewesens aufgerufen, wenn sicher
-        ist, dass es stirbt. Ueblicherweise ist diese Funktion nur im Spieler
-        definiert und regelt EP-Verlust und dergleichen. Ein Shadow wuerde
-        diese Funktion ueberlagern, um zu verhindern, dass ein Spieler stirbt.
 
-RUeCKGABEWERT:
-        1, wenn das Lebewesen nicht stirbt, sonst 0
+DEFINIERT IN
+============
 
-BEMERKUNG:
-        Bei NPCs sollte man direkt die() ueberschreiben, wenn man nicht
-        moechte, dass sie sterben.
+   /std/player/life.c
 
-SIEHE AUCH:
-        die()
 
-----------------------------------------------------------------------------
-Last modified: 2015-Jan-19, Arathorn 
+ARGUMENTE
+=========
+
+   obj
+     Leiche des Lebewesens.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im die() des Lebewesens aufgerufen, wenn sicher
+   ist, dass es stirbt. Ueblicherweise ist diese Funktion nur im Spieler
+   definiert und regelt EP-Verlust und dergleichen. Ein Shadow wuerde
+   diese Funktion ueberlagern, um zu verhindern, dass ein Spieler stirbt.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Lebewesen nicht stirbt, sonst 0
+
+
+BEMERKUNG
+=========
+
+   Bei NPCs sollte man direkt die() ueberschreiben, wenn man nicht
+   moechte, dass sie sterben.
+
+
+SIEHE AUCH
+==========
+
+   die()
+
+Last modified: 2015-Jan-19, Arathorn
diff --git a/doc/lfun/sell_obj b/doc/lfun/sell_obj
index 8c362f1..580fd87 100644
--- a/doc/lfun/sell_obj
+++ b/doc/lfun/sell_obj
@@ -1,52 +1,59 @@
-sell_obj()
-
-Funktion:
-    static string sell_obj(object ob, int short)
-
-Definiert in:
-    /std/room/shop
-
-Argumente:
-    ob:
-      Das anzukaufende Objekt
-    short:
-      Gibt an, ob der Verkaeufer nur ein Objekt (0) oder mehrere (1) 
-      verkauft. (Verkaufe alles etc.)
-
-Beschreibung:
-    Ermittelt ob der Laden bereit ist, <ob> anzukaufen.
-
-Rueckgabewert:
-    Meldung die ausgegeben wird, wenn ein Objekt abgelehnt wird oder 0.
-
-Bemerkung:
-    Man sollte im normalfall _niemals_ einfach 0 zurueckgeben, sondern das 
-    geerbte sell_obj() aus /std/room/shop, damit beispielsweise P_NOBUY 
-    beachtet wird.
-
-Beispiel:
-    Ein Schmied, der nur Waffen ankauft:
-    
-    protected void create()
-    {
-      ...
-    }
-    
-    static string sell_obj(object ob, int short)
-    {
-      if(!ob->QueryProp(P_WEAPON_TYPE))
-      {
-        return "Ich bin nur an Waffen interessiert.";
-      }
-      return ::sell_obj(ob,short);
-    }
-
-Siehe auch:
-    Funktionen:
-      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(), 
-      QueryStorageRoom(), QueryBuyValue(), QueryBuyFact(), buy_obj()
-    Properties:
-      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
-
-------------------------------------------------------------------------------
-Letzte Aenderung: 21.05.2014, Bugfix
+
+sell_obj()
+**********
+
+sell_obj()
+
+Funktion:
+   static string sell_obj(object ob, int short)
+
+Definiert in:
+   /std/room/shop
+
+Argumente:
+   ob:
+      Das anzukaufende Objekt
+
+   short:
+      Gibt an, ob der Verkaeufer nur ein Objekt (0) oder mehrere (1)
+      verkauft. (Verkaufe alles etc.)
+
+Beschreibung:
+   Ermittelt ob der Laden bereit ist, <ob> anzukaufen.
+
+Rueckgabewert:
+   Meldung die ausgegeben wird, wenn ein Objekt abgelehnt wird oder 0.
+
+Bemerkung:
+   Man sollte im normalfall _niemals_ einfach 0 zurueckgeben, sondern
+   das geerbte sell_obj() aus /std/room/shop, damit beispielsweise
+   P_NOBUY beachtet wird.
+
+Beispiel:
+   Ein Schmied, der nur Waffen ankauft:
+
+   protected void create() {
+
+      ...
+
+   }
+
+   static string sell_obj(object ob, int short) {
+
+      if(!ob->QueryProp(P_WEAPON_TYPE)) {
+
+         return "Ich bin nur an Waffen interessiert.";
+
+      } return ::sell_obj(ob,short);
+
+   }
+
+Siehe auch:
+   Funktionen:
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryStorageRoom(), QueryBuyValue(), QueryBuyFact(), buy_obj()
+
+   Properties:
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+Letzte Aenderung: 21.05.2014, Bugfix
diff --git a/doc/lfun/set_object_next_reset b/doc/lfun/set_object_next_reset
index 68dfa2f..9b77a9e 100644
--- a/doc/lfun/set_object_next_reset
+++ b/doc/lfun/set_object_next_reset
@@ -1,25 +1,41 @@
-set_object_next_reset()
 
-FUNKTION:
-	int set_object_next_reset(object ob, int zeit );
+set_object_next_reset()
+***********************
+
+
+FUNKTION
+========
+
+   int set_object_next_reset(object ob, int zeit );
 
 DEFINIERT IN: /secure/debug.c
 
-ARGUMENTE:
-	ob: Das Objekt, dess Reset gesetzt werden soll.
-  zeit: Zeit bis zum naechsten Reset von ob.
 
-FUNKTION:
-  Die Funktion ruft letztendlich set_next_reset() in <ob> auf und setzt daher
-  dessen Resetzeit auf einen neuen Wert. Dies ist zu Debugzwecken gedacht.
+ARGUMENTE
+=========
 
-  Die Benutzung ist nur fuer EM+ moeglich.
+         ob: Das Objekt, dess Reset gesetzt werden soll.
+   zeit: Zeit bis zum naechsten Reset von ob.
 
-RUECKGABEWERT:
-	Gibt den Rueckgabewert des set_next_reset()-Aufrufs in <ob> zurueck.
 
-SIEHE AUCH:
-	set_next_reset(E)
+FUNKTION
+========
+
+   Die Funktion ruft letztendlich set_next_reset() in <ob> auf und setzt daher
+   dessen Resetzeit auf einen neuen Wert. Dies ist zu Debugzwecken gedacht.
+
+   Die Benutzung ist nur fuer EM+ moeglich.
+
+
+RUECKGABEWERT
+=============
+
+   Gibt den Rueckgabewert des set_next_reset()-Aufrufs in <ob> zurueck.
+
+
+SIEHE AUCH
+==========
+
+   set_next_reset(E)
 
 10.10.2007, Zesstra
-
diff --git a/doc/lfun/shoot_dam b/doc/lfun/shoot_dam
index 5d82d02..f66be19 100644
--- a/doc/lfun/shoot_dam
+++ b/doc/lfun/shoot_dam
@@ -1,40 +1,63 @@
+
 shoot_dam()
+***********
 
-FUNKTION:
-    static int shoot_dam(mapping shoot)
 
-DEFINIERT IN:
-    /std/ranged_weapon.c
+FUNKTION
+========
 
-ARGUMENTE:
-    mapping shoot - Schussdaten
+   static int shoot_dam(mapping shoot)
 
-BESCHREIBUNG:
-    Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und berechnet
-    den Schaden der Waffe, basierend auf den P_SHOOTING_WC von Waffe und
-    Munition sowie der Geschicklichkeit des Schuetzen. HitFuncs der Munition
-    und Skills werden hier ebenfalls beruecksichtigt.
 
-RUECKGABEWERT:
-    Schaden. Ebenfalls in 'shoot' unter SI_SKILLDAMAGE aktualisiert.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    'shoot' enthaelt normalerweise folgende Eintraege:
-    * Key P_WEAPON:       die Schusswaffe
-    * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
-    * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
-    * Key P_WC:           P_SHOOTING_WC der Waffe
-    * Key P_SHOOTING_WC:  P_SHOOTING_WC der Munition
-    * Key P_AMMUNITION:   Munitionsobjekt (eventuell Unit)
-    * Key SI_ENEMY:       gueltigen Gegner
-    * Key SI_SKILLDAMAGE_TYPE:  Schaden (aus P_DAM_TYPE der Munition)
-    * Key SI_SKILLDAMAGE_MSG/2: Munitionsname
+   /std/ranged_weapon.c
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), cmd_shoot(L)
-    Skills:    UseSkill(L), SkillResTransfer(L)
-    Attribute: QueryAttribute
-    Sonstiges: fernwaffen, HitFunc
 
-28.Jul 2014 Gloinson
\ No newline at end of file
+ARGUMENTE
+=========
+
+   mapping shoot - Schussdaten
+
+
+BESCHREIBUNG
+============
+
+   Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und berechnet
+   den Schaden der Waffe, basierend auf den P_SHOOTING_WC von Waffe und
+   Munition sowie der Geschicklichkeit des Schuetzen. HitFuncs der Munition
+   und Skills werden hier ebenfalls beruecksichtigt.
+
+
+RUECKGABEWERT
+=============
+
+   Schaden. Ebenfalls in 'shoot' unter SI_SKILLDAMAGE aktualisiert.
+
+
+BEMERKUNGEN
+===========
+
+   'shoot' enthaelt normalerweise folgende Eintraege:
+   * Key P_WEAPON:       die Schusswaffe
+   * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
+   * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
+   * Key P_WC:           P_SHOOTING_WC der Waffe
+   * Key P_SHOOTING_WC:  P_SHOOTING_WC der Munition
+   * Key P_AMMUNITION:   Munitionsobjekt (eventuell Unit)
+   * Key SI_ENEMY:       gueltigen Gegner
+   * Key SI_SKILLDAMAGE_TYPE:  Schaden (aus P_DAM_TYPE der Munition)
+   * Key SI_SKILLDAMAGE_MSG/2: Munitionsname
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), cmd_shoot(L)
+   Skills:    UseSkill(L), SkillResTransfer(L)
+   Attribute: QueryAttribute
+   Sonstiges: fernwaffen, HitFunc
+
+28.Jul 2014 Gloinson
diff --git a/doc/lfun/short b/doc/lfun/short
index a9734c2..f7bb169 100644
--- a/doc/lfun/short
+++ b/doc/lfun/short
@@ -1,31 +1,53 @@
+
 short()
-FUNKTION:
-     public varargs string short();
+*******
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Inhalt der Property P_SHORT wird ausgewertet, mit ".\n"
-     abgeschlossen und zurueckgegeben.
+   public varargs string short();
 
-RUeCKGABEWERT:
-     Die Kurzbeschreibung als String oder 0, falls das Objekt unsichtbar
-     ist.
 
-BEMERKUNGEN:
-     Durch Ueberladen von short() lassen sich noch weitere Eigenschaften des
-     Objektes zeigen. Fackeln zeigen zum Beispiel an, ob sie brennen,
-     Ruestungen, ob sie angezogen sind und Waffen, ob sie gezueckt sind.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Aehnliches:	long()
-     Properties:	P_SHORT, P_INVIS
-     Sonstiges:		make_invlist()
+   /std/thing/description.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Der Inhalt der Property P_SHORT wird ausgewertet, mit ".\n"
+   abgeschlossen und zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Kurzbeschreibung als String oder 0, falls das Objekt unsichtbar
+   ist.
+
+
+BEMERKUNGEN
+===========
+
+   Durch Ueberladen von short() lassen sich noch weitere Eigenschaften des
+   Objektes zeigen. Fackeln zeigen zum Beispiel an, ob sie brennen,
+   Ruestungen, ob sie angezogen sind und Waffen, ob sie gezueckt sind.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        long()
+   Properties:        P_SHORT, P_INVIS
+   Sonstiges:         make_invlist()
+
 20.01.2015, Zesstra
-
diff --git a/doc/lfun/show_notify b/doc/lfun/show_notify
index ae09adc..0ce99ac 100644
--- a/doc/lfun/show_notify
+++ b/doc/lfun/show_notify
@@ -1,44 +1,73 @@
+
+show_notify()
+*************
+
 give_notify()
-FUNKTION:
-     void show_notify(object obj)
 
-DEFINIERT IN:
-     /std/living/put_and_get.c
 
-ARGUMENTE:
-     obj - dem Lebewesen gezeigtes Objekt
+FUNKTION
+========
 
-RUeCKGABEWERT:
-     keiner
+   void show_notify(object obj)
 
-BESCHREIBUNG:
-     Diese Funktion wird automatisch immer dann aufgerufen, wenn einem
-     Lebewesen (welches kein Spielercharakter ist) ein Objekt gezeigt wird.
-     Dies funktioniert nur dann, wenn der Standardbefehl der Spielershell
-     verwendet wird ("zeige <name> <gegenstand>"). Selbstgebautes "zeige"
-     funktioniert nicht.
 
-BEISPIEL:
-     Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
-     Item als Beweis der Erfuellung einer bestimmten Aufgabe vorgezeigt
-     wird. Folgendermassen kann dies realisiert werden:
+DEFINIERT IN
+============
 
-     void quest_ok(object obj) { ...
-       // z.B. Vernichtung des Questobjektes und Questtexte
-       // Questbelohnung und Questanerkennung, etc.
-     }
+   /std/living/put_and_get.c
 
-     void show_notify(object obj) {
-       if(obj->id("\nquestitem")) // Ist das das geforderte Questobjekt?
-         quest_ok(obj);
-     }
 
-BEMERKUNGEN:
-     Da es nur um das Vorzeigen von Gegenstaenden geht, die nicht den 
-     Besitzer wechseln, sind Mechanismen wie P_REJECT in diesem Fall 
-     nicht erforderlich.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     give_notify(), /std/npc/put_and_get.c, /std/living/put_and_get.c
+   obj - dem Lebewesen gezeigtes Objekt
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird automatisch immer dann aufgerufen, wenn einem
+   Lebewesen (welches kein Spielercharakter ist) ein Objekt gezeigt wird.
+   Dies funktioniert nur dann, wenn der Standardbefehl der Spielershell
+   verwendet wird ("zeige <name> <gegenstand>"). Selbstgebautes "zeige"
+   funktioniert nicht.
+
+
+BEISPIEL
+========
+
+   Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
+   Item als Beweis der Erfuellung einer bestimmten Aufgabe vorgezeigt
+   wird. Folgendermassen kann dies realisiert werden:
+
+   void quest_ok(object obj) { ...
+     // z.B. Vernichtung des Questobjektes und Questtexte
+     // Questbelohnung und Questanerkennung, etc.
+   }
+
+   void show_notify(object obj) {
+     if(obj->id("\nquestitem")) // Ist das das geforderte Questobjekt?
+       quest_ok(obj);
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Da es nur um das Vorzeigen von Gegenstaenden geht, die nicht den
+   Besitzer wechseln, sind Mechanismen wie P_REJECT in diesem Fall
+   nicht erforderlich.
+
+
+SIEHE AUCH
+==========
+
+   give_notify(), /std/npc/put_and_get.c, /std/living/put_and_get.c
 
 22. Oktober 2013 Arathorn
diff --git a/doc/lfun/spellbook/AddSpell b/doc/lfun/spellbook/AddSpell
index 78686d1..65f0df8 100644
--- a/doc/lfun/spellbook/AddSpell
+++ b/doc/lfun/spellbook/AddSpell
@@ -1,54 +1,78 @@
+
 AddSpell()
-FUNKTION:
-    varargs int AddSpell(string verb, int kosten, mixed ski) 
+**********
 
-DEFINIERT IN:
-    /std/spellbook.c
 
-ARGUMENTE:
-    string verb     Name des Spells
-    int kosten      normale Kosten (Grundkosten)
-    mixed ski       Skillmapping mit allen Eintraegen zum Spell
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Addiert einen Eintrag fuer den Spell im Spellbook. Wenn dieser
-    Spell direkt vom Spieler (SI_SPELLBOOK) oder (normalerweise)
-    ueber ein Gildenobjekt aufgerufen wird, wird das Mapping auf
-    die Skillinformationen aus Spieler und Gilde addiert und
-    beeinflusst damit den Aufruf der letztlichen Spellfunktion.
+   varargs int AddSpell(string verb, int kosten, mixed ski)
 
-BEMERKUNGEN:
-    Siehe das Verhalten von QuerySpell (gilde) zum Zusammenfuegen
-    der AddSpell-Informationen aus Gilde und Spellbook. Relevant
-    zB fuer Lernrestriktionen.
 
-BEISPIEL:
-    AddSpell("kampfschrei", 30,
-         ([SI_SKILLRESTR_LEARN:([P_LEVEL:13]),
-           SI_MAGIC_TYPE: ({MT_PSYCHO}),
-           SI_SPELL:      ([
-             SP_NAME: "Kampfschrei",
-             SP_SHOW_DAMAGE:
-               ({({ -1, "Dir geschieht jedoch nichts.",
-                   "@WEM1 geschieht jedoch nichts.",
-                   "@WEM1 geschieht jedoch nichts." }),
-                 ({  0, "Du kannst darueber aber nur lachen.",
-                   "@WER1 kann darueber aber nur lachen.",
-                   "@WER1 kann darueber aber nur lachen." }),
-                 ({ 10, "Dir droehnen die Ohren.",
-                   "@WEM1 droehnen die Ohren.",
-                   "@WEM1 droehnen die Ohren." })
-               })])
-         ]));
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
-    * Verwalten:      QuerySpell
-    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
-                      TryGlobalAttackSpell
-    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
-    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:        UseSpell, UseSkill
-    * sonstig:        spruchermuedung, skill_info_liste
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   string verb     Name des Spells
+   int kosten      normale Kosten (Grundkosten)
+   mixed ski       Skillmapping mit allen Eintraegen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Addiert einen Eintrag fuer den Spell im Spellbook. Wenn dieser
+   Spell direkt vom Spieler (SI_SPELLBOOK) oder (normalerweise)
+   ueber ein Gildenobjekt aufgerufen wird, wird das Mapping auf
+   die Skillinformationen aus Spieler und Gilde addiert und
+   beeinflusst damit den Aufruf der letztlichen Spellfunktion.
+
+
+BEMERKUNGEN
+===========
+
+   Siehe das Verhalten von QuerySpell (gilde) zum Zusammenfuegen
+   der AddSpell-Informationen aus Gilde und Spellbook. Relevant
+   zB fuer Lernrestriktionen.
+
+
+BEISPIEL
+========
+
+   AddSpell("kampfschrei", 30,
+        ([SI_SKILLRESTR_LEARN:([P_LEVEL:13]),
+          SI_MAGIC_TYPE: ({MT_PSYCHO}),
+          SI_SPELL:      ([
+            SP_NAME: "Kampfschrei",
+            SP_SHOW_DAMAGE:
+              ({({ -1, "Dir geschieht jedoch nichts.",
+                  "@WEM1 geschieht jedoch nichts.",
+                  "@WEM1 geschieht jedoch nichts." }),
+                ({  0, "Du kannst darueber aber nur lachen.",
+                  "@WER1 kann darueber aber nur lachen.",
+                  "@WER1 kann darueber aber nur lachen." }),
+                ({ 10, "Dir droehnen die Ohren.",
+                  "@WEM1 droehnen die Ohren.",
+                  "@WEM1 droehnen die Ohren." })
+              })])
+        ]));
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
 
 5. Okt 2011 Gloinson
diff --git a/doc/lfun/spellbook/Erfolg b/doc/lfun/spellbook/Erfolg
index 625bf4f..6338e6d 100644
--- a/doc/lfun/spellbook/Erfolg
+++ b/doc/lfun/spellbook/Erfolg
@@ -1,28 +1,46 @@
+
 Erfolg()
-FUNKTION:
-    void Erfolg(object caster, string spell, mapping sinfo)
+********
 
-DEFINIERT IN:
-    /std/spellbook.c
 
-ARGUMENTE:
-    object caster    Spell sprechender Spieler
-    string spell     Spellname
-    mapping sinfo    Spell-Info-Mapping mit allen Informationen
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Wird bei Erfolg eines Spells gerufen. Ruft SpellInform() am
-    Environment.
+   void Erfolg(object caster, string spell, mapping sinfo)
 
-SIEHE AUCH:
-    Sonstiges:        SpellInform
-    Spellbook Lernen: Learn, SpellSuccess, Misserfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
-                      TryGlobalAttackSpell
-    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
-    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:        UseSpell, UseSkill
-    * sonstig:        spruchermuedung, skill_info_liste
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster    Spell sprechender Spieler
+   string spell     Spellname
+   mapping sinfo    Spell-Info-Mapping mit allen Informationen
+
+
+BESCHREIBUNG
+============
+
+   Wird bei Erfolg eines Spells gerufen. Ruft SpellInform() am
+   Environment.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges:        SpellInform
+   Spellbook Lernen: Learn, SpellSuccess, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/spellbook/Learn b/doc/lfun/spellbook/Learn
index 4e2431a..8de112e 100644
--- a/doc/lfun/spellbook/Learn
+++ b/doc/lfun/spellbook/Learn
@@ -1,33 +1,54 @@
+
 Learn()
-FUNKTION:
-    void Learn(object caster, string spell, mapping sinfo)
+*******
 
-DEFINIERT IN:
-    /std/spellbook.c
 
-ARGUMENTE:
-    object caster   Derjenige, der den Spruch spricht.
-    string spell    Der gesprochene Spell
-    mapping sinfo   Mapping mit allen moeglichen Informationen zum Spell
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Diese Funktion wird von der Funktion "Misserfolg" aus dem 
-    Spellbook aufgerufen. Hier lernt der Spieler den Spruch, der 
-    nicht geglueckt ist.
+   void Learn(object caster, string spell, mapping sinfo)
 
-BEMERKUNGEN:
-    Kann auch ueberschrieben werden, wenn man komplexe Lern-Aenderungen
-    vornehmen will. Andere Attribute sind ueber SI_LEARN_ATTRIBUTE
-    setzbar.
 
-SIEHE AUCH:
-    Spellbook Lernen: SpellSuccess, Erfolg, Misserfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
-                      TryGlobalAttackSpell
-    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
-    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:        UseSpell, UseSkill
-    * sonstig:        spruchermuedung, skill_info_liste
+DEFINIERT IN
+============
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster   Derjenige, der den Spruch spricht.
+   string spell    Der gesprochene Spell
+   mapping sinfo   Mapping mit allen moeglichen Informationen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von der Funktion "Misserfolg" aus dem
+   Spellbook aufgerufen. Hier lernt der Spieler den Spruch, der
+   nicht geglueckt ist.
+
+
+BEMERKUNGEN
+===========
+
+   Kann auch ueberschrieben werden, wenn man komplexe Lern-Aenderungen
+   vornehmen will. Andere Attribute sind ueber SI_LEARN_ATTRIBUTE
+   setzbar.
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/spellbook/Misserfolg b/doc/lfun/spellbook/Misserfolg
index 7ad530b..5ffe8de 100644
--- a/doc/lfun/spellbook/Misserfolg
+++ b/doc/lfun/spellbook/Misserfolg
@@ -1,53 +1,78 @@
+
 Misserfolg()
-FUNKTION:
-    void Misserfolg(object caster, string spell, mapping sinfo) 
+************
 
-DEFINIERT IN:
-    /std/spellbook.c
 
-ARGUMENTE:
-    object caster    Spell sprechender Spieler
-    string spell     Spellname
-    mapping sinfo    Spell-Info-Mapping mit allen Informationen
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Wird bei Misserfolg eines Spells im Spellbook aufgerufen und
-    ruft die Lernfunktion Learn() nach einer Fehlermeldung.
-    
-    Kann ueberschrieben werden, um die Meldungen anzupassen.
+   void Misserfolg(object caster, string spell, mapping sinfo)
 
-BEISPIEL:
-    // Misserfolge im Klerus mit angepassten Meldungen
-    void Misserfolg(object caster, string spell, mapping sinfo) {
-      switch(spell) {
-        case "begrabe":
-          tell_object(caster, BS(
-            "Du begraebst Deine Hoffnungen, dass Du diese Anrufung jemals "
-            "perfekt beherrschen wirst."));
-          tell_room(environment(caster),
-            caster->Name(WER)+" tritt die Leiche lustlos.\n", ({caster}));
-          break;
-        case "blitz":
-        [...]
-      }
-        
-      int old_abil = sinfo[SI_SKILLABILITY];
-      Learn(caster, spell, sinfo);
-      int new_abil = caster->QuerySkillAbility(spell);
-      if (old_abil < new_abil)
-        tell_object(caster, "Die Goetter schenken Dir eine Erleuchtung.\n");
-      else
-        tell_object(caster, "Leider lernst Du nicht aus Deinem Fehler.\n"); 
-    }
 
-SIEHE AUCH:
-    Spellbook Lernen: Learn, SpellSuccess, Erfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
-                      TryGlobalAttackSpell
-    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
-    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:        UseSpell, UseSkill
-    * sonstig:        spruchermuedung, skill_info_liste
+DEFINIERT IN
+============
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster    Spell sprechender Spieler
+   string spell     Spellname
+   mapping sinfo    Spell-Info-Mapping mit allen Informationen
+
+
+BESCHREIBUNG
+============
+
+   Wird bei Misserfolg eines Spells im Spellbook aufgerufen und
+   ruft die Lernfunktion Learn() nach einer Fehlermeldung.
+
+
+
+   Kann ueberschrieben werden, um die Meldungen anzupassen.
+
+
+BEISPIEL
+========
+
+   // Misserfolge im Klerus mit angepassten Meldungen
+   void Misserfolg(object caster, string spell, mapping sinfo) {
+     switch(spell) {
+       case "begrabe":
+         tell_object(caster, BS(
+           "Du begraebst Deine Hoffnungen, dass Du diese Anrufung jemals "
+           "perfekt beherrschen wirst."));
+         tell_room(environment(caster),
+           caster->Name(WER)+" tritt die Leiche lustlos.\n", ({caster}));
+         break;
+       case "blitz":
+       [...]
+     }
+
+
+
+     int old_abil = sinfo[SI_SKILLABILITY];
+     Learn(caster, spell, sinfo);
+     int new_abil = caster->QuerySkillAbility(spell);
+     if (old_abil < new_abil)
+       tell_object(caster, "Die Goetter schenken Dir eine Erleuchtung.\n");
+     else
+       tell_object(caster, "Leider lernst Du nicht aus Deinem Fehler.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/spellbook/QuerySpell b/doc/lfun/spellbook/QuerySpell
index 0cadec2..963d30c 100644
--- a/doc/lfun/spellbook/QuerySpell
+++ b/doc/lfun/spellbook/QuerySpell
@@ -1,26 +1,46 @@
+
 QuerySpell()
-FUNKTION:
-    mapping QuerySpell(string spell)
+************
 
-DEFINIERT IN:
-    /std/spellbook.c
 
-ARGUMENTE:
-    string spell    Name des Spells
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Gibt das Spellmapping aus P_SB_SPELLS fuer diesen Spell zurueck.
-    
-    Hier enthaelt QuerySpell nur die Spellbook-Informationen.
+   mapping QuerySpell(string spell)
 
-SIEHE AUCH:
-    Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
-    * Verwalten:      AddSpell
-    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
-                      TryGlobalAttackSpell
-    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
-    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:        UseSpell, UseSkill
-    * sonstig:        spruchermuedung, skill_info_liste
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   string spell    Name des Spells
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Spellmapping aus P_SB_SPELLS fuer diesen Spell zurueck.
+
+
+
+   Hier enthaelt QuerySpell nur die Spellbook-Informationen.
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/spellbook/SpellSuccess b/doc/lfun/spellbook/SpellSuccess
index ec44884..564c948 100644
--- a/doc/lfun/spellbook/SpellSuccess
+++ b/doc/lfun/spellbook/SpellSuccess
@@ -1,31 +1,52 @@
+
 SpellSuccess()
-FUNKTION:
-    int SpellSuccess(object caster, mapping sinfo)
+**************
 
-DEFINIERT IN:
-    /std/spellbook.c
 
-ARGUMENTE:
-    object caster    Spell sprechender Spieler
-    mapping sinfo    Spell-Info-Mapping mit allen Informationen
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Berechnet den Erfolg der Anwendung eines Spells aus seiner
-    SI_SKILLABILITY und dem Skill SK_CASTING im Spieler. Laesst
-    den Spieler bei besonders gutem Gelingen SK_CASTING lernen.
+   int SpellSuccess(object caster, mapping sinfo)
 
-BEMERKUNGEN:
-    SK_CASTING muss fuer die SK_CASTING-Boni beherrscht werden.
-    Das ist zB im Klerus ab bestimmtem Level der Fall.
 
-SIEHE AUCH:
-    Spellbook Lernen: Learn, Erfolg, Misserfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
-                      TryGlobalAttackSpell
-    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
-    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:        UseSpell, UseSkill
-    * sonstig:        spruchermuedung, skill_info_liste
+DEFINIERT IN
+============
 
-5. Okt 2011 Gloinson
\ No newline at end of file
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster    Spell sprechender Spieler
+   mapping sinfo    Spell-Info-Mapping mit allen Informationen
+
+
+BESCHREIBUNG
+============
+
+   Berechnet den Erfolg der Anwendung eines Spells aus seiner
+   SI_SKILLABILITY und dem Skill SK_CASTING im Spieler. Laesst
+   den Spieler bei besonders gutem Gelingen SK_CASTING lernen.
+
+
+BEMERKUNGEN
+===========
+
+   SK_CASTING muss fuer die SK_CASTING-Boni beherrscht werden.
+   Das ist zB im Klerus ab bestimmtem Level der Fall.
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/lfun/spellbook/TryAttackSpell b/doc/lfun/spellbook/TryAttackSpell
index 76d75b8..d66684e 100644
--- a/doc/lfun/spellbook/TryAttackSpell
+++ b/doc/lfun/spellbook/TryAttackSpell
@@ -1,48 +1,57 @@
-** gilden-doku
- o TryAttackSpell(opfer,schaden,typen,is_spell,caster,info)
-   Versucht den Angriffs-Spruch auf den Gegner anzuwenden. Die
-   mittleren 4 Werte sind die, die auch bei Defend uebergeben werden.
-   Dabei wird die Abwehrfaehigkeit des Gegners gegen Magie und das
-   Skill-Attribut SA_DAMAGE automatisch beruecksichtigt. 
 
-FUNKTION:
+TryAttackSpell()
+****************
+
+** gilden-doku
+   o TryAttackSpell(opfer,schaden,typen,is_spell,caster,info)
+      Versucht den Angriffs-Spruch auf den Gegner anzuwenden. Die
+      mittleren 4 Werte sind die, die auch bei Defend uebergeben
+      werden. Dabei wird die Abwehrfaehigkeit des Gegners gegen Magie
+      und das Skill-Attribut SA_DAMAGE automatisch beruecksichtigt.
+
+
+FUNKTION
+========
 
 int TryAttackSpell(object victim, int damage, mixed dtypes,
-                   mixed is_spell, object caster, mapping sinfo)
+   mixed is_spell, object caster, mapping sinfo)
 
 
-ARGUMENTE:
+ARGUMENTE
+=========
 
-        victim   : Das arme Opfer.
-        damage   : Der Schaden.
-        dtypes   : Die Schadensarten.
-	      is_spell : Ist es ein Spell? Werden noch Spezielle Parameter 
-	           uebergeben (als mapping) ?
-        caster   : Derjenige, der den Spruch spricht.
-        sinfo    : Mapping mit allen moeglichen Informationen zum Spell
+   victim   : Das arme Opfer.
+   damage   : Der Schaden.
+   dtypes   : Die Schadensarten.
+         is_spell : Ist es ein Spell? Werden noch Spezielle Parameter
+              uebergeben (als mapping) ?
+   caster   : Derjenige, der den Spruch spricht.
+   sinfo    : Mapping mit allen moeglichen Informationen zum Spell
 
 
-BESCHREIBUNG:
+BESCHREIBUNG
+============
 
-	Diese Funktion wird vom Spellbook aufgerufen, wenn der Spieler
-	einen Angriffsspell gemacht hat und damit Schaden anrichten will.
+   Diese Funktion wird vom Spellbook aufgerufen, wenn der Spieler
+   einen Angriffsspell gemacht hat und damit Schaden anrichten will.
 
 
-RUECKGABEWERT:
+RUECKGABEWERT
+=============
 
-	Der Wert, der vom Defend() des Gegners zurueckgeliefert wird.
+   Der Wert, der vom Defend() des Gegners zurueckgeliefert wird.
 
 
-BEMERKUNGEN:
+BEMERKUNGEN
+===========
 
-	Zu erst wird ueberprueft, ob das Ziel ueberhaupt angreifbar ist. Dies
-	verhindert das ueben von Spells an unangreifbaren NPCs.
-	Als naechstes wird die Faehigkeit, Spells abzuwehren ueberprueft.
-	Falls beide Abfragen ok sind, wird Defend aufgerufen.
-
+   Zu erst wird ueberprueft, ob das Ziel ueberhaupt angreifbar ist. Dies
+   verhindert das ueben von Spells an unangreifbaren NPCs.
+   Als naechstes wird die Faehigkeit, Spells abzuwehren ueberprueft.
+   Falls beide Abfragen ok sind, wird Defend aufgerufen.
 
 Siehe auch:
 
 TryDefaultAttackSpell (to be written)
-------------------------------------------------------------------------------
+
 07.10.2007, Zesstra
diff --git a/doc/lfun/trigger_sensitive_attack b/doc/lfun/trigger_sensitive_attack
index 129b38c..f290fc8 100644
--- a/doc/lfun/trigger_sensitive_attack
+++ b/doc/lfun/trigger_sensitive_attack
@@ -1,75 +1,97 @@
+
 trigger_sensitive_attack()
+**************************
 
-FUNKTION:
-     varargs void trigger_sensitive_attack(object enemy, string key, int
-     dam, mixed spell, mixed *options);
 
-DEFINIERT IN:
-     eigenen sensitiven Objekten, wird aufgerufen von
-     /std/living/inventory.c
+FUNKTION
+========
 
-ARGUMENTE:
-     enemy
-          Der Gegner, der die Aktion ausgeloest hat.
-     key
-          Der ausloesende Schadenstyp.
-     dam
-          Der angerichtete Schaden.
-     spell
-          Wie bei Defend().
-     options
-          Array mit den in P_SENSITIVE angegebenen Optionen fuer diese
-          Aktion.
+   varargs void trigger_sensitive_attack(object enemy, string key, int
+   dam, mixed spell, mixed *options);
 
-BESCHREIBUNG:
-     Wenn der bei einem Angriff zugefuegte Schaden den in P_SENSITIVE
-     angegebenen Grenzwert uebersteigt sowie der als Schluessel angegebene
-     Schadenstyp in den Schaedenstypen des Angriffes vorkommt, wird diese
-     Funktion aufgerufen und kann entsprechend reagieren.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Eine Fackel, die sich bei Feuerattacken selbst entzuendet und bei
-     Wasserattacken verloescht, koennte man wie folgt implementieren:
+   eigenen sensitiven Objekten, wird aufgerufen von
+   /std/living/inventory.c
 
-     inherit "/std/lightsource.c"
 
-     #include <properties.h>
-     #include <sensitive.h>
-     #include <combat.h>
+ARGUMENTE
+=========
 
-     create()
-     {
-       ::create();
+   enemy
+        Der Gegner, der die Aktion ausgeloest hat.
+   key
+        Der ausloesende Schadenstyp.
+   dam
+        Der angerichtete Schaden.
+   spell
+        Wie bei Defend().
+   options
+        Array mit den in P_SENSITIVE angegebenen Optionen fuer diese
+        Aktion.
 
-       SetProp(...); // die ueblichen Eigenschaften definieren
 
-       SetProp(P_SENSITIVE,
-           //  Ereignis          Key       Grenze (keine Optionen)
-         ({ ({ SENSITIVE_ATTACK, DT_FIRE,  100 }),
-            ({ SENSITIVE_ATTACK, DT_WATER, 100 }) }) );
+BESCHREIBUNG
+============
+
+   Wenn der bei einem Angriff zugefuegte Schaden den in P_SENSITIVE
+   angegebenen Grenzwert uebersteigt sowie der als Schluessel angegebene
+   Schadenstyp in den Schaedenstypen des Angriffes vorkommt, wird diese
+   Funktion aufgerufen und kann entsprechend reagieren.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Eine Fackel, die sich bei Feuerattacken selbst entzuendet und bei
+   Wasserattacken verloescht, koennte man wie folgt implementieren:
+
+   inherit "/std/lightsource.c"
+
+   #include <properties.h>
+   #include <sensitive.h>
+   #include <combat.h>
+
+   create()
+   {
+     ::create();
+
+     SetProp(...); // die ueblichen Eigenschaften definieren
+
+     SetProp(P_SENSITIVE,
+         //  Ereignis          Key       Grenze (keine Optionen)
+       ({ ({ SENSITIVE_ATTACK, DT_FIRE,  100 }),
+          ({ SENSITIVE_ATTACK, DT_WATER, 100 }) }) );
+   }
+
+   varargs void
+   trigger_sensitive_attack(object enemy, string key,
+                            int dam, mixed spell)
+   {
+     // Es soll nicht verschwiegen werden, dass das Entzuenden und
+     // Loeschen einer Lichtquelle so leider nicht funktioniert...
+     if (key == DT_FIRE && !QueryProp(P_LIGHTED)) {
+       SetProp(P_LIGHTED, 1);
+       tell_object(environment(), "Die Fackel faengt Feuer.\n");
      }
-
-     varargs void
-     trigger_sensitive_attack(object enemy, string key,
-                              int dam, mixed spell)
-     {
-       // Es soll nicht verschwiegen werden, dass das Entzuenden und
-       // Loeschen einer Lichtquelle so leider nicht funktioniert...
-       if (key == DT_FIRE && !QueryProp(P_LIGHTED)) {
-         SetProp(P_LIGHTED, 1);
-         tell_object(environment(), "Die Fackel faengt Feuer.\n");
-       }
-       else if (key == DT_WATER && QueryProp(P_LIGHTED)) {
-         SetProp(P_LIGHTED, 0);
-         tell_object(environment(), "Die Fackel verlischt.\n");
-       }
+     else if (key == DT_WATER && QueryProp(P_LIGHTED)) {
+       SetProp(P_LIGHTED, 0);
+       tell_object(environment(), "Die Fackel verlischt.\n");
      }
+   }
 
-SIEHE AUCH:
-     trigger_sensitive_inv(), sensitive Objekte
 
-----------------------------------------------------------------------------
+SIEHE AUCH
+==========
+
+   trigger_sensitive_inv(), sensitive Objekte
+
 Last modified: Sun May 19 15:56:25 1996 by Wargon
diff --git a/doc/lfun/trigger_sensitive_inv b/doc/lfun/trigger_sensitive_inv
index a417ebe..27e26fb 100644
--- a/doc/lfun/trigger_sensitive_inv
+++ b/doc/lfun/trigger_sensitive_inv
@@ -1,40 +1,61 @@
+
 trigger_sensitive_inv()
+***********************
 
-FUNKTION:
-     varargs void trigger_sensitive_inv(object ob, string key, int wert,
-     mixed *optionen1, mixed *optionen2);
 
-DEFINIERT IN:
-     eigenen Objekten, wird aufgerufen von /std/container/inventory.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob
-          Das ausloesende Objekt
-     key
-          Der Schluessel, der die Aktion ausloeste.
-     wert
-          Der Grenzwert des ausloesenden Objektes.
-     optionen1
-          Die Optionen des ausloesenden Objektes.
-     optionen2
-          Die Optionen des reagierenden Objektes.
+   varargs void trigger_sensitive_inv(object ob, string key, int wert,
+   mixed *optionen1, mixed *optionen2);
 
-BESCHREIBUNG:
-     Diese Funktion wird in Objekten des sensitiven Typs SENSITIVE_INVENTORY
-     aufgerufen, wenn sie in Kontakt mit Objekten des Typs
-     SENSITIVE_INVENTORY_TRIGGER treten, die den gleichen Schluessel
-     aufweisen und einen hoeheren Grenzwert haben.
 
-     Anhand der Parameter koennen dann die noetigen Aktionen ausgeloest
-     werden.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     keiner
+   eigenen Objekten, wird aufgerufen von /std/container/inventory.c
 
-BEISPIELE:
 
-SIEHE AUCH:
-     trigger_sensitive_attack(), sensitive Objekte
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   ob
+        Das ausloesende Objekt
+   key
+        Der Schluessel, der die Aktion ausloeste.
+   wert
+        Der Grenzwert des ausloesenden Objektes.
+   optionen1
+        Die Optionen des ausloesenden Objektes.
+   optionen2
+        Die Optionen des reagierenden Objektes.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in Objekten des sensitiven Typs SENSITIVE_INVENTORY
+   aufgerufen, wenn sie in Kontakt mit Objekten des Typs
+   SENSITIVE_INVENTORY_TRIGGER treten, die den gleichen Schluessel
+   aufweisen und einen hoeheren Grenzwert haben.
+
+   Anhand der Parameter koennen dann die noetigen Aktionen ausgeloest
+   werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+
+SIEHE AUCH
+==========
+
+   trigger_sensitive_attack(), sensitive Objekte
+
 Last modified: Wed May 8 10:26:10 1996 by Wargon
diff --git a/doc/lfun/wield_me b/doc/lfun/wield_me
index 427504e..d1aa842 100644
--- a/doc/lfun/wield_me
+++ b/doc/lfun/wield_me
@@ -1,10 +1,17 @@
+
 wield_me()
+**********
 
-BEMERKUNGEN:
-     wield_me wurde durch DoWield ersetzt.
 
-SIEHE AUCH:
-     DoWieldFunc(), /std/weapon.c
+BEMERKUNGEN
+===========
 
-----------------------------------------------------------------------------
+   wield_me wurde durch DoWield ersetzt.
+
+
+SIEHE AUCH
+==========
+
+   DoWieldFunc(), /std/weapon.c
+
 Last modified: Wed Apr 08 10:25:00 2004 by Muadib
diff --git a/doc/lfuns-gilde b/doc/lfuns-gilde
new file mode 100644
index 0000000..b56c734
--- /dev/null
+++ b/doc/lfuns-gilde
@@ -0,0 +1,3 @@
+
+Verzeichnis der lfuns speziell in/für Gilden
+********************************************
diff --git a/doc/lfuns-master b/doc/lfuns-master
new file mode 100644
index 0000000..7ca731d
--- /dev/null
+++ b/doc/lfuns-master
@@ -0,0 +1,13 @@
+
+Verzeichnis der lfuns in master()
+*********************************
+
+* AddWizardForUID()
+
+* QueryUIDAlias()
+
+* QueryUIDsForWizard()
+
+* QueryWizardsForUID()
+
+* RemoveWizardFromUID()
diff --git a/doc/lfuns-obsolet b/doc/lfuns-obsolet
new file mode 100644
index 0000000..ac47c41
--- /dev/null
+++ b/doc/lfuns-obsolet
@@ -0,0 +1,29 @@
+
+Verzeichnis der veralteten lfuns
+********************************
+
+* AddHpHook()
+
+* AddInsertHook()
+
+* ModifySkillAttributeOld()
+
+* NotifyGiveQuest()
+
+* NotifyHpChange()
+
+* QueryEnemy()
+
+* QueryInsertHooks()
+
+* QueryOptQP()
+
+* RemoveHpHook()
+
+* RemoveInsertHook()
+
+* TestAttributeLock()
+
+* extra_look()
+
+* paramove()
diff --git a/doc/make-man.sh b/doc/make-man.sh
index 12f2d03..556f98b 100755
--- a/doc/make-man.sh
+++ b/doc/make-man.sh
@@ -6,8 +6,8 @@
 export MRSTDIR=$MDOCDIR/sphinx
 export MHTMLDIR=$MDOCDIR/sphinx/_build/html
 export MTEXTDIR=$MDOCDIR/sphinx/_build/text
-export MMANDIR=$MDOCDIR/sphinx/man/
-export MANWIDTH=78
+export MMANDIR=$MDOCDIR//
+#export MANWIDTH=78
 
 cd $MRSTDIR
 
@@ -21,6 +21,6 @@
   DIR=`dirname ${FILE}`
   BASE=`basename ${FILE} .txt`
   mkdir -p ${MMANDIR}/${DIR}
-  cp $FILE ${MMANDIR}/${DIR}/${BASE}
+  cp -av $FILE ${MMANDIR}/${DIR}/${BASE}
 done
 
diff --git a/doc/missing b/doc/missing
deleted file mode 100644
index ea65a92..0000000
--- a/doc/missing
+++ /dev/null
@@ -1,8 +0,0 @@
-Fehlende Manpages, die mal geschrieben werden muessten:
-======================================================
-
-* P_MAGIC_RESISTANCE_OFFSET
-* P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK
-* P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-* P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
-* 
diff --git a/doc/props-gilden b/doc/props-gilden
new file mode 100644
index 0000000..df0782d
--- /dev/null
+++ b/doc/props-gilden
@@ -0,0 +1,17 @@
+
+Verzeichnis der Gilden-Properties
+*********************************
+
+* P_GLOVE_FINGERLESS
+
+* P_Z_AUTOSHIELD
+
+* P_Z_INFO
+
+* P_Z_NO_MATERIAL
+
+* P_Z_NO_NOCONN
+
+* P_Z_NO_SPELL_SUPPORT
+
+* kaempferboni
diff --git a/doc/props-liste b/doc/props-liste
new file mode 100644
index 0000000..f63a1cf
--- /dev/null
+++ b/doc/props-liste
@@ -0,0 +1,937 @@
+
+Propertyliste
+*************
+
+
+Verzeichnis der dokumentierten Properties:
+==========================================
+
+* P_ABILITIES
+
+* P_AC
+
+* P_ACCEPT_PEACE
+
+* P_ACHATS
+
+* P_ACHAT_CHANCE
+
+* P_ACTUAL_NOTIFY_FAIL
+
+* P_ADJECTIVES
+
+* P_AERIAL_HELPERS
+
+* P_AGE
+
+* P_AGGRESSIVE
+
+* P_ALCOHOL
+
+* P_ALCOHOL_DELAY
+
+* P_ALC_FULL_MSG
+
+* P_ALIGN
+
+* P_ALLOWED_SHADOW
+
+* P_AMMUNITION
+
+* P_AMOUNT
+
+* P_AQUATIC_HELPERS
+
+* P_ARMOURS
+
+* P_ARMOUR_TYPE
+
+* P_ARRIVEMSG
+
+* P_ARTICLE
+
+* P_ATTACK_BUSY
+
+* P_ATTRIBUTES
+
+* P_ATTRIBUTES_MODIFIER
+
+* P_ATTRIBUTES_OFFSETS
+
+* P_AUTH_INFO
+
+* P_AUTOLOAD
+
+* P_AUTOLOADOBJ
+
+* P_AVATAR_URI
+
+* P_AVERAGE_SIZE
+
+* P_AVERAGE_WEIGHT
+
+* P_AWAY
+
+* P_BAD_MSG
+
+* P_BLIND
+
+* P_BODY
+
+* P_BRIEF
+
+* P_BUFFER
+
+* P_BUY_ONLY_PLANTS
+
+* P_CALLED_FROM_IP
+
+* P_CAN_FLAGS
+
+* P_CAP_NAME
+
+* P_CARRIED_VALUE
+
+* P_CHATS
+
+* P_CHAT_CHANCE
+
+* P_CLASS
+
+* P_CLOCKMSG
+
+* P_CLONER
+
+* P_CLONE_MSG
+
+* P_CLONE_TIME
+
+* P_CLOTHING
+
+* P_CMSG
+
+* P_CNT_STATUS
+
+* P_COMBATCMDS
+
+* P_COMMANDS
+
+* P_COMPILER_PATH
+
+* P_CONSUME_MSG
+
+* P_CONTAINER
+
+* P_CONTENTS
+
+* P_CORPSE
+
+* P_CURRENTDIR
+
+* P_CURSED
+
+* P_DAMAGED
+
+* P_DAMAGE_MSG
+
+* P_DAM_DESC
+
+* P_DAM_TYPE
+
+* P_DEADS
+
+* P_DEAF
+
+* P_DEATH_MSG
+
+* P_DEATH_SPONSORED_BY
+
+* P_DEFAULT_GUILD
+
+* P_DEFAULT_NOTIFY_FAIL
+
+* P_DEFENDERS
+
+* P_DEFEND_FUNC
+
+* P_DEFUEL_AMOUNT_DRINK
+
+* P_DEFUEL_AMOUNT_FOOD
+
+* P_DEFUEL_LIMIT_DRINK
+
+* P_DEFUEL_LIMIT_FOOD
+
+* P_DEFUEL_TIME_DRINK
+
+* P_DEFUEL_TIME_FOOD
+
+* P_DEPARTMSG
+
+* P_DESCRIPTION
+
+* P_DESTROY_BAD
+
+* P_DESTRUCT_MSG
+
+* P_DETAILS
+
+* P_DIE_MSG
+
+* P_DISABLE_ATTACK
+
+* P_DISABLE_COMMANDS
+
+* P_DISTRIBUTION
+
+* P_DMSG
+
+* P_DOMAIN
+
+* P_DOOR_INFOS
+
+* P_DO_DESTRUCT
+
+* P_DRINK
+
+* P_DRINK_DELAY
+
+* P_DRINK_FULL_MSG
+
+* P_DROP_MSG
+
+* P_EARMUFFS
+
+* P_EATER_MSG
+
+* P_EFFECTIVE_AC
+
+* P_EFFECTIVE_WC
+
+* P_EMPTY_MSG
+
+* P_EMPTY_PROPS
+
+* P_ENABLE_IN_ATTACK_OUT
+
+* P_ENEMY_DAMAGE
+
+* P_ENEMY_DEATH_SEQUENCE
+
+* P_ENTERCMDS
+
+* P_ENTERFAIL
+
+* P_ENTERMSG
+
+* P_ENV_MSG
+
+* P_ENV_TOO_HEAVY_MSG
+
+* P_EQUIP_TIME
+
+* P_EVAL_FACTORS
+
+* P_EVAL_OFFSETS
+
+* P_EXITS
+
+* P_EXTRA_LOOK
+
+* P_FAO
+
+* P_FAO_PORTALS
+
+* P_FISH
+
+* P_FLAGS
+
+* P_FOLLOW_SILENT
+
+* P_FOOD
+
+* P_FOOD_DELAY
+
+* P_FOOD_FULL_MSG
+
+* P_FORCE_MURDER_MSG
+
+* P_FREE_HANDS
+
+* P_FRIEND
+
+* P_FROG
+
+* P_FUEL
+
+* P_FUNC_MSG
+
+* P_FW_ALWAYS_READABLE
+
+* P_FW_UNDERSTAND
+
+* P_GENDER
+
+* P_GHOST
+
+* P_GIVE_MSG
+
+* P_GLOBAL_SKILLPROPS
+
+* P_GUARD
+
+* P_GUILD
+
+* P_GUILD_DEACTIVATE_SKILLS
+
+* P_GUILD_DEFAULT_SPELLBOOK
+
+* P_GUILD_FEMALE_TITLES
+
+* P_GUILD_LEVEL
+
+* P_GUILD_LEVELS
+
+* P_GUILD_MALE_TITLES
+
+* P_GUILD_PREPAREBLOCK
+
+* P_GUILD_RATING
+
+* P_GUILD_RESTRICTIONS
+
+* P_GUILD_SKILLS
+
+* P_GUILD_TITLE
+
+* P_HANDS
+
+* P_HANDS_USED_BY
+
+* P_HARBOUR
+
+* P_HAUS_ERLAUBT
+
+* P_HB
+
+* P_HEAL
+
+* P_HELPER_NPC
+
+* P_HELPER_OBJECTS
+
+* P_HIDE_EXITS
+
+* P_HISTMIN
+
+* P_HIT_FUNC
+
+* P_HOMEPAGE
+
+* P_HP
+
+* P_HP_DELAY
+
+* P_HP_HOOKS
+
+* P_HUNTTIME
+
+* P_IDS
+
+* P_IGNORE
+
+* P_INDOORS
+
+* P_INFO
+
+* P_INFORMME
+
+* P_INPC_HOME
+
+* P_INPC_LAST_ENVIRONMENT
+
+* P_INPC_LAST_PLAYER_CONTACT
+
+* P_INPC_WALK_AREA
+
+* P_INPC_WALK_DELAYS
+
+* P_INPC_WALK_FLAGS
+
+* P_INPC_WALK_MODE
+
+* P_INPC_WALK_ROUTE
+
+* P_INTERMUD
+
+* P_INTERNAL_EXTRA_LOOK
+
+* P_INT_LIGHT
+
+* P_INT_LONG
+
+* P_INT_SHORT
+
+* P_INVIS
+
+* P_IP_NAME
+
+* P_IS_ARTILLERY
+
+* P_ITEMS
+
+* P_I_HATE_ALCOHOL
+
+* P_KEEPER
+
+* P_KEEP_ON_SELL
+
+* P_KILLER
+
+* P_KILLS
+
+* P_KILL_MSG
+
+* P_KILL_NAME
+
+* P_KNOWN_POTIONROOMS
+
+* P_LASTDIR
+
+* P_LAST_COMBAT_TIME
+
+* P_LAST_COMMAND_ENV
+
+* P_LAST_CONTENT_CHANGE
+
+* P_LAST_DAMAGE
+
+* P_LAST_DAMTIME
+
+* P_LAST_DAMTYPES
+
+* P_LAST_DEATH_PROPS
+
+* P_LAST_DEATH_TIME
+
+* P_LAST_LOGIN
+
+* P_LAST_LOGOUT
+
+* P_LAST_MOVE
+
+* P_LAST_USE
+
+* P_LAST_WEAR_ACTION
+
+* P_LAST_XP
+
+* P_LEAVECMDS
+
+* P_LEAVEFAIL
+
+* P_LEAVEMSG
+
+* P_LEP
+
+* P_LEVEL
+
+* P_LIFETIME
+
+* P_LIGHT
+
+* P_LIGHTDESC
+
+* P_LIGHTED
+
+* P_LIGHT_ABSORPTION
+
+* P_LIGHT_MODIFIER
+
+* P_LIGHT_TRANSPARENCY
+
+* P_LIGHT_TYPE
+
+* P_LIQUID
+
+* P_LOCALCMDS
+
+* P_LOCATION
+
+* P_LOG_INFO
+
+* P_LONG
+
+* P_LONG_EMPTY
+
+* P_LONG_FULL
+
+* P_MAGIC
+
+* P_MAGIC_RESISTANCE_OFFSET
+
+* P_MAILADDR
+
+* P_MAP_RESTRICTIONS
+
+* P_MARRIED
+
+* P_MATERIAL
+
+* P_MATERIAL_KNOWLEDGE
+
+* P_MAX_ALCOHOL
+
+* P_MAX_DRINK
+
+* P_MAX_FOOD
+
+* P_MAX_HANDS
+
+* P_MAX_HP
+
+* P_MAX_OBJECTS
+
+* P_MAX_PASSENGERS
+
+* P_MAX_POISON
+
+* P_MAX_SP
+
+* P_MAX_WEIGHT
+
+* P_MESSAGE_BEEP
+
+* P_MESSAGE_PREPEND
+
+* P_MIN_STOCK
+
+* P_MMSGIN
+
+* P_MMSGOUT
+
+* P_MSGIN
+
+* P_MSGOUT
+
+* P_MSG_PROB
+
+* P_MUD_NEWBIE
+
+* P_MURDER_MSG
+
+* P_M_ATTR_MOD
+
+* P_M_HEALTH_MOD
+
+* P_NAME
+
+* P_NAME_ADJ
+
+* P_NEEDED_QP
+
+* P_NETDEAD_ENV
+
+* P_NETDEAD_INFO
+
+* P_NEVERDROP
+
+* P_NEVER_CLEAN
+
+* P_NEWSKILLS
+
+* P_NEXT_DEATH_SEQUENCE
+
+* P_NEXT_DISABLE_ATTACK
+
+* P_NOBUY
+
+* P_NOCORPSE
+
+* P_NODRINK_MSG
+
+* P_NODROP
+
+* P_NOFOOD_MSG
+
+* P_NOGET
+
+* P_NOINSERT_MSG
+
+* P_NOLEAVE_MSG
+
+* P_NOMAGIC
+
+* P_NOSELL
+
+* P_NO_ASCII_ART
+
+* P_NO_ATTACK
+
+* P_NO_BAD
+
+* P_NO_GLOBAL_ATTACK
+
+* P_NO_PARA_TRANS
+
+* P_NO_PLAYERS
+
+* P_NO_REGENERATION
+
+* P_NO_SCORE
+
+* P_NO_STD_DRINK
+
+* P_NO_TPORT
+
+* P_NO_TRAVELING
+
+* P_NO_XP
+
+* P_NPC
+
+* P_NPC_FASTHEAL
+
+* P_NR_HANDS
+
+* P_ORAKEL
+
+* P_ORIG_FILE_NAME
+
+* P_ORIG_NAME
+
+* P_PARA
+
+* P_PARRY
+
+* P_PARRY_WEAPON
+
+* P_PEACE_HISTORY
+
+* P_PERM_STRING
+
+* P_PICK_MSG
+
+* P_PILE_NAME
+
+* P_PLAYER_LIGHT
+
+* P_PLURAL
+
+* P_POISON
+
+* P_POISON_DELAY
+
+* P_PORTIONS
+
+* P_POST
+
+* P_POTIONROOMS
+
+* P_PRAY_ROOM
+
+* P_PREFERED_ENEMY
+
+* P_PRESAY
+
+* P_PREVENT_PILE
+
+* P_PRE_INFO
+
+* P_PROMPT
+
+* P_PUB_NOT_ON_MENU
+
+* P_PUB_NO_KEEPER
+
+* P_PUB_NO_MONEY
+
+* P_PUB_UNAVAILABLE
+
+* P_PURSUERS
+
+* P_PUT_MSG
+
+* P_QP
+
+* P_QUALITY
+
+* P_QUESTS
+
+* P_QUEST_ITEM
+
+* P_RACE
+
+* P_RACESTRING
+
+* P_RACE_DESCRIPTION
+
+* P_RANGE
+
+* P_READ_DETAILS
+
+* P_READ_NEWS
+
+* P_REAL_RACE
+
+* P_REFERENCE_OBJECT
+
+* P_REJECT
+
+* P_REMOVE_FUNC
+
+* P_REMOVE_MSG
+
+* P_RESET_LIFETIME
+
+* P_RESISTANCE
+
+* P_RESISTANCE_MODIFIER
+
+* P_RESISTANCE_STRENGTHS
+
+* P_RESTRICTIONS
+
+* P_ROOM_MSG
+
+* P_ROOM_TYPE
+
+* P_SB_SPELLS
+
+* P_SCREENSIZE
+
+* P_SECOND
+
+* P_SECOND_MARK
+
+* P_SEERDOORS
+
+* P_SEERDOOR_ALLOWED
+
+* P_SENSITIVE
+
+* P_SENSITIVE_ATTACK
+
+* P_SENSITIVE_INVENTORY
+
+* P_SENSITIVE_INVENTORY_TRIGGER
+
+* P_SHOOTING_AREA
+
+* P_SHOOTING_WC
+
+* P_SHORT
+
+* P_SHORT_CWD
+
+* P_SHOWEMAIL
+
+* P_SHOW_ALIAS_PROCESSING
+
+* P_SHOW_EXITS
+
+* P_SHOW_INV
+
+* P_SHOW_MSG
+
+* P_SIBLINGS
+
+* P_SIZE
+
+* P_SKILLS
+
+* P_SKILL_ATTRIBUTES
+
+* P_SKILL_ATTRIBUTE_OFFSETS
+
+* P_SMELLS
+
+* P_SNOOPFLAGS
+
+* P_SOUNDS
+
+* P_SP
+
+* P_SPECIAL_DETAILS
+
+* P_SPECIAL_EXITS
+
+* P_SPELLRATE
+
+* P_SPELLS
+
+* P_SP_DELAY
+
+* P_START_HOME
+
+* P_STD_OBJECT
+
+* P_STORE_CONSUME
+
+* P_STRETCH_TIME
+
+* P_SUBGUILD_TITLE
+
+* P_SYNTAX_HELP
+
+* P_TARGET_AREA
+
+* P_TEAM
+
+* P_TEAM_ASSOC_MEMBERS
+
+* P_TEAM_ATTACK_CMD
+
+* P_TEAM_AUTOFOLLOW
+
+* P_TEAM_COLORS
+
+* P_TEAM_LEADER
+
+* P_TEAM_NEWMEMBER
+
+* P_TEAM_WANTED_ROW
+
+* P_TEAM_WIMPY_ROW
+
+* P_TELNET_RTTIME
+
+* P_TESTPLAYER
+
+* P_TIMED_ATTR_MOD
+
+* P_TIMEZONE
+
+* P_TITLE
+
+* P_TOO_HEAVY_MSG
+
+* P_TOO_MANY_MSG
+
+* P_TOTAL_AC
+
+* P_TOTAL_LIGHT
+
+* P_TOTAL_OBJECTS
+
+* P_TOTAL_WC
+
+* P_TOTAL_WEIGHT
+
+* P_TOUCH_DETAILS
+
+* P_TPORT_COST_IN
+
+* P_TPORT_COST_OUT
+
+* P_TRANK_FINDEN
+
+* P_TRANSPARENT
+
+* P_TRAVEL_CMDS
+
+* P_TRAVEL_INFO
+
+* P_TRAY
+
+* P_TTY
+
+* P_TTY_COLS
+
+* P_TTY_ROWS
+
+* P_TTY_SHOW
+
+* P_TTY_TYPE
+
+* P_UNIT_DECAY_FLAGS
+
+* P_UNIT_DECAY_INTERVAL
+
+* P_UNIT_DECAY_MIN
+
+* P_UNIT_DECAY_QUOTA
+
+* P_UNWEAR_MSG
+
+* P_UNWIELD_FUNC
+
+* P_UNWIELD_MSG
+
+* P_UNWIELD_TIME
+
+* P_USED_HANDS
+
+* P_VALID_GUILDS
+
+* P_VALUE
+
+* P_VALUE_PER_UNIT
+
+* P_VARIABLES
+
+* P_VISIBLE_GUILD
+
+* P_VISIBLE_SUBGUILD_TITLE
+
+* P_VISUALBELL
+
+* P_VULNERABILITY
+
+* P_WAITFOR
+
+* P_WAITFOR_FLAGS
+
+* P_WAITFOR_REASON
+
+* P_WANTS_TO_LEARN
+
+* P_WATER
+
+* P_WC
+
+* P_WEAPON
+
+* P_WEAPON_TEACHER
+
+* P_WEAPON_TYPE
+
+* P_WEAR_FUNC
+
+* P_WEAR_MSG
+
+* P_WEIGHT
+
+* P_WEIGHT_PERCENT
+
+* P_WEIGHT_PER_UNIT
+
+* P_WIELDED
+
+* P_WIELD_FUNC
+
+* P_WIELD_MSG
+
+* P_WIMPY
+
+* P_WIMPY_DIRECTION
+
+* P_WIZ_DEBUG
+
+* P_WORN
+
+* P_XP
+
+* P_X_ATTR_MOD
+
+* P_X_HEALTH_MOD
+
+* P_ZAP_MSG
+
+* U_REQ
+
+* skill_info_liste
+
+* Verzeichnis der Gilden-Properties
+
+* Verzeichnis der obsoleten Properties
diff --git a/doc/props-obsolet b/doc/props-obsolet
new file mode 100644
index 0000000..a7e8edd
--- /dev/null
+++ b/doc/props-obsolet
@@ -0,0 +1,29 @@
+
+Verzeichnis der obsoleten Properties
+************************************
+
+* P_BALANCED_WEAPON
+
+* P_DEFAULT_INFO
+
+* P_LAST_KILLER
+
+* P_LAST_PEACE_TIME
+
+* P_LOG_FILE
+
+* P_NEXT_SPELL_TIME
+
+* P_READ_MSG
+
+* P_TECHNIQUE
+
+* P_TMP_ATTACK_HOOK
+
+* P_TMP_ATTACK_MOD
+
+* P_TMP_DEFEND_HOOK
+
+* P_TMP_DIE_HOOK
+
+* P_TMP_MOVE_HOOK
diff --git a/doc/props.index b/doc/props.index
new file mode 100644
index 0000000..b63a77e
--- /dev/null
+++ b/doc/props.index
@@ -0,0 +1,159 @@
+
+Properties
+**********
+
+Properties sind im MG Eigenschaften eines Objektes, welche von (in der
+Regel) von aussen gesetzt werden koennen (im Gegensatz zu Variablen
+innerhalb von Objekten).
+
+
+BESCHREIBUNG:
+=============
+
+Im Gegensatz zu Variablen innerhalb eines Objektes, kann man
+Properties von aussen veraendern, ohne eine besondere Funktion
+geschrieben zu haben.
+
+
+Das zugrundeliegende Prinzip
+----------------------------
+
+      Das grundlegende Konzept der MUDlib ist, dass wichtige,
+      objektbezogene Informationen in den sogenannnten Properties
+      gespeichert werden (engl. property -- Eigenschaft, Eigentum).
+      Diese Informationen koennen einfache Werte, wie z.B. Zahlen,
+      Zeichen oder Objekte, aber auch kompliziertere Strukturen sein.
+      Jedes Objekt kann beliebig viele solcher Properties besitzen und
+      deren Namensgebung ist nicht nur auf die von der MUDlib
+      bereitgestellten Standardproperties begrenzt. Das heisst, das
+      fuer eigene Anwendungen die Menge der Properties fuer ein Objekt
+      beliebig erweitert werden kann. Damit sind auch schon die beiden
+      Hauptmerkmale einer Property ange- sprochen:
+
+      1. ein Name oder Kennung und
+
+      2. ein Wert, der durch den Namen repraesentiert wird.
+
+   Das reine Verwalten einer Property mit Namen und Wert ist aber
+   nicht sehr sinnvoll und so gehoeren zu jeder Property noch zwei
+   weitere wichtige Dinge. Zu jeder Property wurden jeweils zwei
+   Operationen eingefuehrt, welche den uebergebenen Wert vor der
+   Speicherung oder Abfrage bearbeiten.
+
+   Zusammenfassend laesst sich das Konzept der Property in folgendem
+   Schema darstellen:
+
+      +-------------------------------------------+
+      | Property                                  |
+      +-------------------------------------------+
+      | privater Datenbereich (Property Werte)    |
+      +-------------------------------------------+
+      | Direktzugriff auf den Datenbereich        |
+      +-------------------------------------+     |
+      |     ^       Methoden       v        | ^ v |
+      |   Setzen       |        Abfragen    |     |
+      +-------------------------------------+-----+
+            ^                      |
+            |                      V
+         SetProp()             QueryProp()
+
+   Aus dem Schema laesst sich Folgendes erkennen
+
+   * beim Setzen und Abfragen wird der Wert einer Methode
+     uebergeben, die den Wert zurueckgibt oder ggf. die Aenderungen
+     vornimmt
+
+   * ein direkter Zugriff auf den Wert der ist ebenfalls moeglich,
+     sollte aber nicht der Normalfall sein, da die Methoden
+     Nebeneffekte erzeugen
+
+   * in bestimmten Faellen kann man den aeusserlich aendernden
+     Zugriff vollkommen unterbinden (NOSETMETHOD, PROTECT) (VORSICHT
+     bei mappings/arrays, diese werden bei QueryProp() als Referenz
+     zurueckgegeben, sind also so aenderbar)
+
+
+Implementation
+--------------
+
+   Die Klasse /std/thing/properties.c stellt folgende Funktionen fuer
+   die Behandlung von Properties bereit:
+
+   * Normaler Zugriff
+
+     * "mixed SetProp(<name>, <wert>)" setzt den Wert von <name> auf
+       <wert>
+
+     * "mixed QueryProp(<name>)" gibt den Wert von <name> zurueck
+
+   * Direkter Zugriff
+
+     * "mixed Set(<name>, <wert>, <interpretation>)" wird genutzt,
+       um eines der folgenden zu setzen:
+
+          * den normalen Wert (aber fast immer besser: *SetProp()*
+            verwenden!)
+
+          * eine Query- oder Setmethode
+
+          * ein Flag/Modus: Speicherstatus/Zugriffsschutz
+
+     * "mixed Query(<name>, <interpretation>)" fragt fuer <name>
+       einen <wert> ab
+
+       * den normalen Wert (aber fast immer besser: *QueryProp()*
+         verwenden!)
+
+       * die Closure der Query- oder Setmethode
+
+       * den Modus der Property
+
+
+Besonderheiten/Eingebaute Properties
+------------------------------------
+
+   Existiert zu einer Property eine Funktion mit dem selben Namen und
+   einem "_set_" bzw "_query_" davor, so wird nicht auf die das
+   Property-Mapping zugegriffen, sondern es werden die Argumente an
+   diese Funktion uebergeben und der Rueckgabewert dieser Funktion
+   zurueckgegeben.
+
+   * Vorteile
+
+        * so kann man Daten, die schnell verfuegbar sein muessen,
+          (bei denen also Effizienz gegen SetProp/QueryProp spricht)
+          trotzdem nach aussen einheitlich zugreifbar machen
+
+   * Nachteile
+
+        * nicht wirklich sauber
+
+        * Speichern muss man selbst vornehmen
+
+        * Set/Query gehen wie auch bei Methoden an _set_*/_query_*
+          vorbei
+
+        * dieses Verhalten sollte der Mudlib vorbehalten bleiben,
+          fuer eigene Prueffunktionen (wird etwas gesetzt/abgefragt)
+          bzw. Aenderungen sollte man Methoden
+          (F_SET_METHOD/F_QUERY_METHOD) benutzen
+
+
+SIEHE AUCH:
+===========
+
+* *SetProp()*, *QueryProp()*, *Set()*, *Query()*,
+
+* *SetProperties()*, *QueryProperties()*
+
+* objekte, effizienz, closures
+
+
+Gesamtverzeichnis der dokumentierten Properties:
+================================================
+
+* Propertyliste
+
+* Verzeichnis der Gilden-Properties
+
+* Verzeichnis der obsoleten Properties
diff --git a/doc/props/P_ABILITIES b/doc/props/P_ABILITIES
index b82a0f6..b852bdf 100644
--- a/doc/props/P_ABILITIES
+++ b/doc/props/P_ABILITIES
@@ -1,9 +1,22 @@
-NAME:
-    P_ABILITIES                   "abilities"                   
 
-DEFINIERT IN:
-    /sys/living/attributes.h
+P_ABILITIES
+***********
 
-BESCHREIBUNG:
-     *** OBSOLET! ***
-     Siehe P_NEWSKILLS.
+
+NAME
+====
+
+   P_ABILITIES                   "abilities"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! ***
+   Siehe P_NEWSKILLS.
diff --git a/doc/props/P_AC b/doc/props/P_AC
index c62d786..e9eda47 100644
--- a/doc/props/P_AC
+++ b/doc/props/P_AC
@@ -1,28 +1,44 @@
+
 P_AC
+****
 
-NAME:
-     P_AC "ac"
 
-DEFINIERT IN:
-     <armour.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property beschreibt die Ruestungsklasse (engl: armour class),
-     also den Schutz, den die Ruestung dem Traeger verleiht. Je hoeher der
-     Wert (als Zahl), um so besser ist die Ruestung. Negative Werte bewirken
-     negativen Schutz, d.h. der Schaden wird vergroessert statt verringert.
+   P_AC "ac"
 
-BEMERKUNGEN:
-     Query- und Setmethoden auf P_AC sollten unbedingt vermieden werden. Sie
-     fuehren in der Regel zu massiven Inkonsistenzen im Mechanismus der
-     Ruestungsbeschaedigung und -reparatur.
-     Fuer jeden Ruestungstyp ist in <combat.h> eine Obergrenze definiert,
-     die man nicht ueberschreiten darf.
-     Ruestungen vom Typ AT_MISC haben immer AC 0 und werden mit keinen 
-     hoeheren Werten genemigt.
 
-SIEHE AUCH:
-     /std/armour.c, P_DAMAGED, Damage() P_TOTAL_AC
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property beschreibt die Ruestungsklasse (engl: armour class),
+   also den Schutz, den die Ruestung dem Traeger verleiht. Je hoeher der
+   Wert (als Zahl), um so besser ist die Ruestung. Negative Werte bewirken
+   negativen Schutz, d.h. der Schaden wird vergroessert statt verringert.
+
+
+BEMERKUNGEN
+===========
+
+   Query- und Setmethoden auf P_AC sollten unbedingt vermieden werden. Sie
+   fuehren in der Regel zu massiven Inkonsistenzen im Mechanismus der
+   Ruestungsbeschaedigung und -reparatur.
+   Fuer jeden Ruestungstyp ist in <combat.h> eine Obergrenze definiert,
+   die man nicht ueberschreiten darf.
+   Ruestungen vom Typ AT_MISC haben immer AC 0 und werden mit keinen
+   hoeheren Werten genemigt.
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, P_DAMAGED, Damage() P_TOTAL_AC
+
 02.10.2007, Zesstra
diff --git a/doc/props/P_ACCEPT_PEACE b/doc/props/P_ACCEPT_PEACE
index 07b63a0..214dc06 100644
--- a/doc/props/P_ACCEPT_PEACE
+++ b/doc/props/P_ACCEPT_PEACE
@@ -1,18 +1,37 @@
-PROPERTY
-     P_ACCEPT_PEACE                           "accept_peace"
 
-DEFINIERT IN 
-	/sys/combat.h
+P_ACCEPT_PEACE
+**************
+
+
+PROPERTY
+========
+
+   P_ACCEPT_PEACE                           "accept_peace"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
 
 BESCHREIBUNG
-	Mittels setzen Dieser Prop lassen sich leicht NPCs bauen,
-	die von jedem zu befrieden sind. Wenn die Property == 1 ist,
-	ist der NPC immer wieder befriedbar, sonst fuehrt der NPC das
-	uebliche Verhalten aus.
+============
+
+   Mittels setzen Dieser Prop lassen sich leicht NPCs bauen,
+   die von jedem zu befrieden sind. Wenn die Property == 1 ist,
+   ist der NPC immer wieder befriedbar, sonst fuehrt der NPC das
+   uebliche Verhalten aus.
+
 
 SIEHE AUCH
-  QueryPacify(),
-  P_PEACE_HISTORY
+==========
+
+   QueryPacify(),
+   P_PEACE_HISTORY
+
 
 LETZTE AENDERUNG
+================
+
 01.05.2008, Zesstra
diff --git a/doc/props/P_ACHATS b/doc/props/P_ACHATS
index 4097620..c62e357 100644
--- a/doc/props/P_ACHATS
+++ b/doc/props/P_ACHATS
@@ -1,8 +1,21 @@
-NAME:
-    P_ACHATS                      "achats"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_ACHATS
+********
 
-BESCHREIBUNG:
-     Chats, die das Monster im Kampf ausgibt.
+
+NAME
+====
+
+   P_ACHATS                      "achats"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Chats, die das Monster im Kampf ausgibt.
diff --git a/doc/props/P_ACHAT_CHANCE b/doc/props/P_ACHAT_CHANCE
index 9ccdf16..fc28ac9 100644
--- a/doc/props/P_ACHAT_CHANCE
+++ b/doc/props/P_ACHAT_CHANCE
@@ -1,8 +1,21 @@
-NAME:
-    P_ACHAT_CHANCE                "achat_chance"                
 
-DEFINIERT IN:
-    /sys/properties.h
+P_ACHAT_CHANCE
+**************
 
-BESCHREIBUNG:
-     Wahrscheinlichkeit fuer die Attack-Chat-Ausgabe.
+
+NAME
+====
+
+   P_ACHAT_CHANCE                "achat_chance"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wahrscheinlichkeit fuer die Attack-Chat-Ausgabe.
diff --git a/doc/props/P_ACTUAL_NOTIFY_FAIL b/doc/props/P_ACTUAL_NOTIFY_FAIL
index 435a646..0c9acd1 100644
--- a/doc/props/P_ACTUAL_NOTIFY_FAIL
+++ b/doc/props/P_ACTUAL_NOTIFY_FAIL
@@ -1,27 +1,51 @@
-********************** VERALTETE PROPERTY *********************************
-NAME:
-     P_ACTUAL_NOTIFY_FAIL          "actual_notify_fail"          
 
-DEFINIERT IN:
-     /sys/player.h
+P_ACTUAL_NOTIFY_FAIL
+********************
 
-ACHTUNG:
-     Diese Prop wird nicht mehr gesetzt (und auch nicht mehr abgefragt), da LD
-     eine efun hat, um das Objekt zu ermitteln, was als letztes ein
-     notify_fail() gesetzt hat, ein Speichern im Spieler also voellig
-     ueberfluessig ist.
+********************** VERALTETE PROPERTY
+*********************************
 
-BESCHREIBUNG:
-     Ist im Spielerobjekt  gesetzt und enthaelt das Objekt, welches zuletzt
-     eine Fehlermeldung mit notify_fail()/_notify_fail() erfolgreich
-     waehrend des aktuellen Kommandos abgespeichert hat.
 
-BEMERKUNGEN:
-     Dient dazu, bei _notify_fail() zu ueberpruefen, ob schon vorher eine
-     Fehlermeldung gesetzt wurde.
+NAME
+====
 
-SIEHE AUCH:
-     AddCmd(), add_action()
-     notify_fail(), _notify_fail()
+   P_ACTUAL_NOTIFY_FAIL          "actual_notify_fail"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+ACHTUNG
+=======
+
+   Diese Prop wird nicht mehr gesetzt (und auch nicht mehr abgefragt), da LD
+   eine efun hat, um das Objekt zu ermitteln, was als letztes ein
+   notify_fail() gesetzt hat, ein Speichern im Spieler also voellig
+   ueberfluessig ist.
+
+
+BESCHREIBUNG
+============
+
+   Ist im Spielerobjekt  gesetzt und enthaelt das Objekt, welches zuletzt
+   eine Fehlermeldung mit notify_fail()/_notify_fail() erfolgreich
+   waehrend des aktuellen Kommandos abgespeichert hat.
+
+
+BEMERKUNGEN
+===========
+
+   Dient dazu, bei _notify_fail() zu ueberpruefen, ob schon vorher eine
+   Fehlermeldung gesetzt wurde.
+
+
+SIEHE AUCH
+==========
+
+   AddCmd(), add_action()
+   notify_fail(), _notify_fail()
 
 10.03.2007, Zesstra
diff --git a/doc/props/P_ADJECTIVES b/doc/props/P_ADJECTIVES
index 3b44a4f..1c8ccb6 100644
--- a/doc/props/P_ADJECTIVES
+++ b/doc/props/P_ADJECTIVES
@@ -1,22 +1,38 @@
+
 P_ADJECTIVES
+************
 
-NAME:
-     P_ADJECTIVES "adjectives"
 
-DEFINIERT IN:
-     <thing/description.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Hier steht ein Array von Strings, welche die Identifizierung des
-     Objektes ergaenzen. Die Verwaltung erfolgt ueber die Funktionen
-     AddAdjective() und RemoveAdjective().
+   P_ADJECTIVES "adjectives"
 
-BEMERKUNGEN:
-     Man sollte an dieser Property nicht "von Hand" herumfummeln, sondern
-     immer die zugehoerigen Funktionen benutzen!
 
-SIEHE AUCH:
-     /std/thing/description.c, AddAdjective(), RemoveAdjective()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Hier steht ein Array von Strings, welche die Identifizierung des
+   Objektes ergaenzen. Die Verwaltung erfolgt ueber die Funktionen
+   AddAdjective() und RemoveAdjective().
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte an dieser Property nicht "von Hand" herumfummeln, sondern
+   immer die zugehoerigen Funktionen benutzen!
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, AddAdjective(), RemoveAdjective()
+
 Last modified: Sun May 19 20:22:24 1996 by Wargon
diff --git a/doc/props/P_AERIAL_HELPERS b/doc/props/P_AERIAL_HELPERS
index 2606884..781510c 100644
--- a/doc/props/P_AERIAL_HELPERS
+++ b/doc/props/P_AERIAL_HELPERS
@@ -1,45 +1,63 @@
+
 P_AERIAL_HELPERS
+****************
 
-NAME:
-     P_AERIAL_HELPERS "lib_p_aerial_helpers"
 
-DEFINIERT IN:
-     <living/helpers.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
-     zu ermitteln, die fuer die Unterstuetzung beim Fliegen/Segeln bei diesem 
-     Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
-     Form zurueckgeliefert:
-     ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
-     Eine Erlaeuterung dazu findet sich in der Dokumentation zu 
-     RegisterHelperObject().
+   P_AERIAL_HELPERS "lib_p_aerial_helpers"
 
-BEMERKUNGEN:
-     Diese Property kann nur abgefragt werden.
-     Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche 
-     Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.
 
-BEISPIEL:
-     Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das 
-     beim Fliegen hilft, sucht man alle Objekte aus dem Mapping heraus, die
-     einen Wert >0 eingetragen haben und prueft deren Anzahl:
+DEFINIERT IN
+============
 
-     mapping aerial = this_player()->QueryProp(P_AERIAL_HELPERS);
-     object* helpers = filter( aerial, function int (object h) {
-                         return (aerial[h]>0); });
-     if ( sizeof(helpers) ) {
-       tell_object(this_player(), "Du erhebst Dich mit Hilfe "+
-         helpers[0]->name(WESSEN,1)+" elegant in die Luefte.\n");
-     }
-     else {
-       tell_object(this_player(), "Du hast nichts zum Fliegen bei Dir.\n");
-     }
+   <living/helpers.h>
 
-SIEHE AUCH:
-     Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
-     Properties:  P_HELPER_OBJECTS, P_AQUATIC_HELPERS
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
+   zu ermitteln, die fuer die Unterstuetzung beim Fliegen/Segeln bei diesem
+   Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
+   Form zurueckgeliefert:
+   ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
+   Eine Erlaeuterung dazu findet sich in der Dokumentation zu
+   RegisterHelperObject().
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property kann nur abgefragt werden.
+   Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche
+   Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.
+
+
+BEISPIEL
+========
+
+   Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das
+   beim Fliegen hilft, sucht man alle Objekte aus dem Mapping heraus, die
+   einen Wert >0 eingetragen haben und prueft deren Anzahl:
+
+   mapping aerial = this_player()->QueryProp(P_AERIAL_HELPERS);
+   object* helpers = filter( aerial, function int (object h) {
+                       return (aerial[h]>0); });
+   if ( sizeof(helpers) ) {
+     tell_object(this_player(), "Du erhebst Dich mit Hilfe "+
+       helpers[0]->name(WESSEN,1)+" elegant in die Luefte.\n");
+   }
+   else {
+     tell_object(this_player(), "Du hast nichts zum Fliegen bei Dir.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
+   Properties:  P_HELPER_OBJECTS, P_AQUATIC_HELPERS
+
 12.03.2016, Arathorn
-
diff --git a/doc/props/P_AGE b/doc/props/P_AGE
index ad6388a..e35473c 100644
--- a/doc/props/P_AGE
+++ b/doc/props/P_AGE
@@ -1,8 +1,21 @@
-NAME:
-    P_AGE                         "age"                         
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_AGE
+*****
 
-BESCHREIBUNG:
-     Alter des Spielers in Heart-Beats (1 HB == 2 Sekunden)
+
+NAME
+====
+
+   P_AGE                         "age"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Alter des Spielers in Heart-Beats (1 HB == 2 Sekunden)
diff --git a/doc/props/P_AGGRESSIVE b/doc/props/P_AGGRESSIVE
index b10d97e..5184687 100644
--- a/doc/props/P_AGGRESSIVE
+++ b/doc/props/P_AGGRESSIVE
@@ -1,39 +1,55 @@
-NAME:
-    P_AGGRESSIVE                  "aggressive"                  
 
-DEFINIERT IN:
-    /sys/properties.h
+P_AGGRESSIVE
+************
 
-BESCHREIBUNG:
-	Gesetzt, wenn das Wesen von sich aus Angriffe startet.
 
-	Ueblicherweise nimmt man als Wert 1, man kann jedoch auch
-	einen kleineren Wert nehmen wenn es nur mit einer bestimmten
-	Wahrscheinlichkeit automatisch angreifen soll.
+NAME
+====
 
-	Der Wert von Spieler und Monster wird addiert, um zu entscheiden,
-	ob ein Spieler angegriffen werden soll,	man kann P_AGGRESSIVE
-	also auch bei Spielern setzen, so dass sie von allen Monstern
-	angegriffen werden.
+   P_AGGRESSIVE                  "aggressive"
 
-	Bei Monstern (und NUR bei diesen) kann man hier auch ein Mapping
-	angeben, das als Keys Namen von Properties des Spielers enthaelt
-	und als Values Mappings, in denen steht welcher Wert bei welchen
-	Wert fuer die Property genommen werden soll (Beispiele folgen).
-	Mit Key 0 kann man einen Default-Wert (sowohl in inneren Mappings
-	wie auch im aeusseren Mapping) festlegen. Default-Werte werden
-	genommen, falls keine anderen gesetzt sind, also Vorsicht mit
-	0-Eintraegen (Tip: 0.0 ist in LPC ungleich 0).
-	Bei mehreren Properties werden alle gesetzten Werte gemittelt.
 
-BEISPIELE:
-	SetProp(P_AGGRESSIVE,([P_RACE:(["Zwerg":1, "Elf":0.0, 0:0.5])]))
-	Zwerge werden immer automatisch angegriffen, Elfen nie und
-	alle anderen mit 50% Wahrscheinlichkeit.
-	Man beachte, dass hier 0.0 genommen werden musste anstelle von 0,
-	weil sonst Elfen auch 50% Wahrscheinlichkeit bekommen haetten.
+DEFINIERT IN
+============
 
-	SetProp(P_AGGRESSIVE,([P_RACE:(["Zwerg":0.3]),
-	                       P_GUILD:(["Chaos":0.7])]))
-	Zwerge werden mit 30% Wahrscheinlichkeit angegriffen,
-	Chaoten mit 70% und Zwerg-Chaoten mit 50%.
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn das Wesen von sich aus Angriffe startet.
+
+   Ueblicherweise nimmt man als Wert 1, man kann jedoch auch
+   einen kleineren Wert nehmen wenn es nur mit einer bestimmten
+   Wahrscheinlichkeit automatisch angreifen soll.
+
+   Der Wert von Spieler und Monster wird addiert, um zu entscheiden,
+   ob ein Spieler angegriffen werden soll, man kann P_AGGRESSIVE
+   also auch bei Spielern setzen, so dass sie von allen Monstern
+   angegriffen werden.
+
+   Bei Monstern (und NUR bei diesen) kann man hier auch ein Mapping
+   angeben, das als Keys Namen von Properties des Spielers enthaelt
+   und als Values Mappings, in denen steht welcher Wert bei welchen
+   Wert fuer die Property genommen werden soll (Beispiele folgen).
+   Mit Key 0 kann man einen Default-Wert (sowohl in inneren Mappings
+   wie auch im aeusseren Mapping) festlegen. Default-Werte werden
+   genommen, falls keine anderen gesetzt sind, also Vorsicht mit
+   0-Eintraegen (Tip: 0.0 ist in LPC ungleich 0).
+   Bei mehreren Properties werden alle gesetzten Werte gemittelt.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_AGGRESSIVE,([P_RACE:(["Zwerg":1, "Elf":0.0, 0:0.5])]))
+   Zwerge werden immer automatisch angegriffen, Elfen nie und
+   alle anderen mit 50% Wahrscheinlichkeit.
+   Man beachte, dass hier 0.0 genommen werden musste anstelle von 0,
+   weil sonst Elfen auch 50% Wahrscheinlichkeit bekommen haetten.
+
+   SetProp(P_AGGRESSIVE,([P_RACE:(["Zwerg":0.3]),
+                          P_GUILD:(["Chaos":0.7])]))
+   Zwerge werden mit 30% Wahrscheinlichkeit angegriffen,
+   Chaoten mit 70% und Zwerg-Chaoten mit 50%.
diff --git a/doc/props/P_ALCOHOL b/doc/props/P_ALCOHOL
index 63005b7..d827a94 100644
--- a/doc/props/P_ALCOHOL
+++ b/doc/props/P_ALCOHOL
@@ -1,22 +1,36 @@
-NAME:
-     P_ALCOHOL			"alcohol"
 
-DEFINIERT IN:
-     /sys/living/life.h
+P_ALCOHOL
+*********
 
-BESCHREIBUNG:
 
-     - Lebewesen
-       Numerischer Wert fuer den Grad der Betrunkenheit eines Lebewesens.
-       Der maximale Wert steht in P_MAX_ALCOHOL.
+NAME
+====
 
-     - Speisen/Kneipen
-       Numerischer Wert fuer den Grad, den eine Portion der Speise den
-       Konsumenten betrunken macht
+   P_ALCOHOL                  "alcohol"
 
-SIEHE AUCH:
-	P_MAX_ALCOHOL, P_ALCOHOL_DELAY, consume,
-	P_FOOD, P_DRINK, wiz/food, 
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Numerischer Wert fuer den Grad der Betrunkenheit eines Lebewesens.
+     Der maximale Wert steht in P_MAX_ALCOHOL.
+
+   - Speisen/Kneipen
+     Numerischer Wert fuer den Grad, den eine Portion der Speise den
+     Konsumenten betrunken macht
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_ALCOHOL, P_ALCOHOL_DELAY, consume,
+   P_FOOD, P_DRINK, wiz/food,
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_ALCOHOL_DELAY b/doc/props/P_ALCOHOL_DELAY
index 4c6d2c1..6ea0513 100644
--- a/doc/props/P_ALCOHOL_DELAY
+++ b/doc/props/P_ALCOHOL_DELAY
@@ -1,10 +1,23 @@
-NAME:
-    P_ALCOHOL_DELAY                 "alcohol_delay"                     
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_ALCOHOL_DELAY
+***************
 
-BESCHREIBUNG:
-     Anzahl der heart_beats, bis P_ALCOHOL um einen Punkt sinkt.
-     Aenderungen dieser Property in Spielern beduerfen der 
-     Genehmigung des EM fuer Balance.
+
+NAME
+====
+
+   P_ALCOHOL_DELAY                 "alcohol_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_ALCOHOL um einen Punkt sinkt.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/props/P_ALC_FULL_MSG b/doc/props/P_ALC_FULL_MSG
index bd84a86..5df4b65 100644
--- a/doc/props/P_ALC_FULL_MSG
+++ b/doc/props/P_ALC_FULL_MSG
@@ -1,24 +1,45 @@
-NAME:
-     P_ALC_FULL_MSG                "std_food_alc_full_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_ALC_FULL_MSG
+**************
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn Alkohol konsumiert werden soll,
-     obwohl dieser nicht mehr Alkohol vertraegt.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "Soviel Alkohol vertraegst Du nicht mehr."
 
-SIEHE AUCH:
-     P_ALCOHOL, P_MAX_ALCOHOL, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_ALC_FULL_MSG                "std_food_alc_full_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn Alkohol konsumiert werden soll,
+   obwohl dieser nicht mehr Alkohol vertraegt.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Soviel Alkohol vertraegst Du nicht mehr."
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, P_MAX_ALCOHOL, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_ALIGN b/doc/props/P_ALIGN
index f1d3465..d4ca76c 100644
--- a/doc/props/P_ALIGN
+++ b/doc/props/P_ALIGN
@@ -1,17 +1,29 @@
-NAME:
-    P_ALIGN                       "align"                       
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_ALIGN
+*******
 
-BESCHREIBUNG:
-     Numerischer Wert fuer Gut- oder Boesheit des Wesens.
 
-     Kann Werte von -1000 (Boese wie der Teufel hoechstpersoenlich)
-     bis +1000 (Jesus, bist Du's ?) annehmen.
+NAME
+====
 
-     Werte ausserhalb dieser Skala werden zwar teilweise verwendet,
-     das Setzen derselben sollte jedoch UNBEDINGT unterbleiben.
+   P_ALIGN                       "align"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer Gut- oder Boesheit des Wesens.
+
+   Kann Werte von -1000 (Boese wie der Teufel hoechstpersoenlich)
+   bis +1000 (Jesus, bist Du's ?) annehmen.
+
+   Werte ausserhalb dieser Skala werden zwar teilweise verwendet,
+   das Setzen derselben sollte jedoch UNBEDINGT unterbleiben.
+
 Last modified: Sat Jul 12 17:00:00 by Mandragon
diff --git a/doc/props/P_ALLOWED_SHADOW b/doc/props/P_ALLOWED_SHADOW
index 39482fd..5d849b7 100644
--- a/doc/props/P_ALLOWED_SHADOW
+++ b/doc/props/P_ALLOWED_SHADOW
@@ -1,24 +1,38 @@
-NAME:
-    P_ALLOWED_SHADOW              "allowed_shadow"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_ALLOWED_SHADOW
+****************
 
-BESCHREIBUNG:
 
-     Normalerweise koennen nur Shadows an Spieler gebunden werden, die in 
-     /std/player/shadows/ liegen. 
-     
-     Zu Testzwecken kann in dieser Property der Pfad eines Shadows eingetragen
-     werden. Damit wird die oben beschriebene Regel fuer diesen Spieler und 
-     diesen Shadow ausser Kraft gesetzt.
+NAME
+====
 
-BEMERKUNG: 
+   P_ALLOWED_SHADOW              "allowed_shadow"
 
-     Der Spieler muss ein Testspieler sein. Ansonsten wird diese Property
-     ignoriert.
 
-     Die Property ist secured gesetzt. Das heisst, nur EM+ koennen
-     diese Property setzen und loeschen.
-------------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise koennen nur Shadows an Spieler gebunden werden, die in
+   /std/player/shadows/ liegen.
+
+
+
+   Zu Testzwecken kann in dieser Property der Pfad eines Shadows eingetragen
+   werden. Damit wird die oben beschriebene Regel fuer diesen Spieler und
+   diesen Shadow ausser Kraft gesetzt.
+
+BEMERKUNG:
+
+   Der Spieler muss ein Testspieler sein. Ansonsten wird diese
+   Property ignoriert.
+
+   Die Property ist secured gesetzt. Das heisst, nur EM+ koennen diese
+   Property setzen und loeschen.
+
 Last modified: Sun Mar 21 00:27:46 2004 by Vanion
diff --git a/doc/props/P_AMMUNITION b/doc/props/P_AMMUNITION
index f8903af..cbe7f56 100644
--- a/doc/props/P_AMMUNITION
+++ b/doc/props/P_AMMUNITION
@@ -1,42 +1,62 @@
+
 P_AMMUNITION
+************
 
-NAME:
-    P_AMMUNITION     "munition"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Enthaelt die fuer eine Waffe gueltige Munition als String. Die
-    Munition muss diesen String als ID besitzen.
+   P_AMMUNITION     "munition"
 
-    Fuer die Munitionsobjekte gilt:
-    * es kann ein Skill am Spieler definiert werden, dieser wirkt dann
-      zusaetzlich zum generellen SK_SHOOT-Skill.
-    * sie koennen eine HitFunc besitzten, die beim Schuss abgefragt wird
 
-BEMERKUNGEN:
-    Bitte das #define MUN_MISC(x) benutzen. Munition sollte auch immer
-    in Deutsch und Plural angegeben werden, da P_AMMUNITION direkt
-    fuer Ausgaben an den Spieler ausgewertet wird.
+DEFINIERT IN
+============
 
-    Momentan sind vier Munitionsarten in der combat.h vordefiniert:
-    MUN_ARROW, MUN_STONE, MUN_BOLT, MUN_MISC
+   <combat.h>
 
-BEISPIELE:
-    // fuer ein kleines Blasrohr im Blasrohr
-    SetProp(P_AMMUNITION, MUN_MISC("Erbsen"));
 
-    // Entsprechend in der Munition:
-    AddId(MUN_MISC("Erbsen"));
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-    Generell:  P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
-    Waffen:    P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
-    Kampf:     Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
-    Team:      PresentPosition(L)
-    Sonstiges: fernwaffen
+   Enthaelt die fuer eine Waffe gueltige Munition als String. Die
+   Munition muss diesen String als ID besitzen.
 
-29.Jul 2014 Gloinson
\ No newline at end of file
+   Fuer die Munitionsobjekte gilt:
+   * es kann ein Skill am Spieler definiert werden, dieser wirkt dann
+     zusaetzlich zum generellen SK_SHOOT-Skill.
+   * sie koennen eine HitFunc besitzten, die beim Schuss abgefragt wird
+
+
+BEMERKUNGEN
+===========
+
+   Bitte das #define MUN_MISC(x) benutzen. Munition sollte auch immer
+   in Deutsch und Plural angegeben werden, da P_AMMUNITION direkt
+   fuer Ausgaben an den Spieler ausgewertet wird.
+
+   Momentan sind vier Munitionsarten in der combat.h vordefiniert:
+   MUN_ARROW, MUN_STONE, MUN_BOLT, MUN_MISC
+
+
+BEISPIELE
+=========
+
+   // fuer ein kleines Blasrohr im Blasrohr
+   SetProp(P_AMMUNITION, MUN_MISC("Erbsen"));
+
+   // Entsprechend in der Munition:
+   AddId(MUN_MISC("Erbsen"));
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Waffen:    P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
+   Kampf:     Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
+   Team:      PresentPosition(L)
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/props/P_AMOUNT b/doc/props/P_AMOUNT
index a44e45a..5c0e51a 100644
--- a/doc/props/P_AMOUNT
+++ b/doc/props/P_AMOUNT
@@ -1,8 +1,21 @@
-NAME:
-    P_AMOUNT                      "amount"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_AMOUNT
+********
 
-BESCHREIBUNG:
-     Anzahl der Objekte, fuer die das Objekt steht.
+
+NAME
+====
+
+   P_AMOUNT                      "amount"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Objekte, fuer die das Objekt steht.
diff --git a/doc/props/P_AQUATIC_HELPERS b/doc/props/P_AQUATIC_HELPERS
index 33a07ab..8429a41 100644
--- a/doc/props/P_AQUATIC_HELPERS
+++ b/doc/props/P_AQUATIC_HELPERS
@@ -1,46 +1,64 @@
+
 P_AQUATIC_HELPERS
+*****************
 
-NAME:
-     P_AQUATIC_HELPERS "lib_p_aquatic_helpers"
 
-DEFINIERT IN:
-     <living/helpers.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
-     zu ermitteln, die fuer die Unterstuetzung beim Tauchen bei diesem 
-     Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
-     Form zurueckgeliefert:
-     ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
-     Eine Erlaeuterung dazu findet sich in der Dokumentation zu 
-     RegisterHelperObject().
+   P_AQUATIC_HELPERS "lib_p_aquatic_helpers"
 
-BEMERKUNGEN:
-     Diese Property kann nur abgefragt werden.
-     Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche 
-     Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.
 
-BEISPIEL:
-     Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das 
-     beim Tauchen hilft, sucht man alle Objekte aus dem Mapping heraus, die
-     einen Wert >0 eingetragen haben und prueft deren Anzahl:
+DEFINIERT IN
+============
 
-     mapping aquatic = this_player()->QueryProp(P_AQUATIC_HELPERS);
-     object* helpers = filter( aquatic, function int (object h) {
-                         return (aquatic[h]>0); });
-     if ( sizeof(helpers) ) {
-       tell_object(this_player(), "Du stuerzt Dich in die Fluten und "
-         "stellst ueberrascht fest, dass Du mit Hilfe "+
-         helpers[0]->name(WESSEN,1)+" sogar unter Wasser atmen kannst!\n");
-     }
-     else {
-       tell_object(this_player(), "Du hast nichts zum Tauchen bei Dir.\n");
-     }
+   <living/helpers.h>
 
-SIEHE AUCH:
-     Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
-     Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
+   zu ermitteln, die fuer die Unterstuetzung beim Tauchen bei diesem
+   Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
+   Form zurueckgeliefert:
+   ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
+   Eine Erlaeuterung dazu findet sich in der Dokumentation zu
+   RegisterHelperObject().
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property kann nur abgefragt werden.
+   Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche
+   Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.
+
+
+BEISPIEL
+========
+
+   Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das
+   beim Tauchen hilft, sucht man alle Objekte aus dem Mapping heraus, die
+   einen Wert >0 eingetragen haben und prueft deren Anzahl:
+
+   mapping aquatic = this_player()->QueryProp(P_AQUATIC_HELPERS);
+   object* helpers = filter( aquatic, function int (object h) {
+                       return (aquatic[h]>0); });
+   if ( sizeof(helpers) ) {
+     tell_object(this_player(), "Du stuerzt Dich in die Fluten und "
+       "stellst ueberrascht fest, dass Du mit Hilfe "+
+       helpers[0]->name(WESSEN,1)+" sogar unter Wasser atmen kannst!\n");
+   }
+   else {
+     tell_object(this_player(), "Du hast nichts zum Tauchen bei Dir.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS
+
 06.04.2016, Arathorn
-
diff --git a/doc/props/P_ARMOURS b/doc/props/P_ARMOURS
index 3156bf6..e0d6a0c 100644
--- a/doc/props/P_ARMOURS
+++ b/doc/props/P_ARMOURS
@@ -1,25 +1,41 @@
+
 P_ARMOURS
+*********
 
-NAME:
-     P_ARMOURS                     "armours"
 
-DEFINIERT IN:
-     <living/combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Array mit den getragenen Schutzbekleidungen des Lebewesen.
+   P_ARMOURS                     "armours"
 
-     Bitte nach Moeglichkeit davon absehen, diese Property zu beschreiben, da
-     es hierbei zu Inkonsistenzen kommen kann.
-     
-     Falls ihr die Ruestungen des Lebewesens, ggf. mit bestimten Kriterien,
-     ermitteln wollt, benutzt hierfuer bitte die Funktion FilterArmours()
-     statt selber ueber dieses Array zu laufen.
 
-SIEHE AUCH:
-     Verwandt:		QueryArmourByType(L), P_WEAPON, FilterClothing(), 
-                  FilterArmours()
-     Ruestungen:	P_AC, P_ARMOUR_TYPE, P_NR_HANDS
-     Sonstiges:		P_EQUIP_TIME, P_LAST_USE
+DEFINIERT IN
+============
+
+   <living/combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Array mit den getragenen Schutzbekleidungen des Lebewesen.
+
+   Bitte nach Moeglichkeit davon absehen, diese Property zu beschreiben, da
+   es hierbei zu Inkonsistenzen kommen kann.
+
+
+
+   Falls ihr die Ruestungen des Lebewesens, ggf. mit bestimten Kriterien,
+   ermitteln wollt, benutzt hierfuer bitte die Funktion FilterArmours()
+   statt selber ueber dieses Array zu laufen.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:          QueryArmourByType(L), P_WEAPON, FilterClothing(),
+                FilterArmours()
+   Ruestungen:        P_AC, P_ARMOUR_TYPE, P_NR_HANDS
+   Sonstiges:         P_EQUIP_TIME, P_LAST_USE
 
 14.03.2009, Zesstra
diff --git a/doc/props/P_ARMOUR_TYPE b/doc/props/P_ARMOUR_TYPE
index 35978f2..19e6812 100644
--- a/doc/props/P_ARMOUR_TYPE
+++ b/doc/props/P_ARMOUR_TYPE
@@ -1,46 +1,63 @@
+
 P_ARMOUR_TYPE
+*************
 
-NAME:
-     P_ARMOUR_TYPE "armour_type"
 
-DEFINIERT IN:
-     <armour.h>
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property wird der Typ einer Ruestung festgehalten. Man sollte
-     hier nur die in <combat.h> definierten Konstanten verwenden:
+   P_ARMOUR_TYPE "armour_type"
 
-        AT_AMULET     Amulett
-        AT_ARMOUR     Ruestung
-        AT_BELT       Guertel
-        AT_BOOT       Schuhe
-        AT_CLOAK      Umhang
-        AT_GLOVE      Handschuhe
-        AT_HELMET     Helm
-        AT_QUIVER     Koecher
-        AT_RING       Ring
-        AT_SHIELD     Schild
-        AT_TROUSERS   Hosen
-        AT_MISC       Sonstiges
 
-     Der Ruestungstyp AT_MISC ist schnoedem Tand und anderem nutzlosen
-     Kram vorbehalten. Auf keinen Fall darf eine AT_MISC-Ruestung ueber
-     eine AC > 0 verfuegen noch irgendwie kampfrelevante Bedeutung be-
-     sitzen. Ruestungen des Typs AT_MISC, die KEINE DefendFunc benoetigen,
-     muessen mittels /std/clothing als einfaches Kleidungsstueck realisiert
-     werden.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Die P_AC wird bei AT_MISC-Ruestungen gar nicht erst ausgewertet.
-     DefendFuncs werden zwar ausgewertet, aber bitte ueberlegt euch gut, ob
-     ihr sie braucht (Rechenzeit im Kampf ist kritisch!) und ob sie seitens 
-     der Balance in eurem Fall erlaubt sind.
+   <armour.h>
 
-SIEHE AUCH:
-     Verwandt:          QueryArmourByType(L), P_WEAPON
-     Ruestungen:        P_AC, P_NR_HANDS (Schilde)
-     Sonstiges:         P_EQUIP_TIME, P_LAST_USE
-     Code:              /std/armour.c, /std/clothing.c
-     Gildenergaenzung:  P_GLOVE_FINGERLESS
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird der Typ einer Ruestung festgehalten. Man sollte
+   hier nur die in <combat.h> definierten Konstanten verwenden:
+
+      AT_AMULET     Amulett
+      AT_ARMOUR     Ruestung
+      AT_BELT       Guertel
+      AT_BOOT       Schuhe
+      AT_CLOAK      Umhang
+      AT_GLOVE      Handschuhe
+      AT_HELMET     Helm
+      AT_QUIVER     Koecher
+      AT_RING       Ring
+      AT_SHIELD     Schild
+      AT_TROUSERS   Hosen
+      AT_MISC       Sonstiges
+
+   Der Ruestungstyp AT_MISC ist schnoedem Tand und anderem nutzlosen
+   Kram vorbehalten. Auf keinen Fall darf eine AT_MISC-Ruestung ueber
+   eine AC > 0 verfuegen noch irgendwie kampfrelevante Bedeutung be-
+   sitzen. Ruestungen des Typs AT_MISC, die KEINE DefendFunc benoetigen,
+   muessen mittels /std/clothing als einfaches Kleidungsstueck realisiert
+   werden.
+
+
+BEMERKUNGEN
+===========
+
+   Die P_AC wird bei AT_MISC-Ruestungen gar nicht erst ausgewertet.
+   DefendFuncs werden zwar ausgewertet, aber bitte ueberlegt euch gut, ob
+   ihr sie braucht (Rechenzeit im Kampf ist kritisch!) und ob sie seitens
+   der Balance in eurem Fall erlaubt sind.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:          QueryArmourByType(L), P_WEAPON
+   Ruestungen:        P_AC, P_NR_HANDS (Schilde)
+   Sonstiges:         P_EQUIP_TIME, P_LAST_USE
+   Code:              /std/armour.c, /std/clothing.c
+   Gildenergaenzung:  P_GLOVE_FINGERLESS
 
 27. Mai 2015, Arathorn
diff --git a/doc/props/P_ARRIVEMSG b/doc/props/P_ARRIVEMSG
index 02d5759..cdafdaa 100644
--- a/doc/props/P_ARRIVEMSG
+++ b/doc/props/P_ARRIVEMSG
@@ -1,8 +1,21 @@
-NAME:
-    P_ARRIVEMSG                   "arrivemsg"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_ARRIVEMSG
+***********
 
-BESCHREIBUNG:
-     Meldung, wenn der Transporter anlegt.
+
+NAME
+====
+
+   P_ARRIVEMSG                   "arrivemsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, wenn der Transporter anlegt.
diff --git a/doc/props/P_ARTICLE b/doc/props/P_ARTICLE
index 1517865..2bf2c54 100644
--- a/doc/props/P_ARTICLE
+++ b/doc/props/P_ARTICLE
@@ -1,15 +1,28 @@
-NAME:
-    P_ARTICLE                     "article"                     
 
-DEFINIERT IN:
-    /sys/thing/language.h
+P_ARTICLE
+*********
 
-BESCHREIBUNG:
-     Gibt an, ob in der Beschreibung ein Artikel ausgegeben werden soll
-     oder nicht.
 
-     Wenn ein Artikel angegeben werden soll, so wird 1 gesetzt, sonst 0.
-     Diese Property ist aus historischen Gruenden auf 1 voreingestellt
-     und intern invertiert. (d.h., beim Auslesen per Query kommt als 
-     Ergebnis genau das falsche heraus). Bitte beachtet das bei Set- bzw.
-     Query-Funktionen.
\ No newline at end of file
+NAME
+====
+
+   P_ARTICLE                     "article"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/language.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, ob in der Beschreibung ein Artikel ausgegeben werden soll
+   oder nicht.
+
+   Wenn ein Artikel angegeben werden soll, so wird 1 gesetzt, sonst 0.
+   Diese Property ist aus historischen Gruenden auf 1 voreingestellt
+   und intern invertiert. (d.h., beim Auslesen per Query kommt als
+   Ergebnis genau das falsche heraus). Bitte beachtet das bei Set- bzw.
+   Query-Funktionen.
diff --git a/doc/props/P_ATTACK_BUSY b/doc/props/P_ATTACK_BUSY
index b55dc5b..dfc8ba6 100644
--- a/doc/props/P_ATTACK_BUSY
+++ b/doc/props/P_ATTACK_BUSY
@@ -1,44 +1,67 @@
-NAME:
-    P_ATTACK_BUSY                 "attack_busy"                 
 
-DEFINIERT IN:
-    /sys/living/combat.h
+P_ATTACK_BUSY
+*************
 
-BESCHREIBUNG:
-    Ueber diese Property kann festgestellt werden, ob ein Spieler noch 
-    Spezialwaffen (zB Flammenkugel) einsetzen kann.
-    
-    Ist der Wert bei Abfrage ungleich 0, dann darf der Spieler in dieser
-    Runde keine Aktion mehr durchfuehren. Mit SetProp(P_ATTACK_BUSY, 1)
-    wird eine Aktion verbraucht.
 
-    Intern wird relativ fein gerechnet, ein SetProp(P_ATTACK_BUSY, x)
-    wird in das Abziehen von x*100 Punkten umgerechnet. Der Wert freier
-    Aktionen pro Runde berechnet sich wie folgt:
-    
-    Spieler: 100 + QuerySkillAttribute(SA_SPEED)
-    Seher:   Spieler + 200 + QueryProp(P_LEVEL)
+NAME
+====
 
-    Das Maximum liegt bei 500.
-    Damit betraegt die Anzahl der moeglichen Aktionen pro Runde: Wert/100,
-    also maximal 5 Aktionen pro Runde.
+   P_ATTACK_BUSY                 "attack_busy"
 
-    Zaubersprueche zaehlen im Normalfall auch als eine Aktion.
 
-BEMERKUNGEN:
-    Benutzt man P_ATTACK_BUSY fuer eine sich nicht sofort verbrauchende
-    Sache, kann ein Seher dieses Objekt im Normalfall dreimal pro Runde
-    benutzen. Wenn ungewollt, muss das ueber einen Zeitmarker selbst
-    verhindert werden.
-    
-BEISPIELE:
-    (Code eines Objektes ist in
-     /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c)
-    // einfacher Test auf ATTACK_BUSY und anschliessendes Setzen
-    if (this_player()->QueryProp(P_ATTACK_BUSY)) {
-      write("Du hast dafuer momentan einfach nicht mehr die Puste.\n");
-      return 1;
-    }
-    this_player()->SetProp(P_ATTACK_BUSY, 1);
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Ueber diese Property kann festgestellt werden, ob ein Spieler noch
+   Spezialwaffen (zB Flammenkugel) einsetzen kann.
+
+
+
+   Ist der Wert bei Abfrage ungleich 0, dann darf der Spieler in dieser
+   Runde keine Aktion mehr durchfuehren. Mit SetProp(P_ATTACK_BUSY, 1)
+   wird eine Aktion verbraucht.
+
+   Intern wird relativ fein gerechnet, ein SetProp(P_ATTACK_BUSY, x)
+   wird in das Abziehen von x*100 Punkten umgerechnet. Der Wert freier
+   Aktionen pro Runde berechnet sich wie folgt:
+
+
+
+   Spieler: 100 + QuerySkillAttribute(SA_SPEED)
+   Seher:   Spieler + 200 + QueryProp(P_LEVEL)
+
+   Das Maximum liegt bei 500.
+   Damit betraegt die Anzahl der moeglichen Aktionen pro Runde: Wert/100,
+   also maximal 5 Aktionen pro Runde.
+
+   Zaubersprueche zaehlen im Normalfall auch als eine Aktion.
+
+
+BEMERKUNGEN
+===========
+
+   Benutzt man P_ATTACK_BUSY fuer eine sich nicht sofort verbrauchende
+   Sache, kann ein Seher dieses Objekt im Normalfall dreimal pro Runde
+   benutzen. Wenn ungewollt, muss das ueber einen Zeitmarker selbst
+   verhindert werden.
+
+
+BEISPIELE
+=========
+
+   (Code eines Objektes ist in
+    /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c)
+   // einfacher Test auf ATTACK_BUSY und anschliessendes Setzen
+   if (this_player()->QueryProp(P_ATTACK_BUSY)) {
+     write("Du hast dafuer momentan einfach nicht mehr die Puste.\n");
+     return 1;
+   }
+   this_player()->SetProp(P_ATTACK_BUSY, 1);
 
 7. Mar 2011 Gloinson
diff --git a/doc/props/P_ATTRIBUTES b/doc/props/P_ATTRIBUTES
index 29da911..ed5dd1c 100644
--- a/doc/props/P_ATTRIBUTES
+++ b/doc/props/P_ATTRIBUTES
@@ -1,58 +1,79 @@
-NAME:
-	P_ATTRIBUTES			"attributes"
 
-DEFINIERT IN:
-	/sys/living/attributes.h
+P_ATTRIBUTES
+************
 
-BESCHREIBUNG:
-	Diese Property enthaelt ein Mapping mit den Attributen des
-	Lebewesens. Die Schluessel kennzeichnen hierbei das jeweilige
-	Attribut. Die verschiedenen Standardattribute findet man in
-	/sys/living/attributes.h, welche derzeit folgende Moeglichkeiten
-	bieten:	- A_STR (Kraft)
-		- A_INT (Intelligenz)
-		- A_DEX (Geschick)
-		- A_CON (Konstitution)
-	Sie werden automatisch an verschiedenen Stellen in der MUDLib
-	ausgewertet, zum Beispiel bestimmt A_INT die maximal moeglichen
-	Konzentrationspunkte und A_CON die maximal moeglichen Lebenspunkte.
 
-BEMERKUNGEN:
-        Keine echte Property, _query_attributes() und _set_attributes() sind 
-        in /std/living/attributes.c implementiert.
+NAME
+====
 
-	Es bietet sich an, zum Erfragen der Attributwerte die Funktion
-	QueryAttribute() zu nutzen, da es auch moegliche Offsets gibt,
-	so beispielsweise ueber die Properties P_ATTRIBUTES_OFFSETS bzw.
-	P_ATTRIBUTES_MODIFIER im Lebewesen selbst, oder auch ueber
-	P_X_ATTR_MOD bzw. P_M_ATTR_MOD in Objekten im Lebewesen.
-	Kurzfristige zeit- oder objektgebundene Attributveraenderungen
-	koennen ueber die Property P_TIMED_ATTR_MOD realisiert werden.
+   P_ATTRIBUTES                    "attributes"
 
-	Es gibt auch zahlreiche andere Dienstfunktionen fuer diesen sehr
-	balancekritischen Bereich, siehe unten.
 
-BEISPIEL:
-	Ein moegliches Ergebnis fuer einen frischen Level 1 Spieler waere:
-	  QueryProp(P_ATTRIBUTES);
-	  Ergebnis: (["int":1,"con":1,"str":1,"dex":1])
-	Hinzu kommen eventuell moegliche Rassenboni, die mittels
-	P_ATTRIBUTE_OFFSETS realisiert werden, Zwerge sind beispielsweise
-	recht stark:
-	  QueryProp(P_ATTRIBUTES_OFFSETS);
-	  Ergebnis: (["int":1,"con":1,"str":1,"dex":3])
-	Jetzt bekaeme man (sofern keine weiteren Offsets realisiert sind)
-	mittels QueryAttribute() insgesamt:
-	  QueryAttribute(A_DEX);
-	  Ergebnis: 4
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(),
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+   /sys/living/attributes.h
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping mit den Attributen des
+   Lebewesens. Die Schluessel kennzeichnen hierbei das jeweilige
+   Attribut. Die verschiedenen Standardattribute findet man in
+   /sys/living/attributes.h, welche derzeit folgende Moeglichkeiten
+   bieten: - A_STR (Kraft)
+           - A_INT (Intelligenz)
+           - A_DEX (Geschick)
+           - A_CON (Konstitution)
+   Sie werden automatisch an verschiedenen Stellen in der MUDLib
+   ausgewertet, zum Beispiel bestimmt A_INT die maximal moeglichen
+   Konzentrationspunkte und A_CON die maximal moeglichen Lebenspunkte.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property, _query_attributes() und _set_attributes() sind
+   in /std/living/attributes.c implementiert.
+
+   Es bietet sich an, zum Erfragen der Attributwerte die Funktion
+   QueryAttribute() zu nutzen, da es auch moegliche Offsets gibt,
+   so beispielsweise ueber die Properties P_ATTRIBUTES_OFFSETS bzw.
+   P_ATTRIBUTES_MODIFIER im Lebewesen selbst, oder auch ueber
+   P_X_ATTR_MOD bzw. P_M_ATTR_MOD in Objekten im Lebewesen.
+   Kurzfristige zeit- oder objektgebundene Attributveraenderungen
+   koennen ueber die Property P_TIMED_ATTR_MOD realisiert werden.
+
+   Es gibt auch zahlreiche andere Dienstfunktionen fuer diesen sehr
+   balancekritischen Bereich, siehe unten.
+
+
+BEISPIEL
+========
+
+   Ein moegliches Ergebnis fuer einen frischen Level 1 Spieler waere:
+     QueryProp(P_ATTRIBUTES);
+     Ergebnis: (["int":1,"con":1,"str":1,"dex":1])
+   Hinzu kommen eventuell moegliche Rassenboni, die mittels
+   P_ATTRIBUTE_OFFSETS realisiert werden, Zwerge sind beispielsweise
+   recht stark:
+     QueryProp(P_ATTRIBUTES_OFFSETS);
+     Ergebnis: (["int":1,"con":1,"str":1,"dex":3])
+   Jetzt bekaeme man (sofern keine weiteren Offsets realisiert sind)
+   mittels QueryAttribute() insgesamt:
+     QueryAttribute(A_DEX);
+     Ergebnis: 4
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
 Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/props/P_ATTRIBUTES_MODIFIER b/doc/props/P_ATTRIBUTES_MODIFIER
index f5ba513..ab9f24d 100644
--- a/doc/props/P_ATTRIBUTES_MODIFIER
+++ b/doc/props/P_ATTRIBUTES_MODIFIER
@@ -1,56 +1,78 @@
-NAME:
-    P_ATTRIBUTES_MODIFIER         "attributes_modifier"
 
-DEFINIERT IN:
-    /sys/living/attributes.h
+P_ATTRIBUTES_MODIFIER
+*********************
 
-BESCHREIBUNG:
-    In dieser Property werden Attribut-Modifikatoren gespeichert, die
-    laengere Zeit wirksam sein sollen, tlw. auch ueber einen Reboot
-    hinweg.
-    Intern werden die Modifikatoren in einem Mapping der Form
 
-        ([ Setzer-Key : ([ A_xy : Wert, ... ]) , ... ])
+NAME
+====
 
-    gespeichert. Das Setzen folg hingegen in der Form
+   P_ATTRIBUTES_MODIFIER         "attributes_modifier"
 
-        spieler->SetProp(P_ATTRIBUTES_MODIFIER, ([ A_xy : Wert, ... ]));
-    oder
-        spieler->SetProp(P_ATTRIBUTES_MODIFIER, ({ Setzer-Key, ([ ... ]) }));
 
-    Bei der ersten Variante wird hierbei der Filename des setzenden Objektes
-    als Setzer-Key genommen.
-    Es koennen also durchaus von mehreren Objekten Modifier gesetzt werden.
-    Bekannte Modifier sind:
+DEFINIERT IN
+============
 
-        #death      Attribut-Abzug durch Todesfolgen      (Mudlib)
-        #drain      Statabzug durch NPCs                  (Paracelsus)
-        #frosch     Staerken-Abzug bei Froeschen          (Mudlib)
+   /sys/living/attributes.h
 
-BEMERKUNGEN:
-    Keine echte Property, _query_attributes_modifier() und
-    _set_attributes_modifier() sind in /std/living/attributes.c
-    implementiert
-    - SetProp/QueryProp nutzen!
-    - Wenn ein Modifier nicht mehr gebracht wird, nicht die Attributswerte auf
-      0 setzen, sondern den ganzen Eintrag! also:
-      SetProp(P_ATTRIBUTES_MODIFIER, ([]) );
-      oder: SetProp(P_ATTRIBUTES_MODIFIER, 0 ); 
-      aber nicht: SetProp(P_ATTRIBUTES_MODIFIER, ([A_STR:0]));
 
-BEISPIELE:
-    // ein Bonus ... 'ende'-fest (muss also per uid gesichert werden)
-    player->SetProp(P_ATTRIBUTES_MODIFIER,
-                    ({"g_klerus_segen", ([A_CON:5, A_INT:5])}));
-    ...
-    player->SetProp(P_ATTRIBUTES_MODIFIER, ({"g_klerus_segen", 0}));
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(),
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
+   In dieser Property werden Attribut-Modifikatoren gespeichert, die
+   laengere Zeit wirksam sein sollen, tlw. auch ueber einen Reboot
+   hinweg.
+   Intern werden die Modifikatoren in einem Mapping der Form
+
+       ([ Setzer-Key : ([ A_xy : Wert, ... ]) , ... ])
+
+   gespeichert. Das Setzen folg hingegen in der Form
+
+       spieler->SetProp(P_ATTRIBUTES_MODIFIER, ([ A_xy : Wert, ... ]));
+   oder
+       spieler->SetProp(P_ATTRIBUTES_MODIFIER, ({ Setzer-Key, ([ ... ]) }));
+
+   Bei der ersten Variante wird hierbei der Filename des setzenden Objektes
+   als Setzer-Key genommen.
+   Es koennen also durchaus von mehreren Objekten Modifier gesetzt werden.
+   Bekannte Modifier sind:
+
+       #death      Attribut-Abzug durch Todesfolgen      (Mudlib)
+       #drain      Statabzug durch NPCs                  (Paracelsus)
+       #frosch     Staerken-Abzug bei Froeschen          (Mudlib)
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property, _query_attributes_modifier() und
+   _set_attributes_modifier() sind in /std/living/attributes.c
+   implementiert
+   - SetProp/QueryProp nutzen!
+   - Wenn ein Modifier nicht mehr gebracht wird, nicht die Attributswerte auf
+     0 setzen, sondern den ganzen Eintrag! also:
+     SetProp(P_ATTRIBUTES_MODIFIER, ([]) );
+     oder: SetProp(P_ATTRIBUTES_MODIFIER, 0 );
+     aber nicht: SetProp(P_ATTRIBUTES_MODIFIER, ([A_STR:0]));
+
+
+BEISPIELE
+=========
+
+   // ein Bonus ... 'ende'-fest (muss also per uid gesichert werden)
+   player->SetProp(P_ATTRIBUTES_MODIFIER,
+                   ({"g_klerus_segen", ([A_CON:5, A_INT:5])}));
+   ...
+   player->SetProp(P_ATTRIBUTES_MODIFIER, ({"g_klerus_segen", 0}));
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
 Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/props/P_ATTRIBUTES_OFFSETS b/doc/props/P_ATTRIBUTES_OFFSETS
index 3ebe2b7..dfcbb8c 100644
--- a/doc/props/P_ATTRIBUTES_OFFSETS
+++ b/doc/props/P_ATTRIBUTES_OFFSETS
@@ -1,27 +1,46 @@
-NAME:
-	P_ATTRIBUTES_OFFSETS		"attributes_offsets"
 
-DEFINIERT IN:
-	/sys/living/attributes.h
+P_ATTRIBUTES_OFFSETS
+********************
 
-BESCHREIBUNG:
-	Diese Property enthaelt ein Mapping mit Offsets, die zu den
-	Attributen eine Lebewesens addiert werden. Diese koennen auch
-	negativ sein! Realisiert werden damit beispielsweise Rassenboni.
-	Es gibt noch weitere Moeglichkeiten, Attributoffsets anzugeben.
-	Fuer weiteres siehe P_ATTRIBUTES.
 
-BEMKERUNGEN:
-        Keine echte Property, _query_attributes_offsets() und 
-        _set_attributes_offsets() sind in /std/living/attributes.c 
-        implementiert.
+NAME
+====
 
-SIEHE AUCH:
-	QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-	SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-	SetTimedAttrModifier(), QueryTimedAttrModifier(),
-	DeleteTimedAttrModifier(),
-	P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
-	P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
+   P_ATTRIBUTES_OFFSETS            "attributes_offsets"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping mit Offsets, die zu den
+   Attributen eine Lebewesens addiert werden. Diese koennen auch
+   negativ sein! Realisiert werden damit beispielsweise Rassenboni.
+   Es gibt noch weitere Moeglichkeiten, Attributoffsets anzugeben.
+   Fuer weiteres siehe P_ATTRIBUTES.
+
+
+BEMKERUNGEN
+===========
+
+   Keine echte Property, _query_attributes_offsets() und
+   _set_attributes_offsets() sind in /std/living/attributes.c
+   implementiert.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
 Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/props/P_AUTH_INFO b/doc/props/P_AUTH_INFO
index 5ca65c5..953b519 100644
--- a/doc/props/P_AUTH_INFO
+++ b/doc/props/P_AUTH_INFO
@@ -1,8 +1,21 @@
-NAME:
-    P_AUTH_INFO                   "auth_info"                   
 
-DEFINIERT IN:
-    /sys/player.h
+P_AUTH_INFO
+***********
 
-BESCHREIBUNG:
-     Username des Spielers, wenn bei ihm ein AUTHD laeuft
+
+NAME
+====
+
+   P_AUTH_INFO                   "auth_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Username des Spielers, wenn bei ihm ein AUTHD laeuft
diff --git a/doc/props/P_AUTOLOAD b/doc/props/P_AUTOLOAD
index 6ea69c9..5e623bb 100644
--- a/doc/props/P_AUTOLOAD
+++ b/doc/props/P_AUTOLOAD
@@ -1,15 +1,31 @@
-NAME:
-    P_AUTOLOAD                    "autoload"                    
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_AUTOLOAD
+**********
 
-BESCHREIBUNG:
-     Mapping mit der Menge der Autoloadobjekte und den zugeh.
-     Properties.
 
-BEMERKUNGEN:
-     Funktioniert momentan nicht. Die Methode wurde entfernt. Doku bleibt
-     hier bis der Fall geklaert ist. (Stand 27.Aug 2006)
+NAME
+====
+
+   P_AUTOLOAD                    "autoload"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit der Menge der Autoloadobjekte und den zugeh.
+   Properties.
+
+
+BEMERKUNGEN
+===========
+
+   Funktioniert momentan nicht. Die Methode wurde entfernt. Doku bleibt
+   hier bis der Fall geklaert ist. (Stand 27.Aug 2006)
 
 27.Aug 2006 Gloinson
diff --git a/doc/props/P_AUTOLOADOBJ b/doc/props/P_AUTOLOADOBJ
index 32b433d..3184fff 100644
--- a/doc/props/P_AUTOLOADOBJ
+++ b/doc/props/P_AUTOLOADOBJ
@@ -1,119 +1,141 @@
-NAME:
-    P_AUTOLOADOBJ                 "autoloadobj"
 
-DEFINIERT IN:
-    /sys/player/base.h
-
-BESCHREIBUNG:
-     Hiermit kann prinzipiell angegeben werden ob ein Objekt ueber das
-     Ausloggen eines Spielers (Reboot/ende) behalten werden soll.
-
-     Als Inhalt der Property koennen permanente Eigenschaften des Objektes
-     angegeben werden.
-     Beim Einloggen wird das Objekt neu erzeugt und P_AUTOLOADOBJ auf die
-     gespeicherten Werte gesetzt. Die Werte muessen allerdings selbst
-     verwaltet werden.
-
-     Bitte geht nicht davon aus, dass es waehrend des Setzens/Abfragens dieser
-     Prop einen this_player() oder ein this_interactive() geben muss.
-     Speziell ist this_interactive() nicht == /secure/login!
-     Ebenfalls muss das Objekt beim Setzen/Abfragen nicht in einem Spieler
-     sein.
-
-BEMERKUNGEN:
-     Autoloadobjekte werden beim Ausloggen nicht fallengelassen!
-
-BEISPIELE:
-     ## Variante 1: simples Objekt, bleibt einfach nur erhalten,
-     ##             Variablen werden nicht gesichert ##
-     void create() {
-      ...
-      SetProp(P_AUTOLOADOBJ,1);
-      ...
-     }
+P_AUTOLOADOBJ
+*************
 
 
-     ## Variante 2: Speicherung mehrerer Variablen ueber
-     ##             P_AUTOLOADOBJ (elegante Verwaltung)
+NAME
+====
 
-     // ein paar #defines fuer die Plaetze in der Speichervariablen
-     #define MY_AL_SHORT    0
-     #define MY_AL_ATTRM    1
-     #define MY_AL_OWNER    2
-     #define MY_AL_DESTRUCT 3
-
-     // die Variablen, die erhalten bleiben sollen
-     static object owner;
-     static int destruct_time;
-
-     // diese hier wird gerufen, wenn der Spieler gespeichert wird,
-     // wir packen also alle aktuellen Variablen in eine und geben die
-     // zum Speichern heraus ... wir nehmen hier ein Array (statt
-     // zB eines Mappings), weil das am wenigsten Platz braucht
-     static mixed* _query_autoloadobj() {
-      mixed *ret;
-      ret=allocate(4);
-      ret[MY_AL_SHORT] = QueryProp(P_SHORT);      // SHORT merken
-      ret[MY_AL_ATTRM] = QueryProp(P_M_ATTR_MOD); // einen Modifikator merken
-      ret[MY_AL_OWNER] = getuid(owner);           // ah, ein Besitzer!
-      ret[MY_AL_DESTRUCT]=destruct_time-time();   // und eine Lebensdauer!
-
-      return ret;
-
-      /*
-      // normalerweise wuerde man das einfach so schreiben:
-      return (({QueryProp(P_SHORT),
-                QueryProp(P_M_ATTR_MOD),
-                getuid(owner),
-                destruct_time-time()}));
-      */
-     }
-
-     // diese hier wird gerufen, wenn das Objekt neu im Spieler
-     // erzeugt wurde (Login), also packen wir das Speicherarray wieder
-     // aus und in alle entsprechenden Variablen
-     static mixed* _set_autoloadobj(mixed *new) {
-      // wenn das Format nicht mit dem oben uebereinstimmt ist was
-      // schiefgelaufen
-      if(pointerp(new) && !owner && sizeof(new)>4 &&
-         (owner=find_player(new[MY_AL_OWNER]))) {
-       // los, zuweisen!
-
-       SetProp(P_SHORT,      new[MY_AL_SHORT]);
-       SetProp(P_M_ATTR_MOD, new[MY_AL_ATTRM]);
-       destruct_time=        time()+new[MY_AL_DESTRUCT];
-
-       call_out(#'remove,new[3]);
-      } else call_out(#'remove,0);
-
-      return new;
-     }
+   P_AUTOLOADOBJ                 "autoloadobj"
 
 
-     ## Variante 3: und das gleiche mit Set/Querymethoden ##
-     // Prototypen fuer Set und Query-Methoden -> man Set
-     static mixed *my_query_autoloadobj();
-     static mixed *my_set_autoloadobj(mixed *new);
+DEFINIERT IN
+============
 
-     void create() {
-      // Binden der Methoden
-      Set(P_AUTOLOADOBJ, #'my_query_autoloadobj, F_QUERY_METHOD);
-      Set(P_AUTOLOADOBJ, #'my_set_autoloadobj, F_SET_METHOD);
+   /sys/player/base.h
 
-      // die werden nur von mir veraendert!
-      Set(P_AUTOLOADOBJ, PROTECTED, F_MODE_AS);
-      ...
-     }
 
-     static mixed *my_query_autoloadobj () {
-       // s.o.
-     }
+BESCHREIBUNG
+============
 
-     static mixed *my_set_autoloadobj (mixed *new) {
-       // s.o.
-     }
+   Hiermit kann prinzipiell angegeben werden ob ein Objekt ueber das
+   Ausloggen eines Spielers (Reboot/ende) behalten werden soll.
 
-SIEHE AUCH:
-     P_AUTOLOAD, SetProp
+   Als Inhalt der Property koennen permanente Eigenschaften des Objektes
+   angegeben werden.
+   Beim Einloggen wird das Objekt neu erzeugt und P_AUTOLOADOBJ auf die
+   gespeicherten Werte gesetzt. Die Werte muessen allerdings selbst
+   verwaltet werden.
+
+   Bitte geht nicht davon aus, dass es waehrend des Setzens/Abfragens dieser
+   Prop einen this_player() oder ein this_interactive() geben muss.
+   Speziell ist this_interactive() nicht == /secure/login!
+   Ebenfalls muss das Objekt beim Setzen/Abfragen nicht in einem Spieler
+   sein.
+
+
+BEMERKUNGEN
+===========
+
+   Autoloadobjekte werden beim Ausloggen nicht fallengelassen!
+
+
+BEISPIELE
+=========
+
+   ## Variante 1: simples Objekt, bleibt einfach nur erhalten,
+   ##             Variablen werden nicht gesichert ##
+   void create() {
+    ...
+    SetProp(P_AUTOLOADOBJ,1);
+    ...
+   }
+
+
+   ## Variante 2: Speicherung mehrerer Variablen ueber
+   ##             P_AUTOLOADOBJ (elegante Verwaltung)
+
+   // ein paar #defines fuer die Plaetze in der Speichervariablen
+   #define MY_AL_SHORT    0
+   #define MY_AL_ATTRM    1
+   #define MY_AL_OWNER    2
+   #define MY_AL_DESTRUCT 3
+
+   // die Variablen, die erhalten bleiben sollen
+   static object owner;
+   static int destruct_time;
+
+   // diese hier wird gerufen, wenn der Spieler gespeichert wird,
+   // wir packen also alle aktuellen Variablen in eine und geben die
+   // zum Speichern heraus ... wir nehmen hier ein Array (statt
+   // zB eines Mappings), weil das am wenigsten Platz braucht
+   static mixed* _query_autoloadobj() {
+    mixed *ret;
+    ret=allocate(4);
+    ret[MY_AL_SHORT] = QueryProp(P_SHORT);      // SHORT merken
+    ret[MY_AL_ATTRM] = QueryProp(P_M_ATTR_MOD); // einen Modifikator merken
+    ret[MY_AL_OWNER] = getuid(owner);           // ah, ein Besitzer!
+    ret[MY_AL_DESTRUCT]=destruct_time-time();   // und eine Lebensdauer!
+
+    return ret;
+
+    /*
+    // normalerweise wuerde man das einfach so schreiben:
+    return (({QueryProp(P_SHORT),
+              QueryProp(P_M_ATTR_MOD),
+              getuid(owner),
+              destruct_time-time()}));
+    */
+   }
+
+   // diese hier wird gerufen, wenn das Objekt neu im Spieler
+   // erzeugt wurde (Login), also packen wir das Speicherarray wieder
+   // aus und in alle entsprechenden Variablen
+   static mixed* _set_autoloadobj(mixed *new) {
+    // wenn das Format nicht mit dem oben uebereinstimmt ist was
+    // schiefgelaufen
+    if(pointerp(new) && !owner && sizeof(new)>4 &&
+       (owner=find_player(new[MY_AL_OWNER]))) {
+     // los, zuweisen!
+
+     SetProp(P_SHORT,      new[MY_AL_SHORT]);
+     SetProp(P_M_ATTR_MOD, new[MY_AL_ATTRM]);
+     destruct_time=        time()+new[MY_AL_DESTRUCT];
+
+     call_out(#'remove,new[3]);
+    } else call_out(#'remove,0);
+
+    return new;
+   }
+
+
+   ## Variante 3: und das gleiche mit Set/Querymethoden ##
+   // Prototypen fuer Set und Query-Methoden -> man Set
+   static mixed *my_query_autoloadobj();
+   static mixed *my_set_autoloadobj(mixed *new);
+
+   void create() {
+    // Binden der Methoden
+    Set(P_AUTOLOADOBJ, #'my_query_autoloadobj, F_QUERY_METHOD);
+    Set(P_AUTOLOADOBJ, #'my_set_autoloadobj, F_SET_METHOD);
+
+    // die werden nur von mir veraendert!
+    Set(P_AUTOLOADOBJ, PROTECTED, F_MODE_AS);
+    ...
+   }
+
+   static mixed *my_query_autoloadobj () {
+     // s.o.
+   }
+
+   static mixed *my_set_autoloadobj (mixed *new) {
+     // s.o.
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_AUTOLOAD, SetProp
 
 24.Aug.2006 Gloinson@MG
diff --git a/doc/props/P_AVATAR_URI b/doc/props/P_AVATAR_URI
index 3275399..0a2437c 100644
--- a/doc/props/P_AVATAR_URI
+++ b/doc/props/P_AVATAR_URI
@@ -1,22 +1,44 @@
-NAME:
-    P_AVATAR_URI                    "p_lib_avataruri"
 
-DEFINIERT IN:
-    /sys/living/description.h
+P_AVATAR_URI
+************
 
-BESCHREIBUNG:
-    Lebewesen speichern in der Prop P_AVATAR_URI eine URI (string), welche auf
-    ein Bild im Netz verweist, welches ein Client fuer dieses Lebewesen
-    anzeigen kann.
-    Spieler koennen diese Avatar-URI mit dem Befehl 'avatar' anzeigen,
-    aendern und loeschen.
-    Avatar-URIs anderer Spieler lassen sich mit 'finger -a' ausgeben.
 
-BEMERKUNGEN:
-    Diese Property kann nur vom Spieler oder einem EM modifiziert werden.
+NAME
+====
 
-SIEHE AUCH:
-    avatar
+   P_AVATAR_URI                    "p_lib_avataruri"
 
-LETZTER AENDERUNG:
-    03.9.2011, Zesstra
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Lebewesen speichern in der Prop P_AVATAR_URI eine URI (string), welche auf
+   ein Bild im Netz verweist, welches ein Client fuer dieses Lebewesen
+   anzeigen kann.
+   Spieler koennen diese Avatar-URI mit dem Befehl 'avatar' anzeigen,
+   aendern und loeschen.
+   Avatar-URIs anderer Spieler lassen sich mit 'finger -a' ausgeben.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property kann nur vom Spieler oder einem EM modifiziert werden.
+
+
+SIEHE AUCH
+==========
+
+   avatar
+
+
+LETZTER AENDERUNG
+=================
+
+   03.9.2011, Zesstra
diff --git a/doc/props/P_AVERAGE_SIZE b/doc/props/P_AVERAGE_SIZE
index 4a61208..155528f 100644
--- a/doc/props/P_AVERAGE_SIZE
+++ b/doc/props/P_AVERAGE_SIZE
@@ -1,8 +1,21 @@
-NAME:
-    P_AVERAGE_SIZE                "average_size"                
 
-DEFINIERT IN:
-    /sys/player/description.h
+P_AVERAGE_SIZE
+**************
 
-BESCHREIBUNG:
-     Durchschnittliche Groesse eines Wesens dieser Rasse (derzeit nur Player)
+
+NAME
+====
+
+   P_AVERAGE_SIZE                "average_size"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Durchschnittliche Groesse eines Wesens dieser Rasse (derzeit nur Player)
diff --git a/doc/props/P_AVERAGE_WEIGHT b/doc/props/P_AVERAGE_WEIGHT
index 18557cc..d71c53b 100644
--- a/doc/props/P_AVERAGE_WEIGHT
+++ b/doc/props/P_AVERAGE_WEIGHT
@@ -1,8 +1,21 @@
-NAME:
-    P_AVERAGE_WEIGHT                "average_weight"
 
-DEFINIERT IN:
-    /sys/player/description.h
+P_AVERAGE_WEIGHT
+****************
 
-BESCHREIBUNG:
-     Durchschnittliche Gewicht eines Wesens dieser Rasse (derzeit nur Player)
+
+NAME
+====
+
+   P_AVERAGE_WEIGHT                "average_weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Durchschnittliche Gewicht eines Wesens dieser Rasse (derzeit nur Player)
diff --git a/doc/props/P_AWAY b/doc/props/P_AWAY
index ba2c938..5678440 100644
--- a/doc/props/P_AWAY
+++ b/doc/props/P_AWAY
@@ -1,8 +1,21 @@
-NAME:
-    P_AWAY                        "away"                        
 
-DEFINIERT IN:
-    /sys/properties.h
+P_AWAY
+******
 
-BESCHREIBUNG:
-     String der ausgegeben wird, wenn man weg ist und eine Mitteilung bekommt.
+
+NAME
+====
+
+   P_AWAY                        "away"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   String der ausgegeben wird, wenn man weg ist und eine Mitteilung bekommt.
diff --git a/doc/props/P_BAD_MSG b/doc/props/P_BAD_MSG
index e067f2a..7015a9c 100644
--- a/doc/props/P_BAD_MSG
+++ b/doc/props/P_BAD_MSG
@@ -1,27 +1,48 @@
-NAME:
-     P_BAD_MSG                     "std_food_bad_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_BAD_MSG
+*********
 
-BESCHREIBUNG:
-     Meldung, wenn eine Speise gerade verdirbt.
-     Befindet sich die Speise in einem Spieler, geht die Meldung an genau
-     diesen, liegt die Speise im Raum, geht die Meldung an alle anwesenden
-     Spieler.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "@WER1 verdirbt."
 
-SIEHE AUCH:
-     P_LIFETIME, P_RESET_LIFETIME, P_NO_BAD,
-     wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_BAD_MSG                     "std_food_bad_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung, wenn eine Speise gerade verdirbt.
+   Befindet sich die Speise in einem Spieler, geht die Meldung an genau
+   diesen, liegt die Speise im Raum, geht die Meldung an alle anwesenden
+   Spieler.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER1 verdirbt."
+
+
+SIEHE AUCH
+==========
+
+   P_LIFETIME, P_RESET_LIFETIME, P_NO_BAD,
+   wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_BLIND b/doc/props/P_BLIND
index a80814b..da86624 100644
--- a/doc/props/P_BLIND
+++ b/doc/props/P_BLIND
@@ -1,35 +1,56 @@
-NAME:
-    P_BLIND                       "blind"                       
 
-DEFINIERT IN:
-    /sys/player/viewcmd.h
+P_BLIND
+*******
 
-BESCHREIBUNG:
-    1, wenn der Spieler blind ist und nichts mehr sehen kann.
 
-    Wird von CannotSee() bei 'schau' und Betreten von Raeumen 
-    u.ae. ausgewertet.
+NAME
+====
 
-    P_BLIND kann auch auf einen String gesetzt werden, der 
-    dann statt des 'Du bist blind' ausgegeben wird.
+   P_BLIND                       "blind"
 
-BEISPIELE:
 
-    this_player()->SetProp(P_BLIND,1);
+DEFINIERT IN
+============
 
-    this_player()->SetProp(P_BLIND,"Du hast Dir vorhin so schoen die "
-                                  +"Augen ausgekratzt ... deswegen "
-                                  +"siehst Du nun nichts mehr.\n");    
-BEMERKUNGEN:
-    Um herauszufinden, ob ein Spieler etwas sehen kann oder nicht,
-    sollte man lieber if(this_player()->CannotSee() != 0) pruefen
-    statt if(this_player()->QueryProp(P_BLIND)).
+   /sys/player/viewcmd.h
 
-    Denn CannotSee() beruecksichtigt auch Nachtsicht (bzw. hier 
-    eine nicht aktivierte) und die Lichtmodifikatoren.
 
-SIEHE AUCH:
-    P_LIGHT_MODIFIER, P_PLAYER_LIGHT, CannotSee
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   1, wenn der Spieler blind ist und nichts mehr sehen kann.
+
+   Wird von CannotSee() bei 'schau' und Betreten von Raeumen
+   u.ae. ausgewertet.
+
+   P_BLIND kann auch auf einen String gesetzt werden, der
+   dann statt des 'Du bist blind' ausgegeben wird.
+
+
+BEISPIELE
+=========
+
+   this_player()->SetProp(P_BLIND,1);
+
+   this_player()->SetProp(P_BLIND,"Du hast Dir vorhin so schoen die "
+                                 +"Augen ausgekratzt ... deswegen "
+                                 +"siehst Du nun nichts mehr.\n");
+
+
+BEMERKUNGEN
+===========
+
+   Um herauszufinden, ob ein Spieler etwas sehen kann oder nicht,
+   sollte man lieber if(this_player()->CannotSee() != 0) pruefen
+   statt if(this_player()->QueryProp(P_BLIND)).
+
+   Denn CannotSee() beruecksichtigt auch Nachtsicht (bzw. hier
+   eine nicht aktivierte) und die Lichtmodifikatoren.
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT_MODIFIER, P_PLAYER_LIGHT, CannotSee
+
 Letzte Aenderung: Sa 02.11.02, 00:30:00 Uhr, von Tilly
diff --git a/doc/props/P_BODY b/doc/props/P_BODY
index 7d04581..5871adb 100644
--- a/doc/props/P_BODY
+++ b/doc/props/P_BODY
@@ -1,9 +1,22 @@
-NAME:
-    P_BODY                        "body"                        
 
-DEFINIERT IN:
-    /sys/properties.h
+P_BODY
+******
 
-BESCHREIBUNG:
-     Numerischer Wert fuer die Abwehrstaerke des blanken Koerpers
-     des Wesens.
+
+NAME
+====
+
+   P_BODY                        "body"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die Abwehrstaerke des blanken Koerpers
+   des Wesens.
diff --git a/doc/props/P_BRIEF b/doc/props/P_BRIEF
index 33ef486..f6d3769 100644
--- a/doc/props/P_BRIEF
+++ b/doc/props/P_BRIEF
@@ -1,8 +1,21 @@
-NAME:
-    P_BRIEF                       "brief"                       
 
-DEFINIERT IN:
-    /sys/player/viewcmd.h
+P_BRIEF
+*******
 
-BESCHREIBUNG:
-     Ist gesetzt, wenn der Spieler nur die Kurzbeschreibung sehen will.
+
+NAME
+====
+
+   P_BRIEF                       "brief"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/viewcmd.h
+
+
+BESCHREIBUNG
+============
+
+   Ist gesetzt, wenn der Spieler nur die Kurzbeschreibung sehen will.
diff --git a/doc/props/P_BUFFER b/doc/props/P_BUFFER
index 268f719..699f91c 100644
--- a/doc/props/P_BUFFER
+++ b/doc/props/P_BUFFER
@@ -1,9 +1,21 @@
-NAME:
-    P_BUFFER                      "buffer"                      
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_BUFFER
+********
 
-BESCHREIBUNG:
-    Zeigt an, ob der Kobold des Spielers aktiv oder nicht aktiv ist.
 
+NAME
+====
+
+   P_BUFFER                      "buffer"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Zeigt an, ob der Kobold des Spielers aktiv oder nicht aktiv ist.
diff --git a/doc/props/P_BUY_ONLY_PLANTS b/doc/props/P_BUY_ONLY_PLANTS
index 46747c4..0d15a94 100644
--- a/doc/props/P_BUY_ONLY_PLANTS
+++ b/doc/props/P_BUY_ONLY_PLANTS
@@ -1,15 +1,31 @@
-NAME:
-    P_BUY_ONLY_PLANTS              "lib_p_buy_only_plants"
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_BUY_ONLY_PLANTS
+*****************
 
-BESCHREIBUNG:
-    Diese Property kann auf 1 gesetzt werden, wenn ein Laden nur Kraeuter
-    ankaufen darf. Hierzu muss /std/room/kraeuterladen.c geerbt werden,
-    da nur dieses Objekt die Property beruecksichtigt.
 
-SIEHE AUCH:
-    /std/room/kraeuterladen.c
-----------------------------------------------------------------------------
-Last modified: 02.04.2015 Arathorn 
+NAME
+====
+
+   P_BUY_ONLY_PLANTS              "lib_p_buy_only_plants"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann auf 1 gesetzt werden, wenn ein Laden nur Kraeuter
+   ankaufen darf. Hierzu muss /std/room/kraeuterladen.c geerbt werden,
+   da nur dieses Objekt die Property beruecksichtigt.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/kraeuterladen.c
+
+Last modified: 02.04.2015 Arathorn
diff --git a/doc/props/P_CALLED_FROM_IP b/doc/props/P_CALLED_FROM_IP
index d9427d2..306241c 100644
--- a/doc/props/P_CALLED_FROM_IP
+++ b/doc/props/P_CALLED_FROM_IP
@@ -1,8 +1,21 @@
-NAME:
-    P_CALLED_FROM_IP              "called_from_ip"              
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CALLED_FROM_IP
+****************
 
-BESCHREIBUNG:
-     Letzte IP-Adr, von der aus sich der Spieler eingeloggt hat.
+
+NAME
+====
+
+   P_CALLED_FROM_IP              "called_from_ip"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Letzte IP-Adr, von der aus sich der Spieler eingeloggt hat.
diff --git a/doc/props/P_CAN_FLAGS b/doc/props/P_CAN_FLAGS
index ba3eb2a..06afe76 100644
--- a/doc/props/P_CAN_FLAGS
+++ b/doc/props/P_CAN_FLAGS
@@ -1,9 +1,22 @@
-NAME:
-    P_CAN_FLAGS                   "can_flags"                   
 
-DEFINIERT IN:
-    /sys/player/can.h
+P_CAN_FLAGS
+***********
 
-BESCHREIBUNG:
-    Flags die bestimmte Befehle freischalten:
-    CAN_EMOTE, CAN_ECHO, CAN_REMOTE, CAN_PRESAY
+
+NAME
+====
+
+   P_CAN_FLAGS                   "can_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/can.h
+
+
+BESCHREIBUNG
+============
+
+   Flags die bestimmte Befehle freischalten:
+   CAN_EMOTE, CAN_ECHO, CAN_REMOTE, CAN_PRESAY
diff --git a/doc/props/P_CAP_NAME b/doc/props/P_CAP_NAME
index 7fbe408..0069948 100644
--- a/doc/props/P_CAP_NAME
+++ b/doc/props/P_CAP_NAME
@@ -1,9 +1,22 @@
-NAME:
-    P_CAP_NAME                    "cap_name"                    
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CAP_NAME
+**********
 
-BESCHREIBUNG:
-     Name des Spielers, der dekliniert und ausgegen wird.
-     NOT YET IMPLEMENTED.
+
+NAME
+====
+
+   P_CAP_NAME                    "cap_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Name des Spielers, der dekliniert und ausgegen wird.
+   NOT YET IMPLEMENTED.
diff --git a/doc/props/P_CARRIED_VALUE b/doc/props/P_CARRIED_VALUE
index 7df9b63..8792664 100644
--- a/doc/props/P_CARRIED_VALUE
+++ b/doc/props/P_CARRIED_VALUE
@@ -1,8 +1,21 @@
-NAME:
-    P_CARRIED_VALUE               "carried"                     
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_CARRIED_VALUE
+***************
 
-BESCHREIBUNG:
-     Entschaedigung, die der Spieler beim Einloggen erhaelt.
+
+NAME
+====
+
+   P_CARRIED_VALUE               "carried"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Entschaedigung, die der Spieler beim Einloggen erhaelt.
diff --git a/doc/props/P_CHATS b/doc/props/P_CHATS
index 633cdea..51e1a5e 100644
--- a/doc/props/P_CHATS
+++ b/doc/props/P_CHATS
@@ -1,8 +1,21 @@
-NAME:
-    P_CHATS                       "chats"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CHATS
+*******
 
-BESCHREIBUNG:
-     Alist mit Strings, die das Monster zufaellig ausgibt.
+
+NAME
+====
+
+   P_CHATS                       "chats"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Alist mit Strings, die das Monster zufaellig ausgibt.
diff --git a/doc/props/P_CHAT_CHANCE b/doc/props/P_CHAT_CHANCE
index b6acf08..bd032bf 100644
--- a/doc/props/P_CHAT_CHANCE
+++ b/doc/props/P_CHAT_CHANCE
@@ -1,8 +1,21 @@
-NAME:
-    P_CHAT_CHANCE                 "chat_chance"                 
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CHAT_CHANCE
+*************
 
-BESCHREIBUNG:
-     Wahrscheinlichkeit, mit der die Chats ausgegeben werden.
+
+NAME
+====
+
+   P_CHAT_CHANCE                 "chat_chance"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wahrscheinlichkeit, mit der die Chats ausgegeben werden.
diff --git a/doc/props/P_CLASS b/doc/props/P_CLASS
index e074394..80017cc 100644
--- a/doc/props/P_CLASS
+++ b/doc/props/P_CLASS
@@ -1,19 +1,33 @@
+
 P_CLASS
-NAME:
-     P_CLASS						"class"
+*******
 
-DEFINIERT IN:
-     <thing/description.h>
 
-BESCHREIBUNG:
-     Die Klassifizierung eines Objektes, soweit sie nicht schon ueber die 
-     Rasse oder die IDs des Objektes erfolgt ist. Zum Setzen dieser Property 
-     sollte man AddClass() benutzen, zur Klassenabfrage steht 
-     is_class_member() zur Verfuegung.
-     Die moeglichen Klassen findet man in /sys/class.h
+NAME
+====
 
-SIEHE AUCH:
-     AddClass(), RemoveClass(), is_class_member()
+   P_CLASS                                            "class"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Die Klassifizierung eines Objektes, soweit sie nicht schon ueber die
+   Rasse oder die IDs des Objektes erfolgt ist. Zum Setzen dieser Property
+   sollte man AddClass() benutzen, zur Klassenabfrage steht
+   is_class_member() zur Verfuegung.
+   Die moeglichen Klassen findet man in /sys/class.h
+
+
+SIEHE AUCH
+==========
+
+   AddClass(), RemoveClass(), is_class_member()
+
 Last modified: Sun May 19 20:30:09 1996 by Wargon
diff --git a/doc/props/P_CLOCKMSG b/doc/props/P_CLOCKMSG
index 8b72d68..6f85b56 100644
--- a/doc/props/P_CLOCKMSG
+++ b/doc/props/P_CLOCKMSG
@@ -1,8 +1,21 @@
-NAME:
-    P_CLOCKMSG                    "clockmsg"                    
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CLOCKMSG
+**********
 
-BESCHREIBUNG:
-     Die Meldung wird zur vollen Stunde ausgegeben
+
+NAME
+====
+
+   P_CLOCKMSG                    "clockmsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Die Meldung wird zur vollen Stunde ausgegeben
diff --git a/doc/props/P_CLONER b/doc/props/P_CLONER
index 659b614..75e9d02 100644
--- a/doc/props/P_CLONER
+++ b/doc/props/P_CLONER
@@ -1,12 +1,28 @@
-NAME:
-    P_CLONER                      "cloner"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CLONER
+********
 
-BESCHREIBUNG:
-     Enthaelt einen String mit dem Namen desjenigen, der das Objekt gecloned 
-     hat.
 
-SIEHE AUCH:
-     P_CLONE_TIME
+NAME
+====
+
+   P_CLONER                      "cloner"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String mit dem Namen desjenigen, der das Objekt gecloned
+   hat.
+
+
+SIEHE AUCH
+==========
+
+   P_CLONE_TIME
diff --git a/doc/props/P_CLONE_MSG b/doc/props/P_CLONE_MSG
index d9c96a2..d16f42e 100644
--- a/doc/props/P_CLONE_MSG
+++ b/doc/props/P_CLONE_MSG
@@ -1,8 +1,21 @@
-NAME:
-    P_CLONE_MSG                   "clone_msg"                   
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_CLONE_MSG
+***********
 
-BESCHREIBUNG:
-     Meldung, die beim Clonen eines Obj ausgegegen wird (nur Magier)
+
+NAME
+====
+
+   P_CLONE_MSG                   "clone_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, die beim Clonen eines Obj ausgegegen wird (nur Magier)
diff --git a/doc/props/P_CLONE_TIME b/doc/props/P_CLONE_TIME
index a904846..fb7c3e5 100644
--- a/doc/props/P_CLONE_TIME
+++ b/doc/props/P_CLONE_TIME
@@ -1,14 +1,30 @@
-NAME:
-    P_CLONE_TIME                   "clone_time"                      
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_CLONE_TIME
+************
 
-BESCHREIBUNG:
-     Enthaelt die Clone-Time eines Objektes.
-     Heutzutage obsolet, bitte stattdessen lieber die Efun object_time()
-     benutzen.
 
-SIEHE AUCH:
-     Verwandt: object_time(E)
-     Aehnlich: program_time(E)
+NAME
+====
+
+   P_CLONE_TIME                   "clone_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die Clone-Time eines Objektes.
+   Heutzutage obsolet, bitte stattdessen lieber die Efun object_time()
+   benutzen.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: object_time(E)
+   Aehnlich: program_time(E)
diff --git a/doc/props/P_CLOTHING b/doc/props/P_CLOTHING
index 793f098..3458058 100644
--- a/doc/props/P_CLOTHING
+++ b/doc/props/P_CLOTHING
@@ -1,22 +1,42 @@
+
+P_CLOTHING
+**********
+
+
 P_CLOTHINGS
+===========
 
-NAME:
-     P_CLOTHING                     "std:clothing"
 
-DEFINIERT IN:
-     <living/clothing.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Array mit der getragenen nicht-schuetzenden Kleidung des Lebewesen.
-     
-     Falls ihr die Kleidung des Lebewesens, ggf. mit bestimten Kriterien,
-     ermitteln wollt, benutzt hierfuer bitte die Funktion FilterClothing()
-     statt selber ueber dieses Array zu laufen.
+   P_CLOTHING                     "std:clothing"
 
-     Diese Property kann nur vom Lebewesen selber beschrieben werden.
-     
-SIEHE AUCH:
-     Verwandt:		QueryArmourByType(L), FilterClothing(), FilterArmours()
-                  Wear(), Unwear(), P_ARMOURS
+
+DEFINIERT IN
+============
+
+   <living/clothing.h>
+
+
+BESCHREIBUNG
+============
+
+   Array mit der getragenen nicht-schuetzenden Kleidung des Lebewesen.
+
+
+
+   Falls ihr die Kleidung des Lebewesens, ggf. mit bestimten Kriterien,
+   ermitteln wollt, benutzt hierfuer bitte die Funktion FilterClothing()
+   statt selber ueber dieses Array zu laufen.
+
+   Diese Property kann nur vom Lebewesen selber beschrieben werden.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:          QueryArmourByType(L), FilterClothing(), FilterArmours()
+                Wear(), Unwear(), P_ARMOURS
 
 14.03.2009, Zesstra
diff --git a/doc/props/P_CMSG b/doc/props/P_CMSG
index 9001722..e38f085 100644
--- a/doc/props/P_CMSG
+++ b/doc/props/P_CMSG
@@ -1,8 +1,21 @@
-NAME:
-    P_CMSG                        "clonemsg"                    
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_CMSG
+******
 
-BESCHREIBUNG:
-     *** OBSOLET! *** Siehe P_CLONE_MSG
+
+NAME
+====
+
+   P_CMSG                        "clonemsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! *** Siehe P_CLONE_MSG
diff --git a/doc/props/P_CNT_STATUS b/doc/props/P_CNT_STATUS
index cd92324..5bcc584 100644
--- a/doc/props/P_CNT_STATUS
+++ b/doc/props/P_CNT_STATUS
@@ -1,9 +1,22 @@
-NAME:
-    P_CNT_STATUS                  "cnt_status"                  
 
-DEFINIERT IN:
-    /sys/container.h
+P_CNT_STATUS
+************
 
-BESCHREIBUNG:
-     Status des Containers (offen, geschlossen, abgeschlossen)
-     siehe auch /sys/container.h
+
+NAME
+====
+
+   P_CNT_STATUS                  "cnt_status"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Status des Containers (offen, geschlossen, abgeschlossen)
+   siehe auch /sys/container.h
diff --git a/doc/props/P_COMBATCMDS b/doc/props/P_COMBATCMDS
index c29a65f..e82336a 100644
--- a/doc/props/P_COMBATCMDS
+++ b/doc/props/P_COMBATCMDS
@@ -1,31 +1,44 @@
-NAME:
-    P_COMBATCMDS                  "combatcmds"                  
 
-DEFINIERT IN:
-    /sys/properties.h
+P_COMBATCMDS
+************
 
-BESCHREIBUNG:
-     Fuer den Kampf gebrauchbare Befehle spezieller Objekte (damit auch
-     Monster sie automatisch richtig anwenden koennen)
-     Der Inhalt von P_COMBATCMDS ist ein Mapping, der Key ist das Kommando,
-     um den Gegenstand zu benutzen (also z.B. "wirf flammenkugel"), und der
-     Value ein weiteres Mapping mit Zusatzinfos (definiert in /sys/combat.h).
-     Folgende Keys sind definiert:
-     - C_MIN, C_AVG, C_MAX:
-       minimaler, mittlerer und maximaler Schaden, den das
-       Objekt macht. Alle Angaben in LEBENSPUNKTEN, d.h. Defend-Einheiten/10.
-       Bei einem Aufruf wie 'enemy->Defend(200+random(200), ...)' ist dann
-       C_MIN=20, C_AVG=30, C_MAX=40.
-     - C_DTYPES:
-       Array mit dem Schadenstyp oder den Schadenstypen. Beim Eisstab
-       wuerde der Eintrag dann 'C_DTYPES:({DT_COLD})' lauten.
-     - C_HEAL:
-       Sollte das Kampfobjekt ueber die Moeglichkeit verfuegen, den Anwender
-       irgendwie zu heilen, so wird hier die Heilung in LP/MP eingetragen.
-       Das funktioniert auch bei Objekten, die nur heilen, also sonst
-       nichts mit Kampf zu tun haben.
-       Im Lupinental z.B. gibt es Pfirsiche, die beim Essen 5LP heilen. Da
-       kann man dann 'SetProp(P_COMBATCMDS, (["iss pfirsich":([C_HEAL:5])]))'
-       eintragen.
-     Es sind auch mehrere Kommandos moeglich, z.B. bei Objekten, die sowohl
-     heilen als auch Kampfwirkung haben.
+
+NAME
+====
+
+   P_COMBATCMDS                  "combatcmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Fuer den Kampf gebrauchbare Befehle spezieller Objekte (damit auch
+   Monster sie automatisch richtig anwenden koennen)
+   Der Inhalt von P_COMBATCMDS ist ein Mapping, der Key ist das Kommando,
+   um den Gegenstand zu benutzen (also z.B. "wirf flammenkugel"), und der
+   Value ein weiteres Mapping mit Zusatzinfos (definiert in /sys/combat.h).
+   Folgende Keys sind definiert:
+   - C_MIN, C_AVG, C_MAX:
+     minimaler, mittlerer und maximaler Schaden, den das
+     Objekt macht. Alle Angaben in LEBENSPUNKTEN, d.h. Defend-Einheiten/10.
+     Bei einem Aufruf wie 'enemy->Defend(200+random(200), ...)' ist dann
+     C_MIN=20, C_AVG=30, C_MAX=40.
+   - C_DTYPES:
+     Array mit dem Schadenstyp oder den Schadenstypen. Beim Eisstab
+     wuerde der Eintrag dann 'C_DTYPES:({DT_COLD})' lauten.
+   - C_HEAL:
+     Sollte das Kampfobjekt ueber die Moeglichkeit verfuegen, den Anwender
+     irgendwie zu heilen, so wird hier die Heilung in LP/MP eingetragen.
+     Das funktioniert auch bei Objekten, die nur heilen, also sonst
+     nichts mit Kampf zu tun haben.
+     Im Lupinental z.B. gibt es Pfirsiche, die beim Essen 5LP heilen. Da
+     kann man dann 'SetProp(P_COMBATCMDS, (["iss pfirsich":([C_HEAL:5])]))'
+     eintragen.
+   Es sind auch mehrere Kommandos moeglich, z.B. bei Objekten, die sowohl
+   heilen als auch Kampfwirkung haben.
diff --git a/doc/props/P_COMMANDS b/doc/props/P_COMMANDS
index d0ff99b..5812b35 100644
--- a/doc/props/P_COMMANDS
+++ b/doc/props/P_COMMANDS
@@ -1,58 +1,76 @@
+
 P_COMMANDS
-NAME:
-     P_COMMANDS "commands"
+**********
 
-DEFINIERT IN:
-     <thing/commands.h>
 
-BESCHREIBUNG:
-     Diese Property enthaelt ein Mapping mit den Befehlen, die dem Objekt
-     zugeordnet sind.
+NAME
+====
 
-     Sie sollte nicht von Hand manipuliert werden, sondern nur ueber die
-     Funktionen AddCmd() und RemoveCmd().
+   P_COMMANDS "commands"
 
-     Das Mapping hat folgenden Aufbau:
 
-     ([ befehl : ({funktion1,...});
-                 ({flag1,...});
-                 ({regel1,...});
-                 ({id1, ...}),
-                 ({closure auf fun1, ...}),
-        ... ])
+DEFINIERT IN
+============
 
-     Die Eintraege entsprechen den Parametern des AddCmd()-Aufrufs, sind
-     aber in anderer Form. Als Beispiel:
+   <thing/commands.h>
 
-     AddCmd(verb,fun1,1);
-     AddCmd(verb+syn1a|syn1b&syn2a|syn2b|syn2c, fun2,
-            error1_notify|error2_notify^error2_write);
-     -->
-     ([verb:
-        ({fun1,fun2});                                        // funs
-        ({1,({error1_notify, error2_write^error2_say, 1})});  // flags
-        ({0,({({syn1a,syn1b}),({syn2a,syn2b,syn2c})})});      // rules
-        0;                                                    // IDs
-        ({closure auf fun1, closure auf fun2}) ])             // Cache
 
-     Funs:  ({<fun1> ,...
-              'fun' kann sein: Closure
-                               String: Methodenname - wird etwas geprueft
-                               Objekt: wenn keine Methode, this_object() fuer
-                                       intern, previous_object() fuer extern
-                               0 (erloschenes externes Objekt)
-     Rules: ({<Regelsatz fuer fun1>, ({<1. Synonymgruppe>,
-                                       <2. Synonymgruppe, ...}), ...})
-     Flags: ({<Flag fuer fun1>, ({<Fehlermeldung 1. Synonymgruppe>, ... ,
-                                  [, Index fuer write anstatt notify_fail]}),
-             ... })
-     IDs:   0 oder ({<ID fuer fun1>}) oder ({0, <ID fuer fun2>}) ...
-     Cache: ({<closure fuer fun1>, ...
+BESCHREIBUNG
+============
 
-BEMERKUNGEN:
-     Cache-Closures sind bei Export immer genullt
+   Diese Property enthaelt ein Mapping mit den Befehlen, die dem Objekt
+   zugeordnet sind.
 
-SIEHE AUCH:
-     /std/thing/commands.c, AddCmd(), RemoveCmd()
+   Sie sollte nicht von Hand manipuliert werden, sondern nur ueber die
+   Funktionen AddCmd() und RemoveCmd().
 
-16. Dez 2016 Gloinson
\ No newline at end of file
+   Das Mapping hat folgenden Aufbau:
+
+   ([ befehl : ({funktion1,...});
+               ({flag1,...});
+               ({regel1,...});
+               ({id1, ...}),
+               ({closure auf fun1, ...}),
+      ... ])
+
+   Die Eintraege entsprechen den Parametern des AddCmd()-Aufrufs, sind
+   aber in anderer Form. Als Beispiel:
+
+   AddCmd(verb,fun1,1);
+   AddCmd(verb+syn1a|syn1b&syn2a|syn2b|syn2c, fun2,
+          error1_notify|error2_notify^error2_write);
+   -->
+   ([verb:
+      ({fun1,fun2});                                        // funs
+      ({1,({error1_notify, error2_write^error2_say, 1})});  // flags
+      ({0,({({syn1a,syn1b}),({syn2a,syn2b,syn2c})})});      // rules
+      0;                                                    // IDs
+      ({closure auf fun1, closure auf fun2}) ])             // Cache
+
+   Funs:  ({<fun1> ,...
+            'fun' kann sein: Closure
+                             String: Methodenname - wird etwas geprueft
+                             Objekt: wenn keine Methode, this_object() fuer
+                                     intern, previous_object() fuer extern
+                             0 (erloschenes externes Objekt)
+   Rules: ({<Regelsatz fuer fun1>, ({<1. Synonymgruppe>,
+                                     <2. Synonymgruppe, ...}), ...})
+   Flags: ({<Flag fuer fun1>, ({<Fehlermeldung 1. Synonymgruppe>, ... ,
+                                [, Index fuer write anstatt notify_fail]}),
+           ... })
+   IDs:   0 oder ({<ID fuer fun1>}) oder ({0, <ID fuer fun2>}) ...
+   Cache: ({<closure fuer fun1>, ...
+
+
+BEMERKUNGEN
+===========
+
+   Cache-Closures sind bei Export immer genullt
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/commands.c, AddCmd(), RemoveCmd()
+
+16. Dez 2016 Gloinson
diff --git a/doc/props/P_COMPILER_PATH b/doc/props/P_COMPILER_PATH
index ecd2743..e67d01f 100644
--- a/doc/props/P_COMPILER_PATH
+++ b/doc/props/P_COMPILER_PATH
@@ -1,21 +1,40 @@
-NAME:
-    P_COMPILER_PATH               "compiler_path"               
 
-DEFINIERT IN:
-    /sys/v_compiler.h
+P_COMPILER_PATH
+***************
 
-BESCHREIBUNG:
-    Directory in dem ein Virtual Compiler Objekte erzeugt.
-    Muss im virtual_compiler.c gesetzt werden.
 
-    Der VirtualCompiler muss nicht zwingend in diesem Verzeichnis
-    liegen, um zu funktionieren, sollte es aber, um die Zuordnung des VCs zu
-    "seinen" Objekten zu erleichern.
+NAME
+====
 
-BEISPIEL:
-    SetProp(P_COMPILER_PATH,"/d/region/magier/vc/");
+   P_COMPILER_PATH               "compiler_path"
 
-SIEHE AUCH:
-    P_STD_OBJECT, virtual_compiler
--------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/v_compiler.h
+
+
+BESCHREIBUNG
+============
+
+   Directory in dem ein Virtual Compiler Objekte erzeugt.
+   Muss im virtual_compiler.c gesetzt werden.
+
+   Der VirtualCompiler muss nicht zwingend in diesem Verzeichnis
+   liegen, um zu funktionieren, sollte es aber, um die Zuordnung des VCs zu
+   "seinen" Objekten zu erleichern.
+
+
+BEISPIEL
+========
+
+   SetProp(P_COMPILER_PATH,"/d/region/magier/vc/");
+
+
+SIEHE AUCH
+==========
+
+   P_STD_OBJECT, virtual_compiler
+
 Letzte Aenderung: 23.10.2007, von Zesstra
diff --git a/doc/props/P_CONSUME_MSG b/doc/props/P_CONSUME_MSG
index 8b8a05a..0300037 100644
--- a/doc/props/P_CONSUME_MSG
+++ b/doc/props/P_CONSUME_MSG
@@ -1,24 +1,45 @@
-NAME:
-     P_CONSUME_MSG                 "std_food_consume_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_CONSUME_MSG
+*************
 
-BESCHREIBUNG:
-     Meldung an den Raum exklusive Konsument, wenn eine Speise konsumiert
-     wird.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "@WER2 konsumiert @WEN1."
 
-SIEHE AUCH:
-     /std/food.c, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_CONSUME_MSG                 "std_food_consume_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Raum exklusive Konsument, wenn eine Speise konsumiert
+   wird.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER2 konsumiert @WEN1."
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_CONTAINER b/doc/props/P_CONTAINER
index ed15ca5..e779f75 100644
--- a/doc/props/P_CONTAINER
+++ b/doc/props/P_CONTAINER
@@ -1,8 +1,21 @@
-NAME:
-    P_CONTAINER                   "container"                   
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CONTAINER
+***********
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_CONTAINER                   "container"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_CONTENTS b/doc/props/P_CONTENTS
index 1212da7..fc9f20e 100644
--- a/doc/props/P_CONTENTS
+++ b/doc/props/P_CONTENTS
@@ -1,8 +1,21 @@
-NAME:
-    P_CONTENTS                    "contents"                    
 
-DEFINIERT IN:
-    /sys/container.h
+P_CONTENTS
+**********
 
-BESCHREIBUNG:
-     *** OBSOLET! ***
+
+NAME
+====
+
+   P_CONTENTS                    "contents"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! ***
diff --git a/doc/props/P_CORPSE b/doc/props/P_CORPSE
index bcb0ab6..762f03c 100644
--- a/doc/props/P_CORPSE
+++ b/doc/props/P_CORPSE
@@ -1,25 +1,43 @@
-NAME:
-    P_CORPSE		"corpse"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_CORPSE
+********
 
-BESCHREIBUNG:
-    Hier kann man angeben, welche Art von Leiche beim Tod des NPCs
-    hinterlassen wird. Damit die Leiche auf dem Moerder-Kanal senden
-    kann, muss das Leichen-Objekt /std/corpse sein oder erben.
 
-BEISPIELE:
-    Die uebliche Standardleiche befindet sich unter "/std/corpse.c",
-    welches auch die Defaulteinstellung fuer diese Property darstellt:
-      SetProp(P_CORPSE,"/std/corpse");
-    Man koennte aber auch einen Zombie entstehen lassen:
-      SetProp(P_CORPSE,PATH("zombie"));
-    PATH kennzeichnet hierbei den Pfad, unter welchem "zombie.c" zu
-    finden ist.
+NAME
+====
 
-SIEHE AUCH:
-    P_NOCORPSE, P_ZAP_MSG, P_DIE_MSG, P_MURDER_MSG, P_KILL_MSG
+   P_CORPSE            "corpse"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Hier kann man angeben, welche Art von Leiche beim Tod des NPCs
+   hinterlassen wird. Damit die Leiche auf dem Moerder-Kanal senden
+   kann, muss das Leichen-Objekt /std/corpse sein oder erben.
+
+
+BEISPIELE
+=========
+
+   Die uebliche Standardleiche befindet sich unter "/std/corpse.c",
+   welches auch die Defaulteinstellung fuer diese Property darstellt:
+     SetProp(P_CORPSE,"/std/corpse");
+   Man koennte aber auch einen Zombie entstehen lassen:
+     SetProp(P_CORPSE,PATH("zombie"));
+   PATH kennzeichnet hierbei den Pfad, unter welchem "zombie.c" zu
+   finden ist.
+
+
+SIEHE AUCH
+==========
+
+   P_NOCORPSE, P_ZAP_MSG, P_DIE_MSG, P_MURDER_MSG, P_KILL_MSG
+
 Last modified: Mon Apr 07 11:02:06 2003 by Mandragon
diff --git a/doc/props/P_CURRENTDIR b/doc/props/P_CURRENTDIR
index 87bbd5c..b1dc2a4 100644
--- a/doc/props/P_CURRENTDIR
+++ b/doc/props/P_CURRENTDIR
@@ -1,15 +1,28 @@
-NAME:
-    P_CURRENTDIR                  "currentdir"
 
-DEFINIERT IN:
-    /sys/shells.h
+P_CURRENTDIR
+************
 
-BESCHREIBUNG:
-    Momentanes Verzeichnis in dem der Magier ist.
-    (nur fuer Magier von Belang)
+
+NAME
+====
+
+   P_CURRENTDIR                  "currentdir"
+
+
+DEFINIERT IN
+============
+
+   /sys/shells.h
+
+
+BESCHREIBUNG
+============
+
+   Momentanes Verzeichnis in dem der Magier ist.
+   (nur fuer Magier von Belang)
 
 Siehe auch:
-    P_CURRENTDIR
+   P_CURRENTDIR
 
 Letzte Aenderung:
-    03.06.2015, Bugfix
+   03.06.2015, Bugfix
diff --git a/doc/props/P_CURSED b/doc/props/P_CURSED
index 9253890..c3a9061 100644
--- a/doc/props/P_CURSED
+++ b/doc/props/P_CURSED
@@ -1,39 +1,56 @@
+
 P_CURSED
+********
 
-NAME:
-     P_CURSED "cursed"
 
-DEFINIERT IN:
-     <properties.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Ruestungen und Waffen, die sich, einmal angezogen bzw. gezueckt, nicht
-     wieder entfernen lassen sollen, kann man ueber diese Property
-     realisieren. Die Waffe oder Ruestung hat dann in der Regel negative
-     Auswirkungen auf den Traeger...
+   P_CURSED "cursed"
 
-     Setzt man diese Property auf eine Zahl ungleich 0, so bekommt man bei
-     dem Versuch, den verfluchten Gegenstand auszuziehen bzw. wegzustecken
-     eine Defaultmeldung.
 
-     Traegt man dagegen einen String ein, so wird dieser beim Versuch, den
-     Gegenstand loszuwerden, ausgegeben.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Der 'Fluch' wird erst wirksam, wenn das Opfer die Waffe zueckt bzw. die
-     Ruestung anzieht. Ist dies erst einmal geschehen, helfen nur noch
-     Zaubersprueche oder fluchbrechende Institutionen.
+   <properties.h>
 
-     Moechte man, dass der Gegenstand entfluchbar ist, dann sollte er auch
-     ansprechbar sein (gueltige ID, nicht unsichtbar), da das durch derzeitige
-     Entfluchmoeglichkeiten vorausgesetzt wird.
 
-     Flueche koennen ein P_LEVEL 1-100 haben, welches die Schwierigkeit des
-     Enfluchens festlegt. Der Klerus behandelt das nicht linear.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     Eigenschaften: P_LEVEL
-     Aehnlich:      AddClass (CL_CURSE)
-     Code:         /std/armour, /std/weapon, /gilden/files.klerus/prayermaster
+   Ruestungen und Waffen, die sich, einmal angezogen bzw. gezueckt, nicht
+   wieder entfernen lassen sollen, kann man ueber diese Property
+   realisieren. Die Waffe oder Ruestung hat dann in der Regel negative
+   Auswirkungen auf den Traeger...
+
+   Setzt man diese Property auf eine Zahl ungleich 0, so bekommt man bei
+   dem Versuch, den verfluchten Gegenstand auszuziehen bzw. wegzustecken
+   eine Defaultmeldung.
+
+   Traegt man dagegen einen String ein, so wird dieser beim Versuch, den
+   Gegenstand loszuwerden, ausgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Der 'Fluch' wird erst wirksam, wenn das Opfer die Waffe zueckt bzw. die
+   Ruestung anzieht. Ist dies erst einmal geschehen, helfen nur noch
+   Zaubersprueche oder fluchbrechende Institutionen.
+
+   Moechte man, dass der Gegenstand entfluchbar ist, dann sollte er auch
+   ansprechbar sein (gueltige ID, nicht unsichtbar), da das durch derzeitige
+   Entfluchmoeglichkeiten vorausgesetzt wird.
+
+   Flueche koennen ein P_LEVEL 1-100 haben, welches die Schwierigkeit des
+   Enfluchens festlegt. Der Klerus behandelt das nicht linear.
+
+
+SIEHE AUCH
+==========
+
+   Eigenschaften: P_LEVEL
+   Aehnlich:      AddClass (CL_CURSE)
+   Code:         /std/armour, /std/weapon, /gilden/files.klerus/prayermaster
 
 25. Aug 2016 Gloinson
diff --git a/doc/props/P_DAMAGED b/doc/props/P_DAMAGED
index 671e0e0..91d5324 100644
--- a/doc/props/P_DAMAGED
+++ b/doc/props/P_DAMAGED
@@ -1,28 +1,41 @@
+
 P_DAMAGED
+*********
 
-NAME:
-     P_DAMAGED "item_damaged"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Ruestungen und Waffen koennen im Eifer des Gefechts beschaedigt werden.
-     Der Grad der Beschaedigung sollte in dieser Property festgehalten
-     werden.
+   P_DAMAGED "item_damaged"
 
-     Bei Waffen ergibt sich die urspruengliche Waffenklasse aus der Summe
-     von aktueller Waffenklasse und dem Wert von P_DAMAGED:
-     altes P_WC = aktuelles P_WC + P_DAMAGED.
 
-     Analoges gilt fuer die Ruestungsklasse einer beschaedigten Ruestung:
-     altes P_AC = aktuelles P_AC + P_DAMAGED.
+DEFINIERT IN
+============
 
-     P_DAMAGED bitte niemals direkt setzen, sondern immer ueber
-     die Funktion Damage() manipulieren!
+   <combat.h>
 
-SIEHE AUCH:
-     /std/armour.c, /std/weapon.c, TakeFlaw(), QueryFlaw(), Damage()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Ruestungen und Waffen koennen im Eifer des Gefechts beschaedigt werden.
+   Der Grad der Beschaedigung sollte in dieser Property festgehalten
+   werden.
+
+   Bei Waffen ergibt sich die urspruengliche Waffenklasse aus der Summe
+   von aktueller Waffenklasse und dem Wert von P_DAMAGED:
+   altes P_WC = aktuelles P_WC + P_DAMAGED.
+
+   Analoges gilt fuer die Ruestungsklasse einer beschaedigten Ruestung:
+   altes P_AC = aktuelles P_AC + P_DAMAGED.
+
+   P_DAMAGED bitte niemals direkt setzen, sondern immer ueber
+   die Funktion Damage() manipulieren!
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, /std/weapon.c, TakeFlaw(), QueryFlaw(), Damage()
+
 02.10.2007, Zesstra
diff --git a/doc/props/P_DAMAGE_MSG b/doc/props/P_DAMAGE_MSG
index 5906a3b..e9c71a8 100644
--- a/doc/props/P_DAMAGE_MSG
+++ b/doc/props/P_DAMAGE_MSG
@@ -1,44 +1,58 @@
+
 P_DAMAGE_MSG
+************
 
-NAME:
-     P_DAMAGE_MSG      "std_p_dam_msg"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property lassen sich individuelle Treffer-/Schadensmeldungen
-     fuer dieses Lebewesen festlegen. Sie werden verwendet, falls bei
-     eingehendem Schaden der Aufrufer von Defend() Schadensmeldungen wuenscht
-     (d.h. SP_SHOW_DAMAGE != 0), jedoch keine eigenen Meldungen vorgibt.
+   P_DAMAGE_MSG      "std_p_dam_msg"
 
-     Enthaelt diese Property kein Array, werden ggf. die Standardmeldungen
-     ausgegeben.
 
-     Datenstruktur der Property:
-       ({
-        ({ int lphit1, string mess_me,
-                       string mess_en,
-                       string mess_room }),
-        ({ lphit2, mess_me, mess_en, mess_room }),
-        ...
-        ({ lphitn, mess_me, mess_en, mess_room }),
-       })
-       wobei lphit1<lphit2<...<lphitn sein muss, d.h. das Array-
-       Array ist aufsteigend sortiert.
+DEFINIERT IN
+============
 
-     Ist ein Treffer x LP hart, werden die Meldungen des lphit-
-     Arrays ausgegeben, dessen Wert am naechsten unter dem Schaden
-     liegt.
+   /sys/living/combat.h
 
-     In den Meldungen mess_me (an den Getroffenen), mess_en (an
-     den Feind), mess_room (an die restlichen Umstehenden) koennen
-     Ersatzstrings wie folgt verwendet werden:
-     @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
-     @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
 
-SIEHE AUCH:
-     Defend()
-     /std/living/combat.c
+BESCHREIBUNG
+============
+
+   In dieser Property lassen sich individuelle Treffer-/Schadensmeldungen
+   fuer dieses Lebewesen festlegen. Sie werden verwendet, falls bei
+   eingehendem Schaden der Aufrufer von Defend() Schadensmeldungen wuenscht
+   (d.h. SP_SHOW_DAMAGE != 0), jedoch keine eigenen Meldungen vorgibt.
+
+   Enthaelt diese Property kein Array, werden ggf. die Standardmeldungen
+   ausgegeben.
+
+   Datenstruktur der Property:
+     ({
+      ({ int lphit1, string mess_me,
+                     string mess_en,
+                     string mess_room }),
+      ({ lphit2, mess_me, mess_en, mess_room }),
+      ...
+      ({ lphitn, mess_me, mess_en, mess_room }),
+     })
+     wobei lphit1<lphit2<...<lphitn sein muss, d.h. das Array-
+     Array ist aufsteigend sortiert.
+
+   Ist ein Treffer x LP hart, werden die Meldungen des lphit-
+   Arrays ausgegeben, dessen Wert am naechsten unter dem Schaden
+   liegt.
+
+   In den Meldungen mess_me (an den Getroffenen), mess_en (an
+   den Feind), mess_room (an die restlichen Umstehenden) koennen
+   Ersatzstrings wie folgt verwendet werden:
+   @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
+   @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
+
+
+SIEHE AUCH
+==========
+
+   Defend()
+   /std/living/combat.c
 
 15.09.2010, Zesstra
diff --git a/doc/props/P_DAM_DESC b/doc/props/P_DAM_DESC
index 59938c7..151f555 100644
--- a/doc/props/P_DAM_DESC
+++ b/doc/props/P_DAM_DESC
@@ -1,35 +1,56 @@
+
 P_DAM_DESC
+**********
 
-NAME:
-     P_DAM_DESC "dam_desc"
 
-DEFINIERT IN:
-     <weapon/description.h>
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property befindet sich ein String oder String-Array, durch 
-     den die Langbeschreibung einer Ruestung oder Waffe ergaenzt wird,
-     wenn diese Beschaedigt ist.
+   P_DAM_DESC "dam_desc"
 
-BEMERKUNGEN:
-     Wird ein String gesetzt, so wird dieser angezeigt, wenn die Waffe
-     mehr als die Haelfte beschaedigt ist. Bei einem Array wird der
-     Text entsprechend dem Grad der Beschaedigung ausgewaehlt; das Array
-     muss in der Reihenfolge zunehmender Beschaedigung sortiert sein.
-     
-     Bei Waffen ist P_DAM_DESC defaultmaessig auf DFLT_DAM_DESC gesetzt,
-     bei Ruestungen auf 0.
 
-BEISPIELE:
-     SetProp(P_DAM_DESC,"ist beschaedigt");
-     SetProp(P_DAM_DESC,({
-         "ist etwas beschaedigt",
-         "ist beschaedigt",
-         "ist beschaedigt",
-         "ist sehr beschaedigt"}) );
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/weapon/description.c
+   <weapon/description.h>
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   In dieser Property befindet sich ein String oder String-Array, durch
+   den die Langbeschreibung einer Ruestung oder Waffe ergaenzt wird,
+   wenn diese Beschaedigt ist.
+
+
+BEMERKUNGEN
+===========
+
+   Wird ein String gesetzt, so wird dieser angezeigt, wenn die Waffe
+   mehr als die Haelfte beschaedigt ist. Bei einem Array wird der
+   Text entsprechend dem Grad der Beschaedigung ausgewaehlt; das Array
+   muss in der Reihenfolge zunehmender Beschaedigung sortiert sein.
+
+
+
+   Bei Waffen ist P_DAM_DESC defaultmaessig auf DFLT_DAM_DESC gesetzt,
+   bei Ruestungen auf 0.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_DAM_DESC,"ist beschaedigt");
+   SetProp(P_DAM_DESC,({
+       "ist etwas beschaedigt",
+       "ist beschaedigt",
+       "ist beschaedigt",
+       "ist sehr beschaedigt"}) );
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon/description.c
+
 Last modified: Mon Oct 14 15:29:00 1996 by Paracelsus
diff --git a/doc/props/P_DAM_TYPE b/doc/props/P_DAM_TYPE
index 56fb4bb..e5088d2 100644
--- a/doc/props/P_DAM_TYPE
+++ b/doc/props/P_DAM_TYPE
@@ -1,22 +1,35 @@
+
 P_DAM_TYPE
+**********
 
-NAME:
-     P_DAM_TYPE "dam_type"
 
-DEFINIERT IN:
-     <weapon.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Was fuer eine Art von Schaden richtet die Waffe an? Hier kann man einen
-     String oder ein Array von Strings angeben, je nachdem, welche Effekte
-     die Waffe ausloesen kann. Man sollte hier nur die in <combat.h>
-     definierten Schadenstypen verwenden.
+   P_DAM_TYPE "dam_type"
 
-     Fragt man diese Property ab, bekommt man uebrigens immer ein Array von
-     Strings zurueck.
 
-SIEHE AUCH:
-     /std/weapon.c
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Was fuer eine Art von Schaden richtet die Waffe an? Hier kann man einen
+   String oder ein Array von Strings angeben, je nachdem, welche Effekte
+   die Waffe ausloesen kann. Man sollte hier nur die in <combat.h>
+   definierten Schadenstypen verwenden.
+
+   Fragt man diese Property ab, bekommt man uebrigens immer ein Array von
+   Strings zurueck.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c
+
 Last modified: Sun May 19 15:23:43 1996 by Wargon
diff --git a/doc/props/P_DEADS b/doc/props/P_DEADS
index ca44cd7..03f0c07 100644
--- a/doc/props/P_DEADS
+++ b/doc/props/P_DEADS
@@ -1,9 +1,22 @@
-NAME:
-    P_DEADS                       "deads"                       
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_DEADS
+*******
 
-BESCHREIBUNG:
-     Anzahl der Tode des Spielers seit Einfuehrung dieser Property (irgendwann
-     im Dezember 94)
+
+NAME
+====
+
+   P_DEADS                       "deads"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Tode des Spielers seit Einfuehrung dieser Property (irgendwann
+   im Dezember 94)
diff --git a/doc/props/P_DEAF b/doc/props/P_DEAF
index 8745dfd..570ac06 100644
--- a/doc/props/P_DEAF
+++ b/doc/props/P_DEAF
@@ -1,10 +1,23 @@
-NAME:
-    P_DEAF                        "deaf"                        
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_DEAF
+******
 
-BESCHREIBUNG:
-     Der Spieler ist taub. Falls hier ein String steht, wird dieser bei
-     "teile ... mit" an den Mitteilenden ausgegeben, ansonsten kommt nur
-     "Soundso ist leider gerade taub.\n"
+
+NAME
+====
+
+   P_DEAF                        "deaf"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler ist taub. Falls hier ein String steht, wird dieser bei
+   "teile ... mit" an den Mitteilenden ausgegeben, ansonsten kommt nur
+   "Soundso ist leider gerade taub.\n"
diff --git a/doc/props/P_DEATH_MSG b/doc/props/P_DEATH_MSG
index 4e044bf..d5de007 100644
--- a/doc/props/P_DEATH_MSG
+++ b/doc/props/P_DEATH_MSG
@@ -1,48 +1,79 @@
-DEFINIERT IN:
-        /sys/living/combat.h
-
-BESCHREIBUNG:
-        In dieser Property kann man ein Array ablegen, das beim Tod eines
-        Spielers ausgewertet und der darin enthaltene String
-        anschliessend auf dem Todeskanal gesendet wird.
-        Der Array muss folgenden Aufbau haben:
-
-          SetProp( P_DEATH_MSG, ({ Text, Flag }) )
-          
-        Text: Der Text kann beliebig eingegeben werde. Allerdings darf 
-              er nicht mit einem '\n' abgeschlossen werden.
-        
-        Flag: Hier kann man drei Arten von Sendemethoden waehlen.
-              1. MSG_SAY      Normales Senden
-              2. MSG_GEMOTE   Genitiv-Emote
-              3. MSG_EMOTE    Emote
-
-
-BEISPIEL:
-        Der Spieler soll direkt nach seinem Tod eine Meldung auf dem 
-        Todeskanal senden.
-        
-        Nachricht auf dem Todes-Kanal:
-	
-        [Tod:Spieler] Ich will keine Beleidsbekundungen!
-        
-        void spieler_stirbt()
-	{
-         this_player()->SetProp( P_DEATH_MSG, ({ "Ich will keine "
-                                        "Beleidsbekundungen!", MSG_SAY}) );
-         this_player()->die();
-        }
-        
-        Nachricht auf dem Todes-Kanal:
-	
-        [Tod:Spieler liebt es zu sterben.]
-        
-        void spieler_stirbt()
-        {
-         this_player()->SetProp( P_DEATH_MSG, ({ "liebt es zu sterben.",
-                                                 MSG_EMOTE }) );
-         this_player()->die();
-        }
-
-SIEHE AUCH:
-        P_MURDER_MSG, P_FORCE_MURDER_MSG
+
+P_DEATH_MSG
+***********
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property kann man ein Array ablegen, das beim Tod eines
+   Spielers ausgewertet und der darin enthaltene String
+   anschliessend auf dem Todeskanal gesendet wird.
+   Der Array muss folgenden Aufbau haben:
+
+     SetProp( P_DEATH_MSG, ({ Text, Flag }) )
+
+
+
+   Text: Der Text kann beliebig eingegeben werde. Allerdings darf
+         er nicht mit einem '\n' abgeschlossen werden.
+
+
+
+   Flag: Hier kann man drei Arten von Sendemethoden waehlen.
+         1. MSG_SAY      Normales Senden
+         2. MSG_GEMOTE   Genitiv-Emote
+         3. MSG_EMOTE    Emote
+
+
+BEISPIEL
+========
+
+   Der Spieler soll direkt nach seinem Tod eine Meldung auf dem
+   Todeskanal senden.
+
+
+
+   Nachricht auf dem Todes-Kanal:
+
+
+
+   [Tod:Spieler] Ich will keine Beleidsbekundungen!
+
+
+
+   void spieler_stirbt()
+   {
+    this_player()->SetProp( P_DEATH_MSG, ({ "Ich will keine "
+                                   "Beleidsbekundungen!", MSG_SAY}) );
+    this_player()->die();
+   }
+
+
+
+   Nachricht auf dem Todes-Kanal:
+
+
+
+   [Tod:Spieler liebt es zu sterben.]
+
+
+
+   void spieler_stirbt()
+   {
+    this_player()->SetProp( P_DEATH_MSG, ({ "liebt es zu sterben.",
+                                            MSG_EMOTE }) );
+    this_player()->die();
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_MURDER_MSG, P_FORCE_MURDER_MSG
diff --git a/doc/props/P_DEATH_SPONSORED_BY b/doc/props/P_DEATH_SPONSORED_BY
index 4f86a36..cae8532 100644
--- a/doc/props/P_DEATH_SPONSORED_BY
+++ b/doc/props/P_DEATH_SPONSORED_BY
@@ -1,25 +1,42 @@
-NAME:
-    P_DEATH_SPONSORED_BY          "responsible_wizard_for_death"
 
-DEFINIERT IN:
-    /sys/living/combat.h
+P_DEATH_SPONSORED_BY
+********************
 
-BESCHREIBUNG:
-    Diese Property hat fuer den Spielverlauf keinerlei Bedeutung.
-    Doch gibt es Magier, die ihren Namen gern in /log/KILLS lesen.
-    Wird ein Spieler durch einen Npc getoetet, ist normalerweise der
-    Magier fuer den Tod verantwortlich, in dessen Verzeichnis sich 
-    das Monster befindet. 
-    Doch gibt es nun auch den Fall, dass sich das Monster in einem 
-    Verzeichnis /alle/mon/ befindet, oder der Spieler durch eine
-    Aktion im Raum oder an einem Objekt stirbt.
 
-    Ist in einem solchen Monster, Raum oder Objekt diese Property
-    gesetzt, wird der dort angebene String an das Log-File ueber-
-    geben.
+NAME
+====
 
-BEISPIEL:
-    SetProp(P_DEATH_SPONSORED_BY,"tilly");
- 
+   P_DEATH_SPONSORED_BY          "responsible_wizard_for_death"
 
-Last modified: Don Feb 15 14:01:00 2001 von Tilly
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property hat fuer den Spielverlauf keinerlei Bedeutung.
+   Doch gibt es Magier, die ihren Namen gern in /log/KILLS lesen.
+   Wird ein Spieler durch einen Npc getoetet, ist normalerweise der
+   Magier fuer den Tod verantwortlich, in dessen Verzeichnis sich
+   das Monster befindet.
+   Doch gibt es nun auch den Fall, dass sich das Monster in einem
+   Verzeichnis /alle/mon/ befindet, oder der Spieler durch eine
+   Aktion im Raum oder an einem Objekt stirbt.
+
+   Ist in einem solchen Monster, Raum oder Objekt diese Property
+   gesetzt, wird der dort angebene String an das Log-File ueber-
+   geben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_DEATH_SPONSORED_BY,"tilly");
+
+
+Last modified Don Feb 15 140100 2001 von Tilly
+==============================================
diff --git a/doc/props/P_DEFAULT_GUILD b/doc/props/P_DEFAULT_GUILD
index 28ca4e6..55abd50 100644
--- a/doc/props/P_DEFAULT_GUILD
+++ b/doc/props/P_DEFAULT_GUILD
@@ -1,25 +1,43 @@
-NAME:
-	P_DEFAULT_GUILD			"default_guild"
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_DEFAULT_GUILD
+***************
 
-BESCHREIBUNG:
-	Diese Property enthaelt den Namen der Gilde, welcher der Spieler
-	standardmaessig angehoert. Der Name wird hierbei in Form eines
-	kleingeschriebenen Strings angegeben. Ist P_GUILD gleich Null, so
-	wird bei der Abfrage selbiger Property hierfuer der Eintrag von
-	P_DEFAULT_GUILD eingesetzt.
 
-BEMERKUNGEN:
-	Nach dem ersten Einloggen des Spielers wird ebenfalls dieser Eintrag
-	genutzt, um die Gildenzugehoerigkeit festzulegen. Dies kann dazu
-	genutzt werden, um eine rassenabhaengige Bestimmung der
-	Standardgilde zu gewaehrleisten
-	 (Felinen -> Katzenkrieger, andere Rassen -> Abenteurer).
+NAME
+====
 
-SIEHE AUCH:
-	P_GUILD, P_VISIBLE_GUILD
+   P_DEFAULT_GUILD                 "default_guild"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt den Namen der Gilde, welcher der Spieler
+   standardmaessig angehoert. Der Name wird hierbei in Form eines
+   kleingeschriebenen Strings angegeben. Ist P_GUILD gleich Null, so
+   wird bei der Abfrage selbiger Property hierfuer der Eintrag von
+   P_DEFAULT_GUILD eingesetzt.
+
+
+BEMERKUNGEN
+===========
+
+   Nach dem ersten Einloggen des Spielers wird ebenfalls dieser Eintrag
+   genutzt, um die Gildenzugehoerigkeit festzulegen. Dies kann dazu
+   genutzt werden, um eine rassenabhaengige Bestimmung der
+   Standardgilde zu gewaehrleisten
+    (Felinen -> Katzenkrieger, andere Rassen -> Abenteurer).
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, P_VISIBLE_GUILD
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_DEFAULT_NOTIFY_FAIL b/doc/props/P_DEFAULT_NOTIFY_FAIL
index 611e8df..351c96c 100644
--- a/doc/props/P_DEFAULT_NOTIFY_FAIL
+++ b/doc/props/P_DEFAULT_NOTIFY_FAIL
@@ -1,8 +1,21 @@
-NAME:
-    P_DEFAULT_NOTIFY_FAIL         "default_notify_fail"         
 
-DEFINIERT IN:
-    /sys/player.h
+P_DEFAULT_NOTIFY_FAIL
+*********************
 
-BESCHREIBUNG:
-     Welche Fehlermeldung kommt, wenn kein Objekt ein notify_fail macht?
+
+NAME
+====
+
+   P_DEFAULT_NOTIFY_FAIL         "default_notify_fail"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Welche Fehlermeldung kommt, wenn kein Objekt ein notify_fail macht?
diff --git a/doc/props/P_DEFENDERS b/doc/props/P_DEFENDERS
index b471d45..a54134a 100644
--- a/doc/props/P_DEFENDERS
+++ b/doc/props/P_DEFENDERS
@@ -1,30 +1,45 @@
-NAME:
-	P_DEFENDERS			"defenders"
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_DEFENDERS
+***********
 
-BESCHREIBUNG:
-	Diese Property wird in Lebewesen gesetzt, welche zum Beispiel durch
-	andere Lebewesen verteidigt werden. Die Verteidiger muessen
-	natuerlich bekannt sein, damit sie per InformDefend() ueber Angriffe
-	informiert werden und per DefendOther() in den laufenden Angriff
-	eingreifen koennen (zum Beispiel Schaeden abwehren oder umwandeln).
-	Es muessen jedoch nicht unbedingt Lebewesen oder echte Verteidiger
-	sein, auch beliebige Objekte koennen ueber Angriffe informiert
-	werden und in diese eingreifen. Allerdings besteht die
-	Einschraenkung, dass diese Objekte in der gleichen Umgebung sein
-	muessen, wie das zu verteidigende Lebewesen oder im zu verteidigenden
-	Lebewesen selbst.
-	Die Objekte, welche dies betrifft, sind in Form eines Arrays in
-	der Property P_DEFENDERS abgelegt.
-	Gesetzt und geloescht werden sollten die Eintraege dieses Arrays
-	jedoch nur mittels der dafuer bereitgestellten Funktionen
-	AddDefender() und RemoveDefender().
 
-SIEHE AUCH:
-	AddDefender(), RemoveDefender(), InformDefend(), DefendOther(),
-	/std/living/combat.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_DEFENDERS                     "defenders"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird in Lebewesen gesetzt, welche zum Beispiel durch
+   andere Lebewesen verteidigt werden. Die Verteidiger muessen
+   natuerlich bekannt sein, damit sie per InformDefend() ueber Angriffe
+   informiert werden und per DefendOther() in den laufenden Angriff
+   eingreifen koennen (zum Beispiel Schaeden abwehren oder umwandeln).
+   Es muessen jedoch nicht unbedingt Lebewesen oder echte Verteidiger
+   sein, auch beliebige Objekte koennen ueber Angriffe informiert
+   werden und in diese eingreifen. Allerdings besteht die
+   Einschraenkung, dass diese Objekte in der gleichen Umgebung sein
+   muessen, wie das zu verteidigende Lebewesen oder im zu verteidigenden
+   Lebewesen selbst.
+   Die Objekte, welche dies betrifft, sind in Form eines Arrays in
+   der Property P_DEFENDERS abgelegt.
+   Gesetzt und geloescht werden sollten die Eintraege dieses Arrays
+   jedoch nur mittels der dafuer bereitgestellten Funktionen
+   AddDefender() und RemoveDefender().
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), RemoveDefender(), InformDefend(), DefendOther(),
+   /std/living/combat.c
+
 Last modified: 21.09.2007, Zesstra
diff --git a/doc/props/P_DEFEND_FUNC b/doc/props/P_DEFEND_FUNC
index 02f1e8c..a9939e1 100644
--- a/doc/props/P_DEFEND_FUNC
+++ b/doc/props/P_DEFEND_FUNC
@@ -1,31 +1,50 @@
+
 P_DEFEND_FUNC
+*************
 
-NAME:
-     P_DEFEND_FUNC "defend_func"
 
-DEFINIERT IN:
-     <armour.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Falls ein Objekt eine DefendFunc() fuer die Ruestung definiert, so muss
-     dieses Objekt in dieser Property eingetragen sein.
+   P_DEFEND_FUNC "defend_func"
 
-     Die Auswertung dieser Property erfolgt in QueryDefend().
 
-BEMERKUNGEN:
-     1. Es funktioniert _nicht_ hier eine Closure reinzuschreiben.
-     2. Diese Prop laesst sich _nicht_ sinnvoll mit Set() setzen, also z.B.
-        keine Query-Methoden hier reinzuschreiben.
-     3. Definieren von _set_defend_func() oder Set-Methoden via Set()
-        funktioniert auch nicht, zumindest nicht mit dem gewuenschten
-        Ergebnis. ;-)
-     4. Bei Verwendung bitte Balance-Richtlinien beachten!
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Siehe das Beispiel zu DefendFunc()
+   <armour.h>
 
-SIEHE AUCH:
-     /std/armour.c, DefendFunc(), balance, grenzwerte
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine DefendFunc() fuer die Ruestung definiert, so muss
+   dieses Objekt in dieser Property eingetragen sein.
+
+   Die Auswertung dieser Property erfolgt in QueryDefend().
+
+
+BEMERKUNGEN
+===========
+
+   1. Es funktioniert _nicht_ hier eine Closure reinzuschreiben.
+   2. Diese Prop laesst sich _nicht_ sinnvoll mit Set() setzen, also z.B.
+      keine Query-Methoden hier reinzuschreiben.
+   3. Definieren von _set_defend_func() oder Set-Methoden via Set()
+      funktioniert auch nicht, zumindest nicht mit dem gewuenschten
+      Ergebnis. ;-)
+   4. Bei Verwendung bitte Balance-Richtlinien beachten!
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu DefendFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, DefendFunc(), balance, grenzwerte
+
 Last modified: Sat May 18 15:26:17 1996 by Wargon
diff --git a/doc/props/P_DEFUEL_AMOUNT_DRINK b/doc/props/P_DEFUEL_AMOUNT_DRINK
index 558e261..79dcfa5 100644
--- a/doc/props/P_DEFUEL_AMOUNT_DRINK
+++ b/doc/props/P_DEFUEL_AMOUNT_DRINK
@@ -1,20 +1,36 @@
-NAME:
-    P_DEFUEL_AMOUNT_DRINK                          "defuel_amount_drink"
 
-DEFINIERT IN:
-    /sys/defuel.h
+P_DEFUEL_AMOUNT_DRINK
+*********************
 
-BESCHREIBUNG:
-    Enthaelt die rassenabhaengige Enttankvorgabe fuer Trinken.
-    
-SIEHE AUCH:
-     Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-                P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
-                P_DEFUEL_AMOUNT_FOOD
-     Methoden:  defuel_drink, defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+NAME
+====
+
+   P_DEFUEL_AMOUNT_DRINK                          "defuel_amount_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige Enttankvorgabe fuer Trinken.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/props/P_DEFUEL_AMOUNT_FOOD b/doc/props/P_DEFUEL_AMOUNT_FOOD
index a8554be..f61a23e 100644
--- a/doc/props/P_DEFUEL_AMOUNT_FOOD
+++ b/doc/props/P_DEFUEL_AMOUNT_FOOD
@@ -1,20 +1,36 @@
-NAME:
-    P_DEFUEL_AMOUNT_FOOD                          "defuel_amount_food"
 
-DEFINIERT IN:
-    /sys/defuel.h
+P_DEFUEL_AMOUNT_FOOD
+********************
 
-BESCHREIBUNG:
-    Enthaelt die rassenabhaengige Enttankvorgabe fuer Essen.
-    
-SIEHE AUCH:
-     Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-                P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
-                P_DEFUEL_AMOUNT_DRINK
-     Methoden:  defuel_drink, defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+NAME
+====
+
+   P_DEFUEL_AMOUNT_FOOD                          "defuel_amount_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige Enttankvorgabe fuer Essen.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/props/P_DEFUEL_LIMIT_DRINK b/doc/props/P_DEFUEL_LIMIT_DRINK
index 0a59df4..d3a2c3c 100644
--- a/doc/props/P_DEFUEL_LIMIT_DRINK
+++ b/doc/props/P_DEFUEL_LIMIT_DRINK
@@ -1,21 +1,37 @@
-NAME:
-    P_DEFUEL_LIMIT_DRINK                          "defuel_limit_drink"
 
-DEFINIERT IN:
-    /sys/defuel.h
+P_DEFUEL_LIMIT_DRINK
+********************
 
-BESCHREIBUNG:
-    Enthaelt die rassenabhaengige minimale Menge an Trinken, ab dem ein
-    Enttankvorgang fuer den Spieler moeglich ist.
-    
-SIEHE AUCH:
-     Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-                P_DEFUEL_LIMIT_FOOD,
-                P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
-     Methoden:  defuel_drink, defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+NAME
+====
+
+   P_DEFUEL_LIMIT_DRINK                          "defuel_limit_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Menge an Trinken, ab dem ein
+   Enttankvorgang fuer den Spieler moeglich ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_FOOD,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/props/P_DEFUEL_LIMIT_FOOD b/doc/props/P_DEFUEL_LIMIT_FOOD
index 26e33fd..bb012a3 100644
--- a/doc/props/P_DEFUEL_LIMIT_FOOD
+++ b/doc/props/P_DEFUEL_LIMIT_FOOD
@@ -1,21 +1,37 @@
-NAME:
-    P_DEFUEL_LIMIT_FOOD                          "defuel_limit_food"
 
-DEFINIERT IN:
-    /sys/defuel.h
+P_DEFUEL_LIMIT_FOOD
+*******************
 
-BESCHREIBUNG:
-    Enthaelt die rassenabhaengige minimale Menge an Essen, ab dem ein
-    Enttankvorgang fuer den Spieler moeglich ist.
-    
-SIEHE AUCH:
-     Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-                P_DEFUEL_LIMIT_DRINK,
-                P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
-     Methoden:  defuel_drink, defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+NAME
+====
+
+   P_DEFUEL_LIMIT_FOOD                          "defuel_limit_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Menge an Essen, ab dem ein
+   Enttankvorgang fuer den Spieler moeglich ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/props/P_DEFUEL_TIME_DRINK b/doc/props/P_DEFUEL_TIME_DRINK
index de5eaf0..3ff3b74 100644
--- a/doc/props/P_DEFUEL_TIME_DRINK
+++ b/doc/props/P_DEFUEL_TIME_DRINK
@@ -1,21 +1,37 @@
-NAME:
-    P_DEFUEL_TIME_DRINK                          "defuel_time_drink"
 
-DEFINIERT IN:
-    /sys/defuel.h
+P_DEFUEL_TIME_DRINK
+*******************
 
-BESCHREIBUNG:
-    Enthaelt die rassenabhaengige minimale Zeit zwischen einzelnen
-    Enttankvorgaengen fuer Trinken eines Spielers.
-    
-SIEHE AUCH:
-     Aehnlich:  P_DEFUEL_TIME_FOOD,
-                P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
-                P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
-     Methoden:  defuel_drink, defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+NAME
+====
+
+   P_DEFUEL_TIME_DRINK                          "defuel_time_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Zeit zwischen einzelnen
+   Enttankvorgaengen fuer Trinken eines Spielers.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD,
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/props/P_DEFUEL_TIME_FOOD b/doc/props/P_DEFUEL_TIME_FOOD
index d7bdd79..fcd80d0 100644
--- a/doc/props/P_DEFUEL_TIME_FOOD
+++ b/doc/props/P_DEFUEL_TIME_FOOD
@@ -1,21 +1,37 @@
-NAME:
-    P_DEFUEL_TIME_FOOD                          "defuel_time_food"
 
-DEFINIERT IN:
-    /sys/defuel.h
+P_DEFUEL_TIME_FOOD
+******************
 
-BESCHREIBUNG:
-    Enthaelt die rassenabhaengige minimale Zeit zwischen einzelnen
-    Enttankvorgaengen fuer Essen eines Spielers.
-    
-SIEHE AUCH:
-     Aehnlich:  P_DEFUEL_TIME_DRINK,
-                P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
-                P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
-     Methoden:  defuel_drink, defuel_food
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
-                P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
-     Konzepte:  heilung, enttanken, food
+
+NAME
+====
+
+   P_DEFUEL_TIME_FOOD                          "defuel_time_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Zeit zwischen einzelnen
+   Enttankvorgaengen fuer Essen eines Spielers.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_DRINK,
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
 
 9. August 2015 Gloinson
diff --git a/doc/props/P_DEPARTMSG b/doc/props/P_DEPARTMSG
index 515c8bd..917e01c 100644
--- a/doc/props/P_DEPARTMSG
+++ b/doc/props/P_DEPARTMSG
@@ -1,8 +1,21 @@
-NAME:
-    P_DEPARTMSG                   "departmsg"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_DEPARTMSG
+***********
 
-BESCHREIBUNG:
-     Meldung, mit der ein Transporter ablegt.
+
+NAME
+====
+
+   P_DEPARTMSG                   "departmsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, mit der ein Transporter ablegt.
diff --git a/doc/props/P_DESCRIPTION b/doc/props/P_DESCRIPTION
index d275cc7..4d32999 100644
--- a/doc/props/P_DESCRIPTION
+++ b/doc/props/P_DESCRIPTION
@@ -1,8 +1,21 @@
-NAME:
-    P_DESCRIPTION                 "description"                 
 
-DEFINIERT IN:
-    /sys/properties.h
+P_DESCRIPTION
+*************
 
-BESCHREIBUNG:
-     Beschreibung des Spielers
+
+NAME
+====
+
+   P_DESCRIPTION                 "description"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Beschreibung des Spielers
diff --git a/doc/props/P_DESTROY_BAD b/doc/props/P_DESTROY_BAD
index d563af9..94f00e5 100644
--- a/doc/props/P_DESTROY_BAD
+++ b/doc/props/P_DESTROY_BAD
@@ -1,29 +1,52 @@
-NAME:
-     P_DESTROY_BAD                 "std_food_destroy_bad"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_DESTROY_BAD
+*************
 
-BESCHREIBUNG:
-     Speichert den Wert fuer das Verhalten, wenn eine Speise verdirbt.
-     Dieses Verhalten wird in make_bad() umgesetzt.
-     
-     DESTROY_BAD   : Die Speise wird beim Verderben zerstoert
-                     bzw. der Behaelter wird geleert
-     DESTROY_NEVER : Die Speise wird beim Verderben nicht zerstoert
-     pos. Integer  : Anzahl der Sekunden, die zwischen Verderben
-                     und Zerstoeren der Speise liegen sollen
-     
-BEMERKUNGEN:
-     Ist ein positiver Integer-Wert in dieser Property gespeichert, wird nach
-     Ausfuehren der Methode make_bad() nach Ablauf der angegebenen Sekunden
-     ein weiterer Reset ausgeloest, der make_destroy() aufruft.
-     
-DEFAULT:
-     Initial ist diese Property auf DESTROY_BAD gesetzt.
 
-SIEHE AUCH:
-     /std/food.c, wiz/food
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_DESTROY_BAD                 "std_food_destroy_bad"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Speichert den Wert fuer das Verhalten, wenn eine Speise verdirbt.
+   Dieses Verhalten wird in make_bad() umgesetzt.
+
+
+
+   DESTROY_BAD   : Die Speise wird beim Verderben zerstoert
+                   bzw. der Behaelter wird geleert
+   DESTROY_NEVER : Die Speise wird beim Verderben nicht zerstoert
+   pos. Integer  : Anzahl der Sekunden, die zwischen Verderben
+                   und Zerstoeren der Speise liegen sollen
+
+
+BEMERKUNGEN
+===========
+
+   Ist ein positiver Integer-Wert in dieser Property gespeichert, wird nach
+   Ausfuehren der Methode make_bad() nach Ablauf der angegebenen Sekunden
+   ein weiterer Reset ausgeloest, der make_destroy() aufruft.
+
+
+DEFAULT
+=======
+
+   Initial ist diese Property auf DESTROY_BAD gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_DESTRUCT_MSG b/doc/props/P_DESTRUCT_MSG
index 4b7e7e9..334c374 100644
--- a/doc/props/P_DESTRUCT_MSG
+++ b/doc/props/P_DESTRUCT_MSG
@@ -1,8 +1,21 @@
-NAME:
-    P_DESTRUCT_MSG                "destruct_msg"                
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_DESTRUCT_MSG
+**************
 
-BESCHREIBUNG:
-     Meldung, die beim Destructen Obj ausgegegen wird (nur Magier)
+
+NAME
+====
+
+   P_DESTRUCT_MSG                "destruct_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, die beim Destructen Obj ausgegegen wird (nur Magier)
diff --git a/doc/props/P_DETAILS b/doc/props/P_DETAILS
index e23513a..e14c15c 100644
--- a/doc/props/P_DETAILS
+++ b/doc/props/P_DETAILS
@@ -1,25 +1,44 @@
-NAME:
-    P_DETAILS            "details"
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_DETAILS
+*********
 
-BESCHREIBUNG:
-    Diese Property enthaelt ein Mapping, in der Details im Objekt
-    definiert werden und Beschreibungen, die ausgegeben werden, wenn man
-    sich diese Details anschaut.
 
-BEMERKUNGEN:
-    Man kann diese Property nicht per SetProp() veraendern, sondern muss die
-    entsprechenden Funktionen nutzen.
-    AddSpecialDetail() und RemoveSpecialDetail() sollten nicht mehr
-    verwendet werden.
+NAME
+====
 
-SIEHE AUCH:
-    Setzen:    AddDetail()
-    Loeschen:  RemoveDetail()
-    Aehnlich:  P_SPECIAL_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail()
-    Sonstiges: GetDetail(), break_string()
+   P_DETAILS            "details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man kann diese Property nicht per SetProp() veraendern, sondern muss die
+   entsprechenden Funktionen nutzen.
+   AddSpecialDetail() und RemoveSpecialDetail() sollten nicht mehr
+   verwendet werden.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail()
+   Loeschen:  RemoveDetail()
+   Aehnlich:  P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail()
+   Sonstiges: GetDetail(), break_string()
 
 27. Jan 2013 Gloinson
diff --git a/doc/props/P_DIE_MSG b/doc/props/P_DIE_MSG
index 99f1d7c..0bd5d17 100644
--- a/doc/props/P_DIE_MSG
+++ b/doc/props/P_DIE_MSG
@@ -1,40 +1,56 @@
+
 P_DIE_MSG
+*********
 
-NAME:
-     P_DIE_MSG			"die_msg"
 
-DEFINIERT IN:
-     /sys/properties.h
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property uebergibt man einen String, der ausgegeben wird, wenn
-     das Lebewesen stirbt. Ist die Property nicht gesetzt, so wird als String
-     benutzt:
-	" faellt tot zu Boden.\n".
+   P_DIE_MSG                  "die_msg"
 
-     Der Name des Lebewesens wird dem String vor der Ausgabe vorangestellt.
-     Der Satzumbruch am Zeilenende und das Leerzeichen nach dem Namen des
-     Lebewesens muss man selbst angegeben. Es sollte allerdings beachtet
-     werden, dass ein Lebewesen, das durch Gift getoetet wird, eine spezielle
-     nicht zu beeinflussende Meldung erhaelt. Es wird dann als String
-     benutzt:
-	" wird von Gift hinweggerafft und kippt um.\n".
 
-BEISPIELE:
-     Bei einem mitkaempfenden Schatten waere es eher unlogisch, wenn nach
-     dessen 'Tod' eine Leiche zurueckbliebe. Eine logische Konsequenz waere
-     folgende Meldung:
-	SetProp(P_DIE_MSG," loest sich auf.\n");
-	SetProp(P_NOCORPSE,1);
+DEFINIERT IN
+============
 
-     Damit dann auch wirklich keine Leiche zurueckbleibt, wird zusaetzlich
-     die Property P_NOCORPSE gesetzt.
+   /sys/properties.h
 
-SIEHE AUCH:
-     Tod:		die(L)
-     Todesmeldungen:	P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG
-			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /std/corpse.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   In dieser Property uebergibt man einen String, der ausgegeben wird, wenn
+   das Lebewesen stirbt. Ist die Property nicht gesetzt, so wird als String
+   benutzt:
+      " faellt tot zu Boden.\n".
+
+   Der Name des Lebewesens wird dem String vor der Ausgabe vorangestellt.
+   Der Satzumbruch am Zeilenende und das Leerzeichen nach dem Namen des
+   Lebewesens muss man selbst angegeben. Es sollte allerdings beachtet
+   werden, dass ein Lebewesen, das durch Gift getoetet wird, eine spezielle
+   nicht zu beeinflussende Meldung erhaelt. Es wird dann als String
+   benutzt:
+      " wird von Gift hinweggerafft und kippt um.\n".
+
+
+BEISPIELE
+=========
+
+   Bei einem mitkaempfenden Schatten waere es eher unlogisch, wenn nach
+   dessen 'Tod' eine Leiche zurueckbliebe. Eine logische Konsequenz waere
+   folgende Meldung:
+      SetProp(P_DIE_MSG," loest sich auf.\n");
+      SetProp(P_NOCORPSE,1);
+
+   Damit dann auch wirklich keine Leiche zurueckbleibt, wird zusaetzlich
+   die Property P_NOCORPSE gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_DISABLE_ATTACK b/doc/props/P_DISABLE_ATTACK
index 25e051d..37544ae 100644
--- a/doc/props/P_DISABLE_ATTACK
+++ b/doc/props/P_DISABLE_ATTACK
@@ -1,46 +1,64 @@
-NAME:
-    P_DISABLE_ATTACK              "disable_attack"              
 
-DEFINIERT IN:
-    /sys/properties.h
+P_DISABLE_ATTACK
+****************
 
-BESCHREIBUNG:
-    Das Lebewesen kann nicht angreifen. Beim Setzen der Property ist es
-    wichtig, SetProp() zu benutzen und die Anzahl der Kampfrunden anzugeben,
-    die das Lebewesen paralysiert sein soll.
 
-    Ein negativer Wert ist nicht gueltig. Bei mehr als 30 Kampfrunden wird
-    die Paralyse auf 30 Kampfrunden gekappt.
+NAME
+====
 
-    Fuer jede Paralyse bekommt ein Living eine ebenso lange Schutzzeit nach
-    der Paralyse gewaehrt. Versucht man, vor Ablauf der Paralyse
-    P_DISABLE_ATTACK hoeher zu setzen (oder setzt man innerhalb der folgenden
-    Schutzzeit P_DISABLE_ATTACK auf > 0), wird DISABLE_TOO_EARLY von SetProp
-    zurueck gegeben.
-    Eine Reduktion von einem P_DISABLE_ATTACK ist moeglich, allerdings
-    reduziert dies _nicht_ eine einmal gesetzte Schutzzeit.
+   P_DISABLE_ATTACK              "disable_attack"
 
-    Einen Gegner,der nie paralysiert werden koennen soll, kann man einfach
-    per 
 
-    Set(P_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);
+DEFINIERT IN
+============
 
-    erstellen, da bei diesem der Wert von P_DISABLE_ATTACK nicht mehr mit
-    einem normalen SetProp()-Aufruf geaendert werden kann.
+   /sys/properties.h
 
-BEISPIELE:
-    // Gegner 17 Runden lang paralysieren, ohne Ruecksicht auf fruehere P.
-    // (in diesem Moment ist das Living bis time() + 4 * 17 vor laengerer
-    //  oder erneuter Paralyse geschuetzt)
-    en->SetProp(P_DISABLE_ATTACK, 17);
-    // Der Gegner kann jetzt fuer 34 Kampfrunden nicht erneut paralysiert
-    // werden.
-    // Paralyse reduzieren auf 10 Kampfrunden
-    en->SetProp(P_DISABLE_ATTACK, 10);
-    // Die Schutzzeit ist immer noch bei 34 Kampfrunden, nicht bei 20.
 
-SIEHE AUCH:
-    P_NEXT_DISABLE_ATTACK
+BESCHREIBUNG
+============
+
+   Das Lebewesen kann nicht angreifen. Beim Setzen der Property ist es
+   wichtig, SetProp() zu benutzen und die Anzahl der Kampfrunden anzugeben,
+   die das Lebewesen paralysiert sein soll.
+
+   Ein negativer Wert ist nicht gueltig. Bei mehr als 30 Kampfrunden wird
+   die Paralyse auf 30 Kampfrunden gekappt.
+
+   Fuer jede Paralyse bekommt ein Living eine ebenso lange Schutzzeit nach
+   der Paralyse gewaehrt. Versucht man, vor Ablauf der Paralyse
+   P_DISABLE_ATTACK hoeher zu setzen (oder setzt man innerhalb der folgenden
+   Schutzzeit P_DISABLE_ATTACK auf > 0), wird DISABLE_TOO_EARLY von SetProp
+   zurueck gegeben.
+   Eine Reduktion von einem P_DISABLE_ATTACK ist moeglich, allerdings
+   reduziert dies _nicht_ eine einmal gesetzte Schutzzeit.
+
+   Einen Gegner,der nie paralysiert werden koennen soll, kann man einfach
+   per
+
+   Set(P_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);
+
+   erstellen, da bei diesem der Wert von P_DISABLE_ATTACK nicht mehr mit
+   einem normalen SetProp()-Aufruf geaendert werden kann.
+
+
+BEISPIELE
+=========
+
+   // Gegner 17 Runden lang paralysieren, ohne Ruecksicht auf fruehere P.
+   // (in diesem Moment ist das Living bis time() + 4 * 17 vor laengerer
+   //  oder erneuter Paralyse geschuetzt)
+   en->SetProp(P_DISABLE_ATTACK, 17);
+   // Der Gegner kann jetzt fuer 34 Kampfrunden nicht erneut paralysiert
+   // werden.
+   // Paralyse reduzieren auf 10 Kampfrunden
+   en->SetProp(P_DISABLE_ATTACK, 10);
+   // Die Schutzzeit ist immer noch bei 34 Kampfrunden, nicht bei 20.
+
+
+SIEHE AUCH
+==========
+
+   P_NEXT_DISABLE_ATTACK
 
 19.08.2014, Zesstra
-
diff --git a/doc/props/P_DISABLE_COMMANDS b/doc/props/P_DISABLE_COMMANDS
index f0318e0..e66910a 100644
--- a/doc/props/P_DISABLE_COMMANDS
+++ b/doc/props/P_DISABLE_COMMANDS
@@ -1,74 +1,100 @@
+
 P_DISABLE_COMMANDS
+******************
 
-NAME:
-     P_DISABLE_COMMANDS             "p_lib_disablecommands"
 
-DEFINIERT IN:
-     /sys/player/command.h
+NAME
+====
 
-BESCHREIBUNG:
-    Mit dieser Prop kann man verhindern, dass Kommandos eines Spielers
-    verarbeitet werden. Dies ist z.B. in Sequenzen nuetzlich, wo der Spieler
-    rein passiv konsumieren soll.
-    In diese Property muss ein Array mit 2 oder 3 Elementen geschrieben 
-    werden:
-       1) Endzeitpunkt in Sekunden seit 1.1.1970 (int)
-       2) Meldung (String oder Closure)
-       3) (optional) Array von trotzdem erlaubten Verben (string*)
-         (nur ausgewertet, wenn die Meldung ein String ist)
-    
-    Ist die Meldung ein String, wird dieser einfach bei jedem Kommando so wie
-    er ist an den Spieler ausgegeben und das Kommando abgebrochen.
-    Ist die Meldung eine Closure wird diese bei jedem Kommando aufgerufen und
-    das Kommando abgebrochen, wenn sie einen Rueckgabewert != 0 zurueckgibt.
-    In diesem Fall ist die gerufene Funktion dafuer verantwortlich, geeignete
-    Meldungen an den Spieler auszugeben!
-    Der Funktion wird der vom Spieler eingebene Befehl (string) als erstes
-    Argument uebergeben. Zu diesem Zeitpunkt wurde alle Aliase schon
-    ausgewertet. Die Funktion kann den Kommandogeber via this_player()
-    ermitteln.
-    Fuer weitere Informationen steht auch command_stack() zur Verfuegung,
-    allerdings ist dort die Alias-Ersetzung nicht beruecksichtigt.
+   P_DISABLE_COMMANDS             "p_lib_disablecommands"
 
-    Die Ausnahmeliste wird nur fuer simple Strings als Meldung ausgewertet,
-    wird eine Closure verwendet, kann diese besser selber die Ausnahmen
-    bestimmen.
-    
-    Fragt man diese Prop ab, erhaelt man ein Array mit 4 Elementen: setzendes
-    Objekt (object), Ablaufzeit (int), Meldung (String oder Closure) und
-    Liste von Ausnahmen (string*).
 
-BEMERKUNGEN:
-    1. Die Prop wird fuer Magier mit eingeschaltetem P_WANTS_TO_LEARN
-       ignoriert.
-    2. Wenn das Objekt zerstoert wird, was die Prop gesetzt hat, wird der
-       Eintrag unwirksam.
-    3. Wenn diese Prop gesetzt und nicht abgelaufen ist, kann nur das gleiche
-       Objekt sie mit neuen Daten ueberschreiben. Alle anderen Objekte koennen
-       die Prop nur loeschen. Dies soll verhindern, dass Magier unabsichtlich
-       einfach anderer Leute Eintraege ueberschreiben. Dementsprechend: Lasst
-       die Finger davon, wenn die schon gesetzt ist. ;-)
-    4. Diese Prop darf _ausschliesslich_ mit SetProp() und QueryProp() benutzt
-       werden, Set() und Query() funktionieren _nicht_.
-    5. Es gibt einige Verben, die NIE blockiert werden. Zur Zeit sind dies
-       "mrufe", "mschau", "bug", "idee", "typo" und "detail".
-    6. Bitte nicht missbrauchen, speziell nicht dazu, die Kommandos von
-       Spieler zu ueberwachen/mitzuschreiben. Das Setzen dieser Prop wird 
-       geloggt.
+DEFINIERT IN
+============
 
-BEISPIEL:
+   /sys/player/command.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Prop kann man verhindern, dass Kommandos eines Spielers
+   verarbeitet werden. Dies ist z.B. in Sequenzen nuetzlich, wo der Spieler
+   rein passiv konsumieren soll.
+   In diese Property muss ein Array mit 2 oder 3 Elementen geschrieben
+   werden:
+      1) Endzeitpunkt in Sekunden seit 1.1.1970 (int)
+      2) Meldung (String oder Closure)
+      3) (optional) Array von trotzdem erlaubten Verben (string*)
+        (nur ausgewertet, wenn die Meldung ein String ist)
+
+
+
+   Ist die Meldung ein String, wird dieser einfach bei jedem Kommando so wie
+   er ist an den Spieler ausgegeben und das Kommando abgebrochen.
+   Ist die Meldung eine Closure wird diese bei jedem Kommando aufgerufen und
+   das Kommando abgebrochen, wenn sie einen Rueckgabewert != 0 zurueckgibt.
+   In diesem Fall ist die gerufene Funktion dafuer verantwortlich, geeignete
+   Meldungen an den Spieler auszugeben!
+   Der Funktion wird der vom Spieler eingebene Befehl (string) als erstes
+   Argument uebergeben. Zu diesem Zeitpunkt wurde alle Aliase schon
+   ausgewertet. Die Funktion kann den Kommandogeber via this_player()
+   ermitteln.
+   Fuer weitere Informationen steht auch command_stack() zur Verfuegung,
+   allerdings ist dort die Alias-Ersetzung nicht beruecksichtigt.
+
+   Die Ausnahmeliste wird nur fuer simple Strings als Meldung ausgewertet,
+   wird eine Closure verwendet, kann diese besser selber die Ausnahmen
+   bestimmen.
+
+
+
+   Fragt man diese Prop ab, erhaelt man ein Array mit 4 Elementen: setzendes
+   Objekt (object), Ablaufzeit (int), Meldung (String oder Closure) und
+   Liste von Ausnahmen (string*).
+
+
+BEMERKUNGEN
+===========
+
+   1. Die Prop wird fuer Magier mit eingeschaltetem P_WANTS_TO_LEARN
+      ignoriert.
+   2. Wenn das Objekt zerstoert wird, was die Prop gesetzt hat, wird der
+      Eintrag unwirksam.
+   3. Wenn diese Prop gesetzt und nicht abgelaufen ist, kann nur das gleiche
+      Objekt sie mit neuen Daten ueberschreiben. Alle anderen Objekte koennen
+      die Prop nur loeschen. Dies soll verhindern, dass Magier unabsichtlich
+      einfach anderer Leute Eintraege ueberschreiben. Dementsprechend: Lasst
+      die Finger davon, wenn die schon gesetzt ist. ;-)
+   4. Diese Prop darf _ausschliesslich_ mit SetProp() und QueryProp() benutzt
+      werden, Set() und Query() funktionieren _nicht_.
+   5. Es gibt einige Verben, die NIE blockiert werden. Zur Zeit sind dies
+      "mrufe", "mschau", "bug", "idee", "typo" und "detail".
+   6. Bitte nicht missbrauchen, speziell nicht dazu, die Kommandos von
+      Spieler zu ueberwachen/mitzuschreiben. Das Setzen dieser Prop wird
+      geloggt.
+
+
+BEISPIEL
+========
+
    In einem Raum startet eine Sequenz, in der der Spieler nichts machen soll:
 
    if (!pl->QueryProp(P_DISABLE_COMMANDS))
       pl->SetProp(P_DISABLE_COMMANDS,
             ({ time() + 120, "Du bist tief in Deinem Traum gefangen!\n" }) );
    else // ... Fehlerbehandlung, falls Prop schon gesetzt ...
-   
+
+
+
    Soll die Prop aus irgendeinem Grund (vorzeitig) geloescht werden:
    pl->SetProp(P_DISABLE_COMMANDS, 0);
 
-SIEHE AUCH:
-     command(), query_command(), command_stack(), modify_command(), 
-     this_player()
+
+SIEHE AUCH
+==========
+
+   command(), query_command(), command_stack(), modify_command(),
+   this_player()
 
 01.12.2012, Zesstra
diff --git a/doc/props/P_DISTRIBUTION b/doc/props/P_DISTRIBUTION
index 529c53e..51140ae 100644
--- a/doc/props/P_DISTRIBUTION
+++ b/doc/props/P_DISTRIBUTION
@@ -1,16 +1,31 @@
-NAME:
-     P_DISTRIBUTION                "std_food_distribution"
-
-DEFINIERT IN:
-     /sys/food.h
-
-BESCHREIBUNG:
-     Verteilung der Heilung ueber mehrere Heartbeats.
-     Dieser Wert wird im entry_info als H_DISTRIBUTION dem consume() im
-     Living uebergeben.
-     
-SIEHE AUCH:
-     consume
-
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+
+P_DISTRIBUTION
+**************
+
+
+NAME
+====
+
+   P_DISTRIBUTION                "std_food_distribution"
+
+
+DEFINIERT IN
+============
+
+   /sys/food.h
+
+
+BESCHREIBUNG
+============
+
+   Verteilung der Heilung ueber mehrere Heartbeats.
+   Dieser Wert wird im entry_info als H_DISTRIBUTION dem consume() im
+   Living uebergeben.
+
+
+SIEHE AUCH
+==========
+
+   consume
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_DMSG b/doc/props/P_DMSG
index f43fbb4..40af065 100644
--- a/doc/props/P_DMSG
+++ b/doc/props/P_DMSG
@@ -1,8 +1,21 @@
-NAME:
-    P_DMSG                        "destmsg"                     
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_DMSG
+******
 
-BESCHREIBUNG:
-     *** OBSOLET! *** Siehe P_DESTRUCT_MSG
+
+NAME
+====
+
+   P_DMSG                        "destmsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! *** Siehe P_DESTRUCT_MSG
diff --git a/doc/props/P_DOMAIN b/doc/props/P_DOMAIN
index 80fd1f7..aad5288 100644
--- a/doc/props/P_DOMAIN
+++ b/doc/props/P_DOMAIN
@@ -1,31 +1,50 @@
-NAME:
-    P_DOMAIN                                        "lib_p_domain"
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_DOMAIN
+********
 
-BESCHREIBUNG:
-     Diese Property enthaelt die Region, in der ein Raum liegt, sofern er
-     in /d/ liegt.
 
-     Falls ein Raum nicht in /d/ liegt, aber es eigentlich ein Gebiet ist,
-     welches eindeutig in einer Region zugeordnet ist, kann der Magier
-     hier gezielt einen anderen Wert setzen.
-     
-     Bitte keine Regionen faelschen!
+NAME
+====
 
-BEISPIEL:
-     In /d/inseln/zesstra/vulkanweg/room/r1 liefert
-     QueryProp(P_DOMAIN)
-     ein "Inseln" zurueck.
+   P_DOMAIN                                        "lib_p_domain"
 
-     In einem Raum der Chaosgilde:
-     SetProp(P_DOMAIN, "Polar");
-     damit der Raum als Raum der Region Polar angezeigt wird.
 
-SIEHE AUCH:
-     gmcp
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Region, in der ein Raum liegt, sofern er
+   in /d/ liegt.
+
+   Falls ein Raum nicht in /d/ liegt, aber es eigentlich ein Gebiet ist,
+   welches eindeutig in einer Region zugeordnet ist, kann der Magier
+   hier gezielt einen anderen Wert setzen.
+
+
+
+   Bitte keine Regionen faelschen!
+
+
+BEISPIEL
+========
+
+   In /d/inseln/zesstra/vulkanweg/room/r1 liefert
+   QueryProp(P_DOMAIN)
+   ein "Inseln" zurueck.
+
+   In einem Raum der Chaosgilde:
+   SetProp(P_DOMAIN, "Polar");
+   damit der Raum als Raum der Region Polar angezeigt wird.
+
+
+SIEHE AUCH
+==========
+
+   gmcp
+
 23.02.2013, Zesstra
-
diff --git a/doc/props/P_DOOR_INFOS b/doc/props/P_DOOR_INFOS
index 8b5f71b..dc393da 100644
--- a/doc/props/P_DOOR_INFOS
+++ b/doc/props/P_DOOR_INFOS
@@ -1,44 +1,58 @@
-NAME:
-    P_DOOR_INFOS                  "door_infos"
 
-DEFINIERT IN:
-    /sys/doorroom.h
-
-BESCHREIBUNG:
-    Mapping mit Informationen ueber eine im Raum per NewDoor() definierte
-    Tuer. Diese Infos werden ueber /std/room/doors.c an den /obj/doormaster.c
-    weitergegeben und dem Raum, der die Tuer besitzt, als Property gesetzt.
-    Werden mehrere Tueren in einem Raum eingebunden, enthaelt das Mapping
-    entsprechend viele Eintraege.
-
-    Dieses Mapping dient zur internen Verwaltung der Tueren im
-    /obj/doormaster.c und sollte nicht per Hand veraendert werden!
-
-    Die Eintraege im Mapping haben folgende keys (definiert in
-    /sys/doorroom.h):
-
-    D_DEST : Zielraum (string)
-    D_CMDS : Befehl(e), um durch die Tuer zu gehen (string oder *string)
-    D_IDS  : IDs der Tuer (string oder *string)
-    D_FLAGS : Besondere Eigenschaften der Tuer (Tuer braucht Schluessel etc.)
-    D_LONG  : Langbeschreibung (string)
-    D_SHORT : Kurzbeschreibung (string)
-    D_NAME  : Name (string oder *string)
-    D_GENDER  : Geschlecht
-    D_FUNC    : Funktion, die VOR dem Durchschreiten der Tuer aufgerufen wird
-    D_MSGS    : Bewegungsmeldungen
-    D_FUNC2   : Funktion, die NACH dem Durchschreiten der Tuer aufgerufen wird
-    D_TESTFUNC  : Funktion die im Sartraum testet, ob die Tuer durchschritten
-                  werden darf
-    D_RESET_MSG : Meldungen beim Tuer-Reset
-    D_OPEN_WITH_MOVE : Falls gesetzt, wird die Tuer auch mit dem
-                       Bewegungsbefehl geoeffnet und durchschritten, falls
-                       Oeffnen erfolgreich
+P_DOOR_INFOS
+************
 
 
-SIEHE AUCH:
-    NewDoor(), QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
-    /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+NAME
+====
 
------------------------------------------------------------------------------
+   P_DOOR_INFOS                  "door_infos"
+
+
+DEFINIERT IN
+============
+
+   /sys/doorroom.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit Informationen ueber eine im Raum per NewDoor() definierte
+   Tuer. Diese Infos werden ueber /std/room/doors.c an den /obj/doormaster.c
+   weitergegeben und dem Raum, der die Tuer besitzt, als Property gesetzt.
+   Werden mehrere Tueren in einem Raum eingebunden, enthaelt das Mapping
+   entsprechend viele Eintraege.
+
+   Dieses Mapping dient zur internen Verwaltung der Tueren im
+   /obj/doormaster.c und sollte nicht per Hand veraendert werden!
+
+   Die Eintraege im Mapping haben folgende keys (definiert in
+   /sys/doorroom.h):
+
+   D_DEST : Zielraum (string)
+   D_CMDS : Befehl(e), um durch die Tuer zu gehen (string oder *string)
+   D_IDS  : IDs der Tuer (string oder *string)
+   D_FLAGS : Besondere Eigenschaften der Tuer (Tuer braucht Schluessel etc.)
+   D_LONG  : Langbeschreibung (string)
+   D_SHORT : Kurzbeschreibung (string)
+   D_NAME  : Name (string oder *string)
+   D_GENDER  : Geschlecht
+   D_FUNC    : Funktion, die VOR dem Durchschreiten der Tuer aufgerufen wird
+   D_MSGS    : Bewegungsmeldungen
+   D_FUNC2   : Funktion, die NACH dem Durchschreiten der Tuer aufgerufen wird
+   D_TESTFUNC  : Funktion die im Sartraum testet, ob die Tuer durchschritten
+                 werden darf
+   D_RESET_MSG : Meldungen beim Tuer-Reset
+   D_OPEN_WITH_MOVE : Falls gesetzt, wird die Tuer auch mit dem
+                      Bewegungsbefehl geoeffnet und durchschritten, falls
+                      Oeffnen erfolgreich
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
 Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/props/P_DO_DESTRUCT b/doc/props/P_DO_DESTRUCT
index 7e9a230..6aa9384 100644
--- a/doc/props/P_DO_DESTRUCT
+++ b/doc/props/P_DO_DESTRUCT
@@ -1,17 +1,36 @@
-NAME:
-    P_DO_DESTRUCT                 "do_destruct"                 
 
-DEFINIERT IN:
-    /sys/properties.h
+P_DO_DESTRUCT
+*************
 
-BESCHREIBUNG:
-     Flag, ob sich die Lichtquelle am Ende der Leuchtzeit selbst
-     zerstoert. 
 
-SIEHE AUCH:
-     Basisklassen: /std/lightsource.c
-     Properties: P_FUEL, P_LIGHTDESC, P_LIGHT
-     Methoden: AddFuel(L)
+NAME
+====
 
-LETZTE AENDERUNG:
-    22. Dez. 2015, Arathorn
+   P_DO_DESTRUCT                 "do_destruct"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Flag, ob sich die Lichtquelle am Ende der Leuchtzeit selbst
+   zerstoert.
+
+
+SIEHE AUCH
+==========
+
+   Basisklassen: /std/lightsource.c
+   Properties: P_FUEL, P_LIGHTDESC, P_LIGHT
+   Methoden: AddFuel(L)
+
+
+LETZTE AENDERUNG
+================
+
+   22. Dez. 2015, Arathorn
diff --git a/doc/props/P_DRINK b/doc/props/P_DRINK
index f2fe982..028e987 100644
--- a/doc/props/P_DRINK
+++ b/doc/props/P_DRINK
@@ -1,25 +1,39 @@
-NAME:
-     P_DRINK                       "drink"
 
-DEFINIERT IN:
-     /sys/living/life.h
+P_DRINK
+*******
 
-BESCHREIBUNG:
 
-     - Lebewesen
-       Numerischer Wert fuer den Saettigungsgrad eines Lebewesens mit
-       Getraenken. Der maximale Wert steht in P_MAX_DRINK.
+NAME
+====
 
-     - Speisen/Kneipen
-       Numerischer Wert fuer den Saettigungsgrad einer Portion eines
-       Getraenkes. Ist diese Property nicht gesetzt oder zusaetzlich
-       P_FOOD gesetzt, kann man diese Speise nicht trinken. Eine
-       funktionierende Speise _muss_ entweder P_FOOD oder P_DRINK
-       groesser 0 gesetzt haben.
-     
-SIEHE AUCH:
-     P_MAX_DRINK, P_DRINK_DELAY, consume
-     P_FOOD, P_ALCOHOL, wiz/food
+   P_DRINK                       "drink"
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Numerischer Wert fuer den Saettigungsgrad eines Lebewesens mit
+     Getraenken. Der maximale Wert steht in P_MAX_DRINK.
+
+   - Speisen/Kneipen
+     Numerischer Wert fuer den Saettigungsgrad einer Portion eines
+     Getraenkes. Ist diese Property nicht gesetzt oder zusaetzlich
+     P_FOOD gesetzt, kann man diese Speise nicht trinken. Eine
+     funktionierende Speise _muss_ entweder P_FOOD oder P_DRINK
+     groesser 0 gesetzt haben.
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_DRINK, P_DRINK_DELAY, consume
+   P_FOOD, P_ALCOHOL, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_DRINK_DELAY b/doc/props/P_DRINK_DELAY
index 0118843..1617b47 100644
--- a/doc/props/P_DRINK_DELAY
+++ b/doc/props/P_DRINK_DELAY
@@ -1,10 +1,23 @@
-NAME:
-    P_DRINK_DELAY                 "drink_delay"                     
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_DRINK_DELAY
+*************
 
-BESCHREIBUNG:
-     Anzahl der heart_beats, bis P_DRINK um einen Punkt sinkt.
-     Aenderungen dieser Property in Spielern beduerfen der 
-     Genehmigung des EM fuer Balance.
+
+NAME
+====
+
+   P_DRINK_DELAY                 "drink_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_DRINK um einen Punkt sinkt.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/props/P_DRINK_FULL_MSG b/doc/props/P_DRINK_FULL_MSG
index 2903af3..1e5c2ce 100644
--- a/doc/props/P_DRINK_FULL_MSG
+++ b/doc/props/P_DRINK_FULL_MSG
@@ -1,24 +1,45 @@
-NAME:
-     P_DRINK_FULL_MSG              "std_food_drink_full_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_DRINK_FULL_MSG
+****************
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn ein Getraenk getrunken werden soll,
-     obwohl dieser nichts mehr trinken kann.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "So viel kannst Du im Moment nicht trinken."
 
-SIEHE AUCH:
-     P_DRINK, P_MAX_DRINK, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_DRINK_FULL_MSG              "std_food_drink_full_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn ein Getraenk getrunken werden soll,
+   obwohl dieser nichts mehr trinken kann.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "So viel kannst Du im Moment nicht trinken."
+
+
+SIEHE AUCH
+==========
+
+   P_DRINK, P_MAX_DRINK, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_DROP_MSG b/doc/props/P_DROP_MSG
index 5a4c9d7..9ccb875 100644
--- a/doc/props/P_DROP_MSG
+++ b/doc/props/P_DROP_MSG
@@ -1,62 +1,96 @@
+
 P_DROP_MSG
-NAME:
-     P_DROP_MSG				"drop_message" 
+**********
 
-DEFINIERT IN:
-     /sys/living/put_and_get.h
 
-BESCHREIBUNG:
-     Mit P_DROP_MSG kann man die Meldung, die man beim Ablegen eines
-     Objektes bekommt, modifizieren.
+NAME
+====
 
-     Folgende Werte sind moeglich:
-	
-     o 0
-       Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung. 
-	  
-     o NO_PNG_MSG       == -1
-       Es wird keinerlei Meldung ausgegeben
-	  
-     o Ein Array aus Strings 
-       Der erste String wird an den Spieler ausgegeben, der zweite 
-       (optionale) an den Raum. 
-	  
-       Die Strings werden durch die Funktion replace_personal() geparst.
-	Objekt1 - Spieler
-        Objekt2 - das Objekt, das fallengelassen wird
-	  
-       Wird der zweite String nicht angegeben, erfolgt keine Meldung an
-       den Raum.
-				
-BEISPIEL:
-     void create() {
-      ...
-      SetProp( P_SHORT, "Ugars Handaxt" );
-      SetProp( P_LONG, break_string(
-       "Dieses ist eine Kampfaxt, wie sie Orks normalerweise benutzen. "
-       "Da Du Zeit hast, sie Dir anzuschauen, ist der Besitzer wohl "
-       "bereits bei Lars.",78 ));
-	  
-      SetProp( P_NAME, "Axt" );
-      AddId( ({"handaxt","axt"}) );
-      SetProp( P_GENDER, FEMALE );
-	  
-      SetProp( P_DROP_MSG, ({
-       "Du schmeisst @WEN2 hin.",
-       "@WER1 schmeisst Dir @WENU2 vor die Fuesse.\n"}));
-      ...
-     }
+   P_DROP_MSG                         "drop_message"
 
-     Will Ugar seine Axt ablegen und gibt "lasse axt fallen" ein, werden 
-     folgende Meldungen ausgegeben:
-	
-     Ugar: "Du schmeisst die Axt hin."
-     Raum: "Ugar schmeisst Dir eine Axt vor die Fuesse."
-	
-SIEHE AUCH:
-     Aehnliches: P_PICK_MSG, P_PUT_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
-     Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
-                 P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Sonstiges:  replace_personal(E), drop_obj(L), /std/living/put_and_get.c
+
+DEFINIERT IN
+============
+
+   /sys/living/put_and_get.h
+
+
+BESCHREIBUNG
+============
+
+   Mit P_DROP_MSG kann man die Meldung, die man beim Ablegen eines
+   Objektes bekommt, modifizieren.
+
+   Folgende Werte sind moeglich:
+
+
+
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+
+
+
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
+
+
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum.
+
+
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das fallengelassen wird
+
+
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an
+     den Raum.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Ugars Handaxt" );
+    SetProp( P_LONG, break_string(
+     "Dieses ist eine Kampfaxt, wie sie Orks normalerweise benutzen. "
+     "Da Du Zeit hast, sie Dir anzuschauen, ist der Besitzer wohl "
+     "bereits bei Lars.",78 ));
+
+
+
+    SetProp( P_NAME, "Axt" );
+    AddId( ({"handaxt","axt"}) );
+    SetProp( P_GENDER, FEMALE );
+
+
+
+    SetProp( P_DROP_MSG, ({
+     "Du schmeisst @WEN2 hin.",
+     "@WER1 schmeisst Dir @WENU2 vor die Fuesse.\n"}));
+    ...
+   }
+
+   Will Ugar seine Axt ablegen und gibt "lasse axt fallen" ein, werden
+   folgende Meldungen ausgegeben:
+
+
+
+   Ugar: "Du schmeisst die Axt hin."
+   Raum: "Ugar schmeisst Dir eine Axt vor die Fuesse."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_PICK_MSG, P_PUT_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), drop_obj(L), /std/living/put_and_get.c
 
 14. Maerz 2004 Gloinson
diff --git a/doc/props/P_EARMUFFS b/doc/props/P_EARMUFFS
index 97e6b1c..e5b4bbb 100644
--- a/doc/props/P_EARMUFFS
+++ b/doc/props/P_EARMUFFS
@@ -1,9 +1,22 @@
-NAME:
-    P_EARMUFFS                    "earmuffs"                    
 
-DEFINIERT IN:
-    /sys/properties.h
+P_EARMUFFS
+**********
 
-BESCHREIBUNG:
-     Shouts von Spielern und Magiern mit Magierlevel < earmuffs werden
-     abgeblockt (Nur fuer Magier).
+
+NAME
+====
+
+   P_EARMUFFS                    "earmuffs"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Shouts von Spielern und Magiern mit Magierlevel < earmuffs werden
+   abgeblockt (Nur fuer Magier).
diff --git a/doc/props/P_EATER_MSG b/doc/props/P_EATER_MSG
index 99ae4d3..132469d 100644
--- a/doc/props/P_EATER_MSG
+++ b/doc/props/P_EATER_MSG
@@ -1,23 +1,44 @@
-NAME:
-     P_EATER_MSG                   "std_food_eater_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_EATER_MSG
+***********
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn eine Speise konsumiert wird.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "Du konsumierst @WEN1."
 
-SIEHE AUCH:
-     /std/food.c, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_EATER_MSG                   "std_food_eater_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn eine Speise konsumiert wird.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Du konsumierst @WEN1."
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_EFFECTIVE_AC b/doc/props/P_EFFECTIVE_AC
index ff7dd53..5473d5d 100644
--- a/doc/props/P_EFFECTIVE_AC
+++ b/doc/props/P_EFFECTIVE_AC
@@ -1,87 +1,107 @@
+
 P_EFFECTIVE_AC
+**************
 
-NAME:
-     P_EFFECTIVE_AC      "effective_ac"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property kommt sowohl in Ruestungen als auch in Waffen, die
-     schuetzen sollen, zum Einsatz.
+   P_EFFECTIVE_AC      "effective_ac"
 
-     In Ruestungen kann hier der Effektivwert der Ruestungsklasse vermerkt
-     werden, wenn diese noch durch eine DefendFunc() modifiziert wird
-     (soweit sich ein solcher Effektivwert angeben laesst).
 
-     In einigen Gilden koennen Waffen auch als Ruestung eingesetzt werden
-     (z.B. beim Parieren eines Angriffs). In dieser Property kann man die
-     Ruestungsklasse eintragen, die die Waffe bei solchen Aktionen aufweisen
-     soll. Dabei ist man an die ueblichen Beschraenkungen der
-     Ruestungsklasse gebunden! (s. /sys/combat.h)
+DEFINIERT IN
+============
 
-BERMERKUNGEN:
-     Das Kaempferspellbook verwendet fuer Paraden etc. P_EFFECTIVE_AC anstatt
-     P_AC, wenn verfuegbar.
+   <combat.h>
 
-BEISPIELE:
-     * DefendFuncs: 
-       Der doppelte Mittelwert der DefendFunc wird zur Basis-AC dazuaddiert,
-       da sich der 'Schutzwert = random(Basis-AC) + absolut(DefendFunc-Wert)'
-       berechnet.
 
-     // #1 Eine Ruestung mit P_AC von 35 und randomisierter DefendFunc
-        SetProp(P_AC, 35);
-        SetProp(P_DEFEND_FUNC, this_object());
+BESCHREIBUNG
+============
 
-        int DefendFunc(...) {
-          return random(20);                       // Mittelwert: 10
-        }
-        -> SetProp(P_EFFECTIVE_AC, 55);            // 35 + 2*10 = 55
+   Diese Property kommt sowohl in Ruestungen als auch in Waffen, die
+   schuetzen sollen, zum Einsatz.
 
-     // #2 Eine Ruestung mit P_AC von 35 und teilrandomisierter DefendFunc
-        SetProp(P_AC, 35);
-        SetProp(P_DEFEND_FUNC, this_object());
+   In Ruestungen kann hier der Effektivwert der Ruestungsklasse vermerkt
+   werden, wenn diese noch durch eine DefendFunc() modifiziert wird
+   (soweit sich ein solcher Effektivwert angeben laesst).
 
-        int DefendFunc(...) {
-          return 20 + random(10);                  // Mittelwert: 20 + 5
-        }
-        -> SetProp(P_EFFECTIVE_AC, 85);            // 35 + 2*(20+5) = 85
+   In einigen Gilden koennen Waffen auch als Ruestung eingesetzt werden
+   (z.B. beim Parieren eines Angriffs). In dieser Property kann man die
+   Ruestungsklasse eintragen, die die Waffe bei solchen Aktionen aufweisen
+   soll. Dabei ist man an die ueblichen Beschraenkungen der
+   Ruestungsklasse gebunden! (s. /sys/combat.h)
 
-     * Sonderfunktion im Kontext der Kaempfergilde:
-       Auch wenn der eigentliche AC-Wert durch keine DefendFunc oAe
-       modifiziert wird, sind abweichende Werte in P_EFFECTIVE_AC zB in der
-       Kaempfergilde fuer Paraden oder aehnliches sinnvoll. Maximalwert ist
-       dafuer der doppelte Wert des Basis-AC-Wertes.
 
-     // #3 Ein schon sehr gutes Schild, welches bei der Schildparade aber
-     //    noch besser schuetzen soll.
-        SetProp(P_ARMOUR_TYPE, AT_SHIELD);
-        SetProp(P_AC, 38);
-        SetProp(P_EFFECTIVE_AC, 55);
+BERMERKUNGEN
+============
 
-     // #4 Ein sehr labbriges Schild schuetzt zwar gegen normale Schlaege,
-     //    ist zum Parieren aber irgendwie ungeeignet weil unkontrollierbar.
-        SetProp(P_ARMOUR_TYPE, AT_SHIELD);
-        SetProp(P_AC, 38);
-        SetProp(P_EFFECTIVE_AC, 20);
+   Das Kaempferspellbook verwendet fuer Paraden etc. P_EFFECTIVE_AC anstatt
+   P_AC, wenn verfuegbar.
 
-     * Waffen:
-       P_EFFECTIVE_AC wird im Kaempferspellbook als Bonus dazugezaehlt! Daher
-       sollten gute Parierwaffen auch einen niedrigeren P_WC-Wert haben.
-       Reine Parierwaffen duerfen den maximalen AC-Wert von Schilden als
-       Maximum gesetzt haben - die Balance klaert ggf, ob das auch auf den
-       Gildenparierwert anwendbar ist.
 
-     // #5 Eine maessige Hellebarde/Axtwaffe mit Parierhaken.
-        SetProp(P_WEAPON_TYPE, WT_AXE);
-        SetProp(P_WC, 100);
-        SetProp(P_EFFECTIVE_AC, 25);
+BEISPIELE
+=========
 
-SIEHE AUCH:
-     Waffen:     P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
-     Ruestungen: P_AC, P_TOTAL_AC, DefendFunc()
-     Files:      /std/weapon.c, /std/weapon/combat.c
-     Balance:    waffen, ruestungen, properties, kaempferboni
+   * DefendFuncs:
+     Der doppelte Mittelwert der DefendFunc wird zur Basis-AC dazuaddiert,
+     da sich der 'Schutzwert = random(Basis-AC) + absolut(DefendFunc-Wert)'
+     berechnet.
+
+   // #1 Eine Ruestung mit P_AC von 35 und randomisierter DefendFunc
+      SetProp(P_AC, 35);
+      SetProp(P_DEFEND_FUNC, this_object());
+
+      int DefendFunc(...) {
+        return random(20);                       // Mittelwert: 10
+      }
+      -> SetProp(P_EFFECTIVE_AC, 55);            // 35 + 2*10 = 55
+
+   // #2 Eine Ruestung mit P_AC von 35 und teilrandomisierter DefendFunc
+      SetProp(P_AC, 35);
+      SetProp(P_DEFEND_FUNC, this_object());
+
+      int DefendFunc(...) {
+        return 20 + random(10);                  // Mittelwert: 20 + 5
+      }
+      -> SetProp(P_EFFECTIVE_AC, 85);            // 35 + 2*(20+5) = 85
+
+   * Sonderfunktion im Kontext der Kaempfergilde:
+     Auch wenn der eigentliche AC-Wert durch keine DefendFunc oAe
+     modifiziert wird, sind abweichende Werte in P_EFFECTIVE_AC zB in der
+     Kaempfergilde fuer Paraden oder aehnliches sinnvoll. Maximalwert ist
+     dafuer der doppelte Wert des Basis-AC-Wertes.
+
+   // #3 Ein schon sehr gutes Schild, welches bei der Schildparade aber
+   //    noch besser schuetzen soll.
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 38);
+      SetProp(P_EFFECTIVE_AC, 55);
+
+   // #4 Ein sehr labbriges Schild schuetzt zwar gegen normale Schlaege,
+   //    ist zum Parieren aber irgendwie ungeeignet weil unkontrollierbar.
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 38);
+      SetProp(P_EFFECTIVE_AC, 20);
+
+   * Waffen:
+     P_EFFECTIVE_AC wird im Kaempferspellbook als Bonus dazugezaehlt! Daher
+     sollten gute Parierwaffen auch einen niedrigeren P_WC-Wert haben.
+     Reine Parierwaffen duerfen den maximalen AC-Wert von Schilden als
+     Maximum gesetzt haben - die Balance klaert ggf, ob das auch auf den
+     Gildenparierwert anwendbar ist.
+
+   // #5 Eine maessige Hellebarde/Axtwaffe mit Parierhaken.
+      SetProp(P_WEAPON_TYPE, WT_AXE);
+      SetProp(P_WC, 100);
+      SetProp(P_EFFECTIVE_AC, 25);
+
+
+SIEHE AUCH
+==========
+
+   Waffen:     P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
+   Ruestungen: P_AC, P_TOTAL_AC, DefendFunc()
+   Files:      /std/weapon.c, /std/weapon/combat.c
+   Balance:    waffen, ruestungen, properties, kaempferboni
 
 6. Nov 2011 Gloinson
diff --git a/doc/props/P_EFFECTIVE_WC b/doc/props/P_EFFECTIVE_WC
index 0328629..aa16980 100644
--- a/doc/props/P_EFFECTIVE_WC
+++ b/doc/props/P_EFFECTIVE_WC
@@ -1,86 +1,112 @@
+
 P_EFFECTIVE_WC
+**************
 
-NAME:
-     P_EFFECTIVE_WC     "effective_wc"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property kommt sowohl in Waffen als auch Ruestungen, die Schaden
-     machen sollen, zum Einsatz.
+   P_EFFECTIVE_WC     "effective_wc"
 
-     Falls die Staerke einer Waffe noch durch eine HitFunc() modifiziert
-     wird, sollte hier der Effektivwert der Waffenklasse vermerkt werden,
-     soweit er sich angeben laesst.
-     Diese Property dient vor allem dazu, eine Waffe mit HitFunc() korrekt
-     einzuschaetzen.
 
-     In einigen Gilden koennen Ruestungen auch als Waffen eingesetzt werden
-     (z.B. ein Paar Schuhe zum Treten). In dieser Property kann man die
-     Waffenklasse eintragen, die die Ruestung bei solchen Aktionen aufweisen
-     soll. Dabei ist man an die ueblichen Beschraenkungen der Waffenklasse
-     gebunden! (s. /sys/combat.h)
-     Der Ruestung kann man dann auch einen Schadenstyp mit auf den Weg
-     geben.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Das Kaempferspellbook verwendet bei Ruestungen P_AC, wenn
-     P_EFFECTIVE_WC nicht gesetzt ist.
+   <combat.h>
 
-BEISPIELE:
-     * HitFuncs:
-       Der doppelte Mittelwert der HitFunc wird zur Basis-WC dazuaddiert,
-       da sich der 'Angriffswert = random(Basis-WC) + absolut(HitFunc-Wert)'
-       berechnet.
 
-     // #1 Waffe mit Basis-WC 120 und randomisierter HitFunc
-        SetProp(P_WC, 120);
-        SetProp(P_HIT_FUNC, this_object());
-       
-        int HitFunc(...) {
-          return random(30);                       // Mittelwert: 15
-        }
-        -> SetProp(P_EFFECTIVE_WC, 150);           // 120 + 2*15 = 150
-     
-     // #2 Waffe mit Basis-WC 120 und teilweise absoluter HitFunc
-        SetProp(P_WC, 120);
-        SetProp(P_HIT_FUNC, this_object());
-       
-        int HitFunc(...) {
-          return 30 + random(10);                  // Mittelwert: 30 + 5
-        }
-        -> SetProp(P_EFFECTIVE_WC, 190);           // 120 + 2*(30+5) = 190
+BESCHREIBUNG
+============
 
-     * Ruestungen (zB Gildennutzung):
-       Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der jeweils
-       doppelte maximale P_AC-Wert. Angabe eines Schadenstyps ist sinnvoll.
+   Diese Property kommt sowohl in Waffen als auch Ruestungen, die Schaden
+   machen sollen, zum Einsatz.
 
-     // #3 Ein paar Schuhe, mit maximalem Schlag-/Saeureschaden.
-        SetProp(P_ARMOUR_TYPE, AT_BOOT);
-        SetProp(P_AC, 2);
-        SetProp(P_DAM_TYPE, ({DT_BLUDGEON,DT_ACID}));
-        -> SetProp(P_EFFECTIVE_WC, 12);  // hoechstmoeglicher Wert bei
-                                         // Schuhen, da deren max. P_AC = 6
-     // aequivalent und zukunftssicher:
-        -> SetProp(P_EFFECTIVE_WC, 2 * VALID_ARMOUR_CLASS[AT_BOOT]);
+   Falls die Staerke einer Waffe noch durch eine HitFunc() modifiziert
+   wird, sollte hier der Effektivwert der Waffenklasse vermerkt werden,
+   soweit er sich angeben laesst.
+   Diese Property dient vor allem dazu, eine Waffe mit HitFunc() korrekt
+   einzuschaetzen.
 
-     // #4 Ein Schild mit spitzem Dorn. (Stichschaden beim Schildstoss.)
-        SetProp(P_ARMOUR_TYPE, AT_SHIELD);
-        SetProp(P_AC, 5);
-        SetProp(P_DAM_TYPE, ({DT_PIERCE}));
-        SetProp(P_EFFECTIVE_WC, 55);
+   In einigen Gilden koennen Ruestungen auch als Waffen eingesetzt werden
+   (z.B. ein Paar Schuhe zum Treten). In dieser Property kann man die
+   Waffenklasse eintragen, die die Ruestung bei solchen Aktionen aufweisen
+   soll. Dabei ist man an die ueblichen Beschraenkungen der Waffenklasse
+   gebunden! (s. /sys/combat.h)
+   Der Ruestung kann man dann auch einen Schadenstyp mit auf den Weg
+   geben.
 
-     // #5 Ein Gummischild ist schlecht fuer Angriffe. BOING!
-        SetProp(P_ARMOUR_TYPE, AT_SHIELD);
-        SetProp(P_AC, 30);
-        SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
-        SetProp(P_EFFECTIVE_WC, 10);
 
-SIEHE AUCH:
-     Waffen:     P_WC, P_TOTAL_WC, HitFunc()
-     Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
-     Files:      /std/weapon.c, /std/weapon/combat.c
-     Balance:    waffen, ruestungen, properties, kaempferboni
+BEMERKUNGEN
+===========
+
+   Das Kaempferspellbook verwendet bei Ruestungen P_AC, wenn
+   P_EFFECTIVE_WC nicht gesetzt ist.
+
+
+BEISPIELE
+=========
+
+   * HitFuncs:
+     Der doppelte Mittelwert der HitFunc wird zur Basis-WC dazuaddiert,
+     da sich der 'Angriffswert = random(Basis-WC) + absolut(HitFunc-Wert)'
+     berechnet.
+
+   // #1 Waffe mit Basis-WC 120 und randomisierter HitFunc
+      SetProp(P_WC, 120);
+      SetProp(P_HIT_FUNC, this_object());
+
+
+
+      int HitFunc(...) {
+        return random(30);                       // Mittelwert: 15
+      }
+      -> SetProp(P_EFFECTIVE_WC, 150);           // 120 + 2*15 = 150
+
+
+
+   // #2 Waffe mit Basis-WC 120 und teilweise absoluter HitFunc
+      SetProp(P_WC, 120);
+      SetProp(P_HIT_FUNC, this_object());
+
+
+
+      int HitFunc(...) {
+        return 30 + random(10);                  // Mittelwert: 30 + 5
+      }
+      -> SetProp(P_EFFECTIVE_WC, 190);           // 120 + 2*(30+5) = 190
+
+   * Ruestungen (zB Gildennutzung):
+     Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der jeweils
+     doppelte maximale P_AC-Wert. Angabe eines Schadenstyps ist sinnvoll.
+
+   // #3 Ein paar Schuhe, mit maximalem Schlag-/Saeureschaden.
+      SetProp(P_ARMOUR_TYPE, AT_BOOT);
+      SetProp(P_AC, 2);
+      SetProp(P_DAM_TYPE, ({DT_BLUDGEON,DT_ACID}));
+      -> SetProp(P_EFFECTIVE_WC, 12);  // hoechstmoeglicher Wert bei
+                                       // Schuhen, da deren max. P_AC = 6
+   // aequivalent und zukunftssicher:
+      -> SetProp(P_EFFECTIVE_WC, 2 * VALID_ARMOUR_CLASS[AT_BOOT]);
+
+   // #4 Ein Schild mit spitzem Dorn. (Stichschaden beim Schildstoss.)
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 5);
+      SetProp(P_DAM_TYPE, ({DT_PIERCE}));
+      SetProp(P_EFFECTIVE_WC, 55);
+
+   // #5 Ein Gummischild ist schlecht fuer Angriffe. BOING!
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 30);
+      SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
+      SetProp(P_EFFECTIVE_WC, 10);
+
+
+SIEHE AUCH
+==========
+
+   Waffen:     P_WC, P_TOTAL_WC, HitFunc()
+   Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
+   Files:      /std/weapon.c, /std/weapon/combat.c
+   Balance:    waffen, ruestungen, properties, kaempferboni
 
 6. Nov 2011 Gloinson
diff --git a/doc/props/P_EMPTY_MSG b/doc/props/P_EMPTY_MSG
index 7248d8e..e91d622 100644
--- a/doc/props/P_EMPTY_MSG
+++ b/doc/props/P_EMPTY_MSG
@@ -1,24 +1,45 @@
-NAME:
-     P_EMPTY_MSG                   "std_food_eater_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_EMPTY_MSG
+***********
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn versucht wird, eine aufgebrauchte Speise
-     (also einen leeren Behaelter) zu konsumieren.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise (also den leeren Behaelter)
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "@WER1 ist bereits leer."
 
-SIEHE AUCH:
-     /std/food.c, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_EMPTY_MSG                   "std_food_eater_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn versucht wird, eine aufgebrauchte Speise
+   (also einen leeren Behaelter) zu konsumieren.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise (also den leeren Behaelter)
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER1 ist bereits leer."
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_EMPTY_PROPS b/doc/props/P_EMPTY_PROPS
index a8156d7..6f5c126 100644
--- a/doc/props/P_EMPTY_PROPS
+++ b/doc/props/P_EMPTY_PROPS
@@ -1,33 +1,54 @@
-NAME:
-     P_EMPTY_PROPS                 "std_food_empty_props"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_EMPTY_PROPS
+*************
 
-BESCHREIBUNG:
-     Mapping mit Properties fuer den leeren Behaelter, der uebrig bleibt,wenn
-     eine Speise aufgebraucht ist. 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 - es bleibt also kein Behaelter zurueck.
-     Achtung: Es werden keine closures in diesem Mapping unterstuetzt!
-     
-BEMERKUNGEN:
-     Bei der Abfrage von P_VALUE und P_WEIGHT in der Speise, werden die dazu
-     in P_EMPTY_PROPS gespeicherten Werte verwendet, um das Gewicht/Wert des
-     leeren Behaelters zum Gesamtwert der Speise zu addieren.
-     Man kann alle Properties in dieses Mapping eintragen, die sich in der
-     Speise per SetProp setzen lassen. Zusaetzlich kann man Arrays in P_IDS
-     und P_ADJECTIVES speichern, die per Add-Methode in der Speise
-     hinzugefuegt werden, nachdem die im create() der Speise hinzugefuegten
-     Ids/Adjectives dort entfernt wurden.
-     
-BEISPIELE:
-     Beispiele zur Verwendung findet man unter /doc/beispiele/food
 
-SIEHE AUCH:
-     /std/food.c, wiz/food
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_EMPTY_PROPS                 "std_food_empty_props"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit Properties fuer den leeren Behaelter, der uebrig bleibt,wenn
+   eine Speise aufgebraucht ist. 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 - es bleibt also kein Behaelter zurueck.
+   Achtung: Es werden keine closures in diesem Mapping unterstuetzt!
+
+
+BEMERKUNGEN
+===========
+
+   Bei der Abfrage von P_VALUE und P_WEIGHT in der Speise, werden die dazu
+   in P_EMPTY_PROPS gespeicherten Werte verwendet, um das Gewicht/Wert des
+   leeren Behaelters zum Gesamtwert der Speise zu addieren.
+   Man kann alle Properties in dieses Mapping eintragen, die sich in der
+   Speise per SetProp setzen lassen. Zusaetzlich kann man Arrays in P_IDS
+   und P_ADJECTIVES speichern, die per Add-Methode in der Speise
+   hinzugefuegt werden, nachdem die im create() der Speise hinzugefuegten
+   Ids/Adjectives dort entfernt wurden.
+
+
+BEISPIELE
+=========
+
+   Beispiele zur Verwendung findet man unter /doc/beispiele/food
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_ENABLE_IN_ATTACK_OUT b/doc/props/P_ENABLE_IN_ATTACK_OUT
index d60a807..0a64c74 100644
--- a/doc/props/P_ENABLE_IN_ATTACK_OUT
+++ b/doc/props/P_ENABLE_IN_ATTACK_OUT
@@ -1,33 +1,51 @@
-NAME:
-	P_ENABLE_IN_ATTACK_OUT		"enable_in_attack_out"
 
-DEFINIERT IN:
-	/sys/combat.h
+P_ENABLE_IN_ATTACK_OUT
+**********************
 
-BESCHREIBUNG:
-	Normalerweise wird die bekannte Taktik Rein-Angriff-Raus
-	standardmaessig unterbunden, damit NPCs auch eine Chance haben, sich
-	zu verteidigen. Hierzu wird der Schaden innerhalb do_damage()
-	durch einen Wert geteilt, der sich aus der Verweildauer des
-	Angreifers im Raum ergibt (bis zu 3 Sekunden).
-	Da manche NPCs so konzeptioniert wurden, dass man sie nur mit der
-	erwaehnten Taktik toeten kann, kann man sie auch explizit erlauben
-	(manche NPCs verwenden auch eigene Methoden, diese Taktik zu
-	 verbieten, und sie waere dann doppelt abgefangen).
-	Hierzu setzt man einfach die Property P_ENABLE_IN_ATTACK_OUT im NPC.
 
-BEISPIEL:
-	Das folgende Beispiel erlaubt einfach mal die angesprochene Taktik:
-	  void create()
-	  { ...
-	    SetProp(P_ENABLE_IN_ATTACK_OUT,1);
-	    ...
-	  }
-	Jetzt kann man den NPC mit Rein-Angriff-Raus auch wirkungsvoll
-	bekaempfen.
+NAME
+====
 
-SIEHE AUCH:
-	do_damage(), P_LAST_MOVE, /std/living/life.c
+   P_ENABLE_IN_ATTACK_OUT          "enable_in_attack_out"
 
------------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise wird die bekannte Taktik Rein-Angriff-Raus
+   standardmaessig unterbunden, damit NPCs auch eine Chance haben, sich
+   zu verteidigen. Hierzu wird der Schaden innerhalb do_damage()
+   durch einen Wert geteilt, der sich aus der Verweildauer des
+   Angreifers im Raum ergibt (bis zu 3 Sekunden).
+   Da manche NPCs so konzeptioniert wurden, dass man sie nur mit der
+   erwaehnten Taktik toeten kann, kann man sie auch explizit erlauben
+   (manche NPCs verwenden auch eigene Methoden, diese Taktik zu
+    verbieten, und sie waere dann doppelt abgefangen).
+   Hierzu setzt man einfach die Property P_ENABLE_IN_ATTACK_OUT im NPC.
+
+
+BEISPIEL
+========
+
+   Das folgende Beispiel erlaubt einfach mal die angesprochene Taktik:
+     void create()
+     { ...
+       SetProp(P_ENABLE_IN_ATTACK_OUT,1);
+       ...
+     }
+   Jetzt kann man den NPC mit Rein-Angriff-Raus auch wirkungsvoll
+   bekaempfen.
+
+
+SIEHE AUCH
+==========
+
+   do_damage(), P_LAST_MOVE, /std/living/life.c
+
 Last modified: Sat Jan 30 12:53:00 1999 by Patryn
diff --git a/doc/props/P_ENEMY_DAMAGE b/doc/props/P_ENEMY_DAMAGE
index 216339d..bad9c99 100644
--- a/doc/props/P_ENEMY_DAMAGE
+++ b/doc/props/P_ENEMY_DAMAGE
@@ -1,31 +1,48 @@
+
 P_ENEMY_DAMAGE
+**************
 
-NAME:
-     P_ENEMY_DAMAGE "enemy_damage"
 
-DEFINIERT IN:
-     <living/life.h>
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property ist vermerkt, welches Wesen diesem Wesen wieviel
-     Schaden zugefuegt hat.
+   P_ENEMY_DAMAGE "enemy_damage"
 
-     Die Property enthaelt ein Mapping, das den Angreifern den
-     errechten Schaden zuordnet:
-     ([ <obname1>: <damage>; <owner>, ... ])
 
-       <obname1>: Name des Objekts, das den Schaden verursacht hat (string),
-                  z.B. "/magier:zesstra"
-       <damage> : Schadensmenge (int)
-       <owner>  : wenn das schadensverursachende Wesen ein NPC war/ist,
-                  welches P_HELPER_NPC gesetzt hatte und somit einem Spieler
-                  hilft, steht hier das Objekt des jeweiligen Spielers
-                  (object)
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Diese Property laesst sich nur abfragen!
+   <living/life.h>
 
-SIEHE AUCH:
-     P_HELPER_NPC
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   In dieser Property ist vermerkt, welches Wesen diesem Wesen wieviel
+   Schaden zugefuegt hat.
+
+   Die Property enthaelt ein Mapping, das den Angreifern den
+   errechten Schaden zuordnet:
+   ([ <obname1>: <damage>; <owner>, ... ])
+
+     <obname1>: Name des Objekts, das den Schaden verursacht hat (string),
+                z.B. "/magier:zesstra"
+     <damage> : Schadensmenge (int)
+     <owner>  : wenn das schadensverursachende Wesen ein NPC war/ist,
+                welches P_HELPER_NPC gesetzt hatte und somit einem Spieler
+                hilft, steht hier das Objekt des jeweiligen Spielers
+                (object)
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property laesst sich nur abfragen!
+
+
+SIEHE AUCH
+==========
+
+   P_HELPER_NPC
+
 26.10.2009, Zesstra
diff --git a/doc/props/P_ENEMY_DEATH_SEQUENCE b/doc/props/P_ENEMY_DEATH_SEQUENCE
index 260d325..03b2bec 100644
--- a/doc/props/P_ENEMY_DEATH_SEQUENCE
+++ b/doc/props/P_ENEMY_DEATH_SEQUENCE
@@ -1,44 +1,61 @@
+
 P_ENEMY_DEATH_SEQUENCE
+**********************
 
-NAME:
-     P_ENEMY_DEATH_SEQUENCE        "enemy_death_sequence"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-     Ueber diese Property kann Einfluss auf die Todessequenz eines getoeten
-     Spielers genommen werden. Sie muss im toetenden Objekt, d.h. dem
-     Objekt welches die()/do_damage()/Defend() im Spieler gerufen hat,
-     gesetzt sein.
+   P_ENEMY_DEATH_SEQUENCE        "enemy_death_sequence"
 
-     Es gibt folgende gueltige Werte:
-     - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
-     - mixed*  Eine Todessequenz im Format des Todesraumes:
-               ({<int gesamtlaenge>,
-                 ([<int index1>: <string umgebrochene Meldung1>,
-                   <int index2>: <string umgebrochene Meldung2>,
-                   ...])
-               })
-     - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
-               ([<int zeitindex>: <string umgebrochener Text>])
 
-BEISPIELE:
-     // Pfad zu einer eigenen DSQ
-     SetProp(P_ENEMY_DEATH_SEQUENCE,  ".../passende_dsq.txt");
+DEFINIERT IN
+============
 
-     // eigene DSQ im Todesraumformat:
-     SetProp(P_ENEMY_DEATH_SEQUENCE,
-             ({ 2, ([1: "DU LERNST AUS DEINEM FEHLER.\n"])}));
+   /sys/living/combat.h
 
-     // Einfuegen einer Meldung (des NPCs) in die Standard-Todessequenz
-     SetProp(P_ENEMY_DEATH_SEQUENCE,
-             ([5: "Du hoerst "+name(WEN)+" hoehnisch kichern.\n"]));
 
-SIEHE AUCH:
-     Tod:            die(L)
-     Todesmeldungen: P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
-                     P_ZAP_MSG, P_NEXT_DEATH_SEQUENCE
-     Sonstiges:      P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+BESCHREIBUNG
+============
 
-10. Nov 2011 Gloinson
\ No newline at end of file
+   Ueber diese Property kann Einfluss auf die Todessequenz eines getoeten
+   Spielers genommen werden. Sie muss im toetenden Objekt, d.h. dem
+   Objekt welches die()/do_damage()/Defend() im Spieler gerufen hat,
+   gesetzt sein.
+
+   Es gibt folgende gueltige Werte:
+   - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
+   - mixed*  Eine Todessequenz im Format des Todesraumes:
+             ({<int gesamtlaenge>,
+               ([<int index1>: <string umgebrochene Meldung1>,
+                 <int index2>: <string umgebrochene Meldung2>,
+                 ...])
+             })
+   - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
+             ([<int zeitindex>: <string umgebrochener Text>])
+
+
+BEISPIELE
+=========
+
+   // Pfad zu einer eigenen DSQ
+   SetProp(P_ENEMY_DEATH_SEQUENCE,  ".../passende_dsq.txt");
+
+   // eigene DSQ im Todesraumformat:
+   SetProp(P_ENEMY_DEATH_SEQUENCE,
+           ({ 2, ([1: "DU LERNST AUS DEINEM FEHLER.\n"])}));
+
+   // Einfuegen einer Meldung (des NPCs) in die Standard-Todessequenz
+   SetProp(P_ENEMY_DEATH_SEQUENCE,
+           ([5: "Du hoerst "+name(WEN)+" hoehnisch kichern.\n"]));
+
+
+SIEHE AUCH
+==========
+
+   Tod:            die(L)
+   Todesmeldungen: P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                   P_ZAP_MSG, P_NEXT_DEATH_SEQUENCE
+   Sonstiges:      P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+10. Nov 2011 Gloinson
diff --git a/doc/props/P_ENTERCMDS b/doc/props/P_ENTERCMDS
index 0f7e3d9..fc6f72f 100644
--- a/doc/props/P_ENTERCMDS
+++ b/doc/props/P_ENTERCMDS
@@ -1,33 +1,57 @@
-NAME:
-    P_ENTERCMDS                   "leavecmds"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_ENTERCMDS
+***********
 
-BESCHREIBUNG:
-    Ein Array mit Befehlen, die zum Betreten des Transporters fuehren. 
 
-BEISPIEL:
-    SetProp(P_ENTERCMDS,({ "betrete","betritt" }) );
+NAME
+====
 
-    Gibt der Spieler nun 'betrete xxx' ein, so sorgt /std/transport.c 
-    dafuer, das der Spieler auch auf oder in den Transporter bewegt 
-    wird. Vorausgesetzt natuerlich, er ist an einem Haltepunkt ange-
-    langt und es ist genuegend Platz dort.
+   P_ENTERCMDS                   "leavecmds"
 
-BEMERKUNGEN:
-    Um /std/transport.c nicht aufzublaehen, werden weitere Argumente wie
-    etwa 'betrete das|die|den xxx' _nicht_ unterstuetzt!
 
-    Hier muss der verantwortliche Magier schon eine eigene Loesung finden
-    und in seinen Transporter schreiben.
+DEFINIERT IN
+============
 
-    Sollen Kommandos zum Betreten UND Verlassen eines Transporters ver-
-    wendet werden koennen, muessen diese in P_TRAVEL_CMDS gesetzt werden.
+   /sys/transport.h
 
-SIEHE AUCH:
-    P_LEAVEFAIL, P_ENTERFAIL, P_LEAVECMDS, P_TRAVEL_CMDS, transporter,
 
-LETZTE AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
-    
\ No newline at end of file
+BESCHREIBUNG
+============
+
+   Ein Array mit Befehlen, die zum Betreten des Transporters fuehren.
+
+
+BEISPIEL
+========
+
+   SetProp(P_ENTERCMDS,({ "betrete","betritt" }) );
+
+   Gibt der Spieler nun 'betrete xxx' ein, so sorgt /std/transport.c
+   dafuer, das der Spieler auch auf oder in den Transporter bewegt
+   wird. Vorausgesetzt natuerlich, er ist an einem Haltepunkt ange-
+   langt und es ist genuegend Platz dort.
+
+
+BEMERKUNGEN
+===========
+
+   Um /std/transport.c nicht aufzublaehen, werden weitere Argumente wie
+   etwa 'betrete das|die|den xxx' _nicht_ unterstuetzt!
+
+   Hier muss der verantwortliche Magier schon eine eigene Loesung finden
+   und in seinen Transporter schreiben.
+
+   Sollen Kommandos zum Betreten UND Verlassen eines Transporters ver-
+   wendet werden koennen, muessen diese in P_TRAVEL_CMDS gesetzt werden.
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEFAIL, P_ENTERFAIL, P_LEAVECMDS, P_TRAVEL_CMDS, transporter,
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_ENTERFAIL b/doc/props/P_ENTERFAIL
index 2ecd1e6..5291065 100644
--- a/doc/props/P_ENTERFAIL
+++ b/doc/props/P_ENTERFAIL
@@ -1,24 +1,48 @@
-NAME:
-    P_ENTERFAIL                   "enterfail"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_ENTERFAIL
+***********
 
-BESCHREIBUNG:
-     Meldung an den Spieler, wenn er einen vollen Transporter betreten 
-     will. Ist die Propertie ein Array, so wird das erste Element als
-     Meldung an den Spieler, das zweite als Meldung an die Mitspieler 
-     im Raum geschickt.
 
-BEISPIEL:
-     SetProp(P_ENTERFAIL,"Dort ist wirklich kein Platz mehr fuer Dich");
-     
-     SetProp(P_ENTERFAIL, ({ "Dort ist wirklich kein Platz mehr fuer Dich",
-                             "versucht, auf die Kutsche zu klettern, wird "
-                            +"aber wieder heruntergeschickt" }) );
+NAME
+====
 
-SIEHE AUCH:
-     P_ENTERMSG, P_LEAVEFAIL, P_LEAVEMSG, transporter
+   P_ENTERFAIL                   "enterfail"
 
-LETZTE AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Spieler, wenn er einen vollen Transporter betreten
+   will. Ist die Propertie ein Array, so wird das erste Element als
+   Meldung an den Spieler, das zweite als Meldung an die Mitspieler
+   im Raum geschickt.
+
+
+BEISPIEL
+========
+
+   SetProp(P_ENTERFAIL,"Dort ist wirklich kein Platz mehr fuer Dich");
+
+
+
+   SetProp(P_ENTERFAIL, ({ "Dort ist wirklich kein Platz mehr fuer Dich",
+                           "versucht, auf die Kutsche zu klettern, wird "
+                          +"aber wieder heruntergeschickt" }) );
+
+
+SIEHE AUCH
+==========
+
+   P_ENTERMSG, P_LEAVEFAIL, P_LEAVEMSG, transporter
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_ENTERMSG b/doc/props/P_ENTERMSG
index 2a2128e..9ba314d 100644
--- a/doc/props/P_ENTERMSG
+++ b/doc/props/P_ENTERMSG
@@ -1,18 +1,40 @@
-NAME:
-    P_ENTERMSG                    "entermsg"                    
 
-DEFINIERT IN:
-    /sys/transport.h
+P_ENTERMSG
+**********
 
-BESCHREIBUNG:
-     Array mit zwei Meldungen, eine fuer den Raum, den der Spieler
-     verlaesst, und eine fuer den Transporter, in den er geht.
 
-BEISPIEL:
-     SetProp(P_ENTERMSG, ({ "klettert in die Kutsche","klettert herein" }) );
+NAME
+====
 
-SIEHE AUCH:
-     P_ENTERFAIL, P_LEAVEFAIL, P_LEAVEMSG, transporter
+   P_ENTERMSG                    "entermsg"
 
-LETZTER AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit zwei Meldungen, eine fuer den Raum, den der Spieler
+   verlaesst, und eine fuer den Transporter, in den er geht.
+
+
+BEISPIEL
+========
+
+   SetProp(P_ENTERMSG, ({ "klettert in die Kutsche","klettert herein" }) );
+
+
+SIEHE AUCH
+==========
+
+   P_ENTERFAIL, P_LEAVEFAIL, P_LEAVEMSG, transporter
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_ENV_MSG b/doc/props/P_ENV_MSG
index b39e2c1..e969399 100644
--- a/doc/props/P_ENV_MSG
+++ b/doc/props/P_ENV_MSG
@@ -1,26 +1,47 @@
-NAME:
-     P_ENV_MSG                     "std_food_env_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_ENV_MSG
+*********
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn eine Speise konsumiert werden soll,
-     die nicht im eigenen Inventory liegt.
-     Wenn diese Property leer ist, kann man die Speise dann sogar
-     konsumieren!
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "Vielleicht solltest Du @WEN1 vorher nehmen."
 
-SIEHE AUCH:
-     wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_ENV_MSG                     "std_food_env_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn eine Speise konsumiert werden soll,
+   die nicht im eigenen Inventory liegt.
+   Wenn diese Property leer ist, kann man die Speise dann sogar
+   konsumieren!
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Vielleicht solltest Du @WEN1 vorher nehmen."
+
+
+SIEHE AUCH
+==========
+
+   wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_ENV_TOO_HEAVY_MSG b/doc/props/P_ENV_TOO_HEAVY_MSG
index 8c73ac1..23c1d6c 100644
--- a/doc/props/P_ENV_TOO_HEAVY_MSG
+++ b/doc/props/P_ENV_TOO_HEAVY_MSG
@@ -1,31 +1,50 @@
-NAME:
-    P_ENV_TOO_HEAVY_MSG                      "env_too_heavy_msg"                      
 
-DEFINIERT IN:
-    /sys/thing/moving.h
+P_ENV_TOO_HEAVY_MSG
+*******************
 
-BESCHREIBUNG:
-     Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
-     versucht, ein Objekt in einen Behaelter zu legen, und dieser dann fuer
-     sein Environment zu schwer wird.
-     Die Property ist im Behaelter zu setzen.
-     Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
-     so wird die Standardmeldung ausgegeben.
-     ("<Behaelter> wuerde dir dann zu schwer werden.")
-     Der String in der Property wird noch durch replace_personal()
-     verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
-     zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
-     umgebrochen.
-     Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
-     ganz.
 
-BEISPIELE:
-     SetProp(P_ENV_TOO_HEAVY_MSG, "Mit @WEM1 koenntest du den Rucksack nicht"
-                                  " mehr tragen.");
+NAME
+====
 
-SIEHE AUCH:
-     Aehnliches: P_TOO_HEAVY_MSG, P_TOO_MANY_MSG, P_NOINSERT_MSG,
-                 P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+   P_ENV_TOO_HEAVY_MSG                      "env_too_heavy_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
+   versucht, ein Objekt in einen Behaelter zu legen, und dieser dann fuer
+   sein Environment zu schwer wird.
+   Die Property ist im Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("<Behaelter> wuerde dir dann zu schwer werden.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
+   zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_ENV_TOO_HEAVY_MSG, "Mit @WEM1 koenntest du den Rucksack nicht"
+                                " mehr tragen.");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_TOO_MANY_MSG, P_NOINSERT_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/props/P_EQUIP_TIME b/doc/props/P_EQUIP_TIME
index 71b2f35..ee0d07f 100644
--- a/doc/props/P_EQUIP_TIME
+++ b/doc/props/P_EQUIP_TIME
@@ -1,26 +1,39 @@
+
 P_EQUIP_TIME
+************
 
-NAME:
-      P_EQUIP_TIME			"equip_time"
 
-DEFINIERT IN:
-      /sys/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-      Innerhalb von Waffen und Ruestungen wird in dieser Property
-      registriert, wann diese zuletzt gezueckt bzw. angezogen wurden.
-      Innerhalb der Funktionen wield_me() in '/std/weapon/combat' bzw.
-      DoWear() in '/std/armour/combat' wird hierbei jeweils folgende Aktion
-      ausgefuehrt:
-	SetProp(P_EQUIP_TIME,time());
+   P_EQUIP_TIME                      "equip_time"
 
-SIEHE AUCH:
-      Verwandt:		P_LAST_USE
-      Waffen:		P_UNWIELD_TIME
-			DoWield()
-      Ruestungen:	DoWear()
-      Sonstiges:	time()
-			/std/weapon/combat.c, /std/armour/combat.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Innerhalb von Waffen und Ruestungen wird in dieser Property
+   registriert, wann diese zuletzt gezueckt bzw. angezogen wurden.
+   Innerhalb der Funktionen wield_me() in '/std/weapon/combat' bzw.
+   DoWear() in '/std/armour/combat' wird hierbei jeweils folgende Aktion
+   ausgefuehrt:
+     SetProp(P_EQUIP_TIME,time());
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:         P_LAST_USE
+   Waffen:           P_UNWIELD_TIME
+                     DoWield()
+   Ruestungen:       DoWear()
+   Sonstiges:        time()
+                     /std/weapon/combat.c, /std/armour/combat.c
+
 Last modified: Sun Jul 26 23:59:12 1998 by Patryn
diff --git a/doc/props/P_EVAL_FACTORS b/doc/props/P_EVAL_FACTORS
index 04e881e..ed83d4e 100644
--- a/doc/props/P_EVAL_FACTORS
+++ b/doc/props/P_EVAL_FACTORS
@@ -1,8 +1,21 @@
-NAME:
-    P_EVAL_FACTORS                "inpc_eval_factors"           
 
-DEFINIERT IN:
-    /sys/inpc/eval.h
+P_EVAL_FACTORS
+**************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_EVAL_FACTORS                "inpc_eval_factors"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/eval.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_EVAL_OFFSETS b/doc/props/P_EVAL_OFFSETS
index d82ef39..e571f51 100644
--- a/doc/props/P_EVAL_OFFSETS
+++ b/doc/props/P_EVAL_OFFSETS
@@ -1,8 +1,21 @@
-NAME:
-    P_EVAL_OFFSETS                "inpc_eval_offsets"           
 
-DEFINIERT IN:
-    /sys/inpc/eval.h
+P_EVAL_OFFSETS
+**************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_EVAL_OFFSETS                "inpc_eval_offsets"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/eval.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_EXITS b/doc/props/P_EXITS
index 9a90c60..c31bac3 100644
--- a/doc/props/P_EXITS
+++ b/doc/props/P_EXITS
@@ -1,24 +1,45 @@
-NAME:
-    P_EXITS                       "exits"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_EXITS
+*******
 
-BESCHREIBUNG:
-    Mapping (der Breite 2) aller unmittelbar sichtbaren Ausgaenge mit
-    zugehoerigen Nachbarraeumen und der jeweiligen Bewegungsmeldung.
 
-BEMERKUNG:
-    Enthaelt auch SpecialExits, bei der Abfrage mit QueryProp() werden
-    diese jedoch ausgefiltert.
-    
-    Zugriff nur mit den dafuer vorgesehenen Funktionen, bitte nicht aendern.
-  
-SIEHE AUCH:
-     AddExit(), AddSpecialExit(), GetExits(),
-     RemoveExit(), RemoveSpecialExit(),
-     GuardExit(),
-     H_HOOK_EXIT_USE, P_SPECIAL_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+NAME
+====
+
+   P_EXITS                       "exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping (der Breite 2) aller unmittelbar sichtbaren Ausgaenge mit
+   zugehoerigen Nachbarraeumen und der jeweiligen Bewegungsmeldung.
+
+
+BEMERKUNG
+=========
+
+   Enthaelt auch SpecialExits, bei der Abfrage mit QueryProp() werden
+   diese jedoch ausgefiltert.
+
+
+
+   Zugriff nur mit den dafuer vorgesehenen Funktionen, bitte nicht aendern.
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_SPECIAL_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/props/P_EXTRA_LOOK b/doc/props/P_EXTRA_LOOK
new file mode 100644
index 0000000..e4f050e
--- /dev/null
+++ b/doc/props/P_EXTRA_LOOK
@@ -0,0 +1,52 @@
+
+P_EXTRA_LOOK
+************
+
+
+NAME
+====
+
+   P_EXTRA_LOOK                    "extralook"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+          Diese Property enthaelt einen String. Sie wird entweder in Lebewesen
+          direkt oder in Objekten gesetzt, die im Besitz von Lebewesen
+          sein koennen.
+          Diese Strings erscheinen dann zusaetzlich in der Langbeschreibung
+          des Lebewesens bzw. des Besitzers (wenn das Objekt sich direkt im
+   Lebewesen befindet, jedoch nicht in einem Behaelter im Lebewesen).
+          Fuer den Zeilenumbruch muss man selbst sorgen.
+
+
+BEISPIEL
+========
+
+   Ein Spieler hat eine Pfeife im Mund. In dieser Pfeife setzt man z.B.
+   in der Funktion zum Pfeife Rauchen folgendes:
+     SetProp(P_EXTRA_LOOK,break_string(
+    this_player()->Name(WER)+" ist ganz umnebelt.",78);
+
+
+BEMERKUNG
+=========
+
+   NUR dann benutzen, wenn ihr auch unabhaengig vom Extralook ein Objekt im
+   Spieler benoetigt, ansonsten IMMER AddExtraLook() verwenden.
+
+
+SIEHE AUCH
+==========
+
+         long(), /std/living/description.c, /std/player/base.c
+   AddExtraLook(), RemoveExtraLook()
+
+16.02.2017, Bugfix
diff --git a/doc/props/P_FAO b/doc/props/P_FAO
index 62f33e1..33f673e 100644
--- a/doc/props/P_FAO
+++ b/doc/props/P_FAO
@@ -1,19 +1,33 @@
+
 P_FAO
+*****
 
-NAME:
-     P_FAO      "fraternitasdonoarchmagorum"
 
-DEFINIERT IN:
-     <player/fao.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Fraternitas-relevante Property.
+   P_FAO      "fraternitasdonoarchmagorum"
 
-     Genaue Informationen unbekannt.
-     Schreibender Zugriff ist nur EMs oder dem FAOMASTER (s. Headerfile)
-     moeglich.
 
-SIEHE AUCH:
-     P_FAO_PORTALS
+DEFINIERT IN
+============
+
+   <player/fao.h>
+
+
+BESCHREIBUNG
+============
+
+   Fraternitas-relevante Property.
+
+   Genaue Informationen unbekannt.
+   Schreibender Zugriff ist nur EMs oder dem FAOMASTER (s. Headerfile)
+   moeglich.
+
+
+SIEHE AUCH
+==========
+
+   P_FAO_PORTALS
 
 1.September 2008 Gloinson
diff --git a/doc/props/P_FAO_PORTALS b/doc/props/P_FAO_PORTALS
index 465750a..5d80c90 100644
--- a/doc/props/P_FAO_PORTALS
+++ b/doc/props/P_FAO_PORTALS
@@ -1,22 +1,36 @@
+
 P_FAO_PORTALS
+*************
 
-NAME:
-     P_FAO_PORTALS      "fraternitasdonoarchmagorumPORTALS"
 
-DEFINIERT IN:
-     <player/fao.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Fraternitas-relevante Property.
+   P_FAO_PORTALS      "fraternitasdonoarchmagorumPORTALS"
 
-     Enthaelt eine Array mit einer Liste der ueber die Fraternitas
-     gefundenen und benutzbaren Seher-Portale.
 
-     Genaue Informationen unbekannt.
-     Schreibender Zugriff ist nur EMs oder dem FAOMASTER (s. Headerfile) 
-     moeglich.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_FAO_PORTALS, P_SEERDOORS
-     
+   <player/fao.h>
+
+
+BESCHREIBUNG
+============
+
+   Fraternitas-relevante Property.
+
+   Enthaelt eine Array mit einer Liste der ueber die Fraternitas
+   gefundenen und benutzbaren Seher-Portale.
+
+   Genaue Informationen unbekannt.
+   Schreibender Zugriff ist nur EMs oder dem FAOMASTER (s. Headerfile)
+   moeglich.
+
+
+SIEHE AUCH
+==========
+
+   P_FAO_PORTALS, P_SEERDOORS
+
 1.September 2008 Gloinson
diff --git a/doc/props/P_FISH b/doc/props/P_FISH
index c694c09..0fa259f 100644
--- a/doc/props/P_FISH
+++ b/doc/props/P_FISH
@@ -1,75 +1,92 @@
-NAME:
-    P_FISH                        "fish"
 
-DEFINIERT IN:
-    /sys/fishing.h
+P_FISH
+******
 
-BESCHREIBUNG:
-    Enthaelt Einstellungen zu allem, was mit Fischen zu tun hat. 
-    Kann in Fischen, Raeumen und Koedern gesetzt werden. Die verfuegbaren 
-    Optionen und Funktionsweisen sind in den nachfolgenden Abschnitten 
-    aufgefuehrt.
 
-    Fische:
-    *******
-    Die Property legt zusaetzliche Eigenschaften fest:
+NAME
+====
 
-      F_NOROTTEN
-        Fisch fault nicht; ggf. sollte hier auch gleich F_NOHEAL gesetzt 
-        werden, weil sonst eine unverderbliche tragbare Tanke erzeugt wuerde.
-      F_NOTHUNGRY
-        Fisch frisst Koeder nur, wenn er auch wirklich nachher an der Angel
-        haengt. Ist er zu schwer fuer die Angel und reisst ab, bleibt der
-        Koeder erhalten.
-      F_REPLACE
-        Fisch soll sich beim Entfernen von der Angel verwandeln. Hierzu ist
-        die Funktion ReplaceFish() im Fisch zu definieren, die sich um die
-        Verwandlung kuemmert (z.B. Monster clonen und Fisch zerstoeren; ein
-        Beispiel findet sich in /d/ebene/fraggle/angel2/obj/saegefisch.c).
-      F_NOHEAL
-        Fisch heilt nicht bei Verzehr
+   P_FISH                        "fish"
 
-    Raum (OPTIONAL):
-    ****************
-    Legt die Fischdichte des Gewaessers fest. Der eingestellte Wert wirkt 
-    sich auf die Wartezeit aus, die der Angler verbringen muss, bis ein 
-    Fisch anbeisst. Berechnung im Detail (alle Zahlenwerte in Sekunden):
-    - Basis-Wartezeit: delay = 80
-    - Die Werte von P_FISH von Raum und Koeder werden addiert:
-      summe = raum->QueryProp(P_FISH) + koeder->QueryProp(P_FISH)
-      -> positive Werte (Bonus) werden auf 60 begrenzt und mit Zufalls-
-         komponente von <delay> abgezogen:
-         delay -= random(summe)
-      -> negative Werte (Malus) werden auf -300 begrenzt und mit Zufalls-
-         komponente auf <delay> aufgeschlagen:
-         delay += random(-summe)
 
-    Zusaetzlich wird ein weiterer Malus auf die Wartezeit faellig, falls 
-    P_WATER in der Angel und/oder P_WATER im Koeder nicht zum aktuellen 
-    Gewaesser passen. Der Malus betraegt jeweils 60+random(60) Sekunden.
-    
-    Der Standardwert fuer P_FISH im Raum ist 0 und bedeutet 100 % Bestand.
-    Positive Werte erhoehen die Dichte, negative senken sie. Positive Werte 
-    sollten nicht >100 sein.
+DEFINIERT IN
+============
 
-    Sofern sich die Werte fuer P_FISH in den empfohlenen Grenzen bewegen,
-    koennen Abzuege fuer falsches Gewaesser ueblicherweise kaum durch
-    Boni auf Angel oder Koeder kompensiert werden. Ausserdem ist zu
-    bedenken, dass es keine Boni fuer richtige Gewaesserwahl gibt.
- 
+   /sys/fishing.h
 
-    Koeder (OPTIONAL):
-    ******************
-    Ein Koeder kann mittels P_FISH die Fischdichte modifizieren, um hierueber
-    ein besseres Beissen der Fische zu simulieren (reduziert die Wartezeit
-    beim Angeln, siehe oben unter "Raum"). Wenn also der Raum einen Wert
-    von -100 gesetzt hat und der Koeder +100, entspricht die Fischdichte im 
-    Gewaesser wieder dem Normalwert.
 
-SIEHE AUCH:
+BESCHREIBUNG
+============
 
-    Properties: P_WATER
-    Methoden:   GetAquarium(L)
+   Enthaelt Einstellungen zu allem, was mit Fischen zu tun hat.
+   Kann in Fischen, Raeumen und Koedern gesetzt werden. Die verfuegbaren
+   Optionen und Funktionsweisen sind in den nachfolgenden Abschnitten
+   aufgefuehrt.
 
-------------------------------------------------------------------------------
+   Fische:
+   *******
+   Die Property legt zusaetzliche Eigenschaften fest:
+
+     F_NOROTTEN
+       Fisch fault nicht; ggf. sollte hier auch gleich F_NOHEAL gesetzt
+       werden, weil sonst eine unverderbliche tragbare Tanke erzeugt wuerde.
+     F_NOTHUNGRY
+       Fisch frisst Koeder nur, wenn er auch wirklich nachher an der Angel
+       haengt. Ist er zu schwer fuer die Angel und reisst ab, bleibt der
+       Koeder erhalten.
+     F_REPLACE
+       Fisch soll sich beim Entfernen von der Angel verwandeln. Hierzu ist
+       die Funktion ReplaceFish() im Fisch zu definieren, die sich um die
+       Verwandlung kuemmert (z.B. Monster clonen und Fisch zerstoeren; ein
+       Beispiel findet sich in /d/ebene/fraggle/angel2/obj/saegefisch.c).
+     F_NOHEAL
+       Fisch heilt nicht bei Verzehr
+
+   Raum (OPTIONAL):
+   ****************
+   Legt die Fischdichte des Gewaessers fest. Der eingestellte Wert wirkt
+   sich auf die Wartezeit aus, die der Angler verbringen muss, bis ein
+   Fisch anbeisst. Berechnung im Detail (alle Zahlenwerte in Sekunden):
+   - Basis-Wartezeit: delay = 80
+   - Die Werte von P_FISH von Raum und Koeder werden addiert:
+     summe = raum->QueryProp(P_FISH) + koeder->QueryProp(P_FISH)
+     -> positive Werte (Bonus) werden auf 60 begrenzt und mit Zufalls-
+        komponente von <delay> abgezogen:
+        delay -= random(summe)
+     -> negative Werte (Malus) werden auf -300 begrenzt und mit Zufalls-
+        komponente auf <delay> aufgeschlagen:
+        delay += random(-summe)
+
+   Zusaetzlich wird ein weiterer Malus auf die Wartezeit faellig, falls
+   P_WATER in der Angel und/oder P_WATER im Koeder nicht zum aktuellen
+   Gewaesser passen. Der Malus betraegt jeweils 60+random(60) Sekunden.
+
+
+
+   Der Standardwert fuer P_FISH im Raum ist 0 und bedeutet 100 % Bestand.
+   Positive Werte erhoehen die Dichte, negative senken sie. Positive Werte
+   sollten nicht >100 sein.
+
+   Sofern sich die Werte fuer P_FISH in den empfohlenen Grenzen bewegen,
+   koennen Abzuege fuer falsches Gewaesser ueblicherweise kaum durch
+   Boni auf Angel oder Koeder kompensiert werden. Ausserdem ist zu
+   bedenken, dass es keine Boni fuer richtige Gewaesserwahl gibt.
+
+
+
+   Koeder (OPTIONAL):
+   ******************
+   Ein Koeder kann mittels P_FISH die Fischdichte modifizieren, um hierueber
+   ein besseres Beissen der Fische zu simulieren (reduziert die Wartezeit
+   beim Angeln, siehe oben unter "Raum"). Wenn also der Raum einen Wert
+   von -100 gesetzt hat und der Koeder +100, entspricht die Fischdichte im
+   Gewaesser wieder dem Normalwert.
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_WATER
+   Methoden:   GetAquarium(L)
+
 Zuletzt geaendert: 2014-Aug-21, Arathorn
diff --git a/doc/props/P_FLAGS b/doc/props/P_FLAGS
index 3c54aea..3962aed 100644
--- a/doc/props/P_FLAGS
+++ b/doc/props/P_FLAGS
@@ -1,8 +1,21 @@
-NAME:
-    P_FLAGS                       "can_flags"                   
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_FLAGS
+*******
 
-BESCHREIBUNG:
-     Flags des Spielers
+
+NAME
+====
+
+   P_FLAGS                       "can_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Flags des Spielers
diff --git a/doc/props/P_FOLLOW_SILENT b/doc/props/P_FOLLOW_SILENT
index 7662ad1..6dd07b3 100644
--- a/doc/props/P_FOLLOW_SILENT
+++ b/doc/props/P_FOLLOW_SILENT
@@ -1,9 +1,22 @@
-NAME:
-    P_FOLLOW_SILENT               "follow_silent"               
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_FOLLOW_SILENT
+***************
 
-BESCHREIBUNG:
-     Wenn diese Property 1 ist, wird der MOVE vom verfolge Silent ausge-
-     fuehrt.
+
+NAME
+====
+
+   P_FOLLOW_SILENT               "follow_silent"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property 1 ist, wird der MOVE vom verfolge Silent ausge-
+   fuehrt.
diff --git a/doc/props/P_FOOD b/doc/props/P_FOOD
index 769694f..3858431 100644
--- a/doc/props/P_FOOD
+++ b/doc/props/P_FOOD
@@ -1,24 +1,38 @@
-NAME:
-     P_FOOD                        "food"
 
-DEFINIERT IN:
-     /sys/living/life.h
+P_FOOD
+******
 
-BESCHREIBUNG:
 
-     - Lebewesen
-       Numerischer Wert fuer den Saettigungsgrad eines Lebewesens.
-       Der maximale Wert steht in P_MAX_FOOD.
+NAME
+====
 
-     - Speisen/Kneipen
-       Numerischer Wert fuer den Saettigungsgrad einer Portion einer
-       Speise. Ist diese Property nicht gesetzt, kann man diese
-       Speise nicht essen. Eine funktionierende Speise _muss_ entweder
-       P_FOOD oder P_DRINK groesser 0 gesetzt haben.
+   P_FOOD                        "food"
 
-SIEHE AUCH:
-     P_MAX_FOOD, P_FOOD_DELAY, consume,
-     P_DRINK, P_ALCOHOL, wiz/food
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Numerischer Wert fuer den Saettigungsgrad eines Lebewesens.
+     Der maximale Wert steht in P_MAX_FOOD.
+
+   - Speisen/Kneipen
+     Numerischer Wert fuer den Saettigungsgrad einer Portion einer
+     Speise. Ist diese Property nicht gesetzt, kann man diese
+     Speise nicht essen. Eine funktionierende Speise _muss_ entweder
+     P_FOOD oder P_DRINK groesser 0 gesetzt haben.
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_FOOD, P_FOOD_DELAY, consume,
+   P_DRINK, P_ALCOHOL, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_FOOD_DELAY b/doc/props/P_FOOD_DELAY
index 11ccf6e..f4eb2df 100644
--- a/doc/props/P_FOOD_DELAY
+++ b/doc/props/P_FOOD_DELAY
@@ -1,10 +1,23 @@
-NAME:
-    P_FOOD_DELAY                 "food_delay"                     
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_FOOD_DELAY
+************
 
-BESCHREIBUNG:
-     Anzahl der heart_beats, bis P_FOOD um einen Punkt sinkt.
-     Aenderungen dieser Property in Spielern beduerfen der 
-     Genehmigung des EM fuer Balance.
+
+NAME
+====
+
+   P_FOOD_DELAY                 "food_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_FOOD um einen Punkt sinkt.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/props/P_FOOD_FULL_MSG b/doc/props/P_FOOD_FULL_MSG
index a331ec5..f5c1bce 100644
--- a/doc/props/P_FOOD_FULL_MSG
+++ b/doc/props/P_FOOD_FULL_MSG
@@ -1,24 +1,45 @@
-NAME:
-     P_FOOD_FULL_MSG               "std_food_full_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_FOOD_FULL_MSG
+***************
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn eine Speise gegessen werden soll,
-     obwohl dieser nichts mehr essen kann.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "Du bist zu satt, das schaffst Du nicht mehr."
 
-SIEHE AUCH:
-     P_FOOD, P_MAX_FOOD, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_FOOD_FULL_MSG               "std_food_full_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn eine Speise gegessen werden soll,
+   obwohl dieser nichts mehr essen kann.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Du bist zu satt, das schaffst Du nicht mehr."
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_MAX_FOOD, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_FORCE_MURDER_MSG b/doc/props/P_FORCE_MURDER_MSG
index cf0157c..709ef4e 100644
--- a/doc/props/P_FORCE_MURDER_MSG
+++ b/doc/props/P_FORCE_MURDER_MSG
@@ -1,39 +1,57 @@
-NAME:
-	P_FORCE_MURDER_MSG		"force_murder_msg"
 
-DEFINIERT IN:
-	/sys/properties.h
+P_FORCE_MURDER_MSG
+******************
 
-BESCHREIBUNG:
-	Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon
-	ab, wie oft und welche Art von NPCs in der letzten Zeit getoetet
-	wurden. Zum Beispiel ist es eher selten, dass ein schwacher NPC auf
-	dem Kanal erscheint, wenn kuerzlich viele starke NPCs getoetet
-	wurden. Mittels der Property P_FORCE_MURDER_MSG kann man auf diese
-	Regelung Einfluss nehmen.
-	Ein Wert groesser Null erzwingt die Meldung auf dem Moerder-Kanal,
-	ein Wert kleiner Null unterdrueckt sie generell. Letzteres ist
-	insbesondere fuer allzuoft getoetete Monster sinnvoll, um den
-	Moerder-Kanal nicht uebermaessig zu belasten. Mit dem Erzwingen der
-	Meldungen sollte man somit vorsichtig sein: Weniger ist oftmals
-	besser als zu viel!
-	Die Defaulteinstellung von P_FORCE_MURDER_MSG ist natuerlich Null
-	und fuehrt zur bereits beschriebenen opferabhaengigen Meldung.
 
-BEISPIELE:
-	Ein grosser starker NPC, der getoetet wurde, sollte schon eine tolle
-	Meldung auf dem Moerder-Kanal erzeugen. In der Property
-	P_MURDER_MSG koennen hierzu alternative Texte zu den normal per
-	Zufall ausgewaehlten angegeben werden:
-	  SetProp(P_MURDER_MSG,
-                  "Nicht schlecht, aber das schafft eh nur einer!");
-	  SetProp(P_FORCE_MURDER_MSG,1);
-	Zwar ist es bei grossen NPCs hinreichend wahrscheinlich, dass es
-	infolge derer Staerke zur automatischen Ausgabe einer Moerdermeldung
-	kommt, aber mit der letzten Zeile wurde dies absolut sichergestellt.
+NAME
+====
 
-SIEHE AUCH:
-	P_MURDER_MSG, P_ZAP_MSG, P_KILL_MSG, P_DIE_MSG, P_CORPSE, P_NOCORPSE
+   P_FORCE_MURDER_MSG              "force_murder_msg"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon
+   ab, wie oft und welche Art von NPCs in der letzten Zeit getoetet
+   wurden. Zum Beispiel ist es eher selten, dass ein schwacher NPC auf
+   dem Kanal erscheint, wenn kuerzlich viele starke NPCs getoetet
+   wurden. Mittels der Property P_FORCE_MURDER_MSG kann man auf diese
+   Regelung Einfluss nehmen.
+   Ein Wert groesser Null erzwingt die Meldung auf dem Moerder-Kanal,
+   ein Wert kleiner Null unterdrueckt sie generell. Letzteres ist
+   insbesondere fuer allzuoft getoetete Monster sinnvoll, um den
+   Moerder-Kanal nicht uebermaessig zu belasten. Mit dem Erzwingen der
+   Meldungen sollte man somit vorsichtig sein: Weniger ist oftmals
+   besser als zu viel!
+   Die Defaulteinstellung von P_FORCE_MURDER_MSG ist natuerlich Null
+   und fuehrt zur bereits beschriebenen opferabhaengigen Meldung.
+
+
+BEISPIELE
+=========
+
+   Ein grosser starker NPC, der getoetet wurde, sollte schon eine tolle
+   Meldung auf dem Moerder-Kanal erzeugen. In der Property
+   P_MURDER_MSG koennen hierzu alternative Texte zu den normal per
+   Zufall ausgewaehlten angegeben werden:
+     SetProp(P_MURDER_MSG,
+             "Nicht schlecht, aber das schafft eh nur einer!");
+     SetProp(P_FORCE_MURDER_MSG,1);
+   Zwar ist es bei grossen NPCs hinreichend wahrscheinlich, dass es
+   infolge derer Staerke zur automatischen Ausgabe einer Moerdermeldung
+   kommt, aber mit der letzten Zeile wurde dies absolut sichergestellt.
+
+
+SIEHE AUCH
+==========
+
+   P_MURDER_MSG, P_ZAP_MSG, P_KILL_MSG, P_DIE_MSG, P_CORPSE, P_NOCORPSE
+
 Last modified: Tue Nov 10 02:15:26 1998 by Patryn
diff --git a/doc/props/P_FREE_HANDS b/doc/props/P_FREE_HANDS
index 6143cad..c8311cc 100644
--- a/doc/props/P_FREE_HANDS
+++ b/doc/props/P_FREE_HANDS
@@ -1,22 +1,40 @@
+
 P_FREE_HANDS
-NAME:
-    P_FREE_HANDS                  "free_hands"
+************
 
-DEFINIERT IN:
-    /sys/living/combat.h
 
-BESCHREIBUNG:
-    Anzahl der freien Haende.
-    Effektiv nur ein die Differenz von P_MAX_HANDS und P_USED_HANDS.
+NAME
+====
 
-BEMERKUNGEN:
-    Keine echte Property. Die Methode /std/living/combat::_query_free_hands
-    stellt die Daten zusammen. Nicht setzen!
+   P_FREE_HANDS                  "free_hands"
 
-SIEHE AUCH:
-    P_HANDS, P_HANDS_USED_BY
-    P_MAX_HANDS, P_USED_HANDS
-    UseHands, FreeHands
-    /std/weapon.c, /std/spellbook.c
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der freien Haende.
+   Effektiv nur ein die Differenz von P_MAX_HANDS und P_USED_HANDS.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property. Die Methode /std/living/combat::_query_free_hands
+   stellt die Daten zusammen. Nicht setzen!
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS
+   UseHands, FreeHands
+   /std/weapon.c, /std/spellbook.c
 
 1. Okt 2012, Gloinson
diff --git a/doc/props/P_FRIEND b/doc/props/P_FRIEND
index ded080c..b22203b 100644
--- a/doc/props/P_FRIEND
+++ b/doc/props/P_FRIEND
@@ -1,24 +1,39 @@
-NAME:
-	P_FRIEND			"friend"
 
-DEFINIERT IN:
-	<combat.h>
+P_FRIEND
+********
 
-BESCHREIBUNG:
-	Setzt man diese Property in einem NPC auf einen Wert ungleich Null,
-	so wird der NPC bei Zauberspruechen, die auf bestimmte Gruppen
-	wirken, der Gruppe der Spieler und nicht der Gruppe der NPCs
-	zugeordnet. Ausserdem wird der NPC bei einem "toete alle" nicht mit
-	angegriffen.
-	Wurde der NPC einem Spieler per AssocMember() zugeordnet, so
-	befindet sich der NPC automatisch im jeweiligen Team des Spielers
-	 (moeglichst auch in der selben Kampfreihe), und die Property hat
-	dann automatisch das Spielerobjekt als Wert.
-	Da dieser Wert in diesem Fall natuerlich ungleich Null ist, wird der
-	NPC dann auch der Gruppe der Spieler zugeordnet.
 
-SIEHE AUCH:
-	FindGroup(), AssocMember(), P_TEAM_ASSOC_MEMBERS, /std/living/team.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_FRIEND                        "friend"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Setzt man diese Property in einem NPC auf einen Wert ungleich Null,
+   so wird der NPC bei Zauberspruechen, die auf bestimmte Gruppen
+   wirken, der Gruppe der Spieler und nicht der Gruppe der NPCs
+   zugeordnet. Ausserdem wird der NPC bei einem "toete alle" nicht mit
+   angegriffen.
+   Wurde der NPC einem Spieler per AssocMember() zugeordnet, so
+   befindet sich der NPC automatisch im jeweiligen Team des Spielers
+    (moeglichst auch in der selben Kampfreihe), und die Property hat
+   dann automatisch das Spielerobjekt als Wert.
+   Da dieser Wert in diesem Fall natuerlich ungleich Null ist, wird der
+   NPC dann auch der Gruppe der Spieler zugeordnet.
+
+
+SIEHE AUCH
+==========
+
+   FindGroup(), AssocMember(), P_TEAM_ASSOC_MEMBERS, /std/living/team.c
+
 Last modified: Tue Dec 29 17:02:55 1998 by Patryn
diff --git a/doc/props/P_FROG b/doc/props/P_FROG
index 5f64eac..71badbe 100644
--- a/doc/props/P_FROG
+++ b/doc/props/P_FROG
@@ -1,8 +1,21 @@
-NAME:
-    P_FROG                        "frog"                        
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_FROG
+******
 
-BESCHREIBUNG:
-     Gesetzt, wenn der Spieler ein Frosch ist.
+
+NAME
+====
+
+   P_FROG                        "frog"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Spieler ein Frosch ist.
diff --git a/doc/props/P_FUEL b/doc/props/P_FUEL
index 890ca60..79f8515 100644
--- a/doc/props/P_FUEL
+++ b/doc/props/P_FUEL
@@ -1,26 +1,48 @@
-NAME:
-    P_FUEL                        "fuel"                        
 
-DEFINIERT IN:
-    /sys/properties.h
+P_FUEL
+******
 
-BESCHREIBUNG:
-     Numerischer Wert fuer die Zeitdauer, die die Lichtquelle noch
-     leuchten kann. Standardmaessig ist der Wert auf 20 gesetzt.
 
-     Setzt man die Property auf einen Wert, der groesser ist als der vorige
-     Maximalwert, wird dieser auf den neuen Wert erhoeht. Aendert man den
-     Brennstoffvorrat der Lichtquelle hingegen mittels AddFuel(), so wird
-     der Wert von P_FUEL ueber den Maximalwert hinaus erhoeht.
+NAME
+====
 
-HINWEIS:
-     Fuer Aenderungen an der Property kann auch die Funktion AddFuel()
-     verwendet werden. 
+   P_FUEL                        "fuel"
 
-SIEHE AUCH:
-     Basisklassen: /std/lightsource.c
-     Properties:   P_LIGHTDESC, P_DO_DESTRUCT, P_LIGHT
-     Methoden:     AddFuel(L)
 
-LETZTE AENDERUNG:
-    22. Dez. 2015, Arathorn
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die Zeitdauer, die die Lichtquelle noch
+   leuchten kann. Standardmaessig ist der Wert auf 20 gesetzt.
+
+   Setzt man die Property auf einen Wert, der groesser ist als der vorige
+   Maximalwert, wird dieser auf den neuen Wert erhoeht. Aendert man den
+   Brennstoffvorrat der Lichtquelle hingegen mittels AddFuel(), so wird
+   der Wert von P_FUEL ueber den Maximalwert hinaus erhoeht.
+
+
+HINWEIS
+=======
+
+   Fuer Aenderungen an der Property kann auch die Funktion AddFuel()
+   verwendet werden.
+
+
+SIEHE AUCH
+==========
+
+   Basisklassen: /std/lightsource.c
+   Properties:   P_LIGHTDESC, P_DO_DESTRUCT, P_LIGHT
+   Methoden:     AddFuel(L)
+
+
+LETZTE AENDERUNG
+================
+
+   22. Dez. 2015, Arathorn
diff --git a/doc/props/P_FUNC_MSG b/doc/props/P_FUNC_MSG
index b4f9d1e..adcca1a 100644
--- a/doc/props/P_FUNC_MSG
+++ b/doc/props/P_FUNC_MSG
@@ -1,21 +1,40 @@
-NAME:
-    P_FUNC_MSG                    "func_msg"                    
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_FUNC_MSG
+**********
 
-BESCHREIBUNG:
-     Liste mit Funktionen, die zufaellig im Raum aufgerufen werden.
 
-     Hier ist nur eine zur rufende lokale Methode als String oder eine
-     Sammlung davon als Stringarray gespeichert.
+NAME
+====
 
-ANMERKUNGEN:
-     Bitte AddRoomMessage() zum Hinzufuegen/Ueberschreiben benutzen!
+   P_FUNC_MSG                    "func_msg"
 
-SIEHE AUCH:
-     LFuns:    AddRoomMessage()
-     Verwandt: tell_room(), ReceiveMsg()
-     Props:    P_ROOM_MSG, P_MSG_PROB
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Liste mit Funktionen, die zufaellig im Raum aufgerufen werden.
+
+   Hier ist nur eine zur rufende lokale Methode als String oder eine
+   Sammlung davon als Stringarray gespeichert.
+
+
+ANMERKUNGEN
+===========
+
+   Bitte AddRoomMessage() zum Hinzufuegen/Ueberschreiben benutzen!
+
+
+SIEHE AUCH
+==========
+
+   LFuns:    AddRoomMessage()
+   Verwandt: tell_room(), ReceiveMsg()
+   Props:    P_ROOM_MSG, P_MSG_PROB
 
 2.Feb 2016 Gloinson
diff --git a/doc/props/P_FW_ALWAYS_READABLE b/doc/props/P_FW_ALWAYS_READABLE
index 31700ed..f770431 100644
--- a/doc/props/P_FW_ALWAYS_READABLE
+++ b/doc/props/P_FW_ALWAYS_READABLE
@@ -1,8 +1,21 @@
-NAME:
-    P_FW_ALWAYS_READABLE          "fw_always_readable"          
 
-DEFINIERT IN:
-    /sys/properties.h
+P_FW_ALWAYS_READABLE
+********************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_FW_ALWAYS_READABLE          "fw_always_readable"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_FW_UNDERSTAND b/doc/props/P_FW_UNDERSTAND
index ff8f6e6..2884555 100644
--- a/doc/props/P_FW_UNDERSTAND
+++ b/doc/props/P_FW_UNDERSTAND
@@ -1,8 +1,21 @@
-NAME:
-    P_FW_UNDERSTAND               "fw_understand"               
 
-DEFINIERT IN:
-    /sys/properties.h
+P_FW_UNDERSTAND
+***************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_FW_UNDERSTAND               "fw_understand"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_GENDER b/doc/props/P_GENDER
index 93f73dc..c2a3f77 100644
--- a/doc/props/P_GENDER
+++ b/doc/props/P_GENDER
@@ -1,9 +1,22 @@
-NAME:
-    P_GENDER                      "gender"                      
 
-DEFINIERT IN:
-    /sys/thing/language.h
+P_GENDER
+********
 
-BESCHREIBUNG:
-     Grammatikalisches Geschlecht des Objektes:
-     (Definiert in language.h) MALE, FEMALE oder NEUTER
+
+NAME
+====
+
+   P_GENDER                      "gender"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/language.h
+
+
+BESCHREIBUNG
+============
+
+   Grammatikalisches Geschlecht des Objektes:
+   (Definiert in language.h) MALE, FEMALE oder NEUTER
diff --git a/doc/props/P_GHOST b/doc/props/P_GHOST
index 9cbf309..31c9f2d 100644
--- a/doc/props/P_GHOST
+++ b/doc/props/P_GHOST
@@ -1,8 +1,21 @@
-NAME:
-    P_GHOST                       "ghost"                       
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_GHOST
+*******
 
-BESCHREIBUNG:
-     Gesetzt, wenn der Spieler tot ist.
+
+NAME
+====
+
+   P_GHOST                       "ghost"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Spieler tot ist.
diff --git a/doc/props/P_GIVE_MSG b/doc/props/P_GIVE_MSG
index bd6a624..e21dbad 100644
--- a/doc/props/P_GIVE_MSG
+++ b/doc/props/P_GIVE_MSG
@@ -1,65 +1,83 @@
+
 P_GIVE_MSG
-NAME:
-     P_GIVE_MSG				"give_message"
+**********
 
-DEFINIERT IN:
-     /sys/living/put_and_get.h
 
-BESCHREIBUNG:
-     Mit P_GIVE_MSG kann man die Meldung, die man beim Uebergeben eines
-     Objektes bekommt, modifizieren.
+NAME
+====
 
-     Folgende Werte sind moeglich:
+   P_GIVE_MSG                         "give_message"
 
-     o 0
-       Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-     o NO_PNG_MSG	== -1
-       Es wird keinerlei Meldung ausgegeben
+DEFINIERT IN
+============
 
-     o Ein Array aus Strings
-       Der erste String wird an den Spieler ausgegeben, der zweite
-       (optionale) an den Raum, der dritte (ebenfalls optionale) an den
-       Empfaenger.
+   /sys/living/put_and_get.h
 
-       Die Strings werden durch die Funktion replace_personal() geparst.
-	Objekt1 - Spieler
-        Objekt2 - das Objekt, das uebergeben wird
-	Objekt3 - Empfaenger
 
-       Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
-       Raum. Beim Fehlen des dritten gibt es keine Meldung an den Empfaenger.
+BESCHREIBUNG
+============
 
-BEISPIEL:
-     void create() {
-      ...
-      SetProp( P_SHORT, "Etwas Sand" );
-      SetProp( P_LONG, break_string(
-	"Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+   Mit P_GIVE_MSG kann man die Meldung, die man beim Uebergeben eines
+   Objektes bekommt, modifizieren.
 
-      SetProp( P_NAME, "Sand" );
-      AddId( ({"sand"}) );
-      SetProp( P_GENDER, MALE );
+   Folgende Werte sind moeglich:
 
-      SetProp( P_GIVE_MSG, ({
-       "Du laesst @WEN2 in @WESSEN3 Haende rieseln.",
-       "@WER1 laesst @WENU2 in @WESSEN3 Haende rieseln.",
-       "@WER1 laesst @WENU2 in deine Haende rieseln."}));
-       ...
-      }
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-     Das ganze fuehrt bei Ugars "gib sand an peter" zu folgenden
-     Meldungen:
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
 
-     Ugar: "Du laesst den Sand in Peters Haende rieseln."
-     Raum: "Ugar laesst Sand in Peters Haende rieseln."
-     Peter: "Ugar laesst Sand in deine Haende rieseln."
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum, der dritte (ebenfalls optionale) an den
+     Empfaenger.
 
-SIEHE AUCH:
-     Aehnliches: P_DROP_MSG, P_PUT_MSG, P_PICK_MSG, P_SHOW_MSG
-     Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
-                 P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Sonstiges:  replace_personal(E), give(L), give_objects(L),
-		 give_notify(L), /std/living/put_and_get.c
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das uebergeben wird
+      Objekt3 - Empfaenger
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum. Beim Fehlen des dritten gibt es keine Meldung an den Empfaenger.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Etwas Sand" );
+    SetProp( P_LONG, break_string(
+      "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+
+    SetProp( P_NAME, "Sand" );
+    AddId( ({"sand"}) );
+    SetProp( P_GENDER, MALE );
+
+    SetProp( P_GIVE_MSG, ({
+     "Du laesst @WEN2 in @WESSEN3 Haende rieseln.",
+     "@WER1 laesst @WENU2 in @WESSEN3 Haende rieseln.",
+     "@WER1 laesst @WENU2 in deine Haende rieseln."}));
+     ...
+    }
+
+   Das ganze fuehrt bei Ugars "gib sand an peter" zu folgenden
+   Meldungen:
+
+   Ugar: "Du laesst den Sand in Peters Haende rieseln."
+   Raum: "Ugar laesst Sand in Peters Haende rieseln."
+   Peter: "Ugar laesst Sand in deine Haende rieseln."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_DROP_MSG, P_PUT_MSG, P_PICK_MSG, P_SHOW_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), give(L), give_objects(L),
+               give_notify(L), /std/living/put_and_get.c
 
 14. Maerz 2004 Gloinson
diff --git a/doc/props/P_GLOBAL_SKILLPROPS b/doc/props/P_GLOBAL_SKILLPROPS
index fc12c1e..1e3533b 100644
--- a/doc/props/P_GLOBAL_SKILLPROPS
+++ b/doc/props/P_GLOBAL_SKILLPROPS
@@ -1,27 +1,46 @@
-NAME:
-    P_GLOBAL_SKILLPROPS        "sm_global"                   
 
-DEFINIERT IN:
-    /sys/new_skills.h
+P_GLOBAL_SKILLPROPS
+*******************
 
-BESCHREIBUNG:
-    Diese Gilden- und Spellbookproperty enthaelt Eigenschaften, die
-    alle Spells eines Spellbooks bzw. alle Skills und Spells einer Gilde
-    haben sollen.
 
-BEISPIELE:
-    SetProp(P_GLOBAL_SKILLPROPS,
-      ([SI_SKILLRESTR_USE:     ([SR_FUN: #'spellTest]),
-        OFFSET(SI_SKILLLEARN): #'learnOffset,
-        OFFSET(SI_SPELLCOST):  #'costOffset,
-        FACTOR(SI_SPELLCOST):  #'costFactor]));
+NAME
+====
 
-SIEHE AUCH:
-    GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
-    * Properties:     P_GUILD_SKILLS
-    Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Properties:     P_SB_SPELLS
-    Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+   P_GLOBAL_SKILLPROPS        "sm_global"
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gilden- und Spellbookproperty enthaelt Eigenschaften, die
+   alle Spells eines Spellbooks bzw. alle Skills und Spells einer Gilde
+   haben sollen.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_GLOBAL_SKILLPROPS,
+     ([SI_SKILLRESTR_USE:     ([SR_FUN: #'spellTest]),
+       OFFSET(SI_SKILLLEARN): #'learnOffset,
+       OFFSET(SI_SPELLCOST):  #'costOffset,
+       FACTOR(SI_SPELLCOST):  #'costFactor]));
+
+
+SIEHE AUCH
+==========
+
+   GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
+   * Properties:     P_GUILD_SKILLS
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Properties:     P_SB_SPELLS
+   Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+
+3. Okt 2011 Gloinson
diff --git a/doc/props/P_GUARD b/doc/props/P_GUARD
index ebeb989..7128df6 100644
--- a/doc/props/P_GUARD
+++ b/doc/props/P_GUARD
@@ -1,50 +1,70 @@
+
 P_GUARD
-NAME:
-     P_GUARD				"guard"
-
-DEFINIERT IN:
-     /sys/guard.h
-
-BESCHREIBUNG:
-     Diese Property gibt an, ob ein NPC aus einem Raum entfernt werden darf
-     oder nicht. Abgefragt werden muss dies von den Items oder Spells, die
-     den NPC zu einer Bewegung zwingen wollen. Es wird nicht automatisch
-     darauf geachtet!
-
-     Entscheidend hierbei ist ein in der Property enthaltene (ganzzahliger)
-     Zahlenwert zwischen 0 und 100, der hierbei den Grad der
-     'Bewachungsstaerke' eines NPCs angibt. Bei 0 laesst sich das Lebewesen
-     immer zu einer Bewegung ueberreden, bei 100 ueberhaupt nicht. Dazwischen
-     gibt es die Wahrscheinlichkeit dafuer an.
-
-BEMERKUNGEN:
-     - alle von /std/npc abgeleiteten NPCs haben standardmaessig P_GUARD
-       auf 100 gesetzt, sind also nicht fortfuehrbar
-     - bei der Erzeugung von NPCs mit P_GUARD < 100 AddItem() mit dem
-       Parameter REFRESH_MOVE_HOME verwenden, damit sie bei einem Raumreset
-       gegebenenfalls an ihren Ausgangsort zurueckkehren. 
-     - gildenspezifische weitere Abfragen auf Level oAe bitte bei Gilden-
-       magiern erfragen
-
-BEISPIELE:
-     // ein Test
-     if(random(100)<=liv->QueryProp(P_GUARD))
-      cannotMoveNPC(); // NPC darf nicht bewegt werden!
-     else
-      moveNPC();       // NPC darf bewegt werden
-
-     // ein wegfuehrbarer NPC
-     void create() {
-      ::create();
-      ...
-      SetProp(P_GUARD,50);
-      ...
-     }
-     // mit 50% Wahrscheinlichkeit (pro Versuch) laesst sich der NPC nun
-     // fortfuehren
+*******
 
 
-SIEHE AUCH:
-     AddItem()
+NAME
+====
+
+   P_GUARD                            "guard"
+
+
+DEFINIERT IN
+============
+
+   /sys/guard.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, ob ein NPC aus einem Raum entfernt werden darf
+   oder nicht. Abgefragt werden muss dies von den Items oder Spells, die
+   den NPC zu einer Bewegung zwingen wollen. Es wird nicht automatisch
+   darauf geachtet!
+
+   Entscheidend hierbei ist ein in der Property enthaltene (ganzzahliger)
+   Zahlenwert zwischen 0 und 100, der hierbei den Grad der
+   'Bewachungsstaerke' eines NPCs angibt. Bei 0 laesst sich das Lebewesen
+   immer zu einer Bewegung ueberreden, bei 100 ueberhaupt nicht. Dazwischen
+   gibt es die Wahrscheinlichkeit dafuer an.
+
+
+BEMERKUNGEN
+===========
+
+   - alle von /std/npc abgeleiteten NPCs haben standardmaessig P_GUARD
+     auf 100 gesetzt, sind also nicht fortfuehrbar
+   - bei der Erzeugung von NPCs mit P_GUARD < 100 AddItem() mit dem
+     Parameter REFRESH_MOVE_HOME verwenden, damit sie bei einem Raumreset
+     gegebenenfalls an ihren Ausgangsort zurueckkehren.
+   - gildenspezifische weitere Abfragen auf Level oAe bitte bei Gilden-
+     magiern erfragen
+
+
+BEISPIELE
+=========
+
+   // ein Test
+   if(random(100)<=liv->QueryProp(P_GUARD))
+    cannotMoveNPC(); // NPC darf nicht bewegt werden!
+   else
+    moveNPC();       // NPC darf bewegt werden
+
+   // ein wegfuehrbarer NPC
+   void create() {
+    ::create();
+    ...
+    SetProp(P_GUARD,50);
+    ...
+   }
+   // mit 50% Wahrscheinlichkeit (pro Versuch) laesst sich der NPC nun
+   // fortfuehren
+
+
+SIEHE AUCH
+==========
+
+   AddItem()
 
 13.April 2004 Gloinson
diff --git a/doc/props/P_GUILD b/doc/props/P_GUILD
index bcffb4c..c3c13cb 100644
--- a/doc/props/P_GUILD
+++ b/doc/props/P_GUILD
@@ -1,22 +1,40 @@
+
 P_GUILD
-NAME:
-     P_GUILD				"guild"                       
+*******
 
-DEFINIERT IN:
-     /sys/properties.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt den Namen der Gilde, welcher das Lebewesen
-     angehoert. Der Name der Gilde ist hierbei kleingeschrieben als String
-     definiert.
+NAME
+====
 
-BEMERKUNGEN:
-     Bei Spielern ist der Wert dieser Property niemals Null, denn sie
-     gehoeren standardmaessig der in P_DEFAULT_GUILD stehenden Gilde an.
-     Ueber die gesetzte P_GUILD werden auch aktive Skills ermittelt.
+   P_GUILD                            "guild"
 
-SIEHE AUCH:
-     P_DEFAULT_GUILD, P_VISIBLE_GUILD
-     P_GUILD_TITLE, P_SUBGUILD_TITLE
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt den Namen der Gilde, welcher das Lebewesen
+   angehoert. Der Name der Gilde ist hierbei kleingeschrieben als String
+   definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Bei Spielern ist der Wert dieser Property niemals Null, denn sie
+   gehoeren standardmaessig der in P_DEFAULT_GUILD stehenden Gilde an.
+   Ueber die gesetzte P_GUILD werden auch aktive Skills ermittelt.
+
+
+SIEHE AUCH
+==========
+
+   P_DEFAULT_GUILD, P_VISIBLE_GUILD
+   P_GUILD_TITLE, P_SUBGUILD_TITLE
 
 26. Maerz 2004 Gloinson
diff --git a/doc/props/P_GUILD_DEACTIVATE_SKILLS b/doc/props/P_GUILD_DEACTIVATE_SKILLS
index 019da30..a53d6ce 100644
--- a/doc/props/P_GUILD_DEACTIVATE_SKILLS
+++ b/doc/props/P_GUILD_DEACTIVATE_SKILLS
@@ -1,38 +1,50 @@
-PROPERTY:
 
-  P_GUILD_DEACTIVATE_SKILLS     "guild_deactivate_skills"
+P_GUILD_DEACTIVATE_SKILLS
+*************************
 
-DEFINIERT IN: 
 
-  new_skills.h
+PROPERTY
+========
 
-BESCHREIBUNG:
+   P_GUILD_DEACTIVATE_SKILLS     "guild_deactivate_skills"
 
-  Diese Property erlaubt es, Gildenmitgliedern die benutzung von ANY-
-  Skills zu untersagen. Dies sind einerseits die allgemeinen Waffenskills,
-  andererseits koennte das auch der entgifte-Spruch der Duesterwald -
-  Quest sein.
+DEFINIERT IN:
 
-  Wert dieser Property ist ein Mapping, das als Keys die einzelnen
-  Skills und als Wert 1 enthaelt, wenn ein Skill deaktiviert
-  werden soll und 0, falls nicht.
+   new_skills.h
 
-  Diese Property wird nur bei einem Neuerzeugen des Spielers neu 
-  ausgelesen, da es sonst zuviel Rechenzeit kostet.
 
-BEISPIEL:
+BESCHREIBUNG
+============
 
-  Jede Gilde, die keine Waffenskills benutzen soll (oder selbst welche hat)
-  enthaelt folgenden Befehl:
+   Diese Property erlaubt es, Gildenmitgliedern die benutzung von ANY-
+   Skills zu untersagen. Dies sind einerseits die allgemeinen Waffenskills,
+   andererseits koennte das auch der entgifte-Spruch der Duesterwald -
+   Quest sein.
 
-    SetProp(P_GUILD_DEACTIVATE_SKILLS,
-    ([FIGHT(WT_SWORD):1,
-    FIGHT(WT_AXE):1,
-    FIGHT(WT_CLUB):1,
-    FIGHT(WT_SPEAR):1,
-    FIGHT(WT_KNIFE):1,
-    FIGHT(WT_WHIP):1]));
-    
-LETZTE AENDERUNG: 
+   Wert dieser Property ist ein Mapping, das als Keys die einzelnen
+   Skills und als Wert 1 enthaelt, wenn ein Skill deaktiviert
+   werden soll und 0, falls nicht.
 
-2003-01-30, 14:15, Humni
+   Diese Property wird nur bei einem Neuerzeugen des Spielers neu
+   ausgelesen, da es sonst zuviel Rechenzeit kostet.
+
+
+BEISPIEL
+========
+
+   Jede Gilde, die keine Waffenskills benutzen soll (oder selbst welche hat)
+   enthaelt folgenden Befehl:
+
+     SetProp(P_GUILD_DEACTIVATE_SKILLS,
+     ([FIGHT(WT_SWORD):1,
+     FIGHT(WT_AXE):1,
+     FIGHT(WT_CLUB):1,
+     FIGHT(WT_SPEAR):1,
+     FIGHT(WT_KNIFE):1,
+     FIGHT(WT_WHIP):1]));
+
+LETZTE AENDERUNG
+
+
+2003-01-30, 1415, Humni
+=======================
diff --git a/doc/props/P_GUILD_DEFAULT_SPELLBOOK b/doc/props/P_GUILD_DEFAULT_SPELLBOOK
index 9ad9150..4d6bbd0 100644
--- a/doc/props/P_GUILD_DEFAULT_SPELLBOOK
+++ b/doc/props/P_GUILD_DEFAULT_SPELLBOOK
@@ -1,23 +1,44 @@
-NAME:
-	P_GUILD_DEFAULT_SPELLBOOK	"guild_sb"                    
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_GUILD_DEFAULT_SPELLBOOK
+*************************
 
-BESCHREIBUNG:
-	Diese Gildenproperty enthaelt den Namen des Spellbooks, welches
-	standardmaessig von der Gilde verwendet wird.
 
-BEMERKUNGEN:
-	Bei Spells kann sie mit SI_SPELLBOOK ueberschrieben werden.
+NAME
+====
 
-BEISPIELE:
-	Bei Zauberern waere folgendes denkbar:
-	  SetProp(P_GUILD_DEFAULT_SPELLBOOK,"magie_sp");
-	Das Spellbook ist hierbei unter "/spellbooks/magie_sp.c" zu finden.
+   P_GUILD_DEFAULT_SPELLBOOK       "guild_sb"
 
-SIEHE AUCH:
-	P_GUILD
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt den Namen des Spellbooks, welches
+   standardmaessig von der Gilde verwendet wird.
+
+
+BEMERKUNGEN
+===========
+
+   Bei Spells kann sie mit SI_SPELLBOOK ueberschrieben werden.
+
+
+BEISPIELE
+=========
+
+   Bei Zauberern waere folgendes denkbar:
+     SetProp(P_GUILD_DEFAULT_SPELLBOOK,"magie_sp");
+   Das Spellbook ist hierbei unter "/spellbooks/magie_sp.c" zu finden.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_GUILD_FEMALE_TITLES b/doc/props/P_GUILD_FEMALE_TITLES
index b1528e9..c06947d 100644
--- a/doc/props/P_GUILD_FEMALE_TITLES
+++ b/doc/props/P_GUILD_FEMALE_TITLES
@@ -1,24 +1,42 @@
-NAME:
-	P_GUILD_FEMALE_TITLES		"guild_female_titles"         
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_GUILD_FEMALE_TITLES
+*********************
 
-BESCHREIBUNG:
-	Diese Gildenproperty enthaelt die Stufenbezeichnungen fuer
-	weibliche Gildenmitglieder. Als Schluessel dienen hierbei die
-	Gildenstufen und die entsprechenden Eintraege sind dann die zur
-	Stufe gehoerigen Gildentitel.
 
-BEISPIELE:
-	Eine Programmierergilde koennte folgende Stufenbezeichnungen
-	beinhalten:
-	  SetProp(P_GUILD_FEMALE_TITLES,([1:"die Anfaengerin",
-	                                  2:"die Fortgeschrittene",
-	                                  3:"die Professionelle ;)"]));
+NAME
+====
 
-SIEHE AUCH:
-	P_GENDER, P_GUILD_LEVEL, P_GUILD_TITLE, P_GUILD_MALE_TITLES
+   P_GUILD_FEMALE_TITLES           "guild_female_titles"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt die Stufenbezeichnungen fuer
+   weibliche Gildenmitglieder. Als Schluessel dienen hierbei die
+   Gildenstufen und die entsprechenden Eintraege sind dann die zur
+   Stufe gehoerigen Gildentitel.
+
+
+BEISPIELE
+=========
+
+   Eine Programmierergilde koennte folgende Stufenbezeichnungen
+   beinhalten:
+     SetProp(P_GUILD_FEMALE_TITLES,([1:"die Anfaengerin",
+                                     2:"die Fortgeschrittene",
+                                     3:"die Professionelle ;)"]));
+
+
+SIEHE AUCH
+==========
+
+   P_GENDER, P_GUILD_LEVEL, P_GUILD_TITLE, P_GUILD_MALE_TITLES
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_GUILD_LEVEL b/doc/props/P_GUILD_LEVEL
index 4920449..f38701c 100644
--- a/doc/props/P_GUILD_LEVEL
+++ b/doc/props/P_GUILD_LEVEL
@@ -1,23 +1,41 @@
-NAME:
-	P_GUILD_LEVEL			"guild_level"                 
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_GUILD_LEVEL
+*************
 
-BESCHREIBUNG:
-	Diese Property enthaelt die Gildenstufe des Lebewesens, welche nicht
-	unbedingt seiner Spielerstufe entspricht.
 
-BEMERKUNGEN:
-	Bei manchen Gilden entspricht die Gildenstufe standardmaessig der
-	Spielerstufe (Abenteurer, Katzenkrieger). In der Property selbst
-	wird eigentlich ein Mapping eingetragen, welches die Gildennamen als
-	Schluessel und die dazugehoerige Gildenstufe als Eintrag enthaelt.
-	Bei der Abfrage der Property wird jedoch die Gilde beruecksichtigt
-	und die aktuelle Gildenstufe zurueckgeliefert.
+NAME
+====
 
-SIEHE AUCH:
-	P_GUILD, P_GUILD_TITLE, P_GUILD_MALE_TITLES, P_GUILD_FEMALE_TITLES
+   P_GUILD_LEVEL                   "guild_level"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Gildenstufe des Lebewesens, welche nicht
+   unbedingt seiner Spielerstufe entspricht.
+
+
+BEMERKUNGEN
+===========
+
+   Bei manchen Gilden entspricht die Gildenstufe standardmaessig der
+   Spielerstufe (Abenteurer, Katzenkrieger). In der Property selbst
+   wird eigentlich ein Mapping eingetragen, welches die Gildennamen als
+   Schluessel und die dazugehoerige Gildenstufe als Eintrag enthaelt.
+   Bei der Abfrage der Property wird jedoch die Gilde beruecksichtigt
+   und die aktuelle Gildenstufe zurueckgeliefert.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, P_GUILD_TITLE, P_GUILD_MALE_TITLES, P_GUILD_FEMALE_TITLES
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_GUILD_LEVELS b/doc/props/P_GUILD_LEVELS
index 80d2237..9b9b80d 100644
--- a/doc/props/P_GUILD_LEVELS
+++ b/doc/props/P_GUILD_LEVELS
@@ -1,35 +1,56 @@
-NAME:
-	P_GUILD_LEVELS			"guild_levels"                
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_GUILD_LEVELS
+**************
 
-BESCHREIBUNG:
-	Diese Gildenproperty enthaelt ein Mapping mit den
-	Stufenbeschraenkungen fuer die jeweiligen Gildenstufen. Als
-	Schluessel dient der jeweilige Gildenlevel und die entsprechenden
-	Eintraege sind wiederum Mappings, in welchen die Beschraenkungen
-	angegeben sind.
 
-BEMERKUNGEN:
-	Die Beschraenkungen fuer Level 1 sollten auch fuer die
-	Eintrittsbeschraenkungen der Gilde gelten. Letztere kann man in der
-	Property P_GUILD_RESTRICTIONS angeben.
+NAME
+====
 
-BEISPIELE:
-	Das folgende Beispiel zeigt ein paar moegliche Abfragen:
-	  string check(object pl);
-	  SetProp(P_GUILD_LEVELS,([1:([P_LEVEL:3,P_QP:100,SR_FUN:#'check]),
-	                           2:([A_INT:10,P_LEVEL:25]),
-	                           3:([A_INT:20,P_LEVEL:50])]));
-	  string check(object pl)
-	  { if(pl->QueryProp(P_MALE))
-	      return 0;
-	    return "Fuer Frauen ist das nichts!\n";
-	  }
+   P_GUILD_LEVELS                  "guild_levels"
 
-SIEHE AUCH:
-	P_GUILD_LEVEL, P_GUILD_RESTRICTIONS, /std/restriction_checker.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt ein Mapping mit den
+   Stufenbeschraenkungen fuer die jeweiligen Gildenstufen. Als
+   Schluessel dient der jeweilige Gildenlevel und die entsprechenden
+   Eintraege sind wiederum Mappings, in welchen die Beschraenkungen
+   angegeben sind.
+
+
+BEMERKUNGEN
+===========
+
+   Die Beschraenkungen fuer Level 1 sollten auch fuer die
+   Eintrittsbeschraenkungen der Gilde gelten. Letztere kann man in der
+   Property P_GUILD_RESTRICTIONS angeben.
+
+
+BEISPIELE
+=========
+
+   Das folgende Beispiel zeigt ein paar moegliche Abfragen:
+     string check(object pl);
+     SetProp(P_GUILD_LEVELS,([1:([P_LEVEL:3,P_QP:100,SR_FUN:#'check]),
+                              2:([A_INT:10,P_LEVEL:25]),
+                              3:([A_INT:20,P_LEVEL:50])]));
+     string check(object pl)
+     { if(pl->QueryProp(P_MALE))
+         return 0;
+       return "Fuer Frauen ist das nichts!\n";
+     }
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD_LEVEL, P_GUILD_RESTRICTIONS, /std/restriction_checker.c
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_GUILD_MALE_TITLES b/doc/props/P_GUILD_MALE_TITLES
index 27e05a5..41cb773 100644
--- a/doc/props/P_GUILD_MALE_TITLES
+++ b/doc/props/P_GUILD_MALE_TITLES
@@ -1,24 +1,42 @@
-NAME:
-	P_GUILD_MALE_TITLES		"guild_male_titles"           
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_GUILD_MALE_TITLES
+*******************
 
-BESCHREIBUNG:
-	Diese Gildenproperty enthaelt die Stufenbezeichnungen fuer
-	maennliche Gildenmitglieder. Als Schluessel dienen hierbei die
-	Gildenstufen und die entsprechenden Eintraege sind dann die zur
-	Stufe gehoerigen Gildentitel.
 
-BEISPIELE:
-	Eine Programmierergilde koennte folgende Stufenbezeichnungen
-	beinhalten:
-	  SetProp(P_GUILD_MALE_TITLES,([1:"der Anfaenger",
-	                                2:"der Fortgeschrittene",
-	                                3:"der Profi"]));
+NAME
+====
 
-SIEHE AUCH:
-	P_GENDER, P_GILD_LEVEL, P_GUILD_TITLE, P_GUILD_FEMALE_TITLES
+   P_GUILD_MALE_TITLES             "guild_male_titles"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt die Stufenbezeichnungen fuer
+   maennliche Gildenmitglieder. Als Schluessel dienen hierbei die
+   Gildenstufen und die entsprechenden Eintraege sind dann die zur
+   Stufe gehoerigen Gildentitel.
+
+
+BEISPIELE
+=========
+
+   Eine Programmierergilde koennte folgende Stufenbezeichnungen
+   beinhalten:
+     SetProp(P_GUILD_MALE_TITLES,([1:"der Anfaenger",
+                                   2:"der Fortgeschrittene",
+                                   3:"der Profi"]));
+
+
+SIEHE AUCH
+==========
+
+   P_GENDER, P_GILD_LEVEL, P_GUILD_TITLE, P_GUILD_FEMALE_TITLES
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_GUILD_PREPAREBLOCK b/doc/props/P_GUILD_PREPAREBLOCK
index e429a49..ee1c361 100644
--- a/doc/props/P_GUILD_PREPAREBLOCK
+++ b/doc/props/P_GUILD_PREPAREBLOCK
@@ -1,37 +1,60 @@
+
+P_GUILD_PREPAREBLOCK
+********************
+
+
 P_GUILD_PREPAREBLOCK (int)
+==========================
 
-NAME:
-  P_GUILD_PREPAREBLOCK                           "guild_prepareblock" 
 
-DEFINIERT IN:
-  /sys/new_skills.h
+NAME
+====
 
-BESCHREIBUNG:
-  Diese Property enthaelt die Information, ob das Lebewesen in
-  der Konzentrationsphase eines Spells weiterkaempft oder ob
-  die Angriffe derweil ausgesetzt werden.
+   P_GUILD_PREPAREBLOCK                           "guild_prepareblock"
 
-BEMERKUNGEN:
-  In der Property selbst wird eigentlich ein Mapping eingetragen,
-  welches die Gildennamen als Schluessel und das dazugehoerige
-  Block-Flag als Eintrag enthaelt. Bei der Abfrage der Property wird
-  jedoch die Gilde beruecksichtigt und das aktuelle Flag
-  zurueckgeliefert.
-  Dementsprechend das diese Prop nicht mit Set() manipuliert werden, 
-  bitte ausschliessliche SetProp() verwenden.
 
-BEISPIELE:
-  Die Property sollte natuerlich nur von der Gilde gesetzt werden
-  und auch nur bei Gildenmitgliedern
+DEFINIERT IN
+============
 
-  if ( IsGuildMember(pl) )
-    pl->SetProp(P_GUILD_PREPAREBLOCK,1);
+   /sys/new_skills.h
 
-  Resultat: Kein Ausfuehren von Attack(), wenn pl sich auf einen
-  Zauberspruch konzentriert.
 
-SIEHE AUCH:
-  P_PREPARED_SPELL
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Diese Property enthaelt die Information, ob das Lebewesen in
+   der Konzentrationsphase eines Spells weiterkaempft oder ob
+   die Angriffe derweil ausgesetzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   In der Property selbst wird eigentlich ein Mapping eingetragen,
+   welches die Gildennamen als Schluessel und das dazugehoerige
+   Block-Flag als Eintrag enthaelt. Bei der Abfrage der Property wird
+   jedoch die Gilde beruecksichtigt und das aktuelle Flag
+   zurueckgeliefert.
+   Dementsprechend das diese Prop nicht mit Set() manipuliert werden,
+   bitte ausschliessliche SetProp() verwenden.
+
+
+BEISPIELE
+=========
+
+   Die Property sollte natuerlich nur von der Gilde gesetzt werden
+   und auch nur bei Gildenmitgliedern
+
+   if ( IsGuildMember(pl) )
+     pl->SetProp(P_GUILD_PREPAREBLOCK,1);
+
+   Resultat: Kein Ausfuehren von Attack(), wenn pl sich auf einen
+   Zauberspruch konzentriert.
+
+
+SIEHE AUCH
+==========
+
+   P_PREPARED_SPELL
+
 18.03.2008, Zesstra
diff --git a/doc/props/P_GUILD_RATING b/doc/props/P_GUILD_RATING
index df5800a..af9c24e 100644
--- a/doc/props/P_GUILD_RATING
+++ b/doc/props/P_GUILD_RATING
@@ -1,22 +1,40 @@
-NAME:
-	P_GUILD_RATING			"guild_rating"                
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_GUILD_RATING
+**************
 
-BESCHREIBUNG:
-	In dieser Property wird die Einstufung des Spielers innerhalb
-	seiner Gilde festgelegt. Der dafuer zu ermittelnde Wert muss in
-	einem Bereich von 0 bis 10000 liegen. Wie sich die Einstufung
-	zusammensetzt, bleibt der jeweiligen Gilde ueberlassen.
 
-BEMERKUNGEN:
-	Der Wert muss von der Gilde ermittelt werden! Meist setzt er sich
-	aus den Faehigkeiten des Mitglieds zusammen und mitunter fliessen
-	auch Gildenquests oder aehnliches mit ein.
+NAME
+====
 
-SIEHE AUCH:
-    P_NEWSKILLS, GuildRating
+   P_GUILD_RATING                  "guild_rating"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird die Einstufung des Spielers innerhalb
+   seiner Gilde festgelegt. Der dafuer zu ermittelnde Wert muss in
+   einem Bereich von 0 bis 10000 liegen. Wie sich die Einstufung
+   zusammensetzt, bleibt der jeweiligen Gilde ueberlassen.
+
+
+BEMERKUNGEN
+===========
+
+   Der Wert muss von der Gilde ermittelt werden! Meist setzt er sich
+   aus den Faehigkeiten des Mitglieds zusammen und mitunter fliessen
+   auch Gildenquests oder aehnliches mit ein.
+
+
+SIEHE AUCH
+==========
+
+   P_NEWSKILLS, GuildRating
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_GUILD_RESTRICTIONS b/doc/props/P_GUILD_RESTRICTIONS
index 8bbabc1..c94ccf3 100644
--- a/doc/props/P_GUILD_RESTRICTIONS
+++ b/doc/props/P_GUILD_RESTRICTIONS
@@ -1,37 +1,59 @@
-NAME:
-    P_GUILD_RESTRICTIONS        "guild_rest"                  
 
-DEFINIERT IN:
-    /sys/new_skills.h
+P_GUILD_RESTRICTIONS
+********************
 
-BESCHREIBUNG:
-    Diese Gildenproperty enthaelt ein Mapping mit den
-    Eintrittsbeschraenkungen fuer die jeweilige Gilde.
 
-BEMERKUNGEN:
-    Im allgemeinen sollte das Mapping mit den Eintrittsbeschraenkungen
-    mit den Beschraenkungen fuer Level 1 im Mapping von P_GUILD_LEVELS
-    uebereinstimmen.
+NAME
+====
 
-BEISPIELE:
-    Ein paar moegliche Abfragen waeren folgende:
-    string check(object pl);
+   P_GUILD_RESTRICTIONS        "guild_rest"
 
-    SetProp(P_GUILD_RESTRICTIONS,
-            ([P_LEVEL:3,
-              P_QP:100,
-              SR_FUN:#'check]));
 
-    string check(object pl) {
-      if(pl->QueryProp(P_MALE))
-        return 0;
-      return "Fuer Frauen ist das nichts!\n";
-    }
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    Gildenfkt.:
-    * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
-    * Sonstiges:    P_GUILD_LEVELS
-    Sonstiges:      /std/restriction_checker.c
+   /sys/new_skills.h
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt ein Mapping mit den
+   Eintrittsbeschraenkungen fuer die jeweilige Gilde.
+
+
+BEMERKUNGEN
+===========
+
+   Im allgemeinen sollte das Mapping mit den Eintrittsbeschraenkungen
+   mit den Beschraenkungen fuer Level 1 im Mapping von P_GUILD_LEVELS
+   uebereinstimmen.
+
+
+BEISPIELE
+=========
+
+   Ein paar moegliche Abfragen waeren folgende:
+   string check(object pl);
+
+   SetProp(P_GUILD_RESTRICTIONS,
+           ([P_LEVEL:3,
+             P_QP:100,
+             SR_FUN:#'check]));
+
+   string check(object pl) {
+     if(pl->QueryProp(P_MALE))
+       return 0;
+     return "Fuer Frauen ist das nichts!\n";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   * Sonstiges:    P_GUILD_LEVELS
+   Sonstiges:      /std/restriction_checker.c
+
+3. Okt 2011 Gloinson
diff --git a/doc/props/P_GUILD_SKILLS b/doc/props/P_GUILD_SKILLS
index d7e30a2..232a5cf 100644
--- a/doc/props/P_GUILD_SKILLS
+++ b/doc/props/P_GUILD_SKILLS
@@ -1,24 +1,42 @@
+
 P_GUILD_SKILLS
-NAME:
-    P_GUILD_SKILLS            "guild_skills"                
+**************
 
-DEFINIERT IN:
-    /sys/new_skills.h
 
-BESCHREIBUNG:
-    Diese Gildenproperty enthaelt ein Mapping mit allen Skills und
-    Spells der Gilde.
+NAME
+====
 
-BEMERKUNGEN:
-    Man sollte diese Property sollte nicht per Hand veraendern, sondern
-    die Funktionen AddSkill() bzw. AddSpell() nutzen.
+   P_GUILD_SKILLS            "guild_skills"
 
-SIEHE AUCH:
-    GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
-    * Sonstiges:      GuildRating
-    Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Properties:     P_SB_SPELLS, P_GLOBAL_SKILLPROPS, P_GUILD_RATING
-    Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
 
-3. Okt 2011 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt ein Mapping mit allen Skills und
+   Spells der Gilde.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property sollte nicht per Hand veraendern, sondern
+   die Funktionen AddSkill() bzw. AddSpell() nutzen.
+
+
+SIEHE AUCH
+==========
+
+   GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
+   * Sonstiges:      GuildRating
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Properties:     P_SB_SPELLS, P_GLOBAL_SKILLPROPS, P_GUILD_RATING
+   Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+
+3. Okt 2011 Gloinson
diff --git a/doc/props/P_GUILD_TITLE b/doc/props/P_GUILD_TITLE
index 4554349..d3a49b3 100644
--- a/doc/props/P_GUILD_TITLE
+++ b/doc/props/P_GUILD_TITLE
@@ -1,37 +1,58 @@
+
 P_GUILD_TITLE
-NAME:
-     P_GUILD_TITLE			"guild_title"                 
+*************
 
-DEFINIERT IN:
-     /sys/new_skills.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt den Gildentitel des Lebewesens, welcher der
-     Gildenstufe des Lebewesens entspricht und jedoch nur angezeigt wird,
-     wenn P_TITLE des Lebewesens gleich Null ist.
+NAME
+====
 
-BEMERKUNGEN:
-     In der Property selbst wird eigentlich ein Mapping eingetragen, welches
-     die Gildennamen als Schluessel und die dazugehoerigen Gildentitel als
-     Eintrag enthaelt. Bei der Abfrage der Property wird jedoch die Gilde
-     beruecksichtigt und der aktuelle Gildentitel zurueckgeliefert.
+   P_GUILD_TITLE                      "guild_title"
 
-BEISPIELE:
-	Fuer eine Programmierergilde waere folgendes denkbar:
-	  SetProp(P_GUILD_MALE_TITLES,([1:"der Anfaenger",
-	                                2:"der Fortgeschrittene",
-	                                3:"der Profi"]));
-	  SetProp(P_GUILD_FEMALE_TITLES,([1:"die Anfaengerin",
-	                                  2:"die Fortgeschrittene",
-	                                  3:"die Professionelle"]));
-	Ein weibliches Gildenmitglied mit der dritten Gildenstufe und ohne
-	P_TITLE wuerde dann den Titel "die Professionelle" tragen. Das hat
-	zwar nichts mit Programmierern zu tun, aber wie heisst eigentlich
-	ein weiblicher "Profi"?! :)
 
-SIEHE AUCH:
-     P_TITLE, P_GUILD, P_GUILD_LEVEL,
-     P_GUILD_MALE_TITLES, P_GUILD_FEMALE_TITLES,
-     P_SUBGUILD_TITLE
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt den Gildentitel des Lebewesens, welcher der
+   Gildenstufe des Lebewesens entspricht und jedoch nur angezeigt wird,
+   wenn P_TITLE des Lebewesens gleich Null ist.
+
+
+BEMERKUNGEN
+===========
+
+   In der Property selbst wird eigentlich ein Mapping eingetragen, welches
+   die Gildennamen als Schluessel und die dazugehoerigen Gildentitel als
+   Eintrag enthaelt. Bei der Abfrage der Property wird jedoch die Gilde
+   beruecksichtigt und der aktuelle Gildentitel zurueckgeliefert.
+
+
+BEISPIELE
+=========
+
+   Fuer eine Programmierergilde waere folgendes denkbar:
+     SetProp(P_GUILD_MALE_TITLES,([1:"der Anfaenger",
+                                   2:"der Fortgeschrittene",
+                                   3:"der Profi"]));
+     SetProp(P_GUILD_FEMALE_TITLES,([1:"die Anfaengerin",
+                                     2:"die Fortgeschrittene",
+                                     3:"die Professionelle"]));
+   Ein weibliches Gildenmitglied mit der dritten Gildenstufe und ohne
+   P_TITLE wuerde dann den Titel "die Professionelle" tragen. Das hat
+   zwar nichts mit Programmierern zu tun, aber wie heisst eigentlich
+   ein weiblicher "Profi"?! :)
+
+
+SIEHE AUCH
+==========
+
+   P_TITLE, P_GUILD, P_GUILD_LEVEL,
+   P_GUILD_MALE_TITLES, P_GUILD_FEMALE_TITLES,
+   P_SUBGUILD_TITLE
 
 26. Maerz 2004 Gloinson
diff --git a/doc/props/P_HANDS b/doc/props/P_HANDS
index 9eda7c5..859b4eb 100644
--- a/doc/props/P_HANDS
+++ b/doc/props/P_HANDS
@@ -1,57 +1,78 @@
+
 P_HANDS
-NAME:
-     P_HANDS                    "hands"
+*******
 
-DEFINIERT IN:
-     /sys/living/combat.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt ein dreielementiges Array mit
-     den folgenden Eintraegen:
-     1. Element: String mit der Meldung, wenn ohne Waffen angegriffen
-                 wird.
-     2. Element: Waffenklasse, wenn ohne Waffen angegriffen wird.
-     3. Element: Array mit Schadensarten (frueher auch: Schadensart)
+NAME
+====
 
-     eim Setzen dieser Property wird auch P_TOTAL_WC mit veraendert,
-     wenn das Lebewesen keine Waffe gezueckt hat. Steckt das Lebewesen
-     eine gezueckte Waffe weg, so wird ebenfalls P_TOTAL_WC mit der
-     Waffenklasse aus P_HANDS aktualisiert. Zueckt das Lebewesen eine
-     Waffe, so wird P_TOTAL_WC mit der Waffenklasse der Waffe (P_WC)
-     ueberschrieben. Die Property P_TOTAL_WC enthaelt somit immer die
-     aktuelle Angriffsstaerke des Lebewesen.
+   P_HANDS                    "hands"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein dreielementiges Array mit
+   den folgenden Eintraegen:
+   1. Element: String mit der Meldung, wenn ohne Waffen angegriffen
+               wird.
+   2. Element: Waffenklasse, wenn ohne Waffen angegriffen wird.
+   3. Element: Array mit Schadensarten (frueher auch: Schadensart)
+
+   eim Setzen dieser Property wird auch P_TOTAL_WC mit veraendert,
+   wenn das Lebewesen keine Waffe gezueckt hat. Steckt das Lebewesen
+   eine gezueckte Waffe weg, so wird ebenfalls P_TOTAL_WC mit der
+   Waffenklasse aus P_HANDS aktualisiert. Zueckt das Lebewesen eine
+   Waffe, so wird P_TOTAL_WC mit der Waffenklasse der Waffe (P_WC)
+   ueberschrieben. Die Property P_TOTAL_WC enthaelt somit immer die
+   aktuelle Angriffsstaerke des Lebewesen.
+
 
 BEMERKUNGEN
-     In alten Objekten kann es vorkommen, dass das dritte Element (Angabe des
-     Schadenstyps) fehlt. Dies ist eine Altlast, die Angabe des Schadenstypes
-     ist NICHT optional.)
+===========
 
-BEISPIEL:
-     Ein starker Tausendfuessler mit Schlagschaden:
-
-       SetProp(P_HANDS,({" mit tausend kleinen Fuesschen",1000, 
-                         ({DT_BLUDGEON}) }));
+   In alten Objekten kann es vorkommen, dass das dritte Element (Angabe des
+   Schadenstyps) fehlt. Dies ist eine Altlast, die Angabe des Schadenstypes
+   ist NICHT optional.)
 
 
-     Ein Saeurededaemon:
-       SetProp(P_HANDS,
-         ({
-           " mit saeuretriefenden Klauen",
-           250,
-           ({DT_RIP, DT_ACID})
-         })
-       );
+BEISPIEL
+========
 
-     Hier wurden gleich zwei Schadensarten angegeben, also wird
-     Mischschaden verursacht. Man sollte es jedoch nicht zu sehr
-     uebertreiben! Mehr als zwei oder drei gleichzeitig verwendete
-     Schadensarten lassen sich kaum mehr begruenden.
+   Ein starker Tausendfuessler mit Schlagschaden:
 
-SIEHE AUCH:
-     P_HANDS_USED_BY
-     P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
-     UseHands, FreeHands
-     P_TOTAL_WC, P_WC
-     /std/living/combat.c, /std/weapon/combat.c, /sys/combat.h
+     SetProp(P_HANDS,({" mit tausend kleinen Fuesschen",1000,
+                       ({DT_BLUDGEON}) }));
+
+
+   Ein Saeurededaemon:
+     SetProp(P_HANDS,
+       ({
+         " mit saeuretriefenden Klauen",
+         250,
+         ({DT_RIP, DT_ACID})
+       })
+     );
+
+   Hier wurden gleich zwei Schadensarten angegeben, also wird
+   Mischschaden verursacht. Man sollte es jedoch nicht zu sehr
+   uebertreiben! Mehr als zwei oder drei gleichzeitig verwendete
+   Schadensarten lassen sich kaum mehr begruenden.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+   P_TOTAL_WC, P_WC
+   /std/living/combat.c, /std/weapon/combat.c, /sys/combat.h
 
 22.02.2014 Zesstra
diff --git a/doc/props/P_HANDS_USED_BY b/doc/props/P_HANDS_USED_BY
index dd0e5fe..f0d5165 100644
--- a/doc/props/P_HANDS_USED_BY
+++ b/doc/props/P_HANDS_USED_BY
@@ -1,21 +1,39 @@
+
 P_HANDS_USED_BY
-NAME:
-     P_HANDS_USED_BY           "hands_used_by"
+***************
 
-DEFINIERT IN:
-     /sys/living/combat.h
 
-BESCHREIBUNG:
-     Enthaelt eine Liste mit den Objekten, die derzeit die Haende
-     des Livings belegen. Dabei koennen Objekte mehrmals auftauchen,
-     je nachdem wie viele Haende sie belegen.
+NAME
+====
 
-BEMERKUNGEN:
-     Darf nur ueber UseHands() und FreeHands() manipuliert werden.
+   P_HANDS_USED_BY           "hands_used_by"
 
-SIEHE AUCH:
-     P_HANDS
-     P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
-     UseHands, FreeHands
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt eine Liste mit den Objekten, die derzeit die Haende
+   des Livings belegen. Dabei koennen Objekte mehrmals auftauchen,
+   je nachdem wie viele Haende sie belegen.
+
+
+BEMERKUNGEN
+===========
+
+   Darf nur ueber UseHands() und FreeHands() manipuliert werden.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
 
 1.Feb.2004 Gloinson
diff --git a/doc/props/P_HARBOUR b/doc/props/P_HARBOUR
index c0e1048..f049847 100644
--- a/doc/props/P_HARBOUR
+++ b/doc/props/P_HARBOUR
@@ -1,66 +1,94 @@
-NAME:
-    P_HARBOUR                                  "harbour_name"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_HARBOUR
+*********
 
-BESCHREIBUNG:
-    Array mit eindeutiger Bezeichnung des 'Hafens'
 
-BEMERKUNGEN:
-    Diese Property wird in Raeumen gesetzt, die als Anleger fuer Transporter
-    dienen sollen. Sie enthaelt ein Array aus zwei Elementen, einem String
-    und einem String-Array, zum Beispiel:
+NAME
+====
 
-    ({ "zur Sonneninsel", ({"sonneninsel"}) }) oder 
-    ({ "nach Titiwu", ({"titiwu"}) })
+   P_HARBOUR                                  "harbour_name"
 
-    Damit bekommt der Spieler bei einer Abfrage seiner Reiseroute mittels
-    "reise route" eine Ausgabe wie 
-      'Du reist mit dem Floss nach Titiwu' oder
-      'Du reist mit dem Wal zur Sonneninsel'.
 
-    Das zweite Element der Property enthaelt eine Liste der IDs, mit denen
-    sich der Hafen mit dem Befehl "reise nach <ID>" ansprechen laesst. Im
-    Beispiel oben wuerde also "reise nach sonneninsel" und 
-    "reise nach titiwu" akzeptiert werden. Der erste Eintrag in dieser ID-
-    Liste wird in der Ausgabe des Befehls "reise route" verwendet, sollte
-    also den Anlegeort korrekt bezeichnen und nicht z.B. eine Abkuerzung
-    enthalten.
-    Es bietet sich an, bei bestimmten, deklinierbaren Bezeichnungen alle
-    Varianten einzutragen, z.B. "verlorenes land" und zusaetzlich
-    "verlorene land" und "verlorenen land", damit alle Varianten von 
-    "reise nach ..." funktionieren.
+DEFINIERT IN
+============
 
-    Ist in einem Hafen diese Property nicht gesetzt, so bekommt der 
-    Spieler keinerlei Hinweis darauf, wohin ihn ein bestimmter Trans-
-    porter befoerdert. 
-    Stattdessen erhaelt er die Bezeichnung 'unbekannt'.
+   /sys/transport.h
 
-HINWEISE:
-    Wird der zweite Parameter in dieser Property, d.h. die Liste der 
-    Anleger-IDs, nicht korrekt gesetzt, kann das dazu fuehren, dass Spieler
-    den hier anlegenden Transporter nicht benutzen koennen, weil es
-    keine sinnvolle Syntax gibt, um den gewuenschten Zielhafen zu finden.
 
-    Zu achten ist auch darauf, das der erste Eintrag unveraendert in einer 
-    Meldung an den Spieler ausgegeben wird, d.h. Gross-und Kleinschreibung
-    sollte korrekt sein.
+BESCHREIBUNG
+============
 
-HISTORIE:
-    Frueher war der zweite Eintrag in dieser Property ein einzelner String.
-    Es existiert eine SetMethode auf dieser Property, die solche Daten in
-    altem Code auf die neue Datenstruktur umbiegt. Dies fuehrt dazu, dass
-    bei solchen Objekten die im geladenen Raum enthaltenen Daten nicht mit
-    den Daten im File uebereinstimmen. Dies moege aber bitte niemand 
-    zum Anlass nehmen, in neuem Code veraltete Daten in die Property zu 
-    schreiben!
-    
-SIEHE AUCH:
-  Properties:     P_NO_TRAVELING, P_TRAVEL_INFO
-  Funktionen:     AddRoute(L)
-  Spielerbefehle: reise
-  weitere Doku:   /d/inseln/schiffe/HowTo
+   Array mit eindeutiger Bezeichnung des 'Hafens'
 
-LETZTE AENDERUNG:
+
+BEMERKUNGEN
+===========
+
+   Diese Property wird in Raeumen gesetzt, die als Anleger fuer Transporter
+   dienen sollen. Sie enthaelt ein Array aus zwei Elementen, einem String
+   und einem String-Array, zum Beispiel:
+
+   ({ "zur Sonneninsel", ({"sonneninsel"}) }) oder
+   ({ "nach Titiwu", ({"titiwu"}) })
+
+   Damit bekommt der Spieler bei einer Abfrage seiner Reiseroute mittels
+   "reise route" eine Ausgabe wie
+     'Du reist mit dem Floss nach Titiwu' oder
+     'Du reist mit dem Wal zur Sonneninsel'.
+
+   Das zweite Element der Property enthaelt eine Liste der IDs, mit denen
+   sich der Hafen mit dem Befehl "reise nach <ID>" ansprechen laesst. Im
+   Beispiel oben wuerde also "reise nach sonneninsel" und
+   "reise nach titiwu" akzeptiert werden. Der erste Eintrag in dieser ID-
+   Liste wird in der Ausgabe des Befehls "reise route" verwendet, sollte
+   also den Anlegeort korrekt bezeichnen und nicht z.B. eine Abkuerzung
+   enthalten.
+   Es bietet sich an, bei bestimmten, deklinierbaren Bezeichnungen alle
+   Varianten einzutragen, z.B. "verlorenes land" und zusaetzlich
+   "verlorene land" und "verlorenen land", damit alle Varianten von
+   "reise nach ..." funktionieren.
+
+   Ist in einem Hafen diese Property nicht gesetzt, so bekommt der
+   Spieler keinerlei Hinweis darauf, wohin ihn ein bestimmter Trans-
+   porter befoerdert.
+   Stattdessen erhaelt er die Bezeichnung 'unbekannt'.
+
+
+HINWEISE
+========
+
+   Wird der zweite Parameter in dieser Property, d.h. die Liste der
+   Anleger-IDs, nicht korrekt gesetzt, kann das dazu fuehren, dass Spieler
+   den hier anlegenden Transporter nicht benutzen koennen, weil es
+   keine sinnvolle Syntax gibt, um den gewuenschten Zielhafen zu finden.
+
+   Zu achten ist auch darauf, das der erste Eintrag unveraendert in einer
+   Meldung an den Spieler ausgegeben wird, d.h. Gross-und Kleinschreibung
+   sollte korrekt sein.
+
+
+HISTORIE
+========
+
+   Frueher war der zweite Eintrag in dieser Property ein einzelner String.
+   Es existiert eine SetMethode auf dieser Property, die solche Daten in
+   altem Code auf die neue Datenstruktur umbiegt. Dies fuehrt dazu, dass
+   bei solchen Objekten die im geladenen Raum enthaltenen Daten nicht mit
+   den Daten im File uebereinstimmen. Dies moege aber bitte niemand
+   zum Anlass nehmen, in neuem Code veraltete Daten in die Property zu
+   schreiben!
+
+
+SIEHE AUCH
+==========
+
+   Properties:     P_NO_TRAVELING, P_TRAVEL_INFO
+   Funktionen:     AddRoute(L)
+   Spielerbefehle: reise
+   weitere Doku:   /d/inseln/schiffe/HowTo
+
+
+LETZTE AENDERUNG
+================
+
 2015-Jan-18, Arathorn
diff --git a/doc/props/P_HAUS_ERLAUBT b/doc/props/P_HAUS_ERLAUBT
index 8ac6495..ffd5c8f 100644
--- a/doc/props/P_HAUS_ERLAUBT
+++ b/doc/props/P_HAUS_ERLAUBT
@@ -1,29 +1,46 @@
-NAME:
-    P_HAUS_ERLAUBT                "haus_erlaubt"                
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_HAUS_ERLAUBT
+**************
 
-BESCHREIBUNG:
-     Hier darf ein Seherhaus abgestellt werden
 
-BEMERKUNGEN:
-     Diese Property sollte nicht per default in Raeumen auf einen Wert > 0
-     gesetzt werden um einem Wildwuchs an Seherhaus(-ruinen) vorzubeugen.
-     Auch sei darauf geachtet, dass in Raeumen die P_INDOORS auf einen 
-     Wert > 0 haben, per default nicht gebaut werden kann.     
-     Hier lieber die Property per Hand auf 1 setzen und nach dem Aufstellen
-     des Hauses wieder loeschen.
-      
-     xcall $h->SetProp(P_HAUS_ERLAUBT,1);
+NAME
+====
 
-     Angemerkt sei noch, dass der Magier dem der Raum gehoert ueber Hausbau
-     entscheidet und nicht der Regionsmagier. In jedem Fall Ruecksprache 
-     halten falls der entsprechende Magier zumindest ab und an anwesend sein
-     sollte.
+   P_HAUS_ERLAUBT                "haus_erlaubt"
 
-     Unter /doc/beispiele/misc liegt ein File, in dem dokumentiert ist,
-     wie nach Aenderungen am Seherhaus zu verfahren ist.
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Hier darf ein Seherhaus abgestellt werden
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property sollte nicht per default in Raeumen auf einen Wert > 0
+   gesetzt werden um einem Wildwuchs an Seherhaus(-ruinen) vorzubeugen.
+   Auch sei darauf geachtet, dass in Raeumen die P_INDOORS auf einen
+   Wert > 0 haben, per default nicht gebaut werden kann.
+   Hier lieber die Property per Hand auf 1 setzen und nach dem Aufstellen
+   des Hauses wieder loeschen.
+
+
+
+   xcall $h->SetProp(P_HAUS_ERLAUBT,1);
+
+   Angemerkt sei noch, dass der Magier dem der Raum gehoert ueber Hausbau
+   entscheidet und nicht der Regionsmagier. In jedem Fall Ruecksprache
+   halten falls der entsprechende Magier zumindest ab und an anwesend sein
+   sollte.
+
+   Unter /doc/beispiele/misc liegt ein File, in dem dokumentiert ist,
+   wie nach Aenderungen am Seherhaus zu verfahren ist.
+
 Last modified: Fri Nov 26 15:41:47 1999 by Tilly
diff --git a/doc/props/P_HB b/doc/props/P_HB
index eee2dcb..bdaf9f1 100644
--- a/doc/props/P_HB
+++ b/doc/props/P_HB
@@ -1,9 +1,22 @@
-NAME:
-    P_HB                          "hb"                          
 
-DEFINIERT IN:
-    /sys/properties.h
+P_HB
+****
 
-BESCHREIBUNG:
-     Diese Property wird gesetzt, wenn das Monster immer einen
-     heart_beat haben soll. (VORSICHT, nur wenn es WIRKLICH sein muss!)
+
+NAME
+====
+
+   P_HB                          "hb"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird gesetzt, wenn das Monster immer einen
+   heart_beat haben soll. (VORSICHT, nur wenn es WIRKLICH sein muss!)
diff --git a/doc/props/P_HEAL b/doc/props/P_HEAL
index 242802f..83d4991 100644
--- a/doc/props/P_HEAL
+++ b/doc/props/P_HEAL
@@ -1,32 +1,48 @@
-NAME:
-     P_HEAL                        "heal"                        
 
-DEFINIERT IN:
-     /sys/properties.h
+P_HEAL
+******
 
-BESCHREIBUNG:
-     Numerischer Wert, der beim Verzehr einer Leiche zu den Lebenspunkten 
-     desjenigen hinzugezaehlt wird, der die Leiche isst. Der Wert kann auch 
-     negativ sein. Falls die Leiche den maximalen Verfallszustand erreicht 
-     hat, wird dieser Wert automatisch auf -4 gesetzt, sofern nicht schon
-     ein geringerer Wert eingetragen ist.
 
-     Werte unter -4 sind sehr sparsam und nur in begruendeten Einzelfaellen
-     zu setzen. Die Regionsmagier werden auf sinnvolle Wertebereiche in
-     ihrem Zustaendigkeitsbereich achten und ggf. Grenzwerte fuer ihre 
-     Region festlegen.
+NAME
+====
 
-     Die Gilden koennen P_HEAL abfragen und eigene, grobe Informationstexte
-     ausgeben, die den Spieler ueber den zu erwartenden Effekt beim Essen
-     einer Leiche informieren.
+   P_HEAL                        "heal"
 
-     Positive Werte von P_HEAL sind bei der Heilungsbalance als Heilstelle
-     zu beantragen.
 
-     Fuer nicht allzu harte NPCs sollte P_HEAL auf 0 gesetzt sein. Dieser
-     Wert ist gleichzeitig der Standardwert.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/corpse, QueryHealInfo()
-     
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert, der beim Verzehr einer Leiche zu den Lebenspunkten
+   desjenigen hinzugezaehlt wird, der die Leiche isst. Der Wert kann auch
+   negativ sein. Falls die Leiche den maximalen Verfallszustand erreicht
+   hat, wird dieser Wert automatisch auf -4 gesetzt, sofern nicht schon
+   ein geringerer Wert eingetragen ist.
+
+   Werte unter -4 sind sehr sparsam und nur in begruendeten Einzelfaellen
+   zu setzen. Die Regionsmagier werden auf sinnvolle Wertebereiche in
+   ihrem Zustaendigkeitsbereich achten und ggf. Grenzwerte fuer ihre
+   Region festlegen.
+
+   Die Gilden koennen P_HEAL abfragen und eigene, grobe Informationstexte
+   ausgeben, die den Spieler ueber den zu erwartenden Effekt beim Essen
+   einer Leiche informieren.
+
+   Positive Werte von P_HEAL sind bei der Heilungsbalance als Heilstelle
+   zu beantragen.
+
+   Fuer nicht allzu harte NPCs sollte P_HEAL auf 0 gesetzt sein. Dieser
+   Wert ist gleichzeitig der Standardwert.
+
+
+SIEHE AUCH
+==========
+
+   /std/corpse, QueryHealInfo()
+
 31.03.2008 Arathorn
diff --git a/doc/props/P_HELPER_NPC b/doc/props/P_HELPER_NPC
index eb71e47..af8bfef 100644
--- a/doc/props/P_HELPER_NPC
+++ b/doc/props/P_HELPER_NPC
@@ -1,30 +1,50 @@
+
 P_HELPER_NPC
+************
 
-NAME:
-     P_HELPER_NPC             "std:helper_npc
 
-DEFINIERT IN:
-     /sys/living/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-    Mit dieser Prop laesst sich herausfinden, ob ein NPC einem Spieler hilft
-    bzw. welche NPC einem Spieler helfen.
-    Wird diese Prop in einem NPC abgefragt, enthaelt sie ein Array 
-      ({ spielerobjekt, flags }) oder 0.
-    Wird diese Prop in einem Spieler abgefragt, enthaelt sie ein Mapping
-      ([npcobjekt1: flags1, npc-objekt2: flags2]).
+   P_HELPER_NPC             "std:helper_npc
 
-    <flags> ist ein Integer, der eine Reihe von ver-oder-ten Konstanten (s.
-    RegisterHelperNPC) enthalten kann.
 
-BEMERKUNGEN:
-    Diese Prop wird automatisch von RegisterHelperNPC() und
-    UnregisterHelperNPC() verwaltet. Bitte aendert sie nicht per Hand.
+DEFINIERT IN
+============
 
-BEISPIEL:
-    s. RegisterHelperNPC().
+   /sys/living/combat.h
 
-SIEHE AUCH:
-     RegisterHelperNPC(), UnregisterHelperNPC()
+
+BESCHREIBUNG
+============
+
+   Mit dieser Prop laesst sich herausfinden, ob ein NPC einem Spieler hilft
+   bzw. welche NPC einem Spieler helfen.
+   Wird diese Prop in einem NPC abgefragt, enthaelt sie ein Array
+     ({ spielerobjekt, flags }) oder 0.
+   Wird diese Prop in einem Spieler abgefragt, enthaelt sie ein Mapping
+     ([npcobjekt1: flags1, npc-objekt2: flags2]).
+
+   <flags> ist ein Integer, der eine Reihe von ver-oder-ten Konstanten (s.
+   RegisterHelperNPC) enthalten kann.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Prop wird automatisch von RegisterHelperNPC() und
+   UnregisterHelperNPC() verwaltet. Bitte aendert sie nicht per Hand.
+
+
+BEISPIEL
+========
+
+   s. RegisterHelperNPC().
+
+
+SIEHE AUCH
+==========
+
+   RegisterHelperNPC(), UnregisterHelperNPC()
 
 10.03.2009, Zesstra
diff --git a/doc/props/P_HELPER_OBJECTS b/doc/props/P_HELPER_OBJECTS
index bdf031d..94990c4 100644
--- a/doc/props/P_HELPER_OBJECTS
+++ b/doc/props/P_HELPER_OBJECTS
@@ -1,25 +1,40 @@
+
 P_HELPER_OBJECTS
+****************
 
-NAME:
-     P_HELPER_OBJECTS "lib_p_helper_objects"
 
-DEFINIERT IN:
-     <living/helpers.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property enthaelt eine Liste von Hilfsobjekten, die das Lebewesen,
-     in dem sie gesetzt ist, bei bestimmten Aktivitaeten wie Tauchen oder
-     Fliegen/Segeln unterstuetzt. Die Property enthaelt ein Mapping der Form
-     ([ HELPER_TYPE : ({ Callback-Closures }) ]).
+   P_HELPER_OBJECTS "lib_p_helper_objects"
 
-BEMERKUNGEN:
-     Externe Manipulationen an dieser Property bitte unterlassen, zum Ein-
-     und Austragen von Objekten gibt es die unten aufgefuehrten Methoden.
 
-SIEHE AUCH:
-     Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
-     Properties:  P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <living/helpers.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Liste von Hilfsobjekten, die das Lebewesen,
+   in dem sie gesetzt ist, bei bestimmten Aktivitaeten wie Tauchen oder
+   Fliegen/Segeln unterstuetzt. Die Property enthaelt ein Mapping der Form
+   ([ HELPER_TYPE : ({ Callback-Closures }) ]).
+
+
+BEMERKUNGEN
+===========
+
+   Externe Manipulationen an dieser Property bitte unterlassen, zum Ein-
+   und Austragen von Objekten gibt es die unten aufgefuehrten Methoden.
+
+
+SIEHE AUCH
+==========
+
+   Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
+   Properties:  P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+
 18.02.2013, Arathorn
-
diff --git a/doc/props/P_HIDE_EXITS b/doc/props/P_HIDE_EXITS
index 0c92a4a..c9aa2e5 100644
--- a/doc/props/P_HIDE_EXITS
+++ b/doc/props/P_HIDE_EXITS
@@ -1,35 +1,53 @@
+
 P_HIDE_EXITS
-NAME:
-     P_HIDE_EXITS                  "hide_exits"
+************
 
-DEFINIERT IN:
-     /sys/room/exits.h
 
-BESCHREIBUNG:
-     Ist diese Property in einem Raum auf einen Integerwert ungleich 0
-     gesetzt, werden einem Spieler fuer diesen Raum keine Ausgaenge angezeigt.
-     Auch der Text "Keine sichtbaren Ausgaenge." (oder so) kommt nicht.
-     Alternativ kann man auch ein array von strings uebergeben. In diesem
-     Fall werden all die Ausgaenge nicht angezeigt, deren Index in P_EXITS
-     in dem array vorkommt.
-     In diesem Fall wird ggf. der Text "Keine sichtbaren Ausgaenge."
-     ausgegeben.
+NAME
+====
 
-BEISPIEL:
-     AddExit("raus", "/ganz/wo/anders");
-     AddExit("weiter", "/in/der/naehe");
+   P_HIDE_EXITS                  "hide_exits"
 
-     // KEINE Ausgaenge anzeigen. Noch nicht mal, dass man keine sieht.
-     SetProp(P_HIDE_EXITS, 1);
 
-     // Der Ausgang weiter wird nicht angezeigt.
-     SetProp(P_HIDE_EXITS, ({"weiter"}) );
+DEFINIERT IN
+============
 
-     // Keinen Ausgang zeigen, aber den Text, dass keiner sichtbar, ausgeben.
-     SetProp(P_HIDE_EXITS, ({"weiter", "raus"}) );
+   /sys/room/exits.h
 
-SIEHE AUCH:
-     Aehnliches:	P_SHOW_EXITS
-     Sonstiges:		AddExit(), GetExits(), int_long(), int_short()
 
-25. Apr 1996 Highlander
\ No newline at end of file
+BESCHREIBUNG
+============
+
+   Ist diese Property in einem Raum auf einen Integerwert ungleich 0
+   gesetzt, werden einem Spieler fuer diesen Raum keine Ausgaenge angezeigt.
+   Auch der Text "Keine sichtbaren Ausgaenge." (oder so) kommt nicht.
+   Alternativ kann man auch ein array von strings uebergeben. In diesem
+   Fall werden all die Ausgaenge nicht angezeigt, deren Index in P_EXITS
+   in dem array vorkommt.
+   In diesem Fall wird ggf. der Text "Keine sichtbaren Ausgaenge."
+   ausgegeben.
+
+
+BEISPIEL
+========
+
+   AddExit("raus", "/ganz/wo/anders");
+   AddExit("weiter", "/in/der/naehe");
+
+   // KEINE Ausgaenge anzeigen. Noch nicht mal, dass man keine sieht.
+   SetProp(P_HIDE_EXITS, 1);
+
+   // Der Ausgang weiter wird nicht angezeigt.
+   SetProp(P_HIDE_EXITS, ({"weiter"}) );
+
+   // Keinen Ausgang zeigen, aber den Text, dass keiner sichtbar, ausgeben.
+   SetProp(P_HIDE_EXITS, ({"weiter", "raus"}) );
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_SHOW_EXITS
+   Sonstiges:         AddExit(), GetExits(), int_long(), int_short()
+
+25. Apr 1996 Highlander
diff --git a/doc/props/P_HISTMIN b/doc/props/P_HISTMIN
index e84d90c..ca35504 100644
--- a/doc/props/P_HISTMIN
+++ b/doc/props/P_HISTMIN
@@ -1,8 +1,21 @@
-NAME:
-    P_HISTMIN                     "histmin"                     
 
-DEFINIERT IN:
-    /sys/player.h
+P_HISTMIN
+*********
 
-BESCHREIBUNG:
-     Minimale Laenge, die eine Zeile haben muss, um in die History zu kommen
+
+NAME
+====
+
+   P_HISTMIN                     "histmin"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Minimale Laenge, die eine Zeile haben muss, um in die History zu kommen
diff --git a/doc/props/P_HIT_FUNC b/doc/props/P_HIT_FUNC
index c5b3b31..9bcc328 100644
--- a/doc/props/P_HIT_FUNC
+++ b/doc/props/P_HIT_FUNC
@@ -1,22 +1,38 @@
+
 P_HIT_FUNC
+**********
 
-NAME:
-     P_HIT_FUNC "hit_func"
 
-DEFINIERT IN:
-     <weapon.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Falls ein Objekt eine HitFunc() fuer die Waffe definiert, so muss
-     dieses Objekt in dieser Property eingetragen werden.
+   P_HIT_FUNC "hit_func"
 
-     Die Auswertung dieser Property erfolgt in QueryDamage().
 
-BEISPIELE:
-     Siehe das Beispiel zu HitFunc()
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/weapon.c, HitFunc()
+   <weapon.h>
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine HitFunc() fuer die Waffe definiert, so muss
+   dieses Objekt in dieser Property eingetragen werden.
+
+   Die Auswertung dieser Property erfolgt in QueryDamage().
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu HitFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, HitFunc()
+
 Last modified: Sun May 19 15:37:35 1996 by Wargon
diff --git a/doc/props/P_HOMEPAGE b/doc/props/P_HOMEPAGE
index 7d90438..5cf6bec 100644
--- a/doc/props/P_HOMEPAGE
+++ b/doc/props/P_HOMEPAGE
@@ -1,8 +1,21 @@
-NAME:
-    P_HOMEPAGE                    "homepage"                    
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_HOMEPAGE
+**********
 
-BESCHREIBUNG:
-     Die Homepage eines Spielers (mit dem Befehl 'url' zu setzen).
+
+NAME
+====
+
+   P_HOMEPAGE                    "homepage"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Die Homepage eines Spielers (mit dem Befehl 'url' zu setzen).
diff --git a/doc/props/P_HP b/doc/props/P_HP
index f2aea74..b7ded4a 100644
--- a/doc/props/P_HP
+++ b/doc/props/P_HP
@@ -1,25 +1,39 @@
-NAME:
-    P_HP                          "hp"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_HP
+****
 
-BESCHREIBUNG:
 
-     - Lebewesen
-       Anzahl der Lebenspunkte des Wesens.
+NAME
+====
 
-     - Speisen/Kneipen
-       Heilwirkung einer Portion der Speise auf die Lebenspunkte
-       des Konsumenten
+   P_HP                          "hp"
 
-SIEHE AUCH:
-     Props:		P_MAX_HP
-     Veraenderung:	reduce_hit_points(), restore_hit_points()
-			do_damage(L), Defend(L)
-			buffer_hp()
-     Ueberwachung:	AddHpHook(L)
-     Speisen/Kneipen:   std/pub, wiz/food, consume
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Anzahl der Lebenspunkte des Wesens.
+
+   - Speisen/Kneipen
+     Heilwirkung einer Portion der Speise auf die Lebenspunkte
+     des Konsumenten
+
+
+SIEHE AUCH
+==========
+
+   Props:             P_MAX_HP
+   Veraenderung:      reduce_hit_points(), restore_hit_points()
+                      do_damage(L), Defend(L)
+                      buffer_hp()
+   Ueberwachung:      AddHpHook(L)
+   Speisen/Kneipen:   std/pub, wiz/food, consume
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_HP_DELAY b/doc/props/P_HP_DELAY
index a807ad9..f15f748 100644
--- a/doc/props/P_HP_DELAY
+++ b/doc/props/P_HP_DELAY
@@ -1,10 +1,23 @@
-NAME:
-    P_HP_DELAY                 "hp_delay"                     
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_HP_DELAY
+**********
 
-BESCHREIBUNG:
-     Anzahl der heart_beats, bis P_HP um einen Punkt regeneriert.
-     Aenderungen dieser Property in Spielern beduerfen der 
-     Genehmigung des EM fuer Balance.
+
+NAME
+====
+
+   P_HP_DELAY                 "hp_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_HP um einen Punkt regeneriert.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/props/P_HP_HOOKS b/doc/props/P_HP_HOOKS
index 28f1a1e..7bb48bf 100644
--- a/doc/props/P_HP_HOOKS
+++ b/doc/props/P_HP_HOOKS
@@ -1,19 +1,38 @@
-NAME:
-    P_HP_HOOKS                    "hp_hooks"                    
 
-DEFINIERT IN:
-    /sys/properties.h
+P_HP_HOOKS
+**********
 
-BESCHREIBUNG:
-     Welche Objekte sollen bei HP-Aenderungen benachrichtigt werden?
-     Diese Property bitte NICHT manipulieren! Zum Ein- und Austragen stehen
-     hierfuer AddHpHook() und RemoveHpHook() bereit.
 
-BEMERKUNGEN:
-    Das neuere Hooksystem (s. Manpage std/hooks) stellt ebenfalls Hooks zur
-    Ueberwachung von P_HP bereit.
+NAME
+====
 
-SIEHE AUCH:
-    AddHpHook(), RemoveHpHook(),
-    NotifyHpChange()
-    std/hooks
+   P_HP_HOOKS                    "hp_hooks"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Welche Objekte sollen bei HP-Aenderungen benachrichtigt werden?
+   Diese Property bitte NICHT manipulieren! Zum Ein- und Austragen stehen
+   hierfuer AddHpHook() und RemoveHpHook() bereit.
+
+
+BEMERKUNGEN
+===========
+
+   Das neuere Hooksystem (s. Manpage std/hooks) stellt ebenfalls Hooks zur
+   Ueberwachung von P_HP bereit.
+
+
+SIEHE AUCH
+==========
+
+   AddHpHook(), RemoveHpHook(),
+   NotifyHpChange()
+   std/hooks
diff --git a/doc/props/P_HUNTTIME b/doc/props/P_HUNTTIME
index 377ab18..e712a49 100644
--- a/doc/props/P_HUNTTIME
+++ b/doc/props/P_HUNTTIME
@@ -1,35 +1,59 @@
+
+P_HUNTTIME
+**********
+
+
 P_HUNTTIME (int)
+================
 
-NAME:
-     P_HUNTTIME					"p_lib_hunttime"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-    Mit dieser Property laesst sich festlegen, wie lange ein Monster einen 
-    Gegner verfolgt (also automatisch angreift), nachdem dieser geflohen ist.
-    Die Angabe erfolgt in Sekunden.
-    Die Standardzeit ist 600s (300 Heartbeats).
+   P_HUNTTIME                                 "p_lib_hunttime"
 
-BEMERKUNGEN:
-    1. Wenn der Standardwert akzeptabel ist, bitte die Prop auch nicht setzen.
-    2. Enthaelt die Property keinen Integer oder ist sie <= 0, wird sie 
-       ignoriert und der Standardwert von 600s verwendet.
-    3. Kaempft man mit einem Lebenwesen mit einem groesseren Wert als man 
-       selber und man selber hat das Verfolgen eingestellt, der Gegner aber 
-       nicht, wird dieser beim Reinkommen den Kampf neu starten (und den 
-       ersten Schlag haben).
 
-BEISPIEL:
-    Ein NPC soll sich erst eine Stunde nach Flucht des Gegners beruhigen.
-    protected void create() {
-      ...
-      SetProp(P_HUNTTIME, 3600);
-    }
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     InsertSingleEnemy, InsertEnemy
-     /std/living/combat.c
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Property laesst sich festlegen, wie lange ein Monster einen
+   Gegner verfolgt (also automatisch angreift), nachdem dieser geflohen ist.
+   Die Angabe erfolgt in Sekunden.
+   Die Standardzeit ist 600s (300 Heartbeats).
+
+
+BEMERKUNGEN
+===========
+
+   1. Wenn der Standardwert akzeptabel ist, bitte die Prop auch nicht setzen.
+   2. Enthaelt die Property keinen Integer oder ist sie <= 0, wird sie
+      ignoriert und der Standardwert von 600s verwendet.
+   3. Kaempft man mit einem Lebenwesen mit einem groesseren Wert als man
+      selber und man selber hat das Verfolgen eingestellt, der Gegner aber
+      nicht, wird dieser beim Reinkommen den Kampf neu starten (und den
+      ersten Schlag haben).
+
+
+BEISPIEL
+========
+
+   Ein NPC soll sich erst eine Stunde nach Flucht des Gegners beruhigen.
+   protected void create() {
+     ...
+     SetProp(P_HUNTTIME, 3600);
+   }
+
+
+SIEHE AUCH
+==========
+
+   InsertSingleEnemy, InsertEnemy
+   /std/living/combat.c
 
 13.03.2008, Zesstra
diff --git a/doc/props/P_IDS b/doc/props/P_IDS
index 311407b..dee9a74 100644
--- a/doc/props/P_IDS
+++ b/doc/props/P_IDS
@@ -1,25 +1,41 @@
+
 P_IDS
+*****
 
-NAME:
-     P_IDS "ids"
 
-DEFINIERT IN:
-     <thing/description.h>
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property steht ein Array von den Strings, mit denen sich das
-     Objekt ansprechen laesst. Die Verwaltung dieser Property erfolgt ueber
-     die Funktionen AddId() und RemoveId().
+   P_IDS "ids"
 
-     Der Inhalt dieser Property wird von den Funktionen id() und (indirekt)
-     present() ausgewertet.
 
-BEMERKUNGEN:
-     Man sollte an dieser Property nicht "von Hand" herumfummeln, sondern
-     immer die zugehoerigen Funktionen benutzen!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/thing/description.c, AddId(), RemoveId()
+   <thing/description.h>
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   In dieser Property steht ein Array von den Strings, mit denen sich das
+   Objekt ansprechen laesst. Die Verwaltung dieser Property erfolgt ueber
+   die Funktionen AddId() und RemoveId().
+
+   Der Inhalt dieser Property wird von den Funktionen id() und (indirekt)
+   present() ausgewertet.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte an dieser Property nicht "von Hand" herumfummeln, sondern
+   immer die zugehoerigen Funktionen benutzen!
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, AddId(), RemoveId()
+
 Last modified: Sun May 19 20:17:36 1996 by Wargon
diff --git a/doc/props/P_IGNORE b/doc/props/P_IGNORE
index d95fd14..3436a09 100644
--- a/doc/props/P_IGNORE
+++ b/doc/props/P_IGNORE
@@ -1,22 +1,39 @@
-NAME:
-    P_IGNORE                      "ignore"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_IGNORE
+********
 
-BESCHREIBUNG:
-    Array mit Spielern, Kommandos, Aktionen u.ae. die ignoriert werden.
-    In aller Regel sollte die Ignorierepruefung durch Aufruf von TestIgnore()
-    im Spieler erfolgen und nicht selber P_IGNORE durchsucht werden.
 
-BEMERKUNGEN:
-    Die Daten in dieser Property werden intern als Mapping gespeichert, nicht
-    als Array von Strings. Bitte nicht mit Set/Query() an dieser Property
-    herumbasteln.
+NAME
+====
 
-SIEHE AUCH:
-    TestIgnore, /std/player/comm.c
+   P_IGNORE                      "ignore"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit Spielern, Kommandos, Aktionen u.ae. die ignoriert werden.
+   In aller Regel sollte die Ignorierepruefung durch Aufruf von TestIgnore()
+   im Spieler erfolgen und nicht selber P_IGNORE durchsucht werden.
+
+
+BEMERKUNGEN
+===========
+
+   Die Daten in dieser Property werden intern als Mapping gespeichert, nicht
+   als Array von Strings. Bitte nicht mit Set/Query() an dieser Property
+   herumbasteln.
+
+
+SIEHE AUCH
+==========
+
+   TestIgnore, /std/player/comm.c
+
 Last modified: 02.10.2011, Zesstra
-
diff --git a/doc/props/P_INDOORS b/doc/props/P_INDOORS
index c1ab07a..4483d10 100644
--- a/doc/props/P_INDOORS
+++ b/doc/props/P_INDOORS
@@ -1,33 +1,52 @@
-NAME:
-     P_INDOORS                     "indoors"
 
-DEFINIERT IN:
-     /sys/room/description.h
+P_INDOORS
+*********
 
-BESCHREIBUNG:
-     Gesetzt, wenn von dem Raum aus der Himmel nicht sichtbar ist.
 
-     Objekte oder Gilden werten diese Property teilweise aus, fuer
-     Innenraeume sollte sie also sinnvollerweise gesetzt werden.
+NAME
+====
 
-     Licht wird _nicht_ durch P_INDOORS beeinflusst, muss also
-     selbst angepasst werden.
+   P_INDOORS                     "indoors"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn von dem Raum aus der Himmel nicht sichtbar ist.
+
+   Objekte oder Gilden werten diese Property teilweise aus, fuer
+   Innenraeume sollte sie also sinnvollerweise gesetzt werden.
+
+   Licht wird _nicht_ durch P_INDOORS beeinflusst, muss also
+   selbst angepasst werden.
+
 
 BEISPIEL
-     // Ein dunkler Innenraum:
-     SetProp(P_INDOORS, 1);            // ein Innenraum liegt innen :)
-     SetProp(P_LIGHT, 0);              // Licht auf 0
+========
 
-     // Ein richtig heller Aussenraum:
-     SetProp(P_INDOORS, 0);
-     SetProp(P_LIGHT, 2);
+   // Ein dunkler Innenraum:
+   SetProp(P_INDOORS, 1);            // ein Innenraum liegt innen :)
+   SetProp(P_LIGHT, 0);              // Licht auf 0
 
-     // Ein heller Aussenraum mit Mondlicht (gut fuer Delfen)
-     SetProp(P_INDOORS, 0);
-     SetProp(P_LIGHT, 1);
-     SetProp(P_LIGHT_TYPE, LT_STARS|LT_MOON);
+   // Ein richtig heller Aussenraum:
+   SetProp(P_INDOORS, 0);
+   SetProp(P_LIGHT, 2);
+
+   // Ein heller Aussenraum mit Mondlicht (gut fuer Delfen)
+   SetProp(P_INDOORS, 0);
+   SetProp(P_LIGHT, 1);
+   SetProp(P_LIGHT_TYPE, LT_STARS|LT_MOON);
+
 
 SIEHE AUCH
-     P_LIGHT, P_LIGHT_ABSORPTION, P_LIGHT_TYPE
+==========
+
+   P_LIGHT, P_LIGHT_ABSORPTION, P_LIGHT_TYPE
 
 25.Aug 2008 Gloinson
diff --git a/doc/props/P_INFO b/doc/props/P_INFO
index 06dabe6..f29c242 100644
--- a/doc/props/P_INFO
+++ b/doc/props/P_INFO
@@ -1,18 +1,36 @@
+
 P_INFO
-NAME:
-     P_INFO                        "info"                        
+******
 
-DEFINIERT IN:
-     /sys/properties.h
 
-BESCHREIBUNG:
-     Geheime Information, die ggf. ueber einen Zauberspruch
-     von Spielern ermittelt werden kann.
-     
-BEISPIEL:
-     SetProp(P_INFO,"Du ergruendest das Geheimnis.\n")
+NAME
+====
 
-SIEHE AUCH:
-     GetOwner(L)
+   P_INFO                        "info"
 
-24. April 2006, Vanion 
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Geheime Information, die ggf. ueber einen Zauberspruch
+   von Spielern ermittelt werden kann.
+
+
+BEISPIEL
+========
+
+   SetProp(P_INFO,"Du ergruendest das Geheimnis.\n")
+
+
+SIEHE AUCH
+==========
+
+   GetOwner(L)
+
+24. April 2006, Vanion
diff --git a/doc/props/P_INFORMME b/doc/props/P_INFORMME
index 4736933..c6dd0ed 100644
--- a/doc/props/P_INFORMME
+++ b/doc/props/P_INFORMME
@@ -1,14 +1,30 @@
-NAME:
-    P_INFORMME                    "informme"                    
 
-DEFINIERT IN:
-    /sys/properties.h
+P_INFORMME
+**********
 
-BESCHREIBUNG:
-    Enthaelt das Flag, ob der Spieler ueber ein-/ausloggende Spieler
-    informiert werden will.
 
-SIEHE AUCH:
-    Spielerkommando: inform
+NAME
+====
+
+   P_INFORMME                    "informme"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt das Flag, ob der Spieler ueber ein-/ausloggende Spieler
+   informiert werden will.
+
+
+SIEHE AUCH
+==========
+
+   Spielerkommando: inform
 
 6.Feb 2016 Gloinson
diff --git a/doc/props/P_INPC_HOME b/doc/props/P_INPC_HOME
index 31fea0b..1eafd4d 100644
--- a/doc/props/P_INPC_HOME
+++ b/doc/props/P_INPC_HOME
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_HOME                   "inpc_home"                   
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_HOME
+***********
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_HOME                   "inpc_home"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_LAST_ENVIRONMENT b/doc/props/P_INPC_LAST_ENVIRONMENT
index 2b7437a..8f7cb68 100644
--- a/doc/props/P_INPC_LAST_ENVIRONMENT
+++ b/doc/props/P_INPC_LAST_ENVIRONMENT
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_LAST_ENVIRONMENT       "inpc_last_environment"       
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_LAST_ENVIRONMENT
+***********************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_LAST_ENVIRONMENT       "inpc_last_environment"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_LAST_PLAYER_CONTACT b/doc/props/P_INPC_LAST_PLAYER_CONTACT
index f32cd02..14f8730 100644
--- a/doc/props/P_INPC_LAST_PLAYER_CONTACT
+++ b/doc/props/P_INPC_LAST_PLAYER_CONTACT
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_LAST_PLAYER_CONTACT    "inpc_last_player_contact"    
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_LAST_PLAYER_CONTACT
+**************************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_LAST_PLAYER_CONTACT    "inpc_last_player_contact"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_WALK_AREA b/doc/props/P_INPC_WALK_AREA
index 3d7dfc6..9554d27 100644
--- a/doc/props/P_INPC_WALK_AREA
+++ b/doc/props/P_INPC_WALK_AREA
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_WALK_AREA              "inpc_walk_area"              
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_WALK_AREA
+****************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_WALK_AREA              "inpc_walk_area"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_WALK_DELAYS b/doc/props/P_INPC_WALK_DELAYS
index f510764..e59deea 100644
--- a/doc/props/P_INPC_WALK_DELAYS
+++ b/doc/props/P_INPC_WALK_DELAYS
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_WALK_DELAYS            "inpc_walk_delay"             
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_WALK_DELAYS
+******************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_WALK_DELAYS            "inpc_walk_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_WALK_FLAGS b/doc/props/P_INPC_WALK_FLAGS
index 3e8749b..86c4835 100644
--- a/doc/props/P_INPC_WALK_FLAGS
+++ b/doc/props/P_INPC_WALK_FLAGS
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_WALK_FLAGS             "inpc_walk_flags"             
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_WALK_FLAGS
+*****************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_WALK_FLAGS             "inpc_walk_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_WALK_MODE b/doc/props/P_INPC_WALK_MODE
index 22da99d..134bb50 100644
--- a/doc/props/P_INPC_WALK_MODE
+++ b/doc/props/P_INPC_WALK_MODE
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_WALK_MODE              "inpc_walk_mode"              
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_WALK_MODE
+****************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_WALK_MODE              "inpc_walk_mode"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INPC_WALK_ROUTE b/doc/props/P_INPC_WALK_ROUTE
index 4d11cb1..762408d 100644
--- a/doc/props/P_INPC_WALK_ROUTE
+++ b/doc/props/P_INPC_WALK_ROUTE
@@ -1,8 +1,21 @@
-NAME:
-    P_INPC_WALK_ROUTE             "inpc_walk_route"             
 
-DEFINIERT IN:
-    /sys/inpc/walking.h
+P_INPC_WALK_ROUTE
+*****************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_INPC_WALK_ROUTE             "inpc_walk_route"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_INTERMUD b/doc/props/P_INTERMUD
index 6d4bd59..8019998 100644
--- a/doc/props/P_INTERMUD
+++ b/doc/props/P_INTERMUD
@@ -1,13 +1,25 @@
-NAME:
-    P_INTERMUD                    "intermud"                    
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_INTERMUD
+**********
 
-BESCHREIBUNG:
+
+NAME
+====
+
+   P_INTERMUD                    "intermud"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
    Die Bedeutung dieser Property ist in den praehistorischen Untiefen
    der Mudlib verlorengegangen.
    Wird nicht mehr benutzt.
    Nicht benutzen.
    Ignorieren.
-
diff --git a/doc/props/P_INTERNAL_EXTRA_LOOK b/doc/props/P_INTERNAL_EXTRA_LOOK
index 160125d..ffa78ad 100644
--- a/doc/props/P_INTERNAL_EXTRA_LOOK
+++ b/doc/props/P_INTERNAL_EXTRA_LOOK
@@ -1,39 +1,57 @@
-NAME:
-	P_INTERNAL_EXTRA_LOOK			"internal_extralook"
 
-DEFINIERT IN:
-	/sys/living/description.h
+P_INTERNAL_EXTRA_LOOK
+*********************
 
-BESCHREIBUNG:
-	Diese Property enthaelt ein Mapping, in dem alle einzelnen
-  Extra-Look-Eintraege des Livings enthalten sind. Dabei weden die Daten von
-  AddExtraLook() und RemoveExtraLook() verwaltet. Fragt man diese Prop mit
-  QueryProp() ab, erhaelt man die Ausgabe der gueltigen Extralooks des
-  Livings. Bei Abfrage per Query() erhaelt man ein Mapping mit allen
-  Eintraegen und deren Daten. Jeder Wert im Mapping ist erneut ein Mapping, 
-  welches folgende Keys enthalten kann:
-  - "xllook": String, der im Extralook des Living angezeigt wird.
-  - "xlduration": Zeitstempel (int), der angibt, wie lang der Eintrag gueltig
-                  ist. 0 == "Unendlich", negative Zahlen besagen, dass der
-                  Eintrag nur bis Reboot/Ende gueltig sein und abs(xlduration)
-                  ist der Zeitpunkt des Eintrages dieses Extralooks.
-  - "xlende": String, der nach Ablaufen an das Living ausgegeben wird.
-  - "xlfun": Funktion, die gerufen wird und den String zurueckliefern muss, 
-             der ausgeben werden soll.
-  - "xlendefun": Funktion, die gerufen wird, wenn der Eintrag abgelaufen ist
-                 und den String zurueckliefern muss, der dann ans Living
-                 ausgeben wird.
-  - "xlobjectname": Objekt, in dem die o.a. Funktionen gerufen werden.
 
-BEMERKUNG:
-  DIESE PROPERTY BITTE NIEMALS PER HAND MIT Set()/SetProp() AENDERN!
-  Die Daten in dieser Prop werden vom Living selber verwaltet. Extralooks
-  koennen mittel AddExtraLook() eingetragen und mit RemoveExtraLook() entfernt
-  werden.
+NAME
+====
 
-SIEHE AUCH:
-  long(), /std/living/description.c, /std/player/base.c
-  AddExtraLook(), RemoveExtraLook()
+   P_INTERNAL_EXTRA_LOOK                   "internal_extralook"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+         Diese Property enthaelt ein Mapping, in dem alle einzelnen
+   Extra-Look-Eintraege des Livings enthalten sind. Dabei weden die Daten von
+   AddExtraLook() und RemoveExtraLook() verwaltet. Fragt man diese Prop mit
+   QueryProp() ab, erhaelt man die Ausgabe der gueltigen Extralooks des
+   Livings. Bei Abfrage per Query() erhaelt man ein Mapping mit allen
+   Eintraegen und deren Daten. Jeder Wert im Mapping ist erneut ein Mapping,
+   welches folgende Keys enthalten kann:
+   - "xllook": String, der im Extralook des Living angezeigt wird.
+   - "xlduration": Zeitstempel (int), der angibt, wie lang der Eintrag gueltig
+                   ist. 0 == "Unendlich", negative Zahlen besagen, dass der
+                   Eintrag nur bis Reboot/Ende gueltig sein und abs(xlduration)
+                   ist der Zeitpunkt des Eintrages dieses Extralooks.
+   - "xlende": String, der nach Ablaufen an das Living ausgegeben wird.
+   - "xlfun": Funktion, die gerufen wird und den String zurueckliefern muss,
+              der ausgeben werden soll.
+   - "xlendefun": Funktion, die gerufen wird, wenn der Eintrag abgelaufen ist
+                  und den String zurueckliefern muss, der dann ans Living
+                  ausgeben wird.
+   - "xlobjectname": Objekt, in dem die o.a. Funktionen gerufen werden.
+
+
+BEMERKUNG
+=========
+
+   DIESE PROPERTY BITTE NIEMALS PER HAND MIT Set()/SetProp() AENDERN!
+   Die Daten in dieser Prop werden vom Living selber verwaltet. Extralooks
+   koennen mittel AddExtraLook() eingetragen und mit RemoveExtraLook() entfernt
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   long(), /std/living/description.c, /std/player/base.c
+   AddExtraLook(), RemoveExtraLook()
+
 13.05.2007, Zesstra
diff --git a/doc/props/P_INT_LIGHT b/doc/props/P_INT_LIGHT
index 04504a6..dcf59b6 100644
--- a/doc/props/P_INT_LIGHT
+++ b/doc/props/P_INT_LIGHT
@@ -1,20 +1,36 @@
-NAME:
-    P_INT_LIGHT                       "int_light"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_INT_LIGHT
+***********
 
-BESCHREIBUNG:
-    Gibt den Lichtlevel an, der _in_ einem Objekt ist. Ein Abfragen dieser
-    Property kann z.B. in Raeumen sinnvoll sein, wenn es z.B. um das
-    aufwachen einer Eule oder einer Fledermaus geht. Zum Abfragen ob ein
-    Spieler etwas sehen kann, bitte auf jeden Fall P_PLAYER_LIGHT benutzen!
 
-    Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
-    da das Lichtlevel ggf. neu berechnet werden muss!
+NAME
+====
 
-    Ein direktes setzen dieser Property ist NICHT moeglich, hierzu bitte
-    P_LIGHT benutzen!
+   P_INT_LIGHT                       "int_light"
 
-SIEHE AUCH:
-    P_LIGHT, P_TOTAL_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Lichtlevel an, der _in_ einem Objekt ist. Ein Abfragen dieser
+   Property kann z.B. in Raeumen sinnvoll sein, wenn es z.B. um das
+   aufwachen einer Eule oder einer Fledermaus geht. Zum Abfragen ob ein
+   Spieler etwas sehen kann, bitte auf jeden Fall P_PLAYER_LIGHT benutzen!
+
+   Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
+   da das Lichtlevel ggf. neu berechnet werden muss!
+
+   Ein direktes setzen dieser Property ist NICHT moeglich, hierzu bitte
+   P_LIGHT benutzen!
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT, P_TOTAL_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/props/P_INT_LONG b/doc/props/P_INT_LONG
index 3e59249..741e511 100644
--- a/doc/props/P_INT_LONG
+++ b/doc/props/P_INT_LONG
@@ -1,32 +1,53 @@
+
 P_INT_LONG
-NAME:
-     P_INT_LONG                    "int_long"
+**********
 
-DEFINIERT IN:
-     /sys/room/description.h
 
-BESCHREIBUNG:
-     Enthaelt Beschreibung, die man bekommt, wenn man sich in dem
-     Container (jeder Raum ist einer) umschaut als String.
+NAME
+====
 
-     Der Text sollte bereits umgebrochen sein.
+   P_INT_LONG                    "int_long"
 
-     Diese Property bestimmt die Ansicht des Containers von innen.
-     Fuer die Aussen(lang)ansicht muss P_LONG benutzt werden.
 
-BEMERKUNGEN:
-     - Beschreibungen fuer etwaige Tueren im Raum werden in int_long()
-       hinzugefuegt. (Frueher wurde dies in einer Querymethode auf diese Prop
-       gemacht.)
+DEFINIERT IN
+============
 
-BEISPIELE:
-     SetProp(P_INT_LONG, break_string(
-      "Du stehst in einem total spannenden Testraum. Seine absolute "
-      "Nichtigkeit erfuellt dich mit ehrfuerchtigem Grauen.",78));
+   /sys/room/description.h
 
-SIEHE AUCH:
-     Aehnliches:	P_INT_SHORT
-     Sonstiges:		int_long(), P_LONG
-			process_string(), break_string()
+
+BESCHREIBUNG
+============
+
+   Enthaelt Beschreibung, die man bekommt, wenn man sich in dem
+   Container (jeder Raum ist einer) umschaut als String.
+
+   Der Text sollte bereits umgebrochen sein.
+
+   Diese Property bestimmt die Ansicht des Containers von innen.
+   Fuer die Aussen(lang)ansicht muss P_LONG benutzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   - Beschreibungen fuer etwaige Tueren im Raum werden in int_long()
+     hinzugefuegt. (Frueher wurde dies in einer Querymethode auf diese Prop
+     gemacht.)
+
+
+BEISPIELE
+=========
+
+   SetProp(P_INT_LONG, break_string(
+    "Du stehst in einem total spannenden Testraum. Seine absolute "
+    "Nichtigkeit erfuellt dich mit ehrfuerchtigem Grauen.",78));
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_INT_SHORT
+   Sonstiges:         int_long(), P_LONG
+                      process_string(), break_string()
 
 04.06.2009, Zesstra
diff --git a/doc/props/P_INT_SHORT b/doc/props/P_INT_SHORT
index 9c6a0af..618bbab 100644
--- a/doc/props/P_INT_SHORT
+++ b/doc/props/P_INT_SHORT
@@ -1,36 +1,56 @@
+
 P_INT_SHORT
-NAME:
-     P_INT_SHORT			"int_short"
+***********
 
-DEFINIERT IN:
-     /sys/thing/description.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt die Innen-Kurzbeschreibung des Containers
-     als String oder Closure (mit String-Rueckgabewert).
+NAME
+====
 
-     Container sind hierbei z.B. Raeume.
-     ACHTUNG: Die Kurzbeschreibung sollte dabei weder mit einem
-	      Satzzeichen noch mit einem "\n" abgeschlossen sein
-	      (dies wird von den zustaendigen Funktionen erledigt).
+   P_INT_SHORT                        "int_short"
 
-     Man sollte die Property nicht auf 0 setzen.
 
-     Diese Property bestimmt die Ansicht des Containers von innen.
-     Fuer die Aussen(kurz)ansicht muss P_SHORT benutzt werden.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     - int_short() (bei Bewegung) filtert P_INT_SHORT durch process_string()
-       -> daher sind Closures moeglich
+   /sys/thing/description.h
 
-BEISPIELE:
-     // ein Gang sieht natuerlich so aus
-     SetProp(P_INT_SHORT, "Ein Gang");
 
-SIEHE AUCH:
-     Aehnliches:	P_INT_LONG
-     Sonstiges:		int_short(), P_SHORT
-			process_string(), break_string()
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Diese Property enthaelt die Innen-Kurzbeschreibung des Containers
+   als String oder Closure (mit String-Rueckgabewert).
+
+   Container sind hierbei z.B. Raeume.
+   ACHTUNG: Die Kurzbeschreibung sollte dabei weder mit einem
+            Satzzeichen noch mit einem "\n" abgeschlossen sein
+            (dies wird von den zustaendigen Funktionen erledigt).
+
+   Man sollte die Property nicht auf 0 setzen.
+
+   Diese Property bestimmt die Ansicht des Containers von innen.
+   Fuer die Aussen(kurz)ansicht muss P_SHORT benutzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   - int_short() (bei Bewegung) filtert P_INT_SHORT durch process_string()
+     -> daher sind Closures moeglich
+
+
+BEISPIELE
+=========
+
+   // ein Gang sieht natuerlich so aus
+   SetProp(P_INT_SHORT, "Ein Gang");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_INT_LONG
+   Sonstiges:         int_short(), P_SHORT
+                      process_string(), break_string()
+
 Last modified: Thu May 31 15:34:05 2001 by Patryn
diff --git a/doc/props/P_INVIS b/doc/props/P_INVIS
index 7022ea0..4063546 100644
--- a/doc/props/P_INVIS
+++ b/doc/props/P_INVIS
@@ -1,50 +1,65 @@
-NAME:
-     P_INVIS                       "invis"                       
 
-DEFINIERT IN:
-     /sys/player/base.h
+P_INVIS
+*******
 
-BESCHREIBUNG:
-     Die Property P_INVIS dient dazu, Objekte als unsichtbar zu kennzeichnen.
-     Hierbei versucht P_INVIS die moeglichen Interaktionen mit Spielern zu
-     minimieren (im Gegensatz zu einer fehlenden P_SHORT, welche das Objekt
-     nur einfach nicht-sichtbar macht).
-     
-     Man sollte drei Arten von unsichtbaren Objekten unterscheiden:
 
-     - Gegenstaende
-       Setzt man P_INVIS auf eine Zahl ungleich 0, wird der Gegenstand
-       unsichtbar und der Name zu "etwas". Zusaetzlich koennen Spieler ihn
-       nicht mehr ansprechen, d.h. nehmen, wegwerfen, weitergeben etc.
-       (Bei magier-eigenen Kommandos ist dies evtl. nicht umgesetzt...)
-       Setzt man P_SHORT auf 0, wird der Gegenstand nur nicht mehr in
-       der Inventarliste von Behaeltern/Raeumen angezeigt, er behaelt aber
-       seinen Namen und ist durch Spieler ansprechbar, wenn sie eine ID
-       kennen.
+NAME
+====
 
-     - NPCs
-       Bei gesetztem P_INVIS wird der NPC unsichtbar und sein Name wird zu
-       "Jemand". Zusaetzlich koennen Spieler ihn nicht mehr ansprechen, z.B.
-       toeten oder knuddeln.
-       (Bei magier-eigenen Kommandos ist dies evtl. nicht umgesetzt...)
-       Setzt man P_SHORT auf 0, wird der NPC nur nicht mehr in der
-       Inventarliste von Behaeltern/Raeumen angezeigt, er behaelt aber seinen
-       Namen und ist durch Spieler ansprechbar, wenn sie eine ID kennen. Auch
-       angreifen und kaempfen ist moeglich.
-     
-     - Magier
-       Magier macht man unsichtbar, indem man ihnen die Property P_INVIS auf
-       einen Wert <> 0 setzt.
-       *  Spieler duerfen nicht unsichtbar gemacht werden!               *
-       *  Wird ein Magier unsichtbar gemacht, muss man ihm die Property	 *
-       *  P_INVIS auf den Wert setzen, den die Property P_AGE zu diesem	 *
-       *  Zeitpunkt hat (keine F_QUERY_METHOD !).				                 *
-       Setzt man die Property auf den Wert 1, so erhaelt ein Spieler,
-       wenn er den entsp. Magier fingert, die Ausgabe: Alter: 00:00:02,
-       was genauso verraeterisch ist, wie ein Alter, dass bei einem
-       scheinbar nicht eingeloggten Magier immer weiter hochgezaehlt
-       wird.
+   P_INVIS                       "invis"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property P_INVIS dient dazu, Objekte als unsichtbar zu kennzeichnen.
+   Hierbei versucht P_INVIS die moeglichen Interaktionen mit Spielern zu
+   minimieren (im Gegensatz zu einer fehlenden P_SHORT, welche das Objekt
+   nur einfach nicht-sichtbar macht).
+
+
+
+   Man sollte drei Arten von unsichtbaren Objekten unterscheiden:
+
+   - Gegenstaende
+     Setzt man P_INVIS auf eine Zahl ungleich 0, wird der Gegenstand
+     unsichtbar und der Name zu "etwas". Zusaetzlich koennen Spieler ihn
+     nicht mehr ansprechen, d.h. nehmen, wegwerfen, weitergeben etc.
+     (Bei magier-eigenen Kommandos ist dies evtl. nicht umgesetzt...)
+     Setzt man P_SHORT auf 0, wird der Gegenstand nur nicht mehr in
+     der Inventarliste von Behaeltern/Raeumen angezeigt, er behaelt aber
+     seinen Namen und ist durch Spieler ansprechbar, wenn sie eine ID
+     kennen.
+
+   - NPCs
+     Bei gesetztem P_INVIS wird der NPC unsichtbar und sein Name wird zu
+     "Jemand". Zusaetzlich koennen Spieler ihn nicht mehr ansprechen, z.B.
+     toeten oder knuddeln.
+     (Bei magier-eigenen Kommandos ist dies evtl. nicht umgesetzt...)
+     Setzt man P_SHORT auf 0, wird der NPC nur nicht mehr in der
+     Inventarliste von Behaeltern/Raeumen angezeigt, er behaelt aber seinen
+     Namen und ist durch Spieler ansprechbar, wenn sie eine ID kennen. Auch
+     angreifen und kaempfen ist moeglich.
+
+
+
+   - Magier
+     Magier macht man unsichtbar, indem man ihnen die Property P_INVIS auf
+     einen Wert <> 0 setzt.
+     *  Spieler duerfen nicht unsichtbar gemacht werden!               *
+     *  Wird ein Magier unsichtbar gemacht, muss man ihm die Property  *
+     *  P_INVIS auf den Wert setzen, den die Property P_AGE zu diesem  *
+     *  Zeitpunkt hat (keine F_QUERY_METHOD !).                                                *
+     Setzt man die Property auf den Wert 1, so erhaelt ein Spieler,
+     wenn er den entsp. Magier fingert, die Ausgabe: Alter: 00:00:02,
+     was genauso verraeterisch ist, wie ein Alter, dass bei einem
+     scheinbar nicht eingeloggten Magier immer weiter hochgezaehlt
+     wird.
+
 27.05.2015, Zesstra
-
diff --git a/doc/props/P_IP_NAME b/doc/props/P_IP_NAME
index 7b503ea..6003c80 100644
--- a/doc/props/P_IP_NAME
+++ b/doc/props/P_IP_NAME
@@ -1,8 +1,21 @@
-NAME:
-    P_IP_NAME                     "ip_name"                     
 
-DEFINIERT IN:
-    /sys/player.h
+P_IP_NAME
+*********
 
-BESCHREIBUNG:
-     Rechnername des Interactives
+
+NAME
+====
+
+   P_IP_NAME                     "ip_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Rechnername des Interactives
diff --git a/doc/props/P_IS_ARTILLERY b/doc/props/P_IS_ARTILLERY
index 051b20f..2afcd60 100644
--- a/doc/props/P_IS_ARTILLERY
+++ b/doc/props/P_IS_ARTILLERY
@@ -1,15 +1,30 @@
-NAME:
-	P_IS_ARTILLERY			"artillery"
 
-DEFINIERT IN:
-	/sys/combat.h
+P_IS_ARTILLERY
+**************
 
-BESCHREIBUNG:
-	Is ein Objekt Artillerie, so muss diese Property
-	gesetzt sein. (Derzeit einfach auf 1 setzen.)
 
-SIEHE AUCH:
-	artillerie
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_IS_ARTILLERY                  "artillery"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Is ein Objekt Artillerie, so muss diese Property
+   gesetzt sein. (Derzeit einfach auf 1 setzen.)
+
+
+SIEHE AUCH
+==========
+
+   artillerie
+
 Last modified: Sam,  5. Jul 2003, 22:07:12 by Zook.
diff --git a/doc/props/P_ITEMS b/doc/props/P_ITEMS
index add4255..1fcafc5 100644
--- a/doc/props/P_ITEMS
+++ b/doc/props/P_ITEMS
@@ -1,9 +1,22 @@
-NAME:
-    P_ITEMS                       "items"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_ITEMS
+*******
 
-BESCHREIBUNG:
-     Definition von Gegenstaenden, die in dem Raum liegen sollen.
-     Erklaerung in einem Extrafile.
+
+NAME
+====
+
+   P_ITEMS                       "items"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Definition von Gegenstaenden, die in dem Raum liegen sollen.
+   Erklaerung in einem Extrafile.
diff --git a/doc/props/P_I_HATE_ALCOHOL b/doc/props/P_I_HATE_ALCOHOL
index f60a38f..0a0eefc 100644
--- a/doc/props/P_I_HATE_ALCOHOL
+++ b/doc/props/P_I_HATE_ALCOHOL
@@ -1,23 +1,41 @@
-NAME:
-    P_I_HATE_ALCOHOL                        "i_hate_alcohol"
 
-DEFINIERT IN:
-    /sys/inpc/boozing.h
+P_I_HATE_ALCOHOL
+****************
 
-BESCHREIBUNG:
-    Numerischer Wert, der die Obergrenze an P_ALCOHOL in einem Monster
-    definiert, welcher beim eigenstaendigen Tanken beruecksichtigt wird.
 
-BEMERKUNG:
-    Geht der Npc (und nur fuer solche ist diese Prop gedacht) eigen-
-    staendig tanken, werden vor dem Bestellen die Getraenke und Speisen
-    auf ihren Alkoholgehalt geprueft und mit dem aktuellen Wert von
-    P_ALCOHOL im Verhaeltnis zu P_I_HATE_ALCOHOL verglichen. Laege der
-    Wert fuer P_ALCOHOL dann ueber dem von P_I_HATE_ALCOHOL, wird dieses
-    Getraenk (diese Speise) nicht bestellt.
+NAME
+====
 
-SIEHE AUCH:
-     P_ALCOHOL, P_MAX_ALCOHOL
+   P_I_HATE_ALCOHOL                        "i_hate_alcohol"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/inpc/boozing.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert, der die Obergrenze an P_ALCOHOL in einem Monster
+   definiert, welcher beim eigenstaendigen Tanken beruecksichtigt wird.
+
+
+BEMERKUNG
+=========
+
+   Geht der Npc (und nur fuer solche ist diese Prop gedacht) eigen-
+   staendig tanken, werden vor dem Bestellen die Getraenke und Speisen
+   auf ihren Alkoholgehalt geprueft und mit dem aktuellen Wert von
+   P_ALCOHOL im Verhaeltnis zu P_I_HATE_ALCOHOL verglichen. Laege der
+   Wert fuer P_ALCOHOL dann ueber dem von P_I_HATE_ALCOHOL, wird dieses
+   Getraenk (diese Speise) nicht bestellt.
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, P_MAX_ALCOHOL
+
 Last modified: Sam Apr 14 12:35:00 2001 by Tilly
diff --git a/doc/props/P_KEEPER b/doc/props/P_KEEPER
index c0275ba..63185c8 100644
--- a/doc/props/P_KEEPER
+++ b/doc/props/P_KEEPER
@@ -1,14 +1,26 @@
-NAME:
-    P_KEEPER                       "shop_keeper"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_KEEPER
+********
 
-BESCHREIBUNG:
-    In diese Property kann man in Kneipen und Laeden einen String schreiben.
-    Dann wird vor den Transaktionen geprueft, ob ein NPC anwesend ist,
-    der diesen String als ID hat.
-    Ist der NPC nicht vorhanden, kann nichts ge- oder verkauft werden.
 
-----------------------------------------------------------------------------
-Last modified: Mon Aug 23 14:29:00 1999 by Paracelsus
\ No newline at end of file
+NAME
+====
+
+   P_KEEPER                       "shop_keeper"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man in Kneipen und Laeden einen String schreiben.
+   Dann wird vor den Transaktionen geprueft, ob ein NPC anwesend ist,
+   der diesen String als ID hat.
+   Ist der NPC nicht vorhanden, kann nichts ge- oder verkauft werden.
+
+Last modified: Mon Aug 23 14:29:00 1999 by Paracelsus
diff --git a/doc/props/P_KEEP_ON_SELL b/doc/props/P_KEEP_ON_SELL
index 8a21407..ce5feba 100644
--- a/doc/props/P_KEEP_ON_SELL
+++ b/doc/props/P_KEEP_ON_SELL
@@ -1,8 +1,21 @@
-NAME:
-    P_KEEP_ON_SELL                "keep_on_sell"                
 
-DEFINIERT IN:
-    /sys/properties.h
+P_KEEP_ON_SELL
+**************
 
-BESCHREIBUNG:
-     Bei "verkaufe alles" wird das Objekt behalten.
+
+NAME
+====
+
+   P_KEEP_ON_SELL                "keep_on_sell"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Bei "verkaufe alles" wird das Objekt behalten.
diff --git a/doc/props/P_KILLER b/doc/props/P_KILLER
index 83f6b18..01bb0d1 100644
--- a/doc/props/P_KILLER
+++ b/doc/props/P_KILLER
@@ -1,10 +1,23 @@
-NAME:
-    P_KILLER                      "killer"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_KILLER
+********
 
-BESCHREIBUNG:
+
+NAME
+====
+
+   P_KILLER                      "killer"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
    Diese Property enthaelt das Objekt, welches das Lebewesen als letztes
    getoetet hat. Sie wird von do_damage(), heart_beat() (Vergiftungen) und
    die() (bei direkten Aufrufen) automatisch gesetzt. Ein manuelles
@@ -16,12 +29,18 @@
    waehrend eines NotifyPlayerDeath(), weil es evtl. noch andere Objekte gibt,
    die sich dafuer interessieren!
 
-BEMERKUNGEN:
+
+BEMERKUNGEN
+===========
+
    Normalerweise steht hier ein Objekt drin (s.o.). Es gibt allerdings eine
    Ausnahme: Stirbt ein Lebewesen an Gift, enthaelt P_KILLER den String
    "gift".
 
-SIEHE AUCH:
+
+SIEHE AUCH
+==========
+
    do_damage()
 
 29.08.2008, Zesstra
diff --git a/doc/props/P_KILLS b/doc/props/P_KILLS
index 3dae72d..7ec3dac 100644
--- a/doc/props/P_KILLS
+++ b/doc/props/P_KILLS
@@ -1,10 +1,23 @@
-NAME:
-    P_KILLS                       "playerkills"                 
 
-DEFINIERT IN:
-    /sys/properties.h
+P_KILLS
+*******
 
-BESCHREIBUNG:
-     Anzahl der Spieler, die dieser Spieler schon getoetet hat.
-     Unerlaubte Manipulation ist ein SCHWERES VERGEHEN gegen
-     die Mudreglen.
+
+NAME
+====
+
+   P_KILLS                       "playerkills"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Spieler, die dieser Spieler schon getoetet hat.
+   Unerlaubte Manipulation ist ein SCHWERES VERGEHEN gegen
+   die Mudreglen.
diff --git a/doc/props/P_KILL_MSG b/doc/props/P_KILL_MSG
index 0a9e3bb..9437975 100644
--- a/doc/props/P_KILL_MSG
+++ b/doc/props/P_KILL_MSG
@@ -1,80 +1,96 @@
+
 P_KILL_MSG
-
-NAME:
-	P_KILL_MSG			"kill_msg"
-
-DEFINIERT IN:
-	/sys/properties.h
-
-BESCHREIBUNG:
-     Wenn ein Spieler getoetet wird, so erscheint dazu eine kurze Information
-     auf dem Todeskanal. Um dem toetenden Objekt zusaetzlich die Moeglichkeit
-     zu geben, noch etwas mehr auf diesem Kanal auszugeben, kann man in
-     dieser Property einen String uebergeben.
-     Noetige Zeilenumbrueche werden hierbei automatisch generiert.
-
-     Es ist auch moeglich anzugeben, ob Emotes verwendet werden und ob das
-     toetende Objekt ein Plural-Objekt ist. Hierzu uebergibt man ein Array
-     der Gestalt:
-
-	({Killmessage,Emotes}) bzw. ({Killmessage,Emotes,PLURAL})
-
-     Der Eintrag <Killmessage> stellt hierbei die Meldung selbst dar, PLURAL
-     gibt an, dass es sich um ein Plural-Objekt handelt und <Emotes> kann
-     folgende Werte annehmen:
-
-	MSG_SAY    - Meldung wird normal ausgegeben.
-	MSG_EMOTE  - Meldung erscheint als Emote.
-	MSG_GEMOTE - Meldung erscheint als Genitiv-Emote.
-	MSG_EMPTY  - Meldung erscheint ohne zuvorige Angabe des
-	               toetenden Objektes.
-
-     Moechte man die Meldung noch etwas "persoenlicher" ;-) gestalten, so
-     kann man den Platzhalter %s verwenden. An dessen Stelle wird dann der
-     Name des Verblichenen eingesetzt.
-
-BEISPIEL:
-     Ein nettes Beispiel ist das folgende: Wenn ein Spieler sich als
-     Drachentoeter bewehrt hat, so kann er traditionell in seinem Blut baden.
-     Hin und wieder ist jedoch auch der Drache erfolgreich, dem man eine
-     lustige Zusatzmeldung fuer den Todeskanal uebergeben kann:
-
-     void create() {
-       ::create();
-       ...
-       SetProp(P_KILL_MSG,"Jetzt bade ich mal in DEINEM Blut, %s!");
-       ...
-     }
+**********
 
 
-     Falls der 'Killer' ein Plural-Objekt oder -NPC war, koennte eine Meldung
-     auch folgendermassen aussehen:
+NAME
+====
 
-     SetProp(P_KILL_MSG,({"haun sich jetzt die Hucke voll.",
-			  MSG_EMOTE,
-			  PLURAL}));
-
-     wobei P_KILL_NAME hier natuerlich auf "Eine Menge Orks" oder
-     dergleichen gesetzt sein sollte. Auf dem Kanal waere dann dies zu
-     lesen:
-
-	[Tod:Lars] Eine Menge Orks haben gerade Orktoeter umgebracht.
-	[Tod:Eine Menge Orks haun sich jetzt die Hucke voll.]
+   P_KILL_MSG                      "kill_msg"
 
 
-     Weiteres Beispiel.
-     Man habe einen NPC, dessen Killname als Plural aufzufassen ist, der aber
-     keinen zusaetlichen Text auf -Tod bringen soll.
+DEFINIERT IN
+============
 
-     SetProp(P_NAME, "Eine Horde Gummibaeren");
-     SetProp(P_KILL_NAME, "Viele kleine Gummibaeren");
-     SetProp(P_KILL_MSG, ({0, 0, 1}));
+   /sys/properties.h
 
-SIEHE AUCH:
-     Tod:		die(L)
-     Todesmeldungen:	P_KILL_NAME, P_DIE_MSG, P_MURDER_MSG
-			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /room/death/death_room.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler getoetet wird, so erscheint dazu eine kurze Information
+   auf dem Todeskanal. Um dem toetenden Objekt zusaetzlich die Moeglichkeit
+   zu geben, noch etwas mehr auf diesem Kanal auszugeben, kann man in
+   dieser Property einen String uebergeben.
+   Noetige Zeilenumbrueche werden hierbei automatisch generiert.
+
+   Es ist auch moeglich anzugeben, ob Emotes verwendet werden und ob das
+   toetende Objekt ein Plural-Objekt ist. Hierzu uebergibt man ein Array
+   der Gestalt:
+
+      ({Killmessage,Emotes}) bzw. ({Killmessage,Emotes,PLURAL})
+
+   Der Eintrag <Killmessage> stellt hierbei die Meldung selbst dar, PLURAL
+   gibt an, dass es sich um ein Plural-Objekt handelt und <Emotes> kann
+   folgende Werte annehmen:
+
+      MSG_SAY    - Meldung wird normal ausgegeben.
+      MSG_EMOTE  - Meldung erscheint als Emote.
+      MSG_GEMOTE - Meldung erscheint als Genitiv-Emote.
+      MSG_EMPTY  - Meldung erscheint ohne zuvorige Angabe des
+                     toetenden Objektes.
+
+   Moechte man die Meldung noch etwas "persoenlicher" ;-) gestalten, so
+   kann man den Platzhalter %s verwenden. An dessen Stelle wird dann der
+   Name des Verblichenen eingesetzt.
+
+
+BEISPIEL
+========
+
+   Ein nettes Beispiel ist das folgende: Wenn ein Spieler sich als
+   Drachentoeter bewehrt hat, so kann er traditionell in seinem Blut baden.
+   Hin und wieder ist jedoch auch der Drache erfolgreich, dem man eine
+   lustige Zusatzmeldung fuer den Todeskanal uebergeben kann:
+
+   void create() {
+     ::create();
+     ...
+     SetProp(P_KILL_MSG,"Jetzt bade ich mal in DEINEM Blut, %s!");
+     ...
+   }
+
+
+   Falls der 'Killer' ein Plural-Objekt oder -NPC war, koennte eine Meldung
+   auch folgendermassen aussehen:
+
+   SetProp(P_KILL_MSG,({"haun sich jetzt die Hucke voll.",
+                        MSG_EMOTE,
+                        PLURAL}));
+
+   wobei P_KILL_NAME hier natuerlich auf "Eine Menge Orks" oder
+   dergleichen gesetzt sein sollte. Auf dem Kanal waere dann dies zu
+   lesen:
+
+      [Tod:Lars] Eine Menge Orks haben gerade Orktoeter umgebracht.
+      [Tod:Eine Menge Orks haun sich jetzt die Hucke voll.]
+
+
+   Weiteres Beispiel.
+   Man habe einen NPC, dessen Killname als Plural aufzufassen ist, der aber
+   keinen zusaetlichen Text auf -Tod bringen soll.
+
+   SetProp(P_NAME, "Eine Horde Gummibaeren");
+   SetProp(P_KILL_NAME, "Viele kleine Gummibaeren");
+   SetProp(P_KILL_MSG, ({0, 0, 1}));
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_DIE_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
 Last modified: Wed Aug 21 14:36:04 2002 by Bambi
diff --git a/doc/props/P_KILL_NAME b/doc/props/P_KILL_NAME
index 3f214ab..0504066 100644
--- a/doc/props/P_KILL_NAME
+++ b/doc/props/P_KILL_NAME
@@ -1,43 +1,59 @@
+
 P_KILL_NAME
+***********
 
-NAME:
-     P_KILL_NAME			"kill_name"
 
-DEFINIERT IN:
-     /sys/properties.h
+NAME
+====
 
-BESCHREIBUNG:
-     Wenn ein Spieler getoetet wird, so erscheint eine kurze Information auf
-     dem Todeskanal. Im Normalfall werden die Informationen aus P_NAME,
-     P_ARTICLE und P_GENDER des toetenden Objektes verwendet, um einen Namen
-     fuer eben dieses Objekt zu kreieren. Manchmal moechte man jedoch einen
-     davon unabhaengigen Namen dort stehen haben. Dann kommt die Property
-     P_KILL_NAME zum Einsatz.
-     Man sollte beachten, dass der Name des Toetenden nicht zu lang sein
-     sollte, denn obwohl bei einer Todesmeldung automatisch umgebrochen wird,
-     kann es doch ziemlich stoeren. Wenn das toetende Objekt ein Plural-
-     Objekt ist, so kann man dies zusaetzlich in der Property P_KILL_MSG
-     angeben.
+   P_KILL_NAME                        "kill_name"
 
-BEISPIEL:
-     Eine Wolke, die wahlweise zwischen verschiedenen Zustaenden mutiert,
-     koennte mal eine Eiswolke, mal eine Giftwolke oder auch mal eine
-     Feuerwolke sein. Fuer den Todeskanal soll jedoch immer erscheinen:
-     '[Tod:] Eine mutierende Wolke hat gerade <Spieler> umgebracht.'
 
-     void create()
-     {
-       ::create();
-       ...
-       SetProp(P_KILL_NAME,"Eine mutierende Wolke");
-       ...
-     }
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Tod:		die(L)
-     Todesmeldungen:	P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
-			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+   /sys/properties.h
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler getoetet wird, so erscheint eine kurze Information auf
+   dem Todeskanal. Im Normalfall werden die Informationen aus P_NAME,
+   P_ARTICLE und P_GENDER des toetenden Objektes verwendet, um einen Namen
+   fuer eben dieses Objekt zu kreieren. Manchmal moechte man jedoch einen
+   davon unabhaengigen Namen dort stehen haben. Dann kommt die Property
+   P_KILL_NAME zum Einsatz.
+   Man sollte beachten, dass der Name des Toetenden nicht zu lang sein
+   sollte, denn obwohl bei einer Todesmeldung automatisch umgebrochen wird,
+   kann es doch ziemlich stoeren. Wenn das toetende Objekt ein Plural-
+   Objekt ist, so kann man dies zusaetzlich in der Property P_KILL_MSG
+   angeben.
+
+
+BEISPIEL
+========
+
+   Eine Wolke, die wahlweise zwischen verschiedenen Zustaenden mutiert,
+   koennte mal eine Eiswolke, mal eine Giftwolke oder auch mal eine
+   Feuerwolke sein. Fuer den Todeskanal soll jedoch immer erscheinen:
+   '[Tod:] Eine mutierende Wolke hat gerade <Spieler> umgebracht.'
+
+   void create()
+   {
+     ::create();
+     ...
+     SetProp(P_KILL_NAME,"Eine mutierende Wolke");
+     ...
+   }
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_KNOWN_POTIONROOMS b/doc/props/P_KNOWN_POTIONROOMS
index f5adb97..29e17d3 100644
--- a/doc/props/P_KNOWN_POTIONROOMS
+++ b/doc/props/P_KNOWN_POTIONROOMS
@@ -1,19 +1,35 @@
-NAME:
-    P_KNOWN_POTIONROOMS                 "known_potionrooms"                 
 
-DEFINIERT IN:
-    /sys/player/potion.h
+P_KNOWN_POTIONROOMS
+*******************
 
-BESCHREIBUNG:
-    Array mit den Nummern der Raeume, in denen der Spieler Zauber-
-    traenke finden kann. Die Zuordnung der Raeume und Nummern
-    geschieht im Potionmaster.
 
-    Nur lesbare _query - Property.
+NAME
+====
 
-SIEHE AUCH:
-    Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
-    Verwandt:  FindPotion(), AddKnownPotion(), RemoveKnownPotion(), InList()
-    Props:     P_POTIONROOMS
+   P_KNOWN_POTIONROOMS                 "known_potionrooms"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/potion.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit den Nummern der Raeume, in denen der Spieler Zauber-
+   traenke finden kann. Die Zuordnung der Raeume und Nummern
+   geschieht im Potionmaster.
+
+   Nur lesbare _query - Property.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS
 
 6.Feb 2016 Gloinson
diff --git a/doc/props/P_LASTDIR b/doc/props/P_LASTDIR
index eae9071..2695f06 100644
--- a/doc/props/P_LASTDIR
+++ b/doc/props/P_LASTDIR
@@ -1,15 +1,28 @@
-NAME:
-    P_LASTDIR                  "p_lib_lastdir"
 
-DEFINIERT IN:
-    /sys/shells.h
+P_LASTDIR
+*********
 
-BESCHREIBUNG:
-    Das jeweils letzte Verzeichnis, in dem der Magier war.
-    (Nur fuer Magier von Belang)
+
+NAME
+====
+
+   P_LASTDIR                  "p_lib_lastdir"
+
+
+DEFINIERT IN
+============
+
+   /sys/shells.h
+
+
+BESCHREIBUNG
+============
+
+   Das jeweils letzte Verzeichnis, in dem der Magier war.
+   (Nur fuer Magier von Belang)
 
 Siehe auch:
-    P_CURRENTDIR
+   P_CURRENTDIR
 
 Letzte Aenderung:
-    03.05.2016, Zesstra
+   03.05.2016, Zesstra
diff --git a/doc/props/P_LAST_COMBAT_TIME b/doc/props/P_LAST_COMBAT_TIME
index b3df96d..941ec1e 100644
--- a/doc/props/P_LAST_COMBAT_TIME
+++ b/doc/props/P_LAST_COMBAT_TIME
@@ -1,23 +1,38 @@
-NAME:
-	P_LAST_COMBAT_TIME		"last_combat_time"
 
-DEFINIERT IN:
-	/sys/combat.h
+P_LAST_COMBAT_TIME
+******************
 
-BESCHREIBUNG:
-	In dieser Property wird genau die Zeit festgehalten, zu der ein
-	Lebewesen zuletzt einen Angriff abgewehrt oder einen Angriff
-	durchgefuehrt hat. Die Property enthaelt diese Information hierbei
-	immer in Form eines Integerwertes.
-	Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte, wann
-	ein Lebewesen zuletzt gekaempft hat. Es ist beispielsweise nicht
-	moeglich, waehrend oder auch unmittelbar nach einem Kampf den Befehl
-	'Ende' zu nutzen, da dies zur Flucht missbraucht werden kann. Dafuer
-	wird der Wert der Property zuvor ausgewertet.
 
-SIEHE AUCH:
-	P_LAST_DAMTIME, P_LAST_DAMAGE, P_LAST_DAMTYPES, Attack(), Defend(),
-	/std/living/combat.c, /std/living/life.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_LAST_COMBAT_TIME              "last_combat_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird genau die Zeit festgehalten, zu der ein
+   Lebewesen zuletzt einen Angriff abgewehrt oder einen Angriff
+   durchgefuehrt hat. Die Property enthaelt diese Information hierbei
+   immer in Form eines Integerwertes.
+   Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte, wann
+   ein Lebewesen zuletzt gekaempft hat. Es ist beispielsweise nicht
+   moeglich, waehrend oder auch unmittelbar nach einem Kampf den Befehl
+   'Ende' zu nutzen, da dies zur Flucht missbraucht werden kann. Dafuer
+   wird der Wert der Property zuvor ausgewertet.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_DAMTIME, P_LAST_DAMAGE, P_LAST_DAMTYPES, Attack(), Defend(),
+   /std/living/combat.c, /std/living/life.c
+
 Last modified: Wed May 26 16:43:00 1999 by Patryn
diff --git a/doc/props/P_LAST_COMMAND_ENV b/doc/props/P_LAST_COMMAND_ENV
index 576e34d..40bd6a0 100644
--- a/doc/props/P_LAST_COMMAND_ENV
+++ b/doc/props/P_LAST_COMMAND_ENV
@@ -1,15 +1,30 @@
+
 P_LAST_COMMAND_ENV
-NAME:
-    P_LAST_COMMAND_ENV            "last_command_env"            
+******************
 
-DEFINIERT IN:
-    /sys/player.h
 
-BESCHREIBUNG:
-     Der Raum, in dem das letzte Kommando eingegeben wurde.
+NAME
+====
 
-BEMERKUNGEN:
-     Keine echte Property, _query_last_command_env() ist
-     in /std/players/command.c implementiert.
+   P_LAST_COMMAND_ENV            "last_command_env"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Der Raum, in dem das letzte Kommando eingegeben wurde.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property, _query_last_command_env() ist
+   in /std/players/command.c implementiert.
 
 14.Feb.2004 Gloinson
diff --git a/doc/props/P_LAST_CONTENT_CHANGE b/doc/props/P_LAST_CONTENT_CHANGE
index 0fa64bb..f128774 100644
--- a/doc/props/P_LAST_CONTENT_CHANGE
+++ b/doc/props/P_LAST_CONTENT_CHANGE
@@ -1,16 +1,32 @@
-NAME:
-    P_LAST_CONTENT_CHANGE         "last_content_change"         
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LAST_CONTENT_CHANGE
+*********************
 
-BESCHREIBUNG:
-     Wann wurde zum letzten Mal was ins Obj gestopft oder rausgenommen?
-     Wichtig fuer den Weight-Cache
 
-ANMERKUNG:
-     Die Property kann nur ueber QueryProp() und SetProp() ausgelesen bzw.
-     gesetzt werden. Query() und Set() funktionieren *nicht*.
+NAME
+====
 
-     Ausserdem fuehrt ein Setzen per SetProp() zu einer Erhoehung des 
-     Wertes um eins - unabhaengig vom gesetzten Wert.
+   P_LAST_CONTENT_CHANGE         "last_content_change"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wann wurde zum letzten Mal was ins Obj gestopft oder rausgenommen?
+   Wichtig fuer den Weight-Cache
+
+
+ANMERKUNG
+=========
+
+   Die Property kann nur ueber QueryProp() und SetProp() ausgelesen bzw.
+   gesetzt werden. Query() und Set() funktionieren *nicht*.
+
+   Ausserdem fuehrt ein Setzen per SetProp() zu einer Erhoehung des
+   Wertes um eins - unabhaengig vom gesetzten Wert.
diff --git a/doc/props/P_LAST_DAMAGE b/doc/props/P_LAST_DAMAGE
index 8d618b1..66388b7 100644
--- a/doc/props/P_LAST_DAMAGE
+++ b/doc/props/P_LAST_DAMAGE
@@ -1,22 +1,37 @@
-NAME:
-	P_LAST_DAMAGE			"last_damage"
 
-DEFINIERT IN:
-	/sys/living/combat.h
+P_LAST_DAMAGE
+*************
 
-BESCHREIBUNG:
-	In dieser Property wird genau die Schadensstaerke festgehalten,
-	welche ein Lebewesen zuletzt abbekommen hat. Die Property enthaelt
-	diese Information hierbei immer in Form eines Integerwertes.
-	Auch die Staerke des Giftschadens durch die Wirkung einer Vergiftung
-	wird hier festgehalten.
-	Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte,
-	welche Schadensstaerke nach Einwirkung von Defendern, Ruestung,
-	Hooks und Skills uebriggeblieben ist.
 
-SIEHE AUCH:
-	P_LAST_DAMTIME, P_LAST_DAMTYPES, Defend(),
-	/std/living/combat.c, /std/living/life.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_LAST_DAMAGE                   "last_damage"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird genau die Schadensstaerke festgehalten,
+   welche ein Lebewesen zuletzt abbekommen hat. Die Property enthaelt
+   diese Information hierbei immer in Form eines Integerwertes.
+   Auch die Staerke des Giftschadens durch die Wirkung einer Vergiftung
+   wird hier festgehalten.
+   Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte,
+   welche Schadensstaerke nach Einwirkung von Defendern, Ruestung,
+   Hooks und Skills uebriggeblieben ist.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_DAMTIME, P_LAST_DAMTYPES, Defend(),
+   /std/living/combat.c, /std/living/life.c
+
 Last modified: Tue Jan 26 12:34:29 1999 by Patryn
diff --git a/doc/props/P_LAST_DAMTIME b/doc/props/P_LAST_DAMTIME
index 72ffb51..7e6d0ea 100644
--- a/doc/props/P_LAST_DAMTIME
+++ b/doc/props/P_LAST_DAMTIME
@@ -1,22 +1,37 @@
-NAME:
-	P_LAST_DAMTIME			"last_damtime"
 
-DEFINIERT IN:
-	/sys/living/combat.h
+P_LAST_DAMTIME
+**************
 
-BESCHREIBUNG:
-	In dieser Property wird genau die Zeit festgehalten, zu der ein
-	Lebewesen zuletzt einen Schaden abbekommen hat. Die Property
-	enthaelt diese Information hierbei immer in Form eines
-	Integerwertes.
-	Auch der Zeitpunkt der Einwirkung von Giftschaden durch die Wirkung
-	einer Vergiftung wird hier festgehalten.
-	Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte, wann
-	ein Lebewesen zuletzt verletzt wurde.
 
-SIEHE AUCH:
-	P_LAST_COMBAT_TIME, P_LAST_DAMAGE, P_LAST_DAMTYPES, Defend(),
-	/std/living/combat.c, /std/living/life.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_LAST_DAMTIME                  "last_damtime"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird genau die Zeit festgehalten, zu der ein
+   Lebewesen zuletzt einen Schaden abbekommen hat. Die Property
+   enthaelt diese Information hierbei immer in Form eines
+   Integerwertes.
+   Auch der Zeitpunkt der Einwirkung von Giftschaden durch die Wirkung
+   einer Vergiftung wird hier festgehalten.
+   Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte, wann
+   ein Lebewesen zuletzt verletzt wurde.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_COMBAT_TIME, P_LAST_DAMAGE, P_LAST_DAMTYPES, Defend(),
+   /std/living/combat.c, /std/living/life.c
+
 Last modified: Wed May 26 16:44:38 1999 by Patryn
diff --git a/doc/props/P_LAST_DAMTYPES b/doc/props/P_LAST_DAMTYPES
index 9d7b060..ecdf571 100644
--- a/doc/props/P_LAST_DAMTYPES
+++ b/doc/props/P_LAST_DAMTYPES
@@ -1,21 +1,36 @@
-NAME:
-	P_LAST_DAMTYPES			"last_damtypes"
 
-DEFINIERT IN:
-	/sys/living/combat.h
+P_LAST_DAMTYPES
+***************
 
-BESCHREIBUNG:
-	In dieser Property werden genau die Schadensarten festgehalten,
-	welche ein Lebewesen zuletzt abbekommen hat. Die Property enthaelt
-	diese Information hierbei immer in Form eines Arrays.
-	Auch der Giftschaden durch die Wirkung einer Vergiftung wird hier
-	festgehalten.
-	Dieser Wert koennte z.B. wichtig sein, wenn man nach dem Tod eines
-	Lebewesens feststellen moechte, durch was es umgekommen ist.
 
-SIEHE AUCH:
-	P_LAST_DAMAGE, P_LAST_DAMTIME, Defend(),
-	/std/living/combat.c, /std/living/life.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_LAST_DAMTYPES                 "last_damtypes"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property werden genau die Schadensarten festgehalten,
+   welche ein Lebewesen zuletzt abbekommen hat. Die Property enthaelt
+   diese Information hierbei immer in Form eines Arrays.
+   Auch der Giftschaden durch die Wirkung einer Vergiftung wird hier
+   festgehalten.
+   Dieser Wert koennte z.B. wichtig sein, wenn man nach dem Tod eines
+   Lebewesens feststellen moechte, durch was es umgekommen ist.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_DAMAGE, P_LAST_DAMTIME, Defend(),
+   /std/living/combat.c, /std/living/life.c
+
 Last modified: Tue Jan 26 12:34:29 1999 by Patryn
diff --git a/doc/props/P_LAST_DEATH_PROPS b/doc/props/P_LAST_DEATH_PROPS
index 712e04e..7249dad 100644
--- a/doc/props/P_LAST_DEATH_PROPS
+++ b/doc/props/P_LAST_DEATH_PROPS
@@ -1,18 +1,32 @@
-NAME:
-    P_LAST_DEATH_PROPS                "last_death_props"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_LAST_DEATH_PROPS
+******************
 
-BESCHREIBUNG:
-     Diese Property enthaelt nach dem Tod eines Spielers ein Mapping mit 
-     den Werte aller Properties, die im die() zurueckgesetzt werden.
 
-     Auf diese Weise kann ein Objekt auch im NotifyPlayerDeath() noch 
-     auf die Werte zurueckgreifen, obwohl sie bereits geloescht sind.
+NAME
+====
 
-     Folgende Properties werden so gesichert:
-   
-     P_POISON, P_FROG, P_ALCOHOL, P_DRINK, P_FOOD , P_BLIND, P_DEAF, 
-     P_MAX_HANDS, P_PARA, P_NO_REGENERATION , P_HP, P_SP, P_LAST_DEATH_TIME
+   P_LAST_DEATH_PROPS                "last_death_props"
 
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt nach dem Tod eines Spielers ein Mapping mit
+   den Werte aller Properties, die im die() zurueckgesetzt werden.
+
+   Auf diese Weise kann ein Objekt auch im NotifyPlayerDeath() noch
+   auf die Werte zurueckgreifen, obwohl sie bereits geloescht sind.
+
+   Folgende Properties werden so gesichert:
+
+
+
+   P_POISON, P_FROG, P_ALCOHOL, P_DRINK, P_FOOD , P_BLIND, P_DEAF,
+   P_MAX_HANDS, P_PARA, P_NO_REGENERATION , P_HP, P_SP, P_LAST_DEATH_TIME
diff --git a/doc/props/P_LAST_DEATH_TIME b/doc/props/P_LAST_DEATH_TIME
index 71bd787..669e7a1 100644
--- a/doc/props/P_LAST_DEATH_TIME
+++ b/doc/props/P_LAST_DEATH_TIME
@@ -1,8 +1,21 @@
-NAME:
-    P_LAST_DEATH_TIME                "last_death_time"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_LAST_DEATH_TIME
+*****************
 
-BESCHREIBUNG:
-     Der Zeitpunkt des letzten Todes des Spielers.
+
+NAME
+====
+
+   P_LAST_DEATH_TIME                "last_death_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Der Zeitpunkt des letzten Todes des Spielers.
diff --git a/doc/props/P_LAST_LOGIN b/doc/props/P_LAST_LOGIN
index 9287654..4ad7360 100644
--- a/doc/props/P_LAST_LOGIN
+++ b/doc/props/P_LAST_LOGIN
@@ -1,16 +1,35 @@
-NAME:
-    P_LAST_LOGIN                  "last_login"                  
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_LAST_LOGIN
+************
 
-BESCHREIBUNG:
-     Zeitpunkt des letzten Logins
 
-BEMERKUNGEN:
-     Gegen aeussere Aenderung und Set/QueryMethoden geschuetzt.
+NAME
+====
 
-SIEHE AUCH:
-     P_LAST_LOGOUT, save_me
+   P_LAST_LOGIN                  "last_login"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Zeitpunkt des letzten Logins
+
+
+BEMERKUNGEN
+===========
+
+   Gegen aeussere Aenderung und Set/QueryMethoden geschuetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_LOGOUT, save_me
 
 28. Jan 2013 Gloinson
diff --git a/doc/props/P_LAST_LOGOUT b/doc/props/P_LAST_LOGOUT
index 296ae92..e94e89e 100644
--- a/doc/props/P_LAST_LOGOUT
+++ b/doc/props/P_LAST_LOGOUT
@@ -1,20 +1,39 @@
-NAME:
-    P_LAST_LOGOUT                 "last_logout"                 
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_LAST_LOGOUT
+*************
 
-BESCHREIBUNG:
-     Zeitpunkt des letzten Logouts. Anhand dieser Zeit werden die Feindes-
-     listen und in Abwesenheit eingefuegte Gegenstaende aktualisiert.
 
-     Dieses Datum wird bei Magiern nicht aktualisiert, wenn sie unsichtbar
-     sind/sich unsichtbar ausloggen.
+NAME
+====
 
-BEMERKUNGEN:
-     Gegen aeussere Aenderung und Set/QueryMethoden geschuetzt.
+   P_LAST_LOGOUT                 "last_logout"
 
-SIEHE AUCH:
-     P_LAST_LOGIN, P_INVIS, save_me, init, StopHuntFor
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Zeitpunkt des letzten Logouts. Anhand dieser Zeit werden die Feindes-
+   listen und in Abwesenheit eingefuegte Gegenstaende aktualisiert.
+
+   Dieses Datum wird bei Magiern nicht aktualisiert, wenn sie unsichtbar
+   sind/sich unsichtbar ausloggen.
+
+
+BEMERKUNGEN
+===========
+
+   Gegen aeussere Aenderung und Set/QueryMethoden geschuetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_LOGIN, P_INVIS, save_me, init, StopHuntFor
 
 28. Jan 2013 Gloinson
diff --git a/doc/props/P_LAST_MOVE b/doc/props/P_LAST_MOVE
index 6b202a2..f6c974a 100644
--- a/doc/props/P_LAST_MOVE
+++ b/doc/props/P_LAST_MOVE
@@ -1,21 +1,36 @@
-NAME:
-	P_LAST_MOVE			"last_move"
 
-DEFINIERT IN:
-	/sys/thing/moving.h
+P_LAST_MOVE
+***********
 
-BESCHREIBUNG:
-	In dieser Property wird die Zeit der letzten Bewegung eines
-	Lebewesens festgehalten. Selbsterklaerend ist auch der dazugehoerige
-	Quellcode innerhalb move() in '/std/living/moving.c':
-	  SetProp(P_LAST_MOVE,time());
-	Wichtig ist diese Property insbesondere fuer die Unterbindung von
-	Rein-Angriff-Raus-Taktiken. Dieser Modus ist standardmaessig in jedem
-	NPC aktiviert und kann ueber die Property P_ENABLE_IN_ATTACK_OUT
-	ausgeschalten werden.
 
-SIEHE AUCH:
-	move(), time(), P_ENABLE_IN_ATTACK_OUT, /std/living/moving.c
+NAME
+====
 
------------------------------------------------------------------------------
+   P_LAST_MOVE                     "last_move"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird die Zeit der letzten Bewegung eines
+   Lebewesens festgehalten. Selbsterklaerend ist auch der dazugehoerige
+   Quellcode innerhalb move() in '/std/living/moving.c':
+     SetProp(P_LAST_MOVE,time());
+   Wichtig ist diese Property insbesondere fuer die Unterbindung von
+   Rein-Angriff-Raus-Taktiken. Dieser Modus ist standardmaessig in jedem
+   NPC aktiviert und kann ueber die Property P_ENABLE_IN_ATTACK_OUT
+   ausgeschalten werden.
+
+
+SIEHE AUCH
+==========
+
+   move(), time(), P_ENABLE_IN_ATTACK_OUT, /std/living/moving.c
+
 Last modified: Sat Jan 30 12:53:00 1999 by Patryn
diff --git a/doc/props/P_LAST_USE b/doc/props/P_LAST_USE
index 5ca875d..57519c9 100644
--- a/doc/props/P_LAST_USE
+++ b/doc/props/P_LAST_USE
@@ -1,20 +1,33 @@
+
 P_LAST_USE
+**********
 
-NAME:
-     P_LAST_USE "last_use"
 
-DEFINIERT IN:
-     <properties.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property wird in Ruestungen und Waffen dazu benutzt um
-     festzuhalten, wann die Ruestung/Waffe zuletzt im Kampf benutzt
-     wurde.
+   P_LAST_USE "last_use"
 
-SIEHE AUCH:
-     Ruestungen:	QueryDefend(L)
-     Waffen:		QueryDamage(L)
-     Sonstiges:		P_EQUIP_TIME, P_UNWIELD_TIME
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   <properties.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird in Ruestungen und Waffen dazu benutzt um
+   festzuhalten, wann die Ruestung/Waffe zuletzt im Kampf benutzt
+   wurde.
+
+
+SIEHE AUCH
+==========
+
+   Ruestungen:        QueryDefend(L)
+   Waffen:            QueryDamage(L)
+   Sonstiges:         P_EQUIP_TIME, P_UNWIELD_TIME
+
 Last modified: Fri Feb 06 10:15:00 1998 by Paracelsus
diff --git a/doc/props/P_LAST_WEAR_ACTION b/doc/props/P_LAST_WEAR_ACTION
index 1a4d224..5531955 100644
--- a/doc/props/P_LAST_WEAR_ACTION
+++ b/doc/props/P_LAST_WEAR_ACTION
@@ -1,24 +1,31 @@
-PROPERTY:
 
-	P_LAST_WEAR_ACTION    "last_wear_action"
+P_LAST_WEAR_ACTION
+******************
 
-DEFINIERT IN: 
 
-	/sys/armour.h (und damit auch in properties.h)
+PROPERTY
+========
 
-BESCHREIBUNG:
+   P_LAST_WEAR_ACTION    "last_wear_action"
 
-	Diese Prop gibt an, welche An/Auszieh-Aktion ein Spieler zuletzt
-	durchgefuehrt hat. Sie ist ein zweielementiges Array, wobei der
-	erste Eintrag angibt, ob der Spieler sich an- oder ausgezogen
-	hat (WA_WEAR, WA_UNWEAR, auch in armour.h definiert) und der
-	zweite den Zeitpunkt.
+DEFINIERT IN:
 
-	Die Property wird (unter anderem?) dafuer verwendet festzustellen ob
-	der Spieler in der letzten Runde schon einen Ruestungswechsel
-	vorgenommen hat und einen entgegengesetzten zu unterbinden.
+   /sys/armour.h (und damit auch in properties.h)
 
-LETZTE AENDERUNG: 
+
+BESCHREIBUNG
+============
+
+   Diese Prop gibt an, welche An/Auszieh-Aktion ein Spieler zuletzt
+   durchgefuehrt hat. Sie ist ein zweielementiges Array, wobei der
+   erste Eintrag angibt, ob der Spieler sich an- oder ausgezogen
+   hat (WA_WEAR, WA_UNWEAR, auch in armour.h definiert) und der
+   zweite den Zeitpunkt.
+
+   Die Property wird (unter anderem?) dafuer verwendet festzustellen ob
+   der Spieler in der letzten Runde schon einen Ruestungswechsel
+   vorgenommen hat und einen entgegengesetzten zu unterbinden.
+
+LETZTE AENDERUNG:
 
 2003-01-29, 17:30 von Humni
-
diff --git a/doc/props/P_LAST_XP b/doc/props/P_LAST_XP
index e5ee055..c31a8b4 100644
--- a/doc/props/P_LAST_XP
+++ b/doc/props/P_LAST_XP
@@ -1,27 +1,43 @@
-NAME:
-    P_LAST_XP                        "last_xp"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_LAST_XP
+*********
 
-BESCHREIBUNG:
-    Ein Array vom Typ ({ pfad, xp }).
 
-    Der Eintrag "pfad" gibt das Gebiet an, in dem ein Spieler zuletzt XP
-    bekommen hat. Dabei wird aus "/d/ebene/magier/room/raum1.c" dann
-    "/d/ebene/magier/room".
+NAME
+====
 
-    Der Wert "xp" zeigt an, wieviele XP der Spieler _in diesem Gebiet_
-    gesammelt hat. Sobald er auch nur einen XP in einem anderen Gebiet
-    bekommt, zeigt P_LAST_XP nur noch diesen neu erhaltenen XP an.
+   P_LAST_XP                        "last_xp"
 
-    Der Anwendungszweck waere z.B. eine Heilstelle, die nur dann Wirkung
-    zeigt, wenn der Spieler wirklich in dem betreffenden Gebiet gemetzelt hat
-    und nicht nur zum Tanken hergerannt ist oder eine Unterscheidung, ob
-    jemand metzelt oder nur uebt (ueber die XP).
 
-SIEHE AUCH:
-     Funktionen:  AddExp()
-     Verwandt:    P_NO_XP, P_XP
+DEFINIERT IN
+============
 
-14.Feb 2007 Gloinson
\ No newline at end of file
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array vom Typ ({ pfad, xp }).
+
+   Der Eintrag "pfad" gibt das Gebiet an, in dem ein Spieler zuletzt XP
+   bekommen hat. Dabei wird aus "/d/ebene/magier/room/raum1.c" dann
+   "/d/ebene/magier/room".
+
+   Der Wert "xp" zeigt an, wieviele XP der Spieler _in diesem Gebiet_
+   gesammelt hat. Sobald er auch nur einen XP in einem anderen Gebiet
+   bekommt, zeigt P_LAST_XP nur noch diesen neu erhaltenen XP an.
+
+   Der Anwendungszweck waere z.B. eine Heilstelle, die nur dann Wirkung
+   zeigt, wenn der Spieler wirklich in dem betreffenden Gebiet gemetzelt hat
+   und nicht nur zum Tanken hergerannt ist oder eine Unterscheidung, ob
+   jemand metzelt oder nur uebt (ueber die XP).
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp()
+   Verwandt:    P_NO_XP, P_XP
+
+14.Feb 2007 Gloinson
diff --git a/doc/props/P_LEAVECMDS b/doc/props/P_LEAVECMDS
index e31cf8a..5b0e03c 100644
--- a/doc/props/P_LEAVECMDS
+++ b/doc/props/P_LEAVECMDS
@@ -1,32 +1,56 @@
-NAME:
-    P_LEAVECMDS                   "leavecmds"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_LEAVECMDS
+***********
 
-BESCHREIBUNG:
-    Ein Array mit Befehlen, die zum Verlassen des Transporters fuehren. 
 
-BEISPIEL:
-    SetProp(P_LEAVECMDS,({ "verlass","verlasse" }) );
+NAME
+====
 
-    Gibt der Spieler nun 'verlasse xxx' ein, so sorgt /std/transport.c 
-    dafuer, das der Spieler auch von oder aus dem Transporter bewegt 
-    wird. Vorausgesetzt natuerlich, er ist an einem Haltepunkt angelangt.
+   P_LEAVECMDS                   "leavecmds"
 
-BEMERKUNGEN:
-    Um /std/transport.c nicht aufzublaehen, werden weitere Argumente wie
-    etwa 'verlasse das|die|den xxx' _nicht_ unterstuetzt!
 
-    Hier muss der verantwortliche Magier schon eine eigene Loesung finden
-    und in seinen Transporter schreiben.
+DEFINIERT IN
+============
 
-    Sollen Kommandos zum Betreten UND Verlassen eines Transporters ver-
-    wendet werden koennen, muessen diese in P_TRAVEL_CMDS gesetzt werden.
+   /sys/transport.h
 
-SIEHE AUCH:
-    P_LEAVEFAIL, P_ENTERFAIL, P_ENTERCMDS, P_TRAVEL_CMDS, transporter,
 
-LETZTE AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
-    
\ No newline at end of file
+BESCHREIBUNG
+============
+
+   Ein Array mit Befehlen, die zum Verlassen des Transporters fuehren.
+
+
+BEISPIEL
+========
+
+   SetProp(P_LEAVECMDS,({ "verlass","verlasse" }) );
+
+   Gibt der Spieler nun 'verlasse xxx' ein, so sorgt /std/transport.c
+   dafuer, das der Spieler auch von oder aus dem Transporter bewegt
+   wird. Vorausgesetzt natuerlich, er ist an einem Haltepunkt angelangt.
+
+
+BEMERKUNGEN
+===========
+
+   Um /std/transport.c nicht aufzublaehen, werden weitere Argumente wie
+   etwa 'verlasse das|die|den xxx' _nicht_ unterstuetzt!
+
+   Hier muss der verantwortliche Magier schon eine eigene Loesung finden
+   und in seinen Transporter schreiben.
+
+   Sollen Kommandos zum Betreten UND Verlassen eines Transporters ver-
+   wendet werden koennen, muessen diese in P_TRAVEL_CMDS gesetzt werden.
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEFAIL, P_ENTERFAIL, P_ENTERCMDS, P_TRAVEL_CMDS, transporter,
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_LEAVEFAIL b/doc/props/P_LEAVEFAIL
index a54b4a1..88e92ea 100644
--- a/doc/props/P_LEAVEFAIL
+++ b/doc/props/P_LEAVEFAIL
@@ -1,26 +1,48 @@
-NAME:
-    P_LEAVEFAIL                   "leavefail"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_LEAVEFAIL
+***********
 
-BESCHREIBUNG:
-     Meldung an den Spieler, wenn er ausserhalb der Anlegezeiten einen 
-     Transporter verlassen will. Ist die Propertie ein Array, so wird 
-     das erste Element als Meldung an den Spieler, das zweite als 
-     Meldung an die Mitspieler im Transporter geschickt. Ist der Eintrag
-     dagegen ein simpler String, so wird die Meldung nur an den Spieler
-     ausgegeben.
 
-BEISPIEL:
-     SetProp(P_LEAVEFAIL, "Die Wildgaense fliegen viel zu hoch" );
+NAME
+====
 
-     SetProp(P_LEAVEFAIL, ({ "Die Wildgaense fliegen viel zu hoch",
-                             "versucht, vom Ruecken der Wildgans zu "
-                            +"klettern und besinnt sich dann doch" }) );
-                             
-SIEHE AUCH:
-     P_LEAVEMSG, P_ENTERMSG, P_ENTERFAIL, transporter
+   P_LEAVEFAIL                   "leavefail"
 
-LETZTE AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Spieler, wenn er ausserhalb der Anlegezeiten einen
+   Transporter verlassen will. Ist die Propertie ein Array, so wird
+   das erste Element als Meldung an den Spieler, das zweite als
+   Meldung an die Mitspieler im Transporter geschickt. Ist der Eintrag
+   dagegen ein simpler String, so wird die Meldung nur an den Spieler
+   ausgegeben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_LEAVEFAIL, "Die Wildgaense fliegen viel zu hoch" );
+
+   SetProp(P_LEAVEFAIL, ({ "Die Wildgaense fliegen viel zu hoch",
+                           "versucht, vom Ruecken der Wildgans zu "
+                          +"klettern und besinnt sich dann doch" }) );
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEMSG, P_ENTERMSG, P_ENTERFAIL, transporter
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_LEAVEMSG b/doc/props/P_LEAVEMSG
index 592bbc4..a3a1baf 100644
--- a/doc/props/P_LEAVEMSG
+++ b/doc/props/P_LEAVEMSG
@@ -1,19 +1,38 @@
-NAME:
-    P_LEAVEMSG                    "leavemsg"                    
 
-DEFINIERT IN:
-    /sys/transport.h
+P_LEAVEMSG
+**********
 
-BESCHREIBUNG:
-     Array mit zwei Meldungen. Der erste Eintrag wird an den Transporter
-     ausgegeben, der zweite an den Raum in den der Spieler kommt.
 
-BEISPIEL:
-     SetProp(P_LEAVEMSG, ({ "klettert vom Ruecken der Wildgans",
-                            "kommt vom Ruecken einer Wildgans herunter" }) );
+NAME
+====
 
-SIEHE AUCH: 
-     P_ENTERMSG, P_LEAVEFAIL, P_ENTERFAIL, transporter
+   P_LEAVEMSG                    "leavemsg"
 
-LETZTE AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit zwei Meldungen. Der erste Eintrag wird an den Transporter
+   ausgegeben, der zweite an den Raum in den der Spieler kommt.
+
+
+BEISPIEL
+========
+
+   SetProp(P_LEAVEMSG, ({ "klettert vom Ruecken der Wildgans",
+                          "kommt vom Ruecken einer Wildgans herunter" }) );
+
+SIEHE AUCH:
+   P_ENTERMSG, P_LEAVEFAIL, P_ENTERFAIL, transporter
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_LEP b/doc/props/P_LEP
index 7628b1c..dbcea68 100644
--- a/doc/props/P_LEP
+++ b/doc/props/P_LEP
@@ -1,9 +1,22 @@
-NAME:
-    P_LEP                         "lep"                         
 
-DEFINIERT IN:
-    /sys/player.h
+P_LEP
+*****
 
-BESCHREIBUNG:
-     Levelpunkte eines Spielers
-     NICHT VON HAND SETZEN!!!
+
+NAME
+====
+
+   P_LEP                         "lep"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Levelpunkte eines Spielers
+   NICHT VON HAND SETZEN!!!
diff --git a/doc/props/P_LEVEL b/doc/props/P_LEVEL
index 40be5d0..a4b804c 100644
--- a/doc/props/P_LEVEL
+++ b/doc/props/P_LEVEL
@@ -1,33 +1,48 @@
-NAME:
-    P_LEVEL                       "level"                       
 
-DEFINIERT IN:
-    /sys/living/description.h
+P_LEVEL
+*******
 
-BESCHREIBUNG:
 
-     Spieler-Level (!= Magierlevel)
+NAME
+====
 
-     In Krankheits- (CL_DISEASE) und Giftobjekten (CL_POISON) drueckt 
-     P_LEVEL aus, wie schwer die Krankheit/das Gift ist. Je nachdem, wie 
-     hoch oder niedrig der Level gesetzt wird, muss z.B. ein Kleriker mehr 
-     oder weniger oft kurieren, um  eine (ggf. stufenweise) Heilung zu 
-     bewirken.
+   P_LEVEL                       "level"
 
-     In Fluchobjekten (CL_CURSE) gibt P_LEVEL ebenfalls die Schwere des
-     Fluches an, jedoch ist hier zu beachten, dass z.B. Kleriker aktuell
-     keine stufenweise Schwaechung bewirken koennen, sondern entweder den
-     Fluch entfernen koennen oder komplett scheitern. 
-     Der Fluchlevel ist hier grob als Chance des Scheiterns in einem 
-     Wertebereich von 1-100 zu sehen, was bedeutet, dass ein Fluchlevel 
-     von 100 als permanenter, nicht entfernbarer Fluch anzusehen ist.
 
-     Genaueres ist in der Klerusgilde nachzulesen oder beim GM Klerus zu
-     erfragen.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Properties:  P_GUILD_LEVEL
-     Allgemeines: /doc/wiz/gift, /doc/help/gift
-     Funktionen:  AddClass(L), is_class_member(L)
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Spieler-Level (!= Magierlevel)
+
+   In Krankheits- (CL_DISEASE) und Giftobjekten (CL_POISON) drueckt
+   P_LEVEL aus, wie schwer die Krankheit/das Gift ist. Je nachdem, wie
+   hoch oder niedrig der Level gesetzt wird, muss z.B. ein Kleriker mehr
+   oder weniger oft kurieren, um  eine (ggf. stufenweise) Heilung zu
+   bewirken.
+
+   In Fluchobjekten (CL_CURSE) gibt P_LEVEL ebenfalls die Schwere des
+   Fluches an, jedoch ist hier zu beachten, dass z.B. Kleriker aktuell
+   keine stufenweise Schwaechung bewirken koennen, sondern entweder den
+   Fluch entfernen koennen oder komplett scheitern.
+   Der Fluchlevel ist hier grob als Chance des Scheiterns in einem
+   Wertebereich von 1-100 zu sehen, was bedeutet, dass ein Fluchlevel
+   von 100 als permanenter, nicht entfernbarer Fluch anzusehen ist.
+
+   Genaueres ist in der Klerusgilde nachzulesen oder beim GM Klerus zu
+   erfragen.
+
+
+SIEHE AUCH
+==========
+
+   Properties:  P_GUILD_LEVEL
+   Allgemeines: /doc/wiz/gift, /doc/help/gift
+   Funktionen:  AddClass(L), is_class_member(L)
 
 Letzte Aenderung: 2015-Feb-02, Arathorn.
diff --git a/doc/props/P_LIFETIME b/doc/props/P_LIFETIME
index 250c287..4c76f14 100644
--- a/doc/props/P_LIFETIME
+++ b/doc/props/P_LIFETIME
@@ -1,30 +1,51 @@
-NAME:
-     P_LIFETIME                    "std_food_lifetime"
-
-DEFINIERT IN:
-     /sys/food.h
-
-BESCHREIBUNG:
-     Zeit in Sekunden, die die Speise haltbar ist.
-     Mit Setzen dieser Property wird der Wert fuer P_RESET_LIFETIME und
-     dort gespeichert.
-     Nach dieser Zeit wird diese Speise schlecht und je nach Konfiguration
-     der Speise eventuell zerstoert. Sichergestellt wird dies durch den
-     Aufruf von reset() nach dieser Anzahl Sekunden.
-     Moechte man eine Speise haben, die niemals verdirbt
-     (genehmigungspflichtig!), nutzt man die Property P_NO_BAD
-     
-BEMERKUNGEN:
-     Sobald der Countdown zum Schlechtwerden der Speise laeuft, also ein
-     Spieler damit in Beruehrung kam, zeigt SetProp auf diese Property keine
-     Wirkung mehr.
-
-DEFAULT:
-     Ohne Setzen von P_LIFETIME ,P_RESET_LIFETIME und P_NO_BAD verdirbt die
-     Speise nach einem Reset, also zwischen 30 und 60 Minuten
-
-SIEHE AUCH:
-     wiz/food, P_RESET_LIFETIME, P_NO_BAD
-
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+
+P_LIFETIME
+**********
+
+
+NAME
+====
+
+   P_LIFETIME                    "std_food_lifetime"
+
+
+DEFINIERT IN
+============
+
+   /sys/food.h
+
+
+BESCHREIBUNG
+============
+
+   Zeit in Sekunden, die die Speise haltbar ist.
+   Mit Setzen dieser Property wird der Wert fuer P_RESET_LIFETIME und
+   dort gespeichert.
+   Nach dieser Zeit wird diese Speise schlecht und je nach Konfiguration
+   der Speise eventuell zerstoert. Sichergestellt wird dies durch den
+   Aufruf von reset() nach dieser Anzahl Sekunden.
+   Moechte man eine Speise haben, die niemals verdirbt
+   (genehmigungspflichtig!), nutzt man die Property P_NO_BAD
+
+
+BEMERKUNGEN
+===========
+
+   Sobald der Countdown zum Schlechtwerden der Speise laeuft, also ein
+   Spieler damit in Beruehrung kam, zeigt SetProp auf diese Property keine
+   Wirkung mehr.
+
+
+DEFAULT
+=======
+
+   Ohne Setzen von P_LIFETIME ,P_RESET_LIFETIME und P_NO_BAD verdirbt die
+   Speise nach einem Reset, also zwischen 30 und 60 Minuten
+
+
+SIEHE AUCH
+==========
+
+   wiz/food, P_RESET_LIFETIME, P_NO_BAD
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_LIGHT b/doc/props/P_LIGHT
index 251e927..d0b55d8 100644
--- a/doc/props/P_LIGHT
+++ b/doc/props/P_LIGHT
@@ -1,62 +1,81 @@
-NAME:
-    P_LIGHT                       "light"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LIGHT
+*******
 
-BESCHREIBUNG:
-    Gibt den Lichtlevel eines Objektes an, d.h. wie hell das Objekt von sich
-    aus leuchtet. Moechte man den gesamten Lichtlevel haben der von einem
-    Objekt ausgeht, so sollte man P_TOTAL_LIGHT nehmen, das den Inhalt eines
-    Containers direkt mit verrechnet.
 
-    Bitte _nur_ ueber SetProp bzw. QueryProp zugreifen, da es fuer die
-    Berechnung wichtig ist, das in allen Containern P_LAST_CONTENT_CHANGE
-    gesetzt wird um ein neuberechnen des Lichtlevels auszuloesen!
+NAME
+====
 
-ANMERKUNG:
-    Um ein ungefaehres Gefuehl davon zu bekommen was ein Lichtlevel in
-    etwa bedeutet hier einige allgemeine Beispiele von Gegenstaenden.
-    Grundsaetzlich sollten Lichtlevel <0 und >2 nur in Ruecksprache mit dem
-    Balanceteam benutzt werden.
+   P_LIGHT                       "light"
 
-    Lichtlevel -1,  z.B. ein schwarzer Ring, von dem eine kleine dunkle Aura
-                    ausgeht, die den Spieler umgibt.
-    Lichtlevel  0,  der Gegenstand beeinflusst das Licht ueberhaupt nicht
-    Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in Haenden,
-                    dieses kann ein Leuchtpfirsich, eine Fackel oder ein
-                    Feuerschwert oder aehnliches sein.
-    Lichtlevel  2,  eine etwas groessere Lichtquelle, die aber immer noch
-                    nicht den Raum beleuchtet sondern lediglich dem Spieler
-                    einen Lichtschein gewaehrt mit dem er sehen kann.
-    Lichtlevel >2,  extrem helle Lichtquellen, die den gesamten Raum
-                    ausleuchten, in der Regel wohl eher magischer Natur.
-                    Solche Lichtquellen sollten sich mit der Zeit
-                    verbrauchen, dem Spieler Schaden zufuegen oder
-                    aehnliches, damit die Spieler nicht defaultmaessig mit
-                    einer solchen Lichtquelle durchs MG ziehn.
 
-    Daraus ergeben sich dann folgende Konsequenzen fuer Raeume:
-    Lichtlevel  >1: Der Raum ist sehr hell erleuchtet und kann von Spielern
-                    nicht oder nur sehr schwer abgedunkelt werden. Ein Wert
-                    von 2-3 kann interessant sein, wenn die NPCs im Raum
-                    ueber keine Nachtsicht verfuegen. Ueber ein Abdunkeln des
-                    Raumes kann der Spieler dann doch den Nachtkampf nutzen.
-    Lichtlevel   1: Der Raum ist erleuchtet und die Spieler koennen ohne
-                    weitere Lichtquellen sehen...
-    Lichtlevel   0: Ein dunkler Raum in dem man mit jeder Fackel sehen kann.
-    Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht
-                    um in diesem Raum etwas sehen zu koennen.
-    Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle um in
-                    diesem Raum noch etwas sehen zu koennen. Solche
-                    Lichtquellen sind nichts fuer Anfaenger oder mittlere
-                    Spieler da sie schwer zu beschaffen und in der Regel
-                    auch einige Handicaps haben.
-    Lichtlevel <-2: Der Raum ist wirklich absolut stockduster und
-                    Lichtquellen die solch einen Raum ausleuchten koennen,
-                    sind ausserordentlich selten und haben immer ihre
-                    Tuecken. Diese Lichtlevel sollten nur mit Vorsicht
-                    genossen werden.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Lichtlevel eines Objektes an, d.h. wie hell das Objekt von sich
+   aus leuchtet. Moechte man den gesamten Lichtlevel haben der von einem
+   Objekt ausgeht, so sollte man P_TOTAL_LIGHT nehmen, das den Inhalt eines
+   Containers direkt mit verrechnet.
+
+   Bitte _nur_ ueber SetProp bzw. QueryProp zugreifen, da es fuer die
+   Berechnung wichtig ist, das in allen Containern P_LAST_CONTENT_CHANGE
+   gesetzt wird um ein neuberechnen des Lichtlevels auszuloesen!
+
+
+ANMERKUNG
+=========
+
+   Um ein ungefaehres Gefuehl davon zu bekommen was ein Lichtlevel in
+   etwa bedeutet hier einige allgemeine Beispiele von Gegenstaenden.
+   Grundsaetzlich sollten Lichtlevel <0 und >2 nur in Ruecksprache mit dem
+   Balanceteam benutzt werden.
+
+   Lichtlevel -1,  z.B. ein schwarzer Ring, von dem eine kleine dunkle Aura
+                   ausgeht, die den Spieler umgibt.
+   Lichtlevel  0,  der Gegenstand beeinflusst das Licht ueberhaupt nicht
+   Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in Haenden,
+                   dieses kann ein Leuchtpfirsich, eine Fackel oder ein
+                   Feuerschwert oder aehnliches sein.
+   Lichtlevel  2,  eine etwas groessere Lichtquelle, die aber immer noch
+                   nicht den Raum beleuchtet sondern lediglich dem Spieler
+                   einen Lichtschein gewaehrt mit dem er sehen kann.
+   Lichtlevel >2,  extrem helle Lichtquellen, die den gesamten Raum
+                   ausleuchten, in der Regel wohl eher magischer Natur.
+                   Solche Lichtquellen sollten sich mit der Zeit
+                   verbrauchen, dem Spieler Schaden zufuegen oder
+                   aehnliches, damit die Spieler nicht defaultmaessig mit
+                   einer solchen Lichtquelle durchs MG ziehn.
+
+   Daraus ergeben sich dann folgende Konsequenzen fuer Raeume:
+   Lichtlevel  >1: Der Raum ist sehr hell erleuchtet und kann von Spielern
+                   nicht oder nur sehr schwer abgedunkelt werden. Ein Wert
+                   von 2-3 kann interessant sein, wenn die NPCs im Raum
+                   ueber keine Nachtsicht verfuegen. Ueber ein Abdunkeln des
+                   Raumes kann der Spieler dann doch den Nachtkampf nutzen.
+   Lichtlevel   1: Der Raum ist erleuchtet und die Spieler koennen ohne
+                   weitere Lichtquellen sehen...
+   Lichtlevel   0: Ein dunkler Raum in dem man mit jeder Fackel sehen kann.
+   Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht
+                   um in diesem Raum etwas sehen zu koennen.
+   Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle um in
+                   diesem Raum noch etwas sehen zu koennen. Solche
+                   Lichtquellen sind nichts fuer Anfaenger oder mittlere
+                   Spieler da sie schwer zu beschaffen und in der Regel
+                   auch einige Handicaps haben.
+   Lichtlevel <-2: Der Raum ist wirklich absolut stockduster und
+                   Lichtquellen die solch einen Raum ausleuchten koennen,
+                   sind ausserordentlich selten und haben immer ihre
+                   Tuecken. Diese Lichtlevel sollten nur mit Vorsicht
+                   genossen werden.
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/props/P_LIGHTDESC b/doc/props/P_LIGHTDESC
index 5898db8..e8c52d1 100644
--- a/doc/props/P_LIGHTDESC
+++ b/doc/props/P_LIGHTDESC
@@ -1,34 +1,56 @@
-NAME:
-    P_LIGHTDESC                   "lightdesc"                   
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LIGHTDESC
+***********
 
-BESCHREIBUNG:
-    String oder Array von Strings mit Adjektiven, die das Leuchten der 
-    Lichtquelle beschreiben (z.B. leuchtend, brennend, gluehend).
-    Standardmaessig ist die Property auf "brennend" gesetzt.
 
-    Wenn ein Array angegeben wird, werden die Beschreibungen passend auf
-    die Benndauer aufgeteilt und das zur aktuell noch vorhandenen Rest-
-    Brenndauer passende Adjektiv ausgegeben. Das Array wird dabei rueck-
-    aerts durchlaufen, d.h. fuer eine frisch entzuendete Lichtquelle wird
-    der letzte Eintrag des Arrays verwendet (s. Beispiele).
+NAME
+====
 
-BEISPIELE:
-    Eine einfache Oellampe:
+   P_LIGHTDESC                   "lightdesc"
 
-    SetProp(P_LIGHTDESC, "angezuendet");
 
-    Eine Fackel mit mehreren Brennstadien (aus /items/fackel.c):
+DEFINIERT IN
+============
 
-    SetProp(P_LIGHTDESC, ({"glimmend","flackernd","leicht flackernd",
-                         "brennend","hell lodernd","frisch angezuendet"}));
+   /sys/properties.h
 
-SIEHE AUCH:
-    Basisklassen: /std/lightsource.c
-    Properties:   P_FUEL, P_DO_DESTRUCT, P_LIGHT
-    Methoden:     AddFuel(L)
 
-LETZTE AENDERUNG:
-    22. Dez. 2015, Arathorn
+BESCHREIBUNG
+============
+
+   String oder Array von Strings mit Adjektiven, die das Leuchten der
+   Lichtquelle beschreiben (z.B. leuchtend, brennend, gluehend).
+   Standardmaessig ist die Property auf "brennend" gesetzt.
+
+   Wenn ein Array angegeben wird, werden die Beschreibungen passend auf
+   die Benndauer aufgeteilt und das zur aktuell noch vorhandenen Rest-
+   Brenndauer passende Adjektiv ausgegeben. Das Array wird dabei rueck-
+   aerts durchlaufen, d.h. fuer eine frisch entzuendete Lichtquelle wird
+   der letzte Eintrag des Arrays verwendet (s. Beispiele).
+
+
+BEISPIELE
+=========
+
+   Eine einfache Oellampe:
+
+   SetProp(P_LIGHTDESC, "angezuendet");
+
+   Eine Fackel mit mehreren Brennstadien (aus /items/fackel.c):
+
+   SetProp(P_LIGHTDESC, ({"glimmend","flackernd","leicht flackernd",
+                        "brennend","hell lodernd","frisch angezuendet"}));
+
+
+SIEHE AUCH
+==========
+
+   Basisklassen: /std/lightsource.c
+   Properties:   P_FUEL, P_DO_DESTRUCT, P_LIGHT
+   Methoden:     AddFuel(L)
+
+
+LETZTE AENDERUNG
+================
+
+   22. Dez. 2015, Arathorn
diff --git a/doc/props/P_LIGHTED b/doc/props/P_LIGHTED
index 9029b02..31d7709 100644
--- a/doc/props/P_LIGHTED
+++ b/doc/props/P_LIGHTED
@@ -1,8 +1,21 @@
-NAME:
-    P_LIGHTED                     "lighted"                     
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LIGHTED
+*********
 
-BESCHREIBUNG:
-     Flag, ob die Lichtquelle in Betrieb ist.
+
+NAME
+====
+
+   P_LIGHTED                     "lighted"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Flag, ob die Lichtquelle in Betrieb ist.
diff --git a/doc/props/P_LIGHT_ABSORPTION b/doc/props/P_LIGHT_ABSORPTION
index 213120f..4443a98 100644
--- a/doc/props/P_LIGHT_ABSORPTION
+++ b/doc/props/P_LIGHT_ABSORPTION
@@ -1,15 +1,31 @@
-NAME:
-    P_LIGHT_ABSORPTION                  "light_absorption"
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_LIGHT_ABSORPTION
+******************
 
-BESCHREIBUNG:
-    In Raeumen verteilt sich aufgrund ihrer Groesse das Licht und gerade in
-    groesseren Raeumen kann eine kleine Fackel unter Umstaenden nicht mehr
-    ausreichen den gesamten Raum auszuleuchten. In diesem Fall kann man
-    ueber diese Property das Verhalten des Lichts steuern.
-    Ein "normaler" durchschnittlicher Raum hat hier den Defaultwert 1.
 
-SIEHE AUCH:
-    P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
+NAME
+====
+
+   P_LIGHT_ABSORPTION                  "light_absorption"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   In Raeumen verteilt sich aufgrund ihrer Groesse das Licht und gerade in
+   groesseren Raeumen kann eine kleine Fackel unter Umstaenden nicht mehr
+   ausreichen den gesamten Raum auszuleuchten. In diesem Fall kann man
+   ueber diese Property das Verhalten des Lichts steuern.
+   Ein "normaler" durchschnittlicher Raum hat hier den Defaultwert 1.
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/props/P_LIGHT_MODIFIER b/doc/props/P_LIGHT_MODIFIER
index 2409c79..c7741ee 100644
--- a/doc/props/P_LIGHT_MODIFIER
+++ b/doc/props/P_LIGHT_MODIFIER
@@ -1,49 +1,75 @@
-NAME:
-    P_LIGHT_MODIFIER                     "light_modifier"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LIGHT_MODIFIER
+****************
 
-BESCHREIBUNG:
-    Veraendert das Lichtlevel das von einem Lebewesen wahrgenommen wird.
-    Der Wert dieser Property wird additiv in P_PLAYER_LIGHT beruecksichtigt.
-    Es ist hiermit z.B. moeglich eine Sonnenbrille zu programmieren, diese
-    veraendert ja nicht das tatsaechliche Lichtlevel, sondern verdunkelt nur
-    die Sicht.
 
-ANMERKUNG:
-    Damit NPCs in der Lage sind solche Gegenstaende richtig einzuschaetzen,
-    sollte diese Property in jedem Gegenstand der einen Light-Modifier setzt,
-    auch gesetzt sein. Das veraendern dieser Property in Spielern durch NPCs
-    oder Gegenstaende ist selbstverstaendlich genehmigungspflichtig.
+NAME
+====
 
-BEISPIELE:
-       // Ein NPC der auch in relativ dunklen Raeumen mit Lichtlevel -2
-       // noch sehen kann...
-       create_default_npc(10);
-       SetProp(P_LIGHT_MODIFIER, 3);
+   P_LIGHT_MODIFIER                     "light_modifier"
 
-       // Eine Sonnenbrille, die das Lichtlevel um eins senkt.
 
-       create()
-       {
-          :
-          SetProp(P_ARMOUR_TYPE, AT_GLASSES);
-          SetProp(P_LIGHT_MODIFIER, -1);
-          :
-       }
+DEFINIERT IN
+============
 
-       // Achtung: Falls pl Query- oder Set-Methoden auf P_LIGHT_MODIFIER hat,
-       // wird diese Methode hier furchtbar schief gehen und im besten Fall
-       // nichts veraendern. In realen Objekten empfiehlt sich zumindest eine
-       // Pruefung im Vorfeld, ob eine Query-/Set-Methode gesetzt ist.
-       protected void InformWear(object pl, int silent, int all) {
-           pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) -1);
-       }
+   /sys/properties.h
 
-       protected void InformUnwear(object pl, int silent, int all) {
-           pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) +1);
-       }
 
-SIEHE AUCH:
-    P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
+BESCHREIBUNG
+============
+
+   Veraendert das Lichtlevel das von einem Lebewesen wahrgenommen wird.
+   Der Wert dieser Property wird additiv in P_PLAYER_LIGHT beruecksichtigt.
+   Es ist hiermit z.B. moeglich eine Sonnenbrille zu programmieren, diese
+   veraendert ja nicht das tatsaechliche Lichtlevel, sondern verdunkelt nur
+   die Sicht.
+
+
+ANMERKUNG
+=========
+
+   Damit NPCs in der Lage sind solche Gegenstaende richtig einzuschaetzen,
+   sollte diese Property in jedem Gegenstand der einen Light-Modifier setzt,
+   auch gesetzt sein. Das veraendern dieser Property in Spielern durch NPCs
+   oder Gegenstaende ist selbstverstaendlich genehmigungspflichtig.
+
+
+BEISPIELE
+=========
+
+   // Ein NPC der auch in relativ dunklen Raeumen mit Lichtlevel -2
+   // noch sehen kann...
+   create_default_npc(10);
+   SetProp(P_LIGHT_MODIFIER, 3);
+
+   // Eine Sonnenbrille, die das Lichtlevel um eins senkt.
+
+   create()
+   {
+
+      :
+
+      SetProp(P_ARMOUR_TYPE, AT_GLASSES);
+      SetProp(P_LIGHT_MODIFIER, -1);
+
+      :
+
+   }
+
+   // Achtung: Falls pl Query- oder Set-Methoden auf P_LIGHT_MODIFIER hat,
+   // wird diese Methode hier furchtbar schief gehen und im besten Fall
+   // nichts veraendern. In realen Objekten empfiehlt sich zumindest eine
+   // Pruefung im Vorfeld, ob eine Query-/Set-Methode gesetzt ist.
+   protected void InformWear(object pl, int silent, int all) {
+       pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) -1);
+   }
+
+   protected void InformUnwear(object pl, int silent, int all) {
+       pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) +1);
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/props/P_LIGHT_TRANSPARENCY b/doc/props/P_LIGHT_TRANSPARENCY
index 4af4415..42d0d13 100644
--- a/doc/props/P_LIGHT_TRANSPARENCY
+++ b/doc/props/P_LIGHT_TRANSPARENCY
@@ -1,14 +1,30 @@
-NAME:
-    P_LIGHT_TRANSPARENCY             "light_transparency"
 
-DEFINIERT IN:
-    /sys/container.h
+P_LIGHT_TRANSPARENCY
+********************
 
-BESCHREIBUNG:
-    Wieviel Licht schluckt ein Container, d.h. wieviel Licht dringt aus
-    einem Behaelter noch nach draussen. Bei Containern die _nicht_
-    transparent sind, liefert eine _query_method hier immer 999 zurueck.
-    Defaultmaessig steht diese Property auf 2.
 
-SIEHE AUCH:
-    P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
+NAME
+====
+
+   P_LIGHT_TRANSPARENCY             "light_transparency"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Wieviel Licht schluckt ein Container, d.h. wieviel Licht dringt aus
+   einem Behaelter noch nach draussen. Bei Containern die _nicht_
+   transparent sind, liefert eine _query_method hier immer 999 zurueck.
+   Defaultmaessig steht diese Property auf 2.
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/props/P_LIGHT_TYPE b/doc/props/P_LIGHT_TYPE
index 07322e0..47abbf4 100644
--- a/doc/props/P_LIGHT_TYPE
+++ b/doc/props/P_LIGHT_TYPE
@@ -1,75 +1,106 @@
-NAME:
-    P_LIGHT_TYPE                       "light_type"
 
-DEFINIERT IN:
-    /sys/thing/description.h
-
-BESCHREIBUNG:
-    Gibt an, was fuer ein Licht in einem Objekt vorherrscht. 
-    
-    Es sind verschiedene 'atomare' Lichttypen, vordefiniert:
-    LT_MISC         Unbestimmt, keine Angaben.
-
-    LT_SUN          Sonnenlicht.
-    LT_MOON         Mondlicht 
-    LT_STARS        Sternenlicht.
-    
-    LT_DIFFUSE      Indirektes Tageslicht. (z.B. im Wald)
-
-    LT_CANDLE       Kerzenlicht.
-    LT_TORCH        Fackelschein.
-    LT_OPEN_FIRE    Sonstiges offenes Feuer. (Lagerfeuer etc.)
-    
-    LT_MAGIC        Irgendeine magische Lichtquelle.
-
-    LT_GLOWING      Eine selbstleuchtende Lichtquelle.
-
-    LT_DARKNESS     Kein wirkliches Licht, aber auch Dunkelheit soll
-                    explizit gesetzt werden koennen.
-
-    In einem Objekt koennen mehrere Lichttypen gesetzt werden. Dies
-    geschieht durch logische Oder-Verknuepfungen, siehe man operators.
-
-    Wenn in einem Raum mehr als ein Lichttyp gesetzt ist, bedeutet das, 
-    normalerweise, dass mehrere Lichtquellen verschiedenen Typs im Raum 
-    sind.
-
-    Es gibt zudem noch Lichttypen, die zusammengesetzt sind:
-
-    LT_DAYLIGHT    Tageslicht (Sonne/Diffuse)
-    LT_NATURAL     Natuerliches Licht (Daylight/Sterne/Mond)
-    LT_ARTIFICIAL  Kuenstliches Licht (Magie/Feuer/Gluehen)
-    LT_FIRE        Feuer (Kerzen/Fackeln/offenes Feuer)
-
-BEISPIELE:
-    Ein Objekt soll ein geheimnisvolles Gluehen von sich geben:
-    
-    objekt->SetProp( P_LIGHT_TYPE, LT_GLOWING )
-
-    Soll ein Raum beschrieben werden, der durch Sternenlicht erhellt ist,
-    in dem aber zusaetzlich noch ein Lagerfeuer brennt, sieht die Syntax
-    folgendermassen aus:
-    
-    raum->SetProp( P_LIGHT_TYPE, LT_STARS|LT_OPEN_FIRE );
-
-    Einer brennenden Hose kann der Lichttyp fuer offenes Feuer mitgegeben 
-    werden. Es muss jedoch nicht zwingend der Lichttyp fuer magische
-    Lichtquellen benutzt werden. Es ist klar, dass es irgendwas mit Magie
-    zu tun hat, wenn brennende Spieler durch die Gegend laufen, ohne zu 
-    schreien. P_LIGHT_TYPE sollte jedoch das fassbare Licht beschreiben.
-    LT_MAGIC ist also eher eine Notloesung fuer Licht, dessen Ursache man
-    nicht erklaeren kann.
+P_LIGHT_TYPE
+************
 
 
-ANMERKUNG:
-    P_LIGHT_TYPE dient ausschliesslich der Beschreibung des Lichtes, das 
-    vorherrscht. Es ist nicht verbunden mit dem Lichtsystem, und soll es
-    auch nicht werden.
+NAME
+====
 
-    Die Empfindlichkeit der Dunkelelfen gegen Sonnenlicht wird ueber diese
-    Property gesteuert. Soll ein Raum mit (P_INDOORS==0) so dunkel sein, dass
-    sie nicht in Gefahr sind, sollten nicht LT_MISC oder LT_SUN gesetzt
-    sein.
+   P_LIGHT_TYPE                       "light_type"
 
-SIEHE AUCH:
-    CheckLightType, /std/thing/description.h, operators
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, was fuer ein Licht in einem Objekt vorherrscht.
+
+
+
+   Es sind verschiedene 'atomare' Lichttypen, vordefiniert:
+   LT_MISC         Unbestimmt, keine Angaben.
+
+   LT_SUN          Sonnenlicht.
+   LT_MOON         Mondlicht
+   LT_STARS        Sternenlicht.
+
+
+
+   LT_DIFFUSE      Indirektes Tageslicht. (z.B. im Wald)
+
+   LT_CANDLE       Kerzenlicht.
+   LT_TORCH        Fackelschein.
+   LT_OPEN_FIRE    Sonstiges offenes Feuer. (Lagerfeuer etc.)
+
+
+
+   LT_MAGIC        Irgendeine magische Lichtquelle.
+
+   LT_GLOWING      Eine selbstleuchtende Lichtquelle.
+
+   LT_DARKNESS     Kein wirkliches Licht, aber auch Dunkelheit soll
+                   explizit gesetzt werden koennen.
+
+   In einem Objekt koennen mehrere Lichttypen gesetzt werden. Dies
+   geschieht durch logische Oder-Verknuepfungen, siehe man operators.
+
+   Wenn in einem Raum mehr als ein Lichttyp gesetzt ist, bedeutet das,
+   normalerweise, dass mehrere Lichtquellen verschiedenen Typs im Raum
+   sind.
+
+   Es gibt zudem noch Lichttypen, die zusammengesetzt sind:
+
+   LT_DAYLIGHT    Tageslicht (Sonne/Diffuse)
+   LT_NATURAL     Natuerliches Licht (Daylight/Sterne/Mond)
+   LT_ARTIFICIAL  Kuenstliches Licht (Magie/Feuer/Gluehen)
+   LT_FIRE        Feuer (Kerzen/Fackeln/offenes Feuer)
+
+
+BEISPIELE
+=========
+
+   Ein Objekt soll ein geheimnisvolles Gluehen von sich geben:
+
+
+
+   objekt->SetProp( P_LIGHT_TYPE, LT_GLOWING )
+
+   Soll ein Raum beschrieben werden, der durch Sternenlicht erhellt ist,
+   in dem aber zusaetzlich noch ein Lagerfeuer brennt, sieht die Syntax
+   folgendermassen aus:
+
+
+
+   raum->SetProp( P_LIGHT_TYPE, LT_STARS|LT_OPEN_FIRE );
+
+   Einer brennenden Hose kann der Lichttyp fuer offenes Feuer mitgegeben
+   werden. Es muss jedoch nicht zwingend der Lichttyp fuer magische
+   Lichtquellen benutzt werden. Es ist klar, dass es irgendwas mit Magie
+   zu tun hat, wenn brennende Spieler durch die Gegend laufen, ohne zu
+   schreien. P_LIGHT_TYPE sollte jedoch das fassbare Licht beschreiben.
+   LT_MAGIC ist also eher eine Notloesung fuer Licht, dessen Ursache man
+   nicht erklaeren kann.
+
+
+ANMERKUNG
+=========
+
+   P_LIGHT_TYPE dient ausschliesslich der Beschreibung des Lichtes, das
+   vorherrscht. Es ist nicht verbunden mit dem Lichtsystem, und soll es
+   auch nicht werden.
+
+   Die Empfindlichkeit der Dunkelelfen gegen Sonnenlicht wird ueber diese
+   Property gesteuert. Soll ein Raum mit (P_INDOORS==0) so dunkel sein, dass
+   sie nicht in Gefahr sind, sollten nicht LT_MISC oder LT_SUN gesetzt
+   sein.
+
+
+SIEHE AUCH
+==========
+
+   CheckLightType, /std/thing/description.h, operators
diff --git a/doc/props/P_LIQUID b/doc/props/P_LIQUID
index 1631a8e..55672bb 100644
--- a/doc/props/P_LIQUID
+++ b/doc/props/P_LIQUID
@@ -1,8 +1,21 @@
-NAME:
-    P_LIQUID                      "w_max_wasserfuellmenge"      
 
-DEFINIERT IN:
-    /sys/fishing.h
+P_LIQUID
+********
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_LIQUID                      "w_max_wasserfuellmenge"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_LOCALCMDS b/doc/props/P_LOCALCMDS
index 5a7b515..02a3c2a 100644
--- a/doc/props/P_LOCALCMDS
+++ b/doc/props/P_LOCALCMDS
@@ -1,12 +1,25 @@
-NAME:
-    P_LOCALCMDS                   "localcmds"                   
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LOCALCMDS
+***********
 
-BESCHREIBUNG:
-    Ein Array von Arrays aller Befehle die im Spieler selbst definiert sind.
-    ({ ({ "befehl", "funktion", flag, wizlevel }) })
-    Wenn flag gesetzt ist werden nur die ersten Zeichen die auch in Befehl
-    angegeben sind mit dem Verb ueberprueft. Siehe auch
-    add_action("funktion", "befehl", 1) und AddCmd("befehl", "funktion", 1).
+
+NAME
+====
+
+   P_LOCALCMDS                   "localcmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array von Arrays aller Befehle die im Spieler selbst definiert sind.
+   ({ ({ "befehl", "funktion", flag, wizlevel }) })
+   Wenn flag gesetzt ist werden nur die ersten Zeichen die auch in Befehl
+   angegeben sind mit dem Verb ueberprueft. Siehe auch
+   add_action("funktion", "befehl", 1) und AddCmd("befehl", "funktion", 1).
diff --git a/doc/props/P_LOCATION b/doc/props/P_LOCATION
index 97344d8..cf2ed6c 100644
--- a/doc/props/P_LOCATION
+++ b/doc/props/P_LOCATION
@@ -1,19 +1,32 @@
-NAME:
-    P_LOCATION                   "location"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_LOCATION
+**********
 
-BESCHREIBUNG:
-    Hier kann der Spieler mit dem Befehl "ort" den Ort setzen,
-    von dem er kommt bzw. zu kommen glaubt ;)
-    Um wieder den automatisch ermittelten Ort anzuzeigen, ist
-    P_LOCATION auf 0 zu setzen.
-    
-SIEHE AUCH:
-    ort
 
-----------------------------------------------------------------------------
+NAME
+====
+
+   P_LOCATION                   "location"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Hier kann der Spieler mit dem Befehl "ort" den Ort setzen,
+   von dem er kommt bzw. zu kommen glaubt ;)
+   Um wieder den automatisch ermittelten Ort anzuzeigen, ist
+   P_LOCATION auf 0 zu setzen.
+
+
+SIEHE AUCH
+==========
+
+   ort
+
 Last modified: Sat Jul 01 23:16:00 2000 by Mupfel
-    
-    
diff --git a/doc/props/P_LOG_INFO b/doc/props/P_LOG_INFO
index b6bd8dc..0ed186d 100644
--- a/doc/props/P_LOG_INFO
+++ b/doc/props/P_LOG_INFO
@@ -1,32 +1,55 @@
-NAME:
-    P_LOG_INFO                    "log_info"                    
 
-DEFINIERT IN:
-    /sys/properties.h
+P_LOG_INFO
+**********
 
-BESCHREIBUNG:
-     Wenn diese Property gesetzt ist wird jede Frage, die ein
-     Monster nicht beantworten kann, im Report-File des
-     zustaendigen Magiers geloggt.
 
-     Es ist jedoch auch moeglich, direkt einen Filenamen anzugeben.
-     Bei diesen wird dann jedoch automatisch ein /log/ vorne angehaengt.
+NAME
+====
 
-BEISPIELE:
-     SetProp(P_LOG_INFO,1);           // Alle fehlenden Infos dieses
-                                         Monsters werden in das Report-
-                                         File unter /log/report/ gelogt.
+   P_LOG_INFO                    "log_info"
 
-     SetProp(P_LOG_INFO,"tilly/opa"); // Alle fehlenden Infos dieses
-                                         Monsters werden in das File
-                                         monster unter /log/tilly/ ge-
-                                         logt.
-BEMERKUNGEN:
-     Bei nachtraeglich angeschlossenen Monstern empfiehlt sich Variante 
-     2 der Beispiele. Ein muehsames Suchen (und Loeschen) der fehlenden 
-     Infos des Monsters im Report-File eruebrigt sich dann naemlich.
 
-SIEHE AUCH:
-     P_LOG_FILE, write_file(), log_file(), AddInfo
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist wird jede Frage, die ein
+   Monster nicht beantworten kann, im Report-File des
+   zustaendigen Magiers geloggt.
+
+   Es ist jedoch auch moeglich, direkt einen Filenamen anzugeben.
+   Bei diesen wird dann jedoch automatisch ein /log/ vorne angehaengt.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_LOG_INFO,1);           // Alle fehlenden Infos dieses
+                                       Monsters werden in das Report-
+                                       File unter /log/report/ gelogt.
+
+   SetProp(P_LOG_INFO,"tilly/opa"); // Alle fehlenden Infos dieses
+                                       Monsters werden in das File
+                                       monster unter /log/tilly/ ge-
+                                       logt.
+
+
+BEMERKUNGEN
+===========
+
+   Bei nachtraeglich angeschlossenen Monstern empfiehlt sich Variante
+   2 der Beispiele. Ein muehsames Suchen (und Loeschen) der fehlenden
+   Infos des Monsters im Report-File eruebrigt sich dann naemlich.
+
+
+SIEHE AUCH
+==========
+
+   P_LOG_FILE, write_file(), log_file(), AddInfo
 
 Letzte Aenderung: 13.09.04 Tilly@MorgenGrauen
diff --git a/doc/props/P_LONG b/doc/props/P_LONG
index 04a3659..bad7968 100644
--- a/doc/props/P_LONG
+++ b/doc/props/P_LONG
@@ -1,29 +1,48 @@
+
 P_LONG
-NAME:
-     P_LONG					"long"
+******
 
-DEFINIERT IN:
-     <thing/description.h>
 
-BESCHREIBUNG:
-     Die Langbeschreibung des Objektes als String oder Closure (diese muss
-     einen String zurueckgeben). Die Langbeschreibung wird beim Untersuchen
-     des Objektes ausgegeben. Sie sollte umgebrochen sein.
+NAME
+====
 
-     Diese Property bestimmt die Ansicht des Objektes von aussen. Fuer die
-     Innen(lang)ansicht von Raeumen muss man P_INT_LONG benutzen.
+   P_LONG                                     "long"
 
-BEMERKUNGEN:
-     - long() ("untersuche") filtert P_LONG durch process_string()
-       -> daher sind Closures moeglich
 
-BEISPIELE:
+DEFINIERT IN
+============
 
-     SetProp(P_LONG, "Diese Axt ist eine furchtbare Waffe!\n");
+   <thing/description.h>
 
-SIEHE AUCH:
-     Aehnliches:	P_SHORT, long()
-     Sonstiges:		P_INT_LONG, process_string(), break_string()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Die Langbeschreibung des Objektes als String oder Closure (diese muss
+   einen String zurueckgeben). Die Langbeschreibung wird beim Untersuchen
+   des Objektes ausgegeben. Sie sollte umgebrochen sein.
+
+   Diese Property bestimmt die Ansicht des Objektes von aussen. Fuer die
+   Innen(lang)ansicht von Raeumen muss man P_INT_LONG benutzen.
+
+
+BEMERKUNGEN
+===========
+
+   - long() ("untersuche") filtert P_LONG durch process_string()
+     -> daher sind Closures moeglich
+
+
+BEISPIELE
+=========
+
+   SetProp(P_LONG, "Diese Axt ist eine furchtbare Waffe!\n");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_SHORT, long()
+   Sonstiges:         P_INT_LONG, process_string(), break_string()
+
 Last modified: Sun May 19 20:10:18 1996 by Wargon
diff --git a/doc/props/P_LONG_EMPTY b/doc/props/P_LONG_EMPTY
index 1a9cce2..cac74e0 100644
--- a/doc/props/P_LONG_EMPTY
+++ b/doc/props/P_LONG_EMPTY
@@ -1,8 +1,21 @@
-NAME:
-    P_LONG_EMPTY                  "w_longdesc_empty"            
 
-DEFINIERT IN:
-    /sys/fishing.h
+P_LONG_EMPTY
+************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_LONG_EMPTY                  "w_longdesc_empty"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_LONG_FULL b/doc/props/P_LONG_FULL
index 3b997f6..7de6081 100644
--- a/doc/props/P_LONG_FULL
+++ b/doc/props/P_LONG_FULL
@@ -1,8 +1,21 @@
-NAME:
-    P_LONG_FULL                   "w_longdesc_full"             
 
-DEFINIERT IN:
-    /sys/fishing.h
+P_LONG_FULL
+***********
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_LONG_FULL                   "w_longdesc_full"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_MAGIC b/doc/props/P_MAGIC
index b3a0bb7..8994533 100644
--- a/doc/props/P_MAGIC
+++ b/doc/props/P_MAGIC
@@ -1,8 +1,21 @@
-NAME:
-    P_MAGIC                       "magic"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_MAGIC
+*******
 
-BESCHREIBUNG:
-     Dieses Objekt ist magisch.
+
+NAME
+====
+
+   P_MAGIC                       "magic"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Dieses Objekt ist magisch.
diff --git a/doc/props/P_MAGIC_RESISTANCE_OFFSET b/doc/props/P_MAGIC_RESISTANCE_OFFSET
index 47ae281..8d270e3 100644
--- a/doc/props/P_MAGIC_RESISTANCE_OFFSET
+++ b/doc/props/P_MAGIC_RESISTANCE_OFFSET
@@ -1,33 +1,52 @@
-NAME:
-     P_MAGIC_RESISTANCE_OFFSET                     "mag_res_offset"                     
 
-DEFINIERT IN:
-     /sys/new_skills.h
+P_MAGIC_RESISTANCE_OFFSET
+*************************
 
-BESCHREIBUNG:
-     Mapping mit ganzzahligen Prozentwerten in 0.01%-Schritten
-     (0-10000) zur Resistenz/Empfindlichkeit gegen bestimmte
-     Magieklassen.
 
-     Die Property wird in der Methode SpellDefend() ausgewertet und
-     fuer einen auf den NPC/Spieler gesprochenen Spell werden die
-     Werte fuer all dessen Magieklassen aufaddiert. Daher sind auch
-     negative Werte fuer einzelne Magieklassen sinnvoll.
+NAME
+====
 
-     P_MAGIC_RESISTANCE_OFFSET und SpellDefend werden von den Spellbooks
-     ausgewertet. Der Einfluss ist daher abhaengig vom Spellbook.
+   P_MAGIC_RESISTANCE_OFFSET                     "mag_res_offset"
 
-BEISPIELE:
-     // Goblins
-     SetProp(P_MAGIC_RESISTANCE_OFFSET,
-               ([MT_ANGRIFF:600,         // 6% Resistenz gegen Angriff
-	         MT_ILLUSION:500,        // 6% Resistenz gegen Illusionen
-                 MT_VERWANDLUNG:-300,    // 3% Empfindlichkeit
-		 MT_HELLSICHT:-750,      // 7.5% Empfindlichkeit
-		 MT_BEHERRSCHUNG:250])); // 2.5% Resistenz
 
-SIEHE AUCH:
-     Verwandt:     SpellDefend
-     Aehnlich:     P_NOMAGIC
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit ganzzahligen Prozentwerten in 0.01%-Schritten
+   (0-10000) zur Resistenz/Empfindlichkeit gegen bestimmte
+   Magieklassen.
+
+   Die Property wird in der Methode SpellDefend() ausgewertet und
+   fuer einen auf den NPC/Spieler gesprochenen Spell werden die
+   Werte fuer all dessen Magieklassen aufaddiert. Daher sind auch
+   negative Werte fuer einzelne Magieklassen sinnvoll.
+
+   P_MAGIC_RESISTANCE_OFFSET und SpellDefend werden von den Spellbooks
+   ausgewertet. Der Einfluss ist daher abhaengig vom Spellbook.
+
+
+BEISPIELE
+=========
+
+   // Goblins
+   SetProp(P_MAGIC_RESISTANCE_OFFSET,
+             ([MT_ANGRIFF:600,         // 6% Resistenz gegen Angriff
+               MT_ILLUSION:500,        // 6% Resistenz gegen Illusionen
+               MT_VERWANDLUNG:-300,    // 3% Empfindlichkeit
+               MT_HELLSICHT:-750,      // 7.5% Empfindlichkeit
+               MT_BEHERRSCHUNG:250])); // 2.5% Resistenz
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:     SpellDefend
+   Aehnlich:     P_NOMAGIC
 
 29.Dez 2007 Gloinson
diff --git a/doc/props/P_MAILADDR b/doc/props/P_MAILADDR
index e1b849d..32556a7 100644
--- a/doc/props/P_MAILADDR
+++ b/doc/props/P_MAILADDR
@@ -1,8 +1,21 @@
-NAME:
-    P_MAILADDR                    "mailaddr"                    
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_MAILADDR
+**********
 
-BESCHREIBUNG:
-     EMailadresse des Spielers.
+
+NAME
+====
+
+   P_MAILADDR                    "mailaddr"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   EMailadresse des Spielers.
diff --git a/doc/props/P_MAP_RESTRICTIONS b/doc/props/P_MAP_RESTRICTIONS
index fd422c0..ee9e620 100644
--- a/doc/props/P_MAP_RESTRICTIONS
+++ b/doc/props/P_MAP_RESTRICTIONS
@@ -1,39 +1,56 @@
-NAME:
-    P_MAP_RESTRICTIONS                      "lib_p_map_restrictions"
 
-DEFINIERT IN:
-    /sys/rooms.h
+P_MAP_RESTRICTIONS
+******************
 
-BESCHREIBUNG:
-     Mit dieser Property laesst sich beeinflussen, welche Informationen ueber
-     den Raum das Morgengrauen dem Client zukommen laesst (zur Zeit nur via
-     GMCP, aber es mag irgendwann auch andere Wege geben).
-     Beispielsweise sollen vielleicht in einem Labyrinth keine eindeutigen
-     Raum-IDs uebermittelt werden.
 
-     Als Werte duerfen alle MR_-Konstanten aus <rooms.h> verwendet werden.
-     Diese duerfen auch ver-ODER-t werden, wenn mehr als eine davon gelten
-     soll.
+NAME
+====
 
-     Moegliche Werte:
-       MR_NOUID - verhindert, dass die eindeutige Raum-ID uebertragen wird.
-       MR_NOINFO - verhindert, dass ueberhaupt irgendetwas an den Client
-                   uebermittelt wird. Damit kriegt er ggf. auch nicht mit,
-                   dass er Raum gewechselt wurde. Ist fuer Sequenzraeume
-                   gedacht. Bitte SEHR sparsam einsetzen.
+   P_MAP_RESTRICTIONS                      "lib_p_map_restrictions"
 
-     Die Verwendung dieser Property sollte der Ausnahmefall sein!
 
-BEISPIEL:
-     (in einem Raum)
-     SetProp(P_MAP_RESTRICTIONS, MR_NOUID);
+DEFINIERT IN
+============
 
-     Nun bekommt der Client zwar die Kurzbeschreibung des Raums, die Region
-     und die sichtbaren Ausgaenge, aber keine UID mehr uebermittelt.
+   /sys/rooms.h
 
-SIEHE AUCH:
-     gmcp
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Mit dieser Property laesst sich beeinflussen, welche Informationen ueber
+   den Raum das Morgengrauen dem Client zukommen laesst (zur Zeit nur via
+   GMCP, aber es mag irgendwann auch andere Wege geben).
+   Beispielsweise sollen vielleicht in einem Labyrinth keine eindeutigen
+   Raum-IDs uebermittelt werden.
+
+   Als Werte duerfen alle MR_-Konstanten aus <rooms.h> verwendet werden.
+   Diese duerfen auch ver-ODER-t werden, wenn mehr als eine davon gelten
+   soll.
+
+   Moegliche Werte:
+     MR_NOUID - verhindert, dass die eindeutige Raum-ID uebertragen wird.
+     MR_NOINFO - verhindert, dass ueberhaupt irgendetwas an den Client
+                 uebermittelt wird. Damit kriegt er ggf. auch nicht mit,
+                 dass er Raum gewechselt wurde. Ist fuer Sequenzraeume
+                 gedacht. Bitte SEHR sparsam einsetzen.
+
+   Die Verwendung dieser Property sollte der Ausnahmefall sein!
+
+
+BEISPIEL
+========
+
+   (in einem Raum)
+   SetProp(P_MAP_RESTRICTIONS, MR_NOUID);
+
+   Nun bekommt der Client zwar die Kurzbeschreibung des Raums, die Region
+   und die sichtbaren Ausgaenge, aber keine UID mehr uebermittelt.
+
+
+SIEHE AUCH
+==========
+
+   gmcp
+
 23.02.2013, Zesstra
-
diff --git a/doc/props/P_MARRIED b/doc/props/P_MARRIED
index 768404e..7cafa6f 100644
--- a/doc/props/P_MARRIED
+++ b/doc/props/P_MARRIED
@@ -1,12 +1,28 @@
-NAME:
-    P_MARRIED                     "married"                     
 
-DEFINIERT IN:
-    /sys/properties.h
+P_MARRIED
+*********
 
-BESCHREIBUNG:
-     Enthaelt einen String mit der uid des Partners
-     (sofern vorhanden)
 
-SIEHE AUCH:
-     scheidung
+NAME
+====
+
+   P_MARRIED                     "married"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String mit der uid des Partners
+   (sofern vorhanden)
+
+
+SIEHE AUCH
+==========
+
+   scheidung
diff --git a/doc/props/P_MATERIAL b/doc/props/P_MATERIAL
index 5be1bef..4ea4032 100644
--- a/doc/props/P_MATERIAL
+++ b/doc/props/P_MATERIAL
@@ -1,79 +1,99 @@
+
 P_MATERIAL
-NAME:
-     P_MATERIAL					"material"
+**********
 
-DEFINIERT IN:
-     <thing/material.h>
 
-BESCHREIBUNG:
-     Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt 
-     besteht.
+NAME
+====
 
-BEMERKUNGEN:
-     Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder 
-     ein Array aus Materialien angeben. Die Anteile werden dann 
-     gleichmaessig verteilt.
+   P_MATERIAL                                 "material"
 
-BEISPIELE:
-     // 100% Eis
-     SetProp(P_MATERIAL, MAT_ICE);
-     // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])
 
-     // 50% Eis, 50% Misc-Holz
-     SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
-     // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])
+DEFINIERT IN
+============
 
-     // 60% Eis, 40% Misc-Holz
-     SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));
+   <thing/material.h>
 
-     // 100% Papier
-     SetProp(P_MATERIAL, MAT_PAPER);
-     // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])
 
-     // 50% Silber, 50% Gold
-     SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
-     // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])
+BESCHREIBUNG
+============
 
-     // ein weiser Schmied, der was daraus macht:
-     int i;
-     string *mat, mname, mgroup;
-     mat=m_indices(ob->QueryProp(P_MATERIAL));
-     i=sizeof(mat);
+   Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt
+   besteht.
 
-     write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
-     while(i--) {
-      // den Namen erkennen/aussprechen:
-      // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
-      // alles aus Metall wird zu +100% gut erkannt ...
-      mname=MATERIALDB->MaterialName(mat[i], WER,
-	     ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
-			({MATGROUP_METAL, 100})])}));
 
-      // und nur Metalle analysieren ...
-      if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
-       int j;
-       string *mgr;
-       mgr=MATERIALDB->GetMatMembership(mat[i]);
-       j=sizeof(mgr);
-       mgroup=" gehoert zu ";
-       while(j--) {
-        mgroup+=MATERIALDB->GroupName(mgr[j]);
-        if(j>0) mgroup+=", ";
-       }
-      } else mgroup=" kenne ich nicht";
-      printf("%-12.12s: %s\n",mname, mgroup);
+BEMERKUNGEN
+===========
+
+   Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder
+   ein Array aus Materialien angeben. Die Anteile werden dann
+   gleichmaessig verteilt.
+
+
+BEISPIELE
+=========
+
+   // 100% Eis
+   SetProp(P_MATERIAL, MAT_ICE);
+   // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])
+
+   // 50% Eis, 50% Misc-Holz
+   SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
+   // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])
+
+   // 60% Eis, 40% Misc-Holz
+   SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));
+
+   // 100% Papier
+   SetProp(P_MATERIAL, MAT_PAPER);
+   // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])
+
+   // 50% Silber, 50% Gold
+   SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
+   // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])
+
+   // ein weiser Schmied, der was daraus macht:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% gut erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
+                      ({MATGROUP_METAL, 100})])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
      }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
 
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: /sys/thing/material.h
-     Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+SIEHE AUCH
+==========
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+   Konzepte:    material, materialerkennung
+   Grundlegend: /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/props/P_MATERIAL_KNOWLEDGE b/doc/props/P_MATERIAL_KNOWLEDGE
index c954083..0694fef 100644
--- a/doc/props/P_MATERIAL_KNOWLEDGE
+++ b/doc/props/P_MATERIAL_KNOWLEDGE
@@ -1,39 +1,56 @@
+
 P_MATERIAL_KNOWLEDGE
-NAME:
-     P_MATERIAL_KNOWLEDGE				"material_knowledge"
-
-DEFINIERT IN:
-     <thing/material.h>
-
-BESCHREIBUNG:
-     Mapping, Closure oder Integer mit Regeln zur Materialienerkennung. Die
-     Regeln sind in "man materialerkennung" zu lesen.
-
-     Diese werden bei Angabe eines Spielerobjektes in MaterialList() oder
-     MaterialName() an diesem abgefragt und hat Einfluss darauf, ob ein
-     Material genau, generell oder gar nicht erkannt wird.
-
-     In den einzelnen Rassenshells sind Defaultwerte dafuer angegeben.
+********************
 
 
-BEISPIELE:
-     // Erkennungsbonus auf diverse Materialgruppen und
-     // Erkennungsbonus/-malus auf biologische/nichtbiologische Materialien
-     SetProp(P_MATERIAL_KNOWLEDGE,
-	([MATGROUP_WOOD:20,
-	  MATGROUP_METAL:20,
-	  MATGROUP_ELEMENTAL:20,
-	  MATGROUP_CLOTH:20,
-	  MATERIAL_SYMMETRIC_RECOGNIZABILITY: ({MATGROUP_BIO,5})]));
+NAME
+====
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
+   P_MATERIAL_KNOWLEDGE                               "material_knowledge"
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   <thing/material.h>
+
+
+BESCHREIBUNG
+============
+
+   Mapping, Closure oder Integer mit Regeln zur Materialienerkennung. Die
+   Regeln sind in "man materialerkennung" zu lesen.
+
+   Diese werden bei Angabe eines Spielerobjektes in MaterialList() oder
+   MaterialName() an diesem abgefragt und hat Einfluss darauf, ob ein
+   Material genau, generell oder gar nicht erkannt wird.
+
+   In den einzelnen Rassenshells sind Defaultwerte dafuer angegeben.
+
+
+BEISPIELE
+=========
+
+   // Erkennungsbonus auf diverse Materialgruppen und
+   // Erkennungsbonus/-malus auf biologische/nichtbiologische Materialien
+   SetProp(P_MATERIAL_KNOWLEDGE,
+      ([MATGROUP_WOOD:20,
+        MATGROUP_METAL:20,
+        MATGROUP_ELEMENTAL:20,
+        MATGROUP_CLOTH:20,
+        MATERIAL_SYMMETRIC_RECOGNIZABILITY: ({MATGROUP_BIO,5})]));
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/props/P_MAX_ALCOHOL b/doc/props/P_MAX_ALCOHOL
index 10a64c3..541972f 100644
--- a/doc/props/P_MAX_ALCOHOL
+++ b/doc/props/P_MAX_ALCOHOL
@@ -1,21 +1,39 @@
-NAME:
-	P_MAX_ALCOHOL			"max_alcohol"
 
-DEFINIERT IN:
-	/sys/living/life.h
+P_MAX_ALCOHOL
+*************
 
-BESCHREIBUNG:
-	Numerischer Wert fuer den maximalen Grad der Betrunkenheit eines
-	Lebewesens.
 
-ANMERKUNGEN:
-	Der Wert von P_MAX_ALCOHOL ist bei den einzelnen Rassen verschieden,
-	ebenso wie der fuer P_ALCOHOL_DELAY. Die genauen Werte stehen in den
-	Rassen-Shells (/std/shells).
+NAME
+====
 
-SIEHE AUCH:
-	P_ALCOHOL, P_ALCOHOL_DELAY, drink_alcohol,
-	P_MAX_FOOD, P_MAX_DRINK
+   P_MAX_ALCOHOL                   "max_alcohol"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer den maximalen Grad der Betrunkenheit eines
+   Lebewesens.
+
+
+ANMERKUNGEN
+===========
+
+   Der Wert von P_MAX_ALCOHOL ist bei den einzelnen Rassen verschieden,
+   ebenso wie der fuer P_ALCOHOL_DELAY. Die genauen Werte stehen in den
+   Rassen-Shells (/std/shells).
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, P_ALCOHOL_DELAY, drink_alcohol,
+   P_MAX_FOOD, P_MAX_DRINK
+
 Last modified: Tue Dec 18 12:16:10 2001 by Patryn
diff --git a/doc/props/P_MAX_DRINK b/doc/props/P_MAX_DRINK
index 940eddc..33fdeb8 100644
--- a/doc/props/P_MAX_DRINK
+++ b/doc/props/P_MAX_DRINK
@@ -1,21 +1,39 @@
-NAME:
-	P_MAX_DRINK			"max_drink"
 
-DEFINIERT IN:
-	/sys/living/life.h
+P_MAX_DRINK
+***********
 
-BESCHREIBUNG:
-	Numerischer Wert fuer die maximale Saettigung eines Lebewesens mit
-	Getraenken.
 
-ANMERKUNGEN:
-	Der Wert von P_MAX_DRINK ist bei den einzelnen Rassen verschieden,
-	ebenso wie der fuer P_DRINK_DELAY. Die genauen Werte stehen in den
-	Rassen-Shells (/std/shells).
+NAME
+====
 
-SIEHE AUCH:
-	P_DRINK, P_DRINK_DELAY, drink_soft,
-	P_MAX_FOOD, P_MAX_ALCOHOL
+   P_MAX_DRINK                     "max_drink"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die maximale Saettigung eines Lebewesens mit
+   Getraenken.
+
+
+ANMERKUNGEN
+===========
+
+   Der Wert von P_MAX_DRINK ist bei den einzelnen Rassen verschieden,
+   ebenso wie der fuer P_DRINK_DELAY. Die genauen Werte stehen in den
+   Rassen-Shells (/std/shells).
+
+
+SIEHE AUCH
+==========
+
+   P_DRINK, P_DRINK_DELAY, drink_soft,
+   P_MAX_FOOD, P_MAX_ALCOHOL
+
 Last modified: Tue Dec 18 12:16:10 2001 by Patryn
diff --git a/doc/props/P_MAX_FOOD b/doc/props/P_MAX_FOOD
index 5f49cfe..fa7f661 100644
--- a/doc/props/P_MAX_FOOD
+++ b/doc/props/P_MAX_FOOD
@@ -1,20 +1,38 @@
-NAME:
-	P_MAX_FOOD			"max_food"
 
-DEFINIERT IN:
-	/sys/living/life.h
+P_MAX_FOOD
+**********
 
-BESCHREIBUNG:
-	Numerischer Wert fuer die maximale Saettigung eines Lebewesens.
 
-ANMERKUNGEN:
-	Der Wert von P_MAX_FOOD ist bei den einzelnen Rassen verschieden, 
-	ebenso wie der fuer P_FOOD_DELAY. Die genauen Werte stehen in den
-	Rassen-Shells (/std/shells).
+NAME
+====
 
-SIEHE AUCH:
-	P_FOOD, P_FOOD_DELAY, eat_food,
-	P_MAX_DRINK, P_MAX_ALCOHOL
+   P_MAX_FOOD                      "max_food"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die maximale Saettigung eines Lebewesens.
+
+
+ANMERKUNGEN
+===========
+
+   Der Wert von P_MAX_FOOD ist bei den einzelnen Rassen verschieden,
+   ebenso wie der fuer P_FOOD_DELAY. Die genauen Werte stehen in den
+   Rassen-Shells (/std/shells).
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_FOOD_DELAY, eat_food,
+   P_MAX_DRINK, P_MAX_ALCOHOL
+
 Last modified: Tue Dec 18 12:16:10 2001 by Patryn
diff --git a/doc/props/P_MAX_HANDS b/doc/props/P_MAX_HANDS
index 96b1ae8..4c65afa 100644
--- a/doc/props/P_MAX_HANDS
+++ b/doc/props/P_MAX_HANDS
@@ -1,27 +1,45 @@
+
 P_MAX_HANDS
-NAME:
-     P_MAX_HANDS                   "max_hands"
+***********
 
-DEFINIERT IN:
-     /sys/living/combat.h
 
-BESCHREIBUNG:
-     Anzahl der Haende, die ein Wesen hat.
+NAME
+====
 
-BEMERKUNGEN:
-     An dieser Propertie sollte bei Spielern nur im Rahmen der
-     Gilden 'gespielt' werden.
+   P_MAX_HANDS                   "max_hands"
 
-     Fuer Magier, die in ihren Npc gerne alle Properties setzen,
-     gilt folgendes:
 
-                  Setzt diese Propertie NIE auf 0 !
+DEFINIERT IN
+============
 
-     Ohne Haende wird kein Npc irgendeinen Spieler angreifen koennen.
+   /sys/living/combat.h
 
-SIEHE AUCH:
-     P_HANDS, P_HANDS_USED_BY
-     P_USED_HANDS, P_FREE_HANDS
-     UseHands, FreeHands
+
+BESCHREIBUNG
+============
+
+   Anzahl der Haende, die ein Wesen hat.
+
+
+BEMERKUNGEN
+===========
+
+   An dieser Propertie sollte bei Spielern nur im Rahmen der
+   Gilden 'gespielt' werden.
+
+   Fuer Magier, die in ihren Npc gerne alle Properties setzen,
+   gilt folgendes:
+
+                Setzt diese Propertie NIE auf 0 !
+
+   Ohne Haende wird kein Npc irgendeinen Spieler angreifen koennen.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
 
 1.Feb.2004 Gloinson
diff --git a/doc/props/P_MAX_HP b/doc/props/P_MAX_HP
index 13a84c4..fcb3cb0 100644
--- a/doc/props/P_MAX_HP
+++ b/doc/props/P_MAX_HP
@@ -1,14 +1,30 @@
-NAME:
-    P_MAX_HP                      "max_hp"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_MAX_HP
+********
 
-BESCHREIBUNG:
-     Maximale Anzahl der Lebenspunkte.
 
-SIEHE AUCH:
-     Props:	P_HP
-     Verwandt:	UpdateAttributes()
+NAME
+====
 
-21.April 2006 Gloinson
\ No newline at end of file
+   P_MAX_HP                      "max_hp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Anzahl der Lebenspunkte.
+
+
+SIEHE AUCH
+==========
+
+   Props:     P_HP
+   Verwandt:  UpdateAttributes()
+
+21.April 2006 Gloinson
diff --git a/doc/props/P_MAX_OBJECTS b/doc/props/P_MAX_OBJECTS
index a76f0d1..68c008f 100644
--- a/doc/props/P_MAX_OBJECTS
+++ b/doc/props/P_MAX_OBJECTS
@@ -1,22 +1,44 @@
-NAME:
-    P_MAX_OBJECTS                  "max_objects"                  
 
-DEFINIERT IN:
-    /sys/container.h
+P_MAX_OBJECTS
+*************
 
-BESCHREIBUNG:
-     Maximale Anzahl an Objekten, die in einen Container passen.
-     P_MAX_OBJECTS sollte im Normfall zwischen 0 - 100 liegen.
 
-BEMERKUNGEN:
-     Soll es sich um einen herausragenden Container handeln, der zum
-     Beispiel das Gewicht um mehr als 50% reduziert, sollte P_MAX_OBJECTS
-     einen kleineren Wert haben. Das Verhaeltnis von P_MAX_WEIGHT,
-     P_WEIGHT_PERCENT und dieser Property sollte stimmen.
+NAME
+====
 
-BEISPIELE:
-     Als Beispiel sollte man sich das Postpaket ansehen und sich an dessen
-     Werten orientieren (/p/service/loco/obj/parcel).
+   P_MAX_OBJECTS                  "max_objects"
 
-SIEHE AUCH:
-     P_MAX_WEIGHT, P_WEIGHT_PERCENT, P_LIGHT_TRANSPARENCY, container
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Anzahl an Objekten, die in einen Container passen.
+   P_MAX_OBJECTS sollte im Normfall zwischen 0 - 100 liegen.
+
+
+BEMERKUNGEN
+===========
+
+   Soll es sich um einen herausragenden Container handeln, der zum
+   Beispiel das Gewicht um mehr als 50% reduziert, sollte P_MAX_OBJECTS
+   einen kleineren Wert haben. Das Verhaeltnis von P_MAX_WEIGHT,
+   P_WEIGHT_PERCENT und dieser Property sollte stimmen.
+
+
+BEISPIELE
+=========
+
+   Als Beispiel sollte man sich das Postpaket ansehen und sich an dessen
+   Werten orientieren (/p/service/loco/obj/parcel).
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_WEIGHT, P_WEIGHT_PERCENT, P_LIGHT_TRANSPARENCY, container
diff --git a/doc/props/P_MAX_PASSENGERS b/doc/props/P_MAX_PASSENGERS
index b0bc6a5..32e5f27 100644
--- a/doc/props/P_MAX_PASSENGERS
+++ b/doc/props/P_MAX_PASSENGERS
@@ -1,9 +1,22 @@
-NAME:
-    P_MAX_PASSENGERS              "maxpass"                     
 
-DEFINIERT IN:
-    /sys/transport.h
+P_MAX_PASSENGERS
+****************
 
-BESCHREIBUNG:
-     Numerischer Wert fuer die maximale Anzahl von Wesen in dem Transporter.
-     0 bedeutet unbeschaenkte Spielerzahl.
+
+NAME
+====
+
+   P_MAX_PASSENGERS              "maxpass"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die maximale Anzahl von Wesen in dem Transporter.
+   0 bedeutet unbeschaenkte Spielerzahl.
diff --git a/doc/props/P_MAX_POISON b/doc/props/P_MAX_POISON
index 35b8e9b..0d39dc4 100644
--- a/doc/props/P_MAX_POISON
+++ b/doc/props/P_MAX_POISON
@@ -1,8 +1,21 @@
-NAME:
-    P_MAX_POISON                  "max_poison"                  
 
-DEFINIERT IN:
-    /sys/properties.h
+P_MAX_POISON
+************
 
-BESCHREIBUNG:
-     Maximale Vergiftung
+
+NAME
+====
+
+   P_MAX_POISON                  "max_poison"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Vergiftung
diff --git a/doc/props/P_MAX_SP b/doc/props/P_MAX_SP
index 307aaf5..7f7aa43 100644
--- a/doc/props/P_MAX_SP
+++ b/doc/props/P_MAX_SP
@@ -1,14 +1,30 @@
-NAME:
-    P_MAX_SP                      "max_sp"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_MAX_SP
+********
 
-BESCHREIBUNG:
-     Maximale Anzahl der Magiepunkte.
 
-SIEHE AUCH:
-     Props:	P_SP
-     Verwandt:	UpdateAttributes()
+NAME
+====
 
-21.April 2006 Gloinson
\ No newline at end of file
+   P_MAX_SP                      "max_sp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Anzahl der Magiepunkte.
+
+
+SIEHE AUCH
+==========
+
+   Props:     P_SP
+   Verwandt:  UpdateAttributes()
+
+21.April 2006 Gloinson
diff --git a/doc/props/P_MAX_WEIGHT b/doc/props/P_MAX_WEIGHT
index 7e2f16b..abd0942 100644
--- a/doc/props/P_MAX_WEIGHT
+++ b/doc/props/P_MAX_WEIGHT
@@ -1,19 +1,38 @@
-NAME:
-    P_MAX_WEIGHT                  "max_weight"                  
 
-DEFINIERT IN:
-    /sys/container.h
+P_MAX_WEIGHT
+************
 
-BESCHREIBUNG:
-     Maximales Gewicht in Gramm, das in dem Container verstaut werden
-     kann.
 
-BEMERKUNGEN:
-     Das Verhaeltnis von P_WEIGHT_PERCENT, P_MAX_OBJECTS und dieser Property
-     sollte stimmen. Eine feste Grenze gibt es nicht. Als Beispiel kann 
-     das Postpaket von Loco unter /p/servive/loco/obj herangezogen werden.
-     Bessere Werte als in diesem sollte es nicht, und wenn doch nur gut be-
-     gruendet, geben.
+NAME
+====
 
-SIEHE AUCH:
-     P_WEIGHT_PERCENT, P_MAX_OBJECTS, P_LIGHT_TRANSPARENCY, container
+   P_MAX_WEIGHT                  "max_weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Maximales Gewicht in Gramm, das in dem Container verstaut werden
+   kann.
+
+
+BEMERKUNGEN
+===========
+
+   Das Verhaeltnis von P_WEIGHT_PERCENT, P_MAX_OBJECTS und dieser Property
+   sollte stimmen. Eine feste Grenze gibt es nicht. Als Beispiel kann
+   das Postpaket von Loco unter /p/servive/loco/obj herangezogen werden.
+   Bessere Werte als in diesem sollte es nicht, und wenn doch nur gut be-
+   gruendet, geben.
+
+
+SIEHE AUCH
+==========
+
+   P_WEIGHT_PERCENT, P_MAX_OBJECTS, P_LIGHT_TRANSPARENCY, container
diff --git a/doc/props/P_MESSAGE_BEEP b/doc/props/P_MESSAGE_BEEP
index 9e40fa5..6ecf718 100644
--- a/doc/props/P_MESSAGE_BEEP
+++ b/doc/props/P_MESSAGE_BEEP
@@ -1,19 +1,38 @@
-NAME:
-    P_MESSAGE_BEEP                        "message_beep"
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_MESSAGE_BEEP
+**************
 
-BESCHREIBUNG:
-     Wertebereich: int=0..3600 (Sekunden)
-     Wenn gesetzt wird in der Kommunikation des Spielers in den angegebenen
-     Zeitraeumen ein Signalton ausgegeben. Wird in player/comm.c in comm_beep()
-     verarbeitet.
-     Ausgabe erfolgt nur, wenn P_VISUALBELL nicht gesetzt ist.
-     Wird im Spielerobjekt gespeichert!
 
-SIEHE AUCH:
-     klingelton, ton, P_VISUALBELL, P_MESSAGE_LAST_BEEP
+NAME
+====
 
-LETZTE AENDERUNG:
+   P_MESSAGE_BEEP                        "message_beep"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Wertebereich: int=0..3600 (Sekunden)
+   Wenn gesetzt wird in der Kommunikation des Spielers in den angegebenen
+   Zeitraeumen ein Signalton ausgegeben. Wird in player/comm.c in comm_beep()
+   verarbeitet.
+   Ausgabe erfolgt nur, wenn P_VISUALBELL nicht gesetzt ist.
+   Wird im Spielerobjekt gespeichert!
+
+
+SIEHE AUCH
+==========
+
+   klingelton, ton, P_VISUALBELL, P_MESSAGE_LAST_BEEP
+
+
+LETZTE AENDERUNG
+================
+
    16. Mai 2007  Ennox
diff --git a/doc/props/P_MESSAGE_PREPEND b/doc/props/P_MESSAGE_PREPEND
index ee44dda..be54d65 100644
--- a/doc/props/P_MESSAGE_PREPEND
+++ b/doc/props/P_MESSAGE_PREPEND
@@ -1,18 +1,37 @@
-NAME:
-    P_MESSAGE_PREPEND                        "message_prepend"
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_MESSAGE_PREPEND
+*****************
 
-BESCHREIBUNG:
-     Wertebereich: int = 0,1
-     Wenn vom Ziel eingeschaltet, wird von teile mit (_tell) und sag (_communicate) das 
-     BS_PREPEND_INDENT Flag fuer break_string genutzt, um den Indent (Sender) ggf.
-     vor dem Textblock anzuzeigen.
-     Wird im Spielerobjekt gespeichert!
 
-SIEHE AUCH:
-     grafik aus, break_string, senderwiederholung
+NAME
+====
 
-LETZTE AENDERUNG:
+   P_MESSAGE_PREPEND                        "message_prepend"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Wertebereich: int = 0,1
+   Wenn vom Ziel eingeschaltet, wird von teile mit (_tell) und sag (_communicate) das
+   BS_PREPEND_INDENT Flag fuer break_string genutzt, um den Indent (Sender) ggf.
+   vor dem Textblock anzuzeigen.
+   Wird im Spielerobjekt gespeichert!
+
+
+SIEHE AUCH
+==========
+
+   grafik aus, break_string, senderwiederholung
+
+
+LETZTE AENDERUNG
+================
+
    16. Mai 2007  Ennox
diff --git a/doc/props/P_MIN_STOCK b/doc/props/P_MIN_STOCK
index d896fb3..3be8d4e 100644
--- a/doc/props/P_MIN_STOCK
+++ b/doc/props/P_MIN_STOCK
@@ -1,37 +1,55 @@
-NAME:
-	P_MIN_STOCK			"min_stock"
 
-DEFINIERT IN:
-	/sys/bank.h
+P_MIN_STOCK
+***********
 
-BESCHREIBUNG:
-	P_MIN_STOCK enthaelt die Anzahl an Objekten, die ein Lager eines
-	Ladens minimal behaelt. Standardmaessig entspricht dies 20 Objekten
-	und sollte auch nicht wesentlich erhoeht werden. Nur fuer
-	Anfaengergebiete waeren Werte zwischen 20 und 60 akzeptabel. In die
-	Berechnung der Anzahl von Objekten gehen keine Objekte ein, die im
-	Laden mittels AddFixedObject() staendig verfuegbar gemacht worden
-	sind und auch keine Objekte, die per AddItem() im Lager hinzugefuegt
-	wurden und nach jedem Reset aufgefrischt werden.
-	Bei jedem Reset wird nun aus Speicher- und Laggruenden das Lager um
-	eine bestimmte Prozentzahl an Objekten dezimiert. Entscheidend
-	dafuer ist der Wert in der Property P_STORE_CONSUME.
-	Beide hier erwaehnten Properties sollten ueberigens nur mittels
-	QueryProp/SetProp ausgelesen bzw. veraendert werden.
 
-BEISPIEL:
-	In '/std/store.c' befindet sich bereits ein gutes Beispiel, da dort
-	der Standardwert von 20 Objekten bereitgestellt wird:
-	  create()
-	  { ...
-	    SetProp(P_MIN_STOCK,20);
-	  }
-	Diesen Wert kann man in einem davon abgeleiteten eigenen Lager
-	natuerlich auch veraendern.
+NAME
+====
 
-SIEHE AUCH:
-	P_STORE_CONSUME, SetStorageRoom(), /std/store.c, /std/shop.c
-	AddItem(), RemoveItem(), AddFixedObject(), RemoveFixedObject()
+   P_MIN_STOCK                     "min_stock"
 
-----------------------------------------------------------------------------
-Last modified: 19-Jun-2015, Arathorn 
+
+DEFINIERT IN
+============
+
+   /sys/bank.h
+
+
+BESCHREIBUNG
+============
+
+   P_MIN_STOCK enthaelt die Anzahl an Objekten, die ein Lager eines
+   Ladens minimal behaelt. Standardmaessig entspricht dies 20 Objekten
+   und sollte auch nicht wesentlich erhoeht werden. Nur fuer
+   Anfaengergebiete waeren Werte zwischen 20 und 60 akzeptabel. In die
+   Berechnung der Anzahl von Objekten gehen keine Objekte ein, die im
+   Laden mittels AddFixedObject() staendig verfuegbar gemacht worden
+   sind und auch keine Objekte, die per AddItem() im Lager hinzugefuegt
+   wurden und nach jedem Reset aufgefrischt werden.
+   Bei jedem Reset wird nun aus Speicher- und Laggruenden das Lager um
+   eine bestimmte Prozentzahl an Objekten dezimiert. Entscheidend
+   dafuer ist der Wert in der Property P_STORE_CONSUME.
+   Beide hier erwaehnten Properties sollten ueberigens nur mittels
+   QueryProp/SetProp ausgelesen bzw. veraendert werden.
+
+
+BEISPIEL
+========
+
+   In '/std/store.c' befindet sich bereits ein gutes Beispiel, da dort
+   der Standardwert von 20 Objekten bereitgestellt wird:
+     create()
+     { ...
+       SetProp(P_MIN_STOCK,20);
+     }
+   Diesen Wert kann man in einem davon abgeleiteten eigenen Lager
+   natuerlich auch veraendern.
+
+
+SIEHE AUCH
+==========
+
+   P_STORE_CONSUME, SetStorageRoom(), /std/store.c, /std/shop.c
+   AddItem(), RemoveItem(), AddFixedObject(), RemoveFixedObject()
+
+Last modified: 19-Jun-2015, Arathorn
diff --git a/doc/props/P_MMSGIN b/doc/props/P_MMSGIN
index cd8e84e..98d37f3 100644
--- a/doc/props/P_MMSGIN
+++ b/doc/props/P_MMSGIN
@@ -1,9 +1,22 @@
-NAME:
-    P_MMSGIN                      "mmsgin"                      
 
-DEFINIERT IN:
-    /sys/player/moving.h
+P_MMSGIN
+********
 
-BESCHREIBUNG:
-     String mit der Meldung, die beim Verlassen eines Raumes mit M_TPORT
-     an die uebrigen Anwesenden ausgegeben wird.
+
+NAME
+====
+
+   P_MMSGIN                      "mmsgin"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Verlassen eines Raumes mit M_TPORT
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/props/P_MMSGOUT b/doc/props/P_MMSGOUT
index defd09f..6035ba8 100644
--- a/doc/props/P_MMSGOUT
+++ b/doc/props/P_MMSGOUT
@@ -1,9 +1,22 @@
-NAME:
-    P_MMSGOUT                     "mmsgout"                     
 
-DEFINIERT IN:
-    /sys/player/moving.h
+P_MMSGOUT
+*********
 
-BESCHREIBUNG:
-     String mit der Meldung, die beim Betreten eines Raumes mit M_TPORT
-     an die uebrigen Anwesenden ausgegeben wird.
+
+NAME
+====
+
+   P_MMSGOUT                     "mmsgout"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Betreten eines Raumes mit M_TPORT
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/props/P_MSGIN b/doc/props/P_MSGIN
index cf14a91..f5d90f8 100644
--- a/doc/props/P_MSGIN
+++ b/doc/props/P_MSGIN
@@ -1,9 +1,22 @@
-NAME:
-    P_MSGIN                       "msgin"                       
 
-DEFINIERT IN:
-    /sys/player/moving.h
+P_MSGIN
+*******
 
-BESCHREIBUNG:
-     String mit der Meldung, die beim Betreten eines Raumes mit M_GO
-     an die uebrigen Anwesenden ausgegeben wird.
+
+NAME
+====
+
+   P_MSGIN                       "msgin"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Betreten eines Raumes mit M_GO
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/props/P_MSGOUT b/doc/props/P_MSGOUT
index 0587afb..95a8545 100644
--- a/doc/props/P_MSGOUT
+++ b/doc/props/P_MSGOUT
@@ -1,9 +1,22 @@
-NAME:
-    P_MSGOUT                      "msgout"                      
 
-DEFINIERT IN:
-    /sys/player/moving.h
+P_MSGOUT
+********
 
-BESCHREIBUNG:
-     String mit der Meldung, die beim Verlassen eines Raumes mit M_GO
-     an die uebrigen Anwesenden ausgegeben wird.
+
+NAME
+====
+
+   P_MSGOUT                      "msgout"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Verlassen eines Raumes mit M_GO
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/props/P_MSG_PROB b/doc/props/P_MSG_PROB
index d520067..b4465df 100644
--- a/doc/props/P_MSG_PROB
+++ b/doc/props/P_MSG_PROB
@@ -1,19 +1,35 @@
-NAME:
-    P_MSG_PROB                    "msg_prob"                    
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_MSG_PROB
+**********
 
-BESCHREIBUNG:
-     Parameter fuer die Wartezeit in Sekunden bis zur naechsten Ausgabe
-     einer Raumnachricht.
-     Wird in AddRoomMessage() explizit mitgesetzt. Koennte natuerlich von
-     einer Nachrichtenmethode auch regelmaessig geaendert werden, um
-     mehr Zufall in die Intervalle zu bringen.
 
-SIEHE AUCH:
-     LFuns:    AddRoomMessage()
-     Props:    P_ROOM_MSG, P_MSG_PROB
-     Verwandt: call_out()
+NAME
+====
+
+   P_MSG_PROB                    "msg_prob"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Parameter fuer die Wartezeit in Sekunden bis zur naechsten Ausgabe
+   einer Raumnachricht.
+   Wird in AddRoomMessage() explizit mitgesetzt. Koennte natuerlich von
+   einer Nachrichtenmethode auch regelmaessig geaendert werden, um
+   mehr Zufall in die Intervalle zu bringen.
+
+
+SIEHE AUCH
+==========
+
+   LFuns:    AddRoomMessage()
+   Props:    P_ROOM_MSG, P_MSG_PROB
+   Verwandt: call_out()
 
 2.Feb 2016 Gloinson
diff --git a/doc/props/P_MUD_NEWBIE b/doc/props/P_MUD_NEWBIE
index bebb77f..71801eb 100644
--- a/doc/props/P_MUD_NEWBIE
+++ b/doc/props/P_MUD_NEWBIE
@@ -1,17 +1,31 @@
-NAME:
-    P_MUD_NEWBIE                      "_lib_mud_newbie" 
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_MUD_NEWBIE
+************
 
-BESCHREIBUNG:
-    Der Spieler hat bei Erstellung des Charakters angegeben, noch nie in einem
-    Mud gespielt zu haben. In diesem Fall enthaelt die Property den
-    Zeitstempel der Charaktererstellung.
 
-    ACHTUNG: Diese Prop wird nicht gespeichert, d.h. nachdem ein solcher
-    Spieler "ende" gemacht hat oder ein Reboot erfolgte, ist diese Information
-    verloren.
+NAME
+====
 
-SIEHE AUCH:
+   P_MUD_NEWBIE                      "_lib_mud_newbie"
 
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler hat bei Erstellung des Charakters angegeben, noch nie in einem
+   Mud gespielt zu haben. In diesem Fall enthaelt die Property den
+   Zeitstempel der Charaktererstellung.
+
+   ACHTUNG: Diese Prop wird nicht gespeichert, d.h. nachdem ein solcher
+   Spieler "ende" gemacht hat oder ein Reboot erfolgte, ist diese Information
+   verloren.
+
+
+SIEHE AUCH
+==========
diff --git a/doc/props/P_MURDER_MSG b/doc/props/P_MURDER_MSG
index 63d594c..c565cfa 100644
--- a/doc/props/P_MURDER_MSG
+++ b/doc/props/P_MURDER_MSG
@@ -1,63 +1,83 @@
+
 P_MURDER_MSG
-
-NAME:
-     P_MURDER_MSG			"murder_msg"
-
-DEFINIERT IN:
-     /sys/properties.h
-
-BESCHREIBUNG:
-     In dieser Property kann man einen String oder eine Closure ablegen
-     dessen Wert bzw. deren Resultat beim Tod des NPCs auf dem
-     Moerder-Kanal erscheint.
-     Normalerweise ist die Property nicht gesetzt, woraufhin zufaellig
-     eine Meldung generiert wird.
-
-     Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon ab,
-     wie oft und welche Art von NPCs in der letzten Zeit getoetet wurden. Zum
-     Beispiel ist es eher selten, dass ein schwacher NPC auf dem Kanal
-     erscheint, wenn kuerzlich viele starke NPCs getoetet wurden. Allerdings
-     kann man auf diese Regelung mittels der Property P_FORCE_MURDER_MSG
-     Einfluss nehmen.
-
-     Wird in einen String der Platzhalter %s eingefuegt, so erscheint an der
-     Stelle spaeter der Name des Moerders.
-
-BEISPIELE:
-     // Zum Beispiel koennte man ja bei einer Ratte, die getoetet wird,
-     // folgendes auf dem Moerder-Kanal ausgeben lassen:
-     SetProp(P_MURDER_MSG,
-       "Ratten aller MUDs, vereinigt euch gegen %s!");
+************
 
 
-     // Um auch mal eine Closure zu zeigen: die Ratte koennte auch ihre
-     // Meldung erst bei ihrem Tod erstellen lassen:
-     private string moerder_meldung() {
-       return ({"Achweh!", "Au!", "Weia!"})[random(3)];
-     }
+NAME
+====
 
-     SetProp(P_MURDER_MSG, #'moerder_meldung);
+   P_MURDER_MSG                       "murder_msg"
 
-BEMERKUNGEN:
-     - P_NOCORPSE:
-       Ist in dem NPC die Property P_NOCORPSE gesetzt, so wird die
-       Moerdermeldung nicht auf dem Kanal gesendet, da diese Ausgabe ueber
-       /std/corpse laeuft.
-       Will man dennoch eine Meldung, so sollte man /std/corpse im die()
-       selbst clonen, daran Identify(this_object()) rufen und das geclonte
-       Objekt wieder entsorgen.
 
-     - Closures:
-       Closures bieten sich an, wenn ein zentrales Objekt fuer mehrere NPCs
-       bestimmte Moerdermeldungen generieren soll. Dann muss nur noch bei
-       den NPCs die Closure, die auf die erstellende Methode zeigt gesetzt
-       werden.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Tod:		die(L)
-     Verwandt:		P_FORCE_MURDER_MSG
-     Todesmeldungen:	P_KILL_NAME, P_KILL_MSG, P_DIE_MSG
-			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /std/corpse.c
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property kann man einen String oder eine Closure ablegen
+   dessen Wert bzw. deren Resultat beim Tod des NPCs auf dem
+   Moerder-Kanal erscheint.
+   Normalerweise ist die Property nicht gesetzt, woraufhin zufaellig
+   eine Meldung generiert wird.
+
+   Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon ab,
+   wie oft und welche Art von NPCs in der letzten Zeit getoetet wurden. Zum
+   Beispiel ist es eher selten, dass ein schwacher NPC auf dem Kanal
+   erscheint, wenn kuerzlich viele starke NPCs getoetet wurden. Allerdings
+   kann man auf diese Regelung mittels der Property P_FORCE_MURDER_MSG
+   Einfluss nehmen.
+
+   Wird in einen String der Platzhalter %s eingefuegt, so erscheint an der
+   Stelle spaeter der Name des Moerders.
+
+
+BEISPIELE
+=========
+
+   // Zum Beispiel koennte man ja bei einer Ratte, die getoetet wird,
+   // folgendes auf dem Moerder-Kanal ausgeben lassen:
+   SetProp(P_MURDER_MSG,
+     "Ratten aller MUDs, vereinigt euch gegen %s!");
+
+
+   // Um auch mal eine Closure zu zeigen: die Ratte koennte auch ihre
+   // Meldung erst bei ihrem Tod erstellen lassen:
+   private string moerder_meldung() {
+     return ({"Achweh!", "Au!", "Weia!"})[random(3)];
+   }
+
+   SetProp(P_MURDER_MSG, #'moerder_meldung);
+
+
+BEMERKUNGEN
+===========
+
+   - P_NOCORPSE:
+     Ist in dem NPC die Property P_NOCORPSE gesetzt, so wird die
+     Moerdermeldung nicht auf dem Kanal gesendet, da diese Ausgabe ueber
+     /std/corpse laeuft.
+     Will man dennoch eine Meldung, so sollte man /std/corpse im die()
+     selbst clonen, daran Identify(this_object()) rufen und das geclonte
+     Objekt wieder entsorgen.
+
+   - Closures:
+     Closures bieten sich an, wenn ein zentrales Objekt fuer mehrere NPCs
+     bestimmte Moerdermeldungen generieren soll. Dann muss nur noch bei
+     den NPCs die Closure, die auf die erstellende Methode zeigt gesetzt
+     werden.
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Verwandt:          P_FORCE_MURDER_MSG
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_DIE_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c
 
 30. Mai 2006, Gloinson
diff --git a/doc/props/P_M_ATTR_MOD b/doc/props/P_M_ATTR_MOD
index 8a79717..d279484 100644
--- a/doc/props/P_M_ATTR_MOD
+++ b/doc/props/P_M_ATTR_MOD
@@ -1,42 +1,64 @@
-NAME:
-    P_M_ATTR_MOD                  "magic_attributes_modifier"
 
-DEFINIERT IN:
-    /sys/living/attributes.h
+P_M_ATTR_MOD
+************
 
-BESCHREIBUNG:
-    Mapping, das die Attribute des Spielers veraendert, der diese Ruestung
-    bzw. Waffe traegt bzw. benutzt.
 
-    Zu beachten:
-    P_M_ATTR_MOD kann problemlos durch ein SetProp() gesetzt werden. Es wird
-    nur dann beruecksichtigt, wenn die Ruestung/Waffe getragen/benutzt wird.
-    Beim Tragen/Ausziehen/Zuecken/Wegstecken wird im Spieler automatisch
-    UpdateAttributes() aufgerufen.
+NAME
+====
 
-    Fuer Krankheiten etc. oder Objekte, deren *Besitz* allein schon die
-    Attribute veraendern sollen, verwendet man besser P_X_ATTR_MOD.
+   P_M_ATTR_MOD                  "magic_attributes_modifier"
 
-    P_X_ATTR_MOD und P_M_ATTR_MOD duerfen einen gemeinsamen kumulierten
-    positiven Grenzwert nicht ueberschreiten. Dieser Grenzwert,
-    CUMULATIVE_ATTR_LIMIT, ist in /sys/living/attributes.h definiert.
 
-BEMERKUNGEN:
-    Die Werte sollten moeglichst nicht dynamisch geaendert werden.
-    Wenn doch, muss mit TestLimitViolation() am Spieler auf Validitaet
-    geprueft und ggf. mit UpdateAttributes() an ihm upgedatet werden.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    // Dem Spieler, der das Objekt benutzt, wird 2 von A_INT abgezogen und
-    // dafuer 1 auf A_STR aufaddiert.
-    SetProp(P_M_ATTR_MOD, ([A_INT:-2, A_STR:1]) );
+   /sys/living/attributes.h
 
-SIEHE AUCH:
-    QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-    SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-    SetTimedAttrModifier(), QueryTimedAttrModifier(),
-    DeleteTimedAttrModifier(),
-    P_X_HEALTH_MOD, P_M_HEALTH_MOD, P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
-    P_TIMED_ATTR_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+BESCHREIBUNG
+============
+
+   Mapping, das die Attribute des Spielers veraendert, der diese Ruestung
+   bzw. Waffe traegt bzw. benutzt.
+
+   Zu beachten:
+   P_M_ATTR_MOD kann problemlos durch ein SetProp() gesetzt werden. Es wird
+   nur dann beruecksichtigt, wenn die Ruestung/Waffe getragen/benutzt wird.
+   Beim Tragen/Ausziehen/Zuecken/Wegstecken wird im Spieler automatisch
+   UpdateAttributes() aufgerufen.
+
+   Fuer Krankheiten etc. oder Objekte, deren *Besitz* allein schon die
+   Attribute veraendern sollen, verwendet man besser P_X_ATTR_MOD.
+
+   P_X_ATTR_MOD und P_M_ATTR_MOD duerfen einen gemeinsamen kumulierten
+   positiven Grenzwert nicht ueberschreiten. Dieser Grenzwert,
+   CUMULATIVE_ATTR_LIMIT, ist in /sys/living/attributes.h definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Die Werte sollten moeglichst nicht dynamisch geaendert werden.
+   Wenn doch, muss mit TestLimitViolation() am Spieler auf Validitaet
+   geprueft und ggf. mit UpdateAttributes() an ihm upgedatet werden.
+
+
+BEISPIELE
+=========
+
+   // Dem Spieler, der das Objekt benutzt, wird 2 von A_INT abgezogen und
+   // dafuer 1 auf A_STR aufaddiert.
+   SetProp(P_M_ATTR_MOD, ([A_INT:-2, A_STR:1]) );
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_X_HEALTH_MOD, P_M_HEALTH_MOD, P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_TIMED_ATTR_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
 02.02.2016, Gloinson
diff --git a/doc/props/P_M_HEALTH_MOD b/doc/props/P_M_HEALTH_MOD
index a4c89e6..cdc3fd4 100644
--- a/doc/props/P_M_HEALTH_MOD
+++ b/doc/props/P_M_HEALTH_MOD
@@ -1,40 +1,64 @@
-NAME:
-     P_M_HEALTH_MOD                  "magic_health_modifier"
 
-DEFINIERT IN:
-     /sys/living/attributes.h
+P_M_HEALTH_MOD
+**************
 
-BESCHREIBUNG:
-     Mapping, mit dem die maximalen Lebenspunkte und Magiepunkte eines 
-     Spielers veraendert werden, der diese Ruestung/Waffe traegt/benutzt. Im 
-     Gegensatz zu P_M_ATTR_MOD erfolgt hier jedoch keine Blockade.
 
-     Zu beachten: P_M_HEALTH_MOD kann problemlos durch ein SetProp() gesetzt 
-     werden, es wird nur beruecksichtigt, wenn die Ruestung/Waffe 
-     getragen/benutzt wird. Beim tragen/ausziehen/zuecken/wegstecken wird im 
-     Spieler automatisch UpdateAttributes() aufgerufen.
+NAME
+====
 
-     Fuer Krankheiten etc. verwendet man besser die Property P_X_HEALTH_MOD.
+   P_M_HEALTH_MOD                  "magic_health_modifier"
 
-     Bitte beachten: Die positiven Modifier werden nicht mehr 1:1 auf die
-     Lebens- und Magiepunkte draufaddiert. Stattdessen wird nur noch ein 
-     gewisser Teil dort hinzuaddiert, der mit groesserer Menge von Punkten
-     zunimmt, und im unteren Bereich grob dem Wert entspricht. Das 
-     theoretische Maximum ist insgesamt 149.
 
-BEMERKUNGEN:
-     Die Werte sollten moeglichst nicht dynamisch geaendert werden.
-     Wenn doch, muss mit TestLimitViolation() am Spieler auf Validitaet 
-     geprueft werden und mit UpdateAttributes() an ihm ggf. upgedatet.
+DEFINIERT IN
+============
 
-BEISPIEL:
-     SetProp(P_M_HEALTH_MOD,([P_HP:5,P_SP:-5]));
-     // Dem Spieler, der das Objekt benutzt, wird P_MAX_HP um 5 erhoeht und
-     // P_MAX_SP um 5 erniedrigt.
+   /sys/living/attributes.h
 
-SIEHE AUCH:
-     P_X_HEALTH_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, balance
 
-LETZTE AeNDERUNG:
-    Fre,11.05.2007, 00:20 von Humni
+BESCHREIBUNG
+============
 
+   Mapping, mit dem die maximalen Lebenspunkte und Magiepunkte eines
+   Spielers veraendert werden, der diese Ruestung/Waffe traegt/benutzt. Im
+   Gegensatz zu P_M_ATTR_MOD erfolgt hier jedoch keine Blockade.
+
+   Zu beachten: P_M_HEALTH_MOD kann problemlos durch ein SetProp() gesetzt
+   werden, es wird nur beruecksichtigt, wenn die Ruestung/Waffe
+   getragen/benutzt wird. Beim tragen/ausziehen/zuecken/wegstecken wird im
+   Spieler automatisch UpdateAttributes() aufgerufen.
+
+   Fuer Krankheiten etc. verwendet man besser die Property P_X_HEALTH_MOD.
+
+   Bitte beachten: Die positiven Modifier werden nicht mehr 1:1 auf die
+   Lebens- und Magiepunkte draufaddiert. Stattdessen wird nur noch ein
+   gewisser Teil dort hinzuaddiert, der mit groesserer Menge von Punkten
+   zunimmt, und im unteren Bereich grob dem Wert entspricht. Das
+   theoretische Maximum ist insgesamt 149.
+
+
+BEMERKUNGEN
+===========
+
+   Die Werte sollten moeglichst nicht dynamisch geaendert werden.
+   Wenn doch, muss mit TestLimitViolation() am Spieler auf Validitaet
+   geprueft werden und mit UpdateAttributes() an ihm ggf. upgedatet.
+
+
+BEISPIEL
+========
+
+   SetProp(P_M_HEALTH_MOD,([P_HP:5,P_SP:-5]));
+   // Dem Spieler, der das Objekt benutzt, wird P_MAX_HP um 5 erhoeht und
+   // P_MAX_SP um 5 erniedrigt.
+
+
+SIEHE AUCH
+==========
+
+   P_X_HEALTH_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, balance
+
+
+LETZTE AeNDERUNG
+================
+
+   Fre,11.05.2007, 00:20 von Humni
diff --git a/doc/props/P_NAME b/doc/props/P_NAME
index f609cea..1fdc261 100644
--- a/doc/props/P_NAME
+++ b/doc/props/P_NAME
@@ -1,65 +1,84 @@
+
 P_NAME
+******
 
-NAME:
-     P_NAME "name"
 
-DEFINIERT IN:
-     <thing/description.h>
+NAME
+====
 
-BESCHREIBUNG:
-     In dieser Property wird der Name eines Objektes vermerkt. Wenn der Name
-     regelmaessig dekliniert wird, reicht ein einfacher String. Wird der
-     Name unregelmaessig dekliniert, so kann man ein Array von vier Strings
-     mit dem Namen im Nominativ, Genitiv, Dativ und Akkusativ (in dieser
-     Reihenfolge) angeben.
+   P_NAME "name"
 
-     Die Funktion name() behandelt recht viele Sonderfaelle; man sollte den
-     Namen also erst einmal in der Form eines einzelnen Strings pruefen.
 
-     Eine Sonderrolle nehmen Unit-Objekte ein: Hier kann man einen Namen
-     fuer den Singular und einen Namen fuer den Plural vergeben.
+DEFINIERT IN
+============
 
-     Setzt man P_NAME eines Unit-Objekts auf einen einfachen String, so wird
-     dieser als Name sowohl im Singular als auch im Plural verwendet.
+   <thing/description.h>
 
-     Uebergibt man ein Array von Strings, so wird der erste Eintrag fuer den
-     Singular und der zweite Eintrag fuer den Plural benutzt.
 
-     Bei Unit-Objekten ist es nicht moeglich, auch noch zwischen den
-     verschiedenen Faellen zu unterscheiden.
+BESCHREIBUNG
+============
 
-BEMERKUNGEN:
-     Diese Property sollte nur den reinen Namen enthalten; will man dem
-     Namen noch Adjektive voranstellen, so sollte man dies mit P_NAME_ADJ
-     bewerkstelligen, also statt
+   In dieser Property wird der Name eines Objektes vermerkt. Wenn der Name
+   regelmaessig dekliniert wird, reicht ein einfacher String. Wird der
+   Name unregelmaessig dekliniert, so kann man ein Array von vier Strings
+   mit dem Namen im Nominativ, Genitiv, Dativ und Akkusativ (in dieser
+   Reihenfolge) angeben.
 
-     SetProp(P_NAME, ({ "alter Hut", "alten Huts",
-                        "alten Hut", "alten Hut" }) );
+   Die Funktion name() behandelt recht viele Sonderfaelle; man sollte den
+   Namen also erst einmal in der Form eines einzelnen Strings pruefen.
 
-     besser
+   Eine Sonderrolle nehmen Unit-Objekte ein: Hier kann man einen Namen
+   fuer den Singular und einen Namen fuer den Plural vergeben.
 
-     SetProp(P_NAME, "Hut");
-     SetProp(P_NAME_ADJ, "alt");
+   Setzt man P_NAME eines Unit-Objekts auf einen einfachen String, so wird
+   dieser als Name sowohl im Singular als auch im Plural verwendet.
 
-     Bei Lebewesen wird lower_case(P_NAME) (bei Arrays das erste Element 
-     daraus) automatisch als LivingName gesetzt.
+   Uebergibt man ein Array von Strings, so wird der erste Eintrag fuer den
+   Singular und der zweite Eintrag fuer den Plural benutzt.
 
-BEISPIELE:
-     Ein regelmaessig deklinierbarer Name:
+   Bei Unit-Objekten ist es nicht moeglich, auch noch zwischen den
+   verschiedenen Faellen zu unterscheiden.
 
-     SetProp(P_NAME, "Arkshat");
 
-     Hier ein Beispiel fuer einen unregelmaessig deklinierbaren Namen:
+BEMERKUNGEN
+===========
 
-     SetProp(P_NAME, ({ "Drache", "Drachen", "Drachen", "Drachen" }));
+   Diese Property sollte nur den reinen Namen enthalten; will man dem
+   Namen noch Adjektive voranstellen, so sollte man dies mit P_NAME_ADJ
+   bewerkstelligen, also statt
 
-     Und schliesslich der Name eines allseits bekannten Unit-Objektes:
+   SetProp(P_NAME, ({ "alter Hut", "alten Huts",
+                      "alten Hut", "alten Hut" }) );
 
-     SetProp(P_NAME, ({ "Muenze", "Muenzen" }));
+   besser
 
-SIEHE AUCH:
-     /std/thing/description.c, name(), P_NAME_ADJ, set_living_name(),
-     find_living(), find_livings()
+   SetProp(P_NAME, "Hut");
+   SetProp(P_NAME_ADJ, "alt");
 
-----------------------------------------------------------------------------
-Last modified: 19. Okt. 2015, Arathorn. 
+   Bei Lebewesen wird lower_case(P_NAME) (bei Arrays das erste Element
+   daraus) automatisch als LivingName gesetzt.
+
+
+BEISPIELE
+=========
+
+   Ein regelmaessig deklinierbarer Name:
+
+   SetProp(P_NAME, "Arkshat");
+
+   Hier ein Beispiel fuer einen unregelmaessig deklinierbaren Namen:
+
+   SetProp(P_NAME, ({ "Drache", "Drachen", "Drachen", "Drachen" }));
+
+   Und schliesslich der Name eines allseits bekannten Unit-Objektes:
+
+   SetProp(P_NAME, ({ "Muenze", "Muenzen" }));
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, name(), P_NAME_ADJ, set_living_name(),
+   find_living(), find_livings()
+
+Last modified: 19. Okt. 2015, Arathorn.
diff --git a/doc/props/P_NAME_ADJ b/doc/props/P_NAME_ADJ
index 2bf15e6..c4cc4a4 100644
--- a/doc/props/P_NAME_ADJ
+++ b/doc/props/P_NAME_ADJ
@@ -1,55 +1,72 @@
+
 P_NAME_ADJ
-
-NAME:
-     P_NAME_ADJ "name_adj"
-
-DEFINIERT IN:
-     <thing/description.h>
-
-BESCHREIBUNG:
-     Diese Property enthaelt ein oder mehrere Adjektive in Form eines Arrays
-     von Strings. Es ist nur der Wortstamm anzugeben! Die Adjektive werden
-     von der Funktion name() dekliniert und vor den Namen gesetzt, wirken
-     also als Aufzaehlung von Adjektiven vor dem Namen.
-
-     Die hier angegebenen Adjektive dienen nur zur Ausgabe! Soll sich das
-     Objekt auch ueber Adjektive ansprechen lassen, muss man diese mit
-     AddAdjective() uebergeben.
-
-     Soll das Objekt nur ein einzelnes Namensadjektiv besitzen, kann man dem
-     SetProp()-Aufruf auch einen String uebergeben; gespeichert wird die
-     Property aber in jedem Fall als Array.
-
-     Wenn ein Adjektiv unregelmaessig ist, kann man die vier Faelle auch
-     als Array uebergeben. Man muss dann aber Arrays schachteln, damit von den
-     mehrfachen Adjektiven unterschieden werden kann.
-	
-BEISPIELE:
-     SetProp(P_NAME, "Hut");
-     SetProp(P_NAME_ADJ, "alt");
-
-     name(WESSEN,1)      => "des alten Huts"
+**********
 
 
-     // Zwei Adjektive, gleichrangig zu Substantiv
-     SetProp(P_NAME_ADJ, ({"alt", "gammelig"}));
+NAME
+====
 
-     name(WESSEN,1)      => "des alten, gammeligen Huts"
+   P_NAME_ADJ "name_adj"
 
 
-     // Zwei Adjektive, erstes ist Attribut zu zweitem
-     falsch:  SetProp(P_NAME_ADJ, ({"gruen", "gestreift"}));
-              name(WESSEN,1)      => "des gruenen, gestreiften Huts"
-     richtig: SetProp(P_NAME_ADJ, ({"gruen gestreift"}));
-              name(WESSEN,1)      => "des gruen gestreiften Huts"
+DEFINIERT IN
+============
 
-     // Unregelmaessiges Adjektiv
-     SetProp( P_NAME_ADJ,({({"rosa","rosa","rosa","rosa"})});
-              name(WESSEN,1)         => "des rosa Huts"
-     // Ohne inneres Array haette man 4 mal rosa als Adjektiv
-     // => "des rosaen, rosaen, rosaen, rosaen Huts"
+   <thing/description.h>
 
-SIEHE AUCH:
-     /std/thing/description.c, name(), P_NAME, DeclAdj()
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein oder mehrere Adjektive in Form eines Arrays
+   von Strings. Es ist nur der Wortstamm anzugeben! Die Adjektive werden
+   von der Funktion name() dekliniert und vor den Namen gesetzt, wirken
+   also als Aufzaehlung von Adjektiven vor dem Namen.
+
+   Die hier angegebenen Adjektive dienen nur zur Ausgabe! Soll sich das
+   Objekt auch ueber Adjektive ansprechen lassen, muss man diese mit
+   AddAdjective() uebergeben.
+
+   Soll das Objekt nur ein einzelnes Namensadjektiv besitzen, kann man dem
+   SetProp()-Aufruf auch einen String uebergeben; gespeichert wird die
+   Property aber in jedem Fall als Array.
+
+   Wenn ein Adjektiv unregelmaessig ist, kann man die vier Faelle auch
+   als Array uebergeben. Man muss dann aber Arrays schachteln, damit von den
+   mehrfachen Adjektiven unterschieden werden kann.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Hut");
+   SetProp(P_NAME_ADJ, "alt");
+
+   name(WESSEN,1)      => "des alten Huts"
+
+
+   // Zwei Adjektive, gleichrangig zu Substantiv
+   SetProp(P_NAME_ADJ, ({"alt", "gammelig"}));
+
+   name(WESSEN,1)      => "des alten, gammeligen Huts"
+
+
+   // Zwei Adjektive, erstes ist Attribut zu zweitem
+   falsch:  SetProp(P_NAME_ADJ, ({"gruen", "gestreift"}));
+            name(WESSEN,1)      => "des gruenen, gestreiften Huts"
+   richtig: SetProp(P_NAME_ADJ, ({"gruen gestreift"}));
+            name(WESSEN,1)      => "des gruen gestreiften Huts"
+
+   // Unregelmaessiges Adjektiv
+   SetProp( P_NAME_ADJ,({({"rosa","rosa","rosa","rosa"})});
+            name(WESSEN,1)         => "des rosa Huts"
+   // Ohne inneres Array haette man 4 mal rosa als Adjektiv
+   // => "des rosaen, rosaen, rosaen, rosaen Huts"
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, name(), P_NAME, DeclAdj()
 
 23.April 2007 Rumata
diff --git a/doc/props/P_NEEDED_QP b/doc/props/P_NEEDED_QP
index e38f9eb..2df4c78 100644
--- a/doc/props/P_NEEDED_QP
+++ b/doc/props/P_NEEDED_QP
@@ -1,15 +1,31 @@
-NAME:
-    P_NEEDED_QP                   "needed_qp"                   
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_NEEDED_QP
+***********
 
-BESCHREIBUNG:
-     APs, die man fuer den Seherstatus braucht
 
-     Diese Property ist mittlerweile obsolet. Die
-     aktuell geltenden Seher-Anforderungen stehen in
-     /secure/lepmaster.h
+NAME
+====
 
-LETZTE AENDERUNG:
-     2006-09-30, Zook.
\ No newline at end of file
+   P_NEEDED_QP                   "needed_qp"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   APs, die man fuer den Seherstatus braucht
+
+   Diese Property ist mittlerweile obsolet. Die
+   aktuell geltenden Seher-Anforderungen stehen in
+   /secure/lepmaster.h
+
+
+LETZTE AENDERUNG
+================
+
+   2006-09-30, Zook.
diff --git a/doc/props/P_NETDEAD_ENV b/doc/props/P_NETDEAD_ENV
index b2d6317..2e46f5d 100644
--- a/doc/props/P_NETDEAD_ENV
+++ b/doc/props/P_NETDEAD_ENV
@@ -1,24 +1,43 @@
-NAME:
-    P_NETDEAD_ENV                  "netdead_env"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_NETDEAD_ENV
+*************
 
-BESCHREIBUNG:
-    Diese Property kann in netztoten Spielern abgefragt werden,
-		um herauszufinden, in welchem Raum sie netztot geworden sind.
 
-		Es wird der selbe Wert zurueckgegeben, den die Mudlib benutzen
-		wuerde, um die Spieler beim reconnect wieder an den richtigen
-		ort zu bringen. Das ist normalerweise das Raumobjekt oder der
-		Dateiname des Raums (zum Beispiel so dieser ein clone war).
+NAME
+====
 
-		Bei nicht netztoten Spielern wird 0 zurueckgegeben.
+   P_NETDEAD_ENV                  "netdead_env"
 
-BEMERKUNGEN:
-    Diese Property ist read-only.
 
-SIEHE AUCH:
-    P_NETDEAD_INFO
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann in netztoten Spielern abgefragt werden,
+               um herauszufinden, in welchem Raum sie netztot geworden sind.
+
+               Es wird der selbe Wert zurueckgegeben, den die Mudlib benutzen
+               wuerde, um die Spieler beim reconnect wieder an den richtigen
+               ort zu bringen. Das ist normalerweise das Raumobjekt oder der
+               Dateiname des Raums (zum Beispiel so dieser ein clone war).
+
+               Bei nicht netztoten Spielern wird 0 zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property ist read-only.
+
+
+SIEHE AUCH
+==========
+
+   P_NETDEAD_INFO
 
 2009-08-04 Rumata
diff --git a/doc/props/P_NETDEAD_INFO b/doc/props/P_NETDEAD_INFO
index 83c36fd..fe96ac6 100644
--- a/doc/props/P_NETDEAD_INFO
+++ b/doc/props/P_NETDEAD_INFO
@@ -1,91 +1,120 @@
-NAME:
-    P_NETDEAD_INFO                "netdead_info"                
 
-DEFINIERT IN:
-    /sys/player.h
+P_NETDEAD_INFO
+**************
 
-BESCHREIBUNG:
-     Wird im Raum X gesetzt und wirkt nur, falls dieser Raum ein '#' im
-     object_name() hat (normale Clones, zB "/room/void#10153018").
-     
-     Bei Einschlafen eines Spielers in diesem Raum werden die Werte aus
-     der Property im Spieler gespeichert (Netztoteninformationen).
 
-     Ist beim Aufwachen des Spielers das Raumobjekt X zerstoert worden, dann
-     wird bei der Blueprint von X per SetProp() die gespeicherte Information
-     gesetzt. Der Rueckgabewert des SetProp wird als Pfad zu einem Ausweich-
-     Aufwach-Raum interpretiert und der Spieler wird in dem Fall dorthin
-     bewegt.
+NAME
+====
 
-BEMERKUNGEN:
-     Zum Clonen von Raeumen sollten Virtual Compiler benutzt werden:
-     Wird in den erzeugten Objektnamen KEIN '#' verwendet, dann ist diese
-     Property nicht sinnvoll und wird nicht verwendet. Ein ordentlicher
-     VC kann Bewegen eines Spielers in dessen alten, nicht mehr existierenden
-     Raum oder einen Ersatzraum beim Aufwachen selbst loesen.
+   P_NETDEAD_INFO                "netdead_info"
 
-BEISPIELE:
-     // #1: geclonter Raum mit Ausweich-Aufwachraum: Klerus-Gilde
-     #include <properties.h>
-     inherit "/std/room";
-     
-     void create() {
-       ::create();
 
-       SetProp(P_NETDEAD_INFO, "/gilden/klerus");
-       SetProp(P_LIGHT, 1);
-     }
-     
-     // #2: komplexerer Beispielraum fuer P_NETDEAD_INFO-Funktionalitaet
-     // Siehe auch: /doc/beispiele/testobjekte/netdead_info_testraum.c
-     #include <properties.h>
-     inherit "/std/room";
+DEFINIERT IN
+============
 
-     void create() {
-       ::create();
+   /sys/player.h
 
-       if (clonep(this_object()))
-         // setze Informationen, die im Netztoten gespeichert werden sollen
-         Set(P_NETDEAD_INFO, random(5));
-       else
-         // Blueprint: hier kann man zu einem Cloneraum gehen
-         AddExit("cloneraum", #'create_room);
 
-       // Set-Method, um die Informationen aus P_NETDEAD_INFO beim Aufwachen
-       // in der Blueprint auswerten zu koennen
-       Set(P_NETDEAD_INFO, #'create_destiny, F_SET_METHOD);
-       SetProp(P_LIGHT, 1);
-     }
-     
-     // Raum entfernen, normalerweise so KEINE GUTE IDEE!
-     void BecomesNetDead(object pl) {
-       call_out(#'remove, 30);
-     }
+BESCHREIBUNG
+============
 
-     // erzeuge einen Cloneraum und bewege den Spieler dahin
-     int create_room(string dir) {
-       object dest = clone_object(object_name(this_object()));
-       this_player()->move(dest, M_NOCHECK);
-       return 1;
-     }
-     
-     // Set-Method fuer P_NETDEAD_INFO: gibt Pfad zurueck
-     // benutze die Informationen aus dem jetzt aufwachenden Netztoten, um
-     // einen alternativen Aufwachraum zu ermitteln, da der Einschlafraum
-     // zerstoert ist
-     string create_destiny(mixed val) {
-       if (intp(val)) {
-         switch (val) {
-           case 0:
-             return "/d/ebene/room/PortVain/po_haf1";
-           case 1:
-             return "/gilden/klerus";
-           case 2:
-             return "/gilden/karate";
-           default:
-         }
-         return "/d/ebene/room/waldweg4";
+   Wird im Raum X gesetzt und wirkt nur, falls dieser Raum ein '#' im
+   object_name() hat (normale Clones, zB "/room/void#10153018").
+
+
+
+   Bei Einschlafen eines Spielers in diesem Raum werden die Werte aus
+   der Property im Spieler gespeichert (Netztoteninformationen).
+
+   Ist beim Aufwachen des Spielers das Raumobjekt X zerstoert worden, dann
+   wird bei der Blueprint von X per SetProp() die gespeicherte Information
+   gesetzt. Der Rueckgabewert des SetProp wird als Pfad zu einem Ausweich-
+   Aufwach-Raum interpretiert und der Spieler wird in dem Fall dorthin
+   bewegt.
+
+
+BEMERKUNGEN
+===========
+
+   Zum Clonen von Raeumen sollten Virtual Compiler benutzt werden:
+   Wird in den erzeugten Objektnamen KEIN '#' verwendet, dann ist diese
+   Property nicht sinnvoll und wird nicht verwendet. Ein ordentlicher
+   VC kann Bewegen eines Spielers in dessen alten, nicht mehr existierenden
+   Raum oder einen Ersatzraum beim Aufwachen selbst loesen.
+
+
+BEISPIELE
+=========
+
+   // #1: geclonter Raum mit Ausweich-Aufwachraum: Klerus-Gilde
+   #include <properties.h>
+   inherit "/std/room";
+
+
+
+   void create() {
+     ::create();
+
+     SetProp(P_NETDEAD_INFO, "/gilden/klerus");
+     SetProp(P_LIGHT, 1);
+   }
+
+
+
+   // #2: komplexerer Beispielraum fuer P_NETDEAD_INFO-Funktionalitaet
+   // Siehe auch: /doc/beispiele/testobjekte/netdead_info_testraum.c
+   #include <properties.h>
+   inherit "/std/room";
+
+   void create() {
+     ::create();
+
+     if (clonep(this_object()))
+       // setze Informationen, die im Netztoten gespeichert werden sollen
+       Set(P_NETDEAD_INFO, random(5));
+     else
+       // Blueprint: hier kann man zu einem Cloneraum gehen
+       AddExit("cloneraum", #'create_room);
+
+     // Set-Method, um die Informationen aus P_NETDEAD_INFO beim Aufwachen
+     // in der Blueprint auswerten zu koennen
+     Set(P_NETDEAD_INFO, #'create_destiny, F_SET_METHOD);
+     SetProp(P_LIGHT, 1);
+   }
+
+
+
+   // Raum entfernen, normalerweise so KEINE GUTE IDEE!
+   void BecomesNetDead(object pl) {
+     call_out(#'remove, 30);
+   }
+
+   // erzeuge einen Cloneraum und bewege den Spieler dahin
+   int create_room(string dir) {
+     object dest = clone_object(object_name(this_object()));
+     this_player()->move(dest, M_NOCHECK);
+     return 1;
+   }
+
+
+
+   // Set-Method fuer P_NETDEAD_INFO: gibt Pfad zurueck
+   // benutze die Informationen aus dem jetzt aufwachenden Netztoten, um
+   // einen alternativen Aufwachraum zu ermitteln, da der Einschlafraum
+   // zerstoert ist
+   string create_destiny(mixed val) {
+     if (intp(val)) {
+       switch (val) {
+         case 0:
+           return "/d/ebene/room/PortVain/po_haf1";
+         case 1:
+           return "/gilden/klerus";
+         case 2:
+           return "/gilden/karate";
+         default:
        }
+       return "/d/ebene/room/waldweg4";
      }
+   }
 
 2. Jan 2012 Gloinson
diff --git a/doc/props/P_NEVERDROP b/doc/props/P_NEVERDROP
index 80364ce..d0cdf41 100644
--- a/doc/props/P_NEVERDROP
+++ b/doc/props/P_NEVERDROP
@@ -1,29 +1,50 @@
-NAME:
-	P_NEVERDROP			"neverdrop"
 
-DEFINIERT IN:
-	/sys/thing/moving.h
+P_NEVERDROP
+***********
 
-BESCHREIBUNG:
-	Objekte, welche diese Property gesetzt haben, werden beim Tod eines
-	Lebewesens nicht automatisch in die Leiche oder in den umgebenden
-	Raum (z.B. bei bei gesetztem P_NOCORPSE) transportiert.
 
-BEMERKUNGEN:
-	Soll das Objekt vom Lebewesen nicht weggelegt werden koennen, so ist
-	die Property P_NODROP zu verwenden.
-	Beide Properties zusammen stellen sicher, dass ein Objekt nicht
-	weitergegeben werden kann.
+NAME
+====
 
-BEISPIELE:
-	Eine dauerhafte Belohnung, die auch beim Tod des Spielers bei ihm
-	verbleiben soll, setzt das so:
-	  SetProp(P_NEVERDROP,1);
-	Sollen auch Reboots ueberstanden werden, ist zusaetzlich
-	P_AUTOLOADOBJ zu setzen.
+   P_NEVERDROP                     "neverdrop"
 
-SIEHE AUCH:
-	P_NODROP, P_NOGET, P_NOCORPSE, P_AUTOLOADOBJ, /std/living/life.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Objekte, welche diese Property gesetzt haben, werden beim Tod eines
+   Lebewesens nicht automatisch in die Leiche oder in den umgebenden
+   Raum (z.B. bei bei gesetztem P_NOCORPSE) transportiert.
+
+
+BEMERKUNGEN
+===========
+
+   Soll das Objekt vom Lebewesen nicht weggelegt werden koennen, so ist
+   die Property P_NODROP zu verwenden.
+   Beide Properties zusammen stellen sicher, dass ein Objekt nicht
+   weitergegeben werden kann.
+
+
+BEISPIELE
+=========
+
+   Eine dauerhafte Belohnung, die auch beim Tod des Spielers bei ihm
+   verbleiben soll, setzt das so:
+     SetProp(P_NEVERDROP,1);
+   Sollen auch Reboots ueberstanden werden, ist zusaetzlich
+   P_AUTOLOADOBJ zu setzen.
+
+
+SIEHE AUCH
+==========
+
+   P_NODROP, P_NOGET, P_NOCORPSE, P_AUTOLOADOBJ, /std/living/life.c
+
 Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/props/P_NEVER_CLEAN b/doc/props/P_NEVER_CLEAN
index 5a84820..fc568ff 100644
--- a/doc/props/P_NEVER_CLEAN
+++ b/doc/props/P_NEVER_CLEAN
@@ -1,35 +1,53 @@
-NAME:
-	P_NEVER_CLEAN			" never clean "                   
 
-DEFINIERT IN:
-	/sys/rooms.h
+P_NEVER_CLEAN
+*************
 
-BESCHREIBUNG:
-	Normalerweise wird ein Raum nach 2 Resets zerstoert, wenn er waerend
-	dieser Zeit von keinem Lebewesen betreten wurde und wenn
-	keine REFRESH_NONE- oder REFRESH_DESTRUCT-Objekte existieren, die
-	nicht mehr im Raum vorhanden sind.
-	Mit dieser Property kann man den sogenannten Clean-Up unterbinden.
 
-BEISPIEL:
-	Der folgende Raum wird nicht mehr zerstoert, wenn er einmal geladen
-	wurde:
-	  #include <properties.h>
-	  // #include <rooms.h> ... wird schon von properties.h included!
-	  inherit "std/room";
-	  void create()
-	  { ::create();
-	    SetProp(P_SHORT,"Ein toller Raum");
-	    ...
-	    SetProp(P_NEVER_CLEAN,1);
-	    ...
-	  }
-	Man sollte die Anwendung nicht uebertreiben! Wichtig ist diese
-	Funktion zum Beispiel fuer Raeume, die gleichzeitig Masterobjekte
-	darstellen.
+NAME
+====
 
-SIEHE AUCH:
-	/std/room.c
+   P_NEVER_CLEAN                   " never clean "
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/rooms.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise wird ein Raum nach 2 Resets zerstoert, wenn er waerend
+   dieser Zeit von keinem Lebewesen betreten wurde und wenn
+   keine REFRESH_NONE- oder REFRESH_DESTRUCT-Objekte existieren, die
+   nicht mehr im Raum vorhanden sind.
+   Mit dieser Property kann man den sogenannten Clean-Up unterbinden.
+
+
+BEISPIEL
+========
+
+   Der folgende Raum wird nicht mehr zerstoert, wenn er einmal geladen
+   wurde:
+     #include <properties.h>
+     // #include <rooms.h> ... wird schon von properties.h included!
+     inherit "std/room";
+     void create()
+     { ::create();
+       SetProp(P_SHORT,"Ein toller Raum");
+       ...
+       SetProp(P_NEVER_CLEAN,1);
+       ...
+     }
+   Man sollte die Anwendung nicht uebertreiben! Wichtig ist diese
+   Funktion zum Beispiel fuer Raeume, die gleichzeitig Masterobjekte
+   darstellen.
+
+
+SIEHE AUCH
+==========
+
+   /std/room.c
+
 Last modified: Wed Feb  3 00:54:32 1999 by Patryn
diff --git a/doc/props/P_NEWSKILLS b/doc/props/P_NEWSKILLS
index 66ba1ff..7cb61c7 100644
--- a/doc/props/P_NEWSKILLS
+++ b/doc/props/P_NEWSKILLS
@@ -1,20 +1,38 @@
-NAME:
-	P_NEWSKILLS			"newskills"                   
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_NEWSKILLS
+***********
 
-BESCHREIBUNG:
-	In dieser Property sind saemtliche Skills und Spells vermerkt, die
-	das Lebewesen kennt.
 
-BEMERKUNGEN:
-	Man sollte diese Property nicht per Hand veraendern, sondern die
-	Funktionen von "/std/living/skills.c" nutzen.
+NAME
+====
 
-SIEHE AUCH:
-	ModifySkill(), LearnSkill(), UseSkill(), /std/living/skills.c,
-	P_GUILD_SKILLS, P_SB_SPELLS
+   P_NEWSKILLS                     "newskills"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property sind saemtliche Skills und Spells vermerkt, die
+   das Lebewesen kennt.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen von "/std/living/skills.c" nutzen.
+
+
+SIEHE AUCH
+==========
+
+   ModifySkill(), LearnSkill(), UseSkill(), /std/living/skills.c,
+   P_GUILD_SKILLS, P_SB_SPELLS
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_NEXT_DEATH_SEQUENCE b/doc/props/P_NEXT_DEATH_SEQUENCE
index 4ae7e7a..6992a32 100644
--- a/doc/props/P_NEXT_DEATH_SEQUENCE
+++ b/doc/props/P_NEXT_DEATH_SEQUENCE
@@ -1,48 +1,68 @@
+
 P_NEXT_DEATH_SEQUENCE
+*********************
 
-NAME:
-     P_NEXT_DEATH_SEQUENCE         "p_lib_next_death_sequence"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-     Im Spieler kann damit dessen eigene Todessequenz fuer den naechsten
-     Tod festgelegt werden. Nach einem Tod (egal welche Todessequenz
-     gewaehlt wurde) wird die Property geloescht und muesste neu gesetzt
-     werden.
+   P_NEXT_DEATH_SEQUENCE         "p_lib_next_death_sequence"
 
-     Es gibt folgende gueltige Werte:
-     - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
-     - mixed*  Eine Todessequenz im Format des Todesraumes:
-               ({<int gesamtlaenge>,
-                 ([<int index1>: <string umgebrochene Meldung1>,
-                   <int index2>: <string umgebrochene Meldung2>,
-                   ...])
-               })
-     - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
-               ([<int zeitindex>: <string umgebrochener Text>])
 
-BEMERKUNGEN:
-     Eine Todessequenz eines Gegners, festgelegt ueber
-     P_ENEMY_DEATH_SEQUENCE hat Vorrang vor dieser Property.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     // Pfad zu einer eigenen DSQ
-     SetProp(P_NEXT_DEATH_SEQUENCE,  ".../passende_dsq.txt");
+   /sys/living/combat.h
 
-     // eigene DSQ im Todesraumformat:
-     SetProp(P_NEXT_DEATH_SEQUENCE,
-             ({ 2, ([1: "Der Tod entlaesst dich eilig.\n"])}));
 
-     // Einfuegen einer Meldung in die Standard-Todessequenz
-     SetProp(P_NEXT_DEATH_SEQUENCE,
-             ([5: "Du fuehlst dich etwas daemlich.\n"]));
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     Tod:            die(L)
-     Todesmeldungen: P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
-                     P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:      P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+   Im Spieler kann damit dessen eigene Todessequenz fuer den naechsten
+   Tod festgelegt werden. Nach einem Tod (egal welche Todessequenz
+   gewaehlt wurde) wird die Property geloescht und muesste neu gesetzt
+   werden.
 
-10. Nov 2011 Gloinson
\ No newline at end of file
+   Es gibt folgende gueltige Werte:
+   - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
+   - mixed*  Eine Todessequenz im Format des Todesraumes:
+             ({<int gesamtlaenge>,
+               ([<int index1>: <string umgebrochene Meldung1>,
+                 <int index2>: <string umgebrochene Meldung2>,
+                 ...])
+             })
+   - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
+             ([<int zeitindex>: <string umgebrochener Text>])
+
+
+BEMERKUNGEN
+===========
+
+   Eine Todessequenz eines Gegners, festgelegt ueber
+   P_ENEMY_DEATH_SEQUENCE hat Vorrang vor dieser Property.
+
+
+BEISPIELE
+=========
+
+   // Pfad zu einer eigenen DSQ
+   SetProp(P_NEXT_DEATH_SEQUENCE,  ".../passende_dsq.txt");
+
+   // eigene DSQ im Todesraumformat:
+   SetProp(P_NEXT_DEATH_SEQUENCE,
+           ({ 2, ([1: "Der Tod entlaesst dich eilig.\n"])}));
+
+   // Einfuegen einer Meldung in die Standard-Todessequenz
+   SetProp(P_NEXT_DEATH_SEQUENCE,
+           ([5: "Du fuehlst dich etwas daemlich.\n"]));
+
+
+SIEHE AUCH
+==========
+
+   Tod:            die(L)
+   Todesmeldungen: P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                   P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:      P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+10. Nov 2011 Gloinson
diff --git a/doc/props/P_NEXT_DISABLE_ATTACK b/doc/props/P_NEXT_DISABLE_ATTACK
index 7019ac6..6a9eea3 100644
--- a/doc/props/P_NEXT_DISABLE_ATTACK
+++ b/doc/props/P_NEXT_DISABLE_ATTACK
@@ -1,31 +1,52 @@
-PROPERTY
-  P_NEXT_DISABLE_ATTACK    "next_diable_attack"
 
-DEFINIERT IN 
-  combat.h
+P_NEXT_DISABLE_ATTACK
+*********************
+
+
+PROPERTY
+========
+
+   P_NEXT_DISABLE_ATTACK    "next_diable_attack"
+
+
+DEFINIERT IN
+============
+
+   combat.h
+
 
 BESCHREIBUNG
-  Diese Property gibt an, wann der NPC das naechste Mal paralysiert
-  werden kann. Ueblicherweise wird sie automatisch beim Setzen
-  von P_DISABLE_ATTACK gesetzt. Sie gibt einen Zeitpunkt wie
-  die Funktion time() an, an dem zum ersten Mal wieder Paralyse
-  moeglich ist.
+============
 
-  Will man einen NPC schreiben, der immer paralysierbar ist und nicht erst
-  nach einer gewissen Wartezeit nach der letzten Paralyse, laesst sich dies
-  durch eine Set-Methode auf P_NEXT_DISABLE_ATTACK erreichen:
-    
-  Set(P_NEXT_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);
+   Diese Property gibt an, wann der NPC das naechste Mal paralysiert
+   werden kann. Ueblicherweise wird sie automatisch beim Setzen
+   von P_DISABLE_ATTACK gesetzt. Sie gibt einen Zeitpunkt wie
+   die Funktion time() an, an dem zum ersten Mal wieder Paralyse
+   moeglich ist.
 
-  Diese Set-Methode verhindert das Setzen von P_NEXT_DISABLE_ATTACK mittels
-  eines SetProp-Aufrufes.
+   Will man einen NPC schreiben, der immer paralysierbar ist und nicht erst
+   nach einer gewissen Wartezeit nach der letzten Paralyse, laesst sich dies
+   durch eine Set-Methode auf P_NEXT_DISABLE_ATTACK erreichen:
 
-BEMERKUNGEN:
-  Die Zeit zum Schutz vor erneuter Paralyse existiert absichtlich. Bitte
-  waegt sorgfaeltig ab, bevor ihr diese Property an Gegnern/Spielern
-  manipuliert.
 
-SIEHE AUCH:
-  P_DISABLE_ATTACK
+
+   Set(P_NEXT_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);
+
+   Diese Set-Methode verhindert das Setzen von P_NEXT_DISABLE_ATTACK mittels
+   eines SetProp-Aufrufes.
+
+
+BEMERKUNGEN
+===========
+
+   Die Zeit zum Schutz vor erneuter Paralyse existiert absichtlich. Bitte
+   waegt sorgfaeltig ab, bevor ihr diese Property an Gegnern/Spielern
+   manipuliert.
+
+
+SIEHE AUCH
+==========
+
+   P_DISABLE_ATTACK
 
 21.Jul 2014 Gloinson
diff --git a/doc/props/P_NOBUY b/doc/props/P_NOBUY
index 561bbba..27f6c70 100644
--- a/doc/props/P_NOBUY
+++ b/doc/props/P_NOBUY
@@ -1,10 +1,23 @@
-NAME:
-    P_NOBUY                       "nobuy"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_NOBUY
+*******
 
-BESCHREIBUNG:
-     Wenn diese Property gesetzt ist, wird das Objekt nach einem
-     Verkauf im Laden zerstoert, damit es nicht wieder von einem Spieler
-     gekauft werden kann.
+
+NAME
+====
+
+   P_NOBUY                       "nobuy"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist, wird das Objekt nach einem
+   Verkauf im Laden zerstoert, damit es nicht wieder von einem Spieler
+   gekauft werden kann.
diff --git a/doc/props/P_NOCORPSE b/doc/props/P_NOCORPSE
index 799391a..15d5de2 100644
--- a/doc/props/P_NOCORPSE
+++ b/doc/props/P_NOCORPSE
@@ -1,30 +1,51 @@
-NAME:
-	P_NOCORPSE			"nocorpse"
 
-DEFINIERT IN:
-	/sys/properties.h
+P_NOCORPSE
+**********
 
-BESCHREIBUNG:
-	Diese Property ist gesetzt, wenn im Todesfall kein Leichnam
-	automatisch erzeugt werden soll.
 
-BEMERKUNGEN:
-	In diesem Fall wird die Property P_CORPSE ignoriert, mit der man
-	ein spezielles Leichenobjekt angeben kann, sofern nicht die
-	Standardleiche "/std/corpse.c" verwendet werden soll.
-	Da die Moerdermeldungen ueber ebendiese Objekt laufen, werden
-	hierbei auch keine ausgegeben.
+NAME
+====
 
-BEISPIELE:
-	Das Lebewesen soll keine Leiche hinterlassen, weil es zu Staub
-	zerfaellt:
-	  SetProp(P_DIE_MSG," zerfaellt zu Staub!\n");
-	  SetProp(P_NOCORPSE,1)
-	Es wurde auch gleich die Sterbemeldung dementsprechend gesetzt.
+   P_NOCORPSE                      "nocorpse"
 
-SIEHE AUCH:
-	P_CORPSE, P_ZAP_MSG, P_DIE_MSG, P_MURDER_MSG, P_KILL_MSG,
-	P_NEVERDROP, /std/corpse.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property ist gesetzt, wenn im Todesfall kein Leichnam
+   automatisch erzeugt werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   In diesem Fall wird die Property P_CORPSE ignoriert, mit der man
+   ein spezielles Leichenobjekt angeben kann, sofern nicht die
+   Standardleiche "/std/corpse.c" verwendet werden soll.
+   Da die Moerdermeldungen ueber ebendiese Objekt laufen, werden
+   hierbei auch keine ausgegeben.
+
+
+BEISPIELE
+=========
+
+   Das Lebewesen soll keine Leiche hinterlassen, weil es zu Staub
+   zerfaellt:
+     SetProp(P_DIE_MSG," zerfaellt zu Staub!\n");
+     SetProp(P_NOCORPSE,1)
+   Es wurde auch gleich die Sterbemeldung dementsprechend gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_CORPSE, P_ZAP_MSG, P_DIE_MSG, P_MURDER_MSG, P_KILL_MSG,
+   P_NEVERDROP, /std/corpse.c
+
 Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/props/P_NODRINK_MSG b/doc/props/P_NODRINK_MSG
index 3f847c7..a3407c7 100644
--- a/doc/props/P_NODRINK_MSG
+++ b/doc/props/P_NODRINK_MSG
@@ -1,25 +1,46 @@
-NAME:
-     P_NODRINK_MSG                 "std_food_nodrink_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_NODRINK_MSG
+*************
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn versucht wird, ein Nicht-Getraenk
-     zu trinken. Sobald eine Speise einen Wert in P_FOOD setzt, gilt es als
-     Nicht-Getraenk.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "@WEN1 kann man nicht trinken!"
 
-SIEHE AUCH:
-     P_FOOD, P_DRINK, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_NODRINK_MSG                 "std_food_nodrink_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn versucht wird, ein Nicht-Getraenk
+   zu trinken. Sobald eine Speise einen Wert in P_FOOD setzt, gilt es als
+   Nicht-Getraenk.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WEN1 kann man nicht trinken!"
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_DRINK, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_NODROP b/doc/props/P_NODROP
index 37eb5b5..786cdea 100644
--- a/doc/props/P_NODROP
+++ b/doc/props/P_NODROP
@@ -1,39 +1,60 @@
-NAME:
-	P_NODROP			"nodrop"                      
 
-DEFINIERT IN:
-	/sys/thing/moving.h
+P_NODROP
+********
 
-BESCHREIBUNG:
-	Ist diese Property in einem Objekt gesetzt, so kann ein Lebewesen
-	das Objekt nicht weglegen.
-	Als Standardmeldung kommt in diesem Fall beispielsweise:
-	  Du kannst <Objektname> nicht wegwerfen!
-	  Du kannst <Objektname> nicht weggeben.
-	Man kann auch eine alternative Meldung angeben, wobei selbstaendig
-	auf einen korrekten Zeilenumbruch zu achten ist.
 
-BEMERKUNGEN:
-	Soll ein Objekt beim Tod des Lebewesens oder bei Ende eines Spielers
-	nicht in der Leiche bzw. im Raum zurueckgelassen werden, so ist
-	die Property P_NEVERDROP zu nutzen.
-	Beide Properties zusammen stellen sicher, dass ein Objekt nicht
-	weitergegeben werden kann.
+NAME
+====
 
-BEISPIELE:
-	Ein schwer zu erkaempfender Dolch koennte folgendes beinhalten,
-	um nicht weitergegeben werden zu koennen:
-	  SetProp(P_NODROP,1);
-	Informativer jedoch ist eine eigene Meldung:
-	  SetProp(P_NODROP,
-	 "Den Dolch hast Du Dir hart erkaempft, nicht wegwerfen!\n");
+   P_NODROP                        "nodrop"
 
-SIEHE AUCH:
-     Aehnliches: P_NOGET, P_NEVERDROP, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG,
-                 P_TOO_MANY_MSG, P_NOINSERT_MSG, P_NOLEAVE_MSG,  
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property in einem Objekt gesetzt, so kann ein Lebewesen
+   das Objekt nicht weglegen.
+   Als Standardmeldung kommt in diesem Fall beispielsweise:
+     Du kannst <Objektname> nicht wegwerfen!
+     Du kannst <Objektname> nicht weggeben.
+   Man kann auch eine alternative Meldung angeben, wobei selbstaendig
+   auf einen korrekten Zeilenumbruch zu achten ist.
+
+
+BEMERKUNGEN
+===========
+
+   Soll ein Objekt beim Tod des Lebewesens oder bei Ende eines Spielers
+   nicht in der Leiche bzw. im Raum zurueckgelassen werden, so ist
+   die Property P_NEVERDROP zu nutzen.
+   Beide Properties zusammen stellen sicher, dass ein Objekt nicht
+   weitergegeben werden kann.
+
+
+BEISPIELE
+=========
+
+   Ein schwer zu erkaempfender Dolch koennte folgendes beinhalten,
+   um nicht weitergegeben werden zu koennen:
+     SetProp(P_NODROP,1);
+   Informativer jedoch ist eine eigene Meldung:
+     SetProp(P_NODROP,
+    "Den Dolch hast Du Dir hart erkaempft, nicht wegwerfen!\n");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_NOGET, P_NEVERDROP, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG,
+               P_TOO_MANY_MSG, P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+
 Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/props/P_NOFOOD_MSG b/doc/props/P_NOFOOD_MSG
index c367b7c..d195c5e 100644
--- a/doc/props/P_NOFOOD_MSG
+++ b/doc/props/P_NOFOOD_MSG
@@ -1,25 +1,46 @@
-NAME:
-     P_NOFOOD_MSG                  "std_food_nofood_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_NOFOOD_MSG
+************
 
-BESCHREIBUNG:
-     Meldung an den Konsumenten, wenn versucht wird, ein Getraenk zu essen.
-     Sobald eine Speise keinen Wert in P_FOOD und einen Wert in P_DRINK
-     setzt, gilt es als Getraenk.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "@WEN1 kann man nicht essen!"
 
-SIEHE AUCH:
-     P_FOOD, P_DRINK, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_NOFOOD_MSG                  "std_food_nofood_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn versucht wird, ein Getraenk zu essen.
+   Sobald eine Speise keinen Wert in P_FOOD und einen Wert in P_DRINK
+   setzt, gilt es als Getraenk.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WEN1 kann man nicht essen!"
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_DRINK, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_NOGET b/doc/props/P_NOGET
index af3ed1d..17a6248 100644
--- a/doc/props/P_NOGET
+++ b/doc/props/P_NOGET
@@ -1,31 +1,49 @@
-NAME:
-	P_NOGET				"noget"
 
-DEFINIERT IN:
-	/sys/thing/moving.h
+P_NOGET
+*******
 
-BESCHREIBUNG:
-	Ist diese Property in einem Objekt gesetzt, so kann ein Lebewesen
-	das Objekt nicht nehmen.
-	Als Standardmeldung kommt in diesem Fall beispielsweise:
-	  Du kannst <Objektname> nicht nehmen.
-	  Du kannst <Objektname> so nirgendwo reinstecken.
-	Man kann auch eine alternative Meldung angeben, wobei selbstaendig
-	auf einen korrekten Zeilenumbruch zu achten ist.
 
-BEISPIELE:
-	Ein Objekt, welches fest im Raum verankert ist, kann natuerlich
-	nicht entfernt werden, z.B. ein angebundenes Seil:
-	  SetProp(P_NOGET,"Das Seil ist fest am Baum verknotet!\n");
-	In einem Kommando zum Losknoten koennte man die Property dann
-	loeschen, um ein Wegnehmen zu ermoeglichen.
+NAME
+====
 
-SIEHE AUCH:
-     Aehnliches: P_NODROP, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG,
-                 P_TOO_MANY_MSG, P_NOINSERT_MSG, P_NOLEAVE_MSG 
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+   P_NOGET                         "noget"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property in einem Objekt gesetzt, so kann ein Lebewesen
+   das Objekt nicht nehmen.
+   Als Standardmeldung kommt in diesem Fall beispielsweise:
+     Du kannst <Objektname> nicht nehmen.
+     Du kannst <Objektname> so nirgendwo reinstecken.
+   Man kann auch eine alternative Meldung angeben, wobei selbstaendig
+   auf einen korrekten Zeilenumbruch zu achten ist.
+
+
+BEISPIELE
+=========
+
+   Ein Objekt, welches fest im Raum verankert ist, kann natuerlich
+   nicht entfernt werden, z.B. ein angebundenes Seil:
+     SetProp(P_NOGET,"Das Seil ist fest am Baum verknotet!\n");
+   In einem Kommando zum Losknoten koennte man die Property dann
+   loeschen, um ein Wegnehmen zu ermoeglichen.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_NODROP, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG,
+               P_TOO_MANY_MSG, P_NOINSERT_MSG, P_NOLEAVE_MSG
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+
 Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/props/P_NOINSERT_MSG b/doc/props/P_NOINSERT_MSG
index a79994e..de7d8e8 100644
--- a/doc/props/P_NOINSERT_MSG
+++ b/doc/props/P_NOINSERT_MSG
@@ -1,46 +1,65 @@
-NAME:
-    P_NOINSERT_MSG                      "noinsert_msg"                      
 
-DEFINIERT IN:
-    /sys/thing/moving.h
+P_NOINSERT_MSG
+**************
 
-BESCHREIBUNG:
-     Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
-     jemand versucht, ein Objekt in einen Behaelter zu bewegen und der
-     Behaelter dieses im PreventInsert() verhindert.
-     Die Property ist im Zielbehaelter zu setzen.
-     Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
-     so wird die Standardmeldung ausgegeben.
-     ("<Objekt> kannst Du dort nicht hineinstecken.")
-     Der String in der Property wird noch durch replace_personal()
-     verarbeitet, das zu bewegende Objekt wird als erstes, der Zielbehaelter
-     als zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
-     umgebrochen.
-     Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
-     ganz.
 
-BEISPIELE:
-     1. Ein Kochtopf laesst im PreventInsert nur bestimmte Objekte zu, die zu
-     einer Suppe gehoeren. Fuer eine passende Meldung wird im Topf jetzt die
-     Property gesetzt:
-     SetProp(P_NOINSERT_MSG, "Du kannst @WEN1 nicht in den Kochtopf tun, da"
-	                     " gehoeren doch nur Suppenzutaten rein!");
-     Wenn jemand jetzt versucht, eine Muenze reinzustecken, dann wuerde
-     folgende Meldung erscheinen:
-	Du kannst die Muenze nicht in den Kochtopf tun, da gehoeren doch nur
-	Suppenzutaten rein!
+NAME
+====
 
-     2. Ein Rucksack soll in einer bestimmten Reihenfolge gepackt werden, dazu
-     kann im PreventInsert die Meldung je nach Bedarf gesetzt werden:
-     if (<objekt noch nicht an der Reihe>)
-	SetProp(P_NOINSERT_MSG, "@WEN1 solltest du erst spaeter einpacken.");
-     else if (<objekt schon im Rucksack>)
-	SetProp(P_NOINSERT_MSG, "Aber @WER1 ist doch schon eingepackt!");
-     else ...
+   P_NOINSERT_MSG                      "noinsert_msg"
 
-SIEHE AUCH:
-     Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
-                 P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
+   jemand versucht, ein Objekt in einen Behaelter zu bewegen und der
+   Behaelter dieses im PreventInsert() verhindert.
+   Die Property ist im Zielbehaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("<Objekt> kannst Du dort nicht hineinstecken.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Zielbehaelter
+   als zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   1. Ein Kochtopf laesst im PreventInsert nur bestimmte Objekte zu, die zu
+   einer Suppe gehoeren. Fuer eine passende Meldung wird im Topf jetzt die
+   Property gesetzt:
+   SetProp(P_NOINSERT_MSG, "Du kannst @WEN1 nicht in den Kochtopf tun, da"
+                           " gehoeren doch nur Suppenzutaten rein!");
+   Wenn jemand jetzt versucht, eine Muenze reinzustecken, dann wuerde
+   folgende Meldung erscheinen:
+      Du kannst die Muenze nicht in den Kochtopf tun, da gehoeren doch nur
+      Suppenzutaten rein!
+
+   2. Ein Rucksack soll in einer bestimmten Reihenfolge gepackt werden, dazu
+   kann im PreventInsert die Meldung je nach Bedarf gesetzt werden:
+   if (<objekt noch nicht an der Reihe>)
+      SetProp(P_NOINSERT_MSG, "@WEN1 solltest du erst spaeter einpacken.");
+   else if (<objekt schon im Rucksack>)
+      SetProp(P_NOINSERT_MSG, "Aber @WER1 ist doch schon eingepackt!");
+   else ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/props/P_NOLEAVE_MSG b/doc/props/P_NOLEAVE_MSG
index 0a226dd..d2cd164 100644
--- a/doc/props/P_NOLEAVE_MSG
+++ b/doc/props/P_NOLEAVE_MSG
@@ -1,33 +1,52 @@
-NAME:
-    P_NOLEAVE_MSG                      "noleave_msg"                      
 
-DEFINIERT IN:
-    /sys/thing/moving.h
+P_NOLEAVE_MSG
+*************
 
-BESCHREIBUNG:
-     Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
-     jemand versucht, ein Objekt aus einem Behaelter zu entfernen und der
-     Behaelter dieses im PreventLeave() verhindert.
-     Die Property ist im verhindernden Behaelter zu setzen.
-     Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
-     so wird die Standardmeldung ausgegeben.
-     ("Du kannst <Objekt> nicht nehmen.")
-     Der String in der Property wird noch durch replace_personal()
-     verarbeitet, das zu bewegende Objekt wird als erstes, der verhindernde
-     Behaelter als zweites Objekt angegeben. Danach wird der String auf 78
-     Zeichen umgebrochen.
-     Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
-     ganz.
 
-BEISPIELE:
-     Nur Bierschuettler sollen eine Bierflasche aus einem Kasten nehmen
-     koennen, neben einer entsprechenden Behandlung im PreventLeave setzt man
-     dazu die Property:
-     SetProp(P_NOLEAVE_MSG, "Nur Bierschuettler duerfen das!");
+NAME
+====
 
-SIEHE AUCH:
-     Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
-                 P_NOINSERT_MSG, P_NODROP, P_NOGET 
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+   P_NOLEAVE_MSG                      "noleave_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
+   jemand versucht, ein Objekt aus einem Behaelter zu entfernen und der
+   Behaelter dieses im PreventLeave() verhindert.
+   Die Property ist im verhindernden Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("Du kannst <Objekt> nicht nehmen.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der verhindernde
+   Behaelter als zweites Objekt angegeben. Danach wird der String auf 78
+   Zeichen umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   Nur Bierschuettler sollen eine Bierflasche aus einem Kasten nehmen
+   koennen, neben einer entsprechenden Behandlung im PreventLeave setzt man
+   dazu die Property:
+   SetProp(P_NOLEAVE_MSG, "Nur Bierschuettler duerfen das!");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/props/P_NOMAGIC b/doc/props/P_NOMAGIC
index bdee7f7..42e51d1 100644
--- a/doc/props/P_NOMAGIC
+++ b/doc/props/P_NOMAGIC
@@ -1,21 +1,42 @@
-NAME:
-    P_NOMAGIC                     "nomagic"                     
 
-DEFINIERT IN:
-    /sys/properties.h
+P_NOMAGIC
+*********
 
-BESCHREIBUNG:
-     Angabe in Prozent, mit welcher Wahrscheinlichkeit Magie fehlschlaegt.
-     
-     Fuer einen Raum ist es eine generelle Aussage, wie wahrscheinlich ein
-     Spell in ihm fehlschlaegt. Bei NPC zeigt es an, wie wahrscheinlich
-     ein auf ihn gesprochener Spell fehlschlaegt.
 
-BEISPIEL:
-     // in einem Raum keine Spells zulassen
-     SetProp(P_NOMAGIC, 100)
+NAME
+====
 
-SIEHE AUCH:
-     Aehnlich:     P_MAGIC_RESISTANCE_OFFSET, SpellDefend
+   P_NOMAGIC                     "nomagic"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Angabe in Prozent, mit welcher Wahrscheinlichkeit Magie fehlschlaegt.
+
+
+
+   Fuer einen Raum ist es eine generelle Aussage, wie wahrscheinlich ein
+   Spell in ihm fehlschlaegt. Bei NPC zeigt es an, wie wahrscheinlich
+   ein auf ihn gesprochener Spell fehlschlaegt.
+
+
+BEISPIEL
+========
+
+   // in einem Raum keine Spells zulassen
+   SetProp(P_NOMAGIC, 100)
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:     P_MAGIC_RESISTANCE_OFFSET, SpellDefend
 
 29.Dez 2007 Gloinson
diff --git a/doc/props/P_NOSELL b/doc/props/P_NOSELL
index 48b0ddb..6141be3 100644
--- a/doc/props/P_NOSELL
+++ b/doc/props/P_NOSELL
@@ -1,33 +1,50 @@
-NAME:
-    P_NOSELL                      "nosell"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_NOSELL
+********
 
-BESCHREIBUNG:
-     Wenn diese Property gesetzt ist, kann das Objekt nicht in einem
-     Laden verkauft werden.
-     Gibt man in der Property einen String an, wird dieser ausgegeben,
-     ansonsten erfolgt eine Meldung "Du kannst <NAME> nicht verkaufen!"
 
-     Diese Meldung beinhaltet auch den Namen des in P_NAME einge-
-     tragenen Besitzer des Ladens. Ist dies nicht gesetzt, wird per
-     default 'Der Haendler' ausgegeben.
+NAME
+====
 
-BEISPIEL:
-     SetProp(P_NOSELL,"Den Schrott behaeltst Du lieber selber.");
+   P_NOSELL                      "nosell"
 
-     ==> Apu sagt: Den Schrott behaeltst Du lieber selber.
-     ==> Der Haendler sagt: Den Schrott behaeltst Du lieber selber.
 
-     SetProp(P_NOSELL,1);
+DEFINIERT IN
+============
 
-     ==> Apu sagt: Du kannst <name> nicht verkaufen!
-     ==> Der Haendler sagt: Du kannst <name> nicht verkaufen!
+   /sys/properties.h
 
-SIEHE AUCH:
-     P_NOBUY, P_NODROP, P_KEEPER
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist, kann das Objekt nicht in einem
+   Laden verkauft werden.
+   Gibt man in der Property einen String an, wird dieser ausgegeben,
+   ansonsten erfolgt eine Meldung "Du kannst <NAME> nicht verkaufen!"
+
+   Diese Meldung beinhaltet auch den Namen des in P_NAME einge-
+   tragenen Besitzer des Ladens. Ist dies nicht gesetzt, wird per
+   default 'Der Haendler' ausgegeben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_NOSELL,"Den Schrott behaeltst Du lieber selber.");
+
+   ==> Apu sagt: Den Schrott behaeltst Du lieber selber.
+   ==> Der Haendler sagt: Den Schrott behaeltst Du lieber selber.
+
+   SetProp(P_NOSELL,1);
+
+   ==> Apu sagt: Du kannst <name> nicht verkaufen!
+   ==> Der Haendler sagt: Du kannst <name> nicht verkaufen!
+
+
+SIEHE AUCH
+==========
+
+   P_NOBUY, P_NODROP, P_KEEPER
+
 03.09.2010, Zesstra
-
diff --git a/doc/props/P_NO_ASCII_ART b/doc/props/P_NO_ASCII_ART
index 9b40cde..3a143a4 100644
--- a/doc/props/P_NO_ASCII_ART
+++ b/doc/props/P_NO_ASCII_ART
@@ -1,20 +1,35 @@
-NAME:
-    P_NO_ASCII_ART                   "no_ascii_art"
+
+P_NO_ASCII_ART
+**************
 
 
-DEFINIERT IN:
-    /sys/player/base.h
+NAME
+====
 
-BESCHREIBUNG:
-    Diese Property kann der Spieler mit dem Befehl "grafik aus" auf
-    1 setzen. Damit zeigt er an, dass er keine ASCII Art sehen moechte.
+   P_NO_ASCII_ART                   "no_ascii_art"
 
-    Wer ASCII-Art einsetzt, sollte an diesen Stellen die Property 
-    abfragen und textliche Umschreibungen oder Alternativloesungen
-    einbauen.
-    
-SIEHE AUCH:
-    grafik
 
-----------------------------------------------------------------------------
-    Letzte Aenderung: 2005-10-18, Zook.   
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann der Spieler mit dem Befehl "grafik aus" auf
+   1 setzen. Damit zeigt er an, dass er keine ASCII Art sehen moechte.
+
+   Wer ASCII-Art einsetzt, sollte an diesen Stellen die Property
+   abfragen und textliche Umschreibungen oder Alternativloesungen
+   einbauen.
+
+
+SIEHE AUCH
+==========
+
+   grafik
+
+
+   Letzte Aenderung: 2005-10-18, Zook.
diff --git a/doc/props/P_NO_ATTACK b/doc/props/P_NO_ATTACK
index 0f39180..9ca4c95 100644
--- a/doc/props/P_NO_ATTACK
+++ b/doc/props/P_NO_ATTACK
@@ -1,82 +1,99 @@
+
 P_NO_ATTACK
-
-NAME:
-     P_NO_ATTACK "no_attack"
-
-DEFINIERT IN:
-     <living/combat.h>
-
-BESCHREIBUNG:
-     Wenn ein NPC nicht angreifbar sein soll (weil er zum Beispiel in einer
-     Gilde oder einer Quest Informationen vermittelt oder aehnlichen), sollte
-     man diese Property auf einen Wert ungleich Null setzen. Sie wird immer
-     abgefragt, wenn ermittelt wird, ob ein Lebewesen prinzipiell angreifbar
-     ist. D.h. auch, dass nach Abfragen von P_NO_ATTACK _nicht_ immer ein
-     Kampf gestartet wird und dass man dabei _nicht_ im Kampf sein muss!
-
-     Gibt man hier einen String an (mit einem Satzzeichen und "\n" abge-
-     schlossen), wird dieser bei direkten Angriffen ausgegeben. Bei anderen
-     Datentypen wird eine Defaultmeldung ausgegeben. Die Defaultmeldung
-     lautet: "<Name> laesst sich nicht angreifen!\n"
-
-     Mit direkten Angriffen sind 'toete <name>' und Angriffszauber gemeint
-     (bzw. alles, was living/life::Kill(), spellbook::TryAttackSpell(),
-     spellbook::TryDefaultAttackSpell() und spellbook::FindEnemyVictim()
-     aufruft).
-
-ACHTUNG:
-
-  1) Zum Thema QueryMethoden auf P_NO_ATTACK
-     Grundsaetzlich legt man entweder eine Query-Methode auf P_NO_ATTACK:
-        Set(P_NO_ATTACK, #'my_no_attack, F_QUERY_METHOD);
-     oder definiert eine Funktion _query_no_attack() im NPC.
-
-     Wie muss nun eine solche Funktion aussehen? Z.B.:
-     
-     int|string my_no_attack() {
-       if (!objectp(this_player())) return 0;
-       if (opfer==getuid(this_player()) || this_player()==this_object())
-         return(0);
-       return(1); //nicht angreifbar
-     }
-
-     Diese Funktion macht den NPC nun nur fuer den Spieler 'opfer' angreifbar.
-     Stattdessen kann natuerlich auch jede andere Bedingung genutzt werden.
-
-     Aber warum die zweite Bedingung, this_player()==this_object()?
-     Warum sollte der NPC sich selber angreifen duerfen?
-
-     Das liegt an folgenden 2 Dingen:
-
-     1. Kaempfer kriegen bei eingeschaltetem Fokus Probleme, wenn man das 
-     nicht macht. Das liegt an folgendem: Wenn der NPC angreift, ruft er 
-     natuerlich Defend() im Spieler auf. Dieses schaut nach, ob der Spieler 
-     den Skill SK_MAGICAL_DEFENSE hat. Dieser ist bei Kaempfern das Parieren.
-     Dieses schaut nach, ob der Fokus aktiv ist, wenn ja, wird dem 
-     ge'fokus'te Gegner besonders gut ausgewichen. Zu diesem Zweck wird die 
-     Liste der Feind im Raum erstellt mit PresentEnemies() abgerufen. Dieses 
-     fragt aber in allen (potentiellen) Gegnern P_NO_ATTACK ab und beendet 
-     den Kampf mit allen Gegnern, die nicht angreifbar sind. Bei dieser 
-     Abfrage ist jedoch TP==NPC, weil der ja angreift. Wenn er nun 1 
-     zurueckgibt, wird der Kampf an der Stelle beendet. 
-
-     2. Wenn der NPC den Spieler angreift, wird im Spieler InsertEnemy(NPC)
-     aufgerufen. Auch diesem Fall findet die Abfrage von P_NO_ATTACK statt, 
-     da InsertEnemy() ja erstmal rausfinden muss, ob der Gegner angreifbar 
-     ist, bevor er in die Feindliste eingetragen wird. Da der NPC den 
-     Angriff beginnt, ist TP der NPC. Wenn die Query-Methode auf P_NO_ATTACK
-     hier abbricht, wird der NPC nicht in die Feindliste des Spielers 
-     eingetragen. Dann bekaempft der NPC den Spieler, aber der Spieler nicht
-     den NPC.
+***********
 
 
-  2) P_NO_ATTACK des NPC wird z.B. beim Kampf eines Kaempfers mit dem NPC 
-     pro Kampfrunde um die 10mal abgerufen. Wenn der Kaempfer nur eine 
-     Attacke macht. Wenn er noch Sonderattacken machen, Spells ausfuehrt, 
-     etc. wird das noch mehr. D.h. was auch immer ihr in der Query-Methode 
-     im NPC macht: 
-     Es sollte schnell sein, jeder Tick an Rechenzeit zaehlt hier xfach!
+NAME
+====
+
+   P_NO_ATTACK "no_attack"
 
 
-LETZTE AENDERUNG:
+DEFINIERT IN
+============
+
+   <living/combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein NPC nicht angreifbar sein soll (weil er zum Beispiel in einer
+   Gilde oder einer Quest Informationen vermittelt oder aehnlichen), sollte
+   man diese Property auf einen Wert ungleich Null setzen. Sie wird immer
+   abgefragt, wenn ermittelt wird, ob ein Lebewesen prinzipiell angreifbar
+   ist. D.h. auch, dass nach Abfragen von P_NO_ATTACK _nicht_ immer ein
+   Kampf gestartet wird und dass man dabei _nicht_ im Kampf sein muss!
+
+   Gibt man hier einen String an (mit einem Satzzeichen und "\n" abge-
+   schlossen), wird dieser bei direkten Angriffen ausgegeben. Bei anderen
+   Datentypen wird eine Defaultmeldung ausgegeben. Die Defaultmeldung
+   lautet: "<Name> laesst sich nicht angreifen!\n"
+
+   Mit direkten Angriffen sind 'toete <name>' und Angriffszauber gemeint
+   (bzw. alles, was living/life::Kill(), spellbook::TryAttackSpell(),
+   spellbook::TryDefaultAttackSpell() und spellbook::FindEnemyVictim()
+   aufruft).
+
+
+ACHTUNG
+=======
+
+   1) Zum Thema QueryMethoden auf P_NO_ATTACK
+      Grundsaetzlich legt man entweder eine Query-Methode auf P_NO_ATTACK:
+         Set(P_NO_ATTACK, #'my_no_attack, F_QUERY_METHOD);
+      oder definiert eine Funktion _query_no_attack() im NPC.
+
+      Wie muss nun eine solche Funktion aussehen? Z.B.:
+
+
+
+      int|string my_no_attack() {
+        if (!objectp(this_player())) return 0;
+        if (opfer==getuid(this_player()) || this_player()==this_object())
+          return(0);
+        return(1); //nicht angreifbar
+      }
+
+      Diese Funktion macht den NPC nun nur fuer den Spieler 'opfer' angreifbar.
+      Stattdessen kann natuerlich auch jede andere Bedingung genutzt werden.
+
+      Aber warum die zweite Bedingung, this_player()==this_object()?
+      Warum sollte der NPC sich selber angreifen duerfen?
+
+      Das liegt an folgenden 2 Dingen:
+
+      1. Kaempfer kriegen bei eingeschaltetem Fokus Probleme, wenn man das
+      nicht macht. Das liegt an folgendem: Wenn der NPC angreift, ruft er
+      natuerlich Defend() im Spieler auf. Dieses schaut nach, ob der Spieler
+      den Skill SK_MAGICAL_DEFENSE hat. Dieser ist bei Kaempfern das Parieren.
+      Dieses schaut nach, ob der Fokus aktiv ist, wenn ja, wird dem
+      ge'fokus'te Gegner besonders gut ausgewichen. Zu diesem Zweck wird die
+      Liste der Feind im Raum erstellt mit PresentEnemies() abgerufen. Dieses
+      fragt aber in allen (potentiellen) Gegnern P_NO_ATTACK ab und beendet
+      den Kampf mit allen Gegnern, die nicht angreifbar sind. Bei dieser
+      Abfrage ist jedoch TP==NPC, weil der ja angreift. Wenn er nun 1
+      zurueckgibt, wird der Kampf an der Stelle beendet.
+
+      2. Wenn der NPC den Spieler angreift, wird im Spieler InsertEnemy(NPC)
+      aufgerufen. Auch diesem Fall findet die Abfrage von P_NO_ATTACK statt,
+      da InsertEnemy() ja erstmal rausfinden muss, ob der Gegner angreifbar
+      ist, bevor er in die Feindliste eingetragen wird. Da der NPC den
+      Angriff beginnt, ist TP der NPC. Wenn die Query-Methode auf P_NO_ATTACK
+      hier abbricht, wird der NPC nicht in die Feindliste des Spielers
+      eingetragen. Dann bekaempft der NPC den Spieler, aber der Spieler nicht
+      den NPC.
+
+
+   2) P_NO_ATTACK des NPC wird z.B. beim Kampf eines Kaempfers mit dem NPC
+      pro Kampfrunde um die 10mal abgerufen. Wenn der Kaempfer nur eine
+      Attacke macht. Wenn er noch Sonderattacken machen, Spells ausfuehrt,
+      etc. wird das noch mehr. D.h. was auch immer ihr in der Query-Methode
+      im NPC macht:
+      Es sollte schnell sein, jeder Tick an Rechenzeit zaehlt hier xfach!
+
+
+LETZTE AENDERUNG
+================
+
 09.11.2015, Arathorn
diff --git a/doc/props/P_NO_BAD b/doc/props/P_NO_BAD
index 60df1e7..ae2adf2 100644
--- a/doc/props/P_NO_BAD
+++ b/doc/props/P_NO_BAD
@@ -1,23 +1,43 @@
-NAME:
-     P_NO_BAD                      "std_food_no_bad"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_NO_BAD
+********
 
-BESCHREIBUNG:
-     Flag, ob die Speise ewig haltbar ist.
-     0: Speise verdirbt nach der Anzahl Sekunden, die in P_LIFETIME
-        angegeben ist bzw. nach einem Reset
-     1: Speise verdirbt nicht
-     
-     ACHTUNG: Diese Property darf nur in Absprache mit der Balance
-              geaendert werden.
-     
-DEFAULT:
-     Initial ist diese Property auf 0 gesetzt.
 
-SIEHE AUCH:
-     /std/food.c, wiz/food
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_NO_BAD                      "std_food_no_bad"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Flag, ob die Speise ewig haltbar ist.
+   0: Speise verdirbt nach der Anzahl Sekunden, die in P_LIFETIME
+      angegeben ist bzw. nach einem Reset
+   1: Speise verdirbt nicht
+
+
+
+   ACHTUNG: Diese Property darf nur in Absprache mit der Balance
+            geaendert werden.
+
+
+DEFAULT
+=======
+
+   Initial ist diese Property auf 0 gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_NO_GLOBAL_ATTACK b/doc/props/P_NO_GLOBAL_ATTACK
index 01df4e9..962186c 100644
--- a/doc/props/P_NO_GLOBAL_ATTACK
+++ b/doc/props/P_NO_GLOBAL_ATTACK
@@ -1,20 +1,33 @@
+
 P_NO_GLOBAL_ATTACK
+******************
 
-NAME:
-     P_NO_GLOBAL_ATTACK "no_global_attack"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Setzt man diese Property in einem NPC auf einen Wert ungleich 0, so
-     wird der NPC bei einem "toete alle" nicht angegriffen.
+   P_NO_GLOBAL_ATTACK "no_global_attack"
 
-     Damit kann man zB. NPCs, die dem eigenen Schutz dienen (als Folge von
-     Zauberspruechen o.ae.) vor versehentlichen Angriffen schuetzen.
 
-SIEHE AUCH:
-     /std/npc.c, P_FRIEND
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Setzt man diese Property in einem NPC auf einen Wert ungleich 0, so
+   wird der NPC bei einem "toete alle" nicht angegriffen.
+
+   Damit kann man zB. NPCs, die dem eigenen Schutz dienen (als Folge von
+   Zauberspruechen o.ae.) vor versehentlichen Angriffen schuetzen.
+
+
+SIEHE AUCH
+==========
+
+   /std/npc.c, P_FRIEND
+
 Last modified: Sat May 18 15:26:28 1996 by Wargon
diff --git a/doc/props/P_NO_PARA_TRANS b/doc/props/P_NO_PARA_TRANS
index 578c245..677f9c8 100644
--- a/doc/props/P_NO_PARA_TRANS
+++ b/doc/props/P_NO_PARA_TRANS
@@ -1,15 +1,30 @@
-NAME:
-	P_NO_PARA_TRANS				"no_para_trans"
 
-DEFINIERT IN:
-	/sys/properties.h
+P_NO_PARA_TRANS
+***************
 
-BESCHREIBUNG:
-	Wenn in einem Raum diese Property gesetzt ist, darf dort kein
-	Wechsel in oder aus der Paralellwelt erfolgen. Objekte die so
-	einen Wechsel ermoeglichen sind dafuer verantwortlich diese
-	Property abzufragen.
 
-SIEHE AUCH:
-	P_NO_TPORT
+NAME
+====
 
+   P_NO_PARA_TRANS                         "no_para_trans"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn in einem Raum diese Property gesetzt ist, darf dort kein
+   Wechsel in oder aus der Paralellwelt erfolgen. Objekte die so
+   einen Wechsel ermoeglichen sind dafuer verantwortlich diese
+   Property abzufragen.
+
+
+SIEHE AUCH
+==========
+
+   P_NO_TPORT
diff --git a/doc/props/P_NO_PLAYERS b/doc/props/P_NO_PLAYERS
index 062b915..3cc88c1 100644
--- a/doc/props/P_NO_PLAYERS
+++ b/doc/props/P_NO_PLAYERS
@@ -1,37 +1,56 @@
-NAME:
-    P_NO_PLAYERS                     "no_players"                     
 
-DEFINIERT IN:
-    /sys/rooms.h
+P_NO_PLAYERS
+************
 
-BESCHREIBUNG:
-    Wenn in einem Raum die Property P_NO_PLAYERS auf einen Wert != 0 gesetzt
-    ist, kann dieser von Spielern auf normalem Wege nicht mehr betreten werden.
-    Magier und Testspieler(*) koennen den Raum betreten; Spieler muessen mit
-    M_NOCHECK hineinbewegt werden.
 
-    Auf diese Weise koennen Gebiete, die noch nicht offiziell angeschlossen
-    sind, vor 'unbeabsichtigtem' Betreten durch Spieler geschuetzt werden.
+NAME
+====
 
-    Moechte man zu einem schon angeschlossenen Gebiet nachtraeglich eine
-    Parallelwelt einbauen, so sollte P_NO_PLAYERS *dringend* in den
-    Parallelweltraeumen gesetzt werden, bis die Parallelwelt ausdruecklich
-    fuer Spieler freigegeben wird. Andernfalls sind alle Parallelweltraeume,
-    zu denen angeschlossene Normalweltraeume mit gleichem Filenamen existieren,
-    automatisch durch Spieler erreichbar!
+   P_NO_PLAYERS                     "no_players"
 
-    (*) Ausschliesslich Testspieler, die auf den Namen eines existierenden
-    Magiers markiert sind, koennen 'geschuetzte' Raeume betreten.
-    Gildentesties werden wie Spieler behandelt.
 
-ANMERKUNG:
-    Im Gegensatz zu Bewegungen von Livings wird bei der Bewegung von Gegen-
-    staenden P_NO_PLAYERS nur beim Wechsel der Welt ausgewertet, um z.B. zu
-    verhindern, dass Bumerangs in noch nicht angeschlossene Gebiete fliegen.
+DEFINIERT IN
+============
 
-    Moechte man in seinem eigenen Gebiet mit Bumerangs o.ae. testen, muss
-    in diesen P_TESTPLAYER gesetzt sein. Das ist zwar eher ein Missbrauch
-    der Property, aber ein Umkompieren vom Werfer war auf Dauer zu teuer. ;-)
+   /sys/rooms.h
 
-SIEHE AUCH:
-    P_PARA, move
+
+BESCHREIBUNG
+============
+
+   Wenn in einem Raum die Property P_NO_PLAYERS auf einen Wert != 0 gesetzt
+   ist, kann dieser von Spielern auf normalem Wege nicht mehr betreten werden.
+   Magier und Testspieler(*) koennen den Raum betreten; Spieler muessen mit
+   M_NOCHECK hineinbewegt werden.
+
+   Auf diese Weise koennen Gebiete, die noch nicht offiziell angeschlossen
+   sind, vor 'unbeabsichtigtem' Betreten durch Spieler geschuetzt werden.
+
+   Moechte man zu einem schon angeschlossenen Gebiet nachtraeglich eine
+   Parallelwelt einbauen, so sollte P_NO_PLAYERS *dringend* in den
+   Parallelweltraeumen gesetzt werden, bis die Parallelwelt ausdruecklich
+   fuer Spieler freigegeben wird. Andernfalls sind alle Parallelweltraeume,
+   zu denen angeschlossene Normalweltraeume mit gleichem Filenamen existieren,
+   automatisch durch Spieler erreichbar!
+
+   (*) Ausschliesslich Testspieler, die auf den Namen eines existierenden
+   Magiers markiert sind, koennen 'geschuetzte' Raeume betreten.
+   Gildentesties werden wie Spieler behandelt.
+
+
+ANMERKUNG
+=========
+
+   Im Gegensatz zu Bewegungen von Livings wird bei der Bewegung von Gegen-
+   staenden P_NO_PLAYERS nur beim Wechsel der Welt ausgewertet, um z.B. zu
+   verhindern, dass Bumerangs in noch nicht angeschlossene Gebiete fliegen.
+
+   Moechte man in seinem eigenen Gebiet mit Bumerangs o.ae. testen, muss
+   in diesen P_TESTPLAYER gesetzt sein. Das ist zwar eher ein Missbrauch
+   der Property, aber ein Umkompieren vom Werfer war auf Dauer zu teuer. ;-)
+
+
+SIEHE AUCH
+==========
+
+   P_PARA, move
diff --git a/doc/props/P_NO_REGENERATION b/doc/props/P_NO_REGENERATION
index b8dea8c..cc672e3 100644
--- a/doc/props/P_NO_REGENERATION
+++ b/doc/props/P_NO_REGENERATION
@@ -1,34 +1,52 @@
+
 P_NO_REGENERATION
+*****************
 
-NAME:
-     P_NO_REGENERATION    "no_regeneration"
 
-DEFINIERT IN:
-     <living/life.h> und <health.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Durch das Setzen dieser Property kann man verhindern, das ein Lebewesen
-     sich regeneriert.
-     Es gibt sieben moegliche Werte, die man durch verodern kombinieren
-     kann:
-     NO_REG_HP        : es werden keine HP regeneriert
-     NO_REG_BUFFER_HP : es werden beim "tanken" keine HP regeneriert
-     NO_REG_SP        : es werden keine SP regeneriert
-     NO_REG_BUFFER_SP : es werden beim "tanken" keine SP regeneriert
-     NO_REG_ALCOHOL   : der Alkoholspiegel wird nicht gesenkt
-     NO_REG_DRINK     : der Fluessigkeitsspiegel wird nicht gesenkt
-     NO_REG_FOOD      : der Nahrungsspiegel wird nicht gesenkt
-     sowie die Konstante NO_REG, die eine Kombination aller moeglichen
-     Werte darstellt (quasi das groesstmoegliche Uebel ;).
+   P_NO_REGENERATION    "no_regeneration"
 
-BEISPIELE:
-     Dieses Lebewesen heilt nur beim "tanken" in der Kneipe, ansonsten
-     nicht:
-     
-     SetProp( P_NO_REGENERATION, NO_REG_HP|NO_REG_SP );
 
-SIEHE AUCH:
-     /std/living/life.c
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <living/life.h> und <health.h>
+
+
+BESCHREIBUNG
+============
+
+   Durch das Setzen dieser Property kann man verhindern, das ein Lebewesen
+   sich regeneriert.
+   Es gibt sieben moegliche Werte, die man durch verodern kombinieren
+   kann:
+   NO_REG_HP        : es werden keine HP regeneriert
+   NO_REG_BUFFER_HP : es werden beim "tanken" keine HP regeneriert
+   NO_REG_SP        : es werden keine SP regeneriert
+   NO_REG_BUFFER_SP : es werden beim "tanken" keine SP regeneriert
+   NO_REG_ALCOHOL   : der Alkoholspiegel wird nicht gesenkt
+   NO_REG_DRINK     : der Fluessigkeitsspiegel wird nicht gesenkt
+   NO_REG_FOOD      : der Nahrungsspiegel wird nicht gesenkt
+   sowie die Konstante NO_REG, die eine Kombination aller moeglichen
+   Werte darstellt (quasi das groesstmoegliche Uebel ;).
+
+
+BEISPIELE
+=========
+
+   Dieses Lebewesen heilt nur beim "tanken" in der Kneipe, ansonsten
+   nicht:
+
+
+
+   SetProp( P_NO_REGENERATION, NO_REG_HP|NO_REG_SP );
+
+
+SIEHE AUCH
+==========
+
+   /std/living/life.c
+
 Last modified: 14-05-2001 by Mupfel
diff --git a/doc/props/P_NO_SCORE b/doc/props/P_NO_SCORE
index 6c4a2d2..49cfee5 100644
--- a/doc/props/P_NO_SCORE
+++ b/doc/props/P_NO_SCORE
@@ -1,51 +1,73 @@
-NAME:
-     P_NO_SCORE               "no_score"
 
-DEFINIERT IN:
-     /secure/scoremaster.h
+P_NO_SCORE
+**********
 
-BESCHREIBUNG:
-     Die Property stellt ein Flag innerhalb von Lebewesen dar, welches
-     standardmaessig nicht gesetzt ist. In diesem Fall werden
-     Erstkillstufenpunkte an den Angreifer vergeben, sofern er ein Opfer
-     toetet.
 
-     Innerhalb eines Teams koennen Erstkillstufenpunkte auch an
-     Mitglieder vergeben werden, die das Lebewesen nicht selbst getoetet
-     haben. Voraussetzung hierfuer ist, dass derjenige, der den letzten
-     Schlag ausfuehrte, den Kill schon hat. Danach werden Mitglieder des
-     Teams gesucht, welche den Kill noch nicht haben und in der Formation
-     moeglichst weit vorne stehen.
+NAME
+====
 
-     Mit der gesetzten Property P_NO_SCORE im Opfer erreicht man nun,
-     dass diese Gutschrift fuer den/die Angreifer unterbunden wird.
+   P_NO_SCORE               "no_score"
 
-BEISPIEL:
-     Folgendermassen unterbindet man die Vergabe von
-     Erstkillstufenpunkten fuer den Tod eines NPC's:
 
-       include "/secure/scoremaster.h"
-       inherit "std/npc";
-       void create() {
-         ::create();
-         ...
-         SetProp(P_NO_SCORE,1);
-       }
+DEFINIERT IN
+============
 
-     Damit kann P_XP einen Wert haben, der eigentlich zum automatischen
-     Eintragen von Erstkillstufenpunkten fuer ein Lebewesen fuehrt, und
-     trotzdem wird dieser Eintrag nicht vorgenommen.
-     Sinnvoll ist dies insbesondere bei Lebewesen, die nicht jeder
-     Spieler erreichen kann (man moechte doch eine gewisse
-     Chancengleichheit fuer das Erreichen von Stufenpunkten bieten).
+   /secure/scoremaster.h
 
-BEMERKUNGEN:
-     Auch die Vergabe von Erfahrungspunkten kann explizit unterbunden
-     werden. Hierfuer gibt es die aehnlich geartete Property P_NO_XP.
 
-SIEHE AUCH:
-     Funktionen:  GiveKillScore(), do_damage()
-     Verwandt:    P_NO_XP
-     Sonstiges:   P_XP
+BESCHREIBUNG
+============
+
+   Die Property stellt ein Flag innerhalb von Lebewesen dar, welches
+   standardmaessig nicht gesetzt ist. In diesem Fall werden
+   Erstkillstufenpunkte an den Angreifer vergeben, sofern er ein Opfer
+   toetet.
+
+   Innerhalb eines Teams koennen Erstkillstufenpunkte auch an
+   Mitglieder vergeben werden, die das Lebewesen nicht selbst getoetet
+   haben. Voraussetzung hierfuer ist, dass derjenige, der den letzten
+   Schlag ausfuehrte, den Kill schon hat. Danach werden Mitglieder des
+   Teams gesucht, welche den Kill noch nicht haben und in der Formation
+   moeglichst weit vorne stehen.
+
+   Mit der gesetzten Property P_NO_SCORE im Opfer erreicht man nun,
+   dass diese Gutschrift fuer den/die Angreifer unterbunden wird.
+
+
+BEISPIEL
+========
+
+   Folgendermassen unterbindet man die Vergabe von
+   Erstkillstufenpunkten fuer den Tod eines NPC's:
+
+     include "/secure/scoremaster.h"
+     inherit "std/npc";
+     void create() {
+       ::create();
+       ...
+       SetProp(P_NO_SCORE,1);
+     }
+
+   Damit kann P_XP einen Wert haben, der eigentlich zum automatischen
+   Eintragen von Erstkillstufenpunkten fuer ein Lebewesen fuehrt, und
+   trotzdem wird dieser Eintrag nicht vorgenommen.
+   Sinnvoll ist dies insbesondere bei Lebewesen, die nicht jeder
+   Spieler erreichen kann (man moechte doch eine gewisse
+   Chancengleichheit fuer das Erreichen von Stufenpunkten bieten).
+
+
+BEMERKUNGEN
+===========
+
+   Auch die Vergabe von Erfahrungspunkten kann explizit unterbunden
+   werden. Hierfuer gibt es die aehnlich geartete Property P_NO_XP.
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  GiveKillScore(), do_damage()
+   Verwandt:    P_NO_XP
+   Sonstiges:   P_XP
 
 14.Feb 2007 Gloinson
diff --git a/doc/props/P_NO_STD_DRINK b/doc/props/P_NO_STD_DRINK
index a91e92d..f8c2f33 100644
--- a/doc/props/P_NO_STD_DRINK
+++ b/doc/props/P_NO_STD_DRINK
@@ -1,19 +1,37 @@
-NAME:
-	P_NO_STD_DRINK			"no_std_drink"
 
-DEFINIERT IN:
-	/sys/pub.h
+P_NO_STD_DRINK
+**************
 
-BESCHREIBUNG:
-        Durch setzen dieser Property in einer Kneipe sorgt man dafuer, dass 
-        "Standard-Drinks" (z.B. Gluehwein im Dezember) nicht in das Menue
-        der Kneipe aufgenommen werden.
 
-BEMERKUNGEN:
-        Keine.
+NAME
+====
 
-SIEHE AUCH:
-	/std/room/pub.c
+   P_NO_STD_DRINK                  "no_std_drink"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   Durch setzen dieser Property in einer Kneipe sorgt man dafuer, dass
+   "Standard-Drinks" (z.B. Gluehwein im Dezember) nicht in das Menue
+   der Kneipe aufgenommen werden.
+
+
+BEMERKUNGEN
+===========
+
+   Keine.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
 Last modified: Sat Mar 04 22:42:00 2000 by Paracelsus
diff --git a/doc/props/P_NO_TPORT b/doc/props/P_NO_TPORT
index 40350e5..1c6de77 100644
--- a/doc/props/P_NO_TPORT
+++ b/doc/props/P_NO_TPORT
@@ -1,15 +1,30 @@
-NAME:
-    P_NO_TPORT                    "tport"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_NO_TPORT
+**********
 
-BESCHREIBUNG:
-     Kann folgende Werte annnehmen (definiert in moving.h):
-     NO_TPORT_IN	= Man kann nicht in den Raum hinein teleportieren.
-     NO_TPORT_OUT = Man kann nicht aus dem Raum hinaus teleportieren.
-     NO_TPORT	= Weder noch.
 
-SIEHE AUCH:
-	P_NO_PARA_TRANS
+NAME
+====
 
+   P_NO_TPORT                    "tport"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Kann folgende Werte annnehmen (definiert in moving.h):
+   NO_TPORT_IN        = Man kann nicht in den Raum hinein teleportieren.
+   NO_TPORT_OUT = Man kann nicht aus dem Raum hinaus teleportieren.
+   NO_TPORT   = Weder noch.
+
+
+SIEHE AUCH
+==========
+
+   P_NO_PARA_TRANS
diff --git a/doc/props/P_NO_TRAVELING b/doc/props/P_NO_TRAVELING
index 61425bc..cd1073a 100644
--- a/doc/props/P_NO_TRAVELING
+++ b/doc/props/P_NO_TRAVELING
@@ -1,25 +1,48 @@
-NAME:
-    P_NO_TRAVELING                   "no_traveling"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_NO_TRAVELING
+**************
 
-BESCHREIBUNG:
-    Hier steht der allgemeine reise-Befehl nicht zur Verfuegung.
 
-BEMERKUNGEN:
-    P_NO_TRAVELING wird in Transportern gesetzt wenn Spieler ihn 
-    nicht mehr 'automatisch' mittels des 'reise'-Befehls betreten
-    koennen sollen.
+NAME
+====
 
-    Sie bekommen in dem Transporter und in den Zielraeumen auch 
-    keinerlei Hinweise darauf, wohin sie evtl. reisen koennten.
-    
-    Standardmaessig ist P_NO_TRAVELING natuerlich 0.
+   P_NO_TRAVELING                   "no_traveling"
 
-SIEHE AUCH:
-    reise
 
-LETZTER AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
-    
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht der allgemeine reise-Befehl nicht zur Verfuegung.
+
+
+BEMERKUNGEN
+===========
+
+   P_NO_TRAVELING wird in Transportern gesetzt wenn Spieler ihn
+   nicht mehr 'automatisch' mittels des 'reise'-Befehls betreten
+   koennen sollen.
+
+   Sie bekommen in dem Transporter und in den Zielraeumen auch
+   keinerlei Hinweise darauf, wohin sie evtl. reisen koennten.
+
+
+
+   Standardmaessig ist P_NO_TRAVELING natuerlich 0.
+
+
+SIEHE AUCH
+==========
+
+   reise
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_NO_XP b/doc/props/P_NO_XP
index bb09b2a..b16c4ab 100644
--- a/doc/props/P_NO_XP
+++ b/doc/props/P_NO_XP
@@ -1,43 +1,65 @@
-NAME:
-     P_NO_XP                    "no_xp"
 
-DEFINIERT IN:
-     /sys/living/life.h
+P_NO_XP
+*******
 
-BESCHREIBUNG:
-     Im Normalfall bekommt man im Kampf gegen einen Gegner fuer Treffer
-     und beim Toeten eine XP-Gutschrift.
 
-     Ist P_NO_XP gesetzt, so erhaelt man keinerlei XP-Gutschriften
-     fuer den Kampf oder den Tod des NPCs.
+NAME
+====
 
-BEISPIEL:
-     Folgendermassen unterbindet man die Vergabe von Erfahrungspunkte
-     fuer den Angriff eines NPC's:
+   P_NO_XP                    "no_xp"
 
-       include "/sys/living/life.h"
-       inherit "std/npc";
-       void create() {
-         ::create();
-         ...
-         SetProp(P_NO_XP,1);
-       }
 
-     Damit kann P_XP trotzdem einen Wert im NPC haben, der
-     Erstkillstufenpunkte fuer Lebewesen automatisch eintraegt!
+DEFINIERT IN
+============
 
-     Auch fuer das kurzzeitige Unterbinden der Vergabe von
-     Erfahrungspunkten ist diese Property sinnvoller, als P_XP im NPC
-     auf 0 zu setzen.
+   /sys/living/life.h
 
-BEMERKUNGEN:
-     Auch die Vergabe von Erstkillstufenpunkten kann explizit unterbunden
-     werden. Hierfuer gibt es die aehnlich geartete Property P_NO_SCORE.
 
-SIEHE AUCH:
-     Funktionen:  AddExp(), DistributeExp(), do_damage()
-     Properties:  P_XP, P_LAST_XP
-     Verwandt:    P_NO_SCORE
-     Sonstiges:   P_TOTAL_WC, create_default_npc()
+BESCHREIBUNG
+============
+
+   Im Normalfall bekommt man im Kampf gegen einen Gegner fuer Treffer
+   und beim Toeten eine XP-Gutschrift.
+
+   Ist P_NO_XP gesetzt, so erhaelt man keinerlei XP-Gutschriften
+   fuer den Kampf oder den Tod des NPCs.
+
+
+BEISPIEL
+========
+
+   Folgendermassen unterbindet man die Vergabe von Erfahrungspunkte
+   fuer den Angriff eines NPC's:
+
+     include "/sys/living/life.h"
+     inherit "std/npc";
+     void create() {
+       ::create();
+       ...
+       SetProp(P_NO_XP,1);
+     }
+
+   Damit kann P_XP trotzdem einen Wert im NPC haben, der
+   Erstkillstufenpunkte fuer Lebewesen automatisch eintraegt!
+
+   Auch fuer das kurzzeitige Unterbinden der Vergabe von
+   Erfahrungspunkten ist diese Property sinnvoller, als P_XP im NPC
+   auf 0 zu setzen.
+
+
+BEMERKUNGEN
+===========
+
+   Auch die Vergabe von Erstkillstufenpunkten kann explizit unterbunden
+   werden. Hierfuer gibt es die aehnlich geartete Property P_NO_SCORE.
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp(), DistributeExp(), do_damage()
+   Properties:  P_XP, P_LAST_XP
+   Verwandt:    P_NO_SCORE
+   Sonstiges:   P_TOTAL_WC, create_default_npc()
 
 14.Feb 2007 Gloinson
diff --git a/doc/props/P_NPC b/doc/props/P_NPC
index 69d1270..60651d8 100644
--- a/doc/props/P_NPC
+++ b/doc/props/P_NPC
@@ -1,8 +1,21 @@
-NAME:
-    P_NPC                         "is_npc"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_NPC
+*****
 
-BESCHREIBUNG:
-     Gesetzt bei Monstern.
+
+NAME
+====
+
+   P_NPC                         "is_npc"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt bei Monstern.
diff --git a/doc/props/P_NPC_FASTHEAL b/doc/props/P_NPC_FASTHEAL
index 3f588b9..3c358ef 100644
--- a/doc/props/P_NPC_FASTHEAL
+++ b/doc/props/P_NPC_FASTHEAL
@@ -1,21 +1,39 @@
-NAME:
-	P_NPC_FASTHEAL			"npc_fastheal"
 
-DEFINIERT IN:
-	/sys/pub.h
+P_NPC_FASTHEAL
+**************
 
-BESCHREIBUNG:
-        Durch setzen dieser Property in einer Kneipe sorgt man dafuer, dass 
-        bei NPCs, die dort "tanken", die Lebens- und Konzentrationspunkte
-        direkt erhoeht werden und nicht, wie bei ungesetzter Property, in
-        die jew. Buffer geschrieben werden.
 
-BEMERKUNGEN:
-        Die Benutzung dieser Property sollte nicht unbedingt zum Standard
-        werden.
+NAME
+====
 
-SIEHE AUCH:
-	/std/room/pub.c
+   P_NPC_FASTHEAL                  "npc_fastheal"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   Durch setzen dieser Property in einer Kneipe sorgt man dafuer, dass
+   bei NPCs, die dort "tanken", die Lebens- und Konzentrationspunkte
+   direkt erhoeht werden und nicht, wie bei ungesetzter Property, in
+   die jew. Buffer geschrieben werden.
+
+
+BEMERKUNGEN
+===========
+
+   Die Benutzung dieser Property sollte nicht unbedingt zum Standard
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
 Last modified: Wed Sep 29 13:58:00 1999 by Paracelsus
diff --git a/doc/props/P_NR_HANDS b/doc/props/P_NR_HANDS
index b0827a9..a3bf299 100644
--- a/doc/props/P_NR_HANDS
+++ b/doc/props/P_NR_HANDS
@@ -1,31 +1,45 @@
+
 P_NR_HANDS
-NAME:
-     P_NR_HANDS "nr_hands"
+**********
 
-DEFINIERT IN:
-     <weapon.h>
 
-BESCHREIBUNG:
-     Wieviele Haende muss man frei haben, um die Waffe zuecken oder den
-     Schild tragen zu koennen?
-     Dieser Wert muss mindestens 1 betragen!
+NAME
+====
 
-     Sollen Spieler die Waffe benutzen koennen, so sind hier nur die Werte 1
-     und 2 moeglich. Falls die Waffe nur von Monstern benutzbar sein soll,
-     kann man hier auch hoehere Werte eintragen (dazu muss man beim Monster
-     P_MAX_HANDS entsprechend hoch setzen). Als Beispiel sei hier nur das
-     vierhaendige Schwert aus dem Friedhof genannt.
+   P_NR_HANDS "nr_hands"
 
-     Defaultmaessig sind alle Waffen Zweihaender.
 
-     Diese Property kann auch bei Zaubern benutzt werden, bei denen man eine
-     oder mehrere Haende frei haben muss.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_HANDS, P_HANDS_USED_BY
-     P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
-     UseHands, FreeHands
-     /std/weapon.c, /std/spellbook.c
+   <weapon.h>
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Wieviele Haende muss man frei haben, um die Waffe zuecken oder den
+   Schild tragen zu koennen?
+   Dieser Wert muss mindestens 1 betragen!
+
+   Sollen Spieler die Waffe benutzen koennen, so sind hier nur die Werte 1
+   und 2 moeglich. Falls die Waffe nur von Monstern benutzbar sein soll,
+   kann man hier auch hoehere Werte eintragen (dazu muss man beim Monster
+   P_MAX_HANDS entsprechend hoch setzen). Als Beispiel sei hier nur das
+   vierhaendige Schwert aus dem Friedhof genannt.
+
+   Defaultmaessig sind alle Waffen Zweihaender.
+
+   Diese Property kann auch bei Zaubern benutzt werden, bei denen man eine
+   oder mehrere Haende frei haben muss.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+   /std/weapon.c, /std/spellbook.c
+
 Last modified: Sun May 19 15:00:02 1996 by Wargon
diff --git a/doc/props/P_ORAKEL b/doc/props/P_ORAKEL
index cf383da..773a80d 100644
--- a/doc/props/P_ORAKEL
+++ b/doc/props/P_ORAKEL
@@ -1,9 +1,22 @@
-NAME:
-    P_ORAKEL                      "orakel"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_ORAKEL
+********
 
-BESCHREIBUNG:
-     Wenn diese Property gesetzt ist, kann der Wanderer in diesen
-     Raum hinein.
+
+NAME
+====
+
+   P_ORAKEL                      "orakel"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist, kann der Wanderer in diesen
+   Raum hinein.
diff --git a/doc/props/P_ORIG_FILE_NAME b/doc/props/P_ORIG_FILE_NAME
index 2064360..53243c2 100644
--- a/doc/props/P_ORIG_FILE_NAME
+++ b/doc/props/P_ORIG_FILE_NAME
@@ -1,8 +1,21 @@
-NAME:
-    P_ORIG_FILE_NAME                "original_object_name"               
 
-DEFINIERT IN:
-    /sys/properties.h
+P_ORIG_FILE_NAME
+****************
 
-BESCHREIBUNG:
-     In einer Leiche der Filename des Gestorbenen.
+
+NAME
+====
+
+   P_ORIG_FILE_NAME                "original_object_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einer Leiche der Filename des Gestorbenen.
diff --git a/doc/props/P_ORIG_NAME b/doc/props/P_ORIG_NAME
index 96a5d73..e44a06d 100644
--- a/doc/props/P_ORIG_NAME
+++ b/doc/props/P_ORIG_NAME
@@ -1,8 +1,21 @@
-NAME:
-    P_ORIG_NAME                   "original_name"               
 
-DEFINIERT IN:
-    /sys/properties.h
+P_ORIG_NAME
+***********
 
-BESCHREIBUNG:
-     In einer Leiche der Name des Gestorbenen. (name(RAW))
+
+NAME
+====
+
+   P_ORIG_NAME                   "original_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einer Leiche der Name des Gestorbenen. (name(RAW))
diff --git a/doc/props/P_PARA b/doc/props/P_PARA
index 87cc92b..0a7f416 100644
--- a/doc/props/P_PARA
+++ b/doc/props/P_PARA
@@ -1,54 +1,73 @@
-NAME:
-    P_PARA                        "para"                        
 
-DEFINIERT IN:
-    /sys/properties.h
+P_PARA
+******
 
-BESCHREIBUNG:
-    Nummer der Parallelwelt, in der sich ein Spieler befindet.
 
-    Ist die Property P_PARA auf Null gesetzt, so befindet sich der Spieler in
-    der 'Normalwelt'. Gibt es bei einer Bewegung dieses Spielers mehrere
-    moegliche Zielraeume mit identischem Namen aber unterschiedlichen Endungen
-    'name.c', 'name^1.c', 'name^2.c' etc., so wird der Spieler in den Raum
-    'name.c' bewegt. 
+NAME
+====
 
-    Wird die Property P_PARA auf einen Wert n>0 gesetzt, so landet der Spieler
-    bei einer Bewegung im Raum 'name^n.c'. Ist kein Raum mit entsprechender
-    Endung vorhanden, wird der Spieler stattdessen in den Normalweltraum
-    bewegt.
+   P_PARA                        "para"
 
-    Diese Prop kann auch in einem Virtual Compiler gesetzt werden. In diesem
-    Fall schraenkt sie die Dimensionen ein, in denen der VC Objekte erzeugt.
-    Die Prop kann eine einzelne Ziffer (Int) oder ein Array von Ints 
-    aufnehmen, dann ist der VC fuer alle angegeben Dimensionen zustaendig. 
-    Ein leeres Array erlaubt gar keine Para-Objekte.
 
-ANMERKUNG:
-    Die Endung '^0' kennzeichnet _nicht_ die Normalwelt. So lange kein Ausgang
-    explizit auf den Raum 'name^0.c' verweist, wird kein Spieler den Raum
-    betreten koennen. Deshalb kann man die Endung '^0' z.B. dazu benutzen, um
-    eigene Standardraeume fuer ein Gebiet zu schreiben, die dann sowohl von
-    den Normal- als auch von den Parallelweltraeumen inheritet werden.
+DEFINIERT IN
+============
 
-    Raeume mit Endungen '^n.c', bei denen 'n' keine positive ganze Zahl ist,
-    werden nicht beachtet.
+   /sys/properties.h
 
-    Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit von
-    P_PARA landet, ist die Funktion move() zustaendig. Als Magier muss man sich
-    darum nicht gesondert kuemmern. Das heisst aber auch, dass beim Anschluss
-    eines Normalweltraumes automatisch alle in dem Verzeichnis mit gleichem
-    Namen vorhandenen Parallelweltraeume mit angeschlossen werden.
 
-    Sollen einzelne Parallelweltraeume noch nicht angeschlossen werden, so muss
-    in ihnen die Property P_NO_PLAYERS gesetzt werden. Diese Raeume sind dann
-    nur durch Magier und Testspieler zu betreten (und zu testen).
+BESCHREIBUNG
+============
 
-    In Paraweltraeumen liefert P_PARA 'n' zurueck.
-    Man kann also z.B. in NPCs einfach ueber environment()->QueryProp(P_PARA) 
-    abfragen, in welcher Parawelt sich dieser gerade befindet.
+   Nummer der Parallelwelt, in der sich ein Spieler befindet.
 
-SIEHE AUCH:
-    P_NO_PLAYERS, move, pararaeume
-    
+   Ist die Property P_PARA auf Null gesetzt, so befindet sich der Spieler in
+   der 'Normalwelt'. Gibt es bei einer Bewegung dieses Spielers mehrere
+   moegliche Zielraeume mit identischem Namen aber unterschiedlichen Endungen
+   'name.c', 'name^1.c', 'name^2.c' etc., so wird der Spieler in den Raum
+   'name.c' bewegt.
+
+   Wird die Property P_PARA auf einen Wert n>0 gesetzt, so landet der Spieler
+   bei einer Bewegung im Raum 'name^n.c'. Ist kein Raum mit entsprechender
+   Endung vorhanden, wird der Spieler stattdessen in den Normalweltraum
+   bewegt.
+
+   Diese Prop kann auch in einem Virtual Compiler gesetzt werden. In diesem
+   Fall schraenkt sie die Dimensionen ein, in denen der VC Objekte erzeugt.
+   Die Prop kann eine einzelne Ziffer (Int) oder ein Array von Ints
+   aufnehmen, dann ist der VC fuer alle angegeben Dimensionen zustaendig.
+   Ein leeres Array erlaubt gar keine Para-Objekte.
+
+
+ANMERKUNG
+=========
+
+   Die Endung '^0' kennzeichnet _nicht_ die Normalwelt. So lange kein Ausgang
+   explizit auf den Raum 'name^0.c' verweist, wird kein Spieler den Raum
+   betreten koennen. Deshalb kann man die Endung '^0' z.B. dazu benutzen, um
+   eigene Standardraeume fuer ein Gebiet zu schreiben, die dann sowohl von
+   den Normal- als auch von den Parallelweltraeumen inheritet werden.
+
+   Raeume mit Endungen '^n.c', bei denen 'n' keine positive ganze Zahl ist,
+   werden nicht beachtet.
+
+   Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit von
+   P_PARA landet, ist die Funktion move() zustaendig. Als Magier muss man sich
+   darum nicht gesondert kuemmern. Das heisst aber auch, dass beim Anschluss
+   eines Normalweltraumes automatisch alle in dem Verzeichnis mit gleichem
+   Namen vorhandenen Parallelweltraeume mit angeschlossen werden.
+
+   Sollen einzelne Parallelweltraeume noch nicht angeschlossen werden, so muss
+   in ihnen die Property P_NO_PLAYERS gesetzt werden. Diese Raeume sind dann
+   nur durch Magier und Testspieler zu betreten (und zu testen).
+
+   In Paraweltraeumen liefert P_PARA 'n' zurueck.
+   Man kann also z.B. in NPCs einfach ueber environment()->QueryProp(P_PARA)
+   abfragen, in welcher Parawelt sich dieser gerade befindet.
+
+
+SIEHE AUCH
+==========
+
+   P_NO_PLAYERS, move, pararaeume
+
 25.Jan 2015 Gloinson
diff --git a/doc/props/P_PARRY b/doc/props/P_PARRY
index 03550df..40ddecd 100644
--- a/doc/props/P_PARRY
+++ b/doc/props/P_PARRY
@@ -1,31 +1,47 @@
+
 P_PARRY
+*******
 
-NAME:
-     P_PARRY "parry"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property legt fest, inwiefern eine Waffe als Parierwaffe
-     genutzt werden kann. Moegliche Werte:
+   P_PARRY "parry"
 
-         PARRY_NOT     Eine reine Angriffswaffe ohne Parierfunktion.
 
-         PARRY_TOO     Eine kombinierte Angriffs- und Parierwaffe.
+DEFINIERT IN
+============
 
-         PARRY_ONLY    Eine reine Parierwaffe. Diese kann zusaetzlich
-                       zu einer normalen Waffe gezueckt werden.
+   <combat.h>
 
-     Man sollte nur die in <combat.h> definierten Konstanten verwenden.
 
-BEMERKUNGEN:
-     Durch diese Propertie laesst sich _kein_ Parade-Bonus fuer Trves 
-     setzen! Alle Gilden haben etwas davon. Vor Verwendung bitte mit
-     der Objekt-Balance absprechen.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     /std/weapon/combat.c
+   Diese Property legt fest, inwiefern eine Waffe als Parierwaffe
+   genutzt werden kann. Moegliche Werte:
 
-----------------------------------------------------------------------------
+       PARRY_NOT     Eine reine Angriffswaffe ohne Parierfunktion.
+
+       PARRY_TOO     Eine kombinierte Angriffs- und Parierwaffe.
+
+       PARRY_ONLY    Eine reine Parierwaffe. Diese kann zusaetzlich
+                     zu einer normalen Waffe gezueckt werden.
+
+   Man sollte nur die in <combat.h> definierten Konstanten verwenden.
+
+
+BEMERKUNGEN
+===========
+
+   Durch diese Propertie laesst sich _kein_ Parade-Bonus fuer Trves
+   setzen! Alle Gilden haben etwas davon. Vor Verwendung bitte mit
+   der Objekt-Balance absprechen.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon/combat.c
+
 Last modified: Sat Jun 01 13:28:45 2001 by Tilly
diff --git a/doc/props/P_PARRY_WEAPON b/doc/props/P_PARRY_WEAPON
index c873bfb..9ee60aa 100644
--- a/doc/props/P_PARRY_WEAPON
+++ b/doc/props/P_PARRY_WEAPON
@@ -1,17 +1,30 @@
+
 P_PARRY_WEAPON
+**************
 
-NAME:
-     P_PARRY_WEAPON "parry_weapon"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Property gibt an, welche Parierwaffe ein Spieler derzeit
-     gezueckt hat.
+   P_PARRY_WEAPON "parry_weapon"
 
-SIEHE AUCH:
-     /std/weapon/combat.c, /std/living/combat.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, welche Parierwaffe ein Spieler derzeit
+   gezueckt hat.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon/combat.c, /std/living/combat.c
+
 Last modified: Sat Jun 26 15:23:00 1999 by Paracelsus
diff --git a/doc/props/P_PEACE_HISTORY b/doc/props/P_PEACE_HISTORY
index f3cb2d2..eab38d5 100644
--- a/doc/props/P_PEACE_HISTORY
+++ b/doc/props/P_PEACE_HISTORY
@@ -1,42 +1,62 @@
+
 P_PEACE_HISTORY
+***************
 
-NAME:
-     P_PEACE_HISTORY      "_peace_history"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+NAME
+====
 
-BESCHREIBUNG:
-    In dieser Prop wird nach Gilden getrennt gespeichet, wie oft das Lebewesen
-    in letzter Zeit befriedet worden ist. Diese Information geht in die
-    Chance auf eine zukuenftige Befriedung ein.
-    Die Zaehler werden im Durchschnitt alle 2700s um 2-3 reduziert.
-    Die Datenstruktur ist ein Array, welches einen Zeitstempel als erstes
-    Element und ein Mapping als zweites enthaelt. Das Mapping enthaelt unter
-    den Gildennamen als Keys den ganzzahligen Zaehler erfolgreicher
-    Befriedungen von Spielern dieser Gilde.
+   P_PEACE_HISTORY      "_peace_history"
 
-BEMERKUNGEN:
-    * Diese Property sollte niemals direkt geaendert werden. Bitte greift also
-      nur lesend darauf zu. Sollte hiermit Schindluder getrieben werden,
-      werden die Daten vor externer Aenderung geschuetzt.
-    * Die Datenstruktur in dieser Prop kann in Zukunft u.U. geaendert werden.
-      Daher aendert sie am besten auch nicht im eigenen NPC oder seid darauf
-      gefasst, irgendwann Hand anlegen zu muessen.
-    * Die Aktualisierung (auch die Reduktion) findet im Zuge eines
-      QueryPacify() statt, nicht im Reset des Lebewesens.
 
-BEISPIEL:
-    In P_PEACE_HISTORY steht:
-    ({1209654597, (["zauberer": 3, "klerus": 4]) })
-    Bei der Berechnung der naechsten Befriede-Chance gehen bei Zauberern also
-    3 erfolgreiche Versuche, bei Klerikern 4 erfolgreiche Versuche ein.
-    Der Zeitwert an erster Stelle des Arrays wird der bei der Berechnung der
-    naechsten Reduktion der Zaehler beruecksichtigt. (Genaues: s. combat.c)
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     P_PEACE_ACCEPT
-     QueryPacify()
-     /std/living/combat.c
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Prop wird nach Gilden getrennt gespeichet, wie oft das Lebewesen
+   in letzter Zeit befriedet worden ist. Diese Information geht in die
+   Chance auf eine zukuenftige Befriedung ein.
+   Die Zaehler werden im Durchschnitt alle 2700s um 2-3 reduziert.
+   Die Datenstruktur ist ein Array, welches einen Zeitstempel als erstes
+   Element und ein Mapping als zweites enthaelt. Das Mapping enthaelt unter
+   den Gildennamen als Keys den ganzzahligen Zaehler erfolgreicher
+   Befriedungen von Spielern dieser Gilde.
+
+
+BEMERKUNGEN
+===========
+
+   * Diese Property sollte niemals direkt geaendert werden. Bitte greift also
+     nur lesend darauf zu. Sollte hiermit Schindluder getrieben werden,
+     werden die Daten vor externer Aenderung geschuetzt.
+   * Die Datenstruktur in dieser Prop kann in Zukunft u.U. geaendert werden.
+     Daher aendert sie am besten auch nicht im eigenen NPC oder seid darauf
+     gefasst, irgendwann Hand anlegen zu muessen.
+   * Die Aktualisierung (auch die Reduktion) findet im Zuge eines
+     QueryPacify() statt, nicht im Reset des Lebewesens.
+
+
+BEISPIEL
+========
+
+   In P_PEACE_HISTORY steht:
+   ({1209654597, (["zauberer": 3, "klerus": 4]) })
+   Bei der Berechnung der naechsten Befriede-Chance gehen bei Zauberern also
+   3 erfolgreiche Versuche, bei Klerikern 4 erfolgreiche Versuche ein.
+   Der Zeitwert an erster Stelle des Arrays wird der bei der Berechnung der
+   naechsten Reduktion der Zaehler beruecksichtigt. (Genaues: s. combat.c)
+
+
+SIEHE AUCH
+==========
+
+   P_PEACE_ACCEPT
+   QueryPacify()
+   /std/living/combat.c
 
 01.05.2008, Zesstra
diff --git a/doc/props/P_PERM_STRING b/doc/props/P_PERM_STRING
index d7904b7..373c516 100644
--- a/doc/props/P_PERM_STRING
+++ b/doc/props/P_PERM_STRING
@@ -1,11 +1,24 @@
-NAME:
-    P_PERM_STRING                 "perm_string"                 
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_PERM_STRING
+*************
 
-BESCHREIBUNG:
-     Fuer Sprachflueche, Property ist im Spieler-Objekt zu setzen. In dem
-     Objekt, das in P_PERM_STRING gespeichert ist, wird bei Sprachbefehlen
-     permutate_string(str) aufgerufen und der zurueckgegebene String 
-     stattdessen ausgegeben.
+
+NAME
+====
+
+   P_PERM_STRING                 "perm_string"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Fuer Sprachflueche, Property ist im Spieler-Objekt zu setzen. In dem
+   Objekt, das in P_PERM_STRING gespeichert ist, wird bei Sprachbefehlen
+   permutate_string(str) aufgerufen und der zurueckgegebene String
+   stattdessen ausgegeben.
diff --git a/doc/props/P_PICK_MSG b/doc/props/P_PICK_MSG
index f77d508..76b2760 100644
--- a/doc/props/P_PICK_MSG
+++ b/doc/props/P_PICK_MSG
@@ -1,60 +1,78 @@
+
 P_PICK_MSG
-NAME:
-     P_PICK_MSG				"pick_message"
+**********
 
-DEFINIERT IN:
-     /sys/living/put_and_get.h
 
-BESCHREIBUNG:
-     Mit P_PICK_MSG kann man die Meldung, die man beim Aufnehmen eines
-     Objektes bekommt, modifizieren.
+NAME
+====
 
-     Folgende Werte sind moeglich:
+   P_PICK_MSG                         "pick_message"
 
-     o 0
-       Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-     o NO_PNG_MSG       == -1
-       Es wird keinerlei Meldung ausgegeben
+DEFINIERT IN
+============
 
-     o Ein Array aus Strings
-       Der erste String wird an den Spieler ausgegeben, der zweite
-       (optionale) an den Raum.
+   /sys/living/put_and_get.h
 
-       Die Strings werden durch die Funktion replace_personal() geparst.
-	Objekt1 - Spieler
-        Objekt2 - das Objekt, das genommen wird
 
-       Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
-       Raum.
+BESCHREIBUNG
+============
 
-BEISPIEL:
-     void create() {
-      ...
-      SetProp( P_SHORT, "Etwas Sand" );
-      SetProp( P_LONG, break_string(
-       "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+   Mit P_PICK_MSG kann man die Meldung, die man beim Aufnehmen eines
+   Objektes bekommt, modifizieren.
 
-      SetProp( P_NAME, "Sand" );
-      AddId( ({"sand"}) );
-      SetProp( P_GENDER, MALE );
+   Folgende Werte sind moeglich:
 
-      SetProp( P_PICK_MSG, ({
-       "Du schaufelst @WEN2 in deine Hand.",
-       "@WER1 schaufelt @WEN2 in eine Hand."}));
-      ...
-     }
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-     Das ganze fuehrt bei Ugars "nimm sand" zu folgenden
-     Meldungen:
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
 
-     Ugar: "Du schaufelst den Sand in deine Hand."
-     Raum: "Ugar schaufelt den Sand in eine Hand."
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum.
 
-SIEHE AUCH:
-     Aehnliches: P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
-     Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
-                 P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Sonstiges:  replace_personal(E), pick_obj(L), /std/living/put_and_get.c
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das genommen wird
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Etwas Sand" );
+    SetProp( P_LONG, break_string(
+     "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+
+    SetProp( P_NAME, "Sand" );
+    AddId( ({"sand"}) );
+    SetProp( P_GENDER, MALE );
+
+    SetProp( P_PICK_MSG, ({
+     "Du schaufelst @WEN2 in deine Hand.",
+     "@WER1 schaufelt @WEN2 in eine Hand."}));
+    ...
+   }
+
+   Das ganze fuehrt bei Ugars "nimm sand" zu folgenden
+   Meldungen:
+
+   Ugar: "Du schaufelst den Sand in deine Hand."
+   Raum: "Ugar schaufelt den Sand in eine Hand."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), pick_obj(L), /std/living/put_and_get.c
 
 14. Maerz 2004 Gloinson
diff --git a/doc/props/P_PILE_NAME b/doc/props/P_PILE_NAME
index e54dc72..edb0123 100644
--- a/doc/props/P_PILE_NAME
+++ b/doc/props/P_PILE_NAME
@@ -1,9 +1,22 @@
-NAME:
-    P_PILE_NAME                   "file_name"               
 
-DEFINIERT IN:
-    /sys/container/properties.h
+P_PILE_NAME
+***********
 
-BESCHREIBUNG:
-     In einer Leiche der Name des Gestorbenen im Dativ. (name(WEM))
-     Wird vom Haufen benoetigt.
+
+NAME
+====
+
+   P_PILE_NAME                   "file_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/container/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einer Leiche der Name des Gestorbenen im Dativ. (name(WEM))
+   Wird vom Haufen benoetigt.
diff --git a/doc/props/P_PLAYER_LIGHT b/doc/props/P_PLAYER_LIGHT
index ddd59b5..ce0c22d 100644
--- a/doc/props/P_PLAYER_LIGHT
+++ b/doc/props/P_PLAYER_LIGHT
@@ -1,28 +1,44 @@
-NAME:
-    P_PLAYER_LIGHT                       "player_light"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_PLAYER_LIGHT
+**************
 
-BESCHREIBUNG:
-    Gibt den Lichtlevel an, mit dem ein Lebewesen sieht, ein Abfragen dieser
-    Property kann z.B. sinnvoll sein wenn man abfragen will ob ein Spieler
-    genug Licht dabei hat um ein bestimmtes Detail untersuchen zu koennen.
 
-    Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
-    da das Lichtlevel ggf. neu berechnet werden muss!
+NAME
+====
 
-    Ein direktes setzen dieser Property ist NICHT moeglich. Es ist jedoch
-    moeglich entweder eine Closure zu benutzen oder den Wert ueber einen
-    P_LIGHT_MODIFIER zu veraendern.
+   P_PLAYER_LIGHT                       "player_light"
 
-    Um zu erreichen, das ein NPC Nachtsicht bekommt, gibt es nun 3 Varianten.
-    - eine closure:
-        Set(P_PLAYER_LIGHT, function int () {return 1;} , F_QUERY_METHOD) 
-      dieses bedeutet, dass der NPC in jeder Dunkelheit perfekt sehen kann.
-    - das setzen von einem P_LIGHT_MODIFIER
-    - das benutzen des stdskills. Hierzu schreibt man in das create() des
-      NPCs einfach ein: ModifySkill(SK_NIGHTVISION, 10000);
 
-SIEHE AUCH:
-    P_LIGHT_MODIFIER, P_LIGHT, P_TOTAL_LIGHT, P_INT_LIGHT, CannotSee()
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Lichtlevel an, mit dem ein Lebewesen sieht, ein Abfragen dieser
+   Property kann z.B. sinnvoll sein wenn man abfragen will ob ein Spieler
+   genug Licht dabei hat um ein bestimmtes Detail untersuchen zu koennen.
+
+   Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
+   da das Lichtlevel ggf. neu berechnet werden muss!
+
+   Ein direktes setzen dieser Property ist NICHT moeglich. Es ist jedoch
+   moeglich entweder eine Closure zu benutzen oder den Wert ueber einen
+   P_LIGHT_MODIFIER zu veraendern.
+
+   Um zu erreichen, das ein NPC Nachtsicht bekommt, gibt es nun 3 Varianten.
+   - eine closure:
+       Set(P_PLAYER_LIGHT, function int () {return 1;} , F_QUERY_METHOD)
+     dieses bedeutet, dass der NPC in jeder Dunkelheit perfekt sehen kann.
+   - das setzen von einem P_LIGHT_MODIFIER
+   - das benutzen des stdskills. Hierzu schreibt man in das create() des
+     NPCs einfach ein: ModifySkill(SK_NIGHTVISION, 10000);
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT_MODIFIER, P_LIGHT, P_TOTAL_LIGHT, P_INT_LIGHT, CannotSee()
diff --git a/doc/props/P_PLURAL b/doc/props/P_PLURAL
index 0a5e3a5..eed829f 100644
--- a/doc/props/P_PLURAL
+++ b/doc/props/P_PLURAL
@@ -1,39 +1,58 @@
-NAME:
-    P_PLURAL                      "plural"
 
-DEFINIERT IN:
-    /sys/thing/language.h
+P_PLURAL
+********
 
-BESCHREIBUNG:
-    Mit Hilfe von P_PLURAL koennen auch nicht Unit Objekte als Pluralobjekte
-    markiert werden. Bei einem Wert > 1 wird der Wert ausserdem auch noch in
-    den Namen eingefuegt. Sollte man in eigenem Code zulassen wollen, das
-    etwas mit bestimmten Objekten geschieht, dann sollte man die Verben
-    entsprechen konjugieren.
 
-BEMERKUNGEN:
-    Wirkt nicht auf Todesmeldungen -> siehe dafuer P_KILL_MSG
+NAME
+====
 
-BEISPIELE:
-    SetProp(P_NAME, "Stiefel"); SetProp(P_PLURAL, 2);
-    name(WER, 1) -> "die zwei Stiefel"
+   P_PLURAL                      "plural"
 
-    SetProp(P_NAME, "Stiefel"); SetProp(P_PLURAL, 1);
-    name(WER, 1) -> "die Stiefel"
 
-    // Ein Beispiel fuer das konjugieren von Verben
-    static int cmd_opfer(string str)
-    {
-       int i;
-       object *obs;
-       notify_fail("Was moechtest Du opfern?\n");
-       if (!str || !sizeof(obs=PL->find_obs(str))) return 0;
-       for (i=sizeof(obs)-1; i>=0; i--)
-          if (obs[i]->QueryProp(P_VALUE)<=0)
-            write(obs[i]->Name(WER)+" "
-                 +(ob->QueryProp(P_PLURAL) ? "sind" : "ist")
-                 +" doch gar nichts wert.\n");
-          else obs[i]->remove();
-    }
+DEFINIERT IN
+============
+
+   /sys/thing/language.h
+
+
+BESCHREIBUNG
+============
+
+   Mit Hilfe von P_PLURAL koennen auch nicht Unit Objekte als Pluralobjekte
+   markiert werden. Bei einem Wert > 1 wird der Wert ausserdem auch noch in
+   den Namen eingefuegt. Sollte man in eigenem Code zulassen wollen, das
+   etwas mit bestimmten Objekten geschieht, dann sollte man die Verben
+   entsprechen konjugieren.
+
+
+BEMERKUNGEN
+===========
+
+   Wirkt nicht auf Todesmeldungen -> siehe dafuer P_KILL_MSG
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Stiefel"); SetProp(P_PLURAL, 2);
+   name(WER, 1) -> "die zwei Stiefel"
+
+   SetProp(P_NAME, "Stiefel"); SetProp(P_PLURAL, 1);
+   name(WER, 1) -> "die Stiefel"
+
+   // Ein Beispiel fuer das konjugieren von Verben
+   static int cmd_opfer(string str)
+   {
+      int i;
+      object *obs;
+      notify_fail("Was moechtest Du opfern?\n");
+      if (!str || !sizeof(obs=PL->find_obs(str))) return 0;
+      for (i=sizeof(obs)-1; i>=0; i--)
+         if (obs[i]->QueryProp(P_VALUE)<=0)
+           write(obs[i]->Name(WER)+" "
+                +(ob->QueryProp(P_PLURAL) ? "sind" : "ist")
+                +" doch gar nichts wert.\n");
+         else obs[i]->remove();
+   }
 
 26. Juni 2004 Gloinson
diff --git a/doc/props/P_POISON b/doc/props/P_POISON
index 2b7ea7b..2ab5dc1 100644
--- a/doc/props/P_POISON
+++ b/doc/props/P_POISON
@@ -1,8 +1,21 @@
-NAME:
-    P_POISON                      "poison"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_POISON
+********
 
-BESCHREIBUNG:
-     Wie stark wir vergiftet sind (0-11)
+
+NAME
+====
+
+   P_POISON                      "poison"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wie stark wir vergiftet sind (0-11)
diff --git a/doc/props/P_POISON_DELAY b/doc/props/P_POISON_DELAY
index aba57c6..079efd9 100644
--- a/doc/props/P_POISON_DELAY
+++ b/doc/props/P_POISON_DELAY
@@ -1,13 +1,25 @@
-NAME:
-    P_POISON_DELAY                     "poison_delay"                     
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_POISON_DELAY
+**************
 
-BESCHREIBUNG:
-     Anzahl der heart_beats nach denen sich die Giftwirkung erneut 
-     zeigt. Je kleiner der Wert, desto empfindlicher ist das Lebewesen
-     gegen Gift.
-     Aenderungen dieser Property in Spielern beduerfen der Genehmigung
-     des EMs fuer Balance.
-     
+
+NAME
+====
+
+   P_POISON_DELAY                     "poison_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats nach denen sich die Giftwirkung erneut
+   zeigt. Je kleiner der Wert, desto empfindlicher ist das Lebewesen
+   gegen Gift.
+   Aenderungen dieser Property in Spielern beduerfen der Genehmigung
+   des EMs fuer Balance.
diff --git a/doc/props/P_PORTIONS b/doc/props/P_PORTIONS
index cb134e6..a6bdf16 100644
--- a/doc/props/P_PORTIONS
+++ b/doc/props/P_PORTIONS
@@ -1,21 +1,39 @@
-NAME:
-     P_PORTIONS                    "std_food_portions"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_PORTIONS
+**********
 
-BESCHREIBUNG:
-     In dieser Property steht die Anzahl der Portionen einer Speise.
-     Es duerfen nur Werte > -1 gesetzt werden. Ist diese Property 0,
-     wird die Speise als leer bzw. verbraucht angesehen und kann nicht
-     konsumiert werden.
-     
-DEFAULT:
-     Initial ist diese Property auf 1 gesetzt, die Speise ist also mit
-     einem Bissen/Schluck verbraucht bzw. leer.
 
-SIEHE AUCH:
-     /std/food.c, wiz/food
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_PORTIONS                    "std_food_portions"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property steht die Anzahl der Portionen einer Speise.
+   Es duerfen nur Werte > -1 gesetzt werden. Ist diese Property 0,
+   wird die Speise als leer bzw. verbraucht angesehen und kann nicht
+   konsumiert werden.
+
+
+DEFAULT
+=======
+
+   Initial ist diese Property auf 1 gesetzt, die Speise ist also mit
+   einem Bissen/Schluck verbraucht bzw. leer.
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_POST b/doc/props/P_POST
index 53a6f74..975a884 100644
--- a/doc/props/P_POST
+++ b/doc/props/P_POST
@@ -1,64 +1,82 @@
-NAME:
-	P_POST				"Post"
 
-DEFINIERT IN:
-	/mail/post.h
+P_POST
+******
 
-BESCHREIBUNG:
-	In dieser Property laesst sich die Versendeerlaubnis von Paketen
-	regeln. Hierbei gibt es zum einen die postlagernden Pakete, die man
-	in einer Post abholen muss, und es gibt die sogenannten
-	Kurierpakete, welche direkt und unmittelbar zugestellt werden.
-	Nicht immer ist es erwuenscht, dass Pakete aus der Ferne in einen
-	Raum geschickt werden duerfen. Dies duerfte insbesondere innerhalb
-	von Gebieten interessant sein, in welche man nur beschraenkt viele
-	Objekte mitfuehren kann. Mit dieser Property nun ist es leicht
-	moeglich, dies zu verbieten. Man kann auch in den Objekten selbst
-	angeben, ob diese per postlagerndem Paket bzw. Kurierpaket
-	verschickt werden duerfen. Dies duerfte zum Beispiel bei Komponenten
-	fuer Spells oder fuer Unique-Objekte interessant sein.
-	Folgende Werte sind moeglich, wobei in Raeumen und Objekten
-	Standardmaessig PP_DEFAULT genutzt wird:
 
-	  PP_FORBIDDEN		-2	// auf jeden Fall verboten
-	  PP_NO_EXPRESS		-1	// Kurierpakete verboten
-	  PP_DEFAULT		 0	// Default
-	  PP_NORMAL_ALLOWED	 1	// postlagernde Pakete erlaubt
-	  PP_ALLOWED		 2	// auf jeden Fall erlaubt
+NAME
+====
 
-	Raeume, die von /std/post.c abgeleitet wurden, nutzen als Standard
-	natuerlich PP_ALLOWED.
+   P_POST                          "Post"
 
-BEISPIEL:
-	Um Kurierpakete fuer einen Raum zu verbieten, nutzt man die
-	Funktionalitaet dieser Property folgendermassen:
 
-	  include "/mail/post.h"
-	  ...
-	  void create()
-	  { ::create();
-	    ...
-	    SetProp(P_POST,PP_NO_EXPRESS);
-	    ...
-	  }
+DEFINIERT IN
+============
 
-	Objekte selbst koennte man folgendermassen aus Paketen verbannen,
-	welche versendet werden sollen:
+   /mail/post.h
 
-	  include "/mail/post.h"
-	  ...
-	  void create()
-	  { ::create();
-	    ...
-	    SetProp(P_POST,PP_FORBIDDEN);
-	    ...
-	  }
 
-	In letzterem Fall funktionieren im Gegensatz zum ersten Beispiel
-	auch keine postlagernden Pakete mehr.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-	/std/post.c, /std/mailcabin.c, /p/service/loco/std/mailcabin.c
+   In dieser Property laesst sich die Versendeerlaubnis von Paketen
+   regeln. Hierbei gibt es zum einen die postlagernden Pakete, die man
+   in einer Post abholen muss, und es gibt die sogenannten
+   Kurierpakete, welche direkt und unmittelbar zugestellt werden.
+   Nicht immer ist es erwuenscht, dass Pakete aus der Ferne in einen
+   Raum geschickt werden duerfen. Dies duerfte insbesondere innerhalb
+   von Gebieten interessant sein, in welche man nur beschraenkt viele
+   Objekte mitfuehren kann. Mit dieser Property nun ist es leicht
+   moeglich, dies zu verbieten. Man kann auch in den Objekten selbst
+   angeben, ob diese per postlagerndem Paket bzw. Kurierpaket
+   verschickt werden duerfen. Dies duerfte zum Beispiel bei Komponenten
+   fuer Spells oder fuer Unique-Objekte interessant sein.
+   Folgende Werte sind moeglich, wobei in Raeumen und Objekten
+   Standardmaessig PP_DEFAULT genutzt wird:
 
-----------------------------------------------------------------------------
+     PP_FORBIDDEN          -2      // auf jeden Fall verboten
+     PP_NO_EXPRESS         -1      // Kurierpakete verboten
+     PP_DEFAULT             0      // Default
+     PP_NORMAL_ALLOWED      1      // postlagernde Pakete erlaubt
+     PP_ALLOWED             2      // auf jeden Fall erlaubt
+
+   Raeume, die von /std/post.c abgeleitet wurden, nutzen als Standard
+   natuerlich PP_ALLOWED.
+
+
+BEISPIEL
+========
+
+   Um Kurierpakete fuer einen Raum zu verbieten, nutzt man die
+   Funktionalitaet dieser Property folgendermassen:
+
+     include "/mail/post.h"
+     ...
+     void create()
+     { ::create();
+       ...
+       SetProp(P_POST,PP_NO_EXPRESS);
+       ...
+     }
+
+   Objekte selbst koennte man folgendermassen aus Paketen verbannen,
+   welche versendet werden sollen:
+
+     include "/mail/post.h"
+     ...
+     void create()
+     { ::create();
+       ...
+       SetProp(P_POST,PP_FORBIDDEN);
+       ...
+     }
+
+   In letzterem Fall funktionieren im Gegensatz zum ersten Beispiel
+   auch keine postlagernden Pakete mehr.
+
+
+SIEHE AUCH
+==========
+
+   /std/post.c, /std/mailcabin.c, /p/service/loco/std/mailcabin.c
+
 Last modified: Sun Sep  6 19:34:37 1998 by Patryn
diff --git a/doc/props/P_POTIONROOMS b/doc/props/P_POTIONROOMS
index 5820be2..0df158f 100644
--- a/doc/props/P_POTIONROOMS
+++ b/doc/props/P_POTIONROOMS
@@ -1,19 +1,35 @@
-NAME:
-    P_POTIONROOMS                 "potionrooms"                 
 
-DEFINIERT IN:
-    /sys/player/potion.h
+P_POTIONROOMS
+*************
 
-BESCHREIBUNG:
-    Array mit den Nummern der Raeume, in denen der Spieler noch Zauber-
-    traenke hat. Die Freischaltung als bekannt geschieht im Orakel.
-    Die Zuordnung der Raeume und Nummern geschieht im Potionmaster.
 
-    Nur lesbare _query - Property.
+NAME
+====
 
-SIEHE AUCH:
-    Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
-    Verwandt:  FindPotion(), AddKnownPotion(), RemoveKnownPotion(), InList()
-    Props:     P_KNOWN_POTIONROOMS
+   P_POTIONROOMS                 "potionrooms"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/potion.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit den Nummern der Raeume, in denen der Spieler noch Zauber-
+   traenke hat. Die Freischaltung als bekannt geschieht im Orakel.
+   Die Zuordnung der Raeume und Nummern geschieht im Potionmaster.
+
+   Nur lesbare _query - Property.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_KNOWN_POTIONROOMS
 
 6.Feb 2016 Gloinson
diff --git a/doc/props/P_PRAY_ROOM b/doc/props/P_PRAY_ROOM
index 3c8f9ff..ad0a469 100644
--- a/doc/props/P_PRAY_ROOM
+++ b/doc/props/P_PRAY_ROOM
@@ -1,36 +1,54 @@
-NAME:
-    P_PRAY_ROOM                      "_lib_p_pray_room"                  
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_PRAY_ROOM
+***********
 
-BESCHREIBUNG:
-    Dies ist der Raum, in den der Spieler nach dem Ende der Todessequenz
-    bewegt wird, d.h. ein Raum, wo er beten kann, um einen neuen Koerper zu
-    erhalten.
-    Der Raum muss als String angegeben werden (kein Objekt).
 
-    Diese Property wird im Spieler rebootfest gespeichert.
+NAME
+====
 
-    Der jeweils gueltige Betraum wird im Spieler mittels QueryPrayRoom()
-    ermittelt. Jede Rasse hat einen Default fuer diese Funktion. Wird die
-    Property auf 0 dgesetzt, wird dieser Default wiederhergestellt.
+   P_PRAY_ROOM                      "_lib_p_pray_room"
 
-    Von einer Ueberlagerung mittels Query- oder gar Setmethoden wird
-    abgeraten. Ebenso lasst bitte die Modusbits unveraendert.
 
-    Vor einer Aenderung dieser Property sollte geprueft werden, ob sie 0 ist.
-    Wenn nicht, sollte von einem Setzen der Property abgesehen werden, da dann
-    schon jemand anders den Betraum des Spielers geaendert hat. (Gleiches gilt
-    fuers Loeschen.) Bitte niemals den Inhalt der Property woanders speichern
-    und spaeter zurueckschreiben.
+DEFINIERT IN
+============
 
-    Eine dauerhafte Aenderung des Betraums des Spielers muss mit dem EM
-    Rassen und dem EM Gilden abgestimmt werden.
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Dies ist der Raum, in den der Spieler nach dem Ende der Todessequenz
+   bewegt wird, d.h. ein Raum, wo er beten kann, um einen neuen Koerper zu
+   erhalten.
+   Der Raum muss als String angegeben werden (kein Objekt).
+
+   Diese Property wird im Spieler rebootfest gespeichert.
+
+   Der jeweils gueltige Betraum wird im Spieler mittels QueryPrayRoom()
+   ermittelt. Jede Rasse hat einen Default fuer diese Funktion. Wird die
+   Property auf 0 dgesetzt, wird dieser Default wiederhergestellt.
+
+   Von einer Ueberlagerung mittels Query- oder gar Setmethoden wird
+   abgeraten. Ebenso lasst bitte die Modusbits unveraendert.
+
+   Vor einer Aenderung dieser Property sollte geprueft werden, ob sie 0 ist.
+   Wenn nicht, sollte von einem Setzen der Property abgesehen werden, da dann
+   schon jemand anders den Betraum des Spielers geaendert hat. (Gleiches gilt
+   fuers Loeschen.) Bitte niemals den Inhalt der Property woanders speichern
+   und spaeter zurueckschreiben.
+
+   Eine dauerhafte Aenderung des Betraums des Spielers muss mit dem EM
+   Rassen und dem EM Gilden abgestimmt werden.
+
 
 SIEHE AUCH
-    QueryPrayRoom(), SetDefaultPrayRoom()
+==========
 
-LETZTE AeNDERUNG:
+   QueryPrayRoom(), SetDefaultPrayRoom()
+
+
+LETZTE AeNDERUNG
+================
+
 21.05.2013, Zesstra
-
diff --git a/doc/props/P_PREFERED_ENEMY b/doc/props/P_PREFERED_ENEMY
index eed58e6..6b629aa 100644
--- a/doc/props/P_PREFERED_ENEMY
+++ b/doc/props/P_PREFERED_ENEMY
@@ -1,26 +1,41 @@
-NAME:
-	P_PREFERED_ENEMY		"pref_enemy"
 
-DEFINIERT IN:
-	/sys/living/combat.h
+P_PREFERED_ENEMY
+****************
 
-BESCHREIBUNG:
-	Diese Property enthaelt ein Array mit folgenden Eintraegen:
-	  Eintrag 1:      Integerwert zwischen 0 und 100, welcher die
-	                  Wahrscheinlichkeit dafuer angibt, dass ein
-	                  Lebewesen bevorzugt bei einem Angriff gewaehlt
-	                  werden soll.
-	  Eintraege ab 2: Lebewesen, aus welchen per Zufall eines
-	                  ausgewaehlt wird, welches beim aktuellen Angriff
-	                  bevorzugt wird.
-	Es ist zu beachten, dass solch ein bevorzugtes Opfer natuerlich auch
-	wirklich Gegner sein muss und auch im selben Raum zu stehen hat, wie
-	der Angreifer. Ist dies nicht der Fall, wird dann doch irgendein
-	anderer Gegner aus diesem Raum genommen.
 
-SIEHE AUCH:
-	QueryPreferedEnemy(), IsEnemy(), SelectEnemy(), Attack(),
-	/std/living/combat.c, /std/living/life.c
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_PREFERED_ENEMY                "pref_enemy"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Array mit folgenden Eintraegen:
+     Eintrag 1:      Integerwert zwischen 0 und 100, welcher die
+                     Wahrscheinlichkeit dafuer angibt, dass ein
+                     Lebewesen bevorzugt bei einem Angriff gewaehlt
+                     werden soll.
+     Eintraege ab 2: Lebewesen, aus welchen per Zufall eines
+                     ausgewaehlt wird, welches beim aktuellen Angriff
+                     bevorzugt wird.
+   Es ist zu beachten, dass solch ein bevorzugtes Opfer natuerlich auch
+   wirklich Gegner sein muss und auch im selben Raum zu stehen hat, wie
+   der Angreifer. Ist dies nicht der Fall, wird dann doch irgendein
+   anderer Gegner aus diesem Raum genommen.
+
+
+SIEHE AUCH
+==========
+
+   QueryPreferedEnemy(), IsEnemy(), SelectEnemy(), Attack(),
+   /std/living/combat.c, /std/living/life.c
+
 Last modified: Wed May 26 16:44:38 1999 by Patryn
diff --git a/doc/props/P_PRESAY b/doc/props/P_PRESAY
index c5ec2d2..1580b5e 100644
--- a/doc/props/P_PRESAY
+++ b/doc/props/P_PRESAY
@@ -1,9 +1,22 @@
-NAME:
-    P_PRESAY                      "presay"                      
 
-DEFINIERT IN:
-    /sys/player/description.h
+P_PRESAY
+********
 
-BESCHREIBUNG:
-     Presay des Spielers. Erscheint vor dem Namen in Kurz/Langbeschreibung.
-     Erscheint auch in name(), also in sag, ruf, teile mit usw.
+
+NAME
+====
+
+   P_PRESAY                      "presay"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Presay des Spielers. Erscheint vor dem Namen in Kurz/Langbeschreibung.
+   Erscheint auch in name(), also in sag, ruf, teile mit usw.
diff --git a/doc/props/P_PREVENT_PILE b/doc/props/P_PREVENT_PILE
index 39ddf14..1ad6807 100644
--- a/doc/props/P_PREVENT_PILE
+++ b/doc/props/P_PREVENT_PILE
@@ -1,22 +1,34 @@
-NAME:
-    P_PREVENT_PILE                   "prevent_pile"
 
-DEFINIERT IN:
-    /sys/container/properties.h
+P_PREVENT_PILE
+**************
 
-BESCHREIBUNG:
-    Wenn in einem Raum diese Property gesetzt ist, endet das Verwesen einer
-    Leiche damit, dass ihr Inventar in dem Raum verteilt wird. Ist diese
-    Property nicht gesetzt, entsteht ein "Haufen", der das Inventar
-    enthaelt.
 
-    Diese Property sollte nur in Ausnahmefaellen benutzt werden!
+NAME
+====
 
-    Diese Property ist vor allem fuer "Store-Rooms" gedacht, in denen die
-    Magier die Leiche eines Spieler ablegen und in denen nachher die
-    gesammelten Sachen von einer anderen Stelle aus gesucht werden. In
-    diesem Fall wuerden Spieler sonst die Moeglichkeit haben, einen Haufen
-    als Ganzes zu bekommen, das soll aber *NIE* passieren.
+   P_PREVENT_PILE                   "prevent_pile"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/container/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn in einem Raum diese Property gesetzt ist, endet das Verwesen einer
+   Leiche damit, dass ihr Inventar in dem Raum verteilt wird. Ist diese
+   Property nicht gesetzt, entsteht ein "Haufen", der das Inventar
+   enthaelt.
+
+   Diese Property sollte nur in Ausnahmefaellen benutzt werden!
+
+   Diese Property ist vor allem fuer "Store-Rooms" gedacht, in denen die
+   Magier die Leiche eines Spieler ablegen und in denen nachher die
+   gesammelten Sachen von einer anderen Stelle aus gesucht werden. In
+   diesem Fall wuerden Spieler sonst die Moeglichkeit haben, einen Haufen
+   als Ganzes zu bekommen, das soll aber *NIE* passieren.
+
 Last modified: Tue May 15 13:56:18 CEST 2007 by Rumata
diff --git a/doc/props/P_PRE_INFO b/doc/props/P_PRE_INFO
index 48f1d9e..099e592 100644
--- a/doc/props/P_PRE_INFO
+++ b/doc/props/P_PRE_INFO
@@ -1,55 +1,86 @@
-NAME:
-        P_PRE_INFO                        "npc_pre_info"
 
-DEFINIERT IN:
-        /sys/npc.h
+P_PRE_INFO
+**********
 
-BESCHREIBUNG:
-        Ist die Property in einem NPC definiert, so wird ihr Ergebnis
-        ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
-        
-        Moegliche Werte:
-        - numerischer Wert ungleich 0
-          => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
-             ins Leere
 
-        - Stringwert
-          => wird als Rueckgabe an den Fragenden ausgegeben, umstehende 
-             Personen bekommen den Text:
-            "XY ist nicht gewillt, Spieler YZ zu antworten".
-            Der Fragende selbst bekommt bei angegebenem Stringwert:
-            "XY " + Stringwert.
+NAME
+====
 
-        - Closure
-          => die Antwort bzw. Reaktion des NPCs obliegt ganz der 
-             angegebenen Closure. Diese muss dabei einen String oder 
-             Ganzzahlen-Wert zurueckgeben
+   P_PRE_INFO                        "npc_pre_info"
 
-BEISPIEL:
-        Ein NPC der manchmal herumrennt, um z.B. eine Aufgabe zu verrichten,
-        koennte so lange Chats abschalten, z.B.
 
-          SetProp(P_CHAT_CHANCE,0); // NPC latscht los
-        
-        Und eine Weile spaeter:
-        
-          SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
-        
-        Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
-        soll er auch keinerlei Fragen beantworten:
-          
-          Set(P_PRE_INFO, function mixed () {
-            return (QueryProp(P_CHAT_CHANCE) ? 0 : 
-              "hat gerade keine Zeit fuer Dich."); 
-            }, F_QUERY_METHOD);
+DEFINIERT IN
+============
 
-HINWEISE:
-        Bitte beachten, dass der interne Name der Property "npc_pre_info" 
-        ist und somit nur das Ueberschreiben von _query_npc_pre_info() 
-        funktioniert. 
+   /sys/npc.h
 
-SIEHE AUCH:
-        AddInfo(), /std/npc/info.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Ist die Property in einem NPC definiert, so wird ihr Ergebnis
+   ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
+
+
+
+   Moegliche Werte:
+   - numerischer Wert ungleich 0
+     => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
+        ins Leere
+
+   - Stringwert
+     => wird als Rueckgabe an den Fragenden ausgegeben, umstehende
+        Personen bekommen den Text:
+       "XY ist nicht gewillt, Spieler YZ zu antworten".
+       Der Fragende selbst bekommt bei angegebenem Stringwert:
+       "XY " + Stringwert.
+
+   - Closure
+     => die Antwort bzw. Reaktion des NPCs obliegt ganz der
+        angegebenen Closure. Diese muss dabei einen String oder
+        Ganzzahlen-Wert zurueckgeben
+
+
+BEISPIEL
+========
+
+   Ein NPC der manchmal herumrennt, um z.B. eine Aufgabe zu verrichten,
+   koennte so lange Chats abschalten, z.B.
+
+     SetProp(P_CHAT_CHANCE,0); // NPC latscht los
+
+
+
+   Und eine Weile spaeter:
+
+
+
+     SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
+
+
+
+   Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
+   soll er auch keinerlei Fragen beantworten:
+
+
+
+     Set(P_PRE_INFO, function mixed () {
+       return (QueryProp(P_CHAT_CHANCE) ? 0 :
+         "hat gerade keine Zeit fuer Dich.");
+       }, F_QUERY_METHOD);
+
+
+HINWEISE
+========
+
+   Bitte beachten, dass der interne Name der Property "npc_pre_info"
+   ist und somit nur das Ueberschreiben von _query_npc_pre_info()
+   funktioniert.
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(), /std/npc/info.c
+
 Last modified: 01.03.2016 by Arathorn
diff --git a/doc/props/P_PROMPT b/doc/props/P_PROMPT
index b380215..267437e 100644
--- a/doc/props/P_PROMPT
+++ b/doc/props/P_PROMPT
@@ -1,8 +1,21 @@
-NAME:
-    P_PROMPT                      "prompt"                      
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_PROMPT
+********
 
-BESCHREIBUNG:
-     Das Prompt (Nur fuer Magier).
+
+NAME
+====
+
+   P_PROMPT                      "prompt"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Das Prompt (Nur fuer Magier).
diff --git a/doc/props/P_PUB_NOT_ON_MENU b/doc/props/P_PUB_NOT_ON_MENU
index 07029b0..8618009 100644
--- a/doc/props/P_PUB_NOT_ON_MENU
+++ b/doc/props/P_PUB_NOT_ON_MENU
@@ -1,21 +1,39 @@
-NAME:
-	P_PUB_NOT_ON_MENU			"pub_not_on_menu"
 
-DEFINIERT IN:
-	/sys/pub.h
+P_PUB_NOT_ON_MENU
+*****************
 
-BESCHREIBUNG:
-        In diese Property kann man einen String schreiben, der ausgegeben
-        wird, wenn der Spieler etwas bestellt, was es in der Kneipe nicht
-        gibt.
 
-BEMERKUNGEN:
-        Die Standardmeldung ist:
-        "Tut mir leid, das fuehren wir nicht! Wir sind ein anstaendiges
-         Lokal!\n"
+NAME
+====
 
-SIEHE AUCH:
-	/std/room/pub.c
+   P_PUB_NOT_ON_MENU                       "pub_not_on_menu"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn der Spieler etwas bestellt, was es in der Kneipe nicht
+   gibt.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Tut mir leid, das fuehren wir nicht! Wir sind ein anstaendiges
+    Lokal!\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
 Last modified: Sat Mar 04 22:46:00 2000 by Paracelsus
diff --git a/doc/props/P_PUB_NO_KEEPER b/doc/props/P_PUB_NO_KEEPER
index 8f4c26e..55c4230 100644
--- a/doc/props/P_PUB_NO_KEEPER
+++ b/doc/props/P_PUB_NO_KEEPER
@@ -1,19 +1,37 @@
-NAME:
-	P_PUB_NO_KEEPER				"pub_no_keeper"
 
-DEFINIERT IN:
-	/sys/pub.h
+P_PUB_NO_KEEPER
+***************
 
-BESCHREIBUNG:
-        In diese Property kann man einen String schreiben, der ausgegeben
-        wird, wenn der in P_KEEPER eingetragene NPC nicht anwesend ist.
 
-BEMERKUNGEN:
-        Die Standardmeldung ist:
-        "Es ist niemand anwesend, der Dich bedienen koennte.\n"
+NAME
+====
 
-SIEHE AUCH:
-	/std/room/pub.c
+   P_PUB_NO_KEEPER                         "pub_no_keeper"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn der in P_KEEPER eingetragene NPC nicht anwesend ist.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Es ist niemand anwesend, der Dich bedienen koennte.\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
 Last modified: Son Apr 11 19:28:00 2010 by Caldra
diff --git a/doc/props/P_PUB_NO_MONEY b/doc/props/P_PUB_NO_MONEY
index 9ff293a..9510b07 100644
--- a/doc/props/P_PUB_NO_MONEY
+++ b/doc/props/P_PUB_NO_MONEY
@@ -1,21 +1,39 @@
-NAME:
-	P_PUB_NO_MONEY				"pub_no_money"
 
-DEFINIERT IN:
-	/sys/pub.h
+P_PUB_NO_MONEY
+**************
 
-BESCHREIBUNG:
-        In diese Property kann man einen String schreiben, der ausgegeben
-        wird, wenn der Spieler nicht ueber genug Geld verfuegt, um das
-        gewuenschte Gericht zu bezahlen.
-        Fuer den Preis kann man ein %d als Platzhalter einfuegen.
 
-BEMERKUNGEN:
-        Die Standardmeldung ist:
-        "Das kostet %d Goldstuecke, und Du hast nicht so viel!\n"
+NAME
+====
 
-SIEHE AUCH:
-	/std/room/pub.c
+   P_PUB_NO_MONEY                          "pub_no_money"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn der Spieler nicht ueber genug Geld verfuegt, um das
+   gewuenschte Gericht zu bezahlen.
+   Fuer den Preis kann man ein %d als Platzhalter einfuegen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Das kostet %d Goldstuecke, und Du hast nicht so viel!\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
 Last modified: Sat Mar 04 22:48:00 2000 by Paracelsus
diff --git a/doc/props/P_PUB_UNAVAILABLE b/doc/props/P_PUB_UNAVAILABLE
index 13aaa4f..7eaede7 100644
--- a/doc/props/P_PUB_UNAVAILABLE
+++ b/doc/props/P_PUB_UNAVAILABLE
@@ -1,20 +1,38 @@
-NAME:
-	P_PUB_UNAVAILABLE			"pub_unavailable"
 
-DEFINIERT IN:
-	/sys/pub.h
+P_PUB_UNAVAILABLE
+*****************
 
-BESCHREIBUNG:
-        In diese Property kann man einen String schreiben, der ausgegeben
-        wird, wenn in einer Kneipe ein Getraenk oder eine Speise nicht mehr
-        vorraetig ist.
 
-BEMERKUNGEN:
-        Die Standardmeldung ist:
-        "Davon ist leider nichts mehr da.\n"
+NAME
+====
 
-SIEHE AUCH:
-	/std/room/pub.c
+   P_PUB_UNAVAILABLE                       "pub_unavailable"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn in einer Kneipe ein Getraenk oder eine Speise nicht mehr
+   vorraetig ist.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Davon ist leider nichts mehr da.\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
 Last modified: Sat Mar 04 22:44:00 2000 by Paracelsus
diff --git a/doc/props/P_PURSUERS b/doc/props/P_PURSUERS
index c35bfe2..05ead3b 100644
--- a/doc/props/P_PURSUERS
+++ b/doc/props/P_PURSUERS
@@ -1,14 +1,29 @@
-NAME:
-    P_PURSUERS                    "pursuers"                    
 
-DEFINIERT IN:
-    /sys/living/moving.h
+P_PURSUERS
+**********
 
-BESCHREIBUNG:
-     Enthaelt Verfolger - nicht von Hand manipulieren!
 
-SIEHE AUCH:
-     AddPursuer(L), RemovePursuer(L)
+NAME
+====
 
------------------------------------------------------------------------------
+   P_PURSUERS                    "pursuers"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt Verfolger - nicht von Hand manipulieren!
+
+
+SIEHE AUCH
+==========
+
+   AddPursuer(L), RemovePursuer(L)
+
 16.06.2016, Arathorn
diff --git a/doc/props/P_PUT_MSG b/doc/props/P_PUT_MSG
index 5f6caef..65624ce 100644
--- a/doc/props/P_PUT_MSG
+++ b/doc/props/P_PUT_MSG
@@ -1,62 +1,79 @@
+
 P_PUT_MSG
-NAME:
-     P_PUT_MSG				"put_message"
+*********
 
-DEFINIERT IN:
-     /sys/living/put_and_get.h
 
-BESCHREIBUNG:
+NAME
+====
 
-     Mit P_PUT_MSG kann man die Meldung, die man beim Hineinstecken eines
-     Objektes in einen Container bekommt, modifizieren.
+   P_PUT_MSG                          "put_message"
 
-     Folgende Werte sind moeglich:
 
-     o 0
-       Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+DEFINIERT IN
+============
 
-     o NO_PNG_MSG	== -1
-       Es wird keinerlei Meldung ausgegeben
+   /sys/living/put_and_get.h
 
-     o Ein Array aus Strings
-       Der erste String wird an den Spieler ausgegeben, der zweite
-       (optionale) an den Raum.
 
-       Die Strings werden durch die Funktion replace_personal() geparst.
-	Objekt1 - Spieler
-        Objekt2 - das Objekt, das irgendwohin gesteckt wird
-	Objekt3 - der Container
+BESCHREIBUNG
+============
 
-       Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
-       Raum.
+   Mit P_PUT_MSG kann man die Meldung, die man beim Hineinstecken eines
+   Objektes in einen Container bekommt, modifizieren.
 
-BEISPIEL:
-     void create() {
-      ...
-      SetProp( P_SHORT, "Etwas Sand" );
-      SetProp( P_LONG, break_string(
-       "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+   Folgende Werte sind moeglich:
 
-      SetProp( P_NAME, "Sand" );
-      AddId( ({"sand"}) );
-      SetProp( P_GENDER, MALE );
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-      SetProp( P_PUT_MSG, ({
-       "Du laesst @WEN2 in @WENU3 rieseln.",
-       "@WER1 laesst @WEN2 in @WENU3 rieseln."}));
-      ...
-     }
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
 
-     Das ganze fuehrt bei Ugars "stecke sand in paket" zu folgenden
-     Meldungen:
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum.
 
-     Ugar: "Du laesst den Sand in ein Paket rieseln."
-     Raum: "Ugar laesst den Sand in ein Paket rieseln."
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das irgendwohin gesteckt wird
+      Objekt3 - der Container
 
-SIEHE AUCH:
-     Aehnliches: P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
-     Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
-                 P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Sonstiges:  replace_personal(E), put_obj(L), /std/living/put_and_get.c
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Etwas Sand" );
+    SetProp( P_LONG, break_string(
+     "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+
+    SetProp( P_NAME, "Sand" );
+    AddId( ({"sand"}) );
+    SetProp( P_GENDER, MALE );
+
+    SetProp( P_PUT_MSG, ({
+     "Du laesst @WEN2 in @WENU3 rieseln.",
+     "@WER1 laesst @WEN2 in @WENU3 rieseln."}));
+    ...
+   }
+
+   Das ganze fuehrt bei Ugars "stecke sand in paket" zu folgenden
+   Meldungen:
+
+   Ugar: "Du laesst den Sand in ein Paket rieseln."
+   Raum: "Ugar laesst den Sand in ein Paket rieseln."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), put_obj(L), /std/living/put_and_get.c
 
 14. Maerz 2004 Gloinson
diff --git a/doc/props/P_QP b/doc/props/P_QP
index 08fb5a4..9840586 100644
--- a/doc/props/P_QP
+++ b/doc/props/P_QP
@@ -1,13 +1,29 @@
-NAME:
-    P_QP                          "questpoints"                 
 
-DEFINIERT IN:
-    /sys/player/quest.h
+P_QP
+****
 
-BESCHREIBUNG:
-     Anzahl der Questpunkte, die ein Spieler hat.
 
-HINWEIS:
-     Nur Abfragen der Property mit QueryProp() liefert den korrekten Wert,
-     da eine Quermethode fuer die Auslieferung der Daten sorgt. Query()
-     oder gar QueryProperties() enthalten u.U. einen veralteten Wert.
+NAME
+====
+
+   P_QP                          "questpoints"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/quest.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Questpunkte, die ein Spieler hat.
+
+
+HINWEIS
+=======
+
+   Nur Abfragen der Property mit QueryProp() liefert den korrekten Wert,
+   da eine Quermethode fuer die Auslieferung der Daten sorgt. Query()
+   oder gar QueryProperties() enthalten u.U. einen veralteten Wert.
diff --git a/doc/props/P_QUALITY b/doc/props/P_QUALITY
index 3a4118c..a103eaf 100644
--- a/doc/props/P_QUALITY
+++ b/doc/props/P_QUALITY
@@ -1,38 +1,57 @@
+
 P_QUALITY
+*********
 
-NAME:
-     P_QUALITY "quality"
 
-DEFINIERT IN:
-     <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Ruestungen und Waffen koennen im Eifer des Gefechts beschaedigt werden.
-     Setzt man die Property P_QUALITY auf einen Wert n (n>0), so wird
-     eine Waffe (Ruestung) bei jedem n-ten Schlag (Treffer) beschaedigt,
-     d.h. P_WC (P_AC) wird um 1 erniedrigt und P_DAMAGED um 1 erhoeht.
+   P_QUALITY "quality"
 
-BEISPIEL:
-     inherit "/std/weapon";
 
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Ruestungen und Waffen koennen im Eifer des Gefechts beschaedigt werden.
+   Setzt man die Property P_QUALITY auf einen Wert n (n>0), so wird
+   eine Waffe (Ruestung) bei jedem n-ten Schlag (Treffer) beschaedigt,
+   d.h. P_WC (P_AC) wird um 1 erniedrigt und P_DAMAGED um 1 erhoeht.
+
+
+BEISPIEL
+========
+
+   inherit "/std/weapon";
+
+   ...
+   #include <combat.h>
+
+   create()
+   {
      ...
-     #include <combat.h>
+     SetProp(P_QUALITY,200);
+     ...
+   }
 
-     create()
-     {
-       ...
-       SetProp(P_QUALITY,200);
-       ...
-     }
+   Diese Waffe wuerde bei jedem 200. Schlag etwas beschaedigt.
 
-     Diese Waffe wuerde bei jedem 200. Schlag etwas beschaedigt.
 
-BEMERKUNG:
-     Defaultmaessig ist P_QUALITY auf 0 gesetzt, d.h. die entspr.
-     Waffe/Ruestung wird nicht beschaedigt.
+BEMERKUNG
+=========
 
-SIEHE AUCH:
-     /std/armour.c, /std/weapon.c, TakeFlaw(), QueryFlaw(), Damage()
+   Defaultmaessig ist P_QUALITY auf 0 gesetzt, d.h. die entspr.
+   Waffe/Ruestung wird nicht beschaedigt.
 
-----------------------------------------------------------------------------
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, /std/weapon.c, TakeFlaw(), QueryFlaw(), Damage()
+
 Last modified: Thu May 22 10:42:39 1997 by Paracelsus
diff --git a/doc/props/P_QUESTS b/doc/props/P_QUESTS
index 446ea90..84fe435 100644
--- a/doc/props/P_QUESTS
+++ b/doc/props/P_QUESTS
@@ -1,8 +1,21 @@
-NAME:
-    P_QUESTS                      "quests"                      
 
-DEFINIERT IN:
-    /sys/player/quest.h
+P_QUESTS
+********
 
-BESCHREIBUNG:
-     Liste der geloesten Quests.
+
+NAME
+====
+
+   P_QUESTS                      "quests"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/quest.h
+
+
+BESCHREIBUNG
+============
+
+   Liste der geloesten Quests.
diff --git a/doc/props/P_QUEST_ITEM b/doc/props/P_QUEST_ITEM
index e4eebb5..135954b 100644
--- a/doc/props/P_QUEST_ITEM
+++ b/doc/props/P_QUEST_ITEM
@@ -1,46 +1,73 @@
-NAME:
-	P_QUEST_ITEM				"quest_item" 
 
-DEFINIERT IN:
-	/sys/quest_items.h
+P_QUEST_ITEM
+************
 
-BESCHREIBUNG:
-        Diese Property gibt an, ob es sich bei dem Objekt um ein Quest-
-	relevantes Objekt handelt.
-	
-BEISPIEL:
-        Ein Schwert (Notung) koennte folgendermassen definiert sein:
 
-	create()
-	{
-	  ::create() ;
-	  SetProp(P_SHORT, "Notung das neidliche Schwert") ;
-	  SetProp(P_LONG, "Das aus seinen Truemmern neu geschmiedete Schwert " 
-	                  "Notung.\n");
+NAME
+====
 
-	  SetProp(P_NAME, "Notung");
-	  SetProp(P_GENDER, NEUTER);
-	  SetProp(P_ARTICLE,0);
-	  AddId(({"notung","schwert","Notung", "\nNotung"}));
-	
-	  SetProp(P_WEAPON_TYPE, WT_SWORD);
-	  SetProp(P_DAM_TYPE, DT_BLUDGEON);
+   P_QUEST_ITEM                            "quest_item"
 
-	  SetProp(P_QUEST_ITEM,QI_OBJ);
-	  ...
-	}
-	    
-	Andere Magier koennen nun auf Notung Ruecksicht nehmen, und zum
-	Beispiel davon absehen, es bei einem NPC-Spell zu destructen.
 
-BEMERKUNGEN:
-        Alle questrelevanten Objekte sollten auf diese Weise markiert werden.
-	
-	Questrelevante Objekte anderer Magier sollten immer mit Vorsicht 
-	behandelt werden.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	"/sys/quest_items.h"
+   /sys/quest_items.h
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, ob es sich bei dem Objekt um ein Quest-
+   relevantes Objekt handelt.
+
+
+BEISPIEL
+========
+
+   Ein Schwert (Notung) koennte folgendermassen definiert sein:
+
+   create()
+   {
+     ::create() ;
+     SetProp(P_SHORT, "Notung das neidliche Schwert") ;
+     SetProp(P_LONG, "Das aus seinen Truemmern neu geschmiedete Schwert "
+                     "Notung.\n");
+
+     SetProp(P_NAME, "Notung");
+     SetProp(P_GENDER, NEUTER);
+     SetProp(P_ARTICLE,0);
+     AddId(({"notung","schwert","Notung", "\nNotung"}));
+
+
+
+     SetProp(P_WEAPON_TYPE, WT_SWORD);
+     SetProp(P_DAM_TYPE, DT_BLUDGEON);
+
+     SetProp(P_QUEST_ITEM,QI_OBJ);
+     ...
+   }
+
+
+
+   Andere Magier koennen nun auf Notung Ruecksicht nehmen, und zum
+   Beispiel davon absehen, es bei einem NPC-Spell zu destructen.
+
+
+BEMERKUNGEN
+===========
+
+   Alle questrelevanten Objekte sollten auf diese Weise markiert werden.
+
+
+
+   Questrelevante Objekte anderer Magier sollten immer mit Vorsicht
+   behandelt werden.
+
+
+SIEHE AUCH
+==========
+
+   "/sys/quest_items.h"
+
 Last modified: Thu Jul 10 07:08:32 2003 by Vanion
diff --git a/doc/props/P_RACE b/doc/props/P_RACE
index 7ed77cd..c6aebc7 100644
--- a/doc/props/P_RACE
+++ b/doc/props/P_RACE
@@ -1,30 +1,48 @@
-NAME:
-	P_RACE				"race"
 
-DEFINIERT IN:
-	/sys/living/description.h
+P_RACE
+******
 
-BESCHREIBUNG:
-	Die Rasse eines Lebewesens kann ueber diese Property ermittelt bzw.
-	gesetzt werden. Es empfiehlt sich hierbei, Rassen nur in Form von
-	grossgeschriebenen Strings zu setzen. Leichen erhalten mittels
-	dieser Property automatisch die Rasse der Lebewesen, aus denen sie
-	hervorgegangen sind.
-	Der Sinn des Ganzen liegt darin, das Spiel differenzierter zu
-	gestalten und auf Rassenspezifika einzugehen. Zum Beispiel koennen
-	Elfen weniger Alkohol vertragen als Zwerge, was in '/std/pub'
-	beruecksichtigt wurde.
 
-BEISPIEL:
-	void create()
-	{ ::create();
-	  // Definitionen
-	  SetProp(P_RACE,"Ork");
-	  // weitere Definitionen
-	}
+NAME
+====
 
-SIEHE AUCH:
-	/std/npc.c, /std/pub.c
+   P_RACE                          "race"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Die Rasse eines Lebewesens kann ueber diese Property ermittelt bzw.
+   gesetzt werden. Es empfiehlt sich hierbei, Rassen nur in Form von
+   grossgeschriebenen Strings zu setzen. Leichen erhalten mittels
+   dieser Property automatisch die Rasse der Lebewesen, aus denen sie
+   hervorgegangen sind.
+   Der Sinn des Ganzen liegt darin, das Spiel differenzierter zu
+   gestalten und auf Rassenspezifika einzugehen. Zum Beispiel koennen
+   Elfen weniger Alkohol vertragen als Zwerge, was in '/std/pub'
+   beruecksichtigt wurde.
+
+
+BEISPIEL
+========
+
+   void create()
+   { ::create();
+     // Definitionen
+     SetProp(P_RACE,"Ork");
+     // weitere Definitionen
+   }
+
+
+SIEHE AUCH
+==========
+
+   /std/npc.c, /std/pub.c
+
 Last modified: Mon Sep 15 21:15:49 2003 by Vanion
diff --git a/doc/props/P_RACESTRING b/doc/props/P_RACESTRING
index b75f46b..2a13577 100644
--- a/doc/props/P_RACESTRING
+++ b/doc/props/P_RACESTRING
@@ -1,9 +1,22 @@
-NAME:
-    P_RACESTRING                  "racestring"                  
 
-DEFINIERT IN:
-    /sys/properties.h
+P_RACESTRING
+************
 
-BESCHREIBUNG:
-     Gibt eine dem Geschlecht angepasste Beschreibung der Rasse zurueck
-     ("Zwerg" oder "Zwergin" etc.)
+
+NAME
+====
+
+   P_RACESTRING                  "racestring"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt eine dem Geschlecht angepasste Beschreibung der Rasse zurueck
+   ("Zwerg" oder "Zwergin" etc.)
diff --git a/doc/props/P_RACE_DESCRIPTION b/doc/props/P_RACE_DESCRIPTION
index 5b2ebfb..ca1f576 100644
--- a/doc/props/P_RACE_DESCRIPTION
+++ b/doc/props/P_RACE_DESCRIPTION
@@ -1,8 +1,21 @@
-NAME:
-    P_RACE_DESCRIPTION            "racedescr"                   
 
-DEFINIERT IN:
-    /sys/properties.h
+P_RACE_DESCRIPTION
+******************
 
-BESCHREIBUNG:
-     Beschreibung der Vor/Nachteile einer Rasse.
+
+NAME
+====
+
+   P_RACE_DESCRIPTION            "racedescr"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Beschreibung der Vor/Nachteile einer Rasse.
diff --git a/doc/props/P_RANGE b/doc/props/P_RANGE
index 7fd5268..2fabc63 100644
--- a/doc/props/P_RANGE
+++ b/doc/props/P_RANGE
@@ -1,26 +1,43 @@
+
 P_RANGE
+*******
 
-NAME:
-    P_RANGE     "range"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Legt die Reichweite einer Schusswaffe fest. Ist ein Schuetze in einem
-    Raum mit gueltigem P_TARGET_AREA (andere Raum) oder environment() und
-    ist fuer diesen Raum P_SHOOTING_AREA festgelegt, dann kann er mit seiner
-    Schusswaffe in diesen anderen Raum schiessen, wenn die P_RANGE groesser
-    als P_SHOOTING_AREA ist.
+   P_RANGE     "range"
 
-BEISPIELE:
-    // Langbogen mit 100 Reichweite
-    SetProp(P_RANGE, 100);
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_SHOOTING_AREA, P_TARGET_AREA
-    Sonstiges: fernwaffen
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Legt die Reichweite einer Schusswaffe fest. Ist ein Schuetze in einem
+   Raum mit gueltigem P_TARGET_AREA (andere Raum) oder environment() und
+   ist fuer diesen Raum P_SHOOTING_AREA festgelegt, dann kann er mit seiner
+   Schusswaffe in diesen anderen Raum schiessen, wenn die P_RANGE groesser
+   als P_SHOOTING_AREA ist.
+
+
+BEISPIELE
+=========
+
+   // Langbogen mit 100 Reichweite
+   SetProp(P_RANGE, 100);
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_SHOOTING_AREA, P_TARGET_AREA
+   Sonstiges: fernwaffen
 
 29.Jul 2014 Gloinson
diff --git a/doc/props/P_READ_DETAILS b/doc/props/P_READ_DETAILS
index 035a2cc..06a7598 100644
--- a/doc/props/P_READ_DETAILS
+++ b/doc/props/P_READ_DETAILS
@@ -1,21 +1,40 @@
-NAME:
-    P_READ_DETAILS                "read_details"                
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_READ_DETAILS
+**************
 
-BESCHREIBUNG:
-    Mapping mit den Daten der Details, die durch Lesen ermittelt werden
-    koennen.
 
-BEMERKUNGEN:
-    Bitte nur mit den entsprechenden Methoden veraendern!
+NAME
+====
 
-SIEHE AUCH:
-    Setzen:    AddReadDetail()
-    Loeschen:  RemoveReadDetail()
-    Aehnlich:  AddDetail(), P_DETAILS
-    Veraltet:  P_READ_MSG
-    Sonstiges: GetDetail(), break_string()
+   P_READ_DETAILS                "read_details"
 
-27. Jan 2013 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit den Daten der Details, die durch Lesen ermittelt werden
+   koennen.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte nur mit den entsprechenden Methoden veraendern!
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddReadDetail()
+   Loeschen:  RemoveReadDetail()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Veraltet:  P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/props/P_READ_NEWS b/doc/props/P_READ_NEWS
index b64a252..8c69c89 100644
--- a/doc/props/P_READ_NEWS
+++ b/doc/props/P_READ_NEWS
@@ -1,8 +1,21 @@
-NAME:
-    P_READ_NEWS                   "read_news"                   
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_READ_NEWS
+***********
 
-BESCHREIBUNG:
-     Welche Artikel bereits gelesen wurde (frueher: in der MPA)
+
+NAME
+====
+
+   P_READ_NEWS                   "read_news"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Welche Artikel bereits gelesen wurde (frueher: in der MPA)
diff --git a/doc/props/P_REAL_RACE b/doc/props/P_REAL_RACE
index 88279a6..39c196a 100644
--- a/doc/props/P_REAL_RACE
+++ b/doc/props/P_REAL_RACE
@@ -1,72 +1,95 @@
-NAME:
-	P_REAL_RACE				"real_race"
 
-DEFINIERT IN:
-	/sys/living/description.h
-
-BESCHREIBUNG:
-        Diese Property enthaelt die Rasse des Livings. Sie darf nicht durch 
-	Shadows ueberschrieben werden.
-	
-	Wirklich interessant ist sie, wenn ein Spieler sich tarnt. Dort kann
-	man mit dieser Property trotz Tarnung feststellen, welche Rasse der
-	Spieler hat.
-
-	Bei NPC enthaelt sie den gleichen Wert wie P_RACE. Wenn P_REAL_RACE
-	allerdings gesetzt wird, kann man damit einen getarnten NPC simu-
-	lieren, da dann P_RACE und P_REAL_RACE voneinander abweichen.
-	
-BEISPIEL:
-        Ein Zwerg mag Zwergenbrot, fuer Elfen ist es giftig. Selbst wenn der
-	Elf sich als Zwerg tarnt, wird ihm durch lembas sicher uebel werden:
-
-        int futter(string arg)
-        {
-          notify_fail("Was willst Du essen?\n");
-          if(!arg || !id(arg)) return 0;
-
-          notify_fail("Du kannst nichts mehr essen.\n");
-          if(!this_player()->eat_food(55)) return 0;
-
-          write("Du isst ein Stueck Zwegenbrot. Du versuchst es zumindest!\n");
-          say(sprintf("%s beisst in ein Stueck Zwergenbrot. Zahnschmerz!!!\n",
-              this_player()->Name()));
+P_REAL_RACE
+***********
 
 
-          switch( this_player()->QueryProp(P_REAL_RACE) )
-          {
-          case "Zwerg":
-	    if ((this_player()->QueryProp(P_RACE))!="Zwerg")
-	      write("Zur Tarnung spuckst Du etwas von dem Brot aus!\n"); 
-            this_player()->buffer_hp(100,10);
-            this_player()->buffer_sp(100,10);
-            break;
+NAME
+====
 
-          case "Elf":
-	    write("Das Zwergenbrot brennt wie Feuer auf Deiner Zunge!");
-	    // Getarnt?
-	    if ((this_player()->QueryProp(P_RACE))!="Elf")
-	      write(" Deine Tarnung nutzt Dir da wenig.\n"
-            else write("\n");
-            this_player()->restore_spell_points(-100);
-            this_player()->do_damage(100,this_object());
-            break;
+   P_REAL_RACE                             "real_race"
 
-          default:
-	    write("Du bekommst nur wenig davon herunter..\n");
-            this_player()->buffer_hp(10,1);
-            this_player()->buffer_sp(10,2);
-            break;
-          }
-  
-          remove();
-  
-          return 1;
-        }
 
-	
-SIEHE AUCH:
-	/std/living/description.c, /sys/living/description.h, P_RACE
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Rasse des Livings. Sie darf nicht durch
+   Shadows ueberschrieben werden.
+
+
+
+   Wirklich interessant ist sie, wenn ein Spieler sich tarnt. Dort kann
+   man mit dieser Property trotz Tarnung feststellen, welche Rasse der
+   Spieler hat.
+
+   Bei NPC enthaelt sie den gleichen Wert wie P_RACE. Wenn P_REAL_RACE
+   allerdings gesetzt wird, kann man damit einen getarnten NPC simu-
+   lieren, da dann P_RACE und P_REAL_RACE voneinander abweichen.
+
+
+BEISPIEL
+========
+
+   Ein Zwerg mag Zwergenbrot, fuer Elfen ist es giftig. Selbst wenn der
+   Elf sich als Zwerg tarnt, wird ihm durch lembas sicher uebel werden:
+
+   int futter(string arg)
+   {
+     notify_fail("Was willst Du essen?\n");
+     if(!arg || !id(arg)) return 0;
+
+     notify_fail("Du kannst nichts mehr essen.\n");
+     if(!this_player()->eat_food(55)) return 0;
+
+     write("Du isst ein Stueck Zwegenbrot. Du versuchst es zumindest!\n");
+     say(sprintf("%s beisst in ein Stueck Zwergenbrot. Zahnschmerz!!!\n",
+         this_player()->Name()));
+
+
+     switch( this_player()->QueryProp(P_REAL_RACE) )
+     {
+     case "Zwerg":
+       if ((this_player()->QueryProp(P_RACE))!="Zwerg")
+         write("Zur Tarnung spuckst Du etwas von dem Brot aus!\n");
+       this_player()->buffer_hp(100,10);
+       this_player()->buffer_sp(100,10);
+       break;
+
+     case "Elf":
+       write("Das Zwergenbrot brennt wie Feuer auf Deiner Zunge!");
+       // Getarnt?
+       if ((this_player()->QueryProp(P_RACE))!="Elf")
+         write(" Deine Tarnung nutzt Dir da wenig.\n"
+       else write("\n");
+       this_player()->restore_spell_points(-100);
+       this_player()->do_damage(100,this_object());
+       break;
+
+     default:
+       write("Du bekommst nur wenig davon herunter..\n");
+       this_player()->buffer_hp(10,1);
+       this_player()->buffer_sp(10,2);
+       break;
+     }
+
+
+
+     remove();
+
+
+
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   /std/living/description.c, /sys/living/description.h, P_RACE
+
 Last modified: Mon Sep 15 21:15:49 2003 by Vanion
diff --git a/doc/props/P_REFERENCE_OBJECT b/doc/props/P_REFERENCE_OBJECT
index e2a6405..9187a49 100644
--- a/doc/props/P_REFERENCE_OBJECT
+++ b/doc/props/P_REFERENCE_OBJECT
@@ -1,27 +1,41 @@
+
 P_REFERENCE_OBJECT
-NAME:
-     P_REFERENCE_OBJECT            "reference_object"
+******************
 
-DEFINIERT IN:
-     /sys/player/description.h
 
-BESCHREIBUNG:
-     In dieser Propertie wird das aktuelle Bezugsobjekt eines Spielers 
-     gespeichert. Untersucht der Spieler ein Monster, so ist dies das 
-     Monsterobjekt, untersucht der Spieler sich selber, ist es das 
-     Spielerobjekt.
+NAME
+====
 
-     Der Inhalt dieser Propertie besteht also immer aus dem zuletzt 
-     betrachteten Objekt. Sei es ein Raum, eine Ruestung, ein Monster oder 
-     was auch immer. Bewegungsbefehle und andere Kommandos werden nicht 
-     beruecksichtigt.
+   P_REFERENCE_OBJECT            "reference_object"
 
-     Einzig wenn der Spieler 'schau' tippt, wird der Inhalt der Propertie 
-     geloescht und betraegt 0.
 
-SIEHE AUCH:
-     Sonstiges:		P_INT_LONG, P_LONG, P_SHORT
-			int_long(), long(), short(), make_invlist()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Propertie wird das aktuelle Bezugsobjekt eines Spielers
+   gespeichert. Untersucht der Spieler ein Monster, so ist dies das
+   Monsterobjekt, untersucht der Spieler sich selber, ist es das
+   Spielerobjekt.
+
+   Der Inhalt dieser Propertie besteht also immer aus dem zuletzt
+   betrachteten Objekt. Sei es ein Raum, eine Ruestung, ein Monster oder
+   was auch immer. Bewegungsbefehle und andere Kommandos werden nicht
+   beruecksichtigt.
+
+   Einzig wenn der Spieler 'schau' tippt, wird der Inhalt der Propertie
+   geloescht und betraegt 0.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges:         P_INT_LONG, P_LONG, P_SHORT
+                      int_long(), long(), short(), make_invlist()
+
 Letzte Aenderung: 29.06.02, 23:50:00 h, von Tilly
diff --git a/doc/props/P_REJECT b/doc/props/P_REJECT
index 4af07f3..072bdab 100644
--- a/doc/props/P_REJECT
+++ b/doc/props/P_REJECT
@@ -1,51 +1,72 @@
-NAME:
-	P_REJECT			"reject"
 
-DEFINIERT IN:
-	/sys/properties.h
+P_REJECT
+********
 
-BESCHREIBUNG:
-	Diese Property zeigt standardmaessig nur in NPCs eine Wirkung. Mit
-	ihr laesst sich sehr einfach einstellen, wie sich ein solcher NPC
-	gegenueber Gegenstaenden verhalten soll, welche ihm zugesteckt
-	werden. Hierbei besteht die Property aus 2 Elementen, welche
-	bestimmt, was der NPC mit Dingen tuen soll, die ihm gegeben werden.
-	Standardmaessig behaelt der NPC die Sachen einfach.
-	Folgende Moeglichkeiten gibt es ausserdem:
-	  1. Arrayelement: Art der Handlung. (aus "/sys/moving.h")
-	    REJECT_GIVE: Der NPC gibt das Objekt zurueck.
-	    REJECT_DROP: Der NPC laesst das Objekt fallen.
-	    REJECT_KEEP: Der NPC behaelt das Objekt doch.
-	    REJECT_LIGHT_MODIFIER: Der NPC nimmt keine Gegenstaende an, die
-	      sein Lichtlevel veraendern und damit Einfluss auf sein
-	      Kampfverhalten haben koennten.
-	  2. Arrayelement: Meldung, mit welcher der NPC die Handlung
-	                   kommentiert.
-	    Der Meldung wird nichts automatisch vorangestellt und ein
-	    abschliessender Zeilenumbruch ist ebenfalls selbstaendig
-	    vorzunehmen. Mit einem Leerstring ist somit auch gar keine
-	    Rueckmeldung moeglich.
 
-BEISPIEL:
-	Der NPC schmeisst alle ihm gegebenen Gegenstaende einfach weg:
-	  void create()
-	  { ::create();
-	    ...
-	    SetProp(P_REJECT,({REJECT_GIVE,
-	    Name(WER)+" murmelt: Was soll ich denn damit?!\n"}));
-	    ...
-	  }
-	Manchmal ist das recht nuetzlich, z.B. kann man so eigentlich schwer
-	zu toetende NPCs dagegen schuetzen, dass man ihnen angezuendetes
-	Dynamit oder aehnliches ueberreicht.
+NAME
+====
 
-BEMERKUNGEN:
-	Innerhalb von NPCs ist die Funktion give_notify() fuer die
-	automatische Auswertung dieser Property verantwortlich; das sollte
-	man insbesondere beim Ueberschreiben dieser Funktion beachten!
+   P_REJECT                        "reject"
 
-SIEHE AUCH:
-	give_notify(), /std/npc/put_and_get.c
 
------------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property zeigt standardmaessig nur in NPCs eine Wirkung. Mit
+   ihr laesst sich sehr einfach einstellen, wie sich ein solcher NPC
+   gegenueber Gegenstaenden verhalten soll, welche ihm zugesteckt
+   werden. Hierbei besteht die Property aus 2 Elementen, welche
+   bestimmt, was der NPC mit Dingen tuen soll, die ihm gegeben werden.
+   Standardmaessig behaelt der NPC die Sachen einfach.
+   Folgende Moeglichkeiten gibt es ausserdem:
+     1. Arrayelement: Art der Handlung. (aus "/sys/moving.h")
+       REJECT_GIVE: Der NPC gibt das Objekt zurueck.
+       REJECT_DROP: Der NPC laesst das Objekt fallen.
+       REJECT_KEEP: Der NPC behaelt das Objekt doch.
+       REJECT_LIGHT_MODIFIER: Der NPC nimmt keine Gegenstaende an, die
+         sein Lichtlevel veraendern und damit Einfluss auf sein
+         Kampfverhalten haben koennten.
+     2. Arrayelement: Meldung, mit welcher der NPC die Handlung
+                      kommentiert.
+       Der Meldung wird nichts automatisch vorangestellt und ein
+       abschliessender Zeilenumbruch ist ebenfalls selbstaendig
+       vorzunehmen. Mit einem Leerstring ist somit auch gar keine
+       Rueckmeldung moeglich.
+
+
+BEISPIEL
+========
+
+   Der NPC schmeisst alle ihm gegebenen Gegenstaende einfach weg:
+     void create()
+     { ::create();
+       ...
+       SetProp(P_REJECT,({REJECT_GIVE,
+       Name(WER)+" murmelt: Was soll ich denn damit?!\n"}));
+       ...
+     }
+   Manchmal ist das recht nuetzlich, z.B. kann man so eigentlich schwer
+   zu toetende NPCs dagegen schuetzen, dass man ihnen angezuendetes
+   Dynamit oder aehnliches ueberreicht.
+
+
+BEMERKUNGEN
+===========
+
+   Innerhalb von NPCs ist die Funktion give_notify() fuer die
+   automatische Auswertung dieser Property verantwortlich; das sollte
+   man insbesondere beim Ueberschreiben dieser Funktion beachten!
+
+
+SIEHE AUCH
+==========
+
+   give_notify(), /std/npc/put_and_get.c
+
 Last modified: Mon Apr 23 16:54:07 2001 by Patryn
diff --git a/doc/props/P_REMOVE_FUNC b/doc/props/P_REMOVE_FUNC
index 2d431fa..f5c2232 100644
--- a/doc/props/P_REMOVE_FUNC
+++ b/doc/props/P_REMOVE_FUNC
@@ -1,25 +1,40 @@
+
 P_REMOVE_FUNC
-
-NAME:
-     P_REMOVE_FUNC "remove_func"
-
-DEFINIERT IN:
-     <armour.h>
-
-BESCHREIBUNG:
-     Falls ein Objekt eine RemoveFunc() fuer die Ruestung oder Kleidung 
-     definiert, so muss dieses Objekt in dieser Property eingetragen sein.
-
-     Die Auswertung dieser Property erfolgt im Laufe des DoUnwear() in
-     der nicht-oeffentlichen Funktionen _check_unwear_restrictions().
-
-BEISPIELE:
-     Siehe das Beispiel zu RemoveFunc()
-
-SIEHE AUCH:
-     /std/armour.c, /std/clothing.c, clothing, armours
-     RemoveFunc()
+*************
 
 
-Letzte Aenderung:
-15.02.2009, Zesstra
\ No newline at end of file
+NAME
+====
+
+   P_REMOVE_FUNC "remove_func"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine RemoveFunc() fuer die Ruestung oder Kleidung
+   definiert, so muss dieses Objekt in dieser Property eingetragen sein.
+
+   Die Auswertung dieser Property erfolgt im Laufe des DoUnwear() in
+   der nicht-oeffentlichen Funktionen _check_unwear_restrictions().
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu RemoveFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, /std/clothing.c, clothing, armours
+   RemoveFunc()
+
+Letzte Aenderung: 15.02.2009, Zesstra
diff --git a/doc/props/P_REMOVE_MSG b/doc/props/P_REMOVE_MSG
index 9eb1d8d..78a1357 100644
--- a/doc/props/P_REMOVE_MSG
+++ b/doc/props/P_REMOVE_MSG
@@ -1,28 +1,49 @@
-NAME:
-     P_REMOVE_MSG                  "std_food_remove_msg"
 
-DEFINIERT IN:
-     <sys/food.h>
+P_REMOVE_MSG
+************
 
-BESCHREIBUNG:
-     Meldung, wenn eine verdorbene Speise gerade vernichtet wird.
-     Diese Meldung erscheint nur, wenn in P_DESTROY_BAD ein positiver
-     Integer-Wert gesetzt ist.
-     Befindet sich die Speise in einem Spieler, geht die Meldung an genau
-     diesen, liegt die Speise im Raum, geht die Meldung an alle anwesenden
-     Spieler.
-     
-BEMERKUNGEN:
-     Diese Meldung wird von replace_personal mit den Argumenten:
-     1. Speise
-     2. Konsument
-     verarbeitet, kann als entsprechende Platzhalter enthalten
-     
-DEFAULT:
-     "@WER1 zerfaellt zu Staub."
 
-SIEHE AUCH:
-     P_DESTROY_BAD, wiz/food, replace_personal
+NAME
+====
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+   P_REMOVE_MSG                  "std_food_remove_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung, wenn eine verdorbene Speise gerade vernichtet wird.
+   Diese Meldung erscheint nur, wenn in P_DESTROY_BAD ein positiver
+   Integer-Wert gesetzt ist.
+   Befindet sich die Speise in einem Spieler, geht die Meldung an genau
+   diesen, liegt die Speise im Raum, geht die Meldung an alle anwesenden
+   Spieler.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER1 zerfaellt zu Staub."
+
+
+SIEHE AUCH
+==========
+
+   P_DESTROY_BAD, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_RESET_LIFETIME b/doc/props/P_RESET_LIFETIME
index 378cf0c..bbd4bbe 100644
--- a/doc/props/P_RESET_LIFETIME
+++ b/doc/props/P_RESET_LIFETIME
@@ -1,31 +1,52 @@
-NAME:
-     P_RESET_LIFETIME              "std_food_lifetime_reset"
-
-DEFINIERT IN:
-     /sys/food.h
-
-BESCHREIBUNG:
-     Zeit in Resets, die die Speise haltbar ist.
-     Jeder einzelne Reset wird in seiner Laenge zufaellig festgelegt und
-     zu einer Gesamtanzahl von Sekunden zusammengefasst. Diese Zeit in
-     Sekunden wird dann in P_LIFETIME gespeichert.
-     Nach dieser Zeit wird diese Speise schlecht und je nach Konfiguration
-     der Speise eventuell zerstoert. Sichergestellt wird dies durch den
-     Aufruf von reset() nach dieser Anzahl "Resets".
-     Moechte man eine Speise haben, die niemals verdirbt
-     (genehmigungspflichtig!), nutzt man die Property P_NO_BAD
-     
-BEMERKUNGEN:
-     Sobald der Countdown zum Schlechtwerden der Speise laeuft, also ein
-     Spieler damit in Beruehrung kam, zeigt SetProp auf diese Property keine
-     Wirkung mehr.
-
-DEFAULT:
-     Ohne Setzen von P_LIFETIME ,P_RESET_LIFETIME und P_NO_BAD verdirbt die
-     Speise nach einem Reset, also zwischen 30 und 60 Minuten
-
-SIEHE AUCH:
-     wiz/food, P_LIFETIME, P_NO_BAD
-
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+
+P_RESET_LIFETIME
+****************
+
+
+NAME
+====
+
+   P_RESET_LIFETIME              "std_food_lifetime_reset"
+
+
+DEFINIERT IN
+============
+
+   /sys/food.h
+
+
+BESCHREIBUNG
+============
+
+   Zeit in Resets, die die Speise haltbar ist.
+   Jeder einzelne Reset wird in seiner Laenge zufaellig festgelegt und
+   zu einer Gesamtanzahl von Sekunden zusammengefasst. Diese Zeit in
+   Sekunden wird dann in P_LIFETIME gespeichert.
+   Nach dieser Zeit wird diese Speise schlecht und je nach Konfiguration
+   der Speise eventuell zerstoert. Sichergestellt wird dies durch den
+   Aufruf von reset() nach dieser Anzahl "Resets".
+   Moechte man eine Speise haben, die niemals verdirbt
+   (genehmigungspflichtig!), nutzt man die Property P_NO_BAD
+
+
+BEMERKUNGEN
+===========
+
+   Sobald der Countdown zum Schlechtwerden der Speise laeuft, also ein
+   Spieler damit in Beruehrung kam, zeigt SetProp auf diese Property keine
+   Wirkung mehr.
+
+
+DEFAULT
+=======
+
+   Ohne Setzen von P_LIFETIME ,P_RESET_LIFETIME und P_NO_BAD verdirbt die
+   Speise nach einem Reset, also zwischen 30 und 60 Minuten
+
+
+SIEHE AUCH
+==========
+
+   wiz/food, P_LIFETIME, P_NO_BAD
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_RESISTANCE b/doc/props/P_RESISTANCE
index ff3de74..48e476f 100644
--- a/doc/props/P_RESISTANCE
+++ b/doc/props/P_RESISTANCE
@@ -1,37 +1,61 @@
+
 P_RESISTANCE
-NAME:
-     P_RESISTANCE                  "resistance"
+************
 
-DEFINIERT IN:
-     /sys/living/combat.h
 
-WICHTIG:
-     DIESE PROPERTY IST VERALTET! BITTE P_RESISTANCE_STRENGTHS
-     VERWENDEN! AUCH FUNKTIONIERT Set() NICHT WIE ES SOLLTE.
+NAME
+====
 
-BESCHREIBUNG:
-     Hiermit koennen die Resistenzen eines Lebewesens sehr einfach gesetzt
-     werden. Es kann ein Array mit Schadensarten gesetzt werden, jeder
-     Eintrag eines Schadens verdoppelt die Resistenz gegen diesen.
+   P_RESISTANCE                  "resistance"
 
-BEMERKUNGEN:
-     - P_RESISTANCE_STRENGTHS spiegelt diese Eintraege hier wieder
-     - um genauere Werte anzugeben einen AddResistanceModifier() oder
-       P_RESISTANCE_STRENGTHS benutzen.
-     - P_RESISTANCE kann und wird nicht aus P_RESISTANCE_STRENGTHS
-       upgedatet
 
-BEISPIELE:
-     // ein NPC mit halbierter Feuerempfindlichkeit und
-     // geviertelter Windempfindlichkeit
-     SetProp(P_RESISTANCE, ({DT_FIRE, DT_AIR, DT_AIR}));
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     simple Resistenz:	P_RESISTANCE
-     Modifikatoren:	AddResistanceModifier, RemoveResistanceModifier(),
-			P_RESISTANCE_MODIFIER
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+   /sys/living/combat.h
+
+
+WICHTIG
+=======
+
+   DIESE PROPERTY IST VERALTET! BITTE P_RESISTANCE_STRENGTHS
+   VERWENDEN! AUCH FUNKTIONIERT Set() NICHT WIE ES SOLLTE.
+
+
+BESCHREIBUNG
+============
+
+   Hiermit koennen die Resistenzen eines Lebewesens sehr einfach gesetzt
+   werden. Es kann ein Array mit Schadensarten gesetzt werden, jeder
+   Eintrag eines Schadens verdoppelt die Resistenz gegen diesen.
+
+
+BEMERKUNGEN
+===========
+
+   - P_RESISTANCE_STRENGTHS spiegelt diese Eintraege hier wieder
+   - um genauere Werte anzugeben einen AddResistanceModifier() oder
+     P_RESISTANCE_STRENGTHS benutzen.
+   - P_RESISTANCE kann und wird nicht aus P_RESISTANCE_STRENGTHS
+     upgedatet
+
+
+BEISPIELE
+=========
+
+   // ein NPC mit halbierter Feuerempfindlichkeit und
+   // geviertelter Windempfindlichkeit
+   SetProp(P_RESISTANCE, ({DT_FIRE, DT_AIR, DT_AIR}));
+
+
+SIEHE AUCH
+==========
+
+   simple Resistenz:  P_RESISTANCE
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier(),
+                      P_RESISTANCE_MODIFIER
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 1.Dez 2004, Gloinson
diff --git a/doc/props/P_RESISTANCE_MODIFIER b/doc/props/P_RESISTANCE_MODIFIER
index 0a0538e..2a3322e 100644
--- a/doc/props/P_RESISTANCE_MODIFIER
+++ b/doc/props/P_RESISTANCE_MODIFIER
@@ -1,26 +1,45 @@
-NAME:
-     P_RESISTANCE_MODIFIER             "rstr:mod"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+P_RESISTANCE_MODIFIER
+*********************
 
-BESCHREIBUNG:
-     Hier werden die Resistenzmodifikatoren in einem Mapping abgespeichert.
 
-     Format:
+NAME
+====
 
-     (["me":<Aufaddition aller Resistenz/Empfindlichkeitsmodifikationen>;0,
-       "<Objektname>#<Schluessel>":<Resistenzmapping>;<Objekreferenz>,
-       ...])
+   P_RESISTANCE_MODIFIER             "rstr:mod"
 
-BEMERKUNGEN:
-     Nur ueber AddResistanceModifier(), RemoveResistanceModifier() aendern!
 
-SIEHE AUCH:
-     Modifikatoren:	AddResistanceModifier, RemoveResistanceModifier()
-     simple Resistenz:	P_RESISTANCE, P_VULNERABILITY
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Hier werden die Resistenzmodifikatoren in einem Mapping abgespeichert.
+
+   Format:
+
+   (["me":<Aufaddition aller Resistenz/Empfindlichkeitsmodifikationen>;0,
+     "<Objektname>#<Schluessel>":<Resistenzmapping>;<Objekreferenz>,
+     ...])
+
+
+BEMERKUNGEN
+===========
+
+   Nur ueber AddResistanceModifier(), RemoveResistanceModifier() aendern!
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier()
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 29.Apr 2002, Gloinson@MG
diff --git a/doc/props/P_RESISTANCE_STRENGTHS b/doc/props/P_RESISTANCE_STRENGTHS
index ed24d2d..4a93f08 100644
--- a/doc/props/P_RESISTANCE_STRENGTHS
+++ b/doc/props/P_RESISTANCE_STRENGTHS
@@ -1,92 +1,114 @@
-NAME:
-     P_RESISTANCE_STRENGTHS     "resistance_strengths"
 
-DEFINIERT IN:
-     /sys/living/combat.h
-
-BESCHREIBUNG:
-     Lebewesen:
-
-     Mapping mit Schadensarten, gegen die das Lebewesen resistent oder
-     anfaellig ist. Durch eine _query_method werden alle existierenden
-     Resistenzen hier zusammengefasst.
-
-     Die Staerke der Resistenz oder Anfaelligkeit wird numerisch aus-
-     gedrueckt:
-     - Resistenzen gehen bis von 0 bis -1.0 (absolute Resistenz)
-       - -0.5 == halbierter Schaden, -0.75 == geviertelter Schaden
-       -> in % des "aufgehaltenen" Schadens interpretierbar
-     - Empfindlichkeiten gehen von 0 bis MAX_INT
-       -  1.0 == verdoppelter Schaden, 3.0 == vervierfachter Schaden
-       -> als Faktor (x+1.0) interpretierbar
-
-     Ruestungen:
-
-     Mapping mit Prozentwerten der Maximalwerte fuer Ruestungen des
-     entsprechenden Typs. Dabei sind positive Werte Resistenzen und
-     negative Empfindlichkeiten. Dabei duerfen die Prozentwerte nur
-     im Bereich von +100 bis -800 (-1000 ?!) liegen.
-
-     Bei Ruestungen ist es damit unnoetig, Resistenzen mittels
-     AddResistanceModifier() im Traeger zu setzen, da dies bereits
-     in /std/armour automatisch gemacht wird. Der Schluessel fuer
-     den Eintrag ist dabei P_ARMOUR_TYPE.
-
-     Die Maximalwerte sind derzeit:
-      AT_CLOAK, AT_RING, AT_AMULET: max 10% Resistenz
-      AT_SHIELD, AT_ARMOUR:  max 15% Resistenz
-      alle anderen:   max 5% Resistenz
-
-BEMERKUNGEN:
-     Ruestungen:
-     * die Property muss _nach_ P_ARMOUR_TYPE gesetzt werden (_set-Method)
-
-     Lebewesen:
-     * -1.0 bedeutet bereits absolute Resistenz, bei kleineren Werten werden
-       die anderen Schadensanteile im Kampf u.U. nicht mehr wie gewuenscht
-       bilanziert. Bitte daher drauf verzichten. ;-)
-     * Aenderungen an P_RESISTANCE und P_VULNERABILITY werden direkt in 
-       P_RESISTANCE_STRENGTHS gespeichert:
-       -> daher niemals im Nachhinein bei fremden NPCs P_RESISTANCE_STRENGTHS
-          manipulieren, dafuer gibt es AddResistanceModifier
-     * QueryProp(P_RESISTANCE_STRENGTHS) enthaelt die gesamten Resistenzen
-       P_RESISTANCE, P_VULNERABILITY, P_RESISTANCE_MODIFIER (_query-Method)
-
-     Die Werte in P_RESISTANCE_STRENGTHS sollten nur in Ausnahmefaellen oder
-     gut begruendet den Hoechstwert haben. Ein Eiswesen kann zwar sehr
-     resistent gegen Kaelteschaden sein, sollte aber zu gleichem Teil auch
-     anfaellig auf Feuerschaden sein.
-
-     Auf dieser Property liegt eine Querymethode, welche eine Kopie der
-     Daten zurueckliefert.
-
-BEISPIELE:
-     // ein Eistroll
-     SetProp(P_RESISTANCE_STRENGTHS,([DT_FIRE:0.5,DT_COLD:-0.5,
-                                      DT_MAGIC:0.1]));
-
-     Feuerangriffe werden mit 1.5 multipliziert, magische mit 1.1 und
-     der Schadenswert von Kaelteangriffen wird halbiert. Zum Beispiel
-     wuerde
-     Defend(100, ({DT_FIRE,DT_MAGIC}), ...)
-     einen Schaden von 130 statt den normalen 100 verursachen.
+P_RESISTANCE_STRENGTHS
+**********************
 
 
-     // eine Eisruestung
-     SetProp(P_RESISTANCE_STRENGTHS, ([DT_COLD:50, DT_FIRE:-100]));
+NAME
+====
 
-     Dieses Kettenhemd schuetzt nun mit 50% des Maximalwertes gegen
-     Kaelte (also 0.5*15%=7,5% Resistenz) und macht mit dem Maximal-
-     wert anfaellig gegen Feuer (1*15%=15% Empfindlichkeit).
+   P_RESISTANCE_STRENGTHS     "resistance_strengths"
 
-     ! der Code spricht zusaetzlich von
-       Empfindlichkeit=(Empfindlichkeit/4)*5 -> 15/4*5=18.75% !
 
-SIEHE AUCH:
-     simple Resistenz: P_RESISTANCE, P_VULNERABILITY
-     Modifikatoren: AddResistanceModifier, RemoveResistanceModifier(),
-     P_RESISTANCE_MODIFIER
-     Berechnung: CheckResistance(), UpdateResistanceStrengths()
-     anderes:  balance, /std/armour/combat.c, /std/living/combat.c
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Lebewesen:
+
+   Mapping mit Schadensarten, gegen die das Lebewesen resistent oder
+   anfaellig ist. Durch eine _query_method werden alle existierenden
+   Resistenzen hier zusammengefasst.
+
+   Die Staerke der Resistenz oder Anfaelligkeit wird numerisch aus-
+   gedrueckt:
+   - Resistenzen gehen bis von 0 bis -1.0 (absolute Resistenz)
+     - -0.5 == halbierter Schaden, -0.75 == geviertelter Schaden
+     -> in % des "aufgehaltenen" Schadens interpretierbar
+   - Empfindlichkeiten gehen von 0 bis MAX_INT
+     -  1.0 == verdoppelter Schaden, 3.0 == vervierfachter Schaden
+     -> als Faktor (x+1.0) interpretierbar
+
+   Ruestungen:
+
+   Mapping mit Prozentwerten der Maximalwerte fuer Ruestungen des
+   entsprechenden Typs. Dabei sind positive Werte Resistenzen und
+   negative Empfindlichkeiten. Dabei duerfen die Prozentwerte nur
+   im Bereich von +100 bis -800 (-1000 ?!) liegen.
+
+   Bei Ruestungen ist es damit unnoetig, Resistenzen mittels
+   AddResistanceModifier() im Traeger zu setzen, da dies bereits
+   in /std/armour automatisch gemacht wird. Der Schluessel fuer
+   den Eintrag ist dabei P_ARMOUR_TYPE.
+
+   Die Maximalwerte sind derzeit:
+    AT_CLOAK, AT_RING, AT_AMULET: max 10% Resistenz
+    AT_SHIELD, AT_ARMOUR:  max 15% Resistenz
+    alle anderen:   max 5% Resistenz
+
+
+BEMERKUNGEN
+===========
+
+   Ruestungen:
+   * die Property muss _nach_ P_ARMOUR_TYPE gesetzt werden (_set-Method)
+
+   Lebewesen:
+   * -1.0 bedeutet bereits absolute Resistenz, bei kleineren Werten werden
+     die anderen Schadensanteile im Kampf u.U. nicht mehr wie gewuenscht
+     bilanziert. Bitte daher drauf verzichten. ;-)
+   * Aenderungen an P_RESISTANCE und P_VULNERABILITY werden direkt in
+     P_RESISTANCE_STRENGTHS gespeichert:
+     -> daher niemals im Nachhinein bei fremden NPCs P_RESISTANCE_STRENGTHS
+        manipulieren, dafuer gibt es AddResistanceModifier
+   * QueryProp(P_RESISTANCE_STRENGTHS) enthaelt die gesamten Resistenzen
+     P_RESISTANCE, P_VULNERABILITY, P_RESISTANCE_MODIFIER (_query-Method)
+
+   Die Werte in P_RESISTANCE_STRENGTHS sollten nur in Ausnahmefaellen oder
+   gut begruendet den Hoechstwert haben. Ein Eiswesen kann zwar sehr
+   resistent gegen Kaelteschaden sein, sollte aber zu gleichem Teil auch
+   anfaellig auf Feuerschaden sein.
+
+   Auf dieser Property liegt eine Querymethode, welche eine Kopie der
+   Daten zurueckliefert.
+
+
+BEISPIELE
+=========
+
+   // ein Eistroll
+   SetProp(P_RESISTANCE_STRENGTHS,([DT_FIRE:0.5,DT_COLD:-0.5,
+                                    DT_MAGIC:0.1]));
+
+   Feuerangriffe werden mit 1.5 multipliziert, magische mit 1.1 und
+   der Schadenswert von Kaelteangriffen wird halbiert. Zum Beispiel
+   wuerde
+   Defend(100, ({DT_FIRE,DT_MAGIC}), ...)
+   einen Schaden von 130 statt den normalen 100 verursachen.
+
+
+   // eine Eisruestung
+   SetProp(P_RESISTANCE_STRENGTHS, ([DT_COLD:50, DT_FIRE:-100]));
+
+   Dieses Kettenhemd schuetzt nun mit 50% des Maximalwertes gegen
+   Kaelte (also 0.5*15%=7,5% Resistenz) und macht mit dem Maximal-
+   wert anfaellig gegen Feuer (1*15%=15% Empfindlichkeit).
+
+   ! der Code spricht zusaetzlich von
+     Empfindlichkeit=(Empfindlichkeit/4)*5 -> 15/4*5=18.75% !
+
+
+SIEHE AUCH
+==========
+
+   simple Resistenz: P_RESISTANCE, P_VULNERABILITY
+   Modifikatoren: AddResistanceModifier, RemoveResistanceModifier(),
+   P_RESISTANCE_MODIFIER
+   Berechnung: CheckResistance(), UpdateResistanceStrengths()
+   anderes:  balance, /std/armour/combat.c, /std/living/combat.c
 
 6.Feb 2016 Gloinson
diff --git a/doc/props/P_RESTRICTIONS b/doc/props/P_RESTRICTIONS
index 34890ff..a1764b9 100644
--- a/doc/props/P_RESTRICTIONS
+++ b/doc/props/P_RESTRICTIONS
@@ -1,140 +1,163 @@
-NAME:
-    P_RESTRICTIONS                                "restrictions"
 
-DEFINIERT IN:
-    /sys/combat.h
-    (Die SR_*-Parameter sind in /sys/new_skills.h definiert.)
-
-BESCHREIBUNG:
-    Enthaelt ein mapping mit den zu pruefenden Einschraenkungen.
-
-    In dieser Property lassen sich Restriktionen setzen, die vor dem
-    Zuecken einer Waffe / Anziehen einer Ruestung oder Kleidung geprueft
-    werden und dies gegebenfalls verhindern, ohne gleich auf eine evtl.
-    vorhandene WieldFunc / WearFunc zuzugreifen.
-
-    Die Auswertung erfolgt ueber den Aufruf von check_restrictions()
-    in /std/restriction_checker.c
-
-    Folgende Keys werden in dem Mapping ausgewertet:
-
-    P_LEVEL
-      Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
-      auszufuehren.
-    P_GUILD_LEVEL
-      Gildenlevel, das das Lebewesen mindestens erreicht haben muss, um die
-      Aktion auszufuehren.
-    SR_SEER
-      Ist gesetzt, wenn das Lebewesen Seher sein muss.
-      Auswertung nur fuer Interactives, NSC ignorieren das Flag.
-    P_XP
-      Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen muss,
-      um die Aktion auszufuehren.
-    P_QP
-      Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
-    P_ALCOHOL
-      Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen liegen
-      muss, um die Aktion noch ausfuehren zu koennen.
-    P_DRINK
-      Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
-      Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
-    P_FOOD
-      Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel des
-      Spielers liegen muss, um die Aktion noch ausfuehren zu koennen.
-    P_DEAF
-      Ist gesetzt, falls der Spieler nicht taub sein darf.
-    P_FROG
-      Ist gesetzt, falls der Spieler kein Frosch sein darf.
-    P_BLIND
-      Ist gesetzt, falls der Spieler nicht blind sein darf.
-      Achtung: das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
-      nichts mehr sehen kann. Auch andere Gruende (zum Beispiel Dunkelheit)
-      koennen bewirken, dass ein Spieler nichts mehr sieht.
-    A_INT, A_DEX, A_CON, A_STR
-      Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren zu
-      koennen.
-    SR_BAD, SR_GOOD
-      Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein Charakter sein
-      darf, um eine Aktion ausfuehren zu koennen.
-    SR_MIN_SIZE, SR_MAX_SIZE
-      Gibt die minimale, bzw. die maximale Groesse an, die ein Charakter
-      maximal haben darf, um eine Aktion ausfuehren zu koennen.
-    SR_FREE_HANDS
-      Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
-      besitzen muss.
-    SR_EXCLUDE_RACE
-      Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
-      diese Aktion nicht ausfuehren.
-    SR_INCLUDE_RACE
-      Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen koennen
-      diese Aktion nicht ausfuehren.
-    SM_RACE
-      Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese Rasse
-      geltenden Einschraenkungen vorgenommen werden. Als Keys sind die
-      in dieser Manpage beschriebenen Keys erlaubt, wobei SM_RACE nicht
-      rekursiv ausgewertet wird.
-      Der Rassenname ist gross geschrieben und "*" steht fuer alle Rassen.
-    SR_EXCLUDE_GUILD
-    SR_INCLUDE_GUILD
-      Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
-      genannt werden.
-    SR_FUN
-      Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
-      Restriktionen angegeben werden, siehe execute_anything().
-      Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
-      wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
-      Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
-    SR_PROP
-      Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
-      werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
-      eine Meldung angegeben werden, die als Fehlermeldung ausgegeben wird,
-      wenn der Spieler die Bedingung nicht erfuellt. Es sollte immer eine
-      passende Meldung fuer den Spieler eingebaut werden. Beispiel:
-      ([ SR_PROP: ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
-          "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn Du "
-          "Dich als wuerdig erwiesen hast!"]) ])
-      Aufgrund der Meldung wird empfohlen, SR_PROP nicht in Restriktionen 
-      einzusetzen, die massenweise in Savefiles landen (z.B. 
-      Spielersavefiles).
-    SR_QUEST
-      Hier kann ein String-Array mit den Namen (Keys) der Quest(s) angegeben
-      werden, die der Spieler bestanden haben muss, um die Aktion ausfuehren
-      zu koennen.
-    SR_MINIQUEST
-      Hier kann entweder ein String-Array mit den Ladenamen der vergebenden
-      Objekte oder ein Int-Array mit den Index-Nummern (IDs) der
-      Miniquest(s) (empfohlen!) angegeben werden, die der Spieler bestanden
-      haben muss, um die Aktion ausfuehren zu koennen.
+P_RESTRICTIONS
+**************
 
 
+NAME
+====
 
-BEMERKUNGEN:
-    Diese Property eignet sich hervorragend dafuer, einige Grundbedingungen
-    fuer das Nutzen der Waffe / Ruestung / Kleidung zu stellen ohne gleich
-    eine Wield- oder WearFunc setzen und auswerten zu muessen.
+   P_RESTRICTIONS                                "restrictions"
 
-    Denkbar waere der Einsatz bei hochwertigen Waffen / Ruestungen / Kleidung,
-    z.B. aus der Para-Welt oder solchen, die sich nah am Limit der geltenden
-    Grenzwerte fuer P_WC / P_AC bewegen oder sogar (nach Genehmigung durch
-    die Balance) darueber.
 
-BEISPIEL:
-    Mindeststufe 25: SetProp(P_RESTRICTIONS,([P_LEVEL:25]));
-    Keine Menschen:  SetProp(P_RESTRICTIONS,([SR_EXCLUDE_RACE:({"Mensch"})]));
-    Alignment >499:  SetProp(P_RESTRICTIONS,([SR_GOOD:500]));
+DEFINIERT IN
+============
 
-    Komplexeres Beispiel
+   /sys/combat.h
+   (Die SR_*-Parameter sind in /sys/new_skills.h definiert.)
 
-    Quest "Diamond Club" bestanden, magiereigene Property P_AUSGANG_GEFUNDEN
-    muss gesetzt sein, Stufe 10, nicht taub, max. 45 Food:
-    SetProp(P_RESTRICTIONS, ([ P_LEVEL: 10, P_DEAF: 1, P_FOOD: 45,
-      SR_PROP: ([P_AUSGANG_GEFUNDEN:1]), SR_QUEST:({"Diamond Club"}) ]));
 
-SIEHE AUCH:
-    check_restrictions(L)
-    WieldFunc(L), WearFunc(L), RemoveFunc(L), UnwieldFunc(L),
-    P_WIELD_FUNC, P_WEAR_FUNC, P_REMOVE_FUNC, P_UNWIELD_FUNC
-    /std/armour/wear.c, /std/weapon/combat.c, clothing, armours, weapon
+BESCHREIBUNG
+============
 
-LETZTE AeNDERUNG:
-03. Januar 2014, Arathorn
+   Enthaelt ein mapping mit den zu pruefenden Einschraenkungen.
+
+   In dieser Property lassen sich Restriktionen setzen, die vor dem
+   Zuecken einer Waffe / Anziehen einer Ruestung oder Kleidung geprueft
+   werden und dies gegebenfalls verhindern, ohne gleich auf eine evtl.
+   vorhandene WieldFunc / WearFunc zuzugreifen.
+
+   Die Auswertung erfolgt ueber den Aufruf von check_restrictions()
+   in /std/restriction_checker.c
+
+   Folgende Keys werden in dem Mapping ausgewertet:
+
+   P_LEVEL
+     Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
+     auszufuehren.
+   P_GUILD_LEVEL
+     Gildenlevel, das das Lebewesen mindestens erreicht haben muss, um die
+     Aktion auszufuehren.
+   SR_SEER
+     Ist gesetzt, wenn das Lebewesen Seher sein muss.
+     Auswertung nur fuer Interactives, NSC ignorieren das Flag.
+   P_XP
+     Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen muss,
+     um die Aktion auszufuehren.
+   P_QP
+     Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
+   P_ALCOHOL
+     Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen liegen
+     muss, um die Aktion noch ausfuehren zu koennen.
+   P_DRINK
+     Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
+     Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
+   P_FOOD
+     Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel des
+     Spielers liegen muss, um die Aktion noch ausfuehren zu koennen.
+   P_DEAF
+     Ist gesetzt, falls der Spieler nicht taub sein darf.
+   P_FROG
+     Ist gesetzt, falls der Spieler kein Frosch sein darf.
+   P_BLIND
+     Ist gesetzt, falls der Spieler nicht blind sein darf.
+     Achtung: das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
+     nichts mehr sehen kann. Auch andere Gruende (zum Beispiel Dunkelheit)
+     koennen bewirken, dass ein Spieler nichts mehr sieht.
+   A_INT, A_DEX, A_CON, A_STR
+     Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren zu
+     koennen.
+   SR_BAD, SR_GOOD
+     Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein Charakter sein
+     darf, um eine Aktion ausfuehren zu koennen.
+   SR_MIN_SIZE, SR_MAX_SIZE
+     Gibt die minimale, bzw. die maximale Groesse an, die ein Charakter
+     maximal haben darf, um eine Aktion ausfuehren zu koennen.
+   SR_FREE_HANDS
+     Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
+     besitzen muss.
+   SR_EXCLUDE_RACE
+     Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
+     diese Aktion nicht ausfuehren.
+   SR_INCLUDE_RACE
+     Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen koennen
+     diese Aktion nicht ausfuehren.
+   SM_RACE
+     Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese Rasse
+     geltenden Einschraenkungen vorgenommen werden. Als Keys sind die
+     in dieser Manpage beschriebenen Keys erlaubt, wobei SM_RACE nicht
+     rekursiv ausgewertet wird.
+     Der Rassenname ist gross geschrieben und "*" steht fuer alle Rassen.
+   SR_EXCLUDE_GUILD
+   SR_INCLUDE_GUILD
+     Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
+     genannt werden.
+   SR_FUN
+     Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
+     Restriktionen angegeben werden, siehe execute_anything().
+     Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
+     wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
+     Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
+   SR_PROP
+     Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
+     werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
+     eine Meldung angegeben werden, die als Fehlermeldung ausgegeben wird,
+     wenn der Spieler die Bedingung nicht erfuellt. Es sollte immer eine
+     passende Meldung fuer den Spieler eingebaut werden. Beispiel:
+     ([ SR_PROP: ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
+         "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn Du "
+         "Dich als wuerdig erwiesen hast!"]) ])
+     Aufgrund der Meldung wird empfohlen, SR_PROP nicht in Restriktionen
+     einzusetzen, die massenweise in Savefiles landen (z.B.
+     Spielersavefiles).
+   SR_QUEST
+     Hier kann ein String-Array mit den Namen (Keys) der Quest(s) angegeben
+     werden, die der Spieler bestanden haben muss, um die Aktion ausfuehren
+     zu koennen.
+   SR_MINIQUEST
+     Hier kann entweder ein String-Array mit den Ladenamen der vergebenden
+     Objekte oder ein Int-Array mit den Index-Nummern (IDs) der
+     Miniquest(s) (empfohlen!) angegeben werden, die der Spieler bestanden
+     haben muss, um die Aktion ausfuehren zu koennen.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property eignet sich hervorragend dafuer, einige Grundbedingungen
+   fuer das Nutzen der Waffe / Ruestung / Kleidung zu stellen ohne gleich
+   eine Wield- oder WearFunc setzen und auswerten zu muessen.
+
+   Denkbar waere der Einsatz bei hochwertigen Waffen / Ruestungen / Kleidung,
+   z.B. aus der Para-Welt oder solchen, die sich nah am Limit der geltenden
+   Grenzwerte fuer P_WC / P_AC bewegen oder sogar (nach Genehmigung durch
+   die Balance) darueber.
+
+
+BEISPIEL
+========
+
+   Mindeststufe 25: SetProp(P_RESTRICTIONS,([P_LEVEL:25]));
+   Keine Menschen:  SetProp(P_RESTRICTIONS,([SR_EXCLUDE_RACE:({"Mensch"})]));
+   Alignment >499:  SetProp(P_RESTRICTIONS,([SR_GOOD:500]));
+
+   Komplexeres Beispiel
+
+   Quest "Diamond Club" bestanden, magiereigene Property P_AUSGANG_GEFUNDEN
+   muss gesetzt sein, Stufe 10, nicht taub, max. 45 Food:
+   SetProp(P_RESTRICTIONS, ([ P_LEVEL: 10, P_DEAF: 1, P_FOOD: 45,
+     SR_PROP: ([P_AUSGANG_GEFUNDEN:1]), SR_QUEST:({"Diamond Club"}) ]));
+
+
+SIEHE AUCH
+==========
+
+   check_restrictions(L)
+   WieldFunc(L), WearFunc(L), RemoveFunc(L), UnwieldFunc(L),
+   P_WIELD_FUNC, P_WEAR_FUNC, P_REMOVE_FUNC, P_UNWIELD_FUNC
+   /std/armour/wear.c, /std/weapon/combat.c, clothing, armours, weapon
+
+
+LETZTE AeNDERUNG
+================
+
+3. Januar 2014, Arathorn
diff --git a/doc/props/P_ROOM_MSG b/doc/props/P_ROOM_MSG
index c3324f2..3486458 100644
--- a/doc/props/P_ROOM_MSG
+++ b/doc/props/P_ROOM_MSG
@@ -1,20 +1,39 @@
-NAME:
-    P_ROOM_MSG                    "room_msg"                    
 
-DEFINIERT IN:
-    /sys/room/description.h
+P_ROOM_MSG
+**********
 
-BESCHREIBUNG:
-     Liste mit Meldungen, die zufaellig im Raum ausgegeben werden.
 
-     Hier sind nur die Textmeldungen als String-Array gespeichert.
+NAME
+====
 
-ANMERKUNGEN:
-     Bitte AddRoomMessage() zum Hinzufuegen/Ueberschreiben benutzen!
+   P_ROOM_MSG                    "room_msg"
 
-SIEHE AUCH:
-     LFuns:    AddRoomMessage()
-     Verwandt: tell_room(), ReceiveMsg()
-     Props:    P_FUNC_MSG, P_MSG_PROB
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Liste mit Meldungen, die zufaellig im Raum ausgegeben werden.
+
+   Hier sind nur die Textmeldungen als String-Array gespeichert.
+
+
+ANMERKUNGEN
+===========
+
+   Bitte AddRoomMessage() zum Hinzufuegen/Ueberschreiben benutzen!
+
+
+SIEHE AUCH
+==========
+
+   LFuns:    AddRoomMessage()
+   Verwandt: tell_room(), ReceiveMsg()
+   Props:    P_FUNC_MSG, P_MSG_PROB
 
 2.Feb 2016 Gloinson
diff --git a/doc/props/P_ROOM_TYPE b/doc/props/P_ROOM_TYPE
index d9dd746..22e894e 100644
--- a/doc/props/P_ROOM_TYPE
+++ b/doc/props/P_ROOM_TYPE
@@ -1,23 +1,39 @@
-NAME:
-    P_ROOM_TYPE                       "room_type"                       
 
-DEFINIERT IN:
-    /sys/rooms.h
+P_ROOM_TYPE
+***********
 
-BESCHREIBUNG:
-    In P_ROOM_TYPE wird die Art des Raumes durch entsprechende Flags
-    beschrieben.
 
-    Bisher unterstuetzt werden:
-        - RT_SHOP       fuer Raeume, die /std/room/shop inheriten
-        - RT_PUB        fuer Raeume, die /std/room/pub inheriten
+NAME
+====
 
-BEISPIEL:
-    Wenn ein NPC abfragen moechte, ob er sich in einer Kneipe aufhaelt (um
-    selbststaendig tanken zu koennen) koennte eine Abfrage z.B. so aussehen:
+   P_ROOM_TYPE                       "room_type"
 
-        if ( environment() &&
-             environment()->QueryProp(P_ROOM_TYPE) & RT_PUB ){
 
-            ... tanken ...
-        }
+DEFINIERT IN
+============
+
+   /sys/rooms.h
+
+
+BESCHREIBUNG
+============
+
+   In P_ROOM_TYPE wird die Art des Raumes durch entsprechende Flags
+   beschrieben.
+
+   Bisher unterstuetzt werden:
+       - RT_SHOP       fuer Raeume, die /std/room/shop inheriten
+       - RT_PUB        fuer Raeume, die /std/room/pub inheriten
+
+
+BEISPIEL
+========
+
+   Wenn ein NPC abfragen moechte, ob er sich in einer Kneipe aufhaelt (um
+   selbststaendig tanken zu koennen) koennte eine Abfrage z.B. so aussehen:
+
+       if ( environment() &&
+            environment()->QueryProp(P_ROOM_TYPE) & RT_PUB ){
+
+           ... tanken ...
+       }
diff --git a/doc/props/P_SB_SPELLS b/doc/props/P_SB_SPELLS
index 84aa723..1ffac9d 100644
--- a/doc/props/P_SB_SPELLS
+++ b/doc/props/P_SB_SPELLS
@@ -1,23 +1,42 @@
-NAME:
-    P_SB_SPELLS            "sb_spells"                   
 
-DEFINIERT IN:
-    /sys/new_skills.h
+P_SB_SPELLS
+***********
 
-BESCHREIBUNG:
-    In dieser Spellbookproperty sind saemtliche Sprueche des Spellbooks
-    vermerkt. Veraendert wird sie durch AddSpell().
 
-BEMERKUNGEN:
-    Man sollte diese Property nicht per Hand veraendern, sondern die
-    Funktion AddSpell() nutzen.
+NAME
+====
 
-SIEHE AUCH:
-    GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
-    * Properties:     P_GUILD_SKILLS
-    Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
-    * Verwalten:      AddSpell, QuerySpell
-    * Properties:     P_GLOBAL_SKILLPROPS
-    Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+   P_SB_SPELLS            "sb_spells"
 
-Last modified: Wed Jan 14 19:17:06 1998 by Patryn
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Spellbookproperty sind saemtliche Sprueche des Spellbooks
+   vermerkt. Veraendert wird sie durch AddSpell().
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktion AddSpell() nutzen.
+
+
+SIEHE AUCH
+==========
+
+   GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
+   * Properties:     P_GUILD_SKILLS
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Properties:     P_GLOBAL_SKILLPROPS
+   Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_SCREENSIZE b/doc/props/P_SCREENSIZE
index fc9dd15..e54ee8b 100644
--- a/doc/props/P_SCREENSIZE
+++ b/doc/props/P_SCREENSIZE
@@ -1,8 +1,21 @@
-NAME:
-    P_SCREENSIZE                  "screensize"                  
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_SCREENSIZE
+************
 
-BESCHREIBUNG:
-     Bildschirmgroesse in Zeilen (fuer More)
+
+NAME
+====
+
+   P_SCREENSIZE                  "screensize"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Bildschirmgroesse in Zeilen (fuer More)
diff --git a/doc/props/P_SECOND b/doc/props/P_SECOND
index 4aa835a..69c97d6 100644
--- a/doc/props/P_SECOND
+++ b/doc/props/P_SECOND
@@ -1,21 +1,39 @@
-NAME:
-    P_SECOND                      "second"                      
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_SECOND
+********
 
-BESCHREIBUNG:
-     Wenn diese Prop gesetzt ist, ist der Spieler ein Zweitie. Inhalt der
-     Prop ist ein String mit dem (lowercase) Namen des Ersties.
 
-BEISPIEL:
-     if (this_player()->QueryProp(P_SECOND)=="notstrom") {
-       tell_object(this_player(), "Nicht alles aufessen!\n");
-     }
+NAME
+====
 
-SIEHE AUCH:
-     Properties: P_SECOND_MARK
-     Sonstiges:  /secure/zweities.c
+   P_SECOND                      "second"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Prop gesetzt ist, ist der Spieler ein Zweitie. Inhalt der
+   Prop ist ein String mit dem (lowercase) Namen des Ersties.
+
+
+BEISPIEL
+========
+
+   if (this_player()->QueryProp(P_SECOND)=="notstrom") {
+     tell_object(this_player(), "Nicht alles aufessen!\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_SECOND_MARK
+   Sonstiges:  /secure/zweities.c
+
 Last modified: 18-Jun-2015, Arathorn.
diff --git a/doc/props/P_SECOND_MARK b/doc/props/P_SECOND_MARK
index c1c0c42..dd2c68a 100644
--- a/doc/props/P_SECOND_MARK
+++ b/doc/props/P_SECOND_MARK
@@ -1,18 +1,31 @@
-NAME:
-    P_SECOND_MARK                 "second_mark"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_SECOND_MARK
+*************
 
-BESCHREIBUNG:
-     Gibt an, wie mit der Zweitie-Markierung eines Spielers umgegangen wird.
 
-     -1  'unsichtbare' Markierung; im wer/kwer wird bei diesem Zweitie s
-         oder S angezeigt.
+NAME
+====
 
-      0  'sichtbare' Markierung; im wer/kwer wird bei diesem Zweitie z oder
-         Z angezeigt. Der Name des Ersties ist beim Fingern jedoch nur
-         fuer Magier sichtbar.
+   P_SECOND_MARK                 "second_mark"
 
-      1  Markierung 'sichtbar + Name'; wie 0, nur dass beim Fingern alle
-         Spieler den Namen des Ersties sehen koennen.
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, wie mit der Zweitie-Markierung eines Spielers umgegangen wird.
+
+   -1  'unsichtbare' Markierung; im wer/kwer wird bei diesem Zweitie s
+       oder S angezeigt.
+
+    0  'sichtbare' Markierung; im wer/kwer wird bei diesem Zweitie z oder
+       Z angezeigt. Der Name des Ersties ist beim Fingern jedoch nur
+       fuer Magier sichtbar.
+
+    1  Markierung 'sichtbar + Name'; wie 0, nur dass beim Fingern alle
+       Spieler den Namen des Ersties sehen koennen.
diff --git a/doc/props/P_SEERDOORS b/doc/props/P_SEERDOORS
index 8ffb852..8ec02e7 100644
--- a/doc/props/P_SEERDOORS
+++ b/doc/props/P_SEERDOORS
@@ -1,26 +1,45 @@
+
 P_SEERDOORS
+***********
 
-NAME:
-     P_SEERDOORS      "rw_sehertore"
 
-DEFINIERT IN:
-     /d/seher/portale/sehertor.h
+NAME
+====
 
-BESCHREIBUNG:
-     Sehertor-relevante Property.
+   P_SEERDOORS      "rw_sehertore"
 
-     Enthaelt ein Mapping mit den Wertepaaren
-     ([ Seher-Portal-Nummer: x ])
-     mit x != 0 fuer entdeckte Tore.
-     
-     0 hat ein Sonderverhalten fuer mobile Tore.
 
-BEMERKUNG:
-     Auf gar keinen Fall in Spielern manipulieren! Und bitte das enthaltene
-     Mapping nicht von einem Spieler abfragen und P_SEERDOORS in einem
-     Testspieler zuweisen!
-     
-SIEHE AUCH:
-     P_FAO_PORTALS
-     
+DEFINIERT IN
+============
+
+   /d/seher/portale/sehertor.h
+
+
+BESCHREIBUNG
+============
+
+   Sehertor-relevante Property.
+
+   Enthaelt ein Mapping mit den Wertepaaren
+   ([ Seher-Portal-Nummer: x ])
+   mit x != 0 fuer entdeckte Tore.
+
+
+
+   0 hat ein Sonderverhalten fuer mobile Tore.
+
+
+BEMERKUNG
+=========
+
+   Auf gar keinen Fall in Spielern manipulieren! Und bitte das enthaltene
+   Mapping nicht von einem Spieler abfragen und P_SEERDOORS in einem
+   Testspieler zuweisen!
+
+
+SIEHE AUCH
+==========
+
+   P_FAO_PORTALS
+
 1.September 2008 Gloinson
diff --git a/doc/props/P_SEERDOOR_ALLOWED b/doc/props/P_SEERDOOR_ALLOWED
index b8225e3..12f062b 100644
--- a/doc/props/P_SEERDOOR_ALLOWED
+++ b/doc/props/P_SEERDOOR_ALLOWED
@@ -1,15 +1,27 @@
-NAME:
-    P_SEERDOOR_ALLOWED		"rw_sehertor_erlaubt"                          
 
-DEFINIERT IN:
-    /d/seher/portale/sehertor.h
+P_SEERDOOR_ALLOWED
+******************
 
-BESCHREIBUNG:
-     Diese Property muss in einem Raum gesetzt sein, soll
-     ein Seher dort ein mobiles Sehertor abstellen duerfen.
-     Zusaetzlich darf der Raum nicht in PARA liegen und muss
-     als eigenes File existieren.
-     Es ist darauf zu achten, Sehertore nicht in Questgebieten,
-     direkt an Tanken oder aehnlichen Plaetzen zu erlauben.
-     Es gilt die Einschaetzung des fuer den Raum Verantwortlichen.
 
+NAME
+====
+
+   P_SEERDOOR_ALLOWED          "rw_sehertor_erlaubt"
+
+
+DEFINIERT IN
+============
+
+   /d/seher/portale/sehertor.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property muss in einem Raum gesetzt sein, soll
+   ein Seher dort ein mobiles Sehertor abstellen duerfen.
+   Zusaetzlich darf der Raum nicht in PARA liegen und muss
+   als eigenes File existieren.
+   Es ist darauf zu achten, Sehertore nicht in Questgebieten,
+   direkt an Tanken oder aehnlichen Plaetzen zu erlauben.
+   Es gilt die Einschaetzung des fuer den Raum Verantwortlichen.
diff --git a/doc/props/P_SENSITIVE b/doc/props/P_SENSITIVE
index 23d1fee..c1e8051 100644
--- a/doc/props/P_SENSITIVE
+++ b/doc/props/P_SENSITIVE
@@ -1,125 +1,154 @@
+
 P_SENSITIVE
-NAME:
-     P_SENSITIVE                   "sensitive"
+***********
 
-DEFINIERT IN:
-     /sys/thing/moving.h
 
-BESCHREIBUNG:
-     Diese Property kann in Objekten gesetzt werden, die auf bestimmte
-     Schadensarten empfindlich reagieren sollen. Moegliche Anwendungsfaelle:
-     - Das Lebewesen, in dessen Inventar sich ein Objekt befindet, erleidet
-       einen Angriff mit der fraglichen Schadensart (Beispiel: eine 
-       Pusteblume, die bei Angriff mit Luftschaden auseinanderfaellt).
-     - Zwei Objekte treffen im gleichen Environment aufeinander, wobei
-       eines empfindlich auf eine Schadensart reagiert, und das zweite diese
-       Schadensart mitbringt, d.h. die Empfindlichkeit ausloesen kann.
-       (Beispiel: ein feuerempfindlicher Postsack wird angesengt, wenn eine
-        brennende Fackel ins gleiche Inventar kommt.)
-       Das Ausloesen dieser Empfindlichkeit ist unabhaengig davon, welches 
-       Objekt zuerst da war.
+NAME
+====
 
-     Die Property enthaelt ein Array aus Arrays:
-       ({<sensprops_1>, <sensprops_2>, ..., <sensprops_n>})
-     
-     wobei jeder Eintrag <sensprops> jeweils folgende Struktur hat:
-       ({string list_key, string damtype, int treshold, mixed options })
-     
-     Die Eintraege haben dabei folgende Bedeutung:
-     
-     list_key: Kann einen von folgenden drei Werten annehmen 
-          1) SENSITIVE_INVENTORY, passive Eigenschaft; zeigt an, dass das
-             Objekt empfindlich auf aktive Objekte reagiert, die in das
-             Inventory des Containers hineinbewegt werden
-          2) SENSITIVE_ATTACK, passive Eigenschaft; zeigt an, dass das 
-             Objekt empfindlich auf aeussere Einfluesse bzw. Angriffe 
-             auf ein Lebewesen reagiert, in dessen Inventar es sich befindet
-          3) SENSITIVE_INVENTORY_TRIGGER, aktive Eigenschaft; zeigt an, dass
-             das Objekt eine Ausstrahlung auf andere Objekte im Inventar
-             hat. Wird ausgeloest, wenn das Objekt ins Inventar hineinbewegt
-             wird.
-     damtype: eine Schadensart (DT_FIRE, DT_WATER, ...)
-     treshold: hat zwei Bedeutungen abhaengig von dem Wert in list_key:
-          1) Fuer Objekte mit SENSITIVE_INVENTORY oder SENSITIVE_ATTCK ist
-             dies der Schadenswert, ab dem das Objekt benachrichtigt werden 
-             soll.
-             Hier wird ein Wert in "Defend-Einheiten" erwartet, d.h. das
-             Zehnfache dessen, was am Ende in LP abgezogen wuerde.
-          2) Fuer Objekte mit SENSITIVE_INVENTORY_TRIGGER ist dies der 
-             Schadenswert, mit dem das Objekt andere bereits im Inventar
-             des Containers befindliche Objekte beeinflusst, die eine 
-             entsprechende Empfindlichkeit gesetzt haben
-     options: Optionale Daten, die der programmierende Magier selbst
-            definieren kann. Werden an die in den betroffenen Objekten
-            aufgerufenen Funktionen durchgereicht.
+   P_SENSITIVE                   "sensitive"
 
-     Ein SENSITIVE_ATTACK-Objekt, dessen Trigger-Bedingungen erfuellt sind,
-     wird durch folgenden Funktionsaufruf darueber informiert:
-       trigger_sensitive_attack(object enemy, string damtype, int damage,
-                 mixed spell, mixed options)
-     
-     Ein SENSITIVE_INVENTORY-Objekt, dessen Trigger-Bedingungen erfuellt sind,
-     wird durch folgenden Funktionsaufruf darueber informiert:
-       trigger_sensitive_inv(object whodid, string damtype, int threshold,
-                 mixed options, mixed options)
 
-     Die beiden Funktionen muessen selbst ge-/ueberschrieben werden.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     1. P_SENSITIVE-Objekte kosten Rechenzeit bei jedem Angriff oder jedem
-        move() - daher bitte sparsam verwenden
-     2. Ist P_SENSITIVE nicht statisch, sondern wird es situationsabhaengig 
-        geaendert, muss man das environment() jeweils selbst ueber seine 
-        neue Empfindlichkeit benachrichtigen. Dies geschieht mit den 
-        Funktionen RemoveSensitiveObject() bzw.InsertSensitiveObject(), 
-        siehe deren Manpages.
+   /sys/thing/moving.h
 
-BEISPIEL:
-     Beispiel 1:
-     Beispielcode eines Objektes mit SENSITIVE_ATTACK und SENSITIVE_INVENTORY
-     siehe hier: /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c
 
-     Beispiel 2:
-     Ein Eiszapfen, der bei Feuerangriffen oder bei heissen Gegenstaenden im
-     gemeinsamen Environment zerschmelzen soll:
+BESCHREIBUNG
+============
 
-     void create() {
-       SetProp( P_SENSITIVE, ({ ({SENSITIVE_ATTACK,     DT_FIRE, 100}),
-                                 ({SENSITIVE_INVENTORY, DT_FIRE, 100}) }) );
-       [...]
+   Diese Property kann in Objekten gesetzt werden, die auf bestimmte
+   Schadensarten empfindlich reagieren sollen. Moegliche Anwendungsfaelle:
+   - Das Lebewesen, in dessen Inventar sich ein Objekt befindet, erleidet
+     einen Angriff mit der fraglichen Schadensart (Beispiel: eine
+     Pusteblume, die bei Angriff mit Luftschaden auseinanderfaellt).
+   - Zwei Objekte treffen im gleichen Environment aufeinander, wobei
+     eines empfindlich auf eine Schadensart reagiert, und das zweite diese
+     Schadensart mitbringt, d.h. die Empfindlichkeit ausloesen kann.
+     (Beispiel: ein feuerempfindlicher Postsack wird angesengt, wenn eine
+      brennende Fackel ins gleiche Inventar kommt.)
+     Das Ausloesen dieser Empfindlichkeit ist unabhaengig davon, welches
+     Objekt zuerst da war.
+
+   Die Property enthaelt ein Array aus Arrays:
+     ({<sensprops_1>, <sensprops_2>, ..., <sensprops_n>})
+
+
+
+   wobei jeder Eintrag <sensprops> jeweils folgende Struktur hat:
+     ({string list_key, string damtype, int treshold, mixed options })
+
+
+
+   Die Eintraege haben dabei folgende Bedeutung:
+
+
+
+   list_key: Kann einen von folgenden drei Werten annehmen
+        1) SENSITIVE_INVENTORY, passive Eigenschaft; zeigt an, dass das
+           Objekt empfindlich auf aktive Objekte reagiert, die in das
+           Inventory des Containers hineinbewegt werden
+        2) SENSITIVE_ATTACK, passive Eigenschaft; zeigt an, dass das
+           Objekt empfindlich auf aeussere Einfluesse bzw. Angriffe
+           auf ein Lebewesen reagiert, in dessen Inventar es sich befindet
+        3) SENSITIVE_INVENTORY_TRIGGER, aktive Eigenschaft; zeigt an, dass
+           das Objekt eine Ausstrahlung auf andere Objekte im Inventar
+           hat. Wird ausgeloest, wenn das Objekt ins Inventar hineinbewegt
+           wird.
+   damtype: eine Schadensart (DT_FIRE, DT_WATER, ...)
+   treshold: hat zwei Bedeutungen abhaengig von dem Wert in list_key:
+        1) Fuer Objekte mit SENSITIVE_INVENTORY oder SENSITIVE_ATTCK ist
+           dies der Schadenswert, ab dem das Objekt benachrichtigt werden
+           soll.
+           Hier wird ein Wert in "Defend-Einheiten" erwartet, d.h. das
+           Zehnfache dessen, was am Ende in LP abgezogen wuerde.
+        2) Fuer Objekte mit SENSITIVE_INVENTORY_TRIGGER ist dies der
+           Schadenswert, mit dem das Objekt andere bereits im Inventar
+           des Containers befindliche Objekte beeinflusst, die eine
+           entsprechende Empfindlichkeit gesetzt haben
+   options: Optionale Daten, die der programmierende Magier selbst
+          definieren kann. Werden an die in den betroffenen Objekten
+          aufgerufenen Funktionen durchgereicht.
+
+   Ein SENSITIVE_ATTACK-Objekt, dessen Trigger-Bedingungen erfuellt sind,
+   wird durch folgenden Funktionsaufruf darueber informiert:
+     trigger_sensitive_attack(object enemy, string damtype, int damage,
+               mixed spell, mixed options)
+
+
+
+   Ein SENSITIVE_INVENTORY-Objekt, dessen Trigger-Bedingungen erfuellt sind,
+   wird durch folgenden Funktionsaufruf darueber informiert:
+     trigger_sensitive_inv(object whodid, string damtype, int threshold,
+               mixed options, mixed options)
+
+   Die beiden Funktionen muessen selbst ge-/ueberschrieben werden.
+
+
+BEMERKUNGEN
+===========
+
+   1. P_SENSITIVE-Objekte kosten Rechenzeit bei jedem Angriff oder jedem
+      move() - daher bitte sparsam verwenden
+   2. Ist P_SENSITIVE nicht statisch, sondern wird es situationsabhaengig
+      geaendert, muss man das environment() jeweils selbst ueber seine
+      neue Empfindlichkeit benachrichtigen. Dies geschieht mit den
+      Funktionen RemoveSensitiveObject() bzw.InsertSensitiveObject(),
+      siehe deren Manpages.
+
+
+BEISPIEL
+========
+
+   Beispiel 1:
+   Beispielcode eines Objektes mit SENSITIVE_ATTACK und SENSITIVE_INVENTORY
+   siehe hier: /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c
+
+   Beispiel 2:
+   Ein Eiszapfen, der bei Feuerangriffen oder bei heissen Gegenstaenden im
+   gemeinsamen Environment zerschmelzen soll:
+
+   void create() {
+     SetProp( P_SENSITIVE, ({ ({SENSITIVE_ATTACK,     DT_FIRE, 100}),
+                               ({SENSITIVE_INVENTORY, DT_FIRE, 100}) }) );
+     [...]
+   }
+
+   varargs void trigger_sensitive_attack() {
+     remove();
+   }
+
+   varargs void trigger_sensitive_inv() {
+     call_out("remove",0);  // verzoegert, wegen move()
+   }
+
+   varargs int remove(int silent) {
+     if(!silent) {
+       object room = all_environment(this_object())[<1];
+       tell_room(room, Name()+" zerschmilzt.\n");
      }
+     return ::remove();
+   }
 
-     varargs void trigger_sensitive_attack() {
-       remove();
-     }
+   - wird eine Fackel mit
+     SetProp(P_SENSITIVE,({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,250})}))
+     in das gleiche environment() wie dieser Zapfen bewegt wird, loest
+     diese im Zapfen trigger_sensitive_inv() aus
+   - wird ein Angriff mit DT_FIRE und initialem Schaden > 100 auf das
+     environment() veruebt, loest dies im Zapfen trigger_sensitive_attack()
+     aus
 
-     varargs void trigger_sensitive_inv() {
-       call_out("remove",0);  // verzoegert, wegen move()
-     }
 
-     varargs int remove(int silent) {
-       if(!silent) {
-         object room = all_environment(this_object())[<1];
-         tell_room(room, Name()+" zerschmilzt.\n");
-       }
-       return ::remove();
-     }
+SIEHE AUCH
+==========
 
-     - wird eine Fackel mit
-       SetProp(P_SENSITIVE,({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,250})}))
-       in das gleiche environment() wie dieser Zapfen bewegt wird, loest
-       diese im Zapfen trigger_sensitive_inv() aus
-     - wird ein Angriff mit DT_FIRE und initialem Schaden > 100 auf das
-       environment() veruebt, loest dies im Zapfen trigger_sensitive_attack()
-       aus
-
-SIEHE AUCH:
-     Properties: P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
-                 P_SENSITIVE_INVENTORY_TRIGGER
-     Funktionen: InsertSensitiveObject(L), RemoveSensitiveObject(L),
-                 CheckSensitiveAttack(L), Defend(), 
-                 insert_sensitive_inv(L), insert_sensitive_inv_trigger(L),
-                 trigger_sensitive_inv(L), trigger_sensitive_attack(L)
-     Defines:    /sys/sensitive.h
+   Properties: P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+               P_SENSITIVE_INVENTORY_TRIGGER
+   Funktionen: InsertSensitiveObject(L), RemoveSensitiveObject(L),
+               CheckSensitiveAttack(L), Defend(),
+               insert_sensitive_inv(L), insert_sensitive_inv_trigger(L),
+               trigger_sensitive_inv(L), trigger_sensitive_attack(L)
+   Defines:    /sys/sensitive.h
 
 Letzte Aenderung: 10. Januar 2015, Arathorn
diff --git a/doc/props/P_SENSITIVE_ATTACK b/doc/props/P_SENSITIVE_ATTACK
index b1586eb..168c15b 100644
--- a/doc/props/P_SENSITIVE_ATTACK
+++ b/doc/props/P_SENSITIVE_ATTACK
@@ -1,24 +1,42 @@
+
 P_SENSITIVE_ATTACK
-NAME:
-    P_SENSITIVE_ATTACK            "sensitive_attack"
+******************
 
-DEFINIERT IN:
-    /sys/sensitive.h
 
-BESCHREIBUNG:
-    Hier steht die Liste der zu informierenden Objekte, die potentiell
-    auf einen Angriff reagieren koennten.
-    Wird von InsertSensitiveObject() und RemoveSensitiveObject()
-    geschrieben und in CheckSensitiveAttack() ausgewertet.
+NAME
+====
 
-BEMERKUNGEN:
-    Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+   P_SENSITIVE_ATTACK            "sensitive_attack"
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject, RemoveSensitiveObject
-     insert_sensitive_inv_trigger, insert_sensitive_inv
-     P_SENSITIVE_INVENTORY_TRIGGER, P_SENSITIVE_INVENTORY
-     CheckSensitiveAttack
+
+DEFINIERT IN
+============
+
+   /sys/sensitive.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht die Liste der zu informierenden Objekte, die potentiell
+   auf einen Angriff reagieren koennten.
+   Wird von InsertSensitiveObject() und RemoveSensitiveObject()
+   geschrieben und in CheckSensitiveAttack() ausgewertet.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_INVENTORY_TRIGGER, P_SENSITIVE_INVENTORY
+   CheckSensitiveAttack
 
 25.Apr.2001, Gloinson@MG
diff --git a/doc/props/P_SENSITIVE_INVENTORY b/doc/props/P_SENSITIVE_INVENTORY
index 1e75423..418f9a1 100644
--- a/doc/props/P_SENSITIVE_INVENTORY
+++ b/doc/props/P_SENSITIVE_INVENTORY
@@ -1,24 +1,43 @@
-NAME:
-    P_SENSITIVE_INVENTORY         "sensitive_inv"
 
-DEFINIERT IN:
-    /sys/sensitive.h
+P_SENSITIVE_INVENTORY
+*********************
 
-BESCHREIBUNG:
-    Hier steht die Liste der zu informierenden Objekte, die potentiell
-    auf ein anderes Objekt mit gesetztem P_SENSITIVE_INVENTORY_TRIGGER
-    reagieren koennten.
-    Wird von InsertSensitiveObject() und RemoveSensitiveObject()
-    geschrieben.
 
-BEMERKUNGEN:
-    Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+NAME
+====
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject, RemoveSensitiveObject
-     insert_sensitive_inv_trigger, insert_sensitive_inv
-     P_SENSITIVE_INVENTORY_TRIGGER, P_SENSITIVE_ATTACK
-     CheckSensitiveAttack
+   P_SENSITIVE_INVENTORY         "sensitive_inv"
+
+
+DEFINIERT IN
+============
+
+   /sys/sensitive.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht die Liste der zu informierenden Objekte, die potentiell
+   auf ein anderes Objekt mit gesetztem P_SENSITIVE_INVENTORY_TRIGGER
+   reagieren koennten.
+   Wird von InsertSensitiveObject() und RemoveSensitiveObject()
+   geschrieben.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_INVENTORY_TRIGGER, P_SENSITIVE_ATTACK
+   CheckSensitiveAttack
 
 25.Apr.2001, Gloinson@MG
diff --git a/doc/props/P_SENSITIVE_INVENTORY_TRIGGER b/doc/props/P_SENSITIVE_INVENTORY_TRIGGER
index df6feae..627a582 100644
--- a/doc/props/P_SENSITIVE_INVENTORY_TRIGGER
+++ b/doc/props/P_SENSITIVE_INVENTORY_TRIGGER
@@ -1,24 +1,42 @@
+
 P_SENSITIVE_INVENTORY_TRIGGER
-NAME:
-    P_SENSITIVE_INVENTORY_TRIGGER "sensitive_inv_trigger"
+*****************************
 
-DEFINIERT IN:
-    /sys/sensitive.h
 
-BESCHREIBUNG:
-    Hier steht die Liste der aktiven Objekte, die eine potentielle
-    "Ausstrahlung" auf andere Objekte haben.
-    Wird von InsertSensitiveObject() und RemoveSensitiveObject()
-    geschrieben.
+NAME
+====
 
-BEMERKUNGEN:
-    Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+   P_SENSITIVE_INVENTORY_TRIGGER "sensitive_inv_trigger"
 
-SIEHE AUCH:
-     P_SENSITIVE
-     InsertSensitiveObject, RemoveSensitiveObject
-     insert_sensitive_inv_trigger, insert_sensitive_inv
-     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY
-     CheckSensitiveAttack
+
+DEFINIERT IN
+============
+
+   /sys/sensitive.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht die Liste der aktiven Objekte, die eine potentielle
+   "Ausstrahlung" auf andere Objekte haben.
+   Wird von InsertSensitiveObject() und RemoveSensitiveObject()
+   geschrieben.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY
+   CheckSensitiveAttack
 
 25.Apr.2001, Gloinson@MG
diff --git a/doc/props/P_SHOOTING_AREA b/doc/props/P_SHOOTING_AREA
index 770564f..9339847 100644
--- a/doc/props/P_SHOOTING_AREA
+++ b/doc/props/P_SHOOTING_AREA
@@ -1,24 +1,38 @@
+
 P_SHOOTING_AREA
+***************
 
-NAME:
-    P_SHOOTING_AREA     "shooting_area"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Legt die 'Groesse' eines Raumes fest. Ein Schuetze kann mit seiner
-    Fernkampfwaffe nur dann aus diesem Raum in einen anderen Raum schiessen,
-    wenn die P_RANGE seiner Waffe mindestens gleich ist.
+   P_SHOOTING_AREA     "shooting_area"
 
-    Erreichbare Raeume sind entweder das environment() oder der in
-    P_SHOOTING_AREA festgelegte Raum.
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_TARGET_AREA
-    Raeume:    P_NEVER_CLEAN
-    Sonstiges: fernwaffen
+DEFINIERT IN
+============
 
-29.Jul 2014 Gloinson
\ No newline at end of file
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Legt die 'Groesse' eines Raumes fest. Ein Schuetze kann mit seiner
+   Fernkampfwaffe nur dann aus diesem Raum in einen anderen Raum schiessen,
+   wenn die P_RANGE seiner Waffe mindestens gleich ist.
+
+   Erreichbare Raeume sind entweder das environment() oder der in
+   P_SHOOTING_AREA festgelegte Raum.
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_TARGET_AREA
+   Raeume:    P_NEVER_CLEAN
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/props/P_SHOOTING_WC b/doc/props/P_SHOOTING_WC
index 35ca215..6345d76 100644
--- a/doc/props/P_SHOOTING_WC
+++ b/doc/props/P_SHOOTING_WC
@@ -1,31 +1,48 @@
+
 P_SHOOTING_WC
+*************
 
-NAME:
-    P_SHOOTING_WC     "shooting_wc"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Legt in einer Fernkampfwaffe UND ihrer Munition die Waffenstaerke fest.
-    Bei einem Schuss wird die Summe kombiniert mit der Geschicklichkeit
-    zur Berechnung der Angriffstaerke benutzt.
+   P_SHOOTING_WC     "shooting_wc"
 
-BEISPIELE:
-    SetProp(P_SHOOTING_WC, 70);     // Langbogen
-    SetProp(P_SHOOTING_WC, 50);     // Kurzbogen
 
-    SetProp(P_SHOOTING_WC, 40);     // Bambuspfeil
-    SetProp(P_SHOOTING_WC, 60);     // Aluminiumpfeil
+DEFINIERT IN
+============
 
-    // So haetten Langbogen mit Aluminiumpfeil eine P_SHOOTING_WC von 70+60.
+   <combat.h>
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
-    Waffen:    P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
-    Kampf:     Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
-    Sonstiges: fernwaffen
 
-29.Jul 2014 Gloinson
\ No newline at end of file
+BESCHREIBUNG
+============
+
+   Legt in einer Fernkampfwaffe UND ihrer Munition die Waffenstaerke fest.
+   Bei einem Schuss wird die Summe kombiniert mit der Geschicklichkeit
+   zur Berechnung der Angriffstaerke benutzt.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_SHOOTING_WC, 70);     // Langbogen
+   SetProp(P_SHOOTING_WC, 50);     // Kurzbogen
+
+   SetProp(P_SHOOTING_WC, 40);     // Bambuspfeil
+   SetProp(P_SHOOTING_WC, 60);     // Aluminiumpfeil
+
+   // So haetten Langbogen mit Aluminiumpfeil eine P_SHOOTING_WC von 70+60.
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Waffen:    P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
+   Kampf:     Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/props/P_SHORT b/doc/props/P_SHORT
index b6502d4..49b2603 100644
--- a/doc/props/P_SHORT
+++ b/doc/props/P_SHORT
@@ -1,41 +1,60 @@
+
 P_SHORT
-NAME:
-     P_SHORT				"short"
+*******
 
-DEFINIERT IN:
-     /sys/thing/description.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt die Kurzbeschreibung des Objektes als String 
-     oder Closure (diese muss einen String zurueckgeben).
+NAME
+====
 
-     ACHTUNG: Die Kurzbeschreibung sollte dabei weder mit einem
-	      Satzzeichen noch mit einem "\n" abgeschlossen sein
-	      (dies wird von den zustaendigen Funktionen erledigt).
+   P_SHORT                            "short"
 
-     Setzt man diese Property auf 0, so ist das Objekt unsichtbar, allerdings
-     ansprechbar, wenn der Spieler eine ID des Objektes kennt. D.h. Objekte
-     koennen mitgenommen, weggeworfen oder ggf. auch angegriffen werden. Will
-     man dies nicht, sollte man das Objekt mit P_INVIS unsichtbar machen.
 
-     Diese Property bestimmt die Ansicht des Objektes von aussen. Fuer die
-     Innen(kurz)ansicht von Raeumen muss man P_INT_LONG benutzen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Die Funktion, die die Kurzbeschreibung ausgibt (short()), filtert P_SHORT
-     durch process_string(). Von der Nutzung dieses Features wird in neuem
-     Code abgeraten.
-     Soll eine dyn. Kurzbeschreibung geschaffen werden, bitte eine
-     F_QUERY_METHOD einsetzen oder short() passend ueberschreiben.
+   /sys/thing/description.h
 
-BEISPIELE:
-     // eine Axt sieht natuerlich so aus:
-     SetProp(P_SHORT, "Eine Axt");
 
-SIEHE AUCH:
-     Aehnliches:	P_LONG, short()
-     Sonstiges:		P_INT_SHORT, process_string()
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Diese Property enthaelt die Kurzbeschreibung des Objektes als String
+   oder Closure (diese muss einen String zurueckgeben).
+
+   ACHTUNG: Die Kurzbeschreibung sollte dabei weder mit einem
+            Satzzeichen noch mit einem "\n" abgeschlossen sein
+            (dies wird von den zustaendigen Funktionen erledigt).
+
+   Setzt man diese Property auf 0, so ist das Objekt unsichtbar, allerdings
+   ansprechbar, wenn der Spieler eine ID des Objektes kennt. D.h. Objekte
+   koennen mitgenommen, weggeworfen oder ggf. auch angegriffen werden. Will
+   man dies nicht, sollte man das Objekt mit P_INVIS unsichtbar machen.
+
+   Diese Property bestimmt die Ansicht des Objektes von aussen. Fuer die
+   Innen(kurz)ansicht von Raeumen muss man P_INT_LONG benutzen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion, die die Kurzbeschreibung ausgibt (short()), filtert P_SHORT
+   durch process_string(). Von der Nutzung dieses Features wird in neuem
+   Code abgeraten.
+   Soll eine dyn. Kurzbeschreibung geschaffen werden, bitte eine
+   F_QUERY_METHOD einsetzen oder short() passend ueberschreiben.
+
+
+BEISPIELE
+=========
+
+   // eine Axt sieht natuerlich so aus:
+   SetProp(P_SHORT, "Eine Axt");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_LONG, short()
+   Sonstiges:         P_INT_SHORT, process_string()
+
 27.05.2015, Zesstra
-
diff --git a/doc/props/P_SHORT_CWD b/doc/props/P_SHORT_CWD
index a6343ae..46f0236 100644
--- a/doc/props/P_SHORT_CWD
+++ b/doc/props/P_SHORT_CWD
@@ -1,8 +1,21 @@
-NAME:
-    P_SHORT_CWD                   "short_cwd"                   
 
-DEFINIERT IN:
-    /sys/shells.h
+P_SHORT_CWD
+***********
 
-BESCHREIBUNG:
-     .readme bei cd ausgeben oder nicht
+
+NAME
+====
+
+   P_SHORT_CWD                   "short_cwd"
+
+
+DEFINIERT IN
+============
+
+   /sys/shells.h
+
+
+BESCHREIBUNG
+============
+
+   .readme bei cd ausgeben oder nicht
diff --git a/doc/props/P_SHOWEMAIL b/doc/props/P_SHOWEMAIL
index 82d1348..b6cf580 100644
--- a/doc/props/P_SHOWEMAIL
+++ b/doc/props/P_SHOWEMAIL
@@ -1,10 +1,23 @@
-NAME:
-     P_SHOWEMAIL                        "showemail"
 
-DEFINIERT IN:
-     /sys/player/base.h
+P_SHOWEMAIL
+***********
 
-BESCHREIBUNG:
-     Eintrag, wer die E-Mail im "finger" zu sehen bekommen soll:
-     0, "alle", "freunde"
-     Kann durch "emailanzeige" (/std/player/base.c) geaendert werden.
+
+NAME
+====
+
+   P_SHOWEMAIL                        "showemail"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Eintrag, wer die E-Mail im "finger" zu sehen bekommen soll:
+   0, "alle", "freunde"
+   Kann durch "emailanzeige" (/std/player/base.c) geaendert werden.
diff --git a/doc/props/P_SHOW_ALIAS_PROCESSING b/doc/props/P_SHOW_ALIAS_PROCESSING
index cb49cf8..94552dd 100644
--- a/doc/props/P_SHOW_ALIAS_PROCESSING
+++ b/doc/props/P_SHOW_ALIAS_PROCESSING
@@ -1,8 +1,21 @@
-NAME:
-    P_SHOW_ALIAS_PROCESSING       "show_alias_processing"       
 
-DEFINIERT IN:
-    /sys/player.h
+P_SHOW_ALIAS_PROCESSING
+***********************
 
-BESCHREIBUNG:
-     Arbeit des Parsers beobachten (debugging)
+
+NAME
+====
+
+   P_SHOW_ALIAS_PROCESSING       "show_alias_processing"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Arbeit des Parsers beobachten (debugging)
diff --git a/doc/props/P_SHOW_EXITS b/doc/props/P_SHOW_EXITS
index 9c8d87b..0e00886 100644
--- a/doc/props/P_SHOW_EXITS
+++ b/doc/props/P_SHOW_EXITS
@@ -1,15 +1,31 @@
-NAME:
-    P_SHOW_EXITS                  "show_exits"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_SHOW_EXITS
+************
 
-BESCHREIBUNG:
-     Im Spieler gesetzt, wenn der Spieler die offensichtlichen Ausgaenge
-     immer automatisch sehen will.
 
-SIEHE AUCH:
-     Aehnliches:	P_HIDE_EXITS
-     Sonstiges:		AddExit(), GetExits(), int_long(), int_short()
+NAME
+====
 
-11. Mai 2004 Gloinson
\ No newline at end of file
+   P_SHOW_EXITS                  "show_exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Im Spieler gesetzt, wenn der Spieler die offensichtlichen Ausgaenge
+   immer automatisch sehen will.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_HIDE_EXITS
+   Sonstiges:         AddExit(), GetExits(), int_long(), int_short()
+
+11. Mai 2004 Gloinson
diff --git a/doc/props/P_SHOW_INV b/doc/props/P_SHOW_INV
index 73a2ffe..e982154 100644
--- a/doc/props/P_SHOW_INV
+++ b/doc/props/P_SHOW_INV
@@ -1,19 +1,32 @@
+
 P_SHOW_INV
+**********
 
-NAME:
-     P_SHOW_INV "show_inv"
 
-DEFINIERT IN:
-     <thing/description.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Wenn diese Property auf einen Wert ungleich 0 gesetzt ist, wird das
-     Objekt, soweit es sich in einem Spieler befindet, in dessen
-     Langbeschreibung angezeigt. Zur Anzeige wird der Name des Objektes
-     verwendet.
+   P_SHOW_INV "show_inv"
 
-SIEHE AUCH:
-     /std/thing/description.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property auf einen Wert ungleich 0 gesetzt ist, wird das
+   Objekt, soweit es sich in einem Spieler befindet, in dessen
+   Langbeschreibung angezeigt. Zur Anzeige wird der Name des Objektes
+   verwendet.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c
+
 Last modified: Sun May 19 20:36:05 1996 by Wargon
diff --git a/doc/props/P_SHOW_MSG b/doc/props/P_SHOW_MSG
index 8841154..c19c49f 100644
--- a/doc/props/P_SHOW_MSG
+++ b/doc/props/P_SHOW_MSG
@@ -1,51 +1,69 @@
+
 P_SHOW_MSG
-NAME:
-    P_SHOW_MSG                          "show_message"
+**********
 
-DEFINIERT IN:
-    /sys/living/put_and_get.h
 
-BESCHREIBUNG:
-    Mit P_SHOW_MSG kann man die Meldungen, die beim Vorzeigen eines Objektes
-    ausgegeben werden, modifizieren.
+NAME
+====
 
-    Folgende Werte sind moeglich:
+   P_SHOW_MSG                          "show_message"
 
-    o 0
-      Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-    o NO_PNG_MSG        == -1
-      Es wird keinerlei Meldung ausgegeben
+DEFINIERT IN
+============
 
-    o Ein Array aus Strings
-      Der erste String wird an den Spieler ausgegeben, der zweite
-      (optionale) an den Raum, der dritte (ebenfalls optionale) an den
-      Empfaenger.
+   /sys/living/put_and_get.h
 
-      Die Strings werden durch die Funktion replace_personal() geparst.
-        Objekt1 - Spieler
-        Objekt2 - das Objekt, das uebergeben wird
-        Objekt3 - Empfaenger
 
-      Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
-      Raum. Beim Fehlen des dritten gibt es keine Meldung an den Empfaenger.
+BESCHREIBUNG
+============
 
-BEISPIEL:
-    SetProp(P_SHOW_MSG, ({
-      "Du haeltst @WEM3 @WEN2 unter die Nase.",
-      "@WER1 haelt @WEM3 @WENU2 unter die Nase.",
-      "@WER1 haelt Dir @WENU2 unter die Nase."
-    }));
+   Mit P_SHOW_MSG kann man die Meldungen, die beim Vorzeigen eines Objektes
+   ausgegeben werden, modifizieren.
 
-    Das fuehrt bei Ugars "zeig peter medaille" zu folgenden Meldungen:
+   Folgende Werte sind moeglich:
 
-    Ugar: "Du haeltst Peter die Medaille unter die Nase."
-    Raum: "Ugar haelt Peter eine Medaille unter die Nase."
-    Peter: "Ugar haelt Dir eine Medaille unter die Nase."
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
 
-SIEHE AUCH:
-     Aehnliches: P_DROP_MSG, P_PUT_MSG, P_PICK_MSG, P_GIVE_MSG
-     Sonstiges:  replace_personal(E), show(L), show_objects(L),
-                 show_notify(L), /std/living/put_and_get.c
+   o NO_PNG_MSG        == -1
+     Es wird keinerlei Meldung ausgegeben
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum, der dritte (ebenfalls optionale) an den
+     Empfaenger.
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+       Objekt1 - Spieler
+       Objekt2 - das Objekt, das uebergeben wird
+       Objekt3 - Empfaenger
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum. Beim Fehlen des dritten gibt es keine Meldung an den Empfaenger.
+
+
+BEISPIEL
+========
+
+   SetProp(P_SHOW_MSG, ({
+     "Du haeltst @WEM3 @WEN2 unter die Nase.",
+     "@WER1 haelt @WEM3 @WENU2 unter die Nase.",
+     "@WER1 haelt Dir @WENU2 unter die Nase."
+   }));
+
+   Das fuehrt bei Ugars "zeig peter medaille" zu folgenden Meldungen:
+
+   Ugar: "Du haeltst Peter die Medaille unter die Nase."
+   Raum: "Ugar haelt Peter eine Medaille unter die Nase."
+   Peter: "Ugar haelt Dir eine Medaille unter die Nase."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_DROP_MSG, P_PUT_MSG, P_PICK_MSG, P_GIVE_MSG
+   Sonstiges:  replace_personal(E), show(L), show_objects(L),
+               show_notify(L), /std/living/put_and_get.c
 
 3. Juni 2008 Amynthor
diff --git a/doc/props/P_SIBLINGS b/doc/props/P_SIBLINGS
index 15d0977..6e18f0c 100644
--- a/doc/props/P_SIBLINGS
+++ b/doc/props/P_SIBLINGS
@@ -1,9 +1,22 @@
-NAME:
-    P_SIBLINGS                     "siblings"                     
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_SIBLINGS
+**********
 
-BESCHREIBUNG:
-     Enthaelt einen String mit den Blutsbruedern eines Spielers
-     (sofern vorhanden).
+
+NAME
+====
+
+   P_SIBLINGS                     "siblings"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String mit den Blutsbruedern eines Spielers
+   (sofern vorhanden).
diff --git a/doc/props/P_SIZE b/doc/props/P_SIZE
index b5fdb72..aa311f3 100644
--- a/doc/props/P_SIZE
+++ b/doc/props/P_SIZE
@@ -1,31 +1,50 @@
-NAME:
-    P_SIZE                        "size"                        
 
-DEFINIERT IN:
-    /sys/properties.h
+P_SIZE
+******
 
-BESCHREIBUNG:
-     Groesse des Lebewesens bzw. Laenge der Waffe (in cm).
 
-     Wird keine Waffenlaenge explizit angegeben, so sind die Defaultwerte
-     fuer die entsprechenden Waffentypen folgende:
+NAME
+====
 
-    	WT_SWORD  : 100
-    	WT_AXE    :  80
-    	WT_CLUB   :  80
-    	WT_SPEAR  : 180
-    	WT_KNIFE  :  20
-    	WT_WHIP   : 200
-    	WT_STAFF  : 150
+   P_SIZE                        "size"
 
-BEMERKUNGEN:
-     1. Uebertreibt es bitte mit der Groesse nicht, auch sehr grosse NPCs 
-        sollten nicht ueber 1000000 liegen. Sonst kriegt die Karategilde 
-        Probleme.
-     2. Negative Werte fuer P_SIZE sind nicht moeglich, da dies zum einen
-        voellig unsinnig ist und zum anderen evtl. zu Problemen mit Waffen
-        fuehrt, die Schaden in Abhaengigkeit von P_SIZE machen und sich
-        darauf verlassen, dass nur positive Werte vorkommen.
 
-LETZTE AENDERUNG:
-    2006-09-29, von Zesstra
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Groesse des Lebewesens bzw. Laenge der Waffe (in cm).
+
+   Wird keine Waffenlaenge explizit angegeben, so sind die Defaultwerte
+   fuer die entsprechenden Waffentypen folgende:
+
+      WT_SWORD  : 100
+      WT_AXE    :  80
+      WT_CLUB   :  80
+      WT_SPEAR  : 180
+      WT_KNIFE  :  20
+      WT_WHIP   : 200
+      WT_STAFF  : 150
+
+
+BEMERKUNGEN
+===========
+
+   1. Uebertreibt es bitte mit der Groesse nicht, auch sehr grosse NPCs
+      sollten nicht ueber 1000000 liegen. Sonst kriegt die Karategilde
+      Probleme.
+   2. Negative Werte fuer P_SIZE sind nicht moeglich, da dies zum einen
+      voellig unsinnig ist und zum anderen evtl. zu Problemen mit Waffen
+      fuehrt, die Schaden in Abhaengigkeit von P_SIZE machen und sich
+      darauf verlassen, dass nur positive Werte vorkommen.
+
+
+LETZTE AENDERUNG
+================
+
+   2006-09-29, von Zesstra
diff --git a/doc/props/P_SKILLS b/doc/props/P_SKILLS
index 02a76c7..492cbbe 100644
--- a/doc/props/P_SKILLS
+++ b/doc/props/P_SKILLS
@@ -1,15 +1,30 @@
-NAME:
-	P_SKILLS			"skills"                      
 
-DEFINIERT IN:
-	/sys/player/skills.h
+P_SKILLS
+********
 
-BESCHREIBUNG:
-	Diese Property sollte nicht mehr verwendet werden. Sie wurde
-	vollstaendig durch P_NEWSKILLS ersetzt.
 
-SIEHE AUCH:
-	P_NEW_SKILLS
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_SKILLS                        "skills"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property sollte nicht mehr verwendet werden. Sie wurde
+   vollstaendig durch P_NEWSKILLS ersetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_NEW_SKILLS
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_SKILL_ATTRIBUTES b/doc/props/P_SKILL_ATTRIBUTES
index 6eb5b97..066bd78 100644
--- a/doc/props/P_SKILL_ATTRIBUTES
+++ b/doc/props/P_SKILL_ATTRIBUTES
@@ -1,50 +1,69 @@
-NAME:
-    P_SKILL_ATTRIBUTES        "skill_attr"
 
-DEFINIERT IN:
-    /sys/living/skill_attributes.h
+P_SKILL_ATTRIBUTES
+******************
 
-BESCHREIBUNG:
-    In dieser Prop stehen alle nicht-permanenten Modifikatoren der
-    Skill-Attribute.
-    Die Datenstruktur ist ein Mapping mit den SA-Namen als Schluessel und
-    jeweils drei Werten pro Schluessel.
-    Der erste Wert ist ein Array mit drei Werten: der Summe der stat.
-    Modifier, dem Zeitpunkt an dem dies Summe ungueltig wird und der
-    Gesamtzahl aktiver Modifikatoren.
-    Der zweite Wert enthaelt ein Mapping mit allen statischen Modifikatoren
-    und den Objekten dieser Mods als Schluessel. Die beiden Werte dieses
-    Mappings sind der Wert des Modifikators (int) und die Ablaufzeit (int).
-    Der dritte Wert enthaelt ein Mapping mit allen dynamischen
-    Modifikatoren und den Objekten dieser Mods als Schluessel. Die beiden
-    Werte dieses Mappings sind die zu rufende Closure (closure) und die
-    Ablaufzeit des Mods (int).
 
-    ([ SA_ATTR: ({Summe_Stat_Modifier, Zeitpunkt, AnzahlModifier, });
-                ([ ob1:value;duration,
-                   ob2:value;duration, ...]);  // stat. Modifier
-                ([ ob1:closure;duration,
-                   ob2:closure;duration, ...])     // dyn. Modifier
-                ,
-       SA_ATTR2: ({...}); ([]); ([]),
-       SA_ATTR3: ({...}); ([]); ([]),
-    ])
+NAME
+====
 
-BEMERKUNGEN:
-    Diese Property darf AUF GAR KEINEN FALL per Hand manipuliert werden,
-    dafuer gibt es die Funktionen ModifySkillAttribute() und
-    RemoveSkillAttributeModifier().
-    Zum Auslesen stehen QuerySkillAttribute() und
-    QuerySkillAttributeModifier() zur Verfuegung.
+   P_SKILL_ATTRIBUTES        "skill_attr"
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
 
-13.09.2008, Zesstra
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/living/skill_attributes.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Prop stehen alle nicht-permanenten Modifikatoren der
+   Skill-Attribute.
+   Die Datenstruktur ist ein Mapping mit den SA-Namen als Schluessel und
+   jeweils drei Werten pro Schluessel.
+   Der erste Wert ist ein Array mit drei Werten: der Summe der stat.
+   Modifier, dem Zeitpunkt an dem dies Summe ungueltig wird und der
+   Gesamtzahl aktiver Modifikatoren.
+   Der zweite Wert enthaelt ein Mapping mit allen statischen Modifikatoren
+   und den Objekten dieser Mods als Schluessel. Die beiden Werte dieses
+   Mappings sind der Wert des Modifikators (int) und die Ablaufzeit (int).
+   Der dritte Wert enthaelt ein Mapping mit allen dynamischen
+   Modifikatoren und den Objekten dieser Mods als Schluessel. Die beiden
+   Werte dieses Mappings sind die zu rufende Closure (closure) und die
+   Ablaufzeit des Mods (int).
+
+   ([ SA_ATTR: ({Summe_Stat_Modifier, Zeitpunkt, AnzahlModifier, });
+               ([ ob1:value;duration,
+                  ob2:value;duration, ...]);  // stat. Modifier
+               ([ ob1:closure;duration,
+                  ob2:closure;duration, ...])     // dyn. Modifier
+               ,
+      SA_ATTR2: ({...}); ([]); ([]),
+      SA_ATTR3: ({...}); ([]); ([]),
+   ])
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property darf AUF GAR KEINEN FALL per Hand manipuliert werden,
+   dafuer gibt es die Funktionen ModifySkillAttribute() und
+   RemoveSkillAttributeModifier().
+   Zum Auslesen stehen QuerySkillAttribute() und
+   QuerySkillAttributeModifier() zur Verfuegung.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+13.09.2008, Zesstra
diff --git a/doc/props/P_SKILL_ATTRIBUTE_OFFSETS b/doc/props/P_SKILL_ATTRIBUTE_OFFSETS
index 2568f76..6bfcad3 100644
--- a/doc/props/P_SKILL_ATTRIBUTE_OFFSETS
+++ b/doc/props/P_SKILL_ATTRIBUTE_OFFSETS
@@ -1,32 +1,49 @@
-NAME:
-    P_SKILL_ATTRIBUTE_OFFSETS       "skill_attr_offsets"                        
 
-DEFINIERT IN:
-    /sys/living/skill_attributes.h
+P_SKILL_ATTRIBUTE_OFFSETS
+*************************
 
-BESHREIBUNG:
 
-    Der Wert der Property ist ein Mapping: ([Attributname: Wert])
-    In dieser Property stehen permanente Abweichungen der Skillattribute
-    vom Standardwert 100.
+NAME
+====
 
-    Zu den Moeglichen Attributwerten, siehe P_SKILL_ATTRIBUTES.
+   P_SKILL_ATTRIBUTE_OFFSETS       "skill_attr_offsets"
 
-    Die Werte duerfen zwischen 10 und 1000 liegen.
 
-BEMERKUNG:
-    Diese Property sollte AUF GAR KEINEN FALL in einem Spieler gesetzt
-    werden, ohne Ruecksprachen mit allerhoechsten Stellen!
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+   /sys/living/skill_attributes.h
+
+
+BESHREIBUNG
+===========
+
+   Der Wert der Property ist ein Mapping: ([Attributname: Wert])
+   In dieser Property stehen permanente Abweichungen der Skillattribute
+   vom Standardwert 100.
+
+   Zu den Moeglichen Attributwerten, siehe P_SKILL_ATTRIBUTES.
+
+   Die Werte duerfen zwischen 10 und 1000 liegen.
+
+
+BEMERKUNG
+=========
+
+   Diese Property sollte AUF GAR KEINEN FALL in einem Spieler gesetzt
+   werden, ohne Ruecksprachen mit allerhoechsten Stellen!
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 31.12.2013, Zesstra
-
diff --git a/doc/props/P_SMELLS b/doc/props/P_SMELLS
index b510ce1..0098bd8 100644
--- a/doc/props/P_SMELLS
+++ b/doc/props/P_SMELLS
@@ -1,24 +1,43 @@
-NAME:
-    P_SMELLS            "smell_details"
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_SMELLS
+********
 
-BESCHREIBUNG:
-    Diese Property entspricht dem P_DETAILS fuer Standarddetails,
-    nur werden hierin Gerueche gespeichert:
-    Diese Property enthaelt ein Mapping, in der Details im Objekt
-    definiert werden und Beschreibungen, die ausgegeben werden, wenn man
-    sich diese Details anschaut.
 
-BEMERKUNGEN:
-    Man sollte diese Property nicht per Hand veraendern, sondern die
-    Funktionen nutzen.
+NAME
+====
 
-SIEHE AUCH:
-    Setzen:    AddSmells()
-    Loeschen:  RemoveSmells()
-    Aehnlich:  AddDetail(), P_DETAILS
-    Sonstiges: GetDetail(), break_string()
+   P_SMELLS            "smell_details"
 
-27. Jan 2013 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property entspricht dem P_DETAILS fuer Standarddetails,
+   nur werden hierin Gerueche gespeichert:
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddSmells()
+   Loeschen:  RemoveSmells()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/props/P_SNOOPFLAGS b/doc/props/P_SNOOPFLAGS
index 4c47e39..340dde2 100644
--- a/doc/props/P_SNOOPFLAGS
+++ b/doc/props/P_SNOOPFLAGS
@@ -1,8 +1,21 @@
-NAME:
-    P_SNOOPFLAGS                  "snoopflags"                  
 
-DEFINIERT IN:
-    /sys/snooping.h
+P_SNOOPFLAGS
+************
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_SNOOPFLAGS                  "snoopflags"
+
+
+DEFINIERT IN
+============
+
+   /sys/snooping.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_SOUNDS b/doc/props/P_SOUNDS
index 9b9a350..520265b 100644
--- a/doc/props/P_SOUNDS
+++ b/doc/props/P_SOUNDS
@@ -1,24 +1,43 @@
-NAME:
-    P_SOUNDS            "sound_details"
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_SOUNDS
+********
 
-BESCHREIBUNG:
-    Diese Property entspricht dem P_DETAILS fuer Standarddetails,   
-    nur werden hierin Gerauesche gespeichert:
-    Diese Property enthaelt ein Mapping, in der Details im Objekt
-    definiert werden und Beschreibungen, die ausgegeben werden, wenn man
-    sich diese Details anschaut.
 
-BEMERKUNGEN:
-    Man sollte diese Property nicht per Hand veraendern, sondern die
-    Funktionen nutzen.
+NAME
+====
 
-SIEHE AUCH:
-    Setzen:    AddSounds()
-    Loeschen:  RemoveSounds()
-    Aehnlich:  AddDetail(), P_DETAILS
-    Sonstiges: GetDetail(), break_string()
+   P_SOUNDS            "sound_details"
 
-27. Jan 2013 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property entspricht dem P_DETAILS fuer Standarddetails,
+   nur werden hierin Gerauesche gespeichert:
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddSounds()
+   Loeschen:  RemoveSounds()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/props/P_SP b/doc/props/P_SP
index 02bab65..fa30cb1 100644
--- a/doc/props/P_SP
+++ b/doc/props/P_SP
@@ -1,23 +1,37 @@
-NAME:
-    P_SP                          "sp"
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_SP
+****
 
-BESCHREIBUNG:
 
-     - Lebewesen
-       Anzahl der Konzentrationspunkte des Wesens.
+NAME
+====
 
-     - Speisen/Kneipen
-       Heilwirkung einer Portion der Speise auf die Konzentrationspunkte
-       des Konsumenten
+   P_SP                          "sp"
 
-SIEHE AUCH:
-     Props:		P_MAX_SP
-     Veraenderung:	reduce_spell_points(), restore_spell_points()
-			buffer_sp()
-     Speisen/Kneipen:   std/pub, wiz/food, consume
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Anzahl der Konzentrationspunkte des Wesens.
+
+   - Speisen/Kneipen
+     Heilwirkung einer Portion der Speise auf die Konzentrationspunkte
+     des Konsumenten
+
+
+SIEHE AUCH
+==========
+
+   Props:             P_MAX_SP
+   Veraenderung:      reduce_spell_points(), restore_spell_points()
+                      buffer_sp()
+   Speisen/Kneipen:   std/pub, wiz/food, consume
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_SPECIAL_DETAILS b/doc/props/P_SPECIAL_DETAILS
index 2eb2123..9b3f63c 100644
--- a/doc/props/P_SPECIAL_DETAILS
+++ b/doc/props/P_SPECIAL_DETAILS
@@ -1,23 +1,42 @@
-NAME:
-    P_SPECIAL_DETAILS             "special_details"             
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_SPECIAL_DETAILS
+*****************
 
-BESCHREIBUNG:
-    Mapping von Details, die beim Anschauen eine Funktion starten.
 
-BEMERKUNGEN:
-    Dies ist keine "echte" Property. Die Daten werden bei der Abfrage in einer
-    Querymethode dynamisch aus P_DETAILS extrahiert. Dementsprechend
-    funktioniert es auch nicht, hier eine Query- oder Setmethode von aussen
-    drauf zu legen.
+NAME
+====
 
-SIEHE AUCH:
-    Setzen:    AddDetail()
-    Loeschen:  RemoveDetail()
-    Daten:     P_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail()
-    Sonstiges: GetDetail(), break_string()
+   P_SPECIAL_DETAILS             "special_details"
 
-27. Jan 2013 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping von Details, die beim Anschauen eine Funktion starten.
+
+
+BEMERKUNGEN
+===========
+
+   Dies ist keine "echte" Property. Die Daten werden bei der Abfrage in einer
+   Querymethode dynamisch aus P_DETAILS extrahiert. Dementsprechend
+   funktioniert es auch nicht, hier eine Query- oder Setmethode von aussen
+   drauf zu legen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail()
+   Loeschen:  RemoveDetail()
+   Daten:     P_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail()
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/props/P_SPECIAL_EXITS b/doc/props/P_SPECIAL_EXITS
index 4672024..3f2a7a5 100644
--- a/doc/props/P_SPECIAL_EXITS
+++ b/doc/props/P_SPECIAL_EXITS
@@ -1,28 +1,51 @@
-NAME:
-    P_SPECIAL_EXITS               "special_exits"               
 
-DEFINIERT IN:
-    /sys/properties.h
+P_SPECIAL_EXITS
+***************
 
-BESCHREIBUNG:
-    Enthaelt ein Mapping (der Breite 2) mit den Ausgaengen, der Funktion,
-    die jeweils gerufen wird, wenn der Ausgang benutztwird und einer
-    Bewegungsmeldung.
-    
-    Die Bewegungsmeldung wird bei SpecialExits nicht ausgewertet, sondern
-    ist nur aufgrund der gemeinsamen Datenstruktur vorhanden. Im Normalfall
-    ist sie 0.
 
-BEMERKUNG:
-    Keine echte Property, wird bei der Abfrage aus P_EXITS erstellt.
-    
-    Zugriff nur mit den dafuer vorgesehenen Funktionen, nicht aendern!
+NAME
+====
 
-SIEHE AUCH:
-     AddExit(), AddSpecialExit(), GetExits(),
-     RemoveExit(), RemoveSpecialExit(),
-     GuardExit(),
-     H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
-     ausgaenge
+   P_SPECIAL_EXITS               "special_exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt ein Mapping (der Breite 2) mit den Ausgaengen, der Funktion,
+   die jeweils gerufen wird, wenn der Ausgang benutztwird und einer
+   Bewegungsmeldung.
+
+
+
+   Die Bewegungsmeldung wird bei SpecialExits nicht ausgewertet, sondern
+   ist nur aufgrund der gemeinsamen Datenstruktur vorhanden. Im Normalfall
+   ist sie 0.
+
+
+BEMERKUNG
+=========
+
+   Keine echte Property, wird bei der Abfrage aus P_EXITS erstellt.
+
+
+
+   Zugriff nur mit den dafuer vorgesehenen Funktionen, nicht aendern!
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
 
 Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/props/P_SPELLRATE b/doc/props/P_SPELLRATE
index 1672a33..1a3e5a2 100644
--- a/doc/props/P_SPELLRATE
+++ b/doc/props/P_SPELLRATE
@@ -1,8 +1,21 @@
-NAME:
-    P_SPELLRATE                   "spellrate"                   
 
-DEFINIERT IN:
-    /sys/properties.h
+P_SPELLRATE
+***********
 
-BESCHREIBUNG:
-     NPC-Spellrate (in %)
+
+NAME
+====
+
+   P_SPELLRATE                   "spellrate"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   NPC-Spellrate (in %)
diff --git a/doc/props/P_SPELLS b/doc/props/P_SPELLS
index 17112fb..647daf4 100644
--- a/doc/props/P_SPELLS
+++ b/doc/props/P_SPELLS
@@ -1,8 +1,21 @@
-NAME:
-    P_SPELLS                      "spells"                      
 
-DEFINIERT IN:
-    /sys/properties.h
+P_SPELLS
+********
 
-BESCHREIBUNG:
-     NPC-Spells
+
+NAME
+====
+
+   P_SPELLS                      "spells"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   NPC-Spells
diff --git a/doc/props/P_SP_DELAY b/doc/props/P_SP_DELAY
index 84f6372..aa74360 100644
--- a/doc/props/P_SP_DELAY
+++ b/doc/props/P_SP_DELAY
@@ -1,10 +1,23 @@
-NAME:
-    P_SP_DELAY                 "sp_delay"                     
 
-DEFINIERT IN:
-    /sys/living/life.h
+P_SP_DELAY
+**********
 
-BESCHREIBUNG:
-     Anzahl der heart_beats, bis die Magiepunkte um einen Punkt steigen.
-     Aenderungen dieser Property in Spielern beduerfen der 
-     Genehmigung des EM fuer Balance.
+
+NAME
+====
+
+   P_SP_DELAY                 "sp_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis die Magiepunkte um einen Punkt steigen.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/props/P_START_HOME b/doc/props/P_START_HOME
index 25fff2c..fd80124 100644
--- a/doc/props/P_START_HOME
+++ b/doc/props/P_START_HOME
@@ -1,8 +1,21 @@
-NAME:
-    P_START_HOME                  "start_home"                  
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_START_HOME
+************
 
-BESCHREIBUNG:
-     Raum, in dem der Spieler nach dem Einloggen landen soll
+
+NAME
+====
+
+   P_START_HOME                  "start_home"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Raum, in dem der Spieler nach dem Einloggen landen soll
diff --git a/doc/props/P_STD_OBJECT b/doc/props/P_STD_OBJECT
index 87e21da..7c66296 100644
--- a/doc/props/P_STD_OBJECT
+++ b/doc/props/P_STD_OBJECT
@@ -1,11 +1,24 @@
-NAME:
-    P_STD_OBJECT                  "std_object"                  
 
-DEFINIERT IN:
-    /sys/v_compiler.h
+P_STD_OBJECT
+************
 
-BESCHREIBUNG:
-   Enthaelt den Namen eines Files welches als Standard-Objekt fuer den 
+
+NAME
+====
+
+   P_STD_OBJECT                  "std_object"
+
+
+DEFINIERT IN
+============
+
+   /sys/v_compiler.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt den Namen eines Files welches als Standard-Objekt fuer den
    Virtual Compiler gelten soll.
 
    In diesem File werden das generelle Aussehen, Ausgaenge, Funktionen
@@ -13,14 +26,19 @@
 
    Dieses File ist ein 'normales' .c - File, welches geclont wird und
    anschliessend umbenannt wird.
-   
+
+
+
    Ganz wichtig: Falls euer Standardobjekt (direkt oder indirekt) von
    /std/room.c erbt, solltet ihr darauf achten, dass euer Objekt ausser dem
-   create() noch eine weitere (beliebige) Funktion hat.  
+   create() noch eine weitere (beliebige) Funktion hat.
    Ansonsten wuerde das Programm eures Standardobjekts automatisch durch
    /std/room.c ersetzt, was in der Regel zu schwer zu findenen Bugs fuehrt.
 
-BEISPIEL:
+
+BEISPIEL
+========
+
    (create eines VCs)
    protected void create() {
      ...
@@ -29,10 +47,13 @@
    }
 
    Was in diesem std_raum.c nun steht, wird in jedem VC-Clone
-   verfuegbar. Sei es Details, Gerueche, auch Objekte die per 
+   verfuegbar. Sei es Details, Gerueche, auch Objekte die per
    AddItem eingebunden sind, ...
 
-SIEHE AUCH:
+
+SIEHE AUCH
+==========
+
    P_COMPILER_PATH, virtual_compiler
------------------------------------------------------------------------
+
 Letzte Aenderung: 22.10.07 von Zesstra
diff --git a/doc/props/P_STORE_CONSUME b/doc/props/P_STORE_CONSUME
index 7b65641..8a9afd9 100644
--- a/doc/props/P_STORE_CONSUME
+++ b/doc/props/P_STORE_CONSUME
@@ -1,51 +1,69 @@
-NAME:
-	P_STORE_CONSUME			"store_consume"
 
-DEFINIERT IN:
-	/sys/bank.h
+P_STORE_CONSUME
+***************
 
-BESCHREIBUNG:
-	Diese Property ist entscheidend dafuer, wieviel Prozent an Objekten
-	bei jedem Reset in einem Lager eines Ladens vernichtet werden. Dies
-	geschieht aus Speicher- und Laggruenden. Es verbleibt dabei jedoch
-	eine Grundmenge an Objekten, deren Anzahl in der Property
-	P_MIN_STOCK festgehalten ist. Standardwert fuer P_STORE_CONSUME ist
-	hierbei 30%, aber in oft benutzten Laeden kann man dort ruhig einen
-	hoeheren Wert eintragen. Erlaubt sind Werte zwischen 0% und 100%.
-	Aufgeraeumt werden jedoch keine Objekte, die mittels AddItem() im
-	Lager eingebunden wurden. Mittels der Ladenfunktion AddFixedObject()
-	als staendig verfuegbar markierte Objekte werden natuerlich auch
-	nicht beruecksichtigt.
-	Beide hier erwaehnten Properties sollten ueberigens nur mittels
-	QueryProp/SetProp ausgelesen bzw. veraendert werden.
 
-BEISPIEL:
-	Ein eigener haeufig benutzter Laden koennte ein Lager in folgender
-	Form erhalten:
-	  // myStore
-	  #include <bank.h>
-	  inherit "std/store";
-	  void create()
-	  { ::create();
-	    SetProp(P_STORE_CONSUME,90);
-	    // keine weiteren Beschreibungen, Spieler sollen da drin
-	    // schliesslich nicht rumwuseln
-	  }
-	Um das Lager dem Laden zuzuweisen, nutzt man folgendes:
-	  // myShop
-	  inherit "std/laden";
-	  void create()
-	  { ::create();
-	    SetStorageRoom("pfad/myStore");
-	    // Beschreibungen folgen
-	    ...
-	  }
-	Es werden hierbei waehrend jedes Lager-Resets 90% der im Lager
-	befindlichen Objekte vernichtet.
+NAME
+====
 
-SIEHE AUCH:
-	P_MIN_STOCK, SetStorageRoom(), /std/store.c, /std/shop.c
-	AddItem(), RemoveItem(), AddFixedObject(), RemoveFixedObject()
+   P_STORE_CONSUME                 "store_consume"
 
-----------------------------------------------------------------------------
-Last modified: 19-Jun-2015, Arathorn 
+
+DEFINIERT IN
+============
+
+   /sys/bank.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property ist entscheidend dafuer, wieviel Prozent an Objekten
+   bei jedem Reset in einem Lager eines Ladens vernichtet werden. Dies
+   geschieht aus Speicher- und Laggruenden. Es verbleibt dabei jedoch
+   eine Grundmenge an Objekten, deren Anzahl in der Property
+   P_MIN_STOCK festgehalten ist. Standardwert fuer P_STORE_CONSUME ist
+   hierbei 30%, aber in oft benutzten Laeden kann man dort ruhig einen
+   hoeheren Wert eintragen. Erlaubt sind Werte zwischen 0% und 100%.
+   Aufgeraeumt werden jedoch keine Objekte, die mittels AddItem() im
+   Lager eingebunden wurden. Mittels der Ladenfunktion AddFixedObject()
+   als staendig verfuegbar markierte Objekte werden natuerlich auch
+   nicht beruecksichtigt.
+   Beide hier erwaehnten Properties sollten ueberigens nur mittels
+   QueryProp/SetProp ausgelesen bzw. veraendert werden.
+
+
+BEISPIEL
+========
+
+   Ein eigener haeufig benutzter Laden koennte ein Lager in folgender
+   Form erhalten:
+     // myStore
+     #include <bank.h>
+     inherit "std/store";
+     void create()
+     { ::create();
+       SetProp(P_STORE_CONSUME,90);
+       // keine weiteren Beschreibungen, Spieler sollen da drin
+       // schliesslich nicht rumwuseln
+     }
+   Um das Lager dem Laden zuzuweisen, nutzt man folgendes:
+     // myShop
+     inherit "std/laden";
+     void create()
+     { ::create();
+       SetStorageRoom("pfad/myStore");
+       // Beschreibungen folgen
+       ...
+     }
+   Es werden hierbei waehrend jedes Lager-Resets 90% der im Lager
+   befindlichen Objekte vernichtet.
+
+
+SIEHE AUCH
+==========
+
+   P_MIN_STOCK, SetStorageRoom(), /std/store.c, /std/shop.c
+   AddItem(), RemoveItem(), AddFixedObject(), RemoveFixedObject()
+
+Last modified: 19-Jun-2015, Arathorn
diff --git a/doc/props/P_STRETCH_TIME b/doc/props/P_STRETCH_TIME
index dfef4f1..1b38b7e 100644
--- a/doc/props/P_STRETCH_TIME
+++ b/doc/props/P_STRETCH_TIME
@@ -1,20 +1,34 @@
+
 P_STRETCH_TIME
+**************
 
-NAME:
-    P_STRETCH_TIME     "stretch_time"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Enthaelt die Zeit in Runden (2s), die man braucht, um eine Fernwaffe zu
-    spannen/benutzen. Zaehlt seit dem letzten Schuss oder der Zeit des
-    Zueckens (P_EQUIP_TIME).
+   P_STRETCH_TIME     "stretch_time"
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
-    Sonstiges: fernwaffen
 
-29.Jul 2014 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die Zeit in Runden (2s), die man braucht, um eine Fernwaffe zu
+   spannen/benutzen. Zaehlt seit dem letzten Schuss oder der Zeit des
+   Zueckens (P_EQUIP_TIME).
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/props/P_SUBGUILD_TITLE b/doc/props/P_SUBGUILD_TITLE
index 58a59d5..83515d7 100644
--- a/doc/props/P_SUBGUILD_TITLE
+++ b/doc/props/P_SUBGUILD_TITLE
@@ -1,20 +1,38 @@
+
 P_SUBGUILD_TITLE
-NAME:
-     P_SUBGUILD_TITLE		"subguild_title"                       
+****************
 
-DEFINIERT IN:
-     /sys/new_skills.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt eventuelle Zusatztitel eines Spielers, den er
-     innerhalb einer Gilde traegt. Das kann z.B. ein Clan sein, ein Zweig oder
-     einfach nur der Gildenrang.
+NAME
+====
 
-BEMERKUNGEN:
-     Inhalt der Property kann 0 sein oder ein String.  Ein Zusatztitel kann
-     mittels P_VISIBLE_SUBGUILD_TITLE vorgetaeuscht werden.
+   P_SUBGUILD_TITLE           "subguild_title"
 
-SIEHE AUCH:
-     P_GUILD_TITLE, P_VISIBLE_SUBGUILD_TITLE
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eventuelle Zusatztitel eines Spielers, den er
+   innerhalb einer Gilde traegt. Das kann z.B. ein Clan sein, ein Zweig oder
+   einfach nur der Gildenrang.
+
+
+BEMERKUNGEN
+===========
+
+   Inhalt der Property kann 0 sein oder ein String.  Ein Zusatztitel kann
+   mittels P_VISIBLE_SUBGUILD_TITLE vorgetaeuscht werden.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD_TITLE, P_VISIBLE_SUBGUILD_TITLE
 
 26. Maerz 2004 Gloinson
diff --git a/doc/props/P_SYNTAX_HELP b/doc/props/P_SYNTAX_HELP
index 13344f1..a796fb5 100644
--- a/doc/props/P_SYNTAX_HELP
+++ b/doc/props/P_SYNTAX_HELP
@@ -1,44 +1,62 @@
-NAME:
-    P_SYNTAX_HELP              "lib_p_syntax_help"
 
-DEFINIERT IN:
-    /sys/thing/commands.h
+P_SYNTAX_HELP
+*************
 
-BESCHREIBUNG:
-    In dieser Property kann man fuer Spieler eine ausfuehrliche Syntaxhilfe zu
-    den Kommandos eines Objektes ablegen. Diese wird angezeigt, wenn der
-    Spieler das Kommando "synxtaxhilfe <objekt>" eingibt.
-    Die Property kann verschiedene Datenstrukturen enthalten:
 
-    1) ein String
-    Der String wird angezeigt, hierbei ggf. umgebrochen, vorhandene
-    Zeilenumbrueche werden beibehalten.
+NAME
+====
 
-    2) ein Array: ({hilfetext, bedingungen})
+   P_SYNTAX_HELP              "lib_p_syntax_help"
 
-    <hilfetext>:
-      * ein string:
-        Der String wird angezeigt, hierbei ggf. umgebrochen, vorhandene
-        Zeilenumbrueche werden beibehalten.
-      * eine lfun-closure:
-        Diese erhaelt beim Aufruf das betreffende Objekt als Argument.
-        Wenn diese dann einen String zurueckliefert, wird dieser dem Spieler
-        angezeigt. Hierbei wird ggf. umgebrochen, vorhandene Zeilenumbrueche
-        werden beibehalten.
 
-    <bedingungen>, welche erfuellt sein muessen, damit dem Spieler die Hilfe
-    angezeigt wird. Die Bedingungen sind entweder:
-      * ein Mapping fuer check_restriction()
-      * eine lfun-closure
-        Diese erhaelt beim Aufruf das betreffende Objekt als Argument und darf
-        eine 0 fuer 'erlaubt', 1 fuer 'nicht erlaubt (mit Standardtext)' oder
-        einen string fuer 'nicht erlaubt mit individuellem Text' sein.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    Hat ein Objekt keine Syntaxhilfe, wird das Kommando "syntaxhilfe" aus dem
-    Objekt wieder entfernt (d.h. die Property muss gesetzt sein, bevor der
-    erste Spieler das Kommando eingibt).
+   /sys/thing/commands.h
 
-SIEHE AUCH:
-    AddCmd
 
+BESCHREIBUNG
+============
+
+   In dieser Property kann man fuer Spieler eine ausfuehrliche Syntaxhilfe zu
+   den Kommandos eines Objektes ablegen. Diese wird angezeigt, wenn der
+   Spieler das Kommando "synxtaxhilfe <objekt>" eingibt.
+   Die Property kann verschiedene Datenstrukturen enthalten:
+
+   1) ein String
+   Der String wird angezeigt, hierbei ggf. umgebrochen, vorhandene
+   Zeilenumbrueche werden beibehalten.
+
+   2) ein Array: ({hilfetext, bedingungen})
+
+   <hilfetext>:
+     * ein string:
+       Der String wird angezeigt, hierbei ggf. umgebrochen, vorhandene
+       Zeilenumbrueche werden beibehalten.
+     * eine lfun-closure:
+       Diese erhaelt beim Aufruf das betreffende Objekt als Argument.
+       Wenn diese dann einen String zurueckliefert, wird dieser dem Spieler
+       angezeigt. Hierbei wird ggf. umgebrochen, vorhandene Zeilenumbrueche
+       werden beibehalten.
+
+   <bedingungen>, welche erfuellt sein muessen, damit dem Spieler die Hilfe
+   angezeigt wird. Die Bedingungen sind entweder:
+     * ein Mapping fuer check_restriction()
+     * eine lfun-closure
+       Diese erhaelt beim Aufruf das betreffende Objekt als Argument und darf
+       eine 0 fuer 'erlaubt', 1 fuer 'nicht erlaubt (mit Standardtext)' oder
+       einen string fuer 'nicht erlaubt mit individuellem Text' sein.
+
+
+BEMERKUNGEN
+===========
+
+   Hat ein Objekt keine Syntaxhilfe, wird das Kommando "syntaxhilfe" aus dem
+   Objekt wieder entfernt (d.h. die Property muss gesetzt sein, bevor der
+   erste Spieler das Kommando eingibt).
+
+
+SIEHE AUCH
+==========
+
+   AddCmd
diff --git a/doc/props/P_TARGET_AREA b/doc/props/P_TARGET_AREA
index 9d2cec9..614320f 100644
--- a/doc/props/P_TARGET_AREA
+++ b/doc/props/P_TARGET_AREA
@@ -1,75 +1,95 @@
+
 P_TARGET_AREA
+*************
 
-NAME:
-    P_TARGET_AREA     "target_area"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Kann in einem Raum gesetzt werden, um einen anderen, von dort aus mit
-    Fernkampfwaffen beschiessbaren Raum als Objekt oder Objektnamen (zu
-    einem geladenen Objekt) festzulegen.
+   P_TARGET_AREA     "target_area"
 
-BEMERKUNGEN:
-    Ein Schuetze kann nur in den anderen Raum schiessen, wenn die P_RANGE
-    seiner Waffe mindest gleich der P_SHOOTING_AREA des Raums (nicht des
-    Zielraums) ist.
 
-    Idealerweise sollte in mit P_TARGET_AREA angegebenen Raeumen auch
-    P_NEVER_CLEAN gesetzt sein.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    // #1 Ein Baum-Raum (/std/room)
-    void create() {
-      ::create();
-      SetProp(P_INT_SHORT, "Auf einem Baum");
-      SetProp(P_INT_LONG, break_string("Du hockst auf einem Baum und kannst "
-        "auf die Lichtung unter Dir sehen.\n");
+   <combat.h>
 
-      AddExit("unten", RAEUME("lichtung"));
 
-      SetProp(P_TARGET_AREA, RAEUME("lichtung"));  // Lichtung beschiessbar
-      SetProp(P_SHOOTING_AREA, 15);                // 15 Entfernung
-    }
+BESCHREIBUNG
+============
 
-    // #2 Ein Elefanten-Transporter (/std/transport)
-    // Er trampelt durch mehrere Raeume durch und der Schuetze kann vom
-    // Ruecken des Elefanten aus auf Gegner draussen schiessen.
-    void create() {
-      ::create();
-      SetProp(P_NAME, "Kampfelefant");
-      AddId(({"elefant", "kampfelefant")});
-      SetProp(P_GENDER, MALE);
-      SetProp(P_SHORT, "Ein Kampfelefant");
-      SetProp(P_INT_SHORT, "Auf einem Kampfelefanten");
-      // P_LONG, P_INT_LONG
+   Kann in einem Raum gesetzt werden, um einen anderen, von dort aus mit
+   Fernkampfwaffen beschiessbaren Raum als Objekt oder Objektnamen (zu
+   einem geladenen Objekt) festzulegen.
 
-      SetProp(P_ENTERCMDS, ({"kletter", "erkletter"}));
-      SetProp(P_LEAVECMDS, ({"verlass", "verlasse"}));
 
-      SetProp(P_ARRIVEMSG, ({"Der Elefant trampelt in einen Raum.\n",
-                             "Ein Kampfelefant trampelt herein.\n"}));
-      SetProp(P_DEPARTMSG, ({"Der Elefant trampelt weiter.\n",
-                             "Der Kampfelefant trampelt weiter.\n"}));
+BEMERKUNGEN
+===========
 
-      SetProp(P_SHOOTING_AREA, 8); // weiter als 8 sollte man schiessen
+   Ein Schuetze kann nur in den anderen Raum schiessen, wenn die P_RANGE
+   seiner Waffe mindest gleich der P_SHOOTING_AREA des Raums (nicht des
+   Zielraums) ist.
 
-      AddRoute(RAEUME("schlachtfeld"), 20+random(10), 6, "Schlachtfeld");
-      AddRoute(RAEUME("burgtor"), 20+random(10), 6, "Burgtor");
-      AddRoute(RAEUME("burghof"), 20+random(10), 6, "Burghof");
-      AddRoute(RAEUME("halle"), 20+random(10), 6, "Halle");
-      AddRoute(RAEUME("bresche"), 20+random(10), 6, "Bresche");
-      // ...
+   Idealerweise sollte in mit P_TARGET_AREA angegebenen Raeumen auch
+   P_NEVER_CLEAN gesetzt sein.
 
-      Start();
-    }
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_SHOOTING_AREA
-    Raeume:    P_NEVER_CLEAN
-    Sonstiges: fernwaffen
+BEISPIELE
+=========
 
-29.Jul 2014 Gloinson
\ No newline at end of file
+   // #1 Ein Baum-Raum (/std/room)
+   void create() {
+     ::create();
+     SetProp(P_INT_SHORT, "Auf einem Baum");
+     SetProp(P_INT_LONG, break_string("Du hockst auf einem Baum und kannst "
+       "auf die Lichtung unter Dir sehen.\n");
+
+     AddExit("unten", RAEUME("lichtung"));
+
+     SetProp(P_TARGET_AREA, RAEUME("lichtung"));  // Lichtung beschiessbar
+     SetProp(P_SHOOTING_AREA, 15);                // 15 Entfernung
+   }
+
+   // #2 Ein Elefanten-Transporter (/std/transport)
+   // Er trampelt durch mehrere Raeume durch und der Schuetze kann vom
+   // Ruecken des Elefanten aus auf Gegner draussen schiessen.
+   void create() {
+     ::create();
+     SetProp(P_NAME, "Kampfelefant");
+     AddId(({"elefant", "kampfelefant")});
+     SetProp(P_GENDER, MALE);
+     SetProp(P_SHORT, "Ein Kampfelefant");
+     SetProp(P_INT_SHORT, "Auf einem Kampfelefanten");
+     // P_LONG, P_INT_LONG
+
+     SetProp(P_ENTERCMDS, ({"kletter", "erkletter"}));
+     SetProp(P_LEAVECMDS, ({"verlass", "verlasse"}));
+
+     SetProp(P_ARRIVEMSG, ({"Der Elefant trampelt in einen Raum.\n",
+                            "Ein Kampfelefant trampelt herein.\n"}));
+     SetProp(P_DEPARTMSG, ({"Der Elefant trampelt weiter.\n",
+                            "Der Kampfelefant trampelt weiter.\n"}));
+
+     SetProp(P_SHOOTING_AREA, 8); // weiter als 8 sollte man schiessen
+
+     AddRoute(RAEUME("schlachtfeld"), 20+random(10), 6, "Schlachtfeld");
+     AddRoute(RAEUME("burgtor"), 20+random(10), 6, "Burgtor");
+     AddRoute(RAEUME("burghof"), 20+random(10), 6, "Burghof");
+     AddRoute(RAEUME("halle"), 20+random(10), 6, "Halle");
+     AddRoute(RAEUME("bresche"), 20+random(10), 6, "Bresche");
+     // ...
+
+     Start();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA
+   Raeume:    P_NEVER_CLEAN
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/props/P_TEAM b/doc/props/P_TEAM
index f03109d..4f853e8 100644
--- a/doc/props/P_TEAM
+++ b/doc/props/P_TEAM
@@ -1,24 +1,39 @@
-NAME:
-	P_TEAM                         "team"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM
+******
 
-BESCHREIBUNG:
-	Liefert das Teamobjekt, falls Spieler in einem Team ist, sonst 0.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
-                    P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM                         "team"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Liefert das Teamobjekt, falls Spieler in einem Team ist, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_ASSOC_MEMBERS b/doc/props/P_TEAM_ASSOC_MEMBERS
index c4f95b8..b57a276 100644
--- a/doc/props/P_TEAM_ASSOC_MEMBERS
+++ b/doc/props/P_TEAM_ASSOC_MEMBERS
@@ -1,30 +1,48 @@
-NAME:
-	P_TEAM_ASSOC_MEMBERS           "team_assoc_members"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_ASSOC_MEMBERS
+********************
 
-BESCHREIBUNG:
-	Array mit den zugeordneten NPCs des Spielers bzw. der Spieler,
-	dem dieser NPC zugeordnet ist.
-	Zugeordnete NPCs sind automatisch im Team des Spielers.
 
-BEMERKUNG:
-	Der Zugriff auf diese Property sollte ueber AssocMember()
-	bzw. DeAssocMember() erfolgen.
+NAME
+====
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
-                    P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+   P_TEAM_ASSOC_MEMBERS           "team_assoc_members"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit den zugeordneten NPCs des Spielers bzw. der Spieler,
+   dem dieser NPC zugeordnet ist.
+   Zugeordnete NPCs sind automatisch im Team des Spielers.
+
+
+BEMERKUNG
+=========
+
+   Der Zugriff auf diese Property sollte ueber AssocMember()
+   bzw. DeAssocMember() erfolgen.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_ATTACK_CMD b/doc/props/P_TEAM_ATTACK_CMD
index 3f77349..b7993e7 100644
--- a/doc/props/P_TEAM_ATTACK_CMD
+++ b/doc/props/P_TEAM_ATTACK_CMD
@@ -1,24 +1,39 @@
-NAME:
-	P_TEAM_ATTACK_CMD              "team_attack_cmd"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_ATTACK_CMD
+*****************
 
-BESCHREIBUNG:
-	Angriffsbefehl des Spielers, nicht setzbar.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_AUTOFOLLOW,
-                    P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM_ATTACK_CMD              "team_attack_cmd"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Angriffsbefehl des Spielers, nicht setzbar.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_AUTOFOLLOW b/doc/props/P_TEAM_AUTOFOLLOW
index 45be50f..0e8c45f 100644
--- a/doc/props/P_TEAM_AUTOFOLLOW
+++ b/doc/props/P_TEAM_AUTOFOLLOW
@@ -1,24 +1,39 @@
-NAME:
-	P_TEAM_AUTOFOLLOW              "team_autofollow"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_AUTOFOLLOW
+*****************
 
-BESCHREIBUNG:
-	Folgewunsch des Spielers, nicht setzbar.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM_AUTOFOLLOW              "team_autofollow"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Folgewunsch des Spielers, nicht setzbar.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_COLORS b/doc/props/P_TEAM_COLORS
index d23815d..a855035 100644
--- a/doc/props/P_TEAM_COLORS
+++ b/doc/props/P_TEAM_COLORS
@@ -1,25 +1,40 @@
-NAME:
-	P_TEAM_COLORS                  "team_colors"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_COLORS
+*************
 
-BESCHREIBUNG:
-	Grenzwerte fuer farbige Anzeige im Teaminfo.
-	Array mit 4 Werten: ({ lp_rot, lp_gelb, sp_rot, sp_gelb })
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM_COLORS                  "team_colors"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Grenzwerte fuer farbige Anzeige im Teaminfo.
+   Array mit 4 Werten: ({ lp_rot, lp_gelb, sp_rot, sp_gelb })
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_LEADER b/doc/props/P_TEAM_LEADER
index a123c37..b4927f3 100644
--- a/doc/props/P_TEAM_LEADER
+++ b/doc/props/P_TEAM_LEADER
@@ -1,24 +1,39 @@
-NAME:
-	P_TEAM_LEADER                  "team_leader"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_LEADER
+*************
 
-BESCHREIBUNG:
-	Liefert das Teamobjekt, falls Spieler Anfuehrer eines Teams ist.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM_LEADER                  "team_leader"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Liefert das Teamobjekt, falls Spieler Anfuehrer eines Teams ist.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_NEWMEMBER b/doc/props/P_TEAM_NEWMEMBER
index f506c5b..da89b70 100644
--- a/doc/props/P_TEAM_NEWMEMBER
+++ b/doc/props/P_TEAM_NEWMEMBER
@@ -1,25 +1,40 @@
-NAME:
-	P_TEAM_NEWMEMBER               "potential_team_member"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_NEWMEMBER
+****************
 
-BESCHREIBUNG:
-	Enthaelt das Objekt des Teamleaders, sobald ein Spieler um
-	Teamaufnahme gebeten hat, sonst 0.
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM_NEWMEMBER               "potential_team_member"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt das Objekt des Teamleaders, sobald ein Spieler um
+   Teamaufnahme gebeten hat, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_WANTED_ROW b/doc/props/P_TEAM_WANTED_ROW
index 7cd3c36..ba94af4 100644
--- a/doc/props/P_TEAM_WANTED_ROW
+++ b/doc/props/P_TEAM_WANTED_ROW
@@ -1,24 +1,39 @@
-NAME:
-	P_TEAM_WANTED_ROW              "team_wanted_row"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_WANTED_ROW
+*****************
 
-BESCHREIBUNG:
-	Gewuenschte Reihe des Spielers (von 1 bis MAX_TEAMROWS)
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
-                    P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_TEAM_WANTED_ROW              "team_wanted_row"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Gewuenschte Reihe des Spielers (von 1 bis MAX_TEAMROWS)
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TEAM_WIMPY_ROW b/doc/props/P_TEAM_WIMPY_ROW
index a832255..90bfacb 100644
--- a/doc/props/P_TEAM_WIMPY_ROW
+++ b/doc/props/P_TEAM_WIMPY_ROW
@@ -1,28 +1,46 @@
-NAME:
-	P_TEAM_WIMPY_ROW               "team_wimpy_row"
 
-DEFINIERT IN:
-	/sys/living/team.h
+P_TEAM_WIMPY_ROW
+****************
 
-BESCHREIBUNG:
-	Fluchtreihe des Spielers, von 1 bis MAX_TEAMROWS.
 
-BEMERKUNG:
-	Wenn die Fluchtreihe <=1 ist, ist die Flucht in eine hintere Reihe
-	deaktiviert.
+NAME
+====
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
-                    P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
-                    P_TEAM_WANTED_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+   P_TEAM_WIMPY_ROW               "team_wimpy_row"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Fluchtreihe des Spielers, von 1 bis MAX_TEAMROWS.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Fluchtreihe <=1 ist, ist die Flucht in eine hintere Reihe
+   deaktiviert.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 16-08-2010, Gabylon
diff --git a/doc/props/P_TELNET_RTTIME b/doc/props/P_TELNET_RTTIME
index fc30011..b781bea 100644
--- a/doc/props/P_TELNET_RTTIME
+++ b/doc/props/P_TELNET_RTTIME
@@ -1,25 +1,43 @@
-NAME:
-    P_TELNET_RTTIME                                  "p_lib_telnet_rttime"
 
-DEFINIERT IN:
-    /secure/telnetneg.h
+P_TELNET_RTTIME
+***************
 
-BESCHREIBUNG:
-    In dieser Properties steht die letzte gemessene 'round-trip' Zeit
-    (in Mikrosekunden) einer 'Telnet timing mark' vom MUD zum Client und
-    zurueck.
 
-    Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
-    Telnetnegotiations unterstuetzt und 'telnet keepalive' eingeschaltet
-    ist, ansonsten bleibt diese Property 0.
-    Die meisten Telnets/Clients antworten zumindest eine Ablehnung auf
-    die 'timing marks', so dass trotzdem eine Zeit bestimmt werden kann.
+NAME
+====
 
-    Die Prop kann nicht gesetzt werden bzw. es hat keinen Effekt.
+   P_TELNET_RTTIME                                  "p_lib_telnet_rttime"
 
-SIEHE AUCH:
-    P_TTY_COLS, P_TTY_ROWS, P_TTY_SHOW, P_TTY, P_TTY_TYPE
 
-LETZTE AeNDERUNG:
-    03.02.2013, Zesstra
+DEFINIERT IN
+============
 
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht die letzte gemessene 'round-trip' Zeit
+   (in Mikrosekunden) einer 'Telnet timing mark' vom MUD zum Client und
+   zurueck.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt und 'telnet keepalive' eingeschaltet
+   ist, ansonsten bleibt diese Property 0.
+   Die meisten Telnets/Clients antworten zumindest eine Ablehnung auf
+   die 'timing marks', so dass trotzdem eine Zeit bestimmt werden kann.
+
+   Die Prop kann nicht gesetzt werden bzw. es hat keinen Effekt.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_COLS, P_TTY_ROWS, P_TTY_SHOW, P_TTY, P_TTY_TYPE
+
+
+LETZTE AeNDERUNG
+================
+
+   03.02.2013, Zesstra
diff --git a/doc/props/P_TESTPLAYER b/doc/props/P_TESTPLAYER
index 6f64ade..bf0c765 100644
--- a/doc/props/P_TESTPLAYER
+++ b/doc/props/P_TESTPLAYER
@@ -1,29 +1,48 @@
-NAME:
-    P_TESTPLAYER                  "testplayer"                  
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_TESTPLAYER
+************
 
-BESCHREIBUNG:
-     Gesetzt, wenn der Spieler ein Testspieler ist. Enthaelt die UID des
-     Magiers, dem dieser Testie (momentan) gehoert.
-     
-     Bei Testspielern duerfen Skills geaendert werden, sie duerfen gezappt
-     werden und - ihre eigentliche Aufgabe - nicht angeschlossene Gebiete
-     testen.
 
-     AUSNAHMEN: Gildentesties duerfen nur sehr eingeschraenkt manipuliert
-                werden werden, da sie im ganzen Mud rumlaufen koennen,
-                Spielerkontakt haben und nach Abschluss der Tests ggf. sogar
-                die Testiemarkierung entfernt werden kann.
-                
-     Fuer Spielertesties, die von einem Spieler kontrolliert werden, gelten
-     teilweise besondere Regeln, s. 'spielertesties'.
+NAME
+====
 
-BEMERKUNGEN: 
-     P_TESTPLAYER kann nur per SetProp() gesetzt werden und das auch nur ein
-     Mal! Geloescht werden kann das Flag nur von EM+.
+   P_TESTPLAYER                  "testplayer"
 
-ZULETZT GEAeNDERT:
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Spieler ein Testspieler ist. Enthaelt die UID des
+   Magiers, dem dieser Testie (momentan) gehoert.
+
+
+
+   Bei Testspielern duerfen Skills geaendert werden, sie duerfen gezappt
+   werden und - ihre eigentliche Aufgabe - nicht angeschlossene Gebiete
+   testen.
+
+   AUSNAHMEN: Gildentesties duerfen nur sehr eingeschraenkt manipuliert
+              werden werden, da sie im ganzen Mud rumlaufen koennen,
+              Spielerkontakt haben und nach Abschluss der Tests ggf. sogar
+              die Testiemarkierung entfernt werden kann.
+
+
+
+   Fuer Spielertesties, die von einem Spieler kontrolliert werden, gelten
+   teilweise besondere Regeln, s. 'spielertesties'.
+
+BEMERKUNGEN:
+   P_TESTPLAYER kann nur per SetProp() gesetzt werden und das auch nur
+   ein Mal! Geloescht werden kann das Flag nur von EM+.
+
+
+ZULETZT GEAeNDERT
+=================
+
 05.01.2010, Zesstra
-
diff --git a/doc/props/P_TIMED_ATTR_MOD b/doc/props/P_TIMED_ATTR_MOD
index 1175c50..fa7db3f 100644
--- a/doc/props/P_TIMED_ATTR_MOD
+++ b/doc/props/P_TIMED_ATTR_MOD
@@ -1,59 +1,78 @@
-NAME:
-    P_TIMED_ATTR_MOD         "timed_attr_mod"
 
-DEFINIERT IN:
-    /sys/living/attributes.h
+P_TIMED_ATTR_MOD
+****************
 
-BESCHREIBUNG:
-    In dieser Property werden Attribut-Modifikatoren gespeichert, die
-    nicht ueber laengere Zeit wirksam sein sollen.
-    Die Wirksamkeit der Modifikatoren kann an Zeit und Objekte
-    gebunden werden.
 
-    Intern werden die Modifikatoren in einer Datenstruktur der Form
+NAME
+====
 
-    ({
-       ({ Ablaufzeiten }),
-       ([ Key : Ablaufobjekt ]),
-       ([ Key : ([ Mapping mit den Modifikatoren ]);
-         Ablaufzeit ; Ablaufobjekt ; Nachrichtenempfaenger
-       ])
-    })
+   P_TIMED_ATTR_MOD         "timed_attr_mod"
 
-    gespeichert mit:
-    * Ablaufzeiten:  Zeit in Sekunden seit 1. Jan 1970, 0.0:0 GMT
-    * Ablaufobjekte: Objekte, an deren Existenz die Attribut-
-                     veraenderungen gebunden sind
-    * Nachrichtenempfaenger:
-      Objekte/Klassen, welche ueber abgelaufene Attributveraenderung
-      durch den Aufruf von "NotifyTimedAttrModExpired" (mit key als
-      Argument) benachrichtigt werden.
 
-    Das Setzen der Werte erfolgt NUR ueber die Methoden SetTimedAttrModifier
-    und DeleteTimedAttrModifier.
+DEFINIERT IN
+============
 
-    Die Daten zu einem Key koennen ueber QueryTimedAttrModifier abgefragt
-    werden. Die Abfrage mittels QueryProp liefert eine Kopie der gueltigen
-    Datenstruktur, die per Query nicht (siehe Bemerkungen).
+   /sys/living/attributes.h
 
-    Die Bedingungen fuer die ueber P_TIMED_ATTR_MOD gesetzten
-    Attributveraenderungen werden im Heartbeat in der Funktion
-    attribute_hb ueberprueft. Eine verminderte Funktionalitaet im
-    Falle von Magiern ist somit kein Fehlerfall.
 
-BEMERKUNGEN:
-    Keine echte Property. Die Methode _query_timed_attr_mod() in
-    /std/living/attributes.c stellt die Daten zusammen.
+BESCHREIBUNG
+============
 
-    ACHTUNG: Bitte nur die bereitgestellten Methoden zur Manipulation
-             benutzen! Setzen als Property hat keinen Effekt.
+   In dieser Property werden Attribut-Modifikatoren gespeichert, die
+   nicht ueber laengere Zeit wirksam sein sollen.
+   Die Wirksamkeit der Modifikatoren kann an Zeit und Objekte
+   gebunden werden.
 
-SIEHE AUCH:
-    QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-    SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-    SetTimedAttrModifier(), QueryTimedAttrModifier(),
-    DeleteTimedAttrModifier(),
-    P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
-    P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
-----------------------------------------------------------------------------
+   Intern werden die Modifikatoren in einer Datenstruktur der Form
+
+   ({
+      ({ Ablaufzeiten }),
+      ([ Key : Ablaufobjekt ]),
+      ([ Key : ([ Mapping mit den Modifikatoren ]);
+        Ablaufzeit ; Ablaufobjekt ; Nachrichtenempfaenger
+      ])
+   })
+
+   gespeichert mit:
+   * Ablaufzeiten:  Zeit in Sekunden seit 1. Jan 1970, 0.0:0 GMT
+   * Ablaufobjekte: Objekte, an deren Existenz die Attribut-
+                    veraenderungen gebunden sind
+   * Nachrichtenempfaenger:
+     Objekte/Klassen, welche ueber abgelaufene Attributveraenderung
+     durch den Aufruf von "NotifyTimedAttrModExpired" (mit key als
+     Argument) benachrichtigt werden.
+
+   Das Setzen der Werte erfolgt NUR ueber die Methoden SetTimedAttrModifier
+   und DeleteTimedAttrModifier.
+
+   Die Daten zu einem Key koennen ueber QueryTimedAttrModifier abgefragt
+   werden. Die Abfrage mittels QueryProp liefert eine Kopie der gueltigen
+   Datenstruktur, die per Query nicht (siehe Bemerkungen).
+
+   Die Bedingungen fuer die ueber P_TIMED_ATTR_MOD gesetzten
+   Attributveraenderungen werden im Heartbeat in der Funktion
+   attribute_hb ueberprueft. Eine verminderte Funktionalitaet im
+   Falle von Magiern ist somit kein Fehlerfall.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property. Die Methode _query_timed_attr_mod() in
+   /std/living/attributes.c stellt die Daten zusammen.
+
+   ACHTUNG: Bitte nur die bereitgestellten Methoden zur Manipulation
+            benutzen! Setzen als Property hat keinen Effekt.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
 Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/props/P_TIMEZONE b/doc/props/P_TIMEZONE
index 8243d07..7e4ce7d 100644
--- a/doc/props/P_TIMEZONE
+++ b/doc/props/P_TIMEZONE
@@ -1,10 +1,23 @@
-NAME:
-    P_TIMEZONE                 "timezone"
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_TIMEZONE
+**********
 
-BESCHREIBUNG:
-     Ein Integer-Wert, der bei der Uhrzeitmeldung und beim Befehl
-     "(uhr)zeit" beruecksichtig wird. Gibt die Anzahl der Stunden
-     Zeitabweichung von Berliner Zeit an.
+
+NAME
+====
+
+   P_TIMEZONE                 "timezone"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Integer-Wert, der bei der Uhrzeitmeldung und beim Befehl
+   "(uhr)zeit" beruecksichtig wird. Gibt die Anzahl der Stunden
+   Zeitabweichung von Berliner Zeit an.
diff --git a/doc/props/P_TITLE b/doc/props/P_TITLE
index 49afd57..555e26a 100644
--- a/doc/props/P_TITLE
+++ b/doc/props/P_TITLE
@@ -1,8 +1,21 @@
-NAME:
-    P_TITLE                       "title"                       
 
-DEFINIERT IN:
-    /sys/player/description.h
+P_TITLE
+*******
 
-BESCHREIBUNG:
-     Titel des Spielers. Erscheint hinter dem Namen in Kurz/Langbeschreibung.
+
+NAME
+====
+
+   P_TITLE                       "title"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Titel des Spielers. Erscheint hinter dem Namen in Kurz/Langbeschreibung.
diff --git a/doc/props/P_TOO_HEAVY_MSG b/doc/props/P_TOO_HEAVY_MSG
index 27ef315..c2a40ea 100644
--- a/doc/props/P_TOO_HEAVY_MSG
+++ b/doc/props/P_TOO_HEAVY_MSG
@@ -1,31 +1,50 @@
-NAME:
-    P_TOO_HEAVY_MSG                      "too_heavy_msg"                      
 
-DEFINIERT IN:
-    /sys/thing/moving.h
+P_TOO_HEAVY_MSG
+***************
 
-BESCHREIBUNG:
-     Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
-     versucht, ein Objekt in einen Behaelter zu legen, fuer den dieses Objekt
-     zu schwer ist.
-     Die Property ist im Behaelter zu setzen.
-     Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
-     so wird die Standardmeldung ausgegeben.
-     ("<Objekt> passt in <Behaelter> nicht mehr rein.")
-     Der String in der Property wird noch durch replace_personal()
-     verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
-     zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
-     umgebrochen.
-     Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
-     ganz.
 
-BEISPIELE:
-     SetProp(P_TOO_HEAVY_MSG, "Wenn du @WEN1 noch in den Beutel stecken"
-			      " wuerdest, wuerde er reissen.");
+NAME
+====
 
-SIEHE AUCH:
-     Aehnliches: P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG, P_NOINSERT_MSG,
-                 P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+   P_TOO_HEAVY_MSG                      "too_heavy_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
+   versucht, ein Objekt in einen Behaelter zu legen, fuer den dieses Objekt
+   zu schwer ist.
+   Die Property ist im Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("<Objekt> passt in <Behaelter> nicht mehr rein.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
+   zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_TOO_HEAVY_MSG, "Wenn du @WEN1 noch in den Beutel stecken"
+                            " wuerdest, wuerde er reissen.");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG, P_NOINSERT_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/props/P_TOO_MANY_MSG b/doc/props/P_TOO_MANY_MSG
index e23ce32..fd1ffe9 100644
--- a/doc/props/P_TOO_MANY_MSG
+++ b/doc/props/P_TOO_MANY_MSG
@@ -1,31 +1,50 @@
-NAME:
-    P_TOO_MANY_MSG                      "too_many_msg"                      
 
-DEFINIERT IN:
-    /sys/thing/moving.h
+P_TOO_MANY_MSG
+**************
 
-BESCHREIBUNG:
-     Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
-     versucht, ein Objekt in einen Behaelter zu legen, der schon die maximale
-     Anzahl an Objekten enthaelt.
-     Die Property ist im Behaelter zu setzen.
-     Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
-     so wird die Standardmeldung ausgegeben.
-     ("Dafuer ist nicht mehr genug Platz in <Behaelter>.")
-     Der String in der Property wird noch durch replace_personal()
-     verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
-     zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
-     umgebrochen.
-     Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
-     ganz.
 
-BEISPIELE:
-     SetProp(P_TOO_MANY_MSG, "Aber der Korb hat doch nur drei Faecher, die"
-			     " sind alle schon voll.");
+NAME
+====
 
-SIEHE AUCH:
-     Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOINSERT_MSG,
-                 P_NOLEAVE_MSG, P_NODROP, P_NOGET 
-     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
-                 P_WEAR_MSG, P_WIELD_MSG
-     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+   P_TOO_MANY_MSG                      "too_many_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
+   versucht, ein Objekt in einen Behaelter zu legen, der schon die maximale
+   Anzahl an Objekten enthaelt.
+   Die Property ist im Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("Dafuer ist nicht mehr genug Platz in <Behaelter>.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
+   zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_TOO_MANY_MSG, "Aber der Korb hat doch nur drei Faecher, die"
+                           " sind alle schon voll.");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOINSERT_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/props/P_TOTAL_AC b/doc/props/P_TOTAL_AC
index 222cffa..baa9cf9 100644
--- a/doc/props/P_TOTAL_AC
+++ b/doc/props/P_TOTAL_AC
@@ -1,23 +1,42 @@
-NAME:
-    P_TOTAL_AC                    "total_ac"                    
 
-DEFINIERT IN:
-    /sys/living/combat.h
+P_TOTAL_AC
+**********
 
-BESCHREIBUNG:
-     Numerischer Wert der Abwehrstaerke des Wesens.
-     Dieser wird durch Aufaddieren der P_AC aller getragenen Ruestungen
-     bestimmt. Aus diesem Grund ist das Abfragen dieser Property ziemlich
-     teuer. Falls das Ergebnis mehrfach kurz hintereinander gebraucht wird,
-     sollte die Property auf jeden Fall nur einmal abgefragt und der Wert
-     gespeichert werden.
 
-BEMERKUNGEN:
-    Auf diese Property sollte nicht mittels Query() oder Set() zugegriffen
-    werden, das Setzen von Query- oder Setmethoden bitte auf jeden Fall
-    unterlassen.
+NAME
+====
 
-SIEHE AUCH:
-    P_AC
+   P_TOTAL_AC                    "total_ac"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert der Abwehrstaerke des Wesens.
+   Dieser wird durch Aufaddieren der P_AC aller getragenen Ruestungen
+   bestimmt. Aus diesem Grund ist das Abfragen dieser Property ziemlich
+   teuer. Falls das Ergebnis mehrfach kurz hintereinander gebraucht wird,
+   sollte die Property auf jeden Fall nur einmal abgefragt und der Wert
+   gespeichert werden.
+
+
+BEMERKUNGEN
+===========
+
+   Auf diese Property sollte nicht mittels Query() oder Set() zugegriffen
+   werden, das Setzen von Query- oder Setmethoden bitte auf jeden Fall
+   unterlassen.
+
+
+SIEHE AUCH
+==========
+
+   P_AC
 
 05.09.2008, Zesstra
diff --git a/doc/props/P_TOTAL_LIGHT b/doc/props/P_TOTAL_LIGHT
index 41006d2..f4f0083 100644
--- a/doc/props/P_TOTAL_LIGHT
+++ b/doc/props/P_TOTAL_LIGHT
@@ -1,23 +1,42 @@
-NAME:
-    P_TOTAL_LIGHT                 "total_light"
 
-DEFINIERT IN:
-    /sys/properties.h
+P_TOTAL_LIGHT
+*************
 
-BESCHREIBUNG:
-    Gibt das Lichtlevel an, das von einem Objekt ausgeht. Hierzu wird das
-    eigene Lichtlevel P_LIGHT mit dem gesamten Inhalt eines Containers
-    verrechnet.
 
-    Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
-    da das Lichtlevel ggf. neu berechnet werden muss!
+NAME
+====
 
-    Ein direktes setzen dieser Property ist NICHT moeglich, hierzu bitte
-    P_LIGHT benutzen!
+   P_TOTAL_LIGHT                 "total_light"
 
-BEMERKUNGEN:
-    Das ist die VON einem Objekt ausgehende Lichtstaerke. Fuer das IN einem
-    Raum herrschende Licht bitte P_INT_LIGHT abfragen!
 
-SIEHE AUCH:
-    P_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Lichtlevel an, das von einem Objekt ausgeht. Hierzu wird das
+   eigene Lichtlevel P_LIGHT mit dem gesamten Inhalt eines Containers
+   verrechnet.
+
+   Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
+   da das Lichtlevel ggf. neu berechnet werden muss!
+
+   Ein direktes setzen dieser Property ist NICHT moeglich, hierzu bitte
+   P_LIGHT benutzen!
+
+
+BEMERKUNGEN
+===========
+
+   Das ist die VON einem Objekt ausgehende Lichtstaerke. Fuer das IN einem
+   Raum herrschende Licht bitte P_INT_LIGHT abfragen!
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/props/P_TOTAL_OBJECTS b/doc/props/P_TOTAL_OBJECTS
index 5f01567..4e2d009 100644
--- a/doc/props/P_TOTAL_OBJECTS
+++ b/doc/props/P_TOTAL_OBJECTS
@@ -1,16 +1,32 @@
-NAME:
-    P_TOTAL_OBJECTS                "total_objects"                
 
-DEFINIERT IN:
-    /sys/container.h
+P_TOTAL_OBJECTS
+***************
 
-BESCHREIBUNG:
-     Anzahl der Objekte im Container. Diese Property kann man nur abfragen!
-     Es werden nur Objekte gezaehlt, deren Methode short() einen
-     Wert != 0 zurueckgibt. Insofern koennen Spielern beliebig
-     viele unsichtbare Objekte gegeben werden ohne sie zu behindern.
 
-SIEHE AUCH:
-     P_MAX_OBJECTS
+NAME
+====
+
+   P_TOTAL_OBJECTS                "total_objects"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Objekte im Container. Diese Property kann man nur abfragen!
+   Es werden nur Objekte gezaehlt, deren Methode short() einen
+   Wert != 0 zurueckgibt. Insofern koennen Spielern beliebig
+   viele unsichtbare Objekte gegeben werden ohne sie zu behindern.
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_OBJECTS
 
 26.Jan 2005 Gloinson
diff --git a/doc/props/P_TOTAL_WC b/doc/props/P_TOTAL_WC
index 35ef4a9..19349f0 100644
--- a/doc/props/P_TOTAL_WC
+++ b/doc/props/P_TOTAL_WC
@@ -1,27 +1,45 @@
-NAME:
-	P_TOTAL_WC			"total_wc"
 
-DEFINIERT IN:
-	/sys/properties.h
+P_TOTAL_WC
+**********
 
-BESCHREIBUNG:
-	In dieser Property wird der numerische Wert der Angriffsstaerke
-	eines Lebewesens registriert.
-  Hierzu werden die P_WC von P_WEAPON bzw. P_HANDS sowie die Kraft des
-  Lebewesens beruecksichtigt.
-	Nicht eingerechnet in die Angriffsstaerke sind natuerlich Extraspells und
-  -skills des Angreifers.
-  Braucht man den Wert mehrfach kurz hintereinander, sollte man die Prop aber
-  nur einmal abfragen und den Wert speichern (sofern sich in der Zwischenzeit
-  nichts an der Waffe, den Hands oder den Attributen des Lebenwesens aendert).
 
-BEMERKUNGEN:
-  Auf diese Property sollte nicht mittels Query() oder Set() zugegriffen 
-  werden, das Setzen von Query- oder Setmethoden bitte auf jeden Fall 
-  unterlassen.
+NAME
+====
 
-SIEHE AUCH:
-	P_HANDS, P_WC, P_XP
+   P_TOTAL_WC                      "total_wc"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+         In dieser Property wird der numerische Wert der Angriffsstaerke
+         eines Lebewesens registriert.
+   Hierzu werden die P_WC von P_WEAPON bzw. P_HANDS sowie die Kraft des
+   Lebewesens beruecksichtigt.
+         Nicht eingerechnet in die Angriffsstaerke sind natuerlich Extraspells und
+   -skills des Angreifers.
+   Braucht man den Wert mehrfach kurz hintereinander, sollte man die Prop aber
+   nur einmal abfragen und den Wert speichern (sofern sich in der Zwischenzeit
+   nichts an der Waffe, den Hands oder den Attributen des Lebenwesens aendert).
+
+
+BEMERKUNGEN
+===========
+
+   Auf diese Property sollte nicht mittels Query() oder Set() zugegriffen
+   werden, das Setzen von Query- oder Setmethoden bitte auf jeden Fall
+   unterlassen.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_WC, P_XP
+
 05.09.2008, Zesstra
diff --git a/doc/props/P_TOTAL_WEIGHT b/doc/props/P_TOTAL_WEIGHT
index 2b62db1..bdb72f6 100644
--- a/doc/props/P_TOTAL_WEIGHT
+++ b/doc/props/P_TOTAL_WEIGHT
@@ -1,8 +1,21 @@
-NAME:
-    P_TOTAL_WEIGHT                "total_weight"                
 
-DEFINIERT IN:
-    /sys/thing/restrictions.h
+P_TOTAL_WEIGHT
+**************
 
-BESCHREIBUNG:
-     Gewicht incl. Inhalt in Gramm. P_WEIGHT_PERCENT wird beruecksichtigt.
+
+NAME
+====
+
+   P_TOTAL_WEIGHT                "total_weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/restrictions.h
+
+
+BESCHREIBUNG
+============
+
+   Gewicht incl. Inhalt in Gramm. P_WEIGHT_PERCENT wird beruecksichtigt.
diff --git a/doc/props/P_TOUCH_DETAILS b/doc/props/P_TOUCH_DETAILS
index d0670f6..f4345db 100644
--- a/doc/props/P_TOUCH_DETAILS
+++ b/doc/props/P_TOUCH_DETAILS
@@ -1,24 +1,43 @@
-NAME:
-    P_TOUCH_DETAILS            "touch_details"
 
-DEFINIERT IN:
-    /sys/thing/description.h
+P_TOUCH_DETAILS
+***************
 
-BESCHREIBUNG:
-    Diese Property entspricht dem P_DETAILS fuer Standarddetails,
-    nur werden hierin Gerueche gespeichert:
-    Diese Property enthaelt ein Mapping, in der Details im Objekt
-    definiert werden und Beschreibungen, die ausgegeben werden, wenn man
-    sich diese Details anschaut.
 
-BEMERKUNGEN:
-    Man sollte diese Property nicht per Hand veraendern, sondern die
-    Funktionen nutzen.
+NAME
+====
 
-SIEHE AUCH:
-    Setzen:    AddTouchDetail()
-    Loeschen:  RemoveTouchDetail()
-    Aehnlich:  AddDetail(), P_DETAILS
-    Sonstiges: GetDetail(), break_string()
+   P_TOUCH_DETAILS            "touch_details"
 
-27. Jan 2013 Gloinson
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property entspricht dem P_DETAILS fuer Standarddetails,
+   nur werden hierin Gerueche gespeichert:
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddTouchDetail()
+   Loeschen:  RemoveTouchDetail()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/props/P_TPORT_COST_IN b/doc/props/P_TPORT_COST_IN
index d15e948..f2e51a9 100644
--- a/doc/props/P_TPORT_COST_IN
+++ b/doc/props/P_TPORT_COST_IN
@@ -1,9 +1,22 @@
-NAME:
-    P_TPORT_COST_IN               "tport_cost_in"               
 
-DEFINIERT IN:
-    /sys/properties.h
+P_TPORT_COST_IN
+***************
 
-BESCHREIBUNG:
-     In einem Raum mit Sehertor: Kostenanteil, um sich in den Raum zu
-     teleportieren
+
+NAME
+====
+
+   P_TPORT_COST_IN               "tport_cost_in"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einem Raum mit Sehertor: Kostenanteil, um sich in den Raum zu
+   teleportieren
diff --git a/doc/props/P_TPORT_COST_OUT b/doc/props/P_TPORT_COST_OUT
index 369a35d..c97c752 100644
--- a/doc/props/P_TPORT_COST_OUT
+++ b/doc/props/P_TPORT_COST_OUT
@@ -1,9 +1,22 @@
-NAME:
-    P_TPORT_COST_OUT              "tport_cost_out"              
 
-DEFINIERT IN:
-    /sys/properties.h
+P_TPORT_COST_OUT
+****************
 
-BESCHREIBUNG:
-     In einem Raum mit Sehertor: Kostenanteil, sich aus dem Raum heraus
-     zu teleportieren
+
+NAME
+====
+
+   P_TPORT_COST_OUT              "tport_cost_out"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einem Raum mit Sehertor: Kostenanteil, sich aus dem Raum heraus
+   zu teleportieren
diff --git a/doc/props/P_TRANK_FINDEN b/doc/props/P_TRANK_FINDEN
index 8db2365..a3e270d 100644
--- a/doc/props/P_TRANK_FINDEN
+++ b/doc/props/P_TRANK_FINDEN
@@ -1,9 +1,22 @@
-NAME:
-    P_TRANK_FINDEN                "trank_finden"                
 
-DEFINIERT IN:
-    /sys/player/potion.h
+P_TRANK_FINDEN
+**************
 
-BESCHREIBUNG:
-     Wenn die Property auf 1 steht kann immer ein Zaubertrank gefunden
-     werden, auch wenn er nicht in der Liste des Spielers steht.
+
+NAME
+====
+
+   P_TRANK_FINDEN                "trank_finden"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/potion.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn die Property auf 1 steht kann immer ein Zaubertrank gefunden
+   werden, auch wenn er nicht in der Liste des Spielers steht.
diff --git a/doc/props/P_TRANSPARENT b/doc/props/P_TRANSPARENT
index a081b00..56c0558 100644
--- a/doc/props/P_TRANSPARENT
+++ b/doc/props/P_TRANSPARENT
@@ -1,29 +1,46 @@
+
 P_TRANSPARENT
-NAME:
-     P_TRANSPARENT                 "transparent"
+*************
 
-DEFINIERT IN:
-     /sys/container.h
 
-BESCHREIBUNG:
-     ist != 0, wenn in einen Container hinein (offen) oder aus einem 
-     hinausgeschaut werden kann.
+NAME
+====
 
-     Schaut man aus einem hinaus, erhaelt der Spieler normalerweise die 
-     Meldung 'Ausserhalb siehst Du:'. Diese kann jedoch durch eine eigene, 
-     stimmigere  Meldung ersetzt werden, wenn in P_TRANSPARENT ein String 
-     mit dieser Meldung angegeben wird.
+   P_TRANSPARENT                 "transparent"
 
-BEISPIEL:
-     SetProp(P_TRANSPARENT,1); -> normale Meldung
 
-     SetProp(P_TRANSPARENT,"Vom Ruecken des Pferdes aus siehst Du:\n");
+DEFINIERT IN
+============
 
-     Diese Meldung ist natuerlich nur dann sinnvoll, wenn es sich
-     auch tatsaechlich um ein Pferd handelt :-)
+   /sys/container.h
 
-SIEHE AUCH:
-     int_long()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   ist != 0, wenn in einen Container hinein (offen) oder aus einem
+   hinausgeschaut werden kann.
+
+   Schaut man aus einem hinaus, erhaelt der Spieler normalerweise die
+   Meldung 'Ausserhalb siehst Du:'. Diese kann jedoch durch eine eigene,
+   stimmigere  Meldung ersetzt werden, wenn in P_TRANSPARENT ein String
+   mit dieser Meldung angegeben wird.
+
+
+BEISPIEL
+========
+
+   SetProp(P_TRANSPARENT,1); -> normale Meldung
+
+   SetProp(P_TRANSPARENT,"Vom Ruecken des Pferdes aus siehst Du:\n");
+
+   Diese Meldung ist natuerlich nur dann sinnvoll, wenn es sich
+   auch tatsaechlich um ein Pferd handelt :-)
+
+
+SIEHE AUCH
+==========
+
+   int_long()
+
 Last modified: Mon Jul 18 24:00:00 2001 by Tilly
diff --git a/doc/props/P_TRAVEL_CMDS b/doc/props/P_TRAVEL_CMDS
index 32f6f65..3f9b0d5 100644
--- a/doc/props/P_TRAVEL_CMDS
+++ b/doc/props/P_TRAVEL_CMDS
@@ -1,38 +1,62 @@
-NAME:
-    P_TRAVEL_CMDS                   "travel_cmds"                   
 
-DEFINIERT IN:
-    /sys/transport.h
+P_TRAVEL_CMDS
+*************
 
-BESCHREIBUNG:
-    Ein Array mit Befehlen, die zum Verlassen UND Betreten des Trans-
-    porters fuehren. 
 
-BEISPIEL:
-    void create()
-    {
-      ::create();
+NAME
+====
 
-      SetProp(P_TRAVEL_CMDS,({ "steig","steige" }) );
+   P_TRAVEL_CMDS                   "travel_cmds"
 
-    }
 
-    Als Parameter werden hier ausschliesslich 'auf,in' und 'von,aus'
-    verarbeitet.
+DEFINIERT IN
+============
 
-    steige auf|in  <xxx>    fuehrt also zum Betreten des Transporters,
-    steige von|aus <xxx>    dagegen fuehrt zum Verlassen desselben.
+   /sys/transport.h
 
-BEMERKUNGEN:
-    Um /std/transport.c nicht aufzublaehen, werden weitere Parameter wie
-    etwa 'steige auf|in das|die|den xxx' _nicht_ unterstuetzt!
 
-    Hier muss der verantwortliche Magier schon eine eigene Loesung finden
-    und in seinen Transporter schreiben.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-    P_LEAVEFAIL, P_ENTERFAIL, P_ENTERCMDS, P_LEAVECMDS, transporter,
+   Ein Array mit Befehlen, die zum Verlassen UND Betreten des Trans-
+   porters fuehren.
 
-LETZTER AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
-    
\ No newline at end of file
+
+BEISPIEL
+========
+
+   void create()
+   {
+     ::create();
+
+     SetProp(P_TRAVEL_CMDS,({ "steig","steige" }) );
+
+   }
+
+   Als Parameter werden hier ausschliesslich 'auf,in' und 'von,aus'
+   verarbeitet.
+
+   steige auf|in  <xxx>    fuehrt also zum Betreten des Transporters,
+   steige von|aus <xxx>    dagegen fuehrt zum Verlassen desselben.
+
+
+BEMERKUNGEN
+===========
+
+   Um /std/transport.c nicht aufzublaehen, werden weitere Parameter wie
+   etwa 'steige auf|in das|die|den xxx' _nicht_ unterstuetzt!
+
+   Hier muss der verantwortliche Magier schon eine eigene Loesung finden
+   und in seinen Transporter schreiben.
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEFAIL, P_ENTERFAIL, P_ENTERCMDS, P_LEAVECMDS, transporter,
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_TRAVEL_INFO b/doc/props/P_TRAVEL_INFO
index b3a502e..720e9ec 100644
--- a/doc/props/P_TRAVEL_INFO
+++ b/doc/props/P_TRAVEL_INFO
@@ -1,31 +1,53 @@
-NAME:
-    P_TRAVEL_INFO                 "travel_info"
 
-DEFINIERT IN:
-    /sys/transport.h
+P_TRAVEL_INFO
+*************
 
-BESCHREIBUNG:
-    Array mit Informationen zur vom Spieler gewuenschten Reiseroute.
 
-    [0]        Der Raum (object), in dem die Reiseroute momentan 
-               'aktiv' ist. Nur hier wird sie beruecksichtigt.
+NAME
+====
 
-    [1]        Das gewuenschte Transportmittel (object) falls 
-               gewaehlt. Ansonsten 0.
+   P_TRAVEL_INFO                 "travel_info"
 
-    [2]        Der gewuenschte Zielort (string) oder 0 (ziellos).
 
-    [3]        Der gewuenschte Zielort als Richtung (string), falls
-               gewaehlt (z.B. 'zur Feuerinsel'). Sonst 0. Wird aus
-               P_HARBOUR des Zielraumes ausgelesen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    Diese Property wird von /std/transport.c sowie std/player/travel.c
-    verwendet, und sollte NICHT von anderen Objekten oder per Hand 
-    veraendert werden!
+   /sys/transport.h
 
-SIEHE AUCH:
-    /std/transport.c, /std/player/travel.c, reise
 
-LETZTER AENDERUNG:
-    Don, 24.01.2002, 10:15:07h von Tilly
+BESCHREIBUNG
+============
+
+   Array mit Informationen zur vom Spieler gewuenschten Reiseroute.
+
+   [0]        Der Raum (object), in dem die Reiseroute momentan
+              'aktiv' ist. Nur hier wird sie beruecksichtigt.
+
+   [1]        Das gewuenschte Transportmittel (object) falls
+              gewaehlt. Ansonsten 0.
+
+   [2]        Der gewuenschte Zielort (string) oder 0 (ziellos).
+
+   [3]        Der gewuenschte Zielort als Richtung (string), falls
+              gewaehlt (z.B. 'zur Feuerinsel'). Sonst 0. Wird aus
+              P_HARBOUR des Zielraumes ausgelesen.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property wird von /std/transport.c sowie std/player/travel.c
+   verwendet, und sollte NICHT von anderen Objekten oder per Hand
+   veraendert werden!
+
+
+SIEHE AUCH
+==========
+
+   /std/transport.c, /std/player/travel.c, reise
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/props/P_TRAY b/doc/props/P_TRAY
index 34c9d90..0c394d4 100644
--- a/doc/props/P_TRAY
+++ b/doc/props/P_TRAY
@@ -1,8 +1,21 @@
-NAME:
-    P_TRAY                        "tray"                        
 
-DEFINIERT IN:
-    /sys/properties.h
+P_TRAY
+******
 
-BESCHREIBUNG:
-    *** KEINE BESCHREIBUNG VORHANDEN ***
+
+NAME
+====
+
+   P_TRAY                        "tray"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/props/P_TTY b/doc/props/P_TTY
index 9e4aded..87841fd 100644
--- a/doc/props/P_TTY
+++ b/doc/props/P_TTY
@@ -1,28 +1,45 @@
-NAME:
-    P_TTY                         "tty"
 
-DEFINIERT IN:
-    /secure/telnetneg.h
+P_TTY
+*****
 
-BESCHREIBUNG:
-     Name der Terminalemulation, die der Spieler nutzt.
-     Es existieren bisher "dumb", "vt100" und "ansi".
 
-	
-ANMERKUNG:
-     Farben duerfen ausschliesslich bei P_TTY=="ansi" benutzt werden.
-     Bei nicht farbfaehigen Terminals koennen ANSI-Codes die gesamte
-     Ausgabe zerschiessen!
+NAME
+====
 
-     Die Attribute fett, unterstrichen, blinkend und invers koennen auch
-     schon von vt100-Terminals dargestellt werden. Aber nicht ueberall
-     sind alle Attribute/Farben implementiert.
+   P_TTY                         "tty"
 
-     Bei allen ANSI-Codes sind drei Sachen zu beachten:
-     
-        1) Sparsam benutzen! Aufgezwungene Hervorhebungen koennen
-	   Spieler ganz schnell nerven.
 
-	2) Nicht jeder benutzt dieselbe Hintergrundfarbe!
+DEFINIERT IN
+============
 
-	3) Sparsam benutzen! Beser noch: nur im Notfall!
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   Name der Terminalemulation, die der Spieler nutzt.
+   Es existieren bisher "dumb", "vt100" und "ansi".
+
+
+ANMERKUNG
+=========
+
+   Farben duerfen ausschliesslich bei P_TTY=="ansi" benutzt werden.
+   Bei nicht farbfaehigen Terminals koennen ANSI-Codes die gesamte
+   Ausgabe zerschiessen!
+
+   Die Attribute fett, unterstrichen, blinkend und invers koennen auch
+   schon von vt100-Terminals dargestellt werden. Aber nicht ueberall
+   sind alle Attribute/Farben implementiert.
+
+   Bei allen ANSI-Codes sind drei Sachen zu beachten:
+
+
+
+      1) Sparsam benutzen! Aufgezwungene Hervorhebungen koennen
+         Spieler ganz schnell nerven.
+
+      2) Nicht jeder benutzt dieselbe Hintergrundfarbe!
+
+      3) Sparsam benutzen! Beser noch: nur im Notfall!
diff --git a/doc/props/P_TTY_COLS b/doc/props/P_TTY_COLS
index 1716a33..8780417 100644
--- a/doc/props/P_TTY_COLS
+++ b/doc/props/P_TTY_COLS
@@ -1,22 +1,40 @@
-NAME:
-    P_TTY_COLS                                  "tty_cols"
 
-DEFINIERT IN:
-    /secure/telnetneg.h
+P_TTY_COLS
+**********
 
-BESCHREIBUNG:
-    In dieser Properties steht die Anzahl der Spalten, die das 
-    Terminalfenster des Spielers derzeit hat.
 
-    Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
-    Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
-    leer.
-    Das Setzen der Property aendert die Fenstergroesse des Spielers
-    natuerlich nicht.
+NAME
+====
 
-SIEHE AUCH:
-    P_TTY_ROWS, P_TTY_TYPE, P_TTY_SHOW
+   P_TTY_COLS                                  "tty_cols"
 
-LETZTE AeNDERUNG:
-    Sat, 06.02.1999, 14:00:00 von Paracelsus
 
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht die Anzahl der Spalten, die das
+   Terminalfenster des Spielers derzeit hat.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
+   leer.
+   Das Setzen der Property aendert die Fenstergroesse des Spielers
+   natuerlich nicht.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_ROWS, P_TTY_TYPE, P_TTY_SHOW
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/props/P_TTY_ROWS b/doc/props/P_TTY_ROWS
index 1294d9b..7289109 100644
--- a/doc/props/P_TTY_ROWS
+++ b/doc/props/P_TTY_ROWS
@@ -1,22 +1,40 @@
-NAME:
-    P_TTY_ROWS                                  "tty_rows"
 
-DEFINIERT IN:
-    /secure/telnetneg.h
+P_TTY_ROWS
+**********
 
-BESCHREIBUNG:
-    In dieser Properties steht die Anzahl der Zeilen, die das
-    Terminalfenster des Spielers derzeit hat.
 
-    Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
-    Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
-    leer.
-    Das Setzen der Property aendert die Fenstergroesse des Spielers
-    natuerlich nicht.
+NAME
+====
 
-SIEHE AUCH:
-    P_TTY_COLS, P_TTY_TYPE, P_TTY_SHOW
+   P_TTY_ROWS                                  "tty_rows"
 
-LETZTE AeNDERUNG:
-    Sat, 06.02.1999, 14:00:00 von Paracelsus
 
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht die Anzahl der Zeilen, die das
+   Terminalfenster des Spielers derzeit hat.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
+   leer.
+   Das Setzen der Property aendert die Fenstergroesse des Spielers
+   natuerlich nicht.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_COLS, P_TTY_TYPE, P_TTY_SHOW
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/props/P_TTY_SHOW b/doc/props/P_TTY_SHOW
index f727433..a43076f 100644
--- a/doc/props/P_TTY_SHOW
+++ b/doc/props/P_TTY_SHOW
@@ -1,17 +1,35 @@
-NAME:
-    P_TTY_SHOW                                  "tty_show"
 
-DEFINIERT IN:
-    /secure/telnetneg.h
+P_TTY_SHOW
+**********
 
-BESCHREIBUNG:
-    Bei Telnets, die Telnetnegotiations unterstuetzen, wird eine Aenderung
-    der Fenstergroesse dem Spielerobjekt mitgeteilt. Steht in P_TTY_SHOW
-    ein Wert ungleich Null, wird dem Spieler diese Aenderung mitgeteilt.
 
-SIEHE AUCH:
-    P_TTY_ROWS, P_TTY_COLS, P_TTY_TYPE, telnegs
+NAME
+====
 
-LETZTE AeNDERUNG:
-    Sat, 06.02.1999, 14:00:00 von Paracelsus
+   P_TTY_SHOW                                  "tty_show"
 
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   Bei Telnets, die Telnetnegotiations unterstuetzen, wird eine Aenderung
+   der Fenstergroesse dem Spielerobjekt mitgeteilt. Steht in P_TTY_SHOW
+   ein Wert ungleich Null, wird dem Spieler diese Aenderung mitgeteilt.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_ROWS, P_TTY_COLS, P_TTY_TYPE, telnegs
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/props/P_TTY_TYPE b/doc/props/P_TTY_TYPE
index 6935b23..5842cb2 100644
--- a/doc/props/P_TTY_TYPE
+++ b/doc/props/P_TTY_TYPE
@@ -1,23 +1,41 @@
-NAME:
-    P_TTY_TYPE                                  "tty_type"
 
-DEFINIERT IN:
-    /secure/telnetneg.h
+P_TTY_TYPE
+**********
 
-BESCHREIBUNG:
-    In dieser Properties steht der Terminaltyp, den ein Spieler lokal auf
-    seinem Rechner verwendet.
 
-    Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
-    Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
-    leer. Die meisten Telnets/Clients geben ihren Terminaltyp allerdings
-    nicht preis.
-    Das Setzen der Property aendert den Terminaltyp des Spielers
-    natuerlich nicht.
+NAME
+====
 
-SIEHE AUCH:
-    P_TTY_COLS, P_TTY_ROWS, P_TTY_SHOW
+   P_TTY_TYPE                                  "tty_type"
 
-LETZTE AeNDERUNG:
-    Sat, 06.02.1999, 14:00:00 von Paracelsus
 
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht der Terminaltyp, den ein Spieler lokal auf
+   seinem Rechner verwendet.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
+   leer. Die meisten Telnets/Clients geben ihren Terminaltyp allerdings
+   nicht preis.
+   Das Setzen der Property aendert den Terminaltyp des Spielers
+   natuerlich nicht.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_COLS, P_TTY_ROWS, P_TTY_SHOW
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/props/P_UNIT_DECAY_FLAGS b/doc/props/P_UNIT_DECAY_FLAGS
index f924ff7..25a5ed1 100644
--- a/doc/props/P_UNIT_DECAY_FLAGS
+++ b/doc/props/P_UNIT_DECAY_FLAGS
@@ -1,70 +1,90 @@
+
 P_UNIT_DECAY_FLAGS
+******************
 
-NAME:
-     P_UNIT_DECAY_FLAGS					"unit_decay_flags"
 
-DEFINIERT IN:
-     /sys/unit.h
+NAME
+====
 
-BESCHREIBUNG:
-     Mit dieser Prop kann das Zerfallsverhalten gesteuert werden, entweder
-     fuer alle Clones durch Setzen in der Blueprint oder fuer einzelne Clones.
+   P_UNIT_DECAY_FLAGS                                 "unit_decay_flags"
 
-     In dieser Prop koennen momentan 4 Flags gesetzt werden:
-     - NO_DECAY: 
-          Zerfall ist abgeschaltet.
-     - NO_DECAY_UNTIL_MOVE: 
-          Der Zerfall ist solange ausgesetzt, bis dieses Objekt in ein anderes
-          Env bewegt wird. Setzt also ein NPC beim AddItem() diese Prop,
-          zerfaellt seine Unit nicht, bis sie bewegt wurde (Leiche, Spieler
-          etc.). Hierbei zaehlt das move() nicht, wenn das Objekt noch kein
-          Env hatte, es zaehlen nur Moves von einem Env in ein anderes Env.
-          Dieses Flag sollte nur in Clones gesetzt werden.
-     - INACCURATE_DECAY
-          Sollen z.b. 45.34 Einheiten zerfallen, wird der Rest von 0.34
-          normalerweise als Wahrscheinlichkeit aufgefasst, dass eine
-          zusaetzliche Einheit zerfaellt. Dieses Flag sorgt dafuer, dass
-          dieser Rest weggeworfen wird und einfach 45 Einheiten zerfallen.
-          Gleichzeitig wird bei diesem Flag aber _immer min_ 1 Einheit
-          zerstoert!
-     - ABSOLUTE_DECAY
-          P_UNIT_DECAY_QUOTA wird nicht als prozentualer Anteil aufgefasst,
-          sondern als absolute Zahl, d.h. es zerfallen immer einfach
-          P_UNIT_DECAY_QUOTA Einheiten.
 
-     Diese Flags koennen z.B. genutzt werden, den Zerfall fuer einzelne
-     Objekte temporaer oder dauerhaft abzuschalten, auch wenn alle anderen
-     Clones weiterzerfallen.
+DEFINIERT IN
+============
 
-     Diese Prop kann in der Blueprint gesetzt werden. In diesem Fall wird
-     allerdings NO_DECAY_UNTIL_MOVE ignoriert, weil die BP ja nie bewegt
-     wuerde. NO_DECAY in der BP schaltet den Zerfallsprozess (temporaer) fuer
-     alle Clones aus. Ist nie ein Zerfall gewuenscht, sollte in der Blueprint
-     aber besser P_UNIT_DECAY_INTERVAL auf 0 gesetzt werden!
+   /sys/unit.h
 
-     Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
-     liefert ein klon->QueryProp(P_UNIT_DECAY_FLAGS) den in der Blueprint
-     eingestellten Wert zurueck.
-     
-BEMERKUNGEN:
-     * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus der
-       Blueprint zurueckgeben. Hierbei wird allerdings ein NO_DECAY_UNTIL_MOVE
-       ausgefiltert, da dies den Zerfall fuer alle Objekte dauerhaft stoppen
-       wuerde, weil BPs nicht bewegt werden.
-     * Die Flags koennen "verodert" werden:
-       SetProp(P_UNIT_DECAY_FLAGS, NO_DECAY_UNTIL_MOVE | ABSOLUTE_DECAY);
 
-BEISPIEL:
-     // Dieser NPC hat tolle Pfeile, die sollen aber nicht zerfallen, solange
-     // sie im Inventar des NPCs sind:
-     AddItem("/d/tolleregion/tollermagier/obj/pfeile", REFRESH_NONE,
-         ([ P_AMOUNT: 50+random(50),
-            P_UNIT_DECAY_FLAGS: NO_DECAY_UNTIL_MOVE ]) );
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     unit
-     P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_MIN
-     DoDecay, DoDecayMessage
-     /std/unit.c
+   Mit dieser Prop kann das Zerfallsverhalten gesteuert werden, entweder
+   fuer alle Clones durch Setzen in der Blueprint oder fuer einzelne Clones.
+
+   In dieser Prop koennen momentan 4 Flags gesetzt werden:
+   - NO_DECAY:
+        Zerfall ist abgeschaltet.
+   - NO_DECAY_UNTIL_MOVE:
+        Der Zerfall ist solange ausgesetzt, bis dieses Objekt in ein anderes
+        Env bewegt wird. Setzt also ein NPC beim AddItem() diese Prop,
+        zerfaellt seine Unit nicht, bis sie bewegt wurde (Leiche, Spieler
+        etc.). Hierbei zaehlt das move() nicht, wenn das Objekt noch kein
+        Env hatte, es zaehlen nur Moves von einem Env in ein anderes Env.
+        Dieses Flag sollte nur in Clones gesetzt werden.
+   - INACCURATE_DECAY
+        Sollen z.b. 45.34 Einheiten zerfallen, wird der Rest von 0.34
+        normalerweise als Wahrscheinlichkeit aufgefasst, dass eine
+        zusaetzliche Einheit zerfaellt. Dieses Flag sorgt dafuer, dass
+        dieser Rest weggeworfen wird und einfach 45 Einheiten zerfallen.
+        Gleichzeitig wird bei diesem Flag aber _immer min_ 1 Einheit
+        zerstoert!
+   - ABSOLUTE_DECAY
+        P_UNIT_DECAY_QUOTA wird nicht als prozentualer Anteil aufgefasst,
+        sondern als absolute Zahl, d.h. es zerfallen immer einfach
+        P_UNIT_DECAY_QUOTA Einheiten.
+
+   Diese Flags koennen z.B. genutzt werden, den Zerfall fuer einzelne
+   Objekte temporaer oder dauerhaft abzuschalten, auch wenn alle anderen
+   Clones weiterzerfallen.
+
+   Diese Prop kann in der Blueprint gesetzt werden. In diesem Fall wird
+   allerdings NO_DECAY_UNTIL_MOVE ignoriert, weil die BP ja nie bewegt
+   wuerde. NO_DECAY in der BP schaltet den Zerfallsprozess (temporaer) fuer
+   alle Clones aus. Ist nie ein Zerfall gewuenscht, sollte in der Blueprint
+   aber besser P_UNIT_DECAY_INTERVAL auf 0 gesetzt werden!
+
+   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
+   liefert ein klon->QueryProp(P_UNIT_DECAY_FLAGS) den in der Blueprint
+   eingestellten Wert zurueck.
+
+
+BEMERKUNGEN
+===========
+
+   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus der
+     Blueprint zurueckgeben. Hierbei wird allerdings ein NO_DECAY_UNTIL_MOVE
+     ausgefiltert, da dies den Zerfall fuer alle Objekte dauerhaft stoppen
+     wuerde, weil BPs nicht bewegt werden.
+   * Die Flags koennen "verodert" werden:
+     SetProp(P_UNIT_DECAY_FLAGS, NO_DECAY_UNTIL_MOVE | ABSOLUTE_DECAY);
+
+
+BEISPIEL
+========
+
+   // Dieser NPC hat tolle Pfeile, die sollen aber nicht zerfallen, solange
+   // sie im Inventar des NPCs sind:
+   AddItem("/d/tolleregion/tollermagier/obj/pfeile", REFRESH_NONE,
+       ([ P_AMOUNT: 50+random(50),
+          P_UNIT_DECAY_FLAGS: NO_DECAY_UNTIL_MOVE ]) );
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_MIN
+   DoDecay, DoDecayMessage
+   /std/unit.c
 
 14.10.2007, Zesstra
diff --git a/doc/props/P_UNIT_DECAY_INTERVAL b/doc/props/P_UNIT_DECAY_INTERVAL
index 93154cd..e0118c3 100644
--- a/doc/props/P_UNIT_DECAY_INTERVAL
+++ b/doc/props/P_UNIT_DECAY_INTERVAL
@@ -1,37 +1,56 @@
+
 P_UNIT_DECAY_INTERVAL
+*********************
 
-NAME:
-     P_UNIT_DECAY_INTERVAL					"unit_decay_interval"
 
-DEFINIERT IN:
-     /sys/unit.h
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Prop bestimmt, wie oft ein Zerfall der entsprechenden Unitobjekte
-     durchgefuehrt wird. Das Intervall ist in Sekunden anzugeben (int).
-     Die Prop muss in der Blueprint der entsprechenden Unitobjekte gesetzt
-     werden, in Clones kann sie nicht gesetzt werden.
-     Die Blueprint resettet dann in diesem Intervall und ruft in allen ihren
-     Clones (und denen alter Versionen der gleichen BP!) DoDecay() auf,
-     woraufhin die Clones den Zerfall durchfuehren.
-     Ist die Prop in der Blueprint nicht gesetzt, erfolgt kein Zerfall.
+   P_UNIT_DECAY_INTERVAL                                      "unit_decay_interval"
 
-BEMERKUNGEN:
-     * Ist die Blueprint nicht geladen, erfolgt kein Zerfall der Clones.
-     * Ein Setzen dieser Prop beinhaltet immer auch einen Aufruf von
-       set_next_reset() auf das ensprechende Intervall.
-     * Die Prop kann in den Clones abgefragt werden und liefert das in der
-       Blueprint eingestellte Intervall.
-     * Von einer Manipulation per Set() wird dringend abgeraten.
-     * Die Prop kann nur vom Objekt selber, vom Programmierer des Objekts, vom
-       RM der entsprechenden Region, von einem Weisen oder von einem Objekt
-       gesetzt werden, welches die gleiche UID hat.
 
-BEISPIEL:
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     unit
-     P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
-     DoDecay(), DoDecayMessage()
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Prop bestimmt, wie oft ein Zerfall der entsprechenden Unitobjekte
+   durchgefuehrt wird. Das Intervall ist in Sekunden anzugeben (int).
+   Die Prop muss in der Blueprint der entsprechenden Unitobjekte gesetzt
+   werden, in Clones kann sie nicht gesetzt werden.
+   Die Blueprint resettet dann in diesem Intervall und ruft in allen ihren
+   Clones (und denen alter Versionen der gleichen BP!) DoDecay() auf,
+   woraufhin die Clones den Zerfall durchfuehren.
+   Ist die Prop in der Blueprint nicht gesetzt, erfolgt kein Zerfall.
+
+
+BEMERKUNGEN
+===========
+
+   * Ist die Blueprint nicht geladen, erfolgt kein Zerfall der Clones.
+   * Ein Setzen dieser Prop beinhaltet immer auch einen Aufruf von
+     set_next_reset() auf das ensprechende Intervall.
+   * Die Prop kann in den Clones abgefragt werden und liefert das in der
+     Blueprint eingestellte Intervall.
+   * Von einer Manipulation per Set() wird dringend abgeraten.
+   * Die Prop kann nur vom Objekt selber, vom Programmierer des Objekts, vom
+     RM der entsprechenden Region, von einem Weisen oder von einem Objekt
+     gesetzt werden, welches die gleiche UID hat.
+
+
+BEISPIEL
+========
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
+   DoDecay(), DoDecayMessage()
 
 13.10.2007, Zesstra
diff --git a/doc/props/P_UNIT_DECAY_MIN b/doc/props/P_UNIT_DECAY_MIN
index 79f9c80..b78a735 100644
--- a/doc/props/P_UNIT_DECAY_MIN
+++ b/doc/props/P_UNIT_DECAY_MIN
@@ -1,51 +1,71 @@
+
 P_UNIT_DECAY_MIN
+****************
 
-NAME:
-     P_UNIT_DECAY_MIN					                    "unit_decay_min"
 
-DEFINIERT IN:
-     /sys/unit.h
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Prop bestimmt, wieviele Einheiten der Unitobjekten mindestens
-     uebrig bleiben sollen. 
-     Faellt die Menge eines Unitobjekts unter diesen Wert, zerfaellt diese
-     Unit solange nicht weiter, bis der Wert wieder ueberschritten wird.
-     Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
-     werden.
-     Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
-     liefert ein QueryProp(P_UNIT_DECAY_MIN) den in der Blueprint
-     eingestellten Wert zurueck und die Unit zerfaellt bis zu dieser
-     Mindestmenge..
-     D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
-     Clones nur soweit diese abweichende Werte haben sollen.
-     Es sind nur Werte zwischen 0 und 100 zulaessig. Auf diese Art laesst sich
-     die minidestens uebrig bleibende Menge aller Clones durch Aendern einer
-     Prop in der Blueprint aendern.
+   P_UNIT_DECAY_MIN                                                       "unit_decay_min"
 
-BEMERKUNGEN:
-     * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
-       Blueprint zum Zerfall benutzt.
-     * Will man fuer ein bestimmtes Unitobjekt kein Minimum haben, also dass
-       dieses Objekt zerfaellt, bis nichts mehr da ist, die Blueprint hat aber
-       einen Minimalwert gesetzt, sollte diese Prop im betreffenden Objekt auf
-       -1 gesetzt werden.
-     * Diese Prop sollte vorsichtig angewandt werden, da Spieler so den
-       Zerfall von Units stoppen koennen, indem sie die Units entsprechend
-       aufteilen, so dass jedes Einzelobjekt unter dem Minimum liegt.
 
-BEISPIEL:
-     // es soll min. 1 Einheit uebrig bleiben.
-     SetProp(P_UNIT_DECAY_MIN, 1);
+DEFINIERT IN
+============
 
-     // die Blueprint hat ein Minimum von 10 gesetzt, dieser Clone soll
-     // aber zerfallen, bis nix mehr da ist.
-     klon->SetProp(P_UNIT_DECAY_MIN, -1);
+   /sys/unit.h
 
-SIEHE AUCH:
-     unit
-     P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA
-     DoDecay, DoDecayMessage
-     /std/unit.c
+
+BESCHREIBUNG
+============
+
+   Diese Prop bestimmt, wieviele Einheiten der Unitobjekten mindestens
+   uebrig bleiben sollen.
+   Faellt die Menge eines Unitobjekts unter diesen Wert, zerfaellt diese
+   Unit solange nicht weiter, bis der Wert wieder ueberschritten wird.
+   Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
+   werden.
+   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
+   liefert ein QueryProp(P_UNIT_DECAY_MIN) den in der Blueprint
+   eingestellten Wert zurueck und die Unit zerfaellt bis zu dieser
+   Mindestmenge..
+   D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
+   Clones nur soweit diese abweichende Werte haben sollen.
+   Es sind nur Werte zwischen 0 und 100 zulaessig. Auf diese Art laesst sich
+   die minidestens uebrig bleibende Menge aller Clones durch Aendern einer
+   Prop in der Blueprint aendern.
+
+
+BEMERKUNGEN
+===========
+
+   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
+     Blueprint zum Zerfall benutzt.
+   * Will man fuer ein bestimmtes Unitobjekt kein Minimum haben, also dass
+     dieses Objekt zerfaellt, bis nichts mehr da ist, die Blueprint hat aber
+     einen Minimalwert gesetzt, sollte diese Prop im betreffenden Objekt auf
+     -1 gesetzt werden.
+   * Diese Prop sollte vorsichtig angewandt werden, da Spieler so den
+     Zerfall von Units stoppen koennen, indem sie die Units entsprechend
+     aufteilen, so dass jedes Einzelobjekt unter dem Minimum liegt.
+
+
+BEISPIEL
+========
+
+   // es soll min. 1 Einheit uebrig bleiben.
+   SetProp(P_UNIT_DECAY_MIN, 1);
+
+   // die Blueprint hat ein Minimum von 10 gesetzt, dieser Clone soll
+   // aber zerfallen, bis nix mehr da ist.
+   klon->SetProp(P_UNIT_DECAY_MIN, -1);
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA
+   DoDecay, DoDecayMessage
+   /std/unit.c
 
 14.10.2007, Zesstra
diff --git a/doc/props/P_UNIT_DECAY_QUOTA b/doc/props/P_UNIT_DECAY_QUOTA
index 9144564..0b4c9a6 100644
--- a/doc/props/P_UNIT_DECAY_QUOTA
+++ b/doc/props/P_UNIT_DECAY_QUOTA
@@ -1,45 +1,69 @@
+
+P_UNIT_DECAY_QUOTA
+******************
+
+
 P_UNIT_DECAY_QUOTA (int)
+========================
 
-NAME:
-     P_UNIT_DECAY_QUOTA					"unit_decay_quota"
 
-DEFINIERT IN:
-     /sys/unit.h
+NAME
+====
 
-BESCHREIBUNG:
-     Diese Prop bestimmt, welcher Anteil der einzelnen Unitobjekte pro Zerfall
-     zerstoert wird. Dieser Anteil wird als ganze Zahl zwischen 0 und 10000
-     ausgedrueckt. 1 entspricht einem Zerfall von 0.01%, 10000 entspricht
-     100%.
-     Momentan sind keine Werte < 0 zulaessig, die einem Zuwachs entsprechend
-     wurden.
+   P_UNIT_DECAY_QUOTA                                 "unit_decay_quota"
 
-     Falls das Flag ABSOLUTE_DECAY (s. P_UNIT_DECAY_FLAGS) gesetzt ist, steht
-     die Zahl in dieser Prop fuer die absolute Anzahl an zu zerstoerenden
-     Einheiten.
 
-     Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
-     werden.
-     Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
-     liefert ein QueryProp(P_UNIT_DECAY_QUOTA) den in der Blueprint
-     eingestellten Wert zurueck und die Unit zerfaellt zu diesem Anteil.
-     D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
-     Clones nur soweit diese abweichende Zerfallsraten haben sollen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
-       Blueprint zum Zerfall benutzt.
-     * Will man den Zerfall fuer ein bestimmtes Unitobjekt abschalten, sollte
-       man P_UNIT_DECAY_FLAGS benutzen.
+   /sys/unit.h
 
-BEISPIEL:
-     // pro Zerfallsintervall sollen 12% zerfallen.
-     SetProp(P_UNIT_DECAY_QUOTA, 1200);
 
-SIEHE AUCH:
-     unit
-     P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
-     DoDecay, DoDecayMessage
-     /std/unit.c
+BESCHREIBUNG
+============
+
+   Diese Prop bestimmt, welcher Anteil der einzelnen Unitobjekte pro Zerfall
+   zerstoert wird. Dieser Anteil wird als ganze Zahl zwischen 0 und 10000
+   ausgedrueckt. 1 entspricht einem Zerfall von 0.01%, 10000 entspricht
+   100%.
+   Momentan sind keine Werte < 0 zulaessig, die einem Zuwachs entsprechend
+   wurden.
+
+   Falls das Flag ABSOLUTE_DECAY (s. P_UNIT_DECAY_FLAGS) gesetzt ist, steht
+   die Zahl in dieser Prop fuer die absolute Anzahl an zu zerstoerenden
+   Einheiten.
+
+   Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
+   werden.
+   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
+   liefert ein QueryProp(P_UNIT_DECAY_QUOTA) den in der Blueprint
+   eingestellten Wert zurueck und die Unit zerfaellt zu diesem Anteil.
+   D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
+   Clones nur soweit diese abweichende Zerfallsraten haben sollen.
+
+
+BEMERKUNGEN
+===========
+
+   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
+     Blueprint zum Zerfall benutzt.
+   * Will man den Zerfall fuer ein bestimmtes Unitobjekt abschalten, sollte
+     man P_UNIT_DECAY_FLAGS benutzen.
+
+
+BEISPIEL
+========
+
+   // pro Zerfallsintervall sollen 12% zerfallen.
+   SetProp(P_UNIT_DECAY_QUOTA, 1200);
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
+   DoDecay, DoDecayMessage
+   /std/unit.c
 
 14.03.2008, Zesstra
diff --git a/doc/props/P_UNWEAR_MSG b/doc/props/P_UNWEAR_MSG
index 1ee0d80..0b2e89a 100644
--- a/doc/props/P_UNWEAR_MSG
+++ b/doc/props/P_UNWEAR_MSG
@@ -1,56 +1,78 @@
+
 P_UNWEAR_MSG
-NAME:
-     P_UNWEAR_MSG                       "unwear_msg"     
+************
 
-DEFINIERT IN:
-     /sys/armour.h
 
-BESCHREIBUNG:
-     Zweiteiliges Array mit Meldungen, die beim Ausziehen einer Ruestung 
-     oder Kleidung an den Spieler und die Umgebung ausgegeben werden.
-     Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
-     Umgebung. Zeilenumbrueche werden automatisch gemacht, existierende
-     jedoch beruecksichtigt.
+NAME
+====
 
-     Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
-     man replace_personal()).
+   P_UNWEAR_MSG                       "unwear_msg"
 
-     [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
-      moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
-      in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
-      den Waffennamen.]
 
-BEISPIELE:
-    SetProp(P_NAME, "Mantel");
-    SetProp(P_UNWEAR_MSG,
-     ({"Du reisst Dir @WEN2 vom Leib.",
-       "@WER1 reisst sich @WENU2 vom Leib." }));
+DEFINIERT IN
+============
 
-    -> beim Ausziehen durch Urk:
-       Urk bekommt: Du reisst dir den Mantel vom Leib.
-       Der Raum:    Urk reisst sich einen Mantel vom Leib.
+   /sys/armour.h
 
-    SetProp(P_UNWEAR_MSG,
-     ({"Dir wird furchtbar warm. So eine Hitze aber auch. Schnell "
-       "schluepfst Du aus Deiner dicken Ruestung. Aaaah, was fuer "
-       "eine Wohltat.",
-       "@WEM1 scheint ploetzlich warm zu werden. Schnell schluepft "
-       "@WERQP1 aus @WEMQPPFS1 dicken Ruestung. Du hoffst instaendig, "
-       "das es noch etwas waermer wird ... "}));
 
-    -> beim Ausziehen durch Urk:
-       Urk bekommt: Dir wird furchtbar warm. So eine Hitze aber auch.
-		    Schnell schluepfst Du aus Deiner dicken Ruestung.
-		    Aaaah, was fuer eine Wohltat.
-       Der Raum:    Urk scheint ploetzlich warm zu werden. Schnell
-		    schluepft er aus seiner dicken Ruestung. Du hoffst
-		    instaendig, das es noch etwas waermer wird ...
-SIEHE AUCH:
-     Aehnliches: P_WEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
-                 P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
-     Funktionen: WearFunc, UnwearFunc
-     Sonstiges:  replace_personal(E), /std/armour/wear.c, armours
-                 clothing, /std/clothing.wear.c
+BESCHREIBUNG
+============
 
-LETZTE AeNDERUNG:
-15.02.2009, Zesstra
\ No newline at end of file
+   Zweiteiliges Array mit Meldungen, die beim Ausziehen einer Ruestung
+   oder Kleidung an den Spieler und die Umgebung ausgegeben werden.
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung. Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
+
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Mantel");
+   SetProp(P_UNWEAR_MSG,
+    ({"Du reisst Dir @WEN2 vom Leib.",
+      "@WER1 reisst sich @WENU2 vom Leib." }));
+
+   -> beim Ausziehen durch Urk:
+      Urk bekommt: Du reisst dir den Mantel vom Leib.
+      Der Raum:    Urk reisst sich einen Mantel vom Leib.
+
+   SetProp(P_UNWEAR_MSG,
+    ({"Dir wird furchtbar warm. So eine Hitze aber auch. Schnell "
+      "schluepfst Du aus Deiner dicken Ruestung. Aaaah, was fuer "
+      "eine Wohltat.",
+      "@WEM1 scheint ploetzlich warm zu werden. Schnell schluepft "
+      "@WERQP1 aus @WEMQPPFS1 dicken Ruestung. Du hoffst instaendig, "
+      "das es noch etwas waermer wird ... "}));
+
+   -> beim Ausziehen durch Urk:
+      Urk bekommt: Dir wird furchtbar warm. So eine Hitze aber auch.
+                   Schnell schluepfst Du aus Deiner dicken Ruestung.
+                   Aaaah, was fuer eine Wohltat.
+      Der Raum:    Urk scheint ploetzlich warm zu werden. Schnell
+                   schluepft er aus seiner dicken Ruestung. Du hoffst
+                   instaendig, das es noch etwas waermer wird ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_WEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: WearFunc, UnwearFunc
+   Sonstiges:  replace_personal(E), /std/armour/wear.c, armours
+               clothing, /std/clothing.wear.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/props/P_UNWIELD_FUNC b/doc/props/P_UNWIELD_FUNC
index da0fa7c..4466ec0 100644
--- a/doc/props/P_UNWIELD_FUNC
+++ b/doc/props/P_UNWIELD_FUNC
@@ -1,19 +1,32 @@
+
 P_UNWIELD_FUNC
+**************
 
-NAME:
-     P_UNWIELD_FUNC "unwield_func"
 
-DEFINIERT IN:
-     <weapon.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Falls ein Objekt eine UnwieldFunc() fuer die Waffe definiert, so muss
-     dieses Objekt in dieser Property eingetragen werden.
+   P_UNWIELD_FUNC "unwield_func"
 
-     Die Auswertung dieser Property erfolgt in DoUnwield().
 
-SIEHE AUCH:
-     /std/weapon.c, UnwieldFunc()
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine UnwieldFunc() fuer die Waffe definiert, so muss
+   dieses Objekt in dieser Property eingetragen werden.
+
+   Die Auswertung dieser Property erfolgt in DoUnwield().
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, UnwieldFunc()
+
 Last modified: Sun May 19 15:44:08 1996 by Wargon
diff --git a/doc/props/P_UNWIELD_MSG b/doc/props/P_UNWIELD_MSG
index 49a6466..d1d1668 100644
--- a/doc/props/P_UNWIELD_MSG
+++ b/doc/props/P_UNWIELD_MSG
@@ -1,59 +1,77 @@
+
 P_UNWIELD_MSG
-NAME:
-     P_UNWIELD_MSG                       "unwield_msg"                       
+*************
 
-DEFINIERT IN:
-     /sys/weapon.h
 
-BESCHREIBUNG:
-     Zweiteiliges Array mit Meldungen, die beim Wegstecken einer 
-     Waffe an den Spieler und die Umgebung ausgegeben werden.
+NAME
+====
 
-     Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
-     Umgebung.  Zeilenumbrueche werden automatisch gemacht, existierende
-     jedoch beruecksichtigt.
+   P_UNWIELD_MSG                       "unwield_msg"
 
-     Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
-     man replace_personal()).
 
-     [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
-      moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
-      in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
-      den Waffennamen.]
+DEFINIERT IN
+============
 
-BEISPIELE:
-    SetProp(P_NAME, "Streitkolben");
-    SetProp(P_UNWIELD_MSG,
-     ({ "Du steckst @WEN2 zurueck und atmest erstmal tief durch.", 
-        "@WER1 steckt @WENU2 zurueck und atmet erstmal tief durch." }));
+   /sys/weapon.h
 
-    -> beim Wegstecken durch Urk:
-       Urk bekommt: Du steckst den Streitkolben zurueck und atmest erstmal
-		    tief durch.
-       Der Raum:    Urk steckt einen Streitkolben zurueck und atmet erstmal
-		    tief durch.
 
-    SetProp(P_UNWIELD_MSG,
-     ({"Du steckst die schwere Keule zurueck. Zufaellig landet sie "
-       "dabei auf Deinem Fuss. Laut schreiend humpelst Du in der "
-       "Gegend herum.",
-       "@WER1 steckt eine schwere Keule zurueck. Dummerweise landet diese "
-       "direkt auf dem eigenen Fuss. Aua, das tat sicher weh ... nicht "
-       "umsonst humpelt @WERQP1 jetzt schreiend durch die Gegend."}));
+BESCHREIBUNG
+============
 
-    -> beim Wegstecken durch Urk:
-       Urk bekommt: Du steckst die schwere Keule zurueck. Zufaellig landet
-		    sie dabei auf Deinem Fuss. Laut schreiend humpelst Du in
-		    der Gegend herum.
-       Der Raum:    Urk steckt eine schwere Keule zurueck. Dummerweise
-		    landet diese direkt auf dem eigenen Fuss. Aua, das tat
-                    sicher weh ... nicht umsonst humpelt er jetzt schreiend
-                    durch die Gegend.
+   Zweiteiliges Array mit Meldungen, die beim Wegstecken einer
+   Waffe an den Spieler und die Umgebung ausgegeben werden.
 
-SIEHE AUCH:
-     Aehnliches: P_WIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
-                 P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
-     Funktionen: UnwieldFunc, WieldFunc
-     Sonstiges:  replace_personal(E), /std/weapon/combat.c
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung.  Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
+
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Streitkolben");
+   SetProp(P_UNWIELD_MSG,
+    ({ "Du steckst @WEN2 zurueck und atmest erstmal tief durch.",
+       "@WER1 steckt @WENU2 zurueck und atmet erstmal tief durch." }));
+
+   -> beim Wegstecken durch Urk:
+      Urk bekommt: Du steckst den Streitkolben zurueck und atmest erstmal
+                   tief durch.
+      Der Raum:    Urk steckt einen Streitkolben zurueck und atmet erstmal
+                   tief durch.
+
+   SetProp(P_UNWIELD_MSG,
+    ({"Du steckst die schwere Keule zurueck. Zufaellig landet sie "
+      "dabei auf Deinem Fuss. Laut schreiend humpelst Du in der "
+      "Gegend herum.",
+      "@WER1 steckt eine schwere Keule zurueck. Dummerweise landet diese "
+      "direkt auf dem eigenen Fuss. Aua, das tat sicher weh ... nicht "
+      "umsonst humpelt @WERQP1 jetzt schreiend durch die Gegend."}));
+
+   -> beim Wegstecken durch Urk:
+      Urk bekommt: Du steckst die schwere Keule zurueck. Zufaellig landet
+                   sie dabei auf Deinem Fuss. Laut schreiend humpelst Du in
+                   der Gegend herum.
+      Der Raum:    Urk steckt eine schwere Keule zurueck. Dummerweise
+                   landet diese direkt auf dem eigenen Fuss. Aua, das tat
+                   sicher weh ... nicht umsonst humpelt er jetzt schreiend
+                   durch die Gegend.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_WIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: UnwieldFunc, WieldFunc
+   Sonstiges:  replace_personal(E), /std/weapon/combat.c
 
 29. Maerz 2004 Gloinson
diff --git a/doc/props/P_UNWIELD_TIME b/doc/props/P_UNWIELD_TIME
index 43128d4..e93a24b 100644
--- a/doc/props/P_UNWIELD_TIME
+++ b/doc/props/P_UNWIELD_TIME
@@ -1,19 +1,33 @@
+
 P_UNWIELD_TIME
+**************
 
-NAME:
-      P_UNWIELD_TIME			"unwield_time"
 
-DEFINIERT IN:
-      /sys/weapon.h
+NAME
+====
 
-BESCHREIBUNG:
-      Enthaelt den Zeitpunkt zu dem ein Living eine Waffe weggesteckt hat und
-      ist im Living gesetzt.
+   P_UNWIELD_TIME                    "unwield_time"
 
-SIEHE AUCH:
-      Verwandt:		P_WEAPON, P_WIELDED, DoUnwield()
-			P_LAST_USE
-      Sonstiges:	P_EQUIP_TIME
-			time()
 
-10.Feb 2005 Gloinson
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt den Zeitpunkt zu dem ein Living eine Waffe weggesteckt hat und
+   ist im Living gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:         P_WEAPON, P_WIELDED, DoUnwield()
+                     P_LAST_USE
+   Sonstiges:        P_EQUIP_TIME
+                     time()
+
+10.Feb 2005 Gloinson
diff --git a/doc/props/P_USED_HANDS b/doc/props/P_USED_HANDS
index 456d32c..b90bd61 100644
--- a/doc/props/P_USED_HANDS
+++ b/doc/props/P_USED_HANDS
@@ -1,21 +1,39 @@
+
 P_USED_HANDS
-NAME:
-    P_USED_HANDS                  "used_hands"
+************
 
-DEFINIERT IN:
-    /sys/living/combat.h
 
-BESCHREIBUNG:
-    Anzahl der Haende in Benutzung.
-    Effektiv nur ein sizeof(P_HANDS_USED_BY).
+NAME
+====
 
-BEMERKUNGEN:
-    Keine echte Property. Die Methode /std/living/combat::_query_used_hands
-    stellt die Daten zusammen. Nicht setzen!
+   P_USED_HANDS                  "used_hands"
 
-SIEHE AUCH:
-    P_HANDS, P_HANDS_USED_BY
-    P_MAX_HANDS, P_FREE_HANDS
-    UseHands, FreeHands
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Haende in Benutzung.
+   Effektiv nur ein sizeof(P_HANDS_USED_BY).
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property. Die Methode /std/living/combat::_query_used_hands
+   stellt die Daten zusammen. Nicht setzen!
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
 
 1. Okt 2012, Gloinson
diff --git a/doc/props/P_VALID_GUILDS b/doc/props/P_VALID_GUILDS
index 2734ad9..f431e7b 100644
--- a/doc/props/P_VALID_GUILDS
+++ b/doc/props/P_VALID_GUILDS
@@ -1,23 +1,41 @@
-NAME:
-	P_VALID_GUILDS			"valid_guilds"                
 
-DEFINIERT IN:
-	/sys/new_skills.h
+P_VALID_GUILDS
+**************
 
-BESCHREIBUNG:
-	Diese Property enthaelt die zugelassenen Gilden in Form von
-	kleingeschriebenen Gildennamen, welche in einem Array
-	zusammengefasst sind. Sie ist nur fuer den Gildenmaster selbst von
-	Bedeutung.
 
-BEISPIELE:
-	Abfrage der zugelassenen Gilden:
-	  find_object("/obj/gildenmaster")->QueryProp(P_VALID_GUILDS)
-	Das ergibt zum Beispiel:
-          ({"abenteurer","zauberer","klerus","kaempfer"})
+NAME
+====
 
-SIEHE AUCH:
-	P_GUILD, /obj/gildenmaster.c
+   P_VALID_GUILDS                  "valid_guilds"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die zugelassenen Gilden in Form von
+   kleingeschriebenen Gildennamen, welche in einem Array
+   zusammengefasst sind. Sie ist nur fuer den Gildenmaster selbst von
+   Bedeutung.
+
+
+BEISPIELE
+=========
+
+   Abfrage der zugelassenen Gilden:
+     find_object("/obj/gildenmaster")->QueryProp(P_VALID_GUILDS)
+   Das ergibt zum Beispiel:
+     ({"abenteurer","zauberer","klerus","kaempfer"})
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, /obj/gildenmaster.c
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_VALUE b/doc/props/P_VALUE
index d9b5961..cb48202 100644
--- a/doc/props/P_VALUE
+++ b/doc/props/P_VALUE
@@ -1,26 +1,43 @@
-NAME:
-    P_VALUE                       "value"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_VALUE
+*******
 
-BESCHREIBUNG:
 
-     - Objekte
-       Wert des Objektes in Goldmuenzen. Diesen Wert erhaelt man beim
-       Verkauf. Kaufen kostet ein Vielfaches hiervon.
+NAME
+====
 
-     - Speisen/Kneipen
-       Wert einer Portion der Speise.
-       
-BEMERKUNGEN:
-     In tragbaren Speisen (erben von /std/food) setzt man mit SetProp
-     den Wert _einer_ Portion. Per QueryProp erhaelt man aber den Gesamt-
-     wert der Speise inclusive des eventuell vorhandenen Behaelters. Der
-     Wert des Behaelters wird dabei aus P_EMPTY_PROPS[P_VALUE] gelesen.
-     
-SIEHE AUCH:
-     Speisen: std/pub, wiz/food, P_EMPTY_PROPS
+   P_VALUE                       "value"
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   - Objekte
+     Wert des Objektes in Goldmuenzen. Diesen Wert erhaelt man beim
+     Verkauf. Kaufen kostet ein Vielfaches hiervon.
+
+   - Speisen/Kneipen
+     Wert einer Portion der Speise.
+
+
+BEMERKUNGEN
+===========
+
+   In tragbaren Speisen (erben von /std/food) setzt man mit SetProp
+   den Wert _einer_ Portion. Per QueryProp erhaelt man aber den Gesamt-
+   wert der Speise inclusive des eventuell vorhandenen Behaelters. Der
+   Wert des Behaelters wird dabei aus P_EMPTY_PROPS[P_VALUE] gelesen.
+
+
+SIEHE AUCH
+==========
+
+   Speisen: std/pub, wiz/food, P_EMPTY_PROPS
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_VALUE_PER_UNIT b/doc/props/P_VALUE_PER_UNIT
index da779c5..3ff1b3c 100644
--- a/doc/props/P_VALUE_PER_UNIT
+++ b/doc/props/P_VALUE_PER_UNIT
@@ -1,14 +1,29 @@
-NAME:
-    P_VALUE_PER_UNIT              "value_per_unit"              
 
-DEFINIERT IN:
-    /sys/properties.h
+P_VALUE_PER_UNIT
+****************
 
-BESCHREIBUNG:
-     Wert in Goldstuecken pro Untereinheit.
 
-BEMERKUNGEN:
-     Deprecated. Bitte SetCoinsPerUnits() (U_CPU) benutzen.
+NAME
+====
+
+   P_VALUE_PER_UNIT              "value_per_unit"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wert in Goldstuecken pro Untereinheit.
+
+
+BEMERKUNGEN
+===========
+
+   Deprecated. Bitte SetCoinsPerUnits() (U_CPU) benutzen.
 
 25.Aug 2015 Gloinson
-
diff --git a/doc/props/P_VARIABLES b/doc/props/P_VARIABLES
index 5e7fb5c..52a979c 100644
--- a/doc/props/P_VARIABLES
+++ b/doc/props/P_VARIABLES
@@ -1,16 +1,28 @@
 
-NAME:
-    P_VARIABLES "variables"                 
+P_VARIABLES
+***********
 
-DEFINIERT IN:
-    /sys/magier.h
 
-BESCHREIBUNG:
-	
-     Interne Variable der Magiershell in dem die mit dem 'Set'-Befehl
-     gesetzten Variablen gespeichert werden.
-     
-     NICHT VON HAND VERAENDERN! IMMER 'SET' VERWENDEN!
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_VARIABLES "variables"
+
+
+DEFINIERT IN
+============
+
+   /sys/magier.h
+
+
+BESCHREIBUNG
+============
+
+   Interne Variable der Magiershell in dem die mit dem 'Set'-Befehl
+   gesetzten Variablen gespeichert werden.
+
+
+
+   NICHT VON HAND VERAENDERN! IMMER 'SET' VERWENDEN!
+
 Letzte Aenderung: 13.02.2003 22:00:00 von Mandragon
diff --git a/doc/props/P_VISIBLE_GUILD b/doc/props/P_VISIBLE_GUILD
index df267b5..92de8b7 100644
--- a/doc/props/P_VISIBLE_GUILD
+++ b/doc/props/P_VISIBLE_GUILD
@@ -1,25 +1,42 @@
+
 P_VISIBLE_GUILD
-NAME:
-     P_VISIBLE_GUILD			"visible_guild"                       
+***************
 
-DEFINIERT IN:
-     /sys/properties.h
 
-BESCHREIBUNG:
-     Diese Property enthaelt die sichtbare Gilde des Lebewesens in Form eines
-     kleingeschriebenen Strings, also die Gilde, die bei Spielern zum
-     Beispiel bei 'kwer' oder 'finger' angezeigt wird. So kann man fremde
-     Gilden testen und trotzdem nach aussen hin in der gleichen Gilde wie
-     zuvor bleiben.
+NAME
+====
 
-BEISPIEL:
-     Wenn man gerne nach aussen hin Zauberer bleiben moechte:
-	  pl->SetProp(P_VISIBLE_GUILD,"zauberer");
-     Nach aussen hin bleibt man jetzt auch Zauberer, wenn P_GUILD eine
-     andere Gilde angibt.
+   P_VISIBLE_GUILD                    "visible_guild"
 
-SIEHE AUCH:
-     P_GUILD, P_DEFAULT_GUILD
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die sichtbare Gilde des Lebewesens in Form eines
+   kleingeschriebenen Strings, also die Gilde, die bei Spielern zum
+   Beispiel bei 'kwer' oder 'finger' angezeigt wird. So kann man fremde
+   Gilden testen und trotzdem nach aussen hin in der gleichen Gilde wie
+   zuvor bleiben.
+
+
+BEISPIEL
+========
+
+   Wenn man gerne nach aussen hin Zauberer bleiben moechte:
+        pl->SetProp(P_VISIBLE_GUILD,"zauberer");
+   Nach aussen hin bleibt man jetzt auch Zauberer, wenn P_GUILD eine
+   andere Gilde angibt.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, P_DEFAULT_GUILD
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/P_VISIBLE_SUBGUILD_TITLE b/doc/props/P_VISIBLE_SUBGUILD_TITLE
index e398f02..e0e5c83 100644
--- a/doc/props/P_VISIBLE_SUBGUILD_TITLE
+++ b/doc/props/P_VISIBLE_SUBGUILD_TITLE
@@ -1,21 +1,39 @@
+
 P_VISIBLE_SUBGUILD_TITLE
-NAME:
-     P_VISIBLE_SUBGUILD_TITLE		"visible_subguild_title"                       
-DEFINIERT IN:
-     /sys/new_skills.h
+************************
 
-BESCHREIBUNG:
-     Diese Property dient dazu, als Magier einen Zusatztitel innerhalb einer
-     Gilde vorzutaeuschen, ohne den tatsaechlichen P_SUBGUILD_TITLE zu
-     aendern.
 
-BEMERKUNGEN:
-     Inhalt der Property kann 0 sein oder ein String.
-     Wenn der Inhalt 0 ist, wird bei QueryProp der P_SUBGUILD_TITLE
-     durchgereicht.
+NAME
+====
 
-SIEHE AUCH:
-     P_GUILD_TITLE, P_SUBGUILD_TITLE
+   P_VISIBLE_SUBGUILD_TITLE           "visible_subguild_title"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property dient dazu, als Magier einen Zusatztitel innerhalb einer
+   Gilde vorzutaeuschen, ohne den tatsaechlichen P_SUBGUILD_TITLE zu
+   aendern.
+
+
+BEMERKUNGEN
+===========
+
+   Inhalt der Property kann 0 sein oder ein String.
+   Wenn der Inhalt 0 ist, wird bei QueryProp der P_SUBGUILD_TITLE
+   durchgereicht.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD_TITLE, P_SUBGUILD_TITLE
+
 Last modified: Mon Aug 13 21:20:00 2001 by Nachtwind
diff --git a/doc/props/P_VISUALBELL b/doc/props/P_VISUALBELL
index 19e8519..8a3d836 100644
--- a/doc/props/P_VISUALBELL
+++ b/doc/props/P_VISUALBELL
@@ -1,37 +1,58 @@
-NAME:
-	P_VISUALBELL			"visualbell"
 
-DEFINIERT IN:
-	/sys/properties.h
+P_VISUALBELL
+************
 
-BESCHREIBUNG:
-	Die Property stellt ein Flag innerhalb von Spielern dar, welches
-	standardmaessig nicht gesetzt ist. In diesem Fall werden Toene,
-	welche innerhalb einiger Funktionen erzeugt werden, auch wirklich an
-	den Spieler geschickt.
-	Setzt man die Property, so erhaelt der Spieler keine Toene mehr.
 
-BEISPIEL:
-	Pieptoene werden durch den ASCII-Code 0x7 praesentiert. Ausgeben
-	kann man diesen folgendermassen:
-	  if(!IS_WIZARD(caster)&&!victim->QueryProp(P_VISUALBELL))
-	    tell_object(victim,sprintf("%c",7));
-	Das waere beispielsweise ein Codestueck aus einem Piepspell. :)
-	Das Opfer bekommt den Piepton hierbei nur ab, wenn der Caster ein
-	Magier ist oder das Spieleropfer die Property P_VISUALBELL gesetzt
-	hat (kann mit Kommando 'ton' vom Spieler beeinflusst werden).
+NAME
+====
 
-BEMERKUNGEN:
-  Achtung: P_VISUALBELL steht auf 1, wenn der Spieler _keine_ Piepstoene
-	hoeren will!
-	Die Funktionalitaet dieser Property wirkt nur soweit, wie sie auch
-	von tonerzeugenden Befehlen selbst unterstuetzt wird. Es ist darauf
-	zu achten, dass P_VISUALBELL zu diesem Zweck grundsaetzlich
-	ausgewertet wird! Eine Ausnahme sei hierbei zugelassen: Magier
-	koennen Spielern grundsaetzlich Toene zusenden.
+   P_VISUALBELL                    "visualbell"
 
-SIEHE AUCH:
-	ton, wecke, erwarte, P_WAITFOR, /std/player/base.c
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property stellt ein Flag innerhalb von Spielern dar, welches
+   standardmaessig nicht gesetzt ist. In diesem Fall werden Toene,
+   welche innerhalb einiger Funktionen erzeugt werden, auch wirklich an
+   den Spieler geschickt.
+   Setzt man die Property, so erhaelt der Spieler keine Toene mehr.
+
+
+BEISPIEL
+========
+
+   Pieptoene werden durch den ASCII-Code 0x7 praesentiert. Ausgeben
+   kann man diesen folgendermassen:
+     if(!IS_WIZARD(caster)&&!victim->QueryProp(P_VISUALBELL))
+       tell_object(victim,sprintf("%c",7));
+   Das waere beispielsweise ein Codestueck aus einem Piepspell. :)
+   Das Opfer bekommt den Piepton hierbei nur ab, wenn der Caster ein
+   Magier ist oder das Spieleropfer die Property P_VISUALBELL gesetzt
+   hat (kann mit Kommando 'ton' vom Spieler beeinflusst werden).
+
+
+BEMERKUNGEN
+===========
+
+   Achtung: P_VISUALBELL steht auf 1, wenn der Spieler _keine_ Piepstoene
+         hoeren will!
+         Die Funktionalitaet dieser Property wirkt nur soweit, wie sie auch
+         von tonerzeugenden Befehlen selbst unterstuetzt wird. Es ist darauf
+         zu achten, dass P_VISUALBELL zu diesem Zweck grundsaetzlich
+         ausgewertet wird! Eine Ausnahme sei hierbei zugelassen: Magier
+         koennen Spielern grundsaetzlich Toene zusenden.
+
+
+SIEHE AUCH
+==========
+
+   ton, wecke, erwarte, P_WAITFOR, /std/player/base.c
+
 Last modified: 07.02.2007 by Zesstra
diff --git a/doc/props/P_VULNERABILITY b/doc/props/P_VULNERABILITY
index 7e1c676..f0e3abb 100644
--- a/doc/props/P_VULNERABILITY
+++ b/doc/props/P_VULNERABILITY
@@ -1,37 +1,62 @@
-NAME:
-     P_VULNERABILITY               "vulnerability"
 
-DEFINIERT IN:
-     /sys/living/combat.h
+P_VULNERABILITY
+***************
 
-WICHTIG:
-     DIESE PROPERTY IST VERALTET! BITTE P_RESISTANCE_STRENGTHS
-     VERWENDEN! AUCH FUNKTIONIERT Set() NICHT WIE ES SOLLTE.
 
-BESCHREIBUNG:
-     Hiermit koennen die Empfindlichkeiten eines Lebewesens definiert
-     werden. Es kann ein Array mit Schadensarten gesetzt werden, jeder
-     Eintrag eines Schadens verdoppelt die Empfindlichkeit gegen
-     diesen.
+NAME
+====
 
-BEMERKUNGEN:
-     - P_RESISTANCE_STRENGTHS spiegelt die Eintraege hier wieder
-     - um genauere Werte anzugeben einen AddResistanceModifier() oder
-       P_RESISTANCE_STRENGTHS benutzen.
-     - P_VULNERABILITY kann und wird nicht aus P_RESISTANCE_STRENGTHS
-       upgedatet
+   P_VULNERABILITY               "vulnerability"
 
-BEISPIELE:
-     // ein NPC mit verdoppelter Eisempfindlichkeit und
-     // vervierfachter Wasserempfindlichkeit
-     SetProp(P_VULNERABILITY, ({DT_COLD, DT_WATER, DT_WATER}));
 
-SIEHE AUCH:
-     simple Resistenz:	P_RESISTANCE
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     Modifikatoren:	AddResistanceModifier, RemoveResistanceModifier(),
-			P_RESISTANCE_MODIFIER
-     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+WICHTIG
+=======
+
+   DIESE PROPERTY IST VERALTET! BITTE P_RESISTANCE_STRENGTHS
+   VERWENDEN! AUCH FUNKTIONIERT Set() NICHT WIE ES SOLLTE.
+
+
+BESCHREIBUNG
+============
+
+   Hiermit koennen die Empfindlichkeiten eines Lebewesens definiert
+   werden. Es kann ein Array mit Schadensarten gesetzt werden, jeder
+   Eintrag eines Schadens verdoppelt die Empfindlichkeit gegen
+   diesen.
+
+
+BEMERKUNGEN
+===========
+
+   - P_RESISTANCE_STRENGTHS spiegelt die Eintraege hier wieder
+   - um genauere Werte anzugeben einen AddResistanceModifier() oder
+     P_RESISTANCE_STRENGTHS benutzen.
+   - P_VULNERABILITY kann und wird nicht aus P_RESISTANCE_STRENGTHS
+     upgedatet
+
+
+BEISPIELE
+=========
+
+   // ein NPC mit verdoppelter Eisempfindlichkeit und
+   // vervierfachter Wasserempfindlichkeit
+   SetProp(P_VULNERABILITY, ({DT_COLD, DT_WATER, DT_WATER}));
+
+
+SIEHE AUCH
+==========
+
+   simple Resistenz:  P_RESISTANCE
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier(),
+                      P_RESISTANCE_MODIFIER
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 1.Dez 2004, Gloinson
diff --git a/doc/props/P_WAITFOR b/doc/props/P_WAITFOR
index a8cf8ee..301838e 100644
--- a/doc/props/P_WAITFOR
+++ b/doc/props/P_WAITFOR
@@ -1,14 +1,30 @@
-NAME:
-     P_WAITFOR                     "waitfor"                     
 
-DEFINIERT IN:
-     /sys/player/base.h
+P_WAITFOR
+*********
 
-BESCHREIBUNG:
-     Die Erwarte-Liste. Ein Array mit den Namen der Erwarteten.
 
-SIEHE AUCH:
-     erwarte
-     P_WAITFOR_REASON, P_WAITFOR_FLAGS
+NAME
+====
+
+   P_WAITFOR                     "waitfor"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Die Erwarte-Liste. Ein Array mit den Namen der Erwarteten.
+
+
+SIEHE AUCH
+==========
+
+   erwarte
+   P_WAITFOR_REASON, P_WAITFOR_FLAGS
 
 16. Feb 2008 Gloinson
diff --git a/doc/props/P_WAITFOR_FLAGS b/doc/props/P_WAITFOR_FLAGS
index f137dd1..5e616b7 100644
--- a/doc/props/P_WAITFOR_FLAGS
+++ b/doc/props/P_WAITFOR_FLAGS
@@ -1,17 +1,34 @@
+
 P_WAITFOR_FLAGS
-NAME:
-     P_WAITFOR_FLAGS                  "waitfor_flags"                     
+***************
 
-DEFINIERT IN:
-     /sys/player/base.h
 
-BESCHREIBUNG:
-     Ein Int. Bisher bekannte Flags:
-     
-     0x01 - "erwarte aus"
+NAME
+====
 
-SIEHE AUCH:
-     erwarte
-     P_WAITFOR, P_WAITFOR_REASON
+   P_WAITFOR_FLAGS                  "waitfor_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Int. Bisher bekannte Flags:
+
+
+
+   0x01 - "erwarte aus"
+
+
+SIEHE AUCH
+==========
+
+   erwarte
+   P_WAITFOR, P_WAITFOR_REASON
 
 16. Feb 2008 Gloinson
diff --git a/doc/props/P_WAITFOR_REASON b/doc/props/P_WAITFOR_REASON
index b19c821..1d997d8 100644
--- a/doc/props/P_WAITFOR_REASON
+++ b/doc/props/P_WAITFOR_REASON
@@ -1,18 +1,35 @@
+
 P_WAITFOR_REASON
-NAME:
-     P_WAITFOR_REASON                  "waitfor_reason"                     
+****************
 
-DEFINIERT IN:
-     /sys/player/base.h
 
-BESCHREIBUNG:
-     Ein Mapping mit den Erwarteten als Schluessel und einem Grund als
-     Key, zB:
-     
-     (["Zook":"muh muh"])
+NAME
+====
 
-SIEHE AUCH:
-     erwarte (erwarte <wen> wegen <was>)
-     P_WAITFOR, P_WAITFOR_FLAGS
+   P_WAITFOR_REASON                  "waitfor_reason"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Mapping mit den Erwarteten als Schluessel und einem Grund als
+   Key, zB:
+
+
+
+   (["Zook":"muh muh"])
+
+
+SIEHE AUCH
+==========
+
+   erwarte (erwarte <wen> wegen <was>)
+   P_WAITFOR, P_WAITFOR_FLAGS
 
 16. Feb 2008 Gloinson
diff --git a/doc/props/P_WANTS_TO_LEARN b/doc/props/P_WANTS_TO_LEARN
index a1553bd..639ab61 100644
--- a/doc/props/P_WANTS_TO_LEARN
+++ b/doc/props/P_WANTS_TO_LEARN
@@ -1,12 +1,25 @@
-NAME:
-    P_WANTS_TO_LEARN              "wants_to_learn"              
 
-DEFINIERT IN:
-    /sys/player/base.h
+P_WANTS_TO_LEARN
+****************
 
-BESCHREIBUNG:
-     Gesetzt, wenn der Magier die Filenamen sehen will.
-     (Nur fuer Magier). Wird diese Property auf 0 gesetzt, gehen auch
-     einige andere Dinge nicht mehr - verfolge zB. Eigentlich sollten
-     dann auch die Magierbefehle wie "goto" usw unterbunden werden -
-     das kommt vielleicht noch.
+
+NAME
+====
+
+   P_WANTS_TO_LEARN              "wants_to_learn"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Magier die Filenamen sehen will.
+   (Nur fuer Magier). Wird diese Property auf 0 gesetzt, gehen auch
+   einige andere Dinge nicht mehr - verfolge zB. Eigentlich sollten
+   dann auch die Magierbefehle wie "goto" usw unterbunden werden -
+   das kommt vielleicht noch.
diff --git a/doc/props/P_WATER b/doc/props/P_WATER
index 6be4fe6..79742c1 100644
--- a/doc/props/P_WATER
+++ b/doc/props/P_WATER
@@ -1,110 +1,130 @@
-NAME:
-    P_WATER                       "water"                       
 
-DEFINIERT IN:
-    /sys/fishing.h
-
-BESCHREIBUNG:
-    Enthaelt den Gewaessertyp. Kann in Raeumen, Angeln und Wasserbehaeltern
-    verwendet werden. Die verfuegbaren Optionen und Funktionsweisen sind in 
-    den nachfolgenden Abschnitten aufgefuehrt.
-
-    Raum:
-    *****
-      Legt den Typ des Gewaessers fest, das es in diesem Raum gibt. Von
-      diesem Typ haengt ab, welche Arten von Fischen es hier standardmaessig
-      gibt und welche Arten von Angeln verwendet werden koennen. 
-      
-      Beispiel:
-
-      SetProp(P_WATER, W_HARBOR);
-      
-      Folgende
-      Typen stehen zur Verfuegung, von denen in Raeumen nur einer gesetzt
-      werden darf:
-
-      Salzwasser:
-        W_BEACH   Strand: Scholle, Flunder, Rochen, Seezunge, Katzenhai
-        W_HARBOR  Hafen: Dorsch, Rochen, Seezunge, Hering, Katzenhai
-        W_OCEAN   Ozean/Meer: Hai, Thunfisch, Kabeljau, Schwertfisch, Seehase,
-                  Seeteufel, Seewolf
-
-      Suesswasser:
-        W_RIVER   Fluss: Piranha, Lachs, Forelle, Bachsaibling
-        W_POOL    Teich: Stichling, Goldfisch, Schlei, Karpfen, Goldorfe
-        W_LAKE    See: Karpfen, Barsch, Hecht, Seesaibling
-        W_ROCK    Bergbach: Lachs, Forelle, Bachsaibling
-        W_STREAM  Bach: Stichling, Bachforelle, Neuauge, Bachsaibling
-
-      Sonstige:
-        W_USER    wenn dieser Gewaessertyp gesetzt wird, MUSS der Raum 
-                  zusaetzlich die Funktion GetAquarium() definieren, die
-                  eine Liste der hier fangbaren Fische zurueckgeben muss.
-                  Beispiel:
-
-                  string* GetAquarium(){ 
-                    return ({"/d/ebene/fraggle/angel/fisch"}); 
-                  }
-        W_DEAD    Lebloses Wasser. Enthaelt keine Fische, man kann
-                  aber die Standardflasche fuellen.
-
-        W_OTHER   1024   // Flasche enthaelt Fluessigkeit!=Wasser
+P_WATER
+*******
 
 
-    Angel:
-    ******
-      Angeln sind ueblicherweise auf bestimmte Anwendungsbereiche ausgelegt.
-      Ob eine Angel in einem Gewaesser benutzt werden kann, haengt davon ab,
-      ob P_WATER in der Angel den Gewaessertyp des Raumes enthaelt. Von den
-      oben genannten Typen koennen mehrere ver-ODER-t gesetzt werden.
-      Verwendung einer fuer das oertliche Gewaesser ungeeigneten Angel fuehrt
-      zu einer um 60+random(60) Sekunden verlaengerten Wartezeit beim Angeln.
-      
-      Beispiel: Setzt man den Gewaessertyp mit 
+NAME
+====
 
-        SetProp(P_WATER, W_HARBOR|W_OCEAN);
+   P_WATER                       "water"
 
-      schaltet das die Angel sowohl fuer Haefen, als auch fuer offene Meere
-      (Ozeane) frei.
 
-      Folgende kombinierte Gewaessertypen sind fuer einfache Angeln 
-      vordefiniert:
+DEFINIERT IN
+============
 
-      Kurze Standardangeln:
-        W_SHORT W_HARBOR|W_RIVER|W_POOL|W_LAKE|W_ROCK|W_USER|W_OCEAN|W_STREAM
-      Spezielle Strandruten:
-        W_LONG  W_BEACH|W_USER
-      funktioniert in allen Salzgewaessern:
-        W_SALT  W_HARBOR|W_OCEAN|W_BEACH
-      funktioniert in allen Suessgewaessern:
-        W_SWEET W_RIVER|W_POOL|W_LAKE|W_ROCK|W_STREAM
+   /sys/fishing.h
 
-      Hinweis: W_DEAD ist in diesen Kombinationen nicht enthalten, da es
-      in solchen Gewaessern ohnehin keine Fische gibt.
-      Die Kombi-Typen enthalten W_USER, um bei entsprechenden Gewaessern
-      zu vermeiden, dass es dort standardmaessig einen Malus auf die 
-      Wartezeit gibt. Standardwert fuer P_WATER in Angeln ist ebenfalls 
-      W_USER.
 
-    Koeder:
-    *******
-      Auch Koeder koennen fuer die Verwendung in bestimmten Gewaessern besser
-      geeignet sein als in anderen, z.B. eine Seeschnecke fuer Salzwasser,
-      ein Mehlwurm hingegen fuer Suesswasser. Gesetzt wird P_WATER hierfuer
-      auf die oben aufgefuehrten Werte.
-      Verwendung eines ungeeigneten Koeders fuehrt zu einer um 60+random(60)
-      Sekunden laengeren Wartezeit beim Angeln.
+BESCHREIBUNG
+============
 
-    Wasserbehaelter:
-    ****************
-      Die Property gibt an, ob der Behaelter Wasser enthaelt oder nicht.
-      Der Wert sollte immer auf den Typ jenes Gewaessers gesetzt sein, aus
-      dem der Behaelter aufgefuellt wurde.
+   Enthaelt den Gewaessertyp. Kann in Raeumen, Angeln und Wasserbehaeltern
+   verwendet werden. Die verfuegbaren Optionen und Funktionsweisen sind in
+   den nachfolgenden Abschnitten aufgefuehrt.
 
-SIEHE AUCH:
+   Raum:
+   *****
+     Legt den Typ des Gewaessers fest, das es in diesem Raum gibt. Von
+     diesem Typ haengt ab, welche Arten von Fischen es hier standardmaessig
+     gibt und welche Arten von Angeln verwendet werden koennen.
 
-    Properties: P_FISH
-    Methoden:   GetAquarium(L)
 
-------------------------------------------------------------------------------
+
+     Beispiel:
+
+     SetProp(P_WATER, W_HARBOR);
+
+
+
+     Folgende
+     Typen stehen zur Verfuegung, von denen in Raeumen nur einer gesetzt
+     werden darf:
+
+     Salzwasser:
+       W_BEACH   Strand: Scholle, Flunder, Rochen, Seezunge, Katzenhai
+       W_HARBOR  Hafen: Dorsch, Rochen, Seezunge, Hering, Katzenhai
+       W_OCEAN   Ozean/Meer: Hai, Thunfisch, Kabeljau, Schwertfisch, Seehase,
+                 Seeteufel, Seewolf
+
+     Suesswasser:
+       W_RIVER   Fluss: Piranha, Lachs, Forelle, Bachsaibling
+       W_POOL    Teich: Stichling, Goldfisch, Schlei, Karpfen, Goldorfe
+       W_LAKE    See: Karpfen, Barsch, Hecht, Seesaibling
+       W_ROCK    Bergbach: Lachs, Forelle, Bachsaibling
+       W_STREAM  Bach: Stichling, Bachforelle, Neuauge, Bachsaibling
+
+     Sonstige:
+       W_USER    wenn dieser Gewaessertyp gesetzt wird, MUSS der Raum
+                 zusaetzlich die Funktion GetAquarium() definieren, die
+                 eine Liste der hier fangbaren Fische zurueckgeben muss.
+                 Beispiel:
+
+                 string* GetAquarium(){
+                   return ({"/d/ebene/fraggle/angel/fisch"});
+                 }
+       W_DEAD    Lebloses Wasser. Enthaelt keine Fische, man kann
+                 aber die Standardflasche fuellen.
+
+       W_OTHER   1024   // Flasche enthaelt Fluessigkeit!=Wasser
+
+
+   Angel:
+   ******
+     Angeln sind ueblicherweise auf bestimmte Anwendungsbereiche ausgelegt.
+     Ob eine Angel in einem Gewaesser benutzt werden kann, haengt davon ab,
+     ob P_WATER in der Angel den Gewaessertyp des Raumes enthaelt. Von den
+     oben genannten Typen koennen mehrere ver-ODER-t gesetzt werden.
+     Verwendung einer fuer das oertliche Gewaesser ungeeigneten Angel fuehrt
+     zu einer um 60+random(60) Sekunden verlaengerten Wartezeit beim Angeln.
+
+
+
+     Beispiel: Setzt man den Gewaessertyp mit
+
+       SetProp(P_WATER, W_HARBOR|W_OCEAN);
+
+     schaltet das die Angel sowohl fuer Haefen, als auch fuer offene Meere
+     (Ozeane) frei.
+
+     Folgende kombinierte Gewaessertypen sind fuer einfache Angeln
+     vordefiniert:
+
+     Kurze Standardangeln:
+       W_SHORT W_HARBOR|W_RIVER|W_POOL|W_LAKE|W_ROCK|W_USER|W_OCEAN|W_STREAM
+     Spezielle Strandruten:
+       W_LONG  W_BEACH|W_USER
+     funktioniert in allen Salzgewaessern:
+       W_SALT  W_HARBOR|W_OCEAN|W_BEACH
+     funktioniert in allen Suessgewaessern:
+       W_SWEET W_RIVER|W_POOL|W_LAKE|W_ROCK|W_STREAM
+
+     Hinweis: W_DEAD ist in diesen Kombinationen nicht enthalten, da es
+     in solchen Gewaessern ohnehin keine Fische gibt.
+     Die Kombi-Typen enthalten W_USER, um bei entsprechenden Gewaessern
+     zu vermeiden, dass es dort standardmaessig einen Malus auf die
+     Wartezeit gibt. Standardwert fuer P_WATER in Angeln ist ebenfalls
+     W_USER.
+
+   Koeder:
+   *******
+     Auch Koeder koennen fuer die Verwendung in bestimmten Gewaessern besser
+     geeignet sein als in anderen, z.B. eine Seeschnecke fuer Salzwasser,
+     ein Mehlwurm hingegen fuer Suesswasser. Gesetzt wird P_WATER hierfuer
+     auf die oben aufgefuehrten Werte.
+     Verwendung eines ungeeigneten Koeders fuehrt zu einer um 60+random(60)
+     Sekunden laengeren Wartezeit beim Angeln.
+
+   Wasserbehaelter:
+   ****************
+     Die Property gibt an, ob der Behaelter Wasser enthaelt oder nicht.
+     Der Wert sollte immer auf den Typ jenes Gewaessers gesetzt sein, aus
+     dem der Behaelter aufgefuellt wurde.
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_FISH
+   Methoden:   GetAquarium(L)
+
 Zuletzt geaendert: 2014-Aug-21, Arathorn
diff --git a/doc/props/P_WC b/doc/props/P_WC
index 042de3d..cfa18e4 100644
--- a/doc/props/P_WC
+++ b/doc/props/P_WC
@@ -1,37 +1,56 @@
-NAME:
-	P_WC				"wc"
 
-DEFINIERT IN:
-	/sys/weapon.h
+P_WC
+****
 
-BESCHREIBUNG:
-	Die Waffenklasse (engl: weapon class), also die Staerke der Waffe,
-	stellt einen numerischen Wert dar, der umso groesser ist, desto mehr
-	Schaden eine Waffe im Kampf anrichtet. Beim Zuecken oder Wegstecken
-	einer Waffe durch ein Lebewesen wird innerhalb des Lebewesens auch
-	die Property P_TOTAL_WC aktualisiert, welche somit immer die
-	aktuelle Angriffsstaerke enthaelt. Beim Zuecken erhaelt sie hierbei
-	die Waffenklasse der Waffe und beim Wegstecken die Angriffsstaerke
-	aus der Property P_HANDS (Kaempfen mit blossen Haenden).
-	Die Waffenklasse von einhaendigen Waffen sollte 150 nicht
-	ueberschreiten, die Obergrenze fuer zweihaendige Waffen liegt bei
-	200. Ausnahmen von dieser Regel beduerfen der Absprache mit dem
-	Erzmagier fuer Ruestungen, Waffen und Monster!
-	Negative Werte bewirken keinen Schaden, allerdings auch keine
-	Heilung.
 
-BEMERKUNGEN:
-	Query- und Setmethoden auf P_WC sollten unbedingt vermieden werden. Sie
-	fuehren in der Regel zu massiven Inkonsistenzen im Mechanismus der 
-	Ruestungsbeschaedigung und -reparatur.
-	Auch mit einer HitFunc() duerfen die Obergrenzen nicht ohne
-	Absprache ueberschritten werden! Ausserdem ist es ratsam, die
-	zusaetzlichen Kampfeigenschaften in P_EFFECTIVE_WC gesondert
-	anzugeben.
+NAME
+====
 
-SIEHE AUCH:
-	/std/weapon.c, /std/weapon/combat.c
-	P_DAMAGED, P_EFFECTIVE_WC, P_WEAPON_TYPE
-	Damage()
-----------------------------------------------------------------------------
-02.10.2007, Zesstra
+   P_WC                            "wc"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Die Waffenklasse (engl: weapon class), also die Staerke der Waffe,
+   stellt einen numerischen Wert dar, der umso groesser ist, desto mehr
+   Schaden eine Waffe im Kampf anrichtet. Beim Zuecken oder Wegstecken
+   einer Waffe durch ein Lebewesen wird innerhalb des Lebewesens auch
+   die Property P_TOTAL_WC aktualisiert, welche somit immer die
+   aktuelle Angriffsstaerke enthaelt. Beim Zuecken erhaelt sie hierbei
+   die Waffenklasse der Waffe und beim Wegstecken die Angriffsstaerke
+   aus der Property P_HANDS (Kaempfen mit blossen Haenden).
+   Die Waffenklasse von einhaendigen Waffen sollte 150 nicht
+   ueberschreiten, die Obergrenze fuer zweihaendige Waffen liegt bei
+   200. Ausnahmen von dieser Regel beduerfen der Absprache mit der
+   Balance.
+   Negative Werte bewirken keinen Schaden, allerdings auch keine
+   Heilung.
+
+
+BEMERKUNGEN
+===========
+
+   Query- und Setmethoden auf P_WC sollten unbedingt vermieden werden. Sie
+   fuehren in der Regel zu massiven Inkonsistenzen im Mechanismus der
+   Ruestungsbeschaedigung und -reparatur.
+   Auch mit einer HitFunc() duerfen die Obergrenzen nicht ohne
+   Absprache ueberschritten werden! Ausserdem ist es ratsam, die
+   zusaetzlichen Kampfeigenschaften in P_EFFECTIVE_WC gesondert
+   anzugeben.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, /std/weapon/combat.c
+   P_DAMAGED, P_EFFECTIVE_WC, P_WEAPON_TYPE
+   Damage()
+
+14.02.2017, Bugfix
diff --git a/doc/props/P_WEAPON b/doc/props/P_WEAPON
index 5b1854c..a7f68b2 100644
--- a/doc/props/P_WEAPON
+++ b/doc/props/P_WEAPON
@@ -1,17 +1,31 @@
+
 P_WEAPON
+********
 
-NAME:
-     P_WEAPON                      "weapon"
 
-DEFINIERT IN:
-     /sys/properties.h
+NAME
+====
 
-BESCHREIBUNG:
-      Momentan gezueckte Waffe. Im Living gesetzt.
+   P_WEAPON                      "weapon"
 
-SIEHE AUCH:
-      Verwandt:		P_ARMOURS
-      Waffen:		P_WC, P_WEAPON_TYPE, P_DAM_TYPE, P_NR_HANDS, P_PARRY
-      Sonstiges:	P_UNWIELD_TIME, P_EQUIP_TIME, P_LAST_USE
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Momentan gezueckte Waffe. Im Living gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:         P_ARMOURS
+   Waffen:           P_WC, P_WEAPON_TYPE, P_DAM_TYPE, P_NR_HANDS, P_PARRY
+   Sonstiges:        P_UNWIELD_TIME, P_EQUIP_TIME, P_LAST_USE
 
 10.Feb 2005 Gloinson
diff --git a/doc/props/P_WEAPON_TEACHER b/doc/props/P_WEAPON_TEACHER
index 685f9e4..ebeb788 100644
--- a/doc/props/P_WEAPON_TEACHER
+++ b/doc/props/P_WEAPON_TEACHER
@@ -1,18 +1,29 @@
-NAME:
-    P_WEAPON_TEACHER              "weapon_teacher"
+
+P_WEAPON_TEACHER
+****************
 
 
-DEFINIERT IN:
-    combat.h
+NAME
+====
 
-BESCHREIBUNG:
-    Diese Property wird in einem Azubi gesetzt (zur Zeit nur fuer die 
-    Kaempfer-Gilde), der selbst ueber die allgemeinen Waffenskills
-    verfuegt.
+   P_WEAPON_TEACHER              "weapon_teacher"
 
-    In diese Property wird der Name eines Kaempfergilden-Ausbilders
-    eingetragen.
 
-    Unter Anleitung des Ausbilders lernt der Azubi dann etwas schneller
-    die allgemeinen Waffenskills.
+DEFINIERT IN
+============
 
+   combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird in einem Azubi gesetzt (zur Zeit nur fuer die
+   Kaempfer-Gilde), der selbst ueber die allgemeinen Waffenskills
+   verfuegt.
+
+   In diese Property wird der Name eines Kaempfergilden-Ausbilders
+   eingetragen.
+
+   Unter Anleitung des Ausbilders lernt der Azubi dann etwas schneller
+   die allgemeinen Waffenskills.
diff --git a/doc/props/P_WEAPON_TYPE b/doc/props/P_WEAPON_TYPE
index 06f3c0b..d200054 100644
--- a/doc/props/P_WEAPON_TYPE
+++ b/doc/props/P_WEAPON_TYPE
@@ -1,31 +1,41 @@
+
 P_WEAPON_TYPE
+*************
 
-NAME:
-     P_WEAPON_TYPE "weapon_type"
 
-DEFINIERT IN:
-     <weapon.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Um was fuer eine Waffe handelt es sich? Es stehen verschiedene
-     Typen zur Auswahl. Man sollte hier nur die in <combat.h> definierten
-     Konstanten verwenden:
+   P_WEAPON_TYPE "weapon_type"
 
-        WT_AMMU           Munition fuer Fernkampfwaffen
-        WT_AXE            Axt
-        WT_CLUB           Keule
-        WT_HANDS          blosse Haende
-        WT_KNIFE          Messer, Dolch
-        WT_RANGED_WEAPON  Fernkampfwaffe
-        WT_SPEAR          Speer
-        WT_STAFF          Kampfstab
-        WT_SWORD          Schwert
-        WT_WHIP           Peitsche
-        WT_MISC           Sonstiges
 
-    Der Waffentyp WT_MISC ist schnoedem Tand und nutzlosem Kram vorbehalten.
-    Waffen dieses Typs duerfen keine P_WC > 0 besitzen oder kampfrelevante
-    Bedeutung haben.
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+    Um was fuer eine Waffe handelt es sich? Es stehen verschiedene
+    Typen zur Auswahl. Man sollte hier nur die in <combat.h> definierten
+    Konstanten verwenden:
+
+       WT_AMMU           Munition fuer Fernkampfwaffen
+       WT_AXE            Axt
+       WT_CLUB           Keule
+       WT_HANDS          blosse Haende
+       WT_KNIFE          Messer, Dolch
+       WT_RANGED_WEAPON  Fernkampfwaffe
+       WT_SPEAR          Speer
+       WT_STAFF          Kampfstab
+       WT_SWORD          Schwert
+       WT_WHIP           Peitsche
+       WT_MISC           Sonstiges
+
+   Der Waffentyp WT_MISC ist schnoedem Tand und nutzlosem Kram vorbehalten.
+   Waffen dieses Typs duerfen keine P_WC > 0 besitzen oder kampfrelevante
+   Bedeutung haben.
+
 Letzte Aenderung: 27. Mai 2015, Arathorn.
diff --git a/doc/props/P_WEAR_FUNC b/doc/props/P_WEAR_FUNC
index edc9bcc..d288187 100644
--- a/doc/props/P_WEAR_FUNC
+++ b/doc/props/P_WEAR_FUNC
@@ -1,24 +1,44 @@
+
 P_WEAR_FUNC
+***********
 
-NAME:
-     P_WEAR_FUNC "wear_func"
 
-DEFINIERT IN:
-     <armour.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Falls ein Objekt eine WearFunc() fuer die Ruestung / Kleidung definiert, 
-     so muss dieses Objekt in dieser Property eingetragen sein.
+   P_WEAR_FUNC "wear_func"
 
-     Die Auswertung dieser Property erfolgt in Laufe eines DoWear() in der
-     nicht-oeffentlichen Funktion _check_wear_restrictions()..
 
-BEISPIELE:
-     Siehe das Beispiel zu WearFunc()
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     armours, clothing, /std/clothing/wear.c, /std/armour/wear.c
-     WearFunc(), InformWear()
+   <armour.h>
 
-LETZTE AeNDERUNG:
-15.02.2009, Zesstra
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine WearFunc() fuer die Ruestung / Kleidung definiert,
+   so muss dieses Objekt in dieser Property eingetragen sein.
+
+   Die Auswertung dieser Property erfolgt in Laufe eines DoWear() in der
+   nicht-oeffentlichen Funktion _check_wear_restrictions()..
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu WearFunc()
+
+
+SIEHE AUCH
+==========
+
+   armours, clothing, /std/clothing/wear.c, /std/armour/wear.c
+   WearFunc(), InformWear()
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/props/P_WEAR_MSG b/doc/props/P_WEAR_MSG
index 31407fa..69fbf44 100644
--- a/doc/props/P_WEAR_MSG
+++ b/doc/props/P_WEAR_MSG
@@ -1,61 +1,82 @@
+
 P_WEAR_MSG
-NAME:
-    P_WEAR_MSG                       "wear_msg"                       
+**********
 
-DEFINIERT IN:
-    /sys/armour.h
 
-BESCHREIBUNG:
-     Zweiteiliges Array mit Meldungen, die beim Anziehen einer Ruestung oder
-     Kleidung an den Spieler und die Umgebung ausgegeben werden.
-     Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
-     Umgebung. Zeilenumbrueche werden automatisch gemacht, existierende
-     jedoch beruecksichtigt.
+NAME
+====
 
-     Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
-     man replace_personal()).
+   P_WEAR_MSG                       "wear_msg"
 
-     [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
-      moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
-      in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
-      den Waffennamen.]
 
-BEISPIELE:
-    SetProp(P_NAME, "Helm");
-    SetProp(P_WEAR_MSG,
-     ({"Du stuelpst die @WEN2 ueber.", 
-       "@WER1 stuelpt sich @WENU2 ueber."}));
+DEFINIERT IN
+============
 
-    -> beim Anziehe durch Urk:
-       Urk bekommt: Du stuelpst dir den Helm ueber.
-       Der Raum:    Urk stuelpt sich einen Helm ueber.
+   /sys/armour.h
 
-    SetProp(P_WEAR_MSG,
-     ({"Als Du Dir den langen Mantel ueberziehst, steckst Du erstmal "
-       "mit Deinem dicken Schaedel fest. Doch nach einem kraeftigen "
-       "Ruck bist Du endlich durch und siehst wieder etwas.",
-       "@WER1 zieht sich einen langen Mantel ueber und bleibt "
-       "prompt mit dem dicken Schaedel stecken. Doch nach einem "
-       "kraeftigen Ruck kann @WERQP1 wieder etwas sehen und grinst Dich "
-       "verlegen an."}));
 
-    -> beim Anziehen durch Urk:
-       Urk bekommt: Als Du Dir den langen Mantel ueberziehst, steckst Du
-		    erstmal mit Deinem dicken Schaedel fest. Doch nach einem
-		    kraeftigen Ruck bist Du endlich durch und siehst wieder
-		    etwas.
+BESCHREIBUNG
+============
 
-       Der Raum:    Urk zieht sich einen langen Mantel ueber und bleibt
-		    prompt mit dem dicken Schaedel stecken. Doch nach
-		    einem kraeftigen Ruck kann er wieder etwas sehen und
-		    grinst Dich verlegen an.
+   Zweiteiliges Array mit Meldungen, die beim Anziehen einer Ruestung oder
+   Kleidung an den Spieler und die Umgebung ausgegeben werden.
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung. Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
 
-SIEHE AUCH:
-     Aehnliches: P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
-                 P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
-     Funktionen: WearFunc, UnwearFunc, InformWear()
-     Sonstiges:  replace_personal(E), clothing, /std/clothing/wear.c
-                 armour, /std/armour/wear.c
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
 
-LETZTE AeNDERUNG:
-15.02.2009
\ No newline at end of file
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Helm");
+   SetProp(P_WEAR_MSG,
+    ({"Du stuelpst die @WEN2 ueber.",
+      "@WER1 stuelpt sich @WENU2 ueber."}));
+
+   -> beim Anziehe durch Urk:
+      Urk bekommt: Du stuelpst dir den Helm ueber.
+      Der Raum:    Urk stuelpt sich einen Helm ueber.
+
+   SetProp(P_WEAR_MSG,
+    ({"Als Du Dir den langen Mantel ueberziehst, steckst Du erstmal "
+      "mit Deinem dicken Schaedel fest. Doch nach einem kraeftigen "
+      "Ruck bist Du endlich durch und siehst wieder etwas.",
+      "@WER1 zieht sich einen langen Mantel ueber und bleibt "
+      "prompt mit dem dicken Schaedel stecken. Doch nach einem "
+      "kraeftigen Ruck kann @WERQP1 wieder etwas sehen und grinst Dich "
+      "verlegen an."}));
+
+   -> beim Anziehen durch Urk:
+      Urk bekommt: Als Du Dir den langen Mantel ueberziehst, steckst Du
+                   erstmal mit Deinem dicken Schaedel fest. Doch nach einem
+                   kraeftigen Ruck bist Du endlich durch und siehst wieder
+                   etwas.
+
+      Der Raum:    Urk zieht sich einen langen Mantel ueber und bleibt
+                   prompt mit dem dicken Schaedel stecken. Doch nach
+                   einem kraeftigen Ruck kann er wieder etwas sehen und
+                   grinst Dich verlegen an.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: WearFunc, UnwearFunc, InformWear()
+   Sonstiges:  replace_personal(E), clothing, /std/clothing/wear.c
+               armour, /std/armour/wear.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009
diff --git a/doc/props/P_WEIGHT b/doc/props/P_WEIGHT
index 22af5f0..4c37e46 100644
--- a/doc/props/P_WEIGHT
+++ b/doc/props/P_WEIGHT
@@ -1,26 +1,43 @@
-NAME:
-    P_WEIGHT                      "weight"                      
 
-DEFINIERT IN:
-    /sys/thing/restrictions.h
+P_WEIGHT
+********
 
-BESCHREIBUNG:
 
-     - Objekte
-       Das Gewicht eines Objetes in Gramm.
+NAME
+====
 
-     - Speisen
-       Gewicht einer Portion der Speise.
-       
-BEMERKUNGEN:
-     In tragbaren Speisen (erben von /std/food) setzt man mit SetProp
-     das Gewicht _einer_ Portion. Per QueryProp erhaelt man aber das
-     Gesamtgewicht der Speise inclusive des eventuell vorhandenen Behaelters.
-     Das Gewicht des Behaelters wird dabei aus P_EMPTY_PROPS[P_WEIGHT]
-     gelesen.
-     
-SIEHE AUCH:
-     Speisen: wiz/food, P_EMPTY_PROPS
+   P_WEIGHT                      "weight"
 
-------------------------------------------------------------------------------
-Last modified: Thu Oct 28 12:15:00 2010 by Caldra
\ No newline at end of file
+
+DEFINIERT IN
+============
+
+   /sys/thing/restrictions.h
+
+
+BESCHREIBUNG
+============
+
+   - Objekte
+     Das Gewicht eines Objetes in Gramm.
+
+   - Speisen
+     Gewicht einer Portion der Speise.
+
+
+BEMERKUNGEN
+===========
+
+   In tragbaren Speisen (erben von /std/food) setzt man mit SetProp
+   das Gewicht _einer_ Portion. Per QueryProp erhaelt man aber das
+   Gesamtgewicht der Speise inclusive des eventuell vorhandenen Behaelters.
+   Das Gewicht des Behaelters wird dabei aus P_EMPTY_PROPS[P_WEIGHT]
+   gelesen.
+
+
+SIEHE AUCH
+==========
+
+   Speisen: wiz/food, P_EMPTY_PROPS
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/props/P_WEIGHT_PERCENT b/doc/props/P_WEIGHT_PERCENT
index 7bb1ad3..a4d0506 100644
--- a/doc/props/P_WEIGHT_PERCENT
+++ b/doc/props/P_WEIGHT_PERCENT
@@ -1,25 +1,47 @@
-NAME:
-    P_WEIGHT_PERCENT              "weight_percent"              
 
-DEFINIERT IN:
-    /sys/properties.h
+P_WEIGHT_PERCENT
+****************
 
-BESCHREIBUNG:
-     Diese Property gibt an, wieviel Prozent des Gewichts des Inhaltes
-     "nach aussen" wiedergegeben werden.
 
-BEMERKUNGEN:
-     Alle Werte die < 50% liegen sollten sehr gut begruendet und mit Vor-
-     sicht verwendet werden. Hier koennten dann zum Beispiel P_MAX_OBJECTS
-     auf einen kleinen Wert begrenzt werden.
+NAME
+====
 
-     Container die hier einen Wert ueber dem des Postpakets haben, sollten
-     auch schwer zu erreichen sein. Auf jeden Fall mit dem Regionsmagier
-     besprechen!
+   P_WEIGHT_PERCENT              "weight_percent"
 
-BEISPIELE:
-     Um sich zu orientieren kann das Postpaket von Loco als Beispiel hin-
-     zugezogen werden (/p/service/loco/obj/parcel).
 
-SIEHE AUCH:
-     P_MAX_OBJECTS, P_MAX_WEIGHT, P_LIGHT_TRANSPARENCY, container
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, wieviel Prozent des Gewichts des Inhaltes
+   "nach aussen" wiedergegeben werden.
+
+
+BEMERKUNGEN
+===========
+
+   Alle Werte die < 50% liegen sollten sehr gut begruendet und mit Vor-
+   sicht verwendet werden. Hier koennten dann zum Beispiel P_MAX_OBJECTS
+   auf einen kleinen Wert begrenzt werden.
+
+   Container die hier einen Wert ueber dem des Postpakets haben, sollten
+   auch schwer zu erreichen sein. Auf jeden Fall mit dem Regionsmagier
+   besprechen!
+
+
+BEISPIELE
+=========
+
+   Um sich zu orientieren kann das Postpaket von Loco als Beispiel hin-
+   zugezogen werden (/p/service/loco/obj/parcel).
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_OBJECTS, P_MAX_WEIGHT, P_LIGHT_TRANSPARENCY, container
diff --git a/doc/props/P_WEIGHT_PER_UNIT b/doc/props/P_WEIGHT_PER_UNIT
index 2796b7b..c777b65 100644
--- a/doc/props/P_WEIGHT_PER_UNIT
+++ b/doc/props/P_WEIGHT_PER_UNIT
@@ -1,13 +1,29 @@
-NAME:
-    P_WEIGHT_PER_UNIT             "weight_per_unit"             
 
-DEFINIERT IN:
-    /sys/properties.h
+P_WEIGHT_PER_UNIT
+*****************
 
-BESCHREIBUNG:
-     Gewicht in Gramm pro Untereinheit.
 
-BEMERKUNGEN:
-     Deprecated. Bitte SetGramsPerUnits() (U_GPU) benutzen.
+NAME
+====
+
+   P_WEIGHT_PER_UNIT             "weight_per_unit"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gewicht in Gramm pro Untereinheit.
+
+
+BEMERKUNGEN
+===========
+
+   Deprecated. Bitte SetGramsPerUnits() (U_GPU) benutzen.
 
 25.Aug 2015 Gloinson
diff --git a/doc/props/P_WIELDED b/doc/props/P_WIELDED
index bce8580..26bcff7 100644
--- a/doc/props/P_WIELDED
+++ b/doc/props/P_WIELDED
@@ -1,21 +1,37 @@
+
 P_WIELDED
+*********
 
-NAME:
-     P_WIELDED "wielded"
 
-DEFINIERT IN:
-     <weapon.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Ist diese Property gesetzt, dann ist die Waffe gerade gezueckt. Der
-     Traeger ist in der Property vermerkt.
+   P_WIELDED "wielded"
 
-BEMERKUNGEN:
-     Diese Property laesst sich nur abfragen!
 
-SIEHE AUCH:
-     /std/weapon.c
-     P_WEAPON
+DEFINIERT IN
+============
 
-----------------------------------------------------------------------------
-Last modified: 2015-Jul-11, Arathorn 
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property gesetzt, dann ist die Waffe gerade gezueckt. Der
+   Traeger ist in der Property vermerkt.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property laesst sich nur abfragen!
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c
+   P_WEAPON
+
+Last modified: 2015-Jul-11, Arathorn
diff --git a/doc/props/P_WIELD_FUNC b/doc/props/P_WIELD_FUNC
index fac481b..fbe49a7 100644
--- a/doc/props/P_WIELD_FUNC
+++ b/doc/props/P_WIELD_FUNC
@@ -1,22 +1,38 @@
+
 P_WIELD_FUNC
+************
 
-NAME:
-     P_WIELD_FUNC "wield_func"
 
-DEFINIERT IN:
-     <weapon.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Falls ein Objekt eine WieldFunc() fuer die Waffe definiert, so muss
-     dieses Objekt in dieser Property eingetragen werden.
+   P_WIELD_FUNC "wield_func"
 
-     Die Auswertung dieser Property erfolgt in wield_me().
 
-BEISPIELE:
-     Siehe das Beispiel zu WieldFunc()
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     /std/weapon.c, WieldFunc()
+   <weapon.h>
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine WieldFunc() fuer die Waffe definiert, so muss
+   dieses Objekt in dieser Property eingetragen werden.
+
+   Die Auswertung dieser Property erfolgt in wield_me().
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu WieldFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, WieldFunc()
+
 Last modified: Sun May 19 15:40:02 1996 by Wargon
diff --git a/doc/props/P_WIELD_MSG b/doc/props/P_WIELD_MSG
index 357a304..fa9dafc 100644
--- a/doc/props/P_WIELD_MSG
+++ b/doc/props/P_WIELD_MSG
@@ -1,57 +1,74 @@
+
 P_WIELD_MSG
-NAME:
-     P_WIELD_MSG                       "wield_msg" 
+***********
 
-DEFINIERT IN:
-     /sys/weapon.h
 
-BESCHREIBUNG:
+NAME
+====
 
-     Zweiteiliges Array mit Meldungen, die beim Zuecken einer Waffe an den
-     Spieler und die Umgebung ausgegeben werden.
-     Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
-     Umgebung.  Zeilenumbrueche werden automatisch gemacht, existierende
-     jedoch beruecksichtigt.
+   P_WIELD_MSG                       "wield_msg"
 
-     Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
-     man replace_personal()).
 
-     [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
-      moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
-      in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
-      den Waffennamen.]
+DEFINIERT IN
+============
 
-BEISPIELE:
-    SetProp(P_NAME, "Streitkolben");
-    SetProp(P_WIELD_MSG,
-     ({"Du zueckst @WEN2 und stoesst einen markerschuetternden Schrei aus.", 
-       "@WER1 zueckt @WENU2 und stoesst einen markerschuetternden Schrei "
-       "aus." }));
+   /sys/weapon.h
 
-    -> beim Zuecken durch Urk:
-       Urk bekommt: Du zueckst den Streitkolben und stoesst einen
-		    markerschuetternden Schrei aus.
-       Der Raum:    Urk zueckt einen Streitkolben und stoesst einen
-		    markerschuetternden Schrei aus.
 
-    SetProp(P_WIELD_MSG,
-     ({"Du zueckst den klobigen Streitkolben und fuchtelst damit "
-       "wild vor Deiner Nase herum.",
-       "@WER1 zueckt einen klobigen Streitkolben und fuchtelt "
-       "damit wild vor der eigenen Nase herum. Hoffentlich verletzt "
-       "@WERQP1 sich dabei nicht ..."}));
+BESCHREIBUNG
+============
 
-    -> beim Zuecken durch Urk:
-       Urk bekommt: Du zueckst den klobigen Streitkolben und fuchtelst
-                    damit wild vor Deiner Nase herum.
-       Der Raum:    Urk zueckt einen klobigen Streitkolben und fuchtelt
-		    damit wild vor der eigenen Nase herum. Hoffentlich
-                    verletzt er sich dabei nicht ...
+   Zweiteiliges Array mit Meldungen, die beim Zuecken einer Waffe an den
+   Spieler und die Umgebung ausgegeben werden.
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung.  Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
 
-SIEHE AUCH:
-     Aehnliches: P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
-                 P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
-     Funktionen: UnwieldFunc, WieldFunc
-     Sonstiges:  replace_personal(E), /std/weapon/combat.c
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Streitkolben");
+   SetProp(P_WIELD_MSG,
+    ({"Du zueckst @WEN2 und stoesst einen markerschuetternden Schrei aus.",
+      "@WER1 zueckt @WENU2 und stoesst einen markerschuetternden Schrei "
+      "aus." }));
+
+   -> beim Zuecken durch Urk:
+      Urk bekommt: Du zueckst den Streitkolben und stoesst einen
+                   markerschuetternden Schrei aus.
+      Der Raum:    Urk zueckt einen Streitkolben und stoesst einen
+                   markerschuetternden Schrei aus.
+
+   SetProp(P_WIELD_MSG,
+    ({"Du zueckst den klobigen Streitkolben und fuchtelst damit "
+      "wild vor Deiner Nase herum.",
+      "@WER1 zueckt einen klobigen Streitkolben und fuchtelt "
+      "damit wild vor der eigenen Nase herum. Hoffentlich verletzt "
+      "@WERQP1 sich dabei nicht ..."}));
+
+   -> beim Zuecken durch Urk:
+      Urk bekommt: Du zueckst den klobigen Streitkolben und fuchtelst
+                   damit wild vor Deiner Nase herum.
+      Der Raum:    Urk zueckt einen klobigen Streitkolben und fuchtelt
+                   damit wild vor der eigenen Nase herum. Hoffentlich
+                   verletzt er sich dabei nicht ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: UnwieldFunc, WieldFunc
+   Sonstiges:  replace_personal(E), /std/weapon/combat.c
 
 29. Maerz 2004 Gloinson
diff --git a/doc/props/P_WIMPY b/doc/props/P_WIMPY
index 97633fa..d0ba078 100644
--- a/doc/props/P_WIMPY
+++ b/doc/props/P_WIMPY
@@ -1,15 +1,30 @@
-NAME:
-    P_WIMPY                       "wimpy"                       
 
-DEFINIERT IN:
-    /sys/properties.h
+P_WIMPY
+*******
 
-BESCHREIBUNG:
-     Numerischer Wert. Das Lebewesen flieht, wenn die Lebenspunkte
-     unter diesen Wert sinken.
 
-SIEHE AUCH:
-     P_WIMPY_DIRECTION
+NAME
+====
 
-----------------------------------------------------------------------------
+   P_WIMPY                       "wimpy"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert. Das Lebewesen flieht, wenn die Lebenspunkte
+   unter diesen Wert sinken.
+
+
+SIEHE AUCH
+==========
+
+   P_WIMPY_DIRECTION
+
 Letzte Aenderung: Mon Feb 12 17:50:47 2001 von Tilly
diff --git a/doc/props/P_WIMPY_DIRECTION b/doc/props/P_WIMPY_DIRECTION
index 57d2f01..11bedeb 100644
--- a/doc/props/P_WIMPY_DIRECTION
+++ b/doc/props/P_WIMPY_DIRECTION
@@ -1,22 +1,40 @@
-NAME:
-    P_WIMPY_DIRECTION             "wimpy_dir"                   
 
-DEFINIERT IN:
-    /sys/properties.h
+P_WIMPY_DIRECTION
+*****************
 
-BESCHREIBUNG:
-     Fluchtrichtung eines Spielers oder NPCs
 
-BEMERKUNGEN:
-     Die Fluchtrichtung kann nicht nur ein Ausgang (sueden, osten, ...)
-     sein, sondern auch ein Kommando, welches der Spieler beim Anschlagen
-     ausfuehrt (z.b. <kletter seil hoch> oder <rufe Elender Mist!>).
+NAME
+====
 
-     Ausgefuehrt wird die Fluchtrichtung per command(), wenn die LP des 
-     Lebewesens unter die mit <vorsicht> angegebe LP-Grenze sinkt.
+   P_WIMPY_DIRECTION             "wimpy_dir"
 
-SIEHE AUCH:
-     P_WIMPY
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Fluchtrichtung eines Spielers oder NPCs
+
+
+BEMERKUNGEN
+===========
+
+   Die Fluchtrichtung kann nicht nur ein Ausgang (sueden, osten, ...)
+   sein, sondern auch ein Kommando, welches der Spieler beim Anschlagen
+   ausfuehrt (z.b. <kletter seil hoch> oder <rufe Elender Mist!>).
+
+   Ausgefuehrt wird die Fluchtrichtung per command(), wenn die LP des
+   Lebewesens unter die mit <vorsicht> angegebe LP-Grenze sinkt.
+
+
+SIEHE AUCH
+==========
+
+   P_WIMPY
+
 Letzte Aenderung: Mon Feb 12 17:46:47 2001 von Tilly
diff --git a/doc/props/P_WIZ_DEBUG b/doc/props/P_WIZ_DEBUG
index cf7ac21..0bea2ad 100644
--- a/doc/props/P_WIZ_DEBUG
+++ b/doc/props/P_WIZ_DEBUG
@@ -1,20 +1,37 @@
-NAME:
-    P_WIZ_DEBUG                    "std_p_wizdebug"
 
-DEFINIERT IN:
-    /sys/player/comm.h
+P_WIZ_DEBUG
+***********
 
-BESCHREIBUNG:
-     Gesetzt, wenn der Magier (oder ein Testspieler) Debugmeldungen wahrnehmen
-     moechte.
-     Debugmeldungen sind Nachrichten, die mit dem Typ MT_DEBUG an ReceiveMsg()
-     uebergeben werden.
-     
-     Die Werte von P_WIZ_DEBUG sind zur Zeit 0 oder 1, das kann sich aber
-     jederzeit aendern.
-     Magier aendern diese Prop bitte ueber "mschau".
 
-SIEHE AUCH:
-     mschau
-     P_WANTS_TO_LEARN
+NAME
+====
 
+   P_WIZ_DEBUG                    "std_p_wizdebug"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Magier (oder ein Testspieler) Debugmeldungen wahrnehmen
+   moechte.
+   Debugmeldungen sind Nachrichten, die mit dem Typ MT_DEBUG an ReceiveMsg()
+   uebergeben werden.
+
+
+
+   Die Werte von P_WIZ_DEBUG sind zur Zeit 0 oder 1, das kann sich aber
+   jederzeit aendern.
+   Magier aendern diese Prop bitte ueber "mschau".
+
+
+SIEHE AUCH
+==========
+
+   mschau
+   P_WANTS_TO_LEARN
diff --git a/doc/props/P_WORN b/doc/props/P_WORN
index 7afd03e..999ab76 100644
--- a/doc/props/P_WORN
+++ b/doc/props/P_WORN
@@ -1,40 +1,63 @@
+
 P_WORN
+******
 
-NAME:
-     P_WORN "worn"
 
-DEFINIERT IN:
-     <armour.h>
+NAME
+====
 
-BESCHREIBUNG:
-     Mittels dieser Property laesst sich ermitteln, ob eine Ruestung bzw. 
-     Kleidung derzeit getragen wird und wenn ja, von wem.
+   P_WORN "worn"
 
-     Entweder enthaelt die Property den Wert 0, oder sie enthaelt den
-     Traeger der Ruestung / Kleidung (als Objekt).
 
-BEMERKUNGEN:
-     Diese Property laesst sich nur abfragen!
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Eine DefendFunc() koennte dem Traeger der Ruestung wie folgt etwas
-     mitteilen:
+   <armour.h>
 
-     // Die Ruestung gibt Schutz gegen Feuer
-     int DefendFunc(string *dtyp, mixed spell, object enemy)
-     {
-       if (member(dtyp, DT_FIRE) != -1) {
-         // P_WORN ist auf jeden Fall gesetzt, da sonst die
-         // DefendFunc ueberhaupt nicht aufgerufen wuerde!
-         tell_object(QueryProp(P_WORN),
-           "Die Flammen zuengeln nur leicht ueber die Ruestung.\n");
-         return 10;
-       }
-       return 0;
+
+BESCHREIBUNG
+============
+
+   Mittels dieser Property laesst sich ermitteln, ob eine Ruestung bzw.
+   Kleidung derzeit getragen wird und wenn ja, von wem.
+
+   Entweder enthaelt die Property den Wert 0, oder sie enthaelt den
+   Traeger der Ruestung / Kleidung (als Objekt).
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property laesst sich nur abfragen!
+
+
+BEISPIELE
+=========
+
+   Eine DefendFunc() koennte dem Traeger der Ruestung wie folgt etwas
+   mitteilen:
+
+   // Die Ruestung gibt Schutz gegen Feuer
+   int DefendFunc(string *dtyp, mixed spell, object enemy)
+   {
+     if (member(dtyp, DT_FIRE) != -1) {
+       // P_WORN ist auf jeden Fall gesetzt, da sonst die
+       // DefendFunc ueberhaupt nicht aufgerufen wuerde!
+       tell_object(QueryProp(P_WORN),
+         "Die Flammen zuengeln nur leicht ueber die Ruestung.\n");
+       return 10;
      }
+     return 0;
+   }
 
-SIEHE AUCH:
-     clothing, /std/clothing.c, armour, /std/armour.c
 
-LETZTE AeNDERUNG:
-15.02.2009, Zesstra
\ No newline at end of file
+SIEHE AUCH
+==========
+
+   clothing, /std/clothing.c, armour, /std/armour.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/props/P_XP b/doc/props/P_XP
index 097ec65..649f4e0 100644
--- a/doc/props/P_XP
+++ b/doc/props/P_XP
@@ -1,59 +1,81 @@
-NAME:
-     P_XP                    "xp"
 
-DEFINIERT IN:
-     /sys/living/life.h
+P_XP
+****
 
-BESCHREIBUNG:
-     Diese Property enthaelt die Anzahl der Erfahrungspunkte, die ein
-     Lebewesen erreicht hat. Dies geschieht insbesondere durch
-     Kampfhandlungen, wobei es sowohl fuer Einzelschlaege als auch fuer
-     das Toeten eines Opfers Punkte gibt.
 
-     Bei einzelnen Schlaegen ist die Vergabe von Erfahrungspunkten davon
-     abhaengig, wie stark man das Opfer getroffen hat, und welche
-     Gesamtwaffenklasse es hat (damage*P_TOTAL_WC/10).
+NAME
+====
 
-     Beim Todesschlag erhaelt man zusaetzlich die Erfahrungspunkte des
-     Opfers geteilt durch 100 (P_XP/100). Dieser Wert wird allerdings
-     gegebenenfalls auf ein Team aufgeteilt, sofern der Angreifer sich in
-     einem solchigen befindet.
+   P_XP                    "xp"
 
-BEISPIEL:
-     NPC's gibt man im allgemeinen einen levelabhaengigen Sockelwert an
-     Erfahrungspunkten mit, da sie nicht allzuoft selbst Gegner toeten
-     und somit kaum die Moeglichkeit haben, diese Punkte selbst
-     anzusammeln. Trotzdem sollen sie ja dem Spieler eine gewisse Anzahl
-     an Erfahrungspunkten liefern, wenn sie getoetet werden:
 
-       include "/sys/living/life.h"
-       inherit "std/npc";
-       void create() {
-         ...
-         SetProp(P_XP,25000000);
-       }
+DEFINIERT IN
+============
 
-     Beim Toeten gibt es nun 25.000.000/100 = 250.000 Erfahrungspunkte.
-     Damit wird der NPC sogar automatisch fuer die Vergabe von
-     Erstkillstufenpunkten vorgesehen.
+   /sys/living/life.h
 
-     Die Funktion create_default_npc() setzt P_XP und andere Eigenschaften
-     auf geeignete Werte.
 
-BEMERKUNGEN:
-     Die Vergabe von Erstkillstufenpunkten kann man ueber die Property
-     P_NO_SCORE unterbinden, die Vergabe von Erfahrungspunkten ueber
-     P_NO_XP. Automatisch werden Lebewesen fuer Erstkillstufenpunkte
-     vorgesehen, sofern sie eine der folgenden Grenzen ueberschritten
-     haben:
-       SCORE_LOW_MARK:  200000 (1 Stufenpunkt)
-       SCORE_HIGH_MARK: 600000 (2 Stufenpunkte)
-     Definiert sind die Konstanten in "/secure/scoremaster.h".
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     Funktionen:  AddExp(), do_damage()
-     Verwandt:    P_NO_XP, P_LAST_XP
-     Sonstiges:   P_NO_SCORE, create_default_npc()
-                  P_TOTAL_WC
+   Diese Property enthaelt die Anzahl der Erfahrungspunkte, die ein
+   Lebewesen erreicht hat. Dies geschieht insbesondere durch
+   Kampfhandlungen, wobei es sowohl fuer Einzelschlaege als auch fuer
+   das Toeten eines Opfers Punkte gibt.
 
-14.Feb 2007 Gloinson
\ No newline at end of file
+   Bei einzelnen Schlaegen ist die Vergabe von Erfahrungspunkten davon
+   abhaengig, wie stark man das Opfer getroffen hat, und welche
+   Gesamtwaffenklasse es hat (damage*P_TOTAL_WC/10).
+
+   Beim Todesschlag erhaelt man zusaetzlich die Erfahrungspunkte des
+   Opfers geteilt durch 100 (P_XP/100). Dieser Wert wird allerdings
+   gegebenenfalls auf ein Team aufgeteilt, sofern der Angreifer sich in
+   einem solchigen befindet.
+
+
+BEISPIEL
+========
+
+   NPC's gibt man im allgemeinen einen levelabhaengigen Sockelwert an
+   Erfahrungspunkten mit, da sie nicht allzuoft selbst Gegner toeten
+   und somit kaum die Moeglichkeit haben, diese Punkte selbst
+   anzusammeln. Trotzdem sollen sie ja dem Spieler eine gewisse Anzahl
+   an Erfahrungspunkten liefern, wenn sie getoetet werden:
+
+     include "/sys/living/life.h"
+     inherit "std/npc";
+     void create() {
+       ...
+       SetProp(P_XP,25000000);
+     }
+
+   Beim Toeten gibt es nun 25.000.000/100 = 250.000 Erfahrungspunkte.
+   Damit wird der NPC sogar automatisch fuer die Vergabe von
+   Erstkillstufenpunkten vorgesehen.
+
+   Die Funktion create_default_npc() setzt P_XP und andere Eigenschaften
+   auf geeignete Werte.
+
+
+BEMERKUNGEN
+===========
+
+   Die Vergabe von Erstkillstufenpunkten kann man ueber die Property
+   P_NO_SCORE unterbinden, die Vergabe von Erfahrungspunkten ueber
+   P_NO_XP. Automatisch werden Lebewesen fuer Erstkillstufenpunkte
+   vorgesehen, sofern sie eine der folgenden Grenzen ueberschritten
+   haben:
+     SCORE_LOW_MARK:  200000 (1 Stufenpunkt)
+     SCORE_HIGH_MARK: 600000 (2 Stufenpunkte)
+   Definiert sind die Konstanten in "/secure/scoremaster.h".
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp(), do_damage()
+   Verwandt:    P_NO_XP, P_LAST_XP
+   Sonstiges:   P_NO_SCORE, create_default_npc()
+                P_TOTAL_WC
+
+14.Feb 2007 Gloinson
diff --git a/doc/props/P_X_ATTR_MOD b/doc/props/P_X_ATTR_MOD
index c6a8bda..14ab9a4 100644
--- a/doc/props/P_X_ATTR_MOD
+++ b/doc/props/P_X_ATTR_MOD
@@ -1,46 +1,68 @@
-NAME:
-    P_X_ATTR_MOD                  "extern_attributes_modifier"
 
-DEFINIERT IN:
-    /sys/living/attributes.h
+P_X_ATTR_MOD
+************
 
-BESCHREIBUNG:
-    Mapping, das die Attribute des Spielers veraendert, der das Objekt bei
-    sich hat.
 
-    Zu beachten:
-    Diese Property bitte _ausschliesslich_ mit SetProp aendern, weil damit
-    gleichzeitig UpdateAttributes() im Lebewesen aufgerufen und ggf. das
-    Objekt als Statmodifizierer registriert wird.
+NAME
+====
 
-    Diese Property ist fuer Krankheiten, Flueche etc. gedacht. Bei
-    Waffen/Ruestungen, die die Attribute beeinflussen sollen, verwendet
-    man besser P_M_ATTR_MOD.
+   P_X_ATTR_MOD                  "extern_attributes_modifier"
 
-    P_X_ATTR_MOD und P_M_ATTR_MOD duerfen einen gemeinsamen kumulierten
-    positiven Grenzwert nicht ueberschreiten. Dieser Grenzwert,
-    CUMULATIVE_ATTR_LIMIT, ist in /sys/living/attributes.h definiert.
 
-BEMERKUNGEN:
-    Die Methode /std/thing/restrictions::_set_extern_attributes_modifier()
-    benachrichtigt tragende Livings ueber Aenderungen.
-    Bitte beim "Loeschen" der Prop nicht den Wert des jew. Attributes im
-    uebergebenen Mapping als 0 uebergeben, sondern das Key/Werte-Paar ganz
-    entfernen und bzw. ein leeres Mapping oder 0 uebergeben.
+DEFINIERT IN
+============
 
-BEISPIEL:
-    // Dem Lebewesen, das das Objekt bei sich hat, wird 2 von A_INT abgezogen
-    SetProp(P_X_ATTR_MOD,([A_INT:-2]));
+   /sys/living/attributes.h
 
-    // Stats wiederherstellen:
-    SetProp(P_X_ATTR_MOD,([]));
 
-SIEHE AUCH:
-    QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-    SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-    SetTimedAttrModifier(), QueryTimedAttrModifier(),
-    DeleteTimedAttrModifier(),
-    P_X_HEALTH_MOD, P_M_HEALTH_MOD, P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
-    P_TIMED_ATTR_MOD, P_M_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+BESCHREIBUNG
+============
+
+   Mapping, das die Attribute des Spielers veraendert, der das Objekt bei
+   sich hat.
+
+   Zu beachten:
+   Diese Property bitte _ausschliesslich_ mit SetProp aendern, weil damit
+   gleichzeitig UpdateAttributes() im Lebewesen aufgerufen und ggf. das
+   Objekt als Statmodifizierer registriert wird.
+
+   Diese Property ist fuer Krankheiten, Flueche etc. gedacht. Bei
+   Waffen/Ruestungen, die die Attribute beeinflussen sollen, verwendet
+   man besser P_M_ATTR_MOD.
+
+   P_X_ATTR_MOD und P_M_ATTR_MOD duerfen einen gemeinsamen kumulierten
+   positiven Grenzwert nicht ueberschreiten. Dieser Grenzwert,
+   CUMULATIVE_ATTR_LIMIT, ist in /sys/living/attributes.h definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Die Methode /std/thing/restrictions::_set_extern_attributes_modifier()
+   benachrichtigt tragende Livings ueber Aenderungen.
+   Bitte beim "Loeschen" der Prop nicht den Wert des jew. Attributes im
+   uebergebenen Mapping als 0 uebergeben, sondern das Key/Werte-Paar ganz
+   entfernen und bzw. ein leeres Mapping oder 0 uebergeben.
+
+
+BEISPIEL
+========
+
+   // Dem Lebewesen, das das Objekt bei sich hat, wird 2 von A_INT abgezogen
+   SetProp(P_X_ATTR_MOD,([A_INT:-2]));
+
+   // Stats wiederherstellen:
+   SetProp(P_X_ATTR_MOD,([]));
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_X_HEALTH_MOD, P_M_HEALTH_MOD, P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_TIMED_ATTR_MOD, P_M_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
 02.02.2016, Gloinson
diff --git a/doc/props/P_X_HEALTH_MOD b/doc/props/P_X_HEALTH_MOD
index d78d2bf..69aafab 100644
--- a/doc/props/P_X_HEALTH_MOD
+++ b/doc/props/P_X_HEALTH_MOD
@@ -1,36 +1,60 @@
-NAME:
-    P_X_HEALTH_MOD                  "extern_health_modifier"
 
-DEFINIERT IN:
-    /sys/living/attributes.h
+P_X_HEALTH_MOD
+**************
 
-BESCHREIBUNG:
-    Mapping, mit dem die maximalen Lebenspunkte und Magiepunkte eines
-    Spielers veraendert werden, der dieses Objekt bei sich traegt.
 
-    Zu beachten: Diese Property bitte _ausschliesslich_ mit SetProp
-    aendern, weil damit gleichzeitig UpdateAttributes() im
-    Lebewesen aufgerufen und ggf. das Objekt als Statmodifizierer 
-    registriert wird.
+NAME
+====
 
-    Bei Ruestungen/Waffen, die diese Wirkung entfalten sollen, verwendet
-    man besser P_M_HEALTH_MOD.
+   P_X_HEALTH_MOD                  "extern_health_modifier"
 
-BEMERKUNGEN:
-    Bitte bei "Loeschen" der Prop nicht den Wert des jew. Attributes im 
-    uebergebenen Mapping als 0 uebergeben, sondern das Key/Werte-Paar ganz 
-    entfernen und ggf. ein leeres Mapping oder 0 uebergeben.
 
-BEISPIEL:
-    // Dem Spieler, der das Objekt bei sich traegt, wird P_MAX_HP um 5
-    // erhoeht und P_MAX_SP um 5 erniedrigt.
-    SetProp(P_X_HEALTH_MOD,([P_HP:5,P_SP:-5]));
-    // Stats wiederherstellen:
-    SetProp(P_X_HEALTH_MOD,([]);
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    P_M_HEALTH_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, balance
+   /sys/living/attributes.h
 
-LETZTE AeNDERUNG:
-    Sat, 06.02.1999, 14:00:00 von Paracelsus
 
+BESCHREIBUNG
+============
+
+   Mapping, mit dem die maximalen Lebenspunkte und Magiepunkte eines
+   Spielers veraendert werden, der dieses Objekt bei sich traegt.
+
+   Zu beachten: Diese Property bitte _ausschliesslich_ mit SetProp
+   aendern, weil damit gleichzeitig UpdateAttributes() im
+   Lebewesen aufgerufen und ggf. das Objekt als Statmodifizierer
+   registriert wird.
+
+   Bei Ruestungen/Waffen, die diese Wirkung entfalten sollen, verwendet
+   man besser P_M_HEALTH_MOD.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte bei "Loeschen" der Prop nicht den Wert des jew. Attributes im
+   uebergebenen Mapping als 0 uebergeben, sondern das Key/Werte-Paar ganz
+   entfernen und ggf. ein leeres Mapping oder 0 uebergeben.
+
+
+BEISPIEL
+========
+
+   // Dem Spieler, der das Objekt bei sich traegt, wird P_MAX_HP um 5
+   // erhoeht und P_MAX_SP um 5 erniedrigt.
+   SetProp(P_X_HEALTH_MOD,([P_HP:5,P_SP:-5]));
+   // Stats wiederherstellen:
+   SetProp(P_X_HEALTH_MOD,([]);
+
+
+SIEHE AUCH
+==========
+
+   P_M_HEALTH_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, balance
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/props/P_ZAP_MSG b/doc/props/P_ZAP_MSG
index fbabff4..6f9c7ce 100644
--- a/doc/props/P_ZAP_MSG
+++ b/doc/props/P_ZAP_MSG
@@ -1,28 +1,41 @@
+
 P_ZAP_MSG
+*********
 
-NAME:
-      P_ZAP_MSG			"zap_msg"
 
-DEFINIERT IN:
-      /sys/properties.h
+NAME
+====
 
-BESCHREIBUNG:
-      Die Property enthaelt ein dreielementiges Array mit den folgenden
-      Eintraegen:
-	  1.) Meldung, die der Magier beim Zappen bekommt.
-	  2.) Meldung, die die Spieler im Raum beim Zappen bekommen.
-	  3.) Meldung, die das Opfer beim Zappen bekommt.
+   P_ZAP_MSG                 "zap_msg"
 
-      Mit @@wer@@, @@wessen@@, ... kann der Name des Opfers und mit @@ich@@
-      der Name des Magiers in die Meldung eingewoben werden.
 
-      Die Property ist in Magiern gesetzt und gilt nur dort.
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     Tod:		die(L)
-     Todesmeldungen:	P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
-			P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+   /sys/properties.h
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Die Property enthaelt ein dreielementiges Array mit den folgenden
+   Eintraegen:
+       1.) Meldung, die der Magier beim Zappen bekommt.
+       2.) Meldung, die die Spieler im Raum beim Zappen bekommen.
+       3.) Meldung, die das Opfer beim Zappen bekommt.
+
+   Mit @@wer@@, @@wessen@@, ... kann der Name des Opfers und mit @@ich@@
+   der Name des Magiers in die Meldung eingewoben werden.
+
+   Die Property ist in Magiern gesetzt und gilt nur dort.
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                      P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
 Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/props/U_REQ b/doc/props/U_REQ
index cb395db..1594c4f 100644
--- a/doc/props/U_REQ
+++ b/doc/props/U_REQ
@@ -1,63 +1,83 @@
-NAME:
-    U_REQ                         "u_req"
 
-DEFINIERT IN:
-    /sys/unit.h
+U_REQ
+*****
 
-BESCHREIBUNG:
-     Die Prop kann in Unitobjekten gesetzt werden.
-     Sie gibt die Anzahl der Einheiten an, die an der Unit manipuliert werden
-     sollen, falls mit weniger als P_AMOUNT umgegegangen werden soll.
-     
-     Die Prop wird automatisch gesetzt, wenn id() an einem Unitobjekt gerufen
-     wird und die ID grundsaetzlich zutreffend ist, die aus der ID ermittelte
-     Zahl aber kleiner als P_AMOUNT ist.
-     Sie kann auch manuell mittel SetProp() (aber nicht Set()) gesetzt werden.
 
-     U_REQ wird beim Bewegen und Zerstoeren, bei Ermittlung von Wert und
-     Gewicht beruecksichtigt.
+NAME
+====
 
-     U_REQ wird vom Unitobjekt automatisch wieder auf P_AMOUNT gesetzt, wenn
-     sich query_verb() oder debug_info(DINFO_EVAL_NUMBER) veraendert haben.
-     (DINFO_EVAL_NUMBER ist eine Zahl, die sich jedesmal erhoeht, wenn der
-      Driver eine neue Berechnung/Ausfuehrung beginnt. Diese Nummer wird fuer
-      jeden vom driver initiierten Aufruf von LPC-Code erhoeht, z.B. bei jedem
-      Kommando, call_out, heart_beat etc. Details s. debug_info().)
+   U_REQ                         "u_req"
 
-     Ebenso wird U_REQ bei der Vereinigung mit einem anderen (gleichen)
-     Objekt auf P_AMOUNT des vereinigten Objektes gesetzt.
+
+DEFINIERT IN
+============
+
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Die Prop kann in Unitobjekten gesetzt werden.
+   Sie gibt die Anzahl der Einheiten an, die an der Unit manipuliert werden
+   sollen, falls mit weniger als P_AMOUNT umgegegangen werden soll.
+
+
+
+   Die Prop wird automatisch gesetzt, wenn id() an einem Unitobjekt gerufen
+   wird und die ID grundsaetzlich zutreffend ist, die aus der ID ermittelte
+   Zahl aber kleiner als P_AMOUNT ist.
+   Sie kann auch manuell mittel SetProp() (aber nicht Set()) gesetzt werden.
+
+   U_REQ wird beim Bewegen und Zerstoeren, bei Ermittlung von Wert und
+   Gewicht beruecksichtigt.
+
+   U_REQ wird vom Unitobjekt automatisch wieder auf P_AMOUNT gesetzt, wenn
+   sich query_verb() oder debug_info(DINFO_EVAL_NUMBER) veraendert haben.
+   (DINFO_EVAL_NUMBER ist eine Zahl, die sich jedesmal erhoeht, wenn der
+    Driver eine neue Berechnung/Ausfuehrung beginnt. Diese Nummer wird fuer
+    jeden vom driver initiierten Aufruf von LPC-Code erhoeht, z.B. bei jedem
+    Kommando, call_out, heart_beat etc. Details s. debug_info().)
+
+   Ebenso wird U_REQ bei der Vereinigung mit einem anderen (gleichen)
+   Objekt auf P_AMOUNT des vereinigten Objektes gesetzt.
 
 
 BUGS
-    Viele. Dies ist ein uebler Hack. Geht aber nicht ohne.
-    Diese Prop war endlos lang gar nicht dokumentiert. Hier beschrieben ist
-    das Verhalten, was zur Zeit vorliegt. Dies mag unterschiedlich zu dem
-    irgendwann intendierten sein.
+====
+
+   Viele. Dies ist ein uebler Hack. Geht aber nicht ohne.
+   Diese Prop war endlos lang gar nicht dokumentiert. Hier beschrieben ist
+   das Verhalten, was zur Zeit vorliegt. Dies mag unterschiedlich zu dem
+   irgendwann intendierten sein.
 
 
 BEISPIELE
-    object o = clone_object("unitobjekt");
-    o->SetProp(P_AMOUNT, 100);   // ab jetzt hat o 100 Einheiten.
-    o->move(npc, M_GET);         // ob mit 100 Einheiten wird bewegt
-    o->SetProp(U_REQ, 50);
-    o->move(anderernpc, M_GIVE); // 50 Einheiten werden bewegt, 50 verbleiben
-    (Technisch: das Objekt wird auf 50 Einheiten geaendert, bewegt und in der
-     alten Umgebung wird ein neues Objekt mit 50 Einheiten erzeugt.)
+=========
 
-    o->SetProp(U_REQ, 42);
-    o->remove(1);               // 42 Einheiten von den 50 werden zerstoert.
-    (Technisch: P_AMOUNT wird einfach um U_REQ reduziert.)
+   object o = clone_object("unitobjekt");
+   o->SetProp(P_AMOUNT, 100);   // ab jetzt hat o 100 Einheiten.
+   o->move(npc, M_GET);         // ob mit 100 Einheiten wird bewegt
+   o->SetProp(U_REQ, 50);
+   o->move(anderernpc, M_GIVE); // 50 Einheiten werden bewegt, 50 verbleiben
+   (Technisch: das Objekt wird auf 50 Einheiten geaendert, bewegt und in der
+    alten Umgebung wird ein neues Objekt mit 50 Einheiten erzeugt.)
 
-    # gib 18 muenzen an blupp
-    Hierbei wird ob->id("18 muenzen") gerufen, was U_REQ im Geldobjekt auf 18
-    setzt. Bei der Bewegung bekommt blupp daher das Objekt mit P_AMOUNT==18
-    und der Rest wird im Abgebenden neu erzeugt.
-    # gib geld an flubbel
-    Das U_REQ aus dem verherigen Kommando ist jetzt nicht mehr gueltig. Zwar
-    ist es das gleiche Kommandoverb, aber DINFO_EVAL_NUMBER ist jetzt
-    anders.
+   o->SetProp(U_REQ, 42);
+   o->remove(1);               // 42 Einheiten von den 50 werden zerstoert.
+   (Technisch: P_AMOUNT wird einfach um U_REQ reduziert.)
+
+   # gib 18 muenzen an blupp
+   Hierbei wird ob->id("18 muenzen") gerufen, was U_REQ im Geldobjekt auf 18
+   setzt. Bei der Bewegung bekommt blupp daher das Objekt mit P_AMOUNT==18
+   und der Rest wird im Abgebenden neu erzeugt.
+   # gib geld an flubbel
+   Das U_REQ aus dem verherigen Kommando ist jetzt nicht mehr gueltig. Zwar
+   ist es das gleiche Kommandoverb, aber DINFO_EVAL_NUMBER ist jetzt
+   anders.
 
 
-ZULETZT GEAeNDERT:
+ZULETZT GEAeNDERT
+=================
+
 16.01.2015, Zesstra
-
diff --git a/doc/props/gildenprops/P_GLOVE_FINGERLESS b/doc/props/gildenprops/P_GLOVE_FINGERLESS
index 64faec6..0485c9a 100644
--- a/doc/props/gildenprops/P_GLOVE_FINGERLESS
+++ b/doc/props/gildenprops/P_GLOVE_FINGERLESS
@@ -1,16 +1,30 @@
+
 P_GLOVE_FINGERLESS
+******************
 
-NAME:
-     P_GLOVE_FINGERLESS                     "fingerfreie_handschuhe"
 
-DEFINIERT IN:
-     /p/katzenkrieger/kkrieger.h
+NAME
+====
 
-BESCHREIBUNG:
-     So gekennzeichnete Handschuhe sind fingerlos und koennen
-     waehrend "krallenschlag" getragen werden.
+   P_GLOVE_FINGERLESS                     "fingerfreie_handschuhe"
 
-SIEHE AUCH:
-     Verwandt:	P_ARMOUR_TYPE, AT_GLOVE
 
-10.Okt 2006 Gloinson
\ No newline at end of file
+DEFINIERT IN
+============
+
+   /p/katzenkrieger/kkrieger.h
+
+
+BESCHREIBUNG
+============
+
+   So gekennzeichnete Handschuhe sind fingerlos und koennen
+   waehrend "krallenschlag" getragen werden.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  P_ARMOUR_TYPE, AT_GLOVE
+
+10.Okt 2006 Gloinson
diff --git a/doc/props/gildenprops/P_Z_AUTOSHIELD b/doc/props/gildenprops/P_Z_AUTOSHIELD
index f69b9ad..994abad 100644
--- a/doc/props/gildenprops/P_Z_AUTOSHIELD
+++ b/doc/props/gildenprops/P_Z_AUTOSHIELD
@@ -1,26 +1,43 @@
+
 P_Z_AUTOSHIELD
+**************
 
-NAME:
-     P_Z_AUTOSHIELD				"z_autoshield"
 
-DEFINIERT IN:
-     /p/zauberer/wiznpc.h
+NAME
+====
 
-BESCHREIBUNG:
-     Mit dieser Property  kann man einen automatischen 
-     Schutzzauber in Zauberer-NPCs einstellen, dessen 
-     Vorhandensein dann in jeder Kampfrunde ueberprueft
-     wird, z.B. "schutz","schutzhuelle","zauberschild".
+   P_Z_AUTOSHIELD                             "z_autoshield"
 
-BEMERKUNGEN:
-     "zauberschild" ist ein Magisterspruch und kann nur in 
-     bestimmten Zeitabstaenden benutzt werden. Wer also als
-     Autoshield nur Zauberschild benutzt, blockiert damit
-     alle anderen Spells, solange der Magisterspruch nicht
-     gesprochen werden kann.
-     Abhilfe: _query_next_master_spell_time()  return 0; }
 
-SIEHE AUCH:
-     /p/zauberer/text/wiznpc.doku
+DEFINIERT IN
+============
+
+   /p/zauberer/wiznpc.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Property  kann man einen automatischen
+   Schutzzauber in Zauberer-NPCs einstellen, dessen
+   Vorhandensein dann in jeder Kampfrunde ueberprueft
+   wird, z.B. "schutz","schutzhuelle","zauberschild".
+
+
+BEMERKUNGEN
+===========
+
+   "zauberschild" ist ein Magisterspruch und kann nur in
+   bestimmten Zeitabstaenden benutzt werden. Wer also als
+   Autoshield nur Zauberschild benutzt, blockiert damit
+   alle anderen Spells, solange der Magisterspruch nicht
+   gesprochen werden kann.
+   Abhilfe: _query_next_master_spell_time()  return 0; }
+
+
+SIEHE AUCH
+==========
+
+   /p/zauberer/text/wiznpc.doku
 
 21.Okt 2006 Chagall
diff --git a/doc/props/gildenprops/P_Z_INFO b/doc/props/gildenprops/P_Z_INFO
index d82d38a..654c768 100644
--- a/doc/props/gildenprops/P_Z_INFO
+++ b/doc/props/gildenprops/P_Z_INFO
@@ -1,53 +1,73 @@
+
 P_Z_INFO
-
-NAME:
-     P_Z_INFO						"z_info"
-
-DEFINIERT IN:
-     /p/zauberer/wiznpc.h
-
-BESCHREIBUNG:
-     Diese Property muss gesetzt werden, wenn man den
-     Zauberergilden-Standard-NPC nutzt. Sie setzt die
-     Grundeinstellungen des NPCs und generiert das 
-     Newskills-Mapping. 
-
-     Die Property ist wie folgt aufgebaut:
-
-     * MIN (minimale Skillability im Bereich von 0 - 10000)
-     * MAX (maximale Skillability im Bereich von 0 - 10000)
-     * LEV (Gildenlevel)
-     * ZWEIG (Gildenzweig)
+********
 
 
-BEMERKUNGEN:
-     Fuer die Argumente LEV und ZWEIG stehen folgende Auswahl-
-     moeglichkeiten zur Verfuegung.
+NAME
+====
 
-     LEV:
-        Z_ANFAENGER	0
-	Z_LEHRLING	1
-	Z_MEISTER	2
-	Z_ERZMEISTER	3
-
-     ZWEIG:
-        ZZW_ANGRIFF		  1
-	ZZW_ABWEHR		  2
-	ZZW_ILLUSION		  4
-	ZZW_BEHERRSCHUNG	  8
-	ZZW_HELLSICHT		 16
-	ZZW_VERWANDLUNG		 32
-	ZZW_SCHWARZ		 64	INAKTIV
-	ZZW_WEISS		128
-	ZZW_ALLE		511
-
-BEISPIEL:
-     SetProp(P_Z_INFO, ({9000, 9500, Z_ERZMEISTER, ZZW_ANGRIFF|ZZW_ABWEHR}));
-     erzeugt einen Erzmagister-PC, der alle Lehrlings- sowie die Magister und
-     Erzmagister-Sprueche Angriff und Abwehr mit 90-95% beherrscht.
+   P_Z_INFO                                           "z_info"
 
 
-SIEHE AUCH:
-     /p/zauberer/text/wiznpc.doku
+DEFINIERT IN
+============
+
+   /p/zauberer/wiznpc.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property muss gesetzt werden, wenn man den
+   Zauberergilden-Standard-NPC nutzt. Sie setzt die
+   Grundeinstellungen des NPCs und generiert das
+   Newskills-Mapping.
+
+   Die Property ist wie folgt aufgebaut:
+
+   * MIN (minimale Skillability im Bereich von 0 - 10000)
+   * MAX (maximale Skillability im Bereich von 0 - 10000)
+   * LEV (Gildenlevel)
+   * ZWEIG (Gildenzweig)
+
+
+BEMERKUNGEN
+===========
+
+   Fuer die Argumente LEV und ZWEIG stehen folgende Auswahl-
+   moeglichkeiten zur Verfuegung.
+
+   LEV:
+
+      Z_ANFAENGER     0
+      Z_LEHRLING      1
+      Z_MEISTER       2
+      Z_ERZMEISTER    3
+
+   ZWEIG:
+
+      ZZW_ANGRIFF               1
+      ZZW_ABWEHR                2
+      ZZW_ILLUSION              4
+      ZZW_BEHERRSCHUNG          8
+      ZZW_HELLSICHT            16
+      ZZW_VERWANDLUNG          32
+      ZZW_SCHWARZ              64     INAKTIV
+      ZZW_WEISS               128
+      ZZW_ALLE                511
+
+
+BEISPIEL
+========
+
+   SetProp(P_Z_INFO, ({9000, 9500, Z_ERZMEISTER, ZZW_ANGRIFF|ZZW_ABWEHR}));
+   erzeugt einen Erzmagister-PC, der alle Lehrlings- sowie die Magister und
+   Erzmagister-Sprueche Angriff und Abwehr mit 90-95% beherrscht.
+
+
+SIEHE AUCH
+==========
+
+   /p/zauberer/text/wiznpc.doku
 
 21.Okt 2006 Chagall
diff --git a/doc/props/gildenprops/P_Z_NO_MATERIAL b/doc/props/gildenprops/P_Z_NO_MATERIAL
index 4b040a0..cda514a 100644
--- a/doc/props/gildenprops/P_Z_NO_MATERIAL
+++ b/doc/props/gildenprops/P_Z_NO_MATERIAL
@@ -1,18 +1,34 @@
+
 P_Z_NO_MATERIAL
+***************
 
-NAME:
-     P_Z_NO_MATERIAL                     "npc_braucht_keine_kmp"
 
-DEFINIERT IN:
-     /p/zauberer/zauberer.h
+NAME
+====
 
-BESCHREIBUNG:
-     Setzt man diese Property in einem NPC, so benoetigt er fuer die
-     Sprueche der Zauberergilde keine Komponenten.
+   P_Z_NO_MATERIAL                     "npc_braucht_keine_kmp"
 
-BEMERKUNGEN:
-     NIEMALS diese Property einfach so in einem Spieler setzen.
 
-SIEHE AUCH:
+DEFINIERT IN
+============
+
+   /p/zauberer/zauberer.h
+
+
+BESCHREIBUNG
+============
+
+   Setzt man diese Property in einem NPC, so benoetigt er fuer die
+   Sprueche der Zauberergilde keine Komponenten.
+
+
+BEMERKUNGEN
+===========
+
+   NIEMALS diese Property einfach so in einem Spieler setzen.
+
+
+SIEHE AUCH
+==========
 
 21.Okt 2006 Chagall
diff --git a/doc/props/gildenprops/P_Z_NO_NOCONN b/doc/props/gildenprops/P_Z_NO_NOCONN
index 332dd14..6cd0024 100644
--- a/doc/props/gildenprops/P_Z_NO_NOCONN
+++ b/doc/props/gildenprops/P_Z_NO_NOCONN
@@ -1,22 +1,42 @@
+
+P_Z_NO_NOCONN
+*************
+
+
 P_Z_NO_NOCON
-
-NAME:
-     P_Z_NO_NOCON					"no_nocon"
-
-DEFINIERT IN:
-     /p/zauberer/wiznpc.h
-
-BESCHREIBUNG:
-     Der Standardzauberergildennpc setzt SI_NO_CONSEQUENCES, damit
-     die Gildenpcs nicht den negativen Auswirkungen beim Misslingen
-     der Sprueche geschuetzt sind. Setzt man diese Property vor
-     P_Z_INFO auf 0, wird das Flag nicht gesetzt.
+============
 
 
-BEMERKUNGEN:
-     Muss vor P_Z_INFO gesetzt werden, damit es wirksam ist.
+NAME
+====
 
-SIEHE AUCH:
-     /p/zauberer/text/wiznpc.doku, P_Z_INFO
+   P_Z_NO_NOCON                                       "no_nocon"
+
+
+DEFINIERT IN
+============
+
+   /p/zauberer/wiznpc.h
+
+
+BESCHREIBUNG
+============
+
+   Der Standardzauberergildennpc setzt SI_NO_CONSEQUENCES, damit
+   die Gildenpcs nicht den negativen Auswirkungen beim Misslingen
+   der Sprueche geschuetzt sind. Setzt man diese Property vor
+   P_Z_INFO auf 0, wird das Flag nicht gesetzt.
+
+
+BEMERKUNGEN
+===========
+
+   Muss vor P_Z_INFO gesetzt werden, damit es wirksam ist.
+
+
+SIEHE AUCH
+==========
+
+   /p/zauberer/text/wiznpc.doku, P_Z_INFO
 
 21.Okt 2006 Chagall
diff --git a/doc/props/gildenprops/P_Z_NO_SPELL_SUPPORT b/doc/props/gildenprops/P_Z_NO_SPELL_SUPPORT
index 4a1ab28..74860f6 100644
--- a/doc/props/gildenprops/P_Z_NO_SPELL_SUPPORT
+++ b/doc/props/gildenprops/P_Z_NO_SPELL_SUPPORT
@@ -1,25 +1,41 @@
+
 P_Z_NO_SPELL_SUPPORT
+********************
 
-NAME:
-     P_Z_NO_SPELL_SUPPORT	"zauberer_ruestung_unterstuetzt_noch_nicht"
 
-DEFINIERT IN:
-     /p/zauberer/zauberer.h
+NAME
+====
 
-BESCHREIBUNG:
-     Normalerweise unterstuetzt eine Ruestung den Zauberer, sobald sie im
-     entsprechenden Ruestungsmaster eingetragen ist. Moechte man allerdings
-     die Unterstuetzung an bestimmte Bedingungen knuepfen, z.B. das loesen
-     einer Miniquest, so kann man diese Property auf 1 setzen. Die Ruestung
-     unterstuetzt dann nicht. Um die Unterstuetzung wieder zu aktivieren,
-     setzt man die Property wieder auf 0.
+   P_Z_NO_SPELL_SUPPORT       "zauberer_ruestung_unterstuetzt_noch_nicht"
 
-BEMERKUNGEN:
-     NIEMALS diese Property einfach so in fremden Zaubererruestungen 
-     setzen. Sollte der Gildenmagier erfahren, dass z.B. ein NPC
-     einfach so die Unterstuetzung der Ruestungen ausschaltet, wird
-     diese Property wieder deaktiviert.
 
-SIEHE AUCH:
+DEFINIERT IN
+============
+
+   /p/zauberer/zauberer.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise unterstuetzt eine Ruestung den Zauberer, sobald sie im
+   entsprechenden Ruestungsmaster eingetragen ist. Moechte man allerdings
+   die Unterstuetzung an bestimmte Bedingungen knuepfen, z.B. das loesen
+   einer Miniquest, so kann man diese Property auf 1 setzen. Die Ruestung
+   unterstuetzt dann nicht. Um die Unterstuetzung wieder zu aktivieren,
+   setzt man die Property wieder auf 0.
+
+
+BEMERKUNGEN
+===========
+
+   NIEMALS diese Property einfach so in fremden Zaubererruestungen
+   setzen. Sollte der Gildenmagier erfahren, dass z.B. ein NPC
+   einfach so die Unterstuetzung der Ruestungen ausschaltet, wird
+   diese Property wieder deaktiviert.
+
+
+SIEHE AUCH
+==========
 
 21.Okt 2006 Chagall
diff --git a/doc/props/gildenprops/kaempferboni b/doc/props/gildenprops/kaempferboni
index 50e4be5..0d34e98 100644
--- a/doc/props/gildenprops/kaempferboni
+++ b/doc/props/gildenprops/kaempferboni
@@ -1,264 +1,270 @@
 
+kaempferboni
+************
+
 Kaempferboni und deren Implementation
--------------------------------------
--------------------------------------
 
-Bei den Kaempfern gibt es einige Properties, die, in Waffen oder Ruestungen
-gesetzt, der Kampfverlauf eines Spielers erheblich beeinflussen koennen.
+======================================================================
 
-Zu beachten ist, dass die Abnahme von Waffen oder Ruestungen mit Kaempferboni
-allein der Balance obliegt. Der Gildenmagier der Kaempfer steht aber gerne
-mit Rat und Tat zur Seite.
+Bei den Kaempfern gibt es einige Properties, die, in Waffen oder
+Ruestungen gesetzt, der Kampfverlauf eines Spielers erheblich
+beeinflussen koennen.
 
+Zu beachten ist, dass die Abnahme von Waffen oder Ruestungen mit
+Kaempferboni allein der Balance obliegt. Der Gildenmagier der Kaempfer
+steht aber gerne mit Rat und Tat zur Seite.
 
 Abschnitt A
------------
 
 In Waffen koennen nachfolgende, in /p/kaempfer/kaempfer.h definierten,
-Properties gesetzt werden. Die meisten davon fungieren als 'Boni' und werden
-dem Spieler auch mittels 'schaetz <waffe>' angezeigt:
-
+Properties gesetzt werden. Die meisten davon fungieren als 'Boni' und
+werden dem Spieler auch mittels 'schaetz <waffe>' angezeigt
 
 1 Waffenschlagbonus - K_BRAWLING_WC (INT) - "k_brawling_wc"
 
-  Wenn die Waffe eine zusaetzlich gefaehrliche Stelle besitzt - z.B. einen
-  harten Dorn am Stielende, eine Spitze am Ruecken einer Axtklinge, Zacken
-  am Dolchgriff - kann man der Waffe einen Waffenschlagbonus geben.
-  Dies bedeutet, dass der Waffenschlag um ein paar Prozente verstaerkt wird,
-  da der Spieler natuerlich versucht, immer genau mit diesem 'feature'
-  den Waffenschlag auszufuehren (der Waffenschlag ist kurz gesagt ein
-  unerwarteter Schlag, der nicht mit dem 'normalen' Waffenende ausgefuehrt
-  wird, der Gegner wird dadurch ueberrascht -> mehr Schaden).
-  Da solch ein 'feature' doch recht auffaellig ist, sollte es in der
-  Langbeschreibung der Waffe auf jeden Fall erwaehnt werden.
+   Wenn die Waffe eine zusaetzlich gefaehrliche Stelle besitzt - z.B.
+   einen harten Dorn am Stielende, eine Spitze am Ruecken einer
+   Axtklinge, Zacken am Dolchgriff - kann man der Waffe einen
+   Waffenschlagbonus geben. Dies bedeutet, dass der Waffenschlag um
+   ein paar Prozente verstaerkt wird, da der Spieler natuerlich
+   versucht, immer genau mit diesem 'feature' den Waffenschlag
+   auszufuehren (der Waffenschlag ist kurz gesagt ein unerwarteter
+   Schlag, der nicht mit dem 'normalen' Waffenende ausgefuehrt wird,
+   der Gegner wird dadurch ueberrascht -> mehr Schaden). Da solch ein
+   'feature' doch recht auffaellig ist, sollte es in der
+   Langbeschreibung der Waffe auf jeden Fall erwaehnt werden.
 
-  Interessant zu wissen waere noch, dass Zweihandwaffen einen generellen
-  zusaetzlichen Bonus auf den Waffenschlag bekommen und dass es eine
-  Abstufung gibt, nach der die Waffengattungen die Hoehe des Basiswertes
-  gesetzt bekommen, wobei Speere den hoechsten und Messer den niedrigsten
-  besitzen:
+   Interessant zu wissen waere noch, dass Zweihandwaffen einen
+   generellen zusaetzlichen Bonus auf den Waffenschlag bekommen und
+   dass es eine Abstufung gibt, nach der die Waffengattungen die Hoehe
+   des Basiswertes gesetzt bekommen, wobei Speere den hoechsten und
+   Messer den niedrigsten besitzen
 
-  Speere - Kampfstaebe - Aexte - Keulen - Schwerter - Messer
+   Speere - Kampfstaebe - Aexte - Keulen - Schwerter - Messer
 
-  Der max. Bonus fuer diese Property betraegt 30, wobei 1-10 -> geringer
-  Bonus, 11-20 -> guter Bonus, 21-30 -> sehr guter Bonus.
+   Der max. Bonus fuer diese Property betraegt 30, wobei 1-10 ->
+   geringer Bonus, 11-20 -> guter Bonus, 21-30 -> sehr guter Bonus.
 
-  Bitte beachten: ein Zweihand-Speer mit max. P_WC und max. K_BRAWLING_WC
-  haut entsprechend gut rein und sollte nur schwer zu ergattern sein, bzw.
-  noch andere Auflagen haben (ggf. unique, personalisiert, etc.)
-
+   Bitte beachten ein Zweihand-Speer mit max. P_WC und max.
+   K_BRAWLING_WC haut entsprechend gut rein und sollte nur schwer zu
+   ergattern sein, bzw. noch andere Auflagen haben (ggf. unique,
+   personalisiert, etc.)
 
 2 Waffenschlagschaden - K_BRAWLING_DT (STRING) - "k_brawling_dt"
 
-  Wenn die Waffe, mit der der Kaempfer einen Waffenschlag ausfuehrt, ein
-  'feature' hat, mit dem er diesen Schlag ausfuehrt, kann dieses 'feature'
-  einen anderen Waffenschlagschaden besitzen. Z.B. kann ein Schwert, welches
-  normalerweise DT_SLASH macht, besonders lange und spitze Parierstangen
-  besitzen, die vielleicht auch noch vergiftet sind. Dann kann der Magier
-  ({DT_PIERCE,DT_POISON}) setzen, so dass beim Waffenschlag immer ein
-  Mischschaden aus Stiche und Gift erfolgt.
+   Wenn die Waffe, mit der der Kaempfer einen Waffenschlag ausfuehrt,
+   ein 'feature' hat, mit dem er diesen Schlag ausfuehrt, kann dieses
+   'feature' einen anderen Waffenschlagschaden besitzen. Z.B. kann ein
+   Schwert, welches normalerweise DT_SLASH macht, besonders lange und
+   spitze Parierstangen besitzen, die vielleicht auch noch vergiftet
+   sind. Dann kann der Magier ({DT_PIERCE,DT_POISON}) setzen, so dass
+   beim Waffenschlag immer ein Mischschaden aus Stiche und Gift
+   erfolgt.
 
+3 Waffenschlagsmeldung - K_BRAWLING_MSG (STRING/STRING*) -
+k_brawling_msg"
 
-3 Waffenschlagsmeldung - K_BRAWLING_MSG (STRING/STRING*) - k_brawling_msg"
+   In diese Property kann man hineinschreiben, mit welchem Teil der
+   Waffe der Waffenschlag ausgefuehrt wird. Angenommen, es bietet sich
+   an, mit einer Waffe stets den Waffenschlag mit einem grossen Knauf
+   am Griff auszufuehren, wird schlicht und einfach "mit einem grossen
+   Knauf am Griff der Schlachtaxt" in die Property gesetzt. Sollte
+   sich bei der Programmierung ergeben, dass es sich anbietet, der
+   Waffe mehr als nur eine guenstige Stelle anzudichten mit der man
+   den Waffenschlag ausfuehren kann, so setzt man ein Array, z.B.
+   ({"mit einem grossen Knauf am Griff der Schlachtaxt","mit der
+   breiten Seite der " "Schlachtaxtklinge"}). Insgesamt ist darauf zu
+   achten, dass die Meldungen 'vollstandig' sind. Das Array kann
+   beliebige Groesse annehmen, es wird dann zufaellig eine Meldung
+   beim Schlag ausgesucht.
 
-  In diese Property kann man hineinschreiben, mit welchem Teil der Waffe
-  der Waffenschlag ausgefuehrt wird. Angenommen, es bietet sich an, mit
-  einer Waffe stets den Waffenschlag mit einem grossen Knauf am Griff
-  auszufuehren, wird schlicht und einfach "mit einem grossen Knauf am
-  Griff der Schlachtaxt" in die Property gesetzt.
-  Sollte sich bei der Programmierung ergeben, dass es sich anbietet, der
-  Waffe mehr als nur eine guenstige Stelle anzudichten mit der man den
-  Waffenschlag ausfuehren kann, so setzt man ein Array, z.B. ({"mit einem
-  grossen Knauf am Griff der Schlachtaxt","mit der breiten Seite der "
-  "Schlachtaxtklinge"}). Insgesamt ist darauf zu achten, dass die Meldungen
-  'vollstandig' sind. Das Array kann beliebige Groesse annehmen, es wird
-  dann zufaellig eine Meldung beim Schlag ausgesucht.
-
-  Es empfiehlt sich, jede Waffe mit dieser Property zu schmuecken, die
-  K_BRAWLING_WC gesetzt haben, da die Waffenschlagmeldungen damit im Kampf
-  'individualisiert' werden. In der Praxis wird es jedoch daran scheitern,
-  dass es viel zu viele alte Waffen gibt, die keiner mehr anfassen moechte.
-  Daher wird auf Standardmeldungen zurueckgegriffen, sollte diese Property
-  nicht gesetzt sein.
-
+   Es empfiehlt sich, jede Waffe mit dieser Property zu schmuecken,
+   die K_BRAWLING_WC gesetzt haben, da die Waffenschlagmeldungen damit
+   im Kampf 'individualisiert' werden. In der Praxis wird es jedoch
+   daran scheitern, dass es viel zu viele alte Waffen gibt, die keiner
+   mehr anfassen moechte. Daher wird auf Standardmeldungen
+   zurueckgegriffen, sollte diese Property nicht gesetzt sein.
 
 4 Waffenbruchbonus - K_WEAPON_SHATTER (INT) - "k_weapon_shatter"
 
-  Waffen, die besonders fuer den Waffenbruch konstruiert wurden, koennen
-  einen Bonus einbringen, der in dieser Property angegeben wird. Natuerlich
-  eignen sich die verschiedenen Waffentypen wieder unterschiedlich gut fuer
-  einen Waffenbruch: Keulen (meist aufgrund ihres Gewichts) am besten, Messer
-  am schlechtesten, alle anderen dazwischen (Axt - Schwert - Stab - Speer).
-  Dabei kriegen alle Waffen, die u.a. Schlagschaden verursachen, nochmal
-  einen kleinen Bonus obendrauf.
+   Waffen, die besonders fuer den Waffenbruch konstruiert wurden,
+   koennen einen Bonus einbringen, der in dieser Property angegeben
+   wird. Natuerlich eignen sich die verschiedenen Waffentypen wieder
+   unterschiedlich gut fuer einen Waffenbruch Keulen (meist aufgrund
+   ihres Gewichts) am besten, Messer am schlechtesten, alle anderen
+   dazwischen (Axt - Schwert - Stab - Speer). Dabei kriegen alle
+   Waffen, die u.a. Schlagschaden verursachen, nochmal einen kleinen
+   Bonus obendrauf.
 
-  Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 -> geringer
-  Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 ->
+   geringer Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
 
-  Bei gut gelungenem Waffenbruch wird die Waffe des Gegners beschaedigt, wenn
-  die Technik sehr gut gelingt, kann es auch sein, dass dem Gegner die Waffe
-  aus der Hand geschlagen wird (der Spieler kann sie allerdings nicht
-  aufheben und der NPC zueckt sie nach ein paar Kampfrunden wieder).
-
+   Bei gut gelungenem Waffenbruch wird die Waffe des Gegners
+   beschaedigt, wenn die Technik sehr gut gelingt, kann es auch sein,
+   dass dem Gegner die Waffe aus der Hand geschlagen wird (der Spieler
+   kann sie allerdings nicht aufheben und der NPC zueckt sie nach ein
+   paar Kampfrunden wieder).
 
 5 Bonus fuer Finte/Waffentrick - K_DISTRACTING_WEAPON (INT) -
-  "k_distracting_weapon"
+   "k_distracting_weapon"
 
-  Waffen, die fuer den Gegner aufgrund ihrer Bauweise besonders irritierend
-  sein koennen, koennen einen Bonus fuer Finte und Waffentrick haben. Dabei
-  wird der Gegner bei einer Finte bzw. einem Waffentrick NOCH mehr verwirrt,
-  als er es ohnehin schon nur durch die angewandte Technik wird.
-  Ein gutes Beispiel hierfuer ist z.B. der Kriegshamster: ein Hamster, der
-  auf einem Holzstab aufgespiesst ist, sollte fuer den Gegner schon SEHR
-  irritierend sein ;).
-  Die Waffengattung hat nur wenig Einfluss auf Finte/Waffentrick.
+   Waffen, die fuer den Gegner aufgrund ihrer Bauweise besonders
+   irritierend sein koennen, koennen einen Bonus fuer Finte und
+   Waffentrick haben. Dabei wird der Gegner bei einer Finte bzw. einem
+   Waffentrick NOCH mehr verwirrt, als er es ohnehin schon nur durch
+   die angewandte Technik wird. Ein gutes Beispiel hierfuer ist z.B.
+   der Kriegshamster ein Hamster, der auf einem Holzstab aufgespiesst
+   ist, sollte fuer den Gegner schon SEHR irritierend sein ;). Die
+   Waffengattung hat nur wenig Einfluss auf Finte/Waffentrick.
 
-  Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 -> geringer
-  Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
-
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 ->
+   geringer Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
 
 6 Todesstossbonus - K_CRITICAL_HIT (INT) - "k_critical_hit"
 
-  Man stelle sich eine Waffe mit besonders spitzer, langer Klinge vor oder
-  eine magische Waffe, die dem geschwaechten Gegner die Seele entreisst.
-  Diese Eigenschaften verleihen dem Spieler beim Todesstoss einen
-  entsprechenden Bonus von bis zu 100%.
+   Man stelle sich eine Waffe mit besonders spitzer, langer Klinge vor
+   oder eine magische Waffe, die dem geschwaechten Gegner die Seele
+   entreisst. Diese Eigenschaften verleihen dem Spieler beim
+   Todesstoss einen entsprechenden Bonus von bis zu 100%.
 
-  Es ist moeglich, dass ein und dasselbe 'feature' sowohl dem Waffenschlag
-  als auch dem Todesstoss den Bonus stellt, z.B. zwei Hiebklingen auf dem
-  Klingenruecken einer grossen Axt. Auch dies sollte man deutlich aus der
-  Langbeschreibung herauslesen koennen.
+   Es ist moeglich, dass ein und dasselbe 'feature' sowohl dem
+   Waffenschlag als auch dem Todesstoss den Bonus stellt, z.B. zwei
+   Hiebklingen auf dem Klingenruecken einer grossen Axt. Auch dies
+   sollte man deutlich aus der Langbeschreibung herauslesen koennen.
 
-  Der max. Bonus fuer diese Property betraegt 100, wobei 100 eine Verdopplung
-  der P_WC beim Todesstoss bedeutet!
-  Ansonsten bedeutet 1-20 -> geringer Bonus, 21-60 -> guter Bonus,
-  61-100 -> sehr guter Bonus.
-
+   Der max. Bonus fuer diese Property betraegt 100, wobei 100 eine
+   Verdopplung der P_WC beim Todesstoss bedeutet! Ansonsten bedeutet
+   1-20 -> geringer Bonus, 21-60 -> guter Bonus, 61-100 -> sehr guter
+   Bonus.
 
 7 Waffenwurfbonus - K_THROWING_WEAPON (INT) - "k_throwing_weapon"
 
-  Wenn eine Waffe besonders gut zum Werfen geeignet ist, z.B. ein Wurfdolch,
-  dann kann diese Property gesetzt werden. Natuerlich ist der Grundwert wieder
-  von der Waffengattung abhaengig. Es gilt, dass man Messer und Speere
-  grundsaetzlich am besten werfen - und dabei gut Schaden machen - kann, am
-  schlechtesten schneiden Keulen und Kampfstaebe ab.
+   Wenn eine Waffe besonders gut zum Werfen geeignet ist, z.B. ein
+   Wurfdolch, dann kann diese Property gesetzt werden. Natuerlich ist
+   der Grundwert wieder von der Waffengattung abhaengig. Es gilt, dass
+   man Messer und Speere grundsaetzlich am besten werfen - und dabei
+   gut Schaden machen - kann, am schlechtesten schneiden Keulen und
+   Kampfstaebe ab.
 
-  Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 -> geringer
-  Bonus, 21-40 -> guter Bonus, 31-50 -> sehr guter Bonus.
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 ->
+   geringer Bonus, 21-40 -> guter Bonus, 31-50 -> sehr guter Bonus.
 
-  Zu beachten ist hierbei, dass ein sehr hoher Bonus nur bei Waffen mit etwas
-  geringerer P_WC vergeben werden sollte. Ein reines Wurfmesser ist nunmal im
-  normalen Kampf nicht die gefaehrlichste aller Waffen (speziell
-  ausbalanciert, keinen richtigen Griff, etc.).
-  Natuerlich kann es einen Wurfspeer mit max. P_WC und sehr hohem
-  Waffenwurfbonus geben, allerdings mit den ueblich hohen Restriktionen.
-
+   Zu beachten ist hierbei, dass ein sehr hoher Bonus nur bei Waffen
+   mit etwas geringerer P_WC vergeben werden sollte. Ein reines
+   Wurfmesser ist nunmal im normalen Kampf nicht die gefaehrlichste
+   aller Waffen (speziell ausbalanciert, keinen richtigen Griff,
+   etc.). Natuerlich kann es einen Wurfspeer mit max. P_WC und sehr
+   hohem Waffenwurfbonus geben, allerdings mit den ueblich hohen
+   Restriktionen.
 
 8 KO-Schlag-Bonus - K_KO (INT) - "k_ko"
 
-  Waffen, die besonders fuer einen KO-Schlag geeignet sind, koennen einen
-  Bonus mit dieser Property bekommen. Eine entsprechende Waffe koennte z.B.
-  ein lederumwickelter Pruegel sein, denn man will den Gegner ja nur KO
-  schlagen und nicht gleich toeten.
+   Waffen, die besonders fuer einen KO-Schlag geeignet sind, koennen
+   einen Bonus mit dieser Property bekommen. Eine entsprechende Waffe
+   koennte z.B. ein lederumwickelter Pruegel sein, denn man will den
+   Gegner ja nur KO schlagen und nicht gleich toeten.
 
-  Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 -> geringer
-  Bonus, 21-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
-
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 ->
+   geringer Bonus, 21-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
 
 9 Kein Waffenschaerfen - K_NO_HONING (INT) - "k_no_honing"
 
-  Wenn eine Waffe aus irgendeinem Grund nicht geschaerft werden kann oder
-  darf, muss man diese Property auf 1 setzen.
-  Eine Erklaerung dafuer sollte in der P_LONG bzw. P_INFO erfolgen.
-
+   Wenn eine Waffe aus irgendeinem Grund nicht geschaerft werden kann
+   oder darf, muss man diese Property auf 1 setzen. Eine Erklaerung
+   dafuer sollte in der P_LONG bzw. P_INFO erfolgen.
 
 Abschnitt B
------------
 
 Die beiden Properties, P_EFFECTIVE_AC und P_EFFECTIVE_WC, welche in
-<combat.h> definiert sind, sind eigentlich nur dazu da, um Ruestungen und
-Waffen, die eine DefendFunc() bzw. HitFunc() besitzen, korrekt vom Spieler
-einschaetzen lassen zu koennnen.
+<combat.h> definiert sind, sind eigentlich nur dazu da, um Ruestungen
+und Waffen, die eine DefendFunc() bzw. HitFunc() besitzen, korrekt vom
+Spieler einschaetzen lassen zu koennnen.
 
-Das Kaempferspellbook verwendet diese Properties darueberhinaus wie folgt:
-
+Das Kaempferspellbook verwendet diese Properties darueberhinaus wie
+folgt
 
 1 Schutzboni in Waffen - P_EFFECTIVE_AC (INT) - "effective_ac"
 
-  Ist diese Property in einer Waffe gesetzt, geht das Kaempferspellbook
-  davon aus, dass diese Waffe mehr oder weniger die Faehigkeit besitzt,
-  auch wie eine Ruestung schuetzen zu koennen. Da man eine Waffe aber nicht
-  anziehen, sondern nur vor sich hertragen kann, kann auch der max.
-  Ruestungsschutz einer Waffe nur gleich dem max. Ruestungsschutz eines
-  Schildes entsprechen.
-  Eine gesetzte P_EFFECTIVE_AC in einer Waffe wird dem Spieler als mehr
-  oder weniger gute 'Paradewaffe' im 'schaetz' angezeigt und geht sowohl bei
-  der Waffenparade als auch beim Block als Bonus mit ein.
+   Ist diese Property in einer Waffe gesetzt, geht das
+   Kaempferspellbook davon aus, dass diese Waffe mehr oder weniger die
+   Faehigkeit besitzt, auch wie eine Ruestung schuetzen zu koennen. Da
+   man eine Waffe aber nicht anziehen, sondern nur vor sich hertragen
+   kann, kann auch der max. Ruestungsschutz einer Waffe nur gleich dem
+   max. Ruestungsschutz eines Schildes entsprechen. Eine gesetzte
+   P_EFFECTIVE_AC in einer Waffe wird dem Spieler als mehr oder
+   weniger gute 'Paradewaffe' im 'schaetz' angezeigt und geht sowohl
+   bei der Waffenparade als auch beim Block als Bonus mit ein.
 
-  Z.B. koennte ein leichtes Schwert, was aufgrund seiner Bauweise mehr fuer
-  den defensiven Kampf ausgelegt ist (extralange Parierstangen, verstaerkter
-  Handschutz im Griffbereich, ...) wie ein maessiges Schild wirken. Die
-  Vorteile liegen auf der Hand: der Spieler bekommt verstaerkten Schutz,
-  kann aber weiterhin eine Zweihandwaffe fuehren.
+   Z.B. koennte ein leichtes Schwert, was aufgrund seiner Bauweise
+   mehr fuer den defensiven Kampf ausgelegt ist (extralange
+   Parierstangen, verstaerkter Handschutz im Griffbereich, ...) wie
+   ein maessiges Schild wirken. Die Vorteile liegen auf der Hand der
+   Spieler bekommt verstaerkten Schutz, kann aber weiterhin eine
+   Zweihandwaffe fuehren.
 
-  Der max. Bonus fuer diese Property betraegt 40, wobei 1-20 -> geringer
-  Bonus, 21-30 -> guter Bonus, 31-40 -> sehr guter Bonus.
+   Der max. Bonus fuer diese Property betraegt 40, wobei 1-20 ->
+   geringer Bonus, 21-30 -> guter Bonus, 31-40 -> sehr guter Bonus.
 
-  Zu beachten ist hier, dass sehr gute Parierwaffen mit P_EFFECTIVE_AC > 30
-  moeglichst deutlich unter der max. WC liegen sollten.
+   Zu beachten ist hier, dass sehr gute Parierwaffen mit
+   P_EFFECTIVE_AC > 30 moeglichst deutlich unter der max. WC liegen
+   sollten.
 
-  Anmerkungen:
-  Eine gesetzte P_EFFECTIVE_AC in einem Schild kann den Bonus fuer die
-  Schildparade nach oben oder unten beeinflussen. Moechte man ein Schild
-  herstellen, welches speziell bei der Schildparade der Kaempfer besser
-  als 'normal' schuetzt, sollte man hier einen Wert eintragen, der deutlich
-  groesser als die P_AC des Schildes ist.
+   Anmerkungen Eine gesetzte P_EFFECTIVE_AC in einem Schild kann den
+   Bonus fuer die Schildparade nach oben oder unten beeinflussen.
+   Moechte man ein Schild herstellen, welches speziell bei der
+   Schildparade der Kaempfer besser als 'normal' schuetzt, sollte man
+   hier einen Wert eintragen, der deutlich groesser als die P_AC des
+   Schildes ist.
 
-  Eine gesetzte P_EFFECTIVE_AC in einer anderen Ruestung hat nur den Nutzen,
-  auf deren erhoehten (und nicht sofort sichtbaren) Verteidigungswert
-  hinzuweisen, der durch eine DefendFunc() realisiert wird.
-
+   Eine gesetzte P_EFFECTIVE_AC in einer anderen Ruestung hat nur den
+   Nutzen, auf deren erhoehten (und nicht sofort sichtbaren)
+   Verteidigungswert hinzuweisen, der durch eine DefendFunc()
+   realisiert wird.
 
 2 Angriffsboni in Ruestungen - P_EFFECTIVE_WC (INT) - "effective_wc"
 
-  Fuer die Kaempfer koennen folgende Ruestungstypen modifiziert werden:
-  AT_TROUSERS (Hosen), AT_HELMET (Kopfbedeckung), AT_BOOT (Fusskleidung),
-  AT_ARMOUR (Koerperruestung), AT_SHIELD (Schilde).
-  Ist in einer dieser Typen P_EFFECTIVE_WC gesetzt, so macht diese Ruestung
-  bei einem Angriff mit einer Spezialattacke (Kniestoss, Kopfstoss, Fusstritt,
-  Ellbogenschlag und Schildstoss) entsprechend mehr bzw. weniger Schaden als
-  ohne diese Property. Eine entsprechende Begruendung fuer eine Verstaerkung
-  oder Schwaechung sollte auch hier fuer den Spieler offensichtlich sein
-  (Dornen am Schild, verstaerkter Kniebereich, Zacken am Helm, etc.).
+   Fuer die Kaempfer koennen folgende Ruestungstypen modifiziert
+   werden AT_TROUSERS (Hosen), AT_HELMET (Kopfbedeckung), AT_BOOT
+   (Fusskleidung), AT_ARMOUR (Koerperruestung), AT_SHIELD (Schilde).
+   Ist in einer dieser Typen P_EFFECTIVE_WC gesetzt, so macht diese
+   Ruestung bei einem Angriff mit einer Spezialattacke (Kniestoss,
+   Kopfstoss, Fusstritt, Ellbogenschlag und Schildstoss) entsprechend
+   mehr bzw. weniger Schaden als ohne diese Property. Eine
+   entsprechende Begruendung fuer eine Verstaerkung oder Schwaechung
+   sollte auch hier fuer den Spieler offensichtlich sein (Dornen am
+   Schild, verstaerkter Kniebereich, Zacken am Helm, etc.).
 
-  Wenn man der Ruestung einen Bonus geben moechte, muss man darauf achten,
-  dass P_EFFECTIVE_WC hoeher ist als die P_AC der Ruestung! Sollte
-  P_EFFECTIVE_WC niedriger als P_AC sein, wird dennoch P_EFFECTIVE_WC als
-  Angriffswert genommen. Dies stellt natuerlich eine Schwaechung der
-  Spezialattacke dar. Moeglicherweise ist aber genau das gewollt, wenn eine
-  Ruestung, die sehr gut schuetzt, nur geringen Kaempferbonus aufweisen soll.
+   Wenn man der Ruestung einen Bonus geben moechte, muss man darauf
+   achten, dass P_EFFECTIVE_WC hoeher ist als die P_AC der Ruestung!
+   Sollte P_EFFECTIVE_WC niedriger als P_AC sein, wird dennoch
+   P_EFFECTIVE_WC als Angriffswert genommen. Dies stellt natuerlich
+   eine Schwaechung der Spezialattacke dar. Moeglicherweise ist aber
+   genau das gewollt, wenn eine Ruestung, die sehr gut schuetzt, nur
+   geringen Kaempferbonus aufweisen soll.
 
-  Beispiel: ein Schild aus Hartgummi kann recht gut Schlaege aller Art
-  abfangen (-> P_AC 35). Will der Kaempfer jedoch einen Schildstoss damit
-  machen, fehlt ihm aufgrund der Beschaffenheit die Wucht, eher daempft es
-  den Schildstoss noch ein wenig (-> P_EFFECTIVE_WC 25).
+   Beispiel ein Schild aus Hartgummi kann recht gut Schlaege aller Art
+   abfangen (-> P_AC 35). Will der Kaempfer jedoch einen Schildstoss
+   damit machen, fehlt ihm aufgrund der Beschaffenheit die Wucht, eher
+   daempft es den Schildstoss noch ein wenig (-> P_EFFECTIVE_WC 25).
 
-  Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der jeweils
-  doppelte maximale P_AC-Wert (s. 'man ruestungen').
+   Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der
+   jeweils doppelte maximale P_AC-Wert (s. 'man ruestungen').
 
-  Die Angabe eines Schadenstyps (P_DAM_TYPE) in einer Ruestung kann dann
-  sinnvoll sein, wenn bei der Spezialattacke ein spezieller Schaden gemacht
-  werden soll. Beispielsweise sollten Flammenstiefel logischerweise DT_FIRE
-  und DT_BLUDGEON oder DT_PIERCE bei einem Kampftritt verursachen. Es MUSS
-  (logischerweise) mindestens ein physikalischer Schadenstyp enthalten sein.
-  Wird kein Schadenstyp angegeben, wird auf Standardtypen zurueckgegriffen.
+   Die Angabe eines Schadenstyps (P_DAM_TYPE) in einer Ruestung kann
+   dann sinnvoll sein, wenn bei der Spezialattacke ein spezieller
+   Schaden gemacht werden soll. Beispielsweise sollten Flammenstiefel
+   logischerweise DT_FIRE und DT_BLUDGEON oder DT_PIERCE bei einem
+   Kampftritt verursachen. Es MUSS (logischerweise) mindestens ein
+   physikalischer Schadenstyp enthalten sein. Wird kein Schadenstyp
+   angegeben, wird auf Standardtypen zurueckgegriffen.
 
 
-SIEHE AUCH:
-     Waffen:     P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
-     Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
-     Files:      /std/weapon.c, /std/weapon/combat.c
-     Balance:    waffen, ruestungen, properties
+SIEHE AUCH
+==========
 
------------------------------------------------------------------------------
+   Waffen:     P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
+   Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
+   Files:      /std/weapon.c, /std/weapon/combat.c
+   Balance:    waffen, ruestungen, properties
+
 26.10.2012, Gabylon
diff --git a/doc/props/obsolete/P_BALANCED_WEAPON b/doc/props/obsolete/P_BALANCED_WEAPON
index e785f2c..83a2fc4 100644
--- a/doc/props/obsolete/P_BALANCED_WEAPON
+++ b/doc/props/obsolete/P_BALANCED_WEAPON
@@ -1,35 +1,59 @@
-********************* UNGENUTZTE PROPERTY *****************************
-* Diese Property wird von der Mudlib NICHT ausgewertet und kann       *
-* als veraltet gelten.                                                *
-* Momentan ist auch keine Gilde bekannt, die mehr macht, als sie      *
-* auszugeben.                                                         *
-***********************************************************************
-NAME:
-        P_BALANCED_WEAPON  "balanced_weapon"
 
-DEFINIERT IN:
-        /sys/weapon.h
+P_BALANCED_WEAPON
+*****************
 
-BESCHREIBUNG:
-        Die Property gibt an, ob eine Waffe ausbalanciert ist oder nicht.
-        Die beiden moeglichen Werte sind logischerweise:
+********************* UNGENUTZTE PROPERTY
+***************************** * Diese Property wird von der Mudlib
+NICHT ausgewertet und kann       * * als veraltet gelten.
+* * Momentan ist auch keine Gilde bekannt, die mehr macht, als sie
+* * auszugeben.
+* *******************************************************************
+****
 
-                WP_BALANCED       balanciert
-                WP_UNBALANCED     unbalanciert
 
-        Die WP_* sind ebenfalls in <weapon.h> definiert.
+NAME
+====
 
-BEISPIELE:
-        a) Eine ausbalancierte Waffe ist z.B. ein Kampfstab.
+   P_BALANCED_WEAPON  "balanced_weapon"
 
-            SetProp(P_BALANCED_WEAPON,WP_BALANCED);
 
-        b) Eine nicht ausbalancierte Waffe ist z.B. eine Keule.
+DEFINIERT IN
+============
 
-            SetProp(P_BALANCED_WEAPON,WP_UNBALANCED);
+   /sys/weapon.h
 
-SIEHE AUCH:
-        P_TECHNIQUE, /std/weapon/combat.c
 
-LETZTE AeNDERUNG:
+BESCHREIBUNG
+============
+
+   Die Property gibt an, ob eine Waffe ausbalanciert ist oder nicht.
+   Die beiden moeglichen Werte sind logischerweise:
+
+           WP_BALANCED       balanciert
+           WP_UNBALANCED     unbalanciert
+
+   Die WP_* sind ebenfalls in <weapon.h> definiert.
+
+
+BEISPIELE
+=========
+
+   a) Eine ausbalancierte Waffe ist z.B. ein Kampfstab.
+
+       SetProp(P_BALANCED_WEAPON,WP_BALANCED);
+
+   b) Eine nicht ausbalancierte Waffe ist z.B. eine Keule.
+
+       SetProp(P_BALANCED_WEAPON,WP_UNBALANCED);
+
+
+SIEHE AUCH
+==========
+
+   P_TECHNIQUE, /std/weapon/combat.c
+
+
+LETZTE AeNDERUNG
+================
+
 15.02.2009, Zesstra
diff --git a/doc/props/obsolete/P_DEFAULT_INFO b/doc/props/obsolete/P_DEFAULT_INFO
index 814928c..9a16169 100644
--- a/doc/props/obsolete/P_DEFAULT_INFO
+++ b/doc/props/obsolete/P_DEFAULT_INFO
@@ -1,28 +1,50 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
 
-NAME:
-    P_DEFAULT_INFO                "default_info"
+P_DEFAULT_INFO
+**************
 
-DEFINIERT IN:
-    /sys/properties.h
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
 
-BESCHREIBUNG:
-    Default-Antwort eines Npc, wenn er auf das Schluesselwort durch den
-    Spieler kein AddInfo parat hat.
 
-BEMERKUNG:
-    Diese Property sollte nicht mehr benutzt werden. Stattdessen bitte
-    AddInfo(DEFAULT_INFO,...) verwenden.
-    Dem in dieser Prop angegeben String wird immer der Name des Npc
-    vorausgestellt. Will man dies verhindern, muss man sie ueberschreiben.
+NAME
+====
 
-BEISPIEL:
-    SetProp(P_DEFAULT_INFO,"bohrt gelangweilt in der Nase.\n");
+   P_DEFAULT_INFO                "default_info"
 
-SIEHE AUCH:
-    AddInfo
 
-----------------------------------------------------------------------------
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Default-Antwort eines Npc, wenn er auf das Schluesselwort durch den
+   Spieler kein AddInfo parat hat.
+
+
+BEMERKUNG
+=========
+
+   Diese Property sollte nicht mehr benutzt werden. Stattdessen bitte
+   AddInfo(DEFAULT_INFO,...) verwenden.
+   Dem in dieser Prop angegeben String wird immer der Name des Npc
+   vorausgestellt. Will man dies verhindern, muss man sie ueberschreiben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_DEFAULT_INFO,"bohrt gelangweilt in der Nase.\n");
+
+
+SIEHE AUCH
+==========
+
+   AddInfo
+
 17.08.2010, Zesstra
diff --git a/doc/props/obsolete/P_EXTRA_LOOK b/doc/props/obsolete/P_EXTRA_LOOK
deleted file mode 100644
index 3777a25..0000000
--- a/doc/props/obsolete/P_EXTRA_LOOK
+++ /dev/null
@@ -1,35 +0,0 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte benutzt sie NICHT mehr, sondern  *
-* stattdessden AddExtraLook().                                        *
-***********************************************************************
-
-NAME:
-	P_EXTRA_LOOK			"extralook"
-
-DEFINIERT IN:
-	/sys/living/description.h
-
-BESCHREIBUNG:
-	Diese Property enthaelt einen String. Sie wird entweder in Lebewesen
-	direkt oder in Objekten gesetzt wird, die im Besitz von Lebewesen
-	sein koennen.
-	Diese Strings erscheinen dann zusaetzlich in der Langbeschreibung
-	des Lebewesens bzw. des Besitzers (wenn das Objekt sich direkt im
-	 Lebewesen befindet, jedoch nicht in einem Behaelter im Lebewesen).
-	Fuer den Zeilenumbruch muss man selbst sorgen.
-
-BEISPIEL:
-	Ein Spieler hat eine Pfeife im Mund. In dieser Pfeife setzt man z.B.
-	in der Funktion zum Pfeife Rauchen folgendes:
-	  SetProp(P_EXTRA_LOOK,break_string(
-	 this_player()->Name(WER)+" ist ganz umnebelt.",78);
-
-BEMERKUNG:
-  BITTE NICHT MEHR BENUTZEN!
-
-SIEHE AUCH:
-	long(), /std/living/description.c, /std/player/base.c
-  AddExtraLook(), RemoveExtraLook()
-
-----------------------------------------------------------------------------
-13.05.2007, Zesstra
diff --git a/doc/props/obsolete/P_LAST_KILLER b/doc/props/obsolete/P_LAST_KILLER
index 27eea8f..199a878 100644
--- a/doc/props/obsolete/P_LAST_KILLER
+++ b/doc/props/obsolete/P_LAST_KILLER
@@ -1,20 +1,37 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet und wird bald aus der Mudlib entfernt.  *
-***********************************************************************
 
-NAME:
-    P_LAST_KILLER                 "last_killer"                 
+P_LAST_KILLER
+*************
 
-DEFINIERT IN:
-    /sys/player.h
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet und wird
+bald aus der Mudlib entfernt.  * ************************************
+***********************************
 
-BESCHREIBUNG:
-     Letzter Moerdes des Wesens.
-     Diese Property wurde nur in Spielern gesetzt und auch dann nicht immer.
-     Bitte stattdessen P_KILLER abfragen, welche in NPC und Spielern gesetzt
-     wird.
 
-SIEHE AUCH:
-    P_KILLER, die()
+NAME
+====
+
+   P_LAST_KILLER                 "last_killer"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Letzter Moerdes des Wesens.
+   Diese Property wurde nur in Spielern gesetzt und auch dann nicht immer.
+   Bitte stattdessen P_KILLER abfragen, welche in NPC und Spielern gesetzt
+   wird.
+
+
+SIEHE AUCH
+==========
+
+   P_KILLER, die()
 
 05.09.2008, Zesstra
diff --git a/doc/props/obsolete/P_LAST_PEACE_TIME b/doc/props/obsolete/P_LAST_PEACE_TIME
index 762233e..f8aea49 100644
--- a/doc/props/obsolete/P_LAST_PEACE_TIME
+++ b/doc/props/obsolete/P_LAST_PEACE_TIME
@@ -1,27 +1,41 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet und wird bald aus der Mudlib entfernt.  *
-***********************************************************************
-PROPERTY
 
-	P_LAST_PEACE_TIME	"last_peace_time"
+P_LAST_PEACE_TIME
+*****************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet und wird
+bald aus der Mudlib entfernt.  * ************************************
+***********************************
+
+
+PROPERTY
+========
+
+   P_LAST_PEACE_TIME       "last_peace_time"
+
 
 DEFINIERT IN
+============
 
-	/std/living/combat.c
+   /std/living/combat.c
+
 
 BESCHREIBUNG
+============
 
-	Diese Property gibt an, wann zuletzt versucht wurde, einen NPC zu
-	befrieden. Bitte nach Moeglichkeit nur lesend verwenden. Des weiteren
-	wird sie nur im ueblichen Verhalten von QueryPacify gesetzt, und nur
-	dann, wenn P_ACCEPT_PEACE nicht gesetzt ist.
+   Diese Property gibt an, wann zuletzt versucht wurde, einen NPC zu
+   befrieden. Bitte nach Moeglichkeit nur lesend verwenden. Des weiteren
+   wird sie nur im ueblichen Verhalten von QueryPacify gesetzt, und nur
+   dann, wenn P_ACCEPT_PEACE nicht gesetzt ist.
+
 
 SIEHE AUCH
+==========
 
-	QueryPacify, P_ACCEPT_PEACE
+   QueryPacify, P_ACCEPT_PEACE
+
 
 LETZTE AENDERUNG
+================
 
-	2004-03-17, 14:30 von Humni
-	
-
+   2004-03-17, 14:30 von Humni
diff --git a/doc/props/obsolete/P_LOG_FILE b/doc/props/obsolete/P_LOG_FILE
index 1eafe40..ed57133 100644
--- a/doc/props/obsolete/P_LOG_FILE
+++ b/doc/props/obsolete/P_LOG_FILE
@@ -1,45 +1,69 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property wird nicht mehr ausgewertet.                         *
-***********************************************************************
-NAME:
-    P_LOG_FILE                   "log_file"
 
-DEFINIERT IN:
-    /sys/thing/properties.h
+P_LOG_FILE
+**********
 
-BESCHREIBUNG:
-    Enthaelt einen String auf einen Filenamen. 
+********************* VERALTETE PROPERTY
+****************************** * Diese Property wird nicht mehr
+ausgewertet.                         * ******************************
+*****************************************
 
-    Werden zu dem Objekt (Raum, Monster, ...) Fehlermeldungen abgesetzt, 
-    werden diese in das angegebene File umgeleitet. Die Eintragung in
-    die per Default fuer Fehlermeldungen vorgesehenen Dateien erfolgt
-    nicht.
 
-BEMERKUNGEN:
-    P_LOG_FILE wird ausgewertet wie log_file().
+NAME
+====
 
-    Das heisst, es wird AUF JEDEN FALL nach /log geschrieben!
+   P_LOG_FILE                   "log_file"
 
-    Direkt in /log kann NICHT geschrieben werden, es muss also ein 
-    Unterverzeichnis mit Eurem Magiernamen vorhanden sein.
 
-BEISPIELE:
-    SetProp(P_LOG_FILE,"tilly_log");          // FALSCH, es wuerde versucht, 
-                                                 das File /log/tilly_log 
-                                                 anzulegen
-    SetProp(P_LOG_FILE,"/log/tilly_log");     // FALSCH, es wuerde versucht, 
-                                                 das File /log/log/tilly_log
-                                                 anzulegen
-    SetProp(P_LOG_FILE,"/d/ebene/tilly_log"); // FALSCH, s.o.
+DEFINIERT IN
+============
 
-    SetProp(P_LOG_FILE,"tilly/tilly_log");    // RICHTIG!
+   /sys/thing/properties.h
 
-    Im letzten Beispiel werden alle Eintraege in das File tilly_log ge-
-    schrieben, das sich im Verzeichnis /log/tilly/ befindet.
 
-    Das Unterverzeichnis /tilly in /log muss zuvor angelegt werden.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-    P_LOG_INFO, write_file(), log_file(),
+   Enthaelt einen String auf einen Filenamen.
+
+   Werden zu dem Objekt (Raum, Monster, ...) Fehlermeldungen abgesetzt,
+   werden diese in das angegebene File umgeleitet. Die Eintragung in
+   die per Default fuer Fehlermeldungen vorgesehenen Dateien erfolgt
+   nicht.
+
+
+BEMERKUNGEN
+===========
+
+   P_LOG_FILE wird ausgewertet wie log_file().
+
+   Das heisst, es wird AUF JEDEN FALL nach /log geschrieben!
+
+   Direkt in /log kann NICHT geschrieben werden, es muss also ein
+   Unterverzeichnis mit Eurem Magiernamen vorhanden sein.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_LOG_FILE,"tilly_log");          // FALSCH, es wuerde versucht,
+                                                das File /log/tilly_log
+                                                anzulegen
+   SetProp(P_LOG_FILE,"/log/tilly_log");     // FALSCH, es wuerde versucht,
+                                                das File /log/log/tilly_log
+                                                anzulegen
+   SetProp(P_LOG_FILE,"/d/ebene/tilly_log"); // FALSCH, s.o.
+
+   SetProp(P_LOG_FILE,"tilly/tilly_log");    // RICHTIG!
+
+   Im letzten Beispiel werden alle Eintraege in das File tilly_log ge-
+   schrieben, das sich im Verzeichnis /log/tilly/ befindet.
+
+   Das Unterverzeichnis /tilly in /log muss zuvor angelegt werden.
+
+
+SIEHE AUCH
+==========
+
+   P_LOG_INFO, write_file(), log_file(),
 
 Letzte Aenderung: 13.09.04 Tilly@MorgenGrauen
diff --git a/doc/props/obsolete/P_NEXT_SPELL_TIME b/doc/props/obsolete/P_NEXT_SPELL_TIME
index 4742456..300a766 100644
--- a/doc/props/obsolete/P_NEXT_SPELL_TIME
+++ b/doc/props/obsolete/P_NEXT_SPELL_TIME
@@ -1,30 +1,49 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
 
-NAME:
-    P_NEXT_SPELL_TIME             "next_spell"
+P_NEXT_SPELL_TIME
+*****************
 
-DEFINIERT IN:
-    /sys/new_skills.h
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
 
-BESCHREIBUNG:
-    Wann kann das naechste Mal gezaubert werden?
-    Dies ist eine globale Spruchermuedung/-Sperre.
-    Flexiblere Sperren koennen mittels SetSpellFatigue/CheckSpellFatigue()
-    verwaltet werden.
 
-    Diese Property ist keine echte Property, sondern liefert nur das
-    Ergebnis von von CheckSpellFatigue() zurueck bzw. ruft beim Setzen
-    SetSpellFatigue(<spruchsperre>, 0) auf.
-    Diese Prop sollte _nicht_ mittels Query- oder Setmethoden manupuliert
-    werden, da sonst Inkonsistenzen zum Ergebnis von CheckSpellFatigue()
-    auftreten.
+NAME
+====
 
-SIEHE AUCH:
-    SetSpellFatigue(L), CheckSpellFatigue(L)
-    spruchermuedung
+   P_NEXT_SPELL_TIME             "next_spell"
 
-ZULETZT GEAeNDERT:
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Wann kann das naechste Mal gezaubert werden?
+   Dies ist eine globale Spruchermuedung/-Sperre.
+   Flexiblere Sperren koennen mittels SetSpellFatigue/CheckSpellFatigue()
+   verwaltet werden.
+
+   Diese Property ist keine echte Property, sondern liefert nur das
+   Ergebnis von von CheckSpellFatigue() zurueck bzw. ruft beim Setzen
+   SetSpellFatigue(<spruchsperre>, 0) auf.
+   Diese Prop sollte _nicht_ mittels Query- oder Setmethoden manupuliert
+   werden, da sonst Inkonsistenzen zum Ergebnis von CheckSpellFatigue()
+   auftreten.
+
+
+SIEHE AUCH
+==========
+
+   SetSpellFatigue(L), CheckSpellFatigue(L)
+   spruchermuedung
+
+
+ZULETZT GEAeNDERT
+=================
+
 14.03.2010, Zesstra
-
diff --git a/doc/props/obsolete/P_READ_MSG b/doc/props/obsolete/P_READ_MSG
index 5c79fdc..2331508 100644
--- a/doc/props/obsolete/P_READ_MSG
+++ b/doc/props/obsolete/P_READ_MSG
@@ -1,32 +1,56 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
-NAME:
-    P_READ_MSG                "read_msg"                
 
-DEFINIERT IN:
-    /sys/properties.h
+P_READ_MSG
+**********
 
-BESCHREIBUNG:
-    Diese Property ist veraltet. Ihre Funktion wird von
-    AddReadDetail(SENSE_DEFAULT, ...) uebernommen.
-    
-    Hier koennen Informationen gespeichert werden, die beim Lesen
-    des Objektes ausgegeben werden.
-     
-    Fuer das Identifizieren des zu lesenden Objektes wird der gleiche
-    Mechanismus benutzt wie fuer lesbare und andere Details.
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
 
-    Die Benutzung von process_string() ist in dieser Prop nicht mehr erlaubt.
 
-BEISPIEL:
-    AddId(({"rolle", "schriftrolle"}));
-    SetProp(P_READ_MSG,
-       "Du oeffnest die Rolle und liest: LOREM IPSUM ...\n");
-     
-SIEHE AUCH:
-    Details:   AddReadDetail(), RemoveReadDetail(), P_READ_DETAILS
-    Sonstiges: break_string()
+NAME
+====
+
+   P_READ_MSG                "read_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property ist veraltet. Ihre Funktion wird von
+   AddReadDetail(SENSE_DEFAULT, ...) uebernommen.
+
+
+
+   Hier koennen Informationen gespeichert werden, die beim Lesen
+   des Objektes ausgegeben werden.
+
+
+
+   Fuer das Identifizieren des zu lesenden Objektes wird der gleiche
+   Mechanismus benutzt wie fuer lesbare und andere Details.
+
+   Die Benutzung von process_string() ist in dieser Prop nicht mehr erlaubt.
+
+
+BEISPIEL
+========
+
+   AddId(({"rolle", "schriftrolle"}));
+   SetProp(P_READ_MSG,
+      "Du oeffnest die Rolle und liest: LOREM IPSUM ...\n");
+
+
+SIEHE AUCH
+==========
+
+   Details:   AddReadDetail(), RemoveReadDetail(), P_READ_DETAILS
+   Sonstiges: break_string()
 
 09.12.2012, Zesstra
-
diff --git a/doc/props/obsolete/P_TECHNIQUE b/doc/props/obsolete/P_TECHNIQUE
index 1657027..a556ce6 100644
--- a/doc/props/obsolete/P_TECHNIQUE
+++ b/doc/props/obsolete/P_TECHNIQUE
@@ -1,44 +1,70 @@
-********************* UNGENUTZTE PROPERTY *****************************
-* Diese Property wird von der Mudlib NICHT ausgewertet und kann       *
-* als veraltet gelten.                                                *
-* Momentan ist auch keine Gilde bekannt, die mehr macht, als sie      *
-* auszugeben.                                                         *
-***********************************************************************
-NAME:
-	P_TECHNIQUE				"technique"
 
-DEFINIERT IN:
-	/sys/weapon.h
+P_TECHNIQUE
+***********
 
-BESCHREIBUNG:
-        Die Technik(en), mit denen eine Waffe im Kampf eingesetzt werden
-        kann. Folgende Techniken stehen zur Verfuegung:
+********************* UNGENUTZTE PROPERTY
+***************************** * Diese Property wird von der Mudlib
+NICHT ausgewertet und kann       * * als veraltet gelten.
+* * Momentan ist auch keine Gilde bekannt, die mehr macht, als sie
+* * auszugeben.
+* *******************************************************************
+****
 
-                TQ_STROKE       Streichtechnik
-                TQ_THRASH       Schlagtechnik
-                TQ_THRUST       Stosstechnik
-                TQ_WHIP         Peitschtechnik
 
-        Die Techniken sind ebenfalls in <weapon.h> definiert und auf der
-        man-page 'techniken' naeher erlaeutert.
+NAME
+====
 
-BEMERKUNGEN:
-        Man kann einer Waffe eine oder mehrere Techniken zuweisen.
+   P_TECHNIQUE                             "technique"
 
-BEISPIELE:
-        a) Eine Waffe, die nur mit einer Peitschtechnik eingesetzt wird,
-           also typischerweise eine Peitsche, aber auch ein Morgenstern:
 
-            SetProp(P_TECHNIQUE,TQ_WHIP);
+DEFINIERT IN
+============
 
-        b) Eine Waffe, die sowohl mit der Schlag- als auch der Stosstechnik
-           eingesetzt wird, also z.B. eine Hellebarde:
+   /sys/weapon.h
 
-            SetProp(P_TECHNIQUE,({TQ_THRASH,TQ_THRUST}));
 
-SIEHE AUCH:
-        techniken, P_BALANCED_WEAPON, /std/weapon/combat.c
+BESCHREIBUNG
+============
 
-LETZTE AeNDERUNG:
+   Die Technik(en), mit denen eine Waffe im Kampf eingesetzt werden
+   kann. Folgende Techniken stehen zur Verfuegung:
+
+           TQ_STROKE       Streichtechnik
+           TQ_THRASH       Schlagtechnik
+           TQ_THRUST       Stosstechnik
+           TQ_WHIP         Peitschtechnik
+
+   Die Techniken sind ebenfalls in <weapon.h> definiert und auf der
+   man-page 'techniken' naeher erlaeutert.
+
+
+BEMERKUNGEN
+===========
+
+   Man kann einer Waffe eine oder mehrere Techniken zuweisen.
+
+
+BEISPIELE
+=========
+
+   a) Eine Waffe, die nur mit einer Peitschtechnik eingesetzt wird,
+      also typischerweise eine Peitsche, aber auch ein Morgenstern:
+
+       SetProp(P_TECHNIQUE,TQ_WHIP);
+
+   b) Eine Waffe, die sowohl mit der Schlag- als auch der Stosstechnik
+      eingesetzt wird, also z.B. eine Hellebarde:
+
+       SetProp(P_TECHNIQUE,({TQ_THRASH,TQ_THRUST}));
+
+
+SIEHE AUCH
+==========
+
+   techniken, P_BALANCED_WEAPON, /std/weapon/combat.c
+
+
+LETZTE AeNDERUNG
+================
+
 15.02.2009, Zesstra
-
diff --git a/doc/props/obsolete/P_TMP_ATTACK_HOOK b/doc/props/obsolete/P_TMP_ATTACK_HOOK
index bdc8152..6bd5130 100644
--- a/doc/props/obsolete/P_TMP_ATTACK_HOOK
+++ b/doc/props/obsolete/P_TMP_ATTACK_HOOK
@@ -1,73 +1,95 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
+
 P_TMP_ATTACK_HOOK
+*****************
 
-NAME:
-    P_TMP_ATTACK_HOOK             "attack_hook"
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_ATTACK_HOOK
 
-DEFINIERT IN:
-    /sys/new_skills.h
 
-BESCHREIBUNG:
-     Mittels dieser Property koennen die Attacken eines Livings ggf.
-     abgebrochen werden noch bevor Waffen oder Skills zum ausgewertet
-     wurden.
+NAME
+====
 
-     Es wird an dem Living die Property als mindestens 3-elementiges Array:
-     ({zeitpunkt, objekt, methode, ...})
-     gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
-     Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+   P_TMP_ATTACK_HOOK             "attack_hook"
 
-     Der Methode wird als Parameter der Gegner uebergeben.
 
-     Gibt die Methode 0 als Rueckgabewert zurueck, wird die Attacke sofort
-     kommentarlos abgebrochen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
-     - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
-       Property auf 0 gesetzt
-     - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
-       pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
-       im Code anderer und ist andererseits unfair gegenueber ihnen
+   /sys/new_skills.h
 
-BEISPIELE:
-     *** der Spieler erhaelt eine Verwundung, die ihn manchmal behindert ***
-     if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_HOOK)) ||
-        sizeof(tmp)<3 || tmp[0]<=time()) {
-       TP->SetProp(P_TMP_ATTACK_HOOK,
-		   ({time()+3600, this_object(), "test_hurt"}));
-     ...
 
-     // die entsprechende Methode, die bei jedem Angriff ueber Attack()
-     // gerufen wird ...
-     int test_hurt(object enemy) {
+BESCHREIBUNG
+============
 
-       // mit 10% Chance generell und 20% Chance bei groesseren Gegnern
-       // bricht der Angriff ab ... previous_object() ist natuerlich
-       // der Angreifer
-       if(!random(10) ||
-          (enemy->QueryProp(P_SIZE)>previous_object()->QueryProp(P_SIZE) &&
-           !random(5)) {
+   Mittels dieser Property koennen die Attacken eines Livings ggf.
+   abgebrochen werden noch bevor Waffen oder Skills zum ausgewertet
+   wurden.
 
-          tell_object(previous_object(),
-            "Deine Wunde schmerzt dich zu sehr um anzugreifen.\n");
-          tell_room(environment(previous_object()),
-            previous_object()->Name(WER,1)+" zuckt vor Schmerzen zusammen.\n",
-            ({previous_object()}));
-          return 0;
-       }
+   Es wird an dem Living die Property als mindestens 3-elementiges Array:
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
 
-       // ansonsten geht der Angriff weiter
-       return 1;
+   Der Methode wird als Parameter der Gegner uebergeben.
+
+   Gibt die Methode 0 als Rueckgabewert zurueck, wird die Attacke sofort
+   kommentarlos abgebrochen.
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIELE
+=========
+
+   *** der Spieler erhaelt eine Verwundung, die ihn manchmal behindert ***
+   if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_HOOK)) ||
+      sizeof(tmp)<3 || tmp[0]<=time()) {
+     TP->SetProp(P_TMP_ATTACK_HOOK,
+                 ({time()+3600, this_object(), "test_hurt"}));
+   ...
+
+   // die entsprechende Methode, die bei jedem Angriff ueber Attack()
+   // gerufen wird ...
+   int test_hurt(object enemy) {
+
+     // mit 10% Chance generell und 20% Chance bei groesseren Gegnern
+     // bricht der Angriff ab ... previous_object() ist natuerlich
+     // der Angreifer
+     if(!random(10) ||
+        (enemy->QueryProp(P_SIZE)>previous_object()->QueryProp(P_SIZE) &&
+         !random(5)) {
+
+        tell_object(previous_object(),
+          "Deine Wunde schmerzt dich zu sehr um anzugreifen.\n");
+        tell_room(environment(previous_object()),
+          previous_object()->Name(WER,1)+" zuckt vor Schmerzen zusammen.\n",
+          ({previous_object()}));
+        return 0;
      }
 
-SIEHE AUCH:
-     Angriff:	Attack(L)
-     Schutz:    Defend(L)
-     Verwandt:  InternalModifyAttack(L), P_TMP_ATTACK_MOD	
-     Hooks:	P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_DEFEND_HOOK
-     neue Hooks: std/hooks
+     // ansonsten geht der Angriff weiter
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L)
+   Schutz:    Defend(L)
+   Verwandt:  InternalModifyAttack(L), P_TMP_ATTACK_MOD
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_DEFEND_HOOK
+   neue Hooks: std/hooks
 
 08.12.2008, Zesstra
diff --git a/doc/props/obsolete/P_TMP_ATTACK_MOD b/doc/props/obsolete/P_TMP_ATTACK_MOD
index 3491c0c..df10409 100644
--- a/doc/props/obsolete/P_TMP_ATTACK_MOD
+++ b/doc/props/obsolete/P_TMP_ATTACK_MOD
@@ -1,112 +1,134 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
+
 P_TMP_ATTACK_MOD
+****************
 
-NAME:
-     P_TMP_ATTACK_MOD              "attack_mod"
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_ATTACK_MOD
 
-DEFINIERT IN:
-     /sys/new_skills.h
 
-BESCHREIBUNG:
-     Mittels dieser Property koennen die Attacken eines Livings temporaer
-     veraendert werden.
+NAME
+====
 
-     Es wird an dem Living die Property als mindestens 3-elementiges Array
-     ({zeitpunkt, objekt, methode, ...})
-     gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
-     Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+   P_TMP_ATTACK_MOD              "attack_mod"
 
-     Der Methode wird beim Aufruf ein Kopie des Mappings uebergeben, in dem
-     die bisherigen Werte des Angriffes vermerkt sind.
-     Aufbau von Mapping 'ainfo':
-     ([ SI_ENEMY :           object Angreifer,			(-> Defend)
-        SI_SPELL :           0/1/array Spellparameter,		(-> Defend)
-        P_WEAPON :           - oder Waffe,
-        SI_SKILLDAMAGE_MSG:  string Angriffsmeldungsende an Raum,
-        SI_SKILLDAMAGE_MSG2: string Angriffsmeldungsende an Kaempfende,
-        SI_SKILLDAMAGE:      int Schaden in Zehntel HP (Skills bis auf Rasse
-			     drin!)				(-> Defend),
-        SI_SKILLDAMAGE_TYPE: string/string* Schadenstypen,	(-> Defend)
-        P_WEAPON_TYPE:       string Waffentyp (combat.h),
-        P_WC:		     - oder int WC der Waffe/Hand,
-        P_NR_HANDS:	     - oder int Hands der Waffe/Hand,
-     ]);
 
-     Gibt die Methode:
-     - 0 oder kein Mapping zurueck, fuehrt das zum Abbruch der Attacke
-       -> da inzwischen Waffen abgefragt wurden, koennen schon Meldungen
-          von diesen ausgegeben worden sein
-     - ein leeres Mapping ( ([]) ) zurueck, fuehrt das zu keiner Modifikation
-     - ein Mapping mit veraenderten Werten zurueck, werden diese in das
-       Angriffsmapping kopiert
-       Die geaenderten Werte werden teilweise von SkillResTransfer() in
-       den eigentlichen Angriff uebernommen.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
-       Property auf 0 gesetzt
-     - vor dem Setzen immer auf die Existenz eines gueltigen Modifiers
-       pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
-       im Code anderer und ist andererseits unfair gegenueber ihnen
+   /sys/new_skills.h
 
-BEISPIELE:
-     *** ein besonder heisser Segen modifiziert die Attacken des Spielers ***
-     int action_segen() {
-       ...
-       mixed *tmp;
 
-       // pruefen, ob nicht ein anderer Modifier existiert
-       if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_MOD)) ||
-          sizeof(tmp)<3 || tmp[0]<=time()) {
+BESCHREIBUNG
+============
 
-         object wield;
-         wield=TP->QueryProp(P_WEAPON);
+   Mittels dieser Property koennen die Attacken eines Livings temporaer
+   veraendert werden.
 
-         write(break_string(
-           "Der Priester der Flamme weiht "+
-           (wield?wield->name(WEN,1):"deine Haende")+".", 78));
+   Es wird an dem Living die Property als mindestens 3-elementiges Array
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
 
-         // setzen des Modifiers .. 30-40 Sekunden gueltig
-         TP->SetProp(P_TMP_ATTACK_MOD,
-	              ({time()+30+random(10), this_object(), "modfun"}));
-        } else ...
-        ...
-      return 1;
-     }
+   Der Methode wird beim Aufruf ein Kopie des Mappings uebergeben, in dem
+   die bisherigen Werte des Angriffes vermerkt sind.
+   Aufbau von Mapping 'ainfo':
+   ([ SI_ENEMY :           object Angreifer,                  (-> Defend)
+      SI_SPELL :           0/1/array Spellparameter,          (-> Defend)
+      P_WEAPON :           - oder Waffe,
+      SI_SKILLDAMAGE_MSG:  string Angriffsmeldungsende an Raum,
+      SI_SKILLDAMAGE_MSG2: string Angriffsmeldungsende an Kaempfende,
+      SI_SKILLDAMAGE:      int Schaden in Zehntel HP (Skills bis auf Rasse
+                           drin!)                             (-> Defend),
+      SI_SKILLDAMAGE_TYPE: string/string* Schadenstypen,      (-> Defend)
+      P_WEAPON_TYPE:       string Waffentyp (combat.h),
+      P_WC:                - oder int WC der Waffe/Hand,
+      P_NR_HANDS:          - oder int Hands der Waffe/Hand,
+   ]);
 
-     // die eigentlich Methode, die waehrend des Angriffs gerufen wird
-     mapping modfun(mapping ainfo) {
-       mapping ret;
+   Gibt die Methode:
+   - 0 oder kein Mapping zurueck, fuehrt das zum Abbruch der Attacke
+     -> da inzwischen Waffen abgefragt wurden, koennen schon Meldungen
+        von diesen ausgegeben worden sein
+   - ein leeres Mapping ( ([]) ) zurueck, fuehrt das zu keiner Modifikation
+   - ein Mapping mit veraenderten Werten zurueck, werden diese in das
+     Angriffsmapping kopiert
+     Die geaenderten Werte werden teilweise von SkillResTransfer() in
+     den eigentlichen Angriff uebernommen.
 
-       // Returnwert ist immer ein Mapping, damit die Attacke weitergeht
-       ret=m_allocate(0,1);
 
-       // magische Waffen oder Sprueche werden nicht verbessert
-       if(ainfo[P_WEAPON_TYPE]!=WT_MAGIC) {
-         // sonst Verbesserungen ... Feuer addieren ...
-         ret[SI_SKILLDAMAGE_TYPE]=(ainfo[SI_SKILLDAMAGE_TYPE]||({}))+
-				({DT_FIRE});
-	 // ... und bei Waffe Meldungen anpassen
-         if(ainfo[P_WEAPON]) {
-           ret[SI_SKILLDAMAGE_MSG]=
-             " mit sengendem "+ainfo[P_WEAPON]->name(RAW);
-           ret[SI_SKILLDAMAGE_MSG2]=
-             " mit sengendem "+ainfo[P_WEAPON]->name(RAW);
-         }
+BEMERKUNGEN
+===========
+
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Modifiers
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIELE
+=========
+
+   *** ein besonder heisser Segen modifiziert die Attacken des Spielers ***
+   int action_segen() {
+     ...
+     mixed *tmp;
+
+     // pruefen, ob nicht ein anderer Modifier existiert
+     if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_MOD)) ||
+        sizeof(tmp)<3 || tmp[0]<=time()) {
+
+       object wield;
+       wield=TP->QueryProp(P_WEAPON);
+
+       write(break_string(
+         "Der Priester der Flamme weiht "+
+         (wield?wield->name(WEN,1):"deine Haende")+".", 78));
+
+       // setzen des Modifiers .. 30-40 Sekunden gueltig
+       TP->SetProp(P_TMP_ATTACK_MOD,
+                    ({time()+30+random(10), this_object(), "modfun"}));
+      } else ...
+      ...
+    return 1;
+   }
+
+   // die eigentlich Methode, die waehrend des Angriffs gerufen wird
+   mapping modfun(mapping ainfo) {
+     mapping ret;
+
+     // Returnwert ist immer ein Mapping, damit die Attacke weitergeht
+     ret=m_allocate(0,1);
+
+     // magische Waffen oder Sprueche werden nicht verbessert
+     if(ainfo[P_WEAPON_TYPE]!=WT_MAGIC) {
+       // sonst Verbesserungen ... Feuer addieren ...
+       ret[SI_SKILLDAMAGE_TYPE]=(ainfo[SI_SKILLDAMAGE_TYPE]||({}))+
+                              ({DT_FIRE});
+       // ... und bei Waffe Meldungen anpassen
+       if(ainfo[P_WEAPON]) {
+         ret[SI_SKILLDAMAGE_MSG]=
+           " mit sengendem "+ainfo[P_WEAPON]->name(RAW);
+         ret[SI_SKILLDAMAGE_MSG2]=
+           " mit sengendem "+ainfo[P_WEAPON]->name(RAW);
        }
-
-       return ret;
      }
 
-SIEHE AUCH:
-     Angriff:	Attack(L)
-     Schutz:    Defend(L)
-     Verwandt:  InternalModifyAttack(L)
-		P_TMP_ATTACK_HOOK
-		P_TMP_DEFEND_HOOK
-     Sonstiges: SkillResTransfer(L)
-     Hooks:	P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK
+     return ret;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L)
+   Schutz:    Defend(L)
+   Verwandt:  InternalModifyAttack(L)
+              P_TMP_ATTACK_HOOK
+              P_TMP_DEFEND_HOOK
+   Sonstiges: SkillResTransfer(L)
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK
 
 10.Feb 2005 Gloinson
diff --git a/doc/props/obsolete/P_TMP_DEFEND_HOOK b/doc/props/obsolete/P_TMP_DEFEND_HOOK
index 986e63a..f29d342 100644
--- a/doc/props/obsolete/P_TMP_DEFEND_HOOK
+++ b/doc/props/obsolete/P_TMP_DEFEND_HOOK
@@ -1,110 +1,131 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
+
 P_TMP_DEFEND_HOOK
+*****************
 
-NAME:
-     P_TMP_DEFEND_HOOK             "defend_hook"
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_DEFEND_HOOK
 
-DEFINIERT IN:
-     /sys/new_skills.h
 
-BESCHREIBUNG:
-     Mittels dieser Property koennen die Abwehren eines Livings temporaer
-     veraendert werden.
+NAME
+====
 
-     Es wird an dem Living die Property als mindestens 3-elementiges Array
-     ({zeitpunkt, objekt, methode, ...})
-     gesetzt und die Methode 'methode' wird dann waehrend des Defend() des
-     Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+   P_TMP_DEFEND_HOOK             "defend_hook"
 
-     Der Methode werden die Parameter der Defend() uebergeben:
-     int dam, mixed dam_type, mixed spell, object enemy
-     - spell ist definitiv ein Mapping - ein an Defend() uebergebener
-       int-Wert wurde aequivalent umgesetzt.
-     - dam_type ist definitiv ein Array von Schadenswerten oder einem Wert
 
-     Zudem findet der Aufruf der Methode nach dem Abarbeiten der P_DEFENDERS
-     statt, diese koennen also weitere Modifikationen vorgenommen haben.
+DEFINIERT IN
+============
 
-     Gibt die Funktion:
-     - 0 zurueck, wird Defend() abgebrochen (und damit der Schaden voellig
-       abgefangen) - nur noch die Flucht wird geprueft
-     - ein 3-elementiges Array ({schaden, schadenstypen, spell}) zurueck,
-       werden diese Werte in der Defend() an Stelle der uebergebenen Werte
-       verwendet
-     - weder noch zurueck, wird das Ergebnis ignoriert und die Defend laeuft
-       regulaer weiter
+   /sys/new_skills.h
 
-BEMERKUNGEN:
-     - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
-     - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
-       Property auf 0 gesetzt
-     - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
-       pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
-       im Code anderer und ist andererseits unfair gegenueber ihnen
 
-BEISPIEL:
-     *** ein gruener Schutzzauber ***
-     // Setzen der Prop
-     ...
-     tmp=TP->QueryProp(P_TMP_DEFEND_HOOK);
+BESCHREIBUNG
+============
 
-     // ein etwas ausfuehrlicher Check, ob wir ueberschreiben koennen,
-     // Existenz && Gueltigkeit
-     if(pointerp(tmp) && sizeof(tmp) && intp(tmp[0]) && (time()<tmp[0]))
-      write("Der Zauber klappt nicht!\n");
-     else {
-      // der Zauber gilt eine Stunde
-      TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
-      write("Ein Zauber legt sich auf dich.\n");
-     }
-     ...
+   Mittels dieser Property koennen die Abwehren eines Livings temporaer
+   veraendert werden.
 
-     // die gerufene Methode
-     mixed abwehrfun(int dam, string* dam_type, mapping spell, object en) {
-      // keine rekursiven Schaeden abfangen ... mindestens ein magischer
-      // muss auch dabei sein
-      if((!mappingp(spell) || !spell[SP_RECURSIVE]) &&
-         sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+   Es wird an dem Living die Property als mindestens 3-elementiges Array
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des Defend() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
 
-       // mit 10% Whkeit schuetzt der Zauber total
-       if(!random(10)) {
-        tell_object(previous_object(),
-          "Dein Zauber gleisst rund um dich gruen auf.\n");
-        tell_room(environment(previous_object()), break_string(
-          previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
-          previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
-          ({previous_object()}));
+   Der Methode werden die Parameter der Defend() uebergeben:
+   int dam, mixed dam_type, mixed spell, object enemy
+   - spell ist definitiv ein Mapping - ein an Defend() uebergebener
+     int-Wert wurde aequivalent umgesetzt.
+   - dam_type ist definitiv ein Array von Schadenswerten oder einem Wert
 
-        // manchmal geht der Zauber dabei endgueltig kaputt
-        if(!random(10)) previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
+   Zudem findet der Aufruf der Methode nach dem Abarbeiten der P_DEFENDERS
+   statt, diese koennen also weitere Modifikationen vorgenommen haben.
 
-        return 0;			// volles Abfangen des Angriffs
-       }
+   Gibt die Funktion:
+   - 0 zurueck, wird Defend() abgebrochen (und damit der Schaden voellig
+     abgefangen) - nur noch die Flucht wird geprueft
+   - ein 3-elementiges Array ({schaden, schadenstypen, spell}) zurueck,
+     werden diese Werte in der Defend() an Stelle der uebergebenen Werte
+     verwendet
+   - weder noch zurueck, wird das Ergebnis ignoriert und die Defend laeuft
+     regulaer weiter
 
-       // der Zauber schuetzt auf jeden Fall immer ein bischen
-       tell_object(previous_object(),
-         "Dein Zauber flackert rund um dich gruen auf.\n");
-       tell_room(environment(previous_object()), break_string(
-         previous_object()->Name(WESSEN)+" Haut flackert rund um "+
-         previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
-         ({previous_object()}));
-       dam=(7+random(2))*dam/10;	// Schaden reduzieren
 
-       return(({dam, dam_type, spell}));
-      }
+BEMERKUNGEN
+===========
 
-      // der Zauber schuetzt dann gar nicht ...
-      return 1;
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIEL
+========
+
+   *** ein gruener Schutzzauber ***
+   // Setzen der Prop
+   ...
+   tmp=TP->QueryProp(P_TMP_DEFEND_HOOK);
+
+   // ein etwas ausfuehrlicher Check, ob wir ueberschreiben koennen,
+   // Existenz && Gueltigkeit
+   if(pointerp(tmp) && sizeof(tmp) && intp(tmp[0]) && (time()<tmp[0]))
+    write("Der Zauber klappt nicht!\n");
+   else {
+    // der Zauber gilt eine Stunde
+    TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
+    write("Ein Zauber legt sich auf dich.\n");
+   }
+   ...
+
+   // die gerufene Methode
+   mixed abwehrfun(int dam, string* dam_type, mapping spell, object en) {
+    // keine rekursiven Schaeden abfangen ... mindestens ein magischer
+    // muss auch dabei sein
+    if((!mappingp(spell) || !spell[SP_RECURSIVE]) &&
+       sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+
+     // mit 10% Whkeit schuetzt der Zauber total
+     if(!random(10)) {
+      tell_object(previous_object(),
+        "Dein Zauber gleisst rund um dich gruen auf.\n");
+      tell_room(environment(previous_object()), break_string(
+        previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
+        previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+        ({previous_object()}));
+
+      // manchmal geht der Zauber dabei endgueltig kaputt
+      if(!random(10)) previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
+
+      return 0;                       // volles Abfangen des Angriffs
      }
 
-SIEHE AUCH:
-     Angriff:	Attack(L)
-     Schutz:    Defend(L)
-     Verwandt:	InternalModifyDefend(L), P_TMP_ATTACK_MOD
-     Hooks:	P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
-     neue Hooks: std/hooks
+     // der Zauber schuetzt auf jeden Fall immer ein bischen
+     tell_object(previous_object(),
+       "Dein Zauber flackert rund um dich gruen auf.\n");
+     tell_room(environment(previous_object()), break_string(
+       previous_object()->Name(WESSEN)+" Haut flackert rund um "+
+       previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+       ({previous_object()}));
+     dam=(7+random(2))*dam/10;        // Schaden reduzieren
+
+     return(({dam, dam_type, spell}));
+    }
+
+    // der Zauber schuetzt dann gar nicht ...
+    return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L)
+   Schutz:    Defend(L)
+   Verwandt:  InternalModifyDefend(L), P_TMP_ATTACK_MOD
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
+   neue Hooks: std/hooks
 
 08.12.2008, Zesstra
-
diff --git a/doc/props/obsolete/P_TMP_DIE_HOOK b/doc/props/obsolete/P_TMP_DIE_HOOK
index cd18917..f4008cb 100644
--- a/doc/props/obsolete/P_TMP_DIE_HOOK
+++ b/doc/props/obsolete/P_TMP_DIE_HOOK
@@ -1,70 +1,91 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
+
 P_TMP_DIE_HOOK
+**************
 
-NAME:
-    P_TMP_DIE_HOOK                "die_hook"
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_DIE_HOOK
 
-DEFINIERT IN:
-    /sys/new_skills.h
 
-BESCHREIBUNG:
-     Mittels dieser Property kann der Tod eines Livings abgewendet werden.
+NAME
+====
 
-     Es wird an dem Living die Property als mindestens 3-elementiges Array
-     ({zeitpunkt, objekt, methode, ...})
-     gesetzt und die Methode 'methode' wird dann waehrend des die() des
-     Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
-     Bei Geistern wird der Hook nicht gerufen.
+   P_TMP_DIE_HOOK                "die_hook"
 
-     Der Methode wird ein int uebergeben, ob das Living Opfer von Gift
-     (P_POISON) war.
 
-     Gibt die Funktion einen Wert != 0 zurueck, wird die() sofort abgebrochen
-     und das Living stirbt nicht.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
-    - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
-      Property auf 0 gesetzt
-    - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
-      pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
-      im Code anderer und ist andererseits unfair gegenueber ihnen
+   /sys/new_skills.h
 
-BEISPIELE:
-     *** ein besonderer Giftschutz .. wirkt beim Tod ***
-     // pruefen, ob nicht ein anderer Modifier existiert
-     if(!pointerp(tmp=TP->QueryProp(P_TMP_DIE_HOOK)) ||
-        sizeof(tmp)<3 || tmp[0]<=time()) {
-       TP->SetProp(P_TMP_DIE_HOOK,
-	           ({time()+120+random(10), this_object(), "prevent_die"}));
 
-     // die gerufene Methode
-     int prevent_die(int poison) {
-       int ret;
+BESCHREIBUNG
+============
 
-       if(poison) {
-         tell_object(previous_object(),
-           "Ein Zauber reinigt im Moment des Todes dein Blut!\n");
-         tell_object(environment(previous_object()),
-           previous_object()->Name(WER,1)+" wird von Lichtern umhuellt.\n",
-           ({previous_object()}));
+   Mittels dieser Property kann der Tod eines Livings abgewendet werden.
 
-         ret=1;
-       }
+   Es wird an dem Living die Property als mindestens 3-elementiges Array
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des die() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+   Bei Geistern wird der Hook nicht gerufen.
 
-       // wir helfen nur einmal ... und ein Tod vernichtet die Hilfe auch
-       previous_object()->SetProp(P_TMP_DIE_HOOK, 0);
+   Der Methode wird ein int uebergeben, ob das Living Opfer von Gift
+   (P_POISON) war.
 
-       return ret;
+   Gibt die Funktion einen Wert != 0 zurueck, wird die() sofort abgebrochen
+   und das Living stirbt nicht.
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIELE
+=========
+
+   *** ein besonderer Giftschutz .. wirkt beim Tod ***
+   // pruefen, ob nicht ein anderer Modifier existiert
+   if(!pointerp(tmp=TP->QueryProp(P_TMP_DIE_HOOK)) ||
+      sizeof(tmp)<3 || tmp[0]<=time()) {
+     TP->SetProp(P_TMP_DIE_HOOK,
+                 ({time()+120+random(10), this_object(), "prevent_die"}));
+
+   // die gerufene Methode
+   int prevent_die(int poison) {
+     int ret;
+
+     if(poison) {
+       tell_object(previous_object(),
+         "Ein Zauber reinigt im Moment des Todes dein Blut!\n");
+       tell_object(environment(previous_object()),
+         previous_object()->Name(WER,1)+" wird von Lichtern umhuellt.\n",
+         ({previous_object()}));
+
+       ret=1;
      }
 
-SIEHE AUCH:
-     Tod:	die(L)
-     Sonstiges: P_POISON, P_KILLS, P_GHOST
-     Hooks:	P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK, P_TMP_DEFEND_HOOK
-     neue Hooks: std/hooks
+     // wir helfen nur einmal ... und ein Tod vernichtet die Hilfe auch
+     previous_object()->SetProp(P_TMP_DIE_HOOK, 0);
+
+     return ret;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Tod:       die(L)
+   Sonstiges: P_POISON, P_KILLS, P_GHOST
+   Hooks:     P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK, P_TMP_DEFEND_HOOK
+   neue Hooks: std/hooks
 
 08.12.2008, Zesstra
-
diff --git a/doc/props/obsolete/P_TMP_MOVE_HOOK b/doc/props/obsolete/P_TMP_MOVE_HOOK
index c28a067..8f1aa77 100644
--- a/doc/props/obsolete/P_TMP_MOVE_HOOK
+++ b/doc/props/obsolete/P_TMP_MOVE_HOOK
@@ -1,42 +1,65 @@
-********************* VERALTETE PROPERTY ******************************
-* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
-***********************************************************************
-NAME:
-    P_TMP_MOVE_HOOK             "move_hook"
 
-DEFINIERT IN:
-    /sys/new_skills.h
+P_TMP_MOVE_HOOK
+***************
 
-BESCHREIBUNG:
-    Mindestens 3-elementiges Array ({zeitpunkt, objekt, funktion, ...}).
-    Die Funktion wird im 'objekt' mit den gleichen Parametern wie move()
-    nach der Abfrage auf P_NO_TPORT aufgerufen, wenn der 'zeitpunkt'
-    noch nicht ueberschritten ist. Wenn die Funktion etwas anderes als ein
-    5-elementiges Array ({dest, methods, direction, textout, textin})
-    oder -1 zurueckgibt, wird move() normal ausgefuehrt, ansonsten werden die
-    5 move-Parameter durch die Array-Eintraege ersetzt bzw. wird bei einem
-    Rueckgabewert von -1 das move() abgebrochen. In letzterem Fall ist
-    die Funktion dafuer verantwortlich, eine entspr. Meldung an den
-    Spieler auszugeben!
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
 
-HINWEIS:
-    Falls man einem Spieler einen Move-Hook setzt, ist es ratsam, im
-    Move-Hook zu pruefen, ob das Spielerobjekt nach Abarbeitung der Hook-
-    Funktion noch lebt. Ansonsten wird ein doppeltes move() ausgefuehrt:
-    in den Todesraum und direkt wieder zurueck zur Leiche.
 
-BEMERKUNGEN:
-     - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
-     - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
-       Property auf 0 gesetzt
-     - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
-       pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
-       im Code anderer und ist andererseits unfair gegenueber ihnen
+NAME
+====
 
-SIEHE AUCH:
-     Bewegung:	move(L), NotifyMove(), PreventMove()
-     Hooks:	P_TMP_DIE_HOOK, P_TMP_DEFEND_HOOK, P_TMP_ATTACK_HOOK
-     neue Hooks: std/hooks
+   P_TMP_MOVE_HOOK             "move_hook"
 
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mindestens 3-elementiges Array ({zeitpunkt, objekt, funktion, ...}).
+   Die Funktion wird im 'objekt' mit den gleichen Parametern wie move()
+   nach der Abfrage auf P_NO_TPORT aufgerufen, wenn der 'zeitpunkt'
+   noch nicht ueberschritten ist. Wenn die Funktion etwas anderes als ein
+   5-elementiges Array ({dest, methods, direction, textout, textin})
+   oder -1 zurueckgibt, wird move() normal ausgefuehrt, ansonsten werden die
+   5 move-Parameter durch die Array-Eintraege ersetzt bzw. wird bei einem
+   Rueckgabewert von -1 das move() abgebrochen. In letzterem Fall ist
+   die Funktion dafuer verantwortlich, eine entspr. Meldung an den
+   Spieler auszugeben!
+
+
+HINWEIS
+=======
+
+   Falls man einem Spieler einen Move-Hook setzt, ist es ratsam, im
+   Move-Hook zu pruefen, ob das Spielerobjekt nach Abarbeitung der Hook-
+   Funktion noch lebt. Ansonsten wird ein doppeltes move() ausgefuehrt:
+   in den Todesraum und direkt wieder zurueck zur Leiche.
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+SIEHE AUCH
+==========
+
+   Bewegung:  move(L), NotifyMove(), PreventMove()
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_DEFEND_HOOK, P_TMP_ATTACK_HOOK
+   neue Hooks: std/hooks
+
 08.12.2008, Zesstra
diff --git a/doc/props/skill_info_liste b/doc/props/skill_info_liste
index 011f616..a8ad089 100644
--- a/doc/props/skill_info_liste
+++ b/doc/props/skill_info_liste
@@ -1,315 +1,355 @@
+
+skill_info_liste
+****************
+
+
 SI_*
-DEFINIERT IN:
-    /sys/newskills.h
+====
 
-BESCHREIBUNG:
-    Die folgende Liste der SI-Typen ist grob nach Gueltigkeit fuer Skills
-    und Spells sortiert.
-    
-    Anwendungsorte der SI_-Werte sind:
-    - /std/living/combat und von dort gerufene Skills (Kampf)
-    - /std/gilden_ob und in Gilden lernbare Spells/Skills
-    - /std/spellbook und von Spellbooks ausgefuehrte Spells
-    - /std/living/life und von dort gerufene Skills (Alkohol)
-    - /std/shells/* und entsprechende Rassenskills
 
-    Im Skillsystem unter /std/living/skills wird vor auf Informationen
-    aus dem Teil #1 Ruecksicht genommen. Einige dieser Werte
-    werden auch permanent im Spieler gespeichert (wie zB die
-    SI_SKILLABILITY).
+DEFINIERT IN
+============
+
+   /sys/newskills.h
+
+
+BESCHREIBUNG
+============
+
+   Die folgende Liste der SI-Typen ist grob nach Gueltigkeit fuer Skills
+   und Spells sortiert.
+
+
+
+   Anwendungsorte der SI_-Werte sind:
+   - /std/living/combat und von dort gerufene Skills (Kampf)
+   - /std/gilden_ob und in Gilden lernbare Spells/Skills
+   - /std/spellbook und von Spellbooks ausgefuehrte Spells
+   - /std/living/life und von dort gerufene Skills (Alkohol)
+   - /std/shells/* und entsprechende Rassenskills
+
+   Im Skillsystem unter /std/living/skills wird vor auf Informationen
+   aus dem Teil #1 Ruecksicht genommen. Einige dieser Werte
+   werden auch permanent im Spieler gespeichert (wie zB die
+   SI_SKILLABILITY).
 
 AKTUELLE LISTE: (5. Oktober 2011)
- #1 Skills und Spells:
-    SI_SKILLFUNC: string
-     Beinhaltet den Namen der Methode, die die eigentliche Funktionalitaet
-     des Skills/Spells implementiert.
-     Falls nicht angegeben, wird bei Spells durch UseSpell() das Verb, das
-     der Spieler eingegeben hat, als Spell-Methodenname angenommen.
-     Im Gildenobjekt kann hier abweichend von Spell-Namen stehen, wie die
-     Spellfunktion im Spellbook heisst.
+   #1 Skills und Spells:
+      SI_SKILLFUNC: string
+         Beinhaltet den Namen der Methode, die die eigentliche
+         Funktionalitaet des Skills/Spells implementiert. Falls nicht
+         angegeben, wird bei Spells durch UseSpell() das Verb, das der
+         Spieler eingegeben hat, als Spell-Methodenname angenommen. Im
+         Gildenobjekt kann hier abweichend von Spell-Namen stehen, wie
+         die Spellfunktion im Spellbook heisst.
 
-    SI_CLOSURE: closure
-     Optimiert den Zugriff fuer den internen Gebrauch, indem die gefundene
-     Spell/Skillfunktion darin direkt gespeichert wird und so lange gueltig
-     ist, bis das/die Objekt(e)/Closure(s) zerstoert sind.
-     Kann theoretisch auch fuer externe Skills durch (Autoload-)Objekte
-     benutzt werden.
+      SI_CLOSURE: closure
+         Optimiert den Zugriff fuer den internen Gebrauch, indem die
+         gefundene Spell/Skillfunktion darin direkt gespeichert wird
+         und so lange gueltig ist, bis das/die Objekt(e)/Closure(s)
+         zerstoert sind. Kann theoretisch auch fuer externe Skills
+         durch (Autoload-)Objekte benutzt werden.
 
-    SI_SKILLABILITY: int
-     Faehigkeit, den Spell/Skill zu benutzen. Normal ist von
-     -MAX_ABILITY bis MAX_ABILITY.
+      SI_SKILLABILITY: int
+         Faehigkeit, den Spell/Skill zu benutzen. Normal ist von
+         -MAX_ABILITY bis MAX_ABILITY.
 
-    SI_SKILLDAMAGE_TYPE: string*
-     Art des Schadens eines Angriffs: siehe Schadenstypen in /sys/combat.h
+      SI_SKILLDAMAGE_TYPE: string*
+         Art des Schadens eines Angriffs: siehe Schadenstypen in
+         /sys/combat.h
 
-    SI_SKILLDAMAGE_MSG: string
-     Meldung anstatt der Waffe oder Haende-Meldung.
-    SI_SKILLDAMAGE_MSG2: string
-     Meldung anstatt der Waffe oder Haende-Meldung fuer den Raum.
+      SI_SKILLDAMAGE_MSG: string
+         Meldung anstatt der Waffe oder Haende-Meldung.
 
-    SI_INHERIT: string
-     Enthaelt den Namen des Skills/Spells, von dem geerbt wird. Das
-     bedeutet einerseits, das LearnSkill() auch diesen uebergeordneten
-     Skill beeinflusst und andererseits, dass bei Skills auch dieser
-     uebergeordnete Skill im Rahmen einer Skill-Anwendung gerufen wird.
+      SI_SKILLDAMAGE_MSG2: string
+         Meldung anstatt der Waffe oder Haende-Meldung fuer den Raum.
 
-    SI_DIFFICULTY: int / [Spells: mixed]
-     Schwierigkeit eines Skills/Spells. Beeinflusst die jeweils oberen
-     Schranken fuer das Lernen eines Skills/Spells in Abhaengigkeit 
-     von Spielerlevel.
-     Wenn in einem Spell-Info-Mapping kein Wert steht wird bei Spells
-     automatisch SI_SPELLCOST genommen, der Wert im Spell-Info-Mapping
-     geht beim Lernen aber immer vor Parametern.
-    FACTOR(SI_DIFFICULTY): int / mixed
-    OFFSET(SI_DIFFICULTY): int / mixed
-     Nur fuer Spellbooks/Spells. Der mixed-Parameter kann Funktionen
-     enthalten. Siehe unten bei SI_SPELLCOST.
+      SI_INHERIT: string
+         Enthaelt den Namen des Skills/Spells, von dem geerbt wird.
+         Das bedeutet einerseits, das LearnSkill() auch diesen
+         uebergeordneten Skill beeinflusst und andererseits, dass bei
+         Skills auch dieser uebergeordnete Skill im Rahmen einer
+         Skill-Anwendung gerufen wird.
 
-    SI_LASTLIGHT: int
-     Zeitpunkt, bis wann der Standardskills SK_NIGHTVISION den Spieler
-     sehen laesst.
+      SI_DIFFICULTY: int / [Spells: mixed]
+         Schwierigkeit eines Skills/Spells. Beeinflusst die jeweils
+         oberen Schranken fuer das Lernen eines Skills/Spells in
+         Abhaengigkeit von Spielerlevel. Wenn in einem Spell-Info-
+         Mapping kein Wert steht wird bei Spells automatisch
+         SI_SPELLCOST genommen, der Wert im Spell-Info-Mapping geht
+         beim Lernen aber immer vor Parametern.
 
-    SI_TESTFLAG: int
-     Wenn gesetzt, dann soll der Skill nicht genutzt, sondern nur getestet
-     werden, ob er erfolgreich waere. Entspricht also in etwa dem Aufruf
-     von SpellSuccess() in Spellbooks, wird aber bei UseSkill() als
-     Skill-Parameter uebergeben.
-     Der Skill muss entsprechend implementiert sein!
+      FACTOR(SI_DIFFICULTY): int / mixed OFFSET(SI_DIFFICULTY): int /
+      mixed
 
-    SI_GUILD: string
-     Angabe der Gilde, aus der der Skill stammt. Sinnvoll, wenn der Skill
-     nicht aus der aktuellen P_GUILD stammt. Fuer generelle Skills/Spells
-     zB waere das "ANY".
-     Gilt nicht fuer Spells!
+         Nur fuer Spellbooks/Spells. Der mixed-Parameter kann
+         Funktionen enthalten. Siehe unten bei SI_SPELLCOST.
 
-    SI_ENEMY: object
-     Aktuelles Feindesobjekt, wird bei Skill-Anwendung aus dem Kampf heraus
-     von std/living/combat.c an den Skill uebergeben.
-     Beispiel: Standardwaffenskills, SK_MAGIC_DEFENSE, SK_MAGIC_ATTACK,
-               SK_TWOHANDED, SK_SPELL_DEFEND, SK_INFORM_DEFEND und
-               SK_DEFEND_OTHER.
+      SI_LASTLIGHT: int
+         Zeitpunkt, bis wann der Standardskills SK_NIGHTVISION den
+         Spieler sehen laesst.
 
-    SI_FRIEND: object
-     Zu verteidigendes Freundesobjekt, wird bei Skill-Anwendung aus dem
-     Kampf heraus von std/living/combat.c an den Skill uebergeben.
-     Beispiele: SK_INFORM_DEFEND und SK_DEFEND_OTHER.
+      SI_TESTFLAG: int
+         Wenn gesetzt, dann soll der Skill nicht genutzt, sondern nur
+         getestet werden, ob er erfolgreich waere. Entspricht also in
+         etwa dem Aufruf von SpellSuccess() in Spellbooks, wird aber
+         bei UseSkill() als Skill-Parameter uebergeben. Der Skill muss
+         entsprechend implementiert sein!
 
-    SI_MAGIC_TYPE: string*
-     Enthaelt ein Array der Magietypen, die zum Einsatz kommen. Die Angabe
-     geschieht zB im Spellbook und beeinflusst SpellDefend().
+      SI_GUILD: string
+         Angabe der Gilde, aus der der Skill stammt. Sinnvoll, wenn
+         der Skill nicht aus der aktuellen P_GUILD stammt. Fuer
+         generelle Skills/Spells zB waere das "ANY". Gilt nicht fuer
+         Spells!
 
-    SI_LAST_USE: int (eventuell obsolet)
-     Letzte Nutzung des Skills.
-    
-    SI_LEARN_PROB: int (eventuell obsolet)
-     Lernwahrscheinlichkeit.
+      SI_ENEMY: object
+         Aktuelles Feindesobjekt, wird bei Skill-Anwendung aus dem
+         Kampf heraus von std/living/combat.c an den Skill uebergeben.
+         Beispiel: Standardwaffenskills, SK_MAGIC_DEFENSE,
+         SK_MAGIC_ATTACK,
 
-    SI_SKILLDURATION: int
-     Dauer des Skills/Spells. Momentan nicht allzu verbreitet in Nutzung.
+            SK_TWOHANDED, SK_SPELL_DEFEND, SK_INFORM_DEFEND und
+            SK_DEFEND_OTHER.
 
- #2 nur fuer Spells:
-    SI_SPELLBOOK: string
-     Kann direkt das enthaltende Spellbook fuer einen Spell enthalten.
+      SI_FRIEND: object
+         Zu verteidigendes Freundesobjekt, wird bei Skill-Anwendung
+         aus dem Kampf heraus von std/living/combat.c an den Skill
+         uebergeben. Beispiele: SK_INFORM_DEFEND und SK_DEFEND_OTHER.
 
-    SM_RACE: mapping
-      Mapping, das als Key die Rasse und als Value ein Mapping X
-      enthaelt. Dieses Mapping X wird direkt zu sinfo hinzugefuegt und
-      ueberschreibt damit bei Bedarf Defaultwerte durch rassenspezifische
-      Werte.
+      SI_MAGIC_TYPE: string*
+         Enthaelt ein Array der Magietypen, die zum Einsatz kommen.
+         Die Angabe geschieht zB im Spellbook und beeinflusst
+         SpellDefend().
 
-    SI_SPELLCOST: int / mixed
-    FACTOR(SI_SPELLCOST): int / mixed
-    OFFSET(SI_SPELLCOST): int / mixed
-     Beinhaltet die Werte, die fuer die Berechnung der Spellkosten
-     zustaendig sind.
-     Dabei gilt: Realkosten = OFFSET(COST) + (COST * FACTOR(COST))/100
-     Die einzelnen Eintraege koennen anstatt eines fixen Wertes auch den
-     Verweis auch eine Funktion in Form von Closure/Methodenname/Array mit
-     Objekt/Objektname und Methodenname enthalten. Siehe dazu auch
-     execute_anything().
+      SI_LAST_USE: int (eventuell obsolet)
+         Letzte Nutzung des Skills.
 
-    SI_TIME_MSG: string
-     Meldung, die dem Spieler mitteilt, dass er noch nicht wieder einen
-     Spell casten kann. Falls dieser Eintrag nicht gesetzt ist, wird
-     ein Standardtext ausgegeben.
+      SI_LEARN_PROB: int (eventuell obsolet)
+         Lernwahrscheinlichkeit.
 
-    SI_SP_LOW_MSG: string
-     Meldung, die dem Spieler mitteilt, dass er zu wenige
-     Konzentrationspunkte besitzt, um den Spell zu casten. Falls dieser
-     Eintrag nicht gesetzt ist, wird ein Standardtext ausgegeben.
+      SI_SKILLDURATION: int
+         Dauer des Skills/Spells. Momentan nicht allzu verbreitet in
+         Nutzung.
 
-    SI_PREPARE_MSG: string
-     Meldung, die dem Spieler ausgegeben werden soll, wenn er einen Spell
-     vorbereitet. Ansonsten wird ein Standardtext ausgegeben.
+   #2 nur fuer Spells:
+      SI_SPELLBOOK: string
+         Kann direkt das enthaltende Spellbook fuer einen Spell
+         enthalten.
 
-    SI_PREPARE_BUSY_MSG: string
-     Meldung, die dem Spieler ausgegeben werden soll, wenn er schon diesen
-     Spell vorbereitet. Ansonsten wird ein Standardtext ausgegeben.
+      SM_RACE: mapping
+         Mapping, das als Key die Rasse und als Value ein Mapping X
+         enthaelt. Dieses Mapping X wird direkt zu sinfo hinzugefuegt
+         und ueberschreibt damit bei Bedarf Defaultwerte durch
+         rassenspezifische Werte.
 
-    SI_PREPARE_ABORT_MSG: string
-     Meldung, die dem Spieler ausgegeben werden soll, wenn er die
-     Vorbereitung dieses Spells durch einen anderen Spell unterbricht.
-     Ansonsten wird ein Standardtext ausgegeben.
+      SI_SPELLCOST: int / mixed FACTOR(SI_SPELLCOST): int / mixed
+      OFFSET(SI_SPELLCOST): int / mixed
 
-    SI_NOMAGIC: int
-     Wert zwischen 0 und 100 (oder mehr), der gegen die P_NOMAGIC-Wirkung
-     eines Raumes wirkt.
-     Je hoeher der Wert ist, desto unwahrscheinlicher ist es, dass ein
-     Raum den Spell durch Antimagie stoert. Ein Raum sollte nur Werte
-     zwischen 0 und 100 gesetzt haben. Ist der Wert des Raums groesser
-     als der hier angegeben, dann blockiert er Magie mit einer gewissen
-     eben seiner angegebenen Wahrscheinlichkeit.
+         Beinhaltet die Werte, die fuer die Berechnung der Spellkosten
+         zustaendig sind. Dabei gilt: Realkosten = OFFSET(COST) +
+         (COST * FACTOR(COST))/100 Die einzelnen Eintraege koennen
+         anstatt eines fixen Wertes auch den Verweis auch eine
+         Funktion in Form von Closure/Methodenname/Array mit
+         Objekt/Objektname und Methodenname enthalten. Siehe dazu auch
+         execute_anything().
 
-    SI_NOMAGIC_MSG: string
-     Meldung, die bei Fehlschlag durch P_NOMAGIC des Raumes ausgegeben
-     wird. Ansonsten wird ein Standardtext ausgegeben.
-      
-    SI_SPELLFATIGUE: int / mixed
-    FACTOR(SI_SPELLFATIGUE): int / mixed
-    OFFSET(SI_SPELLFATIGUE): int / mixed
-     Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt werden.
-     Die Berechnung und die moeglichen Angaben (Closure etc.) sind
-     identisch zu SI_SPELLCOST.
-     Das Spellbook gibt bei Nicht-Wieder-Bereitschaft SI_TIME_MSG aus.
+      SI_TIME_MSG: string
+         Meldung, die dem Spieler mitteilt, dass er noch nicht wieder
+         einen Spell casten kann. Falls dieser Eintrag nicht gesetzt
+         ist, wird ein Standardtext ausgegeben.
 
-    SI_X_SPELLFATIGUE: mapping mit ([string key: int val])
-     Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt werden.
-     Spellbook-Casten: Mapping wird durch Aufruf von CheckSpellFatigue(<key>)
-     am Caster gefiltert. Nur wenn das resultierende Mapping leer ist (kein
-     <key> hat einen gueltigen Fatigue-Eintrag), ist Spell castbar, sonst
-     Ausgabe von SI_TIME_MSG.
-     Nach Spellbook-Casten: Setzen der Fatigue fuer alle <val> > 0 mit <key>.
+      SI_SP_LOW_MSG: string
+         Meldung, die dem Spieler mitteilt, dass er zu wenige
+         Konzentrationspunkte besitzt, um den Spell zu casten. Falls
+         dieser Eintrag nicht gesetzt ist, wird ein Standardtext
+         ausgegeben.
 
-    SI_SKILLLEARN: int / mixed
-    FACTOR(SI_SKILLLEARN): int / mixed
-    OFFSET(SI_SKILLLEARN): int / mixed
-     Werte, die fuer die Berechnung der Lerngeschwindigkeit benutzt
-     werden, normalerweise pro A_INT/2 je 0.01% (also 1 von MAX_ABILITY).
-     Die Berechnung und die moeglichen Angaben (Closure etc.) sind
-     identisch zu SI_SPELLCOST.
+      SI_PREPARE_MSG: string
+         Meldung, die dem Spieler ausgegeben werden soll, wenn er
+         einen Spell vorbereitet. Ansonsten wird ein Standardtext
+         ausgegeben.
 
-    SI_LEARN_ATTRIBUTE: mapping
-     Mapping, welches die Attribute, nach denen gelernt werden soll
-     als Keys enthaelt. Der Value legt die Gewichtung fest, denn bei
-     mehreren Attributen wird ein Mittelwert gebildet.
-     Der Normalfall entspraeche ([A_INT: 1]) fuer SI_LEARN_ATTRIBUTE.
+      SI_PREPARE_BUSY_MSG: string
+         Meldung, die dem Spieler ausgegeben werden soll, wenn er
+         schon diesen Spell vorbereitet. Ansonsten wird ein
+         Standardtext ausgegeben.
 
-    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.
-    
-     SI_SKILLARG: string
-     Beinhaltet den Text, den der Spieler nach dem Spellkommando eingegeben
-     hat. Z.B. stuende bei "krallenschlag ork 2" der Text "ork 2" im
-     Parameter.
+      SI_PREPARE_ABORT_MSG: string
+         Meldung, die dem Spieler ausgegeben werden soll, wenn er die
+         Vorbereitung dieses Spells durch einen anderen Spell
+         unterbricht. Ansonsten wird ein Standardtext ausgegeben.
 
-    SI_SKILLRESTR_USE: mixed
-     Einschraenkungen fuer das Nutzen des Spells.
-     Wird normalerweise direkt im Spellbook fuer den Spell eingetragen.
-     Die einzelnen Moeglichkeiten werden in der manpage zu
-     "check_restrictions" erlaeutert.
-     
-    SI_SKILLRESTR_LEARN: mixed
-     Einschraenkungen fuer das Lernen des Spells.
-     Wird normalerweise direkt im Gildenobjekt fuer den Spell
-     eingetragen.
-     Die einzelnen Moeglichkeiten werden in der manpage zu
-     "check_restrictions" erlaeutert.
+      SI_NOMAGIC: int
+         Wert zwischen 0 und 100 (oder mehr), der gegen die P_NOMAGIC-
+         Wirkung eines Raumes wirkt. Je hoeher der Wert ist, desto
+         unwahrscheinlicher ist es, dass ein Raum den Spell durch
+         Antimagie stoert. Ein Raum sollte nur Werte zwischen 0 und
+         100 gesetzt haben. Ist der Wert des Raums groesser als der
+         hier angegeben, dann blockiert er Magie mit einer gewissen
+         eben seiner angegebenen Wahrscheinlichkeit.
 
-    SI_SKILLINFO: string
-    SI_SKILLINFO_LONG: string
-     Beschreibung des Spells. Wird im Gildenobjekt eingetragen und
-     SI_SKILLINFO wird von SkillListe angezeigt.
+      SI_NOMAGIC_MSG: string
+         Meldung, die bei Fehlschlag durch P_NOMAGIC des Raumes
+         ausgegeben wird. Ansonsten wird ein Standardtext ausgegeben.
 
-    SI_SKILLDAMAGE: int / mixed
-    FACTOR(SI_SKILLDAMAGE): int / mixed
-    OFFSET(SI_SKILLDAMAGE): int / mixed
-     Werte, die fuer die Schadenshoehenberechnung des Spells benutzt
-     werden (random ueber den Gesamtwert normalerweise).
-     Die Berechnung und die moeglichen Angaben (Closure etc.) sind
-     identisch zu SI_SPELLCOST.
+      SI_SPELLFATIGUE: int / mixed FACTOR(SI_SPELLFATIGUE): int /
+      mixed OFFSET(SI_SPELLFATIGUE): int / mixed
 
-    SI_SKILLDAMAGE_BY_ROW
-     Ein Mapping mit Boni fuer den Angriff aus bestimmten Kampfreihen.
-     Funktioniert nur bei Verwendung von TryDefaultAttackSpell-Spells
-     aus dem Spellbook.
-     Der Key steht fuer eine bestimmte Reihe, sein Wert fuer den
-     randomisierten Bonus fuer Lebewesen, die aus dieser Reihe casten.
-    OFFSET(SI_SKILLDAMAGE_BY_ROW)
-     Ein Mapping mit fixem Wert fuer Row-Boni im Kampf.
+         Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt
+         werden. Die Berechnung und die moeglichen Angaben (Closure
+         etc.) sind identisch zu SI_SPELLCOST. Das Spellbook gibt bei
+         Nicht-Wieder-Bereitschaft SI_TIME_MSG aus.
 
-     Beispiel: AddSpell("feuerball", 20,
-                        ([SI_SKILLDAMAGE:50,
-                          OFFSET(SI_SKILLDAMAGE):100,
-                          SI_SKILLDAMAGE_BY_ROW:([2:40,3:20}),
-                          OFFSET(SI_SKILLDAMAGE_BY_ROW):([2:20]), ...
-     gibt
-      Reihe 1: random(50)+100;
-      Reihe 2: random(50)+100+random(40)+20
-      Reihe 3: random(50)+100+random(20)
-     ACHTUNG: Hier gilt nicht die selbe Struktur wie bei SI_SPELLCOST!
+      SI_X_SPELLFATIGUE: mapping mit ([string key: int val])
+         Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt
+         werden. Spellbook-Casten: Mapping wird durch Aufruf von
+         CheckSpellFatigue(<key>) am Caster gefiltert. Nur wenn das
+         resultierende Mapping leer ist (kein <key> hat einen
+         gueltigen Fatigue-Eintrag), ist Spell castbar, sonst Ausgabe
+         von SI_TIME_MSG. Nach Spellbook-Casten: Setzen der Fatigue
+         fuer alle <val> > 0 mit <key>.
 
-    SI_SPELL: mapping
-     Dieser Eintrag enthaelt verschiedene Unterwerte, die den Spell
-     gerade fuer Angriffs-Spells genauer beschreiben. Siehe Defend()
-     fuer eine Beschreibung der verschiedenen Eintraege (die so auch
-     in das Spellbook uebernommen werden koennen).
+      SI_SKILLLEARN: int / mixed FACTOR(SI_SKILLLEARN): int / mixed
+      OFFSET(SI_SKILLLEARN): int / mixed
 
-    SI_COLLATERAL_DAMAGE: int
-     Hiermit kann man einen Prozentwert von SI_SKILLDAMAGE (inklusive
-     Offsets und Factor) fuer Kollateralschaden an Freunden im definierten
-     Bereich eines Flaechenspells (TryGlobalAttackSpell()) angeben.
-     10 bedeutet bei OFFSET(SI_SKILLDAMAGE)=100 zB 10% von 100 = 10 = 1 LP
-     an mit reduce_hit_points() verursachtem Schaden.
-    
-    SI_NUMBER_ENEMIES, SI_NUMBER_FRIENDS: int
-     Wird von TryGlobalAttackSpell() im Spell gesetzt und enthaelt die
-     Anzahl der im angegebenen Bereich befindlichen Feinde und Freunde.
-     Ist dementsprechend von informativem Nutzen fuer den Angegriffenen
-     und das Spellbook NACH Aufruf von TryGlobalAttackSpell().
-    
-    SI_DISTANCE, SI_WIDTH, SI_DEPTH: int
-     Limitiert die Entfernung, Tiefen und Breite der Wirkung eines
-     TryGlobalAttackSpell()
+         Werte, die fuer die Berechnung der Lerngeschwindigkeit
+         benutzt werden, normalerweise pro A_INT/2 je 0.01% (also 1
+         von MAX_ABILITY). Die Berechnung und die moeglichen Angaben
+         (Closure etc.) sind identisch zu SI_SPELLCOST.
 
-    SI_SKILLHEAL: int
-     Konvention fuer Spells im Spellbook, dort den Heilwert zu hinterlegen,
-     hat keine Auswirkungen unter /std/.
+      SI_LEARN_ATTRIBUTE: mapping
+         Mapping, welches die Attribute, nach denen gelernt werden
+         soll als Keys enthaelt. Der Value legt die Gewichtung fest,
+         denn bei mehreren Attributen wird ein Mittelwert gebildet.
+         Der Normalfall entspraeche ([A_INT: 1]) fuer
+         SI_LEARN_ATTRIBUTE.
 
-    SI_USR: mixed
-     Fuer selbst definierte Infos, spellbookabhaengig.
+      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.
 
-    SI_PREPARE_TIME: int
-     Dauer der Zeit fuer zu praeparierende Spells.
+         SI_SKILLARG: string Beinhaltet den Text, den der Spieler nach
+         dem Spellkommando eingegeben hat. Z.B. stuende bei
+         "krallenschlag ork 2" der Text "ork 2" im Parameter.
 
-    SI_ATTACK_BUSY_MSG: string
-     Meldung, die dem Spieler mitteilt, dass er schon zu beschaeftigt
-     mit einem Angriff ist, um einen Spell zu casten. Falls dieser
-     Eintrag nicht gesetzt ist, wird  ein Standardtext ausgegeben.
+      SI_SKILLRESTR_USE: mixed
+         Einschraenkungen fuer das Nutzen des Spells. Wird
+         normalerweise direkt im Spellbook fuer den Spell eingetragen.
+         Die einzelnen Moeglichkeiten werden in der manpage zu
+         "check_restrictions" erlaeutert.
 
-    SI_NO_ATTACK_BUSY: int
-     Enthaelt als Flag NO_ATTACK_BUSY_QUERY wenn der Spell NICHT wie
-     eine Spezialwaffe die Aktionen einschraenkt. Siehe P_ATTACK_BUSY.
+      SI_SKILLRESTR_LEARN: mixed
+         Einschraenkungen fuer das Lernen des Spells. Wird
+         normalerweise direkt im Gildenobjekt fuer den Spell
+         eingetragen. Die einzelnen Moeglichkeiten werden in der
+         manpage zu "check_restrictions" erlaeutert.
 
-    SI_ATTACK_BUSY_AMOUNT: int
-     Menge des P_ATTACK_BUSY fuer diesen Spell. Falls dieser Wert nicht
-     gesetzt ist, aber auch SI_NO_ATTACK_BUSY nicht mit
-     NO_ATTACK_BUSY_QUERY ausgezeichnet ist wird 1 angenommen.
+      SI_SKILLINFO: string SI_SKILLINFO_LONG: string
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung
-    * Properties:   P_NEWSKILLS
-    Spellbook:      UseSpell, Learn, SpellSuccess
-    Gilden:         gilden-doku
-    Kampf:          Defend
+         Beschreibung des Spells. Wird im Gildenobjekt eingetragen und
+         SI_SKILLINFO wird von SkillListe angezeigt.
+
+      SI_SKILLDAMAGE: int / mixed FACTOR(SI_SKILLDAMAGE): int / mixed
+      OFFSET(SI_SKILLDAMAGE): int / mixed
+
+         Werte, die fuer die Schadenshoehenberechnung des Spells
+         benutzt werden (random ueber den Gesamtwert normalerweise).
+         Die Berechnung und die moeglichen Angaben (Closure etc.) sind
+         identisch zu SI_SPELLCOST.
+
+      SI_SKILLDAMAGE_BY_ROW
+         Ein Mapping mit Boni fuer den Angriff aus bestimmten
+         Kampfreihen. Funktioniert nur bei Verwendung von
+         TryDefaultAttackSpell-Spells aus dem Spellbook. Der Key steht
+         fuer eine bestimmte Reihe, sein Wert fuer den randomisierten
+         Bonus fuer Lebewesen, die aus dieser Reihe casten.
+
+      OFFSET(SI_SKILLDAMAGE_BY_ROW)
+         Ein Mapping mit fixem Wert fuer Row-Boni im Kampf.
+
+         Beispiel: AddSpell("feuerball", 20,
+            ([SI_SKILLDAMAGE:50,
+               OFFSET(SI_SKILLDAMAGE):100,
+               SI_SKILLDAMAGE_BY_ROW:([2:40,3:20}),
+               OFFSET(SI_SKILLDAMAGE_BY_ROW):([2:20]), ...
+
+         gibt
+            Reihe 1: random(50)+100; Reihe 2:
+            random(50)+100+random(40)+20 Reihe 3:
+            random(50)+100+random(20)
+
+         ACHTUNG: Hier gilt nicht die selbe Struktur wie bei
+         SI_SPELLCOST!
+
+      SI_SPELL: mapping
+         Dieser Eintrag enthaelt verschiedene Unterwerte, die den
+         Spell gerade fuer Angriffs-Spells genauer beschreiben. Siehe
+         Defend() fuer eine Beschreibung der verschiedenen Eintraege
+         (die so auch in das Spellbook uebernommen werden koennen).
+
+      SI_COLLATERAL_DAMAGE: int
+         Hiermit kann man einen Prozentwert von SI_SKILLDAMAGE
+         (inklusive Offsets und Factor) fuer Kollateralschaden an
+         Freunden im definierten Bereich eines Flaechenspells
+         (TryGlobalAttackSpell()) angeben. 10 bedeutet bei
+         OFFSET(SI_SKILLDAMAGE)=100 zB 10% von 100 = 10 = 1 LP an mit
+         reduce_hit_points() verursachtem Schaden.
+
+      SI_NUMBER_ENEMIES, SI_NUMBER_FRIENDS: int
+         Wird von TryGlobalAttackSpell() im Spell gesetzt und enthaelt
+         die Anzahl der im angegebenen Bereich befindlichen Feinde und
+         Freunde. Ist dementsprechend von informativem Nutzen fuer den
+         Angegriffenen und das Spellbook NACH Aufruf von
+         TryGlobalAttackSpell().
+
+      SI_DISTANCE, SI_WIDTH, SI_DEPTH: int
+         Limitiert die Entfernung, Tiefen und Breite der Wirkung eines
+         TryGlobalAttackSpell()
+
+      SI_SKILLHEAL: int
+         Konvention fuer Spells im Spellbook, dort den Heilwert zu
+         hinterlegen, hat keine Auswirkungen unter /std/.
+
+      SI_USR: mixed
+         Fuer selbst definierte Infos, spellbookabhaengig.
+
+      SI_PREPARE_TIME: int
+         Dauer der Zeit fuer zu praeparierende Spells.
+
+      SI_ATTACK_BUSY_MSG: string
+         Meldung, die dem Spieler mitteilt, dass er schon zu
+         beschaeftigt mit einem Angriff ist, um einen Spell zu casten.
+         Falls dieser Eintrag nicht gesetzt ist, wird  ein
+         Standardtext ausgegeben.
+
+      SI_NO_ATTACK_BUSY: int
+         Enthaelt als Flag NO_ATTACK_BUSY_QUERY wenn der Spell NICHT
+         wie eine Spezialwaffe die Aktionen einschraenkt. Siehe
+         P_ATTACK_BUSY.
+
+      SI_ATTACK_BUSY_AMOUNT: int
+         Menge des P_ATTACK_BUSY fuer diesen Spell. Falls dieser Wert
+         nicht gesetzt ist, aber auch SI_NO_ATTACK_BUSY nicht mit
+         NO_ATTACK_BUSY_QUERY ausgezeichnet ist wird 1 angenommen.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+   Spellbook:      UseSpell, Learn, SpellSuccess
+   Gilden:         gilden-doku
+   Kampf:          Defend
 
 7. Nov 2012 Gloinson
diff --git a/doc/sefun.index b/doc/sefun.index
new file mode 100644
index 0000000..6d9564f
--- /dev/null
+++ b/doc/sefun.index
@@ -0,0 +1,137 @@
+
+sefuns (simulated efuns)
+************************
+
+sefuns sind Funktionen, die aehnlich wie echte efuns im Driver allen
+Objekten (ausser dem Masterobjekt) zur Verfuegung stehen ohne dass die
+explizit geerbt werden muessen. Sie sind allerdings in LPC
+implementiert und damit langsamer als efuns.
+
+Es ist moeglich, sefuns mit demselben Namen wie efuns zu erstellen,
+diese wird dann anstelle der efun gerufen. Will man ausnahmsweise aber
+die efun mit dem Namen rufen, so kann dies mit der Syntax
+"efun::function()" erreichen.
+
+Verzeichnis der dokumentierten sefuns im Morgengrauen:
+
+* CountUp()
+
+* _notify_fail()
+
+* break_string()
+
+* broken_count_bits()
+
+* cindent()
+
+* debug_info()
+
+* deep_present()
+
+* dtime()
+
+* dump_netdead()
+
+* enable_commands()
+
+* file_time()
+
+* find_living()
+
+* find_livings()
+
+* find_netdead()
+
+* find_player()
+
+* getuuid()
+
+* iso2ascii()
+
+* log_file()
+
+* lowerchar()
+
+* lowerstring()
+
+* m_copy_delete()
+
+* match_living()
+
+* md5()
+
+* mkdirp()
+
+* notify_fail()
+
+* object_info()
+
+* old_explode()
+
+* process_call()
+
+* process_string()
+
+* query_editing()
+
+* query_idle()
+
+* query_input_pending()
+
+* query_ip_name()
+
+* query_ip_number()
+
+* query_limits()
+
+* query_mud_port()
+
+* query_next_reset()
+
+* query_once_interactive()
+
+* query_shadowing()
+
+* query_snoop()
+
+* query_wiz_grp()
+
+* query_wiz_level()
+
+* read_data()
+
+* replace_personal()
+
+* restore_object()
+
+* save_object()
+
+* send_room()
+
+* set_heart_beat()
+
+* set_light()
+
+* set_living_name()
+
+* set_object_heart_beat()
+
+* sha1()
+
+* shadow()
+
+* shout()
+
+* time2string()
+
+* update_actions()
+
+* upperstring()
+
+* uptime()
+
+* wizlist()
+
+* wizlist_info()
+
+* write_data()
diff --git a/doc/sefun/CountUp b/doc/sefun/CountUp
index 5515780..9e55d69 100644
--- a/doc/sefun/CountUp
+++ b/doc/sefun/CountUp
@@ -1,25 +1,40 @@
-FUNKTION:
-	public varargs string CountUp( string *s, string sep, string lastsep );
 
-ARGUMENTE:
-	*s
-	  Array von Strings mit Woertern.
-  sep
-    String, der zwischen den Woerten in der Aufzaehlung eingefuegt wird.
-    Standard: ", "
-  lastsep
-    String, der zwischen dem vorletzten und letzten Element eingefuegt wird.
-    Standard: " und "
+CountUp()
+*********
 
-BESCHREIBUNG:
-	Die Woerter Wort_1 bis Wort_n aus dem Stringaray werden als
-	Aufzaehlung in der Form
-	  Wort_1<sep>Wort_2, ... Wort_n-1<lastsep>Wort_n
-	zusammengesetzt. Mit Standardwerten also:
-	  Wort_1, Wort_2, ... Wort_n-1 und Wort_n
 
-RUeCKGABEWERT:
-	String als Aufzaehlung der einzelnen Woerter.
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   public varargs string CountUp( string *s, string sep, string lastsep );
+
+
+ARGUMENTE
+=========
+
+         *s
+           Array von Strings mit Woertern.
+   sep
+     String, der zwischen den Woerten in der Aufzaehlung eingefuegt wird.
+     Standard: ", "
+   lastsep
+     String, der zwischen dem vorletzten und letzten Element eingefuegt wird.
+     Standard: " und "
+
+
+BESCHREIBUNG
+============
+
+   Die Woerter Wort_1 bis Wort_n aus dem Stringaray werden als
+   Aufzaehlung in der Form
+     Wort_1<sep>Wort_2, ... Wort_n-1<lastsep>Wort_n
+   zusammengesetzt. Mit Standardwerten also:
+     Wort_1, Wort_2, ... Wort_n-1 und Wort_n
+
+
+RUeCKGABEWERT
+=============
+
+   String als Aufzaehlung der einzelnen Woerter.
+
 15.03.2008, Zesstra
diff --git a/doc/sefun/_notify_fail b/doc/sefun/_notify_fail
index 84aa4de..a9801ef 100644
--- a/doc/sefun/_notify_fail
+++ b/doc/sefun/_notify_fail
@@ -1,18 +1,35 @@
+
+_notify_fail()
+**************
+
 simul_efun::_notify_fail(E)
-FUNKTION:
-     void _notify_fail(string str)
 
-ARGUMENTE:
-     str
-	umgebrochener Fehlermeldungsstring
 
-BESCHREIBUNG:
-     Identisches Verhalten zu notify_fail(E), bis darauf, dass bei bereits
-     gesetzter Fehlermeldung _keine_ neue Fehlermeldung gesetzt wird.
+FUNKTION
+========
 
-SIEHE AUCH:
-     notify_fail(E), P_ACTUAL_NOTIFY_FAIL
-     add_action(E), AddCmd(L), AddAction(L),
-     query_verb(E)
+   void _notify_fail(string str)
+
+
+ARGUMENTE
+=========
+
+   str
+      umgebrochener Fehlermeldungsstring
+
+
+BESCHREIBUNG
+============
+
+   Identisches Verhalten zu notify_fail(E), bis darauf, dass bei bereits
+   gesetzter Fehlermeldung _keine_ neue Fehlermeldung gesetzt wird.
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), P_ACTUAL_NOTIFY_FAIL
+   add_action(E), AddCmd(L), AddAction(L),
+   query_verb(E)
 
 24 Maerz 2004 Gloinson
diff --git a/doc/sefun/break_string b/doc/sefun/break_string
index 52d4d7b..8e3017d 100644
--- a/doc/sefun/break_string
+++ b/doc/sefun/break_string
@@ -1,90 +1,112 @@
-FUNKTION:
-    string break_string(string str)
-    string break_string(string str, int width)
-    string break_string(string str, int width, string indent)
-    string break_string(string str, int width, int space)
-    string break_string(string str, int width, string indent, int flags)
-    string break_string(string str, int width, int space, int flags)
 
-ARGUMENTE:
-    str    - umzubrechender String
-    width  - optional: maximale Zeilenlaenge (default 78)
-    indent - optional: String, der vor jeder umgebrochenen Zeile erscheint
-    space  - optional: Anzahl der Leerzeichen vor jeder umgebrochenen Zeile
-    flags  - optional: hiermit laesst sich das Verhalten von break_string()
-             aendern; moegliche Flags siehe Punkt 'Beschreibung'
+break_string()
+**************
 
-BESCHREIBUNG:
-    In der ersten Form wird der String 'str' durch Einfuegen von "\n" so um-
-    gebrochen, dass bei einer anschliessenden Ausgabe keine Zeile laenger
-    als 'width' Zeichen ist. Eventuell schon in 'str' vorhandene "\n" werden
-    dabei vorher entfernt.
 
-    Gibt man zusaetzlich noch einen String 'indent' an, so wird dieser vor
-    jede der umgebrochenen Zeilen gesetzt.
+FUNKTION
+========
 
-    Analog wird bei der Angabe der Zahl 'space' ein String mit 'space' Leer-
-    zeichen vor jede umgebrochene Zeile gesetzt.
+   string break_string(string str)
+   string break_string(string str, int width)
+   string break_string(string str, int width, string indent)
+   string break_string(string str, int width, int space)
+   string break_string(string str, int width, string indent, int flags)
+   string break_string(string str, int width, int space, int flags)
 
-    Zusaetzlich gibt es folgende optionale Flags, die man beliebig kombinieren
-    kann:
 
-        BS_LEAVE_MY_LFS  -  schon im Text vorhandene "\n" werden beibehalten
-        BS_SINGLE_SPACE  -  doppelte Leerzeichen sowie Leerzeichen nach Zeilen-
-                            umbruechen werden entfernt
-        BS_BLOCK         -  der Text wird im Blocksatz formatiert
-        BS_NO_PARINDENT  -  bei Blocksatz mit vorgegebenen Zeilenumbruechen
-                            (BS_BLOCK|BS_LEAVE_MY_LFS) werden Zeilen nach "\n"
-                            normalerweise mit einem Leerzeichen begonnen.
-                            Um das Einfuegen des fuehrenden Leerzeichens zu
-                            unterdruecken, muss BS_NO_PARINDENT angegeben werden
-        BS_INDENT_ONCE   -  die erste Zeile des Textes wird mit vorangestelltem
-                            'indent' ausgegeben; alle folgenden Zeilen bekommen
-                            einen Leerstring vorangestellt
-        BS_PREPEND_INDENT - der Ident wird dem Text vorangestellt sofern der 
-                            Indent + Text laenger als eine Zeile ist. Der Text
-			    wird um ein Leerzeichen eingerueckt, was mittels
-                            BS_NO_PARINDENT verhindert werden kann.
+ARGUMENTE
+=========
 
-RUECKGABEWERT:
-    Der umgebrochene Text.
+   str    - umzubrechender String
+   width  - optional: maximale Zeilenlaenge (default 78)
+   indent - optional: String, der vor jeder umgebrochenen Zeile erscheint
+   space  - optional: Anzahl der Leerzeichen vor jeder umgebrochenen Zeile
+   flags  - optional: hiermit laesst sich das Verhalten von break_string()
+            aendern; moegliche Flags siehe Punkt 'Beschreibung'
 
-    Laufzeit-Fehler, wenn der Indent laenger ist als die vorgegebene Breite.
 
-BEISPIELE:
-    write(break_string("Dies ist ein laengerer Text. Nur so als Beispiel.",27));
+BESCHREIBUNG
+============
 
-        => Dies ist ein laengerer
-           Text. Nur so als Beispiel.
+   In der ersten Form wird der String 'str' durch Einfuegen von "\n" so um-
+   gebrochen, dass bei einer anschliessenden Ausgabe keine Zeile laenger
+   als 'width' Zeichen ist. Eventuell schon in 'str' vorhandene "\n" werden
+   dabei vorher entfernt.
 
-    write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: "));
+   Gibt man zusaetzlich noch einen String 'indent' an, so wird dieser vor
+   jede der umgebrochenen Zeilen gesetzt.
 
-        => Wargon sagt: Mit indent sieht
-           Wargon sagt: das so aus
+   Analog wird bei der Angabe der Zahl 'space' ein String mit 'space' Leer-
+   zeichen vor jede umgebrochene Zeile gesetzt.
 
-    write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: ",
-                        BS_INDENT_ONCE));
+   Zusaetzlich gibt es folgende optionale Flags, die man beliebig kombinieren
+   kann:
 
-        => Wargon sagt: Mit indent sieht
-                        das so aus
+       BS_LEAVE_MY_LFS  -  schon im Text vorhandene "\n" werden beibehalten
+       BS_SINGLE_SPACE  -  doppelte Leerzeichen sowie Leerzeichen nach Zeilen-
+                           umbruechen werden entfernt
+       BS_BLOCK         -  der Text wird im Blocksatz formatiert
+       BS_NO_PARINDENT  -  bei Blocksatz mit vorgegebenen Zeilenumbruechen
+                           (BS_BLOCK|BS_LEAVE_MY_LFS) werden Zeilen nach "\n"
+                           normalerweise mit einem Leerzeichen begonnen.
+                           Um das Einfuegen des fuehrenden Leerzeichens zu
+                           unterdruecken, muss BS_NO_PARINDENT angegeben werden
+       BS_INDENT_ONCE   -  die erste Zeile des Textes wird mit vorangestelltem
+                           'indent' ausgegeben; alle folgenden Zeilen bekommen
+                           einen Leerstring vorangestellt
+       BS_PREPEND_INDENT - der Ident wird dem Text vorangestellt sofern der
+                           Indent + Text laenger als eine Zeile ist. Der Text
+                           wird um ein Leerzeichen eingerueckt, was mittels
+                           BS_NO_PARINDENT verhindert werden kann.
 
-    write(break_string("Mit Leerzeichen sieht das so aus", 30, 2));
 
-        =>   Mit Leerzeichen sieht das so
-             aus...
+RUECKGABEWERT
+=============
 
-    write(break_string("Ich will es\naber vorformatiert!",60,
-                        "Wargon sagt: ", BS_LEAVE_MY_LFS));
+   Der umgebrochene Text.
 
-        => Wargon sagt: Ich will es
-           Wargon sagt: aber vorformatiert!
+   Laufzeit-Fehler, wenn der Indent laenger ist als die vorgegebene Breite.
 
-    write(break_string("Ich will es\naber vorformatiert!",30,
-                        "Wargon sagt: ", BS_PREPEND_INDENT));
 
-        => Wargon sagt:
-            Ich will es aber 
-            vorformatiert!
+BEISPIELE
+=========
 
-SIEHE AUCH:
-    senderwiederholung
+   write(break_string("Dies ist ein laengerer Text. Nur so als Beispiel.",27));
+
+       => Dies ist ein laengerer
+          Text. Nur so als Beispiel.
+
+   write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: "));
+
+       => Wargon sagt: Mit indent sieht
+          Wargon sagt: das so aus
+
+   write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: ",
+                       BS_INDENT_ONCE));
+
+       => Wargon sagt: Mit indent sieht
+                       das so aus
+
+   write(break_string("Mit Leerzeichen sieht das so aus", 30, 2));
+
+       =>   Mit Leerzeichen sieht das so
+            aus...
+
+   write(break_string("Ich will es\naber vorformatiert!",60,
+                       "Wargon sagt: ", BS_LEAVE_MY_LFS));
+
+       => Wargon sagt: Ich will es
+          Wargon sagt: aber vorformatiert!
+
+   write(break_string("Ich will es\naber vorformatiert!",30,
+                       "Wargon sagt: ", BS_PREPEND_INDENT));
+
+       => Wargon sagt:
+           Ich will es aber
+           vorformatiert!
+
+
+SIEHE AUCH
+==========
+
+   senderwiederholung
diff --git a/doc/sefun/broken_count_bits b/doc/sefun/broken_count_bits
index 09e56b8..de01e96 100644
--- a/doc/sefun/broken_count_bits
+++ b/doc/sefun/broken_count_bits
@@ -1,29 +1,48 @@
+
+broken_count_bits()
+*******************
+
+
 SYNOPSIS
-        int count_bits (string str)
+========
+
+   int count_bits (string str)
+
 
 DESTRIPTION
-        Count the number of set bits in bitstring <str> and return the number
-        as result.
+===========
+
+   Count the number of set bits in bitstring <str> and return the number
+   as result.
+
 
 NOTE
-	Bitstrings store 6 Bits per Character. Consequently, the functions for
-	manipulating bitstrings (see below) do generally not work on most
-	strings. An exception is this (s)efun. It accepts strings which are
-	not correct bitstrings (like getuid(PL)), BUT: It does NOT work
-	correctly on them! The results are NOT the correct number of bits!
-	Additionally, count_bits() in LDMud rejects such strings with an error
-	instead of returning false results, as all the other functions for
-	bitstrings do as well.
+====
+
+   Bitstrings store 6 Bits per Character. Consequently, the functions for
+   manipulating bitstrings (see below) do generally not work on most
+   strings. An exception is this (s)efun. It accepts strings which are
+   not correct bitstrings (like getuid(PL)), BUT: It does NOT work
+   correctly on them! The results are NOT the correct number of bits!
+   Additionally, count_bits() in LDMud rejects such strings with an error
+   instead of returning false results, as all the other functions for
+   bitstrings do as well.
+
 
 EXAMPLES
-        string s;
+========
 
-        s = set_bit("", 3); s = set_bit(s, 15);
+   string s;
 
-        count_bits(s) --> returns 2
+   s = set_bit("", 3); s = set_bit(s, 15);
+
+   count_bits(s) --> returns 2
+
 
 SEE ALSO
-        clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
-        or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
+========
+
+   clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
+   or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
 
 19.12.2006, Zesstra
diff --git a/doc/sefun/cindent b/doc/sefun/cindent
index 72119b3..e0e16af 100644
--- a/doc/sefun/cindent
+++ b/doc/sefun/cindent
@@ -1,9 +1,22 @@
-SYNOPSIS:
-        int cindent(string file)
 
-DESCRIPTION:
-        Indent a file using an LPC-enhanced version of the GNU indent
-	program, which is modelled after the Berkeley indent(1).
+cindent()
+*********
 
-SEE ALSO:
-	ed(E)
+
+SYNOPSIS
+========
+
+   int cindent(string file)
+
+
+DESCRIPTION
+===========
+
+   Indent a file using an LPC-enhanced version of the GNU indent
+   program, which is modelled after the Berkeley indent(1).
+
+
+SEE ALSO
+========
+
+   ed(E)
diff --git a/doc/sefun/debug_info b/doc/sefun/debug_info
index 18747b0..02e02b8 100644
--- a/doc/sefun/debug_info
+++ b/doc/sefun/debug_info
@@ -1,490 +1,508 @@
-DEPRECATED
-SYNOPSIS
-        #include <debug_info.h>
 
-        mixed debug_info(int flag)
-        mixed debug_info(int flag, mixed arg)
-        mixed debug_info(int flag, mixed arg2, mixed arg3)
+debug_info()
+************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <debug_info.h>
+
+   mixed debug_info(int flag)
+   mixed debug_info(int flag, mixed arg)
+   mixed debug_info(int flag, mixed arg2, mixed arg3)
+
 
 BESCHREIBUNG
-        Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
-        des Treibers. <flag> kann dabei folgende in debug_info.h definierte
-        Werte enthalten:
+============
 
-        DINFO_OBJECT   (0): Angezeigt werden Informationen zum in <arg>
-            spezifizierten Objekt, zum Beispiel heart_beat,
-            enable_commands etc. Die Funktion liefert 0 zurueck.
+   Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
+   des Treibers. <flag> kann dabei folgende in debug_info.h definierte
+   Werte enthalten:
 
-        DINFO_MEMORY   (1): Angezeigt werden Informationen zu
-            Speicherbelegung und -ausnutzung des in <arg> spezifizierten
-            Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
-            Objektgroesse etc. Die Funktion liefert 0 zurueck.
+   DINFO_OBJECT   (0): Angezeigt werden Informationen zum in <arg>
+       spezifizierten Objekt, zum Beispiel heart_beat,
+       enable_commands etc. Die Funktion liefert 0 zurueck.
 
-        DINFO_OBJLIST  (2): debug_info() liefert Objekte aus der globalen
-            Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
-            Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
-            ist, das n-te Element. Ist <arg2> ein Objekt, werden die
-            nachfolgenden Objekte in der Objektliste zurueck geliefert.
-            Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
-            gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
-            Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
-            ein Array mit hoechstens m Elementen zurueck geliefert. Auf
-            diese Weise kann ein Array mit saemtlichen Objekten im Spiel
-            erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
-            entsprechende maximale Arraygroesse vorausgesetzt).
+   DINFO_MEMORY   (1): Angezeigt werden Informationen zu
+       Speicherbelegung und -ausnutzung des in <arg> spezifizierten
+       Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
+       Objektgroesse etc. Die Funktion liefert 0 zurueck.
 
-        DINFO_MALLOC   (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
-            Es muessen keine weiteren Argumente angegeben werden.
+   DINFO_OBJLIST  (2): debug_info() liefert Objekte aus der globalen
+       Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
+       Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
+       ist, das n-te Element. Ist <arg2> ein Objekt, werden die
+       nachfolgenden Objekte in der Objektliste zurueck geliefert.
+       Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
+       gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
+       Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
+       ein Array mit hoechstens m Elementen zurueck geliefert. Auf
+       diese Weise kann ein Array mit saemtlichen Objekten im Spiel
+       erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
+       entsprechende maximale Arraygroesse vorausgesetzt).
 
-        DINFO_STATUS   (4): Angezeigt wird die Statusinformation des Drivers.
-            Optional kann das Argument <arg> die Werte 0, "tables", "swap",
-            "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
-            Das Resultat ist ein druckbarer String, der die Statusinformation
-            enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.
+   DINFO_MALLOC   (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
+       Es muessen keine weiteren Argumente angegeben werden.
 
-        DINFO_DUMP     (5): Die durch <arg2> angeforderte Information wird
-            in ein File geschrieben, das man mit <arg3> angeben kann. Wird
-            <arg3> nicht angegeben, wird eine Standarddatei verwendet.
-            debug_info() ueberprueft mittels master->valid_write(), ob es
-            das File schreiben kann. Falls bereits eine entsprechende Datei
-            existiert, wird diese ueberschrieben. Die Funktion liefert 1
-            bei Erfolg, 0 sonst.
+   DINFO_STATUS   (4): Angezeigt wird die Statusinformation des Drivers.
+       Optional kann das Argument <arg> die Werte 0, "tables", "swap",
+       "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
+       Das Resultat ist ein druckbarer String, der die Statusinformation
+       enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.
 
-            <arg2> == "objects": liefert Informationen ueber alle Objekte im
-                Spiel und schreibt diese standardmaessig in die Datei
-                /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
-                Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
-                jeweils folgende Informationen aufgelistet sind:
-                  - Name des Objekts (object_name)
-                  - Groesse im Speicher, gemeinsamer genutzter Speicher nur
-                    einmal gezaehlt
-                  - Groesse im Speicher, wenn es keine gemeinsam genutzte
-                    Daten geben wuerde
-                  - Anzahl Referenzen
-                  - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
-                  - der Name der Umgebung oder '--', wenn das Objekt keine
-                    Umgebung hat
-                  - in Klammern die Anzahl der durch das Objekt verursachten
-                    Verarbeitungsschritten (execution ticks)
-                  - der Swap-Status:
-                      > nichts, wenn das Objekt nicht geswapt wurde
-                      > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
-                      > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
-                      > 'SWAPPED', wenn beide geswapt wurden
-                  - die Zeit, zu der das Objekt geladen wurde.
+   DINFO_DUMP     (5): Die durch <arg2> angeforderte Information wird
+       in ein File geschrieben, das man mit <arg3> angeben kann. Wird
+       <arg3> nicht angegeben, wird eine Standarddatei verwendet.
+       debug_info() ueberprueft mittels master->valid_write(), ob es
+       das File schreiben kann. Falls bereits eine entsprechende Datei
+       existiert, wird diese ueberschrieben. Die Funktion liefert 1
+       bei Erfolg, 0 sonst.
 
-            <arg2> == "destructed": liefert Informationen ueber alle
-                zerstoerten Objekte und schreibt diese standardmaessig in
-                die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
-                uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
-                in der jeweils folgende Informationen aufgelistet sind:
-                  - Name des Objekts (object_name)
-                  - Anzahl der Referenzen
-                  - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
-                    zerstoert wurde, nichts wenn es bereits fruehre zerstoert
-                    worden war.
+       <arg2> == "objects": liefert Informationen ueber alle Objekte im
+           Spiel und schreibt diese standardmaessig in die Datei
+           /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
+           Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
+           jeweils folgende Informationen aufgelistet sind:
+             - Name des Objekts (object_name)
+             - Groesse im Speicher, gemeinsamer genutzter Speicher nur
+               einmal gezaehlt
+             - Groesse im Speicher, wenn es keine gemeinsam genutzte
+               Daten geben wuerde
+             - Anzahl Referenzen
+             - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
+             - der Name der Umgebung oder '--', wenn das Objekt keine
+               Umgebung hat
+             - in Klammern die Anzahl der durch das Objekt verursachten
+               Verarbeitungsschritten (execution ticks)
+             - der Swap-Status:
+                 > nichts, wenn das Objekt nicht geswapt wurde
+                 > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
+                 > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
+                 > 'SWAPPED', wenn beide geswapt wurden
+             - die Zeit, zu der das Objekt geladen wurde.
 
-            <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
-                opcodes. Standardmaessig wird in die Datei /OPC_DUMP
-                geschrieben. valid_write() wird 'opcdump' uebergeben.
+       <arg2> == "destructed": liefert Informationen ueber alle
+           zerstoerten Objekte und schreibt diese standardmaessig in
+           die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
+           uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
+           in der jeweils folgende Informationen aufgelistet sind:
+             - Name des Objekts (object_name)
+             - Anzahl der Referenzen
+             - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
+               zerstoert wurde, nichts wenn es bereits fruehre zerstoert
+               worden war.
 
-            <arg2> == "memory": liefert eine Liste aller allokierten
-                Speicherbloecke.
-                Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
-                valid_write() wird 'memdump' uebergeben.  Existiert die
-                Datei bereits, werden die neuen Daten angehaengt.
-                Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
-                wird keine Datei geschrieben und immer 0 zurueckgegeben.
-                Diese Funktion ist am nuetzlichsten wenn der Allokator
-                mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
-                wurde.
+       <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
+           opcodes. Standardmaessig wird in die Datei /OPC_DUMP
+           geschrieben. valid_write() wird 'opcdump' uebergeben.
+
+       <arg2> == "memory": liefert eine Liste aller allokierten
+           Speicherbloecke.
+           Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
+           valid_write() wird 'memdump' uebergeben.  Existiert die
+           Datei bereits, werden die neuen Daten angehaengt.
+           Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
+           wird keine Datei geschrieben und immer 0 zurueckgegeben.
+           Diese Funktion ist am nuetzlichsten wenn der Allokator
+           mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
+           wurde.
 
 
-        DINFO_DATA    (6): Liefert Rohdaten ueber gewisse, durch <arg2>
-            spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
-            ein Array mit der Information oder 0, falls <arg2> keinen
-            gueltigen Wert enthalten hat.
-            Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
-            Resultat-Array, liefert die Funktion nur das entsprechende
-            Element zurueck.
-            Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
-            DID_MALLOC.
+   DINFO_DATA    (6): Liefert Rohdaten ueber gewisse, durch <arg2>
+       spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
+       ein Array mit der Information oder 0, falls <arg2> keinen
+       gueltigen Wert enthalten hat.
+       Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
+       Resultat-Array, liefert die Funktion nur das entsprechende
+       Element zurueck.
+       Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
+       DID_MALLOC.
 
-            <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
-                Information. Folgende Indizes sind definiert:
-                  - int DID_ST_BOOT_TIME
-                        die Zeit (time()), zu der das Mud gestartet wurde
-                  - int DID_ST_ACTIONS
-                  - int DID_ST_ACTIONS_SIZE
-                        die Anzahl und Groesse im Speicher der allozierten
-                        Actions.
-                  - int DID_ST_SHADOWS
-                  - int DID_ST_SHADOWS_SIZE
-                        Anzahl und Groesse im Speicher aller allozierten
-                        Shadows.
-                  - int DID_ST_OBJECTS
-                  - int DID_ST_OBJECTS_SIZE
-                        Anzahl und Groesse im Speicher aller Objekte.
-                  - int DID_ST_OBJECTS_SWAPPED
-                  - int DID_ST_OBJECTS_SWAP_SIZE
-                        Anzahl und Groesse im Speicher der geswapten
-                        Variablenbloecke der Objekte
-                  - int DID_ST_OBJECTS_LIST
-                        Anzahl Objekte in der Objektliste
-                  - int DID_ST_OBJECTS_NEWLY_DEST
-                        Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
-                        die in diesem Verarbeitungszyklus zerstoert wurden)
-                  - int DID_ST_OBJECTS_DESTRUCTED
-                        Anzahl der zerstoerten, aber noch immer referenzierten
-                        Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
-                        bereits gezaehlten.
-                  - int DID_ST_OBJECTS_PROCESSED
-                        Anzahl der gelisteten Objekte, die im letzten
-                        Verarbeitungszyklus verarbeitet wurden.
-                  - float DID_ST_OBJECTS_AVG_PROC
-                        Durchschnittlicher Anteil der pro Zyklus verarbeiteten
-                        Objekte, ausgedrueckt in Prozent (0 .. 1.0)
-                  - int DID_ST_OTABLE
-                        Anzahl eingetragener Objekte in der Objekttabelle
-                  - int DID_ST_OTABLE_SLOTS
-                        Anzahl von Hashplaetzen, die von jeder Objekttabelle
-                        bereitgestellt werden
-                  - int DID_ST_OTABLE_SIZE
-                        Durch die Objekttabelle belegter Speicher
-                  - int DID_ST_HBEAT_OBJS
-                        Anzahl Objekte mit einem heart_beat()
-                  - int DID_ST_HBEAT_CALLS
-                        Anzahl aktiver heart_beat() Zyklen bisher (d.h.
-                        Zyklen, in denen mindestens eine heart_beat() Funktion
-                        aufgerufen wurde)
-                  - int DID_ST_HBEAT_CALLS_TOTAL
-                        Gesamtzahl von heart_beat() Zyklen bisher.
-                  - int DID_ST_HBEAT_SLOTS
-                  - int DID_ST_HBEAT_SIZE
-                        Anzahl und Groesse aller allozierten Eintraege in der
-                        heart_beat() Tabelle.
-                  - int DID_ST_HBEAT_PROCESSED
-                        Anzahl heart_beat()s im letzten Zyklus
-                  - float DID_ST_HBEAT_AVG_PROC
-                        Durchschnittlicher Anteil der pro Zyklus aufgerufenen
-                        heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
-                  - int DID_ST_CALLOUTS
-                        Anzahl und Groesse aller laufenden call_out()s
-                  - int DID_ST_ARRAYS
-                  - int DID_ST_ARRAYS_SIZE
-                        Anzahl und Groesse aller Arrays
-                  - int DID_ST_MAPPINGS
-                  - int DID_ST_MAPPINGS_SIZE
-                        Anzahl und Groesse aller Mappings
-                  - int DID_ST_PROGS
-                  - int DID_ST_PROGS_SIZE
-                        Anzahl und Groesse aller Programme
-                  - int DID_ST_PROGS_SWAPPED
-                  - int DID_ST_PROGS_SWAP_SIZE
-                        Anzahl und Groesse der geswapten Programme
-                  - int DID_ST_USER_RESERVE
-                  - int DID_ST_MASTER_RESERVE
-                  - int DID_ST_SYSTEM_RESERVE
-                        Momentane Groesse der drei Speicherreserven
-                  - int DID_ST_ADD_MESSAGE
-                  - int DID_ST_PACKETS
-                  - int DID_ST_PACKET_SIZE
-                        Anzahl Aufrufe von add_message(), Anzahl und Groesse
-                        der versendeten Pakete.
-                        Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
-                        liefern alle drei Werte immer -1 zurueck.
-                  - int DID_ST_APPLY
-                  - int DID_ST_APPLY_HITS
-                        Anzahl Aufrufen von apply_low(), und wie viele davon
-                        Cache-Treffer waren. Wenn der Driver nicht mit
-                        APPLY_CACHE_STAT kompiliert wurde, liefern beide
-                        Werte immer -1.
-                  - int DID_ST_STRINGS
-                  - int DID_ST_STRING_SIZE
-                        Anzahl unterschiedlicher Strings in der Stringtabelle,
-                        sowie ihre Groesse
-                  - int DID_ST_STR_TABLE_SIZE
-                        Groesse der String Tabelle
-                  - int DID_ST_STR_REQ
-                  - int DID_ST_STR_REQ_SIZE
-                        Gesamte Anzahl von String Allokationen, und ihre
-                        Groesse
-                  - int DID_ST_STR_SEARCHES
-                  - int DID_ST_STR_SEARCH_LEN
-                        Anzahl Suchvorgaenge in der Stringtabelle und die
-                        Gesamtlaenge des Suchstrings
-                  - int DID_ST_STR_FOUND
-                        Anzahl erfolgreicher Suchvorgaenge
-                  - int DID_ST_STR_ENTRIES
-                        Anzahl Eintraege (Hash Ketten) in der String Tabelle
-                  - int DID_ST_STR_ADDED
-                        Anzahl zur String Tabelle bisher hinzugefuegter
-                        Strings
-                  - int DID_ST_STR_DELETED
-                        Anzahl aus der String Tabelle bisher geloeschter
-                        Strings
-                  - int DID_ST_STR_COLLISIONS
-                        Anzahl zu einer existierenden Hash Kette hinzugefuegte
-                        Strings
-                  - int DID_ST_RX_CACHED
-                        Anzahl gecacheter regulaerer Ausdruecke (regular
-                        expressions)
-                  - int DID_ST_RX_TABLE
-                  - int DID_ST_RX_TABLE_SIZE
-                        Anzahl Plaetze in der Regexp Cache Tabelle und
-                        Speicherbedarf der gecacheten Ausdruecke
-                  - int DID_ST_RX_REQUESTS
-                        Anzahl Anfragen fuer neue regexps
-                  - int DID_ST_RX_REQ_FOUND
-                        Anzahl gefundener regexps in der regexp Cache Tabelle
-                  - int DID_ST_RX_REQ_COLL
-                        Anzahl angefragter regexps, die mit einer bestehenden
-                        regexp kollidierten
-                  - int DID_ST_MB_FILE
-                        Die Groesse des 'File' Speicherpuffers
-                  - int DID_ST_MB_SWAP
-                        Die Groesse des 'Swap' Speicherpuffers
+       <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
+           Information. Folgende Indizes sind definiert:
+             - int DID_ST_BOOT_TIME
+                   die Zeit (time()), zu der das Mud gestartet wurde
+             - int DID_ST_ACTIONS
+             - int DID_ST_ACTIONS_SIZE
+                   die Anzahl und Groesse im Speicher der allozierten
+                   Actions.
+             - int DID_ST_SHADOWS
+             - int DID_ST_SHADOWS_SIZE
+                   Anzahl und Groesse im Speicher aller allozierten
+                   Shadows.
+             - int DID_ST_OBJECTS
+             - int DID_ST_OBJECTS_SIZE
+                   Anzahl und Groesse im Speicher aller Objekte.
+             - int DID_ST_OBJECTS_SWAPPED
+             - int DID_ST_OBJECTS_SWAP_SIZE
+                   Anzahl und Groesse im Speicher der geswapten
+                   Variablenbloecke der Objekte
+             - int DID_ST_OBJECTS_LIST
+                   Anzahl Objekte in der Objektliste
+             - int DID_ST_OBJECTS_NEWLY_DEST
+                   Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
+                   die in diesem Verarbeitungszyklus zerstoert wurden)
+             - int DID_ST_OBJECTS_DESTRUCTED
+                   Anzahl der zerstoerten, aber noch immer referenzierten
+                   Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
+                   bereits gezaehlten.
+             - int DID_ST_OBJECTS_PROCESSED
+                   Anzahl der gelisteten Objekte, die im letzten
+                   Verarbeitungszyklus verarbeitet wurden.
+             - float DID_ST_OBJECTS_AVG_PROC
+                   Durchschnittlicher Anteil der pro Zyklus verarbeiteten
+                   Objekte, ausgedrueckt in Prozent (0 .. 1.0)
+             - int DID_ST_OTABLE
+                   Anzahl eingetragener Objekte in der Objekttabelle
+             - int DID_ST_OTABLE_SLOTS
+                   Anzahl von Hashplaetzen, die von jeder Objekttabelle
+                   bereitgestellt werden
+             - int DID_ST_OTABLE_SIZE
+                   Durch die Objekttabelle belegter Speicher
+             - int DID_ST_HBEAT_OBJS
+                   Anzahl Objekte mit einem heart_beat()
+             - int DID_ST_HBEAT_CALLS
+                   Anzahl aktiver heart_beat() Zyklen bisher (d.h.
+                   Zyklen, in denen mindestens eine heart_beat() Funktion
+                   aufgerufen wurde)
+             - int DID_ST_HBEAT_CALLS_TOTAL
+                   Gesamtzahl von heart_beat() Zyklen bisher.
+             - int DID_ST_HBEAT_SLOTS
+             - int DID_ST_HBEAT_SIZE
+                   Anzahl und Groesse aller allozierten Eintraege in der
+                   heart_beat() Tabelle.
+             - int DID_ST_HBEAT_PROCESSED
+                   Anzahl heart_beat()s im letzten Zyklus
+             - float DID_ST_HBEAT_AVG_PROC
+                   Durchschnittlicher Anteil der pro Zyklus aufgerufenen
+                   heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
+             - int DID_ST_CALLOUTS
+                   Anzahl und Groesse aller laufenden call_out()s
+             - int DID_ST_ARRAYS
+             - int DID_ST_ARRAYS_SIZE
+                   Anzahl und Groesse aller Arrays
+             - int DID_ST_MAPPINGS
+             - int DID_ST_MAPPINGS_SIZE
+                   Anzahl und Groesse aller Mappings
+             - int DID_ST_PROGS
+             - int DID_ST_PROGS_SIZE
+                   Anzahl und Groesse aller Programme
+             - int DID_ST_PROGS_SWAPPED
+             - int DID_ST_PROGS_SWAP_SIZE
+                   Anzahl und Groesse der geswapten Programme
+             - int DID_ST_USER_RESERVE
+             - int DID_ST_MASTER_RESERVE
+             - int DID_ST_SYSTEM_RESERVE
+                   Momentane Groesse der drei Speicherreserven
+             - int DID_ST_ADD_MESSAGE
+             - int DID_ST_PACKETS
+             - int DID_ST_PACKET_SIZE
+                   Anzahl Aufrufe von add_message(), Anzahl und Groesse
+                   der versendeten Pakete.
+                   Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
+                   liefern alle drei Werte immer -1 zurueck.
+             - int DID_ST_APPLY
+             - int DID_ST_APPLY_HITS
+                   Anzahl Aufrufen von apply_low(), und wie viele davon
+                   Cache-Treffer waren. Wenn der Driver nicht mit
+                   APPLY_CACHE_STAT kompiliert wurde, liefern beide
+                   Werte immer -1.
+             - int DID_ST_STRINGS
+             - int DID_ST_STRING_SIZE
+                   Anzahl unterschiedlicher Strings in der Stringtabelle,
+                   sowie ihre Groesse
+             - int DID_ST_STR_TABLE_SIZE
+                   Groesse der String Tabelle
+             - int DID_ST_STR_REQ
+             - int DID_ST_STR_REQ_SIZE
+                   Gesamte Anzahl von String Allokationen, und ihre
+                   Groesse
+             - int DID_ST_STR_SEARCHES
+             - int DID_ST_STR_SEARCH_LEN
+                   Anzahl Suchvorgaenge in der Stringtabelle und die
+                   Gesamtlaenge des Suchstrings
+             - int DID_ST_STR_FOUND
+                   Anzahl erfolgreicher Suchvorgaenge
+             - int DID_ST_STR_ENTRIES
+                   Anzahl Eintraege (Hash Ketten) in der String Tabelle
+             - int DID_ST_STR_ADDED
+                   Anzahl zur String Tabelle bisher hinzugefuegter
+                   Strings
+             - int DID_ST_STR_DELETED
+                   Anzahl aus der String Tabelle bisher geloeschter
+                   Strings
+             - int DID_ST_STR_COLLISIONS
+                   Anzahl zu einer existierenden Hash Kette hinzugefuegte
+                   Strings
+             - int DID_ST_RX_CACHED
+                   Anzahl gecacheter regulaerer Ausdruecke (regular
+                   expressions)
+             - int DID_ST_RX_TABLE
+             - int DID_ST_RX_TABLE_SIZE
+                   Anzahl Plaetze in der Regexp Cache Tabelle und
+                   Speicherbedarf der gecacheten Ausdruecke
+             - int DID_ST_RX_REQUESTS
+                   Anzahl Anfragen fuer neue regexps
+             - int DID_ST_RX_REQ_FOUND
+                   Anzahl gefundener regexps in der regexp Cache Tabelle
+             - int DID_ST_RX_REQ_COLL
+                   Anzahl angefragter regexps, die mit einer bestehenden
+                   regexp kollidierten
+             - int DID_ST_MB_FILE
+                   Die Groesse des 'File' Speicherpuffers
+             - int DID_ST_MB_SWAP
+                   Die Groesse des 'Swap' Speicherpuffers
 
-            <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
-                  - int DID_SW_PROGS
-                  - int DID_SW_PROG_SIZE
-                        Anzahl und Groesse der geswappten Programmbloecke
-                  - int DID_SW_PROG_UNSWAPPED
-                  - int DID_SW_PROG_U_SIZE
-                        Anzahl und Groesse der nicht geswappten Bloecke
-                  - int DID_SW_VARS
-                  - int DID_SW_VAR_SIZE
-                        Anzahl und Groesse der geswappten Variablenbloecke
-                  - int DID_SW_FREE
-                  - int DID_SW_FREE_SIZE
-                        Anzahl und Groesse der freien Bloecke in der
-                        Auslagerungsdatei
-                  - int DID_SW_FILE_SIZE
-                        Groesse der Auslagerungsdatei
-                  - int DID_SW_REUSED
-                        Gesamter wiederverwendeter Speicherplatz in der
-                        Auslagerungsdatei
-                  - int DID_SW_SEARCHES
-                  - int DID_SW_SEARCH_LEN
-                        Anzahl und Gesamtlaenge der Suchvorgaenge nach
-                        wiederverwendbaren Bloecken in der Auslagerungsdatei
-                  - int DID_SW_F_SEARCHES
-                  - int DID_SW_F_SEARCH_LEN
-                        Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
-                        Block, der frei gemacht werden kann.
-                  - int DID_SW_COMPACT
-                        TRUE wenn der Swapper im Compact-Modus laeuft
-                  - int DID_SW_RECYCLE_FREE
-                        TRUE wenn der Swapper gerade einen freien Block
-                        wiederverwendet
+       <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
+             - int DID_SW_PROGS
+             - int DID_SW_PROG_SIZE
+                   Anzahl und Groesse der geswappten Programmbloecke
+             - int DID_SW_PROG_UNSWAPPED
+             - int DID_SW_PROG_U_SIZE
+                   Anzahl und Groesse der nicht geswappten Bloecke
+             - int DID_SW_VARS
+             - int DID_SW_VAR_SIZE
+                   Anzahl und Groesse der geswappten Variablenbloecke
+             - int DID_SW_FREE
+             - int DID_SW_FREE_SIZE
+                   Anzahl und Groesse der freien Bloecke in der
+                   Auslagerungsdatei
+             - int DID_SW_FILE_SIZE
+                   Groesse der Auslagerungsdatei
+             - int DID_SW_REUSED
+                   Gesamter wiederverwendeter Speicherplatz in der
+                   Auslagerungsdatei
+             - int DID_SW_SEARCHES
+             - int DID_SW_SEARCH_LEN
+                   Anzahl und Gesamtlaenge der Suchvorgaenge nach
+                   wiederverwendbaren Bloecken in der Auslagerungsdatei
+             - int DID_SW_F_SEARCHES
+             - int DID_SW_F_SEARCH_LEN
+                   Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
+                   Block, der frei gemacht werden kann.
+             - int DID_SW_COMPACT
+                   TRUE wenn der Swapper im Compact-Modus laeuft
+             - int DID_SW_RECYCLE_FREE
+                   TRUE wenn der Swapper gerade einen freien Block
+                   wiederverwendet
 
-            <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
-                  - string DID_MEM_NAME
-                        Der Name des Allokators: "sysmalloc", "smalloc",
-                        "slaballoc"
-                  - int DID_MEM_SBRK
-                  - int DID_MEM_SBRK_SIZE
-                        Anzahl und Groesse der Speicherbloecke, die vom
-                        Betriebssystem angefordert wurden (smalloc, slaballoc)
-                  - int DID_MEM_LARGE
-                  - int DID_MEM_LARGE_SIZE
-                  - int DID_MEM_LFREE
-                  - int DID_MEM_LFREE_SIZE
-                        Anzahl und Groesse der grossen allozierten bzw.
-                        freien Bloecke (smalloc, slaballoc)
-                  - int DID_MEM_LWASTED
-                  - int DID_MEM_LWASTED_SIZE
-                        Anzahl und Groesse der unbrauchbaren grossen
-                        Speicherfragmente (smalloc, slaballoc)
-                  - int DID_MEM_CHUNK
-                  - int DID_MEM_CHUNK_SIZE
-                        Anzahl und Groesse kleiner Speicherbloecke (chunk
-                        blocks; smalloc, slaballoc)
-                  - int DID_MEM_SMALL
-                  - int DID_MEM_SMALL_SIZE
-                  - int DID_MEM_SFREE
-                  - int DID_MEM_SFREE_SIZE
-                        Anzahl und groesse der allozierten bzw. freien
-                        kleinen Speicherbloecke (smalloc, slaballoc)
-                  - int DID_MEM_SWASTED
-                  - int DID_MEM_SWASTED_SIZE
-                        Anzahl und Groesse der unbrauchbar kleinen
-                        Speicherfragmente (smalloc, slaballoc)
-                  - int DID_MEM_MINC_CALLS
-                  - int DID_MEM_MINC_SUCCESS
-                  - int DID_MEM_MINC_SIZE
-                        Anzahl Aufrufe von malloc_increment(), Anzahl der
-                        erfolgreichen Aufrufe und die Groesse des auf diese
-                        Art allozierten Speichers (smalloc, slaballoc)
-                  - int DID_MEM_PERM
-                  - int DID_MEM_PERM_SIZE
-                        Anzahl und Groesse permanenter (non-GCable)
-                        Allokationen (smalloc, slaballoc)
-                  - int DID_MEM_CLIB
-                  - int DID_MEM_CLIB_SIZE
-                        Anzahl und Groesse der Allokationen durch Clib
-                        Funktionen (nur smalloc, slaballoc mit SBRK_OK)
-                  - int DID_MEM_OVERHEAD
-                        Overhead fuer jede Allokation (smalloc, slaballoc)
-                  - int DID_MEM_ALLOCATED
-                        Der Speicher, der durch die Speicherverwaltung
-                        alloziert wurde, inklusive den Overhead fuer die
-                        Speicherverwaltung (smalloc, slaballoc)
-                  - int DID_MEM_USED
-                        Der Speicher, der durch den Driver belegt ist, ohne
-                        den durch die Speicherverwaltung belegten Speicher
-                        (smalloc, slaballoc)
-                  - int DID_MEM_TOTAL_UNUSED
-                        Der Speicher, der vom System zur Verfuegung gestellt,
-                        aber vom Treiber nicht benoetigt wird.
-                  - int DID_MEM_AVL_NODES          (smalloc, slaballoc)
-                        Anzahl der AVL-Knoten, die zur Verwaltung der
-                        freien grossen Speicherbloecke verwendet werden
-                        (nur smalloc). Dieser Wert kann in Zukunft
-                        wieder verschwinden.
-                  - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
-                        Detaillierte Statistiken des Allokators sofern
-                        diese aktiviert wurden; 0 anderenfalls.
+       <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
+             - string DID_MEM_NAME
+                   Der Name des Allokators: "sysmalloc", "smalloc",
+                   "slaballoc"
+             - int DID_MEM_SBRK
+             - int DID_MEM_SBRK_SIZE
+                   Anzahl und Groesse der Speicherbloecke, die vom
+                   Betriebssystem angefordert wurden (smalloc, slaballoc)
+             - int DID_MEM_LARGE
+             - int DID_MEM_LARGE_SIZE
+             - int DID_MEM_LFREE
+             - int DID_MEM_LFREE_SIZE
+                   Anzahl und Groesse der grossen allozierten bzw.
+                   freien Bloecke (smalloc, slaballoc)
+             - int DID_MEM_LWASTED
+             - int DID_MEM_LWASTED_SIZE
+                   Anzahl und Groesse der unbrauchbaren grossen
+                   Speicherfragmente (smalloc, slaballoc)
+             - int DID_MEM_CHUNK
+             - int DID_MEM_CHUNK_SIZE
+                   Anzahl und Groesse kleiner Speicherbloecke (chunk
+                   blocks; smalloc, slaballoc)
+             - int DID_MEM_SMALL
+             - int DID_MEM_SMALL_SIZE
+             - int DID_MEM_SFREE
+             - int DID_MEM_SFREE_SIZE
+                   Anzahl und groesse der allozierten bzw. freien
+                   kleinen Speicherbloecke (smalloc, slaballoc)
+             - int DID_MEM_SWASTED
+             - int DID_MEM_SWASTED_SIZE
+                   Anzahl und Groesse der unbrauchbar kleinen
+                   Speicherfragmente (smalloc, slaballoc)
+             - int DID_MEM_MINC_CALLS
+             - int DID_MEM_MINC_SUCCESS
+             - int DID_MEM_MINC_SIZE
+                   Anzahl Aufrufe von malloc_increment(), Anzahl der
+                   erfolgreichen Aufrufe und die Groesse des auf diese
+                   Art allozierten Speichers (smalloc, slaballoc)
+             - int DID_MEM_PERM
+             - int DID_MEM_PERM_SIZE
+                   Anzahl und Groesse permanenter (non-GCable)
+                   Allokationen (smalloc, slaballoc)
+             - int DID_MEM_CLIB
+             - int DID_MEM_CLIB_SIZE
+                   Anzahl und Groesse der Allokationen durch Clib
+                   Funktionen (nur smalloc, slaballoc mit SBRK_OK)
+             - int DID_MEM_OVERHEAD
+                   Overhead fuer jede Allokation (smalloc, slaballoc)
+             - int DID_MEM_ALLOCATED
+                   Der Speicher, der durch die Speicherverwaltung
+                   alloziert wurde, inklusive den Overhead fuer die
+                   Speicherverwaltung (smalloc, slaballoc)
+             - int DID_MEM_USED
+                   Der Speicher, der durch den Driver belegt ist, ohne
+                   den durch die Speicherverwaltung belegten Speicher
+                   (smalloc, slaballoc)
+             - int DID_MEM_TOTAL_UNUSED
+                   Der Speicher, der vom System zur Verfuegung gestellt,
+                   aber vom Treiber nicht benoetigt wird.
+             - int DID_MEM_AVL_NODES          (smalloc, slaballoc)
+                   Anzahl der AVL-Knoten, die zur Verwaltung der
+                   freien grossen Speicherbloecke verwendet werden
+                   (nur smalloc). Dieser Wert kann in Zukunft
+                   wieder verschwinden.
+             - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
+                   Detaillierte Statistiken des Allokators sofern
+                   diese aktiviert wurden; 0 anderenfalls.
 
-                        Dieser Wert kann in Zukunft wieder verschwinden.
+                   Dieser Wert kann in Zukunft wieder verschwinden.
 
-                        Das Array enthaelt NUM+2 Eintraege, wobei NUM
-                        Anzahl der verschiedenen 'kleinen'
-                        Blockgroessen ist. Eintrag [NUM] beschreibt
-                        die uebergrossen 'kleinen' Bloecke, Eintrag
-                        [NUM+1] beschreibt summarisch die 'grossen'
-                        Bloecke. Jeder Eintrag ist ein Array mit
-                        diesen Feldern:
+                   Das Array enthaelt NUM+2 Eintraege, wobei NUM
+                   Anzahl der verschiedenen 'kleinen'
+                   Blockgroessen ist. Eintrag [NUM] beschreibt
+                   die uebergrossen 'kleinen' Bloecke, Eintrag
+                   [NUM+1] beschreibt summarisch die 'grossen'
+                   Bloecke. Jeder Eintrag ist ein Array mit
+                   diesen Feldern:
 
-                        int DID_MEM_ES_MAX_ALLOC:
-                          Maximale Anzahl allokierter Bloecke dieser
-                          Groesse.
+                   int DID_MEM_ES_MAX_ALLOC:
+                     Maximale Anzahl allokierter Bloecke dieser
+                     Groesse.
 
-                        int DID_MEM_ES_CUR_ALLOC:
-                          Derzeitige Anzahl allokierter Bloecke dieser
-                          Groesse.
-                          Current number of allocated blocks of this size.
+                   int DID_MEM_ES_CUR_ALLOC:
+                     Derzeitige Anzahl allokierter Bloecke dieser
+                     Groesse.
+                     Current number of allocated blocks of this size.
 
-                        int DID_MEM_ES_MAX_FREE:
-                          Maximale Anzahl freier Bloecke dieser
-                          Groesse.
+                   int DID_MEM_ES_MAX_FREE:
+                     Maximale Anzahl freier Bloecke dieser
+                     Groesse.
 
-                        int DID_MEM_ES_CUR_FREE:
-                          Derzeitige Anzahl freier Bloecke dieser
-                          Groesse.
+                   int DID_MEM_ES_CUR_FREE:
+                     Derzeitige Anzahl freier Bloecke dieser
+                     Groesse.
 
-                        float DID_MEM_ES_AVG_XALLOC:
-                          Durchschnittliche Zahl von Allokationen pro
-                          Sekunde.
+                   float DID_MEM_ES_AVG_XALLOC:
+                     Durchschnittliche Zahl von Allokationen pro
+                     Sekunde.
 
-                        float DID_MEM_ES_AVG_XFREE:
-                          Durchschnittliche Zahl von Deallokationen pro
-                          Sekunde.
+                   float DID_MEM_ES_AVG_XFREE:
+                     Durchschnittliche Zahl von Deallokationen pro
+                     Sekunde.
 
-                      Die Durchschnittsstatistiken schliessen interne
-                      Umsortierungen der Blocklisten nicht ein.
+                 Die Durchschnittsstatistiken schliessen interne
+                 Umsortierungen der Blocklisten nicht ein.
 
 
-        DINFO_TRACE    (7): Liefert die 'trace' Information aus dem
-            Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
-            ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
-            oder ein druckbarer String. Wird <arg2> weggelasen entspricht
-            dies DIT_CURRENT.
+   DINFO_TRACE    (7): Liefert die 'trace' Information aus dem
+       Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
+       ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
+       oder ein druckbarer String. Wird <arg2> weggelasen entspricht
+       dies DIT_CURRENT.
 
-            <arg2> == DIT_CURRENT (0): Momentaner Call Trace
-                   == DIT_ERROR   (1): Letzter Fehler Trace (caught oder
-                        uncaught)
-                   == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
-                        gefangen werden konnte (uncaught)
+       <arg2> == DIT_CURRENT (0): Momentaner Call Trace
+              == DIT_ERROR   (1): Letzter Fehler Trace (caught oder
+                   uncaught)
+              == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
+                   gefangen werden konnte (uncaught)
 
-            Die Information wird in Form eines Array uebergeben.
+       Die Information wird in Form eines Array uebergeben.
 
-            Die Fehlertraces werden nur geaendert, wenn ein entsprechender
-            Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
-            Collection) geloescht. Nach einem Fehler, der nicht gefangen
-            werden konnte (uncaught error), weisen beide Traces auf das
-            gleiche Array, sodass der ==-Operator gilt.
+       Die Fehlertraces werden nur geaendert, wenn ein entsprechender
+       Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
+       Collection) geloescht. Nach einem Fehler, der nicht gefangen
+       werden konnte (uncaught error), weisen beide Traces auf das
+       gleiche Array, sodass der ==-Operator gilt.
 
-            Wenn das Array mehr als ein Element enthaelt, ist das erste
-            Element 0 oder der Name des Objekts, dessen heart_beat() den
-            laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
-            bezeichnen den Call Stack, beginnen mit der hoechsten
-            aufgerufenen Funktion.
+       Wenn das Array mehr als ein Element enthaelt, ist das erste
+       Element 0 oder der Name des Objekts, dessen heart_beat() den
+       laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
+       bezeichnen den Call Stack, beginnen mit der hoechsten
+       aufgerufenen Funktion.
 
-            Alle Eintraege im Array sind wiederum Arrays mit folgenden
-            Elementen:
-              - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
-                    TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
-                                           vorkommen)
-                    TRACE_TYPE_SEFUN  (1): eine simul-efun
-                    TRACE_TYPE_EFUN   (2): eine Efun Closure
-                    TRACE_TYPE_LAMBDA (3): eine lambda Closure
-                    TRACE_TYPE_LFUN   (4): eine normale Lfun
-              - int[TRACE_NAME]
-                    _TYPE_EFUN    : entweder der Name der Funktion oder der
-                                    Code einer Operator-Closure
-                    _TYPE_LAMBDA  : die numerische Lambda-ID
-                    _TYPE_LFUN    : der Name der Lfun
-              - string[TRACE_PROGRAM]:  Der Name des Programms mit dem Code
-              - string[TRACE_OBJECT]:   Der Name des Objekts, fuer das der
-                                        Code ausgefuehrt wurde
-              - int[TRACE_LOC]:
-                    _TYPE_LAMBDA  : Der Offset des Programms seit Beginn des
-                                    Closure-Codes
-                    _TYPE_LFUN    : Die Zeilennummer.
+       Alle Eintraege im Array sind wiederum Arrays mit folgenden
+       Elementen:
+         - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
+               TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
+                                      vorkommen)
+               TRACE_TYPE_SEFUN  (1): eine simul-efun
+               TRACE_TYPE_EFUN   (2): eine Efun Closure
+               TRACE_TYPE_LAMBDA (3): eine lambda Closure
+               TRACE_TYPE_LFUN   (4): eine normale Lfun
+         - int[TRACE_NAME]
+               _TYPE_EFUN    : entweder der Name der Funktion oder der
+                               Code einer Operator-Closure
+               _TYPE_LAMBDA  : die numerische Lambda-ID
+               _TYPE_LFUN    : der Name der Lfun
+         - string[TRACE_PROGRAM]:  Der Name des Programms mit dem Code
+         - string[TRACE_OBJECT]:   Der Name des Objekts, fuer das der
+                                   Code ausgefuehrt wurde
+         - int[TRACE_LOC]:
+               _TYPE_LAMBDA  : Der Offset des Programms seit Beginn des
+                               Closure-Codes
+               _TYPE_LFUN    : Die Zeilennummer.
 
-            <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
-                momentanen Call Trace als druckbarer String.
+       <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
+           momentanen Call Trace als druckbarer String.
 
-            <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
-                dem Control Stack (Rekursionstiefe).
+       <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
+           dem Control Stack (Rekursionstiefe).
 
-        DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
-            zurueck. Diese Nummer wird fuer jeden vom driver initiierten
-            Aufruf von LPC-Code erhoeht, also bei Aufruf von:
-              - Kommandos (die per add_action hinzugefuegt wurden)
-              - heart_beat, reset, clean_up
-              - Aufrufe durch call_out oder input_to
-              - master applies, die auf externe Ereignisse zurueckgehen
-              - driver hooks genauso
-              - Rueckrufen von send_erq
-              - logon in interaktiven Objekten
+   DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
+       zurueck. Diese Nummer wird fuer jeden vom driver initiierten
+       Aufruf von LPC-Code erhoeht, also bei Aufruf von:
+         - Kommandos (die per add_action hinzugefuegt wurden)
+         - heart_beat, reset, clean_up
+         - Aufrufe durch call_out oder input_to
+         - master applies, die auf externe Ereignisse zurueckgehen
+         - driver hooks genauso
+         - Rueckrufen von send_erq
+         - logon in interaktiven Objekten
 
-           Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
-           bestimmte Aktionen mehrfach innerhalb eines heart_beat()
-           ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
-           Zeitstempel zur Sortierung zur Sortierung von Ereignissen.
+      Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
+      bestimmte Aktionen mehrfach innerhalb eines heart_beat()
+      ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
+      Zeitstempel zur Sortierung zur Sortierung von Ereignissen.
 
-           Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
-           auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.
+      Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
+      auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.
 
 
 GESCHICHTE
-        Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
-            nur auszugeben.
-        DINFO_DUMP wurde in 3.2.7 eingefuehrt.
-        LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
-            DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
-            verschiedenen DID_MEM_WASTED Statistiken.
-        LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
-            DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
-            die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
-            DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
-            DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
-            und die found / added / collision Stringstatistiken.
-        LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
-            entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
-            DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
-            DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
-            fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
-            die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
-            bzw. _SLOTS.
-        LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
-            hinzu.
-        LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
-            hinzu.
-        LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
-        LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.
+==========
+
+   Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
+       nur auszugeben.
+   DINFO_DUMP wurde in 3.2.7 eingefuehrt.
+   LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
+       DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
+       verschiedenen DID_MEM_WASTED Statistiken.
+   LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
+       DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
+       die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
+       DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
+       DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
+       und die found / added / collision Stringstatistiken.
+   LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
+       entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
+       DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
+       DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
+       fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
+       die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
+       bzw. _SLOTS.
+   LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
+       hinzu.
+   LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
+       hinzu.
+   LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
+   LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.
+
 
 SIEHE AUCH
-        trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
+==========
+
+   trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
diff --git a/doc/sefun/deep_present b/doc/sefun/deep_present
index 78c0983..c3f673a 100644
--- a/doc/sefun/deep_present
+++ b/doc/sefun/deep_present
@@ -1,21 +1,40 @@
-FUNKTION:
-        object deep_present(string what)
-        object deep_present(object what)
-        object deep_present(string what, object ob)
-        object deep_present(object what, object ob)
 
-ARGUMENTE:
-        what - Objekt oder ID des Objektes, nach dem gesucht werden soll
-        ob - Objekt, in dem gesucht werden soll
+deep_present()
+**************
 
-BESCHREIBUNG:
-        deep_present() sucht in this_object() (oder in ob, falls angegeben)
-        nach dem Objekt what oder einem Objekt, das auf what anspricht.
-        Im Gegensatz zu present() wird aber das komplette Inventory berueck-
-        sichtigt (also zB. auch der Inhalt von Beuteln).
 
-RUECKGABEWERT:
-        das gefundene Objekt oder 0
+FUNKTION
+========
 
-SIEHE AUCH:
-        present(E)
+   object deep_present(string what)
+   object deep_present(object what)
+   object deep_present(string what, object ob)
+   object deep_present(object what, object ob)
+
+
+ARGUMENTE
+=========
+
+   what - Objekt oder ID des Objektes, nach dem gesucht werden soll
+   ob - Objekt, in dem gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   deep_present() sucht in this_object() (oder in ob, falls angegeben)
+   nach dem Objekt what oder einem Objekt, das auf what anspricht.
+   Im Gegensatz zu present() wird aber das komplette Inventory berueck-
+   sichtigt (also zB. auch der Inhalt von Beuteln).
+
+
+RUECKGABEWERT
+=============
+
+   das gefundene Objekt oder 0
+
+
+SIEHE AUCH
+==========
+
+   present(E)
diff --git a/doc/sefun/dtime b/doc/sefun/dtime
index 6624642..dac7dd0 100644
--- a/doc/sefun/dtime
+++ b/doc/sefun/dtime
@@ -1,24 +1,49 @@
-FUNKTION:
-	string dtime(int time)
 
-ARGUMENTE:
-	time - Umzuwandelndes Datum in Sekunden seit 1.1.1970, 0:0:0h
+dtime()
+*******
 
-BESCHREIBUNG:
-	Wandelt das Datum time in einen deutschsprachigen String der Form
-	"<wtag>, <tag>. <mon> <jahr>, <std>:<min>:<sek>" um.
 
-RUECKGABEWERT:
-	Der String mit dem umgewandelten Datum.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Als time wird meistens das Ergebnis von time() benutzt.
-  strftime() stellt eine wesentlich flexiblere Moeglichkeit der Ausgabe von
-  Zeiten dar.
+   string dtime(int time)
 
-BEISPIELE:
-	datum = dtime(time());
-        => datum = "Mon,  6. Mar 1994, 15:00:08"
 
-SIEHE AUCH:
-	ctime(E), strftime(E), time(E)
+ARGUMENTE
+=========
+
+   time - Umzuwandelndes Datum in Sekunden seit 1.1.1970, 0:0:0h
+
+
+BESCHREIBUNG
+============
+
+   Wandelt das Datum time in einen deutschsprachigen String der Form
+   "<wtag>, <tag>. <mon> <jahr>, <std>:<min>:<sek>" um.
+
+
+RUECKGABEWERT
+=============
+
+   Der String mit dem umgewandelten Datum.
+
+
+BEMERKUNGEN
+===========
+
+         Als time wird meistens das Ergebnis von time() benutzt.
+   strftime() stellt eine wesentlich flexiblere Moeglichkeit der Ausgabe von
+   Zeiten dar.
+
+
+BEISPIELE
+=========
+
+   datum = dtime(time());
+   => datum = "Mon,  6. Mar 1994, 15:00:08"
+
+
+SIEHE AUCH
+==========
+
+   ctime(E), strftime(E), time(E)
diff --git a/doc/sefun/dump_netdead b/doc/sefun/dump_netdead
index c73b2c0..b5b480a 100644
--- a/doc/sefun/dump_netdead
+++ b/doc/sefun/dump_netdead
@@ -1,13 +1,29 @@
-FUNKTION:
-        string *dump_netdead()
 
-BESCHREIBUNG:
-        Gibt ein Array mit den Namen aller zur Zeit netztoten Spieler
-        zurueck.
+dump_netdead()
+**************
 
-RUECKGABEWERT:
-        Ein Stringarray mit den Namen der netztoten Spieler.
-        gibt.
 
-SIEHE AUCH:
-        find_netdead(E)
+FUNKTION
+========
+
+   string *dump_netdead()
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array mit den Namen aller zur Zeit netztoten Spieler
+   zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Stringarray mit den Namen der netztoten Spieler.
+   gibt.
+
+
+SIEHE AUCH
+==========
+
+   find_netdead(E)
diff --git a/doc/sefun/enable_commands b/doc/sefun/enable_commands
index 6508b5f..593fb31 100644
--- a/doc/sefun/enable_commands
+++ b/doc/sefun/enable_commands
@@ -1,26 +1,42 @@
+
+enable_commands()
+*****************
+
+
 SYNOPSIS
-        void enable_commands();
+========
+
+   void enable_commands();
+
 
 BESCHREIBUNG
-        Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
-        zugaenglich sind. Der Aufruf markiert das Objekt als "living". Dies
-        wird fuer Spieler und alle von /std/npc abgeleiteten Objekte
-        bereits von der Mudlib erledigt und sollte nicht nochmals gemacht
-        werden.
+============
 
-        Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
-        Compat-Modus) aufgerufen werden, weil der Kommandogeber auf dieses
-        Objekt gesetzt wird.
+   Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
+   zugaenglich sind. Der Aufruf markiert das Objekt als "living". Dies
+   wird fuer Spieler und alle von /std/npc abgeleiteten Objekte
+   bereits von der Mudlib erledigt und sollte nicht nochmals gemacht
+   werden.
+
+   Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
+   Compat-Modus) aufgerufen werden, weil der Kommandogeber auf dieses
+   Objekt gesetzt wird.
+
 
 BEISPIEL
-        void create()
-        {
-            enable_commands();
-            ...
-        }
+========
 
-        Dies markiert das Objekt als "living".
+   void create()
+   {
+       enable_commands();
+       ...
+   }
+
+   Dies markiert das Objekt als "living".
+
 
 SIEHE AUCH
-        command(E), living(E), disable_commands(E), native(C), hooks(C)
-        set_living_name(E)
+==========
+
+   command(E), living(E), disable_commands(E), native(C), hooks(C)
+   set_living_name(E)
diff --git a/doc/sefun/file_time b/doc/sefun/file_time
index 6c24baa..ddaefce 100644
--- a/doc/sefun/file_time
+++ b/doc/sefun/file_time
@@ -1,5 +1,13 @@
-FUNKTION:
-	int file_time(string filename);
 
-Liefert den Zeitpunkt der letzten Modifikation des Files in Sekunden seit
-dem 1.1.1970, 0:00. Kann per ctime() in ein lesbares Format gebracht werden.
+file_time()
+***********
+
+
+FUNKTION
+========
+
+   int file_time(string filename);
+
+Liefert den Zeitpunkt der letzten Modifikation des Files in Sekunden
+seit dem 1.1.1970, 0:00. Kann per ctime() in ein lesbares Format
+gebracht werden.
diff --git a/doc/sefun/find_living b/doc/sefun/find_living
index 106dd63..5930695 100644
--- a/doc/sefun/find_living
+++ b/doc/sefun/find_living
@@ -1,22 +1,42 @@
-SYNOPSIS:
-        object find_living(string str)
 
-BESCHREIBUNG:
-        Findet das erste "lebende" Objekt, welches per set_living_name() den
-        Namen <str> setzte.
-        
-        Das Objekt muss ausserdem per enable_commands() als Lebewesen
-        markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
-        _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
-        werden.
+find_living()
+*************
 
-BEISPIEL:
-        object ob;
-        ob = find_living("Public Enemy");
 
-SIEHE AUCH:
-        find_player(E), enable_commands(E), set_living_name(E)
+SYNOPSIS
+========
 
-LETZTE AeNDERUNG:
+   object find_living(string str)
+
+
+BESCHREIBUNG
+============
+
+   Findet das erste "lebende" Objekt, welches per set_living_name() den
+   Namen <str> setzte.
+
+
+
+   Das Objekt muss ausserdem per enable_commands() als Lebewesen
+   markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
+   _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
+   werden.
+
+
+BEISPIEL
+========
+
+   object ob;
+   ob = find_living("Public Enemy");
+
+
+SIEHE AUCH
+==========
+
+   find_player(E), enable_commands(E), set_living_name(E)
+
+
+LETZTE AeNDERUNG
+================
+
 09.10.2011, Zesstra
-
diff --git a/doc/sefun/find_livings b/doc/sefun/find_livings
index cc9228f..7f8f9b1 100644
--- a/doc/sefun/find_livings
+++ b/doc/sefun/find_livings
@@ -1,24 +1,49 @@
-FUNKTION:
-        object *find_livings(string name)
 
-ARGUMENTE:
-        name - der living_name der gesuchten Lebewesen
+find_livings()
+**************
 
-BESCHREIBUNG:
-        Diese Funktion liefert ein Array mit allen Lebewesen, die den gleichen
-        living_name haben.
 
-RUECKGABEWERT:
-        Array mit den Lebewesen oder 0, wenn es kein Lebewesen diesen Namens
-        gibt.
+FUNKTION
+========
 
-BEISPIELE:
-        ob = find_livings("herkules");
-        => ob = ({ [/human:herkules], 
-                   [/d/inseln/wargon/luftschloss/mon/herkules] })
+   object *find_livings(string name)
 
-SIEHE AUCH:
-        find_living(E), set_living_name(E), find_player(E), find_netdead(E)
 
-LETZTE AENDERUNG:
+ARGUMENTE
+=========
+
+   name - der living_name der gesuchten Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Array mit allen Lebewesen, die den gleichen
+   living_name haben.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den Lebewesen oder 0, wenn es kein Lebewesen diesen Namens
+   gibt.
+
+
+BEISPIELE
+=========
+
+   ob = find_livings("herkules");
+   => ob = ({ [/human:herkules],
+              [/d/inseln/wargon/luftschloss/mon/herkules] })
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), set_living_name(E), find_player(E), find_netdead(E)
+
+
+LETZTE AENDERUNG
+================
+
 19. Okt. 2015, Arathorn
diff --git a/doc/sefun/find_netdead b/doc/sefun/find_netdead
index d44ee9e..8686436 100644
--- a/doc/sefun/find_netdead
+++ b/doc/sefun/find_netdead
@@ -1,25 +1,46 @@
-FUNKTION:
-        object find_netdead(string name)
 
-ARGUMENTE:
-        name - Name des gesuchten Spielers
-
-BESCHREIBUNG:
-        Falls der Spieler name netztot ist, liefert diese Funktion das Spieler-
-        objekt zurueck.
-
-        Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
-        nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
-        UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
-        zurueckliefern, wenn das die UUID "Jof_1234" hat).
+find_netdead()
+**************
 
 
-RUECKGABEWERT:
-        Der netztote Spieler oder 0, falls es keinen Netztoten diesen Namens
-        gibt.
+FUNKTION
+========
 
-SIEHE AUCH:
-        find_living(E), find_player(E)
+   object find_netdead(string name)
 
-LETZT AeNDERUNG:
+
+ARGUMENTE
+=========
+
+   name - Name des gesuchten Spielers
+
+
+BESCHREIBUNG
+============
+
+   Falls der Spieler name netztot ist, liefert diese Funktion das Spieler-
+   objekt zurueck.
+
+   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
+   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
+   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
+   zurueckliefern, wenn das die UUID "Jof_1234" hat).
+
+
+RUECKGABEWERT
+=============
+
+   Der netztote Spieler oder 0, falls es keinen Netztoten diesen Namens
+   gibt.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_player(E)
+
+
+LETZT AeNDERUNG
+===============
+
 06.01.2009, Zesstra
diff --git a/doc/sefun/find_player b/doc/sefun/find_player
index 57c85f3..048b105 100644
--- a/doc/sefun/find_player
+++ b/doc/sefun/find_player
@@ -1,42 +1,60 @@
-FUNKTION:
-        object find_player(string uid)
 
-BESCHREIBUNG:
-        Findet den Spieler mit dem Namen bzw. der User-ID <uid>.
-        
-        Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
-        nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
-        UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
-        zurueckliefern, wenn das die UUID "Jof_1234" hat).
+find_player()
+*************
 
-        Rueckgabewert ist das Spielerobjekt (wenn Spieler anwesend),
-        ansonsten 0.
 
-BEISPIEL:
+FUNKTION
+========
 
-        object ob;
-        ob = find_player("deepthought");
+   object find_player(string uid)
 
-        if(ob)
-          tell_object(ob,"Tach Du!\n");
 
-        oder auch 
+BESCHREIBUNG
+============
 
-        if(ob = find_player("deepthought"))
-          tell_object(ob,"Tach Du!\n");
+   Findet den Spieler mit dem Namen bzw. der User-ID <uid>.
 
-ANMERKUNGEN:
 
-        Via find_player() werden auch unsichtbare Magier gefunden. In 
-        Objekten, die fuer Spieler gedacht sind, muss dies dann extra
-        per Abfrage auf if(ob->QueryProp(P_INVIS)) getestet werden.
 
-        Netztote Spieler und Monster werden nicht gefunden da find_player
-        den Namen aus set_living_name() verwendet, der in player.c ge-
-        setzt wird.
-        
-SIEHE AUCH:
-        find_living(E), set_living_name(E), find_object(E), find_netdead(E)
+   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
+   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
+   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
+   zurueckliefern, wenn das die UUID "Jof_1234" hat).
 
-----------------------------------------------------------------------------
-Letzte Aenderung: 06.01.2009, Zesstra 
+   Rueckgabewert ist das Spielerobjekt (wenn Spieler anwesend),
+   ansonsten 0.
+
+
+BEISPIEL
+========
+
+   object ob;
+   ob = find_player("deepthought");
+
+   if(ob)
+     tell_object(ob,"Tach Du!\n");
+
+   oder auch
+
+   if(ob = find_player("deepthought"))
+     tell_object(ob,"Tach Du!\n");
+
+
+ANMERKUNGEN
+===========
+
+   Via find_player() werden auch unsichtbare Magier gefunden. In
+   Objekten, die fuer Spieler gedacht sind, muss dies dann extra
+   per Abfrage auf if(ob->QueryProp(P_INVIS)) getestet werden.
+
+   Netztote Spieler und Monster werden nicht gefunden da find_player
+   den Namen aus set_living_name() verwendet, der in player.c ge-
+   setzt wird.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), set_living_name(E), find_object(E), find_netdead(E)
+
+Letzte Aenderung: 06.01.2009, Zesstra
diff --git a/doc/sefun/getuuid b/doc/sefun/getuuid
index 5b34343..63ea31e 100644
--- a/doc/sefun/getuuid
+++ b/doc/sefun/getuuid
@@ -1,17 +1,29 @@
-SYNOPSIS:
-    string getuuid(object ob)
 
-DESCRIPTION:
-    Liefert eine eindeutige (get unique uid) UID fuer einen Spieler.
-    Wird zusammengesetzt aus der UID des Spielers und seinem
-    Erstlogin-Datum.
+getuuid()
+*********
 
-    Nach einer Selbstloeschung und neuem Login erhaelt der Spieler eine
-    neue UUID, bei einer Restaurierung behaelt er seine alte UUID.
 
-    Wenn die Funktion ohne Parameter aufgerufen wird, wird per Default
-    this_object() genommen.
-    
+SYNOPSIS
+========
 
-SEE ALSO:
-        getuid(E)
+   string getuuid(object ob)
+
+
+DESCRIPTION
+===========
+
+   Liefert eine eindeutige (get unique uid) UID fuer einen Spieler.
+   Wird zusammengesetzt aus der UID des Spielers und seinem
+   Erstlogin-Datum.
+
+   Nach einer Selbstloeschung und neuem Login erhaelt der Spieler eine
+   neue UUID, bei einer Restaurierung behaelt er seine alte UUID.
+
+   Wenn die Funktion ohne Parameter aufgerufen wird, wird per Default
+   this_object() genommen.
+
+
+SEE ALSO
+========
+
+   getuid(E)
diff --git a/doc/sefun/iso2ascii b/doc/sefun/iso2ascii
index fe7757a..bd64d73 100644
--- a/doc/sefun/iso2ascii
+++ b/doc/sefun/iso2ascii
@@ -1,17 +1,32 @@
-FUNKTION:
-	public string iso2ascii( string str );
 
-ARGUMENTE:
-	str
-	  String, in welchem Zeichen ersetzt werden sollen.
+iso2ascii()
+***********
 
-BESCHREIBUNG:
-	In dem String werden alle Nicht-ASCII-Zeichen durch ASCII-Zeichen
-	ersetzt, und zwar Umlaute in der bekannten Form und alle anderen
-	durch ein Fragezeichen.
 
-RUeCKGABEWERT:
-	String mit ASCII-Zeichen.
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   public string iso2ascii( string str );
+
+
+ARGUMENTE
+=========
+
+   str
+     String, in welchem Zeichen ersetzt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   In dem String werden alle Nicht-ASCII-Zeichen durch ASCII-Zeichen
+   ersetzt, und zwar Umlaute in der bekannten Form und alle anderen
+   durch ein Fragezeichen.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit ASCII-Zeichen.
+
 Last modified: Fri Jul  6 19:36:09 2001 by Patryn
diff --git a/doc/sefun/log_file b/doc/sefun/log_file
index 6cdab31..a3f3cab 100644
--- a/doc/sefun/log_file
+++ b/doc/sefun/log_file
@@ -1,35 +1,59 @@
-FUNKTION:
-	int log_file(string file, string text)
-  int log_file(string file, string text, int size_to_break)
 
-ARGUMENTE:
-	file - Name der Datei, in die geschrieben werden soll
-	text - Der Text, der geschrieben werden soll
-	size_to_break - Groesse, ab der ein neues File begonnen wird (optional)
+log_file()
+**********
 
-BESCHREIBUNG:
-	log_file schreibt den Text text in die Datei /log/file.
-	Sollte file schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
-	eingefuegt.
 
-RUECKGABEWERT:
-	1 bei Erfolg oder 0, falls ein Fehler beim Schreiben auftrat.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Wenn die Groesse von file vor dem Schreiben 50000 Bytes ueberschreitet,
-	wird sie in file.old umbenannt. Eine schon vorhandene Datei file.old
-	wird dabei geloescht. Der Text wird nach dem Umbenennen geschrieben.
-	Wird 'size_to_break' angegeben und ist dies > 0, wird dieser Wert (in 
-	Bytes) statt der 50000 Bytes zum Rotieren des Logfiles benutzt.
+         int log_file(string file, string text)
+   int log_file(string file, string text, int size_to_break)
 
-BEISPIELE:
-	log_file( "report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
-	In /log/report/wargon.rep finde ich nun die neueste Typomeldung... ;)
-	log_file( "/log/report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
-	Gleiches Ergebnis. ;-)
 
-SIEHE AUCH:
-	write_file(E)
+ARGUMENTE
+=========
+
+   file - Name der Datei, in die geschrieben werden soll
+   text - Der Text, der geschrieben werden soll
+   size_to_break - Groesse, ab der ein neues File begonnen wird (optional)
+
+
+BESCHREIBUNG
+============
+
+   log_file schreibt den Text text in die Datei /log/file.
+   Sollte file schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
+   eingefuegt.
+
+
+RUECKGABEWERT
+=============
+
+   1 bei Erfolg oder 0, falls ein Fehler beim Schreiben auftrat.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn die Groesse von file vor dem Schreiben 50000 Bytes ueberschreitet,
+   wird sie in file.old umbenannt. Eine schon vorhandene Datei file.old
+   wird dabei geloescht. Der Text wird nach dem Umbenennen geschrieben.
+   Wird 'size_to_break' angegeben und ist dies > 0, wird dieser Wert (in
+   Bytes) statt der 50000 Bytes zum Rotieren des Logfiles benutzt.
+
+
+BEISPIELE
+=========
+
+   log_file( "report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
+   In /log/report/wargon.rep finde ich nun die neueste Typomeldung... ;)
+   log_file( "/log/report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
+   Gleiches Ergebnis. ;-)
+
+
+SIEHE AUCH
+==========
+
+   write_file(E)
 
 29.01.2017, Zesstra
-
diff --git a/doc/sefun/lowerchar b/doc/sefun/lowerchar
index 0ec62bf..8e6cfdd 100644
--- a/doc/sefun/lowerchar
+++ b/doc/sefun/lowerchar
@@ -1,20 +1,42 @@
-FUNKTION:
-	int lowerchar(int char)
 
-ARGUMENTE:
-	char - Das umzuwandelnde Zeichen
+lowerchar()
+***********
 
-BESCHREIBUNG:
-	Wenn char ein Grossbuchstabe ist, so wird es in einen Kleinbuchstaben
-	umgewandelt. Andere Zeichen werden von dieser Funktion nicht beein-
-        flusst.
 
-RUECKGABEWERT:
-	Das umgewandelte Zeichen.
+FUNKTION
+========
 
-BEISPIELE:
-	printf("%c\n", lowerchar('A')); => a
-	printf("%c\n", lowerchar('1')); => 1
+   int lowerchar(int char)
 
-SIEHE AUCH:
-	lower_case(E), lowerstring(E), upperstring(E), capitalize(E)
+
+ARGUMENTE
+=========
+
+   char - Das umzuwandelnde Zeichen
+
+
+BESCHREIBUNG
+============
+
+   Wenn char ein Grossbuchstabe ist, so wird es in einen Kleinbuchstaben
+   umgewandelt. Andere Zeichen werden von dieser Funktion nicht beein-
+   flusst.
+
+
+RUECKGABEWERT
+=============
+
+   Das umgewandelte Zeichen.
+
+
+BEISPIELE
+=========
+
+   printf("%c\n", lowerchar('A')); => a
+   printf("%c\n", lowerchar('1')); => 1
+
+
+SIEHE AUCH
+==========
+
+   lower_case(E), lowerstring(E), upperstring(E), capitalize(E)
diff --git a/doc/sefun/lowerstring b/doc/sefun/lowerstring
index 30748fc..a483224 100644
--- a/doc/sefun/lowerstring
+++ b/doc/sefun/lowerstring
@@ -1,20 +1,45 @@
-FUNKTION:
-	string lowerstring(string str)
 
-ARGUMENTE:
-	str - Der umzuwandelnde String.
+lowerstring()
+*************
 
-BESCHREIBUNG:
-	Alle Grossbuchstaben in str werden in Kleinbuchstaben umgewandelt.
 
-RUECKGABEWERT:
-	Der umgewandelte String.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	lowerstring ist mit lower_case identisch!
+   string lowerstring(string str)
 
-BEISPIELE:
-	s = lowerstring("So, McLaud...\n"); => s = "so, mclaud...\n"
 
-SIEHE AUCH:
-	lower_case(E), lowerchar(E), upperstring(E), capitalize(E)
+ARGUMENTE
+=========
+
+   str - Der umzuwandelnde String.
+
+
+BESCHREIBUNG
+============
+
+   Alle Grossbuchstaben in str werden in Kleinbuchstaben umgewandelt.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgewandelte String.
+
+
+BEMERKUNGEN
+===========
+
+   lowerstring ist mit lower_case identisch!
+
+
+BEISPIELE
+=========
+
+   s = lowerstring("So, McLaud...\n"); => s = "so, mclaud...\n"
+
+
+SIEHE AUCH
+==========
+
+   lower_case(E), lowerchar(E), upperstring(E), capitalize(E)
diff --git a/doc/sefun/m_copy_delete b/doc/sefun/m_copy_delete
index cb1c97b..9aa90f2 100644
--- a/doc/sefun/m_copy_delete
+++ b/doc/sefun/m_copy_delete
@@ -1,43 +1,68 @@
-FUNKTION:
-	mapping m_copy_delete(mapping map, mixed key)
 
-ARGUMENTE:
-	map - das Mapping, aus dem geloescht werden soll.
-	key - der zu loeschende Eintrag
+m_copy_delete()
+***************
 
-BESCHREIBUNG:
-	Aus dem Mapping map wird der Eintrag key geloescht (wenn er in map vor-
-	handen ist). map wird dabei nicht veraendert.
 
-RUECKGABEWERT:
-	Eine (flache !) Kopie von map ohne den Eintrag key, d.h. enthaltene
-	Mappings/Arrays werden nicht kopiert.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Das urspruengliche Mapping wird bei dieser Operation nicht veraendert!
-	Wenn man nur einen Wert aus dem Mapping loeschen will und die Kopie nicht
-	braucht, bietet sich efun::m_delete(mapping,key) sehr an, da die Erstellung
-  einer Kopie sehr aufwendig sein kann.
+   mapping m_copy_delete(mapping map, mixed key)
 
-BEISPIELE:
-	mapping m1, m2;
 
-        m1 = ([ "a":1, "b":2, "c":3 ]);
+ARGUMENTE
+=========
 
-        m2 = m_copy_delete(m1, "b");
-           => m1 = ([ "a":1, "b":2, "c":3 ])
-	      m2 = ([ "a":1, "c":3 ])
+   map - das Mapping, aus dem geloescht werden soll.
+   key - der zu loeschende Eintrag
 
-        m_copy_delete(m1, "a");
-           => (es hat sich nichts geaendert)
 
-        m1 = m_copy_delete(m1, "a");
-           => m1 = ([ "b":2, "c":3 ])
+BESCHREIBUNG
+============
 
-        Im letzten Fall sollte aber besser efun::m_delete(m1, "a") benutzt 
-        werden, da ansonsten das Mapping unnoetig kopiert wird und Rechen-
-        leistung frisst. 
+   Aus dem Mapping map wird der Eintrag key geloescht (wenn er in map vor-
+   handen ist). map wird dabei nicht veraendert.
 
-SIEHE AUCH:
-  efun::m_delete(E), mappingp(E), mkmapping(E), m_indices,(E) m_values(E),
-  sizeof(E), widthof(E)
+
+RUECKGABEWERT
+=============
+
+   Eine (flache !) Kopie von map ohne den Eintrag key, d.h. enthaltene
+   Mappings/Arrays werden nicht kopiert.
+
+
+BEMERKUNGEN
+===========
+
+         Das urspruengliche Mapping wird bei dieser Operation nicht veraendert!
+         Wenn man nur einen Wert aus dem Mapping loeschen will und die Kopie nicht
+         braucht, bietet sich efun::m_delete(mapping,key) sehr an, da die Erstellung
+   einer Kopie sehr aufwendig sein kann.
+
+
+BEISPIELE
+=========
+
+   mapping m1, m2;
+
+   m1 = ([ "a":1, "b":2, "c":3 ]);
+
+   m2 = m_copy_delete(m1, "b");
+      => m1 = ([ "a":1, "b":2, "c":3 ])
+         m2 = ([ "a":1, "c":3 ])
+
+   m_copy_delete(m1, "a");
+      => (es hat sich nichts geaendert)
+
+   m1 = m_copy_delete(m1, "a");
+      => m1 = ([ "b":2, "c":3 ])
+
+   Im letzten Fall sollte aber besser efun::m_delete(m1, "a") benutzt
+   werden, da ansonsten das Mapping unnoetig kopiert wird und Rechen-
+   leistung frisst.
+
+
+SIEHE AUCH
+==========
+
+   efun::m_delete(E), mappingp(E), mkmapping(E), m_indices,(E) m_values(E),
+   sizeof(E), widthof(E)
diff --git a/doc/sefun/match_living b/doc/sefun/match_living
index 44801a8..5cb347b 100644
--- a/doc/sefun/match_living
+++ b/doc/sefun/match_living
@@ -1,30 +1,52 @@
+
+match_living()
+**************
+
 match_living(sefun)
-FUNKTION:
-     varargs mixed match_living( string str, int players_only,
-				 string *exclude)
-
-ARGUMENTE:
-     string str		- Kuerzel, nach dem die living_names durchsucht
-			  werden soll
-     int players_only	- 1, um nur Spieler (Interactives) zu suchen
-     string *exlude	- welche Namen sollen ignoriert werden
 
 
-BESCHREIBUNG:
-     Sucht alle Lebewesen, deren Namen mit str beginnen.
+FUNKTION
+========
 
-RUECKGABEWERT:
-     Ein String, falls es ein Lebewesen mit dem Namen str gibt (der Name
-     muss genau passen).
-     -1, wenn es mehrere Lebewesen gibt, deren Namen mit str beginnen.
-     -2, wenn es kein Lebewesen gibt, dessen Name mit str beginnt.
+   varargs mixed match_living( string str, int players_only,
+                               string *exclude)
 
-BEISPIELE:
-     match_living("wargon"); => "wargon", wenn Wargon eingeloggt ist.
-     match_living("war");    => "wargon", wenn es kein anderes Lebewesen
-                                gibt, dessen Name mit "war" beginnt.
 
-SIEHE AUCH:
-     find_living(E), find_player(E), find_netdead(E)
+ARGUMENTE
+=========
+
+   string str         - Kuerzel, nach dem die living_names durchsucht
+                        werden soll
+   int players_only   - 1, um nur Spieler (Interactives) zu suchen
+   string *exlude     - welche Namen sollen ignoriert werden
+
+
+BESCHREIBUNG
+============
+
+   Sucht alle Lebewesen, deren Namen mit str beginnen.
+
+
+RUECKGABEWERT
+=============
+
+   Ein String, falls es ein Lebewesen mit dem Namen str gibt (der Name
+   muss genau passen).
+   -1, wenn es mehrere Lebewesen gibt, deren Namen mit str beginnen.
+   -2, wenn es kein Lebewesen gibt, dessen Name mit str beginnt.
+
+
+BEISPIELE
+=========
+
+   match_living("wargon"); => "wargon", wenn Wargon eingeloggt ist.
+   match_living("war");    => "wargon", wenn es kein anderes Lebewesen
+                              gibt, dessen Name mit "war" beginnt.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_player(E), find_netdead(E)
 
 27. Mai 2004 Gloinson
diff --git a/doc/sefun/md5 b/doc/sefun/md5
index 1e65090..f48dcc8 100644
--- a/doc/sefun/md5
+++ b/doc/sefun/md5
@@ -1,30 +1,52 @@
+
+md5()
+*****
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        string md5 (string arg [ , int iterations ] )
-        string md5 (int *  arg [ , int iterations ] )
+========
+
+   string md5 (string arg [ , int iterations ] )
+   string md5 (int *  arg [ , int iterations ] )
+
 
 BESCHREIBUNG
-        Berechnet den MD5-Hashwert von <arg>.
-        Das Argument kann ein String, oder ein Array von Zahlen sein (von
-        welchen nur das unterste Byte betrachted wird).
+============
 
-        Das Ergebnis wird als 32-stelliger Hexadezimalwert geliefert.
+   Berechnet den MD5-Hashwert von <arg>.
+   Das Argument kann ein String, oder ein Array von Zahlen sein (von
+   welchen nur das unterste Byte betrachted wird).
 
-        Ist das <iterations> Argument eine Zahl groesser 0, berechnet der
-        Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
-        Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
+   Das Ergebnis wird als 32-stelliger Hexadezimalwert geliefert.
+
+   Ist das <iterations> Argument eine Zahl groesser 0, berechnet der
+   Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
+   Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
+
 
 BEISPIEL
-        string s;
+========
 
-        s = md5("Hallo");
-        s = md5( ({ 'H', 'e', 'l', 'l', 'o' }) )
-        s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
+   string s;
+
+   s = md5("Hallo");
+   s = md5( ({ 'H', 'e', 'l', 'l', 'o' }) )
+   s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
+
 
 AENDERUNGEN
-        Eingefuehrt in LDMud 3.2.9
-        LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
-          die Anzahl der Wiederholungen.
+===========
+
+   Eingefuehrt in LDMud 3.2.9
+   LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
+     die Anzahl der Wiederholungen.
+
 
 SIEHE AUCH
-        crypt(E), md5_crypt(E), sha1(E), hash(E), hmac(E)
+==========
+
+   crypt(E), md5_crypt(E), sha1(E), hash(E), hmac(E)
diff --git a/doc/sefun/mkdirp b/doc/sefun/mkdirp
index a05d4e6..2bb9d06 100644
--- a/doc/sefun/mkdirp
+++ b/doc/sefun/mkdirp
@@ -1,21 +1,42 @@
-FUNKTION:
-        int mkdirp(string dir)
 
-ARGUMENTE:
-        dir - Name des zu erstellenden Verzeichnisses (absolut)
+mkdirp()
+********
 
-BESCHREIBUNG:
-        Erzeugt das Verzeichnis <dir>. Dies muss als abs. Pfad angegeben
-        werden.
-        Wenn noetig, wird die ganze Verzeichnishierarchie rekursiv erstellt.
-        
-RUECKGABEWERT:
-        0 - Verzeichnis konnte nicht erstellt werden
-        1 - Verzeichnis wurde erstellt oder existierte bereits
 
-SIEHE AUCH:
-        mkdir(E)
+FUNKTION
+========
 
-LETZT AeNDERUNG:
+   int mkdirp(string dir)
+
+
+ARGUMENTE
+=========
+
+   dir - Name des zu erstellenden Verzeichnisses (absolut)
+
+
+BESCHREIBUNG
+============
+
+   Erzeugt das Verzeichnis <dir>. Dies muss als abs. Pfad angegeben
+   werden.
+   Wenn noetig, wird die ganze Verzeichnishierarchie rekursiv erstellt.
+
+
+RUECKGABEWERT
+=============
+
+   0 - Verzeichnis konnte nicht erstellt werden
+   1 - Verzeichnis wurde erstellt oder existierte bereits
+
+
+SIEHE AUCH
+==========
+
+   mkdir(E)
+
+
+LETZT AeNDERUNG
+===============
+
 26.01.2013, Zesstra
-
diff --git a/doc/sefun/notify_fail b/doc/sefun/notify_fail
index 1970367..85b700a 100644
--- a/doc/sefun/notify_fail
+++ b/doc/sefun/notify_fail
@@ -1,85 +1,107 @@
-FUNKTION:
-     #include <notify_fail.h>
 
-     varargs void notify_fail(string str, int prio)
-     varargs void notify_fail(closure cl, int prio)
+notify_fail()
+*************
 
-ARGUMENTE:
-     str   Meldung die an den Spieler anstatt des 'Wie bitte' ausgegeben
-           werden soll
-     cl    Closure, die bei Fehlschlag ausgefuehrt werden soll
-     prio  Prioritaet dieses Objekts bei diesem Setzen der Meldung
 
-BESCHREIBUNG:
-     Merkt sich den angegebenen str und gibt ihn im Falle einer inkorrekten
-     Eingabe des Spielers anstatt eines 'Wie bitte' aus.
+FUNKTION
+========
 
-     Gedacht ist notify_fail, um dem Spieler eine bessere Hilfestellung
-     bei Kommandos / Eingaben zu geben, um ihn u.U. auf die richtige
-     Syntax hinzuweisen.
+   #include <notify_fail.h>
 
-     Wird notify_fail mehrfach (durch verschiedene Objekte o.ae.) auf-
-     gerufen, wird der letzte erfolgreiche Aufruf gewertet. Eine Meldung wird
-     dann tatsaechlich gesetzt, wenn die Prioritaet dieses Objekts gleich
-     gross oder groesser ist als die Prioritaet des Objekts, was das bisher
-     gueltige notify_fail() gesetzt hat. Folgende Prioritaeten sind
-     vordefiniert und werden automatisch ermittelt:
-     NF_NL_OWN    100         // eigenes Objekt (soul) ueberschreibt kaum was
-     NF_NL_THING  100000
-     NF_NL_ROOM   1000000     // Raeume ueberschreiben sonstigen Krams
-     NF_NL_LIVING 10000000    // Lebewesen ueberschreiben auch Raeume
-     2 weitere vordefinierte koennen von Magier angegeben werden:
-     NF_NL_NONE   -1          // wird von allem ueberschrieben
-     NF_NL_MAX    __INT_MAX__ // hoechste Prioritaet, ueberschreibt alles
+   varargs void notify_fail(string str, int prio)
+   varargs void notify_fail(closure cl, int prio)
 
-     Wird eine Closure als Argument gegeben, wird sie im Fehlerfall
-     (also erst wenn ein Kommando endgueltig fehlgeschlagen hat)
-     ausgefuehrt und hat die Fehlermeldung als Resultat
-     zurueckzugeben. Die Closure erhaelt als Argument den
-     originalen Befehlsgeber; in der Regel dies ist this_player(),
-     was aber vom MODIFY_CMD hook geaendert werden kann.
 
-     notify_fail() erkennt verschachtelte Kommandos (siehe Efun
-     command()), und ein notify_fail() in einem Unterkommando
-     hat keinen Einfluss auf das uebergeordnete Kommando.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     - solange man sich nicht absolut sicher ist, dass ein bestimmtes Objekt
-       mit dem Kommando gemeint ist (Identifikation ueber id()), sollte man
-       - notify_fail(str); return 0;
-       nutzen anstatt mit
-       - write(str) return 1;
-       die Kommandoauswertung abzubrechen (und anderen Objekten die Chance
-       zu nehmen das Kommando zu erfuellen)
-     - Kommandos werden uebrigens oft erst vom betretenen Raum, dann von den
-       Objekten abgearbeitet (je nachdem wann diese dazukamen)
-     - die Prioritaet wird momentan nicht gespeichert, sie ist nur beim Setzen
-       relevant. Will spaeter ein anderes Objekt eine Meldung setzen, wird
-       fuer das eigene Objekt die Standardprioritaet ermittelt, auch wenn man
-       eine andere hier uebergeben hat
-     - Die NF_NL_* sind in /sys/notify_fail.h defniert.
+   str   Meldung die an den Spieler anstatt des 'Wie bitte' ausgegeben
+         werden soll
+   cl    Closure, die bei Fehlschlag ausgefuehrt werden soll
+   prio  Prioritaet dieses Objekts bei diesem Setzen der Meldung
 
-BEISPIELE:
-     Ein Raum erwartet die korrekte Eingabe von 'iss suppe':
 
-     int iss_cmd(string str){
-       // zu Anfang der Funktion das notify_fail definieren
-       notify_fail("Moechtest Du vielleicht von der Suppe essen?\n");
+BESCHREIBUNG
+============
 
-       // Spieler hat nur 'iss' ohne Parameter eingegeben oder einen anderen
-       // Parameter angegeben ... Abbruch!
-       // Falls kein weiteres Objekt das Kommando erfuellt oder das
-       // notify_fail() mit einer eigenen Meldung ueberschreibt, wird obige
-       // Meldung an den Spieler ausgegeben.
+   Merkt sich den angegebenen str und gibt ihn im Falle einer inkorrekten
+   Eingabe des Spielers anstatt eines 'Wie bitte' aus.
 
-       if(!str || str!="suppe") return 0;
-       // ab hier ist die Eingabe dann wirklich 'suppe' und die Funktion
-       // kann beliebig fortgefuehrt werden
-       ...
-       return   1;
+   Gedacht ist notify_fail, um dem Spieler eine bessere Hilfestellung
+   bei Kommandos / Eingaben zu geben, um ihn u.U. auf die richtige
+   Syntax hinzuweisen.
 
-SIEHE AUCH:
-     add_action(E), AddCmd(L), AddAction(L),
-     query_verb(E), query_notify_fail(E)
+   Wird notify_fail mehrfach (durch verschiedene Objekte o.ae.) auf-
+   gerufen, wird der letzte erfolgreiche Aufruf gewertet. Eine Meldung wird
+   dann tatsaechlich gesetzt, wenn die Prioritaet dieses Objekts gleich
+   gross oder groesser ist als die Prioritaet des Objekts, was das bisher
+   gueltige notify_fail() gesetzt hat. Folgende Prioritaeten sind
+   vordefiniert und werden automatisch ermittelt:
+   NF_NL_OWN    100         // eigenes Objekt (soul) ueberschreibt kaum was
+   NF_NL_THING  100000
+   NF_NL_ROOM   1000000     // Raeume ueberschreiben sonstigen Krams
+   NF_NL_LIVING 10000000    // Lebewesen ueberschreiben auch Raeume
+   2 weitere vordefinierte koennen von Magier angegeben werden:
+   NF_NL_NONE   -1          // wird von allem ueberschrieben
+   NF_NL_MAX    __INT_MAX__ // hoechste Prioritaet, ueberschreibt alles
+
+   Wird eine Closure als Argument gegeben, wird sie im Fehlerfall
+   (also erst wenn ein Kommando endgueltig fehlgeschlagen hat)
+   ausgefuehrt und hat die Fehlermeldung als Resultat
+   zurueckzugeben. Die Closure erhaelt als Argument den
+   originalen Befehlsgeber; in der Regel dies ist this_player(),
+   was aber vom MODIFY_CMD hook geaendert werden kann.
+
+   notify_fail() erkennt verschachtelte Kommandos (siehe Efun
+   command()), und ein notify_fail() in einem Unterkommando
+   hat keinen Einfluss auf das uebergeordnete Kommando.
+
+
+BEMERKUNGEN
+===========
+
+   - solange man sich nicht absolut sicher ist, dass ein bestimmtes Objekt
+     mit dem Kommando gemeint ist (Identifikation ueber id()), sollte man
+     - notify_fail(str); return 0;
+     nutzen anstatt mit
+     - write(str) return 1;
+     die Kommandoauswertung abzubrechen (und anderen Objekten die Chance
+     zu nehmen das Kommando zu erfuellen)
+   - Kommandos werden uebrigens oft erst vom betretenen Raum, dann von den
+     Objekten abgearbeitet (je nachdem wann diese dazukamen)
+   - die Prioritaet wird momentan nicht gespeichert, sie ist nur beim Setzen
+     relevant. Will spaeter ein anderes Objekt eine Meldung setzen, wird
+     fuer das eigene Objekt die Standardprioritaet ermittelt, auch wenn man
+     eine andere hier uebergeben hat
+   - Die NF_NL_* sind in /sys/notify_fail.h defniert.
+
+
+BEISPIELE
+=========
+
+   Ein Raum erwartet die korrekte Eingabe von 'iss suppe':
+
+   int iss_cmd(string str){
+     // zu Anfang der Funktion das notify_fail definieren
+     notify_fail("Moechtest Du vielleicht von der Suppe essen?\n");
+
+     // Spieler hat nur 'iss' ohne Parameter eingegeben oder einen anderen
+     // Parameter angegeben ... Abbruch!
+     // Falls kein weiteres Objekt das Kommando erfuellt oder das
+     // notify_fail() mit einer eigenen Meldung ueberschreibt, wird obige
+     // Meldung an den Spieler ausgegeben.
+
+     if(!str || str!="suppe") return 0;
+     // ab hier ist die Eingabe dann wirklich 'suppe' und die Funktion
+     // kann beliebig fortgefuehrt werden
+     ...
+     return   1;
+
+
+SIEHE AUCH
+==========
+
+   add_action(E), AddCmd(L), AddAction(L),
+   query_verb(E), query_notify_fail(E)
 
 8.Aug 2007 Gloinson
diff --git a/doc/sefun/object_info b/doc/sefun/object_info
index 3945651..bee892e 100644
--- a/doc/sefun/object_info
+++ b/doc/sefun/object_info
@@ -1,129 +1,148 @@
-DEPRECATED
-SYNOPSIS
-        #include <objectinfo.h>
 
-        mixed * object_info(object ob, int what)
-        mixed * object_info(object ob, int what, int index)
+object_info()
+*************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <objectinfo.h>
+
+   mixed * object_info(object ob, int what)
+   mixed * object_info(object ob, int what, int index)
+
 
 DESCRIPTION
-        Returns some internal information about object <ob>, collected
-        in an array. Argument <what> determines which information is
-        returned.
+===========
 
-        The result is usually an array. However, if <index> is specified,
-        the result is the value from position <index> of the array which
-        would have been returned normally.
+   Returns some internal information about object <ob>, collected
+   in an array. Argument <what> determines which information is
+   returned.
 
-        The possible values of <what>, and the indices of the returned
-        arrays are defined in the include file <objectinfo.h>, and may
-        change in future versions of the driver!
+   The result is usually an array. However, if <index> is specified,
+   the result is the value from position <index> of the array which
+   would have been returned normally.
+
+   The possible values of <what>, and the indices of the returned
+   arrays are defined in the include file <objectinfo.h>, and may
+   change in future versions of the driver!
 
 
-        <what> == OINFO_BASIC:
+   <what> == OINFO_BASIC:
 
-          This call returns basic information about <ob>:
+     This call returns basic information about <ob>:
 
-          int [OIB_HEART_BEAT]:       1 if <ob> has a heart_beat, 0 else.
-          int [OIB_IS_WIZARD]:        1 if <ob> has the wizard flag set,
-                                        0 else.
-            This entry is always 0 when set_is_wizard() is not available.
-          int [OIB_ENABLE_COMMANDS]:  1 if <ob> can give commands, 0 else.
-          int [OIB_CLONE]:            1 if <ob> is a clone, 0 else.
-          int [OIB_DESTRUCTED]:       1 if <ob> is destructed, 0 else.
-          int [OIB_SWAPPED]:          1 if <ob> is swapped, 0 else.
-          int [OIB_ONCE_INTERACTIVE]: 1 if <ob> was once interactive, 0 else.
-          int [OIB_RESET_STATE]:      1 if <ob> is (still) reset, 0 else.
-          int [OIB_WILL_CLEAN_UP]:    1 if <ob> will call clean_up(), 0 else.
-          int [OIB_LAMBDA_REFERENCED]: 1 if <ob> has lambdas, 0 else.
-          int [OIB_SHADOW]:           1 if <ob> has a shadow structure tied
-                                        to it, 0 if not.
-          int [OIB_REPLACED]:         1 if the program for <ob> was replaced,
-                                      0 else.
-          int [OIB_NEXT_RESET]:   time of the next reset
-          int [OIB_TIME_OF_REF]:  time of the last call to <ob>
-          int [OIB_NEXT_CLEANUP]: time of the next data cleanup
-          int [OIB_REF]:          number of references to <ob>
-          int [OIB_GIGATICKS] and [OIB_TICKS]: together, these numbers
-            give the accumulated evaluation cost spend in <ob>
-          int [OIB_SWAP_NUM]:     the swap number for <ob>s program,
-                                  or -1 if not swapped.
-          int [OIB_PROG_SWAPPED]: 1 if <ob>'s program is swapped, 0 else.
-          int [OIB_VAR_SWAPPED]:  1 if <ob>'s variables are swapped, 0 else.
-          int [OIB_NAME]:         <ob>'s object name.
-          int [OIB_LOAD_NAME]:    <ob>'s load name.
-          object [OIB_NEXT_ALL]:  next object in the object list.
-          object [OIB_PREV_ALL]:  previous object in the object list.
+     int [OIB_HEART_BEAT]:       1 if <ob> has a heart_beat, 0 else.
+     int [OIB_IS_WIZARD]:        1 if <ob> has the wizard flag set,
+                                   0 else.
+       This entry is always 0 when set_is_wizard() is not available.
+     int [OIB_ENABLE_COMMANDS]:  1 if <ob> can give commands, 0 else.
+     int [OIB_CLONE]:            1 if <ob> is a clone, 0 else.
+     int [OIB_DESTRUCTED]:       1 if <ob> is destructed, 0 else.
+     int [OIB_SWAPPED]:          1 if <ob> is swapped, 0 else.
+     int [OIB_ONCE_INTERACTIVE]: 1 if <ob> was once interactive, 0 else.
+     int [OIB_RESET_STATE]:      1 if <ob> is (still) reset, 0 else.
+     int [OIB_WILL_CLEAN_UP]:    1 if <ob> will call clean_up(), 0 else.
+     int [OIB_LAMBDA_REFERENCED]: 1 if <ob> has lambdas, 0 else.
+     int [OIB_SHADOW]:           1 if <ob> has a shadow structure tied
+                                   to it, 0 if not.
+     int [OIB_REPLACED]:         1 if the program for <ob> was replaced,
+                                 0 else.
+     int [OIB_NEXT_RESET]:   time of the next reset
+     int [OIB_TIME_OF_REF]:  time of the last call to <ob>
+     int [OIB_NEXT_CLEANUP]: time of the next data cleanup
+     int [OIB_REF]:          number of references to <ob>
+     int [OIB_GIGATICKS] and [OIB_TICKS]: together, these numbers
+       give the accumulated evaluation cost spend in <ob>
+     int [OIB_SWAP_NUM]:     the swap number for <ob>s program,
+                             or -1 if not swapped.
+     int [OIB_PROG_SWAPPED]: 1 if <ob>'s program is swapped, 0 else.
+     int [OIB_VAR_SWAPPED]:  1 if <ob>'s variables are swapped, 0 else.
+     int [OIB_NAME]:         <ob>'s object name.
+     int [OIB_LOAD_NAME]:    <ob>'s load name.
+     object [OIB_NEXT_ALL]:  next object in the object list.
+     object [OIB_PREV_ALL]:  previous object in the object list.
 
 
-        <what> == OINFO_POSITION:
+   <what> == OINFO_POSITION:
 
-          This call returns information about <ob>'s position in the
-          global list of objects:
+     This call returns information about <ob>'s position in the
+     global list of objects:
 
-          object [OIP_NEXT]: next object in the object list.
-          object [OIP_PREV]: previous object in the object list.
-          int    [OIP_POS]:  position of <ob> in list, counting from 0 up.
+     object [OIP_NEXT]: next object in the object list.
+     object [OIP_PREV]: previous object in the object list.
+     int    [OIP_POS]:  position of <ob> in list, counting from 0 up.
 
-          This call can be expensive in computing time.
+     This call can be expensive in computing time.
 
 
-        <what> == OINFO_MEMORY:
+   <what> == OINFO_MEMORY:
 
-          This call returns information about the program <ob> uses:
+     This call returns information about the program <ob> uses:
 
-          int    [OIM_REF]:            number of references to the program.
-          string [OIM_NAME]:           name of program.
-          int    [OIM_PROG_SIZE]:      size of the program.
-          int    [OIM_NUM_FUNCTIONS]:  number of functions in the program.
-          int    [OIM_SIZE_FUNCTIONS]: size needed for the function structs.
-          int    [OIM_NUM_VARIABLES]:  number of variables in the program.
-          int    [OIM_SIZE_VARIABLES]: size needed for the variable structs.
-          int    [OIM_NUM_STRINGS]:    number of strings in the program.
-          int    [OIM_SIZE_STRINGS]:   size needed for the string pointers.
-          int    [OIM_SIZE_STRINGS_DATA]: size needed for the string data,
-                                       scaled down according to the extend of
-                                       data sharing.
-          int    [OIM_SIZE_STRINGS_TOTAL]: unmodified size needed for the
-                                       string data.
-          int    [OIM_NUM_INCLUDES]:   number of included files in the program.
-          int    [OIM_NUM_INHERITED]:  number of inherited programs.
-          int    [OIM_SIZE_INHERITED]: size needed for the inherit structs.
-          int    [OIM_TOTAL_SIZE]:     total size of the program.
-          int    [OIM_DATA_SIZE]:      total size of the values held in the
-                                       object's variables, scaled down
-                                       according to the extend of data
-                                       sharing.
-          int    [OIM_DATA_SIZE_TOTAL]: unmodified total size of the values
-                                       held in the object's variables
-          int    [OIM_NO_INHERIT]:     1 if the program can't be inherited.
-          int    [OIM_NO_CLONE]:       1 if the program/blueprint can't be
-                                       cloned.
-          int    [OIM_NO_SHADOW]:      1 if the program's functions can't be
-                                       shadowed.
-          int    [OIM_SHARE_VARIABLES]:  1 if clones of this program share
-                                       their initial variable values with
-                                       the blueprint.
+     int    [OIM_REF]:            number of references to the program.
+     string [OIM_NAME]:           name of program.
+     int    [OIM_PROG_SIZE]:      size of the program.
+     int    [OIM_NUM_FUNCTIONS]:  number of functions in the program.
+     int    [OIM_SIZE_FUNCTIONS]: size needed for the function structs.
+     int    [OIM_NUM_VARIABLES]:  number of variables in the program.
+     int    [OIM_SIZE_VARIABLES]: size needed for the variable structs.
+     int    [OIM_NUM_STRINGS]:    number of strings in the program.
+     int    [OIM_SIZE_STRINGS]:   size needed for the string pointers.
+     int    [OIM_SIZE_STRINGS_DATA]: size needed for the string data,
+                                  scaled down according to the extend of
+                                  data sharing.
+     int    [OIM_SIZE_STRINGS_TOTAL]: unmodified size needed for the
+                                  string data.
+     int    [OIM_NUM_INCLUDES]:   number of included files in the program.
+     int    [OIM_NUM_INHERITED]:  number of inherited programs.
+     int    [OIM_SIZE_INHERITED]: size needed for the inherit structs.
+     int    [OIM_TOTAL_SIZE]:     total size of the program.
+     int    [OIM_DATA_SIZE]:      total size of the values held in the
+                                  object's variables, scaled down
+                                  according to the extend of data
+                                  sharing.
+     int    [OIM_DATA_SIZE_TOTAL]: unmodified total size of the values
+                                  held in the object's variables
+     int    [OIM_NO_INHERIT]:     1 if the program can't be inherited.
+     int    [OIM_NO_CLONE]:       1 if the program/blueprint can't be
+                                  cloned.
+     int    [OIM_NO_SHADOW]:      1 if the program's functions can't be
+                                  shadowed.
+     int    [OIM_SHARE_VARIABLES]:  1 if clones of this program share
+                                  their initial variable values with
+                                  the blueprint.
 
-          This call swaps in the program if necessary.
-          Note that the OIM_SIZE_xxx entries only give the size spent on
-          the structures and pointers, not the size of the variable data,
-          function code, and strings themselves.
+     This call swaps in the program if necessary.
+     Note that the OIM_SIZE_xxx entries only give the size spent on
+     the structures and pointers, not the size of the variable data,
+     function code, and strings themselves.
+
 
 HISTORY
-        Introduced in LDMud 3.2.6.
-        Changes in LDMud 3.2.7:
-          - new basic result OIB_REPLACED.
-          - basic result OIB_IS_WIZARD is always 0 if set_is_wizard()
-              is not available.
-          - basic result OIB_APPROVED is gone.
-        LDMud 3.2.8 added OIM_DATA_SIZE to the result of OINFO_MEMORY.
-        LDMud 3.2.9 added the index mechanism, OIM_NUM_INCLUDES,
-          OIM_NO_INHERIT, OIM_NO_SHADOW, OIM_NO_CLONE, OIM_SIZE_STRINGS_DATA,
-          OIM_SIZE_STRINGS_TOTAL, and OIM_DATA_SIZE_TOTAL to the result
-          of OINFO_MEMORY.
-        LDMud 3.3.378 added the OIM_SHARE_VARIABLES to the result
-          of OINFO_MEMORY.
-        LDMud 3.3.654 added the OIB_NEXT_CLEANUP to the result of OINFO_BASIC.
+=======
+
+   Introduced in LDMud 3.2.6.
+   Changes in LDMud 3.2.7:
+     - new basic result OIB_REPLACED.
+     - basic result OIB_IS_WIZARD is always 0 if set_is_wizard()
+         is not available.
+     - basic result OIB_APPROVED is gone.
+   LDMud 3.2.8 added OIM_DATA_SIZE to the result of OINFO_MEMORY.
+   LDMud 3.2.9 added the index mechanism, OIM_NUM_INCLUDES,
+     OIM_NO_INHERIT, OIM_NO_SHADOW, OIM_NO_CLONE, OIM_SIZE_STRINGS_DATA,
+     OIM_SIZE_STRINGS_TOTAL, and OIM_DATA_SIZE_TOTAL to the result
+     of OINFO_MEMORY.
+   LDMud 3.3.378 added the OIM_SHARE_VARIABLES to the result
+     of OINFO_MEMORY.
+   LDMud 3.3.654 added the OIB_NEXT_CLEANUP to the result of OINFO_BASIC.
+
 
 SEE ALSO
-        debug_info(E)
+========
+
+   debug_info(E)
diff --git a/doc/sefun/obsolete/exclude_alist b/doc/sefun/obsolete/exclude_alist
index a967a14..5d1aace 100644
--- a/doc/sefun/obsolete/exclude_alist
+++ b/doc/sefun/obsolete/exclude_alist
@@ -1,4 +1,11 @@
-SYNOPSIS:
-	mixed *exclude_alist(int i, mixed *alist)
+
+exclude_alist()
+***************
+
+
+SYNOPSIS
+========
+
+   mixed *exclude_alist(int i, mixed *alist)
 
 Remove element i from alist.
diff --git a/doc/sefun/obsolete/remove_alist b/doc/sefun/obsolete/remove_alist
index cf9bc61..fceac4f 100644
--- a/doc/sefun/obsolete/remove_alist
+++ b/doc/sefun/obsolete/remove_alist
@@ -1,3 +1,7 @@
-mixed *remove_alist(mixed key, mixed *alist)
+
+remove_alist()
+**************
+
+mixed >>*<<remove_alist(mixed key, mixed >>*<<alist)
 
 Removes element associated by key key from alist.
diff --git a/doc/sefun/old_explode b/doc/sefun/old_explode
index 6b13d8e..357e838 100644
--- a/doc/sefun/old_explode
+++ b/doc/sefun/old_explode
@@ -1,28 +1,53 @@
-FUNKTION:
-	string *old_explode(string str, string del)
 
-ARGUMENTE:
-	str - Der String, der aufgespaltet werden soll.
-	del - Der String, nach dem str aufgespalten werden soll.
+old_explode()
+*************
 
-BESCHREIBUNG:
-	Durch Ausschneiden von del wird der String str in ein Array von Strings
-	zerlegt. Dieses Array wird anschliessend zuruckgegeben.
 
-RUECKGABEWERT:
-	Das Array mit den Bestandteilen der Zerlegung.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Das Verhalten von old_explode() entspricht dem dem explode()-Verhalten,
-	das in /doc/efun/explode als "altes" Verhalten bezeichnet wird, d.h.
-	Leerstrings an Anfang und Ende des zerlegten Strings werden entfernt!
+   string *old_explode(string str, string del)
 
-BEISPIELE:
-	strs = explode( "nimm alles", " "); => strs = ({ "nimm", "alles" })
-	strs = explode( "abc", "abc" );     => strs = ({ })
-	strs = explode( "ein test", "" );   => strs = ({ "ein test" })
-	strs = explode( "a b", "a");        => strs = ({ " b" });
 
-SIEHE AUCH:
-	explode(E), new_explode(E), efun::explode(E), sscanf(E)
-        implode(E), regexplode(E)
+ARGUMENTE
+=========
+
+   str - Der String, der aufgespaltet werden soll.
+   del - Der String, nach dem str aufgespalten werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Durch Ausschneiden von del wird der String str in ein Array von Strings
+   zerlegt. Dieses Array wird anschliessend zuruckgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Das Array mit den Bestandteilen der Zerlegung.
+
+
+BEMERKUNGEN
+===========
+
+   Das Verhalten von old_explode() entspricht dem dem explode()-Verhalten,
+   das in /doc/efun/explode als "altes" Verhalten bezeichnet wird, d.h.
+   Leerstrings an Anfang und Ende des zerlegten Strings werden entfernt!
+
+
+BEISPIELE
+=========
+
+   strs = explode( "nimm alles", " "); => strs = ({ "nimm", "alles" })
+   strs = explode( "abc", "abc" );     => strs = ({ })
+   strs = explode( "ein test", "" );   => strs = ({ "ein test" })
+   strs = explode( "a b", "a");        => strs = ({ " b" });
+
+
+SIEHE AUCH
+==========
+
+   explode(E), new_explode(E), efun::explode(E), sscanf(E)
+   implode(E), regexplode(E)
diff --git a/doc/sefun/process_call b/doc/sefun/process_call
index c00a039..cd43faf 100644
--- a/doc/sefun/process_call
+++ b/doc/sefun/process_call
@@ -1,21 +1,38 @@
+
+process_call()
+**************
+
 simul_efun::process_call(E)
-FUNKTION:
-     int process_call()
 
-BESCHREIBUNG:
-     Gibt zurueck, ob die Ausfuehrung zum derzeitigen Zeitpunkt durch
-     process_string() ausgerufen wurde.
 
-BEISPIELE:
-     process_string("@@current_long@@");
-     ...
-     string current_long() {
-      if(process_call())
-       return("Dieser String wurde durch ein process_string eingefuegt.");
-      else return("Du hast die Funktion direkt gerufen!");
-     }
+FUNKTION
+========
 
-SIEHE AUCH:
-     notify_fail(E), process_string(E), replace_personal(E)
+   int process_call()
+
+
+BESCHREIBUNG
+============
+
+   Gibt zurueck, ob die Ausfuehrung zum derzeitigen Zeitpunkt durch
+   process_string() ausgerufen wurde.
+
+
+BEISPIELE
+=========
+
+   process_string("@@current_long@@");
+   ...
+   string current_long() {
+    if(process_call())
+     return("Dieser String wurde durch ein process_string eingefuegt.");
+    else return("Du hast die Funktion direkt gerufen!");
+   }
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_string(E), replace_personal(E)
 
 28. Maerz 2004 Gloinson
diff --git a/doc/sefun/process_string b/doc/sefun/process_string
index 75c9290..fbc7018 100644
--- a/doc/sefun/process_string
+++ b/doc/sefun/process_string
@@ -1,57 +1,77 @@
+
+process_string()
+****************
+
 process_string(E)
-FUNKTION:
-     string process_string(string str)
-     string process_string(closure cl)
-
-BESCHREIBUNG:
-     Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
-     durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
-     durch einen impliziten Funktionsaufruf.
-
-     Der zu ersetzenden Substring hat die Form:
-     @@function[:filename][|argument1|argument2]@@
-
-     Die entsprechende Funktion muss einen String zurueckgeben, oder der
-     process_string() uebergebene String str wird nicht modifiziert.
-
-     process_string() arbeitet nicht rekursiv, object_name und argument sind
-     optionale Werte.
-
-     Falls eine Closure angegeben wurde, wird diese lediglich gerufen
-     und nicht gefiltert.
-
-ANMERKUNGEN:
-     - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
-		   anfangen, '_' ist nicht moeglich!
-     - folgendes Properties und Details werden bei der Abfrage ueber
-       process_string() gefiltert:
-       P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
-       P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
-     - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
-       process_call()
-
-BEISPIEL:
-     // komplette Ersetzung ...
-     SetProp(P_LONG,"@@current_long@@");
-     ...
-     string current_long() {
-      if(x) return(break_string("Die Beschreibung."));
-      else return(break_string("Die andere Beschreibung."));
-     }
-
-     -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
 
 
-     // Teilersetzung
-     SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
-     ...
-     string farbenfun(string str) {
-      return(str+" "+"gelbes");
-     }
+FUNKTION
+========
 
-     -> bei Abfrage: "Ein huebsch gelbes Ding."
+   string process_string(string str)
+   string process_string(closure cl)
 
-SIEHE AUCH:
-     notify_fail(E), process_call(E), replace_personal(E)
+
+BESCHREIBUNG
+============
+
+   Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
+   durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
+   durch einen impliziten Funktionsaufruf.
+
+   Der zu ersetzenden Substring hat die Form:
+   @@function[:filename][|argument1|argument2]@@
+
+   Die entsprechende Funktion muss einen String zurueckgeben, oder der
+   process_string() uebergebene String str wird nicht modifiziert.
+
+   process_string() arbeitet nicht rekursiv, object_name und argument sind
+   optionale Werte.
+
+   Falls eine Closure angegeben wurde, wird diese lediglich gerufen
+   und nicht gefiltert.
+
+
+ANMERKUNGEN
+===========
+
+   - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
+                 anfangen, '_' ist nicht moeglich!
+   - folgendes Properties und Details werden bei der Abfrage ueber
+     process_string() gefiltert:
+     P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
+     P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
+   - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
+     process_call()
+
+
+BEISPIEL
+========
+
+   // komplette Ersetzung ...
+   SetProp(P_LONG,"@@current_long@@");
+   ...
+   string current_long() {
+    if(x) return(break_string("Die Beschreibung."));
+    else return(break_string("Die andere Beschreibung."));
+   }
+
+   -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
+
+
+   // Teilersetzung
+   SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
+   ...
+   string farbenfun(string str) {
+    return(str+" "+"gelbes");
+   }
+
+   -> bei Abfrage: "Ein huebsch gelbes Ding."
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_call(E), replace_personal(E)
 
 22. Nov. 2006 Arathorn
diff --git a/doc/sefun/query_editing b/doc/sefun/query_editing
index 010c98e..32358ed 100644
--- a/doc/sefun/query_editing
+++ b/doc/sefun/query_editing
@@ -1,13 +1,29 @@
+
+query_editing()
+***************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        mixed query_editing(object ob);
+========
+
+   mixed query_editing(object ob);
+
 
 BESCHREIBUNG
-        Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
-        Benutzer mit einer Socketverbindung zum Mud) und gerade mit ed() eine
-        Datei bearbeitet. Wenn ed() mit einem Funktionsnamen als zweites
-        Argument aufgerufen wird, wird das Objekt, aus dem ed() aufgerufen
-        wurde, geliefert, sonst 0.
+============
+
+   Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
+   Benutzer mit einer Socketverbindung zum Mud) und gerade mit ed() eine
+   Datei bearbeitet. Wenn ed() mit einem Funktionsnamen als zweites
+   Argument aufgerufen wird, wird das Objekt, aus dem ed() aufgerufen
+   wurde, geliefert, sonst 0.
+
 
 SIEHE AUCH
-        ed(E)
+==========
+
+   ed(E)
diff --git a/doc/sefun/query_idle b/doc/sefun/query_idle
index 7c0a0a5..7deccee 100644
--- a/doc/sefun/query_idle
+++ b/doc/sefun/query_idle
@@ -1,8 +1,21 @@
+
+query_idle()
+************
+
+
 SYNOPSIS
-        int query_idle(object ob);
+========
+
+   int query_idle(object ob);
+
 
 BESCHREIBUNG
-        Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
+============
+
+   Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
+
 
 SIEHE AUCH
-        interactive(E)
+==========
+
+   interactive(E)
diff --git a/doc/sefun/query_input_pending b/doc/sefun/query_input_pending
index 8033cec..c40c355 100644
--- a/doc/sefun/query_input_pending
+++ b/doc/sefun/query_input_pending
@@ -1,11 +1,27 @@
+
+query_input_pending()
+*********************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        object query_input_pending(object ob);
+========
+
+   object query_input_pending(object ob);
+
 
 BESCHREIBUNG
-        Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
-        Efun das Objekt zurueck, welches den input_to() aufgerfuen hat. Ist
-        kein input_to() haengig, liefert die Funktion 0.
+============
+
+   Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
+   Efun das Objekt zurueck, welches den input_to() aufgerfuen hat. Ist
+   kein input_to() haengig, liefert die Funktion 0.
+
 
 SIEHE AUCH
-        input_to(E), find_input_to(E), input_to_info(E), remove_input_to(E)
+==========
+
+   input_to(E), find_input_to(E), input_to_info(E), remove_input_to(E)
diff --git a/doc/sefun/query_ip_name b/doc/sefun/query_ip_name
index d16298f..76de80f 100644
--- a/doc/sefun/query_ip_name
+++ b/doc/sefun/query_ip_name
@@ -1,12 +1,28 @@
+
+query_ip_name()
+***************
+
+
 GESCHUETZT
+==========
+
+
 SYNOPSIS
-        string query_ip_name(object ob);
+========
+
+   string query_ip_name(object ob);
+
 
 BESCHREIBUNG
-        Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
-        <ob> nicht angegeben wurde. Der IP-Name wird durch den asynchronen
-        Prozess hname ermittelt. Wenn der IP-Name nicht ermittelt werden kann,
-        liefert query_ip_name() die IP-Nummer zurueck.
+============
+
+   Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
+   <ob> nicht angegeben wurde. Der IP-Name wird durch den asynchronen
+   Prozess hname ermittelt. Wenn der IP-Name nicht ermittelt werden kann,
+   liefert query_ip_name() die IP-Nummer zurueck.
+
 
 SIEHE AUCH
-        query_ip_number(E)
+==========
+
+   query_ip_number(E)
diff --git a/doc/sefun/query_ip_number b/doc/sefun/query_ip_number
index a462aba..d09bc88 100644
--- a/doc/sefun/query_ip_number
+++ b/doc/sefun/query_ip_number
@@ -1,24 +1,43 @@
+
+query_ip_number()
+*****************
+
+
 GESCHUETZT
+==========
+
+
 SYNOPSIS
-        string query_ip_number(object ob);
-        string query_ip_number(mixed & ob);
+========
+
+   string query_ip_number(object ob);
+   string query_ip_number(mixed & ob);
+
 
 BESCHREIBUNG
-        Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
-        wenn <ob> nicht angegeben wurde.
+============
 
-        Wenn <ob> als Referenz angegeben wird (dann muss es ein gueltiges
-        Objekt sein), wird dieses bei der Ausgabe auf die struct sockaddr_in
-        gesetzt. struct sockaddr_in ist ein Integer-Array, mit einem Integer
-        pro Adressbyte:
+   Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
+   wenn <ob> nicht angegeben wurde.
 
-            ob[0 .. 1] : sin_family
-            ob[2 .. 3] : sin_port
-            ob[4 .. 7] : sin_addr
-            ob[8 ..15] : nicht definiert.
+   Wenn <ob> als Referenz angegeben wird (dann muss es ein gueltiges
+   Objekt sein), wird dieses bei der Ausgabe auf die struct sockaddr_in
+   gesetzt. struct sockaddr_in ist ein Integer-Array, mit einem Integer
+   pro Adressbyte:
+
+       ob[0 .. 1] : sin_family
+       ob[2 .. 3] : sin_port
+       ob[4 .. 7] : sin_addr
+       ob[8 ..15] : nicht definiert.
+
 
 AENDERUNGEN
-        Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
+===========
+
+   Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
+
 
 SIEHE AUCH
-        query_ip_name(E)
+==========
+
+   query_ip_name(E)
diff --git a/doc/sefun/query_limits b/doc/sefun/query_limits
index 954577a..8af988f 100644
--- a/doc/sefun/query_limits
+++ b/doc/sefun/query_limits
@@ -1,56 +1,82 @@
-DEPRECATED
-SYNOPSIS
-        #include <sys/rtlimits.h>
 
-        int *query_limits();
-        int *query_limits(int default);
+query_limits()
+**************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <sys/rtlimits.h>
+
+   int *query_limits();
+   int *query_limits(int default);
+
 
 BESCHREIBUNG
-        Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
-        die standardmaessigen Laufzeit Limiten, wenn <default> wahr ist.
-        Die Eintraege im gelieferten Array bedeuten:
+============
 
-        int[LIMIT_EVAL]:        die maximalen Eval Kosten
-        int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
-        int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
-        int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
-                                /write_bytes() bearbeitet werden koennen
-        int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
-                                /write_file() bearbeitet werden koennen
-        int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
-        int[LIMIT_COST]:        wie die aktuellen Kosten einzurechnen sind
+   Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
+   die standardmaessigen Laufzeit Limiten, wenn <default> wahr ist.
+   Die Eintraege im gelieferten Array bedeuten:
 
-        Ausser fuer LIMIT_COST ein Limit von '0' (auch LIMIT_UNLIMITED)
-        bedeutet 'keine Limit'.
+   int[LIMIT_EVAL]:        die maximalen Eval Kosten
+   int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
+   int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
+   int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
+                           /write_bytes() bearbeitet werden koennen
+   int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
+                           /write_file() bearbeitet werden koennen
+   int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
+   int[LIMIT_COST]:        wie die aktuellen Kosten einzurechnen sind
 
-        LIMIT_COST hat diese Bedeutungen:
-          
-          wert > 0: Maximal <wert> fuer als Kosten fuer die aktuelle Ausfuehrung
-                    verwendet, ungeachtet wie lange sie tatsaechlich dauert.
-               = 0: ist die derzeite LIMIT_EVAL groesser als die vorherige
-                    LIMIT_EVAL, kostet die aktuelle Ausfuehrung nur 10
-                    Ticks; andernfalls werden die gesamten Kosten angerechnet.
-                < 0: (-wert)% der aktuellen Ausfuehrungskosten werden
-                     angerechnet.
+   Ausser fuer LIMIT_COST ein Limit von '0' (auch LIMIT_UNLIMITED)
+   bedeutet 'keine Limit'.
 
-BEMERKUNGEN:
-        "Aktuelle Kosten" bei LIMIT_COST hat im Falle der Benutzung von
-        limited() die Bedeutung von "im limited verbrauchte Kosten", steuert
-        also, wieviel der im Durchlaufen der Funktion im limited()
-        verbrauchten Ticks mit dem Ende von limited() angezogen wird.
+   LIMIT_COST hat diese Bedeutungen:
+
+
+
+     wert > 0: Maximal <wert> fuer als Kosten fuer die aktuelle Ausfuehrung
+               verwendet, ungeachtet wie lange sie tatsaechlich dauert.
+          = 0: ist die derzeite LIMIT_EVAL groesser als die vorherige
+               LIMIT_EVAL, kostet die aktuelle Ausfuehrung nur 10
+               Ticks; andernfalls werden die gesamten Kosten angerechnet.
+           < 0: (-wert)% der aktuellen Ausfuehrungskosten werden
+                angerechnet.
+
+
+BEMERKUNGEN
+===========
+
+   "Aktuelle Kosten" bei LIMIT_COST hat im Falle der Benutzung von
+   limited() die Bedeutung von "im limited verbrauchte Kosten", steuert
+   also, wieviel der im Durchlaufen der Funktion im limited()
+   verbrauchten Ticks mit dem Ende von limited() angezogen wird.
+
 
 BEISPIELE
-        query_limits()
-        --> liefert die momentan gueltigen Laufzeit Limiten.
-        query_limits(1)
-        --> liefert die standardmaessigen Laufzeit Limiten.
+=========
+
+   query_limits()
+   --> liefert die momentan gueltigen Laufzeit Limiten.
+   query_limits(1)
+   --> liefert die standardmaessigen Laufzeit Limiten.
+
 
 AENDERUNGEN
-        Eingefuehrt in LDMud 3.2.7.
-        LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
+===========
+
+   Eingefuehrt in LDMud 3.2.7.
+   LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
+
 
 SIEHE AUCH
-        limited(E), set_limits(E)
+==========
+
+   limited(E), set_limits(E)
 
 16.05.2007, Zesstra
-
diff --git a/doc/sefun/query_mud_port b/doc/sefun/query_mud_port
index 2e5c6d2..de4c1e2 100644
--- a/doc/sefun/query_mud_port
+++ b/doc/sefun/query_mud_port
@@ -1,23 +1,39 @@
+
+query_mud_port()
+****************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        int query_mud_port(void)
-        int query_mud_port(object user)
-        int query_mud_port(int num)
+========
+
+   int query_mud_port(void)
+   int query_mud_port(object user)
+   int query_mud_port(int num)
+
 
 DESCRIPTION
-        Returns the port number the parser uses for user connections.
+===========
 
-        If no argument is given, the port for this_player() is
-        returned. If this_player() is not existing or not interactive,
-        the first port number open for connections is returned.
+   Returns the port number the parser uses for user connections.
 
-        If an user object is given, the port used for its connection
-        is returned.
-        If a positive number is given, the <num>th port number the
-        parser uses for connections is returned (given that there are
-        that many ports).
-        If -1 is given, the number of ports open for connections is
-        returned.
+   If no argument is given, the port for this_player() is
+   returned. If this_player() is not existing or not interactive,
+   the first port number open for connections is returned.
+
+   If an user object is given, the port used for its connection
+   is returned.
+   If a positive number is given, the <num>th port number the
+   parser uses for connections is returned (given that there are
+   that many ports).
+   If -1 is given, the number of ports open for connections is
+   returned.
+
 
 SEE ALSO
-        query_udp_port(E)
+========
+
+   query_udp_port(E)
diff --git a/doc/sefun/query_next_reset b/doc/sefun/query_next_reset
index 03bbd7e..528ae56 100644
--- a/doc/sefun/query_next_reset
+++ b/doc/sefun/query_next_reset
@@ -1,27 +1,47 @@
+
+query_next_reset()
+******************
+
 simul_efun::query_next_reset(E)
-FUNKTION:
-     varargs int query_next_reset(object ob)
 
-ARGUMENTE:
-     ob - das interessierende Objekt; wenn nicht angegeben, wird 
-          this_object() verwendet
 
-BESCHREIBUNG:
-     Diese sefun gibt den Zeitpunkt des naechsten Resets des Objektes ob 
-     zurueck. Die Angabe erfolgt in Sekunden, die seit dem 01. Januar 1970 
-     00:00:00 GMT verstrichen sind, analog zu time().
+FUNKTION
+========
 
-     In der Regel erfolgt der Reset im naechsten Backend-Zyklus nach dem 
-     Faelligkeitszeitpunkt,  d.h. momentan in den nachfolgenden 2s.
-     Allerdings kann dies auch mal nen Zyklus laenger dauern (4s), wenn der
-     Driver viel zu tun hat.
+   varargs int query_next_reset(object ob)
 
-BEMERKUNGEN:
-     Diese sefun ist object_info()-Abfragen vorzuziehen, da die Parameter und
-     Rueckgabewerte von object_info() bei verschiedenen Gamedriverversionen
-     variieren koennen.
 
-SIEHE AUCH:
-     call_out(E), object_info(E), reset(L), set_next_reset(E), time(E)
+ARGUMENTE
+=========
+
+   ob - das interessierende Objekt; wenn nicht angegeben, wird
+        this_object() verwendet
+
+
+BESCHREIBUNG
+============
+
+   Diese sefun gibt den Zeitpunkt des naechsten Resets des Objektes ob
+   zurueck. Die Angabe erfolgt in Sekunden, die seit dem 01. Januar 1970
+   00:00:00 GMT verstrichen sind, analog zu time().
+
+   In der Regel erfolgt der Reset im naechsten Backend-Zyklus nach dem
+   Faelligkeitszeitpunkt,  d.h. momentan in den nachfolgenden 2s.
+   Allerdings kann dies auch mal nen Zyklus laenger dauern (4s), wenn der
+   Driver viel zu tun hat.
+
+
+BEMERKUNGEN
+===========
+
+   Diese sefun ist object_info()-Abfragen vorzuziehen, da die Parameter und
+   Rueckgabewerte von object_info() bei verschiedenen Gamedriverversionen
+   variieren koennen.
+
+
+SIEHE AUCH
+==========
+
+   call_out(E), object_info(E), reset(L), set_next_reset(E), time(E)
 
 28.07.2014 Arathorn
diff --git a/doc/sefun/query_once_interactive b/doc/sefun/query_once_interactive
index c794223..bfb8b55 100644
--- a/doc/sefun/query_once_interactive
+++ b/doc/sefun/query_once_interactive
@@ -1,8 +1,21 @@
+
+query_once_interactive()
+************************
+
+
 SYNOPSIS
-        int query_once_interactive(object obj);
+========
+
+   int query_once_interactive(object obj);
+
 
 BESCHREIBUNG
-        Wahr, wenn <obj> interaktiv ist oder dies einmal war.
+============
+
+   Wahr, wenn <obj> interaktiv ist oder dies einmal war.
+
 
 SIEHE AUCH
-        remove_interactive(E)
+==========
+
+   remove_interactive(E)
diff --git a/doc/sefun/query_shadowing b/doc/sefun/query_shadowing
index 3ce5d6a..aadf109 100644
--- a/doc/sefun/query_shadowing
+++ b/doc/sefun/query_shadowing
@@ -1,18 +1,38 @@
+
+query_shadowing()
+*****************
+
+
 DEPRECATED
+==========
+
 query_shadowing(E)
-FUNKTION:
-     object query_shadowing(object obj)
 
-BESCHREIBUNG:
-     Die Funktion gibt das derzeit vom Objekt <obj> beschattete Objekt
-     victim oder 0 zurueck.
 
-BEISPIELE:
-     // B beschattet A
-     query_shadowing(find_object(B)) == A
+FUNKTION
+========
 
-SIEHE AUCH:
-     Generell:	     shadow(E), unshadow(E)
-     Rechte:	     query_allow_shadow(M), query_prevent_shadow(L)
+   object query_shadowing(object obj)
 
-23.02.2016, Zesstra
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Die Funktion gibt das derzeit vom Objekt <obj> beschattete Objekt
+   victim oder 0 zurueck.
+
+
+BEISPIELE
+=========
+
+   // B beschattet A
+   query_shadowing(find_object(B)) == A
+
+
+SIEHE AUCH
+==========
+
+   Generell:       shadow(E), unshadow(E)
+   Rechte:         query_allow_shadow(M), query_prevent_shadow(L)
+
+23.02.2016, Zesstra
diff --git a/doc/sefun/query_snoop b/doc/sefun/query_snoop
index 4da8838..94e598a 100644
--- a/doc/sefun/query_snoop
+++ b/doc/sefun/query_snoop
@@ -1,10 +1,26 @@
+
+query_snoop()
+*************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        object query_snoop(object victim)
+========
+
+   object query_snoop(object victim)
+
 
 DESCRIPTION
-        Returns the user who currently snoops victim. The calling
-        object must be privileged by the master object.
+===========
+
+   Returns the user who currently snoops victim. The calling
+   object must be privileged by the master object.
+
 
 SEE ALSO
-        snoop(E)
+========
+
+   snoop(E)
diff --git a/doc/sefun/query_wiz_grp b/doc/sefun/query_wiz_grp
index c45cfe1..fe01fbd 100644
--- a/doc/sefun/query_wiz_grp
+++ b/doc/sefun/query_wiz_grp
@@ -1,15 +1,34 @@
-FUNKTION:
-        query_wiz_grp(string wiz)
-        query_wiz_grp(object wiz)
 
-ARGUMENTE:
-        wiz - Spieler, dessen Magierlevelgruppe ermittelt werden soll
+query_wiz_grp()
+***************
 
-BESCHREIBUNG:
-        Diese Funktion ermittelt die Magiergruppe, der der Spieler wiz angehoert.
 
-RUECKGABEWERT:
-        Die Magierlevelgruppe des Spielers.
+FUNKTION
+========
 
-SIEHE AUCH:
-        /secure/wizlevels.h
+   query_wiz_grp(string wiz)
+   query_wiz_grp(object wiz)
+
+
+ARGUMENTE
+=========
+
+   wiz - Spieler, dessen Magierlevelgruppe ermittelt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt die Magiergruppe, der der Spieler wiz angehoert.
+
+
+RUECKGABEWERT
+=============
+
+   Die Magierlevelgruppe des Spielers.
+
+
+SIEHE AUCH
+==========
+
+   /secure/wizlevels.h
diff --git a/doc/sefun/query_wiz_level b/doc/sefun/query_wiz_level
index 03e89cb..3645035 100644
--- a/doc/sefun/query_wiz_level
+++ b/doc/sefun/query_wiz_level
@@ -1,43 +1,70 @@
-FUNKTION:
-	int query_wiz_level(object ob)
-	int query_wiz_level(string ob)
 
-ARGUMENTE:
-	ob - Der Spieler/das Objekt, dessen Magierlevel ermittelt werden soll.
-       Es kann auch eine UID (z.B. "zesstra", "d.inseln.zesstra") als String
-       uebergeben werden.
+query_wiz_level()
+*****************
 
-BESCHREIBUNG:
-	query_wiz_level() liefert den Magierlevel des Objekts ob zurueck.
-	Normale Spieler haben einen Magierlevel von 0, Seher normalerweise
-  einen von 1 (auf jeden Fall < 10).
-  Objekte bekommen folgende Level:
-  /d/           - 25
-  /p/           - 21
-  /obj/         - 0
-  /std/         - 0
-  /gilden/      - 30
-  /spellbooks/  - 30
-  /players/     - entsprechend Magier, 20 - 111
-  /secure/      - 100
 
-RUECKGABEWERT:
-	Der Magierlevel des Spielers/Objekts.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Wird als Parameter ein String mit einem Spielernamen uebergeben, so 
-	kann auch der Magierlevel eines nicht eingeloggten Spielers heraus-
-	gefunden werden.
+   int query_wiz_level(object ob)
+   int query_wiz_level(string ob)
 
-BEISPIELE:
-	lv = query_wiz_level(find_player("jof"))
-	   => lv = 111, falls Jof eingeloggt ist.
-	lv = query_wiz_level("jof")
-           => lv = 111 in jedem Fall.
 
-SIEHE AUCH:
-	/secure/wizlevels.h
+ARGUMENTE
+=========
 
-LETZTE AeNDERUNG:
+    ob - Der Spieler/das Objekt, dessen Magierlevel ermittelt werden soll.
+   Es kann auch eine UID (z.B. "zesstra", "d.inseln.zesstra") als String
+   uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+         query_wiz_level() liefert den Magierlevel des Objekts ob zurueck.
+         Normale Spieler haben einen Magierlevel von 0, Seher normalerweise
+   einen von 1 (auf jeden Fall < 10).
+   Objekte bekommen folgende Level:
+   /d/           - 25
+   /p/           - 21
+   /obj/         - 0
+   /std/         - 0
+   /gilden/      - 30
+   /spellbooks/  - 30
+   /players/     - entsprechend Magier, 20 - 111
+   /secure/      - 100
+
+
+RUECKGABEWERT
+=============
+
+   Der Magierlevel des Spielers/Objekts.
+
+
+BEMERKUNGEN
+===========
+
+   Wird als Parameter ein String mit einem Spielernamen uebergeben, so
+   kann auch der Magierlevel eines nicht eingeloggten Spielers heraus-
+   gefunden werden.
+
+
+BEISPIELE
+=========
+
+   lv = query_wiz_level(find_player("jof"))
+      => lv = 111, falls Jof eingeloggt ist.
+   lv = query_wiz_level("jof")
+      => lv = 111 in jedem Fall.
+
+
+SIEHE AUCH
+==========
+
+   /secure/wizlevels.h
+
+
+LETZTE AeNDERUNG
+================
+
 15.10.2007, Zesstra
-
diff --git a/doc/sefun/read_data b/doc/sefun/read_data
index b0707ac..1756890 100644
--- a/doc/sefun/read_data
+++ b/doc/sefun/read_data
@@ -1,18 +1,34 @@
+
+read_data()
+***********
+
+
 SYNOPSIS
-        string read_data(string file, int start, int anzahl)
+========
+
+   string read_data(string file, int start, int anzahl)
+
 
 BESCHREIBUNG
-        Diese Funktion macht genau das, was read_file() tut (also siehe dort),
-        allerdings stellt sie sicher, dass <file> immer mit einem /data/
-        beginnt (setzt es also notfalls davor).
-        Es wird also immer irgendwo unterhalb von /data/ gelesen.
+============
+
+   Diese Funktion macht genau das, was read_file() tut (also siehe dort),
+   allerdings stellt sie sicher, dass <file> immer mit einem /data/
+   beginnt (setzt es also notfalls davor).
+   Es wird also immer irgendwo unterhalb von /data/ gelesen.
+
 
 BEISPIEL
-        # read_data("/d/ebene/zesstra/blupp");
-        -> liest das File /data/d/ebene/zesstra/blupp.
-        # read_data("/data/d/ebene/zesstra/blupp");
-        -> tut dasselbe.
+========
+
+   # read_data("/d/ebene/zesstra/blupp");
+   -> liest das File /data/d/ebene/zesstra/blupp.
+   # read_data("/data/d/ebene/zesstra/blupp");
+   -> tut dasselbe.
+
 
 SIEHE AUCH
-        write_data()
-        read_file(E), write_file(E), read_bytes(E), write_file(E)
+==========
+
+   write_data()
+   read_file(E), write_file(E), read_bytes(E), write_file(E)
diff --git a/doc/sefun/replace_personal b/doc/sefun/replace_personal
index 2a18dc7..3804be3 100644
--- a/doc/sefun/replace_personal
+++ b/doc/sefun/replace_personal
@@ -1,84 +1,113 @@
-FUNKTION:
-     varargs string replace_personal(string str, mixed *obs [, int caps]);
 
-DEFINIERT IN:
-     /secure/simul_efun.c
+replace_personal()
+******************
 
-ARGUMENTE:
-     str    - zu bearbeitender String
-     obs    - Liste von Objekt1, Objekt2, ..., Objekt9
-              (Objekte oder Strings)
-     caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
-              0 sonst
 
-BESCHREIBUNG:
-     Ersetzt in Strings
-     @WERx, @WESSENx, @WEMx, @WENx durch
-        Objectx->name(<casus>, 1);
-     @WERUx, @WESSENUx, @WEMUx, @WENUx durch
-        Objectx->name(<casus>);
-     @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
-        Objectx->QueryPronoun(<casus>);
-     @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
-        Objectx->QueryArticle(<casus>, 1, 1);
-     @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
-        Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
-     oder den entsprechenden String bei "Objektx".            
+FUNKTION
+========
 
-BEMERKUNGEN:
-     x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
-     
-     Besonderheiten beim Possessivpronomen (@WERQPPGNx):
-     G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S 
-     oder P) ersetzt werden. 
-     Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
-     besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x 
-     bestimmt.
-     
-RUeCKGABEWERT:
-     durchersetzter String 
-     
-Beispiele:
+   varargs string replace_personal(string str, mixed *obs [, int caps]);
 
-     replace_personal("@WER1", ({find_player("gloinson")}))
-     == "Gloinson"
-     
-     replace_personal("@WEMQP1", ({find_player("gloinson")}))
-     == "ihm"     
-     
-     // unbestimmter und bestimmter Artikel:
-     replace_personal("@WER1 zueckt @WENU2 und verhaut @WEN3.", 
-                      ({find_player("gloinson"),
-                        find_object("/obj/mpa"), 
-                        find_object("/obj/wanderer")}))
-     == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
-     
-     // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ,
-     // Femininum, Plural) auf die Taschen, nicht auf Kessa:
-     replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
-                      "Taschen.", 
-                      ({find_player("kessa"), 
-                        find_player("gloinson")}))
-     == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
 
-     // Ein Beispiel mit laengerem *obs:
-     replace_personal("@WER1 zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
-                      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die "
-                      "@WEN4 haut und die Schuhe in @WEMQPPFS2 Tasche "
-                      "verschwinden laesst. @WERU5 schaut zu und kichert "
-                      "irre. Wenn das @WER6 gesehen haette!",
-                      ({find_player("gloinson"), 
-                        find_player("kessa"),
-                        find_object("/obj/mpa"),                        
-                        "Birne",
-                        find_object("/obj/wanderer"),
-                        find_netdead("jof")}),1)
-     == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so beeindruckt, "
-        "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in ihrer "
-        "Tasche verschwinden laesst. Ein Wanderer schaut zu und kichert "
-        "irre. Wenn das Jof gesehen haette!"
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddCmd(L)
+   /secure/simul_efun.c
 
-05. September 2015, Arathorn
+
+ARGUMENTE
+=========
+
+   str    - zu bearbeitender String
+   obs    - Liste von Objekt1, Objekt2, ..., Objekt9
+            (Objekte oder Strings)
+   caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
+            0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Ersetzt in Strings
+   @WERx, @WESSENx, @WEMx, @WENx durch
+      Objectx->name(<casus>, 1);
+   @WERUx, @WESSENUx, @WEMUx, @WENUx durch
+      Objectx->name(<casus>);
+   @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
+      Objectx->QueryPronoun(<casus>);
+   @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
+      Objectx->QueryArticle(<casus>, 1, 1);
+   @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
+      Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
+   oder den entsprechenden String bei "Objektx".
+
+
+BEMERKUNGEN
+===========
+
+   x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
+
+
+
+   Besonderheiten beim Possessivpronomen (@WERQPPGNx):
+   G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
+   oder P) ersetzt werden.
+   Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
+   besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
+   bestimmt.
+
+
+RUeCKGABEWERT
+=============
+
+   durchersetzter String
+
+Beispiele
+
+   replace_personal("@WER1", ({find_player("gloinson")})) ==
+   "Gloinson"
+
+   replace_personal("@WEMQP1", ({find_player("gloinson")})) == "ihm"
+
+   // unbestimmter und bestimmter Artikel: replace_personal("@WER1
+   zueckt @WENU2 und verhaut @WEN3.",
+
+      ({find_player("gloinson"),
+         find_object("/obj/mpa"), find_object("/obj/wanderer")}))
+
+   == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
+
+   // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ, //
+   Femininum, Plural) auf die Taschen, nicht auf Kessa:
+   replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
+
+      "Taschen.", ({find_player("kessa"),
+
+         find_player("gloinson")}))
+
+   == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
+
+   // Ein Beispiel mit laengerem >>*<<obs: replace_personal("@WER1
+   zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
+
+      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die " "@WEN4
+      haut und die Schuhe in @WEMQPPFS2 Tasche " "verschwinden laesst.
+      @WERU5 schaut zu und kichert " "irre. Wenn das @WER6 gesehen
+      haette!", ({find_player("gloinson"),
+
+         find_player("kessa"), find_object("/obj/mpa"), "Birne",
+         find_object("/obj/wanderer"), find_netdead("jof")}),1)
+
+   == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so
+   beeindruckt, "
+      "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in
+      ihrer " "Tasche verschwinden laesst. Ein Wanderer schaut zu und
+      kichert " "irre. Wenn das Jof gesehen haette!"
+
+
+SIEHE AUCH
+==========
+
+   AddCmd(L)
+
+5. September 2015, Arathorn
diff --git a/doc/sefun/restore_object b/doc/sefun/restore_object
index eac5e01..631252d 100644
--- a/doc/sefun/restore_object
+++ b/doc/sefun/restore_object
@@ -1,18 +1,31 @@
+
+restore_object()
+****************
+
+
 SYNOPSIS
-        mixed restore_object(string name);
+========
+
+   mixed restore_object(string name);
+
 
 BESCHREIBUNG
-        Diese Simul-Efun unterscheidet sich in einigen Details von der
-        Driver-Efun restore_object() (s. auch dort! Wichtig!).
+============
 
-        1. diese sefun restauriert auch die mit F_SAVE markierten Properties
-        eines Objektes, sofern das Savefile von sefun save_object erstellt
-        wurde (was die efun des Driver nicht tut!).
-        2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
-        wird das Savefile als erstes immer unter /data/+name gesucht. Erst wenn es
-        dort nicht gefunden wird, wird unter name gesucht.
+   Diese Simul-Efun unterscheidet sich in einigen Details von der
+   Driver-Efun restore_object() (s. auch dort! Wichtig!).
+
+   1. diese sefun restauriert auch die mit F_SAVE markierten Properties
+   eines Objektes, sofern das Savefile von sefun save_object erstellt
+   wurde (was die efun des Driver nicht tut!).
+   2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
+   wird das Savefile als erstes immer unter /data/+name gesucht. Erst wenn es
+   dort nicht gefunden wird, wird unter name gesucht.
+
 
 SIEHE AUCH
-        save_object(E), restore_object(E), save_value(E)
-29.01.2017, Zesstra
+==========
 
+   save_object(E), restore_object(E), save_value(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sefun/save_object b/doc/sefun/save_object
index 9614685..fc8175f 100644
--- a/doc/sefun/save_object
+++ b/doc/sefun/save_object
@@ -1,22 +1,35 @@
+
+save_object()
+*************
+
+
 SYNOPSIS
-        mixed save_object(string name);
+========
+
+   mixed save_object(string name);
+
 
 BESCHREIBUNG
-        Diese Simul-Efun unterscheidet sich in einigen Details von der
-        Driver-Efun save_object() (s. auch dort! Wichtig!).
-        1. diese sefun speichert auch die mit F_SAVE markierten Properties
-        eines Objektes ab (was die efun des Driver nicht tut!).
-        2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
-        wird /data/ vorangestellt, d.h. das Savefile wird immer unter /data/
-        erstellt.
-        3. das Format, in dem gespeichert wird, kann bei der sefun nicht
-        ausgewaehlt werden (ist aber auch nicht noetig!), sondern ein
-        mudlib-weiter Standard wird benutzt.
-        4. will man nicht in einem File speichern, sondern das, was im File
-        stehen wurde, als String zurueckhaben, muss man 0 als 'name'
-        uebergeben.
+============
+
+   Diese Simul-Efun unterscheidet sich in einigen Details von der
+   Driver-Efun save_object() (s. auch dort! Wichtig!).
+   1. diese sefun speichert auch die mit F_SAVE markierten Properties
+   eines Objektes ab (was die efun des Driver nicht tut!).
+   2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
+   wird /data/ vorangestellt, d.h. das Savefile wird immer unter /data/
+   erstellt.
+   3. das Format, in dem gespeichert wird, kann bei der sefun nicht
+   ausgewaehlt werden (ist aber auch nicht noetig!), sondern ein
+   mudlib-weiter Standard wird benutzt.
+   4. will man nicht in einem File speichern, sondern das, was im File
+   stehen wurde, als String zurueckhaben, muss man 0 als 'name'
+   uebergeben.
+
 
 SIEHE AUCH
-        save_object(E), restore_object(E), save_value(E)
-29.01.2017, Zesstra
+==========
 
+   save_object(E), restore_object(E), save_value(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sefun/send_room b/doc/sefun/send_room
index 24b05fa..7ddf43d 100644
--- a/doc/sefun/send_room
+++ b/doc/sefun/send_room
@@ -1,30 +1,42 @@
-FUNKTION:
+
+send_room()
+***********
+
+
+FUNKTION
+========
+
 varargs void send_room(object|string room, string msg, int msg_type,
-                       string msg_action, string msg_prefix,
-                       object *exclude, object origin)
+   string msg_action, string msg_prefix, object >>*<<exclude, object
+   origin)
 
-BESCHREIBUNG:
-        Sendet msg an alle Objekte in room durch Aufruf von ReceiveMsg() mit
-        den uebergebenen Argumenten.
-        Zur Bedeutung der Argumente siehe Manpage von ReceiveMsg().
 
-        Wenn das Raumobjekt mit seinem Namen angegeben ist, wird das Objekt
-        unter diesem Namen gesucht und und geladen, falls notwendig.
+BESCHREIBUNG
+============
 
-        Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
-        die darin enthaltenen Objekte gesendet wird.
-        Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
-        und diese selbst nicht erhalten soll.
+   Sendet msg an alle Objekte in room durch Aufruf von ReceiveMsg() mit
+   den uebergebenen Argumenten.
+   Zur Bedeutung der Argumente siehe Manpage von ReceiveMsg().
 
-        origin gibt an, welches Objekt die Meldung ausloest (muss nicht das
-        sendende Objekt selber) und wird vor allem fuer die Ignorierepruefung
-        verwendet. Default ist das sendende Objekt.
+   Wenn das Raumobjekt mit seinem Namen angegeben ist, wird das Objekt
+   unter diesem Namen gesucht und und geladen, falls notwendig.
 
-        Letztendlich ist die sefun vergleichbar zu tell_room().
+   Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
+   die darin enthaltenen Objekte gesendet wird.
+   Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
+   und diese selbst nicht erhalten soll.
+
+   origin gibt an, welches Objekt die Meldung ausloest (muss nicht das
+   sendende Objekt selber) und wird vor allem fuer die Ignorierepruefung
+   verwendet. Default ist das sendende Objekt.
+
+   Letztendlich ist die sefun vergleichbar zu tell_room().
+
 
 SIEHE AUCH
-        ReceiveMsg(L)
-        tell_object(E), tell_room(E), say(E), write(E)
+==========
+
+   ReceiveMsg(L)
+   tell_object(E), tell_room(E), say(E), write(E)
 
 13.03.2016, Zesstra
-
diff --git a/doc/sefun/set_heart_beat b/doc/sefun/set_heart_beat
index 837759e..a304181 100644
--- a/doc/sefun/set_heart_beat
+++ b/doc/sefun/set_heart_beat
@@ -1,23 +1,41 @@
+
+set_heart_beat()
+****************
+
+
 SYNOPSIS
-        int set_heart_beat(int flag);
+========
+
+   int set_heart_beat(int flag);
+
 
 BESCHREIBUNG
-        Schaltet den Heartbeat ein (1) oder aus (0). Der Treiber wendet die
-        Lfun heart_beat() auf das aktuelle Objekt alle __HEARTBEAT_INTERVAL__
-        Sekunden an, wenn der Heartbeat eingeschaltet ist. Ein Shadow
-        auf der Lfun wird ignoriert.
-        
-        Der Heartbeat sollte immer ausgeschaltet werden, wenn er nicht
-        gebraucht wird. Das reduziert die Systemauslastung.
+============
 
-        Liefert '1' bei Erfolg, '0' bei Fehler.
+   Schaltet den Heartbeat ein (1) oder aus (0). Der Treiber wendet die
+   Lfun heart_beat() auf das aktuelle Objekt alle __HEARTBEAT_INTERVAL__
+   Sekunden an, wenn der Heartbeat eingeschaltet ist. Ein Shadow
+   auf der Lfun wird ignoriert.
 
-        Das Abschalten eines bereits abgeschalteten Heartbeats (und umgekehrt
-        das Einschalten eines bereits eingeschalteten Heartbeats) zaehlt
-        als Fehler.
+
+
+   Der Heartbeat sollte immer ausgeschaltet werden, wenn er nicht
+   gebraucht wird. Das reduziert die Systemauslastung.
+
+   Liefert '1' bei Erfolg, '0' bei Fehler.
+
+   Das Abschalten eines bereits abgeschalteten Heartbeats (und umgekehrt
+   das Einschalten eines bereits eingeschalteten Heartbeats) zaehlt
+   als Fehler.
+
 
 BEMERKUNGEN
-        __HEARTBEAT_INTERVAL__ ist in MG = 2 Sekunden
+===========
+
+   __HEARTBEAT_INTERVAL__ ist in MG = 2 Sekunden
+
 
 SIEHE AUCH
-        heart_beat(A), call_out(E)
+==========
+
+   heart_beat(A), call_out(E)
diff --git a/doc/sefun/set_light b/doc/sefun/set_light
index 62390c4..b9dfc9c 100644
--- a/doc/sefun/set_light
+++ b/doc/sefun/set_light
@@ -1,17 +1,32 @@
-SYNOPSIS:
-        int set_light(int n)
 
-DESCRIPTION:
-        An object is by default dark. It can be set to not dark by
-        calling set_light(1). The environment will then also get this
-        light. The returned value is the total number of lights in
-        this room. So if you call set_light(0) it will return the
-        light level of the current object.
-        
-        Note that the value of the argument is added to the light of
-        the current object.
+set_light()
+***********
 
-BUGS:
-	This handling of light by the parser is inappropriate for most
-	purposes: If you put a burning candle into a safe, the safe
-	will start to emit light.
+
+SYNOPSIS
+========
+
+   int set_light(int n)
+
+
+DESCRIPTION
+===========
+
+   An object is by default dark. It can be set to not dark by
+   calling set_light(1). The environment will then also get this
+   light. The returned value is the total number of lights in
+   this room. So if you call set_light(0) it will return the
+   light level of the current object.
+
+
+
+   Note that the value of the argument is added to the light of
+   the current object.
+
+
+BUGS
+====
+
+   This handling of light by the parser is inappropriate for most
+   purposes: If you put a burning candle into a safe, the safe
+   will start to emit light.
diff --git a/doc/sefun/set_living_name b/doc/sefun/set_living_name
index 360a3ce..e588e6e 100644
--- a/doc/sefun/set_living_name
+++ b/doc/sefun/set_living_name
@@ -1,25 +1,41 @@
-SYNOPSIS:
-        void set_living_name(string name)
 
-BESCHREIBUNG:
-        Setzt einen "Lebewesennamen" fuer das Objekt, indem Name und Objekt in
-        eine Tabelle eingetragen werden, welche von find_living() durchsucht 
-        wird. Nach Setzen des Namens kann das Objekt per find_living() 
-        gefunden werden.
+set_living_name()
+*****************
 
-        Das Objekt muss ausserdem per enable_commands() als Lebewesen
-        markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
-        _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
-        werden.
 
-        Alle von /std/npc erbenden NPCs setzen ebenfalls automatisch einen
-        LivingName, der lower_case(P_NAME) entspricht.
+SYNOPSIS
+========
 
-        Ein Objekt kann nur einen Namen haben, mit dem es per find_living()
-        gesucht werden kann.
+   void set_living_name(string name)
 
-SIEHE AUCH:
-        find_living(E), find_livings(E), find_player(E), enable_commands(E)
 
-LETZTE AeNDERNG:
+BESCHREIBUNG
+============
+
+   Setzt einen "Lebewesennamen" fuer das Objekt, indem Name und Objekt in
+   eine Tabelle eingetragen werden, welche von find_living() durchsucht
+   wird. Nach Setzen des Namens kann das Objekt per find_living()
+   gefunden werden.
+
+   Das Objekt muss ausserdem per enable_commands() als Lebewesen
+   markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
+   _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
+   werden.
+
+   Alle von /std/npc erbenden NPCs setzen ebenfalls automatisch einen
+   LivingName, der lower_case(P_NAME) entspricht.
+
+   Ein Objekt kann nur einen Namen haben, mit dem es per find_living()
+   gesucht werden kann.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_livings(E), find_player(E), enable_commands(E)
+
+
+LETZTE AeNDERNG
+===============
+
 19.10.2015, Arathorn
diff --git a/doc/sefun/set_object_heart_beat b/doc/sefun/set_object_heart_beat
index a7ba4ef..caecca2 100644
--- a/doc/sefun/set_object_heart_beat
+++ b/doc/sefun/set_object_heart_beat
@@ -1,15 +1,34 @@
-FUNKTION:
-        int set_object_heart_beat(object ob, int on)
 
-ARGUMENTE:
-        ob - Objekt, dessen heart_beat veraendert werden soll
-        on - Soll der heart_beat ein- oder ausgeschaltet werden?
+set_object_heart_beat()
+***********************
 
-BESCHREIBUNG:
-        Der heart_beat des Objektes wird ein- (on=1) oder aus- (on=0) geschaltet.
 
-RUECKGABEWERT:
-        1, wenn das Setzen geklappt hat, ansonsten 0.
+FUNKTION
+========
 
-SIEHE AUCH:
-        set_heart_beat(E), heart_beat(L), call_out(E)
+   int set_object_heart_beat(object ob, int on)
+
+
+ARGUMENTE
+=========
+
+   ob - Objekt, dessen heart_beat veraendert werden soll
+   on - Soll der heart_beat ein- oder ausgeschaltet werden?
+
+
+BESCHREIBUNG
+============
+
+   Der heart_beat des Objektes wird ein- (on=1) oder aus- (on=0) geschaltet.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn das Setzen geklappt hat, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   set_heart_beat(E), heart_beat(L), call_out(E)
diff --git a/doc/sefun/sha1 b/doc/sefun/sha1
index 00bb6cc..ef3b10e 100644
--- a/doc/sefun/sha1
+++ b/doc/sefun/sha1
@@ -1,22 +1,44 @@
+
+sha1()
+******
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        string sha1 (string arg)
-        string sha1 (int *  arg)
+========
+
+   string sha1 (string arg)
+   string sha1 (int *  arg)
+
 
 BESCHREIBUNG
-        Berechnet den SHA1-Hashwert von <arg>.
-        Das Argument kann ein String, oder ein Array von Zahlen sein (von
-        welchen nur das unterste Byte betrachted wird).
+============
+
+   Berechnet den SHA1-Hashwert von <arg>.
+   Das Argument kann ein String, oder ein Array von Zahlen sein (von
+   welchen nur das unterste Byte betrachted wird).
+
 
 BEISPIEL
-        string s;
+========
 
-        s = sha1("Hello");
-        s = sha1( ({ 'H', 'e', 'l', 'l', 'o' })
+   string s;
+
+   s = sha1("Hello");
+   s = sha1( ({ 'H', 'e', 'l', 'l', 'o' })
+
 
 HISTORY
-        Eingefuehrt in LDMud 3.3.523.
-        LDMud 3.3.712 fuehrte Zaehlenarrays als Argument ein.
+=======
+
+   Eingefuehrt in LDMud 3.3.523.
+   LDMud 3.3.712 fuehrte Zaehlenarrays als Argument ein.
+
 
 SIEHE AUCH
-        crypt(E), md5(E)
+==========
+
+   crypt(E), md5(E)
diff --git a/doc/sefun/shadow b/doc/sefun/shadow
index 9309dea..2b7032c 100644
--- a/doc/sefun/shadow
+++ b/doc/sefun/shadow
@@ -1,143 +1,162 @@
-FUNKTION:
-     object shadow(object ob, int flag)
 
-ARGUMENTE:
-     object ob		- das vom shadow betroffene Objekt
-     int flag		- 0 fuer eine Shadow-Existenzabfrage
-                      1 fuer Shadow durch previous_object()
-
-BESCHREIBUNG:
-     Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
-     als Shadow uebergeworfen. Bei Erfolg wird das geshadowte Objekt
-     zurueckgegeben, sonst 0.
-     Wenn <flag> 0 ist, wird entweder 0 oder das geshadowte Objekt
-     zurueck gegeben.
-
-     Wenn ein Objekt A ein Objekt B beschattet, werden alle call_other() fuer
-     B auf A umgeleitet. Wenn die an B gerufene Funktion in A existiert, so
-     wird sie in A gerufen, bei Nichtexistenz in B.
-     A ist das einzige Objekt, welche die beschatteten Funktionen mit 
-     call_other() in B aufrufen kann, selbst B kann nicht per call_other() 
-     diese Funktion rufen.
-     Alle intern verwendeten Funktionen arbeiten jedoch weiterhin normal.
-
-     Das aufrufende Objekt muss vom Master-Objekt die Erlaubnis haben,
-     als Shadow zu wirken.
-
-     Es gibt folgende Kriterien fuer eine erfolgreiche Beschattung:
-     - das zu beschattende Objekt ob:
-       - ist weder ein access_rights-Objekt noch ein ROOT-Objekt
-       - gibt beim Aufruf von query_prevent_shadow(beschatter) eine 0
-         zurueck
-       - beschattet selbst niemanden
-       - hat kein '#pragma no_shadow' gesetzt
-     - der Beschatter:
-       - wird nicht selbst (direkt) beschattet
-       - beschattet noch niemanden (sonst folgt direkter Abbruch)
-       - hat kein environment()
-       - definiert/beschattet keine Methode, die im beschatteten Objekt ob 
-         als nomask definiert ist
-
-     Beschattet man ein Objekt A mit einem Objekt B und dann das Objekt A
-     zusaetzlich mit einem Objekt C, so wird eine Beschattungshierarchie
-     erstellt:
-
-     B macht shadow(A, 1)
-     B->A
-     C macht shadow(A, 1)
-     C->B->A
-
-BEISPIELE:
-     // wenn: B beschattet A, dann
-     shadow(find_object(A), 0) == B
+shadow()
+********
 
 
-     // 3 Objekte beschatten in Hierarchie (liegt auch im Pfad)
-     --- aa.c ---
-     void fun() {
-         printf("%O [a] fun()\n", this_object());
-     }
+FUNKTION
+========
 
-     void fun3() {
-         printf("%O [a] fun3()\n", this_object());
-     }
+   object shadow(object ob, int flag)
 
-     --- bb.c ---
-     int fun() {
-         printf("%O [b] fun()\n", this_object());
-         find_object("/doc/beispiele/shadow/aa")->fun();
-     }
 
-     void fun2() {
-         printf("%O [b] fun2()\n", this_object());
-         find_object("/doc/beispiele/shadow/aa")->fun3();
-         this_object()->fun3();
-     }
+ARGUMENTE
+=========
 
-     void do_shadow(object target) { shadow(target, 1); }
+   object ob          - das vom shadow betroffene Objekt
+   int flag           - 0 fuer eine Shadow-Existenzabfrage
+                    1 fuer Shadow durch previous_object()
 
-     --- cc.c ---
-     int fun() {
-         printf("%O [c] fun()\n", this_object());
-         find_object("/doc/beispiele/shadow/aa")->fun();
-     }
 
-     void fun3() {
-         printf("%O [c] fun3()\n", this_object());
-     }
+BESCHREIBUNG
+============
 
-     void do_shadow(object target) { shadow(target, 1); }
+   Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
+   als Shadow uebergeworfen. Bei Erfolg wird das geshadowte Objekt
+   zurueckgegeben, sonst 0.
+   Wenn <flag> 0 ist, wird entweder 0 oder das geshadowte Objekt
+   zurueck gegeben.
 
-     // darauf arbeitender Code
+   Wenn ein Objekt A ein Objekt B beschattet, werden alle call_other() fuer
+   B auf A umgeleitet. Wenn die an B gerufene Funktion in A existiert, so
+   wird sie in A gerufen, bei Nichtexistenz in B.
+   A ist das einzige Objekt, welche die beschatteten Funktionen mit
+   call_other() in B aufrufen kann, selbst B kann nicht per call_other()
+   diese Funktion rufen.
+   Alle intern verwendeten Funktionen arbeiten jedoch weiterhin normal.
 
-     object a, b, c;
+   Das aufrufende Objekt muss vom Master-Objekt die Erlaubnis haben,
+   als Shadow zu wirken.
 
-     destruct("/doc/beispiele/shadow/aa");
-     a = load_object("/doc/beispiele/shadow/aa");
-     destruct("/doc/beispiele/shadow/bb");
-     b = load_object("/doc/beispiele/shadow/bb");
-     destruct("/doc/beispiele/shadow/cc");
-     c = load_object("/doc/beispiele/shadow/cc");
+   Es gibt folgende Kriterien fuer eine erfolgreiche Beschattung:
+   - das zu beschattende Objekt ob:
+     - ist weder ein access_rights-Objekt noch ein ROOT-Objekt
+     - gibt beim Aufruf von query_prevent_shadow(beschatter) eine 0
+       zurueck
+     - beschattet selbst niemanden
+     - hat kein '#pragma no_shadow' gesetzt
+   - der Beschatter:
+     - wird nicht selbst (direkt) beschattet
+     - beschattet noch niemanden (sonst folgt direkter Abbruch)
+     - hat kein environment()
+     - definiert/beschattet keine Methode, die im beschatteten Objekt ob
+       als nomask definiert ist
 
-     b->do_shadow(a);
-     c->do_shadow(a);
-     printf("--- a->fun() ---\n");
-     a->fun();
-     printf("--- b->fun() ---\n");
-     b->fun();
-     printf("--- c->fun() ---\n");
-     c->fun();
-     printf("--- b->fun2() ---\n");
-     b->fun2();
+   Beschattet man ein Objekt A mit einem Objekt B und dann das Objekt A
+   zusaetzlich mit einem Objekt C, so wird eine Beschattungshierarchie
+   erstellt:
 
-     // ... und seine Ausgabe:
+   B macht shadow(A, 1)
+   B->A
+   C macht shadow(A, 1)
+   C->B->A
 
-     --- a->fun() ---
-     /doc/beispiele/shadow/cc [c] fun()
-     /doc/beispiele/shadow/bb [b] fun()
-     /doc/beispiele/shadow/aa [a] fun()
-     --- b->fun() ---
-     /doc/beispiele/shadow/cc [c] fun()
-     /doc/beispiele/shadow/bb [b] fun()
-     /doc/beispiele/shadow/aa [a] fun()
-     --- c->fun() ---
-     /doc/beispiele/shadow/cc [c] fun()
-     /doc/beispiele/shadow/bb [b] fun()
-     /doc/beispiele/shadow/aa [a] fun()
-     --- b->fun2() ---
-     /doc/beispiele/shadow/bb [b] fun2()
-     /doc/beispiele/shadow/aa [a] fun3()
-     /doc/beispiele/shadow/cc [c] fun3()
 
-     // Der erste Aufruf von b::fun2() in a findet sofort a::fun3()! Der
-     // Driver nimmt an, dass alle Shadows ab c bei Rufen von b nach a
-     // schon ihre Chance hatten.
-     // Der zweite Aufruf allerdings ist auf b und wird beim Durchgeben
-     // an a von c uebernommen.
+BEISPIELE
+=========
 
-SIEHE AUCH:
-     Generell:	     shadow(E)
-     Rechte:	     query_allow_shadow(M), query_prevent_shadow(L)
-     Informationen:  query_shadowing(E)
+   // wenn: B beschattet A, dann
+   shadow(find_object(A), 0) == B
 
-8.Aug 2007 Gloinson
\ No newline at end of file
+
+   // 3 Objekte beschatten in Hierarchie (liegt auch im Pfad)
+   --- aa.c ---
+   void fun() {
+       printf("%O [a] fun()\n", this_object());
+   }
+
+   void fun3() {
+       printf("%O [a] fun3()\n", this_object());
+   }
+
+   --- bb.c ---
+   int fun() {
+       printf("%O [b] fun()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun();
+   }
+
+   void fun2() {
+       printf("%O [b] fun2()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun3();
+       this_object()->fun3();
+   }
+
+   void do_shadow(object target) { shadow(target, 1); }
+
+   --- cc.c ---
+   int fun() {
+       printf("%O [c] fun()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun();
+   }
+
+   void fun3() {
+       printf("%O [c] fun3()\n", this_object());
+   }
+
+   void do_shadow(object target) { shadow(target, 1); }
+
+   // darauf arbeitender Code
+
+   object a, b, c;
+
+   destruct("/doc/beispiele/shadow/aa");
+   a = load_object("/doc/beispiele/shadow/aa");
+   destruct("/doc/beispiele/shadow/bb");
+   b = load_object("/doc/beispiele/shadow/bb");
+   destruct("/doc/beispiele/shadow/cc");
+   c = load_object("/doc/beispiele/shadow/cc");
+
+   b->do_shadow(a);
+   c->do_shadow(a);
+   printf("--- a->fun() ---\n");
+   a->fun();
+   printf("--- b->fun() ---\n");
+   b->fun();
+   printf("--- c->fun() ---\n");
+   c->fun();
+   printf("--- b->fun2() ---\n");
+   b->fun2();
+
+   // ... und seine Ausgabe:
+
+   --- a->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- b->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- c->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- b->fun2() ---
+   /doc/beispiele/shadow/bb [b] fun2()
+   /doc/beispiele/shadow/aa [a] fun3()
+   /doc/beispiele/shadow/cc [c] fun3()
+
+   // Der erste Aufruf von b::fun2() in a findet sofort a::fun3()! Der
+   // Driver nimmt an, dass alle Shadows ab c bei Rufen von b nach a
+   // schon ihre Chance hatten.
+   // Der zweite Aufruf allerdings ist auf b und wird beim Durchgeben
+   // an a von c uebernommen.
+
+
+SIEHE AUCH
+==========
+
+   Generell:       shadow(E)
+   Rechte:         query_allow_shadow(M), query_prevent_shadow(L)
+   Informationen:  query_shadowing(E)
+
+8.Aug 2007 Gloinson
diff --git a/doc/sefun/shout b/doc/sefun/shout
index ead266f..0d38abb 100644
--- a/doc/sefun/shout
+++ b/doc/sefun/shout
@@ -1,69 +1,93 @@
-FUNKTION:
-     varargs void shout( string text, mixed where )
 
-DEFINIERT IN:
-     /secure/simul_efun.c
+shout()
+*******
 
-ARGUMENTE:
-     text
-          Der Text, der ausgegeben werden soll
 
-     where [optional]
-          Wo soll man den Text ueberall hoeren koennen?
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Text 'text' wird an alle Spieler in einem Gebiet ausgegeben.
-     Wird der Parameter 'where' weggelassen bzw. ist er null, so geht der
-     Text an alle Spieler im Mud. Das catch_tell() von NPCs wird nicht
-     ausgeloest.
+   varargs void shout( string text, mixed where )
 
-     Ist 'where' eine Zahl != 0, so wird der Text nur an Spieler ausgegeben,
-     die sich im selben Gebiet aufhalten wie this_player(). Dabei wird die
-     Zugehoerigkeit zum selben Gebiet an den ersten zwei Ebenen des Pfades
-     der Raeume festgemacht. Befindet sich this_player() z.B. in
-     "/d/ebene/irgendwo", so geht der Text an alle Spieler, deren Aufenthalts-
-     orte in "/d/ebene/*" liegen.
 
-     Fuer 'where' kann auch direkt ein Pfad angegeben werden. So wuerde ein
-     'shout( txt, "/players/" )' an alle Spieler gehen, die sich in
-     (eigentlich nicht erwuenschten) Raeumen in /players/* befinden.
+DEFINIERT IN
+============
 
-     Um mit einem Aufruf gleich mehrere Pfade abzudecken, kann auch ein Array
-     von Strings uebergeben werden. Alle Pfade werden als 'regular expression'
-     interpretiert. Dadurch ist es moeglich, die Zielraeume auf einfache Art
-     sehr genau einzuschraenken.
+   /secure/simul_efun.c
 
-     HINWEIS: Bitte ueberleg vor jedem shout() genau, ob es wirklich noetig
-     ist, dass _jeder_ etwas davon mitbekommt oder ob es nicht vielleicht
-     sinnvoller ist, das Zielgebiet etwas einzuschraenken. Im Zweifelsfall
-     sollte der zustaendige RM aufpassen, dass die Spieler nicht durch allzu
-     zahlreiche shouts belaestigt werden.
 
-RUeCKGABEWERT:
-     keiner
+ARGUMENTE
+=========
 
-BEISPIELE:
-     shout( "Du spuerst, wie ein Zittern durch das MorgenGrauen geht.\n" );
-        Der allseits bekannte Text wird an alle Spieler im MG ausgegeben.
+   text
+        Der Text, der ausgegeben werden soll
 
-     shout( "Du hoerst eine gewaltige Explosion.\n", 1 );
-        Von der Explosion bekommen alle Spieler in derselben Gegend etwas mit,
-        aber nicht am anderen Ende des Muds.
+   where [optional]
+        Wo soll man den Text ueberall hoeren koennen?
 
-     shout( "Irgendwo ist ein Baum umgefallen.\n", "/d/vland/" );
-        ... gibt eine Meldung aus, die keinen wirklich interessiert. Aber es
-        trifft eh nur Leute in einem unwichtigen Teil des MorgenGrauen. ;-)
 
-     shout( "Aufwachen Du Idler!\n", "/players/.*/workroom" );
-        Mit Hilfe von regular expressions kann man recht einfach z.B. alle
-        Workrooms auf einmal adressieren.
+BESCHREIBUNG
+============
 
-     shout( "Halloooooo, Echoooooo!\n", ({ "/d/gebirge/", "/d/ebene/" }) );
-        Wenn der Spieler hoch oben auf dem Berg laut genug ruft, hoert man
-        ihn auch noch weit in der Ebene.
+   Der Text 'text' wird an alle Spieler in einem Gebiet ausgegeben.
+   Wird der Parameter 'where' weggelassen bzw. ist er null, so geht der
+   Text an alle Spieler im Mud. Das catch_tell() von NPCs wird nicht
+   ausgeloest.
 
-SIEHE AUCH:
-     write(), say(), tell_object(), tell_room(), regexp()
+   Ist 'where' eine Zahl != 0, so wird der Text nur an Spieler ausgegeben,
+   die sich im selben Gebiet aufhalten wie this_player(). Dabei wird die
+   Zugehoerigkeit zum selben Gebiet an den ersten zwei Ebenen des Pfades
+   der Raeume festgemacht. Befindet sich this_player() z.B. in
+   "/d/ebene/irgendwo", so geht der Text an alle Spieler, deren Aufenthalts-
+   orte in "/d/ebene/*" liegen.
 
-----------------------------------------------------------------------------
+   Fuer 'where' kann auch direkt ein Pfad angegeben werden. So wuerde ein
+   'shout( txt, "/players/" )' an alle Spieler gehen, die sich in
+   (eigentlich nicht erwuenschten) Raeumen in /players/* befinden.
+
+   Um mit einem Aufruf gleich mehrere Pfade abzudecken, kann auch ein Array
+   von Strings uebergeben werden. Alle Pfade werden als 'regular expression'
+   interpretiert. Dadurch ist es moeglich, die Zielraeume auf einfache Art
+   sehr genau einzuschraenken.
+
+   HINWEIS: Bitte ueberleg vor jedem shout() genau, ob es wirklich noetig
+   ist, dass _jeder_ etwas davon mitbekommt oder ob es nicht vielleicht
+   sinnvoller ist, das Zielgebiet etwas einzuschraenken. Im Zweifelsfall
+   sollte der zustaendige RM aufpassen, dass die Spieler nicht durch allzu
+   zahlreiche shouts belaestigt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   shout( "Du spuerst, wie ein Zittern durch das MorgenGrauen geht.\n" );
+      Der allseits bekannte Text wird an alle Spieler im MG ausgegeben.
+
+   shout( "Du hoerst eine gewaltige Explosion.\n", 1 );
+      Von der Explosion bekommen alle Spieler in derselben Gegend etwas mit,
+      aber nicht am anderen Ende des Muds.
+
+   shout( "Irgendwo ist ein Baum umgefallen.\n", "/d/vland/" );
+      ... gibt eine Meldung aus, die keinen wirklich interessiert. Aber es
+      trifft eh nur Leute in einem unwichtigen Teil des MorgenGrauen. ;-)
+
+   shout( "Aufwachen Du Idler!\n", "/players/.*/workroom" );
+      Mit Hilfe von regular expressions kann man recht einfach z.B. alle
+      Workrooms auf einmal adressieren.
+
+   shout( "Halloooooo, Echoooooo!\n", ({ "/d/gebirge/", "/d/ebene/" }) );
+      Wenn der Spieler hoch oben auf dem Berg laut genug ruft, hoert man
+      ihn auch noch weit in der Ebene.
+
+
+SIEHE AUCH
+==========
+
+   write(), say(), tell_object(), tell_room(), regexp()
+
 Last modified: Sun Nov 28 03:00:00 1999 by Tiamak
diff --git a/doc/sefun/time2string b/doc/sefun/time2string
index 4dae719..4acd1a2 100644
--- a/doc/sefun/time2string
+++ b/doc/sefun/time2string
@@ -1,53 +1,75 @@
-FUNKTION:
-	string time2string( string format, int time )
-	
-ARGUMENTE:
-	format: String, der das Format der Zeitausgabe festlegt.
-	time: Eine Anzahl von Sekunden, die ausgegeben werden soll.
 
-ERGEBNIS:
-	Zeit in String-Form.
+time2string()
+*************
 
-BESCHREIBUNG:
-	Der Formatstring wird zurueckgegeben, wobei bestimmte Ersetzungs-
-	symbole durch passende Daten, die aus der Zeit berechnet werden,
-	ersetzt werden. Die Ersetzungssymbole funktionieren aehnlich
-	denen aus 'printf' bekannten Symbolen. Insbesondere kann eine
-	Feldbreite mit angegeben werden.
 
-	Folgende Ersetzungssymbole sind erlaubt:
-	%%	wird durch ein Prozent (%) ersetzt.
-	%n, %w, %d, %h, %m, %s
-		  werden durch die Anzahl der Monate, Wochen, Tage, Stunden, Minuten oder
-      Sekunden ersetzt. Die Funktion erkennt, welches die groesste benutzte
-		  Zeiteinheit ist und rechnet die keineren so um, dass sie zwischen 0 und
-      jeweiligen Maximum der Zeiteinheit liegen (59, 23 etc.) liegen.
- 	%N	wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
-      je nachdem welchen Wertd %n haette.
- 	%W	wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
-		  je nachdem welchen Wert %w haette.
-	%D	wird durch die Worte 'Tag' oder 'Tage' ersetzt,
-		  je nachdem welchen Wert %d haette.
-	%H,%M,%S
-		  werden durch die Worte 'Stunde(n)', 'Minute(n)' bzw. 'Sekunde(n)'
-      ersetzt.
-	%X	wird durch die groesste Zeiteinheit ersetzt, die nicht Null ist. Wenn
-      bei %X die Feldbreite 0 angegeben wird (also %0X), dann wird nicht der
-      ausgeschriebene Name, sonder eine Abkuerzung fuer die Zeiteinheit
-      ausgegeben. (Das sind dann 'd','h','m' oder 's'.)
-	%x	wird durch den numerischen Wert dieser Zeiteinheit
-		  ersetzt.
-			
-BEISPIELE:
-	time2string( "%m %M", 60 ) -> "1 Minute"
-	time2string( "%m %M", 120 ) -> "2 Minuten"
-	time2string( "%s %S", 125 ) -> "125 Sekunden"
-	time2string( "%m %M und %s %S" ) -> "2 Minuten und 5 Sekunden"
-	time2string( "%d:%02h:%02m:%02s", 10000 ) -> "0:02:46:40"
-	time2string( "%x %X", 3600 ) -> "1 Stunde"
-	time2string( "%x %0X", 3600 ) -> "1 h"
-	time2string( "%x %X", 360000 ) -> "4 Tage"
-	time2string( "%x %0X", 360000 ) -> "4 d"
+FUNKTION
+========
 
-SIEHE AUCH:
-	sprintf(E)
+   string time2string( string format, int time )
+
+
+ARGUMENTE
+=========
+
+   format: String, der das Format der Zeitausgabe festlegt.
+   time: Eine Anzahl von Sekunden, die ausgegeben werden soll.
+
+
+ERGEBNIS
+========
+
+   Zeit in String-Form.
+
+
+BESCHREIBUNG
+============
+
+     Der Formatstring wird zurueckgegeben, wobei bestimmte Ersetzungs-
+     symbole durch passende Daten, die aus der Zeit berechnet werden,
+     ersetzt werden. Die Ersetzungssymbole funktionieren aehnlich
+     denen aus 'printf' bekannten Symbolen. Insbesondere kann eine
+     Feldbreite mit angegeben werden.
+
+     Folgende Ersetzungssymbole sind erlaubt:
+     %%      wird durch ein Prozent (%) ersetzt.
+     %n, %w, %d, %h, %m, %s
+               werden durch die Anzahl der Monate, Wochen, Tage, Stunden, Minuten oder
+   Sekunden ersetzt. Die Funktion erkennt, welches die groesste benutzte
+               Zeiteinheit ist und rechnet die keineren so um, dass sie zwischen 0 und
+   jeweiligen Maximum der Zeiteinheit liegen (59, 23 etc.) liegen.
+     %N      wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
+   je nachdem welchen Wertd %n haette.
+     %W      wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
+               je nachdem welchen Wert %w haette.
+     %D      wird durch die Worte 'Tag' oder 'Tage' ersetzt,
+               je nachdem welchen Wert %d haette.
+     %H,%M,%S
+               werden durch die Worte 'Stunde(n)', 'Minute(n)' bzw. 'Sekunde(n)'
+   ersetzt.
+     %X      wird durch die groesste Zeiteinheit ersetzt, die nicht Null ist. Wenn
+   bei %X die Feldbreite 0 angegeben wird (also %0X), dann wird nicht der
+   ausgeschriebene Name, sonder eine Abkuerzung fuer die Zeiteinheit
+   ausgegeben. (Das sind dann 'd','h','m' oder 's'.)
+     %x      wird durch den numerischen Wert dieser Zeiteinheit
+               ersetzt.
+
+
+BEISPIELE
+=========
+
+   time2string( "%m %M", 60 ) -> "1 Minute"
+   time2string( "%m %M", 120 ) -> "2 Minuten"
+   time2string( "%s %S", 125 ) -> "125 Sekunden"
+   time2string( "%m %M und %s %S" ) -> "2 Minuten und 5 Sekunden"
+   time2string( "%d:%02h:%02m:%02s", 10000 ) -> "0:02:46:40"
+   time2string( "%x %X", 3600 ) -> "1 Stunde"
+   time2string( "%x %0X", 3600 ) -> "1 h"
+   time2string( "%x %X", 360000 ) -> "4 Tage"
+   time2string( "%x %0X", 360000 ) -> "4 d"
+
+
+SIEHE AUCH
+==========
+
+   sprintf(E)
diff --git a/doc/sefun/update_actions b/doc/sefun/update_actions
index b28cf9f..b25c07c 100644
--- a/doc/sefun/update_actions
+++ b/doc/sefun/update_actions
@@ -1,38 +1,63 @@
-FUNKTION:
-        void update_actions()
 
-ARGUMENTE:
-        keine
+update_actions()
+****************
 
-BESCHREIBUNG:
-        Falls eine Aktion ein add_action() ausgeloest hat, werden mit dieser
-        Funktion die neuen Befehle bei allen Lebewesen im aufrufenden Objekt
-        bzw. in der Umgebung des aufrufenden Objektes aktiv.
 
-RUECKGABEWERT:
-        keiner
+FUNKTION
+========
 
-BEMERKUNGEN:
-        Diese Funktion wird eigentlich nur benoetigt, wenn man mit add_action()
-        anstelle von AddCmd() arbeitet (zB. bei Objekten, die nicht
-        /std/thing/commands inheriten).
+   void update_actions()
 
-BEISPIELE:
-        /* Normalerweise sollte man es SO gerade nicht machen. Stattdessen
-         * sollte die "kletter"-Funktion pruefen, ob die Luke geoeffnet ist, 
-         * und sich im Fehlerfall beschweren.
-         * So aber dient es als schoenes Beispiel fuer update_actions() ;)
-         */
-        int oeffne(string str)
-        {
-          if( str == "luke" ) {
-            write( "Du oeffnest die Luke. Du kannst jetzt nach unten klettern.\n");
-            add_action("kletter", "kletter", 1);
-            update_actions();
-            return 1;
-          }
-          return 0;
-        }
 
-SIEHE AUCH:
-  add_action(E), AddCmd(L), RemoveCmd(L)
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Falls eine Aktion ein add_action() ausgeloest hat, werden mit dieser
+   Funktion die neuen Befehle bei allen Lebewesen im aufrufenden Objekt
+   bzw. in der Umgebung des aufrufenden Objektes aktiv.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird eigentlich nur benoetigt, wenn man mit add_action()
+   anstelle von AddCmd() arbeitet (zB. bei Objekten, die nicht
+   /std/thing/commands inheriten).
+
+
+BEISPIELE
+=========
+
+   /* Normalerweise sollte man es SO gerade nicht machen. Stattdessen
+    * sollte die "kletter"-Funktion pruefen, ob die Luke geoeffnet ist,
+    * und sich im Fehlerfall beschweren.
+    * So aber dient es als schoenes Beispiel fuer update_actions() ;)
+    */
+   int oeffne(string str)
+   {
+     if( str == "luke" ) {
+       write( "Du oeffnest die Luke. Du kannst jetzt nach unten klettern.\n");
+       add_action("kletter", "kletter", 1);
+       update_actions();
+       return 1;
+     }
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   add_action(E), AddCmd(L), RemoveCmd(L)
diff --git a/doc/sefun/upperstring b/doc/sefun/upperstring
index 665ed16..416c90d 100644
--- a/doc/sefun/upperstring
+++ b/doc/sefun/upperstring
@@ -1,17 +1,39 @@
-FUNKTION:
-	string upperstring(string str)
 
-ARGUMENTE:
-	str - Der umzuwandelnde String.
+upperstring()
+*************
 
-BESCHREIBUNG:
-	Alle Kleinbuchstaben in str werden in Grossbuchstaben umgewandelt.
 
-RUECKGABEWERT:
-	Der umgewandelte String.
+FUNKTION
+========
 
-BEISPIELE:
-	s = upperstring( "Na, Sterblicher!\n") => s = "NA, STERBLICHER!\n"
+   string upperstring(string str)
 
-SIEHE AUCH:
-	lowerstring(E), lower_case(E), capitalize(E)
+
+ARGUMENTE
+=========
+
+   str - Der umzuwandelnde String.
+
+
+BESCHREIBUNG
+============
+
+   Alle Kleinbuchstaben in str werden in Grossbuchstaben umgewandelt.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgewandelte String.
+
+
+BEISPIELE
+=========
+
+   s = upperstring( "Na, Sterblicher!\n") => s = "NA, STERBLICHER!\n"
+
+
+SIEHE AUCH
+==========
+
+   lowerstring(E), lower_case(E), capitalize(E)
diff --git a/doc/sefun/uptime b/doc/sefun/uptime
index ee7a536..4c007a3 100644
--- a/doc/sefun/uptime
+++ b/doc/sefun/uptime
@@ -1,16 +1,37 @@
-FUNKTION:
-        string uptime()
 
-ARGUMENTE:
-        keine
+uptime()
+********
 
-BESCHREIBUNG:
-        Liefert die aktuelle Uptime des MorgenGrauens.
 
-RUECKGABEWERT:
-        Die Uptime als Zeitstring.
+FUNKTION
+========
 
-BEISPIELE:
-        ut = uptime() => ut = "14 Tage, 9 Stunden, 3 Minuten und 7 Sekunden."
+   string uptime()
 
-SIEHE AUCH:
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert die aktuelle Uptime des MorgenGrauens.
+
+
+RUECKGABEWERT
+=============
+
+   Die Uptime als Zeitstring.
+
+
+BEISPIELE
+=========
+
+   ut = uptime() => ut = "14 Tage, 9 Stunden, 3 Minuten und 7 Sekunden."
+
+
+SIEHE AUCH
+==========
diff --git a/doc/sefun/wizlist b/doc/sefun/wizlist
index a2ba7bd..f81b9b8 100644
--- a/doc/sefun/wizlist
+++ b/doc/sefun/wizlist
@@ -1,66 +1,84 @@
-SYNOPSIS:
-  varargs void wizlist(string name, int sortkey ) 	
 
-DESCRIPTION:
-  wizlist() liefert eine Liste mit verschiedenen Verbrauchsdaten 
-	zu Magiern. Es werden dabei normalerweise 21 Eintraege ausgegeben:
-  10 vor <name>, <name> selbst und 10 nach <name>.
+wizlist()
+*********
 
-  Die Liste ist dabei folgendermassen aufgebaut:
 
-	1. WL_NAME
-	   Gesammelt werden die Daten pro UID. Hierbei zaehlt aber jede EUID, nicht
-     nur die von Magiern.
-     Das heisst, Objekte unter /d/polar/vanion/eispalast
-	   werden nicht unter "vanion" sondern unter "d.polar.vanion"
-	   abgerechnet.
+SYNOPSIS
+========
 
-	2. WL_COMMANDS
-     Anzahl der diesem Objekt zugeordneten commands.
+   varargs void wizlist(string name, int sortkey )
 
-	3. WL_COMMANDS * 100 / total_cmd 
-     Prozentualer Anteil an den gesamt verbrauchten commands.
 
-	4. WL_COST (links in der eckigen Klammer)
-     Anzahl der verbrauchten eval ticks. Dies ist zeitlich gewichtet, d.h.
-     nimmt im Lauf der Zeit ab, wenn nichts mehr dazu kommt.
+DESCRIPTION
+===========
 
-  5. WL_TOTAL_GIGACOST (rechts in der eckigen Klammer)
-     Anzahl der insgesamt verbrauchten eval ticks in Giga-Ticks.
-     Nicht zeitlich gewichtet.
+   wizlist() liefert eine Liste mit verschiedenen Verbrauchsdaten
+         zu Magiern. Es werden dabei normalerweise 21 Eintraege ausgegeben:
+   10 vor <name>, <name> selbst und 10 nach <name>.
 
-	6. WL_HEART_BEATS
-     Anzahl der ausgeloesten heart beats.
-  
-  7. WL_ARRAY_TOTAL
+   Die Liste ist dabei folgendermassen aufgebaut:
 
-  8. WL_MAPPING_TOTAL
+         1. WL_NAME
+            Gesammelt werden die Daten pro UID. Hierbei zaehlt aber jede EUID, nicht
+      nur die von Magiern.
+      Das heisst, Objekte unter /d/polar/vanion/eispalast
+            werden nicht unter "vanion" sondern unter "d.polar.vanion"
+            abgerechnet.
 
-PARAMETERS: 
-  Wird name angegeben, wird erzwungen, dass die erwaehnte EUID mit
-  in der Liste dargestellt wird. Wird name nicht angegeben, wird es
-  automatisch auf this_player()->query_real_name() gesetzt.
+         2. WL_COMMANDS
+      Anzahl der diesem Objekt zugeordneten commands.
 
-  Wird als name "TOP100" angegeben, wird die Top-100-Liste ausgegeben.
+         3. WL_COMMANDS * 100 / total_cmd
+      Prozentualer Anteil an den gesamt verbrauchten commands.
 
-  Wird als name "ALL" angegeben, wird die vollstaendige Liste aus-
-  gegeben.
+         4. WL_COST (links in der eckigen Klammer)
+      Anzahl der verbrauchten eval ticks. Dies ist zeitlich gewichtet, d.h.
+      nimmt im Lauf der Zeit ab, wenn nichts mehr dazu kommt.
 
-  Durch Angabe von sortkey kann die Liste nach einer der Spalten 
-  sortiert werden. Gueltige Werte sind die in /sys/wizlist.h ange-
-  gebenen Defines.
-	
-EXAMPLE: 
-  > xeval wizlist("vanion", WL_HEART_BEATS)
-      Erzwingt Vanions Eintrag in der Liste und sortiert die Liste anhand
-      der durch die EUIDs ausgefuehrten heart beats.
+   5. WL_TOTAL_GIGACOST (rechts in der eckigen Klammer)
+      Anzahl der insgesamt verbrauchten eval ticks in Giga-Ticks.
+      Nicht zeitlich gewichtet.
 
-  > xeval wizlist("ALL", WL_EVAL_COST)
+         6. WL_HEART_BEATS
+      Anzahl der ausgeloesten heart beats.
+
+
+
+   7. WL_ARRAY_TOTAL
+
+   8. WL_MAPPING_TOTAL
+
+PARAMETERS:
+   Wird name angegeben, wird erzwungen, dass die erwaehnte EUID mit in
+   der Liste dargestellt wird. Wird name nicht angegeben, wird es
+   automatisch auf this_player()->query_real_name() gesetzt.
+
+   Wird als name "TOP100" angegeben, wird die Top-100-Liste
+   ausgegeben.
+
+   Wird als name "ALL" angegeben, wird die vollstaendige Liste aus-
+   gegeben.
+
+   Durch Angabe von sortkey kann die Liste nach einer der Spalten
+   sortiert werden. Gueltige Werte sind die in /sys/wizlist.h ange-
+   gebenen Defines.
+
+EXAMPLE
+   > xeval wizlist("vanion", WL_HEART_BEATS)
+      Erzwingt Vanions Eintrag in der Liste und sortiert die Liste
+      anhand der durch die EUIDs ausgefuehrten heart beats.
+
+   > xeval wizlist("ALL", WL_EVAL_COST)
       Zeigt die komplette Liste nach eval ticks-Verbauch sortiert an.
 
-SEE ALSO:
-      wizlist_info(E)
 
-LAST UPDATED:
-  09.05.2015, Zesstra
+SEE ALSO
+========
 
+   wizlist_info(E)
+
+
+LAST UPDATED
+============
+
+   09.05.2015, Zesstra
diff --git a/doc/sefun/wizlist_info b/doc/sefun/wizlist_info
index 2a5c127..0c86434 100644
--- a/doc/sefun/wizlist_info
+++ b/doc/sefun/wizlist_info
@@ -1,39 +1,58 @@
-GESCHUETZT
-SYNOPSIS
-        #include <sys/wizlist.h>
 
-        *mixed wizlist_info();
+wizlist_info()
+**************
+
+
+GESCHUETZT
+==========
+
+
+SYNOPSIS
+========
+
+   #include <sys/wizlist.h>
+
+   *mixed wizlist_info();
+
 
 BESCHREIBUNG
-        Liefert ein Array mit Eintraegen aus der Wizlist (der internen
-        Magierliste). Die Benutzung muss durch das Masterobjekt erlaubt
-        werden.
+============
 
-        Das Resultat ist ein Array mit einem Eintrag fuer jeden Magier (uid).
-        Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
+   Liefert ein Array mit Eintraegen aus der Wizlist (der internen
+   Magierliste). Die Benutzung muss durch das Masterobjekt erlaubt
+   werden.
 
-            string  w[WL_NAME]          Name des Magiers
-            int w[WL_COMMANDS]          Gewichtete Anzahl Kommandi, die von
-                                        Objekten dieses Gottes ausgefuehrt
-                                        wurden
-            int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
-            int w[WL_GIGACOST]          Gewichtete Summe der Eval-Kosten
-            int W[WL_TOTAL_COST]        Totale Summe der Eval-Kosten
-            int w[WL_TOTAL_GIGACOST]    Totale Summe der Eval-Kosten
-            int w[WL_HEART_BEAT]        Gewichtete Anzahl der heat_beat()s
-            int w[WL_CALL_OUT]          Reserviert fuer call_out()s
-                                        (bisher nicht implementiert)
-            int w[WL_ARRAY_TOTAL]       Totale Groesse aller Arrays in
-                                        Elementen
-            mixed w[WL_EXTRA]           Die eigentliche Wizlist-Info
+   Das Resultat ist ein Array mit einem Eintrag fuer jeden Magier (uid).
+   Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
 
-        Die "gewichteten" Werte verfallen pro Stunde um 10%.
+       string  w[WL_NAME]          Name des Magiers
+       int w[WL_COMMANDS]          Gewichtete Anzahl Kommandi, die von
+                                   Objekten dieses Gottes ausgefuehrt
+                                   wurden
+       int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
+       int w[WL_GIGACOST]          Gewichtete Summe der Eval-Kosten
+       int W[WL_TOTAL_COST]        Totale Summe der Eval-Kosten
+       int w[WL_TOTAL_GIGACOST]    Totale Summe der Eval-Kosten
+       int w[WL_HEART_BEAT]        Gewichtete Anzahl der heat_beat()s
+       int w[WL_CALL_OUT]          Reserviert fuer call_out()s
+                                   (bisher nicht implementiert)
+       int w[WL_ARRAY_TOTAL]       Totale Groesse aller Arrays in
+                                   Elementen
+       mixed w[WL_EXTRA]           Die eigentliche Wizlist-Info
+
+   Die "gewichteten" Werte verfallen pro Stunde um 10%.
+
 
 AENDERUNGEN
-        LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
-        um laengeren Uptimes gerecht zu werden. Ausserdem wurde
-        WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
+===========
+
+   LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
+   um laengeren Uptimes gerecht zu werden. Ausserdem wurde
+   WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
+
 
 SIEHE AUCH
-        privilege_violation(M), set_extra_wizinfo_size(E),
-        get_extra_wizinfo(E), set_extra_wizinfo(E)
+==========
+
+   privilege_violation(M), set_extra_wizinfo_size(E),
+   get_extra_wizinfo(E), set_extra_wizinfo(E)
diff --git a/doc/sefun/write_data b/doc/sefun/write_data
index 5a205d5..b8f0d4f 100644
--- a/doc/sefun/write_data
+++ b/doc/sefun/write_data
@@ -1,23 +1,39 @@
+
+write_data()
+************
+
+
 SYNOPSIS
-        string write_data(string file, int start, int anzahl)
+========
+
+   string write_data(string file, int start, int anzahl)
+
 
 BESCHREIBUNG
-        Diese Funktion macht genau das, was write_file() tut (also siehe dort),
-        allerdings stellt sie sicher, dass <file> immer mit einem /data/
-        beginnt (setzt es also notfalls davor).
-        Es wird also immer irgendwo unterhalb von /data/ geschrieben.
+============
 
-        Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
-        ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
-        Code getrennt abgelegt sind. Dies vereinfacht z.B. die
-        Datensicherung.
+   Diese Funktion macht genau das, was write_file() tut (also siehe dort),
+   allerdings stellt sie sicher, dass <file> immer mit einem /data/
+   beginnt (setzt es also notfalls davor).
+   Es wird also immer irgendwo unterhalb von /data/ geschrieben.
+
+   Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
+   ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
+   Code getrennt abgelegt sind. Dies vereinfacht z.B. die
+   Datensicherung.
+
 
 BEISPIEL
-        # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
-        -> schreibt in das File /data/d/ebene/zesstra/blupp.
-        # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
-        -> tut dasselbe.
+========
+
+   # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
+   -> schreibt in das File /data/d/ebene/zesstra/blupp.
+   # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
+   -> tut dasselbe.
+
 
 SIEHE AUCH
-        read_data()
-        read_file(E), write_file(E), read_bytes(E), write_file(E)
+==========
+
+   read_data()
+   read_file(E), write_file(E), read_bytes(E), write_file(E)
diff --git a/doc/sphinx/man/index b/doc/sphinx/man/index
new file mode 100644
index 0000000..b2693f9
--- /dev/null
+++ b/doc/sphinx/man/index
@@ -0,0 +1,21 @@
+
+Willkommen bei der Morgengrauen-Mudlib - Dokumentation!
+*******************************************************
+
+Inhalt:
+
+* sefuns (simulated efuns)
+
+* Properties
+
+* lfuns
+
+
+Indices and tables
+******************
+
+* *Index*
+
+* *Module Index*
+
+* *Search Page*
diff --git a/doc/sphinx/man/lfun-liste b/doc/sphinx/man/lfun-liste
new file mode 100644
index 0000000..63c3862
--- /dev/null
+++ b/doc/sphinx/man/lfun-liste
@@ -0,0 +1,871 @@
+
+Verzeichnis der dokumentierten lfuns
+************************************
+
+* AddAction()
+
+* AddAdjective()
+
+* AddAmount()
+
+* AddClass()
+
+* AddCmd()
+
+* AddCmd_bsp()
+
+* AddDefender()
+
+* AddDetail()
+
+* AddDrink()
+
+* AddExit()
+
+* AddExp()
+
+* AddExtraLook()
+
+* AddFixedObject()
+
+* AddFood()
+
+* AddFuel()
+
+* AddFun()
+
+* AddId()
+
+* AddInfo()
+
+* AddItem()
+
+* AddKnownPotion()
+
+* AddMaterial()
+
+* AddMiniQuest()
+
+* AddMoney()
+
+* AddMsg()
+
+* AddPlant()
+
+* AddPluralId()
+
+* AddPursuer()
+
+* AddReadDetail()
+
+* AddResistanceModifier()
+
+* AddRoomCmd()
+
+* AddRoomMessage()
+
+* AddRoute()
+
+* AddSingularId()
+
+* AddSmells()
+
+* AddSounds()
+
+* AddSpecialDetail()
+
+* AddSpecialExit()
+
+* AddSpecialInfo()
+
+* AddSpell()
+
+* AddToMenu()
+
+* AddTouchDetail()
+
+* AllGroups()
+
+* AllMaterials()
+
+* AssocMember()
+
+* Attack()
+
+* BecomesNetAlive()
+
+* BecomesNetDead()
+
+* CannotSee()
+
+* ChangeMiniQuest()
+
+* ChangeReputation()
+
+* CheckFindRestrictions()
+
+* CheckLightType()
+
+* CheckResistance()
+
+* CheckSensitiveAttack()
+
+* CheckSpellFatigue()
+
+* ClearRingBuffer()
+
+* Configure()
+
+* ConvMaterialList()
+
+* CreateRingBuffer()
+
+* CustomizeObject()
+
+* Damage()
+
+* DeAssocMember()
+
+* DeclAdj()
+
+* Defend()
+
+* DefendFunc()
+
+* DefendInfo()
+
+* DefendOther()
+
+* Defend_bsp()
+
+* DeleteSpellFatigue()
+
+* DeleteTimedAttrModifier()
+
+* DiscoverDoor()
+
+* DistributeExp()
+
+* DoDecay()
+
+* DoDecayMessage()
+
+* DoUnwear()
+
+* DoUnwield()
+
+* DoWear()
+
+* DoWield()
+
+* DoorIsKnown()
+
+* Dump()
+
+* EnemyPresent()
+
+* Enter()
+
+* EvalArmour()
+
+* EvalWeapon()
+
+* ExtraAttack()
+
+* FilterArmours()
+
+* FilterClothing()
+
+* FindBestArmours()
+
+* FindBestWeapon()
+
+* FindDistantEnemyVictim()
+
+* FindDistantGroup()
+
+* FindDistantGroups()
+
+* FindEnemyVictim()
+
+* FindFarEnemyVictim()
+
+* FindGroup()
+
+* FindGroupN()
+
+* FindGroupP()
+
+* FindNearEnemyVictim()
+
+* FindPotion()
+
+* FindRangedTarget()
+
+* Flee()
+
+* FreeHands()
+
+* GetAquarium()
+
+* GetDetail()
+
+* GetDoorsMapping()
+
+* GetEnemies()
+
+* GetExits()
+
+* GetFValue()
+
+* GetFValueO()
+
+* GetFactor()
+
+* GetGroupMembers()
+
+* GetInfoArr()
+
+* GetMatMembership()
+
+* GetOffset()
+
+* GetOwner()
+
+* GetPhiolenInfos()
+
+* GetReputation()
+
+* GetReputations()
+
+* GetValue()
+
+* GetValueO()
+
+* Gildenproperties()
+
+* GiveMiniQuest()
+
+* GiveQuest()
+
+* GroupName()
+
+* GuardExit()
+
+* Halt()
+
+* HasMiniQuest()
+
+* HitFunc()
+
+* Identify()
+
+* InFight()
+
+* InList()
+
+* InformAlcoholEffect()
+
+* InformDefend()
+
+* InformRowChange()
+
+* InformUnwear()
+
+* InformUnwield()
+
+* InformWear()
+
+* InformWield()
+
+* InsertEnemy()
+
+* InsertEnemyTeam()
+
+* InsertSensitiveObject()
+
+* InternalModifyAttack()
+
+* InternalModifyDefend()
+
+* IsArmour()
+
+* IsBottle()
+
+* IsClothing()
+
+* IsEnemy()
+
+* IsEqual()
+
+* IsPlayerCorpse()
+
+* IsRoom()
+
+* IsTeamLeader()
+
+* IsTeamMove()
+
+* IsUnit()
+
+* Kill()
+
+* LearnSkill()
+
+* Leave()
+
+* LimitAbility()
+
+* MaterialGroup()
+
+* MaterialList()
+
+* MaterialName()
+
+* MayAddObject()
+
+* MayAddWeight()
+
+* Message()
+
+* ModifyQuestTime()
+
+* ModifySkill()
+
+* ModifySkillAttribute()
+
+* More()
+
+* NPC_Killed_by()
+
+* NewDoor()
+
+* NoParaObjects()
+
+* NotifyDestruct()
+
+* NotifyInsert()
+
+* NotifyLeave()
+
+* NotifyMove()
+
+* NotifyPlayerDeath()
+
+* NotifyRemove()
+
+* NotifyTimedAttrModExpired()
+
+* NotifyXMAttrModLimitViolation()
+
+* Pacify()
+
+* PayIn()
+
+* PlayerQuit()
+
+* PresentEnemies()
+
+* PresentEnemyRows()
+
+* PresentPosition()
+
+* PresentRows()
+
+* PresentTeamPositions()
+
+* PresentTeamRows()
+
+* PreventFollow()
+
+* PreventInsert()
+
+* PreventInsertLiving()
+
+* PreventLeave()
+
+* PreventLeaveLiving()
+
+* PreventMove()
+
+* Query()
+
+* QueryAllDoors()
+
+* QueryArmourByType()
+
+* QueryArrived()
+
+* QueryArticle()
+
+* QueryAttribute()
+
+* QueryAttributeOffset()
+
+* QueryBuyFact()
+
+* QueryBuyValue()
+
+* QueryCoinsPerUnits()
+
+* QueryDamage()
+
+* QueryDefend()
+
+* QueryDisguise()
+
+* QueryDoorKey()
+
+* QueryDoorStatus()
+
+* QueryDu()
+
+* QueryEnemies()
+
+* QueryFlaw()
+
+* QueryGenderString()
+
+* QueryGramsPerUnits()
+
+* QueryGroupedKeys()
+
+* QueryGuest()
+
+* QueryHealInfo()
+
+* QueryMaterial()
+
+* QueryMaterialGroup()
+
+* QueryMaxQP()
+
+* QueryMoney()
+
+* QueryName()
+
+* QueryOpenMiniQuestsForPlayer()
+
+* QueryOwn()
+
+* QueryPassengers()
+
+* QueryPosition()
+
+* QueryPossPronoun()
+
+* QueryPrayRoom()
+
+* QueryPreferedEnemy()
+
+* QueryPronoun()
+
+* QueryProp()
+
+* QueryProperties()
+
+* QueryQuest()
+
+* QueryQuestTime()
+
+* QueryRealAttribute()
+
+* QuerySellValue()
+
+* QuerySkill()
+
+* QuerySkillAbility()
+
+* QuerySkillAttribute()
+
+* QuerySkillAttributeModifier()
+
+* QuerySkillBonus()
+
+* QueryStorageRoom()
+
+* QueryTimedAttrModifier()
+
+* QueryTotalQP()
+
+* QueryUser()
+
+* QueryValidObject()
+
+* ReceiveMsg()
+
+* RegisterEvent()
+
+* RegisterHelperNPC()
+
+* RegisterHelperObject()
+
+* RemoveAdjective()
+
+* RemoveClass()
+
+* RemoveCmd()
+
+* RemoveDefender()
+
+* RemoveDetail()
+
+* RemoveExit()
+
+* RemoveExtraLook()
+
+* RemoveFixedObject()
+
+* RemoveFromMenu()
+
+* RemoveFunc()
+
+* RemoveId()
+
+* RemoveInfo()
+
+* RemoveItem()
+
+* RemoveKnownPotion()
+
+* RemovePluralId()
+
+* RemovePursuer()
+
+* RemoveReadDetail()
+
+* RemoveResistanceModifier()
+
+* RemoveRoute()
+
+* RemoveSensitiveObject()
+
+* RemoveSingularId()
+
+* RemoveSkillAttributeModifier()
+
+* RemoveSmells()
+
+* RemoveSounds()
+
+* RemoveSpecialDetail()
+
+* RemoveSpecialExit()
+
+* RemoveTouchDetail()
+
+* ResizeRingBuffer()
+
+* RingBufferGet()
+
+* RingBufferPut()
+
+* SearchPath()
+
+* SelectEnemy()
+
+* SelectFarEnemy()
+
+* SelectNearEnemy()
+
+* Set()
+
+* SetAttackChats()
+
+* SetAttr()
+
+* SetAttribute()
+
+* SetBuyFact()
+
+* SetChats()
+
+* SetCoinsPerUnits()
+
+* SetDoorStatus()
+
+* SetEnemies()
+
+* SetGramsPerUnits()
+
+* SetProp()
+
+* SetProperties()
+
+* SetRealAttribute()
+
+* SetSpellFatigue()
+
+* SetStorageRoom()
+
+* SetTimedAttrModifier()
+
+* ShowDoors()
+
+* ShowPropList()
+
+* SkillResTransfer()
+
+* SpellAttack()
+
+* SpellDefend()
+
+* SpellInform()
+
+* Start()
+
+* StopHuntFor()
+
+* StopHuntText()
+
+* SuggestArticle()
+
+* SwapRows()
+
+* TakeFlaw()
+
+* TeamFlee()
+
+* TeamMembers()
+
+* TeamPrefix()
+
+* Teleport()
+
+* TestIgnore()
+
+* TestIgnoreSimple()
+
+* TestLimitViolation()
+
+* TriggerEvent()
+
+* UnregisterEvent()
+
+* UnregisterHelperNPC()
+
+* UnregisterHelperObject()
+
+* Unwear()
+
+* UnwearArmour()
+
+* UnwearClothing()
+
+* UnwieldFunc()
+
+* UpdateAttributes()
+
+* UpdateResistanceStrengths()
+
+* UseHands()
+
+* UseSkill()
+
+* UseSpell()
+
+* Validate()
+
+* Wear()
+
+* WearArmour()
+
+* WearClothing()
+
+* WearFunc()
+
+* WieldFunc()
+
+* WithDraw()
+
+* __INIT()
+
+* _query_current_money()
+
+* _unparsed_args()
+
+* access_rights()
+
+* buffer_hp()
+
+* buffer_sp()
+
+* buy_obj()
+
+* catch_msg()
+
+* catch_tell()
+
+* check_and_update_timed_key()
+
+* check_restrictions()
+
+* check_timed_key()
+
+* clean_up()
+
+* cmd_shoot()
+
+* command_me()
+
+* consume()
+
+* create()
+
+* create_default_npc()
+
+* create_super()
+
+* defuel_drink()
+
+* defuel_food()
+
+* deregister_modifier()
+
+* die()
+
+* doUnwearMessage()
+
+* doUnwieldMessage()
+
+* doWearMessage()
+
+* doWieldMessage()
+
+* do_damage()
+
+* do_frage()
+
+* do_unwear()
+
+* do_wear()
+
+* drink_alcohol()
+
+* drink_soft()
+
+* drop()
+
+* drop_obj()
+
+* drop_objects()
+
+* eat_food()
+
+* execute_anything()
+
+* exit()
+
+* find_obs()
+
+* get_killing_player()
+
+* give()
+
+* give_notify()
+
+* give_obj()
+
+* heal_self()
+
+* heart_beat()
+
+* id()
+
+* init()
+
+* insert_sensitive_inv()
+
+* insert_sensitive_inv_trigger()
+
+* int_long()
+
+* int_short()
+
+* is_class_member()
+
+* lfun()
+
+* locate_objects()
+
+* logon()
+
+* long()
+
+* make_immortal()
+
+* make_invlist()
+
+* match_ids()
+
+* move()
+
+* moved_objects()
+
+* moved_where()
+
+* muster()
+
+* name()
+
+* notify_player_change()
+
+* pick()
+
+* pick_obj()
+
+* pick_objects()
+
+* present_objects()
+
+* put()
+
+* put_obj()
+
+* query_prevent_shadow()
+
+* query_real_name()
+
+* query_weight_contents()
+
+* reduce_hit_points()
+
+* reduce_spell_points()
+
+* register_modifier()
+
+* remove()
+
+* remove_multiple()
+
+* reset()
+
+* restore_hit_points()
+
+* restore_spell_points()
+
+* save_me()
+
+* second_life()
+
+* sell_obj()
+
+* set_object_next_reset()
+
+* shoot_dam()
+
+* short()
+
+* show_notify()
+
+* trigger_sensitive_attack()
+
+* trigger_sensitive_inv()
+
+* wield_me()
+
+* Verzeichnis der lfuns speziell in/für Gilden
+
+* Verzeichnis der lfuns in master()
+
+* Verzeichnis der veralteten lfuns
diff --git a/doc/sphinx/man/lfun.index b/doc/sphinx/man/lfun.index
new file mode 100644
index 0000000..2018524
--- /dev/null
+++ b/doc/sphinx/man/lfun.index
@@ -0,0 +1,20 @@
+
+lfuns
+*****
+
+lfuns sind in LPC geschriebene Funktionen innerhalb von Objekten. Oft
+kann man diese von aussen rufen, einige lfuns sind jedoch auch privat.
+In den meisten Faellen beeinflusst man Objekte im Spiel durch das
+Rufen von jeweils passenden lfuns.
+
+
+Verzeichnis der dokumentierten lfuns
+====================================
+
+* Verzeichnis der dokumentierten lfuns
+
+* Verzeichnis der lfuns speziell in/für Gilden
+
+* Verzeichnis der lfuns in master()
+
+* Verzeichnis der veralteten lfuns
diff --git a/doc/sphinx/man/lfun/AddAction b/doc/sphinx/man/lfun/AddAction
new file mode 100644
index 0000000..29c83c1
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddAction
@@ -0,0 +1,104 @@
+
+AddAction()
+***********
+
+
+AddAction(L)
+============
+
+
+FUNKTION
+========
+
+   varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);
+
+
+DEFINIERT IN
+============
+
+   /std/player/command.c
+
+
+ARGUMENTE
+=========
+
+   fun        zu rufende Methode im Spieler oder eine Closure
+   cmd        ausloesendes Kommandoverb
+   flag       unscharf ausfuehren
+   lvl        ab welchem (Magierlevel) funktioniert das Kommando
+
+
+BESCHREIBUNG
+============
+
+   Dem Spieler wird ein neues Kommando definiert. Dieses kann eine Methode
+   in ihm sein, so wie bei allen Spielerkommandos ueblich, kann aber auch
+   eine Closure (Lfun-Closure oder Lambda) enthalten.
+
+   Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h. wie
+   bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1' auch
+   schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
+   AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder 'muh4'
+   ausgeloest.
+
+   Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
+   Magierlevel von 0, Seher von 1.
+
+   Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
+   nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
+   gebendes Objekt im Spieler einsparen.
+
+
+BEMERKUNGEN
+===========
+
+   - es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS editieren
+     kann zu ernsten Fehlern fuehren.
+   - echte Spielerkommandos kann man damit _nicht_ ueberschreiben,
+     ein AddAction(...,"sag",1,0); funktioniert nicht
+   - ein generelles AddAction(...,"",1,0); geht nicht
+
+
+BEISPIELE
+=========
+
+   ...
+   this_player()->AddAction(symbol_function("zeige_mysterium",
+                                            find_object(".../mystzeiger")),
+                            "knorfula",0,0);
+   write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
+                      "eingibst, werden dir Mysterien enthuellt!",78));
+   ...
+
+   // im Objekt "knorfula" ...
+   int zeige_mysterium(string str) {
+     string myst;
+     myst=environment(TP)->QueryMysterium(str);
+     if(myst) {
+       write("Du hast ein Mysterium entdeckt!\n");
+       write(break_string(myst,78));
+       say(break_string(
+              TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
+              "entdeckt zu haben!",78));
+     } else {
+       write(break_string(
+              "Leider entdeckst du trotz deiner magischen Faehigkeit "
+              "kein Mysterium in deiner Umgebung.",78));
+       say(break_string(
+              TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
+              "jedoch etwas enttaeuscht aus.",78));
+     }
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+                      P_LOCALCMDS
+   Fehlermeldungen:   notify_fail(E), _notify_fail(E)
+   Argumentstring:    query_verb(E), _unparsed_args(L)
+   Sonstiges:         replace_personal(E), enable_commands(E)
+   Alternativen:      AddCmd(L), add_action(E)
+
+24. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/AddAdjective b/doc/sphinx/man/lfun/AddAdjective
new file mode 100644
index 0000000..a96a5e5
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddAdjective
@@ -0,0 +1,62 @@
+
+AddAdjective()
+**************
+
+
+FUNKTION
+========
+
+   void AddAdjective(string|string* adj);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   adj
+        String oder Array von String mit den Adjektiven.
+
+
+BESCHREIBUNG
+============
+
+   Zusaetzlich zu den mit AddId() vergebenen Bezeichnern laesst sich mit
+   der Vergabe von Adjektiven die Ansprechbarkeit eines Objektes erhoehen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Adjektive werden nicht dekliniert, man muss also fuer jeden
+   sinnvollen Fall ein Adjektiv uebergeben.
+
+
+BEISPIELE
+=========
+
+     AddId( ({ "zettel", "blatt" }) );
+     AddAdjective( ({ "kleinen", "kleines" }) );
+
+   Das Objekt reagiert jetzt auf "zettel", "kleinen zettel", "blatt",
+   "kleines blatt" sowie auf die (sprachlich nicht ganz so korrekten)
+   Konstruktionen "kleines zettel", "kleinen blatt", "kleines kleinen
+   zettel", ...
+
+
+SIEHE AUCH
+==========
+
+   AddId(), RemoveAdjective() id(), present(), /std/thing/description.c
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddAmount b/doc/sphinx/man/lfun/AddAmount
new file mode 100644
index 0000000..59bb9b1
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddAmount
@@ -0,0 +1,44 @@
+
+AddAmount()
+***********
+
+
+FUNKTION
+========
+
+   void AddAmount(int menge);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   menge
+        Die Menge, die der Unit hinzugefuegt werden soll (kann auch
+        negativ sein).
+
+
+BESCHREIBUNG
+============
+
+   menge wird zur aktuellen Menge hinzugezaehlt. Sollte das Ergebnis 0
+   werden, wird die Unit in absehbarer Zeit zerstoert.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   /std/unit.c
+
+Last modified: Wed May 8 10:15:50 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/AddClass b/doc/sphinx/man/lfun/AddClass
new file mode 100644
index 0000000..fee72e3
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddClass
@@ -0,0 +1,48 @@
+
+AddClass()
+**********
+
+
+FUNKTION
+========
+
+   void AddClass(string|string* class);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   string/string* class       - String oder Stringarray der Klasse(n)
+
+
+BESCHREIBUNG
+============
+
+   Dem Objekt werden weitere Klassifizierungen hinzugefuegt.
+
+   Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Vor dem 7. Nov 2012 pruefte is_class_member() auch die P_IDS. Damit war
+   zB ein AddId("daemon") gleichbedeutend einem AddClass(CL_DEMON).
+
+   Bitte prueft eure Objekte (NPCs, Krankheiten, Gifte, ...) auf korrekte
+   Klassifizierung.
+
+
+SIEHE AUCH
+==========
+
+   RemoveClass(), is_class_member()
+   P_CLASS
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddCmd b/doc/sphinx/man/lfun/AddCmd
new file mode 100644
index 0000000..088da28
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddCmd
@@ -0,0 +1,244 @@
+
+AddCmd()
+********
+
+
+AddCmd(L)
+=========
+
+
+FUNKTION
+========
+
+   varargs void AddCmd(mixed cmd, mixed func, [mixed flag, [mixed id]]);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/commands.c
+
+
+ARGUMENTE
+=========
+
+   cmd
+      Verben, auf die reagiert werden soll
+
+      ODER
+
+      Regel mit Triggerverb und noetigen Keywords/Synonymen
+   func
+      Funktionsname im selben Objekt oder Closure (Funktionspointer)
+   flag (optional)
+      Unscharfe Ausfuehrung == 1
+
+      ODER
+
+      Fehlermeldungen bei Nutzung von Regeln
+   id (optional)
+      eine ID, ueber die das Kommando eindeutig wieder geloescht
+      werden kann
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler im Einflussbereich des Objektes das Verb benutzt,
+   wird die entsprechende Funktion im Objekt aufgerufen:
+   - die Verben sollten Imperative sein
+   - die Funktion muss 1 fuer ERFOLG (und FPs!) und 0 sonst zurueckgeben
+     (sonst werden evtl. weitere Funktionen mit diesem Kommandoverb gerufen)
+   - innerhalb der Funktionen koennen Fehlermeldungen fuer den totalen
+     Misserfolg des Kommandos mit notify_fail gesetzt werden
+     (anstatt "Wie bitte?")
+
+   AddCmd ist ein dynamischer Ersatz fuer add_action - im Gegensatz
+   zu add_action koennen auch ohne erneuten Aufruf der init() neue
+   Kommandos hinzugefuegt werden.
+
+   AddCmd kann das Leben einfacher machen mit:
+   ### REGELN: ###
+     Bei komplexen Syntaxen kann ein String angegeben werden, der die
+     _notwendigen_ (nicht die erlaubten!) Schluesselworte und deren
+     zulaessige Synonyme beschreibt. Damit kann man sich einen grossen
+     Teil eigener Auswertung ersparen.
+
+     Nur wenn in richtiger Reihenfolge aus JEDER der durch & getrennten
+     Synonymgruppen ein Wort im Spielerkommando enthalten ist, wird
+     die zugehoerige Funktion ausgefuehrt.
+
+     Trenner sind: | fuer Alternativen
+                   & fuer Konjunktionen
+
+     Beispiel:
+       "ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
+       "herz|herzchen&rinde|baumrinde"
+     wuerde z.B. durch
+       "ritz mit dem Messer ein Herz in die Rinde des Baumes"
+       "schnitz mit Messer Herzchen Baumrinde"
+       "schnitz mit meinem Messer Herzchen in die harte Baumrinde"
+     erfuellt werden.
+
+     Spezialregelteile sind:
+     - @PRESENT: entspricht einem Objekt in Inv oder Env des Spielers
+     - @ID:      entspricht der ID des kommandobesitzenden Objektes
+                 (wo die Kommandomethode definiert ist, ist noch unwichtig)
+     - @PUT_GET_DROP, @PUT_GET_TAKE, @PUT_GET_NONE:
+                 entsprechend den Filteroptionen fuer find_obs()
+     ACHTUNG: Zusaetzliche Ziffern in Verbindung mit den @-Spezialregeln
+              sind schlecht. @-Regeln versuchen gierig, Objekte exakt im
+              Inventory zu matchen ("objekt 3" anstatt "objekt") und miss-
+              interpretieren daher zB die 4 in "stopf objekt 3 in loch 4" als
+              Teil des Objekt-ID-Strings.
+              Interna: 3 Substrings fuer @PRESENT/@ID ("gruener kristall 2")
+                       5 fuer @PUT... ("kristall 2 in beutel 3")
+
+   ### FEHLERMELDUNGEN (bei Anwendung von Regeln): ###
+     Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
+     fehlende Synonymgruppen (ausser der ersten - den Kommandoverben)
+     angegeben werden. Sie werden in derselben Reihenfolge (!) wie die
+     Synonymgruppen angegeben.
+
+     Mit nicht von Spielern erfuellbaren Regeln und ^-Fehlermeldungen
+     kann man auch ohne Ausfuehrung einer Funktion Texte an Spieler
+     und Umgebung ausgeben. Siehe dazu AddCmd_bsp.
+
+     Trenner sind: | zum Trennen der einzelnen Fehlermeldungen
+                   ^ um
+                      - die Auswertung (ab dieser Fehlermeldung!) mit
+                        "return 1;" zu beenden und
+                      - eine write^say-Meldung zu trennen und
+                      - (fuer funktionslose AddCmd auch FPs zu vergeben!)
+
+     Beispielfehlermeldungen fuer obige Regel:
+       "Womit willst Du schnitzen?|Was willst Du schnitzen?|"
+       "Wohinein willst Du das schnitzen?"
+
+     Es koennen in den Fehlermeldungen folgende Platzhalter benutzt
+     werden:
+     - @verb (ersetzt durch query_verb() ohne beendendes 'e')
+     - @VERB (ersetzt durch capitalize(query_verb()) ohne beendendes 'e')
+     - @WERx, @WESSENx, @WEMx, @WENx: siehe alles aus replace_personal()
+       - @WE..1 ist immer der aktive Spieler
+       - alle folgenden sind die matchenden Parameter der Spielereingabe
+         - (x-1)<=Fehlermeldung (da x=1 Spieler und
+                                 (x-1)>Fehlermeldungsobjekt nicht existent)
+
+     Ausfuehrungsbeispiel:
+       AddCmd("ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
+              "herz|herzchen&rinde|baumrinde",#'fun,
+             "Willst Du mit etwas @verben?|Womit willst du @verben?|"
+             "Was willst du mit dem @WEM3 @verben?|"
+             "Wohinein willst Du das @WEN4 schnitzen?");
+       1. "ritze" == "Willst Du mit etwas ritzen?"
+       2. "schnitz mit" == "Womit willst du schnitzen?"
+       3. "ritz mit messer" == "Was willst du mit dem messer ritzen?"
+       4. "ritze mit dem messer ein herz" ==
+            "Wohinein willst Du das herz schnitzen?"
+       5. "ritze mit dem messer ein herzchen in die baumrinde"
+            == Erfolg!
+
+   ### UNSCHARFER AUSFUEHRUNG: ###
+     Bei unscharfer Ausfuehrung wird die zugehoerige Methode auch dann
+     ausgefuehrt, wenn das verwendete Verb ein Superstring ist und
+     bisher noch nicht behandelt wurde.
+     Dieses Verhalten sollte nur beim generellen Abfangen von
+     Befehlsgruppen benutzt werden und ist ansonsten veraltet. Es
+     entsprich add_action("fun","kommando",1).
+
+
+     Beispiel:
+       1. AddCmd("klett","fun",1);
+       2. AddCmd("kletter|klettere&hoch",#'fun2,"Wohin klettern?");
+
+       a) "klett"
+       b) "kletter"
+       c) "klettere hoch"
+
+       Ausgefuehrte Funktion bei: 1a, 1b, 1c; 2c
+      (1 wuerde also immer ausgefuehrt)
+       Fehlermeldung bei: 2b ("Wohin klettern?")
+
+
+BEMERKUNGEN
+===========
+
+   - Methoden der put_and_get (nimm/nehme) sollten so nicht versucht
+     werden zu ueberschreiben - dazu sind invis Container da
+   - benutzt man fuer <function> eine Closure, kann man die Fkt. auch
+     protected oder private deklarieren _und_ sie kann in einem
+     anderen Objekt sein
+   - bei Regeln wird an die ggf. gerufene Methode als zweiter Parameter
+     ein Array der erfuellenden Eingabeteile uebergeben:
+     "steck&@PRESENT&in&loch" bei Erfuellung -> ({<Objekt>,"in","loch})
+     - bei Nutzung von @PUT_GET_XXX koennen die Parameter wiederum
+       Arrays sein ("jede Hose" -> mehrere gueltige Objekte)
+   - juengere AddCmd ueberschreiben aeltere, bzw. werden vor diesen
+     ausgewertet
+   - @PUT_GET_XXX kosten sehr viel Auswertungszeit
+
+BEISPIELE (SIEHE AUCH ADDCMD_BSP):
+   // SIMPEL: ganz simpel, beinahe wie add_action
+   AddCmd("befiehl","action_befehlen"); ... int action_befehlen(string
+   str) {
+
+      if(!str || !strlen(str))
+         // Fehlermeldung, falls gar keine Funktion 1 dafuer
+         zurueckgibt notify_fail("Was willst du befehlen?!n");
+
+      else {
+         write("Du befiehlst ""+str+"", und alle folgen!n");
+         say(TP->Name(WER)+" befiehlt ""+str+"", und du folgst!n");
+         return 1;  // ERFOLG - Abbruch der Kommandoauswertung
+
+      } return 0;  // MISSERFOLG - Fehlermeldung oben gesetzt
+
+   }
+
+   // SIMPEL .. weitere Beispiele
+   AddCmd(({"kletter","klettere"}),"action_klettern" );
+   AddCmd(({"renn","renne"}),#'action_rennen);
+
+   // REGELN: eine komplexere Regel AddCmd("loesch|loesche|ersticke&f
+   euer|brand|flammen&decke|wolldecke",
+
+      "action_loeschen", "Was willst du loeschen?|Womit willst du
+      loeschen?");
+
+   // REGELN: mit Platzhaltern im Fehlerstring
+   AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
+
+      #'action_huepfe, "Willst du von etwas @verben?|Von wo willst du
+      @verben?");
+
+   // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein
+   (!) AddCmd("kletter","fun_klettern",1);
+
+   // FALSCH: sehr schlecht, kein Imperativ verwendet // ausserdem
+   sollte man fuer solche Syntaxen AddReadDetail benutzen
+   AddCmd("lese","eval_lesen");
+
+   // SIMPLE REGEL OHNE METHODE // mit Regeln kann man auch
+   Aktivitaeten im Raum erlauben, ohne eine // Funktion aufrufen zu
+   muessen: die letzte Regel ist fuer Spieler // unmoeglich zu
+   erfuellen, die dazugehoerige Fehlermeldung wird mit // dem ^
+   (write-Flag) versehen und entsprechend an den Spieler // (und den
+   Raum (hinter dem ^)) ausgegeben
+   AddCmd("spring|springe&herunter|runter&nbimpossible",0,
+
+      "Wohin oder wovon willst Du springen?|" "Du springst vom Baum
+      und kommst hart auf.^" "@WER1 springt vom Baum und kommt hart
+      auf.");
+
+
+SIEHE AUCH
+==========
+
+   AddCmd_bsp, RemoveCmd(L), init(E)
+   Fehlermeldungen: notify_fail(E), _notify_fail(E)
+   Argumentstring: query_verb(E), _unparsed_args(L)
+   Sonstiges:  replace_personal(E), enable_commands(E)
+   Alternativen: AddAction(L), add_action(E)
+
+30. Aug 2013 Gloinson
diff --git a/doc/sphinx/man/lfun/AddCmd_bsp b/doc/sphinx/man/lfun/AddCmd_bsp
new file mode 100644
index 0000000..ec8ff17
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddCmd_bsp
@@ -0,0 +1,382 @@
+
+AddCmd_bsp()
+************
+
+
+ADDCMD() - BEISPIELE
+====================
+
+
+FUNKTION
+========
+
+   varargs void AddCmd(mixed cmd, mixed func, mixed flag);
+
+
+BEMERKUNGEN
+===========
+
+   Die hier aufgefuehrten Komplexbeispiele sind zum Verstaendnis gedacht,
+   daher fuehren sie oft Alternativen auf. Die letzte Variante ist dann
+   jeweils diejenige, welche am leichtesten das Problem loesen koennte.
+   Falls die einem zu komplex ist, hilft vielleicht die vorletzte.
+
+
+BEISPIELE
+=========
+
+   // SIMPEL: ganz simpel, beinahe wie add_action
+   AddCmd("befiehl","action_befehlen");
+   ...
+   int action_befehlen(string str) {
+    if(!str || !strlen(str))
+     // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
+     notify_fail("Was willst du befehlen?!\n");
+    else {
+     write("Du befiehlst \""+str+"\", und alle folgen!\n");
+     say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
+     return 1;         // ERFOLG - Abbruch der Kommandoauswertung
+    }
+    return 0;          // MISSERFOLG - Fehlermeldung oben gesetzt
+   }
+
+   // SIMPEL .. weitere Beispiele
+   AddCmd(({"kletter","klettere"}),"action_klettern" );
+   AddCmd(({"renn","renne"}),#'action_rennen);
+
+   // REGELN: eine komplexere Regel
+   AddCmd("loesch|loesche|ersticke&feuer|brand|flammen&decke|wolldecke",
+          "action_loeschen",
+          "Was willst du loeschen?|Womit willst du loeschen?");
+
+   // REGELN: mit Platzhaltern im Fehlerstring
+   AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
+          #'action_huepfe,
+          "Willst du von etwas @verben?|Von wo willst du @verben?");
+
+   // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein (!)
+   AddCmd("kletter","fun_klettern",1);
+
+   // FALSCH: sehr schlecht, kein Imperativ verwendet
+   // ausserdem sollte man fuer solche Syntaxen AddReadDetail benutzen
+   AddCmd("lese","eval_lesen");
+
+   // SIMPLE REGEL
+   static int action_jump(string str);        // Prototype (wegen closure)
+   ...
+   AddCmd("spring|springe|huepf|huepfe&von&baum|ast",#'action_jump,
+          "Willst Du von etwas @verben?|Wovon willst Du @verben?");
+   ...
+   static int action_jump(string str) {
+     write(break_string("Du springst vom Baum und kommst hart auf!",78));
+     this_player()->move((XXXROOM+"boden"), M_GO, 0,
+                         "springt unelegant vom Baum","faellt vom Baum");
+     this_player()->Defend(random(100),({DT_BLUDGEON}),([SP_RECURSIVE:1]),
+                           this_object());
+     return 1;
+   }
+
+   // SIMPLE REGEL OHNE METHODE
+   // mit Regeln kann man auch Aktivitaeten im Raum erlauben, ohne eine
+   // Funktion aufrufen zu muessen: die letzte Regel ist fuer Spieler
+   // unmoeglich zu erfuellen, die dazugehoerige Fehlermeldung wird mit
+   // dem ^ (write-Flag) versehen und entsprechend an den Spieler
+   // (und den Raum (hinter dem ^)) ausgegeben
+   AddCmd("spring|springe&herunter|runter&\n\bimpossible",0,
+          "Wohin oder wovon willst Du springen?|"
+          "Du springst vom Baum und kommst hart auf.^"
+          "@WER1 springt vom Baum und kommt hart auf.");
+
+## Komplexbeispiel: Regeln mit Fehlermeldungen ##
+   ## Variante 1, OHNE REGELN ##
+      // bei Nichtverwendung von Regeln muss man Parameter selbst
+      auswerten AddCmd(({"bohr","bohre"}),#'action_bohren); ...
+      private int action_bohren(string str) {
+
+         string >>*<<tmp; notify_fail("Wo willst (etwas) Du
+         bohren?n"); if(!str) return 0;       // Tja, keine Argumente
+         ... tmp=explode(str," ");    // nach " " in Argument-Array
+         aufspalten if((i=member(tmp,"loch"))>=0) { // aha, ab jetzt
+         uebernehmen wir :)
+
+            if((j=member(tmp[(i+1)..],"in"))<0 &&
+                     (j=member(tmp[(i+1)..],"durch"))<0)
+
+                  write("Willst Du das Loch in etwas bohren?n");
+
+               else if((i=member(tmp[(j+1)..],"boden"))<0 &&
+                     (i=member(tmp[(j+1)..],"erde"))<0)
+
+                  write("In/Durch was willst du das Loch bohren?n");
+
+               else {
+                  write("Du bohrst ein Loch in den Boden.n");
+                  say(this_player()->Name(WER)+" bohrt ein Loch in den
+                  Boden.n");
+
+               } return 1;      // "bohre loch" war so eindeutig, dass
+               nur diese
+
+                  // Methode gemeint sein konnte, also brechen wir die
+                  // weitere Auswertung auf jeden Fall ab (und geben
+                  // eine write-Fehlermeldung)
+
+         } // end if(..."loch") return 0;        // "bohre" allein
+         muss nicht diese Methode meinen,
+
+            // also nur obige notify_fail()-Meldung, falls // sich
+            nach dieser Methode gar keine sonst // angesprochen fuehlt
+
+      } // end fun
+
+   ## Variante 1a, OHNE REGELN ##
+      // prinzipiell koennte die Methode action_bohren auch so //
+      aussehen, ist aber nicht ganz so flexibel: private int
+      action_bohren(string str) {
+
+         string tmp; if(!str || (sprintf(str,"loch in erde%s",tmp)!=1
+         &&
+
+               sprintf(str,"loch durch erde%s",tmp)!=1 &&
+               sprintf(str,"loch in boden%s",tmp)!=1 &&
+               sprintf(str,"loch durch boden%s",tmp)!=1))
+
+            notify_fail("Willst Du in irgendwas ein Loch bohren?n");
+
+         else {
+            ... return 1;
+
+         } return 0;
+
+      }
+
+   ## Variante 2, MIT REGEL ##
+      // das gleiche in etwa mal als einfache Regel
+      AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
+
+         "Was willst du (wohin) bohren?|" "Willst du das Loch in etwas
+         bohren?|" "Wohin willst du das Loch bohren?");
+
+      ... private int action_bohren(string str, mixed >>*<<param) {
+
+         write("Du bohrst ein Loch in den Boden.n");
+         say(this_player()->Name(WER)+" bohrt ein Loch in den
+         Boden.n"); ... return 1;
+
+      }
+
+   ## Variante 3, MIT REGEL UND FEHLERMELDUNG ##
+      // und nun mit Fehlermeldungen mit Ersetzungen, so dass wir mehr
+      // auf die Eingaben des Spielers eingehen
+      AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
+
+         "Was willst du (wohin) @verben?|" "Willst du das Loch in
+         etwas @verben?|" "@WER3 was willst du das Loch @verben?");
+
+      ... private int action_bohren(string str, mixed >>*<<param) ...
+
+   ## Variante 4, MIT REGEL, FEHLERMELDUNG UND RETURN 1 ##
+      // in Variante 1 kam sinnvollerweise sehr frueh der Abbruch mit
+      // "return 1;" und die Ausgabe von write-Fehlermeldungen, // das
+      koennen wir auch
+      AddCmd("bohr|bohre&loch&in|durch&erde|boden",#'action_bohren,
+
+         "Was willst du (wohin) @verben?|" "Willst du das Loch in
+         etwas @verben?^|" "@WER3 was willst du das Loch @verben?^");
+
+      ... private int action_bohren(string str, mixed >>*<<param) ...
+
+   ## Variante 5, MIT REGEL, FEHLERMELDUNG, RETURN 1, OHNE FUN ##
+         // und falls in action_bohren() nichts ausser Ausgaben
+         passiert, koennen // wir uns die auch ganz sparen indem wir
+         eine nichterfuellbare Regel // samt Fehlermeldung bauen
+         AddCmd("bohr|bohre&loch&in|durch&erde|boden&nimpossible",0,
+
+            "Was willst du (wohin) @verben?|" "Willst du das Loch in
+            etwas @verben?^|" "@WER3 was willst du das Loch
+            @verben?^|" "Du @verbst ein Loch @WER3 den Boden.^@WER1
+            @verbt " "ein Loch @WER3 den Boden.");
+
+      --- Ende Komplexbeispiel Regeln mit Fehlermeldungen ---
+
+## Komplexbeispiel: Spezialregeln @PRESENT und @ID ##
+   ## Variante 1, OHNE REGELN ##
+      // oft agieren Kommandos auf Objekten im Raum, diese muessen
+      dabei per // present() identifiziert werden: // Beispiel ist ein
+      Geldautomat (den man besser mit einem Container // mit
+      PreventInsert() basteln sollte)
+      AddCmd(({"stopf","stopfe"}),#'action_stopf); ... private int
+      action_stopf(string str) {
+
+         string tmp,tmp2; object o;
+
+         if(str && (sprintf("%s in automat%s",tmp,tmp2)==2 ||
+               sprintf("%s in geldautomat%s",tmp,tmp2)==2 ||
+               sprintf("%s in bankomat%s",tmp,tmp2)==2) {
+
+            o=present(tmp,this_player()); if(o) {
+
+               if(o->QueryProp(...)) {
+                  write(break_string(
+                     "Du stopfst "+o->name(WEN,1)+" in den
+                     Automaten.",78));
+
+                  say(...);
+
+               } else {
+                  write(break_string(
+                     "Du versuchst "+o->name(WEN,1)+" in den Automaten
+                     zu stopfen, " "aber "+o->QueryPronoun(WER)+"
+                     passt nicht hinein.",78));
+
+                  say(...);
+
+               }
+
+            } else {
+               write("Was willst du in den Automaten stopfen?n");
+               say(....);
+
+            } return 1;
+
+         } notify_fail("Was willst du wohin stecken?n"); return 0;
+
+      }
+
+   ## Variante 2, MIT REGEL ##
+         // einerseits koennen wir das Finden von Objekten in Inv und
+         Env // integrieren und uns andererseits das Aufzaehlen aller
+         IDs des // Automaten ersparen
+         AddCmd("steck|stecke&@PRESENT&in&@ID",#'action_stopf,
+
+            "Was willst du wohin stopfen?|" "Willst du @WEN2 in etwas
+            stopfen?|" "Wohinein willst du @WEN2 stopfen?");
+
+         ... // dabei werden wie immer die gefunden Matches als
+         Parameterarray // uebergeben ... und die @PRESENT und @ID als
+         Objekte! private int action_stopf(string str, mixed
+         >>*<<param) {
+
+            if(param[0]->QueryProp(...)) {
+               write(break_string(
+                  "Du stopfst "+param[0]->name(WEN,1)+" in den
+                  Automaten.",78));
+
+               say(...);
+
+            } else {
+               write(break_string(
+                  "Du versuchst "+param[0]->name(WEN,1)+" in den
+                  Automaten zu " "stopfen, aber
+                  "+param[0]->QueryPronoun(WER)+" passt nicht "
+                  "hinein.",78));
+
+               say(...);
+
+            } return 1;
+
+         }
+
+      --- Ende Komplexbeispiel Spezialregeln @PRESENT und @ID  ---
+
+## Komplexbeispiel: gleiches Verb, mehrere Regeln ##
+   // Das Problem mehrerer Regeln fuer ein Kommandoverb besteht darin,
+   dass // letztlich nur eine der Fehlermeldungen zum Tragen kommt -
+   welche // genau ist etwas vage. // Dabei kann man sich auf eines
+   verlassen: juengere AddCmd werden // zuerst ausgewertet. Wenn sich
+   das aendert, tretet euren EM.
+
+   ## Problem 1: Mehrere Regeln weil mehrere Zwecke ##
+      ## Variante 1 - GLEICHLAUTENDE FEHLERMELDUNG // fuer alles wird
+      eine identische Fehlermeldung gesetzt, das ist // natuerlich
+      nicht sehr flexibel oder schoen AddCmd("kriech|krieche&hoch|hin
+      auf|hinaus|heraus|raus",#'result_kriech,
+
+         "Wohin willst Du kriechen?");
+
+      AddCmd("kriech|krieche&nach&oben",#'result_kriech,
+         "Wohin willst Du kriechen??|Wohin willst Du kriechen?");
+
+      AddCmd("kriech|krieche&aus&loch|grube|falle",#'result_kriech);
+         "Wohin willst Du kriechen?|Wohin willst Du kriechen?");
+
+      // oder man versucht eine bessere Regel zu schaffen, was hier
+      durch // die Moeglichkeit von zwei oder drei Parameter
+      unmoeglich ist
+
+      ## Variante 2 - EIGENE AUSWERTUNG // es bietet sich also eigene
+      Weiterauswertung an, was durch die // Uebergabe der getriggerten
+      Verben erleichtert wird:
+      AddCmd("kriech|krieche&hoch|hinauf|hinaus|heraus|raus|aus|nach",
+
+         #'result_kriech, "Wohin willst Du kriechen?");
+
+      ... static int result_kriech(string str, mixed >>*<<extra) {
+
+         if(member(extra,"aus")>=0 &&
+               !sizeof(({str}),"*.\<(hoehle|grube|falle)\>.*"))
+
+            notify_fail("Woraus willst Du kriechen?n");
+
+         else if(member(extra,"nach")>=0 && strstr(str,"oben")<0)
+            notify_fail("In welche Richtung willst Du kriechen?n");
+
+         else if(this_player()->QueryAttribute(A_DEX)>10 ||
+               member(holding_root,this_player())) {
+
+            write("Du kriechst mit Muehe heraus.n");
+            this_player()->move((XXXROOM+"draussen"), M_GO, 0,
+
+               "kriecht mit Muehe aus der Grube", "kriecht aus einer
+               Grube");
+
+            return 1;
+
+         } else
+            write("Du bist zu ungeschickt, halt Dich irgendwo
+            fest.n"); return 1;
+
+         } return 0;
+
+      } // (ob sich der Aufwand fuer diese Beispielsyntax lohnt ist
+      fraglich)
+
+   ## Problem 2: mehrere Regeln, weil optionale Parameter ##
+      // Manchmal will man optionale Parameter erlauben, die aber eine
+      // Wirkung zeigen sollen:
+      AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart,
+
+         "Was oder wen willst du @verben?|" "Wie willst du @WEN2
+         schlagen?");
+
+      AddCmd("schlag|schlage&@ID",#'action_schlag,
+         "Was oder wen willst du @verben?");
+
+      // Da juengere AddCmd aelteren vorgehen, wird die komplexere
+      Regel samt // ihrer Fehlermeldung nie ausgewertet, da ein
+      "schlag ball hart" auch // die zweite Regel triggert.
+
+      // anders herum: AddCmd("schlag|schlage&@ID",#'action_schlag,
+
+         "Was oder wen willst du @verben?");
+
+      AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart,
+         "Was oder wen willst du @verben?|" "Wie willst du @WEN2
+         schlagen?");
+
+      // Jetzt wird die komplexere Regel zuerst ueberprueft und
+      triggert // auch die richtige Funktion. // Leider kommt die
+      Fehlermeldung nie zum Tragen, denn was durch Regel 2 //
+      durchfaellt, triggert entweder Regel 1 oder faellt auch durch
+      Regel 1 // durch und ueberschreibt dabei die Meldung.
+
+      AddCmd("schlag|schlage&@ID",#'action_schlag,
+         "Was oder wen willst du wie @verben?");
+
+      AddCmd("schlag|schlage&@ID&hart",#'action_schlag_hart);
+
+      // Fast perfekt. Besser wird es nicht.
+
+      --- Ende Komplexbeispiel mehrere Regeln ---
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/AddDefender b/doc/sphinx/man/lfun/AddDefender
new file mode 100644
index 0000000..5b33e14
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddDefender
@@ -0,0 +1,50 @@
+
+AddDefender()
+*************
+
+
+FUNKTION
+========
+
+   void AddDefender(object friend);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   friend
+     Objekt (normal Lebewesen), welches zukuenftig ueber Angriffe
+     informiert werden soll oder diese sogar abwehrt.
+
+
+BESCHREIBUNG
+============
+
+   Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
+   einen solchen Angriff per InformDefend() informieren oder ihnen
+   sogar die Moeglichkeit geben, per DefendOther() direkt in den
+   laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
+   Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
+   als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
+   Name der Funktion.
+   Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
+   abgespeichert und koennen dort abgerufen werden. Natuerlich kann
+   man weitere Objekte direkt dort eintragen, jedoch sollte man die
+   hierfuer bereitgestellte Funktionen AddDefender() verwenden.
+   Zum Loeschen von Eintraegen im Array steht ebenfalls eine Funktion
+   bereit: RemoveDefender().
+
+
+SIEHE AUCH
+==========
+
+   RemoveDefender(), InformDefend(), DefendOther(),
+   P_DEFENDERS, /std/living/combat.c
+
+Last modified: Thu Jul 29 18:48:45 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/AddDetail b/doc/sphinx/man/lfun/AddDetail
new file mode 100644
index 0000000..951b48a
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddDetail
@@ -0,0 +1,110 @@
+
+AddDetail()
+***********
+
+
+FUNKTION
+========
+
+   void AddDetail(string|string* keys,
+                  string|string*|mapping|closure desc);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+
+BESCHREIBUNG
+============
+
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+       Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+           "rasse1": "r1text", ...]).
+
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer Details koennen Forscherpunkte eingetragen werden.
+
+
+BEISPIELE
+=========
+
+   Ein schlichtes Detail:
+
+     AddDetail(({"sofa","couch"}), "Eine kleine Couch.\n");
+
+   Laengere Details sollten hierbei nicht per Hand umgebrochen werden,
+   sondern man kann hierzu die Funktion break_string() nutzen:
+
+     AddDetail("detail", break_string(
+       "Du wolltest es ja nicht anders, jetzt musst Du Dir dieses "
+       "fuerchterlich lange Detail durchlesen!!!", 78));
+
+   Noetige Zeilenumbrueche bei Zeilenlaengen groesser 77 werden so
+   automatisch generiert.
+   Ein rassenabhaengiges Detail:
+
+     AddDetail(({"bett","bettchen"}),
+       ([0      :"Eine kleines Bett.\n", // Der Defaulttext
+         "zwerg":                        // Die Rasse klein schreiben
+               "Das Bett laedt geradezu zu einem Nickerchen ein.\n"]));
+
+   Und nun ein Detail mit Closure (diese Version ersetzt das Verhalten
+    von AddSpecialDetail).
+
+     int hebel_betaetigt;
+     ...
+     string hebel(string str); // Funktion bekannt machen (Prototyping)
+     ...
+     AddDetail(({"hebel","schalter"}), #'hebel);
+     ...
+     string hebel(string key) {
+       if(hebel_betaetigt)
+         return "Der "+capitalize(key)+" steht auf EIN.\n";
+       else
+         return "Der "+capitalize(key)+" steht auf AUS.\n";
+     }
+
+   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
+   ob das Flag hebel_betaetigt gesetzt ist oder nicht.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddDrink b/doc/sphinx/man/lfun/AddDrink
new file mode 100644
index 0000000..4d722ec
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddDrink
@@ -0,0 +1,18 @@
+
+AddDrink()
+**********
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion AddDrink() sollte NICHT MEHR BENUTZT werden.
+   Bitte AddToMenu() verwenden.
+
+
+SIEHE AUCH
+==========
+
+   AddToMenu(), RemoveFromMenu()
+
+Last modified: Fri Mar 03 13:23:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/lfun/AddExit b/doc/sphinx/man/lfun/AddExit
new file mode 100644
index 0000000..384975f
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddExit
@@ -0,0 +1,114 @@
+
+AddExit()
+*********
+
+
+FUNKTION
+========
+
+   void AddExit(string|string* cmd, closure|string dest);
+
+
+DEFINIERT IN
+============
+
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   string/string* cmd
+        die Richtung(en), in die der Ausgang fuehrt
+   string/closure dest
+        das Ziel des Ausgangs mit Text/Closure
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des
+   Ausgangs haengt ab von dest:
+
+   - ein String:
+     - mit einem Dateinamen:
+       Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet.
+     - der Form "<msg>#dateiname"
+       Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet,
+       bei der Benutzung wird jedoch statt "<name> geht nach <richtung>"
+       "<name> geht nach <msg>" ausgegeben.
+   - eine Closure:
+     Die Closure wird bei Nutzung des Ausgangs aufgerufen. Das entspricht
+     eine SpecialExit - in der gerufenen Funktion muss man den Spieler
+     selbst in den Zielraum bewegen.
+     Gegebenenfalls kann das durch AddCmd() ersetzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   Man kann fuer den Dateinamen des Zielraumes auch einen relativen Pfad
+   angeben. Die Auswertung erfolgt nach folgendem Schema:
+   - "./<dateiname>"
+     Es wird ein Zielraum relativ zum gleichen Verzeichnis wie dieser
+     Raum angesprochen.
+   - "../<dateiname>"
+     Es wird ein Zielraum relativ zur Verzeichnisebene ueber der
+     dieses Raumes angesprochen (analog mit mehrerern "../..")
+
+   Mittels P_HIDE_EXITS kann man Ausgaenge verstecken.
+
+   Bei der Benutzung eines Ausgangs wird der Hook H_HOOK_EXIT_USE
+   ausgeloest.
+
+
+BEISPIELE
+=========
+
+   ### normale Ausgaenge ###
+   // Beim Kommando "sueden" kommt: "<name> geht nach Sueden."
+   AddExit("sueden", "/gilden/abenteurer");
+
+   // Beim Kommando "sueden" kommt: "<name> geht in die Gilde."
+   AddExit("sueden", "in die Gilde#/gilden/abenteurer");
+
+   ### Ausgaenge mit relativen Pfaden ###
+   // Der Name des Raumes sei "/d/inseln/wargon/hafen1"
+   // Dieser Ausgang geht nach "/d/inseln/wargon/kneipe":
+   AddExit("norden", "./kneipe" );
+
+   // Und dieser nach "/d/inseln/anthea/anlege":
+   AddExit("sueden", "../anthea/anlege" );
+
+   ### dynamische Ausgaenge ###
+   // ein Ausgang soll nur von Froeschen benutzbar sein:
+
+   static int lochfkt(string dir);            // Prototyp
+   ...
+   AddExit("loch", #'lochfkt);
+   // auch identisch zu:
+   // AddSpecialExit("loch", #'lochfkt); [eine Closure] oder
+   // AddSpecialExit("loch", "lochfkt"); [ein Funktionsname]
+
+   static int lochfkt(string dir) {
+     if (!(this_player()->QueryProp(P_FROG))) {
+       // Kein Frosch => passt nicht!
+       notify_fail("Du bist zu gross!\n");
+       return 0;
+     }
+     // Meldungen werden im move() gleich mitgegeben
+     return this_player()->move("/room/loch", M_GO, 0,
+                  "huepft ins Loch", "huepft herein");
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/AddExp b/doc/sphinx/man/lfun/AddExp
new file mode 100644
index 0000000..a8bf488
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddExp
@@ -0,0 +1,56 @@
+
+AddExp()
+********
+
+
+FUNKTION
+========
+
+   int AddExp(int e)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   int e - Anzahl der hinzuzufuegenden (abzuziehenden) XP
+
+
+BESCHREIBUNG
+============
+
+   Dem Living werden e XP auf seine bisherigen P_XP addiert.
+
+   Falls es sich um einen Spieler mit P_KILLS>0 handelt und
+   e positiv ist, bekommt der Spieler keine XP gutgeschrieben.
+
+   P_LAST_XP wird aktualisiert.
+
+
+BEMERKUNG
+=========
+
+   - positive und negative Werte sind moeglich
+   - P_XP wird nicht <0 gesetzt.
+
+
+RUECKGABEWERT
+=============
+
+   int - neuer XP-Wert
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  do_damage(), DistributeExp()
+   Properties:  P_XP, P_LAST_XP
+   Sonstiges:   P_NO_XP, P_NO_SCORE
+                create_default_npc()
+
+14.Feb 2007 Gloinson
diff --git a/doc/sphinx/man/lfun/AddExtraLook b/doc/sphinx/man/lfun/AddExtraLook
new file mode 100644
index 0000000..7436f7e
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddExtraLook
@@ -0,0 +1,130 @@
+
+AddExtraLook()
+**************
+
+AddExtraLook() varargs int AddExtraLook(string look, [int duration,
+string key,
+
+   string lookende, object ob]);
+
+
+DEFINIERT IN
+============
+
+   /std/living/description.c
+
+
+BESCHREIBUNG
+============
+
+   Der Extralook erscheint in der Langbeschreibung des Lebewesens.
+   Eintraege koennen mit dieser Funktion hinzugefuegt werden. Dies ist der
+   bevorzugte Weg, wenn ansonsten extra ein Objekt im Spielerinventar abgelegt
+   werden muesste.
+
+
+
+   Alle Parameter bis auf <look> sind optional.
+
+
+ARGUMENTE
+=========
+
+   - string look:
+     String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
+     wird.
+     Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
+   - int duration:
+     > 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend
+          wird er automatisch geloescht.
+     0:   Dieser Eintrag bleibt unbegrenzt gueltig.
+     < 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
+   - string key:
+     Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
+     auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
+     moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der
+     Objektname (object_name()) benutzt.
+   - string lookende:
+     String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
+     eingetragene Extralook abgelaufen ist.
+     Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
+   - object ob:
+     Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
+     Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
+     der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
+     abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
+     Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
+     wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
+     etc. sorgen!
+     WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
+     ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier
+     einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
+
+
+RUECKGABEWERTE
+==============
+
+   > 0, falls der Eintrag erfolgreich registriert wurde.
+   < 0 sonst.
+     -1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
+     -2: <look> war kein gueltiger String.
+     -3: <duration> war kein Integer.
+     -4: unter <key> gibt es schon einen Eintrag.
+
+
+BEMERKUNGEN
+===========
+
+   Die Strings <look> und <lookende> werden vor Ausgabe durch
+   replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
+   usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
+   dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
+   Funktionen selber umbrechen, etc.
+   Nach replace_personal() werden die Strings noch von break_string() auf 78
+   Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
+   Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
+   Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
+   wird.
+
+
+BEISPIELE
+=========
+
+   # einfacher Eintrag, "fuer die Ewigkeit"
+   living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
+
+   # Eintrag der nach 1h automatisch weg ist.
+   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
+
+
+
+   # Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
+   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
+                        "humni_marmeladen_look");
+
+
+
+   # Mit "Ende"-Meldung, aber kein eigener Schluessel.
+   living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
+                        "Du bist endlich wieder trocken. Puuh.");
+
+
+
+   # Mit Objekt, was den Extralook dynamisch erzeugt
+   living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
+     In diesem Fall muss this_object() natuerlich die Funktion
+     "get_my_special_extralook()" definieren, die einen String zurueckgibt.
+
+   # Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
+   living->AddExtraLook("get_my_special_extralook", 3600, 0,
+                        "extralookende", this_object());
+
+
+SIEHE AUCH
+==========
+
+   RemoveExtraLook(),
+   replace_personal(), break_string()
+   P_INTERNAL_EXTRA_LOOK
+
+14.05.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/AddFixedObject b/doc/sphinx/man/lfun/AddFixedObject
new file mode 100644
index 0000000..5875ee2
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddFixedObject
@@ -0,0 +1,74 @@
+
+AddFixedObject()
+****************
+
+
+FUNKTION
+========
+
+   varargs void AddFixedObject(string str, int val, mixed ids);
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   str
+     Der absolute Filename eines Objekts, das in quasi beliebiger Menge
+     vom betreffenden Laden verkauft werden soll.
+   val
+     Sofern angegeben der angenommene Wert des Objekts. Falls val nicht
+     angegeben oder 0 ist, wird der Wert aus dem angegebenen Objekt
+     selbst ermittelt.
+     Der Verkaufspreis ist 3 * Wert des Objekts.
+   ids
+     String oder Stringarray mit der ID oder den IDs, ueber die man das
+     Objekt im Laden ansprechen kann. Falls nicht angegeben, wird die
+     ID-Liste aus der blueprint des Objekts ausgelesen.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man einem Laden mitteilen, dass ein Objekt
+   in ihm in unbegrenzter Anzahl verkauft werden soll.
+   WICHTIG: Das zu verkaufende Objekt sollte dies insofern unterstuetzen,
+   dass die Blueprint die notwendigen Informationen
+   (P_SHORT, P_IDS, P_VALUE, P_LONG, P_NAME) beinhaltet. Dies bedeutet im
+   einfachsten Fall, dass im create() auf
+     if (!clonep()) return;
+   verzichtet wird.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   AddFixedObject("/obj/fackel", 5000, "fackel");
+     Der Laden verkauft Fackeln zum Preis von 3*5000 Goldmuenzen und man
+     kann die Fackel (ausser ueber die Inventarnummer) nur mittels der
+     id "fackel" kaufen.
+
+
+
+   AddFixedObject("/obj/fackel");
+     Der Laden verkauft Fackeln zum dreifachen Wert dessen, was im Objekt
+     /obj/fackel.c angegeben ist (derzeit sind das 5 Muenzen) und laesst
+     alle IDs zu, die in /obj/fackel.c angegeben sind. Derzeit ist das
+     auch nur "fackel".
+
+
+SIEHE AUCH
+==========
+
+   RemoveFixedObject(), SetStorageRoom(), /std/store.c
diff --git a/doc/sphinx/man/lfun/AddFood b/doc/sphinx/man/lfun/AddFood
new file mode 100644
index 0000000..b870a5e
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddFood
@@ -0,0 +1,18 @@
+
+AddFood()
+*********
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion AddFood() sollte NICHT MEHR BENUTZT werden.
+   Bitte AddToMenu() verwenden.
+
+
+SIEHE AUCH
+==========
+
+   AddToMenu(), RemoveFromMenu()
+
+Last modified: Fri Mar 03 13:23:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/lfun/AddFuel b/doc/sphinx/man/lfun/AddFuel
new file mode 100644
index 0000000..cd0b25e
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddFuel
@@ -0,0 +1,51 @@
+
+AddFuel()
+*********
+
+
+FUNKTION
+========
+
+   void AddFuel(int fuel);
+
+
+DEFINIERT IN
+============
+
+   /std/lightsource.c
+
+
+ARGUMENTE
+=========
+
+   fuel
+        Die zusaetzliche Brenndauer in Sekunden.
+
+
+BESCHREIBUNG
+============
+
+   Die Brenndauer der Lichtquelle wird um fuel Sekunden verlaengert.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Es werden keine Checks durchgefuehrt! Wenn man seine Lichtquelle
+   nachfuellbar gestalten will, sollte die Nachfuellfunktion vor dem
+   AddFuel()-Aufruf nachsehen, wie voll die Lichtquelle noch ist, und fuel
+   entsprechend begrenzen.
+
+
+SIEHE AUCH
+==========
+
+   /std/lightsource.c
+
+Last modified: Wed May 8 10:16:39 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/AddFun b/doc/sphinx/man/lfun/AddFun
new file mode 100644
index 0000000..5ba6cf1
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddFun
@@ -0,0 +1,85 @@
+
+AddFun()
+********
+
+
+FUNKTION
+========
+
+   void AddFun(string fun, int next);
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   fun
+        Name der Funktion.
+   next
+        Zeit bis zur naechsten Fahrplanstation.
+
+
+BESCHREIBUNG
+============
+
+   Dem Fahrplan wird der Aufruf der Funktion fun, die im Transporter
+   definiert sein muss, hinzugefuegt. Nach Aufruf der Funktion vergehen
+   next Sekunden, bis die naechste Station angefahren wird.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Wenn ein zufaellig ausgewaehlter Passagier eines Schiffes unterwegs
+   seekrank werden soll, koennte man das wie folgt realisieren:
+
+   create()
+   {
+     ...
+
+     AddFun("seekrank", 5);
+     ...
+   }
+
+   seekrank()
+   {
+     object *passagiere, opfer;
+
+     // soll nicht immer passieren
+     if (random(5))
+       return;
+
+     // Opfer auswaehlen
+     passagiere = QueryPassengers();
+     if (sizeof(passagiere))
+       opfer = passagiere[random(sizeof(passagiere))];
+
+     // Und viel Spass...
+     tell_object(opfer,
+       "Du wirst seekrank! Schnell stuerzt Du zur Reling um  Dich zu\n"
+      +"uebergeben.\n");
+     tell_room(this_object(),
+       sprintf("%s ueberkommt die Seekrankheit!\n%s stuerzt an die Reling, "
+              +"um sich zu uebergeben.\n",
+               capitalize(opfer->name(WEN)),
+               capitalize(opfer->QueryPronoun(WER))), ({ opfer }) );
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddMsg(), /std/transport.c
+
+Last modified: Wed May 8 10:16:46 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/AddId b/doc/sphinx/man/lfun/AddId
new file mode 100644
index 0000000..8c2aa4e
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddId
@@ -0,0 +1,75 @@
+
+AddId()
+*******
+
+
+FUNKTION
+========
+
+   void AddId(string|string* ids);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   ids
+        String oder Array von Strings mit den Bezeichnungen, mit denen
+        sich sich das Objekt ansprechen lassen soll.
+
+
+BESCHREIBUNG
+============
+
+   Jedes Objekt sollte sich auf die eine oder andere Weise ansprechen
+   lassen. Zu diesem Zweck kann man dem Objekt mit dieser Funktion
+   Bezeichner uebergeben.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Jedes Objekt sollte man zumindest mit seiner Kurzbeschreibung
+   ansprechen koennen! Fuer Abfragen von Questobjeken o.ae. sollte man
+   zusaetzlich IDs verwenden, die Sonderzeichen wie "\n" oder "\t"
+   enthalten, damit sichergestellt ist, dass der Spieler auch wirklich die
+   richtigen Objekte dabeihat.
+
+
+BEISPIELE
+=========
+
+   AddId( "buch" );
+   AddId( "buechlein" );
+
+   Das Objekt laesst sich jetzt als "buch" und als "buechlein" ansprechen.
+
+   AddId( ({ "buch", "buechlein" }) );
+
+   Diese Zeile bewirkt das gleiche wie die obigen zwei Zeilen.
+
+   AddId( ({ "puzzle", "\nquest_puzzle" }) );
+
+   Der Spieler kann das Objekt als "puzzle" ansprechen, questrelevante
+   Objekte koennen mit der ID "\nquest_puzzle" nach ihm suchen.
+
+
+SIEHE AUCH
+==========
+
+   AddAdjective(), RemoveId(), id(), present(), /std/thing/description.c
+
+   -----------------------------------------------------------------------
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddInfo b/doc/sphinx/man/lfun/AddInfo
new file mode 100644
index 0000000..759a300
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddInfo
@@ -0,0 +1,243 @@
+
+AddInfo()
+*********
+
+
+FUNKTION
+========
+
+   varargs void AddInfo( frage, meldung
+                         [, indent [, [silent [, casebased] ] ] );
+
+
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+ARGUMENTE
+=========
+
+   string/string* frage
+      Schluesseltext(e) auf die Informationen gegeben werden sollen.
+   string/closure meldung
+      Information, die gegeben werden soll/Closure
+   string indent
+      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
+   int/string silent
+      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
+   string/closure casebased
+      Closure mit Returnwert string oder int.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
+   einer Information mit dem Schluessel 'frage' fragt, so wird die
+   entsprechende 'meldung' ausgegeben (oder die Closure in 'meldung'
+   gerufen und der zurueckgegebene Text ausgegeben). Der Meldung wird
+   der Name des Monsters vorangestellt.
+
+   Frage:
+    Schluessel muessen kleingeschrieben sein, koennen aber Leerzeichen
+    enthalten.
+
+   Meldung:
+    Wenn kein 'indent' angegeben ist, muss man die Meldung selbst
+    umbrechen.
+
+   Indent:
+    Wird ein 'indent' angegeben so wird jeder Zeile hinter dem
+    Monsternamen noch das 'indent' vorangesetzt. Zusaetzlich wird
+    'meldung' auf jeden Fall sauber umgebrochen.
+    Ein typisches indent ist "sagt: ".
+
+   Silent:
+    Bei 'silent'==1 erfolgt keine Textausgabe der Antwortmeldung im Raum,
+    ist 'silent' ein String, so wird jener an alle anderen Spieler ausser
+    dem Fragesteller im Raum ausgegeben.
+
+   Casebased:
+    Die als Closure angegebene Methode entscheidet, ob oder wie der NPC
+    auf diese Frage antworten soll:
+    - return 0:       normale Antwort mit "meldung"
+    - return 1:       keine Antwort/Antwort mit DEFAULT_NOINFO
+    - return string:  Antwort mit string unter Beruecksichtigung eines
+                      indent
+
+   Die Strings von 'silent' und 'meldung' werden geparsed.
+   Dabei koennen die @...-Tags von replace_personal() verwendet werden,
+   Objekt 1 ist this_player(). Ersetzte String am Satzanfang werden
+   automatisch gross geschrieben.
+   AddInfo() konvertiert die alten Schluesselworte @WER, @WESSEN, @WEM,
+   @WEN zu denen von replace_personal().
+
+   Mittels der in <npc.h> definierten Frage DEFAULT_INFO kann eine
+   Meldung gesetzt werden, die gegeben werden soll, wenn der Spieler
+   etwas fragt, auf das keine Antwort vorgegeben ist (das loest
+   SetProp(P_DEFAULT_INFO, <text>) ab).
+
+
+BEISPIELE
+=========
+
+   ### eine Standardantwort setzen ###
+   AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
+   // identisch zu
+   SetProp(P_DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
+
+   ### einfache Beispiele, auch mit casebased ###
+   AddInfo(({"knete","kohle"}),
+           "sagt: ich habe so etwas nicht.\n");
+   AddInfo("geld",
+           "Ich habe zwar kein Geld, aber ... blablabla ...",
+           "sagt: " );
+   AddInfo("muenzen",
+           "fluestert: Du willst Geld?\n",
+           0,
+           "fluestert @WEM etwas zu.\n");
+
+   // "frage monster nach geld": alle im Raum hoeren
+   //  Das Monster sagt: Ich habe zwar kein Geld, aber ...
+   //  Das Monster sagt: ... blablabla ...
+
+   // "frage monster nach muenzen":
+   // - der Fragensteller hoert:
+   //   "Das Monster fluestert: Du willst Geld?"
+   // - alle andere hoeren:
+   //   "Das Monster fluestert <Fragenstellernamen> etwas zu."
+
+   ### dynamisch ###
+   // ein Prototyp, damit wir die Methode bekannt machen
+   static string query_kekse();
+   ...
+   AddInfo(({"keks","kekse"}),
+           #'query_kekse,             // ein Verweis auf die Funktion
+           "sagt: ");
+   ...
+   static string query_kekse() {
+    if(present("keks"))
+     return("Ich hab noch welche. Aetsch!");
+    return("Menno. Keine mehr da!");
+   }
+
+   // "frage monster nach keks":
+   // - wenn es noch Kekse hat, hoeren alle:
+   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
+   // - sonst:
+   //   "Das Monster sagt: "Menno. Keine mehr da!
+
+   ### dynamischer ###
+   // ein Prototyp, damit wir die Methode bekannt machen
+   static string query_kekse();
+   static mixed case_fighting();
+   ...
+   AddInfo(({"keks","kekse"}),
+           #'query_kekse,"            // ein Verweis auf die Funktion
+           sagt: ",
+           0,                         // nicht silent :)
+           #'case_fighting);          // noch ein Funktionsverweis
+   ...
+   static string query_kekse() {
+    if(present("keks"))
+     return("Ich hab noch welche. Aetsch!");
+    return("Menno. Keine mehr da!");
+   }
+
+   static mixed case_fighting() {
+    if(InFight())
+     return("Keine Zeit fuer Kekse. Muss kaempfen.");
+    return 0;
+   }
+
+   // "frage monster nach keks":
+   // - wenn es kaempft, hoeren alle:
+   //   "Das Monster sagt: Keine Zeit fuer Kekse. Muss kaempfen.
+   // - sonst, wenn es noch Kekse hat, hoeren alle:
+   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
+   // - sonst:
+   //   "Das Monster sagt: "Menno. Keine mehr da!
+
+
+   ### dynamisch und komplex ###
+   // ein Prototyp, damit wir die Methode bekannt machen
+   static string question_gold();
+   ...
+
+   // "gold" wird eine Closure auf die Methode question_gold()
+   // zugewiesen, ausserdem soll es still bleiben (wir informieren
+   // den Restraum selbst)
+   AddInfo("gold",#'question_gold,"murmelt: ",1);
+   ...
+
+   // los gehts, wir generieren unsere Antwort selbst
+   static string question_gold() {
+    int money;
+    string *y, objstr;
+    object o;
+    // wieviel Kohle hat der Spieler
+    money=this_player()->QueryMoney();
+    y=allocate(0);
+    // und jetzt suchen wir die Dinge aus Gold
+    o=first_inventory(this_player());
+    while(o) {
+     if(o->QueryMaterial(MAT_GOLD)>0 &&
+        strstr(object_name(o),"/obj/money"))
+      y+=({o->name(WER,1)});
+     o=next_inventory(o);
+    }
+
+    // das geht an alle anderen im Raum, silent bietet sich hier
+    // nicht an, weil es mehrere Moeglichkeiten gibt
+    say(break_string(
+     Name(WER,1)+" murmelt "+
+     this_player()->name(WEM,1)+
+     " etwas zu"+
+     ((money || sizeof(y))?
+      " und glotzt "+
+      this_player()->QueryPronoun(WEN)+" gierig an.":
+      "."),78),({this_player()}));
+
+    // und hier die Antwort an den Spieler selbst, mit vielen
+    // Verzweigungen fuer dessen Besitztum
+    return("Ich hab kein Gold bei mir."+
+        ((money || sizeof(y))?
+         " Aber du "+
+         (money?"hast ja jede Menge Kohle bei dir, so etwa "+money+
+          " Muenzen."+
+          (sizeof(y)?
+           " Ausserdem "+
+           ((sizeof(y)==1)?"ist":"sind")+
+           " auch noch "+CountUp(y)+" aus Gold.":
+           ""):
+          (sizeof(y)?" Aber was du so bei dir hast: "+
+           CountUp(y)+
+           (sizeof(y)==1?" ist":" sind")+
+           " aus Gold.":"")):
+         ""));
+   }
+
+   // "frage monster nach gold"
+   // - der Fragesteller hoert zB:
+   //   Das Monster murmelt: Ich hab kein Gold bei mir. Aber du hast ja
+   //   Das Monster murmelt: jede Menge Kohle bei dir, so etwas <number>
+   //   Das Monster murmelt: Muenzen. Ausserdem ist/sind noch <object1>
+   //   Das Monster murmelt: und <object2> aus Gold."
+   // - die Umstehenden hoeren:
+   //   "Das Monster murmelt @WEM etwas zu."
+   //   oder
+   //   "Das Monster murmelt @WEM etwas zu und glotzt ihn/sie gierig an."
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  AddSpecialInfo(L), RemoveInfo(L)
+   Props:     P_PRE_INFO, P_DEFAULT_INFO
+   Files:     /std/npc/info.c
+   Loggen:    P_LOG_INFO
+   Interna:   GetInfoArr, do_frage
+
+7.Apr 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/AddItem b/doc/sphinx/man/lfun/AddItem
new file mode 100644
index 0000000..222b24d
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddItem
@@ -0,0 +1,184 @@
+
+AddItem()
+*********
+
+
+FUNKTION
+========
+
+   varargs object AddItem(mixed filename,int refresh,mixed props);
+
+
+DEFINIERT IN
+============
+
+   /std/room/items.c
+   /std/npc/items.c
+
+
+ARGUMENTE
+=========
+
+   filename
+     String mit dem Namen des zu erzeugenden Objektes oder Array von
+     Strings mit den Namen der zu erzeugenden Objekte. Bei einem Array
+     wird ein Name zufaellig ausgewaehlt.
+   refresh
+     Wann und wie soll das Objekt erneuert werden:
+     - REFRESH_NONE      - Kein Refresh bis zum Neuladen des Raums
+                   - oder NPCs.
+     - REFRESH_DESTRUCT  - Refresh bei Reset, wenn Item zerstoert
+                           wurde.
+     - REFRESH_REMOVE    - Refresh bei Reset, wenn Item entfernt wurde.
+     - REFRESH_ALWAYS    - Neuer Clone bei jedem Reset.
+     - REFRESH_MOVE_HOME - Objekt wird bei Reset automatisch
+                           zurueckgeholt, wenn es wegbewegt wurde.
+                           (nur in Raeumen!)
+     Bei NPC's gilt zusaetzlich:
+     - CLONE_WEAR       - Item Anziehen, wenn es eine Ruestung ist.
+     - CLONE_WIELD      - Item zuecken, wenn es eine Waffe ist.
+     - CLONE_NO_CHECK   - Zuecken oder Anziehen ohne Ueberpruefungen.
+   props (optional)
+     Mapping mit denen in einem geclonten Objekt zu setzenden
+     Properties oder 1 fuer die Erzeugung einer Blueprint.
+
+
+RUeCKGABEWERT
+=============
+
+   Innerhalb von Raeumen wird das erzeugte Objekt zurueckgeliefert. Bei
+   NPC's klappt dies leider nicht, da dort die Objekte nicht sofort
+   erzeugt werden, sondern erst, nachdem der NPC an seinen
+   Bestimmungsort transferiert wurde. Daher wird bei NPC immer 0
+   zurueckgegeben.
+
+
+BESCHREIBUNG
+============
+
+   Abhaengig von <filename> und <props> wird ein Objekt erzeugt und in
+   den Raum bzw. NPC bewegt. Dabei gibt es folgende Moeglichkeiten:
+   - <filename> ist ein Dateiname.
+     Es wird ein Clone dieser Datei erstellt oder (wenn <props>=1 ist)
+     deren Blueprint verwendet.
+   - <filename> ist ein Array von Dateinamen.
+     Es wird eine Datei zufaellig aus dem Array ausgewaehlt und von
+     dieser Datei ein Clone erstellt oder (wenn <props>=1 ist) deren
+     Blueprint verwendet.
+   Uebergibt man fuer <props> ein Mapping mit dem Aufbau
+     ([prop_name:prop_wert,...]),
+   so werden diese Properties im erzeugten Objekt gesetzt.
+   Der Parameter <refresh> gibt an, was waehrend eines Resets im Raum
+   bzw. in NPC's oder was beim Erzeugen von NPC's geschehen soll:
+   In <rooms.h> sind dazu folgende Moeglichkeiten definiert:
+   - REFRESH_NONE
+       Das Objekt wird niemals erneuert; falls es zerstoert wurde, wird
+       es erst dann wieder erzeugt, wenn der Raum erneut geladen bzw.
+       der NPC neu erzeugt wird. Man beachte, dass nicht jeder NPC
+       wirklich refreshende Objekte benoetigt, REFRESH_NONE spart
+       hierbei sowohl Rechenzeit als auch Speicher!
+   - REFRESH_DESTRUCT
+       Das Objekt wird nur dann erneuert, wenn es in der Zwischenzeit
+       zerstoert wurde (bei NPC's ist das zum Beispiel der Fall, wenn
+       sie getoetet wurden).
+       REFRESH_NONE & REFRESH_DESTRUCT + Blueprint-Objekt bedeutet bei
+       NPC's ein Unique-Objekt, es wird also nicht beim Neuerzeugen des
+       NPC's zurueckgesetzt.
+   - REFRESH_REMOVE
+       Das Objekt wird erneuert, wenn es sich nicht mehr im Raum bzw.
+       im NPC befindet. Das kein sein, weil es zerstoert wurde, aber
+       auch zum Beispiel in folgenden Faellen:
+       * weil es jemand mitgenommen hat
+          (in Raeumen bei Gegenstaenden)
+       * weil es fortgegangen ist
+          (in Raeumen bei NPC's, die herumlaufen)
+       * weil es weggeworfen wurde
+          (in NPC's bei Gegenstaenden)
+   - REFRESH_ALWAYS
+       Das Objekt wird immer erneuert. Von dieser Refreshmethode sollte
+       man allerdings Abstand nehmen, da sich sonst mit der Zeit
+       gewaltige Mengen von Objekten ansammeln koennen!
+   - REFRESH_MOVE_HOME
+       Das Objekt wird in einen Raum zurueckbewegt, sofern es noch
+       existiert, jedoch nicht mehr in dem Raum ist. Sinnvoll ist dies
+       eigentlich nur fuer Lebewesen, funktioniert aber auch bei
+       beliebigen Objekten. Hauptsaechlich geht es hierbei darum,
+       herumlaufende NPCs oder bei erzwungenen Bewegungen nicht von
+       P_GUARD zurueckgehaltene NPCs wieder an einen definierten
+       Ausgangsort zurueckzubringen.
+   Hat man in Raeumen als <filename> ein Array von Dateinamen
+   uebergeben, so wird beim Reset jedesmal aufs Neue ein zufaelliges
+   Objekt aus der Liste ausgewaehlt (nicht in NPC's).
+   In NPC's gilt der Grundsatz der Vermeidung von ueberfluessigen
+   Objekten im MUD. Neu erzeugt werden Objekte beim Erzeugen eines
+   NPC's oder bei einem Reset im selbigen. Anstatt die Objekte gleich
+   neu zu erschaffen, wird erst geschaut, ob sich identische Objekte
+   schon im Raum befinden. Ist dies der Fall, so nimmt der NPC sie auf,
+   ruft jedoch vorher nochmals create() in ihnen auf!
+     (noetig wegen moeglicher Veraenderungen an den Objekten)
+   Was dann passiert, haengt von weiteren Angaben in <refresh> ab.
+   Folgende weitere Moeglichkeiten sind in <npc.h> definiert:
+   - CLONE_WEAR
+     Ist das hinzugefuegte Item eine Ruestung, so wird sie nach
+     Aufnahme oder Neuerzeugung angezogen.
+   - CLONE_WIELD
+     Ist das hinzugefuegte Item eine Waffe, so wird sie nach Aufnahme
+     oder Neuerzeugung gezueckt.
+   - CLONE_NO_CHECK
+     Hiermit verhindert man eine Ueberpruefung, ob eine Ruestung
+     angezogen oder eine Waffe gezueckt werden kann. Es ist jedoch
+     Vorsicht geboten: So kann es ohne weiteres passieren, dass ein NPC
+     mehrere Ruestungen gleichen Typs angezogen oder mehrere Waffen
+     gezueckt hat.
+   Benutzt man Blueprints (<props>=1) mit REFRESH_REMOVE oder
+   REFRESH_ALWAYS, so kann es zu ungewollten Ueberraschungen kommen, da
+   die Blueprint dann unabhaengig von ihrem momentanen Aufenthaltsort
+   wieder in den Raum bzw. NPC bewegt wird, von dem sie erzeugt wurde!
+
+
+BEMERKUNGEN
+===========
+
+   Wenn man Blueprints benutzt, sollte man daran denken, dass sich von
+   dieser dann keine Clones mehr erstellen lassen!
+   RemoveItem() zum Entfernen von Items ist nur fuer Raeume definiert!
+
+   Die Option CLONE_NEW ist veraltet. Die Objekte werden nun immer
+   neu erzeugt. Die Option darf noch angegeben werden, hat aber keine
+   Bedeutung mehr.
+
+
+BEISPIELE
+=========
+
+   // Ein Wuerfel, der sich nach Entfernen erneuert:
+     AddItem("/obj/misc/wuerfel",REFRESH_REMOVE);
+   // Ein etwas veraenderter Wuerfel:
+     AddItem("/obj/misc/wuerfel",
+             REFRESH_REMOVE,
+             ([P_SHORT :"Ein schwerer Wuerfel",
+               P_WEIGHT:100]));
+   // Eine Blueprint, die nur einmal im MUD existiert. Wenn sie
+   // zerstoert wurde, wird sie bei Reset neu erzeugt:
+     AddItem("/mon/angsthase",REFRESH_DESTRUCT,1);
+   // Eine Blueprint, die nur einmal im MUD existiert. Wenn sie aus dem
+   // Raum entfernt wurde, wird sie bei Reset zurueckgeholt:
+     AddItem("/mon/angsthase",REFRESH_MOVE_HOME,1);
+   // Ein zufaelliges Objekt:
+     AddItem(({"/obj/misc/lolli",
+               "/obj/misc/bonbon",
+               "/obj/misc/bier"}),REFRESH_REMOVE);
+   // Eine Ruestung, die auch angezogen wird (nur in NPC's):
+     AddItem("/ruestung/sommerkleid",REFRESH_REMOVE|CLONE_WEAR);
+   // Eine Unique-Waffe, die auch gezueckt wird (nur in NPC's):
+     AddItem("/waffe/zapper",REFRESH_DESTRUCT|CLONE_WIELD,1);
+
+
+SIEHE AUCH
+==========
+
+   RemoveItem(), replace_program(), create(), P_GUARD,
+   /std/room/items.c, /std/npc/items.c,
+   /sys/rooms.h, /sys/npc.h
+
+Last modified: Thu Nov 23 13:43:30 CET 2006 by Rumata
diff --git a/doc/sphinx/man/lfun/AddKnownPotion b/doc/sphinx/man/lfun/AddKnownPotion
new file mode 100644
index 0000000..874e55c
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddKnownPotion
@@ -0,0 +1,45 @@
+
+AddKnownPotion()
+****************
+
+
+FUNKTION
+========
+
+   int AddKnownPotion(int nr)
+
+
+DEFINIERT IN
+============
+
+   /std/player/potion.c
+
+
+ARGUMENTE
+=========
+
+   int nr       Nummer eines ZTs
+
+
+BESCHREIBUNG
+============
+
+   Addiert einen ZT als bekannt in einem Spieler. Nur vom Orakel rufbar.
+
+
+RUeCKGABEWERT
+=============
+
+   1  Erfolg
+   -1 fehlende Berechtigung
+   -2 Nummer bereits eingetragen
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/lfun/AddMaterial b/doc/sphinx/man/lfun/AddMaterial
new file mode 100644
index 0000000..7f90d82
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddMaterial
@@ -0,0 +1,100 @@
+
+AddMaterial()
+*************
+
+
+FUNKTION
+========
+
+   private static varargs void AddMaterial(string mat, int gender,
+                                           mixed names, mixed groups,
+                                           mixed dif) {
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   string mat
+     Materialstring, definiert in <thing/material.h>
+
+   int gender
+     Geschlecht des einzutragenden Materials
+
+   mixed names
+     Name des Materials:
+     - "<Nominativ>" oder (meist nur Nom. und Gen. noetig)
+     - ({"<Nominativ>","<Genitiv>","<Dativ>","<Akkusativ>"})
+
+   mixed groups
+     Eingruppierung des Materials:
+     - MATGROUP_XXX oder ({MATGROUP_XXX,...})
+     - ([MAT_GROUP_XXX:xx,MATGROUP_YYY:yy,...])
+
+   mixed dif
+     Schwierigkeiten bei der Erkennbarkeit:
+     - int x oder ({MINMAT,x1,MATPOS1,x2,MATPOS2 ...})
+     - xn: Erkennbarkeitsschwierigkeit (100=100%) -100..100
+     - MINMAT: Erkennung zumindest als _dieses_ Material
+               moeglich
+     - MATPOSn: moegliches Material, erkennbar, wenn
+                Erkennbarkeitfaehigkeit>=xn
+                -> das letzte MATPOS muss natuerlich
+                   string mat entsprechen
+
+
+BESCHREIBUNG
+============
+
+   Es wird in die Materialiendatenbank eine neues Material aufgenommen,
+   die Stringkonstante dafuer wird vorher in <thing/material.h> fest-
+   gelegt. Falls der Genitiv nicht Nominativ+"s" entspricht (z.B. "Seide"),
+   sollte dieser explizit angegeben werden.
+   Nach Neuladen der Datenbank ist dieses Material auch per MaterialName(),
+   'erkennbar' (siehe mixed dif, siehe Beispiel) bzw. seinen einzelnen
+   Gruppen zuordnbar.
+
+
+BEISPIELE
+=========
+
+   AddMaterial(MAT_NITROGLYCERINE,NEUTER,"Nitroglycerin",
+               ({MATGROUP_EXPLOSIVE,MATGROUP_FLUID}),
+               ({MAT_OIL,25,MAT_MISC_EXPLOSIVE,50,MAT_NITROGLYCERINE}));
+
+   Damit wird das Material Nytroglycerin aufgenommen, ein explosiver
+   (damit entflammbarer) sowie fluessiger Stoff. Liegt die Erkennungs-
+   faehigkeit (MaterialName()) unter 25, wird es nur als Oel erkannt,
+   liegt sie unter 50, wird es zumindest als explosives Material erkannt,
+   liegt sie ueber 49, so wird es korrekt erkannt (wie schade :) ).
+
+
+BEMERKUNGEN
+===========
+
+   Wird in der create() der Datenbank aufgerufen. Zu beachten:
+   - vor Eintrag eines _neuen_ Materials die Datenbank durchsuchen!
+   - bei den Materialiengruppen die automatischen Abhaengigkeiten in
+     AddMaterial() durchsehen!
+   - bitte Datenbank neu laden
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/AddMiniQuest b/doc/sphinx/man/lfun/AddMiniQuest
new file mode 100644
index 0000000..787e718
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddMiniQuest
@@ -0,0 +1,71 @@
+
+AddMiniQuest()
+**************
+
+
+FUNKTION
+========
+
+   int AddMiniQuest(int stupse, string questgeber, string desc, int active,
+                    string titel, string erledigt, mapping voraussetzungen,
+                    string region, string *erlaubte)
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion traegt eine neue Miniquest im Questmaster ein.
+
+
+ARGUMENTE
+=========
+
+   stupse (>0)  - Anzahl Stufenpunkte, die fuer die MQ gutgeschrieben werden
+   questgeber   - Ladename des Objekts, das GiveMiniQuest() aufruft
+   desc         - Aufgabenbeschreibung der Miniquest
+   active (0/1) - ist die Miniquest aktiv, d.h. spielbar, oder nicht?
+   titel        - Titel der Miniquest, darf weder "in", noch "im" enthalten,
+                  weil dann der Eintrag in der Fraternitas-Bibliothek nicht
+                  gelesen werden kann.
+   erledigt     - Beschreibung der Miniquest, nachdem man sie erledigt hat
+                  Der Text kann in der Bibliothek der kleinen und grossen
+                  Heldentaten in der Fraternitas eingesehen werden.
+   voraussetzungen - Mapping im Format von P_RESTRICTIONS (s. dort), um
+                  die Voraussetzungen festzulegen, die ein Spieler
+                  erfuellen muss, um die MQ ueberhaupt spielen zu koennen
+                  Wird fuer die regionsbezogenen Informationspunkte/-NPCs
+                  ausgewertet. 0 oder ([]) eintragen, wenn keine
+                  Voraussetzungen bestehen.
+   region       - Zuordnung der Miniquest zu einer Region; wird fuer der
+                  Bibliothek der Fraternitas verwendet, um die MQs der
+                  einzelnen Regionen herauszufiltern.
+   erlaubte     - Array mit Ladenamen von Objekten, die berechtigt sind,
+                  die Daten der MQ abzufragen, um Spielern einen Hinweis
+                  darauf zu geben, die sie noch nicht bestanden haben.
+
+
+RUECKGABEWERTE
+==============
+
+    1: Hat geklappt
+   -1: Parameterformat stimmt nicht (questgeber kein String oder Leerstring,
+       voraussetzungen kein Mapping, region oder titel keine Strings,
+       erlaubte kein Array)
+   -2: weniger als 1 Stufenpunkt einzutragen versucht
+   -3: Das Array in "erlaubte" ist leer, oder zum angegebenen Questgeber
+       wurde keine Datei gefunden.
+   -4: Der angegebene Questgeber vergibt schon eine andere Miniquest
+
+
+SIEHE AUCH
+==========
+
+   GiveMiniQuest(L), HasMiniQuest(L)
+   P_RESTRICTIONS
+   /secure/questmaster.c
diff --git a/doc/sphinx/man/lfun/AddMoney b/doc/sphinx/man/lfun/AddMoney
new file mode 100644
index 0000000..b9e16b2
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddMoney
@@ -0,0 +1,92 @@
+
+AddMoney()
+**********
+
+
+AddMoney(L)
+===========
+
+
+FUNKTION
+========
+
+   public int AddMoney(int amount);
+
+
+DEFINIERT IN
+============
+
+   /std/container/moneyhandler.c
+   /std/living/moneyhandler.c
+   /std/player/moneyhandler.c
+
+
+ARGUMENTE
+=========
+
+   int amount
+       Die zufuehrende oder abziehende Geldmenge
+
+
+BESCHREIBUNG
+============
+
+   Dem Spieler wird die in <amount> festgelegte Geldmenge abgezogen oder
+   zugefuehrt.
+
+
+RUeCKGABEWERT
+=============
+
+   Technisch gesehen wird Geld mit entsprechendem <amount> erzeugt
+   ("/items/money.c") und mittels "move" in den Spieler bewegt.  Das Ergebnis
+   dieses "move"-Aufrufes wird hier uebergeben, z.B. 1 fuer OK.
+   Die moeglichen Fehler-Konstanten sind in /sys/moving.h definiert, siehe
+   auch Dokumentation zu "move".
+
+
+BEMERKUNGEN
+===========
+
+   <amount> kann sowohl positiv als auch negativ sein. Welche Auswirkungen
+   beide Faelle haben, sollte klar sein. Doch sollte bei einem negativen
+   <amount> vorher mittels QueryMoney() abgefragt werden, ob der Spieler
+   auch ueber ausreichend Geld verfuegt.
+   Wird dem Spieler Geld abgezogen, ist darauf zu achten, dieses in der
+   Zentralbank einzuzahlen (s.a.:PayIn() ).
+   Verschafft man dem Spieler Geld aus dem Nichts, muss es vorher bei der
+   Zentralbank abgebucht (WithDraw()) werden.
+
+   Achtung: Kann der Spieler die in <amount> angebene Geldmenge nicht
+            tragen, werden ihm keine Muenzen in sein Inventar bewegt.  Die
+            Fehlermeldung erkennt man an dem Rueckgabewert ME_TOO_HEAVY.
+
+   Im Gegensatz zu Spielern haben alle anderen Objekte (Raeume, NPC, etc.)
+   standardmaessig keinen Moneyhandler. In diesem Fall muss in Lebewesen
+   "/std/living/moneyhandler"
+   und in nicht-Lebewesen
+   "/std/container/moneyhandler"
+   geerbt werden.
+
+
+BEISPIELE
+=========
+
+   // gib ihm Geld
+   this_player()->AddMoney(50);
+
+   // nimm ihm Geld
+   if(this_player()->AddMoney(-50)==1)
+    write("Der Ork beklaut dich!\n");
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      QueryMoney(L)
+   Zentralbank:       PayIn(L), WithDraw(L)
+   Sonstiges:         move(L),
+                      /items/money.c, /sys/moving.h, /sys/money.h, /sys/bank.h
+                      /std/container/moneyhandler.c
+
+18.02.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/AddMsg b/doc/sphinx/man/lfun/AddMsg
new file mode 100644
index 0000000..9faad47
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddMsg
@@ -0,0 +1,62 @@
+
+AddMsg()
+********
+
+
+FUNKTION
+========
+
+   void AddMsg(string msg, int next);
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   msg
+        Die auszugebende Meldung.
+   next
+        Zeit bis zur naechsten Fahrplanstation.
+
+
+BESCHREIBUNG
+============
+
+   Dem Fahrplan wird die Ausgabe einer Meldung an den Transporter
+   hinzugefuegt. Diese Meldung koennte zum Beispiel das Nahen der
+   naechsten Haltestelle ankuendigen o.ae. Nach Ausgabe der Meldung
+   vergehen next Sekunden, bis die naechste Station angefahren wird.
+
+   Um das Umbrechen der Meldung (normalerweise auf 78 Zeichen pro Zeile)
+   muss sich der Aufrufer selber kuemmern.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   AddMsg("In der Ferne taucht eine kleine Inseln auf.\n", 10);
+   AddMsg("Das Schiff steuert einen kleinen Steg an.\n");
+   AddRoute(...);
+
+   Nach der Ankuendigung der Insel vergehen 10 Sekunden, bis die naechste
+   Meldung ausgegeben wird. Da bei der zweiten Meldung keine Zeit
+   angegeben war, legt das Schiff direkt nach der Ausgabe der Meldung an.
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddFun(), /std/transport.c
+
+25.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddPlant b/doc/sphinx/man/lfun/AddPlant
new file mode 100644
index 0000000..ae2df8b
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddPlant
@@ -0,0 +1,84 @@
+
+AddPlant()
+**********
+
+
+FUNKTION
+========
+
+   varargs int AddPlant(string filename, [string|string* npcId])
+
+
+DEFINIERT IN
+============
+
+   /std/room/kraeuter.c
+
+
+ARGUMENTE
+=========
+
+   filename
+     Der Filename des Krauts das hier gefunden werden soll.
+   npcId
+     Die ID eines NPCs oder die IDs einer Liste von NPCs, der/die das
+     Kraut bewachen soll/en. Befindet sich ein NPC mit einer dieser IDs
+     im Raum, kann das Kraut nicht gepflueckt werden. Dieses Argument
+     ist optional!
+
+
+RUeCKGABEWERT
+=============
+
+   -1 wenn das Objekt nicht geclont werden konnte
+   >=0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Mit Hilfe dieser Funktion koennen Kraeuter fuer den mudweiten
+   Kraeuterskill recht einfach eingebaut werden. Alles was man
+   noch machen muss, ist den Namen der Pflanze in einem Detail oder
+   der Langbeschreibung zu erwaehnen.
+   Mit dem Befehl "showplant" in /obj/tools/planttool kann man sich
+   bequem anzeigen lassen, was es alles an Kraeutern gibt, die man
+   nehmen kann.
+
+
+BEMERKUNGEN
+===========
+
+   Damit die Kraeuter von den Spielern zum Brauen von Traenken benutzt
+   werden koennen, muss der Raum erst in einem Master eingetragen werden.
+   Derzeit schickt ihr dazu am besten eine kurze Mail an einen Erzmagier,
+   gerne nimmt Humni die derzeit entgegen.
+   Die Kraeuter wurden von der Balance bereits alle im vorhinein
+   abgenommen. Lediglich die Einhaltung der Kategorien ist zu beachten.
+   Sind Kraeuter nicht im Master konfiguriert (wie z.B. im Homemud), sind
+   alle erzeugten Kraeuter nur "Testkraeuter" mit nur der ID "kraut".
+
+
+BEISPIELE
+=========
+
+   #include <items/kraeuter/kraeuterliste.h>
+   inherit "/std/room/kraeuter";
+   inherit "/std/room";
+
+
+
+   void create()
+   {
+     ::create();
+     SetProp(P_INT_LONG, "Du siehst eine Wiese voller Feldklee.\n");
+     AddPlant(FELDKLEE);
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddItem();
+
+18.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddPluralId b/doc/sphinx/man/lfun/AddPluralId
new file mode 100644
index 0000000..8d6d249
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddPluralId
@@ -0,0 +1,49 @@
+
+AddPluralId()
+*************
+
+
+FUNKTION
+========
+
+   void AddPluralId(mixed id);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   id
+        Identfikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner hinzugefuegt, mit denen sich
+   mehrere Einheiten der Menge ansprechen lassen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   AddSingularId(), RemovePluralId(), AddId(), id(), /std/unit.c
+
+Last modified: Mon Jul 14 11:30:00 1997 by Silvana
diff --git a/doc/sphinx/man/lfun/AddPursuer b/doc/sphinx/man/lfun/AddPursuer
new file mode 100644
index 0000000..f4839e6
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddPursuer
@@ -0,0 +1,52 @@
+
+AddPursuer()
+************
+
+
+FUNKTION
+========
+
+   void AddPursuer(object pursuer)
+
+
+ARGUMENTE
+=========
+
+   pursuer: Objekt, das demjenigen folgen soll, in dem AddPursuer
+            aufgerufen wurde.
+
+
+FUNKTION
+========
+
+   Durch den Aufruf von AddPursuer in einem Objekt, welches living() ist,
+   wird das Object, welches als Argument uebergeben wurde in die Liste
+   der Verfolger eingetragen. Alle Objekte, die in der Verfolgerliste stehen
+   werden bei Bewegungen des Verfolgten in dasselbe Environment bewegt.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNG
+=========
+
+   Im Verfolger wird PreventFollow mit dem Zielobjekt, in das der Verfolgte
+   bewegt wird, aufgerufen. Dadurch kann der raeumliche Bereich, in dem
+   verfolgt wird, eingeschraenkt werden.
+
+
+BEISPIELE
+=========
+
+   find_player("jof")->AddPursuer(find_player("kirk"))
+   Danach wird Jof von Kirk verfolgt.
+
+
+SIEHE AUCH
+==========
+
+   "RemovePursuer", "PreventFollow"
diff --git a/doc/sphinx/man/lfun/AddReadDetail b/doc/sphinx/man/lfun/AddReadDetail
new file mode 100644
index 0000000..7f36aa4
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddReadDetail
@@ -0,0 +1,102 @@
+
+AddReadDetail()
+***************
+
+
+FUNKTION
+========
+
+   void AddReadDetail(string|string*keys,
+                      string|string*|mapping|closure desc);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+
+BESCHREIBUNG
+============
+
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   beim Lesen ausgegeben werden, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+      Beim Lesen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+      Beim Lesen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+           "rasse1": "r1text", ...]).
+
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Texte moeglich.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer lesbare Details koennen Forscherpunkte eingetragen werden.
+
+   Will man ein lesbares Detail an einem Objekt haben, welches der Spieler
+   mit "lies <id>" (<id> ist eine ID des Objekts) bekommt, muss man ein
+   Detail SENSE_DEFAULT hinzufuegen.
+   (Ein Detail "<id>" hinzuzufuegen, hat einen ganz anderes Effekt! Dieses
+    wuerde vom Spieler mit "lies <id> an <id>" gelesen werden und ist
+    meistens nicht das, was gewuenscht wird.)
+
+
+BEMERKUNGEN
+===========
+
+   (1) Auf die 'desc' wird kein process_string() mehr angewendet.
+       Bitte stattdessen lfun closures bzw. 'inline closures'
+       verwenden.
+
+   (2) Im Gegensatz zum Verhalten von AddTouchDetail(), AddSmells() und
+       AddSounds() wirkt ein SENSE_DEFAULT-Detail in einem Raum nicht.
+       Ein einfaches "lies" bleibt dann ohne Rueckgabewert.
+
+
+BEISPIELE
+=========
+
+   AddReadDetail( ({ "schild" }),
+     "BETRETEN STRENGSTENS VERBOTEN!\n" );
+
+   AddReadDetail("inschrift",
+                 ([0: "Dort steht: Ein Ring sie zu binden. ....\n",
+                   "elf": "Alles in dir straeubt sich, DAS DA zu lesen.\n"]));
+
+   AddReadDetail("regeln",
+     function string() {
+       this_player()->More("/etc/WIZRULES", 1);
+       return "";
+     });
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddResistanceModifier b/doc/sphinx/man/lfun/AddResistanceModifier
new file mode 100644
index 0000000..b8a5ad8
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddResistanceModifier
@@ -0,0 +1,75 @@
+
+AddResistanceModifier()
+***********************
+
+
+FUNKTION
+========
+
+   varargs int AddResistanceModifier(mapping mod, string add)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   mapping mod:
+    Mapping mit Schadensarten und ihrem Resistenzmodifikator (der im Bereich
+    von -1.0 bis +x liegen kann), z.B. ([DT_FIRE:-1.0]) (Totalresistenz).
+   string add:
+    Ein Identifikator fuer _diesen_ Eintrag des setzenden Objektes.
+
+
+BESCHREIBUNG
+============
+
+   Es werden Resistenzen in dem Objekt gesetzt, die solange bestehen, wie
+   das setzende Objekt existiert, oder nicht RemoveResistanceModifier
+   (mit eventuellem Schluessel add) aufgerufen wird. Zusaetzliche Resistenzen
+   werden eingerechnet.
+
+
+BEMERKUNGEN
+===========
+
+   Fuer Ruestungen kann und sollte man P_RESISTANCE_STRENGTHS verwenden.
+
+
+BEISPIELE
+=========
+
+   // Oel mit vervierfachtem Feuerschaden
+   int add_action() {
+    ...
+    write(break_string("Du schuettest das Oel ueber "+
+                       npc->name(WEN)+".",78));
+    ...
+    npc->AddResistanceModifier(([DT_FIRE:3.0]), "oel");
+    SetProp(P_INVIS,1);
+    SetProp(P_EXTRA_LOOK, "Ueberall tropft Oel herunter.\n");
+    move(npc,M_NOCHECK);
+    ...
+   }
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     RemoveResistanceModifier(), P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
+
+29.Apr 2002, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/AddRoomCmd b/doc/sphinx/man/lfun/AddRoomCmd
new file mode 100644
index 0000000..f4aeb68
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddRoomCmd
@@ -0,0 +1,23 @@
+
+AddRoomCmd()
+************
+
+
+SYNTAX
+======
+
+   AddRoomCmd( string kommando, string funktion );
+   AddRoomCmd( string *kommandos, string funktion );
+
+
+FUNKTION
+========
+
+   Diese Funktion ist veraltet. Sie wird vollstaendig durch
+   die Funktion AddCmd ersetzt.
+
+
+SIEHE AUCH
+==========
+
+   "AddCmd"
diff --git a/doc/sphinx/man/lfun/AddRoomMessage b/doc/sphinx/man/lfun/AddRoomMessage
new file mode 100644
index 0000000..aa700c1
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddRoomMessage
@@ -0,0 +1,103 @@
+
+AddRoomMessage()
+****************
+
+
+FUNKTION
+========
+
+   void AddRoomMessage(string *msg, int time, mixed *func);
+
+
+DEFINIERT IN
+============
+
+   /std/room/description.c
+
+
+ARGUMENTE
+=========
+
+   msg
+        Array von Strings mit den Meldungen.
+   time
+        Der Abstand zwischen zwei Meldungen in Sekunden.
+   func (optional)
+        String oder Array von Strings mit Funktionsnamen
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion legt man fest, dass in bestimmten Zeitabstaenden
+   Meldungen an den Raum geschickt werden sollen.
+
+   Es wird alle time Sekunden zufaellig eine der in msg angegebenen
+   Meldungen ausgegeben. Hat man auch noch func angegeben, so wird
+   zusaetzlich diese Funktion (bei einem Array: eine zufaellig ausgesuchte
+   Funktion) im Raum aufgerufen. Als Parameter bekommt die Funktion die
+   Nummer der ausgegebenen Meldung.
+
+   Bevor man allerdings jeden Raum mit AddRoomMessage() pflastert, sollte
+   man folgendes bedenken:
+      o Viele Meldungen in vielen Raeumen tendieren dazu, den Spielern auf
+        die Nerven zu gehen!
+      o Da das Timing ueber einen call_out() gesteuert wird, ist das Ganze
+        aus Sicht des GameDrivers auch noch relativ teuer!
+   Fazit: weniger ist mehr!
+
+
+BEMERKUNGEN
+===========
+
+   * Falls time < 15 Sekunden ist, wird auf 15 Sekunden aufgerundet.
+   * der Praefix Add... taeuscht hier. Ein Aufruf von AddRoomMessage()
+     ueberschreibt alle vorherigen Werte
+   * THIS_PLAYER() NICHT VERWENDEN!
+   In Funktionen, die durch AddRoomMessage() ausgeloest werden, darf
+   this_player() nicht verwendet werden. AddRoomMessage ist call_out-
+   gesteuert und speichert somit das this_player(). Damit ist this_player()
+   immer der Spieler, der den Raum geladen, also den Raum als erster
+   betreten hat.
+   Spieler also bitte selbst ueber filter(all_inventory(this_object()),
+                                          #'interactive) suchen.
+
+
+BEISPIELE
+=========
+
+   Es soll alle halbe Minute eine Meldung ausgegeben werden. Falls es
+   unter den Fuessen knackt, soll man zudem mit 30%-iger
+   Wahrscheinlichkeit zusammenzucken:
+
+   inherit "/std/room";
+
+   void create() {
+     ::create();
+     AddRoomMessage( ({ "In der Ferne schreit ein Kaeuzchen.\n",
+                        "Es raschelt im Gebuesch.\n",
+                        "Etwas knackt unter Deinen Fuessen.\n" }),
+                      30, ({"sound", "sound_more_rnd"}) );
+     ...
+   }
+
+   void sound(int msg) {
+     if (msg == 2)         // Es hat geknackt...
+       if (random(10) < 3) // Schreck lass nach! ;-)
+         tell_room(this_object(), "Erschrocken faehrst Du zusammen!\n" );
+   }
+
+   // Extra-Beispiel: wir setzen die Wartedauer (Parameter tim) neu
+   void sound_more_rnd() {
+     sound(0);   // die Message-Nummer ist hier unwichtig
+     SetProp(P_MSG_PROB, 25+random(20));  // neue Wartedauer
+   }
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: tell_room(), ReceiveMsg()
+   Props:    P_ROOM_MSG, P_FUNC_MSG, P_MSG_PROB
+
+2.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/lfun/AddRoute b/doc/sphinx/man/lfun/AddRoute
new file mode 100644
index 0000000..265fa8a
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddRoute
@@ -0,0 +1,114 @@
+
+AddRoute()
+**********
+
+
+FUNKTION
+========
+
+   public varargs void AddRoute(string room, int stay, int next,
+       string harbour_desc, mixed dest_ids, string deststr)
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   string room
+       Filename der Haltestelle (des Ziels)
+   int stay
+       Aufenthaltszeit an der Haltestelle.
+   int next
+       Fahrtzeit von dort bis zum naechsten Fahrplanpunkt
+   string harbour_desc
+       Name der Haltestelle (fuer QueryArrived)
+   mixed dest_ids
+       kleingeschriebene IDs der Haltestelle
+   string destrstr
+       Unbenutzt / Undefiniert.
+
+
+BESCHREIBUNG
+============
+
+   Dem Fahrplan des Transporters wird eine neue Haltestelle hinzugefuegt.
+
+   Bei Erreichen der Haltestelle wird der Transporter in den Raum 'room'
+   bewegt und sichtbar gemacht. Nun kann man ihn fuer 'stay' Sekunden
+   betreten oder verlassen, bevor er ablegt (unsichtbar gemacht wird).
+   Nach 'next' Sekunden wird dann der naechste Punkt des Fahrplans
+   ausgefuehrt.
+
+
+
+   'harbour_desc' ist ein String, den QueryArrived() zurueckgibt, wenn sich
+   der Transporter an einer Haltestelle befindet. In der Regel ist das ein
+   String, der die Haltestelle naeher beschreibt.
+
+
+
+   'dest_ids' ist ein Array von Strings, die als ID-Code fuer diese
+   Haltstelle dienen. Das wird zB bei der Ermittlung einer Haltestelle bei
+   "reise nach" benutzt. Wenn 'dest_ids' nicht gesetzt ist, und auch
+   P_HARBOUR des Zielhafens nicht korrekt gesetzt ist, werden
+   grossgeschriebene Begriffe aus 'harbour_desc' verwendet.
+
+
+BEISPIELE
+=========
+
+   #1 Hier ein Auszug aus /d/inseln/schiffe/jolle.c:
+
+     AddRoute("/d/ebene/room/PortVain/po_haf2", 40,
+              10, "Hafen von Port Vain");
+
+   Die Jolle wird also beim Anlegen in den Port Vainer Hafen bewegt und
+   laesst sich dort 40 Sekunden lang betreten oder verlassen.
+   QueryArrived() liefert waehrend dieser Zeit den String "Hafen von Port
+   Vain" zurueck. Nach den 40 Sekunden legt die Jolle ab, und nach
+   weiteren 10 Sekunden wird die naechste Station in ihrem Fahrplan
+   angefahren.
+
+   #2 Die Galeere nach Orkhausen:
+     AddRoute(INSEL("steg"), 30, 20, "Verlorene Land ( Orkhausen )" );
+     - haelt 30 Sekunden
+     - reist 20 Sekunden
+     - reist nach INSEL("steg"), bekannt als "Verlorene Land ( Orkhausen )"
+     - da keine 'dest_ids' angegeben sind, waere eine so definierte
+       Haltstelle nur mit den IDs ansprechbar, die in P_HARBOURS im Zielraum
+       angegeben sind.
+
+   Wenn man nun erreichen wollte, dass das Ziel auch mit dem Kuerzel "vland"
+   ansprechbar ist, kann man zum einen explizite 'dest_ids' eintragen:
+     AddRoute(INSEL("steg"), 30, 20, "Verlorene Land ( Orkhausen )",
+              ({"verlorenes", "land", "orkhausen", "vland"}));
+   Dies laesst sich im Zielhafen aber auch durch Eintragen des Kuerzels
+   "vland" in P_HARBOUR erreichen. Dies hat den Vorteil, dass dieser Hafen
+   dann von allen Transportern, die dort anlegen, unter demselben Namen
+   erreicht werden kann.
+
+
+HINWEISE
+========
+
+   Dadurch, dass die Eintraege aus P_HARBOUR und 'dest_ids' gleichberechtigt
+   fuer "reise nach <ziel>" verwendet werden koennen, ist es moeglich,
+   dass die Reiseziele auf einem Schiff unter zusaetzlichen Bezeichnungen
+   bekannt sind, als an Land (zum Beispiel koennte eine fernwestliche
+   Besatzung die Ziele anders nennen).
+
+
+SIEHE AUCH
+==========
+
+Funktionen  AddMsg(L), AddFun(L), /std/transport.c Properties
+P_HARBOUR, P_NO_TRAVELING, P_TRAVEL_INFO
+
+
+2015-Jan-18, Arathorn.
+======================
diff --git a/doc/sphinx/man/lfun/AddSingularId b/doc/sphinx/man/lfun/AddSingularId
new file mode 100644
index 0000000..c45199e
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSingularId
@@ -0,0 +1,49 @@
+
+AddSingularId()
+***************
+
+
+FUNKTION
+========
+
+   void AddSingularId(mixed id);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   id
+        Identifikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner hinzugefuegt, mit denen sich eine
+   einzelne Einheit ansprechen laesst.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   AddPluralId(), RemoveSingularId(), AddId(), id(), /std/unit.c
+
+Last modified: Mon Jul 14 11:31:00 1997 by Silvana
diff --git a/doc/sphinx/man/lfun/AddSmells b/doc/sphinx/man/lfun/AddSmells
new file mode 100644
index 0000000..2623f98
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSmells
@@ -0,0 +1,92 @@
+
+AddSmells()
+***********
+
+
+FUNKTION
+========
+
+   void AddSmells(string|string* keys, string|string*|mapping|closure desc);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
+   koennen hiermit Gerueche realisiert werden:
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+       Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+           "rasse1": "r1text", ...]).
+
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer Geruchsdetails koennen Forscherpunkte eingetragen werden.
+
+   Gerueche koennen allgemein einen Raum oder Objekt zugeordnet werden:
+   dafuer muss man als <key> SENSE_DEFAULT uebergeben.
+
+
+
+   Spielerkommandos: "riech", "rieche", "schnupper", "schnuppere"
+
+
+BEISPIELE
+=========
+
+   Ein kleines Beispiel fuer rassenabhaengige Gerueche mit Closures:
+     string strafe(string key);
+     ...
+     AddSmells(SENSE_DEFAULT,
+       "Der Geruch von Knoblauch ist ueberwaeltigend!\n");
+     AddSmells(({"knoblauch","geruch"}),
+               ([0:        "Puhh, das stinkt!\n",
+                 "vampir": #'strafe]));
+     ...
+     string strafe(string key) {
+       this_player()->reduce_hit_points(100);
+       return "Der Knoblauch schmerzt dich furchtbar!\n";
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddSounds b/doc/sphinx/man/lfun/AddSounds
new file mode 100644
index 0000000..b14b976
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSounds
@@ -0,0 +1,82 @@
+
+AddSounds()
+***********
+
+
+FUNKTION
+========
+
+   void AddSounds(string|string* keys, string|string*|mapping|closure desc);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   desc
+     String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
+   koennen hiermit Geraeusche realisiert werden:
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+     <desc> ist ein String.
+       Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+     <desc> ist ein Mapping.
+       Das Mapping muss folgenden Aufbau haben:
+         ([0:        "Defaulttext",
+          "rasse1": "r1text", ...]).
+
+       Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+       Eintrag im Mapping existiert, wird der entsprechende Text
+       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+       rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+     <desc> ist eine Closure.
+       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+       als Parameter uebergeben.
+
+   Fuer Geraeuschdetails koennen Forscherpunkte eingetragen werden.
+
+   Gerauesche koennen allgemein einen Raum oder Objekt zugeordnet werden:
+   dafuer muss man als <key> SENSE_DEFAULT uebergeben.
+
+   Spielerkommandos: "lausche", "lausch", "hoer", "hoere"
+
+
+BEISPIELE
+=========
+
+   Ein kleines Beispiel fuer rassenabhaengige Gerauesche
+     AddSounds(SENSE_DEFAULT, "Die Zwergenmusik uebertoent alles!\n");
+     AddSounds(({"zwergenmusik","musik"}),
+               ([0      : "Seltsamer Krach!\n",
+                 "zwerg": "Das klingt einfach fantastisch!\n"]));
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddSpecialDetail b/doc/sphinx/man/lfun/AddSpecialDetail
new file mode 100644
index 0000000..3405eec
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSpecialDetail
@@ -0,0 +1,87 @@
+
+AddSpecialDetail()
+******************
+
+
+VERALTET AddSpecialDetail()
+===========================
+
+
+FUNKTION
+========
+
+   void AddSpecialDetail(string|string* keys, string func);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   func
+     String mit dem Namen der Funktion, die zur Auswertung aufgerufen
+     wird.
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Detail hinzugefuegt, dessen Inhalt nicht von vornherein
+   feststeht, sondern von aeusseren Bedingungen abhaengt. Zu diesem
+   Zweck wird immer, wenn dieses Detail untersucht wird, die Funktion
+   func aufgerufen, um den aktuellen Zustand des Details zu bestimmen.
+   Der Funktion wird als Parameter das Schluesselwort uebergeben, mit
+   dem das Detail untersucht wurde.
+
+   VERALTET: Bitte AddDetail mit Closure benutzen.
+
+
+BEISPIELE
+=========
+
+   Ein zustandsabhaengiges Detail:
+
+     int hebel_betaetigt;
+     string hebel(string key);
+     ...
+     // ALT: AddSpecialDetail( ({ "hebel", "schalter" }), "hebel" );
+     AddDetail(({ "hebel", "schalter" }), #'hebel );
+     ...
+     string hebel(string key)
+     { if(hebel_betaetigt)
+         return "Der "+capitalize(key)+" steht auf EIN.\n";
+       else
+         return "Der "+capitalize(key)+" steht auf AUS.\n";
+     }
+
+   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
+   ob das Flag hebel_betaetigt gesetzt ist oder nicht.
+
+
+BEMERKUNG
+=========
+
+   Intern werden Details und SpecialDetails im selben Mapping
+   verwaltet.
+   Man kann statt dieser Funktion deshalb auch AddDetail mit Closures
+   nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AddSpecialExit b/doc/sphinx/man/lfun/AddSpecialExit
new file mode 100644
index 0000000..2f16c17
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSpecialExit
@@ -0,0 +1,82 @@
+
+AddSpecialExit()
+****************
+
+
+FUNKTION
+========
+
+   void AddSpecialExit(string|string* cmd, string|closure func);
+
+
+DEFINIERT IN
+============
+
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   string/string* cmd
+        die Richtung(en), in die der Ausgang fuehrt
+   string/closure func
+        der Name der aufzurufenden Funktion/Closure
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Wird der
+   Ausgang benutzt, so wird die Closure bzw. Funktion func ausgefuehrt.
+
+   AddSpecialExit(cmd, "func") entspricht:
+   - AddExit(keys, #'func)
+
+
+BEMERKUNGEN
+===========
+
+   In func muss man den Spieler selbst in den Zielraum bewegen. Im
+   Erfolgsfall sollte man einen Wert >0 zurueckgeben, im Fehlerfall einen
+   Wert <=0.
+
+   func bekommt als Parameter einen String mit der gewaehlten
+   Bewegungsrichtung uebergeben.
+
+
+BEISPIELE
+=========
+
+   // ein Ausgang soll nur von Froeschen benutzbar sein:
+
+   AddSpecialExit("loch", "lochfkt");
+   // der gleiche Aufruf, nur anders:
+   // static int lochfkt(string dir);         // Prototyp
+   // ...
+   // AddSpecialExit("loch", #'lochfkt);
+   // auch identisch zu:
+   // AddExit("loch", #'lochfkt);
+
+   static int lochfkt(string dir) {
+     if (!(this_player()->QueryProp(P_FROG))) {
+       // Kein Frosch => passt nicht!
+       notify_fail("Du bist zu gross!\n");
+       return 0;
+     }
+     // Meldungen werden im move() gleich mitgegeben
+     return this_player()->move("/room/loch", M_GO, 0,
+                  "huepft ins Loch", "huepft herein");
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/AddSpecialInfo b/doc/sphinx/man/lfun/AddSpecialInfo
new file mode 100644
index 0000000..efc3067
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSpecialInfo
@@ -0,0 +1,88 @@
+
+AddSpecialInfo()
+****************
+
+
+FUNKTION
+========
+
+   varargs void AddSpecialInfo( frage, meldung
+                         [, indent [, [silent [, casebased] ] ] );
+
+
+ARGUMENTE
+=========
+
+   string/string* frage
+      Schluesseltext(e) auf die Informationen gegeben werden sollen.
+   string/closure function
+      Methodenname im NPC/Closure
+   string indent
+      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
+   int/string silent
+      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
+   string/closure casebased
+      Funktionsname oder Closure mit Returnwert string oder int.
+
+
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
+   einer Information mit dem Schluessel frage fragt, so wird die Methode
+   "function" gerufen. Die Rueckgabe wird als Meldung ausgegeben.
+
+   Fuer die Beschreibung der weiteren Parameter siehe man AddInfo(L).
+
+   AddSpecialInfo(keys, "function", ...) entspricht:
+   - AddInfo(keys, #'function, ...)
+
+
+BEMERKUNGEN
+===========
+
+   Da AddSpecialInfo() und AddInfo() auf die gleichen Daten zugreifen,
+   kann man Informationen, die mit AddSpecialInfo() gesetzt wurden, auch
+   mit RemoveInfo() entfernen. Es gibt kein RemoveSpecialInfo().
+
+
+BEISPIELE
+=========
+
+   // Das folgende Beispiel ist auch unter man AddInfo(L) zu finden.
+   ### dynamisch ###
+   AddSpecialInfo(({"keks","kekse"}),
+                  "query_kekse",      // der Methodenname
+                  "sagt: ");
+   // ist uebrigens das gleiche wie:
+   // static string query_kekse();
+   // ...
+   // AddInfo(({"keks","kekse"}),
+   //         #'query_kekse,          // ein Verweis auf die Methode
+   //         "sagt: ");
+   ...
+   static string query_kekse() {
+    if(present("keks"))
+     return("Ich hab noch welche. Aetsch!");
+    return("Menno. Keine mehr da!");
+   }
+
+   // "frage monster nach keks":
+   // - wenn es noch Kekse hat, hoeren alle:
+   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
+   // - sonst:
+   //   "Das Monster sagt: "Menno. Keine mehr da!
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(L), RemoveInfo(L)
+
+7.Apr 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/AddSpell b/doc/sphinx/man/lfun/AddSpell
new file mode 100644
index 0000000..1661f8c
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSpell
@@ -0,0 +1,173 @@
+
+AddSpell()
+**********
+
+
+FUNKTION
+========
+
+   varargs int AddSpell(int rate, int damage, string TextForEnemy,
+                        string TextForOthers, string|string* dam_type,
+                        string|closure func, int|mapping spellarg)
+
+
+DEFINIERT IN
+============
+
+   /std/npc/combat.c
+
+
+ARGUMENTE
+=========
+
+   rate          - Relative Haeufigkeit der Anwendung (*),
+                   muss >= 0 sein
+   damage        - Der Schadenswert fuer Defend(),
+                   muss > 0 sein
+   TextForEnemy  - Text, den der Feind erhalten soll
+   TextForOthers - Text, den andere im Raum erhalten sollen
+   dam_type      - Schadenstyp(en) fuer Defend(),
+                   (Default: ({DT_MAGIC}) )
+   func          - Funktionsname oder Closure, die nach Anwendung
+                   aufgerufen werden soll
+                   (Optional, bekommt als Argumente object enemy,
+                   int real_damage, string* dam_type)
+   spellarg      - Spell-Argument fuer Defend(), Default ist "1"
+
+
+BESCHREIBUNG
+============
+
+   Ermoeglicht einfache Angriffs-Zaubersprueche fuer NPCs. Das Ausfuehren von
+   Spells verursacht bei dem NPC keine KP-Kosten.
+
+   Mit P_SPELLRATE wird die generelle Wahrscheinlichkeit der Ausfuehrung
+   solcher Spells im Heartbeat angegeben, mit 'rate' kann man die relative
+   Wahrscheinlichkeit der Spells untereinander steuern.
+
+   (*) Relative Haeufigkeit heisst, dass sich alle 'rate' der Spells
+   aufaddieren und ein einzelnes 'rate' dann in Relation zur Gesamtsumme
+   steht. D.h. drei Spells mit 80, 10, 10 (Summe 100) haben die selben
+   Aufruf-Wahrscheinlichkeiten wie drei Spells mit 120, 15, 15 oder drei
+   Spells mit 160, 20, 20.
+
+   Ein Spell wird immer in folgender Reihenfolge abgearbeitet:
+    1. Die Texte werden an die Beteiligten ausgegeben.
+    2. Es wird ggf. SpellDefend gerufen (wenn kein SP_PHYSICAL_ATTACK).
+       Abbruch bei Schutz.
+    3. Im Opfer wird Defend() mit den angegebenen Werten aufgerufen.
+       Abbruch bei Tod/Zerstoerung des Opfers.
+    4. Eine Funktion, so definiert, wird ausgefuehrt.
+
+
+BEMERKUNGEN
+===========
+
+   TextForOthers wird vor der Ausgabe der Meldung durch replace_personal()
+   geschickt, d.h. es koennen Platzhalter wie @WER1, @WEMQP1 und aehnliche
+   verwendet werden (siehe auch die Manpage von replace_personal()).
+   Da Ersetzungen nur fuer das Gegnerobjekt beruecksichtigt werden, koennen
+   nur Platzhalter mit Endziffer 1 verwendet werden. Die Ersetzungen werden
+   so gesteuert, dass die eingefuegten Namen nach Satzanfaengen automatisch
+   gross geschrieben werden.
+   Frueher wurden statt replace_personal() die Platzhalter @WER, @WESSEN,
+   @WEM, @WEN verwendet. Diese funktionieren weiterhin, sollten aber nicht
+   mehr in neuem Code benutzt werden.
+
+   In der von AddSpell gerufenen Methode "func" koennen speziellere
+   Sachen mit dem aktuellen Feind angestellt werden koennen. Die Methode
+   muss im selben Objekt definiert sein, sofern der Funktionsname und
+   keine Closure uebergeben wird.
+
+   Will man einen physischen Angriff ausloesen, MUSS <spellarg> ein Mapping
+   mit ([SP_PHYSICAL_ATTACK: 1]) sein. Bei Uebergeben einer 0 oder Weglassen
+   des Werts wird an Defend das Default '1' (da es Spells sind) uebergeben.
+
+   Wenn damage<=0 oder rate<0 oder keine Meldungen uebergeben werden, wird
+   der Spell NICHT eingetragen, sondern die Funktion bricht mit Rueckgabe
+   von 0 ab.
+
+
+BEISPIELE
+=========
+
+   // #1 Einfacher NPC mit drei Spells, Gesamtrate = 100, also sind die
+   //    Raten direkt als Prozent Aufrufwahrscheinlichkeit lesbar.
+   AddSpell(80, 400,
+            "Der Hexer greift Dich mit einem kleinen Feuerball an.\n",
+            "Der Hexer greift @WEN mit einem kleinen Feuerball an.\n",
+            ({DT_FIRE, DT_MAGIC}));
+   AddSpell(10, 800,
+            "Der Hexer greift Dich mit einem riesigen Feuerball an.\n",
+            "Der Hexer greift @WEN mit einem riesigen Feuerball an.\n",
+            ({DT_FIRE, DT_MAGIC}));
+   AddSpell(8, 100,
+            "Der Hexer piekst Dir in die Augen!",
+            "Der Hexer piekst @WEM in die Augen!", ({DT_PIERCE}),
+            "augen_stechen");
+   AddSpell(2, 5, (string)0, (string)0, (string*)0, "salto_mortalis");
+
+   (Kleiner Feuerball mit 80% Wahrscheinlichkeit, riesiger mit 10%,
+    "augen_stechen" mit 8%, "salto_mortalis" mit 2%)
+
+   // Die Funktion "augen_stechen" kann dann so aussehen:
+   void augen_stechen(object enemy, int damage, mixed dam_types ) {
+     if (damage>10 && !enemy->QueryProp(P_BLIND)) {
+       enemy->SetProp(P_BLIND, 1);
+       if(enemy->QueryProp(P_BLIND))
+         tell_object(enemy, "Du bist nun blind!\n");
+     }
+   }
+
+   // Zur Funktion "salto_mortalis" gibt es keine Meldungen, dennoch
+   // wird Defend mit: enemy->Defend(5, ({DT_MAGIC}), 1, this_object())
+   // gerufen!
+   void salto_mortalis(object enemy, int damage, mixed dam_types ) {
+     // dem geneigten Leser ueberlassen, den Gegner zu toeten
+   }
+
+   // #2 Physische Angriffe: die Ruestungen sollen beruecksichtigt werden!
+   //    SP_PHYSICAL_ATTACK muss in einem Mapping auf 1 gesetzt werden,
+   //    damit Ruestungen physisch wirken (ansonsten werden nur ihre
+   //    DefendFuncs() ausgewertet). Es muss auch eine physische Schadensart
+   //    enthalten sein!
+   //    SpellDefend() wird bei diesem Flag nicht mehr am Gegner gerufen.
+   AddSpell(100, 200+random(200),
+     "Die kleine Ratte beisst Dich!\n",
+     "@WER wird von einer kleinen Ratte gebissen!\n",
+     ({DT_PIERCE, DT_POISON}), (string)0,
+     ([SP_PHYSICAL_ATTACK:1]));
+
+   // #3 Selektive physische Angriffe (siehe auch man Defend_bsp):
+   //    Will man erreichen, dass einige Ruestungen wirken, andere aber
+   //    nicht oder nur teilweise, kann man das ueber die Spellparameter
+   //    ausfuehrlich steuern:
+
+   // erstmal fuer alle Ruestungsarten einen Schutz von 0% einstellen:
+   mapping armours = map_indices(VALID_ARMOUR_CLASS, #'!);
+   armours[AT_TROUSERS] = 120;  // 120% Schutz durch Hosen
+   armours[AT_BOOT] = 30;       //  30% Schutz durch Stiefel
+
+   AddSpell(20,200+random(200),
+     "Die kleine Ratte beisst Dir blitzschnell in die Wade!\n",
+     "@WER wird von einer kleinen Ratte in die Wade gebissen!\n",
+     ({DT_PIERCE, DT_POISON}), (string)0,
+     ([SP_PHYSICAL_ATTACK:1, SP_NO_ACTIVE_DEFENSE:1,
+       SP_REDUCE_ARMOUR: armours]));
+
+   // SP_NO_ACTIVE_DEFENSE = 1 schaltet aktive Abwehr (Karate/Klerus) ab
+   // SP_REDUCE_ARMOUR enthaelt eine Liste von Ruestungstypen mit ihren
+   // neuen Wirkungsgraden in Prozent. Nicht enthaltene Ruestungen haben
+   // weiterhin 100% Schutzwirkung.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges:  SpellAttack, SpellDefend, Defend, QueryDefend, SelectEnemy
+               replace_personal
+   Properties: P_DISABLE_ATTACK, P_SPELLRATE, P_AGGRESSIVE
+   Abwehr:     Defend, Defend_bsp, SpellDefend
+   Methoden:   modifiers
+
+Zuletzt geaendert: 20.11.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/AddToMenu b/doc/sphinx/man/lfun/AddToMenu
new file mode 100644
index 0000000..01d46b6
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddToMenu
@@ -0,0 +1,271 @@
+
+AddToMenu()
+***********
+
+
+FUNKTION
+========
+
+   varargs string AddToMenu(string  menuetext,
+                            mixed   ids,
+                            mapping minfo,
+                            mixed   rate,
+                            mixed   msg,
+                            mixed   refresh,
+                            mixed   delay,
+                            mixed   d_msg);
+
+
+DEFINIERT IN
+============
+
+   /std/pub.c
+
+
+ARGUMENTE
+=========
+
+   Die Erlaeuterung der Parameter beschraenkt sich im Folgenden
+   zunaechst auf die Grundfunktionalitaet bei Verwendung fester
+   Werte. Die Moeglichkeiten zur Realisierung dynamischen Verhaltens
+   sind in den Fussnoten zu den einzelnen Parametern beschrieben.
+
+   menuetext
+     Der Text steht als kurze Beschreibung im Menue.
+   ids
+     String oder Array von Strings, mit denen sich die Speise bzw. das
+     Getraenk beim Bestellen ansprechen laesst.
+   minfo
+     Mapping mit Eintraegen fuer:
+     P_HP      LP-Heilung in Punkten [*]
+     P_SP      KP-Heilung in Punkten [*]
+     P_FOOD    Saettigungswirkung der Speise [*]
+     P_DRINK   Saettigungswirkung des Getraenks [*]
+     P_ALCOHOL Alkoholgehalt des Getraenks [*]
+     P_VALUE   Preis der Speise bzw. des Getraenks [*]
+   rate [*]
+     Heilrate in Punkten pro HeartBeat.
+   msg [**]
+     Meldung beim Essen:
+     Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
+     Verfuegbare Platzhalter sind weiter unten im Abschnitt "Beispiel"
+     dokumentiert.
+   refresh
+     Mapping mit Eintraegen fuer:
+       PR_USER (Kontingent fuer einzelnen Spieler) [*]
+       PR_ALL  (Zusatzkontingent fuer alle) [*]
+     Alternativ: 0 fuer unbegrenzte Verfuegbarkeit
+     Einem Key muessen dabei zwei Werte zugeordnet werden:
+     Der Erste gibt die Hoehe des Kontingents an, der Zweite legt
+     fest, alle wieviel reset()s das Kontingent wieder aufgefuellt
+     wird.
+     Verwendung des Mappings erfordert Inkludieren von pub.h.
+   delay [*]
+     Zahl der Sekunden, um die verzoegert die Heilung eintritt,
+     z.B. weil das Essen erst zubereitet werden muss.
+   d_msg [**]
+     Meldung beim Bestellen, falls die Heilung verzoegert wird
+     Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
+
+
+
+   [*] Dieser Parameter kann statt eines festen Zahlenwerts mit
+       folgenden Werten gefuellt werden:
+
+       1) Mapping <racemodifier> der Form:
+              ([ 0 : <standardwert> ,
+               <rasse_1> : <wert_1>,
+               ... ,
+               <rasse_n> : <wert_n> ]).
+          Die Eintraege in diesem Mapping werden gegen die Rasse des
+          bestellenden Spielers geprueft und entsprechend die
+          zugehoerigen Werte verwendet.
+       2) string <func>: Aufruf erfolgt mittels
+            call_other(this_object(), func, empfaenger);
+          gerufen (aber: siehe Hinweise).
+       3) closure <func>: Aufruf erfolgt mittels
+            funcall(func, empfaenger);
+       4) Array der Form  ({string <obj>, string <func>}) oder
+                          ({object <obj>, string <func>})
+          Aufruf erfolgt mittels
+            call_other(obj, func, empfaenger);
+          (aber: siehe Hinweise). <obj> ist folglich als Objektpointer
+          oder dessen object_name() anzugeben. <func> wird mittels
+          function_exists() auf Existenz ueberprueft.
+
+          HINWEISE: im Falle von Lieferverzoegerung ("delay") und
+          Preis (P_VALUE) wird bei allen Funktionsaufrufen NICHT der
+          Empfaenger, sondern der Zahler uebergeben.
+          Im Falle der Kontingent-Liste ("refresh") kann nur die
+          verfuegbare Menge modifiziert werden, nicht die Zeit
+          bis zum Wieder-Auffuellen.
+
+   [**] Zur Erzeugung variabler Meldungen koennen folgende Werte
+        eingetragen werden:
+
+        1) closure <func>: Aufruf erfolgt mittels
+             funcall(func, zahler, empfaenger, ident, minfo);
+        2) string <func>: Aufruf erfolgt mittels
+             call_other(this_object(), func, zahler, empfaenger,
+                        ident, minfo);
+        <func> bekommt Zahler und Empfaenger als Objektpointer,
+        ident als String und minfo als Mapping mit den
+        jeweiligen Heilwerten uebergeben. minfo entspricht hierbei
+        den Daten, die als dritter Parameter an AddToMenu()
+        uebergeben wurden.
+        HINWEIS: wenn in das minfo-Mapping keine int-Festwerte
+        eingetragen wurden, werden diese gemaess den Regeln unter [*]
+        geprueft; Funktionen/Closures werden ggf. ausgewertet und
+        deren Rueckgabewerte an die Funktion <func> uebergeben.
+        WICHTIG: Die Rueckgabewerte der Funktion werden nicht
+        ausgewertet. Jeder, der anstatt einer Meldung einen
+        Funktionsaufruf programmiert, muss fuer die Ausgabe der
+        Meldungen selbst sorgen.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion werden Speisen oder Getraenke in die Karte
+   von Kneipen und Restaurants eingefuegt.
+
+
+RUECKGABEWERT
+=============
+
+   Rueckgabewert ist ein String "menuentry%d", wobei %d eine Nummer
+   ist, die darueber Auskunft gibt, den wievielten Eintrag in die
+   interne Karte der Kneipe diese Speise bzw. dieses Getraenk
+   darstellt. Im Prinzip handelt es sich bei dem String um einen Key
+   fuer ein Mapping, in dem die Speisen bzw. Getraenke gespeichert
+   sind.
+
+
+BEMERKUNGEN
+===========
+
+   Die aelteren Funktionen 'AddDrink' bzw. 'AddFood' werden zwar mithilfe
+   dieser maechtigeren Funktion aus Gruenden der Abwaertskompatibilitaet
+   simuliert, sollen aber nicht mehr eingesetzt werden.
+
+
+
+   Die alten Platzhalter && etc. (s.u.) werden weiterhin unterstuetzt,
+   sollten aber fuer bessere Wartbarkeit nicht mehr verwendet werden.
+
+
+
+   Fuer das Testen der Kneipe gibt es in jeder Kneipe den Befehl
+   'pubinit'. Hiermit lassen sich die Speisen und Getraenke durch-
+   checken. Steht in der Ausgabe bei einem Getraenk/Essen ein FAIL,
+   so wird die entsprechende Speise (oder Getraenk) NICHT an Spieler
+   verkauft. Ausnahmen fuer Speisen/Getraenke mit hoeheren maximalen
+   Werten sind durch Balance-EM zu genehmigen.
+
+
+BEISPIEL
+========
+
+   include <pub.h>
+
+   create()
+   {
+   AddToMenu("'Opa's Drachenkeule'",({"drachenkeule","keule"}),
+   ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]), 5,
+   ({"Du isst die Keule mit einem schlechten Gewissen.",
+     "@WER1 isst die Keule mit einem schlechten Gewissen."}),
+   ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]), 9,
+   ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
+     "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
+     "wohl ein Tippfehler auf der Karte gewesen sein.",
+     "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
+     "Stueck aus dessen Keule und braet diese fuer @WEN1."}) );
+   }
+
+   1) Name der Speise (des Getraenks) auf der Karte (bei menue).
+
+      AddToMenu("'Opa's Drachenkeule'",
+
+   2) ids mit denen sich bestellen laesst (z.B. "kaufe keule").
+
+      ({"drachen","drachenkeule","keule"}),
+
+   3) Heilung fuer LP und KP, Saettigung (P_FOOD oder P_DRINK,
+      P_ALCOHOL nach Belieben setzen), Preis (P_VALUE).
+      HP und SP muessen nicht gleich sein. Speisen und Getraenke,
+      die nur eines von beiden heilen, sind auch moeglich.
+
+      ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]),
+
+   4) Heilung pro Heartbeat (in diesem Beispiel je 5 KP/LP).
+
+
+
+      5,
+
+   5) Meldungen fuer Spieler und Umstehende die bei Genuss ausgege-
+      ben werden (also NICHT der Bestell-Text).
+
+      ({"Du isst die Keule mit einem schlechten Gewissen.",
+        "@WER1 isst die Keule mit einem schlechten Gewissen."}),
+
+      Die Ausgabe-Strings werden vor der Ausgabe mit dem Empfaenger
+      als Objekt an replace_personal() uebergeben. Fuer die
+      moeglichen Platzhalter siehe dort.
+
+
+
+   6) Die Speise ist in ihrer Anzahl begrenzt. Fuer jeden Spieler
+      sind 4 Keulen pro reset() da. Ausserdem gibt es noch einen
+      "Notvorrat" von 20 Keulen, der alle 3 reset()s aufgefuellt
+      wird. Aus diesem (so noch vorhanden) werden die Spieler
+      versorgt, wenn ihr "persoenlicher Vorrat" aufgebraucht ist.
+
+      ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]),
+
+
+
+      HINWEIS: bei Benutzung des Mappings muss <pub.h> inkludiert
+      werden!
+
+
+
+      Wenn man keine reset-abhaengigen Speisen haben moechte, traegt
+      man hier eine 0 ein.
+
+   7) Die Zahl ist die Wartezeit in Sekunden, die der Wirt z.B. fuer
+      die Zubereitung und Auslieferung an den Spieler braucht.
+
+      9,
+
+
+
+   8) Letztendlich die Meldungen an Spieler und Umstehende, die bei Be-
+      stellung (hier 'kaufe keule') ausgegeben werden.
+
+      ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
+      "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
+      "wohl ein Tippfehler auf der Karte gewesen sein.",
+      "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
+      "Stueck aus dessen Keule und braet diese fuer @WEN1."}));
+
+LISTE DER ALTEN PLATZHALTER (DEPRECATED):
+   &&  - pl->name(WER,2) &1& - pl->name(WER,2) &2& -
+   pl->name(WESSEN,2) &3& - pl->name(WEM,2) &4& - pl->name(WEN,2) &1#
+   - capitalize(pl->name(WER,2)) &2# - capitalize(pl->name(WESSEN,2))
+   &3# - capitalize(pl->name(WEM,2)) &4# - capitalize(pl->name(WEN,2))
+   &!  - pl->QueryPronoun(WER) &5& - pl->QueryPronoun(WE); &6& -
+   pl->QueryPronoun(WESSEN) &7& - pl->QueryPronoun(WEM) &8& -
+   pl->QueryPronoun(WEN) &5# - capitalize(pl->QueryPronoun(WER)) &6# -
+   capitalize(pl->QueryPronoun(WESSEN)) &7# -
+   capitalize(pl->QueryPronoun(WEM)) &8# -
+   capitalize(pl->QueryPronoun(WEN))
+
+
+SIEHE AUCH
+==========
+
+   AddFood(), AddDrink(), /sys/pub.h
+   RemoveFromMenu(), replace_personal()
+
+Last modified: Sam, 01. Okt 2011, 23:40 by Arathorn
diff --git a/doc/sphinx/man/lfun/AddTouchDetail b/doc/sphinx/man/lfun/AddTouchDetail
new file mode 100644
index 0000000..6ca61e8
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddTouchDetail
@@ -0,0 +1,90 @@
+
+AddTouchDetail()
+****************
+
+
+FUNKTION
+========
+
+   void AddTouchDetail(string|string* keys,
+                       string|string*|mapping|closure desc);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+    String oder Array von Strings mit den Namen der Details.
+   desc
+    String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
+   koennen hiermit (ab)tastbare bzw. fuehlbare Details realisiert werden:
+   Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+   beim (Ab)Tasten aussehen, haengt im wesentlichen vom Typ der
+   Beschreibung <desc> ab:
+    <desc> ist ein String.
+      Beim Untersuchen wird dieser String zurueckgegeben.
+     <desc> ist ein String-Array.
+       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
+    <desc> ist ein Mapping.
+      Das Mapping muss folgenden Aufbau haben:
+        ([0:        "Defaulttext",
+          "rasse1": "r1text", ...]).
+
+      Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+      Eintrag im Mapping existiert, wird der entsprechende Text
+      zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+      rassenabhaengige Details moeglich. Siehe auch die Beispiele.
+    <desc> ist eine Closure.
+      In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+      zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+      als Parameter uebergeben.
+
+   Fuer fuehlbare Details koennen Forscherpunkte eingetragen werden.
+
+   Fuehlbare Details koennen allgemein einen Raum oder Objekt zugeordnet
+   werden: dafuer muss man als <key> SENSE_DEFAULT uebergeben.
+
+   Spielerkommandos: "taste"
+
+
+BEISPIELE
+=========
+
+   Ein kleines Beispiel fuer rassenabhaengige, fuehlbare Details mit Closures:
+     string strafe(string key);
+     ...
+     AddTouchDetail(SENSE_DEFAULT, "Du fuehlst einige Knollen\n");
+     AddTouchDetail(({"knollen"}),
+                    ([0:       "Sie fuehlen sich an wie Knoblauchknollen. "
+                               "Riech doch mal daran.\n",
+                      "vampir": #'strafe]));
+
+     string strafe(string key) {
+       this_player()->reduce_hit_points(100);
+       return "Au! Das waren ja Knoblauchknollen!\n";
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/AllGroups b/doc/sphinx/man/lfun/AllGroups
new file mode 100644
index 0000000..6511189
--- /dev/null
+++ b/doc/sphinx/man/lfun/AllGroups
@@ -0,0 +1,36 @@
+
+AllGroups()
+***********
+
+
+FUNKTION
+========
+
+   string *AllGroups()
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array aller existenten Materialgruppen zurueck (ihre
+   Definitionsform wie in <thing/material.h> aufgelistet).
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Listen:      AllMaterials(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/AllMaterials b/doc/sphinx/man/lfun/AllMaterials
new file mode 100644
index 0000000..57d1f6d
--- /dev/null
+++ b/doc/sphinx/man/lfun/AllMaterials
@@ -0,0 +1,36 @@
+
+AllMaterials()
+**************
+
+
+FUNKTION
+========
+
+   string *AllMaterials()
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array aller existenten Materialien zurueck (ihre Definitions-
+   form wie in <thing/material.h> aufgelistet).
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Listen:      AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/AssocMember b/doc/sphinx/man/lfun/AssocMember
new file mode 100644
index 0000000..139a670
--- /dev/null
+++ b/doc/sphinx/man/lfun/AssocMember
@@ -0,0 +1,74 @@
+
+AssocMember()
+*************
+
+
+FUNKTION
+========
+
+   int AssocMember(object npc)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   Der zuzuordnende NPC.
+
+
+BESCHREIBUNG
+============
+
+   Ordnet einen NPC einem Spieler zu. Dieser ist dann
+   immer im Team des Spielers, moeglichst in der gleichen Reihe.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls Zuordnung erfolgreich, sonst 0.
+
+
+BEISPIEL
+========
+
+   void fun(object pl)
+   {
+     if ( pl && pl->AssocMember(this_object()) )
+       tell_object(pl,break_string(
+         "Ich kaempfe nun auf Deiner Seite!\n",78,"Ein Feuerteufel "
+         "teilt Dir mit:");
+    ...
+   }
+
+
+BEMERKUNGEN
+===========
+
+   1. Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
+      zuzuordnenden NPC aufgerufen werden.
+   2. Einem NPC, der selber einem Spieler zugeordnet ist, kann kein
+      NPC zugeordnet werden.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 04.10.2011, Zesstra
diff --git a/doc/sphinx/man/lfun/Attack b/doc/sphinx/man/lfun/Attack
new file mode 100644
index 0000000..08a0c20
--- /dev/null
+++ b/doc/sphinx/man/lfun/Attack
@@ -0,0 +1,42 @@
+
+Attack()
+********
+
+
+FUNKTION
+========
+
+   void Attack(object enemy)
+
+
+ARGUMENTE
+=========
+
+   enemy: Der Feind.
+
+
+BESCHREIBUNG
+============
+
+   Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
+   stark angegriffen.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion gibt die Angriffsmeldung aus.
+   Falls mit blossen Haenden angegriffen wird, ist die Staerke
+   (2*Staerke_der_Haende + 10*A_STR)/3
+
+
+SIEHE AUCH
+==========
+
+   "Defend", "QueryDamage"
diff --git a/doc/sphinx/man/lfun/BecomesNetAlive b/doc/sphinx/man/lfun/BecomesNetAlive
new file mode 100644
index 0000000..a64f328
--- /dev/null
+++ b/doc/sphinx/man/lfun/BecomesNetAlive
@@ -0,0 +1,68 @@
+
+BecomesNetAlive()
+*****************
+
+
+FUNKTION
+========
+
+   void BecomesNetAlive(object pl);
+
+
+GERUFEN VON
+===========
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Spieler, der Verbindung zum MUD wiedererlangt.
+
+
+BESCHREIBUNG
+============
+
+   Spieler, welche die Verbindung zum MUD freiwillig
+   (z.B. per 'schlafe ein') oder unfreiwillig verlieren, gehen in den
+   Netztotenstatus ueber. Sie verbleiben noch eine definierte Zeit in
+   der zuletzt betretenen Umgebung und werden schliesslich automatisch
+   in den Netztotenraum ueberfuehrt.
+   Wird die Verbindung wieder aufgebaut, so wird der Spielercharakter
+   wieder zum Leben erweckt und gegebenenfalls zuvor aus dem
+   Netztotenraum zurueck zu seiner letzten Umgebung teleportiert.
+   Um nun einen Ueberblick darueber zu erhalten, wann ein Spieler die
+   Verbindung zum MUD wiederherstellt, gibt es die Funktion
+   BecomesNetAlive(). Sie wird automatisch in der Umgebung des
+   Spielers, in allen Objekten in der Umgebung des Spielers
+   (nicht rekursiv) und in allen Objekten im Spieler (rekursiv)
+   aufgerufen. Uebergeben wird hierbei das Spielerobjekt.
+
+   Es gibt auch noch die Funktion BecomesNetDead(), mit der man
+   auf aehnliche Weise einschlafende Spieler registrieren kann.
+
+
+BEISPIELE
+=========
+
+   In einem NPC waere folgendes denkbar:
+
+
+
+   void BecomesNetAlive(object pl) {
+     tell_room(environment(),break_string(
+       "Guten Morgen "+pl->name(WER)+", auch schon ausgeschlafen?!", 77,
+       Name(WER)+" sagt grinsend: "));
+   }
+   Steht der NPC in einem Raum, wo ein Spieler aufwacht, so wird der
+   Spieler gebuehrend begruesst.
+
+
+SIEHE AUCH
+==========
+
+   BecomesNetDead(), PlayerQuit(), /std/player/base.c, /room/netztot.c
+
+24. Aug 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/BecomesNetDead b/doc/sphinx/man/lfun/BecomesNetDead
new file mode 100644
index 0000000..8938d13
--- /dev/null
+++ b/doc/sphinx/man/lfun/BecomesNetDead
@@ -0,0 +1,67 @@
+
+BecomesNetDead()
+****************
+
+
+FUNKTION
+========
+
+   void BecomesNetDead(object pl);
+
+
+GERUFEN VON
+===========
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   object pl
+     Spieler, der Verbindung zum MUD verliert.
+
+
+BESCHREIBUNG
+============
+
+   Spieler, welche die Verbindung zum MUD freiwillig
+   (z.B. per 'schlafe ein') oder unfreiwillig verlieren, gehen in den
+   Netztotenstatus ueber. Sie verbleiben noch eine definierte Zeit in
+   der zuletzt betretenen Umgebung und werden schliesslich automatisch
+   in den Netztotenraum ueberfuehrt.
+   Um nun einen Ueberblick darueber zu erhalten, wann ein Spieler die
+   Verbindung zum MUD verliert, gibt es die Funktion BecomesNetDead().
+   Sie wird automatisch in der Umgebung des Spielers, in allen Objekten
+   in der Umgebung des Spielers (nicht rekursiv) und in allen Objekten
+   im Spieler (rekursiv) aufgerufen. Uebergeben wird hierbei das
+   Spielerobjekt.
+
+   Es gibt auch noch die Funktion BecomesNetAlive(), mit der man
+   auf aehnliche Weise erwachende Spieler registrieren kann.
+
+
+BEISPIELE
+=========
+
+   Es gibt Gebiete, in denen netztote Spieler unerwuenscht sind.
+   Folgendermassen kann man sich ihrer wirkungsvoll entledigen:
+
+
+
+   void BecomesNetDead(object pl) {
+     pl->move("eingangsraum zu gebiet", M_TPORT|M_NOCHECK);
+   }
+   Man schickt diese Spieler wieder zum Eingang des Gebietes.
+   Da der letzte Aufenthaltsort eines Spielers, der in den
+   Netztotenstatus uebergeht, erst nach Aufruf der Funktion
+   BecomesNetDead() abgespeichert wird, wacht der Spieler dann an dem
+   Ort auf, wo man Ihn innerhalb dieser Funktion hinteleportiert hat.
+
+
+SIEHE AUCH
+==========
+
+   BecomesNetAlive(), PlayerQuit(), /std/player/base.c, /room/netztot.c
+
+24. Aug 2011, Gloinson
diff --git a/doc/sphinx/man/lfun/CannotSee b/doc/sphinx/man/lfun/CannotSee
new file mode 100644
index 0000000..b86d33a
--- /dev/null
+++ b/doc/sphinx/man/lfun/CannotSee
@@ -0,0 +1,49 @@
+
+CannotSee()
+***********
+
+
+FUNKTION
+========
+
+   varargs int CannotSee(int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/living/light.c
+
+
+ARGUMENTE
+=========
+
+   silent - Soll an das Lebewesen direkt automatisch eine Meldung
+            ausgegeben werden wenn es nichts sehen kann?
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion prueft ob das Lebewesen etwas sehen kann, oder nicht.
+   Hierbei wird sowohl das Lichtlevel mit saemtlichen Modifikatoren,
+   als auch Nachtsicht und die Property P_BLIND beruecksichtigt. Da
+   diese Funktion bei zukuenftigen Mudlibaenderungen immer aktualisiert
+   werden duerfte, sollte man sie nach Moeglichkeit benutzen und die
+   Abfragen nicht selbst implementieren.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn der Spieler etwas sehen kann
+   1, wenn der Spieler nichts sehen kann: Blindheit
+   2, wenn der Spieler nichts sehen kann: zu wenig Licht/keine Nachtsicht
+
+
+SIEHE AUCH
+==========
+
+   P_BLIND, P_LIGHT_MODIFIER, P_PLAYER_LIGHT
+
+Last modified: Mon Jan 17 18:22:27 2000 by Padreic
diff --git a/doc/sphinx/man/lfun/ChangeMiniQuest b/doc/sphinx/man/lfun/ChangeMiniQuest
new file mode 100644
index 0000000..507bd68
--- /dev/null
+++ b/doc/sphinx/man/lfun/ChangeMiniQuest
@@ -0,0 +1,72 @@
+
+ChangeMiniQuest()
+*****************
+
+
+FUNKTION
+========
+
+   int ChangeMiniQuest(mixed questgeber, int parameter, mixed newvalue)
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion aendert einen Parameter einer Miniquest im Questmaster,
+   schreibt fuer diese Aktion einen Log-Eintrag und erstellt das Miniquest-
+   Dumpfile neu.
+
+
+ARGUMENTE
+=========
+
+   questgeber - Ladename des Objekts (string), das die Miniquest vergibt,
+                oderdie Indexnummer (int) der Miniquest in der MQ-Liste
+   parameter  - Angabe des zu aendernen Parameters (Position des Values
+                im Miniquests-Mapping):
+                0 : Miniquest-Stufenpunkte, mind. 1
+                2 : Aufgabenbeschreibung der Miniquest (string)
+                3 : Sichtbarkeit der Miniquest (0/1), default ist 1
+                4 : aktiv/inaktiv (1/0)
+                5 : Titel der Miniquest
+                6 : "geschafft"-Beschreibung nach Abschluss der MQ
+                7 : Voraussetzungen, Mapping im Format von P_RESTRICTIONS
+                8 : zugeordnete Region, String wie z.B."polar", "gebirge"
+                9 : erlaubte Abfrageobjekte, Array von Ladenamen, z.B.
+                    ({"/d/region/magier/npc/infonpc"}), es koennen mehrere
+                    Objekte eingetragen sein
+   newvalue   - neuer Wert fuer den angegebenen Parameter
+
+
+RUECKGABEWERTE
+==============
+
+    1: hat geklappt
+    0: Zugriff verweigert
+   -2: ungueltiger Datentyp eines der Argumente, bei Parameter 9 wird
+       ein uebergebenes Array zusaetzlich auf Leerstrings und Elemente
+       geprueft, die keine Strings sind. Wenn das Array ausschliesslich
+       aus solchen Elementen besteht, wird ebenfalls -2 zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Das Flag "active" laesst sich bequemer ueber die Questmaster-Funktion
+   SwitchMiniQuestActive() umschalten.
+   Der Miniquest-Titel darf kein "in" oder "im" enthalten, weil dann die
+   Eintraege in der Fraternitas-Bibliothek nicht gelesen werden
+   koennen.
+
+
+SIEHE AUCH
+==========
+
+   AddMiniQuest(L)
+   P_RESTRICTIONS
diff --git a/doc/sphinx/man/lfun/ChangeReputation b/doc/sphinx/man/lfun/ChangeReputation
new file mode 100644
index 0000000..c3d010e
--- /dev/null
+++ b/doc/sphinx/man/lfun/ChangeReputation
@@ -0,0 +1,72 @@
+
+ChangeReputation()
+******************
+
+
+FUNKTION
+========
+
+   public varargs int ChangeReputation(string repid, int value, int silent)
+
+
+DEFINIERT IN
+============
+
+   /std/player/reputation.c
+
+
+ARGUMENTE
+=========
+
+   repid
+     Jede neue Reputationsgruppe muss anfangs mit einer eindeutigen ID von
+     einem EM in den Reputationsmaster eingetragen werden. Danach kann man
+     ueber die eindeutige ID <repid> auf sie zugreifen.
+   value
+     Der Wert, um den die Reputation geaendert werden soll. Positive Werte
+     erhoehen die Reputation, negative verschlechtern sie.
+   silent
+     Ein optionales Flag. Falls gesetzt, wird keine Standardmeldung ueber
+     die Reputationsaenderung an den Spieler ausgegeben. Man koennte dann
+     eigene Meldungen ausgeben.
+
+
+BESCHREIBUNG
+============
+
+   Vor der Aenderung wird ein Check auf die UID des ausfuehrenden Objektes
+   ausgefuehrt, "fremde" Reputationen darf man somit nicht veraendern.
+   Man kann aber selbstverstaendlich in begruendeten Faellen mit dem
+   zustaendigen Magier/Regionsmagier sprechen, ob man ebenfalls Zugriff
+   erhaelt. Eingetragen wird dies schlussendlich durch einen EM.
+
+
+RUeCKGABEWERT
+=============
+
+   REP_RET_SUCCESS    Reputation wurde veraender.
+   REP_RET_SUCCESSCUT Reputation wurde auf Min / Max veraendert
+   REP_RET_WRONGARGS  Falsche Argumente fuer ChangeRep()
+   REP_RET_INVALIDUID Unzulaessige UID / keine Zugriffsrechte
+   REP_RET_ALREADYMAX Reputation bereits Max / Min
+   REP_RET_INACTIVE   Reputation momentan inaktiv
+   REP_RET_INVALIDREP Reputation nicht vorhanden
+
+
+BEISPIELE
+=========
+
+   s. reputation
+
+
+SIEHE AUCH
+==========
+
+   reputation
+   GetReputation(), GetReputations()
+
+
+ZULETZT GEAeNDERT
+=================
+
+06.04.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/CheckFindRestrictions b/doc/sphinx/man/lfun/CheckFindRestrictions
new file mode 100644
index 0000000..a021a58
--- /dev/null
+++ b/doc/sphinx/man/lfun/CheckFindRestrictions
@@ -0,0 +1,43 @@
+
+CheckFindRestrictions()
+***********************
+
+
+FUNKTION
+========
+
+   varargs int CheckFindRestrictions(object ob, mixed restr, closure qp)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob     - Objekt
+   restr  - zusaetzliches Argument
+   qp     - symbol_function("QueryProp",ob)
+
+
+BESCHREIBUNG
+============
+
+   Funktion, die FindBestWeapon / FindBestArmours einschraenkt.
+   Wird in Wert ungleich 0 zurueckgeliefert, so wird das Objekt
+   nicht genommen.
+
+
+RUECKGABEWERT
+=============
+
+   Normalerweise 0
+
+
+SIEHE AUCH
+==========
+
+   FindBestWeapon(), FindBestArmours()
diff --git a/doc/sphinx/man/lfun/CheckLightType b/doc/sphinx/man/lfun/CheckLightType
new file mode 100644
index 0000000..2296ab8
--- /dev/null
+++ b/doc/sphinx/man/lfun/CheckLightType
@@ -0,0 +1,110 @@
+
+CheckLightType()
+****************
+
+
+FUNKTION
+========
+
+   varargs int CheckLightType(int lighttype, int mode);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   lighttype
+     Auf diesen Lichttyp wird getestet.
+   mode
+     Die Methode, nach der der Lichttyp ueberprueft wird.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion prueft, ob der uebergebene lighttype mit dem in
+   P_LIGHT_TYPE definierten Lichttyp uebereinstimmt.
+
+   Dabei kann in verschiedenen Modi getestet werden:
+
+   LT_CHECK_ANY
+     Es wird geprueft, ob mindestens einer der in lighttype ueber
+     gebenen Lichttypen im Objekt vorhanden ist. Dies ist das
+     Standardverhalten (default) der Funktion.
+
+   LT_CHECK_ALL
+     Es wird geprueft, ob alle in lighttype definierten Lichttypen
+     vorhanden sind. Es koennen aber auch mehr Lichttypen definiert
+     sein.
+
+   LT_CHECK_MATCH
+     Es wird geprueft, ob genau die in lighttype definierten Licht-
+     tyen definiert sind, sind mehr oder weniger vorhanden, gibt die
+     Funktion 0 zurueck.
+
+   LT_CHECK_NONE
+     Es wird geprueft, ob keiner der uebergebenen Lichttypen vorhanden
+     sind. Ob sonst noch andere Lichttypen vorhanden sind, ist dabei
+     egal.
+
+
+RUeCKGABEWERT
+=============
+
+   0 wenn die geprueften Bedingungen nicht korrekt sind, sonst
+   ein Wert ungleich 0.
+
+
+BEISPIELE
+=========
+
+   In einem Raum scheint die Sonne, ausserdem gibt es dort ein Lager-
+   feuer und ein Objekt mit magischem Gluehen (meine Phantasie streikt
+   grad):
+
+   raum->SetProp( P_LIGHT_TYPE, LT_SUN|LT_OPEN_FIRE|LT_GLOWING );
+
+   Es soll getestet werden, ob an in dem Raum Tageslicht herrscht:
+
+   raum->CheckLightType(LT_DAYLIGHT, LT_CHECK_ANY);
+   raum->CheckLightType(LT_DAYLIGHT); // gleichwertig
+
+   Die Funktion ergibt wahr, da LT_DAYLIGHT unter anderem LT_SUN ent-
+   haelt (vgl man P_LIGHT_TYPES).
+
+   Es soll getestet werden, dass weder Mond noch Sterne im Raum sind:
+
+   raum->CheckLightType(LT_MOON|LT_STARS, LT_CHECK_NONE);
+
+   Die Funktion ergibt wahr, da die beiden nicht gesetzt sind.
+
+   Es soll geprueft werden, ob Mond und Sterne im Raum leuchten:
+
+   raum->CheckLightType(LT_MOON|LT_STARS, LT_CHECK_ALL);
+
+   Die Funktion ergibt falsch, da keins der beiden Lichter vorhanden
+   ist. Sie ergaebe aber auch falsch, wenn einer der beiden Typen
+   vorhanden waer. Nur wenn beide vorhanden sind, gibt LT_CHECK_ALL
+   wahr.
+
+
+BEMERKUNG
+=========
+
+   Lighttypes haben nichts mit dem Lichtsystem zu tun. Sie dienen
+   nur der Beschreibung der Lichtverhaeltnisse an/in einem Objekt.
+   Objekte mit verschiedenen Lichtverhaeltnissen beeinflussen sich
+   gegenseitig nicht.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, /std/thing/lighttypes.h, P_LIGHT_TYPE
+
+Last modified: Fri Jun 11 20:47:33 2004 by Vanion
diff --git a/doc/sphinx/man/lfun/CheckResistance b/doc/sphinx/man/lfun/CheckResistance
new file mode 100644
index 0000000..bcf64ca
--- /dev/null
+++ b/doc/sphinx/man/lfun/CheckResistance
@@ -0,0 +1,37 @@
+
+CheckResistance()
+*****************
+
+
+FUNKTION
+========
+
+   CheckRessistance(string* dam_type_list)
+
+
+ARGUMENTE
+=========
+
+   dam_type_list: Liste der Schadensarten, die geprueft werden
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ueberprueft, gegen welche der angegebenen
+   Schadensarten das Lebewesen resistent oder verletzlich ist und
+   gibt einen Faktor zurueck, der mit dem Schaden multipliziert wird.
+   Dieser Faktor betraegt normalerweise 1, bei bei jeder Resistenz
+   wird er halbiert und bei jeder Verletzlichkeit verdoppelt.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Faktor, der mit dem Schaden multipliziert wird, vom Typ "float".
+
+
+SIEHE AUCH
+==========
+
+   "Defend"
diff --git a/doc/sphinx/man/lfun/CheckSensitiveAttack b/doc/sphinx/man/lfun/CheckSensitiveAttack
new file mode 100644
index 0000000..74f6220
--- /dev/null
+++ b/doc/sphinx/man/lfun/CheckSensitiveAttack
@@ -0,0 +1,54 @@
+
+CheckSensitiveAttack()
+**********************
+
+
+FUNKTION
+========
+
+   void CheckSensitiveAttack(int dam, string *dam_type, mixed spell,
+                             object enemy)
+
+
+DEFINIERT IN
+============
+
+   /std/living/inventory.c
+
+
+ARGUMENTE
+=========
+
+   dam        - an Defend uebergebener Schaden
+   dam_type   - Schadenstyp(en)
+   spell      - spell, int oder mapping
+   enemy      - Feindesobjekt
+
+
+BESCHREIBUNG
+============
+
+   Wird von Defend() aufgerufen und prueft die Listen in
+   P_SENSITIVE_ATTACK durch.
+   Wenn die Schluessel und Threshold-Werte stimmen, wird
+   trigger_sensitive_attack(enemy,key,dam,spell,options)
+   im Objekt gerufen.
+
+
+BEMERKUNGEN
+===========
+
+   Objekte mit P_SENSITIVE mit Schluessel SENSITIVE_ATTACK bitte vorsichtig
+   verwenden, da rechenintensiv.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+   P_SENSITIVE_INVENTORY_TRIGGER
+
+28.Jan.2001, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/CheckSpellFatigue b/doc/sphinx/man/lfun/CheckSpellFatigue
new file mode 100644
index 0000000..ac9d3fe
--- /dev/null
+++ b/doc/sphinx/man/lfun/CheckSpellFatigue
@@ -0,0 +1,85 @@
+
+CheckSpellFatigue()
+*******************
+
+
+FUNKTION
+========
+
+   public varargs int CheckSpellFatigue(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
+
+
+ARGUMENTE
+=========
+
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Pruefen von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+   Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
+   Sprueche oder Gruppen von Spruechen gestalten.
+
+   Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
+   geprueft (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls
+   die unter <key> gespeicherte Spruchermuedung.
+   Prueft man einen Eintrag ohne Angabe von <key> ist das Ergebnis dieser
+   Funktion identisch zur Abfrage von P_NEXT_SPELL_TIME.
+
+
+RUeCKGABEWERT
+=============
+
+   0    Spruchermuedung existiert nicht oder ist abgelaufen.
+
+   >0   Spruchermuedung ist noch nicht abgelaufen, Rueckgabewert ist die
+        Zeit, bei der dieser Eintrag ablaeuft. Der Spruch darf _nicht_
+        ausgefuehrt werden.
+
+
+BEISPIELE
+=========
+
+   Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
+   Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
+   Gruppe ausgefuehrt wurde.
+   if (ob->CheckSpellFatigue("extrasuess") {
+     // alte Sperre noch nicht abgelaufen.
+     tell_object(ob, "Deine unendliche Schokotorte ist noch nicht wieder "
+       "nachgewachsen.\n");
+     return ... ;
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
+   unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
+   auf volle 2s aufgerundet werden.
+   Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
+   werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
+   ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
+   Wuensche habt, sprecht den/die Mudlib-EM an.
+
+
+SIEHE AUCH
+==========
+
+   SetSpellFatigue(L), DeleteSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
+27.03.2010, Zesstra
diff --git a/doc/sphinx/man/lfun/ClearRingBuffer b/doc/sphinx/man/lfun/ClearRingBuffer
new file mode 100644
index 0000000..869d298
--- /dev/null
+++ b/doc/sphinx/man/lfun/ClearRingBuffer
@@ -0,0 +1,56 @@
+
+ClearRingBuffer()
+*****************
+
+
+FUNKTION
+========
+
+   protected struct std_ringbuffer ClearRingBuffer(struct std_ringbuffer b);
+
+
+DEFINIERT IN
+============
+
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   b - der zu loeschende Ringpuffer
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion loescht alle Daten aus dem Puffer <b> und re-initialisiert
+   ihn.
+
+
+RUeCKGABEWERT
+=============
+
+   Der geloeschte Puffer <b> wird wieder zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer=CreateRingBuffer(10, MODE_FIFO);
+   // mit irgendwelchen Daten fuellen...
+   // ...
+   // Puffer loeschen
+   buffer = ClearRingBuffer(buffer);
+   // oder:
+   ClearRingBuffer(buffer);
+
+
+SIEHE AUCH
+==========
+
+   CreateRingBuffer(), RingBufferGet(), ResizeRingBuffer()
+
+23.05.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/Configure b/doc/sphinx/man/lfun/Configure
new file mode 100644
index 0000000..5a919ce
--- /dev/null
+++ b/doc/sphinx/man/lfun/Configure
@@ -0,0 +1,102 @@
+
+Configure()
+***********
+
+Configure()
+
+   public mixed Configure(mixed data)
+
+
+DEFINIERT IN
+============
+
+   Beliebigen Objekten
+
+
+ARGUMENTE
+=========
+
+   <data>
+     0 fuer Datenabfrage
+     beliebige Daten, die ein Configure(0) vorher lieferte
+
+
+BESCHREIBUNG
+============
+
+   Viele Objekte werden fuer bestimmte Spieler konfiguriert und so
+   personalisiert. Sie enthalten zusaetzlich zu den Daten, welche waehrend des
+   create() gesetzt wurden, noch weitere spieler-individuelle Daten.
+   Damit diese Objekte im Bedarfsfall neu erstellt werden koennen, sollte ein
+   geeignetes Configure() definfiert werden, um diese Daten abzurufen und in
+   einem neuen Clone (oder neugeladener Blueprint) wieder zu setzen.
+
+
+
+   Existiert Configure() im Objekt, MUSS dieses bei einem Aufruf mit
+   <data>==0 (d.h. Configure(0)) alle individuellen Daten zurueckliefern,
+   die noetig sind, um den aktuellen Zustand des Objektes spaeter
+   wiederherzustellen.
+   Das Objekt darf nach dem Zurueckgeben dieser Daten diese NICHT mehr
+   veraendern, d.h. es muss ggf. eine Kopie erstellt werden (copy, deep_copy)
+
+   Genau diese Daten werden in einem neu geclonten Objekt durch den Aufruf
+   von Configure(data) wieder gesetzt. Das Configure MUSS genau die Daten, die
+   es im alten Objekt zurueckliefert, wieder akzeptieren.
+
+
+RUeCKGABEWERT
+=============
+
+   Wenn <data>==0:
+     Alle individuellen Daten in einer beliebigen Form. Ein Mapping bietet
+     sich jedoch an.
+     Nicht erlaubt sind: Objekte und Closures.
+
+   Wenn <data>!=0:
+     1, wenn die Daten zur Konfiguration akzeptiert wurden.
+     0, sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Configure() ist nicht verpflichtet, erneut Daten zu akzeptieren, wenn es
+   bereits einmal mit gueltigen Daten aufgerufen wurde.
+   Das Zurueckschreiben der Daten kann auch nach Ablauf laengerer Zeit
+   und/oder in einer anderen Uptime erfolgen.
+
+
+BEISPIELE
+=========
+
+   Ein Objekt, welches ein anderes Objekt sicher ersetzt, d.h. die
+   individuelle Konfiguration bleibt erhalten:
+   mixed data;
+   if (call_resolved(data,ob,"Configure",0) == 1) {
+     string obname = load_name(ob);
+     ob->remove();
+     ob = clone_object(obname);
+     if (data) {
+       if (ob->Configure(data) == 1) {
+         printf("Instanz von %s erfolgreich ersetzt, neues Objekt: %O\n",
+             obname,ob);
+       }
+       else {
+         raise_error(sprintf("Configure() in %O akzeptierte Daten nicht!\n",
+             ob));
+       }
+     }
+   }
+   else {
+     printf(break_string(
+         "Das Objekt %O definiert keine Funktion Configure(). Es kann "
+         "nicht sicher ersetzt werden, da unbekannt ist, ob es individuelle "
+         "Daten enthaelt.",78));
+   }
+
+
+LETZTE AeNDERUNG
+================
+
+26.09.2011, Zesstra
diff --git a/doc/sphinx/man/lfun/ConvMaterialList b/doc/sphinx/man/lfun/ConvMaterialList
new file mode 100644
index 0000000..874753b
--- /dev/null
+++ b/doc/sphinx/man/lfun/ConvMaterialList
@@ -0,0 +1,65 @@
+
+ConvMaterialList()
+******************
+
+
+FUNKTION
+========
+
+   varargs string ConvMaterialList(mixed mats, int casus, mixed idinf)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   mixed mats:  - das zu erkennende Material:
+                  - ein Mapping, ein String oder ein Stringarray
+                    ([MAT_A:y,MAT_B:x,..]) oder MAT_A oder ({MAT_A,MAT_B,..})
+   int casus:   - der Fall: 0..3 -> <language.h>: WAS, WESSEN, WEM, WEN
+   mixed idinf  - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
+                  (siehe "man MaterialList")
+
+
+BESCHREIBUNG
+============
+
+   Man uebergibt ConvMaterialList() eine Liste von Materialien, die die
+   Funktion unter Verwendung von MaterialName() in ihre Bestandteile
+   aufsplittet und mit "und" und "," verknuepft zurueckgibt.
+
+
+RUECKGABEWERT
+=============
+
+   string - Materialien, durch Komma und "und" getrennt oder
+            "unbekanntes Material"
+
+
+BEMERKUNGEN
+===========
+
+   Wird von /std/thing/description::MaterialList() gerufen.
+   Bitte an Objekten auch MaterialList() verwenden.
+   Ruft direkt MaterialName() auf.
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/CreateRingBuffer b/doc/sphinx/man/lfun/CreateRingBuffer
new file mode 100644
index 0000000..e10b671
--- /dev/null
+++ b/doc/sphinx/man/lfun/CreateRingBuffer
@@ -0,0 +1,70 @@
+
+CreateRingBuffer()
+******************
+
+
+FUNKTION
+========
+
+   protected struct std_ringbuffer CreateRingBuffer(int size, int newmode);
+
+
+DEFINIERT IN
+============
+
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   size    - Groesse des neuen Ringpuffers (int)
+   newmode - Ausgabemodus beim Abrufen des Puffers (int):
+             MODE_FIFO: First-in-First-Out
+             MODE_LIFO: Last-in-First-Out
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion erstellt einen neuen, leeren Ringpuffer der Groesse <size>
+   und liefert ihn zurueck. Die Daten des Puffers werden spaeter gemaess
+   <newmode> so gespeichert, dass bei der Ausgabe des Puffers mittels
+   RingBufferGet() die entweder die neuesten Daten zuerst (MODE_LIFO) oder
+   die aeltesten Daten zuerst (MODE_FIFO) geliefert werden.
+
+
+RUeCKGABEWERT
+=============
+
+   Der neue Ringpuffer. Dieser wird in einer Struct std_ringbuffer
+   gespeichert. Er ist in einer Variable 'mixed' oder in einer mittels
+   'struct std_ringbuffer' angelegten Variable speicherbar.
+
+
+BEMERKUNGEN
+===========
+
+   Der gelieferte Ringpuffer sollte nicht per Hand verarbeitet oder
+   genaendert werden, sondern nur ueber die Verwaltungsfunktionen aus
+   /std/util/ringbuffer.c.
+
+
+BEISPIELE
+=========
+
+   // Variable anlegen:
+   struct std_ringbuffer buffer;
+   // _oder_: mixed buffer;
+   // neuen Puffer mit max. 50 Elementen anlegen, der bei der Abfrage die
+   // aeltesten Daten zuerst zurueckliefert:
+   buffer = CreateRingBuffer(50, MODE_FIFO);
+
+
+SIEHE AUCH
+==========
+
+   RingBufferPut(), RingBufferGet(), ResizeRingBuffer()
+
+23.05.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/CustomizeObject b/doc/sphinx/man/lfun/CustomizeObject
new file mode 100644
index 0000000..2c7736a
--- /dev/null
+++ b/doc/sphinx/man/lfun/CustomizeObject
@@ -0,0 +1,84 @@
+
+CustomizeObject()
+*****************
+
+
+FUNKTION
+========
+
+   string CustomizeObject();
+
+
+DEFINIERT IN
+============
+
+   /std/virtual/v_compiler.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   Den Objektnamen, den das zuletzt erzeugte Objekt (welches gerade die
+   Funktion aufruft) spaeter vom Driver bekommen wird.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ist aus dem Grunde da, da zum Zeitpunkt des Clonens des
+   VC-Objektes (P_STD_OBJECT) dieses Objekt ja noch nicht weiss Wer
+   oder Was es spaeter mal sein wird.
+   Deshalb kann dieses VC-Objekt im create() (und nur da!) die Funktion
+   CustomizeObject() in dem virtual_compiler aufrufen, welches das Objekt
+   geclont hat und bekommt von diesem den Objektnamen zureck, welches es
+   spaeter mal bekommen wird.
+   Da das VC-Objekt vom VC geclont wurde, ist previous_object() im create()
+   des VC-Objektes der VC, in dem man CustomizeObject() ruft.
+
+
+BEMERKUNGEN
+===========
+
+   Das CustomizeObject() im Standard-VC gibt nur den zukuenftigen Objektnamen
+   zurueck und macht sonst nix.
+
+
+BEISPIELE
+=========
+
+   create() eines VC-Objektes:
+
+
+
+   protected void create() {
+     ...
+
+
+
+     // wer bin ich denn eigentlich?
+     string myname = previous_object()->CustomizeObject();
+     switch(myname) {
+       // Kram konfigurier, ja nach myname...
+     }
+
+
+
+     ...
+   }
+
+
+SIEHE AUCH
+==========
+
+   virtual_compiler
+   CustomizeObject(), Validate(), NoParaObjects(),
+   P_COMPILER_PATH, P_PARA
+   /std/virtual/v_compiler.c
+
+21.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/Damage b/doc/sphinx/man/lfun/Damage
new file mode 100644
index 0000000..b36061b
--- /dev/null
+++ b/doc/sphinx/man/lfun/Damage
@@ -0,0 +1,56 @@
+
+Damage()
+********
+
+
+FUNKTION
+========
+
+   int Damage(int dam);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c und
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   dam  Der Wert, mit dem die Waffe/Ruestung beschaedig werden soll.
+
+
+BESCHREIBUNG
+============
+
+   P_WC bzw. P_AC wird um dam reduziert und P_DAMAGED wird um
+   dam erhoeht.
+   Bei dam>0 wird das Objekt beschaedigt, bei dam<0 repariert.
+   Dabei werden sowohl die Obergrenzen (s. /sys/combat.h) wie auch
+   die Untergrenzen (Waffen:30, Ruestungen: 0) fuer P_WC und P_AC
+   beachtet. Es kann auch nicht mehr repariert werden, als vorher
+   beschaedigt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Wert der Beschaedigung, die tatsaechlich vorgenommen wurde.
+
+
+BEMERKUNGEN
+===========
+
+   Ist das Objekt in Benutzung, setzt die Funktion Damage automatisch
+   die Properties P_TOTAL_WC bzw. P_TOTAL_AC in dem benutzenden Spieler
+   auf die richtigen Werte.
+
+
+SIEHE AUCH
+==========
+
+   /std/armour/combat.c, /std/weapon/combat.c
+
+Last modified: Thu May 22 10:13:23 1997 by Paracelsus
diff --git a/doc/sphinx/man/lfun/DeAssocMember b/doc/sphinx/man/lfun/DeAssocMember
new file mode 100644
index 0000000..f47d548
--- /dev/null
+++ b/doc/sphinx/man/lfun/DeAssocMember
@@ -0,0 +1,71 @@
+
+DeAssocMember()
+***************
+
+
+FUNKTION
+========
+
+   int DeAssocMember(object npc)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   Der NPC, der nicht mehr zugeordnet sein soll.
+
+
+BESCHREIBUNG
+============
+
+   Hebt die Zuordnung eines NPCs zu einem Spieler auf.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls Aufhebung erfolgreich, sonst 0.
+
+
+BEISPIEL
+========
+
+   void fun(object pl)
+   {
+    if ( pl && pl->DeAssocMember(this_object()) )
+     tell_object(pl,break_string(
+         "Ich kaempfe nun nicht mehr auf Deiner Seite!\n",78,
+         "Ein Feuerteufel teilt Dir mit:");
+    ...
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
+   zugeordneten NPC aufgerufen werden.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/DeclAdj b/doc/sphinx/man/lfun/DeclAdj
new file mode 100644
index 0000000..d7a7f91
--- /dev/null
+++ b/doc/sphinx/man/lfun/DeclAdj
@@ -0,0 +1,68 @@
+
+DeclAdj()
+*********
+
+
+FUNKTION
+========
+
+   varargs string DeclAdj( string adj, int casus, int demon);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   adj
+        Das zu deklinierende Adjektiv.
+
+   casus
+        Der Fall, in den es dekliniert werden soll.
+
+   demon
+        Bezieht sich das Adjektiv auf einen bestimmten oder einen
+        unbestimmten Gegenstand?
+
+
+BESCHREIBUNG
+============
+
+   Dekliniert das uebergebene Adjektiv in den angegebenen Fall. Ist demon
+   ungleich Null, so wird das Adjektiv so behandelt, als wuerde es sich
+   auf einen bestimmten Gegenstand beziehen, ansonsten bezieht es sich auf
+   einen unbestimmten Gegenstand.
+
+
+RUeCKGABEWERT
+=============
+
+   Das deklinierte Adjektiv. Es wird zusaetzlich noch ein Leerzeichen
+   hinten angefuegt!
+
+
+BEISPIELE
+=========
+
+   Zunaechst ein bestimmtes Adjektiv:
+
+   printf("Der %sBall.\n", ball->DeclAdj("gruen", WER, 1);
+
+   Nun ein unbestimmtes Adjektiv:
+
+   printf("Ein %sBall.\n", ball->DeclAdj("gruen", WER, 0);
+
+   Da DeclAdj() "gruene " bzw. "gruener " zurueckgibt, darf zwischen dem
+   "%s" und dem "Ball" kein Leerzeichen stehen!
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+
+Last modified: Wed May 8 10:18:05 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/Defend b/doc/sphinx/man/lfun/Defend
new file mode 100644
index 0000000..aa53945
--- /dev/null
+++ b/doc/sphinx/man/lfun/Defend
@@ -0,0 +1,175 @@
+
+Defend()
+********
+
+
+FUNKTION
+========
+
+   public int Defend(int dam, string|string* dam_type, int|mapping spell,
+                      object enemy)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat
+
+
+ARGUMENTE
+=========
+
+   int dam                  initiale Staerke des Angriffs (10 dam ~ 1 HP)
+   string* dam_type         Art(en) des Schadens, der angerichtet werden
+                            soll
+                            Muss ein Array von Schadenstypen sein,
+                            alte Objekte uebergeben hier manchmal strings.
+   int/mapping spell        - 0 fuer normale Angriffe (keine Zauber)
+                            - 1 fuer Zauber (Standardruestungen ignorieren)
+                            - mapping fuer mehr Informationen
+                            Heute bitte nach Moeglichkeit ein Mapping
+                            uebergeben.
+   object enemy             der Feind/Schadenverursacher
+
+
+BESCHREIBUNG
+============
+
+   1. Generell
+   Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark die
+   Ruestungen und koerpereigenen Abwehrkraefte sind und die Staerke des
+   Schadens dementsprechend vermindert.
+   Ggf. wird der Schaden zugefuegt und der Feind in  die Liste der Feinde
+   aufgenommen. Der Schaden betraegt:
+    (dam-Summe(Ruestungsstaerken)-random(P_BODY+A_DEX))*CheckResistance/10
+   aber nicht unter 0.
+
+   2. Der Parameter 'spell'
+   Ist 'spell' 0, dann gilt der Angriff als normale physische Attacke
+   Uebergibt man als 'spell'-Parameter ein Mapping, so gibt es dafuer
+   diverse Flags, die das Ergebnis manipulieren (in new_skills.h
+   enthalten). Nichtangabe eines Flags gilt als 0.
+
+   - SP_PHYSICAL_ATTACK ---------- 0/1
+              1, wenn Ruestungen wirken sollen, 0 sonst
+              -> entspricht !spell, wenn dieses Int ist
+   - SP_NO_ENEMY ----------------- 0/1
+              1, falls der Angriff nicht toedlich ist, es also keinen echten
+              Gegner gibt
+              -> es wird dann reduce_hit_points() gerufen statt do_damage()
+   - SP_NO_ACTIVE_DEFENSE -------- 0/1
+              1, falls aktive Abwehren (wie zurueckschlagende Amulette,
+              Karateabwehren oder Ausweichmanoever) unterbleiben sollen
+              -> zB bei Kratzen durch Dornen oder Fall aus grosser Hoehe
+                 ist aktive Abwehr oder Ausweichen unlogisch
+   - SP_RECURSIVE ---------------- 0/1
+              1, falls der Spell aus einem Defend gerufen wurde (oder einer
+              DefendFunc)
+              -> verhindert Rekursionsprobleme
+   - SP_NAME --------------------- string
+              Name des Spells
+   - SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY, values int>=0
+              Die Schutzwirkung durch P_AC/Magie einer Ruestung wird
+              typabhaengig reduziert. Aufbau eines Mappings im Beispiel:
+              ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht
+                P_BODY:  50,  // Koerper zu 50%
+                AT_BELT: 600  // Guertel zu 600%
+              ])
+              -> alle 'fehlenden' Eintraege wirken normal
+   - SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays
+              0, fuer keine Treffermeldung, 1 sonst
+              In einem Array koennen Ersatz-Treffermeldungen definiert
+              werden. Format ist:
+              ({
+               ({ int lphit1, string mess_me,
+                              string mess_en,
+                              string mess_room }),
+               ({ lphit2, mess_me, mess_en, mess_room }),
+               ...
+               ({ lphitn, mess_me, mess_en, mess_room }),
+              })
+              wobei lphit1<lphit2<...<lphitn sein muss, d.h. das Array-
+              Array aufsteigend sortiert.
+
+              Ist ein Treffer x LP hart, werden die Meldungen des lphit-
+              Arrays ausgegeben, dessen Wert am naehesten unter dem Schaden
+              liegt.
+
+              In den Meldungen mess_me (an den Getroffenen), mess_en (an
+              den Feind), mess_room (an die restlichen Umstehenden) koennen
+              Ersatzstrings wie folgt verwendet werden:
+              @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
+              @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
+   - EINFO_DEFEND ------------ Mapping
+              Dieses Mapping liefert erweiterte Informationen zu dem
+              bisherigen Ablauf des aktiven Attacks.
+              Die verfuegbaren Informationen sind in der Manpage zu
+              DefendInfo festgehalten.
+
+   3. Reihenfolgen in Defend
+   - das Living wird angegriffen, wenn
+     - P_NO_ATTACK != 0
+     - 'enemy' existiert und kein netztoter Spieler ist
+   - P_DEFENDERS werden durchgegangen (und eventuell benachrichtigt)
+   - P_TMP_ATTACK_HOOK wird abgefragt
+   - die Ruestungen werden vom Schaden gegebenenfalls abgezogen
+   - magischer Ausweichskill beruecksichtigt
+   - sensitive Objekte werden ggf. benachrichtigt
+   - InternalModifyDefend wird gerufen
+   - Koerperabwehr abgezogen
+   - der Schaden an do_damage()/reduce_hit_points() uebergeben
+   - Flucht ueberpruefen mit CheckWimpyAndFlee()
+
+
+BEMERKUNGEN
+===========
+
+   Ruestungen wirken konventionell nur, wenn mindestens ein Schadensanteil
+   mechanisch ist und es kein Spell oder ein Spell mit SP_PHYSICAL_ATTACK
+   auf 1 ist.
+
+   Defend() beruecksichtigt magische Verteidigungen, die der Spieler bei
+   sich hat, sollte also aus Fairness gegenueber den Objekten anderer
+   Magier immer dem direkten reduce_hit_points() oder do_damage()
+   vorgezogen werden. Mittels der Flags in 'spell' kann man sehr viel
+   aendern.
+
+
+RUECKGABEWERT
+=============
+
+   Hoehe des tatsaechlichen Schadens. Dies kann mehr sein als die
+   Lebenspunkte des Lebewesens.
+
+BEISPIELE (SIEHE AUCH Defend_bsp):
+   // ein simpler Angriff: enem->Defend(100, ({DT_BLUDGEON}), 0,
+   this_object());
+
+   // ein magischer Angriff (ohne Treffermeldung): enem->Defend(100,
+   ({DT_BLUDGEON, DT_FIRE}), 1, this_object());
+
+   // ein magischer Angriff mit Treffermeldung: enem->Defend(100,
+   ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
+
+      this_object());
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
+   Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE,
+              do_damage(L), reduce_hit_points(L)
+   Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L)
+              P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L)
+              P_BODY, A_DEX
+   Daten:     P_LAST_COMBAT_TIME
+              P_LAST_DAMTYPES, P_LAST_DAMTIME, P_LAST_DAMAGE
+              P_DAMAGE_MSG
+   Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
+   Sonstiges: CheckSensitiveAttack(L)
+              InternalModifyDefend(L)
+              UseSkill(L),
+              DefendInfo
+
+15.09.2010, Zesstra
diff --git a/doc/sphinx/man/lfun/DefendFunc b/doc/sphinx/man/lfun/DefendFunc
new file mode 100644
index 0000000..1683b3f
--- /dev/null
+++ b/doc/sphinx/man/lfun/DefendFunc
@@ -0,0 +1,107 @@
+
+DefendFunc()
+************
+
+
+DefendFunc(L)
+=============
+
+
+FUNKTION
+========
+
+   int DefendFunc(string|string *dtyp, int|mappingspell, object enemy);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten; fuer /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   dtyp
+        Schadenstypen der Angriffsart.
+        Sollte heute ein string* sein.
+   spell
+        0 bei veralteten konventionellen Angriffen im Regelfall jedoch
+        ein Mapping mit weiteren Infos.
+        Bei einem konventionellen Angriff ist spell[SP_PHYSICAL_ATTACK] gleich
+        1.
+   enemy
+        Der angreifende Gegner
+
+
+BESCHREIBUNG
+============
+
+   Anhand der uebergebenen Parameter kann hier ein Ruestungsbonus (oder
+   auch ein Ruestungsmalus) errechnet werden, der zu dem normalen
+   Ruestungswert (abhaengig von der Angriffsart) hinzuaddiert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Ruestungsbonus, der zur Ruestungsklasse addiert werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
+   zusammen mit der P_AC insgesamt nur in sehr seltenen, wohldurch-
+   dachten Ausnahmefaellen die maximal zulaessige P_AC fuer diesen
+   Ruestungstyp ueberschreiten. In solchen Ausnahmefaellen duerfen
+   die DefendFuncs nicht konstant wirken.
+
+   Bei aktivem Zurueckschlagen IMMER auf Flags wie SP_RECURSIVE und
+   SP_NO_ACTIVE_DEFENSE pruefen und ggf. abbrechen.
+
+
+BEISPIELE
+=========
+
+   Eine Ruestung, die bei Angriffen mit Feuer ihre volle Staerke entfaltet
+   und bei Angriffen durch Geister geschwaecht wird:
+
+   void create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_ARMOUR);
+     SetProp(P_AC, 20);
+     ...
+     // Die DefendFunc() ist in der Ruestung selbst definiert
+     SetProp(P_DEFEND_FUNC, this_object());
+   }
+
+   int DefendFunc(string *dtyp, mixed spell, object enemy)
+   {
+     int prot;
+
+     // Zuerst fragen wir den Angriff durch Feuer ab:
+     if (member(dtyp, DT_FIRE) >= 0)  // Feuer gehoert zu den Schadenstypen
+       prot = 5 + random(10); // Das ergibt maximal 14. Zusammen mit P_AC
+                              // kommt man also maximal auf 14+20 = 34,
+                              // liegt also unter der fuer AT_ARMOUR
+                              // geltenden Obergrenze
+
+     // Und jetzt der Geistertest
+     if (enemy->QueryProp(P_RACE) == "Geist" ||
+         enemy->is_class_member(CL_GHOST))
+       prot -= random(10);
+
+     // Der Rueckgabewert wird auf den aus P_AC errechneten Wert draufgeschlagen
+     return prot;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_DEFEND_FUNC, QueryDefend(), /std/armour/combat.c
+
+Last modified: 18.Jul 2006 Muadib
diff --git a/doc/sphinx/man/lfun/DefendInfo b/doc/sphinx/man/lfun/DefendInfo
new file mode 100644
index 0000000..21d41ac
--- /dev/null
+++ b/doc/sphinx/man/lfun/DefendInfo
@@ -0,0 +1,216 @@
+
+DefendInfo()
+************
+
+
+FUNKTION
+========
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+ARGUMENTE
+=========
+
+
+BESCHREIBUNG
+============
+
+    Die DefendInformationen werden im Runde eines Attack/Defend Vorgangs
+    in Attack initial angelegt und dem Defend ueber den Parameter spell
+    uebergeben. Ist dieser Parameter ein Mapping, so sind die
+    DefendInformationen ueber den Key EINFO_DEFEND zu erhalten.
+    Die Informationen liegen in Form eines Mappings vor.
+    Vor Zugriff sollte immer auf die Existenz dieses Keys in dem Mapping
+    geprueft werden, da nicht alle Informationen immer existieren.
+    Die Keys sind in combat.h definiert und sind folgende:
+
+
+
+   ORIGINAL_AINFO - Mapping
+       Hier ist eine Kopie des originalen ainfo-mappings des Attacks
+       vorhanden mit folgenden Eintraegen:
+       Immer vorhandene Eintraege:
+         SI_ENEMY              der angegriffene Gegner
+
+
+
+       Angriff mit gezueckter Waffe:
+         P_WEAPON              das Waffenobjekt selbst
+         P_WEAPON_TYPE         P_WEAPON_TYPE der Waffe
+         P_WC                  P_WC der Waffe
+         P_NR_HANDS            P_NR_HANDS der Waffe
+         SI_SKILLDAMAGE_TYPE   P_DAM_TYPE der Waffe
+         SI_SKILLDAMAGE        waffe->QueryDamage(enemy)
+            bei vorhandenem Zweihandskill SK_TWOHANDED wird nur der durch
+            den Skill modifizierte Schadenswert uebernommen
+         SI_SKILLDAMAGE_MSG    "mit "+waffe->name(WEM,0)
+         SI_SKILLDAMAGE_MSG2   "mit "+waffe->name(WEM,1)
+         SI_SPELL              0
+
+       Angriff mit blossen Haenden:
+         P_WEAPON_TYPE         WT_HANDS
+         P_WC                  P_HANDS[1]
+         SI_SKILLDAMAGE        Schadenswert, aus P_HANDS[1] und A_STR
+                               berechnet
+         SI_SKILLDAMAGE_TYPE   P_HANDS[2]
+         SI_SKILLDAMAGE_MSG
+         SI_SKILLDAMAGE_MSG2   beides P_HANDS[0]
+         SI_SPELL              0
+
+
+
+       Angriff mit einem Spell (SK_MAGIC_ATTACK):
+         SI_SKILLDAMAGE        Schadenswert des Spells
+         SI_SKILLDAMAGE_TYPE   Schadenstypen des Spells
+         SI_SKILLDAMAGE_MSG    Schadensmeldung des Spells, wenn vorhanden,
+                               sonst "mit magischen Faehigkeiten"
+         SI_SKILLDAMAGE_MSG2   entsprechende Meldung des Spells, wenn
+                               gesetzt, ansonsten identisch mit
+                               SI_SKILLDAMAGE_MSG
+         P_WEAPON_TYPE         P_WEAPON_TYPE des Spells, wenn vorhanden,
+                               sonst WT_MAGIC
+         SI_SPELL              SI_SPELL des Spells
+
+
+
+       Hinweise:
+       - Alle Eintraege in diesem Mapping koennen bereits durch
+         InternalModifyAttack() veraendert worden sein.
+       - Die Daten werden mittels deep_copy(ainfo) eingetragen.
+       - Daten in den Eintraegen SI_SKILLDAMAGE* und SI_SPELL koennen bei
+         physikalischen Angriffen durch die Skills FIGHT(P_WEAPON_TYPE) oder
+         SK_FIGHT oder durch einen P_TMP_ATTACK_MOD bzw. Hook vom Typ
+         H_HOOK_ATTACK_MOD modifiziert worden sein.
+
+
+
+   ORIGINAL_DAM - int
+       Der Originalschaden aus dem Attack
+
+   ORIGINAL_DAM_TYPE - string/string*
+       Der Originaldamagetyp aus dem Attack
+
+   CURRENT_DAM - int
+       Der momentane Schaden, nach schon erfolgten Modifikationen
+
+
+
+   CURRENT_DAM_TYPE - string/string*
+       Der momentane Damagetyp, nach schon erfolgten Modifikationen
+
+
+
+   ENEMY_INSERTED - int
+       0 oder 1 je nachdem ob der Angreifer schon in der enemy-list
+       vorhanden war oder nicht
+
+
+
+   RFR_REDUCE - int
+       0 oder reduzierter Schaden durch RFR Modifikation
+
+
+
+   PRESENT_DEFENDERS - Array
+       Liste der durch InformDefend informierten Defender als Objekt.
+       Ein Defender wird immer NACH InformDefend
+       dazugefuegt
+
+
+
+   DEFENDING_DEFENDER - Array ({})
+       Hat ein durch InformDefend ein Defender verteidigt, so wird
+       fuer diesen Defender ein Eintrag in diesem Array vorgenommen,
+       welcher folgende Struktur besitzt.
+               ({
+                       DEF_DEFENDER - Object
+                         Der Verteidiger, welcher VOR
+                         DefendOther eingefuegt wird
+                       DEF_DAM - int
+                         Der veraenderte Schaden, welcher NACH
+                         DefendOther eingefuegt wird
+                       DEF_DAMTYPE string/string*
+                         Die veraenderte Schadensart, welche
+                         NACH DefendOther eingefuegt wird
+                       DEF_SPELL - Mapping
+                         Das Mapping des veraenderten Spells, welches
+                         als Kopie NACH DefendOther eingefuegt wird
+               })
+
+
+
+   DEFEND_HOOK - Int/Array
+       DI_NOHOOK, wenn kein Hook da war, DI_HOOKINTERRUPT, wenn der
+       Hook das Defend unterbricht, DI_HOOK, wenn ein Hook vorhanden
+       ist, dieser das Defend aber unveraendert laesst.
+       Veraendert ein Hook das Defend, so ist hier ein Array zu finden
+       mit den veraenderten Parametern in der Struktur:
+               ({
+                       HOOK_DAM - int
+                          Der veraenderte Schaden
+                       HOOK_DAMTYPE - string/string*
+                          Die veraenderte Schadensart
+                       HOOK_SPELL - Mapping
+                          Das Mapping des veraenderten Spells als Kopie
+               })
+
+
+
+   DEFEND_ARMOURS - Mapping (2 Werte pro Key)
+       Liste der beruecksichtigten Ruestungen. Fuer jede Ruestung
+       wird ein Eintrag vorgenommen, mit dem Objekt der jeweiligen
+       Ruestung als Key. Hierbei werden die Ruestungen erst eingetragen,
+       wenn ihr jeweiliges QueryDefend() aufgerufen wird, d.h. es sind nicht
+       von Anfang an alle getragenen Ruestung drin. Jeder Eintrag im Mapping
+       besitzt die folgenden 2 Werte:
+               DEF_ARMOUR_DAM - int
+                   Der Schaden NACH QueryDefend (vorher 0)
+               DEF_ARMOUR_PROT - int
+                   Verteidigungswert der Ruestung VOR DefendFunc
+       Bsp: Ich will wissen, wie gut 'ruestung' schuetzte:
+            spell[EINFO_DEFEND][DEFEND_ARMOURS][ruestung,DEF_ARMOUR_PROT]
+
+   DEFEND_GUILD - Array
+       Eine Liste mit der Modifikation der Gilde mit der Struktur
+               ({
+                       GUILD_DAM - int
+                         Der veraenderte Schaden
+                       GUILD_DAMTYPE - string/string*
+                         Die veraenderte Schadensart
+               })
+
+
+
+   DEFEND_RESI - int
+       Schaden nach CheckResistance
+
+
+
+   DEFEND_BODY - int
+       Schaden nach Beruecksichtigung des Bodies (nur
+       physikalisch)
+
+
+
+   DEFEND_LOSTLP - int
+       Tatsaechlich abgezogene LP
+
+
+
+   DEFEND_CUR_ARMOUR_PROT - int
+       Schutz der Ruestung vor Call der
+       DefendFunc. Ist nur in der DefendFunc definiert. Kann auch aus
+       DEFEND_ARMOURS entnommen werden
+
+
+SIEHE AUCH
+==========
+
+   Attack, Defend
+
+18.Jul 2006 Muadib
diff --git a/doc/sphinx/man/lfun/DefendOther b/doc/sphinx/man/lfun/DefendOther
new file mode 100644
index 0000000..f0386f2
--- /dev/null
+++ b/doc/sphinx/man/lfun/DefendOther
@@ -0,0 +1,107 @@
+
+DefendOther()
+*************
+
+
+FUNKTION
+========
+
+   mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   dam
+     Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
+     verursacht werden soll.
+   dam_type
+     Der Schadenstyp (oder die Schadenstypen), der beim zu
+     verteidigenden Lebewesen verursacht werden sollen.
+   spell
+     Wenn das zu verteidigende Lebewesen mit Spells angegriffen wurde,
+     so koennte man hier mehr Infos entnehmen.
+   enemy
+     Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit den Eintraegen der gegebenenfalls veraenderten
+   uebergebenen Parameter:
+       (1) dam      [Typ int],
+       (2) dam_type [Typ string*],
+       (3) spell    [Typ mapping].
+
+
+BESCHREIBUNG
+============
+
+   Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
+   umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
+   mittels AddDefender() angemeldet wurden und sich der selben Umgebung
+   befinden.
+   Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
+   andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
+   sind, verteidigen sollen.
+   Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
+   von DefendOther() in einen Angriff eingreifen, wobei die
+   Schadensstaerke, der Schadenstyp (die Schadenstypen),
+   Zusatzinformationen fuer Angriffsspells und der Angreifer als
+   Parameter uebergeben werden.
+   Desweiteren ist zu beachten, dass bei als physikalisch markierten
+   Angriffen in einem Team nur Verteidiger aus der ersten Reihe
+   beruecksichtigt werden und dass bei einem Angriff zufaellig aus
+   allen moeglichen Verteidigern ausgewaehlt wird.
+   Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
+   wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
+
+
+BEISPIEL
+========
+
+   Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
+   verteidigen, z.B. beschworene Daemonen:
+     inherit "std/npc";
+     include <properties.h>
+     object owner;
+     void create()
+     { ::create();
+       SetProp(P_NAME,"Daemon");
+       ...
+     }
+   // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
+   // Parameter aufrufen
+     Identify(object caster)
+     { if(!objectp(caster))
+         call_out(#'remove,0);
+       owner=caster;
+       owner->AddDefender(this_object());
+     }
+   // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
+   // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
+     mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy)
+     { if(sizeof(dam_type)&&member_array(DT_FIRE,dam_type)!=-1)
+         dam=0;
+       return({dam,dam_type,spell});
+     }
+   Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
+   Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
+   diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
+   uebergeben wird.
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), RemoveDefender(), InformDefend(), Kill(), IsEnemy(),
+   P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
+
+Last modified: Fri Feb 25 14:45:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/lfun/Defend_bsp b/doc/sphinx/man/lfun/Defend_bsp
new file mode 100644
index 0000000..9feb25f
--- /dev/null
+++ b/doc/sphinx/man/lfun/Defend_bsp
@@ -0,0 +1,155 @@
+
+Defend_bsp()
+************
+
+
+Defend() - BEISPIELE
+====================
+
+
+FUNKTION
+========
+
+   varargs int Defend(int dam, mixed dam_type, mixed spell, object enemy)
+
+
+BEMERKUNGEN
+===========
+
+   Die hier aufgefuehrten Komplexbeispiele sind zum Verstaendnis gedacht.
+
+
+BEISPIELE
+=========
+
+   1) Ein ordinaerer Biss ins Bein.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            0,
+                            this_object());
+
+   2) Ein Biss ins Bein, mit der Hose als 200%ige Ruestung und Rest mit 100%.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            ([SP_PHYSICAL_ATTACK: 1,
+                              SP_REDUCE_ARMOUR:   ([AT_TROUSERS: 200])
+                            ]),
+                            this_object());
+
+   3) Der Biss, wenn ein Tier in die Hose gekrochen ist und dieser ohne
+      Treffermeldung und physischen Ruestungsschutz durchgeht.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            ([SP_PHYSICAL_ATTACK: 0]),
+                            this_object());
+
+   4) Spell-Parameter
+      // Beispiel fuer einen Spell, der nur vom Helm normal und von einem
+      // Amulett mit 115% aufgehalten wird, alle anderen (angebenenen)
+      // Ruestungen haben 0% Schutzwirkung.
+      // Mit Ausgabe eigener Meldungen: beginnend mit -1, da der verursachte
+      // Schadenswert minimal 0 wird (fuers Ersetzen: Feind: @WEx2,
+      // Spieler: WEx1); maximal wird er (Empfindlichkeiten jetzt mal aussen
+      // vor) 49 (499/10 = 49), nicht 499!!!
+      this_player()->Defend(
+        random(500),
+        ({DT_PIERCE, DT_AIR}),
+        ([SP_PHYSICAL_ATTACK: 1, // wegen DT_PIERCE
+          SP_REDUCE_ARMOUR:   ([AT_ARMOUR:   0,
+                                AT_HELMET: 100,
+                                AT_RING:     0,
+                                AT_GLOVE:    0,
+                                AT_CLOAK:    0,
+                                AT_BOOT:     0,
+                                AT_TROUSERS: 0,
+                                AT_SHIELD:   0,
+                                AT_AMULET: 115,
+                                AT_MISC:     0,
+                                AT_BELT:     0,
+                                AT_QUIVER:   0])
+          SP_SHOW_DAMAGE:
+                ({({-1,"@WER2 schrammt Dich mit einem durchbohrenden Blick.",
+                       "Du schrammst @WEN1 mit einem durchbohrenden Blick.",
+                       "@WER2 schrammt @WEN1 mit einem durchbohrenden Blick."
+                  }),
+                  ({5,"Der durchbohrende Blick von @WEM2 trifft Dich.",
+                      "Dein durchbohrender Blick trifft @WEN1.",
+                      "Der durchbohrende Blick von @WEM2 trifft @WEN1."
+                  }),
+                  ({20,"@WESSEN2 stechender Blick durchbohrt Dich.",
+                       "Dein stechender Blick durchbohrt @WEN1.",
+                       "@WESSEN2 stechender Blick durchbohrt @WEN1."
+                })})
+        ]),
+        this_object());
+
+      // Etwas geschickter geht das Ganze, wenn wir einfach aus der Mudlib
+      // alle existierenden Ruestungen in ein Mapping packen und diese
+      // nullen (damit sind wir auch gegen neue Ruestungstypen sicher):
+      mapping amap = map_indices(VALID_ARMOUR_CLASS,#'!);
+      amap[AT_HELMET]=100;
+      amap[AT_AMULET]=115;
+
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_AIR}),
+                            ([SP_PHYSICAL_ATTACK: 1,
+                              SP_REDUCE_ARMOUR: amap,
+                              SP_SHOW_DAMAGE: ({ ... (siehe oben)
+
+   5) Der Biss von weiter oben mit Meldung.
+      // Eine Meldung, die nur ausgegeben wird, wenn der Biss auch mindestens
+      // einen LP abzieht.
+      this_player()->Defend(random(500),
+                            ({DT_PIERCE, DT_RIP}),
+                            ([SP_PHYSICAL_ATTACK: 1,
+                              SP_REDUCE_ARMOUR:   ([AT_TROUSERS: 200]),
+                              SP_SHOW_DAMAGE: ({
+                                ({1,"@WER2 beisst Dich ins Bein!",
+                                    "Du beisst @WEN1 ins Bein!",
+                                    "@WER2 beisst @WEN1 ins Bein!"
+                                 })           })
+                            ]),
+                            this_object());
+
+   6) DefendFunc() und Defend() in einem Objekt
+      6a)
+      // eine Luftangriffe reflektierende Ruestung:
+      int DefendFunc(string *dtyp, mixed spell, object enemy) {
+        if(member(dtyp, DT_AIR)>=0 && !spell[SP_RECURSIVE])
+          enemy->Defend(random(200),
+                        ({DT_AIR}),
+                        ([SP_RECURSIVE: 1,
+                          SP_SHOW_DAMAGE:
+                          ({"Ein Luftwirbel erfasst auch Dich.",
+                            "Deine Ruestung wirbelt @WEN1 herum.",
+                            "@WESSEN2 Ruestung wirbelt @WEN1 herum."
+                           })
+                        ]),
+                        QueryProp(P_WORN));
+
+        return 0; // -> In diesem Fall gibts keinen Ruestungsbonus!
+      }
+
+      6b)
+      // Eine NUR REINE Luftangriffe reflektierende Ruestung:
+      int DefendFunc(string *dtyp, mixed spell, object enemy) {
+        if(!sizeof(dtyp-({DT_AIR})) && !spell[SP_RECURSIVE])
+          ...
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
+   Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE, do_damage(L),
+              reduce_hit_points(L), reduce_spell_points(L)
+   Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L),
+              P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L),
+              P_BODY, A_DEX, Defend(L)
+   Daten:     P_LAST_COMBAT_TIME, P_LAST_XP, P_LAST_DAMAGE,
+              P_LAST_DAMTYPES, P_LAST_DAMTIME
+   Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
+   Sonstiges: CheckSensitiveAttack(L), UseSkill(L),
+              InternalModifyDefend(L)
+
+25. Mai 2011 Gabylon
diff --git a/doc/sphinx/man/lfun/DeleteSpellFatigue b/doc/sphinx/man/lfun/DeleteSpellFatigue
new file mode 100644
index 0000000..f01755b
--- /dev/null
+++ b/doc/sphinx/man/lfun/DeleteSpellFatigue
@@ -0,0 +1,55 @@
+
+DeleteSpellFatigue()
+********************
+
+
+FUNKTION
+========
+
+   public void DeleteSpellFatigue(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
+
+
+ARGUMENTE
+=========
+
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Loeschen von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+
+   Ist <key> 0, wird die globale Spruchsperre geloescht (identisch zu der
+   Property P_NEXT_SPELL_TIME), anderenfalls die unter <key> gespeicherte
+   Spruchermuedung.
+   Loescht man einen Eintrag 0 ist das Ergebnis dieser Funktion identisch zum
+   Loeschen/Nullen von P_NEXT_SPELL_TIME.
+
+
+BEMERKUNGEN
+===========
+
+   Spruchsperren (insb. fremde) duerfen nicht ohne weiteres geloescht oder
+   geaendert werden. Dieses bedarf grundsaetzlich der Genehmigung durch die
+   Gildenbalance!
+
+
+SIEHE AUCH
+==========
+
+   SetSpellFatigue(L), CheckSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
+27.03.2010, Zesstra
diff --git a/doc/sphinx/man/lfun/DeleteTimedAttrModifier b/doc/sphinx/man/lfun/DeleteTimedAttrModifier
new file mode 100644
index 0000000..2d1bd1e
--- /dev/null
+++ b/doc/sphinx/man/lfun/DeleteTimedAttrModifier
@@ -0,0 +1,53 @@
+
+DeleteTimedAttrModifier()
+*************************
+
+
+FUNKTION
+========
+
+   int DeleteTimedAttrModifier(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       aus P_TIMED_ATTR_MOD zu loeschender Eintrag
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag in P_TIMED_ATTR_MOD wird geloescht und
+   update_max_sp_and_hp ausgefuehrt.
+
+
+RUeCKGABEWERT
+=============
+
+   TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments
+   TATTR_NO_SUCH_MODIFIER  -     Falls der Modifier mit diesem Key nicht
+                                 existiert
+   TATTR_OK                -     Im Erfolgsfall
+
+
+
+   Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/DiscoverDoor b/doc/sphinx/man/lfun/DiscoverDoor
new file mode 100644
index 0000000..9046a0e
--- /dev/null
+++ b/doc/sphinx/man/lfun/DiscoverDoor
@@ -0,0 +1,54 @@
+
+DiscoverDoor()
+**************
+
+
+FUNKTION
+========
+
+   varargs int DiscoverDoor(string dname)
+
+
+ARGUMENTE
+=========
+
+   dname: Name des Raumes, in dem der Seher das Sehertor kennenlernen soll.
+          Default: Die Umgebung des Sehers.
+
+
+BESCHREIBUNG
+============
+
+   Nachdem diese Funktion aufgerufen wurde, kann der Seher (this_player())
+   das Tor in dem angegebenen Raum immer verwenden.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls der Seher ein NEUES Tor kennengelernt hat
+   0, falls er das Tor schon kannte oder kein Seher war
+
+
+BEMERKUNGEN
+===========
+
+   Von einem Sehertor wird diese Funktion automatisch beim Betreten des
+   umgebenden Raumes aufgerufen, falls P_SEERDOOR_DISCOVER gesetzt ist. Wenn
+   ein Tor auf diese Art nicht entdeckt werden soll, so darf
+   P_SEERDOOR_DISCOVER nicht gesetzt sein und muss DiscoverDoor() separat,
+   z.B. von einem Questobjekt, aufgerufen werden.
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   write("Der Zauberer sagt: Im Nichts wirst Du ein weiteres Tor finden!\n");
+   "/d/seher/portale/sehertormaster"->DiscoverDoor("/room/void");
+
+
+SIEHE AUCH
+==========
+
+   DoorIsKnown, ShowDoors, Teleport, GetDoorsMapping
diff --git a/doc/sphinx/man/lfun/DistributeExp b/doc/sphinx/man/lfun/DistributeExp
new file mode 100644
index 0000000..e29427d
--- /dev/null
+++ b/doc/sphinx/man/lfun/DistributeExp
@@ -0,0 +1,42 @@
+
+DistributeExp()
+***************
+
+
+FUNKTION
+========
+
+   private void DistributeExp(object enemy, int exp_to_give)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   object enemy     - toetender Feind
+   int exp_to_give  - zu verteilende XP (== P_XP/100)
+
+
+BESCHREIBUNG
+============
+
+   Das sterbende Wesen verteilt seine XP an seine Feinde.
+
+   Dabei bekommt jeder Gegner seinen Anteil (abhaengig von 50% von seinem
+   gemachten Schaden) und einen Teamanteil (die anderen 50% ueber das
+   gesamte Team addiert und durch die Teamanzahl geteilt).
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp()
+   Properties:  P_XP
+   Sonstiges:   teamkampf
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/DoDecay b/doc/sphinx/man/lfun/DoDecay
new file mode 100644
index 0000000..695856a
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoDecay
@@ -0,0 +1,69 @@
+
+DoDecay()
+*********
+
+
+FUNKTION
+========
+
+   public  int    DoDecay(int silent)
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   silent (int)
+     Falls != 0, erfolgt beim Zerfall keine Meldung, d.h. doDecayMessaage()
+     wird nicht gerufen.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Funktion gibt die nach dem Zerfall noch uebrig gebliebene Menge
+   zurueck (int).
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in Clones von Unitobjekten aus der Blueprint gerufen,
+   wenn ein Zerfallsintervall abgelaufen ist (natuerlich nur, wenn in der BP
+   der Zerfall konfiguriert ist).
+   Die Funktion prueft normalerweise via P_UNIT_DECAY_FLAGS, ob der Zerfall
+   stattfinden soll, bestimmt aus P_UNIT_DECAY_QUOTA die zu zerfallende
+   Menge, ruft DoDecayMessage() und reduziert P_AMOUNT.
+
+
+
+   Sie kann auch von Hand gerufen werden, um einen Zerfall auszuloesen, auch
+   wenn mir gerade nicht einfaellt, in welchen Situationen das sinnvoll
+   waere (vielleicht als Spruchmisserfolg. *g*)
+
+
+BEMERKUNGEN
+===========
+
+   Wenn man einen anderen Zerfallsmechanismus haben, will muss man diese
+   Funktion wohl ueberschreiben. In fast allen Faellen sollte dies jedoch
+   unnoetig sein. Hat jemand das Verlangen, diese Funktion zu
+   ueberschreiben, ist vielleicht vorher eine Diskussion mit dem Mudlib-EM
+   angebracht.
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
+   P_UNIT_DECAY_MIN
+   DoDecayMessage()
+   /std/unit.c
+
+14.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/DoDecayMessage b/doc/sphinx/man/lfun/DoDecayMessage
new file mode 100644
index 0000000..671f9c7
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoDecayMessage
@@ -0,0 +1,54 @@
+
+DoDecayMessage()
+****************
+
+
+FUNKTION
+========
+
+   protected void DoDecayMessage(int oldamount, int zerfall);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   oldamount (int)
+      Menge vor dem Zerfall
+   zerfall (int)
+      jetzt zerfallende Menge
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von DoDecay() gerufen und gibt die Standardmeldungen
+   beim Zerfall von Unitobjekten aus.
+   Hierbei ist an der Unit noch alles unveraendert, wenn diese Funktion
+   gerufen wird, die Reduktion von P_AMOUNT erfolgt direkt im Anschluss.
+   Die Funktion wird nicht gerufen, wenn DoDecay() mit silent!=0 gerufen
+   wird.
+
+
+BEMERKUNGEN
+===========
+
+   Will man nicht die Standardzerfallsmeldungen (wovon ich meist ausgehe),
+   kann man diese Funktion ueberschreiben und eigene Meldungen erzeugen.
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
+   P_UNIT_DECAY_MIN
+   DoDecay()
+   /std/unit.c
+
+14.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/DoUnwear b/doc/sphinx/man/lfun/DoUnwear
new file mode 100644
index 0000000..56e53d3
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoUnwear
@@ -0,0 +1,55 @@
+
+DoUnwear()
+**********
+
+
+FUNKTION
+========
+
+   varargs int DoUnwear(int silent, int all);
+
+
+DEFINIERT IN
+============
+
+   /std/clothing/wear.c
+
+
+ARGUMENTE
+=========
+
+   silent
+        Falls ungleich 0, so werden keine Meldungen ausgegeben.
+        Falls (silent&M_NOCHECK) werden auch verfluchte Ruestungen
+        ausgezogen
+   all
+        Ungleich 0, wenn DoUnwear() aus einem "ziehe alles aus" heraus
+        aufgerufen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Ruestung auszuziehen. Dabei werden eine eventuell
+   vorhandene RemoveFunc() und Flueche mit beruecksichtigt.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn die Ruestung gar nicht getragen war, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
+   Ruestung erfolgreich ausgezogen wurde!
+
+
+SIEHE AUCH
+==========
+
+   DoWear(), RemoveFunc(), InformUnwear(), /std/armour/combat.c
+
+Last modified: Sun Jun 27 22:22:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/DoUnwield b/doc/sphinx/man/lfun/DoUnwield
new file mode 100644
index 0000000..d003bfc
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoUnwield
@@ -0,0 +1,54 @@
+
+DoUnwield()
+***********
+
+
+FUNKTION
+========
+
+   varargs int DoUnwield(int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   silent
+        Ungleich 0, wenn die Waffe ohne Meldungen weggesteckt werden soll.
+        Wenn silent&M_NOCHECK wird die Waffe auch weggesteckt wenn sie
+        verflucht ist und UnwieldFunc() wird nicht ausgewertet.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Waffe wegzustecken.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn die Waffe gar nicht gezueckt war, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Anhand des Rueckgabewertes laesst sich nicht ersehen, ob die Waffe sich
+   wegstecken liess oder nicht!
+
+   Wenn die Waffe verflucht ist oder (falls definiert) UnwieldFunc() 0
+   zurueckgibt, laesst sie sich nicht wegstecken.
+
+
+SIEHE AUCH
+==========
+
+   UnwieldFunc(), InformUnwield(), /std/weapon.c
+
+Letzte Aenderung: 18.11.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/DoWear b/doc/sphinx/man/lfun/DoWear
new file mode 100644
index 0000000..e253290
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoWear
@@ -0,0 +1,64 @@
+
+DoWear()
+********
+
+
+FUNKTION
+========
+
+   varargs int DoWear(int silent, int all);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   silent
+        Falls ungleich 0, so werden keine Meldungen ausgegeben.
+   all
+        Ungleich 0, wenn DoWear() aus einem "ziehe alles an" heraus
+        aufgerufen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Ruestung anzuziehen. Dabei wird eine eventuell
+   vorhandene WearFunc() mit beruecksichtigt.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn man die Ruestung gar nicht bei sich hat oder sie schon an hat,
+   ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
+   Ruestung erfolgreich angezogen wurde!
+
+   Gruende fuer ein Fehlschlagen des Anziehens koennen sein:
+      o Man hat die Ruestung nicht bei sich.
+      o Man hat die Ruestung schon an.
+      o Man hat schon eine Ruestung des gleichen Typs an.
+      o Der Typ der Ruestung oder die Ruestungsklasse ist illegal.
+      o Falls definiert: WearFunc() gab 0 zurueck.
+      o Falls es sich um einen Schild handelt: Man hat keine Hand mehr
+        frei.
+
+
+SIEHE AUCH
+==========
+
+   DoUnwear(), WearFunc(), InformWear(), P_EQUIP_TIME,
+   /std/armour/combat.c, P_UNWEAR_MSG, P_WEAR_MSG
+
+Last modified: Sun Jun 27 22:22:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/DoWield b/doc/sphinx/man/lfun/DoWield
new file mode 100644
index 0000000..6e6c06c
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoWield
@@ -0,0 +1,63 @@
+
+DoWield()
+*********
+
+
+FUNKTION
+========
+
+   varargs int DoWield(int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   silent
+        Ungleich 0, wenn die Waffe ohne Meldungen gezueckt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, die Waffe zu zuecken. Hat man schon eine Waffe
+   gezueckt, so wird versucht, diese wegzustecken. Klappt das nicht, kann
+   die Waffe nicht gezueckt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn man die Waffe gar nicht bei sich traegt, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Anhand des Rueckgabewertes laesst sich nicht entscheiden, ob die Waffe
+   sich erfolgreich zuecken liess!
+
+   Gruende, warum sich eine Waffe nicht zuecken lassen kann, sind
+   folgende:
+      o Man traegt sie nicht bei sich (oder sie steckt in einem Beutel
+        o.ae.).
+      o Man hat sie schon gezueckt.
+      o Falls definiert: WieldFunc() gibt 0 zurueck.
+      o Man ist nicht geschickt genug (das haengt von der Waffenklasse
+        ab).
+      o Eine schon gezueckte Waffe laesst sich nicht wegstecken.
+      o Die Waffenklasse ist hoeher als erlaubt.
+      o Man hat nicht genug Haende frei.
+
+
+SIEHE AUCH
+==========
+
+   WieldFunc(), InformWield(), P_EQUIP_TIME, /std/weapon.c
+
+Last modified: Wed Apr 08 10:25:00 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/DoorIsKnown b/doc/sphinx/man/lfun/DoorIsKnown
new file mode 100644
index 0000000..b799698
--- /dev/null
+++ b/doc/sphinx/man/lfun/DoorIsKnown
@@ -0,0 +1,46 @@
+
+DoorIsKnown()
+*************
+
+
+FUNKTION
+========
+
+   int DoorIsKnown()
+
+
+ARGUMENTE
+=========
+
+   Keine.
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob der Seher (this_player()) das Tor in seiner momentanen
+   Umgebung schon kennt.
+
+
+RUECKGABEWERT
+=============
+
+   Die Nummer des Tores.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   /d/seher/portale/sehertormaster->DoorIsKnown()
+
+
+SIEHE AUCH
+==========
+
+   DiscoverDoor, ShowDoors, Teleport, GetDoorsMapping
diff --git a/doc/sphinx/man/lfun/Dump b/doc/sphinx/man/lfun/Dump
new file mode 100644
index 0000000..9d8d7e0
--- /dev/null
+++ b/doc/sphinx/man/lfun/Dump
@@ -0,0 +1,38 @@
+
+Dump()
+******
+
+
+FUNKTION
+========
+
+   void Dump()
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+BESCHREIBUNG
+============
+
+   Schreibt alle Materialien samt ihren Gruppen und alle Gruppen mit
+   dazugehoerenden Materialien in DUMPFILE (/p/daemon/save/MATERIALS)
+   Wird in create() der Materialiendatenbank automatisch aufgerufen.
+   Das Dumpfile ist zum Recherchieren der Materialien gedacht.
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Listen:      AllMaterials(), AllGroups()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/EnemyPresent b/doc/sphinx/man/lfun/EnemyPresent
new file mode 100644
index 0000000..bf3853c
--- /dev/null
+++ b/doc/sphinx/man/lfun/EnemyPresent
@@ -0,0 +1,34 @@
+
+EnemyPresent()
+**************
+
+
+FUNKTION
+========
+
+   public mixed EnemyPresent()
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Gibt aus der Feindesliste den ersten anwesenden, lebenden und
+   angreifbaren aktuellen Gegner im Raum zurueck.
+   Damit ist die Funktion identisch zu InFight().
+
+   Will man alle Gegner, auf die diese Kriterien zutreffen, sollte man
+   PresentEnemies() verwenden.
+
+
+SIEHE AUCH
+==========
+
+   PresentEnemies(), Infight()
+
+22.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/Enter b/doc/sphinx/man/lfun/Enter
new file mode 100644
index 0000000..0ebc7f0
--- /dev/null
+++ b/doc/sphinx/man/lfun/Enter
@@ -0,0 +1,64 @@
+
+Enter()
+*******
+
+
+FUNKTION
+========
+
+   int Enter();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich der Spieler noch nicht auf dem Transporter befindet, und der
+   Transporter momentan an einer Haltestelle liegt, betritt der Spieler
+   den Transporter.
+
+
+RUeCKGABEWERT
+=============
+
+   Null, wenn der Spieler den Transporter nicht betreten konnte, sonst
+   ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Es werden keine Tests durchgefuehrt, ob der Transporter ueberhaupt
+   angesprochen wurde! Das muss man selber machen.
+
+
+BEISPIELE
+=========
+
+   int myEnter(string str)
+   {
+     if (str && id(str))
+       return Enter();
+
+     notify_fail("Was willst Du betreten?\n");
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Leave(), /std/transport.c
+
+Last modified: Wed May 8 10:18:42 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/EvalArmour b/doc/sphinx/man/lfun/EvalArmour
new file mode 100644
index 0000000..7daf07c
--- /dev/null
+++ b/doc/sphinx/man/lfun/EvalArmour
@@ -0,0 +1,40 @@
+
+EvalArmour()
+************
+
+
+FUNKTION
+========
+
+   int EvalArmour(object ob, closure qp)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob - Eine Ruestung.
+   qp - symbol_function("QueryProp",ob)
+
+
+BESCHREIBUNG
+============
+
+   Bewertet die Ruestung.
+
+
+RUECKGABEWERT
+=============
+
+   Max(P_AC,P_EFFECTIVE_AC);
+
+
+SIEHE AUCH
+==========
+
+   FindBestArmour()
diff --git a/doc/sphinx/man/lfun/EvalWeapon b/doc/sphinx/man/lfun/EvalWeapon
new file mode 100644
index 0000000..395a0a1
--- /dev/null
+++ b/doc/sphinx/man/lfun/EvalWeapon
@@ -0,0 +1,40 @@
+
+EvalWeapon()
+************
+
+
+FUNKTION
+========
+
+   int EvalWeapon(object ob, closure qp)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob - Eine Waffe.
+   qp - symbol_function("QueryProp",ob)
+
+
+BESCHREIBUNG
+============
+
+   Bewertet die Waffe.
+
+
+RUECKGABEWERT
+=============
+
+   Max(P_WC,P_EFFECTIVE_WC);
+
+
+SIEHE AUCH
+==========
+
+   FindBestWeapon()
diff --git a/doc/sphinx/man/lfun/ExtraAttack b/doc/sphinx/man/lfun/ExtraAttack
new file mode 100644
index 0000000..cc0b109
--- /dev/null
+++ b/doc/sphinx/man/lfun/ExtraAttack
@@ -0,0 +1,49 @@
+
+ExtraAttack()
+*************
+
+
+FUNKTION
+========
+
+   varargs public void ExtraAttack(object enemy, int ignore_previous);
+
+
+ARGUMENTE
+=========
+
+   enemy: Der Feind.
+   ignore_previous: Ein Flag
+
+
+BESCHREIBUNG
+============
+
+   Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
+   stark angegriffen. Hierbei wird Attack() aufgerufen.
+   Ist ignore_previous ungleich 0, dann wird die Erstschlagsperre von
+   Attack ignoriert. Dieser Angriff ist also auch dann moeglich, wenn
+   das Lebewesen eigentlich keinen Schlag mehr in dieser Runde ausfuehren
+   duerfte.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNG
+=========
+
+   Der Einsatz dieser Funktion ist genehmigungspflichtig.
+   Weitere Hinweise siehe "man Attack".
+
+
+SIEHE AUCH
+==========
+
+   "Attack"
+   /std/living/combat.c
+
+Last modified: Sun Nov 21 12:32:20 2004 by Bambi
diff --git a/doc/sphinx/man/lfun/FilterArmours b/doc/sphinx/man/lfun/FilterArmours
new file mode 100644
index 0000000..32a7f2b
--- /dev/null
+++ b/doc/sphinx/man/lfun/FilterArmours
@@ -0,0 +1,99 @@
+
+FilterArmours()
+***************
+
+
+FUNKTION
+========
+
+   public object *FilterArmours(closure filterfun, varargs mixed* extra)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   closure filterfun
+     Die Closure, die entscheiden soll, ob eine Ruestung im Ergebnisarray
+     enthalten sein soll.
+
+
+
+   mixed extra
+     Beliebig viele Extra-Argumente, die <filterfun> uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ruft <filterfunc> fuer jede getragene Ruestung des
+   Lebewesen mit der jeweiligen Ruestung als Argument auf und liefert ein
+   Array mit allen Ruestungen zurueck, fuer die <filterfun> einen Wert != 0
+   zurueckliefert.
+   Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
+   uebergeben und duerfen keine Referenzen sein.
+
+
+
+   Diese Variante ist zu bevorzugen, wenn man Ruestungen nach bestimmten
+   Kriterien durchsuchen will und QueryArmourByType() nicht ausreichend sein
+   sollte.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von Objekten mit allen passenden Ruestungen.
+
+
+BEISPIELE
+=========
+
+   1) Ich moechte gerne alle Ruestungen haben, die beschaedigt sind:
+   private int _is_damaged(object ruestung) {
+       return ruestung->QueryProp(P_DAMAGE);
+   }
+   ...
+   object *damaged_armours = PL->FilterArmours(#'_is_damaged);
+
+   2) Ich moechte alle Ruestungen, die groesser als 50cm sind.
+   private int _armour_is_bigger(object ruestung, int size) {
+     return ruestung->QueryProp(P_SIZE) > size;
+   }
+   ...
+   object *big_armours = PL->FilterArmours(#'_amour_is_bigger, 50);
+
+   3) alle Ruestungen mit einer speziellen ID.
+   private int _has_id(object ruestung, string idstr) {
+     return ruestung->id(idstr);
+   }
+   object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung");
+
+   4) alle Ruestungen mit einer speziellen ID, die groesser als 50cm sind.
+   private int _has_id(object ruestung, string idstr, int size) {
+     return ruestung->id(idstr) && ruestung->QueryProp(P_SIZE) > size;
+   }
+   object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung", 50);
+
+   5) ueberhaupt alle getragene Ruestung
+   object *rue = PL->FilterArmours(#'objectp)
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
+   UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), QueryArmourByType()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/FilterClothing b/doc/sphinx/man/lfun/FilterClothing
new file mode 100644
index 0000000..a7e1d01
--- /dev/null
+++ b/doc/sphinx/man/lfun/FilterClothing
@@ -0,0 +1,80 @@
+
+FilterClothing()
+****************
+
+
+FUNKTION
+========
+
+   public object *FilterClothing(closure filterfun, varargs mixed* extra)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   closure filterfun
+     Die Closure, die entscheiden soll, ob eine Kleidung im Ergebnisarray
+     enthalten sein soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ruft <filterfunc> fuer jede getragene Kleidung des
+   Lebewesen mit der jeweiligen Kleidung als Argument auf und liefert ein
+   Array mit aller Kleidung zurueck, fuer die <filterfun> einen Wert != 0
+   zurueckliefert.
+   Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
+   uebergeben und duerfen keine Referenzen sein.
+
+
+
+   Diese Variante ist zu bevorzugen, wenn man die getrage Kleidung nach
+   bestimmten Kriterien durchsuchen will.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von Objekten mit allen passenden Kleidung.
+
+
+BEISPIELE
+=========
+
+   1) Ich moechte alle Kleidung, die groesser als 50cm ist.
+   private int _armour_is_bigger(object clothing, int size) {
+     return clothing->QueryProp(P_SIZE) > size;
+   }
+   ...
+   object *big_armours = PL->FilterClothing(#'_amour_is_bigger, 50);
+
+   2) alle Kleidung mit einer speziellen ID.
+   private int _has_id(object clothing, string idstr) {
+     return clothing->id(idstr);
+   }
+   object *has_id = PL->FilterClothing(#'_has_id, "\ntollekleidung");
+
+   3) ueberhaupt alle getragene Kleidung
+   object *clothing = PL->FilterClothing(#'objectp)
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
+   UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterArmours(), QueryArmourByType()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/FindBestArmours b/doc/sphinx/man/lfun/FindBestArmours
new file mode 100644
index 0000000..10a5d80
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindBestArmours
@@ -0,0 +1,64 @@
+
+FindBestArmours()
+*****************
+
+
+FUNKTION
+========
+
+   varargs object *FindBestArmours(mixed type, int maxmon, int maxw,
+                                   mapping minac, mixed restr)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   type   - gewuenschter Ruestungstyp / Ruestungstypen
+   maxmon - Geld das ausgegeben werden darf
+   maxw   - Maximales Gewicht
+   minac  - minimale gewuenschte Ruestungsklasse pro Typ
+   restr  - zusaetzliches Argument fuer CheckFindRestrictions()
+
+
+BESCHREIBUNG
+============
+
+   Sucht die besten Ruestungen, die der Laden verkaufen kann.
+
+
+RUECKGABEWERT
+=============
+
+   Die besten Ruestungen
+
+
+BEMERKUNG
+=========
+
+   Die Qualitaet der Ruestung wird mit EvalArmour() bestimmt.
+   Haben zwei Ruestungen die gleiche Qualitaet,
+   wird die preiswertere genommen.
+
+
+BEISPIEL
+========
+
+   FindBestArmours(AT_ARMOUR,5000)
+   Bestes Ruestung unter 5000 Muenzen.
+
+   FindBestArmours(({AT_ARMOUR,AT_CLOAK,AT_BOOT}),10000,([AT_ARMOUR:20]))
+   Finded beste Ruestung, Umhang und Schuhe, die der Laden fuer
+   insgesamt 10000 Muenzen verkaufen kann, wobei die Ruestung mindestens
+   AC 20 haben muss.
+
+
+SIEHE AUCH
+==========
+
+   FindBestWeapon(), CheckFindRestrictions(), EvalArmour()
diff --git a/doc/sphinx/man/lfun/FindBestWeapon b/doc/sphinx/man/lfun/FindBestWeapon
new file mode 100644
index 0000000..1aaeb0d
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindBestWeapon
@@ -0,0 +1,59 @@
+
+FindBestWeapon()
+****************
+
+
+FUNKTION
+========
+
+   varargs object FindBestWeapon(mixed type, int maxmon, int maxw, int hands,
+                                 int minwc, mixed restr)
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   type   - gewuenschter Waffentyp / Waffentypen
+   maxmon - Geld das ausgegeben werden darf
+   maxw   - Maximales Gewicht
+   hands  - Anzahl Haende, die die Waffe belegen darf
+   minwc  - minimale gewuenschte Waffenklasse
+   restr  - zusaetzliches Argument fuer CheckFindRestrictions()
+
+
+BESCHREIBUNG
+============
+
+   Sucht die beste Waffe, die der Laden verkaufen kann.
+
+
+RUECKGABEWERT
+=============
+
+   Die beste Waffe :-)
+
+
+BEMERKUNG
+=========
+
+   Die Qualitaet der Waffe wird mit EvalWeapon() bestimmt.
+   Haben zwei Waffen die gleiche Qualitaet, wird die preiswertere genommen.
+
+
+BEISPIEL
+========
+
+   FindBestWeapon(WT_SWORD,5000,1)
+   Bestes einhaendiges Schwert unter 5000 Muenzen.
+
+
+SIEHE AUCH
+==========
+
+   FindBestArmours(), CheckFindRestrictions(), EvalWeapon()
diff --git a/doc/sphinx/man/lfun/FindDistantEnemyVictim b/doc/sphinx/man/lfun/FindDistantEnemyVictim
new file mode 100644
index 0000000..5ea712d
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindDistantEnemyVictim
@@ -0,0 +1,55 @@
+
+FindDistantEnemyVictim()
+************************
+
+
+FUNKTION
+========
+
+   object FindDistantEnemyVictim(string wen, object pl, string msg,
+                                 int dist, int dy)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen  - id des gewuenschten Gegners, falls nicht angegeben:
+          SelectEnemy(FindDistantGroup(pl,-1,dist,dy,10000)
+   pl   - Caster.
+   msg  - Nachricht falls Gegner nicht anwesend ist.
+   dist - Entfernung
+   dy   - 2*erlaubte Abweichung von der Entfernung, default 100
+
+
+BESCHREIBUNG
+============
+
+   Findet einen Gegner in Entfernung dist-dy/2 bis dist+dy/2
+   z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Der Gegner wird auf jeden Fall angegriffen.
+   2. dist wird mit SA_RANGE modifiziert,
+      dy wird mit SA_EXTENSION modifiziert.
+   3. Die Entfernung ist relativ zum Spieler.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindEnemyVictim, FindNearEnemyVictim, FindFarEnemyVictim
diff --git a/doc/sphinx/man/lfun/FindDistantGroup b/doc/sphinx/man/lfun/FindDistantGroup
new file mode 100644
index 0000000..b94e048
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindDistantGroup
@@ -0,0 +1,53 @@
+
+FindDistantGroup()
+******************
+
+
+FUNKTION
+========
+
+   varargs object *FindDistantGroup(object pl, int who,
+                                    int dist, int dy, int dx)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   pl   - Caster
+   who  - 1=Freunde, -1=Gegner, 0=beide
+   dist - Entfernung
+   dy   - Tiefe      (default 100)
+   dx   - Breite     (default 100*MAX_TEAM_ROWLEN)
+
+
+BESCHREIBUNG
+============
+
+   Ermittelt Lebewesen, die sich in Entfernung <dist> in einem Bereich
+   der Breite <dx> und Tiefe <dy> befinden.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den gefundenen Lebewesen.
+
+
+BEMERKUNGEN
+===========
+
+   Genauere Hinweise unter "FindDistantGroups".
+   Wer sowohl Freunde wie auch Feinde in getrennten Arrays braucht,
+   sollte FindDistantGroups statt FindDistantGroup verwenden.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindDistantGroups
diff --git a/doc/sphinx/man/lfun/FindDistantGroups b/doc/sphinx/man/lfun/FindDistantGroups
new file mode 100644
index 0000000..efb3354
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindDistantGroups
@@ -0,0 +1,85 @@
+
+FindDistantGroups()
+*******************
+
+
+FUNKTION
+========
+
+   varargs mixed FindDistantGroups(object pl, int dist, int dy, int dx)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   pl   - Caster
+   dist - Entfernung
+   dy   - Tiefe      (default 100)
+   dx   - Breite     (default 100*MAX_TEAM_ROWLEN)
+
+
+BESCHREIBUNG
+============
+
+   Ermitteld feindliche (bei Spielern NPCs, bei NPCs Spieler) und
+   freundliche (bei Spielern Spieler, bei NPCs NPCs) Lebewesen,
+   die sich in Entfernung <dist> in einem Bereich der Breite <dx>
+   und Tiefe <dy> befinden.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit zwei Arrays als Inhalt:
+   ({ feindliche Lebewesen, freundliche Lebewesen })
+
+
+BEMERKUNGEN
+===========
+
+   Die Entfernungsangaben sind als cm. zu verstehen.
+   Jedes Lebewesen belegt 50cm x 50cm mit Abstand 50cm
+   zum naechsten Lebewesen in jeder Richtung.
+   Die Breitenangabe wirkt sich nur in der Anzahl der
+   Lebewesen aus, die zufaellig pro Reihe ausgewaehlt werden.
+   Die Skillattribute SA_RANGE und SA_EXTENSION werden beruecksichtigt.
+
+
+BEISPIEL
+========
+
+   dist=200, dy=200, dx=200, ein Punkt = 50cm x 50cm
+      . . . . . . . . . . . . .
+   3. . . . . . . G . . . . . .
+      . . . . . . . . . . . . .
+   2. . . . . . G . G . . . . .dist+dy/2-+
+      . . . . . . . . . . . . .          |
+   1. . . . . G . G . G . . . .     dist +-+ (Gegner G)
+   ---.-.-.-.-.-.-.-.-.-.-.-.-.          | |
+   1. . . . . F . F . F . . . .dist-dy/2-+ | (Freunde F)
+      . . . . . . . . . . . . .            |
+   2. . . . . . F . S . . . . .------------+ (Reihe des Spielers S)
+      . . . . . . . . . . . . .
+   3. . . . . . . F . . . . . .
+      . . . . . . . . . . . . .
+   Abgedeckter Bereich:           100cm  bis  300cm
+           Reihe 3:  375cm..425cm         375>300 -> nicht erwischt
+           Reihe 2:  275cm..325cm         275<300 -> erwischt
+   Gegner  Reihe 1:  175cm..225cm 100<175,225<300 -> erwischt
+   Freunde Reihe 1:   75cm..125cm 100<125         -> erwischt
+           Reihe 2:  -25cm...25cm 100> 25         -> nicht erwischt
+           Reihe 3: -125cm..-75cm 100>-75         -> nicht erwischt
+   Ergebnis: ({({G,G,G,G}),({F,F})})
+   (Maximal 2 Lebewesen pro Reihe bei Breite 200).
+
+
+SIEHE AUCH
+==========
+
+   teams, FindDistantGroup
diff --git a/doc/sphinx/man/lfun/FindEnemyVictim b/doc/sphinx/man/lfun/FindEnemyVictim
new file mode 100644
index 0000000..c5a81a6
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindEnemyVictim
@@ -0,0 +1,47 @@
+
+FindEnemyVictim()
+*****************
+
+
+FUNKTION
+========
+
+   object FindEnemyVictim(string wen, object pl, string msg)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen - id des gewuenschten Gegners, falls nicht angegeben SelectEnemy.
+   pl  - Caster.
+   msg - Nachricht falls Gegner nicht anwesend ist.
+
+
+BESCHREIBUNG
+============
+
+   Findet einen Gegner, z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   Der Gegner wird auf jeden Fall angegriffen.
+
+
+SIEHE AUCH
+==========
+
+   FindLivingVictim
diff --git a/doc/sphinx/man/lfun/FindFarEnemyVictim b/doc/sphinx/man/lfun/FindFarEnemyVictim
new file mode 100644
index 0000000..455cf89
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindFarEnemyVictim
@@ -0,0 +1,53 @@
+
+FindFarEnemyVictim()
+********************
+
+
+FUNKTION
+========
+
+   object FindFarEnemyVictim(string wen, object pl, string msg,
+                             int min, int max)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen - id des gewuenschten Gegners, SelectFarEnemy falls n/a.
+   pl  - Caster.
+   msg - Nachricht falls Gegner nicht anwesend ist.
+   min - minimale Kampfreihe
+   max - maximale Kampfreihe
+
+
+BESCHREIBUNG
+============
+
+   Findet einen Gegner aus Kampfreihe <min> bis <max>
+   z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Der Gegner wird auf jeden Fall angegriffen.
+   2. Die Reihenangaben werden NICHT mit Skillattributen modifiziert.
+   3. Die Angabe der Reihe ist absolut.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindEnemyVictim, FindNearEnemyVictim, FindDistantEnemyVictim
diff --git a/doc/sphinx/man/lfun/FindGroup b/doc/sphinx/man/lfun/FindGroup
new file mode 100644
index 0000000..112c76f
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindGroup
@@ -0,0 +1,98 @@
+
+FindGroup()
+***********
+
+
+FUNKTION
+========
+
+   object*FindGroup(object pl,int who);
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
+     gefunden werden sollen.
+   who
+     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
+     sollen (Konstanten definiert in '/sys/new_skills.h'):
+       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
+       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
+       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit gefundenen Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Bei Spells, die sich auf mehrere Gegner auswirken oder bei denen man
+   per Hand ein Opfer auswaehlen moechte, laesst sich mittels der
+   Funktion FindGroup() eine Liste von Lebewesen ermitteln, welche in
+   der Umgebung von <pl> zu finden sind.
+   Je nachdem, was man denn genau vorhat, kann man sich von der
+   Funktion freundlich oder feindlich gesinnte Lebewesen heraussuchen
+   lassen.
+   Will man die freundlich gesinnten Lebewesen ermitteln, so uebergibt
+   man in <who> die Konstante FG_FRIENDS, bei feindlich gesinnten die
+   Konstante FG_ENEMIES, und wenn man alle Lebewesen bekommen moechte
+   schliesslich FG_ALL.
+   Bei der Auswahl gelten folgende Regeln:
+     (1) Lebewesen, mit denen <pl> im Kampf ist, sind grundsaetzlich
+         feindlich gesinnt.
+     (2) Teammitglieder von <pl> sind grundsaetzlich freundlich
+         gesinnt.
+     (3) Spieler sind gegenueber Spielern freundlich gesinnt, NPCs
+         gegenueber NPCs. NPCs kann man hierbei mit Hilfe der Property
+         P_FRIEND den Spielern zuordnen.
+     (4) Daraus folgt natuerlich, dass Spieler und NPCs grundsaetzlich
+         eine feindliche Einstellung gegenueber haben, sofern die NPCs
+         nicht die Property P_FRIEND gesetzt haben
+          (was standardmaessig natuerlich nicht der Fall ist).
+     (5) Netztote werden nicht erkannt.
+     (6) Magier werden nicht erkannt, wenn sie unsichtbar sind.
+     (7) Ein Magier wird als feindlich gesinnt nur dann erkannt, wenn
+         <pl> mit ihm im Kampf ist.
+     (6) Sucht man feindlich gesinnte Lebewesen, so werden die, welche
+         eine von den Properties P_NO_ATTACK oder P_NO_GLOBAL_ATTACK
+         gesetzt haben, nicht erkannt.
+   Die Property P_FRIEND sollte man in NPCs setzen, die dem Spieler
+   hilfreich beiseite stehen, z.B. vom Spieler beschworene HilfsNPCs.
+
+
+BEISPIELE
+=========
+
+   Wenn man einen Feuerball nach jemandem wirft, so trifft dieser unter
+   Umstaenden auch andere, wenn er gross genug ist. Man nimmt hierbei
+   an, dass sich die freundlich gesinnten Lebewesen des Gegners auch
+   naeher bei ihm befinden als die feindlich gesinnten:
+     victim->Defend(500,DT_FIRE,([SP_SHOW_DAMAGE:1]),caster);
+     victimList=FindGroup(victim,FG_FRIENDS);
+     map_objects(victimList,
+                     "Defend",
+                     100,
+                     DT_FIRE,
+                     ([SP_SHOW_DAMAGE:1]),
+                     caster);
+   Hiermit trifft man also auch die Freunde von <victim>.
+
+
+SIEHE AUCH
+==========
+
+   FindGroupN(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
+
+Last modified: Mon Jan 28 21:45:00 2002 by Tiamak
diff --git a/doc/sphinx/man/lfun/FindGroupN b/doc/sphinx/man/lfun/FindGroupN
new file mode 100644
index 0000000..b0104ee
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindGroupN
@@ -0,0 +1,67 @@
+
+FindGroupN()
+************
+
+
+FUNKTION
+========
+
+   object*FindGroupN(object pl,int who,int n);
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
+     gefunden werden sollen.
+   who
+     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
+     sollen (Konstanten definiert in '/sys/new_skills.h'):
+       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
+       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
+       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+   n
+     Anzahl der Lebewesen, die zurueckgegeben werden sollen.
+     Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!
+     Es wird mindestens 1 Lebewesen zurueckgeliefert (sofern gefunden).
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit gefundenen Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
+   dass zum Schluss die Anzahl noch begrenzt wird.
+
+
+BEISPIELE
+=========
+
+   Man moechte maximal 5 Feinde finden, die man gleichzeitig mit einem
+   Spell belegen kann:
+     enemyList=FindGroupN(caster,FG_ENEMIES,5);
+   Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird
+   dementsprechend mehr oder weniger zurueckgegeben.
+    (also bei SA_EXTENSION==200 doppelt so viele -> 10 Lebewesen)
+   Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
+   veraendert worden sein; das sollte beachtet werden.
+
+
+SIEHE AUCH
+==========
+
+   FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
+
+Last modified: Mon Jan 25 15:04:31 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/FindGroupP b/doc/sphinx/man/lfun/FindGroupP
new file mode 100644
index 0000000..e4c297b
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindGroupP
@@ -0,0 +1,68 @@
+
+FindGroupP()
+************
+
+
+FUNKTION
+========
+
+   object*FindGroupP(object pl,int who,int pr);
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
+     gefunden werden sollen.
+   who
+     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
+     sollen (Konstanten definiert in '/sys/new_skills.h'):
+       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
+       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
+       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
+   pr
+     Wahrscheinlichkeit, mit der ein Lebewesen ausgesucht werden soll.
+     Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit gefundenen Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
+   dass zum Schluss die einzelnen Lebewesen per Zufall ausgewaehlt
+   werden. Es ist also nicht gesichert, dass ueberhaupt ein Lebewesen
+   zurueckgeliefert wird, trotzdem welche gefunden wurden.
+
+
+BEISPIELE
+=========
+
+   Man moechte im Schnitt 50% der Feinde finden, die man gleichzeitig
+   mit einem Spell belegt:
+     enemyList=FindGroupP(caster,FG_ENEMIES,50);
+   Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird mit
+   dementsprechend mehr oder weniger Wahrscheinlichkeit zurueckgegeben.
+    (also bei SA_EXTENSION==200 doppelt so viele -> 100%, also alle)
+   Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
+   veraendert worden sein; das sollte beachtet werden.
+
+
+SIEHE AUCH
+==========
+
+   FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
+
+Last modified: Mon Jan 25 15:04:31 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/FindNearEnemyVictim b/doc/sphinx/man/lfun/FindNearEnemyVictim
new file mode 100644
index 0000000..4bd0458
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindNearEnemyVictim
@@ -0,0 +1,48 @@
+
+FindNearEnemyVictim()
+*********************
+
+
+FUNKTION
+========
+
+   object FindNearEnemyVictim(string wen, object pl, string msg)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   wen - id des gewuenschten Gegners, SelectNearEnemy falls n/a.
+   pl  - Caster.
+   msg - Nachricht falls Gegner nicht anwesend ist.
+
+
+BESCHREIBUNG
+============
+
+   Findet einen im Nahkampf erreichbaren Gegner,
+   z.B. fuer einen Angriffsspruch.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   Der Gegner wird auf jeden Fall angegriffen.
+
+
+SIEHE AUCH
+==========
+
+   teams, FindEnemyVictim, FindFarEnemyVictim, FindDistantEnemyVictim
diff --git a/doc/sphinx/man/lfun/FindPotion b/doc/sphinx/man/lfun/FindPotion
new file mode 100644
index 0000000..5d8cae1
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindPotion
@@ -0,0 +1,74 @@
+
+FindPotion()
+************
+
+
+FUNKTION
+========
+
+   varargs int FindPotion(string s);
+
+
+DEFINIERT IN
+============
+
+   /std/player/potion.c
+
+
+ARGUMENTE
+=========
+
+   string s
+     Ausgabetext. Wenn 0/Leerstring, wird Default verwendet.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt einem aufrufenden Spieler eventuell diesen ZT.
+
+
+
+   Das aufrufende Spielerobjekt muss dafuer:
+   * diesen ZT im Potionmaster in seiner Liste eingetragen haben
+   * diesen ZT in der Liste der bekannten Traenke haben (durch
+     Orakel also fuer ihn auch freigeschaltet)
+   * darf keine Playerkills haben (P_KILLS)
+   * darf nicht im Editiermodus sein
+   * darf kein Geist sein (Ausnahme: Geisterschloss)
+
+   Wenn alle Kriterien erfolgreich erfuellt sind, wird 's' oder
+   "Du findest einen Zaubertrank, den Du sofort trinkst." ausgegeben
+   und dem Spieler ggf die Wahl der Attribute gegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   0 bei Nichtvergabe, 1 bei erfolgreicher Vergabe.
+
+
+BEISPIELE
+=========
+
+   string detail_papiere() {
+     if (this_player()->FindPotion(
+       break_string("Beim Rumwuehlen in den Papieren entdeckst Du einen "
+                    "kleinen Zaubertrank, den Du sofort trinkst.", 78)))
+       return "";
+       // Es muss ein String zurueckgegeben werden, da man sonst
+       // die Fehlermeldung "Sowas siehst du hier nicht." bekommt
+     else
+       return "Die Papiere sind alle unbeschriftet.\n";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+   Befehl:    traenke (fuer Magier zum Einschalten des Findens von ZTs)
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/lfun/FindRangedTarget b/doc/sphinx/man/lfun/FindRangedTarget
new file mode 100644
index 0000000..5fa6776
--- /dev/null
+++ b/doc/sphinx/man/lfun/FindRangedTarget
@@ -0,0 +1,63 @@
+
+FindRangedTarget()
+******************
+
+
+FUNKTION
+========
+
+   static string FindRangedTarget(string str, mapping shoot)
+
+
+DEFINIERT IN
+============
+
+   /std/ranged_weapon.c
+
+
+ARGUMENTE
+=========
+
+   string str    - Schusssyntax
+   mapping shoot - Schussdaten
+
+
+BESCHREIBUNG
+============
+
+   Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und eine
+   eventuell bereits modifizierte Syntax und versucht einen passenden Gegner
+   im Raum oder im Gebiet (P_SHOOTING_AREA) zu finden.
+   Dieser wird in SI_ENEMY im Mapping 'shoot' eingetragen und ein Wert != 0
+   zurueckgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   0     bei Fehlschlag
+   != 0  bei gueltigem SI_ENEMY in 'shoot'
+
+
+BEMERKUNGEN
+===========
+
+   'shoot' enthaelt normalerweise folgende Eintraege:
+   * Key P_WEAPON:       die Schusswaffe
+   * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
+   * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
+   * Key P_WC:           P_SHOOTING_WC der Waffe
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Team:      PresentPosition(L)
+   Suche:     present, SelectFarEnemy(L)
+   Syntax:    _unparsed_args(L)
+   Sonstiges: fernwaffen
+
+28.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/lfun/Flee b/doc/sphinx/man/lfun/Flee
new file mode 100644
index 0000000..995cf26
--- /dev/null
+++ b/doc/sphinx/man/lfun/Flee
@@ -0,0 +1,83 @@
+
+Flee()
+******
+
+
+FUNKTION
+========
+
+   public varargs void Flee( object oldenv, int force )
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   oldenv
+     Ein Raum oder 0.
+     Wird ein Raum angegeben, dann muss sich der Fluechtende in diesem
+     Raum befinden, damit er versucht, zu fluechten, es sei denn, das
+     optionale Flag "force" ist gesetzt.
+   force
+     1, wenn der spieler unabhaengig von seiner Vorsicht fluechten soll.
+     0 sonst.
+
+
+BESCHREIBUNG
+============
+
+   Flee() wird im heart_beat() oder von CheckWimpyAndFlee() aufgerufen,
+   um den Spieler fluechten zu lassen. Man kann die Funktion im Spieler
+   auch "von Hand" aufrufen, beispielsweise in einem Spell. Man sollte
+   dann force auf 1 setzen, damit der Spieler unabhaengig von seiner
+   Vorsicht fluechtet.
+   Hierbei kann die Flucht dazu fuehren, dass man die Teamreihe wechselt,
+   aber auch, dass man den Raum verlaesst.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   this_player()->Flee(0, 1);
+   // Der Spieler soll fluechten, egal, ob seine Lebenspunkte geringer
+   // als seine Vorsicht sind und unabhaengig von seiner Position.
+
+
+
+   this_player()->Flee( find_object("/gilden/abenteurer") );
+   // Der Spieler soll fluechten, wenn er sich in der Abenteurergilde
+   // befindet (oder wenn diese nicht existiert)
+
+
+
+   this_player()->Flee( "/gilden/abenteurer" );
+   // Der Spieler wird nicht fluechten, da der Vergleich von Dateiname
+   // und dem Raum 0 ergibt.
+
+   this_player()->Flee( find_object("/gilden/abenteurer"), 1);
+   // Der Spieler soll auf jeden Fall fluechten, egal ob er sich in der
+   // Abenteurergilde befindet oder nicht. Grund: Gesetztes force-Flag.
+
+
+SIEHE AUCH
+==========
+
+   CheckWimpyAndFlee(), Defend(), heart_beat(),
+
+Last modified: Wed Nov 12 14:44:42 2003 by Bambi
diff --git a/doc/sphinx/man/lfun/FreeHands b/doc/sphinx/man/lfun/FreeHands
new file mode 100644
index 0000000..c876b21
--- /dev/null
+++ b/doc/sphinx/man/lfun/FreeHands
@@ -0,0 +1,60 @@
+
+FreeHands()
+***********
+
+
+FUNKTION
+========
+
+   public varargs int FreeHands(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, dessen Handnutzung vorbei ist
+      - kann 0 sein, dann wird PO benutzt
+
+
+RUECKGABEWERT
+=============
+
+   0, wenn kein Objekt uebergeben wurde oder kein PO existiert
+   1, sonst
+
+
+BESCHREIBUNG
+============
+
+   Befreit die Haende eines Livings von ein bestimmten Objekt.
+   Es werden _alle_ Haende wieder freigegeben.
+
+
+BEISPIELE
+=========
+
+   > halte seil fest
+   ...
+   this_player()->UseHands(this_object(),2);
+   ...
+
+   > lasse seil los
+   ...
+   this_player()->FreeHands(this_object());
+   ...
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands
+
+1.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/GetAquarium b/doc/sphinx/man/lfun/GetAquarium
new file mode 100644
index 0000000..3896ac5
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetAquarium
@@ -0,0 +1,59 @@
+
+GetAquarium()
+*************
+
+
+FUNKTION
+========
+
+   varargs public string* GetAquarium(object angel)
+
+
+ARGUMENTE
+=========
+
+   Das optionale Argument <angel> ist die Angel selbst.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion wird beim Angeln in Raeumen gerufen, wenn diese als
+   Gewaessertyp W_USER gesetzt haben (siehe Manpage zu P_WATER).
+   Aus der zurueckgegebenen Liste der Pfade wird einer zufaellig aus-
+   gewaehlt und das Objekt geclont.
+
+
+RUECKGABEWERT
+=============
+
+   String-Array mit Pfadnamen zu den in diesem Raum fangbaren Fischen.
+
+
+BEMERKUNG
+=========
+
+   Man kann die Fangchancen durch Mehrfachnennung einzelner Eintraege
+   modifizieren. Es muss sich bei den Eintraegen um lad- und clonebare
+   Objekte handeln.
+   Fuer selbstprogrammierte Fische ist das Basisobjekt
+   /std/items/fishing/fish zu verwenden. Einige vorgefertigte Fische
+   finden sich darueber hinaus in /items/fishing/aquarium/
+
+
+BEISPIEL
+========
+
+   varargs string* GetAquarium(object angel) {
+     return ({"/d/dschungel/rikus/q4e/obj/stichling",
+              "/d/dschungel/rikus/q4e/obj/karpfen",
+              "/p/seher/partymonster/obj/fisch"});
+   }
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_WATER, P_FISH
+
+zuletzt geaendert: 2014-Sep-02, Arathorn
diff --git a/doc/sphinx/man/lfun/GetDetail b/doc/sphinx/man/lfun/GetDetail
new file mode 100644
index 0000000..7e5a092
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetDetail
@@ -0,0 +1,90 @@
+
+GetDetail()
+***********
+
+
+FUNKTION
+========
+
+   varargs string GetDetail(string key, string race, int sense)
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   key
+     Das zu ermittelnde Detail.
+   race
+     Rasse des ermittelnden Objektes (falls es ein Lebewesen ist).
+   sense
+     Die Art des zu untersuchenden Details:
+       Untersuchen, Riechen, Hoeren, Tasten.
+
+
+BESCHREIBUNG
+============
+
+   Die Beschreibung des gewuenschten Details wird ermittelt. Dabei
+   werden rassenspezifische Details beruecksichtigt. Es gibt hierbei
+   verschiedene Detailarten, deren Typ man in <sense> angibt:
+     SENSE_VIEW    - Fuer Defaultdetails zum Untersuchen.
+     SENSE_SMELL   - Fuer Details, die man riechen kann.
+     SENSE_SOUND   - Fuer Details, die man hoeren kann.
+     SENSE_TOUCH   - Fuer Details, die man abtasten kann.
+     SENSE_READ    - Fuer Details, die man lesen kann.
+
+   Dabei ist 0 == SENSE_VIEW.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Beschreibung des Details oder 0, wenn es dieses Detail nicht
+   gibt.
+
+
+BEISPIEL
+========
+
+   Im folgenden wird ein kleines Testdetail generiert:
+     AddDetail("test","Das ist ein Test!\n");
+   Im folgenden wird das Detail entfernt, wenn es existiert. Dies ist
+   eigentlich nicht noetig, da RemoveDetail() damit zurechtkommt, aber
+   eventuell sind ja noch weitere Aktionen noetig.
+     if(GetDetail("test"))
+     { RemoveDetail("test");
+       ...
+     }
+   Ein Geruch kann man folgendermassen erzeugen:
+     AddSmells("gold",
+       ([0      :"Gold kann man nicht riechen!\n",
+         "zwerg":"Deine trainierte Nase riecht es muehelos!\n"]));
+   Die Abfrage des Details gestaltet sich recht einfach:
+     GetDetail("gold","zwerg",SENSE_SMELL);
+   Die Funktion liefert das Detail fuer den Zwerg.
+     GetDetail("gold",0,SENSE_SMELL);
+   Die Funktion liefert das Detail fuer die restlichen Rassen.
+     GetDetail("gold",0,SENSE_SOUND);
+   Ein Sounddetail mit dem Namen "gold" existiert nicht, die Funktion
+   liefert 0 zurueck.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveReadDetail(), RemoveSmells(), RemoveDetail(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/lfun/GetDoorsMapping b/doc/sphinx/man/lfun/GetDoorsMapping
new file mode 100644
index 0000000..68beb0d
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetDoorsMapping
@@ -0,0 +1,46 @@
+
+GetDoorsMapping()
+*****************
+
+
+FUNKTION
+========
+
+   mapping GetDoorsMapping()
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion erhaelt man das Mapping der vorhandenen
+   Seherportale.
+
+
+
+   Die Struktur ist von der Form:
+       ([ Pfad: Portalnummer; Portalbeschreibung, ])
+   Es wird eine Kopie dieses Mappings geliefert.
+
+
+RUECKGABEWERT
+=============
+
+   Das Sehertormapping
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   "/d/seher/portale/sehertormaster"->GetDoorsMapping();
+
+
+SIEHE AUCH
+==========
+
+   DoorIsKnown, ShowDoors, Teleport, DiscoverDoor
diff --git a/doc/sphinx/man/lfun/GetEnemies b/doc/sphinx/man/lfun/GetEnemies
new file mode 100644
index 0000000..e288250
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetEnemies
@@ -0,0 +1,53 @@
+
+GetEnemies()
+************
+
+
+FUNKTION
+========
+
+   mapping GetEnemies();
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   Mapping mit bekannten Gegnern als Schluessel und Zeiten als
+   Eintraegen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert das interne Mapping zurueck, in dem alle
+   Gegner abgespeichert sind. Diese Gegner stellen die Schluessel in
+   dem Mapping dar. Als Eintraege sind die Zeiten vermerkt, nach
+   welcher Zeit ein Gegner automatisch wieder vergessen werden soll.
+   Mehr Informationen dazu sind in der Dokumentation zur aehnlich
+   gearteten Funktion QueryEnemies() zu finden, die jedoch zwei Arrays
+   getrennte zurueckliefert.
+   Achtung: Es wird keine Kopie des Mappings erstellt. Saemtliche
+   Veraenderungen in dem Mapping wirken sich unmittelbar auf die
+   interne Gegnerliste aus. Die Funktion sollte deshalb nicht genutzt
+   werden. Gegner ein- und austragen sollte man nur mittels
+   InsertEnemy() und StopHuntFor().
+
+
+SIEHE AUCH
+==========
+
+   QueryEnemies(), SetEnemies(), InsertEnemy(), StopHuntFor()
+
+Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/GetExits b/doc/sphinx/man/lfun/GetExits
new file mode 100644
index 0000000..a235b1f
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetExits
@@ -0,0 +1,46 @@
+
+GetExits()
+**********
+
+
+FUNKTION
+========
+
+   varargs string GetExits(object viewer);
+
+
+DEFINIERT IN
+============
+
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   viewer
+        Derjenige, der sich die Ausgaenge anschaut.
+
+
+BESCHREIBUNG
+============
+
+   Es wird eine Liste der fuer viewer sichtbaren Ausgaenge erstellt.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit der Liste der sichtbaren Ausgaenge.
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/GetFValue b/doc/sphinx/man/lfun/GetFValue
new file mode 100644
index 0000000..30db195
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetFValue
@@ -0,0 +1,47 @@
+
+GetFValue()
+***********
+
+
+FUNKTION
+========
+
+   varargs int GetFValue(string vname, mapping map, object pl)
+
+
+ARGUMENTE
+=========
+
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
+
+
+BESCHREIBUNG
+============
+
+   Berechnet den Wert und den Factor des Parameters in spellmapping.
+
+
+RUECKGABEWERT
+=============
+
+   Berechneter Wert*Factor aus dem Spellmapping.
+
+
+BEMERKUNGEN
+===========
+
+   Ruft GetValue(vname,map,pl)*GetFactor(vname,map,pl)/100 auf.
+
+
+BEISPIEL
+========
+
+   xxx=GetFValue(SI_SKILLDAMAGE,sinfo,caster);
+
+Siehe auch:
+
+   "GetValue", "GetFactor", "GetOffset", "GetValueO", "GetFValueO"
+
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/sphinx/man/lfun/GetFValueO b/doc/sphinx/man/lfun/GetFValueO
new file mode 100644
index 0000000..25650fb
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetFValueO
@@ -0,0 +1,85 @@
+
+GetFValueO()
+************
+
+
+FUNKTION
+========
+
+   varargs int GetFValueO(string vname, mapping map, object pl)
+
+
+ARGUMENTE
+=========
+
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
+
+
+BESCHREIBUNG
+============
+
+   'Berechnet' den Wert, den Factor und den Offset des Parameters
+   in spellmapping.
+
+
+RUECKGABEWERT
+=============
+
+   Berechneter (Wert*Factor)/100+Offset aus dem Spellmapping.
+
+
+BEMERKUNGEN
+===========
+
+   Ruft (GetValue(vname,map,pl)*GetFactor(vname,map,pl))/100+
+   GetOffset(vname,map,pl) auf.
+
+
+BEISPIEL
+========
+
+   AddSpell("egal",10,
+   ([
+   OFFSET(SI_COST):([SM_RACE:(["Zwerg":4]) ]),
+   FACTOR(SI_COST):([SM_RACE:(["Mensch":90]) ]),
+   SI_SKILLDAMAGE:100,
+   OFFSET(SI_SKILLDAMAGE):25,
+   SI_SKILLDAMAGE_TYPE:DT_EXAMPLE,
+   FACTOR(SI_SKILLDAMAGE):([SM_RACE:(["Zwerg":80,"Elf":120]) ])
+   ]));
+
+   So, was sollen uns diese Zeilen sagen?
+
+   Es wird ein Spruch Names 'egal' ins Spellbook eingetragen. Er kostet
+   regulaer 10 MP. Fuer Zwerge allerdings wird ein Offset von 4 MP
+   aufgeschlagen. Ausserdem machen Zwerge nur 80% Schaden, Elfen
+   hingegen 120%. Der Grundschaden betraegt 100 Schadenspunkte, der
+   Offset des Schadens nochmal 25. Menschen bezahlen fuer diesen
+   Spruch nur 90% der Kosten.
+
+   Nun die Rechenbeispiele:
+
+   Fuer die Kosten:
+           Value   ValueO  FValue  FValueO
+   Mensch     10       10       9        9
+   Elf        10       10      10       10
+   Hobbit     10       10      10       10
+   Zwerg      10       14      10       14
+
+   Fuer den Schaden:
+                   Value   ValueO  FValue  FValueO
+   Mensch          100     125     100     125
+   Elf             100     125     120     150
+   Hobbit          100     125     100     125
+   Zwerg           100     125      80     100
+
+   An diesem Beispiel sieht man deutlich, wie man mit ein paar
+   Offsets und Faktoren die Wirkung eines Spruches deutlich
+   veraendern kann. Es sollte bei eigenen Berechnungen immer
+   GetFValueO benutzt werden.
+
+Siehe auch:
+
+   "GetValue", "GetFactor", "GetOffset", "GetFValue", "GetValueO"
diff --git a/doc/sphinx/man/lfun/GetFactor b/doc/sphinx/man/lfun/GetFactor
new file mode 100644
index 0000000..adc6a19
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetFactor
@@ -0,0 +1,48 @@
+
+GetFactor()
+***********
+
+
+FUNKTION
+========
+
+   varargs int GetFactor(string vname, mapping map, object pl)
+
+
+ARGUMENTE
+=========
+
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
+
+
+BESCHREIBUNG
+============
+
+   'Berechnet' den Factor des Parameters in spellmapping.
+
+
+RUECKGABEWERT
+=============
+
+   Berechneter Factor aus dem Spellmapping.
+
+
+BEMERKUNGEN
+===========
+
+   Beschraekung auf 10-1000. Werte groesser oder kleiner als diese
+   werden 'abgeschnitten'.
+
+
+BEISPIEL
+========
+
+   xxx=GetFactor(SI_SKILLDAMAGE,sinfo,caster);
+
+Siehe auch:
+
+   "GetValue", "GetOffset", "GetFValue", "GetValueO", "GetFValueO"
+
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/sphinx/man/lfun/GetGroupMembers b/doc/sphinx/man/lfun/GetGroupMembers
new file mode 100644
index 0000000..8c765d7
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetGroupMembers
@@ -0,0 +1,60 @@
+
+GetGroupMembers()
+*****************
+
+
+FUNKTION
+========
+
+   string *GetGroupMembers(string grp)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   string grp - Gruppenname
+
+
+BESCHREIBUNG
+============
+
+   Gibt alle dieser Gruppe zugehoerigen Materialien zurueck. Dazu gut, sich
+   einen Ueberblick ueber die aktuelle Liste zu verschaffen.
+
+
+RUECKGABEWERT
+=============
+
+   Array von Strings mit Materialien oder ({})
+
+
+BEISPIELE
+=========
+
+   // wir wollen irgend ein Metall haben, nennen dies aber beim Namen
+   int ind;
+   string* likeit;
+   likeit=MATERIALDB->GetGroupMembers(MATGROUP_METAL);
+   ind=random(sizeof(likeit));
+   ...
+   write("Der Schmied sagt: Mir fehlt noch "+
+         MATERIALDB->MaterialName(likeit[ind], WER, 100)+".\n");
+   ...
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/GetInfoArr b/doc/sphinx/man/lfun/GetInfoArr
new file mode 100644
index 0000000..ba6c4c4
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetInfoArr
@@ -0,0 +1,55 @@
+
+GetInfoArr()
+************
+
+
+FUNKTION
+========
+
+   static mixed *GetInfoArr(string str)
+
+
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+ARGUMENTE
+=========
+
+   string str  - Schluesselwort der Frage
+
+
+BESCHREIBUNG
+============
+
+   Sucht nach einem Schluesselwort in den abgelegten Antworten
+   und gibt die Informationen oder einen 0er-Array zurueck.
+
+
+BEMERKUNGEN
+===========
+
+   Ueberschreibbar :)
+
+
+RUECKGABEWERT
+=============
+
+   Siehe Parameter von AddInfo:
+
+   Array mit:
+   ({ <Infostring> (0 fuer keine Antwort),
+      <Indent-String> (Default: 0),
+      <Silent> (Default: 0),
+      <Casebased> (Default: 0)
+   })
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: AddInfo, do_frage
+
+31.Mar 2007 Gloinson
diff --git a/doc/sphinx/man/lfun/GetMatMembership b/doc/sphinx/man/lfun/GetMatMembership
new file mode 100644
index 0000000..e25e991
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetMatMembership
@@ -0,0 +1,79 @@
+
+GetMatMembership()
+******************
+
+
+FUNKTION
+========
+
+   string *GetMatMembership(string mat)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   string mat - ein Material
+
+
+BESCHREIBUNG
+============
+
+   Gibt alle Gruppen, denen das Material angehoert zurueck. Geeignet, um
+   die Eigenschaften eines Materials zu ueberpruefen.
+
+
+RUECKGABEWERT
+=============
+
+   Array von Strings mit Materialiengruppen oder ({})
+
+
+BEISPIELE
+=========
+
+   // ein weiser Schmied:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein etwas besser erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% besser erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATRGROUP_METAL, 100])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
+     }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/GetOffset b/doc/sphinx/man/lfun/GetOffset
new file mode 100644
index 0000000..ee982b7
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetOffset
@@ -0,0 +1,49 @@
+
+GetOffset()
+***********
+
+
+FUNKTION
+========
+
+   varargs int GetOffset(string vname, mapping map, object pl)
+
+
+ARGUMENTE
+=========
+
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
+
+
+BESCHREIBUNG
+============
+
+   'Berechnet' den Offset des Parameters in spellmapping.
+
+
+RUECKGABEWERT
+=============
+
+   Berechneter Offset aus dem Spellmapping.
+
+
+BEMERKUNGEN
+===========
+
+   Beschraekung auf -10000 bis +10000. Werte groesser oder kleiner
+   als diese werden 'abgeschnitten'. Mehr als 100% Bonus oder Malus
+   gibts nicht ;-).
+
+
+BEISPIEL
+========
+
+   xxx=GetOffset(SI_SKILLDAMAGE,sinfo,caster);
+
+Siehe auch:
+
+   "GetValue", "GetFactor", "GetFValue", "GetValueO", "GetFValueO"
+
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/sphinx/man/lfun/GetOwner b/doc/sphinx/man/lfun/GetOwner
new file mode 100644
index 0000000..92543f0
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetOwner
@@ -0,0 +1,38 @@
+
+GetOwner()
+**********
+
+
+GetOwner(L)
+===========
+
+
+FUNKTION
+========
+
+   string GetOwner();
+
+
+BESCHREIBUNG
+============
+
+   Wird vom Hoerrohr gerufen:
+    /d/inseln/shakedbeer/shakyisland/obj/hoerrohr.c
+   und kann einen Besitzer der Dateien zurueckgeben, der vom Besitzer
+   der Pfade in denen die Datei liegt abweicht.
+
+
+BEISPIELE
+=========
+
+   string GetOwner() {
+    return "Tiamak";
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_INFO
+
+11. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/GetPhiolenInfos b/doc/sphinx/man/lfun/GetPhiolenInfos
new file mode 100644
index 0000000..ccd0f68
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetPhiolenInfos
@@ -0,0 +1,122 @@
+
+GetPhiolenInfos()
+*****************
+
+
+GetPhiolenInfos(L)
+==================
+
+
+FUNKTION
+========
+
+   mixed *GetPhiolenInfos();
+
+
+BESCHREIBUNG
+============
+
+   Wird von der Phiole aufgerufen:
+   /d/inseln/miril/sternquest/obj/phiole.c
+   Der Raum muss /p/service/miril/phiole.h includen.
+   Mit der Phiole kann ein Spieler durch Tueren schauen. Bei Tueren, die
+   vom Doormaster (/obj/doormaster.c) verwaltet werden, klappt dies auto-
+   matisch. Moechte man das verbieten, so muss die Funktion
+   GetPhiolenInfos() im entsprechenden Raum definiert sein.
+   Befinden sich Tueren im Raum, die nicht vom Doormaster verwaltet werden,
+   aber bei denen die Phiole funktionieren soll, so kann dies ebenfalls
+   mittels GetPhiolenInfos() geschehen.
+
+
+
+   Funktion der Phiole:
+   Sie projiziert ein Bild dessen, was hinter der Tuer liegt auf die Tuer.
+   Steht die Tuer offen, so sieht der Spieler nur eine Wand, denn es wird
+   gezeigt, was hinter dieser Tuer ist.
+
+
+
+   Ist die Tuer jedoch ge- oder verschlossen, so sieht er auf der Tuer
+   die Langbeschreibung des Raumes, der hinter der Tuer liegt, sowie das
+   Inventar dieses Raumes.
+
+   Aufbau der Funktion:
+   mixed *GetPhiolenInfos() {
+     return ({
+              ([
+                PHIOLE_DEST:     string,
+                PHIOLE_IDS:      *string,
+                PHIOLE_GENDER:   int,
+                PHIOLE_STATUS:   int,     (optional)
+                PHIOLE_LONG:     string,  (optional)
+                PHIOLE_VERBOTEN: int      (optional)
+              ]),
+              ([
+                ... Naechste Tuer
+              ])
+            });
+   }
+
+
+
+   PHIOLE_DEST      Dateiname des Zielraums
+   PHIOLE_IDS       Array der Strings, mit denen sich die Tuer
+                    ansprechen laesst
+   PHIOLE_GENDER    Geschlecht der Tuer
+   PHIOLE_STATUS    aktueller Status der Tuer:
+                    0 geschlossen/verschlossen, 1 offen
+                    Bei Tueren, die mit NewDoor erzeugt wurden
+                    nicht setzen
+   PHIOLE_LONG      Beschreibung des Zielraums (z.B. bei einer
+                    Faketuer)
+   PHIOLE_VERBOTEN  0 erlaubt, 1 verboten
+
+
+BEISPIEL
+========
+
+   Ein Raum enthaelt eine Holztuer und ein Portal. Erstere ist mittels
+   NewDoor(...) gebaut, soll aber nicht zu durchschauen sein, letztere ist
+   selbstgestrickt. Die erste fuehrt in den Workroom von Jof, die zweite
+   ist nur ein Fake und immer geschlossen. Bei vom Doormaster erzeugten
+   Tueren sollte PHIOLE_STATUS nicht gesetzt werden, da dies automatisch
+   abgefragt wird.
+
+
+
+   #include "/p/service/miril/phiole.h"
+   ...
+   mixed *GetPhiolenInfos(){
+     return ({
+              ([
+                PHIOLE_DEST:"/players/jof/workroom",
+                PHIOLE_IDS:({"holztuer"}),
+                PHIOLE_GENDER:FEMALE,
+                PHIOLE_VERBOTEN:1
+              ]),
+              ([
+                PHIOLE_DEST:0,
+                PHIOLE_IDS:({"portal"}),
+                PHIOLE_GENDER:NEUTER,
+                PHIOLE_STATUS:0,
+                PHIOLE_LONG:"Du stehst in einer riesigen Schatzkammer und "
+                            "kannst Dein Glueck kaum fassen. Nun brauchst "
+                            "Du nur noch zuzugreifen und bist der reichste "
+                            "Bewohner des MorgenGrauen.",
+                PHIOLE_VERBOTEN:0
+              ])
+            });
+    }
+    Mittels PHIOLE_LONG laesst sich auch bei erlaubten und verbotenen Tueren
+    einstellen, was der Spieler statt der normalen Raumbeschreibung und den
+    im Raum befindlichen Objekten sehen soll. Das koennte z.B. sinnvoll
+    sein, falls der Spieler zwar die Raumbeschreibung, aber nicht den fiesen
+    Drachen sehen soll, der sich ebenfalls im Raum befindet.
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorStatus(), SetDoorStatus(), QueryAllDoors()
+
+Letzte Aenderung: Sam, 14. Jan 2006, 12:21, Miril
diff --git a/doc/sphinx/man/lfun/GetReputation b/doc/sphinx/man/lfun/GetReputation
new file mode 100644
index 0000000..b27d053
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetReputation
@@ -0,0 +1,53 @@
+
+GetReputation()
+***************
+
+
+FUNKTION
+========
+
+   public int GetReputation(string repid)
+
+
+DEFINIERT IN
+============
+
+   /std/player/reputation.c
+
+
+ARGUMENTE
+=========
+
+   repid
+     Eindeutige ID der angefragten Reputation.
+
+
+BESCHREIBUNG
+============
+
+   Liefert den aktuellen Wert der angegebenen Reputation <repid> zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Zahlenwert, Integer.
+
+
+BEISPIELE
+=========
+
+   s. reputation
+
+
+SIEHE AUCH
+==========
+
+   reputation
+   ChangeReputation(), GetReputations()
+
+
+ZULETZT GEAeNDERT
+=================
+
+06.04.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/GetReputations b/doc/sphinx/man/lfun/GetReputations
new file mode 100644
index 0000000..134bd2c
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetReputations
@@ -0,0 +1,47 @@
+
+GetReputations()
+****************
+
+
+FUNKTION
+========
+
+   public mapping GetReputations()
+
+
+DEFINIERT IN
+============
+
+   /std/player/reputation.c
+
+
+BESCHREIBUNG
+============
+
+   Liefert ein Mapping aller im Spieler gespeicherten Reputationen und ihrer
+   Werte zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Mapping ([(string)repid: (int)wert])
+
+
+BEISPIELE
+=========
+
+   s. repuation
+
+
+SIEHE AUCH
+==========
+
+   reputation
+   GetReputation(), GetReputations()
+
+
+ZULETZT GEAeNDERT
+=================
+
+06.04.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/GetValue b/doc/sphinx/man/lfun/GetValue
new file mode 100644
index 0000000..29eea03
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetValue
@@ -0,0 +1,46 @@
+
+GetValue()
+**********
+
+
+FUNKTION
+========
+
+   varargs int GetValue(string vname, mapping map, object pl)
+
+
+ARGUMENTE
+=========
+
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
+
+
+BESCHREIBUNG
+============
+
+   'Berechnet' den Wert des uebergebenen Parameters aus dem
+   Spellmapping.
+
+
+RUECKGABEWERT
+=============
+
+   Berechneter Wert aus dem Spellmapping.
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIEL
+========
+
+   xxx=GetValue(SI_SKILLDAMAGE,sinfo,caster);
+
+Siehe auch:
+
+   "GetFactor", "GetOffset", "GetFValue", "GetValueO", "GetFValueO"
+
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/sphinx/man/lfun/GetValueO b/doc/sphinx/man/lfun/GetValueO
new file mode 100644
index 0000000..e9a7522
--- /dev/null
+++ b/doc/sphinx/man/lfun/GetValueO
@@ -0,0 +1,47 @@
+
+GetValueO()
+***********
+
+
+FUNKTION
+========
+
+   varargs int GetValueO(string vname, mapping map, object pl)
+
+
+ARGUMENTE
+=========
+
+   vname   : name des parameters aus dem spellmapping
+   map     : spellmapping
+   pl      : caster
+
+
+BESCHREIBUNG
+============
+
+   Berechnet den Wert und den Offset des Parameters in spellmapping.
+
+
+RUECKGABEWERT
+=============
+
+   Berechneter Wert+Offset aus dem Spellmapping.
+
+
+BEMERKUNGEN
+===========
+
+   Ruft GetValue(vname,map,pl)+GetOffset(vname,map,pl) auf.
+
+
+BEISPIEL
+========
+
+   xxx=GetValueO(SI_SKILLDAMAGE,sinfo,caster);
+
+Siehe auch:
+
+   "GetValue", "GetFactor", "GetOffset", "GetFValue", "GetFValueO"
+
+   Ausfuehrliches Beispiel siehe "GetFValueO".
diff --git a/doc/sphinx/man/lfun/Gildenproperties b/doc/sphinx/man/lfun/Gildenproperties
new file mode 100644
index 0000000..dd5676f
--- /dev/null
+++ b/doc/sphinx/man/lfun/Gildenproperties
@@ -0,0 +1,186 @@
+
+Gildenproperties()
+******************
+
+Name                    Beschreibung
+
+P_GUILD_SKILLS          Property fuer Skills in der Gilde
+P_GUILD_RESTRICTIONS    Restriktionen fuer den Eintritt in die Gilde
+P_GUILD_DEFAULT_SPELLBOOK P_GUILD_MALE_TITLES     Maennliche
+Gildentitel P_GUILD_FEMALE_TITLES   Weibliche Gildentitel
+P_GUILD_LEVELS          Gildenstufen P_SB_SPELLS             Property
+fuer Spells in Spellbook P_GLOBAL_SKILLPROPS     Properties der Gilde
+UND des Spellbooks
+
+Properties des Spielers P_GUILD                 String mit dem Namen
+der Gilde P_GUILD_LEVEL           Gildenstufe P_GUILD_TITLE
+Gildentitel P_GUILD_RATING          Rating in der Gilde P_NEWSKILLS
+mapping mit Skills und Spells P_NEXT_SPELL_TIME       Zeit bis der
+naechste Spell gesprochen werden kann P_TMP_ATTACK_HOOK
+Angriffs-Ersatzfunktion P_TMP_ATTACK_MOD        Angriffs-Modifizierung
+P_TMP_DEFEND_HOOK       Abwehr-Ersatzfunktion P_TMP_DIE_HOOK
+"Die"-Ersatzfunktion P_TMP_MOVE_HOOK         Bewegungs-Ersatzfunktion
+P_DEFENDERS             Verteidiger P_PREPARED_SPELL
+Vorbereiteter Spell P_DEFAULT_GUILD         Standardgilde
+P_MAGIC_RESISTANCE_OFFSET Offset fuer Magie-Resistenzen
+
+Standard-Skills SK_FIGHT                Kampfskill(global)
+SK_SWORDFIGHTING        Schwertkampf SK_WEAPONLESS
+Waffenloser Kampf SK_TWOHANDED            Zweihandkampf SK_CASTING
+Zauber-Skill SK_MAGIC_ATTACK         Magischer Angriff
+SK_MAGIC_DEFENSE        Magische Abwehr SK_NIGHTVISION
+Nachtsicht SK_BOOZE                Sauf-Skill SK_INFORM_DEFEND
+SK_DEFEND_OTHER SK_CARRY                Trage-Skill SK_SPELL_DEFEND
+Spruch-Abwehr
+
+Skill-Attribute P_SKILL_ATTRIBUTES      Property fuer Skill-Attribute
+P_SKILL_ATTRIBUTE_OFFSETS   Property fuer Offsets der Skill-Attribute
+SA_QUALITY              Allgemeine Qualitaet SA_DAMAGE
+Schaden SA_SPEED                Geschwindigkeit SA_DURATION
+Dauer SA_EXTENSION            Ausdehnung SA_RANGE
+Reichweit SA_ENEMY_SAVE identisch zu SA_SPELL_PENETRATION (OBSOLET!)
+SA_SPELL_PENETRATION Chance des _Casters_, einen Spell durch ein
+
+   P_NOMAGIC durchzukriegen.
+
+Skill-Info FACTOR(x)               Faktor OFFSET(x)
+Offset SI_SKILLFUNC            Funktion, die aufgerufen wird
+SI_CLOSURE              Intern (Geschwindigkeitsoptimierung)
+SI_SPELLBOOK            Spellbook, in dem der Spell steht SI_SPELLCOST
+Kosten des Spells SI_TIME_MSG             Die Meldung wird anstelle
+von "Du bist noch zu
+
+   erschoepft von Deinem letzten Spruch." ausgegeben.
+
+SI_SP_LOW_MSG           Die Meldung wird anstelle von "Du hast zu
+wenig
+   Zauberpunkte fuer diesen Spruch." ausgegeben.
+
+SI_NOMAGIC              Prozentwert, mit dem P_NOMAGIC mgangen werden
+kann SI_SPELLFATIGUE         Erschoepfung - Zeit, in der keine
+weiteren Spells
+
+   aufgerufen werden koennen
+
+SI_SKILLLEARN           Lerngeschwindigkeit in 0.01% pro A_INT/2
+SI_SKILLABILITY         Faehigkeit, diesen Spruch zu benutzen
+SI_SKILLARG             Argumente, die uebergeben wurden
+SI_SKILLRESTR_USE       Beschraenkungen beim Gebrauch
+SI_SKILLRESTR_LEARN     Beschraenkungen beim Lernen SI_SKILLINFO
+Kurzer Informationstext SI_SKILLINFO_LONG       Langer
+Informationstext SI_SKILLDAMAGE          Schaden SI_SKILLDAMAGE_TYPE
+Art des Schadens SI_SKILLDAMAGE_MSG      Meldung die anstelle einer
+Waffe kommen soll SI_SKILLDAMAGE_MSG2     dito fuer den Text fuer
+andere im Raum SI_SPELL                Spell, mit dem angegriffen
+wurde SI_INHERIT              Skill, von dem etwas uebernommen werden
+soll SI_DIFFICULTY           Wert, der die Obergrenze der Faehigkeit
+abgrenzt SI_LASTLIGHT            Fuer Nachtsicht Wann hat der Spieler
+zum letzten
+
+   mal Licht gesehen.
+
+SI_SKILLHEAL            Heilung SI_USR                  selbst
+definierte Infos SI_GUILD                Gilde, falls Auswahl aus
+mehreren moeglich SI_ENEMY                Feind bei Kampfspruechen
+SI_FRIEND               Der zu verteidigende Freund bei DefendOther
+
+   und InformDefend
+
+SI_MAGIC_TYPE           Von was fuer einer Art ist die Magie (s.u.)
+SI_PREPARE_TIME         Zeit die zur Vorbereitung benoetigt wird.
+SI_ATTACK_BUSY_MSG      Meldung, wenn der Spieler zu beschaeftigt ist
+SI_NO_ATTACK_BUSY       Wenn der Spell nicht als Taetigkeit
+zaehlen/gezaehlt
+
+   werden soll, kann man hier NO_ATTACK_BUSY[_SET|_QUERY] setzen
+
+SP_NAME                 Name des Spells, falls Mapping SP_SHOW_DAMAGE
+Treffermeldung soll gezeigt werden. SP_REDUCE_ARMOUR        AC soll
+Typabhaengig reduziert werden. SP_PHYSICAL_ATTACK      Koerperlicher
+Angriff SP_RECURSIVE            Rekursionen
+
+Skill-Restrictions SR_FUN                  Funktion, die weitere
+Einschraenkungen prueft SR_EXCLUDE_RACE         Ausgeschlossene Rassen
+SR_INCLUDE_RACE         Eingeschlossene Rassen SR_GOOD
+Align < SR_BAD                  Align > SR_FREE_HANDS
+Benoetigte freie Haende SR_SEER                 Muss Seher sein
+SR_MIN_SIZE             Mindestgroesse SR_MAX_SIZE
+Maximalgroesse SM_RACE                 Rassenspezifische
+Besonderheiten
+
+Magie-Arten MT_ANGRIFF              Angriff MT_SCHUTZ
+Schutz MT_ILLUSION             Illusion MT_BEHERRSCHUNG
+Beherrschung MT_HELLSICHT            Hellsicht MT_VERWANDLUNG
+Verwandlung MT_BESCHWOERUNG         Beschwoerung MT_BEWEGUNG
+Bewegung MT_SAKRAL               'Goettliches' MT_HEILUNG
+Heilung MT_CREATION             Erschaffung MT_PSYCHO
+Psycho-Kram MT_MISC                 Sonstiges -----------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+---------------------------------------------------------------------
+-------
diff --git a/doc/sphinx/man/lfun/GiveMiniQuest b/doc/sphinx/man/lfun/GiveMiniQuest
new file mode 100644
index 0000000..d208dbd
--- /dev/null
+++ b/doc/sphinx/man/lfun/GiveMiniQuest
@@ -0,0 +1,68 @@
+
+GiveMiniQuest()
+***************
+
+
+FUNKTION
+========
+
+   int GiveMiniQuest(object winner)
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+ARGUMENTE
+=========
+
+   winner
+     Spielerobjekt, das die Quest bestanden hat.
+
+
+RUeCKGABEWERT
+=============
+
+   (Die Defines fuer den Rueckgabewert finden sich in
+    /secure/questmaster.h)
+    1 : Hat geklappt                           (OK)
+   -1 : Spieler hat die Quest bereits geloest  (MQ_ALREADY_SET)
+   -2 : Ungueltiger Questname                  (MQ_KEY_INVALID)
+   -3 : Unbefugter Zugriff                     (MQ_ILLEGAL_OBJ)
+   -4 : Quest zur Zeit inaktiv                 (MQ_IS_INACTIVE)
+   -5 : Gaeste loesen keine Quests             (MQ_GUEST)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird nach dem erfolgreichen Loesen einer
+   MiniQuest die Quest im Spieler eingetragen. Dabei muss der
+   Aufruf in dem Objekt erfolgen, welches im Questmaster
+   eingetragen ist. Als Argument muss das Spielerobjekt
+   angegeben werden, welches die Quest bestanden hat.
+
+
+BEISPIEL
+========
+
+   QM->GiveMiniQuest(this_player());
+
+
+SIEHE AUCH
+==========
+
+   HasMiniQuest
+   /secure/questmaster.h, /secure/questmaster.c
+
+
+HINWEIS
+=======
+
+   Die Informationen fuer den EM fuer Quests sollten diesem
+   beim Eintragen der Miniquest in den Questmaster per Mail
+   zugeschickt werden. Siehe dazu die Hilfe zu AddMiniQuest.
+
+Zuletzt geaendert: Don, 30. Jan 2014, 22:14:12 von Ark.
diff --git a/doc/sphinx/man/lfun/GiveQuest b/doc/sphinx/man/lfun/GiveQuest
new file mode 100644
index 0000000..daedc6c
--- /dev/null
+++ b/doc/sphinx/man/lfun/GiveQuest
@@ -0,0 +1,86 @@
+
+GiveQuest()
+***********
+
+
+FUNKTION
+========
+
+   varargs int GiveQuest(string questname, string message)
+
+
+DEFINIERT IN
+============
+
+   /std/player/quests.c
+
+
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+   message
+     Optionale Meldung, die auf dem Abenteuer-Kanal statt der
+     Standardmeldung gesendet wird.
+     Dabei wird @@name@@ durch den Spielernamen ersetzt.
+
+
+RUeCKGABEWERT
+=============
+
+   (Die Defines fuer den Rueckgabewert finden sich in
+    /secure/questmaster.h)
+    1 : Hat geklappt                           (OK)
+   -1 : Spieler hat die Quest bereits geloest  (GQ_ALREADY_SET)
+   -2 : Ungueltiger Questname                  (GQ_KEY_INVALID)
+   -3 : Unbefugter Zugriff                     (GQ_ILLEGAL_OBJ)
+   -4 : Quest zur Zeit inaktiv                 (GQ_IS_INACTIVE)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird nach dem erfolgreichen Loesen einer
+   Quest die Quest im Spieler eingetragen. Dabei muss der Aufruf
+   in dem Objekt erfolgen, welches im Questmaster eingetragen ist.
+   Zusaetzlich wird der Zeitpunkt eingetragen, an dem die Quest
+   bestanden wurde.
+
+
+
+   Wer sich da nicht sicher ist, kann mit dem Questtool
+   (/obj/tools/questtool) nachsehen.
+
+   Nachdem eine Quest als geloest markiert wurde, ist dies in einem
+   Logfile fuer die Quest im Verzeichnis /log/quest einzutragen. Dazu
+   wird write_file verwendet.
+
+
+BEISPIEL
+========
+
+   int quest;
+
+   quest = this_player()->GiveQuest("Zacharias Eispalast");
+
+   if (quest == 1)
+   {
+     write("Du fuehlst, wie Deine Erfahrung ansteigt.\n");
+     write_file("/log/quest/eispalast",
+                dtime(time())+"   Aufgabe geloest von "
+                +this_player()->name()+"\n");
+   }
+   else if (quest != -1)
+     write( "Die Weltenmaschine will Dir Deine Arbeit "
+            +"nicht anerkennen.\n"
+            +"Frage einen Erzmagier um Hilfe.\n" );
+
+
+SIEHE AUCH
+==========
+
+   /secure/questmaster.h, /obj/tools/questtool
+   QueryQuest(), write_file(), ModifyQuestTime()
+
+Zuletzt geaendert: Son, 27. Apr 2014, Arathorn
diff --git a/doc/sphinx/man/lfun/GroupName b/doc/sphinx/man/lfun/GroupName
new file mode 100644
index 0000000..7b819be
--- /dev/null
+++ b/doc/sphinx/man/lfun/GroupName
@@ -0,0 +1,87 @@
+
+GroupName()
+***********
+
+
+FUNKTION
+========
+
+   string GroupName(string grp)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   string grp - ein Gruppenname
+
+
+BESCHREIBUNG
+============
+
+   Gibt die Langbeschreibung des Gruppennamens zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   Die Gruppenbeschreibung oder "Unbekanntes"
+
+
+BEISPIELE
+=========
+
+   // simpel
+   tmp=m_indices(ob->QueryProp(P_MATERIAL));
+   write("Dieses Objekt gehoert u.a. zur Gruppe "+
+         MATERIALDB->GroupName(MATERIALDB->GetMatMembership(tmp[0])[0])+
+         ".\n");
+   // gibt die erste Gruppenzugehoerigkeit des erste Materials in
+   // P_MATERIAL zurueck (bei MATGROUP_METAL z.B. "... zur Gruppe Metalle.")
+
+   // ein weiser Schmied:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% gut erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
+                      ({MATGROUP_METAL, 100})])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
+     }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/GuardExit b/doc/sphinx/man/lfun/GuardExit
new file mode 100644
index 0000000..88da3c9
--- /dev/null
+++ b/doc/sphinx/man/lfun/GuardExit
@@ -0,0 +1,111 @@
+
+GuardExit()
+***********
+
+
+FUNKTION
+========
+
+   protected <int|<string|closure>* >* GuardExit(object room, int hookid,
+                                                 <string|closure>* hdata);
+
+
+DEFINIERT IN
+============
+
+   /std/npc/moving.c
+
+
+ARGUMENTE
+=========
+
+   room
+        Der den Hook ausloesende Raum (environment())
+   hookid
+        Die ID des Hooks (H_HOOK_EXIT_USE)
+   hdata
+        Ein Array mit 3 Elementen:
+        ({
+            verb - Das Kommandoverb/Ausgangsname (string)
+            dest - Zielraum (string) oder closure (special exits)
+            msg  - Bewegungsrichtung (string) oder 0
+        })
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Funktion in einem NPC definiert, traegt sich der NPC bei jeder
+   Bewegung automatisch als Konsument von H_HOOK_EXIT_USE ein und diese
+   Funktion wird immer gerufen, wenn ein Lebewesen im gleichen Environment
+   wie der NPC versucht, einen Ausgang zu benutzen.
+   Der NPC kann dann die Bewegung abbrechen (und so den Ausgang
+   blockieren), Ziel oder Bewegungsmeldung aendern oder keine Veraenderung
+   vornehmen.
+   Die Konstanten fuer Hookid und Hookstatus (s. Rueckgabewert) sind in
+   <hook.h> definiert.
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit zwei Elementen:
+   ({
+       H_NO_MOD / H_ALTERED / H_CANCELLED,
+       hdata
+   })
+   hdata ist ggf. das geaenderte Array, welches die Funktion uebergeben
+   wird. Weitere Details s. auch /doc/std/hooks
+
+
+BEMERKUNGEN
+===========
+
+   Die Anzahl an Konsumenten eines Hooks ist begrenzt. Es ist daher
+   moeglich, dass die Registrierung nicht klappt, wenn zuviele (>5) Waechter
+   im Raum sind. Will man darauf reagieren, muesste man die Registrierung
+   pruefen.
+   Ein NPC, welcher GuardExit() definiert, aber im aktuellen Environment
+   keine Wache halten will, koennte sich selber de-registrieren.
+
+
+BEISPIELE
+=========
+
+    <int|<string|closure>* >* GuardExit(object room, int hookid,
+                                        <string|closure>* hdata)
+    {
+      // Nur in Gefaengnisraeumen Wache halten
+      if (strstr(object_name(environment()), "/room/jail")==0)
+      {
+        // Hier gehts nicht raus. ;-)
+        if (hdata[0] == "raus") {
+            tell_object(this_player(), ...);
+            return ({H_CANCELLED, hdata});
+        }
+        // Special exits ersetzen wir durch einen eigenen
+        else if (closurep(hdata[1])) {
+          hdata[1] = #'my_special_exit;
+          return ({H_ALTERED, hdata});
+        }
+        // alle anderen Ausgaenge in die persoenliche Zelle
+        else {
+          tell_object(this_player(), ...);
+          hdata[1] = "/room/jail_"+getuid(this_player());
+          hdata[2] = "Sueden";
+          return ({H_ALTERED, hdata});
+        }
+     }
+     // in allen anderen Raeumen nicht eingreifen
+     return ({H_NO_MOD, hdata});
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddExit, AddSpecialExit, RemoveExit
+   HRegisterToHook, HRegisterModifier, HUnregisterFromHook
+   /doc/std/hooks
+
+20.02.2016, Zesstra 22.05.2016, Mupfel (Beispiel korrigiert)
diff --git a/doc/sphinx/man/lfun/Halt b/doc/sphinx/man/lfun/Halt
new file mode 100644
index 0000000..2fb45e8
--- /dev/null
+++ b/doc/sphinx/man/lfun/Halt
@@ -0,0 +1,52 @@
+
+Halt()
+******
+
+
+FUNKTION
+========
+
+   void Halt();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Die Fahrt des Transporters wird abgebrochen. Sie muss explizit mit
+   Start() wieder aufgenommen werden!
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Es gibt keine einfache Moeglichkeit, die Fahrt eines Transporters an
+   der Stelle wieder aufzunehmen, an der sie unterbrochen wurde. Man
+   muesste die aktuelle Position mit QueryPosition() ermitteln, mit Hilfe
+   der AddXXX()-Aufrufe in eine Positionsnummer umwandlen und diese an
+   Start() uebergeben.
+
+
+SIEHE AUCH
+==========
+
+   Start(), /std/transport.c
+
+Last modified: Wed May 8 10:19:23 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/HasMiniQuest b/doc/sphinx/man/lfun/HasMiniQuest
new file mode 100644
index 0000000..c832f00
--- /dev/null
+++ b/doc/sphinx/man/lfun/HasMiniQuest
@@ -0,0 +1,59 @@
+
+HasMiniQuest()
+**************
+
+
+FUNKTION
+========
+
+   int HasMiniQuest(mixed pl, mixed name)
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+ARGUMENTE
+=========
+
+   pl
+     Name des Spielers oder das Spielerobjekt
+   name
+     Filename des Objekts oder das Objekt selbst, welches die Miniquest
+     im Spieler eintragen darf, oder die Nummer (int) der Miniquest
+
+
+RUeCKGABEWERT
+=============
+
+    1 : Der Spieler hat die MiniQuest
+    0 : Der Spieler hat die MiniQuest noch nicht
+   -2 : angegebene Miniquest existiert nicht
+   -3 : falsche Datentypen fuer pl oder name uebergeben
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann getestet werden, ob ein Spieler eine
+   MiniQuest bereits geloest hat. Dabei ist entweder der Filename des
+   Objektes anzugeben, das die Quest im Spieler eintragen darf oder
+   das Objekt selbst.
+
+
+BEISPIEL
+========
+
+   if( QM->HasMiniQuest(getuid(this_player()), this_object())!=1 )
+     write("Du bist noch nicht reif genug.\n");
+
+
+SIEHE AUCH
+==========
+
+   GiveMiniQuest(L)
+   /secure/questmaster.h, /secure/questmaster.c
+
+Zuletzt geaendert: 2014-Feb-03, Arathorn.
diff --git a/doc/sphinx/man/lfun/HitFunc b/doc/sphinx/man/lfun/HitFunc
new file mode 100644
index 0000000..2fb9b79
--- /dev/null
+++ b/doc/sphinx/man/lfun/HitFunc
@@ -0,0 +1,94 @@
+
+HitFunc()
+*********
+
+
+FUNKTION
+========
+
+   int HitFunc(object enemy);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten, fuer /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   enemy
+        Der Gegner, gegen den die Waffe eingesetzt wird.
+
+
+BESCHREIBUNG
+============
+
+   Die Waffe kann anhand des Gegners enemy entscheiden, ob ein
+   Schadensbonus oder auch ein Schadensmalus wirksam wird. Dieser Bonus
+   wird zu dem normalen Schaden der Waffe hinzuaddiert.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Schadensbonus bzw. der Abschlag.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn durch den Bonus die Genehmigungsgrenzen der Balance
+   ueberschritten werden koennen, muss man seinen Regionsmagier und
+   die Objekt-Balance konsultieren!
+
+   Werte der HitFunc sollten immer ueber ein random() zurueckgegeben
+   werden!
+
+   Diese Funktion sollte die Waffe nicht zerstoeren! Falls ihr im Kampf eine
+   Waffe (ggf. in Abhaengigkeit vom Gegner) zerstoeren wollt, nutzt dazu
+   bitte TakeFlaw().
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, die gegen Orks besonders gut wirkt:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+   #include <class.h>
+
+   create(){
+     if(!clonep(this_object())) {
+         set_next_reset(-1);
+         return;
+     }
+     ::create();
+     /*
+     zig SetProp's, um die Waffe zu konfigurieren
+     HitFunc() ist in der Waffe selbst definiert
+     */
+     SetProp(P_HIT_FUNC, this_object());
+   }
+
+   int HitFunc(object enemy)
+   {
+     /* laesst sich der Gegner als Ork ansprechen? */
+     if (enemy->is_class_member(CL_ORC))
+       return random(10+random(50)); /* Ja => Schaden erhoehen */
+
+     return 0;   /* ansonsten keinen zusaetzlichen Schaden anrichten */
+   }
+
+
+SIEHE AUCH
+==========
+
+   QueryDefend(), /std/weapon.c
+   TakeFlaw()
+
+11.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/Identify b/doc/sphinx/man/lfun/Identify
new file mode 100644
index 0000000..9f55541
--- /dev/null
+++ b/doc/sphinx/man/lfun/Identify
@@ -0,0 +1,43 @@
+
+Identify()
+**********
+
+
+FUNKTION
+========
+
+   void Identify(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/corpse.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das kuerzlich nach langem, hartem Kampf verstorbene Objekt.
+
+
+BESCHREIBUNG
+============
+
+   In dieser Funktion werden Lang- und Kurzbeschreibung der Leiche gesetzt
+   sowie die Verwesung in Gang gesetzt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   /std/corpse.c
+
+Last modified: Wed May 8 10:19:57 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/InFight b/doc/sphinx/man/lfun/InFight
new file mode 100644
index 0000000..73fef03
--- /dev/null
+++ b/doc/sphinx/man/lfun/InFight
@@ -0,0 +1,52 @@
+
+InFight()
+*********
+
+
+FUNKTION
+========
+
+   mixed InFight()
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wurde dazu geschrieben, um herauszufinden,
+   ob sich ein PC/NPC direkt im Kampf befindet. Dazu wird
+   das Array mit den Namen der Feinden des PC/NPCs durch die
+   Funktion environment gefiltert und so festgestellt, ob
+   die Umgebung der beiden Feinde gleich ist.
+
+RUECKGABEWERT:
+   Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt im
+   Moment keine Feinde hat bzw. die nicht im selben Raum sind, oder
+   aber das Feindobjekt, das als erstes im Array steht und anwesend
+   ist.
+
+
+BEISPIEL
+========
+
+   Selbsterklaerend ;)
+
+
+BEMERKUNG
+=========
+
+   InFight() gibt lediglich das Ergebnis von EnemyPresent() zurueck.
+
+
+SIEHE AUCH
+==========
+
+   EnemyPresent(), PresentEnemies()
+   /std/living/combat.c
+
+22.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/InList b/doc/sphinx/man/lfun/InList
new file mode 100644
index 0000000..82de3c9
--- /dev/null
+++ b/doc/sphinx/man/lfun/InList
@@ -0,0 +1,48 @@
+
+InList()
+********
+
+
+FUNKTION
+========
+
+   int InList(object room, int *potionlist, int *knownlist)
+
+
+DEFINIERT IN
+============
+
+   /secure/potionmaster.c
+
+
+ARGUMENTE
+=========
+
+   Implizit: previous_object() - Spielerobjekt, das ZT bekommen soll
+   object room                 - Objekt, welches ZT vergeben will
+   int* potionlist             - Liste der ZTs des Spielers
+   int* knownlist              - Liste der bekannten ZTs des Spielers
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob 'room' einen ZT vergeben darf und gibt zurueck, ob die
+   Nummer dieses ZTs in der 'knownlist' enthalten ist.
+
+
+RUeCKGABEWERT
+=============
+
+   0  Kein aktiver ZT oder nicht in Liste enthalten.
+   1  Aktiver ZT und in Liste.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /room/orakel.c
+   Verwandt:  FindPotion(), RemoveKnownPotion(), AddKnownPotion()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/lfun/InformAlcoholEffect b/doc/sphinx/man/lfun/InformAlcoholEffect
new file mode 100644
index 0000000..4967510
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformAlcoholEffect
@@ -0,0 +1,65 @@
+
+InformAlcoholEffect()
+*********************
+
+
+FUNKTION
+========
+
+   void InformAlcoholEffect(object pl, int msgid, int area)
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten; fuer /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das alkoholisiert ist.
+   msgid
+     Flag fuer die Meldung, die ausgegeben wird.
+   area
+     Aufruf erfolgt in Gilde (0) oder im Environment (1).
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Lebewesen alkoholisiert ist, werden in unregelmaessigen
+   Abstaenden Meldungen an die Umgebung und ans Lebewesen ausgegeben.
+   Gleichzeitig wird die Funktion InformAlcoholEffect in der Gilde
+   und im Environment des Lebewesens aufgerufen.
+
+
+
+   Es gibt vier verschiedene Meldungen (definiert in /sys/health.h):
+   ALC_EFFECT_HICK      (0) : "<Hick>! Oh, Tschuldigung.\n"
+   ALC_EFFECT_RUELPS    (1) : "Du ruelpst.\n"
+   ALC_EFFECT_LOOKDRUNK (2) : "Du fuehlst Dich benommen.\n"
+   ALC_EFFECT_STUMBLE   (3) : "Du stolperst.\n"
+
+
+
+   Wird die Funktion in einem Gildenraum implementiert, so kann man
+   anhand des 3. Parameters unterscheiden, ob die Gilde als Gilde
+   oder als Raum gemeint ist (die Funktion wird je einmal aufgerufen):
+   ALC_EFFECT_AREA_GUILD (0) : der Aufruf betrifft die Gilde,
+   ALC_EFFECT_AREA_ENV   (1) : der Aufruf betrifft die Umgebung.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, /sys/health.h
+
+Last modified: Thu May 23 23:08:00 2002 by Mupfel
diff --git a/doc/sphinx/man/lfun/InformDefend b/doc/sphinx/man/lfun/InformDefend
new file mode 100644
index 0000000..d6a401e
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformDefend
@@ -0,0 +1,81 @@
+
+InformDefend()
+**************
+
+
+FUNKTION
+========
+
+   void InformDefend(object enemy);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   enemy
+     Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+
+
+BESCHREIBUNG
+============
+
+   Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
+   informiert werden, sofern diese Objekte bei dem angegriffenen
+   Lebewesen mittels AddDefender() angemeldet wurden und sich der
+   selben Umgebung befinden.
+   Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
+   andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
+   sind, verteidigen sollen.
+   Bei einem Angriff auf das Lebewesen werden alle Objekte per Aufruf
+   von InformDefend() darueber informiert, wobei der Angreifer als
+   Parameter uebergeben wird.
+   Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
+   wobei der Skill SK_INFORM_DEFEND, sofern vorhanden, aufgerufen wird.
+
+
+BEISPIEL
+========
+
+   Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
+   verteidigen, z.B. beschworene Daemonen:
+     inherit "std/npc";
+     include <properties.h>
+     object owner;
+     void create()
+     { ::create();
+       SetProp(P_NAME,"Daemon");
+       ...
+     }
+   // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
+   // Parameter aufrufen
+     Identify(object caster)
+     { if(!objectp(caster))
+         call_out(#'remove,0);
+       owner=caster;
+       owner->AddDefender(this_object());
+     }
+   // folgende Funktion wird automatisch aufgerufen, wenn der
+   // Beschwoerer angegriffen wird
+     void InformDefend(object enemy)
+     { if(!IsEnemy(enemy)&&enemy!=owner)
+         Kill(enemy);
+     }
+   Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
+   Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
+   diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
+   uebergeben wird.
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), RemoveDefender(), DefendOther(), Kill(), IsEnemy(),
+   P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
+
+Last modified: Thu Jul 29 18:48:45 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/InformRowChange b/doc/sphinx/man/lfun/InformRowChange
new file mode 100644
index 0000000..7e7b804
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformRowChange
@@ -0,0 +1,43 @@
+
+InformRowChange()
+*****************
+
+
+FUNKTION
+========
+
+   varargs void InformRowChange(int from, int to, object caster);
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   from   - Reihe, in die der Spieler vorher war.
+   to     - Reihe in der der Spieler jetzt ist.
+   caster - Der Spieler, falls die Funktion in der Gilde aufgerufen wird.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Spieler und in seiner Gilde aufgerufen,
+   falls sich die aktuelle Kampfreihe in der Teamaufstellung
+   aendert.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+SIEHE AUCH
+==========
+
+   teams
diff --git a/doc/sphinx/man/lfun/InformUnwear b/doc/sphinx/man/lfun/InformUnwear
new file mode 100644
index 0000000..01e9886
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformUnwear
@@ -0,0 +1,48 @@
+
+InformUnwear()
+**************
+
+
+FUNKTION
+========
+
+   protected void InformUnwear(object pl, int silent, int all)
+
+
+DEFINIERT IN
+============
+
+   /std/clothing/wear.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Ruestung ausgezogen hat.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+   all
+     Flag, ob die Ruestung mit "ziehe alles aus"/
+     "ziehe alle ruestungen aus" ausgezogen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
+   ausgezogen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformUnwield(), InformWield(), InformWear()
+
+06.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/InformUnwield b/doc/sphinx/man/lfun/InformUnwield
new file mode 100644
index 0000000..1f10e72
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformUnwield
@@ -0,0 +1,45 @@
+
+InformUnwield()
+***************
+
+
+FUNKTION
+========
+
+   protected void InformUnwield(object pl, int silent)
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Waffe gezueckt hatte.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Waffe erfolgreich
+   weggesteckt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformWield(), InformWear(), InformUnwear()
+
+06.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/InformWear b/doc/sphinx/man/lfun/InformWear
new file mode 100644
index 0000000..6860633
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformWear
@@ -0,0 +1,48 @@
+
+InformWear()
+************
+
+
+FUNKTION
+========
+
+   protected void InformWear(object pl, int silent, int all)
+
+
+DEFINIERT IN
+============
+
+   /std/clothing/wear.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Ruestung angezogen hat.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+   all
+     Flag, ob die Ruestung mit "trage alles"/"trage alle ruestungen"
+     angezogen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
+   angezogen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformUnwield(), InformWield(), InformUnwear()
+
+06.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/InformWield b/doc/sphinx/man/lfun/InformWield
new file mode 100644
index 0000000..0c14c2a
--- /dev/null
+++ b/doc/sphinx/man/lfun/InformWield
@@ -0,0 +1,45 @@
+
+InformWield()
+*************
+
+
+FUNKTION
+========
+
+   protected void InformWield(object pl, int silent)
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das die Waffe gezueckt hat.
+   silent
+     Flag, ob Meldungen unterdruckt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn die Waffe erfolgreich
+   gezueckt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   InformUnwield(), InformWear(), InformUnwear()
+
+06.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/InsertEnemy b/doc/sphinx/man/lfun/InsertEnemy
new file mode 100644
index 0000000..84885db
--- /dev/null
+++ b/doc/sphinx/man/lfun/InsertEnemy
@@ -0,0 +1,53 @@
+
+InsertEnemy()
+*************
+
+gefunden : lfun/InsertEnemy
+
+
+FUNKTION
+========
+
+   int InsertEnemy(object enemy)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   enemy: Das Lebewesen, das angegriffen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Nach Aufruf der Funktion wird das Wesen in die Liste der Feinde
+   aufgenommen.
+   In jedem heart_beat() wird dann ein anwesender Feind
+   angegriffen.
+
+
+RUECKGABEWERT
+=============
+
+   0, falls der Feind nicht existiert, kein Lebewesen ist, ein Geist ist,
+      oder im Gegner P_NO_ATTACK gesetzt ist, oder schon angegegriffen
+      wurde
+   1  sonst
+
+
+SIEHE AUCH
+==========
+
+   Kill, IsEnemy, StopHuntFor, P_NO_ATTACK
+
+
+LETZTE AENDERUNG
+================
+
+26.08.2010, Zesstra
diff --git a/doc/sphinx/man/lfun/InsertEnemyTeam b/doc/sphinx/man/lfun/InsertEnemyTeam
new file mode 100644
index 0000000..b25843d
--- /dev/null
+++ b/doc/sphinx/man/lfun/InsertEnemyTeam
@@ -0,0 +1,66 @@
+
+InsertEnemyTeam()
+*****************
+
+
+FUNKTION
+========
+
+   varargs void InsertEnemyTeam(mixed ens, int rek)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   ens     object Feind oder object *Feinde
+   rek     Wurde von InsertEnemyTeam aufgerufen
+
+
+BESCHREIBUNG
+============
+
+   Alle Teammitglieder des Feindes bzw. die angegebenen Feinde (aber
+   nicht deren Teammitglieder) werden zu Feinden
+    a) des Spielers und aller Teammitglieder, falls rek==0
+    b) des Spielers, falls rek!=0
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   1. Nur wenn Gegner und Teammitglied im gleichen Raum stehen (aber
+      nicht notwendigerweise im gleichen Raum wie der Spieler) werden
+      sie zu Feinden.
+   2. Falls Teammitglied und Gegner beides Spieler sind, werden sie
+      nicht zu Feinden gemacht.
+   3. Ist der Gegner im eigenen Team, so wird nichts gemacht.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/InsertSensitiveObject b/doc/sphinx/man/lfun/InsertSensitiveObject
new file mode 100644
index 0000000..534db19
--- /dev/null
+++ b/doc/sphinx/man/lfun/InsertSensitiveObject
@@ -0,0 +1,68 @@
+
+InsertSensitiveObject()
+***********************
+
+
+FUNKTION
+========
+
+   void InsertSensitiveObject(object ob, mixed *arg)
+
+
+DEFINIERT IN
+============
+
+   /std/container/inventory.c
+   generalizes /std/living/inventory.c
+
+
+BESCHREIBUNG
+============
+
+   Fuegt "ob" in die Benachrichtigungslisten des Containers ein.
+   Wird von thing/moving.c im Ziel-Environment gerufen, wenn
+   P_SENSITIVE gesetzt ist.
+
+
+BEMERKUNGEN
+===========
+
+   Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
+   dann muss man auch InsertSensitiveObject() im Environment
+   auch selbst rufen!
+
+
+BEISPIEL
+========
+
+   // Fackel (inheriting lightsource)
+   // wenn angezuendet, aendert es die Eigenschaften und wird zum
+   // aktiven Objekt - das muss man dem environment() mitteilen
+   static int light(string str) {
+    int i;
+    i=::light(str);
+    if(i && QueryProp(P_LIGHT)>0) {
+     SetProp(P_SENSITIVE,
+      ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
+     if(environment())
+      environment()->InsertSensitiveObject(this_object(),
+                                           QueryProp(P_SENSITIVE));
+    }
+    return i;
+   }
+
+   - falls ein empfindliches Objekt im environment() ist, dann wird
+     in diesem nun eventuell (Treshold) trigger_sensitive_inv()
+     gerufen
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
+
+25.Apr.2001, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/InternalModifyAttack b/doc/sphinx/man/lfun/InternalModifyAttack
new file mode 100644
index 0000000..2d9f3eb
--- /dev/null
+++ b/doc/sphinx/man/lfun/InternalModifyAttack
@@ -0,0 +1,58 @@
+
+InternalModifyAttack()
+**********************
+
+
+InternalModifyAttack(L)
+=======================
+
+
+FUNKTION
+========
+
+   protected void InternalModifyAttack(mapping ainfo)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat
+
+
+ARGUMENTE
+=========
+
+   mapping ainfo              Werte aus der Attack
+
+
+BESCHREIBUNG
+============
+
+   Dient dazu noch Aenderungen am Verhalten der Attack() vornehmen zu
+   koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
+   wirken also direkt in der Attack()!
+   Einfach ueberschreiben (aber ::InternalModifyAttack(&ainfo) nicht
+   vergessen!
+
+   Aufbau von 'ainfo':
+   ([ SI_ENEMY :            object Angreifer,                 (-> Defend)
+      SI_SPELL :           0/1/array Spellparameter,          (-> Defend)
+      P_WEAPON :           - oder Waffe,
+      SI_SKILLDAMAGE_MSG:  string Angriffsmeldungsende an Raum,
+      SI_SKILLDAMAGE_MSG2: string Angriffsmeldungsende an Kaempfende,
+      SI_SKILLDAMAGE:      int Schaden in Zehntel HP (Skills schon drin)
+                                                              (-> Defend),
+      SI_SKILLDAMAGE_TYPE: string/string* Schadenstypen,      (-> Defend)
+      P_WEAPON_TYPE:       string Waffentyp (combat.h),
+      P_WC:                - oder int WC der Waffe/Hand,
+      P_NR_HANDS:          - oder int Hands der Waffe/Hand,
+   ]);
+
+
+SIEHE AUCH
+==========
+
+   InternalModifyDefend(L)
+   Attack(L)
+
+28.03.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/InternalModifyDefend b/doc/sphinx/man/lfun/InternalModifyDefend
new file mode 100644
index 0000000..3015534
--- /dev/null
+++ b/doc/sphinx/man/lfun/InternalModifyDefend
@@ -0,0 +1,50 @@
+
+InternalModifyDefend()
+**********************
+
+
+InternalModifyDefend(L)
+=======================
+
+
+FUNKTION
+========
+
+   protected void InternalModifyDefend(int dam, mixed dt, mixed spell,
+                                    object enemy)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat
+
+
+ARGUMENTE
+=========
+
+   int dam             Staerke des abzuwehrenden Angriffs (in HP/10)
+   string/string* dt   Art(en) des Schadens, der angerichtet werden soll
+   int/mapping spell   0 fuer normale Angriffe (keine Zauber)
+                       1 fuer Zauber (Standardruestungen ignorieren)
+                       mapping fuer mehr Informationen
+   object enemy        der Feind/Schadenverursacher
+
+
+BESCHREIBUNG
+============
+
+   Dient dazu noch Aenderungen am Verhalten der Defend() vornehmen zu
+   koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
+   wirken also direkt in der Defend()!
+   Einfach ueberschreiben, aber ::InternalModifyDefend(&..., &....) nicht
+   vergessen!
+
+
+SIEHE AUCH
+==========
+
+   InternalModifyAttack(L)
+   Defend(L)
+
+28.03.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/IsArmour b/doc/sphinx/man/lfun/IsArmour
new file mode 100644
index 0000000..a7e5daf
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsArmour
@@ -0,0 +1,55 @@
+
+IsArmour()
+**********
+
+
+FUNKTION
+========
+
+   status IsArmour()
+
+
+DEFINIERT IN
+============
+
+   /std/armour/wear.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn ein Ruestung
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn entsprechende Klasse irgendwo geerbt wurden, es
+   also eine Ruestung ist.
+
+
+BEMERKUNGEN
+===========
+
+   Entsprechende Basisklasse ueberschreibt und gibt fuer IsClothing()
+   explizit 0 zurueck.
+
+
+BEISPIEL
+========
+
+   // enthaelt im Gegensatz zu P_ARMOURS auch nichtgetragenen Kram
+   // im Inventory L1
+   object *allarmours =
+     filter_objects(all_inventory(this_player()), "IsArmour")
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsBottle, IsClothing, IsPlayerCorpse, IsRoom, IsUnit
+   Props:    P_ARMOURS
+
+3. Sep 2016, Gloinson
diff --git a/doc/sphinx/man/lfun/IsBottle b/doc/sphinx/man/lfun/IsBottle
new file mode 100644
index 0000000..08f0125
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsBottle
@@ -0,0 +1,42 @@
+
+IsBottle()
+**********
+
+
+IsPlayerCorpse
+==============
+
+
+FUNKTION
+========
+
+   int IsBottle()
+
+
+DEFINIERT IN
+============
+
+   /std/items/flasche.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn Flasche
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn das eine Flasche mit ordentlichem Flaschenverhalten
+   ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsClothing, IsPlayerCorpse, IsRoom, IsUnit
+
+3. Sep 2016, Gloinson
diff --git a/doc/sphinx/man/lfun/IsClothing b/doc/sphinx/man/lfun/IsClothing
new file mode 100644
index 0000000..c51f3f6
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsClothing
@@ -0,0 +1,49 @@
+
+IsClothing()
+************
+
+
+FUNKTION
+========
+
+   status IsClothing()
+
+
+DEFINIERT IN
+============
+
+   /std/clothing.c
+   /std/clothing_container.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn ein Kleidungsstueck
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn entsprechende Klassen irgendwo geerbt wurden, es
+   also ein Kleidungsstueck (oder ein Kleidungsstueck mit Taschen) ist.
+
+
+BEISPIEL
+========
+
+   // enthaelt im Gegensatz zu P_CLOTHING auch nichtgetragenen Kram
+   // im Inventory L1
+   object *allcloth =
+     filter_objects(all_inventory(this_player()), "IsClothing")
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsBottle, IsPlayerCorpse, IsRoom, IsUnit
+   Props:    P_CLOTHING
+
+3. Sep 2016, Gloinson
diff --git a/doc/sphinx/man/lfun/IsEnemy b/doc/sphinx/man/lfun/IsEnemy
new file mode 100644
index 0000000..45fb1fc
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsEnemy
@@ -0,0 +1,50 @@
+
+IsEnemy()
+*********
+
+
+FUNKTION
+========
+
+   int IsEnemy(object wer);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   wer
+     Das Objekt, welches darauf ueberprueft werden soll, ob es
+     derzeit als Gegner bekannt ist.
+
+
+RUeCKGABEWERT
+=============
+
+   Flag: 1 bei Feindschaft, 0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man ueberpruefen, ob das Objekt <wer>, also
+   im Normalfall ein Lebewesen, derzeit als Gegner erkannt wird. Nach
+   einer gewissen Zeit laeuft die Feindschaft automatisch aus, sodass
+   man sich nicht darauf verlassen, dass ein Gegner auch zukuenftig als
+   solchiger erkannt wird. (Diese Zeit betraegt normal 300 Sekunden.)
+   Solch eine Feindschaft kann im uebrigen auch einseitig sein! Mehr
+   dazu findet man in der Dokumentation zu StopHuntFor(), einer
+   Funktion, die Frieden zwischen Gegnern stiften soll.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryEnemies(), StopHuntFor()
+
+Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/IsEqual b/doc/sphinx/man/lfun/IsEqual
new file mode 100644
index 0000000..34d142f
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsEqual
@@ -0,0 +1,58 @@
+
+IsEqual()
+*********
+
+
+FUNKTION
+========
+
+   int IsEqual(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   ob      Das Objekt das geprueft werden soll.
+
+BESCHREIBUNG:
+   Diese Funktion prueft ob zwei Objekte vom gleichen Typ sind, also
+   ob z.B. ob und this_object() beides Muenzen sind oder beides
+   Edelsteine. Bei einem Ergebnis != 0 fasst unit.c diese zwei Objekte
+   automatisch zusammen, wenn ob->IsEqual(this_object()) auch einen
+   Wert != 0 ergibt. Hierbei wird das IsEqual() von beiden beteiligten
+   Objekten gerufen und sie muessen uebereinstimmen, dass sie
+   eigentlich das gleiche Objekt sind. Selbstverstaendlich ist diese
+   Funktion nur im Falle von Unitobjekten sinnvoll.
+
+
+RUeCKGABEWERT
+=============
+
+   0 - this_object() ist nicht vom selben Typ wie ob
+   1 - this_object() ist vom gleichen Typ wie ob
+
+
+BEISPIELE
+=========
+
+   o Ein Unitobjekt das verschiedene Beschreibungen haben kann...
+
+      int IsEqual(object ob)
+      {
+         if (!(int)::IsEqual(ob)) return 0;
+         return (QueryProp(P_SHORT)==ob->QueryProp(P_SHORT));
+      }
+
+
+SIEHE AUCH
+==========
+
+   /std/unit.c
+
+25.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/IsPlayerCorpse b/doc/sphinx/man/lfun/IsPlayerCorpse
new file mode 100644
index 0000000..3cccc05
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsPlayerCorpse
@@ -0,0 +1,38 @@
+
+IsPlayerCorpse()
+****************
+
+
+FUNKTION
+========
+
+   public int IsPlayerCorpse()
+
+
+DEFINIERT IN
+============
+
+   /std/corpse.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn Spielerleiche
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn diese Leiche eine Spielerleiche ist. Es kann auch
+   eine "normale" NPC-Leiche sein.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsBottle, IsClothing, IsRoom, IsUnit
+
+3. Sep 2016, Gloinson
diff --git a/doc/sphinx/man/lfun/IsRoom b/doc/sphinx/man/lfun/IsRoom
new file mode 100644
index 0000000..61ce904
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsRoom
@@ -0,0 +1,38 @@
+
+IsRoom()
+********
+
+
+FUNKTION
+========
+
+   status IsRoom()
+
+
+DEFINIERT IN
+============
+
+   /std/room.c
+
+
+RUeCKGABEWERT
+=============
+
+   1 wenn ein Raum
+   0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Gibt 1 zurueck, wenn /std/room.c irgendwo geerbt wurde, es also ein
+   Raum ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich: living, interactive
+   Aehnlich: IsArmour, IsBottle, IsClothing, IsPlayerCorpse, IsUnit
+
+3. Sep 2016, Gloinson
diff --git a/doc/sphinx/man/lfun/IsTeamLeader b/doc/sphinx/man/lfun/IsTeamLeader
new file mode 100644
index 0000000..1880cc9
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsTeamLeader
@@ -0,0 +1,68 @@
+
+IsTeamLeader()
+**************
+
+
+FUNKTION
+========
+
+   object IsTeamLeader()
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob der Spieler ein Teamleiter ist.
+
+
+RUECKGABEWERT
+=============
+
+   Falls der Spieler Teamleiter ist, wird das Teamobjekt zurueckgegeben,
+   sonst 0.
+
+
+BEISPIEL
+========
+
+   string leader_test(object pl)
+   {
+    ...
+
+    if ( objectp(pl->IsTeamLeader()) )
+     return "Als Leiter eines Teams hast Du grosse Verantwortung zu "
+       "tragen!";
+    else
+     return "Wenn Du mal Leiter eines Teams sein moechtes, solltest "
+       "Du Dir vorher der Verantwortung bewusst werden!";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/IsTeamMove b/doc/sphinx/man/lfun/IsTeamMove
new file mode 100644
index 0000000..584dc13
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsTeamMove
@@ -0,0 +1,60 @@
+
+IsTeamMove()
+************
+
+
+FUNKTION
+========
+
+   object IsTeamMove()
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob momentan die Angriffsbewegung ausgefuehrt wird.
+
+
+RUECKGABEWERT
+=============
+
+   Falls die Angriffsbewegung gerade ausgefuehrt wird, wird das
+   Teamobjekt zurueckgegeben, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Wird intern benoetigt, damit der Begruessungsschlag verzoegert
+   werden kann, bis alle Teammitglieder ihre Angriffsbewegung
+   ausgefuehrt haben.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/IsUnit b/doc/sphinx/man/lfun/IsUnit
new file mode 100644
index 0000000..230f09e
--- /dev/null
+++ b/doc/sphinx/man/lfun/IsUnit
@@ -0,0 +1,42 @@
+
+IsUnit()
+********
+
+
+FUNKTION
+========
+
+   int IsUnit();
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert immer 1 zurueck und zeigt damit an, dass es sich
+   bei diesem Objekt um ein Mengenobjekt handelt.
+
+
+RUeCKGABEWERT
+=============
+
+   1 bei allen Objekten, die /std/unit.c erben, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   /std/unit.c
+
+Last modified: Wed May 8 10:20:19 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/Kill b/doc/sphinx/man/lfun/Kill
new file mode 100644
index 0000000..1125345
--- /dev/null
+++ b/doc/sphinx/man/lfun/Kill
@@ -0,0 +1,43 @@
+
+Kill()
+******
+
+
+FUNKTION
+========
+
+   int Kill(object enemy)
+
+
+ARGUMENTE
+=========
+
+   enemy: Der boese, boese Feind.
+
+
+BESCHREIBUNG
+============
+
+   Nach Aufruf der Funktion wird der Feind in jedem
+   heart_beat() attackiert.
+
+
+RUECKGABEWERT
+=============
+
+         0,  Falls der Feind nicht existiert
+   -1, falls der Feind ein Geist ist
+   -2, falls der Feind P_NO_ATTACK gesetzt hat
+   -3, falls der Angreifer selber P_NO_ATTACK gesetzt hat
+   -4, falls der Feind bereits angegriffen wurde
+         1   falls der Feind erfolgreich als Find registriert wurde.
+
+
+BEMERKUNGEN
+===========
+
+
+SIEHE AUCH
+==========
+
+   InsertEnemy
diff --git a/doc/sphinx/man/lfun/LearnSkill b/doc/sphinx/man/lfun/LearnSkill
new file mode 100644
index 0000000..caab276
--- /dev/null
+++ b/doc/sphinx/man/lfun/LearnSkill
@@ -0,0 +1,53 @@
+
+LearnSkill()
+************
+
+
+FUNKTION
+========
+
+   public varargs void LearnSkill(string sname, int add, int diff)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string sname     der zu lernende Skill
+   string add       Anzahl zu lernender Skillpunkte
+   int diff         Schwierigkeit
+
+
+BESCHREIBUNG
+============
+
+   Die Methode laesst einen interaktiven (eingeloggten) Spieler den
+   Skill 'sname' um 'add' Punkte lernen.
+
+   Dabei wird sichergestellt, dass 'add' den Wert MAX_SKILLEARN nicht
+   ueberschreitet, der Skill nicht verschwindet und fuer uebergeordnete
+   Skills (SI_INHERIT) dieser uebergeordnete Skill auch einen Lerneffekt
+   erfaehrt.
+
+   Wird zB von Learn (spellbook) und SpellSuccess (spellbook) gerufen.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+   Spellbook:      Learn, SpellSuccess
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/Leave b/doc/sphinx/man/lfun/Leave
new file mode 100644
index 0000000..fef5e6f
--- /dev/null
+++ b/doc/sphinx/man/lfun/Leave
@@ -0,0 +1,64 @@
+
+Leave()
+*******
+
+
+FUNKTION
+========
+
+   int Leave();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich der Spieler auf einem Transporter befindet, und dieser sich
+   momentan an einer Haltestelle liegt, verlaesst der Spieler den
+   Transporter.
+
+
+RUeCKGABEWERT
+=============
+
+   Null, wenn der Spieler den Transporter nicht verlassen konnte, sonst
+   ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Es werden keine Tests durchgefuehrt, ob der Transporter ueberhaupt
+   angesprochen wurde! Das muss man selber machen.
+
+
+BEISPIELE
+=========
+
+   int myLeave(string str)
+   {
+     if (str && id(str))
+       return Leave();
+
+     notify_fail("Was willst Du verlassen?\n");
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Enter(), /std/transport.c
+
+Last modified: Wed May 8 10:20:30 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/LimitAbility b/doc/sphinx/man/lfun/LimitAbility
new file mode 100644
index 0000000..6c31eed
--- /dev/null
+++ b/doc/sphinx/man/lfun/LimitAbility
@@ -0,0 +1,67 @@
+
+LimitAbility()
+**************
+
+
+FUNKTION
+========
+
+   protected varargs mixed LimitAbility(mixed sinfo, int diff)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   mixed sinfo      Skill-Informationen
+   int diff         Schwierigkeit
+
+
+BESCHREIBUNG
+============
+
+   Setzt ein Maximum an Skillfertigkeit basierend auf der Schwierigkeit
+   und dem P_LEVEL des Spielers.
+
+
+
+   Folgend eine Kopie (!) der Tabelle aus /std/living/skills:
+   diff|lvl 1:|   3:|   7:| 10:| 13:| 16:| 19:| 22:| 25:| 28:| 31:| 34:|
+   ----+------+-----+-----+----+----+----+----+----+----+----+----+----+
+    -50|   83%|  84%|  86%| 87%| 89%| 90%| 92%| 93%| 95%| 96%| 98%| 99%|
+    -10|   69%|  72%|  74%| 77%| 80%| 82%| 85%| 88%| 91%| 93%| 96%| 99%|
+      0|   66%|  69%|  72%| 75%| 78%| 81%| 84%| 87%| 90%| 93%| 96%| 99%|
+     10|   62%|  65%|  69%| 72%| 75%| 79%| 82%| 85%| 89%| 92%| 95%| 98%|
+     20|   59%|  62%|  66%| 70%| 73%| 77%| 80%| 84%| 88%| 91%| 95%| 98%|
+     30|   55%|  59%|  63%| 67%| 71%| 75%| 79%| 83%| 87%| 90%| 94%| 98%|
+     40|   52%|  56%|  60%| 65%| 69%| 73%| 77%| 81%| 86%| 90%| 94%| 98%|
+     50|   49%|  53%|  58%| 62%| 67%| 71%| 76%| 80%| 85%| 89%| 94%| 98%|
+    100|   32%|  38%|  44%| 50%| 56%| 62%| 68%| 74%| 80%| 86%| 92%| 98%|
+    150|   15%|  22%|  30%| 37%| 45%| 52%| 60%| 67%| 75%| 82%| 90%| 97%|
+    200|   -2%|   7%|  16%| 25%| 34%| 43%| 52%| 61%| 70%| 79%| 88%| 97%|
+    250|  -19%|  -8%|   2%| 12%| 23%| 33%| 44%| 54%| 65%| 75%| 86%| 96%|
+    300|  -36%| -24%| -12%|  0%| 12%| 24%| 36%| 48%| 60%| 72%| 84%| 96%|
+    400|  -70%| -55%| -40%|-25%|-10%|  5%| 20%| 35%| 50%| 65%| 80%| 95%|
+    500| -104%| -86%| -68%|-50%|-32%|-14%|  4%| 22%| 40%| 58%| 76%| 94%|
+    600| -138%|-117%| -96%|-75%|-54%|-33%|-12%|  9%| 30%| 51%| 72%| 93%|
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+   Spellbook:      Learn, SpellSuccess
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/MaterialGroup b/doc/sphinx/man/lfun/MaterialGroup
new file mode 100644
index 0000000..1b4e61e
--- /dev/null
+++ b/doc/sphinx/man/lfun/MaterialGroup
@@ -0,0 +1,64 @@
+
+MaterialGroup()
+***************
+
+
+FUNKTION
+========
+
+   int MaterialGroup(mapping mats, string grp)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   mapping mats - Materialienmapping
+   string grp   - Materialiengruppe
+
+
+BESCHREIBUNG
+============
+
+   Die Materialien im Mapping werden auf Zugehoerigkeit zu der Gruppe
+   untersucht und der Gesamtanteil dieser Materialiengruppe am Mapping
+   in Prozent zurueckgegeben (wenn das Mapping sich auf 100% aufaddiert).
+
+
+RUECKGABEWERT
+=============
+
+   int - prozentualer Anteil der Materialiengruppe -100 ... 100 %
+
+
+BEISPIELE
+=========
+
+   if(MATERIALDB->MaterialGroup(
+              ([MAT_MISC_STONE:40,MAT_AMETHYST:50,MAT_MISC_METAL:10]),
+              MATGROUP_JEWEL)>50)
+    write("Oh ja, darin sind sehr viele Edelsteine!\n");
+
+
+BEMERKUNGEN
+===========
+
+   Wird von /std/thing/description::QueryMaterialGroup() gerufen.
+   Bitte an Objekten auch QueryMaterialGroup() verwenden.
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList()
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/MaterialList b/doc/sphinx/man/lfun/MaterialList
new file mode 100644
index 0000000..228f7a8
--- /dev/null
+++ b/doc/sphinx/man/lfun/MaterialList
@@ -0,0 +1,96 @@
+
+MaterialList()
+**************
+
+
+MaterialList(L)
+===============
+
+
+FUNKTION
+========
+
+   varargs string MaterialList(int casus, mixed idinf)
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   int casus   - der Fall, in dem die Materialien dekliniert werden sollen
+   mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen:
+                 Einzelne Werte:
+                 * x: allgemeine Erkennung -100 ... 100
+                 * who: der Spieler - P_MATERIAL_KNOWLEDGE wird abgefragt
+                 * fun: wird evaluiert
+                 * what, kann folgendes enthalten:
+                   - Eintrag fuer Materialien ([MAT_XXX:-100...100])
+                   - Eintrag fuer Materialiengruppen (dito)
+                   - ([MATERIAL_SYMMETRIC_RECOGNIZABILITY: mixed mg])
+                     * mg ein Array:
+                       ({MATGROUP_X1,int z1, MATGROUP_X2, int z2, ...})
+                       wobei bei Zugehoerigkeit von string mat zu Gruppe
+                       z<n> auf die Faehigkeit addiert, andernfalls davon
+                       subtrahiert wird
+                 Array mit obigen Werten:
+                 - alle Parameter des Arrays sind optional und additiv
+                 - ({int x, object who, mapping what, closure fun})
+
+
+BESCHREIBUNG
+============
+
+   Listet die Materialien auf, aus denen ein Objekt besteht.
+   Dabei haengt die Genauigkeit der Materialerkennung von idinf ab. D.h.
+   je nach den Faehigkeiten/der angegebenen Faehigkeit wird zB Wolfram
+   als "Wolfram" oder nur als "Metall" erkannt.
+
+   Wenn ein Spieler etwas identifiziert, sollte auch TP uebergeben werden,
+   bei NPCs koennte das anders aussehen.
+
+
+RUECKGABEWERT
+=============
+
+   String mit Liste der Materialien.
+
+
+BEMERKUNGEN
+===========
+
+   - es werden nur die Materialien angegeben, nicht die Menge.
+   - ruft ConvMaterialList() an der MATERIALDB
+
+
+BEISPIELE
+=========
+
+   // simpel
+   write("Der Gegenstand besteht aus"+ob->MaterialList(WEM,TP)+".\n")
+   // -> "Der Gegenstand besteht aus Gold, Silber und Rubin.\n"
+
+   // komplexer
+   ob->SetProp(P_MATERIAL, ([P_NITROGLYCERINE:90,P_GUNPOWDER:10]));
+   write("Das enthaelt "+ob->MaterialList(WER,TP)+".\n");
+   // -> "Das enthaelt Schwarzpulver und Nitroglycerin."
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup()
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/MaterialName b/doc/sphinx/man/lfun/MaterialName
new file mode 100644
index 0000000..782a9f7
--- /dev/null
+++ b/doc/sphinx/man/lfun/MaterialName
@@ -0,0 +1,96 @@
+
+MaterialName()
+**************
+
+
+FUNKTION
+========
+
+   varargs string MaterialName(string mat, int casus, mixed idinf)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   string mat  - das zu erkennende Material
+   int casus   - der Fall
+   mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
+                 (siehe "man MaterialList")
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion sucht unter Beruecksichtigung der Erkennungsbe-
+   schraenkungen des Materials und Faehigkeiten des Spielers den
+   Klarnamen des Materials heraus und gibt den zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   string: Materialname oder genereller Name.
+
+
+BEISPIELE
+=========
+
+   // der hier mag alle existierenden Juwelen, auch wenn welche ergaenzt
+   // werden sollten
+   // Parameter: 1. ein Juwel, 2. Casus, 3. 100% Erkennung - ob er sie
+   // beim Empfang dann auch zu 100% erkennt, steht hier nicht!
+   string* likeit;
+   likeit=MATERIALDB->GetGroupMembers(MATGROUP_JEWEL);
+   ...
+   write("Der Alte sagt: Ich mag "+
+         MATERIALDB->MaterialName(likeit[random(sizeof(likeit))], WEN, 100)+
+         ".\n");
+   ...
+
+   // ein weiser schmied:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->queryprop(p_material));
+   i=sizeof(mat);
+
+   write("der schmied sagt: "+ob->name(wer)+" besteht aus ...\n");
+   while(i--) {
+    // den namen erkennen/aussprechen:
+    // materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus metall wird zu +100% gut erkannt ...
+    mname=materialdb->materialname(mat[i], wer,
+           ({5, ([material_symmetric_recognizability:
+                      ({matgroup_metal, 100})])}));
+
+    // und nur metalle analysieren ...
+    if(materialdb->materialgroup(([mat[i]:100]),matgroup_metal)>=100) {
+     int j;
+     string *mgr;
+     mgr=materialdb->getmatmembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=materialdb->groupname(mgr[j]);
+      if(j>0) mgroup+=", ";
+     }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName()
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/MayAddObject b/doc/sphinx/man/lfun/MayAddObject
new file mode 100644
index 0000000..1df06ea
--- /dev/null
+++ b/doc/sphinx/man/lfun/MayAddObject
@@ -0,0 +1,55 @@
+
+MayAddObject()
+**************
+
+
+FUNKTION
+========
+
+   int MayAddObject(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob - Das Object bei dem geprueft werden soll, ob es noch in den
+        Container passt.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt in einen Container bewegt wird, prueft move() ueber
+   diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
+   passt. Dazu uebergibt move() das Objekt das in den Container bewegt
+   werden soll. (In Raeumen ist diese Funktionen ueberschrieben und
+   liefert immer True zurueck.)
+
+
+RUeCKGABEWERT
+=============
+
+   1 - wenn das Objekt noch vom Container aufgenommen werden kann.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   invis-Objekte passen immer in den Container hinein!
+   move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
+   gesetzt war!
+
+
+SIEHE AUCH
+==========
+
+   MayAddWeight(), PreventInsert(), move(), /std/container/restrictions.c
+
+Last modified: 23.09.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/MayAddWeight b/doc/sphinx/man/lfun/MayAddWeight
new file mode 100644
index 0000000..bc8e06d
--- /dev/null
+++ b/doc/sphinx/man/lfun/MayAddWeight
@@ -0,0 +1,72 @@
+
+MayAddWeight()
+**************
+
+
+FUNKTION
+========
+
+   int MayAddWeight(int gewicht);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   gewicht
+        Das zu pruefende Gewicht.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt ein einen Behaelter bewegt wird, prueft move() ueber
+   diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
+   passt. Dazu uebergibt move() dieser Funktion das Gewicht des zu
+   bewegenden Objektes.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn der Behaelter noch ein gewicht Gramm wiegendes Objekt aufnehmen
+   kann, -1 im anderen Fall.
+
+
+BEMERKUNGEN
+===========
+
+   move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
+   gesetzt war!
+
+
+BEISPIELE
+=========
+
+   Die entsprechende Abfrage in /std/thing/moving.c sieht etwa
+   folgendermassen aus:
+
+   int weight;
+
+   ...
+   weight = QueryProp(P_TOTAL_WEIGHT);   // Behaelter? Ja => Gesamtgewicht
+   if (!weight)
+     weight = QueryProp(P_WEIGHT);       // Nein: einfaches Gewicht
+
+   if (ziel->MayAddWeight(weight) == -1) // Passt es noch rein?
+     return ME_TOO_HEAVY;                // Nein, entspr. Fehler zurueckgeben
+
+   ...
+
+
+SIEHE AUCH
+==========
+
+   MayAddObject(), PreventInsert(), move(), /std/container/restrictions.c
+
+Last modified: 23.09.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/Message b/doc/sphinx/man/lfun/Message
new file mode 100644
index 0000000..bee1d46
--- /dev/null
+++ b/doc/sphinx/man/lfun/Message
@@ -0,0 +1,40 @@
+
+Message()
+*********
+
+
+FUNKTION
+========
+
+   varargs int Message(string str, int flag)
+
+
+ARGUMENTE
+=========
+
+   str: Den zu uebermittelnden Text.
+   flag: Beschreibt die Art der Meldung naeher, siehe
+         /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Einem Spieler wird der Text str uebermittelt.
+
+
+RUECKGABEWERT
+=============
+
+    1 bei erfolgreicher Uebermittlung
+    0 wenn der Kobold aktiv war
+   <0 wenn Spieler oder verwendetes Verb ignoriert
+      werden
+
+
+SIEHE AUCH
+==========
+
+   P_IGNORE, TestIgnore()
+
+12. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/ModifyQuestTime b/doc/sphinx/man/lfun/ModifyQuestTime
new file mode 100644
index 0000000..432a362
--- /dev/null
+++ b/doc/sphinx/man/lfun/ModifyQuestTime
@@ -0,0 +1,66 @@
+
+ModifyQuestTime()
+*****************
+
+
+FUNKTION
+========
+
+   int ModifyQuestTime(string questname, int zeit)
+
+
+DEFINIERT IN
+============
+
+   /std/player/quests.c
+
+
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+   zeit
+     Zeitpunkt, zu dem die Quest geloest wurde
+
+
+RUeCKGABEWERT
+=============
+
+    1 : Questzeitpunkt erfolgreich nachgetragen
+   -1 : keine Zugriffsrechte (nur EM+ und der Tagebuchmaster erlaubt)
+   -2 : Questliste im Spielerobjekt ist unerwartet kein Mapping
+   -3 : Spieler hat diese Quest noch nicht bestanden
+   -4 : kein gueltiger Zeitpunkt uebergeben (kein Integer, Wert < -1
+        oder Wert > time()).
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann der Zeitpunkt nachgetragen werden, zu
+   dem ein Spieler eine bestimmte Quest bereits geloest hat.
+   Als Questname wird dazu der Name angegeben, der im Questmaster
+   eingetragen ist. Der Zeitpunkt ist als Integer-Wert im ueblichen
+   time()-Format anzugeben. Uebergibt man -1 als <zeit>, dann wird
+   der Tagebuchmaster erneut versuchen, das Logfile einzulesen,
+   wenn der Spieler das naechste mal sein Abenteuertagebuch liest.
+
+
+HINWEIS
+=======
+
+   Die Funktion mktime() ist nuetzlich, wenn der Zeitpunkt des
+   Bestehens einer Quest manuell rekonstruiert werden muss, der
+   Zeitpunkt aber nur als Datums-/Zeitangabe in Textform vorliegt
+   (etwa aus einem Logfile oder aus der Quest-Feedbackmail).
+
+
+SIEHE AUCH
+==========
+
+   /secure/questmaster.h, /obj/tools/questtool
+   GiveQuest(L)
+   mktime(E), dtime(SE)
+
+Zuletzt geaendert: Mon, 27. Jan. 2015, Arathorn
diff --git a/doc/sphinx/man/lfun/ModifySkill b/doc/sphinx/man/lfun/ModifySkill
new file mode 100644
index 0000000..70c33ba
--- /dev/null
+++ b/doc/sphinx/man/lfun/ModifySkill
@@ -0,0 +1,98 @@
+
+ModifySkill()
+*************
+
+
+FUNKTION
+========
+
+   public varargs void ModifySkill(string sname, mixed val,
+                                   int diff, string gilde)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string sname     der zu aendernde Skill
+   mixed val        Aenderungswert: int fuer SI_SKILLABILITY, sonst mapping
+   int diff         Schwierigkeit (optional: default ist existierendes diff)
+   string gilde     Gilde (optional: default ist eigene Gilde)
+
+
+BESCHREIBUNG
+============
+
+   Mit der Methode kann man die Werte eines Skills/Spells veraendern. Dabei
+   wird ein Skill immer in ein Mapping umgewandelt (Skills/Spells koennen
+   auch einfach nur ihren Skillwert enthalten, diese ist aequivalent zu
+   einem Mapping mit ([SI_SKILLABILITY:<Skillwert>]).
+
+   Ist 'val' ein int, wird dieses als SI_SKILLABILITY gesetzt. Falls der
+   Skill nur ein int war, wird ein 'diff'!=0 als SI_DIFFICULTY gesetzt.
+
+   Ist 'val' ein Mapping, wird dieses zum Skillmapping addiert.
+
+
+
+   Etwaige SI_SKILLABILITY-Aenderungen laufen danach noch durch LimitAbility.
+
+
+BEISPIELE
+=========
+
+   // #1a: Lerne einen Spell/Skill (einer Gilde)
+   caster->ModifySkill("feuerball", MAX_ABILITY, 100, "abenteurer")
+   // #1b: ... oder ...
+   caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100,
+                       "abenteurer")
+   // #1c: ... oder fuer einen Abenteurer ...
+   caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100);
+
+
+
+   // #2: Setze eine Skill-Funktion fuer einen Kampfskill des Klerus
+   this_player()->ModifySkill(FIGHT(WT_CLUB),
+                              ([SI_SKILLFUNC: "Keulenkampf",
+                                SI_DIFFICULTY: 100]),
+                              100, "klerus");
+
+   // #3: Speichere im Skill (also Spieler) eine Option fuer diesen Skill
+   // Vorteil: dieser Eintrag wird dem Spell immer uebergeben
+   caster->ModifySkill("blitz", (["klerus_spell_option": 2]));
+
+   (Code in /doc/beispiele/testobjekte/modifyskillspell_test)
+   // #4: Lerne einen unabhaengigen Spell: ACHTUNG
+   // dieser Spell funktioniert nur solange, wie die Closure existiert,
+   // SI_SKILLABILITY und Spell bleiben jedoch im Spieler gespeichert (!)
+   this_player()->ModifySkill("fnrx",
+     ([SI_CLOSURE:
+         function int (object caster, string skill, mapping sinf) {
+           caster->LearnSkill("fnrx", 1);
+           tell_object(caster, "Peng! Dein Skillwert steigt auf "+
+                               caster->QuerySkillAbility("fnrx")+".\n");
+           return ERFOLG;
+         },
+       SI_SKILLABILITY: 8432]),
+     100,
+     "ANY");
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/ModifySkillAttribute b/doc/sphinx/man/lfun/ModifySkillAttribute
new file mode 100644
index 0000000..1b4fe40
--- /dev/null
+++ b/doc/sphinx/man/lfun/ModifySkillAttribute
@@ -0,0 +1,133 @@
+
+ModifySkillAttribute()
+**********************
+
+
+FUNKTION
+========
+
+   public int ModifySkillAttribute(string atrname, mixed value,
+                                   int duration)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   <atrname>   string
+               Name des zu veraendernden Attributes
+               (Definiert in /sys/living/skill_attributes.h)
+
+   <value>     int oder closure
+               Wert des Modifikators
+               oder
+               eine Closure, welche bei Abfrage des betreffenden SAs
+               abgefragt um den Modifikator zu bestimmen.
+
+   <duration>  int
+               Dauer in Sekunden
+
+
+BESCHREIBUNG
+============
+
+   Aendert temporaer, d.h. fuer eine bestimmte Zeit, ein Skill-Attribut
+   eines Lebewesen, indem ein Modifikator hinzugefuegt wird.
+
+
+
+   Der Standardwert eines SA wird von P_SKILL_ATTRIBUTE_OFFSETS festgelegt
+   oder ist 100, wenn besagte Property leer ist.
+   Alle Modifikatoren (negativ wie positiv) werden addiert und bilden
+   zusammen mit dem Standardwert eine Gesamtsumme.
+   Bei allen SAs ausser SA_QUALITY wird diese Gesamtsumme noch mit
+   SA_QUALITY (welches sich damit auf alle anderen Skill-Attribute
+   auswirkt) multipliziert und das Ergebnis stellt den Endwert des SA dar.
+   (Beispiel s.u.)
+
+   Der Wert eines Modifikators muss zwischen -1000 und 1000 liegen. Der
+   Gesamtwert eines SA kann 10 nicht unter- und 1000 nicht ueberschreiten.
+
+   Falle <value> eine Closure ist, wird diese Closure jedesmal
+   ausgefuehrt, wenn das entsprechende SA abgefragt wird. Der
+   Rueckgabewert dieser Closure stellt dann den Wert des Modifikators
+   dar. Auch dieser muss zwischen -1000 und 1000 liegen. Gibt die
+   Closure keinen int zurueck, wird der Modifikator geloescht.
+
+   Gueltige Skill-Attribute sind momentan:
+   * SA_QUALITY:    Allgemeine Qualitaet: wirkt sich auf alle anderen
+                    Attribute auch aus (multplikativ auf Basis 100)
+   * SA_DAMAGE:     Schaden, den das Lebewesen macht
+   * SA_SPEED:      Geschwindigkeit des Lebewesens (zB Angriffe/Runde)
+   * SA_DURATION:   Spell-/Skilldauer
+   * SA_ENEMY_SAVE: identisch zu SA_SPELL_PENETRATION (OBSOLET!)
+   * SA_SPELL_PENETRATION: Chance des _Casters_, einen Spell durch ein
+                           P_NOMAGIC durchzukriegen.
+   * SA_RANGE:      Reichweite des Lebewesens (eher unbenutzt)
+   * SA_EXTENSION:  "Ausdehnung" bei Gruppen-/Flaechenspells: FindGroupN/P
+
+
+RUECKGABEWERT
+=============
+
+   SA_MOD_OK              wenn der Modifikator gesetzt wurde
+   SA_TOO_MANY_MODS       wenn die max. Anzahl an Mods schon erreicht ist.
+   SA_MOD_TOO_SMALL       wenn der Modifikator zu klein ist
+   SA_MOD_TOO_BIG         wenn der Modifikator zu gross ist
+   SA_MOD_INVALID_ATTR    wenn das gewuenschte SA gar nicht existiert
+   SA_MOD_INVALID_OBJECT  wenn das setzende Objekt ungueltig ist
+   SA_MOD_INVALID_VALUE   wenn der Modifikator ungueltig ist
+   Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt
+   es sich, auf == SA_MOD_OK zu pruefen.
+
+
+BEMERKUNGEN
+===========
+
+   Nachdem ein Objekt, welches Modifikatoren setzte, zerstoert wurde,
+   werden die Modifikatoren spaetestens ungueltig, sobald in dem
+   manipulierten Lebewesen erneut ModifySkillAttribute() gerufen wird!
+   Bei Closures ist der Mod sofort weg.
+
+
+BEISPIELE
+=========
+
+   // sei PL ein Spieler, den mein NPC schwaechen will:
+   PL->ModifySkillAttribute(SA_QUALITY, -75, 13);
+   // Fuer 13s wird SA_QUALITY um 75 reduziert. Dies wirkt sich auf alle
+   // anderen SAs aus! (s. drittes Beispiel)
+
+   // sei PL ein Lebewesen, welchem ich fuer 11s 2 Schlaege pro Kampfrunde
+   // zusaetzlich geben moechte:
+   PL->ModifySkillAttribute(SA_SPEED, 200, 11);
+   // wenn keine weiteres Modifikatoren wirken, hat PL jetzt 3 Schlaege
+   // pro Kampfrunde (Basiswert 100 + 200 == 300 => 3).
+
+   Angenommen, ein Lebewesen hat einen Basiswert von 130 auf SA_SPEED und
+   100 auf SA_QUALITY (P_SKILL_ATTRIBUTE_OFFSETS) und nun 3 Modifikatoren
+   gesetzt: SA_SPEED +100, SA_SPEED -30 und SA_QUALITY von -10:
+   Zunaechst wird SA_QUALITY bestimmt: 100 - 10 = 90  => 0.9
+   Anschliessend wird SA_SPEED bestimmt: 130 + 100 - 30 = 200 => 2
+   Nun wird SA_SPEED noch mit SA_QUALITY multipliziert: 2 * 0.9 = 1.8
+   Das Lebewesen hat nun also im Endeffekt 1.8 Schlaege pro Kampfrunde.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill
+   * Modifikation: QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/More b/doc/sphinx/man/lfun/More
new file mode 100644
index 0000000..c504209
--- /dev/null
+++ b/doc/sphinx/man/lfun/More
@@ -0,0 +1,80 @@
+
+More()
+******
+
+
+FUNKTION
+========
+
+   varargs public void More(string txt, int file,
+                            mixed ctrl, mixed *ctrlargs, int flags);
+
+
+DEFINIERT IN
+============
+
+   /std/util/pager.c
+
+
+ARGUMENTE
+=========
+
+   txt  - entweder ein Text der ausgegeben werden soll, oder ein filename.
+   file - das flag file gibt an, ob es sich bei <txt> um einen text oder
+          einen Filenamen handelt. Bei einem Filenamen wird der Inhalt
+          dieses Files eingelesen und ausgegeben.
+   ctrl - Eine closure, die aufgerufen wird, falls kein <txt> angegeben
+          wurde.
+   ctrlargs - ctrlargs wird als Parameter an ctrl uebergeben.
+   flags - flags wird mit den im Spieler definierten P_MORE_FLAGS
+           kombiniert.
+
+
+BESCHREIBUNG
+============
+
+   More() dient der Ausgabe von Texten an Spieler. Mit Hilfe eines
+   PL->More(txt) oder PL->More(txt, 1) ist es sehr einfach laengere Texte
+   an Spieler auszugeben. Bei der Ausgabe werden die persoenlichen
+   Einstellungen des Spielern (wie z.b. Zeilen pro Bildschirmseite)
+   automatisch beruecksichtigt und der Text dadurch ggf. zerstueckelt
+   und in mehreren Schritten nacheinander angezeigt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Beim einlesen des Files sind die Leserechte des Spieler in dem More()
+   aufgerufen wird von Bedeutung und nicht die Rechte des Objektes das
+   More() aufruft. Spielerobjekte haben im MorgenGrauen jedoch nur sehr
+   eingeschraenkte Leserechte! Ausgegeben werden koennen nur files
+   aus /p/*, /gilden/* und /d/* die _keinen_ code enthalten. Als Code
+   wird hierbei jedes File betrachtet das als vorletztes Zeichen einen .
+   hat (also .c, .h, .o usw.).
+   Will man aus irgendwelchen Gruenden ein File (z.b. aus /players/)
+   ausgeben, so sollte man stattdessen folgendes verwenden:
+   this_player()->More(read_file(filename))
+
+
+BEISPIELE
+=========
+
+   // Ausgabe eines normalen textes...
+   this_player()->More("Einfach nur mal so ein Test...\n");
+
+   // Ausgabe eines kompletten files
+   this_player()->More("/etc/WIZRULES", 1);
+
+
+SIEHE AUCH
+==========
+
+   ----------------------------------------------------------------------------
+
+Last modified: Mon Feb 22 15:09:18 1999 by Padreic
diff --git a/doc/sphinx/man/lfun/NPC_Killed_by b/doc/sphinx/man/lfun/NPC_Killed_by
new file mode 100644
index 0000000..3b8801d
--- /dev/null
+++ b/doc/sphinx/man/lfun/NPC_Killed_by
@@ -0,0 +1,28 @@
+
+NPC_Killed_by()
+***************
+
+
+FUNKTION
+========
+
+   void NPC_Killed_By(object pl)
+
+
+ARGUMENTE
+=========
+
+   Spieler, der einen NPC gekillt hat.
+
+
+BESCHREIBUNG
+============
+
+   Wird in der Gilde des Spielers aufgerufen,
+   wenn dieser einen NPC gekillt hat.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner
diff --git a/doc/sphinx/man/lfun/NewDoor b/doc/sphinx/man/lfun/NewDoor
new file mode 100644
index 0000000..c534be5
--- /dev/null
+++ b/doc/sphinx/man/lfun/NewDoor
@@ -0,0 +1,252 @@
+
+NewDoor()
+*********
+
+
+FUNKTION
+========
+
+   varargs int NewDoor(string|string* cmds, string dest, string|string* ids,
+                       mapping|<int|string|string*>* props);
+
+
+DEFINIERT IN
+============
+
+   /std/room/doors.c
+
+
+ARGUMENTE
+=========
+
+   cmds (string|string*)
+        String oder Array von Strings mit den Befehlen, mit denen man
+        durch die Tuer geht (in der Regel Richtungen wie "norden").
+   dest (string)
+        Pfad des Zielraumes, OHNE ".c", sonst wird eine zweiseitige Tuer
+        (wie sie ueblich ist) nicht als solche erkannt.
+   ids (string|string*)
+        String oder Array von Strings mit den Bezeichnern der Tuer. Kann
+        auch 0 sein; in diesem Fall laesst sich die Tuer nur als "tuer"
+        ansprechen.
+   props (mapping|<int|string|string*>*)
+        Die Eigenschaften der Tuer (s.u.).
+
+
+BESCHREIBUNG
+============
+
+   Es wird eine neue Tuer geschaffen. Die Tuer laesst sich, wenn sie
+   geoeffnet ist, mit den in <cmds> angegebenen Befehlen durchschreiten.
+   Man gelangt dann in den Raum <dest>.
+
+   Die Kommandos werden bei geoeffneter Tuer in die Liste der sichtbaren
+   Ausgaenge eingefuegt.
+
+   In <props> lassen sich Aussehen und Eigenschaften der Tuer festlegen.
+   Historisch ist es ein Array mit Paaren von Schluesseln und Werten, d.h.
+   es kommt immer erst ein Element, welches die Eigenschaft bezeichnet und
+   dann ein Element mit dem Wert dieser Eigenschaft.
+   Moderner ist es, ein Mapping mit den entsprechenden Schluesseln und
+   Werten zu uebergeben. Dies ist auch dringend empfohlen.
+
+   In <doorroom.h> sind dazu folgende Eigenschaften definiert:
+   D_FLAGS
+        DOOR_OPEN
+             Die Tuer ist beim Erzeugen geoeffnet.
+        DOOR_CLOSED
+             Die Tuer ist beim Erzeugen geschlossen.
+        DOOR_NEEDKEY
+             Man benoetigt einen Schluessel zum Oeffnen der Tuer.
+        DOOR_CLOSEKEY
+             Man benoetigt einen Schluessel zum Schliessen der Tuer.
+        DOOR_RESET_CL
+             Die Tuer schliesst sich beim Reset.
+        DOOR_RESET_OP
+             Die Tuer oeffnet sich beim Reset.
+
+   D_LONG
+        Die Langbeschreibung der Tuer.
+        Hier kann ein Mapping eingetragen werden, das als Keys den Tuer-
+        Status hat und die zugehoerige Langbeschreibung dazu. Beispiel:
+        ([ D_STATUS_CLOSED : "Die Tuer ist geschlossen.\n",
+           D_STATUS_OPEN   : "Die Tuer ist offen.\n" ])
+
+
+
+        Default: "Eine Tuer.\n"
+
+   D_SHORT
+        Die Kurzbeschreibung der Tuer. Ein "%s" wird durch "geoeffnet"
+        bzw. "geschlossen" ersetzt.
+
+        Es werden die Kurzbeschreibungen aller im Raum vorhandenen Tueren
+        aneinandergehaengt (es wird jeweils ein Leerzeichen eingeschoben),
+        das Ganze mit break_string() umgebrochen und an P_INT_LONG
+        angehaengt.
+
+        Default: "Eine %se Tuer."
+
+   D_NAME
+        Der Name der Tuer. Dieser Name wird beim Oeffnen und Schliessen
+        der Tuer sowie bei Fehlermeldungen ausgegeben. Man kann wie bei
+        P_NAME einen String oder ein Array von Strings angeben.
+
+        Default: "Tuer"
+
+   D_GENDER
+        Das Geschlecht der Tuer.
+
+        Default: FEMALE
+
+   D_MSGS
+        String oder Array von drei Strings. Diese Strings werden beim
+        Durchschreiten der Tuer an move() als dir bzw. dir, textout und
+        textin uebergeben.
+
+   D_FUNC
+        String mit dem Namen einer Funktion, die im Startraum vor dem
+        Durchschreiten der Tuer aufgerufen werden soll. Diese Funktion
+        kann das Durchschreiten jedoch nicht verhindern!
+
+   D_FUNC2
+        String mit dem Namen einer Funktion, die im Zielraum nach dem
+        Durchschreiten der Tuer aufgerufen werden soll.
+
+   D_TESTFUNC
+        Falls auf den Namen einer Funktion gesetzt, wird diese Funktion
+        vor dem Durchschreiten im Startraum aufgerufen. Wenn sie einen
+        Wert != 0 zurueckliefert, wird die Tuer NICHT durchschritten.
+
+   D_RESET_MSG
+        Meldung, die beim Reset der Tuer ausgegeben wird.
+
+   D_OPEN_WITH_MOVE
+        Tuer oeffnet automatisch bei Eingabe des Befehls zum
+        Hindurchgehen.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn die Tuer ordungsgemaess eingebaut werden konnte, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Zwei Tuerseiten gelten als verschiedene Seiten einer Tuer, wenn als
+   Ziel in Raum A Raum B und in Raum B Raum A angegeben ist. Der Zustand
+   wird abgefragt, wenn der Raum betreten wird (init), wenn die Tuer
+   geoeffnet/geschlossen wird, P_INT_LONG oder P_EXITS abgefragt wird
+   und beim Reset.
+
+   Es sind auch Tueren moeglich, die nur auf einer Seite existieren, oder
+   auch solche, die auf beiden Seiten verschieden aussehen oder gar auf
+   einer Seite nur mit einem Schluessel zu oeffnen sind, auf der anderen
+   jedoch kein Schluessel noetig ist.
+
+   Wer aus irgendeinem Grund den Zustand einer Tuer selber abfragen oder
+   veraendern will, kann dafuer in /obj/doormaster die Funktionen
+   QueryDoorStatus(ziel) bzw. SetDoorStatus(ziel,status) aufrufen.
+
+   *** ACHTUNG ***
+   Es gibt eine Questbelohnung (Phiole aus der Sternenlicht-Quest von
+   Miril), mit der man durch Tueren hindurchschauen kann. Derzeit ist das
+   per default fuer alle Tueren erlaubt. Wenn man das nicht moechte,
+   oder andere Texte ausgeben, als die Phiole normalerweise erzeugt,
+   dann kann man dies durch Nutzung bestimmter Funktionen bzw. Flags
+   erreichen. Zur Dokumentation siehe Manpage zu GetPhiolenInfos().
+
+
+BEISPIELE
+=========
+
+   ** Dies ist eine gewoehnliche Tuer ohne Besonderheiten und ohne
+      Extra-Beschreibung:
+
+      NewDoor("sueden","/players/rochus/room/test1");
+
+   ** Ein Portal:
+
+      NewDoor("norden","/players/rochus/room/test2",
+              "portal",
+              ([ D_NAME:   "Portal",
+                 D_GENDER: NEUTER,
+                 D_SHORT:  "Im Norden siehst Du ein %ses Portal.",
+                 D_LONG:   "Das Portal ist einfach nur gigantisch.\n",
+               ]) );
+
+      Alternativ mit props in alter Arraynotation:
+      NewDoor("norden","/players/rochus/room/test2",
+              "portal",
+              ({ D_NAME,   "Portal",
+                 D_GENDER, NEUTER,
+                 D_SHORT,  "Im Norden siehst Du ein %ses Portal.",
+                 D_LONG,   "Das Portal ist einfach nur gigantisch.\n"
+               }) );
+
+
+
+   ** Tueren mit Bewegungsmeldung:
+
+      NewDoor("norden","/room/see2",
+              ({ D_MSGS,  ({"nach Norden","schwimmt",
+                            "kommt hereingeschwommen"}) }) );
+
+   ** Eine Tuer mit Testfunktion:
+
+      NewDoor("osten","/mein/zielraum",
+              ({ D_TESTFUNC, "blocker_da" }) );
+
+      Die Funktion blocker_da:
+
+      int blocker_da()      // KEINE protected-Funktion! Sie wird sonst NICHT
+      {                     // aufgerufen und ausgewertet!
+        if ( present("mein_fieses_mo\nster",this_object()) )
+         {
+          write("Ein fieses Monster stellt sich Dir in den Weg.\n");
+          return 1;
+         }
+        return 0;           // optional
+      }
+
+   ** Nun noch eine Tuer mit einigen Extras:
+
+      NewDoor("nordwesten","/rooms/kammer",
+              ({"tuer","holztuer"}),
+              ({
+                D_FLAGS,  (DOOR_CLOSED|DOOR_RESET_CL),
+                D_MSGS,   ({"nach Nordwesten","geht",
+                          "kommt durch eine Tuer herein"}),
+                D_SHORT,  "Im Nordwesten siehst Du eine %se Holztuer.",
+                D_LONG,   "Sie trennt den Laden vom dahinterliegenden Raum.\n",
+                D_NAME,   "Holztuer",
+                D_FUNC,   "view",
+                D_FUNC2,  "look_up"
+              }) );
+
+      Im Startraum:
+
+      void view()
+      {
+        write("Der Angestellte wirft Dir einen missbilligenden Blick zu, "
+              "laesst Dich aber passieren.\n");
+      }
+
+      Im Zielraum:
+
+      void look_up()
+      {
+        write("Ein alter Mann schaut kurz zu Dir auf und vertieft sich dann "
+              "wieder in seine Akten.\n");
+      }
+
+
+SIEHE AUCH
+==========
+
+   QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
+08.02.2015, Arathorn
diff --git a/doc/sphinx/man/lfun/NoParaObjects b/doc/sphinx/man/lfun/NoParaObjects
new file mode 100644
index 0000000..4b6013a
--- /dev/null
+++ b/doc/sphinx/man/lfun/NoParaObjects
@@ -0,0 +1,46 @@
+
+NoParaObjects()
+***************
+
+********************** VERALTETE LFUN ****************************
+NoParaObjects()
+
+
+FUNKTION
+========
+
+   int NoParaObjects()
+
+
+DEFINIERT IN
+============
+
+   /std/virtual/v_compiler.c
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn der VC keine Parawelt-Objekte erzeugt,
+   0, wenn er es doch tut.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ist veraltet. QueryValidObject() ist genereller und
+   einfacher zu handhaben. Bitte in Zukunft P_PARA im VC setzen, siehe hierzu
+   die Manpage von QueryValidObject().
+
+   Die Funktion gibt an, ob ein Virtual Compiler auch Parawelt-Objekte
+   erzeugen kann.
+   Wichtig: Entweder dieser Funktion im VC definieren, wenn der VC keine
+   Para-Objekte erzeugen wird oder P_PARA passend setzen!
+
+
+SIEHE AUCH
+==========
+
+   virtual_compiler, P_PARA, QueryValidObject
+
+04.03.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyDestruct b/doc/sphinx/man/lfun/NotifyDestruct
new file mode 100644
index 0000000..31e02e9
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyDestruct
@@ -0,0 +1,66 @@
+
+NotifyDestruct()
+****************
+
+
+FUNKTION
+========
+
+   public int|string NotifyRemove(object zerstoerer);
+
+
+ARGUMENTE
+=========
+
+   zerstoerer
+        Das Objekt, welches destruct() auf dieses Objekt anwendet.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom Master der Mudlib in jedem Objekt gerufen,
+   welches zerstoert wird, um Objekten eine letzte Chance zu geben, sich
+   aufzuraeumen.
+   Wenn ihr diese Funktion selber definiert, achtet bittet darauf, dass sie
+   in keinem Fall Fehler ausloesen sollte, d.h. testet entsprechend
+   gruendlich.
+   Wenn ihr aus /std/ erbt und diese Funktion ueberschreibt,, _muesst_ ihr
+   die geerbte NotifyDestruct() aufrufen, da sonst das Lichtsystem nicht
+   aktualisiert wird.
+
+   Privilegierte Objekte (z.B. Root-Objekte, spezielle Ausnahmen wie der
+   Netztotenraum, Armageddon) koennen die Zerstoerung in letzter Sekunde
+   verhindern, indem sie hier einen Wert != 0 zurueckliefern. Wird ein
+   string zurueckgeliefert, wird dieser die Fehlermeldung des
+   prepare_destruct() im Master sein.
+   Bei nicht-privilegierten Objekten (also fast alle) ist an dieser Stelle
+   _kein_ Abbruch der Zerstoerung moeglich!
+
+
+RUeCKGABEWERT
+=============
+
+   Der Rueckgabewert muss ein string oder ein int sein. Allerdings wird der
+   Master den Rueckgabewert nur fuer privilegierte Objekte auswerten.
+
+
+BEMERKUNGEN
+===========
+
+   Wie gesagt, bitte keine Fehler ausloesen (auch wenn der Master
+   grundsaetzlich damit klar kommt). Speziell ist ein raise_error() zur
+   Verhinderung eines destructs nutzlos.
+   Bitte macht in dieser Funkion nur das, was _unbedingt_ notwendig ist.
+   Wenn jemand ein destruct() anwendet statt ein remove() zu rufen, hat das
+   in der Regel einen Grund (z.B. um buggende remove() zu umgehen). Insb.
+   ist ein save_object() in remove() und NotifyDestruct() vollstaendig
+   ueberfluessig.
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), NotifyInsert(), NotifyRemove()
+
+Last modified: 25.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyInsert b/doc/sphinx/man/lfun/NotifyInsert
new file mode 100644
index 0000000..fa2f2ac
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyInsert
@@ -0,0 +1,47 @@
+
+NotifyInsert()
+**************
+
+
+FUNKTION
+========
+
+   void NotifyInsert(object ob, object oldenv);
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das in den Behaelter eingefuegt wurde.
+   oldenv
+        Das Objekt, aus dem <ob> kam.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt in
+   besagten Behaelter hinein bewegt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer
+   Lebewesen s. bitte. init().
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), PreventInsert(), PreventLeave(), move(), NotifyRemove()
+   exit(), init(), NotifyMove(), PreventMove()
+
+Last modified: 21.05.2012, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyLeave b/doc/sphinx/man/lfun/NotifyLeave
new file mode 100644
index 0000000..fbfc1c3
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyLeave
@@ -0,0 +1,47 @@
+
+NotifyLeave()
+*************
+
+
+FUNKTION
+========
+
+   void NotifyLeave(object ob, object dest);
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das aus dem Behaelter entfernt wurde.
+   dest
+        Das Objekt, in das <ob> bewegt wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt aus
+   besagten Behaelter entfernt wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer
+   Lebewesen s. bitte. exit().
+
+
+SIEHE AUCH
+==========
+
+   NotifyRemove(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
+   exit(), init(), NotifyMove(), PreventMove()
+
+Last modified: 21.05.2012, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyMove b/doc/sphinx/man/lfun/NotifyMove
new file mode 100644
index 0000000..18261f8
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyMove
@@ -0,0 +1,83 @@
+
+NotifyMove()
+************
+
+
+FUNKTION
+========
+
+   protected void NotifyMove(object dest, object oldenv, int method);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/moving.c
+   /std/living/moving.c
+   /std/player/moving.c
+
+
+ARGUMENTE
+=========
+
+   dest
+        Das Ziel des Moves bzw. das jetzt aktuelle Environment
+   oldenv
+        Das alte Environment des Objekts
+   method
+        Die Move-Methode(n), mit der/denen bewegt wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom move() im Objekt gerufen, sobald die Bewegung im
+   wesentlichen abgeschlossen ist. Sie soll einerseits das Objekt ueber eine
+   stattgefundene Bewegung informieren, aber auch einige Dinge erledigen,
+   die bei der Bewegung stattfinden muessen (bei Livings z.B. das Team
+   nachholen).
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion kann ueberschrieben werden, damit das Objekt Bewegungen
+   mitgekommt, ohne das move() selber zu ueberschreiben oder einen Move-Hook
+   zu setzen. Dabei aber bitte unbedingt beachten:
+   Das geerbte NotifyMove() _MUSS IN JEDEM FALL_ mit aufgerufen werden!
+   Solltet ihr das vergessen, werden eure Objekte buggen. ;-)
+   Die Funktion darf nur objektintern verwendet werden. Beim Ueberschreiben
+   das 'protected' nicht vergessen!
+
+
+BEISPIELE
+=========
+
+   Eine Bombe, die in Seherhaustruhen explodiert:
+
+   protected void NotifyMove(object dest, object oldenv, int method) {
+       ::NotifyMove(dest, oldenv, method); // WICHTIG!
+       if (objectp(dest) &&
+           load_name(dest) == "/d/seher/haeuser/truhe") {
+           if (find_call_out("explodiere")==-1)
+               call_out("explodiere",900);
+       }
+       else
+           remove_call_out("explodiere");
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyPlayerDeath b/doc/sphinx/man/lfun/NotifyPlayerDeath
new file mode 100644
index 0000000..96678ea
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyPlayerDeath
@@ -0,0 +1,99 @@
+
+NotifyPlayerDeath()
+*******************
+
+
+FUNKTION
+========
+
+   void NotifyPlayerDeath(object victim,object killer,int lost_exp);
+
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   victim
+     Getoeteter Spieler.
+   killer
+     Objekt, welches den Spieler getoetet hat.
+   lost_exp
+     Erfahrungspunkte, die der Spieler durch den Tod verloren hat.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aus dem Spielerobjekt heraus immer dann
+   aufgerufen, wenn der Spieler stirbt und zwar:
+     1) im Gegner, der den Spieler getoetet hat,
+     2) im Environment des getoeteten Spielers,
+     3) in der Gilde des Spielers,
+     4) in allen Objekten in diesem Environment und
+     5) in allen Objekten (auch innerhalb Containern) im Spieler.
+   Der Gegner wird hierbei nur einmal informiert, also bei letzteren
+   Faellen herausgefiltert, falls noetig!
+   Hauptaufgabe dieser Funktion ist es somit, auf Tode von Spielern zu
+   reagieren oder selbige einfach nur mitzuloggen.
+
+   Zu dem Zeitpunkt des Aufrufs dieser Funktion ist der Spieler noch _nicht_
+   Geist und noch _nicht_ im Todesraum - dies wird im Anschluss an den Aufruf
+   der NotifyPlayerDeath() durchgefuehrt.
+
+
+
+   Aufgerufen wird die Funktion aus '/std/player/life.c' mittels catch() und
+   werden mit limited() auf max. 150k (Gegner, Environment, Gilde) bzw. 80k
+   (alle anderen Objekte) Ticks beschraenkt.
+   Fehler in dieser Funktion haben somit keine negativen Auswirkungen
+   auf das Sterben des Spielers.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Folgendes Beispiel demonstriert beispielsweise, wie man Tode von
+   Spielern mitloggen kann (das Beispiel ist hierbei auf den am
+   haeufigsten auftretenden Fall bezogen, dass nur das toetende Objekt
+   den Tod protokollieren soll):
+
+     void NotifyPlayerDeath(object dead, object killer, int lost_exp)
+     {
+       if ( intp(lost_exp) && objectp(dead) && objectp(killer) &&
+            killer==this_object() )
+         write_file( "/log/patryn/dead", sprintf(
+           "%s - %s von %s getoetet. XP: -%d", ctime(), getuid(dead),
+            killer->name(WEM), lost_exp) );
+     }
+
+   Bitte beachten: write_file() schreibt ohne Groessenbegrenzung in das
+   Logfile. Da dies auf Dauer bzw. in Gebieten mit hoher Log-Aktivitaet
+   zu Logfiles von enormer Groesse fuehren kann, ist die Verwendung
+   von write_file() nicht empfehlenswert. Ausnahmen koennen natuerlich
+   mit dem zustaendigen Regionsmagier abgesprochen werden, z.B. fuer
+   begrenzte Anwendung etwa bei sehr starken, selten besiegten Gegnern.
+
+   Weiterhin ist es empfehlenswert, das toetende Objekt (killer) nicht
+   im NotifyPlayerDeath() zu zestoeren, sondern etwas zeitversetzt,
+   damit nicht etwa im nachfolgenden NotifyPlayerDeath() eines anderen
+   Objektes (s.o. Reihenfolge) killer==0 ist.
+
+
+SIEHE AUCH
+==========
+
+   Defend(), do_damage(), NotifyHpChange(), catch(), write_file(), log_file()
+   P_LAST_DEATH_PROPS
+
+24.03.2012, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyRemove b/doc/sphinx/man/lfun/NotifyRemove
new file mode 100644
index 0000000..2604b77
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyRemove
@@ -0,0 +1,45 @@
+
+NotifyRemove()
+**************
+
+
+FUNKTION
+========
+
+   void NotifyRemove(object ob);
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das aus dem Behaelter entfernt wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im Behaelter aufgerufen, wenn ein Objekt im
+   besagten Behaelter zerstoert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Wird nicht gerufen, wenn ein Spielerobjekt zerstoert wird.
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
+   NotifyMove(), PreventMove(),
+   BecomesNetDead()
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/NotifyTimedAttrModExpired b/doc/sphinx/man/lfun/NotifyTimedAttrModExpired
new file mode 100644
index 0000000..09dc168
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyTimedAttrModExpired
@@ -0,0 +1,38 @@
+
+NotifyTimedAttrModExpired()
+***************************
+
+
+FUNKTION
+========
+
+   void NotifyTimedAttrModExpired(string key)
+
+
+DEFINIERT IN
+============
+
+   Push-Methode in notify-Objekten.
+
+
+ARGUMENTE
+=========
+
+   string key         - der geloeschte Modifier
+
+
+BESCHREIBUNG
+============
+
+   Wird aus dem Lebewesen aus aufgerufen, in dem der entsprechenden
+   Modifier soeben ungueltig geworden ist.
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_ATTRIBUTES, P_TIMED_ATTR_MOD
+   Methoden:   SetTimedAttrModifier(L), DeleteTimedAttrModifier(L),
+               QueryTimedAttrModifier(L)
+
+27. Juli 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/NotifyXMAttrModLimitViolation b/doc/sphinx/man/lfun/NotifyXMAttrModLimitViolation
new file mode 100644
index 0000000..f3c54a4
--- /dev/null
+++ b/doc/sphinx/man/lfun/NotifyXMAttrModLimitViolation
@@ -0,0 +1,35 @@
+
+NotifyXMAttrModLimitViolation()
+*******************************
+
+
+FUNKTION
+========
+
+   void NotifyXMAttrModLimitViolation()
+
+
+DEFINIERT IN
+============
+
+   /std/thing/restrictions.c
+
+
+BESCHREIBUNG
+============
+
+   Wird gerufen wenn die Summe der in P_X_ATTR_MOD oder P_X_ATTR_MOD
+   angegebenen Modifikatoren die Summe aller Modifikatoren im Spieler
+   ueber den zugelassenen Grenzwert hebt und somit nicht mehr in die
+   Berechnung eingeht.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/sphinx/man/lfun/Pacify b/doc/sphinx/man/lfun/Pacify
new file mode 100644
index 0000000..feca7bf
--- /dev/null
+++ b/doc/sphinx/man/lfun/Pacify
@@ -0,0 +1,146 @@
+
+Pacify()
+********
+
+
+FUNKTION
+========
+
+   public int Pacify(object caster)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+BESCHREIBUNG
+============
+
+         Diese Funktion versucht, ein Lebewesen zu befrieden.
+   Will eine Gilde ein Lebewesen befrieden, muss sie hierfuer diese Funktion
+   in dem Lebewesen aufrufen.
+
+   Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in einem
+   Lebewesen realisiert werden.
+
+         Standardmaessig funktioniert die Funktion wie folgt:
+   * Kommt der Versuch vom Spellcaster selbst, ist er immer erfolgreich.
+   * Kommt der Versuch von einem Teamkollegen, ist er immer erfolgreich.
+   * Hat das Lebewesen keine Gegner, ist der Versuch immer erfolglos.
+   In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.
+
+
+
+   In anderen Faellen wird die in P_PEACE_HISTORY fuer die Gilde des Casters
+   abgelegte Zahl erfolgreicher Befriedungen (ANZ), die Intelligenz des
+   Casters (INT_CASTER) und die Intelligenz des Lebenwesens selber (INT_ME)
+   ermittelt.
+   Anschliessend wird eine Wahrscheinlichkeit w ausgerechnet:
+
+
+
+     w = (INT_CASTER + 10 - ANZ*4) / (INT_ME + 10)
+
+
+
+   Hierbei gibt w die Chance auf eine erfolgreiche Befriedung an. Mittels einer
+   Zufallszahl wird bestimmt, ob der aktuelle Versuch erfolgreich ist. Falls
+   ja, wird der Zaehler fuer die Gilde des Casters in P_PEACE_HISTORY erhoeht.
+
+   Je oefter ein Lebewesen als von einer Gilde schon befriedet wurde, desto
+   unwahrscheinlicher, dass es erneut darauf 'hereinfaellt'.
+
+
+BEMERKUNGEN
+===========
+
+   *     Die Funktion kann auch ueberschrieben werden, um ein vom Magier
+     gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen von
+     Befriedungen sollte dabei aber die Ausnahme sein!
+   * Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die Reduktion
+     der Erfolgszaehler. Ueberschreibt man sie ohne das geerbte Pacify()
+     zu nutzen, wird P_PEACE_HISTORY nicht mehr verwaltet.
+
+
+RUECKGABEWERTE
+==============
+
+   1 - das Lebewesen wurde erfolgreich befriedet..
+   0 - der Befriedeversuch ist gescheitert.
+
+
+BEISPIELE
+=========
+
+      Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
+      gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
+      (in Abhaengigkeit von eigener Intelligenz und vergangener erfolgreicher
+       Versuche)
+   INT_ME  Erfolgswahrscheinlichkeiten je nach Anzahl erfolgreicher Versuche
+                1       2       3       4       5       6       7       8
+        0     280     240     200     160     120      80      40       0
+        2  233,33     200  166,67  133,33     100   66,67   33,33       0
+        4     200  171,43  142,86  114,29   85,71   57,14   28,57       0
+        6     175     150     125     100      75      50      25       0
+        8  155,56  133,33  111,11   88,89   66,67   44,44   22,22       0
+       10     140     120     100      80      60      40      20       0
+       12  127,27  109,09   90,91   72,73   54,55   36,36   18,18       0
+       14  116,67     100   83,33   66,67      50   33,33   16,67       0
+       16  107,69   92,31   76,92   61,54   46,15   30,77   15,38       0
+       18     100   85,71   71,43   57,14   42,86   28,57   14,29       0
+       20   93,33      80   66,67   53,33      40   26,67   13,33       0
+       22    87,5      75    62,5      50    37,5      25    12,5       0
+       24   82,35   70,59   58,82   47,06   35,29   23,53   11,76       0
+       26   77,78   66,67   55,56   44,44   33,33   22,22   11,11       0
+       28   73,68   63,16   52,63   42,11   31,58   21,05   10,53       0
+       30      70      60      50      40      30      20      10       0
+       32   66,67   57,14   47,62    38,1   28,57   19,05    9,52       0
+       34   63,64   54,55   45,45   36,36   27,27   18,18    9,09       0
+       35   62,22   53,33   44,44   35,56   26,67   17,78    8,89       0
+       36   60,87   52,17   43,48   34,78   26,09   17,39     8,7       0
+       38   58,33      50   41,67   33,33      25   16,67    8,33       0
+       40      56      48      40      32      24      16       8       0
+       42   53,85   46,15   38,46   30,77   23,08   15,38    7,69       0
+       44   51,85   44,44   37,04   29,63   22,22   14,81    7,41       0
+       46      50   42,86   35,71   28,57   21,43   14,29    7,14       0
+       48   48,28   41,38   34,48   27,59   20,69   13,79     6,9       0
+       50   46,67      40   33,33   26,67      20   13,33    6,67       0
+       52   45,16   38,71   32,26   25,81   19,35    12,9    6,45       0
+       54   43,75    37,5   31,25      25   18,75    12,5    6,25       0
+       56   42,42   36,36    30,3   24,24   18,18   12,12    6,06       0
+       58   41,18   35,29   29,41   23,53   17,65   11,76    5,88       0
+       60      40   34,29   28,57   22,86   17,14   11,43    5,71       0
+       62   38,89   33,33   27,78   22,22   16,67   11,11    5,56       0
+       64   37,84   32,43   27,03   21,62   16,22   10,81    5,41       0
+       66   36,84   31,58   26,32   21,05   15,79   10,53    5,26       0
+       68    35,9   30,77   25,64   20,51   15,38   10,26    5,13       0
+       70      35      30      25      20      15      10       5       0
+       72   34,15   29,27   24,39   19,51   14,63    9,76    4,88       0
+       74   33,33   28,57   23,81   19,05   14,29    9,52    4,76       0
+       76   32,56   27,91   23,26    18,6   13,95     9,3    4,65       0
+       78   31,82   27,27   22,73   18,18   13,64    9,09    4,55       0
+       80   31,11   26,67   22,22   17,78   13,33    8,89    4,44       0
+       82   30,43   26,09   21,74   17,39   13,04     8,7    4,35       0
+       84   29,79   25,53   21,28   17,02   12,77    8,51    4,26       0
+       86   29,17      25   20,83   16,67    12,5    8,33    4,17       0
+       88   28,57   24,49   20,41   16,33   12,24    8,16    4,08       0
+       90      28      24      20      16      12       8       4       0
+       92   27,45   23,53   19,61   15,69   11,76    7,84    3,92       0
+       94   26,92   23,08   19,23   15,38   11,54    7,69    3,85       0
+       96   26,42   22,64   18,87   15,09   11,32    7,55    3,77       0
+       98   25,93   22,22   18,52   14,81   11,11    7,41     3,7       0
+      100   25,45   21,82   18,18   14,55   10,91    7,27    3,64       0
+
+
+SIEHE AUCH
+==========
+
+   P_ACCEPT_PEACE, P_PEACE_HISTORY
+
+
+LETZTE AENDERUNG
+================
+
+07.06.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/PayIn b/doc/sphinx/man/lfun/PayIn
new file mode 100644
index 0000000..35616de
--- /dev/null
+++ b/doc/sphinx/man/lfun/PayIn
@@ -0,0 +1,73 @@
+
+PayIn()
+*******
+
+
+FUNKTION
+========
+
+   varargs void PayIn(int amount, int percent);
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/zentralbank.c
+
+
+ARGUMENTE
+=========
+
+   int amount -       einzuzahlender Betrag
+   int percent -      Bewertungsprozentsatz
+
+
+BESCHREIBUNG
+============
+
+   Es wird Brutto amount Geld in die Bank eingezahlt. Der Prozentsatz legt
+   fest, wieviel tatsaechlich gutgeschrieben wird:
+   Gutschrift = amount*percent/100
+
+   Wird percent nicht angegeben, dann wird der derzeitige Bankbewertungs-
+   massstab fuer Geld angenommen.
+
+
+BEISPIELE
+=========
+
+   #include <bank.h>
+   ...
+   AddCmd("spende",#'action_spende,
+          "Was willst du spenden?");
+   ...
+   int action_spende(string str, extra *o) {
+    int i;
+    if(sscanf("%d muenze",i)==1 && i>0)
+     if(this_player()->QueryMoney(i) && this_player()->AddMoney(-i)) {
+      write("Du spendest "+i+" Muenzen.\n");
+      say(this_player()->Name(WER)+" spendet "+i+" Muenzen.\n");
+      ZENTRALBANK->PayIn(i);
+
+
+
+     } else
+      write("Soviel hast du nicht dabei!\n");
+    ...
+
+
+BEMERKUNGEN
+===========
+
+   Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
+   an anderen Stellen Geld erzeugt wird.
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L), QueryMoney(L)
+   Zentralbank:       WithDraw(L), _query_current_money(L)
+   Sonstiges:         /items/money.c, /sys/bank.h
+
+27. Apr 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/PlayerQuit b/doc/sphinx/man/lfun/PlayerQuit
new file mode 100644
index 0000000..0eb8fbf
--- /dev/null
+++ b/doc/sphinx/man/lfun/PlayerQuit
@@ -0,0 +1,37 @@
+
+PlayerQuit()
+************
+
+
+FUNKTION
+========
+
+   void PlayerQuit(object pl);
+
+
+GERUFEN VON
+===========
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   object pl
+     Spieler, der Verbindung beendet
+
+
+BESCHREIBUNG
+============
+
+   Wird im environment() gerufen, wenn der Spieler das MUD mit "ende"
+   verlaesst.
+
+
+SIEHE AUCH
+==========
+
+   BecomesNetAlive(), BecomesNetDead()
+
+24. Aug 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/PresentEnemies b/doc/sphinx/man/lfun/PresentEnemies
new file mode 100644
index 0000000..12ac650
--- /dev/null
+++ b/doc/sphinx/man/lfun/PresentEnemies
@@ -0,0 +1,95 @@
+
+PresentEnemies()
+****************
+
+
+FUNKTION
+========
+
+   object *PresentEnemies();
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   anwesende Feinde
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert genau die Feinde zurueck, die sich derzeit im
+   selben Raum befinden. Die Feinde unterliegen hierbei noch gewissen
+   Einschraenkungen:
+     (1) Sie duerfen als NPC nicht gestorben sein, das heisst, sie
+         muessen als Objekt noch existieren.
+     (2) Sie duerfen als Spieler nicht gestorben sein, das heisst, sie
+         duerfen keine Geister sein (Property P_GHOST nicht gesetzt).
+     (3) Sie muessen angreifbar sein, das heisst, die Property
+         P_NO_ATTACK darf nicht gesetzt sein.
+   Wird eine dieser Bedingungen verletzt, so wird der Gegner aus der
+   internen Gegnerliste entfernt. Zusaetzlich gilt:
+     Netztote werden nur als Gegner erkannt, wenn keine anderen Gegner
+     zur Verfuegung stehen.
+
+
+BEISPIEL
+========
+
+   Im Folgenden erblinden alle Gegner im Raum:
+     string blindThemAll()
+     { ob*livList;
+       if(!livList=PresentEnemies())
+         return break_string(
+    "Mist...keiner da, der blind werden moechte.",77,
+    Name(WER)+" grummelt: ");
+       for(i=sizeof(livList);i--;)
+       { if(livList[i]->QueryProp(P_BLIND))
+         { tell_object(this_object(),break_string(
+    livList[i]->Name(WER)+" ist schon blind.",77));
+           continue;
+         }
+         tell_object(this_object(),break_string(
+    "Du kratzt "+livList[i]->name(WEM)+" die Augen aus.",77));
+         tell_object(livList[i],break_string(
+    Name(WER)+" kratzt Dir die Augen aus!",77));
+         tell_room(environment(this_object()),break_string(
+    Name(WER)+" kratzt "+livList[i]->name(WEM)
+   +" die Augen aus.",77),({this_object(),livList[i]}));
+         livList[i]->SetProp(P_BLIND,1);
+       }
+       return"";
+     }
+   Aufgerufen wird das ganze am Besten in einem Chat:
+     void create()
+     { ::create();
+       ...
+       SetProp(P_CHAT_CHANCE,10);
+       SetChats(20,({break_string(
+    "Nicht angreifen, sonst wirst Du noch blind!",77,
+    Name(WER)+" bruellt: "),
+                     "@@blindThemAll@@"}));
+     }
+   Natuerlich sind auch noch mehr Funktionen und Meldungen als Chats
+   moeglich: Die zwei im Beispiel sind im Normalfall etwas wenig.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryEnemies(), IsEnemy(), P_GHOST, P_NO_ATTACK,
+   SetChats, P_CHAT_CHANCE
+
+Last modified: Thu May 27 15:01:48 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/PresentEnemyRows b/doc/sphinx/man/lfun/PresentEnemyRows
new file mode 100644
index 0000000..003d6c3
--- /dev/null
+++ b/doc/sphinx/man/lfun/PresentEnemyRows
@@ -0,0 +1,60 @@
+
+PresentEnemyRows()
+******************
+
+
+FUNKTION
+========
+
+   varargs mixed *PresentEnemyRows(object *here)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   Rueckgabewert von PresentEnemies kann uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Ergibt die feindlichen Reihen.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Array, bestehend aus MAX_TEAMROWS Arrays mit den Objekten
+   der anwesenden Feinde.
+
+
+BEMERKUNGEN
+===========
+
+   Jede Reihe ist Summe der entsprechenden Reihen der
+   anwesenden Teams.
+   Feinde, die in keinem Team sind, stehen im ersten Array.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentTeamPosition,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/PresentPosition b/doc/sphinx/man/lfun/PresentPosition
new file mode 100644
index 0000000..c94d129
--- /dev/null
+++ b/doc/sphinx/man/lfun/PresentPosition
@@ -0,0 +1,58 @@
+
+PresentPosition()
+*****************
+
+
+FUNKTION
+========
+
+   varargs int PresentPosition(mixed pmap)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   Rueckgabewert von PresentTeamRows() oder PresentTeamPositions()
+   kann uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Ergibt die Nummer der Reihe, in der der Spieler gerade steht.
+
+
+RUECKGABEWERT
+=============
+
+   Reihennummer im Bereich von 1 bis TEAM_MAXROWS.
+
+
+BEMERKUNGEN
+===========
+
+   Ist ein Spieler in keinem Team, so steht er automatisch in Reihe 1.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentRows, PresentEnemyRows, PresentTeamPosition,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/PresentRows b/doc/sphinx/man/lfun/PresentRows
new file mode 100644
index 0000000..37e3ab8
--- /dev/null
+++ b/doc/sphinx/man/lfun/PresentRows
@@ -0,0 +1,120 @@
+
+PresentRows()
+*************
+
+
+FUNKTION
+========
+
+   mixed *PresentRows(object env);
+
+
+DEFINIERT IN
+============
+
+   TEAM_OBJECT (s. <living/team.h>)
+
+
+ARGUMENTE
+=========
+
+   object env
+       Das Environment des gewuenschten Objektes.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion bekommt man die aktuellen Teamreihen, die im Argument
+   env anwesend sind, des Teams zurueckgegeben. Ist env kein Objekt, so
+   wird environment(this_player()) als solches angenommen.
+
+
+RUECKGABEWERT
+=============
+
+   Es wird ein mixed-Array zurueckgegeben, dabei sind die einzelnen Reihen
+   selbst wiederum Arrays mit den Spielerobjekten.
+
+
+BEISPIEL
+========
+
+   Ein NPC im Kampf laesst eine Feuerwalze auf ein Team los, welche aber nur
+   Spieler in der ersten und zweiten Teamreihe Schaden zufuegen soll.
+
+   void Attack( object enemy )
+   {
+    ...
+
+    object team = enemy->QueryProp(P_TEAM);
+
+    if ( objectp(team) )
+     {
+      mixed teamrows = team->PresentRows(enemy);
+
+//  Inhalt von "teamrows" zu diesem Zeitpunkt:
+
+//  ({ ({[/dwarf:hauweg]}),({}),({[/elf:spitzohr]}),({}),({}),({}) })
+
+//  In der Umgebung von Zwerg Hauweg steht also noch Elf Spitzohr, und
+zwar //  in der dritten Teamreihe (der hat Glueck gehabt). //  Wenn
+dem Team noch mehr Spieler angehoeren, befinden sie sich gerade //
+nicht in der Umgebung (sprich im selben Raum) wie Hauweg.
+
+            foreach ( i : 2 )
+               {
+                  foreach ( object pl : teamrows[i] )
+                     {
+                        tell_object(pl,"Der Feuerteufel laesst eine
+                        Feuerwalze auf Dich "
+                           "und Dein Team los.n");
+
+                        pl->Defend(200+random(200),({DT_FIRE}),([SP_S
+                        HOW_DAMAGE:1]),TO);
+
+                     }
+
+               }
+
+         }
+
+      else
+         {
+            tell_object(enemy,"Der Feuerteufel laesst eine Feuerwalze
+            auf Dich "
+               "los.n");
+
+            enemy->Defend(200+random(200),({DT_FIRE}),([SP_SHOW_DAMAG
+            E:1]),TO);
+
+         }
+
+      ...
+
+   }
+
+
+BEMERKUNG
+=========
+
+   Man beachte, dass das erste Argument (also Argument 0) die erste
+   Teamreihe ist.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentEnemyRows, PresentTeamPosition,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/PresentTeamPositions b/doc/sphinx/man/lfun/PresentTeamPositions
new file mode 100644
index 0000000..3af354b
--- /dev/null
+++ b/doc/sphinx/man/lfun/PresentTeamPositions
@@ -0,0 +1,60 @@
+
+PresentTeamPositions()
+**********************
+
+
+FUNKTION
+========
+
+   varargs mapping PresentTeamPositions(mixed pmap)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   Rueckgabewert von PresentTeamRows() kann uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Ermittelt die Reihennummern aller anwesender Teammitglieder.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Mapping mit den Reihennummern (von 1 bis MAX_TEAMROWS)
+   der anwesenden Teammitglieder.
+
+
+BEMERKUNGEN
+===========
+
+   Kann auch zur Konvertierung anderer Kampfreihen-Arrays in
+   ein Positions-Mapping verwendet werden.
+   Ist der Spieler in keinem Team, so steht er in Reihe 1.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/PresentTeamRows b/doc/sphinx/man/lfun/PresentTeamRows
new file mode 100644
index 0000000..7875918
--- /dev/null
+++ b/doc/sphinx/man/lfun/PresentTeamRows
@@ -0,0 +1,47 @@
+
+PresentTeamRows()
+*****************
+
+
+FUNKTION
+========
+
+   mixed *PresentTeamRows()
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Ergibt die Reihen mit den anwesenden Teammitgliedern.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Array bestehend aus MAX_TEAMROWS Arrays mit den Objekten
+   der anwesenden Teammitglieder.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn der Spieler in keinem Team ist, enthaelt das erste Array
+   nur den Spieler und die anderen Arrays sind leer.
+
+
+SIEHE AUCH
+==========
+
+   teams
diff --git a/doc/sphinx/man/lfun/PreventFollow b/doc/sphinx/man/lfun/PreventFollow
new file mode 100644
index 0000000..c3de6b1
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventFollow
@@ -0,0 +1,72 @@
+
+PreventFollow()
+***************
+
+
+FUNKTION
+========
+
+   int PreventFollow(object dest)
+
+
+ARGUMENTE
+=========
+
+   dest: Zielobjekt, in das der Verfolgte bewegt werden soll.
+
+
+FUNKTION
+========
+
+   In jedem Verfolger, der mit AddPursuer in die Liste der Verfolger
+   eingetragen wurde, wird vor dem Bewegen in das Zielobjekt die Funktion
+   PreventFollow mit dem Zielobjekt als Argument aufgerufen.
+
+
+RUECKGABEWERT
+=============
+
+   0: Verfolger darf in das Zielobjekt folgen
+   1: Verfolger darf in dieses Zielobjekt nicht folgen
+      (Verfolgung bleibt weiterhin aktiv)
+   2: Verfolger darf in dieses Zielobjekt nicht folgen
+      (Verfolgung wird abgebrochen und Verfolger aus der Verfolgerliste
+       ausgetragen)
+
+
+BEMERKUNG
+=========
+
+   Durch PreventFollow kann der raeumliche Bereich, in dem verfolgt werden
+   darf, eingeschraenkt werden.
+
+
+BEISPIELE
+=========
+
+   Man moechte, dass ein NPC auf einer Insel nicht mit dem Spieler in das
+   Boot steigt, um mit dem Spieler zusammen von der Insel herunterzukommen.
+
+   #define PATH(x) ("/d/.../.../mein/pfad/+(x)")
+
+   ...
+
+   int PreventFollow(object boot)
+    {
+     if ( object_name(boot)[0..strlen(PATH("boot"))-1] == PATH("boot") )
+      return 1;
+    }
+
+   Diese Funktions-Definition ist sehr flexibel, denn sie erlaubt sowohl
+   spaetere Pfadanpassung als auch mehrere Boote.
+   Da ueber die Funktion strlen() nur bis zum letzten Buchstaben des
+   angegebenen Strings getestet wird, wird also gleichzeitig auch auf
+   boot[1], boot[2] usw. getestet.
+
+
+SIEHE AUCH
+==========
+
+   "AddPursuer", "RemovePursuer"
+
+Last modified: Tue Jun 10 13:59:30 2003 by Gabylon
diff --git a/doc/sphinx/man/lfun/PreventInsert b/doc/sphinx/man/lfun/PreventInsert
new file mode 100644
index 0000000..3635142
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventInsert
@@ -0,0 +1,71 @@
+
+PreventInsert()
+***************
+
+
+FUNKTION
+========
+
+   int PreventInsert(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das in den Behaelter eingefuegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
+   aufnehmen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
+   zeigt an, dass das Objekt nicht aufgenommen werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
+   aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+BEISPIELE
+=========
+
+   Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
+   man wie folgt vorgehen:
+
+   varargs int PreventInsert(object ob)
+   {
+     // Wenn es Geld ist, erheben wir sofort Einspruch
+     if (ob->id("geld"))
+       return 1;
+     // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
+     else
+       return ::PreventInsert(ob);
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
+Last modified: Sat Dec 18 02:00:00 1999 by Tiamak
diff --git a/doc/sphinx/man/lfun/PreventInsertLiving b/doc/sphinx/man/lfun/PreventInsertLiving
new file mode 100644
index 0000000..fbde29f
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventInsertLiving
@@ -0,0 +1,56 @@
+
+PreventInsertLiving()
+*********************
+
+
+FUNKTION
+========
+
+   int PreventInsertLiving(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Living, das in den Behaelter eingefuegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
+   aufnehmen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Living aufgenommen werden kann; ein Wert groesser als 0
+   zeigt an, dass das Living nicht aufgenommen werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsertLiving()
+   zwar aufgerufen, das Living wird jedoch auf jeden Fall in den Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+SIEHE AUCH
+==========
+
+   PreventLeaveLiving(), /std/container/restrictions.c,
+   PreventMove(), PreventInsert(), PreventLeave(),
+   NotifyMove(), NotifyInsert(), NotifyLeave(), NotifyRemove(),
+   move(), init(), exit(),
+   InitAttack(), ExitAttack()
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/PreventLeave b/doc/sphinx/man/lfun/PreventLeave
new file mode 100644
index 0000000..24c33d2
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventLeave
@@ -0,0 +1,57 @@
+
+PreventLeave()
+**************
+
+
+FUNKTION
+========
+
+   int PreventLeave(object ob, mixed dest);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das aus dem Behaelter genommen werden soll.
+   dest
+        Das Ziel in das das Objekt ob bewegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
+   sich bewegen lassen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt bewegt werden kann; ein Wert groesser als 0
+   zeigt an, dass das Objekt nicht bewegt werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
+   aufgerufen, das Objekt wird jedoch auf jeden Fall aus dem Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+SIEHE AUCH
+==========
+
+   PreventInsert(), NotifyInsert(), NotifyLeave(),
+   MayAddWeight(), move(), /std/container/restrictions.c
+   PreventLeaveLiving(), PreventInsertLiving(), PreventMove(),
+   NotifyMove(), MayAddObject(), NotifyRemove()
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/PreventLeaveLiving b/doc/sphinx/man/lfun/PreventLeaveLiving
new file mode 100644
index 0000000..20a5844
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventLeaveLiving
@@ -0,0 +1,58 @@
+
+PreventLeaveLiving()
+********************
+
+
+FUNKTION
+========
+
+   int PreventLeaveLiving(object ob, mixed dest);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Living, das aus dem Behaelter genommen werden soll.
+   dest
+        Das Ziel in das das Living ob bewegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
+   sich bewegen lassen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Living bewegt werden kann; ein Wert groesser als 0
+   zeigt an, dass das Living nicht bewegt werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
+   aufgerufen, das Living wird jedoch auf jeden Fall aus dem Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+SIEHE AUCH
+==========
+
+   PreventInsertLiving(), /std/container/restrictions.c
+   PreventMove(), PreventLeave(), PreventInsert(),
+   NotifyMove(), NotifyLeave(), NotifyInsert(), NotifyRemove(),
+   move(), exit(), init(),
+   InitAttack, ExitAttack()
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/PreventMove b/doc/sphinx/man/lfun/PreventMove
new file mode 100644
index 0000000..920372d
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventMove
@@ -0,0 +1,109 @@
+
+PreventMove()
+*************
+
+
+PreventInsert()
+===============
+
+
+FUNKTION
+========
+
+   protected int PreventMove(object dest, object oldenv, int method);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/moving.c
+   /std/living/moving.c
+   /std/player/moving.c
+
+
+ARGUMENTE
+=========
+
+   dest
+        Das Ziel des Moves
+   oldenv
+        Das (Noch-)Environment des Objekts
+   method
+        Die Move-Methode(n), mit der/denen bewegt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion prueft ein Objekt, ob es von 'oldenv' nach 'dest'
+   bewegt werden mag. Dabei wird 'method' beruecksichtigt (z.B. schaltet
+   M_NOCHECK die meisten Pruefungen ab).
+   Bei Gegenstaenden wird z.B. P_NODROP, P_NOGET, das Gewicht, ob das Ziel
+   das Objekt aufnehmen will (MayAddWeight(), PreventInsert) oder auch
+   PreventLeave() geprueft.
+   Bei Lebewesen wird z.B. P_NO_TPORT in 'dest' und 'oldenv' und
+   PreventLeaveLiving/PreventInsertLiving() ausgewertet.
+   Bei Spielern wird auch noch getestet, ob method M_GO oder M_TPORT
+   enthaelt und ob das Ziel nur von Testspielern betreten werden kann.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt bewegt werden darf.
+   Wenn es nicht bewegt werden darf, sind als Rueckgabewerte die in
+   /sys/moving.h definierten Move-Fehlerwerte zulaessig (s. move()). Sollte
+   hier ein ungueltiger Fehlerwert zurueckgegeben werden, wird das move()
+   ebenfalls abgebrochen und ME_DONT_WANT_TO_BE_MOVED zurueckgeben.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion kann ueberschrieben, um feinere Kontrolle ueber die
+   Bewegungen des Objekt zu haben. Dabei aber bitte einige Dinge beachten:
+   1. Denkt daran, ggf. M_NOCHECK zu beruecksichtigen und und eure
+   Pruefungen nur zu machen, wenn es nicht in method vorkommt.
+   2. GANZ WICHTIG: Wenn ihr mit euren Pruefungen fertig sein und das Objekt
+   bewegt werden duerfte, die geerbten Pruefungen noch testen, also _IMMER_
+   das geerbte PreventMove() noch aufrufen und dessen Wert
+   zurueckgeben/beruecksichtigen, da sonst Pruefungen des Gewichts etc.
+   nicht funktionieren oder bei Lebewesen die Prevent*() im Environment
+   nicht gerufen werden!
+   3. Die Funktion ist nur objektintern zu verwenden, Call-Other von aussen
+   sind nicht moeglich, beim Ueberschreiben 'protected' nicht vergessen.
+   4. Nochmal: Geerbtes PreventMove() _NICHT VERGESSEN_!
+
+
+BEISPIELE
+=========
+
+   Ein Objekt, was nur im Sternenlicht aufgenommen werden kann (warum
+   auch immer):
+
+   protected int PreventMove(object dest, object oldenv, int method) {
+     if ( (method & M_NOCHECK) ) {
+         // wenn mit M_NOCHECK bewegt, ist das Sternenlicht egal, nur
+         // geerbtes PreventMove() beruecksichten:
+         return ::PreventMove(dest, oldenv, method);
+     }
+     else if ( method & M_GET) {
+         // wenn es aufgenommen werden soll: nach Sternenlicht im Raum
+         // gucken:
+         if (objectp(dest) &&
+             (dest->QueryProp(P_LIGHT_TYPE) != LT_STARS))
+             return ME_CANT_BE_TAKEN;
+     }
+     // Fall-through:
+     return ::PreventMove(dest, oldenv, method);
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/Query b/doc/sphinx/man/lfun/Query
new file mode 100644
index 0000000..27c2d9e
--- /dev/null
+++ b/doc/sphinx/man/lfun/Query
@@ -0,0 +1,108 @@
+
+Query()
+*******
+
+
+FUNKTION
+========
+
+   public varargs mixed Query(string name, int Type);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+
+
+ARGUMENTE
+=========
+
+   string name - Property, deren Wert(e) ausgelesen werden
+   int type  - Art der gewuenschten Information.
+
+
+BESCHREIBUNG
+============
+
+   Der Wert einer der inneren Eigenschaften der Property 'name' wird
+   zurueckgegeben.  'Type' ist dabei einer der in /sys/thing/properties.h
+   und folgend aufgelisteten F_XXX-Werte:
+
+   F_VALUE (==0, Default)
+       Unter Umgehung einer eventuell vorhandenen Abfragemethode oder
+       _query_'name'() wird der Datenwert der Property 'name'
+       zurueckgegeben.
+   F_MODE
+        Die internen Flags der Property werden zurueckgegeben.Dies koennen
+        (logisch mit & verknuepft) sein:
+        SAVE  - Property soll bei save_object() gespeichert werden
+        PROTECTED - Objekt selbst/EM/Root kann Property manipulieren
+        SECURED  - wie PROTECTED, das Flag kann aber nicht
+                   zurueckgesetzt werden (immer SECURED)
+        NOSETMETHOD - niemand kann Property manipulieren
+                      (auch kein F_SET_METHOD oder _set_'name'())
+   F_SET_METHOD
+        Ein eventuell fuer die Property eingetragene F_SET_METHOD wird
+        zurueckgegeben.
+        (_set_'name'()-Methoden werden so nicht aufgefuehrt!)
+   F_QUERY_METHOD
+        Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird
+        zurueckgegeben.
+        (_query_'name'()-Methoden werden so nicht aufgefuehrt!)
+
+
+RUeCKGABEWERT
+=============
+
+   Die gewuenschte Eigenschaft, abhaengig von 'Type'.
+
+
+BEMERKUNGEN
+===========
+
+   - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer
+     Property verwendet werden, da sowohl F_QUERY_METHOD als auch
+     libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis
+     fuer so veraenderte Propertys undefiniert ist
+   - _set_'name'() und _query_'name'() sind alte Propertymethoden und
+     sollten nicht in normalen Objekten benutzt werden ->
+     F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen
+   - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
+     sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
+     diese geht nur 'static' (in diesem Fall empfohlen).
+
+
+BEISPIELE
+=========
+
+   // Auslesen des Wertes unter Umgehung einer Abfragemethode
+   Query(P_XYZ, F_VALUE);
+
+   // Auslesen der Flags erfaehrt man mit:
+   Query(P_XYZ, F_MODE);
+
+   // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen,
+   // pruefen vorher auf Existenz:
+   if(this_player()->Query(P_FROG, F_QUERY_METHOD) {
+    write(break_string(
+     "Ich kann dich nicht weiter vor Froschsein schuetzen!",
+     "Der Magier winkt ab: ", 78));
+    say(break_string(
+     "Ich kann dich nicht weiter vor Froschsein schuetzen!",
+     "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78));
+   } else {
+    this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD);
+    ...
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: SetProp(L), QueryProp(L), Set(L)
+   Generell:  SetProperties(L), QueryProperties(L)
+   Konzept:  properties, /std/thing/properties.c
+   Sonstiges:  P_AUTOLOADOBJ
+
+28.03.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/QueryAllDoors b/doc/sphinx/man/lfun/QueryAllDoors
new file mode 100644
index 0000000..cdf7140
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryAllDoors
@@ -0,0 +1,52 @@
+
+QueryAllDoors()
+***************
+
+
+FUNKTION
+========
+
+   mapping QueryAllDoors();
+
+
+DEFINIERT IN
+============
+
+   /obj/doormaster.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Es werden die Zustaende ALLER Tueren im MorgenGrauen ermittelt.
+
+
+RUECKGABEWERT
+=============
+
+    Ein Mapping mit den Zustaenden aller Tueren im MorgenGrauen. Als
+    Schluessel dienen die Dateinamen der Start- und Zielraeume in
+    lexikographischer (alphabetischer) Reihenfolge, getrennt durch ":",
+    der Wert des Keys ist der aktuelle Zustand dieser Tuer, z.B.:
+
+   ([ "/d/inseln/schiffe/jolle:/d/inseln/schiffe/jolle/masch" : -1,
+      ...
+    ]);
+
+    Es gibt also eine Tuer zwischen Jolle und Maschinenraum, die
+    momenten geschlossen ist (-1 = D_STATUS_CLOSED).
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), P_DOOR_INFOS
+
+Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/sphinx/man/lfun/QueryArmourByType b/doc/sphinx/man/lfun/QueryArmourByType
new file mode 100644
index 0000000..20fcab5
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryArmourByType
@@ -0,0 +1,91 @@
+
+QueryArmourByType()
+*******************
+
+
+QyeryArmourByType()
+===================
+
+
+FUNKTION
+========
+
+   mixed QueryArmourByType(string type)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   string type
+      Typ der Ruestung aus /sys/combat.h, auf die getestet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Abfrage, ob das Lebewesen eine Ruestung des angegebenen Typs traegt.
+
+   Zurueckgegeben wird je nach Tragestatus und <type>:
+   * 0, falls das Lebewesen die gesuchte Ruestungsart nicht traegt
+   * im Erfolgsfall das Ruestungsobjekt
+   * falls <type> AT_MISC ist:
+     * ({}), wenn es keine AT_MISC-Ruestung traegt
+     * ein Array von AT_MISC-Ruestungen
+   * falls <type> 0 ist: ein Mapping, das diese Informationen mit dem
+     Ruestungstypen als Schluessel enthaelt:
+     ([AT_MISC: ({[object], ...}),
+       AT_...: <object>,
+       ... ])
+
+
+BEMERKUNG
+=========
+
+   Ist <type> AT_MISC, so wird auf jeden Fall ein Array zurueckgegeben!
+
+
+BEISPIELE
+=========
+
+   Wir wollen wissen, ob this_player() Handschuhe traegt:
+
+   if (objectp(this_player()->QueryArmourByType(AT_GLOVE)))
+     ...
+
+
+   Wir bauen einen Tuersteher, der auf AT_MISC-Kleidung achtet:
+
+   if (sizeof(this_player()->QueryArmourByType(AT_MISC)) > 3) {
+     if(this_player()->ReceiveMsg(
+          "Du darfst nicht passieren, Du hast zuviele "
+          "unpassende Dinge an!",
+          MT_LISTEN|MSG_DONT_STORE, MA_TELL,
+          "Der Waechter teilt Dir mit: ")<MSG_DELIVERED && // taub?
+        this_player()->ReceiveMsg(
+          "Der Waechter haelt dich auf.", MT_LOOK)<MSG_DELIVERED) // blind?
+          this_player()->ReceiveMsg(
+            "Jemand haelt dich auf.", MT_FEEL); // nu aber!
+     // Aufhalten!
+   } else this_player()->ReceiveMsg(
+            "Du darfst passieren, viel Spass im Casino!",
+            MT_LISTEN|MSG_DONT_STORE, MA_TELL,
+            "Der Waechter teilt Dir mit: ");
+     // im Erfolgsfall ist es uns egal, wenn es der Spieler nicht
+     // liest: er wird dann eben "wortlos" durchgelassen
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
+   UnwearClothing(), FilterClothing(),
+   P_ARMOUR_TYPE, P_CLOTHING, P_ARMOURS,
+   /std/living/combat.c
+
+02.02.2016, Gloinson
diff --git a/doc/sphinx/man/lfun/QueryArrived b/doc/sphinx/man/lfun/QueryArrived
new file mode 100644
index 0000000..9c4de60
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryArrived
@@ -0,0 +1,45 @@
+
+QueryArrived()
+**************
+
+
+FUNKTION
+========
+
+   mixed QueryArrived();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt, ob sich der Transporter momentan an einer
+   Haltestelle befindet (und bestiegen oder verlassen werden kann) oder ob
+   er unterwegs ist.
+
+
+RUeCKGABEWERT
+=============
+
+   Null, wenn der Transporter unterwegs ist. Liegt der Transporter an
+   einer Haltestelle, so wird der mit AddRoute als name uebergebene String
+   zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), /std/transport.c
+
+Last modified: Wed May 8 10:21:47 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryArticle b/doc/sphinx/man/lfun/QueryArticle
new file mode 100644
index 0000000..3be5ecc
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryArticle
@@ -0,0 +1,118 @@
+
+QueryArticle()
+**************
+
+
+FUNKTION
+========
+
+   varargs string QueryArticle(int casus, int dem, int force);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   casus
+        Der Fall, in dem der Artikel gewuenscht wird.
+        (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
+
+   dem
+        Wird ein bestimmter oder ein unbestimmter Artikel verlangt?
+           + dem = 0: Unbestimmter Artikel!
+           + dem = 1: Bestimmter Artikel!
+           + dem = 2: Finde selbst heraus, welcher Artikel passt!
+
+   force
+        Falls ungleich Null, so wird auf jeden Fall ein Artikel
+        zurueckgegeben, trotz P_ARTICLE == 0.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
+   zurueck, der in den passenden Fall dekliniert wird.
+
+   Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
+   Situationen, in denen mehrere gleichnamige Objekte im selben Environment
+   sind. Man 'nimmt' dann zB nicht "den Stamm" sondern "einen Stamm".
+
+   Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn,
+   man uebergibt in dem Argument 'force' einen Wert ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt!
+
+   Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt
+   ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem
+   QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks
+   im Raum herumstehen und man eine Nachricht wie:
+     "Du haust den Ork." und folgend
+     "[Des|Eines] Orks Nase schwillt an."
+   haben moechte:
+     "Du haust "+ork->name(WEN, 1)+". "
+     ork->Name(WESSEN, 2)+" Nase schwillt an."
+
+
+RUeCKGABEWERT
+=============
+
+   * gewuenschter Artikel als String plus Leerzeichen (!) ODER
+   * Leerstring
+
+
+BEISPIELE
+=========
+
+   // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt."
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * nur den bestimmten Artikel
+   send_room(this_object(),
+     pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+
+     capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.",
+     MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+
+   // "X gibt dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * nur den bestimmten Artikel
+   send_room(this_object(),
+     pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+
+     capitalize(pl2->QueryPronoun(WER))+" prueft "+
+     ob->QueryArticle(WEN, 1, 1)+"...",
+     MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+
+   // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines "
+   // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das "
+   // "von dir?"
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende
+   //   (zB Kokosnuesse) auf dem Boden liegen ...
+   ob->move(environment(), M_NOCHECK); // vorher machen!
+   pl->ReceiveMsg(
+     "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+
+     ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+
+     capitalize(ob->QueryPronoun(WER))+" sieht blutig ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  SuggestArticle(), query_c_article(), query_g_suffix()
+   Sonstiges: QueryOwn(), QueryDu(),
+              QueryPronoun(), QueryPossPronoun()
+              DeclAdj()
+              name()
+
+9. Jun 2016, Gloinson
diff --git a/doc/sphinx/man/lfun/QueryAttribute b/doc/sphinx/man/lfun/QueryAttribute
new file mode 100644
index 0000000..978c6c0
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryAttribute
@@ -0,0 +1,59 @@
+
+QueryAttribute()
+****************
+
+
+FUNKTION
+========
+
+   int QueryAttribute(string attr)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - interessierendes Gesamtattribut
+
+
+BESCHREIBUNG
+============
+
+   Das Attribut samt seiner Offsets (Modifier) wird zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Wert des Attributes, bei Spielern nicht groesser als 30.
+
+
+BEISPIELE
+=========
+
+   if (this_player()->QueryAttribute(A_CON) > 20)
+     write("Du schaffst es den Berg hoch. Aber nur muehsam.\n");
+
+
+BENERKUNGEN
+===========
+
+   Wenn es um Attributabfragen geht, bitte diese Methode verwenden!
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/QueryAttributeOffset b/doc/sphinx/man/lfun/QueryAttributeOffset
new file mode 100644
index 0000000..b16d10c
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryAttributeOffset
@@ -0,0 +1,47 @@
+
+QueryAttributeOffset()
+**********************
+
+
+FUNKTION
+========
+
+   int QueryAttributeOffset(string attr)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       -       gesuchter AttributOffset
+
+
+BESCHREIBUNG
+============
+
+   Die Offsets des Attributs (inklusive Modifier) werden zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   if(this_player()->QueryAttributeOffset(A_STR)<0)
+    write("Du bist geschwaecht.\n");
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/QueryBuyFact b/doc/sphinx/man/lfun/QueryBuyFact
new file mode 100644
index 0000000..3f728c3
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryBuyFact
@@ -0,0 +1,41 @@
+
+QueryBuyFact()
+**************
+
+
+FUNKTION
+========
+
+   int QueryBuyFact();
+
+
+DEFINIERT IN
+============
+
+   /std/laden.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Gibt den mit SetBuyFact() gesetzten Faktor zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Einkaufspreismultiplikator.
+
+
+SIEHE AUCH
+==========
+
+   SetBuyFact(), /std/laden.c
+
+Last modified: Wed May 8 10:21:57 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryBuyValue b/doc/sphinx/man/lfun/QueryBuyValue
new file mode 100644
index 0000000..cecc57c
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryBuyValue
@@ -0,0 +1,56 @@
+
+QueryBuyValue()
+***************
+
+QueryBuyValue()
+
+Funktion
+   static varargs int QueryBuyValue(mixed ob, object client)
+
+Definiert in
+   /std/room/shop
+
+Argumente
+   ob
+      Das zu kaufende Objekt (String oder object). Im Normalfall
+      handelt es sich um ein Objekt. Ausnahme sind Gegenstaende, die
+      mit AddFixedObject() hinzugefuegt wurden.
+
+   client
+      Der Kaeufer.
+
+Beschreibung
+   Ermittelt den Preis, den <client> fuer <ob> zu bezahlen hat.
+
+Rueckgabewert
+   Der Preis als Integer.
+
+Beispiel
+   Ein Haendler, der Spielern die ihm geholfen haben einen Rabatt von
+   10% gewaehrt
+
+   object >>*<<helpers; protected void create() {
+
+      ::create(); helpers=({}); ...
+
+   }
+
+   static varargs int QueryBuyValue(mixed ob, object client) {
+
+      if(member(helpers,client)!=-1) {
+
+         return ::QueryBuyValue(ob,client)*9/10;
+
+      } return ::QueryBuyValue(ob,client);
+
+   }
+
+Siehe auch:
+   Funktionen:
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryStorageRoom(), QueryBuyFact(), sell_obj(), buy_obj()
+
+   Properties:
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+Letzte Aenderung: 21.05.2014, Bugfix
diff --git a/doc/sphinx/man/lfun/QueryCoinsPerUnits b/doc/sphinx/man/lfun/QueryCoinsPerUnits
new file mode 100644
index 0000000..7261758
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryCoinsPerUnits
@@ -0,0 +1,57 @@
+
+QueryCoinsPerUnits()
+********************
+
+
+QueryCoinsPerUnit()
+===================
+
+
+FUNKTION
+========
+
+   int *QueryCoinsPerUnits();
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert das Wertverhaeltnis fuer die Einheiten zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von zwei Zahlen. Die erste Zahl ist der Wert der in der
+   zweiten Zahl angegebenen Einheiten.
+
+
+BEISPIELE
+=========
+
+   Steht im Unit-Objekt folgende Wertzuweisung:
+
+     SetCoinsPerUnits(7,2);
+
+   so liefert QueryCoinsPerUnits() als Ergebnis ({7, 2}).
+
+
+SIEHE AUCH
+==========
+
+   SetCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnit(),
+   /std/unit.c
+
+Last modified: Wed May 8 10:22:02 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryDamage b/doc/sphinx/man/lfun/QueryDamage
new file mode 100644
index 0000000..812636a
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryDamage
@@ -0,0 +1,61 @@
+
+QueryDamage()
+*************
+
+
+FUNKTION
+========
+
+   int QueryDamage(object enemy);
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   enemy
+        Der Gegner, gegen den die Waffe eingesetzt wird.
+
+
+BESCHREIBUNG
+============
+
+   Dies ist die zentrale Funktion der Waffe. Sie wird in jeder Kampfrunde
+   von Attack() aus aufgerufen und gibt den Schaden zurueck, den der
+   Gegner abwehren muss.
+
+   In den Schaden gehen sowohl die Staerke der Waffe als auch die Staerke
+   des Traegers der Waffe ein.
+
+   Wurde eine HitFunc() angegeben, so wird diese mit den gleichen
+   Parametern wie QueryDamage() aufgerufen.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Staerke des Schlages fuer diese Kampfrunde. Sie ermittelt sich als
+   Zufallszahl zwischen 0 und einem Wert, der sich aus der Staerke der
+   Waffe und der Staerke ihres Traegers ergibt. Das Ergebnis des
+   HitFunc()-Aufrufs wird zu dieser Zahl hinzugezaehlt.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine HitFunc() verwendet, darf der Rueckgabewert
+   insgesamt nicht groesser als 200 werden. Im Zweifelsfall sollte
+   man sich mit der zustaendigen Balance besprechen!
+
+
+SIEHE AUCH
+==========
+
+   HitFunc(), Attack(), /std/weapon.c, grenzwerte
+
+Last modified: Fre Feb 16.02.01 12:58:00 von Tilly
diff --git a/doc/sphinx/man/lfun/QueryDefend b/doc/sphinx/man/lfun/QueryDefend
new file mode 100644
index 0000000..fa3fb11
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryDefend
@@ -0,0 +1,68 @@
+
+QueryDefend()
+*************
+
+
+FUNKTION
+========
+
+   int QueryDefend(string|string* dtyp, int|mapping spell, object enemy);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   dtyp  - Schadenstypen der Angriffsart
+   spell - 0       bei konventionellem Angriff,
+           != 0    bei Angriff mit einem nichtphysischen Spell,
+           mapping bei genaueren Angaben zur Wirkung
+   enemy - Der angreifende Gegner
+
+
+BESCHREIBUNG
+============
+
+   Dies ist die zentrale Funktion einer Ruestung. Sie wird in jeder
+   Kampfrunde aus /std/living/combat::Defend() fuer jede Ruestung aufgerufen,
+   die der Spieler angezogen hat.
+
+   Der Schutzwert von P_AC entfaltet seine Wirkung nur bei konventionellen
+   Angriffen:
+   * wenn 'spell' 0 ist (bei Aufruf aus der Defend heraus ausgeschlossen)
+   * wenn 'spell' ein Mapping mit dem Flag SP_PHYSICAL_ATTACK != 0 UND
+                  in 'dtyp' mindestens ein physischer Schaden enthalten ist
+
+
+RUeCKGABEWERT
+=============
+
+   Die Ruestungsstaerke in dieser Kampfrunde. Sie ermittelt sich als
+   Zufallszahl zwischen 0 und P_AC, zuzueglich des Ergebnisses des
+   DefendFunc()-Aufrufs.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
+   insgesamt nicht groesser werden als der fuer den Ruestungstyp
+   maximal zulaessige!
+
+
+SIEHE AUCH
+==========
+
+   Ruestungen: P_ARMOUR_TYPE, P_NR_HANDS, P_ARMOURS, P_WORN
+   Schutz:     P_AC, Defend(), DefendFunc
+   Sonstiges:  P_EQUIP_TIME, P_LAST_USE, P_DAM_TYPE
+   Verwandt:   QueryArmourByType(L), P_WEAPON, FilterClothing(),
+               FilterArmours()
+   Resistenz:  P_RESISTANCE_STRENGTHS, CheckResistance(L)
+
+28.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/lfun/QueryDisguise b/doc/sphinx/man/lfun/QueryDisguise
new file mode 100644
index 0000000..3cf4b8d
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryDisguise
@@ -0,0 +1,51 @@
+
+QueryDisguise()
+***************
+
+
+FUNKTION
+========
+
+   mixed QueryDisguise();
+
+
+DEFINIERT IN
+============
+
+   ???
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob der Spieler durch einen Shadow (meistens der Tarnhelm)
+   'manipuliert' ist.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn dies nicht der Fall ist, ansonsten die Beschreibung des Shadow
+   vom Typ string.
+
+
+BEMERKUNGEN
+===========
+
+   In Waffen / Ruestungen u.ae. die P_RESTRICTIONS gesetzt haben,
+   eruebrigt sich eine Abfrage auf QueryDisguise(), da dies bereits im
+   restriction_checker erledigt wird.
+
+
+SIEHE AUCH
+==========
+
+   P_RESTRICTIONS, /std/restriction_checker.c
+
+Last modified: Mon Mar 26 14:48:20 2001 von Tilly
diff --git a/doc/sphinx/man/lfun/QueryDoorKey b/doc/sphinx/man/lfun/QueryDoorKey
new file mode 100644
index 0000000..f606c52
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryDoorKey
@@ -0,0 +1,71 @@
+
+QueryDoorKey()
+**************
+
+
+FUNKTION
+========
+
+   mixed QueryDoorKey();
+
+
+DEFINIERT IN
+============
+
+   versch. Schluesseln
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in einem Schluessel aufgerufen, wenn man mit diesem
+   eine Tuer auf- oder abschliessen will. Anhand des Rueckgabewertes wird
+   entschieden, ob der Schluessel passt oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   String oder Array von Strings der Raumpfade, deren gemeinsame Tueren
+   sich mit diesem Schluessel auf- bzw. abschliessen lassen. Die Keys sind
+   dabei die Raumpfade, getrennt durch ein ":". Dabei muessen die Pfade
+   in lexikographischer (alphabetischer) Reihenfolge sortiert sein:
+
+   "<name_raum_1>:<name_raum_2>"
+
+
+BEISPIELE
+=========
+
+   Ein Schluessel, mit dem sich eine einzige Tuer oeffnen laesst (falls es
+   jemals eine Tuer zwischen Karate- und Abenteurergilde geben sollte...):
+
+   string QueryDoorKey()
+   {
+     return "/gilden/abenteurer:/gilden/karate";
+   }
+
+   Ein Schluessel, der in mehreren Tueren passt:
+
+   string* QueryDoorKey()
+   {
+     return ({ "/gilden/abenteurer:/players/wargon/workroom",
+               "/gilden/abenteurer:/gilden/karate",
+               "/players/jof/workroom:/players/wargon/workroom"
+            });
+   }
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorStatus(), SetDoorStatus(), P_DOOR_INFOS,
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
+Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/sphinx/man/lfun/QueryDoorStatus b/doc/sphinx/man/lfun/QueryDoorStatus
new file mode 100644
index 0000000..74f7034
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryDoorStatus
@@ -0,0 +1,48 @@
+
+QueryDoorStatus()
+*****************
+
+
+FUNKTION
+========
+
+   int QueryDoorStatus(string dest);
+
+
+DEFINIERT IN
+============
+
+   /obj/doormaster.c
+
+
+ARGUMENTE
+=========
+
+   <dest> = Zielraum der Tuer.
+
+
+BESCHREIBUNG
+============
+
+   Es wird der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt,
+   ermittelt.
+
+
+RUeCKGABEWERT
+=============
+
+   0 bei nicht vorhandene Tuer, ansonsten einer der folgenden Zustaende (aus
+     <doorroom.h>):
+
+     D_STATUS_LOCKED - Tuer abgeschlossen
+     D_STATUS_CLOSED - Tuer geschlossen
+     D_STATUS_OPEN   - Tuer geoeffnet
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), SetDoorStatus(), P_DOOR_INFOS,
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
+Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/sphinx/man/lfun/QueryDu b/doc/sphinx/man/lfun/QueryDu
new file mode 100644
index 0000000..aa184cc
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryDu
@@ -0,0 +1,61 @@
+
+QueryDu()
+*********
+
+
+FUNKTION
+========
+
+   varargs string QueryDu(int casus, int gender, int anzahl);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   casus
+        Der Fall fuer die Anrede.
+
+   gender
+        Das Geschlecht des anzuredenden Objektes.
+
+   anzahl
+        Ist nur ein Objekt anzusprechen oder mehrere?
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die dem Anlass entsprechende Anrede fuer ein
+   Objekt.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String mit der Anrede.
+
+
+BEISPIELE
+=========
+
+   printf("%s setzt %s auf den Boden.\n",
+         capitalize(QueryDu(WER, TP->QueryProp(P_GENDER), SINGULAR),
+         QueryDu(WEN, TP->QueryProp(P_GENDER), SINGULAR));
+
+   (In den meisten Faellen kann man hier auch direkt "Du" und "dich"
+   einsetzen.)
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+   QueryPossPronoun(), QueryOwn(), QueryPronoun()
+
+Last modified: Wed May 8 10:22:27 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryEnemies b/doc/sphinx/man/lfun/QueryEnemies
new file mode 100644
index 0000000..fc00c0e
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryEnemies
@@ -0,0 +1,54 @@
+
+QueryEnemies()
+**************
+
+
+FUNKTION
+========
+
+   mixed QueryEnemies();
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit Array aus bekannten Gegnern und Array aus Zeiten
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion enthaelt ein Array, das zwei Elemente enthaelt, die
+   wiederum Arrays sind:
+     1. Array: Die bekannten Gegner als Objektpointer.
+     2. Array: Die zugeordneten Zeiten, wie lange ein Gegner noch als
+               solcher bekannt sein soll.
+   Im Normalfall wird ein Gegner dann bekannt, wenn man gezielt
+   jemanden atackiert, oder wenn man einen Angriff abwehren muss.
+   Dann wird der Gegner intern abgespeichert, und es wird eine Zeit
+   gesetzt, die dann runtergezaehlt wird. Ist die Zeit auf 0, so wird
+   der Gegner wieder automatisch ausgetragen.
+   (Standardmaessig betraegt diese Zeit 600 Sekunden (300 Heartbeats).)
+   Man kann sich die Gegner auch in Form eines Mappings zurueckgeben
+   lassen. Dies erreicht man mittels der Funktion GetEnemies().
+
+
+SIEHE AUCH
+==========
+
+   Kill(), Attack(), Defend(), do_my_heart_beat(), PresentEnemies(),
+   GetEnemies(), SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
+
+29.12.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/QueryFlaw b/doc/sphinx/man/lfun/QueryFlaw
new file mode 100644
index 0000000..e12a119
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryFlaw
@@ -0,0 +1,63 @@
+
+QueryFlaw()
+***********
+
+
+FUNKTION
+========
+
+   mixed *QueryFlaw();
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c,
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   QueryFlaw() liefert Informationen ueber den Grad der Abnutzung der
+   Waffe bzw. Ruestung. Der Zustand wird als Array mit der Zahl der
+   TakeFlaw()-Aufrufe und dem Datum des ersten TakeFlaw()-Aufrufs
+   zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array mit drei Elementen:
+     1. der aktuelle Zaehlerstand
+     2. Zeit der ersten Benutzung
+     3. die Zeit der ersten Benutzung als String
+
+
+BEISPIELE
+=========
+
+   Den aktuellen Abnutzungsgrad einer Ruestung kann man sich wie folgt
+   anzeigen lassen:
+
+   mixed *flaw;
+
+   flaw = ruestung->QueryFlaw();
+
+   printf("Zaehlerstand: %d, erster Schlag: %s\n", flaw[0], flaw[2]);
+   // oder analog:
+   printf("Zaehlerstand: %d, erster Schlag: %s\n", flaw[0], dtime(flaw[1]));
+
+
+SIEHE AUCH
+==========
+
+   TakeFlaw(), /std/armour/combat.c, /std/weapon/combat.c
+
+Last modified: Wed May 8 10:22:32 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryGenderString b/doc/sphinx/man/lfun/QueryGenderString
new file mode 100644
index 0000000..845758f
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryGenderString
@@ -0,0 +1,42 @@
+
+QueryGenderString()
+*******************
+
+
+FUNKTION
+========
+
+   string QueryGenderString();
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein String mit dem Geschlecht des Objektes zurueckgegeben
+   ("maennlich", "weiblich", "saechlich").
+
+
+RUeCKGABEWERT
+=============
+
+   Der String mit dem Geschlecht.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+
+Last modified: Wed May 8 10:23:00 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryGramsPerUnits b/doc/sphinx/man/lfun/QueryGramsPerUnits
new file mode 100644
index 0000000..62d5580
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryGramsPerUnits
@@ -0,0 +1,53 @@
+
+QueryGramsPerUnits()
+********************
+
+
+FUNKTION
+========
+
+   int *QueryGramsPerUnits();
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert das Gewichtsverhaeltnis fuer die Einheiten zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von zwei Zahlen. Die erste Zahl ist das Gewicht der in der
+   zweiten Zahl angegebenen Einheiten.
+
+
+BEISPIELE
+=========
+
+   Steht im Unit-Objekt folgende Gewichtszuweisung:
+
+     SetGramsPerUnits(4,1);
+
+   so liefert QueryGramsPerUnits() als Ergebnis ({4, 1}).
+
+
+SIEHE AUCH
+==========
+
+   SetCoinsPerUnits(), QueryCoinsPerUnits() SetGramsPerUnits(),
+   /std/unit.c
+
+Last modified: Wed May 8 10:22:39 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryGroupedKeys b/doc/sphinx/man/lfun/QueryGroupedKeys
new file mode 100644
index 0000000..5101e8d
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryGroupedKeys
@@ -0,0 +1,44 @@
+
+QueryGroupedKeys()
+******************
+
+
+FUNKTION
+========
+
+   mixed *QueryGroupedKeys()
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Array mit Arrays mit den Schluesselwoertern der Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Array mit mehreren Arrays zurueck, die
+   die Schluesselwoerter der Quests enthalten. Dabei enthaelt das
+   erste Array die Schluesselwoerter der Quests der ersten Gruppe etc.
+   Das letzte Array enthaelt die Gruppe der optionalen Quests.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h
+
+Zuletzt geaendert: Son, 19. Nov 2000, 13:22:15 von Zook.
diff --git a/doc/sphinx/man/lfun/QueryGuest b/doc/sphinx/man/lfun/QueryGuest
new file mode 100644
index 0000000..61cfb04
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryGuest
@@ -0,0 +1,54 @@
+
+QueryGuest()
+************
+
+
+FUNKTION
+========
+
+   int QueryGuest();
+
+
+DEFINIERT IN
+============
+
+   /std/player/base
+
+
+BESCHREIBUNG
+============
+
+   Auf der uid basierende Hilfsfunktion, um Gaeste zu identifizieren.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn Spielerobjekt ein Gast ist; 0 sonst
+
+
+BEISPIELE
+=========
+
+   if(this_interactive()->QueryGuest())
+   {
+     (this_interactive()->ReceiveMsg(
+        "Wir bedienen hier nur ordentliche Charaktere.",
+        MT_LISTEN, MA_SAY,
+        "Der Wirt sagt: ") != MSG_SENSE_BLOCK) ||
+     (this_interactive()->ReceiveMsg(
+        "Der Wirt gestikuliert dich hinaus.",
+        MT_LOOK, MA_LOOK) != MSG_SENSE_BLOCK) ||
+     (this_interactive()->ReceiveMsg(
+        "Irgendwer stupst dich an. Du sollst wohl gehen.",
+        MT_FEEL, MA_FEEL));
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   getuid()
+
+14. Mai 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/QueryHealInfo b/doc/sphinx/man/lfun/QueryHealInfo
new file mode 100644
index 0000000..cc42fbc
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryHealInfo
@@ -0,0 +1,45 @@
+
+QueryHealInfo()
+***************
+
+
+FUNKTION
+========
+
+   string QueryHealInfo();
+
+
+DEFINIERT IN
+============
+
+   /std/corpse.c,
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   QueryHealInfo() liefert einen Standardtext zurueck, der grob Auskunft
+   darueber gibt, welche Auswirkungen das Essen einer Leiche haette.
+   Diese Info kann z.B. von Gilden verwendet werden, die P_HEAL (s.dort)
+   einer Leiche nicht selbst auswerten wollen.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein nicht umbrochener String. Fuer Zeilenumbrueche kann derjenige,
+   der den Text ausliest, selbst sorgen.
+
+
+SIEHE AUCH
+==========
+
+   /std/corpse.c, P_HEAL
+
+Last modified: 31.03.2008, Arathorn
diff --git a/doc/sphinx/man/lfun/QueryMaterial b/doc/sphinx/man/lfun/QueryMaterial
new file mode 100644
index 0000000..94a5367
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryMaterial
@@ -0,0 +1,62 @@
+
+QueryMaterial()
+***************
+
+
+QueryMaterial(L)
+================
+
+
+FUNKTION
+========
+
+   int QueryMaterial(string mat)
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   string mat -       Material, auf das getestet werden soll
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob ein Gegenstand aus dem angegebenen Material besteht
+   und gibt dessen Anteil zurueck.
+   Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+
+
+RUECKGABEWERT
+=============
+
+   Anteil in Prozent.
+
+
+BEISPIELE
+=========
+
+   if(ob->QueryMaterial(MAT_IVORY)<=0)
+     write("Daraus kannst Du keine Billiardkugeln schnitzen!\n");
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/QueryMaterialGroup b/doc/sphinx/man/lfun/QueryMaterialGroup
new file mode 100644
index 0000000..3365f73
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryMaterialGroup
@@ -0,0 +1,81 @@
+
+QueryMaterialGroup()
+********************
+
+
+QueryMaterialGroup(L)
+=====================
+
+
+FUNKTION
+========
+
+   int QueryMaterialGroup(string grp)
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   string grp         - Materialgruppe, auf die getestet werden soll
+
+
+BESCHREIBUNG
+============
+
+   Liefert eine Angabe, zu welchem Anteil das Objekt aus Materialien
+   dieser Gruppe besteht.
+   Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+
+
+RUECKGABEWERT
+=============
+
+   Anteil in Prozent.
+
+
+BEMERKUNGEN
+===========
+
+   Ruft MaterialGroup() an der MATERIALDB.
+
+
+BEISPIELE
+=========
+
+   // kann man damit was anfangen?
+   if(ob->QueryMaterialGroup(MATGROUP_METAL)<50)
+     write("Der Schmied sagt: Daraus kann ich kein Schwert fertigen.\n");
+
+   // verbrennt das Ding?
+   if(ob->QueryMaterialGroup(MATGROUP_INFLAMMABLE)>50) {
+     write(ob->Name(WER)+" geht in Flammen auf.\n");
+     ob->remove();
+   }
+
+   // wie magnetisch ist es denn?
+   if(ob->QueryMaterialGroup(MATGROUP_MAGNETIC)>50)
+    write(break_string(
+     ob->Name(WER)+" flutscht Dir aus der Hand und bleibt am Magneten "
+                   "kleben!",78));
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/QueryMaxQP b/doc/sphinx/man/lfun/QueryMaxQP
new file mode 100644
index 0000000..7b5aba2
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryMaxQP
@@ -0,0 +1,45 @@
+
+QueryMaxQP()
+************
+
+
+FUNKTION
+========
+
+   int QueryMaxQP()
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte der Pflichtquests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der als Pflichtquest
+   eingetragenen Abenteuer zurueck. Pflichtquest bedeutet entweder,
+   dass die Quest zwingend geloest werden muss oder dass sie zu
+   der 80%-Regel gehoert.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryOptQP, QueryTotalQP
+
+Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
diff --git a/doc/sphinx/man/lfun/QueryMoney b/doc/sphinx/man/lfun/QueryMoney
new file mode 100644
index 0000000..775a65c
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryMoney
@@ -0,0 +1,49 @@
+
+QueryMoney()
+************
+
+
+FUNKTION
+========
+
+   int QueryMoney()
+
+
+DEFINIERT IN
+============
+
+   /std/player/moneyhandler.c
+
+
+BESCHREIBUNG
+============
+
+   Testet, ob ein Spieler, Objekt, Raum oder Npc ueber eine definierte
+   Geldmenge verfuegt, oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   Geldmenge im Besitz des abgefragten Spielers
+
+
+BEISPIELE
+=========
+
+   int i;
+   i=50+random(10);
+   if(!this_player()->QueryMoney())
+     write("Du besitzt keine Muenzen!\n");
+   if(this_player()->QueryMoney() < i)
+     write("Du besitzt nicht die erforderlichen "+i+" Muenzen.\n");
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L)
+   Zentralbank:       PayIn(L), WithDraw(L), _query_current_money(L)
+   Sonstiges:         /items/money.c
+
+Last modified: Die,  1. Aug 2000, 16:39:06 by Tilly
diff --git a/doc/sphinx/man/lfun/QueryName b/doc/sphinx/man/lfun/QueryName
new file mode 100644
index 0000000..71e65e3
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryName
@@ -0,0 +1,43 @@
+
+QueryName()
+***********
+
+
+FUNKTION
+========
+
+   mixed QueryName();
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   DIESE FUNKTION SOLLTE NICHT MEHR BENUTZT WERDEN!
+   Es wird der Inhalt der Property P_NAME zuueckgegeben; dies laesst sich
+   jedoch genau so gut mit QueryProp(P_NAME) bewerkstelligen!
+
+
+RUeCKGABEWERT
+=============
+
+   String oder Array von Strings mit dem Namen des Objektes.
+
+
+SIEHE AUCH
+==========
+
+   QueryProp(), Name(), name(), /std/thing/description.c
+
+Last modified: Sat Aug  3 11:21:05 2002 by Vanion
diff --git a/doc/sphinx/man/lfun/QueryOpenMiniQuestsForPlayer b/doc/sphinx/man/lfun/QueryOpenMiniQuestsForPlayer
new file mode 100644
index 0000000..f43d7cc
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryOpenMiniQuestsForPlayer
@@ -0,0 +1,80 @@
+
+QueryOpenMiniQuestsForPlayer()
+******************************
+
+
+FUNKTION
+========
+
+   mapping QueryOpenMiniQuestsForPlayer(object player)
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt die Liste der offenen Miniquests des Spielers als
+   Mapping zurueck.
+
+
+ARGUMENTE
+=========
+
+   player - das interessierende Spielerobjekt
+
+
+RUECKGABEWERTE
+==============
+
+   Mapping mit der Liste der Miniquests, fuer die das abfragende Objekt
+   zustaendig ist, oder leeres Mapping, wenn der Spieler keine MQs mehr
+   offen hat.
+
+   Die Liste enthaelt die Miniquestnummer als Key. Diesem sind zwei Werte
+   zugeordnet: zum einen ein Miniquest-Aufgabentext, und zum anderen -
+   falls der Spieler eine der Vorbedingungen fuer die Miniquest nicht
+   erfuellt - ein Hinweistext, der Auskunft gibt, welche Bedingung noch
+   zu erfuellen ist ("Seherstatus fehlt"). Diese Hinweistexte entsprechen
+   denen aus check_restrictions() in /std/restriction_checker.c. Der
+   jeweils andere Text wird auf 0 gesetzt.
+
+   Die Struktur des Mappings ist daher folgende:
+     ([ MQ-Nummer : <Aufgabenstellung> ; <Hinderungsgrund> ])
+
+
+
+   Beispiel: ein Spieler hat die Miniquests 18 und 49 noch nicht geloest,
+   erfuellt aber nur fuer Miniquest 49 die Anforderungen. Miniquest 18
+   erfordert den Seherstatus. Dann saehe das Mapping so aus:
+     ([ 18 : 0                    ; "Dazu musst Du erst Seher werden.\n",
+        49 : "Aufgabentext_zu_49" ; 0 ])
+
+   Jedes abfragende Objekt muss daher dieses Mapping zunaecht geeignet
+   auf seinen Inhalt pruefen, um zu ermitteln, welche Meldung jeweils
+   auszugeben ist.
+
+
+BEMERKUNGEN
+===========
+
+   Das abfragende Objekt muss von einem Erzmagier oder Gott (z.B. dem
+   zustaendigen Quest-EM) im Questmaster als zugriffsberechtigt bei den-
+   jenigen Miniquests eingetragen sein, fuer die es die entsprechenden
+   Miniquest-Hinweise ausgeben darf. Diese Berechtigung ist mit dem
+   Quest-EM abzustimmen. Anderen Objekten wird ein leeres Mapping zurueck-
+   gegeben.
+
+
+SIEHE AUCH
+==========
+
+   AddMiniQuest(L), ChangeMiniQuest(L)
+   P_RESTRICTIONS
+   erzmagier
+
+Last modified: 6. Juni 2014, Arathorn.
diff --git a/doc/sphinx/man/lfun/QueryOwn b/doc/sphinx/man/lfun/QueryOwn
new file mode 100644
index 0000000..22e9e5f
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryOwn
@@ -0,0 +1,53 @@
+
+QueryOwn()
+**********
+
+
+FUNKTION
+========
+
+   varargs string QueryOwn(int casus)
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   casus
+        Der Fall fuer die Anrede.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert das dem Anlass entsprechende Possessiv-
+   pronomen fuer den Spieler selber (Dein/Deine).
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String mit dem Pronomen.
+
+
+BEISPIELE
+=========
+
+   printf("%s %s loest sich auf.\n",
+         capitalize(obj->QueryOwn(WER)),obj->name(WER));
+
+   (In den meisten Faellen kann man hier auch direkt "Dein" oder "Deine"
+    einsetzen.)
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/language.c
+
+Last modified: Sun Aug 10 23:55:27 2003 by Mandragon
diff --git a/doc/sphinx/man/lfun/QueryPassengers b/doc/sphinx/man/lfun/QueryPassengers
new file mode 100644
index 0000000..d6f9331
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryPassengers
@@ -0,0 +1,51 @@
+
+QueryPassengers()
+*****************
+
+
+FUNKTION
+========
+
+   object *QueryPassengers();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt die momentan auf dem Transporter befindlichen
+   Passagiere.
+
+
+RUeCKGABEWERT
+=============
+
+   Array von Objekten mit den Passagieren.
+
+
+BEMERKUNGEN
+===========
+
+   Es werden nur die Passagiere zurueckgegeben, die sich in dem
+   eigentlichen Transporterobjekt befinden! Wenn der Transporter noch um
+   zusaetzliche Raeume vergroessert wird, werden unter Umstaenden nicht
+   alle Passagiere erfasst!
+
+
+SIEHE AUCH
+==========
+
+   /std/transport.c
+
+Last modified: Wed May 8 10:22:48 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryPosition b/doc/sphinx/man/lfun/QueryPosition
new file mode 100644
index 0000000..08af6fe
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryPosition
@@ -0,0 +1,48 @@
+
+QueryPosition()
+***************
+
+
+FUNKTION
+========
+
+   string *QueryPosition();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Array von zwei Strings mit Kennzeichnern der letzten (oder
+   aktuellen) und der naechsten Station im Fahrplan zurueckgegeben.
+
+   Die Kennzeichner sind dabei die ersten Argumente der entsprechenden
+   AddXXX()-Aufrufen, also der Name der Haltestelle bei AddRoute, der Text
+   der Meldung bei AddMsg() und der Name der Funktion bei AddFun().
+
+
+RUeCKGABEWERT
+=============
+
+   Array mit zwei Strings. Der erste String gibt den Kennzeichner der
+   momentanen Fahrplanstation an, der zweite String den Kennzeichner der
+   naechsten Fahrplanstation.
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddMsg(), AddFun(), /std/transport.c
+
+Last modified: Wed May 8 10:22:52 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryPossPronoun b/doc/sphinx/man/lfun/QueryPossPronoun
new file mode 100644
index 0000000..90af78a
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryPossPronoun
@@ -0,0 +1,74 @@
+
+QueryPossPronoun()
+******************
+
+
+FUNKTION
+========
+
+   varargs string QueryPossPronoun(mixed what, int casus, int anzahl);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   what
+        Geschlecht des Objektes, das besessen wird, oder das Objekt
+        selbst.
+
+   casus
+        Der Fall, in dem das Objekt besessen wird.
+
+   anzahl
+        Handelt es sich um nur ein Objekt oder um mehrere?
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt ein Possessivpronomen zurueck, das das
+   Besitzverhaeltnis eines Objektes zu diesem Objekt anzeigt.
+
+
+RUeCKGABEWERT
+=============
+
+   Das Possessivpronomen im entsprechenden Fall.
+
+
+BEMERKUNGEN
+===========
+
+   what und casus beziehen sich auf das Objekt, welches besessen wird, und
+   nicht auf den Besitzer!!!
+
+
+BEISPIELE
+=========
+
+   Um eine korrekte Ausgabe beim Haendeklatschen zu erreichen, koennte man
+   zB. folgende Zeile verwenden:
+
+    printf("%s klatscht in %s Haende.\n",this_player()->name(WER),
+         this_player()->QueryPossPronoun(FEMALE, WEN, PLURAL));
+
+   FEMALE, da "die Hand" weiblich ist, WEN, da man im Akkusativ klatscht,
+   und PLURAL, da man dazu beide Haende braucht.
+
+   Ein beliebter Fehler ist es, als Fall WESSEN zu verwenden (in WESSEN
+   Haende klatscht man? => in seine).
+   Die richtige Frage waere aber: WEN klatscht man? (in die Haende)
+
+
+SIEHE AUCH
+==========
+
+   QueryOwn(), QueryPronoun(), /std/thing/language.c
+
+Last modified: Wed Jan 11 13:13:35 CET 2006 by Rumata
diff --git a/doc/sphinx/man/lfun/QueryPrayRoom b/doc/sphinx/man/lfun/QueryPrayRoom
new file mode 100644
index 0000000..b783174
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryPrayRoom
@@ -0,0 +1,50 @@
+
+QueryPrayRoom()
+***************
+
+
+FUNKTION
+========
+
+   public string QueryPrayRoom()
+
+
+DEFINIERT IN
+============
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Dies ist der Raum, in den der Spieler nach dem Ende der Todessequenz
+   bewegt wird, d.h. ein Raum, wo er beten kann, um einen neuen Koerper zu
+   erhalten.
+   Der Raum wird als String angegeben (kein Objekt).
+
+   Jede Rasse hat einen Default fuer diese Funktion, welcher mit
+   SetDefaultPrayRoom() gesetzt wird. Dieser Default kann mit der Property
+   P_PRAY_ROOM ueberlagert werden. Wird die Property auf 0 dgesetzt, wird
+   dieser Default aktiv.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Objektname des Betraums (string)
+
+
+SIEHE AUCH
+==========
+
+   P_PRAY_ROOM
+   SetDefaultPrayRoom
+
+21.05.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/QueryPreferedEnemy b/doc/sphinx/man/lfun/QueryPreferedEnemy
new file mode 100644
index 0000000..10a8ae0
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryPreferedEnemy
@@ -0,0 +1,56 @@
+
+QueryPreferedEnemy()
+********************
+
+
+FUNKTION
+========
+
+   object QueryPreferedEnemy();
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   bevorzugter Gegner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert unter folgenden Bedingungen zufaellig eines
+   der Lebewesen als bevorzugten Gegner zurueck, welche in der
+   Property P_PREFERED_ENEMY in einem Array eingetragen sind:
+     (1) Der erste Eintrag des erwaehnten Propertyarrays enthaelt
+         einen Wert zwischen 0 und 100, der die Wahrscheinlichkeit
+         dafuer angibt, dass ein Lebewesen als Gegner bevorzugt werden
+         soll. Es wird also nicht immer bevorzugt, wenn dort ein Wert
+         kleiner 100 steht! In diesem Fall wird eine 0 zurueckgegeben.
+     (2) Das per Zufall aus den Arrayelementen ab Element 2 gewaehlte
+         Lebewesen muss auch wirklich existieren. Ist dies nicht der
+         Fall, wird das nunmehr leere Element aus dem Array entfernt
+         und eine 0 zurueckgeliefert.
+     (3) Das Lebewesen muss derzeit auch wirklich Feind sein! Ist dies
+         nicht der Fall, wird eine 0 zurueckgegeben.
+   Will man eine andere Bevorzugung von Gegnern erreichen,
+   ueberschreibt man am besten diese Funktion.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), IsEnemy(), P_PREFERED_ENEMY
+
+Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/QueryPronoun b/doc/sphinx/man/lfun/QueryPronoun
new file mode 100644
index 0000000..39088f9
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryPronoun
@@ -0,0 +1,54 @@
+
+QueryPronoun()
+**************
+
+
+FUNKTION
+========
+
+   string QueryPronoun(int casus);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   casus
+        Der Fall, in dem das Personalpronomen verlangt wird.
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Personalpronomen ("er", "sie", "es") im entsprechenden Fall
+   fuer dieses Objekt berechnet.
+
+
+RUeCKGABEWERT
+=============
+
+   Das Pronomen im entsprechenden Fall.
+
+
+BEISPIELE
+=========
+
+   printf("Du versucht, %s zu nehmen, aber %s ist zu schwer.\n",
+         ob->name(WEN), ob->QueryPronoun(WER));
+
+   Hier wird immer das richtige Pronomen verwendet, egal, welches
+   Geschlecht das Objekt ob hat.
+
+
+SIEHE AUCH
+==========
+
+   SuggestArticle(), QueryPossPronoun(), /std/thing/language.c
+   QueryOwn()
+
+Last modified: Wed May 8 10:23:14 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/QueryProp b/doc/sphinx/man/lfun/QueryProp
new file mode 100644
index 0000000..71c4fdf
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryProp
@@ -0,0 +1,63 @@
+
+QueryProp()
+***********
+
+
+FUNKTION
+========
+
+   mixed QueryProp(string name);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+
+
+ARGUMENTE
+=========
+
+   string name        - abzufragende Property
+
+
+BESCHREIBUNG
+============
+
+   Der Datenwert der Property 'name' wird zurueckgegeben.
+
+   Existiert eine F_QUERY_METHOD oder eine _query_'name'()-Methode fuer
+   diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
+   Eine F_QUERY_METHOD hat dabei Vorrang vor _query_'name'(), d.h.
+   _query_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
+   gerufen.
+
+   (Diese Methoden nutzen dann Set(), um auf den Datenwert der Property
+    'name' zurueckzugreifen. Teilweise werden aber auch interne Variablen
+    so oeffentlich gemacht und sind nicht in der ueber Set/Query
+    verfuegbaren Property 'name' abgelegt.)
+
+
+RUeCKGABEWERT
+=============
+
+   Der Datenwert der Property.
+   0, falls diese nicht existiert.
+
+
+BEISPIELE
+=========
+
+   // wie hoch sind die aktuelle LP des Spielers?
+   hp = this_player()->QueryProp(P_HP);
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        SetProp(L), Set(L), Query(L)
+   Generell:          SetProperties(L), QueryProperties(L)
+   Konzept:           properties, /std/thing/properties.c
+   Sonstiges:         P_AUTOLOADOBJ
+
+15.Dez 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/QueryProperties b/doc/sphinx/man/lfun/QueryProperties
new file mode 100644
index 0000000..6949e0f
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryProperties
@@ -0,0 +1,54 @@
+
+QueryProperties()
+*****************
+
+
+FUNKTION
+========
+
+   mapping QueryProperties()
+
+
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Mapping mit allen fuer das Objekt
+   definierten Properties zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Mapping mit den Properties. Das Mapping hat folgenden Aufbau:
+      ([ name: wert; flags; set_method; query_method,
+         name2: ... ]);
+
+
+BEMERKUNGEN
+===========
+
+   - diese Funktion wird von restore_object() und save_object()
+   - F_QUERY_METHODs und _query_'prop'()-Methoden haben keine Auswirkung
+     auf die Wertefelder!
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        SetProp(L), QueryProp(L), Set(L), Query(L)
+   Generell:          SetProperties(L)
+   Konzept:           properties, /std/thing/properties.c
+
+1.Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/QueryQuest b/doc/sphinx/man/lfun/QueryQuest
new file mode 100644
index 0000000..338ed77
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryQuest
@@ -0,0 +1,53 @@
+
+QueryQuest()
+************
+
+
+FUNKTION
+========
+
+   int QueryQuest(string questname)
+
+
+DEFINIERT IN
+============
+
+   /std/player/quests.c
+
+
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   (Die Defines fuer den Rueckgabewert finden sich in
+    /secure/questmaster.h)
+    1 : Spieler hat die Quest bereits geloest  (OK)
+    0 : Ungueltiger Questname oder der Spieler
+        hat die Quest noch nicht.              (QQ_KEY_INVALID)
+    2 : Gaeste koennen keine Quest loesen      (QQ_QUEST)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann getestet werden, ob ein Spieler eine
+   bestimmte Quest bereits geloest hat. Als Questname wird dazu
+   der Name angegeben, der im Questmaster eingetragen wurde.
+
+   Wer sich da nicht sicher ist, kann mit dem Questtool
+   (/obj/tools/questtool) nachsehen.
+
+
+SIEHE AUCH
+==========
+
+   /secure/questmaster.h, /obj/tools/questtool
+   GiveQuest
+
+Zuletzt geaendert: Mon, 17. Jul 2000, 12:16:41 von Zook.
diff --git a/doc/sphinx/man/lfun/QueryQuestTime b/doc/sphinx/man/lfun/QueryQuestTime
new file mode 100644
index 0000000..9b93c8d
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryQuestTime
@@ -0,0 +1,48 @@
+
+QueryQuestTime()
+****************
+
+
+FUNKTION
+========
+
+   int QueryQuestTime(string questname)
+
+
+DEFINIERT IN
+============
+
+   /std/player/quests.c
+
+
+ARGUMENTE
+=========
+
+   questname
+     Questname, wie er im Questmaster eingetragen wurde.
+
+
+RUeCKGABEWERT
+=============
+
+   Questzeitpunkt in Sekunden seit Epoch als positiver Integer-Wert
+    0 : Tagebuchmaster hat keine Daten in den Logfiles gefunden und
+        macht das auf diese Weise kenntlich
+   -1 : Questzeitpunkt unbekannt
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann der Zeitpunkt abgefragt werden, zu
+   dem ein Spieler eine bestimmte Quest geloest hat.
+   Als Questname wird dazu der Name angegeben, der im Questmaster
+   eingetragen ist.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest(L), QueryQuest(L), ModifyQuestTime(L)
+
+Zuletzt geaendert: 19. Dez. 2015, Arathorn
diff --git a/doc/sphinx/man/lfun/QueryRealAttribute b/doc/sphinx/man/lfun/QueryRealAttribute
new file mode 100644
index 0000000..246008f
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryRealAttribute
@@ -0,0 +1,47 @@
+
+QueryRealAttribute()
+********************
+
+
+FUNKTION
+========
+
+   int QueryRealAttribute(string attr)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       -       das interessierende Attribut
+
+
+BESCHREIBUNG
+============
+
+   Das reale Attribut (ohne Offsets) wird zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   if(this_player()->QueryRealAttribute(A_INT)>15)
+    write("Du bist auch so ganz schoen clever.\n");
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/QuerySellValue b/doc/sphinx/man/lfun/QuerySellValue
new file mode 100644
index 0000000..4d5a518
--- /dev/null
+++ b/doc/sphinx/man/lfun/QuerySellValue
@@ -0,0 +1,54 @@
+
+QuerySellValue()
+****************
+
+
+FUNKTION
+========
+
+   varargs int QuerySellValue(object ob, object client);
+
+
+DEFINIERT IN
+============
+
+   /std/trading_price.c
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion kann dazu genutzt werden, den Verkaufspreis in einem
+   Laden global zu veraendern. Sofern dies zugunsten der Spieler geschieht,
+   muss dafuer die Zustimmung des zustaendigen Regionsmagiers und der
+   Balance eingeholt werden. Zudem sollte es nicht in jedem x-beliebigen
+   Laden genutzt werden, sondern nur in recht abgelegenen Gebieten, in
+   die man nicht einfach skripten kann.
+
+   Ein Beispiel ist der Laden auf dem Kutter in Port Vain, der nur in
+   laengeren Intervallen mal zugaenglich ist.
+
+
+BEISPIEL
+========
+
+   Ein Laden zahlt 10% ueber dem normalen Verkaufspreis:
+
+   private int sell_factor = 110;
+
+   varargs int QuerySellValue(object ob, object client) {
+     // Es wird nicht naeher geprueft, ob <ob> ein gueltiger Objektpointer
+     // ist, da der Laden selbst sicherstellt, dass das so ist. Wenn
+     // das doch einmal nicht der Fall sein sollte, liegt der Fehler
+     // woanders. Einen Bug auszuloesen ist dann sinnvoll.
+
+     // Basispreis ermitteln
+     int preis = ::QuerySellValue(ob, client);
+     // und den Bonus aufschlagen.
+     preis = (sell_factor * preis)/100;
+
+     // Nicht mehr auszahlen, als das Objekt an sich wert ist.
+     return min(preis, ob->QueryProp(P_VALUE));
+   }
+
+LETZTE AENDERUNG: 18-Jun-2015, Arathorn
diff --git a/doc/sphinx/man/lfun/QuerySkill b/doc/sphinx/man/lfun/QuerySkill
new file mode 100644
index 0000000..0978df1
--- /dev/null
+++ b/doc/sphinx/man/lfun/QuerySkill
@@ -0,0 +1,56 @@
+
+QuerySkill()
+************
+
+
+FUNKTION
+========
+
+   public varargs mapping QuerySkill(string sname, string gilde)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string sname    Name des abzufragenden Skill
+   string gilde    Name der Gilde, unter der der Skill gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert das Skillmappings des Skills 'snme' im Lebewesen
+   zurueck. Diese enthaelt Eintraege, die in der Man-Page skill_info_liste
+   beschrieben sind.
+
+   Falls 'gilde' nicht angegeben wird, wird der Skill zuerst fuer die Gilde
+   P_GUILD des Lebewesens gesucht, ansonsten in den allgemeinen Skills
+   "ANY" (es wird NICHT in Gildenobjekt oder Spellbook etwas abgefragt).
+
+
+RUECKGABEWERT
+=============
+
+   Ein Mapping mit Skillinfos oder 0, falls der Skill nicht vorhanden ist.
+   Das Mapping ist eine Kopie.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/QuerySkillAbility b/doc/sphinx/man/lfun/QuerySkillAbility
new file mode 100644
index 0000000..fd8666f
--- /dev/null
+++ b/doc/sphinx/man/lfun/QuerySkillAbility
@@ -0,0 +1,47 @@
+
+QuerySkillAbility()
+*******************
+
+
+FUNKTION
+========
+
+   public varargs int QuerySkillAbility(string sname, string gilde)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string sname        Name des abzufragenden Skill
+   string gilde         Gilde, unter der der Skill gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert einen Wert zurueck, der aussagt, wie gut das
+   Lebewesen den Skill 'sname' beherrscht (Key SI_SKILLABILITY im
+   Skillmapping).
+   Dieser Wert kann zwischen -MAX_ABILITY und MAX_ABILITY liegen,
+   normal ist 0 bis MAX_ABILITY (10000 - Skill perfektioniert).
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/QuerySkillAttribute b/doc/sphinx/man/lfun/QuerySkillAttribute
new file mode 100644
index 0000000..1b3a71e
--- /dev/null
+++ b/doc/sphinx/man/lfun/QuerySkillAttribute
@@ -0,0 +1,87 @@
+
+QuerySkillAttribute()
+*********************
+
+
+FUNKTION
+========
+
+   public int QuerySkillAttribute(string atrname)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   string atrname            Name des abzufragenden Attributs
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man den Wert bestimmter Attribute
+   abfragen, dabei werden das abgefragte Attribut, Todesfolgen,
+   SA_QUALITY und Werte in P_SKILL_ATTRIBUTE_OFFSETS
+   beruecksichtigt.
+
+
+
+   Momentane Skills siehe ModifySkillAttribute.
+
+
+RUECKGABEWERT
+=============
+
+   Der Wert des Attributs. Ist nichts bestimmtes gesetzt, wird
+   der Standardwert 100 zurueckgegeben.
+   Der Rueckgabewert liegt zwischen 10 bis 1000 (Prozent).
+
+
+BEMERKUNG
+=========
+
+   Die Funktion ist zwar als 'varargs' definiert, gibt man allerdings
+   keinen Attributnamen an, wird immer 100 zurueckgegeben.
+
+
+BEISPIEL
+========
+
+   // ein Spieler kann ein Stueck Kaese stibitzen, wenn er schnell
+   // genug ist ... (15% ueber normal)
+   if(this_player()->QuerySkillAttribute(SA_SPEED)>=115) {
+     tell_object(this_player(),
+       "Du schnappst das Stueck Kaese aus der Falle.\n");
+     obj kaese = clone_object(...);
+     [...]
+   } else {
+     mapping amap=map_indices(VALID_ARMOUR_CLASS,#'!);
+     amap[AT_GLOVE]=100;
+     tell_object(this_player(),
+       "Du bist zu langsam und die Falle schnappt hungrig zu.\n");
+     this_player()->Defend(random(100),
+                          ({DT_PIERCE, DT_SQUEEZE}),
+                          ([SP_PHYSICAL_ATTACK: 1,
+                            SP_REDUCE_ARMOUR: amap,
+                            SP_SHOW_DAMAGE: 0]));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/QuerySkillAttributeModifier b/doc/sphinx/man/lfun/QuerySkillAttributeModifier
new file mode 100644
index 0000000..055815e
--- /dev/null
+++ b/doc/sphinx/man/lfun/QuerySkillAttributeModifier
@@ -0,0 +1,118 @@
+
+QuerySkillAttributeModifier()
+*****************************
+
+
+FUNKTION
+========
+
+   public varargs mapping QuerySkillAttributeModifier(object caster,
+                                                   string *atrnames)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   <caster>    object
+               Objekt, welches die gesuchten Mods gesetzt hat
+
+   <atrnames>  string*
+               Array von Skill-Attributen, welche durchsucht werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert alle Mods von <caster> auf den Skill-
+   Attributen <atrnames> in einem Mapping zurueck.
+   Wird <atrnames> nicht angegeben oder ist ein leeres Array, werden alle
+   Skill-Attribute nach Mods abgesucht.
+   Wird <caster> nicht angeben oder ist 0, so werden alle Mods der
+   gewuenschten Skill-Attribute geliefert.
+   Dementsprechend bekommt man alle Mods aller Skill-Attribute, wenn keins
+   von beidem angegeben wird.
+
+
+RUECKGABEWERT
+=============
+
+   ([]), falls keine Modifikatoren gefunden wurden.
+   In anderen Faellen ist die Datenstruktur des Mappings wie folgt:
+   ([ atrname1: ([ <caster>: <value>; <duration> ]),
+      atrname2: ([ <caster>: <value>; <duration> ]) ])
+   Die Schluessel im Mapping sind die jeweiligen Skill-Attribute, die Werte
+   des Mappings sind erneut Mappings, welche als Schluessel die Objekte
+   haben, welche die Mods gesetzt haben. In diesem Mapping gehoeren zu jedem
+   Schluessel zwei Werte, den Wert des Modifikators und die Ablaufzeit.
+   <value> kann hierbei ein int oder eine closure sein, <duration> ist ein
+   int, <caster> ist ein Objekt.
+   Ggf. kann das innere Mapping natuerlich auch mehrere Modifikatoren
+   enthalten (also caster1, caster2, usw.).
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   Ein Objekt moechte seinen bestehenden Modifikator um 20 und die
+   Gueltigkeit um 13 erhoehen.
+   mapping res = ob->QuerySkillAttributeModifier(this_object(),
+                                                ({SA_DAMAGE}) );
+   if (member(res, SA_DAMAGE) && member(res[SA_DAMAGE], this_object())) {
+        // alten Mod ueberschreiben und Werte dabei anheben.
+        ob->ModifySkillAttributeModifier(SA_DAMAGE,
+            res[SA_DAMAGE][this_object(),0] + 20,
+            res[SA_DAMAGE][this_object(),1] + 13 );
+   }
+   else
+        // neuen Mod setzen.
+        ob->ModifySkilAttributeModifier(SA_DAMAGE, 20, 13);
+
+
+
+   Ein Objekt hat den Fluch der unpraezisen Schnelligkeit, welcher SA_DAMAGE
+   reduziert, sofern das Lebewesen einen positiven Modifikator auf SA_SPEED
+   hat:
+   mapping res = ob->QuerySkillAttributeModifier(0, ({SA_SPEED}) );
+   if (member(res, SA_SPEED) {
+       int val, int dur;
+       foreach(object caster, int v, int d: res[SA_SPEED]) {
+           // groessten Mod rausfinden, dabei keine closures
+           // beruecksichtigen.
+           if (intp(v) && v>val) {
+               val=v;
+               dur=d;
+           }
+       }
+       if (val > 0) {
+           // pos. Mod auf SA_SPEED gefunden, entsprechenden neg. Mod auf
+           // SA_DAMAGE setzen, der zum gleichen Zeitpunkt ungueltig wird
+           // wie der Mod auf SA_SPEED.
+           if (ob->ModifySkillAttribute(SA_DAMAGE, -val, dur) == SA_MOD_OK)
+              tell_object(ob, "tolle Fluchmeldung.");
+       }
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+14.08.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/QuerySkillBonus b/doc/sphinx/man/lfun/QuerySkillBonus
new file mode 100644
index 0000000..1cb82e8
--- /dev/null
+++ b/doc/sphinx/man/lfun/QuerySkillBonus
@@ -0,0 +1,91 @@
+
+QuerySkillBonus()
+*****************
+
+
+FUNKTION
+========
+
+   int QuerySkillBonus(object caster, object target, mapping sinfo)
+
+
+DEFINIERT IN
+============
+
+   beliebigen Objekten
+
+
+ARGUMENTE
+=========
+
+   object caster
+        der Benutzer eines Skills/Spells (Lebewesen)
+   object target
+        das Ziel eines Skills/Spells (beliebiges Objekt oder 0)
+   mapping sinfo
+        das Skillinfomapping
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von der Gilde des Casters im Environment und ggf.
+   auch im Ziel eines Skills/Spells gerufen.
+   Die Gilde uebergibt neben Caster und Ziel ein Mapping mit Skillinfos (s.
+   SI Konstanten aus new_skills.h fuer Details), welches alle wesentlichen
+   Informationen ueber den benutzten Skill/Spell enthaelt.
+
+   QuerySkillBonus() liefert einen Bonus (oder Malus) zurueck, den der
+   Aufrufer als Faktor in der Berechnung des Effekts des Skills
+   beruecksichtigen kann (aber nicht muss).
+   Der Bonus/Malus wird hierbei als ganzzahliger 0.01-Prozentwert aufgefasst
+   (10000 == 100% == keine Veraenderung, 1 == 0.01%).
+
+   Diese Funktion kann in beliebigen Objekten (re-)definiert werden. Im
+   Falle mobiler Objekte oder anhaltender Effekte ist jedoch eine
+   Balancegenehmigung erforderlich, sofern kampfrelevante Skills beeinflusst
+   werden.
+   Eine flaechendeckende Reduzierung von Skills/Gildenfaehigkeiten ist
+   explizit _nicht_ erwuenscht und soll auf einzelne Raeume und Objekte
+   beschraenkt sein.
+
+
+BEMERKUNGEN
+===========
+
+   Das Mapping <sinfo> kann in dieser Funktion geaendert werden. Dieses kann
+   allerdings sehr weitreichende Folgen haben, speziell bei mangelnden
+   Kenntnissen ueber Interna des Skillsystems. Daher bitte von Aenderungen
+   absehen bzw. vorher mit dem jeweiligen Gildenmagier und/oder der
+   Gildenbalance abklaeren.
+   Die Bedeutung der Werte in <sinfo> kann je nach Gilde variieren. Im
+   Zweifelsfall bitte bei den jeweiligen Gildenmagiern nachfragen.
+   Die Gilde kann diese Funktion rufen, muss aber nicht. Ebenso kann sie das
+   Ergebnis beruecksichtigen, muss aber nicht.
+
+
+BEISPIELE
+=========
+
+   In einem Raum sollen Heilzauber besonders effizient sein:
+   int QuerySkillBonus(object caster, object target, mapping sinfo) {
+      if (pointerp(sinfo[SI_MAGIC_TYPE])
+          && member(sinfo[SI_MAGIC_TYPE], MT_HEILUNG) > -1)
+      {
+          return 12000 + random(3000); // bonus von 120-150%
+      }
+      return 10000;
+   }
+
+
+SIEHE AUCH
+==========
+
+   gilden-doku
+   <new_skills.h>
+
+
+LETZTE AeNDERUNG
+================
+
+19.08.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/QueryStorageRoom b/doc/sphinx/man/lfun/QueryStorageRoom
new file mode 100644
index 0000000..4442237
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryStorageRoom
@@ -0,0 +1,27 @@
+
+QueryStorageRoom()
+******************
+
+QueryStorageRoom()
+
+Funktion
+   string QueryStorageRoom()
+
+Definiert in
+   /std/room/shop
+
+Rueckgabewert
+   Dateiname des Lagers, in dem die aufgekauften Gegenstaende
+   aufbewahrt werden.
+
+Siehe auch
+   Funktionen
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryBuyValue(), QueryBuyFact(), sell_obj(), buy_obj()
+
+   Properties
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+
+Letzte Aenderung 21.05.2014, Bugfix
+===================================
diff --git a/doc/sphinx/man/lfun/QueryTimedAttrModifier b/doc/sphinx/man/lfun/QueryTimedAttrModifier
new file mode 100644
index 0000000..4d858a8
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryTimedAttrModifier
@@ -0,0 +1,67 @@
+
+QueryTimedAttrModifier()
+************************
+
+
+FUNKTION
+========
+
+   mapping QueryTimedAttrModifier(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       aus P_TIMED_ATTR_MOD abzufragender Eintrag
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag in P_TIMED_ATTR_MOD wird abgefragt.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein leeres Mapping im Falle eines fehlerhaften key-Argumentes oder
+   eines nicht existenten Keys.
+
+
+
+   Ansonsten wird ein Mapping der Form
+
+
+
+      ([
+         Key : ([ Mapping mit den Modifikatoren ]) ;
+               Ablaufzeit ; Ablaufobjekt ; Nachrichtenempfaenger
+      ])
+
+   zurueckgegeben.Die Ablaufzeit ist hierbei die Zeit in Sekunden seit
+   dem 1. Jan 1970, 0.0:0 GMT, das Ablaufobjekt ist das Objekt an dessen
+   Existenz die Attributveraenderungen gebunden ist und der
+   Nachrichtenempfaenger ist dasjenigen Objekte welches im Falle
+   durch den Aufruf von "NotifyTimedAttrModExpired" benachrichtigt
+   wird sobald das Attribut abgelaufen ist.
+   Der Funktion NotifyTimedAttrModExpired wird als Argument der key
+   der abgelaufenen Attributveraenderung uebergeben.
+   Das Mapping ist eine Kopie der Originaldatenstruktur zu diesem Key.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/QueryTotalQP b/doc/sphinx/man/lfun/QueryTotalQP
new file mode 100644
index 0000000..1471010
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryTotalQP
@@ -0,0 +1,43 @@
+
+QueryTotalQP()
+**************
+
+
+FUNKTION
+========
+
+   int QueryTotalQP()
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte saemtlicher Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der saemtlicher aktivierter
+   Quests zurueck.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryMaxQP, QueryOptQP
+
+Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
diff --git a/doc/sphinx/man/lfun/QueryUser b/doc/sphinx/man/lfun/QueryUser
new file mode 100644
index 0000000..ad1e4fa
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryUser
@@ -0,0 +1,77 @@
+
+QueryUser()
+***********
+
+
+FUNKTION
+========
+
+   public object QueryUser()
+
+
+DEFINIERT IN
+============
+
+   /std/npc/combat.c
+   /std/clothing/wear.c
+   /std/weapon/combat.c
+   alle Objekte, in denen es darueber hinaus noetig ist
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert den aktuellen Nutzer (Lebewesen) eines Items oder NPCs.
+
+
+
+   Diese Funktion wird z.B. von get_killing_player() benutzt, um
+   herauszufinden, zu welchem Spieler denn das Objekt gehoert, was den
+   toedlichen Schaden verursacht hat.
+
+   Im Falle eines NPCs ist dies standardmaessig der Spieler, bei dem der
+   NPC als Helfer-NPC eingetragen ist (s. RegisterHelperNPC).
+   Im Falle einer Ruestung ist es das Lebewesen, welches sie gerade traegt.
+   Im Falle einer Waffe ist es das Lebewesen, welches sie gerade gezueckt
+   hat.
+   Alle anderen Objekte enthalten keinen Default fuer diese Funktion.
+
+
+RUeCKGABEWERT
+=============
+
+   Das nutzende Lebewesen, falls es ermittelt werden konnte, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Sollte in allen Objekten definiert werden, welche Lebewesen Schaden
+   zufuegen, ohne dass das verursachende Lebewesen dabei als Feind im
+   Defend() angeben wird.
+   Der gelieferte Nutzer muss explizit kein Spieler sein. Es waere z.B.
+   moeglich, dass von einem Spieler kontrollierter NPC einen Bumerang nutzt.
+
+
+BEISPIELE
+=========
+
+   Ein von einem Spieler beschworenes Wesen wirft einen Bumerang nach einem
+   Feind.
+   Dann liefert QueryUser() im Bumerang den NPC als Nutzer und
+   QueryUser() im NPC wiederum den Spieler.
+
+
+SIEHE AUCH
+==========
+
+   RegisterHelperNPC(), get_killer_player()
+   P_WORN, P_WIELDED
+
+12.11.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/QueryValidObject b/doc/sphinx/man/lfun/QueryValidObject
new file mode 100644
index 0000000..649a0b2
--- /dev/null
+++ b/doc/sphinx/man/lfun/QueryValidObject
@@ -0,0 +1,69 @@
+
+QueryValidObject()
+******************
+
+
+FUNKTION
+========
+
+   public int QueryValidObject(string oname);
+
+
+DEFINIERT IN
+============
+
+   /std/virtual/v_compiler.c
+
+
+ARGUMENTE
+=========
+
+   oname
+     Objektname, der geprueft werden soll (kompletter Pfad mit / am Anfang)
+
+
+RUeCKGABEWERT
+=============
+
+   <=0 - falls VC nicht zustaendig ist.
+   >0 - falls der VC sich fuer das Objekt zustaendig erklaert.
+
+
+BESCHREIBUNG
+============
+
+   Ueber die Funktion laesst sich herausfinden, ob ein VC sich fuer das
+   gewuenschte Objekt zustaendig fuehlt. Dabei wird Validate(),
+   P_COMPILER_PATH, NoParaObjects() und P_PARA im VC ausgewertet:
+   1. Zuerst wird mit Validate() geprueft, ob der Filename (ohne Pfad) ok ist.
+   2. wird geguckt, ob das angefragte Objekt im richtigen Pfad liegt
+      (P_COMPILER_PATH).
+   3. wenn das angefragte Objekt ein Para-Objekt ist:
+     a) wird NoParaObjects() geprueft, wenn das !=0 ist, sind gar keine Para-
+        Objekte erlaubt.
+     b) wird P_PARA _im VC_ abgefragt, dort kann man ein Array aller
+        erlaubten Para-Dimensionen reinschreiben. Fuer alle anderen erklaert
+        sich der VC fuer nicht zustaendig. Wenn P_PARA nicht gesetzt ist,
+        sind alle erlaubt. Ein leeres Array ({}) wuerde einem
+        NoParaObjects() {return 1;} entsprechen.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird vom move abgefragt. Bitte auf jeden Fall P_PARA oder
+   NoParaObjects() passend definieren, sonst buggts.
+
+   Wenn jemand mit dem oben beschrieben Standardverhalten nicht gluecklich
+   ist, kann man die Funktion passend ueberschreiben.
+
+
+SIEHE AUCH
+==========
+
+   virtual_compiler
+   CustomizeObject(), Validate(), NoParaObjects(),
+   P_COMPILER_PATH, P_PARA
+   /std/virtual/v_compiler.c
+
+21.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/ReceiveMsg b/doc/sphinx/man/lfun/ReceiveMsg
new file mode 100644
index 0000000..cd1a34d
--- /dev/null
+++ b/doc/sphinx/man/lfun/ReceiveMsg
@@ -0,0 +1,278 @@
+
+ReceiveMsg()
+************
+
+ReceiveMsg()
+
+public varargs int ReceiveMsg(string msg, int msg_typ, string
+msg_action,
+   string msg_prefix, mixed origin)
+
+
+DEFINIERT IN
+============
+
+   /std/living/comm.c
+   /std/npc/comm.c
+   /std/player/comm.c
+   /std/room/items.c
+
+
+ARGUMENTE
+=========
+
+   string msg
+     String mit der uebermittelten Nachricht. Muss nicht umgebrochen sein,
+     da ReceiveMsg() das ebenfalls erledigt.
+   int msg_typ
+     Nachrichtentyp(en) fuer Filterung und Flags fuer Behandlung/Umbruch.
+     Siehe unten fuer mit | kombinierbare Konstanten.
+   string msg_action (optional)
+     Ausloesende Aktion, wird auch fuer Ignorieren verwendet.
+     Default ist query_verb(). Siehe unten fuer alternative Konstanten.
+   string msg_prefix (optional)
+     String, welcher ggf. im break_string() als indent verwendet wird.
+     Default ist 0 (kein Indent)
+   mixed origin (<object>) (optional)
+     Das die Meldung ausloesende Objekt, wird fuer Ignorieren verwendet.
+     Default: previous_object()
+
+
+BESCHREIBUNG
+============
+
+   ReceiveMsg() wird benutzt, um einem Lebewesen eine Nachricht zu senden.
+   Dabei ruft es das sonst uebliche tell_object() fuer Spieler bzw.
+   catch_tell() im NPC auf.
+
+   Gerade fuer Nachrichten an Spieler bietet die Methode weitere Features,
+   die bisher sonst haendisch zu implementieren waren:
+   1) Pruefung auf Empfangbarkeit, je nach 'msg_typ', zB
+      MT_LOOK nur an Nichtblinde
+      MT_LISTEN nur an Nichttaube
+      MT_DEBUG nur an Magier/Testspieler
+   2) Pruefen auf Ignorieren von
+      - Aktion ('msg_action')
+        - mit 'msg_action' || query_verb()
+      - Urheber ('origin')
+        - fuer sendende Spieler mit origin->query_realname()
+        - fuer sendende NPCs mit origin->Name(RAW))
+   3) Speicherung in der tmhist (Typ MT_COMM)
+   4) Speicherung im Kobold (Typ MT_COMM + aktiver Kobold)
+   5) Umbrechen unter Beruecksichtigung von indent, 'msg_typ'-Flags
+      fuer Umbruch und P_PREPEND_BS
+
+   Raeume definieren standardmaessig ebenfalls ein ReceiveMsg(), welches in
+   jedem Objekt im Raum ReceiveMsg() mit den uebergebenen Argumenten aufruft.
+   In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
+   ReceiveMsg() zurueckgelieferte Wert.
+
+
+RUeCKGABEWERT
+=============
+
+   > 0 fuer Erfolg, < 0 fuer Misserfolg, s.u.
+   MSG_DELIVERED    bei erfolgreicher Zustellung
+   MSG_BUFFERED     bei Zwischenspeicherung durch den Kobold
+
+   MSG_FAILED       nicht naeher spezifizierter Fehler bei Zustellung
+   MSG_IGNORED      Nachricht wurde ignoriert (Absender, origin)
+   MSG_VERB_IGN     Nachricht wurde ignoriert (Kommandoverb, msg_action)
+   MSG_MUD_IGN      Absendendes Mud wurde ignoriert.
+   MSG_SENSE_BLOCK  Passende Sinne des Empfaenger sind blockiert (z.B.
+                    blind, taub)
+   MSG_BUFFER_FULL  Kobold kann sich nichts mehr merken
+
+
+BEMERKUNGEN
+===========
+
+   Fuer saemtliche Alternativmeldungen im Falle einer nicht erfolgreich
+   zugestellten Nachricht ist der Aufrufer von ReceiveMsg() verantwortlich.
+
+   NPCs:
+   * ReceiveMsg() ruft zwecks Abwaertskompatibilitaet catch_tell() auf
+   * empfohlen ist, in NPCs nun ReceiveMsg() zu ueberschreiben.
+     * catch_tell() muss weiterhin fuer andere tell_object()
+       ueberschrieben  werden
+
+
+BEISPIELE
+=========
+
+   #1.1 Nachricht an einen Spieler, zB in der Wueste
+   this_player()->ReceiveMsg("Die Sonne brennt dir auf den Kopf.",
+                             MT_FEEL|MT_LOOK);
+
+   #1.2 Nachricht an einen Spieler von einem NPC mit Indent
+   // bei aktivem Editor+Kobold landet dieser Text auch im Kobold
+   this_player()->ReceiveMsg("Du haust ja ganz schoen rein!",
+                             MT_COMM|MT_FAR|MSG_DONT_STORE,
+                             MA_TELL,
+                             "Arkshat teilt dir mit: ");
+
+   #1.3 Nachricht an einen Spieler mit Fallback-Kaskade
+   // Achtung, bei MT_COMM oder Ignorieren gibt es natuerlich auch
+   // Misserfolgs-Rueckgaben. Bei einem normalen Kommando wie diesem
+   // hier ist das unproblematisch und daher sinnvoll:
+   if(this_player()->ReceiveMsg(
+        "Du drueckst den Knopf und es oeffnet sich knirschend "
+        "ein kleines Fach in der Wand.", MT_LOOK) < MSG_DELIVERED &&
+      this_player()->ReceiveMsg(
+        "Du drueckst den Knopf und irgend etwas scheint sich "
+        "knirschend zu oeffnen. Das Geraeusch kam von der Wand.",
+        MT_LISTEN) < MSG_DELIVERED) // leider blind UND taub ... also:
+     this_player()->ReceiveMsg(
+       "Du drueckst den Knopf und irgend etwas scheint zu passieren, "
+       "aber leider siehst und hoerst du nichts.", MT_FEEL);
+
+
+   #2.1 Im NPC als Empfaenger auf ein TM reagieren
+   public varargs int ReceiveMsg(string msg, int msg_typ, string msg_action,
+                                 string msg_prefix, mixed origin) {
+     int ret = MSG_DELIVERED;  // Default
+
+     // eine OOC-Kommunikation?
+     if(msg_typ&MT_COMM) {
+       if(strstr(msg, "hilfe")>=0)
+         if(environment(origin)==environment()) {
+           origin->ReceiveMsg("Ich werd dir gleich helfen!",
+                              MT_COMM|MSG_DONT_STORE, MA_TELL,
+                              "Arkshat teilt dir mit: ");
+         } else {
+           origin->ReceiveMsg("Hilf dir selbst, dann hilft dir Gott!",
+                              MT_COMM|MT_FAR|MSG_DONT_STORE,
+                              MA_TELL,
+                              "Arkshat teilt dir mit: ");
+         }
+       else if(...)
+       [...]
+     } else if(msg_typ&MT_LISTEN && msg_action==MA_SAY) {
+       [...]
+     }
+
+     return ret;
+   }
+
+
+   #3.1 als Sender an viele, Variante mit eigenem filter
+   // Achtung: siehe 3.3. send_room() loest vieles.
+   // Living nickt nur seinen Nichtgegnern zu
+   object *all = filter(all_inventory(environment(this_player())),
+                        #'living) - ({this_player()});
+   all -= this_player()->PresentEnemies();
+   all->ReceiveMsg(this_player()->Name()+
+                   " nickt dir verstohlen zu und scheint bereit.",
+                   MT_LOOK, MA_EMOTE);
+
+   #3.2 als Sender an viele, Variante mit einzelnem Iterieren
+   // Achtung: siehe 3.3. send_room() loest vieles.
+   // Living trinkt etwas, jeder im Raum soll es sehen oder hoeren
+   object ob = first_inventory(environment(this_player()));
+   do {
+     if(living(ob) && ob!=this_player())
+       ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
+                      MT_LOOK|MT_LISTEN,
+                      MA_DRINK);
+     ob = next_inventory(ob);
+   } while(ob);
+
+   #3.3 als Sender an viele, Variante mit send_room
+   // Living gruesst seine Freunde
+   // send_room() ruft ReceiveMsg mit allen entsprechenden Parametern
+   object *exclude = this_player()->PresentEnemies();
+   send_room(this_object(),
+             this_player()->Name()+" gruesst dich.",
+             MT_LOOK|MT_LISTEN,
+             MA_EMOTE,
+             0,
+             exclude);
+
+   #3.4 als Sender an viele mit send_room und ReceiveMsg()
+   // Living gruesst seine Freunde, seine Feinde sehen das
+   // send_room() ruft ReceiveMsg mit allen entsprechenden Parametern
+   object *exclude = this_player()->PresentEnemies();
+   send_room(this_object(),
+             this_player()->Name()+" gruesst dich.",
+             MT_LOOK|MT_LISTEN, MA_EMOTE, 0, exclude);
+   exclude->ReceiveMessage(
+     this_player()->Name()+" gruesst, aber nicht dich.",
+     MT_LOOK|MT_LISTEN, MA_EMOTE);
+
+
+KONSTANTEN FUER PARAMETER
+=========================
+
+   Saemtlich in "/sys/living/comm.h". Hier nicht notwendigerweise
+   immer aktuell oder vollstaendig.
+
+   <msg_typ>
+     MT_UNKNOWN      unspez. Nachrichtentyp (nicht verwenden). Es wird
+                     versucht, aufgrund <msg_action> den Typ zu erraten.
+     MT_LOOK         alles, was man sieht
+     MT_LISTEN       alles, was man hoert
+     MT_FEEL         alles, was man fuehlt
+     MT_TASTE        alles, was man schmeckt
+     MT_SMELL        alles, was man riecht
+     MT_MAGIC        alle sonstigen (uebersinnlichen) Wahrnehmungen
+     MT_NOTIFICATION Statusmeldungen, Kommandobestaetigungen
+     MT_COMM         alle OOC-Kommunikation, d.h. nicht durch o.g. Sinne
+                     abgedeckt.
+     MT_FAR          alles, was aus der Ferne / einem anderen Raum kommt.
+                     muss mit min. einem anderen Typ kombiniert werden
+     MT_DEBUG        Debugmeldungen, sehen nur Magier im Magiermodus
+     MT_NEWS         Mails & MPA
+
+     MSG_DONT_BUFFER Nachricht darf nicht im Kobold gespeichert werden
+     MSG_DONT_STORE  Nachricht darf nicht in die Comm-History
+     MSG_DONT_WRAP   Nachricht nicht per break_string umbrechen
+     MSG_DONT_IGNORE Nachricht kann nicht ignoriert werden
+
+     MSG_BS_LEAVE_LFS    wie BS_LEAVE_MY_LFS fuer break_string()
+     MSG_BS_SINGLE_SPACE wie BS_SINGLE_SPACE fuer break_string()
+     MSG_BS_BLOCK        wie BS_BLOCK fuer break_string()
+     MSG_BS_NO_PARINDENT wie BS_NO_PARINDENT fuer break_string()
+     MSG_BS_INDENT_ONCE  wie BS_INDENT_ONCE fuer break_string()
+     MSG_BS_PREP_INDENT  wie BS_PREPEND_INDENT fuer break_string()
+
+   <msg_action> (optional)
+     MA_UNKNOWN     Unspez. Aktion. Es wird der Default query_verb()
+                    benutzt bzw. versucht, die Aktion zu erraten.
+     MA_PUT         Jemand legt etwas hin und gibt jemanden etwas
+     MA_TAKE        Jemand nimmt etwas
+     MA_MOVE_IN     Jemand betritt den Raum
+     MA_MOVE_OUT    Jemand verlaesst den Raum
+     MA_MOVE        Jemand bewegt sich
+     MA_FIGHT       Jemand kaempft
+     MA_WIELD       Jemand zueckt eine Waffe
+     MA_UNWIELD     Jemand steckt eine Waffe weg
+     MA_WEAR        Jemand zieht etwas an
+     MA_UNWEAR      Jemand zieht etwas aus
+     MA_EAT         Jemand isst etwas
+     MA_DRINK       Jemand trinkt etwas
+     MA_SPELL       Jemand wirkt einen Spell
+     MA_LOOK        Jemand sieht etwas an, untersucht etwas
+     MA_LISTEN      Jemand horcht oder lauscht an etwas
+     MA_FEEL        Jemand betastet etwas
+     MA_SMELL       Jemand schnueffelt herum
+     MA_SENSE       Jemand macht eine uebersinnliche Wahrnehmung
+     MA_READ        Jemand liest etwas
+     MA_USE         Jemand benutzt etwas
+     MA_SAY         Jemand sagt etwas
+     MA_REMOVE      Etwas verschwindet
+     // MA_CHAT        Chatkrams (z.B. teile-mit, Teamkampfchat)
+     MA_CHANNEL     Ebenen
+     MA_EMOTE       (r)Emotes, Soulverben (remotes mit Typ MT_COMM|MT_FAR)
+     MA_SHOUT       Rufen (nicht: shout()!)
+     MA_SHOUT_SEFUN Rufen ueber shout(SE)
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: send_room(SE)
+   Lfuns:    TestIgnore(L)
+   Efuns:    tell_object(E), catch_tell(L), catch_msg(L)
+             query_verb(E), query_once_interactive(E), break_string(SE)
+
+13.03.2016, Zesstra
diff --git a/doc/sphinx/man/lfun/RegisterEvent b/doc/sphinx/man/lfun/RegisterEvent
new file mode 100644
index 0000000..a664b3b
--- /dev/null
+++ b/doc/sphinx/man/lfun/RegisterEvent
@@ -0,0 +1,113 @@
+
+RegisterEvent()
+***************
+
+
+FUNKTION
+========
+
+   int RegisterEvent(string eid, string fun, object listener);
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/eventd.c
+
+
+DEKLARIERT IN
+=============
+
+   /sys/events.h
+
+
+ARGUMENTE
+=========
+
+   string eid,
+     Die ID des Events, fuer den man sich registrieren will. Da dieser
+     String fuer alle Events jeweils eindeutig sein muss, empfiehlt es sich,
+     fuer eigene Events z.B. als Praefix den eigenen Magiernamen zu nehmen,
+     z.B. "zesstra_vulkanausbruch".
+     ACHTUNG: IDs, die mit '_evt_lib_' beginnen, sind AUSSCHLIESSLICH der
+     Mudlib vorbehalten!
+   string fun,
+     Name der Funktion, die im Objekt listener bei Auftreten des Events
+     gerufen werden soll.
+   object listener,
+     Das Objekt, das als Lauscher fuer diesen Event registriert werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Objekt 'listener' wird als Lauscher dieses Events registriert. Ab
+   diesem Moment wird immer dann, wenn ein Event mit der ID 'eid' ausgeloest
+   wird, in 'listener' die Funktion 'fun' aufgerufen (zeitverzoegert, meist
+   0-2s).
+
+
+
+   Die Funktion wird dabei immer mit 3 Argumenten aufgerufen:
+   listener->fun(eid, triggerob, data);
+   Hierbei ist 'eid' die jeweilige Event-ID und 'triggerob' ist das Objekt,
+   welches den Event ausloeste.
+   'data' kann jeder LPC-Datentyp sein und enthaelt die Daten, die das
+   triggernde Objekt an alle Listener uebermitteln will (damit sind Datentyp
+   und Inhalt komplett abhaengig vom Event!)
+
+   Existiert bisher noch kein Event mit der ID 'eid', wird implizit ein
+   neuer Event erstellt, der erstmal nur das sich gerade registrierende
+   Objekt als Lauscher hat.
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg, <=0 fuer Misserfolg.
+   1   - Erfolg, 'listener' wurde eingetragen.
+   -1  - falsche Argumente wurden uebergeben
+   -2  - nicht-oeffentlicher Event und 'listener' wurde nicht fuer diesen
+         Event freigegeben (momentan gibt es noch keine nicht-oeffentlichen
+         Events)
+   -3  - 'fun' in 'listener' ist nicht vorhanden oder nicht von aussen
+         aufrufbar (protected, static, private).
+
+
+BEMERKUNGEN
+===========
+
+   Wenn 'listener' bereits fuer den Event registriert wird, wird die alte
+   Registrierung ueberschrieben (als ggf. gilt dann der jetzt uebergebene
+   Funktionsname).
+   Die Funktion 'fun' sollte sparsam mit den Eval-Ticks umgehen. Momentan
+   ist die max. Menge an Ticks auf 30000 beschraenkt. Dies kann bei
+   Problemen auch jederzeit reduziert werden!
+   Der EVENTD merkt sich Event-Lauscher nicht ueber Reboots hinaus.
+   Sollte sich eine Blueprint anmelden, sich zerstoeren und neugeladen
+   werden, ist die neue Blueprint noch angemeldet, weil das neue Objekt
+   unter dem alten Namen wiedergefunden wird. Dies gilt _nicht_ fuer
+   Clones!
+
+
+BEISPIELE
+=========
+
+   1. Ein Objekt moechte ueber Spielertode informiert werden:
+        EVENTD->RegisterEvent(EVT_LIB_PLAYER_DEATH, "spieler_ist_tot",
+                              this_object());
+      Ab jetzt wird im Objekt jedes Mal, wenn ein Spieler stirbt, die
+      Funktion "spieler_ist_tot" aufgerufen.
+
+   2. Ein Objekt will informiert werden, wenn der Event
+      "boing_zwergenkoenig_angriff" ausgeloest wird:
+         EVENTD->RegisterEvent("boing_zwergenkoenig_angriff","alarm",
+                                this_object());
+
+
+SIEHE AUCH
+==========
+
+   events, eventd, UnregisterEvent(), TriggerEvent()
+
+Last modified: 15.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/RegisterHelperNPC b/doc/sphinx/man/lfun/RegisterHelperNPC
new file mode 100644
index 0000000..f8b6a2e
--- /dev/null
+++ b/doc/sphinx/man/lfun/RegisterHelperNPC
@@ -0,0 +1,114 @@
+
+RegisterHelperNPC()
+*******************
+
+
+FUNKTION
+========
+
+   public int RegisterHelperNPC(object npc, int flags);
+
+
+DEFINIERT IN
+============
+
+   /std/player/combat.c
+   /sys/living/combat.h
+
+
+ARGUMENTE
+=========
+
+   object npc
+     Objekt des helfenden NPC, der angemeldet werden soll.
+
+   int flags
+     ver-oder-te Konstanten, die die Art des Helfer-NPC beschreiben (s.u.)
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
+   angemeldet. Hierdurch kann spaeter herausgefunden werden, welche NPC
+   einem Spieler helfen und ggf. den von diesen verursachten Schaden im
+   Kampf dem Spieler zuzurechnen.
+
+   Die Flags sind eine der folgenden Konstanten oder eine beliebige durch
+   ver-oder-ung gebildete Kombination.
+
+   Momentan gibt es 2 Klassen von Helfer-NPC:
+   + GUILD_HELPER: der Helfer-NPC ist ein Gilden-NPC
+   + MISC_HELPER:  der Helfer-NPC ist irgendein NPC, der nicht zu einer Gilde
+                   gehoert.
+
+   Zusaetzlich zu den Klassen gibt es noch weitere Flags, die etwas ueber
+   den Helfer-NPC sagen:
+
+   + EXCLUSIVE_HELPER: dieser Helfer-NPC duldet keinen weiteren NPC der
+                       gleichen Klasse.
+   + ACTIVE_HELPER: ist dieses Flag gesetzt, ist der NPC mehr als nur reiner
+                    Schlagfaenger.
+
+   Wird EXCLUSIVE_HELPER gesetzt und es ist in der gleichen Klasse schon ein
+   NPC angemeldet, schlaegt die Registrierung fehl.
+   Ist in der gleichen Klasse bereits ein NPC mit EXCLUSIVE_HELPER
+   angemeldet, schlaegt die Registierung ebenfalls fehl, auch wenn der neue
+   NPC kein EXCLUSIVE_HELPER setzt.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn die Registrierung erfolgreich war.
+   0 sonst. In diesem Fall darf der NPC dem Spieler NICHT helfen, weder
+     passiv (Schlagfaenger), noch aktiv.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
+   auf passende Werte.
+   Bitte auf gar keinen Fall die numerischen Werte der Konstanten fuer
+   <flags> nutzen, diese koennen sich jederzeit aendern.
+
+
+BEISPIELE
+=========
+
+   1. Ein nicht-exklusiver Gilden-NPC, der dem Spieler folgt.
+   if (spieler->RegisterHelperNPC(this_object(), GUILD_HELPER) == 1) {
+     move(environment(spieler), M_GO);
+     spieler->AddPursuer(this_object());
+     // meldung ausgebene...
+   }
+
+   2a. Ein exklusiver Nicht-Gilden-NPC
+   if (spieler->RegisterHelperNPC(this_object(),
+                                  MISC_HELPER|EXCLUSIVE_HELPER) == 1) {
+     move(environment(spieler), M_GO);
+   }
+
+   2b. Ein nicht-exklusiver Nicht-Gilde-NPC, der nach 2a. kommt.
+   if (spieler->RegisterHelperNPC(this_object(), MISC_HELPER) == 1) {
+     // ... wenn der NPC aus 2a noch existiert, trifft dies hier nie zu.
+   }
+
+   3. Ein exklusiver NPC, der weitere Gilden- und sonstige NPC ausschliesst
+      (Solche Kombination bitte mit der Gilden-Balance abstimmen.)
+   if (spieler->RegisterHelperNPC(this_object(),
+                          MISC_HELPER|GUILD_HELPER|EXCLUSIVE_HELPER) == 1) {
+     move(environment(spieler), M_GO);
+   }
+
+   4. Die Registrierung ohne Klasse schlaegt fehl, z.B.:
+     spieler->RegisterHelperNPC(this_object(), 0);
+     spieler->RegisterHelperNPC(this_object(), EXCLUSIVE_HELPER);
+
+
+SIEHE AUCH
+==========
+
+   UnregisterHelperNPC()
+   P_HELPER_NPC
diff --git a/doc/sphinx/man/lfun/RegisterHelperObject b/doc/sphinx/man/lfun/RegisterHelperObject
new file mode 100644
index 0000000..af33a5c
--- /dev/null
+++ b/doc/sphinx/man/lfun/RegisterHelperObject
@@ -0,0 +1,145 @@
+
+RegisterHelperObject()
+**********************
+
+
+FUNKTION
+========
+
+   int RegisterHelperObject(object helper, int type,
+                            string|closure callback);
+
+
+DEFINIERT IN
+============
+
+   /std/living/helpers.c
+
+
+ARGUMENTE
+=========
+
+   object helper
+     Das Objekt, das bei einem Lebewesen als Hilfsobjekt registriert
+     werden soll. Das Objekt muss sich dazu nicht im Inventar des
+     Lebewesens befinden.
+   int type
+     Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
+     - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
+     - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung
+   string|closure callback
+      Closure oder Funktionsname als String; dies ist die Funktion, die im
+      Objekt helper gerufen wird, um abzufragen, ob es sich aktuell fuer
+      zustaendig erklaert oder nicht.
+
+
+BESCHREIBUNG
+============
+
+   Das Objekt "helper" wird als Hilfsobjekt fuer bestimmte Aktivitaeten wie
+   zum Beispiel Fliegen oder Tauchen registriert.
+
+
+
+   Die als Callback uebergebene Funktion wird bei der Abfrage der
+   P_*_HELPERS-Properties (siehe unten) aufgerufen und deren
+   Rueckgabewert in der Property vermerkt.
+
+
+
+   Der Rueckgabewert der Callback-Methode muss im Wertebereich
+   0..10000 liegen, wobei ein Wert von 0 bedeutet, dass das Hilfsobjekt
+   sich gerade nicht zustaendig fuehlt. Bei den Werten >0 ist es dem
+   abfragenden Objekt ueberlassen, wie es diese Daten bewertet.
+
+   Die Funktion muss existieren und public sein, d.h. von aussen gerufen
+   werden koennen.
+
+
+
+   Die Funktion bekommt das Spielerobjekt und das abfragende Objekt als
+   Parameter uebergeben.
+
+
+HINWEIS
+=======
+
+   Es ist ein Unterschied, ob sich ein Objekt via UnregisterHelperObject()
+   als Helfer austraegt, oder ob der Aufruf der Callback-Funktion eine
+   0 zurueckgibt. Im letzteren Fall ist das Objekt nach wie vor
+   registriert und kann trotzdem vom abfragenden Objekt als
+   funktionsfaehig angesehen werden.
+
+
+RUECKGABEWERTE
+==============
+
+    1  Objekt wurde erfolgreich registriert (HELPER_SUCCESS)
+   -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
+   -2  angegebenes Hilfsobjekt ist bereits fuer diese Art der
+       Unterstuetzung registriert (HELPER_ALREADY_LISTED)
+
+
+BEISPIELE
+=========
+
+   a) Eine luftgefuellte Blase will sich als Tauch-Helfer am Spieler
+   anmelden und ist zustaendig, solange sich noch Luft in ihr befindet:
+
+   int luft = 5; // globale Variable z.B. fuer Luftinhalt von 5 Atemzuegen
+
+   // Registrierung im Spielerobjekt
+   if ( TP->RegisterHelperObject(ME, HELPER_TYPE_AQUATIC,
+        "DivingCallback") == HELPER_SUCCESS ) {
+     tell_object(TP, "Du kannst jetzt mit Hilfe der Luftblase unter Wasser "
+       "atmen.\n");
+   }
+
+   // hier koennen natuerlich auch noch komplexere Dinge ablaufen, z.B.
+   // wenn ein Wert zurueckgegeben werden soll, der nicht nur 0 oder 1 ist.
+   public int DivingCallback(object player, object caller) {
+     return (environment(ME)==player && luft>0);
+   }
+
+   b) Ein Spieler befindet sich in einem Raum mit einem steilen Abhang, den
+   man hinunterspringen kann. Dies geht aber nur dann gefahrlos, wenn es
+   Hilfsobjekte gibt, die den (Segel)flug erlauben:
+
+   // cmd_springen() sei die Funktion, die bei der Eingabe des Befehls durch
+   // den Spieler aufgerufen wird.
+   static int cmd_springen(string str) {
+     [...]
+     // Property abfragen
+     mapping helpers = TP->QueryProp(P_AERIAL_HELPERS);
+     // Liste der Werte fuer die einzelnen Unterstuetzungsobjekte ermitteln
+     int *values = m_values(helpers,0);
+     // Spieler schonmal runterbewegen, die Folgen seines Handelns spuert
+     // er dann, wenn er unten angekommen ist.
+     TP->move(zielraum, M_GO|M_SILENT);
+     // "helpers" ist immer ein Mapping, das pruefen wir nicht extra.
+     // Wenn die Liste der Objekte noch mindestens ein Element enthaelt,
+     // nachdem alle unzustaendigen Hilfsobjekte (Rueckgabewert der
+     // Callback-Funktion == 0) rausgerechnet wurden, existiert mindestens
+     // ein geeignetes Hilfsobjekt.
+     if ( sizeof(values-({0})) ) {
+       tell_object(TP, "Sanft segelst Du den Hang hinab.\n");
+     }
+     else {
+       tell_object(TP, BS("Todesmutig springst Du den Hang hinab und "
+         "schlaegst hart unten auf. Du haettest vielleicht daran denken "
+         "sollen, Dir geeignete Hilfsmittel fuer so eine Aktion zu "
+         "besorgen.");
+       TP->Defend(800, ({DT_BLUDGEON}), ([SP_NO_ACTIVE_DEFENSE:1]), ME);
+     }
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  UnregisterHelperObject()
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+   Sonstiges:   /sys/living/helpers.h
+
+05.02.2015 Arathorn
diff --git a/doc/sphinx/man/lfun/RemoveAdjective b/doc/sphinx/man/lfun/RemoveAdjective
new file mode 100644
index 0000000..bd1796f
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveAdjective
@@ -0,0 +1,43 @@
+
+RemoveAdjective()
+*****************
+
+
+FUNKTION
+========
+
+   void RemoveAdjective(string|string* adj);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   adj
+        String oder Array von String mit den Adjektiven.
+
+
+BESCHREIBUNG
+============
+
+   Falls einige der vorhandenen Adjektive nicht mehr verwendet werden
+   sollen, koennen sie mit dieser Funktion entfernt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   AddAdjective(), RemoveId(), /std/thing/description.c
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveClass b/doc/sphinx/man/lfun/RemoveClass
new file mode 100644
index 0000000..26b0b79
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveClass
@@ -0,0 +1,38 @@
+
+RemoveClass()
+*************
+
+
+FUNKTION
+========
+
+   void RemoveClass(string|string* class);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   string/string* class       - String oder Stringarray der Klasse(n)
+
+
+BESCHREIBUNG
+============
+
+   Dem Objekt werden einige der mit AddClass() gesetzten Klassen wieder
+   entzogen.
+   Die allgemein verfuegbaren Klassen sind unter /sys/class.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   AddClass(), is_class_member()
+   P_CLASS
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveCmd b/doc/sphinx/man/lfun/RemoveCmd
new file mode 100644
index 0000000..6adffbf
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveCmd
@@ -0,0 +1,91 @@
+
+RemoveCmd()
+***********
+
+
+RemoveCmd(L)
+============
+
+
+FUNKTION
+========
+
+   varargs int RemoveCmd(mixed cmd, int norule, mixed id)
+
+
+DEFINIERT IN
+============
+
+   /std/thing/commands.c
+
+
+ARGUMENTE
+=========
+
+   com
+        String oder Array von Strings mit den zu entfernenden Kommandos.
+   norule
+        Kommandos mit Regeln werden nicht entfernt (ausser bei cmd==0)
+   id
+        eine ID, mit der man ein vorher mit dieser ID gespeichertes
+        Kommando eindeutig lvschen kann
+
+
+BESCHREIBUNG
+============
+
+   Mit AddCmd() hinzugefuegte Kommandos koennen mit diesem Befehl wieder
+   abgemeldet werden. Die entfernten Kommandos sind direkt nach dem
+   RemoveCmd()-Aufruf nicht mehr ansprechbar.
+
+   Wird ein Regelstring angegeben, so wird die identische AddCmd-
+   Regel entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer com eine 0, so werden alle definierten Kommandos
+   entfernt!
+
+
+RUECKGABEWERT
+=============
+
+   Anzahl der entfernten Kommandos.
+
+
+BEISPIELE
+=========
+
+   (1) AddCmd("test");
+   (2) AddCmd("test|teste&mit&parameter");
+   (3) AddCmd(({"test"}),1);
+   (4) AddCmd("test",0,0,"XYZ");
+   (5) AddCmd("test&mit&parameter",0,0,"XYZ");
+
+   RemoveCmd(0);
+   - entfernt alle Kommandos
+   RemoveCmd("test",1);
+   - entfernt (1) und (3)
+   RemoveCmd("test");
+   - entfernt (1), (3) und einen Teil von (2),
+     es verbleibt "teste&mit&parameter"
+   RemoveCmd("test|teste&mit&parameter"
+   - entfernt (2)
+   RemoveCmd("test",0,"XYZ");
+   - entfernt (4) und (5)
+   RemoveCmd("test",1,"XYZ");
+   - entfernt (4), nicht (5)
+   RemoveCmd(0,0,"XYZ");
+   - entfernt (4) und (5)
+
+
+SIEHE AUCH
+==========
+
+                       AddCmd(L), AddCmd_bsp
+   Sonstiges:          replace_personal(E), enable_commands(E), init(E)
+   Alternativen:       AddAction(L), add_action(E)
+
+24.Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/RemoveDefender b/doc/sphinx/man/lfun/RemoveDefender
new file mode 100644
index 0000000..1dec97a
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveDefender
@@ -0,0 +1,52 @@
+
+RemoveDefender()
+****************
+
+
+FUNKTION
+========
+
+   void RemoveDefender(object friend);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   friend
+     Objekt (normal Lebewesen), welches zukuenftig nicht mehr ueber
+     Angriffe informiert werden soll und diese auch nicht mehr abwehrt.
+
+
+BESCHREIBUNG
+============
+
+   Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
+   einen solchen Angriff per InformDefend() informieren oder ihnen
+   sogar die Moeglichkeit geben, per DefendOther() direkt in den
+   laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
+   Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
+   als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
+   Name der Funktion. Ausserdem besteht die Einschraenkung, dass diese
+   Objekte in der gleichen Umgebung sein muessen, wie das zu
+   verteidigende Lebewesen.
+   Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
+   abgespeichert und koennen dort abgerufen werden. Natuerlich kann
+   man alte Objekte direkt dort loeschen, jedoch sollte man die
+   hierfuer bereitgestellte Funktionen RemoveDefender() verwenden.
+   Zum Hinzufuegen von Eintraegen im Array steht ebenfalls eine
+   Funktion bereit: AddDefender().
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), InformDefend(), DefendOther(),
+   P_DEFENDERS, /std/living/combat.c
+
+Last modified: Thu Jul 29 18:48:45 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/RemoveDetail b/doc/sphinx/man/lfun/RemoveDetail
new file mode 100644
index 0000000..48a0330
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveDetail
@@ -0,0 +1,80 @@
+
+RemoveDetail()
+**************
+
+
+FUNKTION
+========
+
+   void RemoveDetail(mixed *keys);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche Details entfernt!
+
+
+BEISPIEL
+========
+
+   Ein kleines Beispiel, bei dem eine Oeffnung erscheint und wieder
+   verschwindet, je nachdem, ob man eine Luke oeffnet oder schliesst.
+     int oeffneLuke(string str);
+     int schliesseLuke(string str);
+     ...
+     AddCmd("oeffne", #'oeffneLuke);
+     AddCmd("schliesse", #'schliesseLuke);
+     ...
+     int oeffneLuke(string str) {
+       if(str!="luke" || GetDetail("oeffnung"))
+         return 0;
+       AddDetail("oeffnung","Du siehst eine kleine Oeffnung.\n");
+       return 1;
+     }
+
+     int schliesseLuke(string str) {
+       if(str!="luke" || !GetDetail("oeffnung"))
+         return 0;
+       RemoveDetail("oeffnung"); // Detail wieder entfernen
+       return 1;
+     }
+
+
+BEMERKUNGEN
+===========
+
+   Da intern Details und SpecialDetails im gleichen Mapping verwaltet
+   werden, lassen sich mit dieser Funktion auch SpecialDetails
+   entfernen.
+   Die Funktion RemoveSpecialDetail() sollte also nicht genutzt werden!
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+8. Juli 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/RemoveExit b/doc/sphinx/man/lfun/RemoveExit
new file mode 100644
index 0000000..6854229
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveExit
@@ -0,0 +1,49 @@
+
+RemoveExit()
+************
+
+
+FUNKTION
+========
+
+   void RemoveExit(string|string* cmd);
+
+
+DEFINIERT IN
+============
+
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   string/string* cmd
+        Richtung(en), die entfernt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Die in cmd angegebenen Ausgaenge werden wieder entfernt.
+
+   Ist cmd = 0, so werden alle Ausgaenge entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Ausgaenge werden an der gleichen Stelle gespeichert:
+   - RemoveExit() greift auf die gleichen Daten wie RemoveSpecialExit()
+     zu, entfernt also auch spezielle Ausgaenge!
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits()
+   RemoveSpecialExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+31.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveExtraLook b/doc/sphinx/man/lfun/RemoveExtraLook
new file mode 100644
index 0000000..0369992
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveExtraLook
@@ -0,0 +1,65 @@
+
+RemoveExtraLook()
+*****************
+
+RemoveExtraLook()
+
+
+int RemoveExtraLook(string look);
+=================================
+
+
+DEFINIERT IN
+============
+
+   /std/living/description.c
+
+
+BESCHREIBUNG
+============
+
+   Der Extralook erscheint in der Langbeschreibung des Lebewesens.
+   Eintraege koennen mit dieser Funktion (vorzeitig) wieder entfernt werden.
+
+
+ARGUMENTE
+=========
+
+   - string look:
+     Schluesselwort, unter dem der Eintrag, den man entfernen moechte, von
+     AddExtraLook() registriert wurde.
+
+
+RUECKGABEWERTE
+==============
+
+   > 0, falls der Eintrag erfolgreich entfernt wurde.
+   < 0 sonst.
+     -1: keinen (gueltigen) <key> uebergeben.
+     -2: kein Eintrag fuer <key> gefunden.
+
+
+BEMERKUNGEN
+===========
+
+   Beim Entfernen mit dieser Funktion wird die "Endemeldung" des entfernten
+   Eintrages nicht ausgegeben.
+
+
+BEISPIELE
+=========
+
+   # Extralook registrieren.
+   living->AddExtraLook("@WER1 wird von einer Horde Daemonen verfolgt.",
+                        "ennox_daemonenhordenverfolgerlook");
+   # Nun kann der Eintrag auch wieder entfernt werden:
+   living->RemoveExtraLook("ennox_daemonenhordenverfolgerlook");
+
+
+SIEHE AUCH
+==========
+
+   AddExtraLook(),
+   P_INTERNAL_EXTRA_LOOK
+
+14.05.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveFixedObject b/doc/sphinx/man/lfun/RemoveFixedObject
new file mode 100644
index 0000000..22179de
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveFixedObject
@@ -0,0 +1,62 @@
+
+RemoveFixedObject()
+*******************
+
+
+FUNKTION
+========
+
+   void RemoveFixedObject(string filename);
+
+
+DEFINIERT IN
+============
+
+   /std/laden.c
+
+
+ARGUMENTE
+=========
+
+   str
+     Dateiname des Objektes, welches nicht mehr dauerhaft im Laden sein
+     soll.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Objekte, die mittels der Funktion AddFixedObject() im Laden
+   eingebunden werden, sind dort staendig verfuegbar. Um diesen Zustand
+   wieder aufzuheben, kann man sie mittels dieser Funktion wieder
+   entfernen. Eventuell im Lager befindliche Objekte dieser Art werden
+   hierbei nicht zerstoert und koennen durchaus noch gekauft werden,
+   bis sie alle sind. Danach gibt es sie dort nicht mehr!
+
+
+BEISPIELE
+=========
+
+   Im allen Laeden gibt es schon ein Objekt, welches dort
+   standardmaessig erhaeltlich ist. Folgende Zeile sorgt dafuer:
+     AddFixedObject("/obj/boerse",80,({"boerse","geldboerse"}));
+   Wenn man das in seinem Laden nicht wuenscht, kann man die Geldboerse
+   mittels folgender Zeile wieder aus dem Laden loeschen:
+     RemoveFixedObject("/obj/boerse");
+   Es ist nicht moeglich, keine oder mehrere Objekte anzugeben, um auf
+   diese Weise alle bzw. mehrere Objekte als nicht mehr staendig
+   verfuegbar zu markieren.
+
+
+SIEHE AUCH
+==========
+
+   AddFixedObject(), SetStorageRoom(), /std/store.c
+
+Last modified: Thu Jun 18 14:19:19 1998 by Patryn
diff --git a/doc/sphinx/man/lfun/RemoveFromMenu b/doc/sphinx/man/lfun/RemoveFromMenu
new file mode 100644
index 0000000..fdcb916
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveFromMenu
@@ -0,0 +1,55 @@
+
+RemoveFromMenu()
+****************
+
+
+FUNKTION
+========
+
+   int RemoveFromMenu(mixed ids)
+
+
+DEFINIERT IN
+============
+
+   /std/pub.c
+
+
+ARGUMENTE
+=========
+
+   ids - string oder string*
+         String oder Array von Strings, mit denen sich die Speise bzw.
+         das Getraenk beim Bestellen ansprechen laesst.
+
+
+RUECKGABEWERT
+=============
+
+   int - Anzahl entfernter Einzelmenueeintraege
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Methode kann man id-basiert Speisen und Getraenke
+   wieder von der Karte entfernen (wenn zB nur saisonbasiert
+   bestimmte Dinge angeboten werden sollen).
+
+
+BEMERKUNGEN
+===========
+
+   - sich zwischen zwei Speisen ueberschneidende IDs fuehren zu
+     undefiniertem Verhalten!
+   - bei Benutzung von RemoveFromMenu sollte man in Delay-Speisen oder
+     -Getraenken auf die Nutzung vom ident-Parameter in den
+     Serviernachrichten verzichten (es sei, man weiss was man tut)
+
+
+SIEHE AUCH
+==========
+
+   AddToMenu(), AddFood(), AddDrink(), /sys/pub.h
+
+15. Februar 2009 Gloinson
diff --git a/doc/sphinx/man/lfun/RemoveFunc b/doc/sphinx/man/lfun/RemoveFunc
new file mode 100644
index 0000000..bf01ae9
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveFunc
@@ -0,0 +1,113 @@
+
+RemoveFunc()
+************
+
+
+FUNKTION
+========
+
+   int RemoveFunc(object ruest, int info, object user);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten (fuer /std/clothing/wear)
+
+
+ARGUMENTE
+=========
+
+   ruest (object)
+        Die Ruestung/Kleidung, die ausgezogen werden soll.
+   info (int)
+        Bei (info&M_SILENT) wird keine Meldung ueber das Ausziehen
+        ausgegeben.
+        Bei (info&M_NOCHECK) wird die Kleidung ausgezogen, egal was diese
+        Funktion zurueckgibt. Dies tritt insbesondere dann auf, wenn der
+        Spieler, der die Ruestung traegt, stirbt und die Ruestung in
+        die Leiche bewegt wird.
+   user (object)
+        Das Lebewesen, welches die Ruestung/Kleidung gerade traegt und sie
+        ausziehen will.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
+   Ruestung <ruest> von this_player() ausziehen laesst oder nicht.
+   Kann die Ruestung ausgezogen werden, so muss ein Wert ungleich 0
+   zurueckgegeben werden.
+
+
+
+   Diese Funktion meldet nur einen _Wunsch_ an. Dieser kann ignoriert
+   werden (z.B. bei bestimmten Bewegungen, Tod des Spielers etc.).
+   Unabhaengig vom Wert dieser Funktion kann das Ausziehen noch Scheitern
+   oder Erzwungen werden.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
+   benutzt bitte InformUnwear().
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn sich die Ruestung nicht ausziehen laesst, ansonsten ungleich 0.
+
+
+BEMERKUNGEN
+===========
+
+   Verfluchte Ruestungen, die sich erst nach Entfernung des Fluches wieder
+   ausziehen lassen, sollte man besser mit P_CURSED realisieren (man spart
+   die RemoveFunc() ein).
+   Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
+   ist.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+BEISPIELE
+=========
+
+   Ein Umhang, den man nur mit guter Einstellung wieder ausziehen kann:
+
+   inherit "std/armour.c";
+
+   #include <properties.h>
+   #include <moving.h>
+
+   create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_CLOAK);
+     /* zig weitere SetProp's, um den Umhang zu konfigurieren */
+
+     /* RemoveFunc() ist im Umhang selbst zu finden */
+     SetProp(P_REMOVE_FUNC, this_object());
+   }
+
+   int RemoveFunc(object me, int info, object user)
+   {
+     if (user->QueryProp(P_ALIGN) >= 0 || (info&M_NOCHECK))
+       return 1;   /* gute Charaktere koennen den Umhang ausziehen */
+
+     /* Ansonsten geben wir evtl. einen entsprechenden Hinweis aus: */
+     if (!(info&M_SILENT))
+         write( "Der Umhang wird von Deiner Bosheit so sehr "
+               +"angezogen, dass Du ihn\nnicht mehr ausziehen kannst!\n");
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+   DoUnwear(), DoWear(), InformWear(), InformUnwear()
+   /std/clothing/wear.c
+
+02.07.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveId b/doc/sphinx/man/lfun/RemoveId
new file mode 100644
index 0000000..efd709d
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveId
@@ -0,0 +1,44 @@
+
+RemoveId()
+**********
+
+
+FUNKTION
+========
+
+   void RemoveId(string|string* ids);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   ids
+        String oder Array von Strings mit den Bezeichnungen, die aus der
+        Liste der IDs des Objektes entfernt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt sich nicht mehr mit gewissen Bezeichnern ansprechen
+   lassen soll, kann man diese mit dieser Funktion entfernen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   AddId(), RemoveAdjective(), /std/thing/description.c
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveInfo b/doc/sphinx/man/lfun/RemoveInfo
new file mode 100644
index 0000000..75485c6
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveInfo
@@ -0,0 +1,45 @@
+
+RemoveInfo()
+************
+
+
+FUNKTION
+========
+
+   void RemoveInfo(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+ARGUMENTE
+=========
+
+   key        zu loeschender Schluessel
+
+
+BESCHREIBUNG
+============
+
+   Loescht die Antwort zum entsprechenden Frageschluessel.
+
+
+BEISPIEL
+========
+
+   // erstellen und loeschen
+   AddInfo("gold","sagt: Ich habe keines.\n");
+   RemoveInfo("gold");
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(L), AddSpecialInfo(L)
+   P_PRE_INFO, P_DEFAULT_INFO
+   /std/npc/info.c
+
+17.Aug.2003 Gloinson
diff --git a/doc/sphinx/man/lfun/RemoveItem b/doc/sphinx/man/lfun/RemoveItem
new file mode 100644
index 0000000..a21cdc2
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveItem
@@ -0,0 +1,64 @@
+
+RemoveItem()
+************
+
+
+FUNKTION
+========
+
+   void RemoveItem(mixed file);
+
+
+DEFINIERT IN
+============
+
+   /std/room/items.c
+
+
+ARGUMENTE
+=========
+
+   file
+        String oder Array von Strings mit dem Namen des zu entfernenden
+        Objekts.
+
+
+BESCHREIBUNG
+============
+
+   Das mit AddItem(file) dem Raum hinzugefuegte Objekt wird wieder aus
+   der Liste der Objekte entfernt.
+   Wurde bei AddItem() ein Array von Dateinamen uebergeben, so muss das
+   selbe Array auch bei RemoveItem() uebergeben werden!
+   Falls das Objekt, das durch den AddItem()-Aufruf erzeugt wurde, sich
+   noch im Raum befindet, wird es durch den RemoveItem()-Aufruf zerstoert.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Ein muellschluckerfreier Laden laesst sich wie folgt erzeugen:
+
+   inherit "/std/laden";
+   #include <properties.h>
+
+   create()
+   {
+     ::create();  // Hier wird u.a. der Muellschlucker erzeugt
+
+     RemoveItem("/obj/entsorg"); // und weg damit!
+
+     SetProp(...);  // und die normale Beschreibung...
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddItem(), /std/room/items.c
diff --git a/doc/sphinx/man/lfun/RemoveKnownPotion b/doc/sphinx/man/lfun/RemoveKnownPotion
new file mode 100644
index 0000000..f7af610
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveKnownPotion
@@ -0,0 +1,45 @@
+
+RemoveKnownPotion()
+*******************
+
+
+FUNKTION
+========
+
+   int RemoveKnownPotion(int nr)
+
+
+DEFINIERT IN
+============
+
+   /std/player/potion.c
+
+
+ARGUMENTE
+=========
+
+   int nr       Nummer eines ZTs
+
+
+BESCHREIBUNG
+============
+
+   Entfernt einen bekannten ZT aus einen Spieler. Nur vom Orakel rufbar.
+
+
+RUeCKGABEWERT
+=============
+
+   1  Erfolg
+   -1 fehlende Berechtigung
+   -2 Nummer nicht eingetragen
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), AddKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/lfun/RemovePluralId b/doc/sphinx/man/lfun/RemovePluralId
new file mode 100644
index 0000000..23f394a
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemovePluralId
@@ -0,0 +1,49 @@
+
+RemovePluralId()
+****************
+
+
+FUNKTION
+========
+
+   void RemovePluralId(mixed id);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   id
+        Identfikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner entfernt, mit denen sich
+   mehrere Einheiten der Menge ansprechen lassen.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   RemoveSingularId(), AddPluralId(), AddId(), id(), /std/unit.c
+
+Last modified: Mon Jul 14 11:30:00 1997 by Silvana
diff --git a/doc/sphinx/man/lfun/RemovePursuer b/doc/sphinx/man/lfun/RemovePursuer
new file mode 100644
index 0000000..cf8f0dc
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemovePursuer
@@ -0,0 +1,53 @@
+
+RemovePursuer()
+***************
+
+
+RemoveRursuer()
+===============
+
+
+FUNKTION
+========
+
+   void RemovePursuer(object pursuer)
+
+
+ARGUMENTE
+=========
+
+   pursuer: Objekt, das aus der Verfolgerliste des Objektes, in dem
+            RemovePursuer aufgerufen wurde, ausgetragen werden soll.
+
+
+FUNKTION
+========
+
+   Durch den Aufruf von RemovePursuer in einem Objekt, welches living() ist,
+   wird das Object, welches als Argument uebergeben wurde aus der Liste
+   der Verfolger ausgetragen.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNG
+=========
+
+   keine
+
+
+BEISPIELE
+=========
+
+   find_player("jof")->RemovePursuer(find_player("kirk"))
+   Danach wird Jof nicht mehr von Kirk verfolgt.
+
+
+SIEHE AUCH
+==========
+
+   "AddPursuer", "PreventFollow"
diff --git a/doc/sphinx/man/lfun/RemoveReadDetail b/doc/sphinx/man/lfun/RemoveReadDetail
new file mode 100644
index 0000000..495dfe3
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveReadDetail
@@ -0,0 +1,50 @@
+
+RemoveReadDetail()
+******************
+
+
+FUNKTION
+========
+
+   void RemoveReadDetail(string|string* keys);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+        String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt die in keys angegebenen Details aus der Liste der vorhandenen
+   lesbaren Details.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer keys eine 0, so werden saemtliche lesbaren Details
+   entfernt!
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveResistanceModifier b/doc/sphinx/man/lfun/RemoveResistanceModifier
new file mode 100644
index 0000000..ca14c74
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveResistanceModifier
@@ -0,0 +1,57 @@
+
+RemoveResistanceModifier()
+**************************
+
+
+FUNKTION
+========
+
+   varargs void RemoveResistanceModifier(string add);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   string add:
+    Ein eventueller Identifikator fuer einen gesetzten Modifikator.
+
+
+BESCHREIBUNG
+============
+
+   Die von einem Objekt im Zielobjekt gesetzte Resistenz wird geloescht,
+   der Schluessel add wird dazu benutzt, eine bestimmte Resistenz zu
+   loeschen (so kann ein setzendes Objekt mehrere verschiedene Re-
+   sistenzen setzen und selektiv loeschen).
+
+
+BEISPIELE
+=========
+
+   // unser Oel aus AddResistanceModifier() verbrennt endgueltig
+   varargs void trigger_sensitive_attack() {
+    ...
+    if(environment() && living(environment())) {
+     environment()->RemoveResistanceModifier("oel");
+     tell_object(environment(),"Das Oel verbrennt endgueltig.\n");
+    }
+    remove();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     AddResistanceModifier, P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
+
+29.Apr 2002, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/RemoveRoute b/doc/sphinx/man/lfun/RemoveRoute
new file mode 100644
index 0000000..61fb082
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveRoute
@@ -0,0 +1,42 @@
+
+RemoveRoute()
+*************
+
+
+FUNKTION
+========
+
+   void RemoveRoute();
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Der Transporter wird angehalten und der gesamte Fahrplan wird
+   geloescht. Damit lassen sich zum Beispiel variable Routen konstruieren.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   AddRoute(), AddMsg(), AddFun(), /std/transport.c
+
+Last modified: Wed May 8 10:24:26 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/RemoveSensitiveObject b/doc/sphinx/man/lfun/RemoveSensitiveObject
new file mode 100644
index 0000000..0678e70
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSensitiveObject
@@ -0,0 +1,79 @@
+
+RemoveSensitiveObject()
+***********************
+
+
+FUNKTION
+========
+
+   void RemoveSensitiveObject(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/container/inventory.c
+   generalizes /std/living/inventory.c
+
+
+ARGUMENTE
+=========
+
+   ob - zu entfernendes Objekt
+
+
+BESCHREIBUNG
+============
+
+   Entfernt ob aus den Benachrichtigungslisten des Containers.
+   Wird von thing/moving.c im alten Environment gerufen, wenn
+   P_SENSITIVE gesetzt ist.
+   Ruft dazu RemoveSensitiveObjectFromList().
+
+
+BEMERKUNGEN
+===========
+
+   Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
+   dann muss man auch RemoveSensitiveObject im Environment
+   auch selbst rufen!
+
+
+BEISPIEL
+========
+
+   // Fackel (inheriting lightsource)
+   void create() {
+   ...
+     SetProp(P_SENSITIVE,
+      ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
+   ...
+   }
+
+   // wenn die Fackel geloescht wird, verliert sie ihre aktive
+   // Eigenschaft und muss das dem environment() mitteilen
+   static int extinguish(string str) {
+    int i;
+    i=::extinguish(str);
+    if(i && QueryProp(P_LIGHT)<=0) {
+     SetProp(P_SENSITIVE,0);
+     if(environment())
+      environment()->RemoveSensitiveObject(this_object());
+    }
+    return i;
+   }
+
+   - empfindliche Objekte wie Eiszapfen koennen jetzt wieder gefahrlos
+     in das selbe environment() bewegt werden
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
+
+25.Apr.2001, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/RemoveSingularId b/doc/sphinx/man/lfun/RemoveSingularId
new file mode 100644
index 0000000..fcf0c3d
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSingularId
@@ -0,0 +1,49 @@
+
+RemoveSingularId()
+******************
+
+
+FUNKTION
+========
+
+   void RemoveSingularId(mixed id);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   id
+        Identifikationsstring oder Array von Strings
+
+
+BESCHREIBUNG
+============
+
+   Es werden ein oder mehrere Bezeichner entfernt, mit denen sich eine
+   einzelne Einheit ansprechen laesst.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   siehe /items/money.c
+
+
+SIEHE AUCH
+==========
+
+   AddSingularId(), RemovePluralId(), AddId(), id(), /std/unit.c
+
+Last modified: Mon Jul 14 11:31:00 1997 by Silvana
diff --git a/doc/sphinx/man/lfun/RemoveSkillAttributeModifier b/doc/sphinx/man/lfun/RemoveSkillAttributeModifier
new file mode 100644
index 0000000..5fa69b2
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSkillAttributeModifier
@@ -0,0 +1,83 @@
+
+RemoveSkillAttributeModifier()
+******************************
+
+
+FUNKTION
+========
+
+   public int RemoveSkillAttributeModifier(object caster, string atrname)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   <atrname>   string
+               Name des Skill-Attributes, von dem der Modifikator geloescht
+               werden soll.
+               (Definiert in /sys/living/skill_attributes.h)
+
+   <caster>    object
+               Objekt, dessen Modifikator wieder entfernt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt den Modifikator, den Object <caster> gesetzt hat, wieder. Dies
+   ist nur notwendig, wenn der Effekt vor Ablauf der Gueltigkeit des
+   Modifikators aufgehoben werden soll.
+
+
+RUECKGABEWERT
+=============
+
+   SA_MOD_REMOVED         wenn der Modifikator geloescht wurde
+   SA_MOD_NOT_FOUND       wenn der Modifikator nicht gefunden wurde
+   Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt es
+   sich, auf == SA_MOD_REMOVED zu pruefen.
+
+
+BEISPIELE
+=========
+
+   // eine Waffe setzt im InformWield() einen Bonus auf SA_DAMAGE fuer 10min
+   protected void InformWield(object pl, int silent) {
+     if (objectp(pl)) {
+       if (pl->ModifySkillAttribute(SA_DAMAGE, 20, 600) == SA_MOD_OK)
+         // Erfolgsmeldung an Spieler
+       else
+         // Misserfolgsmeldung an Spieler.
+     }
+   }
+
+   // wenn der Spieler die Waffe vor Ablauf der 600s wegstecken will, muss
+   // der Bonus natuerlich auch wieder raus
+   protected void InformUnwield(object pl, int silent) {
+     if (objectp(pl))
+       pl->RemoveSkillAttributeModifier(this_object(), SA_DAMAGE);
+       // falls kein solcher Mod mehr gesetzt war, liefert RSAM()
+       // SA_MOD_NOT_FOUND zurueck. Auswertung des Rueckgabewertes ist
+       // vernachlaessigt.
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+13.08.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveSmells b/doc/sphinx/man/lfun/RemoveSmells
new file mode 100644
index 0000000..b56fe27
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSmells
@@ -0,0 +1,57 @@
+
+RemoveSmells()
+**************
+
+
+FUNKTION
+========
+
+   void RemoveSmells(string|string* keys);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
+   nur koennen hiermit Gerueche entfernt werden:
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche Details entfernt!
+
+
+BEISPIEL
+========
+
+   Zuerst erzeugen wir ein kleines Detail, mit dem wir am Rauch riechen
+   koennen. Das Feuer brennt langsam ab und das Detail wird wieder
+   entfernt:
+
+     AddSmells("rauch",* H U S T *\n");
+     call_out(#'RemoveSmells, 100, "rauch");
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveSounds b/doc/sphinx/man/lfun/RemoveSounds
new file mode 100644
index 0000000..4ef4263
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSounds
@@ -0,0 +1,66 @@
+
+RemoveSounds()
+**************
+
+
+FUNKTION
+========
+
+   void RemoveSounds(string|string* keys);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
+   nur koennen hiermit Gerauesche entfernt werden:
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche Details entfernt!
+
+
+BEISPIEL
+========
+
+   Wir lassen etwas Musik spielen und wenn wir den Plattenspieler
+   ausmachen, dann endet sie und man hoert auch nichts mehr:
+
+     int ausmachen(string str);
+     ...
+     AddSounds(({"musik","hip-hop"}) ,"Klingt nach Hip-Hop...\n");
+     AddCmd("mach|mache&plattenspieler&aus", #'ausmachen,
+            "Was willst du (aus)machen?|Willst du den ausmachen?^");
+     ...
+     int ausmachen(string str) {
+       if(!GetDetail("musik", 0, SENSE_SOUND)) // existiert Musikdetail ?
+         return("Der Plattenspieler laeuft doch gar nicht!\n", 1);
+       RemoveSounds(0);
+        return 1;
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+8. Juli 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/RemoveSpecialDetail b/doc/sphinx/man/lfun/RemoveSpecialDetail
new file mode 100644
index 0000000..96a7a39
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSpecialDetail
@@ -0,0 +1,60 @@
+
+RemoveSpecialDetail()
+*********************
+
+
+VERALTET RemoveSpecialDetail()
+==============================
+
+
+FUNKTION
+========
+
+   void RemoveSpecialDetail(string|string* keys);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt die in keys angegebenen Details aus der Liste der
+   vorhandenen SpecialDetails.
+
+   VERALTET: Bitte RemoveDetail() benutzen.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer keys eine 0, so werden saemtliche SpecialDetails
+   entfernt!
+   Da intern Details und SpecialDetails im gleichen Mapping verwaltet
+   werden, lassen sich mit dieser Funktion auch Details entfernen.
+   Man sollte diese Funktion deshalb nicht mehr verwenden, siehe
+   AddDetail mit Closures.
+
+
+SIEHE AUCH
+==========
+
+   Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveSpecialExit b/doc/sphinx/man/lfun/RemoveSpecialExit
new file mode 100644
index 0000000..ee2e8e8
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveSpecialExit
@@ -0,0 +1,49 @@
+
+RemoveSpecialExit()
+*******************
+
+
+FUNKTION
+========
+
+   void RemoveSpecialExit(string|string* cmd);
+
+
+DEFINIERT IN
+============
+
+   /std/room/exits
+
+
+ARGUMENTE
+=========
+
+   string/string* cmd
+        Richtung(en), die entfernt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Die in cmd angegebenen Ausgaenge werden wieder entfernt.
+
+   Ist cmd = 0, so werden alle Ausgaenge entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Ausgaenge werden an der gleichen Stelle gespeichert:
+   - RemoveSpecialExit() greift auf die gleichen Daten wie RemoveExit()
+     zu, entfernt also auch normale Ausgaenge!
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), AddGuardedExit(), GetExits()
+   RemoveExit(),
+   P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+31.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/RemoveTouchDetail b/doc/sphinx/man/lfun/RemoveTouchDetail
new file mode 100644
index 0000000..4f6ace3
--- /dev/null
+++ b/doc/sphinx/man/lfun/RemoveTouchDetail
@@ -0,0 +1,75 @@
+
+RemoveTouchDetail()
+*******************
+
+
+FUNKTION
+========
+
+   void RemoveTouchDetail(string|string* keys);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den zu entfernenden Details.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
+   nur koennen hiermit (ab)tastbare Details entfernt werden:
+   Entfernt die in <keys> angegebenen Details aus der Liste der
+   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
+   saemtliche tastbaren/fuehlbaren Details entfernt!
+
+
+BEISPIEL
+========
+
+   Zuerst wird ein Detail "boden" erzeugt, das abgetastet werden kann.
+   Dieses kann durch Betaetigen eines Knopfes, aeh, entfernt werden.
+
+     int knopf();
+     void knopf2();
+
+     AddTouchDetail("boden", "Er ist aus Stein.\n");
+     AddCmd("drueck|druecke&knopf", #'knopf, "Was willst du druecken?");
+
+     void knopf() {
+       tell_room(this_object(), break_string(
+         this_player()->Name(WER)+" drueckt einen Knopf, der dabei satt "+
+         "klackt.", 78));
+
+       if(find_call_out(#'knopf2)<=0)
+         call_out(#'knopf2, 1);
+     }
+
+
+
+     void knopf2() {
+       tell_room(this_object(), "Uhoh. Der Boden klappt weg. Du faellst.");
+       RemoveTouchDetails("boden");
+     }
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/ResizeRingBuffer b/doc/sphinx/man/lfun/ResizeRingBuffer
new file mode 100644
index 0000000..17c3332
--- /dev/null
+++ b/doc/sphinx/man/lfun/ResizeRingBuffer
@@ -0,0 +1,66 @@
+
+ResizeRingBuffer()
+******************
+
+
+FUNKTION
+========
+
+   protected struct std_ringbuffer buf RingBufferPut(
+                                                  struct std_ringbuffer buf,
+                                                  int size);
+
+
+DEFINIERT IN
+============
+
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   buf  - Ringpuffer, dessen Groesse geaendert werden soll
+   size - neue Groesse (int)
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion erstellt einen neuen Ringpuffer der Groesse <size>, welcher
+   den gleichen Modus hat wie <buf> und die gleichen Daten enthaelt.
+   Ist der neue Puffer kleiner als <buf>, so kommt es hierbei zu
+   Datenverlust.
+   <buf> wird nicht veraendert. Ist die Groesse von <buf> gleich der
+   neuen gewuenschten Groesse, wird letztendlich der Ringpuffer kopiert.
+   Je nach Groesse von <buf> und Wert von <size> kann dies eine teure
+   Angelegenheit sein.
+
+
+RUeCKGABEWERT
+=============
+
+   Der neue Ringpuffer mit Groesse <size>.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer = CreateRingBuffer(5, MODE_FIFO);
+   // 5 Werte reinschreiben:
+   foreach(int i: 5) RingBufferPut(buffer, i);
+   // Groesse aendern
+   buffer = ResizeRingBuffer(buffer, 10);
+   // Daten als Array ermitteln:
+   mixed array = RingBufferGet(buffer);
+   // array enthaelt: ({0,0,0,0,0,0,1,2,3,4})
+
+
+SIEHE AUCH
+==========
+
+   RingBufferGet(), RingBufferPut(), CreateRingBuffer()
+
+23.05.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/RingBufferGet b/doc/sphinx/man/lfun/RingBufferGet
new file mode 100644
index 0000000..128807f
--- /dev/null
+++ b/doc/sphinx/man/lfun/RingBufferGet
@@ -0,0 +1,63 @@
+
+RingBufferGet()
+***************
+
+
+FUNKTION
+========
+
+   protected mixed RingBufferGet(struct std_ringbuffer buf);
+
+
+DEFINIERT IN
+============
+
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   buf - Ringpuffer, welcher ausgeben werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Daten des Ringpuffers in Form eines Arrays
+   zurueck, welches dann weiterverarbeitet werden kann.
+   Die Reihenfolge der Daten ist entsprechend des beim Anlegen des
+   Ringpuffers angebenen Modes:
+   MODE_FIFO: aelteste Daten zuerst
+   MODE_LIFO: neueste Daten zuerst
+
+
+BEMERKUNGEN
+===========
+
+   Aenderungen am Array beeinflussen die Daten des Ringpuffers nicht. Aber:
+   Hierbei werden die Daten nicht tief kopiert. D.h. enthaelt der Ringpuffer
+   Referenzen auf weitere Daten, zeigen der Ringpuffer und das hier
+   gelieferte Array auf die gleichen Daten.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
+   // 15 Werte reinschreiben:
+   foreach(int i: 15) RingBufferPut(buffer, i);
+   // Werte abrufen:
+   mixed array=RingBufferGet(buffer);
+   // array enthaelt nun:
+   // ({5,6,7,8,9,10,11,12,13,14})
+
+
+SIEHE AUCH
+==========
+
+   CreateRingBuffer(), RingBufferPut(), ResizeRingBuffer()
+
+23.05.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/RingBufferPut b/doc/sphinx/man/lfun/RingBufferPut
new file mode 100644
index 0000000..00c046c
--- /dev/null
+++ b/doc/sphinx/man/lfun/RingBufferPut
@@ -0,0 +1,49 @@
+
+RingBufferPut()
+***************
+
+
+FUNKTION
+========
+
+   protected void RingBufferPut(struct std_ringbuffer buf, mixed val);
+
+
+DEFINIERT IN
+============
+
+   /std/util/ringbuffer.c
+   /sys/util/ringbuffer.h
+
+
+ARGUMENTE
+=========
+
+   buf - Ringpuffer, in den <val> geschrieben werden soll
+   val - neues Datum
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion schreibt <val> in den Ringpuffer <buf>. Hierbei wird ggf.
+   das aelteste im Puffer existierende Datum ueberschrieben. <buf> muss eine
+   von CreateRingBuffer() oder ResizeRingBuffer() zurueckgelieferter
+   Ringpuffer sein.
+
+
+BEISPIELE
+=========
+
+   // Ringpuffer anlegen:
+   struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
+   // 15 Werte reinschreiben:
+   foreach(int i: 15) RingBufferPut(buffer, i);
+
+
+SIEHE AUCH
+==========
+
+   RingBufferGet(), CreateRingBuffer(), ResizeRingBuffer()
+
+23.05.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/SearchPath b/doc/sphinx/man/lfun/SearchPath
new file mode 100644
index 0000000..040965e
--- /dev/null
+++ b/doc/sphinx/man/lfun/SearchPath
@@ -0,0 +1,108 @@
+
+SearchPath()
+************
+
+
+FUNKTION
+========
+
+   public int SearchPath(string from, string to, int para,
+                         closure callback)
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/pathd.c
+   <sys/path.d>
+
+
+ARGUMENTE
+=========
+
+   from     - Der Startpunkt
+   to       - Der Endpunkt
+   para     - Die Parawelt in der gesucht wird (Normalwelt: 0)
+   callback - Closure, die am Ende der Pfadsuche gerufen wird
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion berechnet - sofern moeglich - den kuerzesten Pfad zwischen
+   <from> und <to> in der (Para-)Welt <para>.
+
+
+
+   Die Pfadsuche wird anhand von Daten ueber von Spielern gelaufene Wege
+   durchgefuehrt. D.h. Gebiete, die von Spielern nicht (in letzter Zeit mal)
+   betreten werden, sind auch dem Pfaddaemon nicht bekannt. Auch kann es
+   Gebiete geben, wo zwar gebietsintern Pfade bekannt sind, aber keine Wege
+   in den Rest vom MG.
+
+   Da diese Suche im Allgemeinen SEHR aufwendig sein kann, wird sie meistens
+   nicht sofort fertig, sondern dauert eine Weile. Wenn sie fertig ist, wird
+   die Closure <callback> aufgerufen und ihr die Argumente <from>, <to>,
+   <parawelt>, <kosten>, <path> und <cmds> uebergeben. Die Bedeutung
+   dieser Argumente ist unten erklaert.
+
+   Eine Suche nach einem Pfad in einer Parawelt fuehrt durch Raeume der
+   gewuenschen Parawelt und durch Raeume der Normalwelt.
+
+
+RUeCKGABEWERT
+=============
+
+    1      - Suche wurde gestartet
+    2      - Pfad gefunden (und callback gerufen)
+   -1      - es laeuft schon ein Suchauftrage fuer die UID des anfragenden
+             Objektes
+   -2      - es laufen bereits zuviele Suchanfragen
+   -3      - <from> und/oder <to> sind nicht bekannt
+
+
+
+   An <callback> uebergebene Argumente am Ende der Pfadsuche:
+       <from> - Startpunkt des Weges (string)
+       <to>   - Zielpunkt des Weges (string)
+       <para> - Parawelt des Weges (int)
+       <costs>- Kosten des Wege. (int) Je hoeher, desto
+                laenger/unguenstiger. 0, wenn kein Pfad gefunden
+       <path> - Array mit Raumnamen, die durchlaufen werden (string*)
+                0, wenn kein Pfad gefunden
+       <cmds> - Array mit Kommandos zum Ablaufen des Weges (string*)
+                0, wenn kein Pfad gefunden
+
+
+BEMERKUNGEN
+===========
+
+   Es ist natuerlich nicht dazu gedacht, Spielern fertige Routen zwischen
+   Orten zu geben - bzw. nur in Ausnahmefaellen.
+   Pfadabfrgen werden geloggt.
+
+   Die Angabe <costs> sagt grob etwas ueber die Laenge und vor allem ueber die
+   "Qualitaet" des Pfades aus. Die steigt bei Paraweltwechseln, wenig
+   abgelaufenen Verbindungen zwischen Raeumen oder wenn eine Verbindung kein
+   normaler Ausgang ist.
+
+   Die Closure <callback> sollte nicht zuviele Ticks verbrauchen.
+
+
+BEISPIEL
+========
+
+   #include <pathd.h>
+   void suchergebnis(string from, string to, int para, int costs, string*
+        path, string* cmds) {
+        tell_object(find_player("zesstra"), sprintf(
+            "Ergebnis Pfadsuche von %s nach %s in Para %d fuer %d:\n %O\n %O\n",
+            from, to, para, costs, path, cmds));
+   };
+
+   ...
+   mixed res=PATHD->SearchPath("/gilden/abenteurer",
+                               "/d/ebene/dancer/lucky/room/pova_la3",
+                               0, #'suchergebnis);
+
+22.12.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/SelectEnemy b/doc/sphinx/man/lfun/SelectEnemy
new file mode 100644
index 0000000..5a05eab
--- /dev/null
+++ b/doc/sphinx/man/lfun/SelectEnemy
@@ -0,0 +1,51 @@
+
+SelectEnemy()
+*************
+
+
+FUNKTION
+========
+
+   varargs object SelectEnemy(object*here);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   here
+     Gegner, aus welchen ausgewaehlt werden soll (optional!)
+
+
+RUeCKGABEWERT
+=============
+
+   Ausgewaehlter Gegner, der angegriffen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion waehlt einen Gegner aus, der angegriffen werden soll.
+   Werden keine Gegner im Parameter <here> angegeben, so wird der
+   Rueckgabewert der Funktion PresentEnemies() verwandt, welche die
+   aktuell anwesenden Gegner im Raum liefert.
+   Sind keine Gegner anwesend, so wird 0 zurueckgeliefert.
+   Danach wird geschaut, ob Gegner bevorzugt ausgewaehlt werden sollen.
+   Dies geschieht mittels der Funktion QueryPreferedEnemy().
+   Auch dieser bevorzugte Gegner muss im selben Raum sein! Wenn nicht,
+   wird doch irgendein anderer Gegner ausgewaehlt und zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   PresentEnemies(), QueryPreferedEnemy(), P_PREFERED_ENEMY,
+   InsertEnemy(), StopHuntFor()
+
+Last modified: Thu May 27 15:01:48 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/SelectFarEnemy b/doc/sphinx/man/lfun/SelectFarEnemy
new file mode 100644
index 0000000..c390d42
--- /dev/null
+++ b/doc/sphinx/man/lfun/SelectFarEnemy
@@ -0,0 +1,65 @@
+
+SelectFarEnemy()
+****************
+
+
+FUNKTION
+========
+
+   varargs object SelectFarEnemy(object *here, int min, int max,
+                                 int forcefrom)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   here       - Rueckgabewert von PresentEnemies()
+   min        - minimale Kampfreihe
+   max        - maximale Kampfreihe
+   forcefrom  - Gegner MUSS aus uebergebenem Array ausgewaehlt werden
+
+
+BESCHREIBUNG
+============
+
+   Waehlt einen Feind aus Reihe <min> bis <max> aus.
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Wenn in den angegeben Reihen kein Feind ist oder <max> kleiner
+      als <min> ist, wird auch keiner zurueckgegeben.
+   2. Aus Effizienzgruenden sollte forcefrom nur benutzt werden, wenn
+      es wirklich noetig ist (s. hierzu auch SelectNearEnemy()).
+   3. 0 <= <min> <= <max> < MAX_TEAMROWS
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/SelectNearEnemy b/doc/sphinx/man/lfun/SelectNearEnemy
new file mode 100644
index 0000000..43ba033
--- /dev/null
+++ b/doc/sphinx/man/lfun/SelectNearEnemy
@@ -0,0 +1,69 @@
+
+SelectNearEnemy()
+*****************
+
+
+FUNKTION
+========
+
+   varargs object SelectNearEnemy(object *here, int forcefrom)
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   here      - Rueckgabewert von PresentEnemies()
+   forcefrom - Gegner MUSS aus uebergebenem Array ausgewaehlt werden
+
+
+BESCHREIBUNG
+============
+
+   Waehlt einen im Nahkampf erreichbaren Feind aus
+
+
+RUECKGABEWERT
+=============
+
+   Der Auserwaehlte :-)
+
+
+BEMERKUNGEN
+===========
+
+   1. Falls der Spieler in einem Team ist und in einer hinteren Reihe
+      steht, wird kein Feind ausgewaehlt, es sei denn, der Spieler hat
+      einen Kampf mit einem Teammitglied angefangen.
+   2. Wenn ein bevorzugter Feind in einer der hinteren Reihen eines
+      Teams steht, wird solange das Team bevorzugt.
+   3. Auch Feinde in den hinteren Reihen koennen im Nahkampf erreichbar
+      sein, wenn die vorderen Reihen nicht genuegend Deckung bieten.
+   4. ACHTUNG: Der Auserwaehlte kommt nicht notwendigerweise aus dem
+      uebergebenen Array, wenn forcefrom=0 ist. Normalerweise ist dieses
+      Verhalten beabsichtigt, damit jemand, der sich in der Reihe vor
+      einen Gegner stellt, angegriffen wird, auch wenn er noch nicht
+      Feind ist.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/Set b/doc/sphinx/man/lfun/Set
new file mode 100644
index 0000000..d654027
--- /dev/null
+++ b/doc/sphinx/man/lfun/Set
@@ -0,0 +1,174 @@
+
+Set()
+*****
+
+
+FUNKTION
+========
+
+   public varargs mixed Set(string name, mixed Value, int Type, int extern);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+   /sys/thing/properties.h (Prototyp)
+
+
+ARGUMENTE
+=========
+
+    name - Property, die manipuliert werden soll
+    Value - der zu setzende/aendernde Wert
+    Type - die Eigenschaft der Property, die manipuliert werden soll
+    extern - Interne Verwendung:
+   Wurde Set ueber SetProp von aussen gerufen.
+
+
+BESCHREIBUNG
+============
+
+   Eine der inneren Eigenschaften der Property 'name' wird veraendert.
+   'Type' ist dabei einer der in /sys/thing/properties.h definierten
+   F_XXX - Werte:
+
+   F_VALUE (==0, default)
+     Setzt den Inhalt der Property auf 'Value'. Aehnlich "SetProp",
+     umgeht jedoch eine etwaige F_SET_METHOD oder _set_'name'()-Methode.
+   F_MODE
+   F_MODE_AS
+   F_MODE_AD
+     Aendert eines der internen Flags der Property. F_MODE negiert den
+     vorherigen Wert vom Flag 'Value', F_MODE_AS setzt und F_MODE_AD
+     loescht ihn.
+     Verfuegbare interne Flags:
+
+       SAVE
+
+         Property wird bei save_object() gespeichert
+
+       PROTECTED
+
+         Flag setzbar durch:   beliebiges Objekt
+         Flag loeschbar durch: this_object(), ROOT, EM+
+         Inhalt der Property veraendern sowie Set- und Query-Methoden
+         setzen oder loeschen duerfen nur noch this_object(), ROOT, EM+
+         WARNUNG: Dieses Flag nicht leichtfertig bei Spielern setzen!
+
+       SECURED
+
+         Flag setzbar durch:   this_object(), ROOT, EM+
+         Flag loeschbar durch: Niemanden!
+         Inhalt der Property veraendern sowie Set- und Query-Methoden
+         setzen oder loeschen duerfen nur noch this_object(), ROOT, EM+
+
+       NOSETMETHOD
+
+         Property nicht mehr ueber SetProp() aenderbar
+         (damit entfallen auch SET_METHOD, _set_'name')
+   F_SET_METHOD
+     Aendert den Eintrag fuer eine SetMethod - eine Closure, die anstatt
+     des Setzens der Property beim Aufruf von SetProp mit 'Value'
+     aufgerufen wird.
+   F_QUERY_METHOD
+     Aendert den Eintrag fuer eine QueryMethod - eine Closure, die anstatt
+     des Lesens der Property beim Aufruf von QueryProp aufgerufen wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Das Ergebnis der Manipulation bzw. einer der definierten
+   Fehlercodes.
+
+
+BEMERKUNGEN
+===========
+
+    - Set() sollte nicht zum regulaeren Manipulieren des Inhalts einer
+      Property verwendet werden, da sowohl F_SET_METHOD als auch libinterne
+      _set_'name'()-Methoden umgangen werden und das Ergebnis fuer so
+      veraenderte Properties undefiniert ist.
+    - eine gesetzte F_SET/F_QUERY_METHOD hat bei SetProp/QueryProp Vorrang
+      vor einer _set/_query_method
+      -> _set/_query wird nach erfolgreichem Ruf von F_XXX_METHOD ignoriert
+    - F_SET/F_QUERY_METHOD sollte normalerweise Vorzug vor einer
+      _set_/_query_* gegeben werden.
+
+   SetMethods/QueryMethods:
+    - falls ihr Query/SetMethods an oeffentlichen Properties setzen
+      wollt, prueft bitte vorher, ob dort nicht schon eine (fremde) gesetzt
+      ist und brecht ggf. euer Set() ab, um nicht die Arbeit anderer
+      Mitmagier zu sabotieren (z.B. P_HANDS)
+    - Properties sollten mit Query- oder SetMethoden nur so lange wie
+      noetig belegt werden
+      -> manche Properties sollte man als Wert setzen, _auch wenn_ die
+         Spieler sie zuruecksetzen koennten (zB P_MSGIN/P_MSGOUT)
+    - auf keinen Fall den Wert speichern, ueberschreiben, rueckschreiben,
+      das fuehrt fast immer zu Problemen.
+    - Set/QueryMethoden sollten nicht als Trigger/Listener fuer ein
+      Ereignis (z.B. P_DIE_MSG fuer das Ereignis "Tod des Spielers")
+      missbraucht werden
+      -> es gibt sichere und saubere Moeglichkeiten (NotifyPlayerDeath),
+         und wenn nicht, wendet euch an den EM eures Vertrauens
+    - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
+      sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
+      geht nur 'static' (in diesem Fall empfohlen).
+
+
+BEISPIELE
+=========
+
+   ### Aendern von Eigenschaften einer Property ###
+   // Setzen des SAVE-Flags (bei save_object() mitzuspeichern)
+   Set(P_XYZ, SAVE, F_MODE_AS);
+
+   // Loeschen des SAVE-Flags
+   Set(P_XYZ, SAVE, F_MODE_AD);
+
+
+
+   // Negieren des bisherigen SAVE-Flags
+   Set(P_XYZ, SAVE, F_MODE);
+   // Hinweis: das Setzen des Flags funktioniert mittels F_MODE nur dann,
+   // wenn sichergestellt ist, dass es vorher nicht gesetzt war. Die
+   // sichere Variante ist daher, F_MODE_AS zu verwenden.
+
+   // Sperren des SetProp/SET_METHOD-Zugriffs:
+   Set(P_XYZ, NOSETMETHOD, F_MODE_AS);
+
+   // Vorlaeufiger Zugriffsschutz fuer eine Property:
+   Set(P_XYZ, PROTECTED, F_MODE_AS);
+
+   // Permanenter Zugriffsschutz fuer eine Property:
+   Set(P_XYZ, SECURED, F_MODE_AS);
+
+   ### Setzen einer SetMethod/QueryMethod ###
+   // Setzen einer internen SetMethod
+   mixed foo(mixed val);
+   ...
+   Set(P_XYZ, #'foo, F_SET_METHOD);
+   ...
+
+   // Setzen einer QueryMethod bei einem anderen Objekt
+   mixed bar();
+   ...
+   other->Set(P_XYZ, #'bar, F_QUERY_METHOD);
+   ...
+
+   // Der Vollstaendigkeit halber sei das Aendern einer Property unter
+   // Umgehung von Set-Methoden angegeben. Es ist aber aus o.g. Gruenden
+   // zu empfehlen, diese Variante nicht zu verwenden.
+   Set(P_XYZ, "bla", F_VALUE);
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: SetProp(L), QueryProp(L), Query(L)
+   Generell:  SetProperties(L), QueryProperties(L)
+   Konzept:  properties, /std/thing/properties.c
+   Sonstiges:  P_AUTOLOADOBJ
+
+6. Jan 2008 Arathorn
diff --git a/doc/sphinx/man/lfun/SetAttackChats b/doc/sphinx/man/lfun/SetAttackChats
new file mode 100644
index 0000000..90e8a66
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetAttackChats
@@ -0,0 +1,104 @@
+
+SetAttackChats()
+****************
+
+
+FUNKTION
+========
+
+   void SetAttackChats(int chance, mixed strs);
+
+
+DEFINIERT IN
+============
+
+   /std/npc/chat.c
+
+
+ARGUMENTE
+=========
+
+   chance
+        Prozentuale Wahrscheinlichkeit einer Ausgabe
+   strs
+        Stringarray mit den Monsterchats
+
+
+BESCHREIBUNG
+============
+
+   Der NPC gibt mit der Wahrscheinlichkeit 'chance' einen zufaellig
+   gewaehlten Text aus 'strs' von sich. Die Arrayelemente koennen
+   auch Funktionen ("@@func@@") oder Closures enthalten, die dann
+   aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   AttackChats werden nur im Kampf ausgegeben. Ansonsten ist SetChats()
+   zu verwenden.
+
+
+
+   'chance' wird in der Property P_ACHAT_CHANCE abgelegt. Um einen NPC
+   voruebergehend 'stillzulegen', kann man P_ACHAT_CHANCE auf 0 setzen.
+
+
+
+   Man kann AttackChats nutzen, um Monsterspells zu realisieren. Besser
+   ist es aber, dafuer 'AddSpell' zu verwenden.
+
+
+BEISPIELE
+=========
+
+   SetAttackChats( 20,
+     ({ "Der Ork tritt Dir in den Hintern.\n",
+        "Der Ork bruellt: Lebend kommst Du hier nicht raus!\n",
+        "Der Ork blutet schon aus mehreren Wunden.\n",
+        "@@knirsch@@" }) );
+
+
+
+   string knirsch()
+   {
+     object *ruestung, *tmp, helm;
+
+
+
+     ruestung = this_player()->QueryProp(P_ARMOURS); // getragene Ruestung
+     tmp = filter_objects(ruestung, "id", AT_HELMET);
+     // Wenn der Spieler einen Helm traegt, enthaelt 'tmp' jetzt
+     // ein Array mit dem Helmobjekt als einzigem Element
+     if (sizeof(tmp)) helm = tmp[0];
+       if (objectp(helm))
+       {
+         // AC nur dann senken, wenn sie nicht schon 0 ist.
+         if (helm->QueryProp(P_AC)>0) {
+           helm->Damage(1);
+           return "Der Ork beschaedigt Deinen Helm!\n";
+         }
+         return "";
+       }
+       else
+         return ""; // keine Meldung
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_ACHAT_CHANCE, SetChats(), /std/npc/chat.c, AddSpell()
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 27.12.2007, 16:35:00 von Arathorn
diff --git a/doc/sphinx/man/lfun/SetAttr b/doc/sphinx/man/lfun/SetAttr
new file mode 100644
index 0000000..fe5d97b
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetAttr
@@ -0,0 +1,55 @@
+
+SetAttr()
+*********
+
+
+FUNKTION
+========
+
+   public int SetAttr(string attr, int val)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - zu setzendes Attribut
+   val        - Wert
+
+
+BESCHREIBUNG
+============
+
+   Filtert den Wert durch _filterattr(). Dadurch werden STR, INT, CON, DEX
+   auf 20 begrenzt. Setzt dann das Attribut.
+   Offsets werden hier nicht beruecksichtigt, QueryAttribute() gibt also
+   val + etwaige Offsets/Modifier zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Tatsaechlich gesetzter Wert.
+
+
+BEMERKUNGEN
+===========
+
+   Wird von SetAttribute() und SetRealAttribute() aufgerufen.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   TestAttributeLock(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/SetAttribute b/doc/sphinx/man/lfun/SetAttribute
new file mode 100644
index 0000000..139fc99
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetAttribute
@@ -0,0 +1,49 @@
+
+SetAttribute()
+**************
+
+
+FUNKTION
+========
+
+   int SetAttribute(string attr, int val)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - zu setzendes Attribut
+   val        - Wert
+
+
+BESCHREIBUNG
+============
+
+   Nimm val als Gesamtwert des Attributes, d.h. zieht etwaige Offsets vor
+   Setzen ab. (QueryAttribute gibt dann also val zurueck)
+
+
+RUeCKGABEWERT
+=============
+
+   Den durch SetAttr gefilterten gesetzten Wert.
+   Bitte nicht auf Spieler anwenden!
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/SetBuyFact b/doc/sphinx/man/lfun/SetBuyFact
new file mode 100644
index 0000000..8994bd3
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetBuyFact
@@ -0,0 +1,58 @@
+
+SetBuyFact()
+************
+
+
+FUNKTION
+========
+
+   void SetBuyFact(int fact);
+
+
+DEFINIERT IN
+============
+
+   /std/laden.c
+
+
+ARGUMENTE
+=========
+
+   fact
+        Der Einkaufspreismultiplikator.
+
+
+BESCHREIBUNG
+============
+
+   Der Preis, der beim Kauf eines Objekts im Laden zu entrichten ist,
+   errechnet sich aus seinem Wert ( P_VALUE), multipliziert mit dem Faktor
+   fact. Dieser Preis ist konstant und nicht von der aktuellen Marktlage
+   abhaengig.
+
+   Der Defaultwert ist 3. Ein hoeherer Wert entspricht einem teuren Laden,
+   waehrend ein kleinerer Wert zu kleinen Preisen fuehrt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Normalerweise kommt man ohne diese Funktion aus: in teuren Laeden wird
+   nicht viel eingekauft (es sei denn, es liegen standardmaessig gute
+   Objekte im Speicher), einem Billigladen wird bald das Geld ausgehen mit
+   der Folge, dass der Ladenbesitzer nichts mehr ankaufen kann und sein
+   Lager gaehnend leer ist.
+
+
+SIEHE AUCH
+==========
+
+   QueryBuyFact(), /std/laden.c
+
+Last modified: Wed May 8 10:24:52 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/SetChats b/doc/sphinx/man/lfun/SetChats
new file mode 100644
index 0000000..70d312e
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetChats
@@ -0,0 +1,94 @@
+
+SetChats()
+**********
+
+
+FUNKTION
+========
+
+   void SetChats(int chance,mixed strs);
+
+
+DEFINIERT IN
+============
+
+   /std/npc/chat.c
+
+
+ARGUMENTE
+=========
+
+   chance
+     Prozentuale Wahrscheinlichkeit einer Ausgabe
+   strs
+     Stringarray mit den Monsterchats
+
+
+BESCHREIBUNG
+============
+
+   Der NPC gibt mit der Wahrscheinlichkeit <chance> pro Heartbeat einen
+   zufaellig gewaehlten Text aus dem Array <strs> von sich.
+   Die Arrayelemente koennen auch Closures oder
+   process_string()-Funktionen ("@@func@@") enthalten, die dann
+   aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
+    (Fuer keine Ausgabe dann Leerstring "" zurueckgeben!)
+   In diesen Funktionen ist this_player() das Monster selbst!
+   Fuer Zeilenumbrueche ist immer selbst zu sorgen.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Ein einfaches Beispiel:
+     // Prototype fuer Closure.
+     static string info1();
+     void create()
+     { ...
+       SetChats(20,
+      ({"Der Ork sagt: Hau ab, bevor ich Dich fresse.\n",
+        "Der Ork grinst Dich unverschaemt an.\n",
+        "Der Ork wedelt mit seinem Saebel vor Deinem Gesicht herum.\n",
+        "Der Ork droht Dir mit der Faust.\n",
+        #'info1,
+        "@@info2@@"}));
+     }
+     // Funktion als Closure. Prototype notwendig!
+     static string info1()
+     { if(QueryProp(P_HP)<QueryProp(P_ALIGN))
+         return"Gleich werde ich von hier fliehen!\n";
+       return"";
+     }
+     // Funktion als process_string().
+     string info2()
+     { return QueryProp(P_HP)==QueryProp(P_MAX_HP)?
+    "Der Ork grinst: Mir geht es fantastisch!\n":
+    "Der Ork seufzt: Mir ging es wirklich schon mal besser.\n";
+     }
+
+
+BEMERKUNGEN
+===========
+
+         Im Kampf werden keine Chats ausgegeben. Es ist dann SetAttackChats()
+         zu verwenden.
+         Funktionen als process_string() sollte man nicht mehr verwenden.
+         <chance> wird in der Property P_CHAT_CHANCE abgelegt. Um einen NPC
+         voruebergehend 'stillzulegen', kann man P_CHAT_CHANCE auf 0 setzen.
+   Wenn kein Spieler anwesend ist, haben NPC in der Regel keinen Heartbeat,
+   weswegen dann auch die Chats ausgeschaltet sind.
+   Spieler koennen NPC 'stillen', d.h. Chats und AttackChats abschalten.
+
+
+SIEHE AUCH
+==========
+
+   P_CHAT_CHANCE, SetAttackChats(), process_string()
+
+Last modified: Sat Jan 18 18:48:06 2003 by Patryn
diff --git a/doc/sphinx/man/lfun/SetCoinsPerUnits b/doc/sphinx/man/lfun/SetCoinsPerUnits
new file mode 100644
index 0000000..0533275
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetCoinsPerUnits
@@ -0,0 +1,63 @@
+
+SetCoinsPerUnits()
+******************
+
+
+FUNKTION
+========
+
+   void SetCoinsPerUnits(int coins, int units);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   coins
+        Zahl der Muenzen
+   units
+        Zahl der Einheiten
+
+
+BESCHREIBUNG
+============
+
+   Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten kostet.
+   Eine einzelne Einheit kostet coins/units Muenzen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Bei der Preisberechnung wird abgerundet. Hat man also ein Verhaeltnis
+   von einer Muenze pro zwei Einheiten, so ist der Preis einer einzelnen
+   Einheit 0!
+
+
+BEISPIELE
+=========
+
+   Eine Einheit soll 3.5 Muenzen wert sein:
+
+   /* 7 Muenzen / 2 Einheiten = 3.5 Muenzen / Einheit */
+   SetCoinsPerUnits(7,2);
+
+
+SIEHE AUCH
+==========
+
+   QueryCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnits(),
+   /std/unit.c
+
+Last modified: Wed May 8 10:24:57 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/SetDoorStatus b/doc/sphinx/man/lfun/SetDoorStatus
new file mode 100644
index 0000000..c433c40
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetDoorStatus
@@ -0,0 +1,49 @@
+
+SetDoorStatus()
+***************
+
+
+FUNKTION
+========
+
+   void SetDoorStatus(string dest, int status);
+
+
+DEFINIERT IN
+============
+
+   /obj/doormaster.c
+
+
+ARGUMENTE
+=========
+
+   <dest>   = Zielraum der Tuer.
+   <status> = Der neue Zustand der Tuer.
+
+
+BESCHREIBUNG
+============
+
+   Der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt, wird auf
+   <status> geaendert. Hierbei muss <status> einer der drei folgenden Werte
+   aus <doorroom.h> sein:
+
+     D_STATUS_LOCKED - Tuer abgeschlossen
+     D_STATUS_CLOSED - Tuer geschlossen
+     D_STATUS_OPEN   - Tuer geoeffnet
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), QueryDoorStatus(), P_DOOR_INFOS,
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
+Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/sphinx/man/lfun/SetEnemies b/doc/sphinx/man/lfun/SetEnemies
new file mode 100644
index 0000000..2c92035
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetEnemies
@@ -0,0 +1,53 @@
+
+SetEnemies()
+************
+
+
+FUNKTION
+========
+
+   mapping SetEnemies(object *myenemies);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   myenemies
+        Array: ({Gegnerarray, Zeitenarray})
+
+
+RUeCKGABEWERT
+=============
+
+   Internes Mapping mit bekannten Gegnern und Zeiten.
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise fuegt man einzelne Gegner mittels InsertEnemy() ein und
+   loescht alte Feinde mittels StopHuntFor().
+
+   Um jedoch mit einem Schlag viele Veraenderungen vorzunehmen, kann man
+   die Funktion SetEnemies() nutzen.
+
+   Ihr uebergibt man ein Array mit einem Array mit den gewuenschten Gegnern
+   als und einem zweiten, gleichgrossen Array mit den Zeiten, wie lange
+   diese Gegner aktuell sein sollen, als Eintraege.
+
+   Die Funktion traegt diese Werte als Gegner mit entsprechender
+   Feindeszeit ein.
+
+
+SIEHE AUCH
+==========
+
+   InsertEnemy(), StopHuntFor(), SelectEnemy(), PresentEnemies()
+
+10.Feb 2005 Gloinson
diff --git a/doc/sphinx/man/lfun/SetGramsPerUnits b/doc/sphinx/man/lfun/SetGramsPerUnits
new file mode 100644
index 0000000..66c1934
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetGramsPerUnits
@@ -0,0 +1,54 @@
+
+SetGramsPerUnits()
+******************
+
+
+FUNKTION
+========
+
+   void SetGramsPerUnits(int grams, int units);
+
+
+DEFINIERT IN
+============
+
+   /std/unit.c
+
+
+ARGUMENTE
+=========
+
+   grams
+        Gewicht in Gramm
+   units
+        Zahl der Einheiten
+
+
+BESCHREIBUNG
+============
+
+   Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten wiegt.
+   Eine einzelne Einheit wiegt grams/units Gramm.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Vier Einheiten sollen 3 Gramm wiegen:
+
+   SetGramsPerUnits(3,4);
+
+
+SIEHE AUCH
+==========
+
+   SetCoinsPerUnits(), QueryCoinsPerUnits(), QueryGramsPerUnits(),
+   /std/unit.c
+
+Last modified: Wed May 8 10:25:09 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/SetProp b/doc/sphinx/man/lfun/SetProp
new file mode 100644
index 0000000..9664be8
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetProp
@@ -0,0 +1,70 @@
+
+SetProp()
+*********
+
+
+FUNKTION
+========
+
+   public mixed SetProp(string name, mixed Value);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+   /sys/thing/properties.h (Prototyp)
+
+
+ARGUMENTE
+=========
+
+   name       - Property, deren Wert veraendert werden soll.
+   Value      - Wert, auf den der Inhalt der Property gesetzt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Der Datenwert der Property 'name' wird auf den Wert 'Value' gesetzt.
+
+   Existiert eine F_SET_METHOD oder eine _set_'name'()-Methode fuer
+   diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
+   Eine F_SET_METHOD hat dabei Vorrang vor _set_'name'(), d.h.
+   _set_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
+   gerufen.
+
+   (Diese Methoden nutzen dann Set(), um den Datenwert der Property
+    'name' zu aendern. Teilweise werden aber auch interne Variablen so
+    oeffentlich gemacht und sind nicht in der ueber Set/Query verfuegbaren
+    Property 'name' abgelegt.)
+
+
+RUeCKGABEWERT
+=============
+
+   Der Wert, der nun in der Property gespeichert ist.
+   In der Regel ist das 'Value'. Wenn die Property ueber eine SET_METHOD
+   oder eine _set_'name'()-Funktion verfuegt und diese 'Value' aendert
+   (zum Beispiel, indem sie 'Value' an einen bestimmten erlaubten
+   Wertebereich anpasst), kann der Rueckgabewert jedoch auch veraendert
+   sein.
+
+   Wenn die Property nicht veraendert werden darf, wird -1 zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   // geben wir dem Zwerg eine Kurzbeschreibung
+   SetProp(P_SHORT, "Ein kleiner Zwerg");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        QueryProp(L), Set(L), Query(L)
+   Generell:          SetProperties(L), QueryProperties(L)
+   Konzept:           properties, /std/thing/properties.c
+
+15.Dez 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/SetProperties b/doc/sphinx/man/lfun/SetProperties
new file mode 100644
index 0000000..a4ac72a
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetProperties
@@ -0,0 +1,48 @@
+
+SetProperties()
+***************
+
+
+FUNKTION
+========
+
+   void SetProperties(mapping props);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/properties.c
+
+
+ARGUMENTE
+=========
+
+   props      - Mapping mit den Daten fuer alle Properties
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion setzt angegebene Properties auf einen Schlag.
+   Mapping muss wie folgt aufgebaut sein:
+      ([ name: wert; flags; set_method; query_method,
+         name2: ... ]);
+
+
+BEMERKUNGEN
+===========
+
+   - diese Funktion wird von restore_object() verwendet, um nicht alle
+     restaurierten Properties einzeln setzen zu muessen.
+   - SECURED/PROTECTED/NOSETMETHOD Properties werden beruecksichtigt
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        SetProp(L), QueryProp(L), Set(L), Query(L)
+   Generell:          QueryProperties(L)
+   Konzept:           properties, /std/thing/properties.c
+
+1.Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/SetRealAttribute b/doc/sphinx/man/lfun/SetRealAttribute
new file mode 100644
index 0000000..fc72d9b
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetRealAttribute
@@ -0,0 +1,55 @@
+
+SetRealAttribute()
+******************
+
+
+FUNKTION
+========
+
+   int SetRealAttribute(string attr, int val)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   attr       - zu setzendes Attribut
+   val        - Wert
+
+
+BESCHREIBUNG
+============
+
+   Setzt den realen Wert des Attributes, d.h. das reine Attribut,
+   wenn moeglich. Lediglich eine Alias-Methode fuer SetAttr().
+   (QueryAttribute() gibt also val + etwaige Offsets/Modifier zurueck)
+
+
+RUeCKGABEWERT
+=============
+
+   Den gesetzten Wert.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte nicht auf Spieler anwenden!
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/lfun/SetSpellFatigue b/doc/sphinx/man/lfun/SetSpellFatigue
new file mode 100644
index 0000000..f2c5861
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetSpellFatigue
@@ -0,0 +1,99 @@
+
+SetSpellFatigue()
+*****************
+
+
+FUNKTION
+========
+
+   public varargs int SetSpellFatigue(int duration, string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
+
+
+ARGUMENTE
+=========
+
+   int duration: Wie lang soll die Spruchermuedung andauern?
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Verwalten von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+   Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
+   Sprueche oder Gruppen von Spruechen gestalten.
+
+   <duration> ist die Zeit (in Sekunden), welche die Spruchermuedung
+   anhalten soll (nicht die Endzeit).
+
+   Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
+   gesetzt (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls die
+   unter <key> gespeicherte Spruchermuedung.
+   Setzt man einen Eintrag ohne Angabe von <key> bedeutet dies damit auch,
+   dass der Wert von P_NEXT_SPELL_TIME geaendert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   -1    Der Eintrag <key> ist noch nicht abgelaufen, es wurde _keine_
+         neue Spruchermuedung/-Sperre gespeichert.
+
+   >0    Eintrag wurde gespeichert, Rueckgabewert ist die Zeit, zu der die
+         Sperre ablaeuft.
+
+
+BEISPIELE
+=========
+
+   Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
+   Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
+   Gruppe ausgefuehrt wurde.
+   if (CalculateSpellSuccess(...) > x) {
+     // Spellfatigue setzen (und Erfolg pruefen!)
+     if (ob->SetSpellFatigue(5, "extrasuess") > -1) {
+       tell_object(ob, "Du fuetterst " + enemy->Name(WEN) + " mit einem "
+         "Stueck suesser Schokotorte.\n");
+       ...
+     }
+     else {
+       // Sauerei! Zu ermuedet fuer diesen Spruch. Fehlermdeldung ...
+     }
+   }
+   Dieses setzt natuerlich voraus, dass alle anderen Sprueche der Gruppe
+   "extrasuess" den gleichen <key> pruefen und setzen.
+   (Will man vor CalculateSpellSuccess() wissen, ob der Spruch ueberhaupt
+    gewirkt werden duerfte, sollte man hierzu dann CheckSpellFatigue()
+    verwenden.)
+
+
+BEMERKUNGEN
+===========
+
+   Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
+   unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
+   auf volle 2s aufgerundet werden. (Dies ist nicht der Fall bei NPC.)
+   Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
+   werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
+   ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
+   Wuensche habt, sprecht den/die Mudlib-EM an.
+
+
+SIEHE AUCH
+==========
+
+   CheckSpellFatigue(L), DeleteSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
+27.03.2010, Zesstra
diff --git a/doc/sphinx/man/lfun/SetStorageRoom b/doc/sphinx/man/lfun/SetStorageRoom
new file mode 100644
index 0000000..f1d66a5
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetStorageRoom
@@ -0,0 +1,108 @@
+
+SetStorageRoom()
+****************
+
+
+FUNKTION
+========
+
+   void SetStorageRoom(string store);
+
+
+DEFINIERT IN
+============
+
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   store
+     Dateiname des Lagers, in dem die aufgekauften Objekte aufbewahrt
+     werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird dem Laden bekannt gegeben, welches Objekt
+   als Lager fuer angekaufte Objekte dienen soll. Jeder Laden muss
+   explizit einen eigenen Lagerraum setzen, ansonsten wird ein
+   Laufzeitfehler ausgeloest und der Laden ist nicht ladbar.
+
+
+
+   Das Speicherobjekt sollte /std/store.c erben, da dort einige
+   Aufraeumfunktionen definiert sind. Entscheidend fuer selbige sind
+   die Properties P_MIN_STOCK und P_STORE_CONSUME.
+
+
+BEISPIELE
+=========
+
+   Der Raum 'myladen.c' koennte etwa so aussehen:
+
+
+
+     // myladen.c
+     inherit "/std/shop";
+     #include <properties.h>
+
+
+
+     protected void create() {
+       ::create();
+       SetProp(...); // Beschreibung wie bei normalen Raeumen
+       SetStorageRoom("/d/beispiel/mystore");
+       AddFixedObject("/items/fackel");
+     }
+
+   In diesem Laden wird nun die Standardfackel als mengenmaessig
+   unbegrenzter Artikel verkauft.
+
+   Der zugehoerige Lagerraum 'mystore.c' kann dann im einfachsten Fall
+   so aussehen:
+
+
+
+     // mystore.c
+     inherit "/std/store";
+     #include <rooms.h>  // Fuer AddItem-Konstanten
+
+
+
+     protected void create() {
+       ::create();
+       // KEINE weiteren Beschreibungen!
+       // 1. erbt der Speicher keine Beschreibungsmodule,
+       // 2. sollen da eh nur Sachen und keine Spieler rein!
+       AddItem("/items/schaufel", REFRESH_REMOVE);
+     }
+
+
+
+   Der Laden verkauft nun auch Schaufeln, jedoch nur eine pro Reset.
+
+HINWEISE:
+   Fuer standardmaessig verkaufte Waren beachte man den Unterschied
+   zwischen den Funktionen AddItem() und AddFixedObject(). Die
+   erstgenannte Funktion ist im Lager zu verwenden, letztere jedoch im
+   Laden.
+
+
+SIEHE AUCH
+==========
+
+   Allgemeines:  laden
+   Funktionen:   AddItem(L), AddFixedObject(L), RemoveFixedObject(L)
+   Basisobjekte: /std/store.c
+   Properties:   P_MIN_STOCK, P_STORE_CONSUME
+
+Last modified: 19-Jun-2015, Arathorn
diff --git a/doc/sphinx/man/lfun/SetTimedAttrModifier b/doc/sphinx/man/lfun/SetTimedAttrModifier
new file mode 100644
index 0000000..5ab39dd
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetTimedAttrModifier
@@ -0,0 +1,113 @@
+
+SetTimedAttrModifier()
+**********************
+
+
+FUNKTION
+========
+
+   int SetTimedAttrModifier(string key, mapping modifier,
+                            int outdated, object dependent, mixed notify)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       in P_TIMED_ATTR_MOD vorzunehmender oder zu
+                      aendernder Eintrag
+   modifier   -       Mapping mit den Attributveraenderungen
+   outdated   -       Zeitpunkt zu dem die Attributveraenderungen
+                      ablaufen sollen in Sekunden seit dem
+                      1. Jan 1970, 0.0:0 GMT oder 0
+   dependent  -       Objekt dessen Existenz eine Bedingung fuer die
+                      Attributveraenderung sein soll oder 0
+   notify     -       Objekt oder File das mittels
+                      NotifyTimedAttrModExpired ueber
+                      den Attributablauf informiert werden soll
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
+   modifiziert und update_max_sp_and_hp aufgerufen.
+   Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
+   besonderes Augenmerk zu legen.
+
+   Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
+   welcher die Attribute des Livings um die in modifier stehenden Offsets
+   veraendert.
+
+   Diese Veraenderung ist solange aktiv bis entweder die in outdated
+   stehende Zeit ueberschritten ist oder das in dependent uebergebene
+   Objekt nicht mehr existiert.
+   Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
+   und kann durch DeleteTimedAttrModifier geloescht werden.
+   Laeuft die Attributveraenderung ab, so wird der in notify angegebene
+   Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon
+   benachrichtigt.
+   Der Funktion NotifyTimedAttrModExpired wird als Argument der key
+   der abgelaufenen Attributveraenderung uebergeben.
+
+
+BEISPIELE
+=========
+
+   Ein NPC kann einen Spieler auf die folgende Weise solange die
+   Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
+   ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
+   wurde.
+
+     player->SetTimedAttrModifier( player->query_real_name(),
+                                   ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
+                                   time()+3600,
+                                   this_object(),
+                                   this_object()
+                                 );
+
+   Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
+   durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.
+
+     void NotifyTimedAttrModExpired(string str)
+     {
+         // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
+         // gerade abgelaufen ist. Also Meldungsausgabe an
+         // previous_object().
+         tell_object(previous_object()
+             ,"Da hast Du aber nochmal Glueck gehabt.\n");
+     }
+
+
+RUeCKGABEWERT
+=============
+
+   TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
+                                 eines fehlenden modifier-Arguments oder
+                                 eines bereits abgelaufenen
+                                 outdatet-Arguments
+   TATTR_OK                -     Im Erfolgsfall
+
+   Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   Attribute:  QueryAttribute(), SetAttribute()
+               SetRealAttribute(), QueryRealAttribute(),
+               QueryAttributeOffset(),
+               UpdateAttributes()
+   Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
+   Callback:   NotifyTimedAttrModExpired()
+   Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
+               P_X_ATTR_MOD, P_M_ATTR_MOD
+               P_TIMED_ATTR_MOD
+   Sonstiges:  /std/living/attributes.c
+
+LETZTE Aenderung: 15.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/ShowDoors b/doc/sphinx/man/lfun/ShowDoors
new file mode 100644
index 0000000..c315632
--- /dev/null
+++ b/doc/sphinx/man/lfun/ShowDoors
@@ -0,0 +1,46 @@
+
+ShowDoors()
+***********
+
+
+FUNKTION
+========
+
+   void ShowDoors()
+
+
+ARGUMENTE
+=========
+
+   Keine.
+
+
+BESCHREIBUNG
+============
+
+   Zeigt alle Sehertor an, die der Seher (this_player()) schon kennt.
+   Falls in seiner Umgebung ein Tor steht, so wird dieses eingeklammert.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   /d/seher/portale/sehertormaster->ShowDoors()
+
+
+SIEHE AUCH
+==========
+
+   DiscoverDoor, DoorIsKnown, Teleport, GetDoorsMapping
diff --git a/doc/sphinx/man/lfun/ShowPropList b/doc/sphinx/man/lfun/ShowPropList
new file mode 100644
index 0000000..41599d7
--- /dev/null
+++ b/doc/sphinx/man/lfun/ShowPropList
@@ -0,0 +1,74 @@
+
+ShowPropList()
+**************
+
+
+FUNKTION
+========
+
+   void ShowPropList(string *props);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/util.c
+
+
+ARGUMENTE
+=========
+
+   props
+        Array von Strings mit den Namen der Properties, die ausgegeben
+        werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Gibt die Inhalte der in props angegebenen Properties aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Sei test.c folgendes Programm:
+
+   inherit "std/thing";
+   inherit "std/thing/util";
+
+   create() {
+     ::create();
+
+     SetProp(P_SHORT, "Kurz");
+     SetProp(P_NAME, ({ "Name", "Namens", "Namen", "Namen" }));
+     SetProp("me", this_object() );
+   }
+
+   Mit xcall test->ShowPropList( ({ P_SHORT, P_NAME, "me" }) ); erhielte
+   man dann folgende Ausgabe:
+
+   *short: "Kurz"
+   *name: ({ "Name", "Namens", "Namen", "Namen" })
+   *me: OBJ(/players/wargon/test#12345)
+
+
+BEMERKUNGEN
+===========
+
+   Mit dem Befehl xprops des MGtools lassen sich uebrigens saemtliche
+   Properties eines Objekte auf einen Schlag ausgeben.
+
+
+SIEHE AUCH
+==========
+
+   /std/ting/util.c
+
+Last modified: Wed May 8 10:25:26 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/SkillResTransfer b/doc/sphinx/man/lfun/SkillResTransfer
new file mode 100644
index 0000000..128cea7
--- /dev/null
+++ b/doc/sphinx/man/lfun/SkillResTransfer
@@ -0,0 +1,48 @@
+
+SkillResTransfer()
+******************
+
+
+FUNKTION
+========
+
+   protected void SkillResTransfer(mapping from_M, mapping to_M)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_utils
+
+
+ARGUMENTE
+=========
+
+   mapping from_M: Mapping mit zu kopierenden Werten
+   mapping to_M:   Zielmapping
+
+
+BESCHREIBUNG
+============
+
+   Interne Methode, die zB (!) waehrend der Ausfuehrung von Attack() durch
+   Skills oder P_TMP_ATTACK_MOD geaenderte Werte selektiert in das
+   Hauptangriffsmapping uebertraegt.
+
+   Derzeit werden folgende Werte kopiert:
+   SI_SKILLDAMAGE, SI_SKILLDAMAGE_MSG, SI_SKILLDAMAGE_MSG2,
+   SI_SKILLDAMAGE_TYPE, SI_SPELL
+
+
+BEMERKUNGEN
+===========
+
+   * wird an mehreren Stellen, nicht nur der living/combat verwendet
+
+
+SIEHE AUCH
+==========
+
+   P_TMP_ATTACK_MOD, UseSkill (Waffenfaehigkeiten)
+
+18.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/lfun/SpellAttack b/doc/sphinx/man/lfun/SpellAttack
new file mode 100644
index 0000000..ba00347
--- /dev/null
+++ b/doc/sphinx/man/lfun/SpellAttack
@@ -0,0 +1,97 @@
+
+SpellAttack()
+*************
+
+
+FUNKTION
+========
+
+   void SpellAttack(object enemy)
+
+
+ARGUMENTE
+=========
+
+   enemy: Der Feind.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in jedem Heartbeat eines NPCs ausgefuehrt,
+   falls nicht P_DISABLE_ATTACK gesetzt ist (Paralyse).
+   Standardmaessig tut diese Funktion nichts, aber man kann sie
+   ueberschreiben, damit in jedem Heartbeat Angriffe mit Spells
+   ausgefuehrt werden.
+
+   Man sollte hierbei ein random() einbauen, damit der NPC nicht
+   in jedem Heartbeat auch wirklich einen Angriff ausfuehrt.
+   Ausserdem sollte man auch fuer eventuelle Ausgaben sorgen.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner.
+
+
+BEMERKUNG
+=========
+
+   Die AttackChats, die mittels SetAttackChats gesetzt werden
+   koennen, macht im Grunde nichts anderes, aber Chats sind halt
+   keine Angriffe. :-)
+
+
+BEISPIELE
+=========
+
+   Im Grunde ist dieses simple Beispiel eine Nachbildung von
+   Attack-Chats und soll dementsprechend nur der Anschauung dienen.
+
+   void SpellAttack(object enemy)
+   {
+     // mit 80% Wahrscheinlichkeit wird nichts gemacht.
+     switch(random(5))
+     {
+       case 0:
+         write("Der Ork tritt Dir in den Hintern.\n");
+         return;
+       case 1:
+         write("Der Ork bruellt: Lebend kommst Du hier nicht raus!\n");
+         return;
+       case 2:
+         write("Der Ork blutet schon aus mehreren Wunden.\n");
+         return;
+       case 3:
+         write(knirsch(enemy));
+         return;
+       default:
+         return;
+     }
+   }
+
+   string knirsch(object enemy)
+   {
+      if (objectp(enemy))
+        helm = enemy->QueryArmourByType(AT_HELMET);
+      if (objectp(helm))
+      {
+        helm->Damage(1);
+        return "Der Ork beschaedigt Deinen Helm!\n";
+      }
+      else
+        return ""; // keine Meldung
+   }
+
+
+SIEHE AUCH
+==========
+
+   "Attack", "SetAttackChats", /std/npc/combat.c
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 27.02.2003, 12:50:00 von Hirudo
diff --git a/doc/sphinx/man/lfun/SpellDefend b/doc/sphinx/man/lfun/SpellDefend
new file mode 100644
index 0000000..22b038c
--- /dev/null
+++ b/doc/sphinx/man/lfun/SpellDefend
@@ -0,0 +1,71 @@
+
+SpellDefend()
+*************
+
+
+FUNKTION
+========
+
+   public int SpellDefend(object caster,mapping sinfo);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   object caster      - Gegner
+   mapping sinfo      - Zusatzinformationen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Ueber den Skill SK_SPELL_DEFEND mit den Aufrufparametern
+     SI_ENEMY    : <caster>
+   und
+     SI_SKILLARG : <sinfo>
+   wird eine Abwehrchance in 0.01%-Schritten fuer einen
+   Spell ermittelt, also 0% - 100% bzw. als Rueckgabewert
+   0 - 10000.
+
+
+
+   Weiterhin wird automatisch P_MAGIC_RESISTANCE_OFFSET und der Skill
+   SK_SPELL_DEFEND beruecksichtigt.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Abwehrchance in 0.01%-Schritten.
+
+
+
+   Fuer Spieler wird dieser Rueckgabewert auf 3333 maximal, also 33,33%
+   Abwehrmoeglichkeit beschraenkt.
+
+
+BEMERKUNGEN
+===========
+
+   Die Spellbooks muessen selbst auf die Auswertung dieser Funktion
+   achten! Dies geschieht nur im Falle von TryGlobalAttackSpell()
+   und bei Spells fuer NPCs mittels P_SPELLS automatisch!
+
+   Bitte bei NPCs nicht pauschal 100% / 10000 zurueckgeben. Danke.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:     P_MAGIC_RESISTANCE_OFFSET
+   Aehnlich:     P_NOMAGIC
+   Generell:     TryGlobalAttackSpell, /std/spellbook.c
+   Sonstiges:    UseSkill, SK_SPELL_DEFEND
+
+29.Dez 2007 Gloinson
diff --git a/doc/sphinx/man/lfun/SpellInform b/doc/sphinx/man/lfun/SpellInform
new file mode 100644
index 0000000..ce8fdbd
--- /dev/null
+++ b/doc/sphinx/man/lfun/SpellInform
@@ -0,0 +1,51 @@
+
+SpellInform()
+*************
+
+
+FUNKTION
+========
+
+   void SpellInform(caster,spell,sinfo);
+
+
+DEFINIERT IN
+============
+
+   selber zu definieren
+
+
+ARGUMENTE
+=========
+
+   pl
+     Das Lebewesen, das erfolgreich gezaubert hat.
+   spell
+     Der Name des gezauberten Spells
+   sinfo
+     Das komplette Spellmapping des gezauberten Spells
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom Spellbuch einer Gilde in der Umgebung
+   (Environment) eines Lebewesens aufgerufen, wenn immer das Lebewesen
+   einen Spell _erfolgreich_ gezaubert hat.
+   Bemerkung: Bitte vermeiden, aufwaendige Sachen in der Funktion zu
+   machen, da sonst u.U. deswegen Gilden anfangen zu buggen. Falls es
+   sein muss, macht dann lieber einen call_out mit 2s Wartezeit.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   ----------------------------------------------------------------------------
+
+16.04.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/Start b/doc/sphinx/man/lfun/Start
new file mode 100644
index 0000000..e0b1070
--- /dev/null
+++ b/doc/sphinx/man/lfun/Start
@@ -0,0 +1,44 @@
+
+Start()
+*******
+
+
+FUNKTION
+========
+
+   varargs void Start(int pos);
+
+
+DEFINIERT IN
+============
+
+   /std/transport.c
+
+
+ARGUMENTE
+=========
+
+   pos
+        Fahrplanstation, an der begonnen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion schickt den Transporter auf die Strecke. Dabei beginnt
+   der Weg an der mit pos bezeichneten Stelle im Fahrplan. Default ist 0,
+   d.h. der Transporter beginnt seinen Weg an der ersten Fahrplanposition.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   Halt(), /std/transport.c
+
+Last modified: Wed May 8 10:25:30 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/StopHuntFor b/doc/sphinx/man/lfun/StopHuntFor
new file mode 100644
index 0000000..e09d9fa
--- /dev/null
+++ b/doc/sphinx/man/lfun/StopHuntFor
@@ -0,0 +1,77 @@
+
+StopHuntFor()
+*************
+
+
+FUNKTION
+========
+
+   varargs int StopHuntFor(object arg,int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   arg
+     Der Gegner, welcher nicht mehr bekaempft werden soll.
+   silent
+     Flag, welches gesetzt anzeigt, dass die beiden Ex-Streithaehne
+     ueber das einseitige Friedensangebot nicht informiert werden
+     sollen.
+
+
+RUeCKGABEWERT
+=============
+
+   Flag: Bei 0 war der Gegner nicht auffindbar, bei 1 Erfolg.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man ein Lebewesen <arg> als Gegner
+   austragen. Im Normalfall erhalten sowohl das aktuelle Objekt, als
+   auch der Gegner eine Information darueber. Dies kann jedoch mit dem
+   gesetzten Flag <silent> unterbunden werden.
+   Es ist auch moeglich, auf diese Meldung Einfluss zu nehmen, indem
+   man die Funktion StopHuntText() ueberschreibt, welche dafuer
+   verantwortlich ist.
+   Achtung: Um zwischen beiden Streithaehnen Frieden zu schliessen,
+   muss der eine Gegner jeweils bei dem anderen ausgetragen werden. Ein
+   einzelnes StopHuntFor() ist sozusagen nur ein einseitiges
+   Friedensangebot.
+
+
+BEMERKUNGEN
+===========
+
+   Soll ein Viech unter bestimmten Umstaenden nicht angreifbar sein, ist in
+   keinem Fall StopHuntFor() im Defend() zu verwenden, sondern P_NO_ATTACK.
+   Grund: Stoppt man unliebsame Kaempfe jeweils am Anfang vom Defend, kann ein
+   Gegner gefahrlos Angriffsspells ausfuehren (und ueben), ohne dass die Gefahr
+   besteht, dass der NPC zurueckschlaegt.
+
+
+BEISPIELE
+=========
+
+   Man will aus irgendeinem Grund den Kampf zwischen sich und Gegner enemy
+   einstellen:
+   ...
+   StopHuntFor(enemy); // enemy nicht mehr bekaempfen
+   enemy->StopHuntFor(this_object()); // enemy soll mich nicht bekaempfen.
+   ...
+
+
+SIEHE AUCH
+==========
+
+   StopHuntText(), SelectEnemy(), QueryEnemies(), IsEnemy()
+
+16.03.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/StopHuntText b/doc/sphinx/man/lfun/StopHuntText
new file mode 100644
index 0000000..fca271b
--- /dev/null
+++ b/doc/sphinx/man/lfun/StopHuntText
@@ -0,0 +1,77 @@
+
+StopHuntText()
+**************
+
+
+FUNKTION
+========
+
+   void StopHuntText(object arg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   arg
+     Der Gegner, welcher nicht mehr bekaempft wird.
+
+
+BESCHREIBUNG
+============
+
+   Mit der Funktion StopHuntFor() kann man ein Lebewesen als Gegner
+   austragen. Dabei erhalten sowohl der Gegner, als auch das Lebewesen,
+   welches (einseitig!) Frieden schliesst, jeweils eine Meldung, sofern
+   man dies nicht mittels eines Flags unterbindet.
+   Es ist nun moeglich, auf diese Meldung Einfluss zu nehmen, indem
+   man die Funktion StopHuntText() ueberschreibt, welche dafuer
+   verantwortlich ist.
+
+
+BEISPIEL
+========
+
+   Ein Lebewesen moechte einen Kampf sofort abbrechen, wenn es von
+   einem Frosch angegriffen wird:
+     int Defend(int dam,mixed dam_type,mixed spell,object enemy)
+     { if(enemy&&enemy->QueryProp(P_FROG))
+       { if(StopHuntFor(enemy))
+         { // wenn Frosch angreifen will, der noch kein Gegner war
+           tell_object(arg,
+    this_object()->Name(WER)+" kaempft nicht mit Dir.\n"
+   +"Wahrscheinlich werden Froesche verschont.\n");
+           tell_object(this_object(),
+    "Der bloede Frosch wollte Dich doch tatsaechlich angreifen.\n");
+         }
+         enemy->StopHuntFor(this_object(),1);
+         return 0;
+       }
+       return::Defend(dam,dam_type,spell,enemy);
+     }
+     // wird nur aufgerufen, wenn der Gegner irgendwann Frosch wurde
+     void StopHuntText(object arg)
+     { tell_object(arg,
+    this_object()->Name(WER)+" jagd Dich nicht mehr.\n"
+   +"Wahrscheinlich werden Froesche verschont.\n");
+       tell_object(this_object(),
+   "Dein Gegner ist doch tatsaechlich ploetzlich Frosch geworden!\n");
+     }
+   Warum braucht man nun das erste StopHuntFor(), wenn doch Gegner erst
+   in ::Defend() eingetragen werden, welches doch gar nicht ausgefuehrt
+   wird, wenn der Gegner ein Frosch ist? Man beachte hierbei, dass der
+   Gegner ja auch waehrend des Kampfes oder waehrend der Feindschaft
+   irgendwann Frosch werden koennte und dann schon Gegner war.
+
+
+SIEHE AUCH
+==========
+
+   StopHuntFor(), SelectEnemy(), QueryEnemies(), IsEnemy()
+
+Last modified: Wed May 26 16:47:51 1999 by Patryn
diff --git a/doc/sphinx/man/lfun/SuggestArticle b/doc/sphinx/man/lfun/SuggestArticle
new file mode 100644
index 0000000..31c2047
--- /dev/null
+++ b/doc/sphinx/man/lfun/SuggestArticle
@@ -0,0 +1,57 @@
+
+SuggestArticle()
+****************
+
+
+FUNKTION
+========
+
+   varargs int SuggestArticle(string name);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/language.c
+
+
+ARGUMENTE
+=========
+
+   name
+        Der Name zur Entscheidungshilfe.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion versucht herauszufinden, ob der Artikel zu diesem Objekt
+   ein unbestimmter oder besser ein bestimmter Artikel sein sollte. Die
+   Vorgehensweise ist folgende: Gibt es in der Umgebung dieses Objektes
+   ein weiteres Objekt, das den Namen name besitzt, so wird ein
+   unbestimmter Artikel vorgeschlagen, ansonsten ein bestimmter.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn ein unbestimmter Artikel geeignet ist, ansonsten 1.
+
+
+BEMERKUNGEN
+===========
+
+   Der Vergleich erfolgt mittels der Property P_NAME. Um Erfolg zu haben,
+   sollte man diese Funktion daher in der Form
+
+   SuggestArticle(QueryProp(P_NAME))
+
+   aufrufen.
+
+
+SIEHE AUCH
+==========
+
+   QueryArticle(), name(), /std/thing/language.c
+
+Last modified: Wed May 8 10:25:34 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/SwapRows b/doc/sphinx/man/lfun/SwapRows
new file mode 100644
index 0000000..aa18364
--- /dev/null
+++ b/doc/sphinx/man/lfun/SwapRows
@@ -0,0 +1,60 @@
+
+SwapRows()
+**********
+
+
+FUNKTION
+========
+
+   int SwapRows( object ob1, object ob2 )
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   ob1, ob2 - Spieler, die die Reihen tauschen sollen.
+
+
+BESCHREIBUNG
+============
+
+   Die angegebenen Spieler tauschen die Reihen.
+
+
+RUECKGABEWERT
+=============
+
+   1 bei erfolgreichem Tausch, 0 sonst.
+
+
+BEMERKUNG
+=========
+
+   Der Tausch wird nur durchgefuehrt, wenn die angegebenen Spieler auch
+   tatsaechlich im Team sind und damit kein NPC vor einen Spieler gestellt
+   wuerde.
+   Moechte man wissen, ob ein Spieler eine Reihe gewechselt hat, muss man
+   sich der Hilfe eines Hooks bedienen: H_HOOK_TEAMROWCHANGE
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_LEADER, P_TEAM_ASSOC_MEMBERS,
+               P_TEAM_NEWMEMBER
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/TakeFlaw b/doc/sphinx/man/lfun/TakeFlaw
new file mode 100644
index 0000000..40d99a2
--- /dev/null
+++ b/doc/sphinx/man/lfun/TakeFlaw
@@ -0,0 +1,100 @@
+
+TakeFlaw()
+**********
+
+
+FUNKTION
+========
+
+   varargs void TakeFlaw(object enemy); (Waffen)
+   varargs void TakeFlaw(mixed dam_types,mapping einfos) (Ruestungen)
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c,
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in Waffen und Ruestungen waehrend des Kampfes
+   aufgerufen. In einer Waffe erfolgt der Aufruf bei jedem Schlag mit
+   dieser Waffe, bei Ruestungen wird TakeFlaw() in einer zufaellig
+   ausgewaehlten getragenen Ruestung aufgerufen.
+   Waffen bekommen das Gegnerobjekt uebergeben, Ruestungen die erweiterten
+   DefendInfos (s. dort fuer Details). Aufgrund dieser Informationen kann
+   man den Schaden, den ein Gegenstand nimmt, flexibler gestalten (z.B. bei
+   einer Waffe in Abhaengigkeit von P_BODY des Gegners.)
+
+   Soweit man die Funktion nicht ueberlaedt, bewirkt sie nichts weiter als
+   das Erhoehen eines Zaehlers, der mit QueryFlaw() abgefragt werden kann.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Waffen-/ Ruestungsklasse wird nicht automatisch reduziert! Wenn
+   eine Waffe oder Ruestung sich abnutzen soll, muss man TakeFlaw()
+   ueberladen und dort entsprechend handeln, oder (fuer einfache
+   Faelle) die Property P_QUALITY setzen.
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, deren Waffenklasse alle 20 Schlaege um 1 abnimmt:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+
+   create()
+   {
+     /* Das Uebliche... */
+   }
+
+   TakeFlaw()
+   {
+     int flaw;
+
+     /* erst mal den Zaehler erhoehen... */
+     ::TakeFlaw();
+
+     /* jetzt den aktuellen Zaehlerstand abfragen */
+     flaw = QueryFlaw()[0];
+
+     /* Abzug nur jeden 20. Schlag */
+     if (!(flaw % 20)) {
+       /* So, jetzt fuer den Schaden sorgen. Hierfuer benutzt */
+       /* man am sichersten die eingebaute Funktion Damage() */
+       Damage(1);
+     }
+   }
+
+   Dieses einfache Beispiel haette natuerlich auch ueber ein
+   SetProp(P_QUALITY,20); im create() realisiert werden koennen.
+
+
+SIEHE AUCH
+==========
+
+   QueryFlaw(), Damage(), DefendInfo, P_QUIALITY, /std/armour/combat.c,
+   /std/weapon/combat.c
+
+Last modified: Thu May 22 10:30:10 1997 by Paracelsus
diff --git a/doc/sphinx/man/lfun/TeamFlee b/doc/sphinx/man/lfun/TeamFlee
new file mode 100644
index 0000000..216fbbf
--- /dev/null
+++ b/doc/sphinx/man/lfun/TeamFlee
@@ -0,0 +1,60 @@
+
+TeamFlee()
+**********
+
+
+FUNKTION
+========
+
+   int TeamFlee()
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Spieler wird zur Flucht in hintere Reihe veranlasst, falls er dies
+   eingestellt hat.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls der Spieler in eine hintere Reihe fliehen wollte und nach
+   dem Versuch nicht mehr in der ersten Reihe steht, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Beim Teamleiter fuehrt der Fluchtversuch dazu, dass sein Team nicht
+   mehr folgt.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/TeamMembers b/doc/sphinx/man/lfun/TeamMembers
new file mode 100644
index 0000000..5971bfb
--- /dev/null
+++ b/doc/sphinx/man/lfun/TeamMembers
@@ -0,0 +1,58 @@
+
+TeamMembers()
+*************
+
+
+FUNKTION
+========
+
+   object *TeamMembers()
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert Teammitglieder des Teams des Spielers.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit ALLEN Teammitgliedern.
+
+
+BEMERKUNGEN
+===========
+
+   Falls der Spieler in keinem Team ist, enthaelt das Array nur den
+   Spieler.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/TeamPrefix b/doc/sphinx/man/lfun/TeamPrefix
new file mode 100644
index 0000000..2cf1582
--- /dev/null
+++ b/doc/sphinx/man/lfun/TeamPrefix
@@ -0,0 +1,56 @@
+
+TeamPrefix()
+************
+
+
+FUNKTION
+========
+
+   string TeamPrefix()
+
+
+DEFINIERT IN
+============
+
+   /std/living/team.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Ergibt Team-Prefix eines Spielers.
+
+
+RUECKGABEWERT
+=============
+
+   "[Team Teamname] ", falls der Spieler in einem Team ist,
+   ""                  sonst.
+
+
+BEMERKUNGEN
+===========
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
+               SelectNearEnemy, SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/lfun/Teleport b/doc/sphinx/man/lfun/Teleport
new file mode 100644
index 0000000..ddddb89
--- /dev/null
+++ b/doc/sphinx/man/lfun/Teleport
@@ -0,0 +1,51 @@
+
+Teleport()
+**********
+
+
+FUNKTION
+========
+
+   int Teleport(string ziel)
+
+
+ARGUMENTE
+=========
+
+   ziel: Nummer des Sehertors, zu dem teleportiert werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Teleportiert den Seher (this_player()) zu dem Tor mit der angegebenen
+   Nummer. Falls keine Nummer angegeben wird, wird mit ShowDoors() die
+   Liste der bekannten Tore angezeigt und auf die Eingabe einer Nummer
+   gewartet.
+
+
+RUECKGABEWERT
+=============
+
+   0, falls der Seher nicht neben einem Tor steht, dass er kennt.
+   1  sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Der Seher muss in einem Raum stehen, in dem sich ein Sehertor befindet,
+   dass er kennt. Der Seher muss auch das angegebene Ziel kennen.
+   Diese Funktion wird von /d/seher/portale/sehertormaster definiert.
+
+
+BEISPIELE
+=========
+
+   /d/seher/portale/sehertormaster->Teleport(1)
+
+
+SIEHE AUCH
+==========
+
+   DiscoverDoor, DoorIsKnown, ShowDoors, GetDoorsMapping
diff --git a/doc/sphinx/man/lfun/TestIgnore b/doc/sphinx/man/lfun/TestIgnore
new file mode 100644
index 0000000..d1d2b95
--- /dev/null
+++ b/doc/sphinx/man/lfun/TestIgnore
@@ -0,0 +1,88 @@
+
+TestIgnore()
+************
+
+
+FUNKTION
+========
+
+   public int TestIgnore(string|string* arg)
+
+
+DEFINIERT IN
+============
+
+   /std/player/comm.c
+
+
+ARGUMENTE
+=========
+
+   arg
+       String oder Array von Strings, die getestet werden sollen,
+       Format jeweils: [spieler].aktion[.qualifizierer]
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn arg nicht ignoriert wird
+   MSG_IGNORED, wenn (min. ein Element von) arg ignoriert wird
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob der Spieler irgendeinen Eintrag auf seiner Liste
+   hat, der dazu fuehrt, dass <arg> ignoriert wird. Hierbei kommen je nach
+   den Angaben in <arg> folgende Regeln zum Tragen:
+   1) spieler
+      Wird der Spieler ignoriert?
+   2) .aktion
+      Ignoriert der Spieler .aktion, d.h. die Aktion komplett (OHNE
+      Qualifizierer)?
+   3) spieler.aktion
+      Ignoriert der Spieler spieler, .aktion oder spieler.aktion?
+   4) spieler.aktion.qualifizierer
+      Ignoriert der Spieler spieler, .aktion, spieler.aktion oder
+      spieler.aktion.qualifizierer?
+   5) .aktion.qualifizierer
+      Ignoriert der Spieler .aktion oder .aktion.qualifizierer?
+
+   Da TestIgnore() damit durchaus etwas aufwendiger sein kann, sollte
+   man dies nicht unnoetig oft aufrufen. (Braucht man das Ergebnis z.B.
+   kurz spaeter nochmal, koennte man das Ergebnis speichern.) Wird der
+   Qualifizierer nicht gebraucht, sollte man ihn weglassen.
+
+
+BEISPIEL
+========
+
+   if (!this_player()->TestIgnore("andy"))
+     tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
+
+   // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
+   // Spieler (this_player()) an einem anderen Spieler (target)
+   if (!target->TestIgnore( ({getuid(this_player()) + ".kratze",
+                                 getuid(this_player()) + ".kratz"}) ))
+   {
+     tell_object(target, this_player()->Name()+" kratzt dich.\n");
+     tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
+   }
+   else
+     tell_object(this_player(), target->Name()+" ignoriert dich.\n");
+
+   // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
+   // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
+   // an einem zu kurierenden Spieler (target)
+   if (target->TestIgnore(getuid(caster)+".kuriere.klerus"))
+     tell_object(caster, break_string(
+       target->Name()+" ignoriert deinen Versuch.", 78));
+
+
+SIEHE AUCH
+==========
+
+   P_IGNORE, AddIgnore, RemoveIgnore, TestIgnoreSimple, /std/player/comm.c
+
+26.04.2014 Zesstra
diff --git a/doc/sphinx/man/lfun/TestIgnoreSimple b/doc/sphinx/man/lfun/TestIgnoreSimple
new file mode 100644
index 0000000..c0ec76e
--- /dev/null
+++ b/doc/sphinx/man/lfun/TestIgnoreSimple
@@ -0,0 +1,77 @@
+
+TestIgnoreSimple()
+******************
+
+
+FUNKTION
+========
+
+   public int TestIgnoreSimple(string *arg)
+
+
+DEFINIERT IN
+============
+
+   /std/player/comm.c
+
+
+ARGUMENTE
+=========
+
+   arg
+       Liste von Strings, die getestet werden sollen
+
+
+BESCHREIBUNG
+============
+
+   TestIgnoreSimple() prueft, ob der Spieler min. einen der uebergebenen
+   Eintraege auf seiner Ignoriereliste hat.
+   Falls man mehrere Eintraege pruefen muss/moechte, ist es schneller, alle
+   Eintraege in einem zu uebergeben anstatt fuer jeden einzeln
+   TestIgnoreSimple() aufzurufen.
+
+
+RUeCKGABEWERT
+=============
+
+   1, falls es mindestens eine Uebereinstimmungen von arg und der
+   Ignoriere-Liste des Spielers gibt.
+   0, sonst.
+
+
+BEISPIEL
+========
+
+   if (!this_player()->TestIgnoreSimple(({"andy"})))
+     tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
+
+   // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
+   // Spieler (this_player()) an einem anderen Spieler (target)
+   if (!target->TestIgnoreSimple(getuid(this_player()),
+                           getuid(this_player())+".kratz",
+                           getuid(this_player())+".kratze",
+                           ".kratz", ".kratze"}))) {
+     tell_object(target, this_player()->Name()+" kratzt dich.\n");
+     tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
+   } else
+     tell_object(this_player(), target->Name()+" ignoriert dich.\n");
+
+   // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
+   // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
+   // an einem zu kurierenden Spieler (target)
+   if (target->TestIgnoreSimple(({getuid(caster),
+                            getuid(caster)+".kuriere",
+                            getuid(caster)+".kuriere.klerus",
+                            ".kuriere",
+                            ".kuriere.klerus"})))
+     tell_object(caster, break_string(
+       target->Name()+" ignoriert deinen Versuch.", 78));
+
+
+SIEHE AUCH
+==========
+
+   P_IGNORE, AddIgnore, RemoveIgnore, TestIgnore, /std/player/comm.c
+
+26.04.2014 Zesstra
diff --git a/doc/sphinx/man/lfun/TestLimitViolation b/doc/sphinx/man/lfun/TestLimitViolation
new file mode 100644
index 0000000..df9f7b2
--- /dev/null
+++ b/doc/sphinx/man/lfun/TestLimitViolation
@@ -0,0 +1,39 @@
+
+TestLimitViolation()
+********************
+
+
+FUNKTION
+========
+
+   status TestLimitViolation(mapping check)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   check      - Mapping mit Attributen: ([<attr>:<wert>])
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob die Summe der in check enthaltenen Modifikatoren die Summe
+   aller Modifikatoren im Spieler ueber den zugelassenen Grenzwert hebt.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/sphinx/man/lfun/TriggerEvent b/doc/sphinx/man/lfun/TriggerEvent
new file mode 100644
index 0000000..44dd2e4
--- /dev/null
+++ b/doc/sphinx/man/lfun/TriggerEvent
@@ -0,0 +1,87 @@
+
+TriggerEvent()
+**************
+
+
+FUNKTION
+========
+
+   varargs int TriggerEvent(string eid, mixed data);
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/eventd.c
+
+
+DEKLARIERT IN
+=============
+
+   /sys/events.h
+
+
+ARGUMENTE
+=========
+
+   string eid,
+     Die ID des Events, der ausgeloest werden soll.
+     Da dieser String fuer alle Events jeweils eindeutig sein muss,
+     empfiehlt es sich, fuer eigene Events z.B. als Praefix den eigenen
+     Magiernamen zu nehmen, z.B. "zesstra_vulkanausbruch".
+     ACHTUNG: IDs, die mit 'evt_lib_' beginnen, sind AUSSCHLIESSLICH der
+     Mudlib vorbehalten!
+
+   mixed data,
+     Daten, die jeder Lauscher uebergeben bekommt. Kann ein beliebiger
+     Datentyp sein. Ggf. ein Mapping oder Array benutzen.
+
+
+BESCHREIBUNG
+============
+
+   Der Event mit der ID 'eid' wird ausgeloest. Mit kurzer Verzoegerung
+   (meist 0-2s) werden alle fuer 'eid' registrierten Lauscher durch Aufruf
+   einer Funktion in ihnen informiert:
+   listener->fun(eid, triggerob, data);
+   'triggerob' ist hierbei das Objekt, welche TriggerEvent() gerufen hat,
+   'data' das, was das triggernde Objekte als Daten weiterverteilen moechte.
+   Die einzelnen fun() in den lauschenden Objekten muessen wissen, was sie
+   mit 'data' anfangen sollen. ;-)
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg, <=0 fuer Misserfolg.
+   1   - Erfolg, Event 'eid' wurde ausgeloest.
+   -1  - falsche Argumente wurden uebergeben
+   -2  - nicht-oeffentlicher Event und das triggernde Objekt wurde nicht
+         fuer diesen Event freigegeben (momentan gibt es noch keine
+         nicht-oeffentlichen Events)
+   -3  - Event 'eid' existiert nicht, d.h. es gibt keine Lauscher.
+   -4  - Es gibt zuviele nicht verarbeitete Events.
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   1. Ein Waechter wird angegriffen:
+      EVENTD->TriggerEvent("xand_holzfaellerlager_angriff",
+                           (["angreifer": enemy,
+                             "ort": environment(this_object()) ]) );
+      Alle anderen angemeldeten Waechter der Lagers werden nun informiert
+      und koennen ihrerseits reagieren (dem ersten Waechter zuhilfe kommen
+      oder auch die Lagertore schliessen).
+
+
+SIEHE AUCH
+==========
+
+   events, eventd, UnregisterEvent(), RegisterEvent()
+
+Last modified: 15.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/UnregisterEvent b/doc/sphinx/man/lfun/UnregisterEvent
new file mode 100644
index 0000000..6d9bfb7
--- /dev/null
+++ b/doc/sphinx/man/lfun/UnregisterEvent
@@ -0,0 +1,79 @@
+
+UnregisterEvent()
+*****************
+
+
+FUNKTION
+========
+
+   int UnregisterEvent(string eid, object listener);
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/eventd.c
+
+
+DEKLARIERT IN
+=============
+
+   /sys/events.h
+
+
+ARGUMENTE
+=========
+
+   string eid,
+     Die ID des Events, vom dem man sich abmelden will.
+   object listener,
+     Das Objekt, das als Lauscher ausgetragen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Objekt 'listener' wird als Lauscher dieses Events ausgetragen. Ab
+   diesem Moment wird es bei Events vom Typ 'eid' nicht mehr informiert.
+
+   Hat der Event 'eid' im Anschluss keine Lauscher mehr, wird er implizit
+   geloescht.
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg, <=0 fuer Misserfolg.
+   1   - Erfolg, 'listener' wurde eingetragen.
+   -1  - falsche Argumente uebergeben
+   -2  - 'listener' ist nicht fuer 'eid' registriert.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn sich ein Objekt vor Zerstoerung nicht abmeldet, wird es ggf. beim
+   naechsten Auftreten von 'eid' automatisch ausgetragen.
+   Falls Blueprints nach Neuladen nicht automatisch angemeldet sein sollen,
+   sollten sie sich im remove() explizit abmelden.
+
+
+BEISPIELE
+=========
+
+   1. Ein Objekt moechte nicht mehr ueber Spielertode informiert werden:
+        EVENTD->UnregisterEvent(EVT_LIB_PLAYER_DEATH, this_object());
+
+   2. Ein Objekt moechte sich bei Zerstoerung abmelden:
+     varargs int remove(int silent) {
+         ...
+         EVENTD->UnregisterEvent("zesstra_vulkanausbruch",this_object());
+     }
+
+
+SIEHE AUCH
+==========
+
+   events, eventd, UnregisterEvent(), RegisterEvent()
+
+Last modified: 15.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/UnregisterHelperNPC b/doc/sphinx/man/lfun/UnregisterHelperNPC
new file mode 100644
index 0000000..79c18f6
--- /dev/null
+++ b/doc/sphinx/man/lfun/UnregisterHelperNPC
@@ -0,0 +1,72 @@
+
+UnregisterHelperNPC()
+*********************
+
+
+FUNKTION
+========
+
+   public int UnregisterHelperNPC(object npc);
+
+
+DEFINIERT IN
+============
+
+   /std/player/combat.c
+
+
+ARGUMENTE
+=========
+
+   object npc
+     Objekt des helfenden NPC, der abgemeldet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
+   wieder abgemeldet, wenn dieser dem Spieler ab jetzt nicht mehr hilft.
+
+   Wenn ein Helfer-NPC zerstoert wird, ist der Aufruf nicht noetig.
+   Bleibt das Objekt des NPC aber existent, bitte auf jeden Fall wieder
+   ordentlich abmelden, da ansonsten ggf. der Spieler unnoetig blockiert
+   wird.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn die Abmeldung erfolgreich war.
+   0 sonst, z.B. wenn der NPC gar nicht als Helfer registriert war.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
+   auf 0.
+
+
+BEISPIELE
+=========
+
+   1. Ein NPC, der dem Spieler nicht mehr helfen will und normalerweisen im
+      Raum verbleiben soll:
+   tell_object(spieler, "Ich mag Dich nicht mehr, Du bist doof!\n");
+   if (spieler->UnregisterHelperNPC(this_object()) != 1) {
+     // das ist ja bloed...
+     remove(0);
+   }
+   else {
+     tell_room(environment(),
+         Name()+" dreht " +spieler->Name(WEM) + " schmollend den Ruecken "
+         "zu.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   UnregisterHelperNPC()
+   P_HELPER_NPC
diff --git a/doc/sphinx/man/lfun/UnregisterHelperObject b/doc/sphinx/man/lfun/UnregisterHelperObject
new file mode 100644
index 0000000..d6242c9
--- /dev/null
+++ b/doc/sphinx/man/lfun/UnregisterHelperObject
@@ -0,0 +1,71 @@
+
+UnregisterHelperObject()
+************************
+
+
+FUNKTION
+========
+
+   int UnregisterHelperObject(object helper, int type);
+
+
+DEFINIERT IN
+============
+
+   /std/living/helpers.c
+
+
+ARGUMENTE
+=========
+
+   object helper
+     Das Objekt, das als Hilfsobjekt deregistriert werden soll.
+   int type
+     Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
+     - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
+     - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung
+
+
+BESCHREIBUNG
+============
+
+   Das als Hilfsobjekt fuer bestimmte Aktivitaeten wie zum Beispiel Tauchen
+   oder Fliegen bei einem Lebewesen registrierte Objekt "helper" meldet
+   sich bei diesem ab.
+   Hinweis: fuer eine temporaer gueltige "Nicht-Zustaendigkeit" kaeme auch
+   in Frage, in dieser Zeit einfach "0" zurueckzugeben, statt sich
+   komplett abzumelden.
+
+
+RUECKGABEWERTE
+==============
+
+    1  Objekt wurde erfolgreich ausgetragen (HELPER_SUCCESS)
+   -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
+   -3  angegebenes Hilfsobjekt war gar nicht angemeldet
+       (HELPER_NOTHING_TO_UNREGISTER)
+
+
+BEISPIEL
+========
+
+   Eine luftgefuellte Blase hatte sich als Tauch-Helfer am Spieler
+   angemeldet, ist jetzt aber verbraucht und meldet sich daher ab:
+
+   // Austragen im Spielerobjekt
+   void BlaseAustragen() {
+     [...]
+     if ( TP->UnregisterHelperObject(ME, HELPER_TYPE_AQUATIC)
+          == HELPER_SUCCESS )
+       remove();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  RegisterHelperObject()
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+   Sonstiges:   /sys/living/helpers.h
+
+19.02.2013 Arathorn
diff --git a/doc/sphinx/man/lfun/Unwear b/doc/sphinx/man/lfun/Unwear
new file mode 100644
index 0000000..0ef0a2a
--- /dev/null
+++ b/doc/sphinx/man/lfun/Unwear
@@ -0,0 +1,65 @@
+
+Unwear()
+********
+
+
+FUNKTION
+========
+
+   public int Unwear(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung oder Kleidung, die ausgezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   oder das Kleidungsstueck <ob> aus.
+   ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung aus P_ARMOURS bzw. P_CLOTHING ausgetragen wird. Es
+   finden zur Zeit keine Pruefungen statt, ob das Lebewesen den Gegenstand
+   ueberhaupt ausziehen kann. Genausowenig werden Funktionen wie
+   InformUnwear()/RemoveFunc() gerufen oder etwaige Stat-Boni deaktiviert.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Ausziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/UnwearArmour b/doc/sphinx/man/lfun/UnwearArmour
new file mode 100644
index 0000000..b3c7d77
--- /dev/null
+++ b/doc/sphinx/man/lfun/UnwearArmour
@@ -0,0 +1,65 @@
+
+UnwearArmour()
+**************
+
+
+FUNKTION
+========
+
+   public int UnwearArmour(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung, die ausgezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   <ob> aus.
+   ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung aus P_ARMOURS ausgetragen wird. Es finden zur Zeit
+   keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
+   ausziehen kann. Genausowenig werden Funktionen wie
+   InformUnwear()/RemoveFunc() gerufen oder etwaige Stat-Boni deaktiviert.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Ausziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/UnwearClothing b/doc/sphinx/man/lfun/UnwearClothing
new file mode 100644
index 0000000..fe0372b
--- /dev/null
+++ b/doc/sphinx/man/lfun/UnwearClothing
@@ -0,0 +1,65 @@
+
+UnwearClothing()
+****************
+
+
+FUNKTION
+========
+
+   public int UnwearClothing(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   object ob
+     Das Kleidungsstuck, das ausgezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht das
+   Kleidungsstueck <ob> aus.
+   ABER: 'Ausziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung aus P_CLOTHING ausgetragen wird. Es finden zur Zeit
+   keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
+   ausziehen kann. Genausowenig werden Funktionen wie
+   InformUnwear()/RemoveFunc() gerufen.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Ausziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Ausziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/UnwieldFunc b/doc/sphinx/man/lfun/UnwieldFunc
new file mode 100644
index 0000000..0301182
--- /dev/null
+++ b/doc/sphinx/man/lfun/UnwieldFunc
@@ -0,0 +1,74 @@
+
+UnwieldFunc()
+*************
+
+
+FUNKTION
+========
+
+   int UnwieldFunc(object weapon, int info, object user);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten, fuer /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   weapon (object)
+        Die Waffe, die weggesteckt werden soll.
+   info (int)
+        Bei (info&M_SILENT) wird keine Meldung ueber das Wegstecken
+        ausgegeben.
+        Bei (info&M_NOCHECK) wird die Waffe auch weggesteckt, wenn
+        sie verflucht ist. Die tritt insbesondere dann auf, wenn der
+        Spieler, der die Waffe benutzt, stirbt und die Waffe in
+        die Leiche bewegt wird.
+   user (object)
+        Das Lebewesen, welches die Waffe gerade gezueckt hat und sie nun
+        ausziehen will.
+
+
+BESCHREIBUNG
+============
+
+   Hier koennen zusaetzliche Abfragen vorgenommen werden, ob sich die
+   Waffe <weapon> wegstecken laesst oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn sich die Waffe nicht wegstecken laesst, ansonsten ungleich 0.
+
+
+BEMERKUNGEN
+===========
+
+   Verfluchte Waffen, die sich erst nach Entfernung des Fluches wegstecken
+   lassen, sollte man besser mit P_CURSED realisieren.
+   Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
+   keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
+   Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
+   nicht wegstecken laesst, etc.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
+   benutzt bitte InformWear().
+   Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
+   welches die Waffe gezueckt und wegstecken will.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+SIEHE AUCH
+==========
+
+   P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+   DoWield(), DoUnwield(), InformWield(), InformUnwield(),
+   UnwieldFunc, WieldFunc()
+   /std/weapon/combat.c
+
+02.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/UpdateAttributes b/doc/sphinx/man/lfun/UpdateAttributes
new file mode 100644
index 0000000..cdebaa7
--- /dev/null
+++ b/doc/sphinx/man/lfun/UpdateAttributes
@@ -0,0 +1,52 @@
+
+UpdateAttributes()
+******************
+
+
+FUNKTION
+========
+
+   void UpdateAttributes()
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+BESCHREIBUNG
+============
+
+   Rechnet damit alle Attributmodifier der im Inventory befindlichen
+   (P_X_ATTR_MOD, P_X_HEALTH_MOD) und getragenen/gezueckten
+   (P_M_HEALTH_MOD, P_M_ATTR_MOD) Objekte und aller Attributoffsets
+   zusammen und speichert sie in einer intern fuer Attribute
+   verwendete Variablen.
+   Berechnet darauf basierend HP und SP neu.
+
+
+
+   Die Bedingungen fuer die ueber P_TIMED_ATTR_MOD gesetzten
+   Attributveraenderungen werden im Heartbeat in der Funktion
+   attribute_hb ueberprueft.
+
+
+BEMERKUNGEN
+===========
+
+   Sollte nach Einbringen neuer Modifikatorobjekte am Living gerufen
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+09.05.2007 by Zesstra
diff --git a/doc/sphinx/man/lfun/UpdateResistanceStrengths b/doc/sphinx/man/lfun/UpdateResistanceStrengths
new file mode 100644
index 0000000..8ae9198
--- /dev/null
+++ b/doc/sphinx/man/lfun/UpdateResistanceStrengths
@@ -0,0 +1,43 @@
+
+UpdateResistanceStrengths()
+***************************
+
+
+FUNKTION
+========
+
+   public void UpdateResistanceStrengths()
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion wird intern mehrmals (durch Defend, AddResistanceModifier
+   und RemoveResistanceModifier) aufgerufen. In ihr wird das Resistenz-
+   mapping zusammengerechnet und Eintraege geloescht, deren Eintraege
+   invalid sind oder deren setzende Objekte geloescht wurden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   Berechnung:        CheckResistance(), Defend()
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier(),
+                      P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
+
+29.Apr 2002, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/UseHands b/doc/sphinx/man/lfun/UseHands
new file mode 100644
index 0000000..d11723c
--- /dev/null
+++ b/doc/sphinx/man/lfun/UseHands
@@ -0,0 +1,61 @@
+
+UseHands()
+**********
+
+
+FUNKTION
+========
+
+   public varargs int UseHands(object ob, int num)
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   ob  - das Objekt, das die Haende belegen soll
+   num - die Anzahl der zu belegenden Haende
+
+
+RUECKGABEWERT
+=============
+
+   1, fuer Erfolg
+   0, sonst
+
+
+BESCHREIBUNG
+============
+
+   Belegt, wenn moeglich Haende eines Livings durch ein bestimmtes
+   Objekt. Wenn die Anzahl der freien Haende (P_MAX_HANDS-P_USED_HANDS)
+   kleiner ist als "num", dann schlaegt diese Belegung fehl.
+
+
+BEISPIELE
+=========
+
+   > halte seil fest
+   ...
+   this_player()->UseHands(this_object(),2);
+   ...
+
+   > lasse seil los
+   ...
+   this_player()->FreeHands(this_object());
+   ...
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   FreeHands
+
+1.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/UseSkill b/doc/sphinx/man/lfun/UseSkill
new file mode 100644
index 0000000..4f3398d
--- /dev/null
+++ b/doc/sphinx/man/lfun/UseSkill
@@ -0,0 +1,74 @@
+
+UseSkill()
+**********
+
+
+FUNKTION
+========
+
+   public varargs mixed UseSkill(string skill, mapping args)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string skill     Skill-Name
+   mapping args     Argumente (veraenderte Skillmapping-Informationen)
+
+
+BESCHREIBUNG
+============
+
+   Benutzt einen Skill. Dieser Skill sollte (als grossgeschriebener Skill)
+   im Living vorliegen und das Living darf kein Geist sein.
+
+
+
+   Die Argumente 'args' werden temporaer auf das Skillmapping des Living
+   addiert (also nur fuer diesen Aufruf und SI_INHERIT gueltig).
+
+
+
+   Eine ausfuehrbare Skill-Funktion zum Skill wird in folgender
+   Reihenfolge bestimmt:
+   - eine gesetzte SI_CLOSURE nutzen
+   - ein gesetztes SI_SKILLFUNC in der gesetzten Gilde nutzen
+   - im Living die Funktion "StdSkill_"+skill (zB Waffenskills) nutzen
+   - QuerySkillAbility() nutzen
+   Die so bestimmte Skill-Funktion wird dann als SI_CLOSURE im Spieler
+   gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
+   Die Methode wird dann gerufen (der Skill also angewandt).
+
+
+
+   Standardmaessig gibt ein UseSkill() also einfach den SI_SKILLABILITY-Wert
+   eines Skills zurueck, es sei denn, eine Funktion wurde fuer den Skill
+   an einer der oben genannten Stellen implementiert.
+
+
+
+   Ein eventuell uebergeordneter Skill (SI_INHERIT) wird mit dem durch den
+   Aufruf der Skill-Funktion veraenderten Mapping mit UseSkill(skill, args)
+   ebenfalls noch ausgefuehrt, bevor das Resultat zurueckgegeben wird.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+   Spellbook:      Learn, SpellSuccess, Erfolg, Misserfolg
+
+4. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/UseSpell b/doc/sphinx/man/lfun/UseSpell
new file mode 100644
index 0000000..b5cfbf7
--- /dev/null
+++ b/doc/sphinx/man/lfun/UseSpell
@@ -0,0 +1,105 @@
+
+UseSpell()
+**********
+
+
+FUNKTION
+========
+
+   public varargs int UseSpell(string str, string spell)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+
+
+ARGUMENTE
+=========
+
+   string str       Spell-Optionen
+   string spell     optionaler Spellname
+
+
+BESCHREIBUNG
+============
+
+   Benutzt einen Spell, dessen Spellname 'spell' ggf ueber query_verb()
+   ermittelt wird. Dieser Spell sollte (als kleingeschriebener
+   Skill/Spell) im Living vorliegen.
+
+
+
+   Die Argumente 'str' werden als SI_SKILLARG temporaer in das
+   Skillmapping eingetragen (also nur fuer diesen Aufruf gueltig).
+
+
+
+   Eine ausfuehrbare Spell-Funktion zum Spell wird in folgender
+   Reihenfolge bestimmt:
+   - eine gesetzte SI_CLOSURE nutzen
+   - "UseSpell" an einem gesetzten SI_SPELLBOOK nutzen
+   - "UseSpell" an der gesetzten P_GUILD nutzen
+     - [UseSpell der Gilde sucht iA ebenfalls nur den Spell am Spellbook]
+   - eine Closure mit Rueckgabewert 0 erstellen
+   Die so bestimmte Spell-Funktion wird dann als SI_CLOSURE im Spieler
+   gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
+   Die Methode wird dann gerufen (der Spell also angewandt).
+
+   Standardmaessig gibt ein UseSpell() also 0 zurueck, es sei denn, eine
+   Funktion wurde fuer den Spell an einer der oben genannten Stellen
+   implementiert.
+
+   SI_INHERIT ist fuer Spells beim Aufruf wirkungslos (gilt aber bei
+   LearnSkill normal).
+
+   Ein Durchlauf von UseSpell durch den Spieler sieht in etwa so aus:
+     1) Die Methode wird als Empfaenger fuer Kommandos bekannt gemacht.
+        Das passiert mit der Anweisung
+        'add_action("UseSpell", "", 1);' in den Dateien player/base.c und
+        in living/npc.c.
+
+     2) /std/living/skills::UseSpell wird durch Kommando oder Heartbeat
+        gerufen.
+
+
+
+     3) UseSpell() ermittelt eine SI_CLOSURE oder delegiert diesen Aufruf
+        an die gueltige Gilde/das Spellbook weiter.
+
+
+
+     4) Eine gueltige Closure wird ausgefuehrt. UseSpell() uebergibt dabei
+        die Spell/Skill-Informationen und SI_SKILLARG.
+
+
+
+     4.1.) Im Normalfall einer Gilde/Spellbook landet der Aufruf ueber
+           /std/gilden_ob::UseSpell() in /std/spellbook::UseSpell() und
+           dieses ruft eine Spellfunktion im Spellbook auf.
+           Die Spellfunktion arbeitet mit den Spell-Informationen und
+           gibt ein ERFOLG, MISSERFOLG oder 0 dafuer zurueck, ob das
+           Spellbook Lernen/Fehlermeldung oder nichts machen soll.
+           Dementsprechend werden P_SP, P_ATTACK_BUSY und
+           P_NEXT_SPELL_TIME im Spellbook geaendert.
+
+     5.) Der Aufruf der Closure kehrt zurueck und wird zurueckgegeben.
+         Damit ist der 0-Rueckgabewert der Spellfunktion im Spellbook
+         aequivalent einem nicht ausgefuehrten Kommando.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+   Spellbook:      UseSpell (spellbook), Learn, SpellSuccess
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/Validate b/doc/sphinx/man/lfun/Validate
new file mode 100644
index 0000000..ddfceef
--- /dev/null
+++ b/doc/sphinx/man/lfun/Validate
@@ -0,0 +1,74 @@
+
+Validate()
+**********
+
+
+FUNKTION
+========
+
+   string Validate(string oname);
+
+
+DEFINIERT IN
+============
+
+   /std/virtual/v_compiler.c
+
+
+ARGUMENTE
+=========
+
+   oname
+       Objektname, der geprueft werden soll
+
+
+RUeCKGABEWERT
+=============
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion hat die Aufgabe zu ueberpruefen ob ein Objekt welches
+   geladen werden soll, in dem VC  ueberhaupt erlaubt ist. Dieser
+   Funktion wird nur der reine Filename uebergeben, ohne Pfad!
+   Diese Funktion macht im Standard-VC in /std/ nichts weiter, als
+   das '.c' am File Namen abzuschneiden.
+   Sollte der Dateiname gueltig sein liefert die Funktion als Rueckgabewert
+   den Filenamen ohne .c und sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Am besten ruft man in seinem Validate() das ::Validate(), was einem die
+   Arbeit abnimmt, ein .c am Ende zu entfernen.
+
+
+BEISPIEL
+========
+
+   string Validate(string oname) {
+     string raum, spieler;
+     //.c abschneiden
+     oname=::Validate(oname);
+
+
+
+     // folgt der Raum dem Muster "arena|name"? Wenn nein -> ungueltig,
+     // 0 zureckgeben, sonst den Filenamen.
+     if(sscanf(oname,"%s|%s",raum,spieler)<2 || raum!="arena")
+        return 0;
+     return oname;
+   }
+
+
+SIEHE AUCH
+==========
+
+   virtual_compiler
+   CustomizeObject(), Validate(), NoParaObjects(),
+   P_COMPILER_PATH, P_PARA
+   /std/virtual/v_compiler.c
+
+27.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/Wear b/doc/sphinx/man/lfun/Wear
new file mode 100644
index 0000000..6a46903
--- /dev/null
+++ b/doc/sphinx/man/lfun/Wear
@@ -0,0 +1,64 @@
+
+Wear()
+******
+
+
+FUNKTION
+========
+
+   public int Wear(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung oder Kleidung, die angezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   oder das Kleidungsstueck <ob> an.
+   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung in P_ARMOURS bzw. P_CLOTHING eingetragen wird. Es
+   finden zur Zeit keine Pruefungen statt, ob das Lebewesen den Gegenstand
+   ueberhaupt anziehen kann. Genausowenig werden Funktionen wie InformWear()
+   gerufen oder etwaige Stat-Boni aktiviert.
+   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Anziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   WearArmour(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/WearArmour b/doc/sphinx/man/lfun/WearArmour
new file mode 100644
index 0000000..a6961b2
--- /dev/null
+++ b/doc/sphinx/man/lfun/WearArmour
@@ -0,0 +1,64 @@
+
+WearArmour()
+************
+
+
+FUNKTION
+========
+
+   public int WearArmour(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   object ob
+     Die Ruestung, die angezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
+   <ob> an.
+   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung in P_ARMOURS eingetragen wird. Es finden zur Zeit keine
+   Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt anziehen
+   kann. Genausowenig werden Funktionen wie InformWear() gerufen oder
+   etwaige Stat-Boni aktiviert.
+   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Anziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/WearClothing b/doc/sphinx/man/lfun/WearClothing
new file mode 100644
index 0000000..51cc015
--- /dev/null
+++ b/doc/sphinx/man/lfun/WearClothing
@@ -0,0 +1,64 @@
+
+WearClothing()
+**************
+
+
+FUNKTION
+========
+
+   public int WearClothing(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/clothing.c
+
+
+ARGUMENTE
+=========
+
+   object ob
+     Das Kleidungsstuck, das angezogen wird.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion gerufen wird, zieht das
+   Kleidungsstueck <ob> an.
+   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
+   Ruestung/Kleidung in P_CLOTHING eingetragen wird. Es finden zur Zeit
+   keine Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt
+   anziehen kann. Genausowenig werden Funktionen wie InformWear() gerufen.
+
+   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
+   von diesem im Lebewesen gerufen zu werden.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Anziehen erfolgreich war.
+   0 sonst.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
+   besten auch dann nicht.
+
+
+SIEHE AUCH
+==========
+
+   Wear(), WearArmour(), Unwear(), UnwearArmour(), UnwearClothing()
+   P_CLOTHING, P_ARMOURS
+   FilterClothing(), FilterArmours()
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/WearFunc b/doc/sphinx/man/lfun/WearFunc
new file mode 100644
index 0000000..d1d0121
--- /dev/null
+++ b/doc/sphinx/man/lfun/WearFunc
@@ -0,0 +1,105 @@
+
+WearFunc()
+**********
+
+
+FUNKTION
+========
+
+   int WearFunc(object ruest, int silent, object user);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten (fuer /std/clothing/wear)
+
+
+ARGUMENTE
+=========
+
+   ruest (object)
+        Die Ruestung/Kleidung, die angezogen werden soll.
+   silent (int)
+        Ob dabei eine Meldung ausgegeben wird.
+   user (object)
+        Das Lebewesen, welches die Ruestung/Kleidung anziehen will.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
+   Ruestung <ruest> von this_player() anziehen laesst oder nicht.
+   Kann die Ruestung angezogen werden, so muss ein Wert ungleich 0
+   zurueckgegeben werden.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn sich die Ruestung nicht anziehen laesst, ansonsten ungleich 0.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte nicht darauf verlassen, dass der Spieler das Objekt auch wirklich
+   anzieht, wenn man hier 1 zurueckgibt.
+   Speziell bei Schilden kann das Anziehen trotz eines Rueckgabewertes
+   != 0 immer noch schief gehen, wenn der Spieler keine Hand mehr frei hat.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
+   benutzt bitte InformWear().
+   Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
+   ist.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+BEISPIELE
+=========
+
+   Ein Helm, der nur von Elfen getragen werden kann:
+
+   inherit "std/armour.c";
+
+   #include <properties.h>
+
+   create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_HELMET);
+     /* zig weitere SetProp's, um den Helm zu konfigurieren */
+
+     /* WearFunc() ist im Helm selbst zu finden */
+     SetProp(P_WEAR_FUNC, this_object());
+   }
+
+   int WearFunc(object me, int silent, object user)
+   {
+     if (user->QueryProp(P_RACE) == "Elf")
+       return 1;   /* Elfen duerfen den Helm tragen */
+
+     /* Die anderen Rassen sollten zumindest erfahren koennen, wieso
+        sie den Helm nicht tragen koennen... */
+     if (!silent)
+         write( "Der Helm rutscht Dir immer ueber Deine runden "
+               +"Ohren.\n" );
+     return 0;
+   }
+
+   Gibt jetzt ein Nicht-Elf "trage helm" ein, so bekommt er die Meldung
+   "Der Helm rutscht Dir immer ueber Deine runden Ohren.", Elfen dagegen
+   passt das Teil wie angegossen.
+
+
+SIEHE AUCH
+==========
+
+   P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+   DoWear(), DoUnwear(), InformUnwear(), InformWear()
+   /std/clothing/wear.c
+
+02.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/WieldFunc b/doc/sphinx/man/lfun/WieldFunc
new file mode 100644
index 0000000..7c607e4
--- /dev/null
+++ b/doc/sphinx/man/lfun/WieldFunc
@@ -0,0 +1,102 @@
+
+WieldFunc()
+***********
+
+
+FUNKTION
+========
+
+   int WieldFunc(object weapon, int silent, object user);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten (fuer /std/weapon/combat)
+
+
+ARGUMENTE
+=========
+
+   weapon (object)
+        Die Waffe, die gezueckt werden soll.
+   silent (int)
+        Ob dabei eine Meldung ausgegeben werden soll.
+   user (object)
+        Das Lebewesen, welches die Waffe zuecken will.
+
+
+BESCHREIBUNG
+============
+
+   In dieser Funktion kann man zusaetzliche Abfragen vornehmen, ob sich
+   die Waffe <weapon> von <user> zuecken laesst oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn die Waffe nicht gezueckt werden kann, sonst ungleich 0.
+
+
+BEMERKUNGEN
+===========
+
+   Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
+   keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
+   Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
+   nicht wegstecken laesst, etc.
+   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
+   benutzt bitte InformWield().
+   Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
+   welches die Waffe zuecke will.
+   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
+   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
+   Objekte zu aendern.
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, die sich nicht von Zwergen zuecken laesst:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+
+   create()
+   {
+     ::create();
+
+     ... /* zig SetProp's, um die Waffe zu konfigurieren */
+
+     /* WieldFunc() ist in der Waffe selbst zu finden */
+     SetProp(P_WIELD_FUNC, this_object());
+   }
+
+   int WieldFunc(object weapon, int silent, object user)
+   {
+     /* Nicht-Zwerge duerfen die Waffe zuecken */
+     if (user->QueryProp(P_RACE) != "Zwerg")
+       return 1;
+
+     /* Ansonsten sagen wir evtl., warum das Zuecken nicht klappt... */
+     if (!silent)
+       write( "Deine kleinen Haendchen koennen den Griff nicht "+
+              "umklammern.\n");
+
+     /* ...und brechen das Zuecken ab. */
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+   DoWield(), DoUnwield(), InformUnwield(), InformWield()
+   UnwieldFunc, WieldFunc
+   /std/weapon/combat.c
+
+02.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/WithDraw b/doc/sphinx/man/lfun/WithDraw
new file mode 100644
index 0000000..1bff547
--- /dev/null
+++ b/doc/sphinx/man/lfun/WithDraw
@@ -0,0 +1,69 @@
+
+WithDraw()
+**********
+
+
+FUNKTION
+========
+
+   int WithDraw(int amount);
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/zentralbank.c
+
+
+ARGUMENTE
+=========
+
+   int amount - angeforderte Geldmenge
+
+
+BESCHREIBUNG
+============
+
+   Damit wird bei der Zentralbank eine bestimmte Menge Geld angefordert.
+   Der Rueckgabewert haengt vom Kassenstand der Zentralbank ab und ist
+   entweder amount oder amount/3.
+
+
+RUeCKGABEWERT
+=============
+
+   Menge des bei der Zentralbank "abgehobenen" Geldes.
+
+
+BEISPIELE
+=========
+
+   #include <bank.h>
+   ...
+   if(ZENTRALBANK->WithDraw(50000)<50000)
+    write(break_string(
+     "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
+     "geben!",
+     "Der Beamte sagt: ",78));
+    say(break_string(
+     "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
+     "geben!",
+     "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
+    ...
+
+
+BEMERKUNGEN
+===========
+
+   Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
+   an anderen Stellen Geld erzeugt wird.
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L), QueryMoney(L)
+   Zentralbank:       PayIn(L), _query_current_money(L)
+   Sonstiges:         /items/money.c, /sys/bank.h
+
+27. Apr 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/__INIT b/doc/sphinx/man/lfun/__INIT
new file mode 100644
index 0000000..3ba4793
--- /dev/null
+++ b/doc/sphinx/man/lfun/__INIT
@@ -0,0 +1,25 @@
+
+__INIT()
+********
+
+
+SYNOPSIS
+========
+
+   __INIT
+
+
+DESCRIPTION
+===========
+
+   This function is constructed automagically by the parser at
+   compiler, if the parser was compiled with #define
+   INITIALISATION__INIT. This function is not intended to be
+   defined by the lpc objects, and never to be called from lpc
+   objects. This man page is here just for completeness.
+
+
+SEE ALSO
+========
+
+   initialisation(LPC)
diff --git a/doc/sphinx/man/lfun/_query_current_money b/doc/sphinx/man/lfun/_query_current_money
new file mode 100644
index 0000000..db3663f
--- /dev/null
+++ b/doc/sphinx/man/lfun/_query_current_money
@@ -0,0 +1,53 @@
+
+_query_current_money()
+**********************
+
+
+FUNKTION
+========
+
+   int _query_current_money()
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/zentralbank.c
+
+
+BESCHREIBUNG
+============
+
+   Es wird zurueckgegeben, wieviel Geld die Zentralbank besitzt.
+
+
+BEISPIELE
+=========
+
+   #include <bank.h>
+   ...
+   if(ZENTRALBANK->_query_current_money()<30000) {
+    write(break_string(
+     "Leider koennen wir ihren Bausparvertrag derzeit nicht einloesen.",
+     "Der Beamte sagt: ",78));
+    say(break_string(
+     "Leider koennen wir ihren Bausparvertrag derzeit nicht einloesen.",
+     "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
+   an anderen Stellen Geld erzeugt wird.
+
+
+SIEHE AUCH
+==========
+
+   Geldhandling:      AddMoney(L), QueryMoney(L)
+   Zentralbank:       WithDraw(L), PayIn(L)
+   Sonstiges:         /items/money.c, /sys/bank.h
+
+27. Apr 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/_unparsed_args b/doc/sphinx/man/lfun/_unparsed_args
new file mode 100644
index 0000000..caf3653
--- /dev/null
+++ b/doc/sphinx/man/lfun/_unparsed_args
@@ -0,0 +1,49 @@
+
+_unparsed_args()
+****************
+
+
+FUNKTION
+========
+
+   varargs string _unparsed_args(int level)
+
+
+DEFINIERT IN
+============
+
+   /std/player/command.c:
+
+
+ARGUMENTE
+=========
+
+   level
+        Gibt an, wieviel des Textes "weggeparsed" werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Text des letzten Befehls des Spielers (ohne das Befehlswort
+   selbst) zurueck. "level" gibt dabei an, wieviel geparsed wird:
+   level = 0 : Gar kein Parsing.
+   level = 1 : Der Text wird in Kleinbuchstaben umgewandelt, doppelte
+               Leerzeichen werden entfernt.
+   level = 2 : Semikoli, Kommata und Doppelpunkte werden in Leerzeichen
+               umgewandelt, doppelte Leerzeichen und Artikel (der, die,
+               das, ein,...) werden entfernt.
+
+
+RUeCKGABEWERT
+=============
+
+   Der geparste Text.
+
+
+SIEHE AUCH
+==========
+
+   query_command(), query_verb(), modify_command()
+
+25.08.2016, Arathorn
diff --git a/doc/sphinx/man/lfun/access_rights b/doc/sphinx/man/lfun/access_rights
new file mode 100644
index 0000000..7a99a99
--- /dev/null
+++ b/doc/sphinx/man/lfun/access_rights
@@ -0,0 +1,98 @@
+
+access_rights()
+***************
+
+
+FUNKTION
+========
+
+   int access_rights(string euid, string file);
+
+
+DEFINIERT IN
+============
+
+   access_rights.c (muss man selber schreiben)
+
+
+PARAMETER
+=========
+
+   euid
+       Die euid desjenigen, der auf das Verzeichnis schreiben will
+   file
+       Name der Datei, auf die zugegriffen werden soll
+
+
+BESCHREIBUNG
+============
+
+   access_rights() wird immer dann aufgerufen, wenn jemand, der nicht
+   sowieso schon schreibberechtigt ist, in die Datei/das Verzeichnis file
+   schreiben oder loeschen will.
+
+   Anhand von euid kann man dann entscheiden, ob der Schreibzugriff erlaubt
+   wird oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   0, wenn der Zugriff verweigert wird,
+   1, wenn der Zugriff erlaubt wird.
+
+
+BEISPIELE
+=========
+
+   /* /d/inseln/wargon/access_rights.c */
+
+   int access_rights(string euid, string file)
+   {
+     string dir, rest;
+
+     // Catweazle darf auf alles zugreifen (*argl* ;^)
+     if (euid == "catweazle")
+       return 1;
+
+     // Rechte auf einzelne Verzeichnisse ermitteln:
+     if (sscanf(file, "%s/%s", dir, rest) != 2)
+       rest = file;
+
+     // Jof und Boing duerfen an Tarko Reub rumpfuschen:
+     if (dir == "tarko" && (euid == "jof" || euid == "boing"))
+       return 1;
+
+     // Anthea darf die Karten von Aurora und der Piratenhoehle bearbeiten:
+     if (dir == "MAPS" &&
+         member( ({"Aurora", "Piratenhoehle" }), rest) >= 0 &&
+         euid == "anthea")
+       return 1;
+
+     // alle anderen duerfen nicht!
+     return 0;
+   }
+
+
+BEMERKUNGEN
+===========
+
+   file ist immer relativ zu dem Verzeichnis, in dem das access_rights.c
+   liegt! Will also jemand auf /d/inseln/wargon/tarko/macros.h schreiben,
+   wird file "tarko/macros.h" uebergeben.
+
+   In Verzeichnissen von Magiern mit einem Level >= ELDER_LVL wird das
+   access_rights.c NICHT ausgewertet (da damit andere Magier zB. an
+   Erzmagierrechte gelangen koennten).
+
+   Es wird immer nur EIN access_rights.c ausgewertet, naemlich das in der
+   tiefsten Verzeichnisebene.
+
+   Man kann sowohl in seinen Regionsverzeichnissen als auch in seinen
+   Homeverzeichnissen access_rights.c-Dateien anlegen.
+
+   GANZ WICHTIG!!!
+   Fuer die Dateien, die evtl. von anderen angelegt werden, ist man immer
+   noch selbst verantwortlich! Wenn jemand also ein Gebiet bei Dir an-
+   schliesst, muss es erst von den verantwortlichen Regionsmagiern abgesegnet
+   sein!
diff --git a/doc/sphinx/man/lfun/buffer_hp b/doc/sphinx/man/lfun/buffer_hp
new file mode 100644
index 0000000..181751c
--- /dev/null
+++ b/doc/sphinx/man/lfun/buffer_hp
@@ -0,0 +1,104 @@
+
+buffer_hp()
+***********
+
+
+FUNKTION
+========
+
+   int buffer_hp( int val, int rate );
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   val:  Gesamte Heilung.
+   rate: LP-Rate.
+
+
+BESCHREIBUNG
+============
+
+   Erhoeht die LP eines Spielers automatisch insgesamt um den Wert "val".
+   Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
+   Sollen neben P_HP noch weitere Props manipuliert werden - bspw. zur
+   P_FOOD - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERTE
+==============
+
+   Der getankte Wert pro heart_beat().
+
+
+BEMERKUNG
+=========
+
+   Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
+   darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
+   (Essen, Trinken) geheilt worden zu sein.
+
+
+BEISPIEL
+========
+
+   #define TP this_player()
+   ...
+
+   int heilung=1;
+   ...
+
+   create()
+   {
+    ::create();
+    SetProp(P_NAME,"Heilpflanze");
+    ...
+
+    AddCmd("iss","eat");
+   }
+
+   int eat(string str)
+   {
+     notify_fail("WAS willst Du essen?\n");
+     if ( !str || !id(str) )
+      return 0;
+     ...
+
+     if ( !TP->eat_food(25) )
+      return 1;
+
+     TP->buffer_hp(20,5);
+     TP->buffer_sp(80,10);
+     heilung--;
+     write(BS("Du fuehlst langsam, wie Deine Kraefte zurueckkehren."));
+
+     return 1;
+   }
+
+   reset()
+   {
+     heilung=1;
+     ::reset();
+   }
+
+   Es wird durch eat_food getestet, ob der Spieler noch genuegend essen kann.
+   Wenn ja, kriegt unser Held die 25 automatisch oben drauf und ausserdem
+   20 LP in 5-LP-Schritten und 80 KP in 10-LP-Schritten gutgeschrieben.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  heal_self, restore_spell_points, restore_hit_points,
+              buffer_sp
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Props:     P_SP, P_HP,
+   Konzepte:  heilung
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/buffer_sp b/doc/sphinx/man/lfun/buffer_sp
new file mode 100644
index 0000000..09cad72
--- /dev/null
+++ b/doc/sphinx/man/lfun/buffer_sp
@@ -0,0 +1,63 @@
+
+buffer_sp()
+***********
+
+
+FUNKTION
+========
+
+   int buffer_sp( int val, int rate );
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   val:  Gesamte Heilung.
+   rate: KP-Rate.
+
+
+BESCHREIBUNG
+============
+
+   Erhoeht die KP eines Spielers automatisch insgesamt um den Wert "val".
+   Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
+   Sollen neben P_SP noch weitere Props manipuliert werden - bspw. zur
+   P_FOOD - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERTE
+==============
+
+   Der getankte Wert pro heart_beat().
+
+
+BEMERKUNG
+=========
+
+   Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
+   darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
+   (Essen, Trinken) geheilt worden zu sein.
+
+
+BEISPIEL
+========
+
+   s. Bsp. zu "buffer_hp"
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Props:     P_SP, P_HP,
+   Konzepte:  heilung
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/buy_obj b/doc/sphinx/man/lfun/buy_obj
new file mode 100644
index 0000000..0f0b965
--- /dev/null
+++ b/doc/sphinx/man/lfun/buy_obj
@@ -0,0 +1,65 @@
+
+buy_obj()
+*********
+
+
+FUNKTION
+========
+
+   static string buy_obj(mixed ob, int short);
+
+
+DEFINIERT IN
+============
+
+   /std/shop.c
+
+
+ARGUMENTE
+=========
+
+   ob - der Gegenstand bei dem geprueft werden soll, ob der Laden ihn
+        an this_player() verkauft. Sollte es sich hierbei um ein
+        FixedObject handeln, wird ein String uebergeben, ansonsten ein
+        object.
+   short - Bisher noch nicht in Benutzung. Aber fuer die Zukunft
+        vorgesehn, falls man mehrere Objekte auf einmal kauft.
+        Ein auswerten ist keine Pflicht, waere aber praktisch, damit
+        der Scroll dabei nicht zu gross wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String was der Haendler sagen soll wieso der Gegenstand nicht
+   verkauft wird. Der String wird dabei wie folgt umgebrochen:
+   break_string(str, 78, Name(WER, 1)+" sagt: ")
+
+
+BESCHREIBUNG
+============
+
+   Durch ueberschreiben dieser Funktion ist es moeglich bestimmte
+   Objekte (wie z.b. Questobjekte) nur an ausgewaehlte Spieler zu
+   verkaufen). Aber auch abfragen ob der Laden ueberhaupt mit
+   this_player() handelt, sind moeglich.
+
+
+BEISPIELE
+=========
+
+   static string buy_obj(mixed ob, int short)
+   {
+      if (PL->QueryProp(P_RACE)=="Zwerg")
+         return "Ich verkaufe nichts an Zwerge!";
+      return ::buy_obj(ob, short);
+   }
+
+
+SIEHE AUCH
+==========
+
+   sell_obj(), AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+   /std/shop.c
+
+Last modified: Thu Mar 4 15:26:13 1999 by Padreic
diff --git a/doc/sphinx/man/lfun/catch_msg b/doc/sphinx/man/lfun/catch_msg
new file mode 100644
index 0000000..42d1950
--- /dev/null
+++ b/doc/sphinx/man/lfun/catch_msg
@@ -0,0 +1,26 @@
+
+catch_msg()
+***********
+
+
+SYNOPSIS
+========
+
+   void catch_msg(mixed *arr, object obj)
+
+
+DESCRIPTION
+===========
+
+   When say(), tell_object()  or tell_room() are used with an array
+   as message, the array will be passed to catch_message() in all living
+   objects that can hear it, instead of writing to the user resp.
+   sending to catch_tell(). This can be used to implement
+   communication protocols between livings. The second denotes
+   the object that has sent the message.
+
+
+SEE ALSO
+========
+
+   say(E), tell_room(E), tell_object(E), catch_tell(L)
diff --git a/doc/sphinx/man/lfun/catch_tell b/doc/sphinx/man/lfun/catch_tell
new file mode 100644
index 0000000..ff4e030
--- /dev/null
+++ b/doc/sphinx/man/lfun/catch_tell
@@ -0,0 +1,36 @@
+
+catch_tell()
+************
+
+
+SYNOPSIS
+========
+
+   void catch_tell(string)
+
+
+DESCRIPTION
+===========
+
+   When a message is sent to a noninteractive player, via say(),
+   tell_object, tell_room(), printf() or write(), it will get to the
+   function catch_tell(string). This will enable communications between
+   NPCs and from a player to an NPC.
+
+   Also, if an interactive object is being shadowed and the
+   shadow has catch_tell() defined, it will receive all output
+   that would otherwise be written to the user.
+
+   If a message is sent by an interactive object, catch_tell() is
+   not called in that object, to prevent recursive calls. Thus
+   catch_tell() in interactive objects can be used to filter the
+   output that goes to the users.
+
+   The efun shout() sends to interactive objects only.
+
+
+SEE ALSO
+========
+
+   enable_commands(E), say(E), tell_object(E), tell_room(E),
+   write(E), catch_msg(L)
diff --git a/doc/sphinx/man/lfun/check_and_update_timed_key b/doc/sphinx/man/lfun/check_and_update_timed_key
new file mode 100644
index 0000000..aa96667
--- /dev/null
+++ b/doc/sphinx/man/lfun/check_and_update_timed_key
@@ -0,0 +1,114 @@
+
+check_and_update_timed_key()
+****************************
+
+
+FUNKTION
+========
+
+   public int check_and_update_timed_key(int duration, string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   int duration: In wieviel Sekunden wird <key> wieder freigebeben,
+                 (z.B. wann kann der Spieler an dieser Stelle eine neue
+                 Heilung bekommen).
+   string key  : Eindeutiger Name, wird zusammen mit <duration>
+                 gespeichert.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion hat die Aufgabe, Zeitsperren verschiedenster Art
+   einfach zu ermoeglichen (z.B. die Realisierung charakter-abhaengiger
+   Heilstellen u.ae.).
+
+   <key> muss eindeutig sein, am besten verwendet man den eigenen
+   Magiernamen (und ggf. nen Gebietsnamen) als Teil des Strings.
+
+   Die Funktion ist definiert in /std/living/life.c. Somit funktioniert
+   sie auch bei NPCs. Die Daten werden in P_TIMING_MAP gespeichert, sind
+   also gegen "ende" resistent. (werden allerdings nach Ablauf ggf.
+   'aufgeraeumt')
+
+   Das Mapping P_TIMING_MAP ist NICHT zur Abfrage und / oder Manipulation
+   'per Hand' vorgesehen.
+
+
+RUeCKGABEWERT
+=============
+
+    0    Irgendein Fehler im Aufruf, evtl. existiert die Funktion (noch)
+         nicht im jew. Objekt.
+
+   -1    Alles okay. Neuer Zeitpunkt wird automatisch gespeichert. In
+         diesem Fall darf der Spieler geheilt werden.
+
+   >0    Key noch gesperrt, in dem Fall darf also nicht geheilt werden.
+         Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
+         laesst sich daher dazu nutzen, um dem Spieler einen Anhaltspunkt
+         zu geben, wann er die Stelle wieder nutzen kann, etwa:
+
+         "Die Schale ist erst halb voll, Du musst noch etwas warten."
+
+
+BEISPIELE
+=========
+
+   Eine Heilstelle soll jedem Spieler alle 5min zur Verfuegung stehen:
+
+   AddCmd(({"trink","trinke"}),"trink_cmd");
+
+   int trink_cmd(string str){
+     ...
+     ...
+     /*
+     Der key sollte natuerlich eine etwas eindeutigere Kennzeichnung
+     wie etwa "tilly_trinken" bekommen, auch wenn er durch einen
+     anderen (gleichnamigen) nicht ueberschrieben werden kann.
+
+     Trifft diese Abfrage hier zu, kann dem Spieler Heilung o.ae. zu-
+     gefuehrt werden. Die neue Zeit (duration) wird automatisch gesetzt.
+     */
+     if(this_player()->check_and_update_timed_key(300,"jof_trinken")==-1){
+       if(this_player()->drink_soft(2)){
+         this_player()->heal_self(50);
+         write("Du fuehlst Dich sichtlich erfrischt.\n");
+         return 1;
+        }
+       else{
+         write("Du hast schon zuviel getrunken.\n");
+         return 1;
+        }
+      }
+     else {
+       write("Du trinkst und denkst . o O (Hmm, nicht schlecht).\n");
+       return 1;
+      }
+     return 0;
+    }
+
+BEMERKUNGEN:
+   Auch bei dieser Funktion ist darauf zu achten, dass Properties wie
+   P_FOOD, P_DRINK und P_ALCOHOL beruecksichtigt werden. Heilstellen
+   sind dem zustaendigen Magier fuer Heilungs-Balance zu melden. Wer
+   dies momentan ist, kann dem Mailalias heilungs_balance entnommen
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   check_timed_key, eat_food, drink_alcohol, drink_soft, heal_self,
+   restore_spell_points, reduce_hit_point
+
+08.01.2012, Zesstra
diff --git a/doc/sphinx/man/lfun/check_restrictions b/doc/sphinx/man/lfun/check_restrictions
new file mode 100644
index 0000000..e173e8f
--- /dev/null
+++ b/doc/sphinx/man/lfun/check_restrictions
@@ -0,0 +1,202 @@
+
+check_restrictions()
+********************
+
+
+FUNKTION
+========
+
+   string check_restrictions(object pl, mapping restr)
+
+
+DEFINIERT IN
+============
+
+   /std/restriction_checker.c
+
+
+ARGUMENTE
+=========
+
+   object pl        geprueftes Lebewesen
+   mapping restr    Mapping mit Restriktionen, s.u.
+
+
+BESCHREIBUNG
+============
+
+   Die Methode wird verwendet, um Restriktionen (zum Beispiel fuer das
+   Casten eines Spells) zu pruefen. Sie wird von Spellbook und
+   Gildenobjekt direkt genutzt.
+
+   Ihr wird dabei ein Spielerobjekt sowie ein Mapping mit den jeweiligen
+   Restriktionen uebergeben. Die aktuell moeglichen Keys des Mappings sind
+   weiter unten gelistet.
+
+
+BEMERKUNGEN
+===========
+
+   Es wird bei der Rasse P_REAL_RACE geprueft. Der Tarnhelm funktioniert
+   also nicht.
+
+   Bei Erweiterungsvorschlaegen wendet euch bitte an einen EM oder
+   inheritet im Zweifelsfall nach Absprache.
+   NIEMALS solchen Code einfach KOPIEREN. Spaeter muss nur irgendwer
+   eurem alten Code hinterherraeumen.
+
+Aktuelle Liste der pruefbaren Parameter:
+   P_LEVEL
+      Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
+      auszufuehren.
+
+   P_GUILD_LEVEL
+      Gildenlevel, das das Lebewesen mindestens erreicht haben muss,
+      um die Aktion auszufuehren.
+
+   SR_SEER
+      Ist gesetzt, wenn das Lebewesen Seher sein muss. Auswertung nur
+      fuer Interactives, NSC ignorieren das Flag.
+
+   P_XP
+      Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen
+      muss, um die Aktion auszufuehren.
+
+   P_QP
+      Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
+
+   P_ALCOHOL
+      Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen
+      liegen muss, um die Aktion noch ausfuehren zu koennen.
+
+   P_DRINK
+      Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
+      Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
+
+   P_FOOD
+      Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel
+      des Spielers liegen muss, um die Aktion noch ausfuehren zu
+      koennen.
+
+   P_DEAF
+      Ist gesetzt, falls der Spieler nicht taub sein darf.
+
+   P_FROG
+      Ist gesetzt, falls der Spieler kein Frosch sein darf.
+
+   P_BLIND
+      Ist gesetzt, falls der Spieler nicht blind sein darf. Achtung:
+      das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
+      nichts mehr sehen kann. Auch andere Gruende (zum Beispiel
+      Dunkelheit) koennen bewirken, dass ein Spieler nichts mehr
+      sieht.
+
+   A_INT, A_DEX, A_CON, A_STR
+      Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren
+      zu koennen.
+
+   SR_BAD, SR_GOOD
+      Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein
+      Charakter sein darf, um eine Aktion ausfuehren zu koennen.
+
+   SR_MIN_SIZE, SR_MAX_SIZE
+      Gibt die minimale, bzw. die maximale Groesse an, die ein
+      Charakter maximal haben darf, um eine Aktion ausfuehren zu
+      koennen.
+
+   SR_FREE_HANDS
+      Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
+      besitzen muss.
+
+   SR_EXCLUDE_RACE
+      Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
+      diese Aktion nicht ausfuehren.
+
+   SR_INCLUDE_RACE
+      Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen
+      koennen diese Aktion nicht ausfuehren.
+
+   SM_RACE
+      Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese
+      Rasse geltenden Einschraenkungen vorgenommen werden. Als Keys
+      sind die in dieser Manpage beschriebenen Keys erlaubt, wobei
+      SM_RACE nicht rekursiv ausgewertet wird. Der Rassenname ist
+      gross geschrieben und "*" steht fuer alle Rassen.
+
+   SR_EXCLUDE_GUILD SR_INCLUDE_GUILD
+
+      Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier
+      Gilden genannt werden.
+
+   SR_FUN
+      Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
+      Restriktionen angegeben werden, siehe execute_anything(). Das
+      kann nuetzlich sein, um andere Restriktionen zu pruefen, wie das
+      Bestehen von Miniquests oder andere Faehigkeiten/Flags. Ist der
+      Test nicht bestanden, gibt die Funktion einen String zurueck.
+
+   SR_PROP
+      Hier kann ein Mapping mit Properties und zugehoerigen Werten
+      angegeben werden, die jeweils auf Identitaet geprueft werden.
+      Zusaetzlich sollte eine Meldung angegeben werden, die als
+      Fehlermeldung ausgegeben wird, wenn der Spieler die Bedingung
+      nicht erfuellt. Es sollte immer eine passende Meldung fuer den
+      Spieler eingebaut werden. Beispiel: ([ SR_PROP:
+      ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
+
+         "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn
+         Du " "Dich als wuerdig erwiesen hast!"]) ])
+
+      Aufgrund der Meldung wird empfohlen, SR_PROP nicht in
+      Restriktionen einzusetzen, die massenweise in Savefiles landen
+      (z.B. Spielersavefiles).
+
+   SR_QUEST
+      Hier kann ein String-Array mit den Namen (Keys) der Quest(s)
+      angegeben werden, die der Spieler bestanden haben muss, um die
+      Aktion ausfuehren zu koennen.
+
+   SQ_MINIQUEST
+      Hier kann entweder ein String-Array mit den Ladenamen der
+      vergebenden Objekte oder ein Int-Array mit den Index-Nummern
+      (IDs) der Miniquest(s) (empfohlen!) angegeben werden, die der
+      Spieler bestanden haben muss, um die Aktion ausfuehren zu
+      koennen.
+
+
+BEISPIELE
+=========
+
+   // #1 Levelbeschraenkung in der Abenteurergilde
+   AddSpell("feuerball",20,
+            ([SI_SKILLRESTR_LEARN:([P_LEVEL:15]), ...
+
+   // #2 Glaubenstest im Klerus
+   AddSpell("bete",
+            ([SI_SKILLRESTR_LEARN: ([P_GUILD_LEVEL : LVL_NOVIZE,
+                                     SR_FUN : #'glaubensTest ]), ...
+   // mit
+   static string glaubensTest(object pl) {
+     if (pl->QueryProp(K_STRENGTH) < 8000)
+       return ("Deine Glaubensstaerke laesst zu wuenschen uebrig!\n");
+     return 0;
+   }
+
+   // #3 SM_RACE-Modifikation der Restriktionen:
+   //    haertere Restriktionen fuer Zwerge
+   //    - hoeheres Level
+   //    - zusaetzlich A_STR pruefen
+   ([P_LEVEL:15,
+     A_INT:10,
+     SM_RACE: (["Zwerg": ([P_LEVEL:17, A_STR:20])])])
+   // ist identisch zu
+   ([SM_RACE: (["*":     ([P_LEVEL:15, A_INT:10]),
+                "Zwerg": ([P_LEVEL:17, A_INT:10, A_STR:20])])])
+
+
+SIEHE AUCH
+==========
+
+   execute_anything(L), AddSpell (Gilde), P_RESTRICTIONS
+
+3. Januar 2014, Arathorn
diff --git a/doc/sphinx/man/lfun/check_timed_key b/doc/sphinx/man/lfun/check_timed_key
new file mode 100644
index 0000000..58c70ab
--- /dev/null
+++ b/doc/sphinx/man/lfun/check_timed_key
@@ -0,0 +1,52 @@
+
+check_timed_key()
+*****************
+
+
+FUNKTION
+========
+
+   public int check_timed_key(string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   string key  : Eindeutiger Name
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion hat die Aufgabe, mittels check_and_update_timed_key()
+   gespeicherte Zeitsperren zu pruefen, aber dabei nicht zu veraendern.
+
+   Es MUSS bei der eigentlichen Aktion (z.B. Heilung des Spielers) der
+   Rueckgabewert von check_and_update_timed_key() beruecksichtigt werden,
+   sollte dieses nicht -1 geliefert haben, MUSS <key> als gesperrt
+   betrachtet werden, d.h. check_timed_key() hat nur informativen
+   Charakter.
+
+
+RUeCKGABEWERT
+=============
+
+   0    Die Zeitsperre <key> ist abgelaufen.
+
+   >0   <key> ist noch gesperrt.
+        Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
+
+
+SIEHE AUCH
+==========
+
+   check_and_update_timed_key, eat_food, drink_alcohol, drink_soft,
+   heal_self, restore_spell_points, reduce_hit_point
+
+08.01.2012, Zesstra
diff --git a/doc/sphinx/man/lfun/clean_up b/doc/sphinx/man/lfun/clean_up
new file mode 100644
index 0000000..7c124fb
--- /dev/null
+++ b/doc/sphinx/man/lfun/clean_up
@@ -0,0 +1,67 @@
+
+clean_up()
+**********
+
+
+FUNKTION
+========
+
+   int clean_up(int ref);
+
+
+DEFINIERT IN
+============
+
+   /std/room.c
+   man kann die Funktion jedoch auch in beliebigen Objekten selbst
+   definieren.
+
+
+ARGUMENTE
+=========
+
+   ref
+           + 0 bei gecloneten Objekten
+           + 1 bei einfachen geladenen Objekten
+           + >1 bei Objekten, die geerbt wurden oder als Blueprint dienen
+           + <0, wenn clean_up() von aussen aufgerufen wurde (das muss man
+             selbst beachten!)
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Objekt seit langer Zeit nicht mehr benutzt wurde, kann es sich
+   hier selbst zerstoeren. Das sollte das Objekt allerdings nur tun, wenn
+   ref kleiner oder gleich 1 ist.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Rueckgabewert hat nur dann eine Bedeutung, wenn sich das Objekt
+   nicht selbst zerstoert hat. Wird 0 zurueckgegeben, so wird clean_up()
+   erst dann wieder aufgerufen, nachdem das Objekt aus- und wieder
+   eingeswappt wurde.
+
+   Ein Rueckgabewert ungleich 0 zeigt an, dass das Objekt sich
+   wahrscheinlich in der naechsten clean_up()-Runde zerstoeren kann, wenn
+   in der Zwischenzeit zB. noch einmal reset() aufgerufen wurde.
+
+
+BEMERKUNGEN
+===========
+
+   Standardmaessig definieren nur Raeume clean_up().
+
+   Die Zeiten zwischen zwei Aufrufen von clean_up() betragen momentan
+   einen Tag (86400 Sekunden).
+
+
+SIEHE AUCH
+==========
+
+   reset(), P_NEVER_CLEAN
+   memory
+
+21. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/cmd_shoot b/doc/sphinx/man/lfun/cmd_shoot
new file mode 100644
index 0000000..9cbc9b9
--- /dev/null
+++ b/doc/sphinx/man/lfun/cmd_shoot
@@ -0,0 +1,54 @@
+
+cmd_shoot()
+***********
+
+
+FUNKTION
+========
+
+   static int cmd_shoot(string str)
+
+
+DEFINIERT IN
+============
+
+   /std/ranged_weapon.c
+
+
+ARGUMENTE
+=========
+
+   string str    - Schusssyntax
+
+
+BESCHREIBUNG
+============
+
+   Kommandofunktion der Fernwaffe. Enthaelt die Vorbereitung und den Schuss.
+
+
+BEMERKUNGEN
+===========
+
+   Ist in der Fernwaffe mit AddCmd( ({"schiess", "schiesse"}), "cmd_shoot");
+   angebunden. Will man eine andere Syntax haben, kann man mit
+   AddCmd/RemoveCmd diese umsetzen.
+
+
+BEISPIELE
+=========
+
+   RemoveCmd(({"schiess", "schiesse"})); // entferne Default-Kommando
+   AddCmd(({"schleuder", "schleudere"}), #'cmd_shoot);
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  shoot_dam(L), cmd_shoot(L)
+   Kommandos: AddCmd(L), RemoveCmd(L)
+   Syntax:    _unparsed_args(L)
+   Sonstiges: fernwaffen
+
+28.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/lfun/command_me b/doc/sphinx/man/lfun/command_me
new file mode 100644
index 0000000..77a3cc5
--- /dev/null
+++ b/doc/sphinx/man/lfun/command_me
@@ -0,0 +1,110 @@
+
+command_me()
+************
+
+
+FUNKTION
+========
+
+   int command_me(string str)
+
+
+ARGUMENTE
+=========
+
+   string str - auszufuehrendes Kommando
+
+
+DEFINIERT IN
+============
+
+   /std/npc.c, /std/player/command.c
+
+
+BESCHREIBUNG
+============
+
+   Fuehrt 'str' wie ein Kommando aus, welches direkt vom Living
+   abgegeben wurde.
+
+   Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg.
+   Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks.
+
+   command_me() leitet den Befehl an command()(E) weiter und erlaubt
+   dadurch auch den Aufruf von sonst durch "static", "protected" oder
+   "private" vor externem Aufruf geschuetzten Kommando-Funktionen.
+
+   Kommandos mit oeffentlichen Kommandofunktionen (also damit alle mit
+   AddCmd definierten Kommandos) koennen auch durch command()(E)
+   von aussen ausgeloest werden.
+
+BEMERKUNGEN:
+   * beruecksichtigt Aliase, d.h. wenn man Aliase eines Spielers
+     ignorieren will, muss man ein \ (fuer ein im Eingabestring) vor
+     den Befehl stellen
+
+   * fuer objektinterne Kommandos funktioniert also auch
+     command()(E)
+
+
+BEISPIEL
+========
+
+   (Code des Testraum ist in /doc/beispiele/testobjekte/command_me_testraum)
+   // #1: Testraum, zwinge Spieler bei "schleiche heran" zum Furzen
+   //     command_me() ist hier noetig, da das Furzen eine geschuetzte
+   //     Kommandofunktion hat
+   inherit "/std/room";
+
+   void create() {
+     ::create();
+     AddCmd("schleiche&heran|herum", "action_schleichen");
+   }
+
+
+
+   void init() {
+     ::init();
+     add_action("action_kriechen", "kriech", 1);
+   }
+
+   static int action_schleichen(string str) {
+     string tmp = this_player()->QueryProp(P_RACE);
+     // ...
+     if(tmp[<1]=='e') tmp=tmp[0..<2];
+     write(break_string("Du versuchst leise zu schleichen, dabei passiert "
+       "dir aber ein allzu "+
+       (tmp=="Mensch"?"menschliches":lower_case(tmp)+"isches")+
+       " Missgeschick. Verflucht!", 78));
+     this_player()->command_me("\\furze");
+     return 1;
+   }
+
+
+
+   static int action_kriechen(string str) {
+     write(break_string("Deine Knie tun zu sehr weh dafuer.", 78));
+     tell_room(this_object(), break_string(this_player()->Name(WER)+
+       " knackt mit den Knien.", 78));
+     return 1;
+   }
+
+
+
+   // #2 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
+   //    Beide Kommandos gelingen, da Kommando mit AddCmd definiert.
+   find_player("naddl")->command_me("schleiche herum")
+   command("schleiche herum", find_player("naddl"));
+
+   // #3 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
+   find_player("naddl")->command_me("krieche")
+   //    Folgendes Kommando schlaegt fehl, da Kommandofunktion static ist.
+   command("krieche", find_player("naddl"));
+
+
+SIEHE AUCH
+==========
+
+   enable_commands(E), command(E)
+
+06 Sep 2012 Gloinson
diff --git a/doc/sphinx/man/lfun/consume b/doc/sphinx/man/lfun/consume
new file mode 100644
index 0000000..f07ece3
--- /dev/null
+++ b/doc/sphinx/man/lfun/consume
@@ -0,0 +1,115 @@
+
+consume()
+*********
+
+public varargs int consume(mapping cinfo, int testonly)
+
+
+FUNKTION
+========
+
+   public varargs int consume(mapping cinfo, int testonly);
+
+   Aenderung der Gesundheit eines Lebewesens durch etwas Konsumierbares.
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   cinfo
+       Mapping mit Informationen ueber die Gesundheitsaenderung
+       Heilung.
+   testonly
+       Gibt an, ob nur die Bedingungen abgetestet werden sollen,
+       oder auch die Wirkung eintreten soll.
+
+
+RUECKGABEWERT
+=============
+
+    1 erfolgreich konsumiert
+    0 keine oder falsche Aenderungsdaten in cinfo (nicht benutzbar)
+   <0 Bedingung fuer konsumieren nicht erfuellt, Bitset aus:
+      HC_MAX_FOOD_REACHED    - Kann nichts mehr essen
+      HC_MAX_DRINK_REACHED   - Kann nichts mehr trinken
+      HC_MAX_ALCOHOL_REACHED - Kann nichts mehr saufen
+      HC_HOOK_CANCELLETION   - durch H_HOOK_CONSUME abgebrochen
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion stellt eine Moeglichkeit zur Verfuegung, die Aenderung
+   der Gesundheit eines Lebewesens beim Konsumieren von irgendetwas (z.B in
+   einer Kneipe, durch eine Heilstellte oder tragbare Tanke, ...) zentral zu
+   erledigen. Sie vereint in sich die Pruefung auf Durchfuerbarkeit der
+   Aenderung und Anwendung der Aenderung.
+
+   Der erste Parameter gibt die Eigenschaften der Aenderung an, der zweite ob
+   ausschliesslich die Pruefung auf Anwendbarkeit erfolgen soll.
+
+   Das Mapping cinfo hat folgende Struktur:
+   a) Einfache Angabe der betroffenen Properties. In neuem Code bitte nicht
+      machen, dort ein Mapping wie unter b) beschrieben nutzen!
+
+   b) Strukturiert in Effekte und Bedingungen mit folgenden Schluesseln:
+     H_EFFECTS - Mapping der zu aendernden Properties mit dem Umfang der
+                 Aenderung, erlaubte Properties siehe H_ALLOWED_EFFECTS
+
+     H_CONDITIONS - Mapping der zu pruefenden Properties mit dem Umfang der
+                    Aenderung, erlaubte Properties siehe H_ALLOWED_CONDITIONS
+
+     H_DISTRIBUTION - Verteilung der Aenderung fuer P_SP, P_HP
+                      HD_INSTANT bzw. 0: instante Heilung
+                      1 - 50: angebene Zahl pro Heartbeat
+                      HD_STANDARD: 5 pro Heartbeat
+
+   Aenderungen koennen sowohl positiv als auch negativ sein.
+
+
+BEMERKUNGEN
+===========
+
+   Hierbei aber bitte beachten, dass Tanken/Entanken sowie Heilungen ggf. von
+   der (Heilungs-)Balance genehmigt werden muessen!
+
+
+BEISPIELE
+=========
+
+   Heilung um 100 KP, 50 LP, aber nur wenn 30 P_FOOD gegessen werden kann:
+
+   consume( ([H_EFFECTS: ([P_HP:50, P_SP:100]),
+              H_CONDITIONS: ([P_FOOD:30]) ]) );
+
+   Heilung um 100 KP und Vergiftung um 2, wenn 15 Alkohol getrunken werden
+   koennen. Die SP werden zeitverzoegert mit 10 pro Heartbeat zugefuehrt.
+
+   consume(([H_EFFECTS: ([P_SP: 100, P_POISON: 2]),
+             H_CONDITIONS: ([P_ALCOHOL: 15]),
+             H_DISTRIBUTION: 10]) )
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  drink_alcohol, eat_food, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+
+LETZTE AeNDERUNG
+================
+
+   29.05.2015, Boing
diff --git a/doc/sphinx/man/lfun/create b/doc/sphinx/man/lfun/create
new file mode 100644
index 0000000..03fc91a
--- /dev/null
+++ b/doc/sphinx/man/lfun/create
@@ -0,0 +1,104 @@
+
+create()
+********
+
+
+FUNKTION
+========
+
+   protected void create();
+   void create();
+
+
+DEFINIERT IN
+============
+
+   allen Standardobjekten
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder geclont
+   wird.
+   In dieser Funktion wird das Objekt initialisiert und konfiguriert.
+   Waehrend des create() kann es einen this_player()/this_interactive()
+   geben, muss aber nicht!
+   Im create() hat das Objekt noch kein environment().
+   create() wird nur gerufen, wenn das Objekte geclont oder explizit geladen
+   wird. Wenn es aufgrund eines inherit in einem anderen Objekt vom Driver
+   geladen wird, wird das create() nicht ausgefuehrt (s. create_super()).
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Erbt man von anderen Objekten, so besteht die erste Aktion innerhalb
+   von create() normalerweise darin, in diesen Objekten create()
+   aufzurufen.
+   Die Funktion kann protected oder static sein (aber nicht private). Es
+   duerfte fuer die meisten Objekte sinnvoll sein, create() protected zu
+   deklarieren.
+
+   Um Speicher zu sparen, kann man bei Blueprints von der Konfigurierung
+   absehen (siehe Beispiel). Dies sollte man allerdings nicht bei Objekten
+   machen, von denen keine Clones erzeugt werden sollen (zB. bei Raeumen).
+
+   Man sollte bei Abbruch des create() in BP unbedingt set_next_reset(-1);
+   rufen, da sonst die (nicht konfigurierte) BP resetten kann und dann
+   buggt.
+
+
+BEISPIELE
+=========
+
+   Ein Gegenstand wuerde wie folgt konfiguriert:
+
+   inherit "std/thing";
+
+   #include <properties.h>
+
+   create()
+   {
+     // Wenn wir die Blueprint sind: NICHT konfigurieren!
+     // Bei normalen Raeumen oder Transportern sind diese beiden
+     // Zeilen wegzulassen!!!
+     if (!clonep(this_object())) {
+         set_next_reset(-1);    // wichtig, damit die BP nicht resettet.
+         return;
+     }
+
+     // Ansonsten die allgemeinen Eigenschaften von /std/thing
+     // konfigurieren...
+     ::create();
+
+     // ...und nun unsere speziellen Eigenschaften:
+     SetProp(P_NAME, "Muell");
+     SetProp(P_SHORT, "Muell");
+     SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
+     SetProp(P_ARTICLE, 0);
+     SetProp(P_VALUE, 0);
+     SetProp(P_GENDER, MALE);
+   }
+
+
+SIEHE AUCH
+==========
+
+   create(L), reset(L)
+   hook(C), create(H), create_ob(H), create_super(H, reset(H)
+   create(A), reset(A)
+
+22.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/create_default_npc b/doc/sphinx/man/lfun/create_default_npc
new file mode 100644
index 0000000..09c3a14
--- /dev/null
+++ b/doc/sphinx/man/lfun/create_default_npc
@@ -0,0 +1,76 @@
+
+create_default_npc()
+********************
+
+
+FUNKTION
+========
+
+   varargs void create_default_npc( int level, int maxhp );
+
+
+BENUTZUNG
+=========
+
+   inherit "std/npc";
+
+
+FUNKTION
+========
+
+   Setze die Daten eines Monsters auf einen gewissen Level.
+
+   Der Level sollte zwischen 1 und 20 liegen. Die Stats werden auf diesen
+   Level gesetzt und mehrere andere Werte, so dass das Monster von der
+   Staerke her einem Spieler gleichen Levels entspricht.
+
+   Wird der (optionale) Parameter maxhp weggelassen, wird dieser berechnet
+   nach:
+        maxhp = 42 + 8 * level
+
+   Die genauen Werte sind:
+        P_LEVEL : level
+        P_MAX_HP: maxhp
+        P_MAX_SP: maxhp
+        P_HANDS : 10 * level
+        P_BODY  : (20/3) * level
+        P_XP    : 50 * level * maxhp (== 5 * P_HANDS * max_hp)
+
+        A_STR, A_INT, A_DEX, A_CON : level
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion sollte nur im create() eines Monsters benutzt werden.
+   Oben beschriebene Werte, die vor dem Aufruf der Funktion gesetzt
+   wurden, werden durch die neuen Werte ersetzt.
+
+   Ab einem Aufruf mit Level 20 werden P_XP = 202000 gesetzt, also ein
+   Kill-Stup vergeben (siehe P_XP).
+
+
+BEISPIEL
+========
+
+   create_default_npc(17) ergibt:
+
+        P_LEVEL : 17
+        P_MAX_HP: 178
+        P_MAX_SP: 178
+        P_HANDS : 170
+        P_BODY  : 113
+        P_XP    : 151300
+
+        A_STR, A_INT, A_DEX, A_CON : 17
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp(), GiveKillScore()
+   Properties:  P_XP
+                P_LEVEL, P_MAX_HP, P_MAX_SP, P_HANDS, P_BODY
+   Sonstiges:   npcs
+
+14.Feb 2007 Gloinson
diff --git a/doc/sphinx/man/lfun/create_super b/doc/sphinx/man/lfun/create_super
new file mode 100644
index 0000000..101531f
--- /dev/null
+++ b/doc/sphinx/man/lfun/create_super
@@ -0,0 +1,75 @@
+
+create_super()
+**************
+
+
+FUNKTION
+========
+
+   protected void create_super();
+
+
+DEFINIERT IN
+============
+
+   allen Standardobjekten
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird immer dann aufgerufen, wenn ein Objekt implizit durch
+   ein 'inherit' in einem erbenden Objekte geladen wird.
+   Normalweise muss man dieses so geladene Objekte nicht konfigurieren, weil
+   nur das Programm dieses Objektes fuer die erbenden Objekte interessant
+   ist, nicht seine Daten.
+   Was hier aber z.B. sinnvoll ist, ist das Abschalten des Resets, denn ein
+   Objekt, was nur dazu dient, dass es von anderen geerbt wird, braucht
+   keinen Reset, auch wenn es ein reset() definiert (was in erbenden Objekte
+   benutzt wird).
+   Die create_super() in den Standardobjekten tun momentan genau dieses.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ihr von /std/ erbt, braucht ihr euch in aller Regel um diese
+   Funktion keine Gedanken machen.
+   Ihr koennt diese Funktion aber in Objekten selber definieren, die nur zum
+   Erben gedacht sind. Dies kann sinnvoll ein, wenn ihr nicht von /std/ erbt
+   und ein reset() im Objekt habt oder was machen wollt, was ueber das
+   Abschalten des Resets hinausgeht.
+
+
+BEISPIELE
+=========
+
+   Gegeben sei folgende Vererbungskette:
+   /std/room -> /d/inseln/zesstra/stdraum -> /d/inseln/zesstra/raum
+
+   Wird nun 'raum' geladen und 'stdraum' ist noch nicht geladen, wird der
+   Driver implizit von selbst 'stdraum' laden (weil 'raum' das Programm von
+   'stdraum' braucht). Bei diesem Laden wird das create() in 'stdraum' nicht
+   ausgefuehrt, sondern stattdessen create_super().
+
+
+SIEHE AUCH
+==========
+
+   create(L), reset(L)
+   hook(C), create(H), create_ob(H), create_super(H, reset(H)
+   create(A), reset(A)
+
+22.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/defuel_drink b/doc/sphinx/man/lfun/defuel_drink
new file mode 100644
index 0000000..266907e
--- /dev/null
+++ b/doc/sphinx/man/lfun/defuel_drink
@@ -0,0 +1,87 @@
+
+defuel_drink()
+**************
+
+
+FUNKTION
+========
+
+   int defuel_drink();
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   Keine.
+
+
+BESCHREIBUNG
+============
+
+   Enttankt den Spieler automatisch um einen gewissen Fluessigkeits-Wert,
+   sofern der Spieler ueber einer bestimmten Enttank-Grenze liegt und seit
+   seinem letzten Enttanken eine gewisse Zeit vergangen ist.
+   Alle diese Werte sind rassenabhaengig.
+   Ausserdem wird dem Spieler eine gewisse Menge Alkohol entzogen. Er wird
+   also mit jedem fluessigen Enttanken etwas nuechterner.
+
+   Es ist also NICHT moeglich, Einfluss auf die Menge des Enttankens
+   zu nehmen. Das ist hier so gewollt.
+
+   Hat der Spieler mindestens
+   * P_DEFUEL_LIMIT_DRINK in P_DRINK
+   kann er alle
+   * P_DEFUEL_TIME_DRINK
+   um
+   * (x=P_DRINK*P_DEFUEL_AMOUNT_DRINK/2) + random(x)
+     (also um (50 bis 100 * P_DRINK) Prozent)
+   enttanken.
+
+
+RUECKGABEWERTE
+==============
+
+   DEFUEL_TOO_SOON: -2, wenn Enttankintervallzeiten zu kurz.
+   DEFUEL_TOO_LOW:  -1, wenn Enttankgrenze noch nicht erreicht.
+   NO_DEFUEL:        0, wenn Enttanken nicht noetig war (Spieler war leer)
+   >0, wenn Erfolg (enttankte Wert wird zurueckgegeben).
+
+   (Konstanten kommen aus /sys/defuel.h)
+
+
+BEMERKUNG
+=========
+
+   Bitte defuel_drink() benutzen und nicht P_DRINK oder P_MAX_DRINK des
+   manipulieren!
+
+   Es gibt keine eigene Methode fuer die Verringerung von P_ALCOHOL.
+
+   Achtung: Nur Toiletten sollten diese Funktion im Spieler aufrufen!
+
+
+BEISPIEL
+========
+
+   s. Bsp. zu defuel_food()
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/defuel_food b/doc/sphinx/man/lfun/defuel_food
new file mode 100644
index 0000000..380c2bc
--- /dev/null
+++ b/doc/sphinx/man/lfun/defuel_food
@@ -0,0 +1,113 @@
+
+defuel_food()
+*************
+
+
+FUNKTION
+========
+
+   int defuel_food();
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   Keine.
+
+
+BESCHREIBUNG
+============
+
+   Enttankt den Spieler automatisch um einen gewissen Essens-Wert,
+   sofern der Spieler ueber einer bestimmten Enttank-Grenze liegt und seit
+   seinem letzten Enttanken eine gewisse Zeit vergangen ist.
+   Alle diese Werte sind rassenabhaengig.
+
+   Es ist also NICHT moeglich, Einfluss auf die Menge des Enttankens
+   zu nehmen. Das ist hier so gewollt.
+
+   Hat der Spieler mindestens
+   * P_DEFUEL_LIMIT_FOOD in P_FOOD
+   kann er alle
+   * P_DEFUEL_TIME_FOOD
+   um
+   * (x=P_DRINK*P_DEFUEL_AMOUNT_FOOD/2) + random(x)
+     (also um (50 bis 100 * P_FOOD) Prozent)
+   enttanken.
+
+
+RUECKGABEWERTE
+==============
+
+   DEFUEL_TOO_SOON: -2, wenn Enttankintervallzeiten zu kurz.
+   DEFUEL_TOO_LOW:  -1, wenn Enttankgrenze noch nicht erreicht.
+   NO_DEFUEL:        0, wenn Enttanken nicht noetig war (Spieler war leer)
+   >0, wenn Erfolg (enttankte Wert wird zurueckgegeben).
+
+   (Konstanten kommen aus /sys/defuel.h)
+
+
+BEMERKUNG
+=========
+
+   Bitte defuel_food() benutzen und nicht P_FOOD oder P_MAX_FOOD des
+   Spielers manipulieren!
+
+   Achtung: Nur Toiletten sollten diese Funktion im Spieler aufrufen!
+
+
+BEISPIEL
+========
+
+   int action_enttanken() {
+     string msg;
+     int val = this_player()->defuel_food();
+
+     switch (val) {
+       case DEFUEL_TOO_SOON:
+         msg = "Du warst doch erst vor kurzem auf Toilette...";
+         break;
+       case DEFUEL_TOO_LOW:
+         msg = "Du versuchst Dich zu entleeren, aber irgendwie will "
+               "das nicht so recht klappen.";
+         break;
+       case NO_DEFUEL:
+         msg = "Du hast seit langem nichts gegessen, wie willst Du dann "
+               "was loswerden koennen?";
+         break;
+       default:
+         string qualifier;
+         int fuzzypercent = (90+random(20)) *
+                            val/this_player()->QueryProp(P_MAX_FOOD);
+         switch(fuzzypercent) {
+           case 0..50:  qualifier = "etwas"; break;
+           case 51..75: qualifier = "enorm"; break;
+           default:     qualifier = "unglaublich"; break;
+         }
+         msg = "Du entleerst Dich "+qualifier"+. Puh, das tat gut!";
+         break;
+     }
+     tell_object(this_player(), break_string(msg, 78));
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  defuel_drink
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/deregister_modifier b/doc/sphinx/man/lfun/deregister_modifier
new file mode 100644
index 0000000..eb0c160
--- /dev/null
+++ b/doc/sphinx/man/lfun/deregister_modifier
@@ -0,0 +1,42 @@
+
+deregister_modifier()
+*********************
+
+
+FUNKTION
+========
+
+   void deregister_modifier(object modifier)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   modifier   - Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD
+
+
+BESCHREIBUNG
+============
+
+   Meldet einen Modifier im Spieler ab. Wird durch RemoveSensitiveObject
+   beziehungsweise beim Ausziehen oder Wegstecken gerufen.
+   Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
+   sollte stattdessen UpdateAttributes gerufen werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   register_modifier(),P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_ATTRIBUTES_MODIFIER, P_X_ATTR_MOD, P_M_ATTR_MOD,
+   /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/sphinx/man/lfun/die b/doc/sphinx/man/lfun/die
new file mode 100644
index 0000000..a76a1aa
--- /dev/null
+++ b/doc/sphinx/man/lfun/die
@@ -0,0 +1,67 @@
+
+die()
+*****
+
+
+FUNKTION
+========
+
+   public varargs void die(int poisondeath,int extern);
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   int poisondeath
+        Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
+   int extern
+        Intern.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest, wenn
+   0 HP unterschritten werden. In diesem Fall wird der Kampf beendet, Gift,
+   Alkohol, Trink- und Esswerte, Blindheit, Taubheit u.s.w. auf Null
+   gesetzt oder geloescht.
+
+   Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE) nebst
+   Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer Spieler werden
+   Killstupse vergeben, sofern notwendig.
+
+   Ueber den Hook P_TMP_DIE_HOOK kann man jedoch auf den Automatismus
+   Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
+   Sterben fuer kurze Zeit verhindern.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
+   uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
+   und balancetechnisch guenstigere Loesung.
+
+
+SIEHE AUCH
+==========
+
+   Todesursachen:     Defend(L), do_damage(L), P_POISON
+   Verwandt:          P_TMP_DIE_HOOK, P_DEADS
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG, P_DIE_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c
+
+Last modified: Mon May 14 16:20:34 2001 by Patryn
diff --git a/doc/sphinx/man/lfun/doUnwearMessage b/doc/sphinx/man/lfun/doUnwearMessage
new file mode 100644
index 0000000..b6128ce
--- /dev/null
+++ b/doc/sphinx/man/lfun/doUnwearMessage
@@ -0,0 +1,46 @@
+
+doUnwearMessage()
+*****************
+
+
+FUNKTION
+========
+
+   void doUnwearMessage(object worn_by, int all);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   worn_by
+     Das Lebewesen, dass die Ruestung bisher getragen hat
+   all
+     Wurde "ziehe alles aus"/"ziehe alle ruestungen aus" eingegeben,
+     so ist all gesetzt, ansonsten nicht.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Ausziehen einer Ruestung die entspr.
+   Meldung an den Traeger und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doWearMessage(), doWieldMessage(), doUnwieldMessage()
+
+Last modified: Sat Jun 26 15:41:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/doUnwieldMessage b/doc/sphinx/man/lfun/doUnwieldMessage
new file mode 100644
index 0000000..f2245b6
--- /dev/null
+++ b/doc/sphinx/man/lfun/doUnwieldMessage
@@ -0,0 +1,43 @@
+
+doUnwieldMessage()
+******************
+
+
+FUNKTION
+========
+
+   void doUnwieldMessage(object wielded_by);
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   wielded_by
+     Das Lebewesen, dass die (Parier)Waffe bisher gezueckt hatte.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Wegstecken einer Waffe die entspr.
+   Meldung an den Benutzer und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doWearMessage(), doUnwearMessage(), doWieldMessage()
+
+Last modified: Sat Jun 26 15:32:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/doWearMessage b/doc/sphinx/man/lfun/doWearMessage
new file mode 100644
index 0000000..6770180
--- /dev/null
+++ b/doc/sphinx/man/lfun/doWearMessage
@@ -0,0 +1,44 @@
+
+doWearMessage()
+***************
+
+
+FUNKTION
+========
+
+   varargs void doWearMessage(int all);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   all
+     Wurde "trage alles"/"trage alle ruestungen" eingegeben, so
+     ist all gesetzt, ansonsten nicht.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Anziehen einer Ruestung die entspr.
+   Meldung an den Traeger und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doUnwearMessage(), doWieldMessage(), doUnwieldMessage()
+
+Last modified: Sat Jun 26 15:30:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/doWieldMessage b/doc/sphinx/man/lfun/doWieldMessage
new file mode 100644
index 0000000..a3b737f
--- /dev/null
+++ b/doc/sphinx/man/lfun/doWieldMessage
@@ -0,0 +1,42 @@
+
+doWieldMessage()
+****************
+
+
+FUNKTION
+========
+
+   void doWieldMessage();
+
+
+DEFINIERT IN
+============
+
+   /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt beim Zuecken einer Waffe die entspr.
+   Meldung an den Benutzer und die Umgebung aus.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   doWearMessage(), doUnwearMessage(), doUnwieldMessage()
+
+Last modified: Sat Jun 26 15:33:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/do_damage b/doc/sphinx/man/lfun/do_damage
new file mode 100644
index 0000000..91c6bc8
--- /dev/null
+++ b/doc/sphinx/man/lfun/do_damage
@@ -0,0 +1,70 @@
+
+do_damage()
+***********
+
+do_damage(L)
+
+
+FUNKTION
+========
+
+   int do_damage(int dam,mixed enemy);
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   int dam
+        Die abzuziehenden Lebenspunkte (HP).
+   object enemy
+        Das Objekt, welches den Schaden zufuegt.
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden <dam> HP abgezogen. Falls weniger als 0 HP uebrig
+   bleiben, so stirbt es automatisch mittels die().
+   Ein Lebewesen, welches sich bewegt hat, trifft die ersten Kampfrunden
+   sehr viel schlechter, um Rein-Raus-Attacken zu verhindern. Dieses
+   Vorgehen kann man mittels P_ENABLE_IN_ATTACK_OUT deaktivieren.
+   Lebewesen, welche P_NO_ATTACK gesetzt haben, kann man mit dieser
+   Funktion nicht schaden.
+
+
+RUeCKGABEWERT
+=============
+
+   Der tatsaechlich verursachte Schaden.
+
+
+BEMERKUNGEN
+===========
+
+   Beim Gegner <enemy>, falls vorhanden, werden XP und ALIGN entsprechend
+   angepasst, im Opfer wird der Gegner in P_KILLER vermerkt, der Kampf wird
+   beendet.
+   Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
+   uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
+   und balancetechnisch guenstigere Loesung, da Defend() magische
+   Verteidigungen, die der Spieler bei sich hat beruecksichtigt.
+   Es sollte also allein schon aus Fairness gegenueber den Objekten
+   anderer Magier Defend() immer dem direkten reduce_hit_points() oder
+   do_damage() vorgezogen werden. Mittels der Flags in 'spell' kann man
+   sehr viele Parameter beeinflussen.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  Defend(L), reduce_hit_points(L), die(L)
+   Props:     P_NO_ATTACK, P_ENABLE_IN_ATTACK_OUT, P_KILLER
+              P_XP, P_ALIGN
+
+23.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/do_frage b/doc/sphinx/man/lfun/do_frage
new file mode 100644
index 0000000..6c848b8
--- /dev/null
+++ b/doc/sphinx/man/lfun/do_frage
@@ -0,0 +1,42 @@
+
+do_frage()
+**********
+
+
+FUNKTION
+========
+
+   int do_frage(string text)
+
+
+DEFINIERT IN
+============
+
+   /std/npc/info.c
+
+
+ARGUMENTE
+=========
+
+   string str  - Schluesselwort der Frage
+
+
+BESCHREIBUNG
+============
+
+   Bearbeitet ein Schluesselwort, das mit "frage <wen> nach " uebergeben
+   wurde. Gibt entsprechende Antworten formatiert aus.
+
+
+BEMERKUNGEN
+===========
+
+   Recht komplex, besser nicht ueberschreiben wenn man es nicht versteht.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  GetInfoArr, AddInfo
+
+31.Mar 2007 Gloinson
diff --git a/doc/sphinx/man/lfun/do_unwear b/doc/sphinx/man/lfun/do_unwear
new file mode 100644
index 0000000..dd91478
--- /dev/null
+++ b/doc/sphinx/man/lfun/do_unwear
@@ -0,0 +1,56 @@
+
+do_unwear()
+***********
+
+
+FUNKTION
+========
+
+   varargs int do_unwear(string str, int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   str
+        String der normalerweise dem Parameter des "ziehe"-Kommandos
+        entspricht.
+
+   silent
+        1, wenn das Ausziehen ohne Meldungen durchgefuehrt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion stellt fest, ob die Ruestung sich durch str
+   identifizieren laesst und angezogen ist und ruft im Erfolgsfall
+   UnWear(silent) auf.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn alles gut ging, ansonsten 0.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn man Ruestungen "von aussen" ausziehen will, sollte man direkt
+   UnWear() verwenden!
+
+
+SIEHE AUCH
+==========
+
+   do_wear(), UnWear(), RemoveFunc(), InformUnwear(),
+   /std/armour/combat.c
+
+Last modified: Sun Jun 27 22:29:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/do_wear b/doc/sphinx/man/lfun/do_wear
new file mode 100644
index 0000000..abf7051
--- /dev/null
+++ b/doc/sphinx/man/lfun/do_wear
@@ -0,0 +1,46 @@
+
+do_wear()
+*********
+
+
+FUNKTION
+========
+
+   varargs int do_wear(string str, int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   str
+        String, der normalerweise dem Parameter des
+        "ziehe/trage"-Kommandos entspricht.
+   silent
+        1, wenn das Anziehen ohne Meldungen durchgefuehrt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich die Ruestung mit "str" identifizieren laesst, wird versucht,
+   sie mittels DoWear() anzuziehen.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn sich die Ruestung anziehen liess, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   do_unwear(), DoWear(), WearFunc(), InformWear(), /std/armour/combat.c
+
+Last modified: Sun Jun 27 22:31:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/lfun/drink_alcohol b/doc/sphinx/man/lfun/drink_alcohol
new file mode 100644
index 0000000..01d0a77
--- /dev/null
+++ b/doc/sphinx/man/lfun/drink_alcohol
@@ -0,0 +1,112 @@
+
+drink_alcohol()
+***************
+
+
+FUNKTION
+========
+
+   public varargs int drink_alcohol(int strength, int testonly, string mytext)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   strength: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein ALCOHOL zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Nuechtern"-Meldung, die bei
+           negativem strength auftreten kann, wenn P_ALCOHOL wieder 0 ist.
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob dem Spieler der angegebene Wert fuer 'strength'
+   auf seine aktuelle P_ALCOHOL addiert werden kann oder nicht. Falls
+   das moeglich ist und testonly = 0, wird P_ALCOHOL entsprechend
+   aktualisiert.
+
+   Sollen neben P_ALCOHOL noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei [potentiellem] Misserfolg (strength + P_ALCOHOL > P_MAX_ALCOHOL)
+   1 bei [potentiellem] Erfolg
+   * potentiell bezieht sich hier auf Nutzung mit 'testonly' != 0
+
+
+BEMERKUNG
+=========
+
+   drink_alocohol() bitte anstatt eigener Manipulationen von P_ALCOHOL und
+   P_MAX_ALCOHOL verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     if(this_player()->drink_alcohol(10, 0,
+                                     "Du prustest in den Schnaps. "
+                                     "Der passt nicht mehr rein.\n")) {
+       // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert
+       // Nachricht an den Spieler:
+       tell_object(this_player(),
+                   break_string("Du trinkst den Schnaps aus.", 78));
+
+       // Nachricht an andere Livings im Raum
+       object ob = first_inventory(environment(this_player()));
+       do {
+         if(living(ob) && ob!=this_player())
+           ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
+                          MT_LOOK|MT_LISTEN,
+                          MA_DRINK);
+         ob = next_inventory(ob);
+       } while(ob);
+
+       // Rassenabhaengige Heilung: Sofort oder in Schritten
+       // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+       if(this_player()->QueryProp(P_REAL_RACE)=="Schnapsdrossel")
+         this_player()->heal_self(30);
+       else {
+         this_player()->buffer_hp(30,5);
+         this_player()->buffer_sp(30,5);
+       }
+     }
+
+     return 1;
+    }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, eat_food, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/drink_soft b/doc/sphinx/man/lfun/drink_soft
new file mode 100644
index 0000000..0f030f6
--- /dev/null
+++ b/doc/sphinx/man/lfun/drink_soft
@@ -0,0 +1,111 @@
+
+drink_soft()
+************
+
+
+FUNKTION
+========
+
+   public varargs int drink_soft(int strength, int testonly, string mytext)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   strength: Wird zu dem augenblicklichen Saettigungsgrad (P_DRINK) addiert.
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein DRINK zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Durst"-Meldung, die bei
+           negativem strength auftritt, wenn P_DRINK wieder 0 ist.
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf
+   aktuelle P_DRINK addiert werden kann oder nicht. Ist dies moeglich,
+   wird es gemacht, es sei denn das testonly != 0.
+
+   Sollen neben P_DRINK noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+    0, wenn strength + P_DRINK > P_MAX_DRINK
+   >0, wenn Erfolg
+
+
+BEMERKUNG
+=========
+
+   drink_soft() bitte anstatt eigener Manipulationen von P_DRINK und
+   P_MAX_DRINK verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     if(this_player()->drink_soft(10, 0, "Du blubberst nicht ueberzeugt "
+                                  "in der Limonade. Das ist zu viel.\n")) {
+       // Platz fuer 10 "Trinken" war noch, diese sind jetzt bereits addiert
+       // Nachricht an den Spieler:
+       tell_object(this_player(), break_string("Du nimmst einen grossen "
+                   "Schluck zuckersuesse Limonade.", 78));
+
+       // alle anderen im Raum bekommen es ggf auch mit:
+       // 1) filter(..., #'living) ergibt die Lebewesen im Raum
+       // 2) filter_objects(..., "ReceiveMsg") ruft ReceiveMsg an jedem
+       // 3) ReceiveMsg(...) bekommt die Folgeparameter
+       filter_objects(filter(all_inventory(environment(this_player())),
+                             #'living) - ({this_player()}),
+                      "ReceiveMsg",
+                      this_player()->Name()+
+                        " trinkt einen Schluck Limonade.",
+                      MT_LOOK|MT_LISTEN,
+                      MA_DRINK);
+
+       // Rassenabhaengige Heilung: Sofort oder in Schritten
+       // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+       if(this_player()->QueryProp(P_REAL_RACE)=="Saufziege")
+         this_player()->heal_self(30);
+       else {
+         this_player()->buffer_hp(30,5);
+         this_player()->buffer_sp(30,5);
+       }
+     }
+
+     return 1;
+    }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, drink_alcohol, eat_food
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/drop b/doc/sphinx/man/lfun/drop
new file mode 100644
index 0000000..cdd372b
--- /dev/null
+++ b/doc/sphinx/man/lfun/drop
@@ -0,0 +1,70 @@
+
+drop()
+******
+
+
+FUNKTION
+========
+
+   public varargs int drop(object o, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   object o
+       Das Objekt, das fallengelassen werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC laesst das Objekt fallen. Gibt o->move() keinen
+   positiven Wert zurueck, beispielsweise weil das Objekt verflucht ist,
+   bekommt er eine entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Fallenlassen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
+   fallenlassen lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob der Spieler/NPC das Objekt ueberhaupt hat,
+   das muss man ggf. selbst ermitteln.
+
+
+BEISPIEL
+========
+
+   if (this_player()->drop(obj, ({
+           "Du wirfst @WEN2 in den Saeureteich.\n",
+           "@WER1 wirft @WENU2 in den Saeureteich.\n" })))
+       obj->remove();
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_DROP_MSG, drop_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP
+
+Last modified: Thu Aug 28 22:20:37 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/drop_obj b/doc/sphinx/man/lfun/drop_obj
new file mode 100644
index 0000000..3e1057f
--- /dev/null
+++ b/doc/sphinx/man/lfun/drop_obj
@@ -0,0 +1,44 @@
+
+drop_obj()
+**********
+
+
+FUNKTION
+========
+
+   int drop_obj(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   ob  Das Objekt, das von dem Lebewesen, in dem diese Funktion aufgerufen
+       wird, fallengelassen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, laesst
+   den angegebenen Gegenstand fallen, wenn dies moeglich ist.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt fallen gelassen wurde oder dies nicht moeglich war.
+   (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
+   plaziert.
+
+
+SIEHE AUCH
+==========
+
+   find_obs(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/lfun/drop_objects b/doc/sphinx/man/lfun/drop_objects
new file mode 100644
index 0000000..93cbee5
--- /dev/null
+++ b/doc/sphinx/man/lfun/drop_objects
@@ -0,0 +1,73 @@
+
+drop_objects()
+**************
+
+
+FUNKTION
+========
+
+   public varargs int drop_objects(string str, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   string str
+       Was fallengelassen werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC laesst die in <str> benannten Sachen fallen.
+   Kann er ein Objekt nicht fallenlassen, bekommt er eine entsprechende
+   Fehlermeldung. Wenn keine Objekte auf <str> passen, wird per
+   _notify_fail() eine Meldung gesetzt, aber noch nicht ausgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
+   etwas fallengelassen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
+   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+
+
+BEISPIEL
+========
+
+   private int cmd_opfern(string str)
+   {
+       notify_fail("WAS moechtest Du opfern?\n");
+
+       if (!this_player()->drop_objects(str, ({ "Du opferst @WEN2.",
+                                                "@WER1 opfert @WENU2.\n" })))
+           return 0;
+
+       filter_objects(this_player()->moved_objects(), "remove");
+       return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   move(L), drop(L), P_DROP_MSG, find_objects(L), moved_objects(L)
+
+Last modified: Fri Jul 25 10:59:37 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/eat_food b/doc/sphinx/man/lfun/eat_food
new file mode 100644
index 0000000..32327e2
--- /dev/null
+++ b/doc/sphinx/man/lfun/eat_food
@@ -0,0 +1,114 @@
+
+eat_food()
+**********
+
+
+FUNKTION
+========
+
+   public varargs int eat_food(int food, int testonly, string mytext)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   food: Wird zu dem augenblicklichen Saettigungsgrad (P_FOOD) addiert.
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein FOOD zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Hunger"-Meldung, die bei
+           negativem food auftreten kann, wenn P_FOOD wieder 0 ist.
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf seine
+   aktuelle P_FOOD addiert werden kann oder nicht. Ist dies moeglich, wird
+   wird es gemacht, es sei denn das testonly != 0.
+
+   Sollen neben P_FOOD noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+    0, wenn strength + P_FOOD > P_MAX_FOOD.
+   >0, wenn Erfolg.
+
+
+BEMERKUNG
+=========
+
+   eat_food() bitte anstatt eigener Manipulationen von P_FOOD und
+   P_MAX_FOOD verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     // Wenn auf das P_FOOD des Spielers die angegebenen 10 nicht mehr addiert
+     // addiert werden koennen (weil sonst P_MAX_FOOD ueberschritten wird),
+     // wird die Fehlermeldung ausgegeben, dass der Spieler nichts mehr
+     // essen/trinken kann.
+     // Bei gesetztem 'mytext' wird 'mytext' an den Spieler ausgegeben.
+     // Ansonsten wird die Standardmeldung ausgegeben.
+     if (!this_player()->eat_food(10, 0, "Der Keks ist einfach "
+                                         "zuviel fuer Dich.\n") )
+       return 1;
+
+     // Spieler hatte noch ausreichend Spielraum bei P_FOOD. Die 10 sind
+     // schon addiert worden. Jetzt Nachricht ausgeben:
+     tell_object(this_player(), break_string("Du knabberst ein bisschen an "
+                 "dem Keks herum und fuehlst Dich gleich viel besser.", 78));
+
+     // alle Lebewesen im Raum bekommen das auch mit
+     foreach(object ob:
+             (filter(all_inventory(environment(this_player())), #'living) -
+              ({this_player()})))
+       ob->ReceiveMsg(this_player()->Name()+" knuspert einen Keks weg.",
+                      MT_LOOK|MT_LISTEN,
+                      MA_EAT);
+
+     // Rassenabhaengige Heilung: Sofort oder in Schritten
+     // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+     if(this_player()->QueryProp(P_REAL_RACE)=="Kruemelmonster")
+       this_player()->heal_self(30);
+     else {
+       this_player()->buffer_hp(30,5);
+       this_player()->buffer_sp(30,5);
+     }
+
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, drink_alcohol, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/execute_anything b/doc/sphinx/man/lfun/execute_anything
new file mode 100644
index 0000000..39ec45a
--- /dev/null
+++ b/doc/sphinx/man/lfun/execute_anything
@@ -0,0 +1,64 @@
+
+execute_anything()
+******************
+
+
+FUNKTION
+========
+
+   protected mixed execute_anything(mixed fun, mixed args, ...)
+
+
+DEFINIERT IN
+============
+
+   /std/util/executer.c
+
+
+ARGUMENTE
+=========
+
+   mixed fun        auszufuehrende Funktion/Array/Closure ... anything
+   mixed args       weitere Argumente, werden weiter uebergeben
+
+
+BESCHREIBUNG
+============
+
+   Fuehrt "alles" aus:
+
+
+
+   'fun' kann sein:
+   - eine Closure
+     [funcall(fun, args, ...)]
+   - einen String als Funktion im Objekt
+     [call_other(this_object(), fun, args, ...)]
+   - ein Array mit Objekt/Objektnamen + Funktion als Aufruf der Funktion am
+     Objekt/Objektnamen:
+     [call_other(array[0], array[1], args...)]
+
+   Wird execute_anything() aus dem restriction_checker gerufen, wird als
+   erster Parameter immer das gepruefte Living uebergeben.
+
+
+BEMERKUNGEN
+===========
+
+   Es kann sich anbieten, die gerufene Funktion mit varargs-Argumenten zu
+   gestalten, damit ihr mehr Argumente uebergeben werden koennen als in der
+   Funktionsdefinition angegeben sind.
+
+   Der Restriktionspruefer (/std/restriction_checker) versteht im Falle eines
+   Arrays mit Objekt/Objektnamen + Funktion auch ein Array mit mehr als 2
+   Elementen. Die weiteren Elemente werden dann zu weiteren Argumenten der
+   gerufenen Funktion. Hierbei wird <pl> ggf. aber als erstes Argument vor
+   alle anderen eingefuegt.
+
+
+SIEHE AUCH
+==========
+
+   check_restrictions, varargs
+
+31.12.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/exit b/doc/sphinx/man/lfun/exit
new file mode 100644
index 0000000..f2d0b00
--- /dev/null
+++ b/doc/sphinx/man/lfun/exit
@@ -0,0 +1,56 @@
+
+exit()
+******
+
+
+FUNKTION
+========
+
+   varargs void exit(object liv, object dest);
+
+
+DEFINIERT IN
+============
+
+   /std/room/description.c
+
+
+ARGUMENTE
+=========
+
+   liv - (object) Das bewegte Lebewesen.
+   dest - (object) Das Environment, in welches bewegt wird.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird immer dann aufgerufen, wenn ein Lebewesen den
+   Raum verlaesst. Standardmaessig werden hier ggf. die Raummeldungen
+   abgestellt, man kann aber auch eigene Checks einhaengen. In dem Fall MUSS
+   man aber das geerbte exit() auf jeden Fall aufrufen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNG
+=========
+
+   Man beachte, dass this_player() 0 sein kann, wenn z.B. ein netztoter Spieler
+   Spieler den Raum verlaesst.
+   Man beachte ausserdem, dass this_player() nicht unbedingt das bewegte Living
+   sein muss. Wenn z.B. jemand ein Lebewesen bewegt, ist TP der, der die
+   Bewegung durchfuehrt, nicht das Lebewesen.
+
+
+SIEHE AUCH
+==========
+
+   init(), this_player(), previous_object(), caller_stack(),
+   NotfiyLeave(), NotifyRemove(), NotifyDestruct()
+
+Last modified: 25.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/find_obs b/doc/sphinx/man/lfun/find_obs
new file mode 100644
index 0000000..994ac6f
--- /dev/null
+++ b/doc/sphinx/man/lfun/find_obs
@@ -0,0 +1,53 @@
+
+find_obs()
+**********
+
+
+FUNKTION
+========
+
+   object* find_obs(string str, int meth)
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   str     Der String der geparsed werden soll.
+   meth    Mit Hilfe dieses Parameters koennen bestimmte Bereichs-
+           eingrenzungen vorgenommen werden (definiert in moving.h):
+
+           PUT_GET_NONE - keinerlei Bereichseingrenzung.
+           PUT_GET_TAKE - es handelt sich um ein Nehmen von Gegenstaenden
+                          also wird das inventory ausgenommen.
+           PUT_GET_DROP - es handelt sich um das Entfernen von Gegenstaenden
+                          also wird das environment ausgenommen.
+
+
+BESCHREIBUNG
+============
+
+   Der String (str) muss folgendes Format haben damit Objekte gefunden
+   werden.
+
+   <gegenstand> [aus container] [in mir|im raum]
+
+   <gegenstand> kann hierbei sowohl eine Objekt-ID als auch ein
+   Gruppenbezeichner wie z.b. "alles" sein.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array mit allen Objekten die sich angesprochen fuehlen, oder aber 0.
+
+
+SIEHE AUCH
+==========
+
+   drop_obj(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/lfun/get_killing_player b/doc/sphinx/man/lfun/get_killing_player
new file mode 100644
index 0000000..3500be1
--- /dev/null
+++ b/doc/sphinx/man/lfun/get_killing_player
@@ -0,0 +1,61 @@
+
+get_killing_player()
+********************
+
+
+FUNKTION
+========
+
+   protected object get_killing_player()
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert im Tod (nach dem toetenden do_damage()) das Spielerobjekt, was
+   den Tod wohl zu verantworten hat, falls es ermittelt werden kann. Es
+   werden registrierte Helfer-NPC und einige schadenverursachende Objekte
+   beruecksichtigt. Hierbei wird QueryUser() in den Objekten abgefragt.
+
+   Es benoetigt ein gueltiges P_KILLER, d.h. falls das Lebewesen vergiftet
+   wurde oder das toetende Objekt aus sonstigen Gruenden nicht in P_KILLER
+   steht, funktioniert es nicht.
+   Auch gibt es bestimmt Objekte, die fuer Spieler toeten koennen, die die
+   diese Funktion nicht kennt.
+   (Dies gilt beides ebenso fuer /p/service/mupfel/getkill.c, ist also kein
+    Grund, jenes statt dieser Funktion zu nutzen.)
+
+
+RUeCKGABEWERT
+=============
+
+   Das Objekt des Spielers, falls es ermittelt werden konnte, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Der Name des Spieler ist mittel Name() ermittelbar. Will man die Info,
+   womit ein Spieler den Kill ggf. gemacht hat, kann man P_KILLER
+   auswerten/nutzen.
+
+
+SIEHE AUCH
+==========
+
+   QueryUser
+   P_KILLER
+
+11.11.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/gilde/AddSkill b/doc/sphinx/man/lfun/gilde/AddSkill
new file mode 100644
index 0000000..6be310b
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/AddSkill
@@ -0,0 +1,57 @@
+
+AddSkill()
+**********
+
+
+FUNKTION
+========
+
+   varargs int AddSkill(string sname, mapping ski)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string sname       Name des Skills
+   mapping ski        Skill-Mapping
+
+
+BESCHREIBUNG
+============
+
+   Fuegt den Skill zur Liste der in dieser Gilde lernbaren Skills
+   hinzu. Das Mapping enthaelt Informationen, die der Gildenraum
+   bzw. das Gildenobjekt zum Skill herausgeben und die das Lernen
+   des Skills beeinflussen.
+
+
+RUECKGABWERT
+============
+
+   1 fuer Erfolg
+
+
+BEISPIEL
+========
+
+   AddSkill( FIGHT(WT_CLUB), ([ OFFSET(SI_SKILLLEARN) : 1 ]) );
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/AddSpell b/doc/sphinx/man/lfun/gilde/AddSpell
new file mode 100644
index 0000000..027b4d6
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/AddSpell
@@ -0,0 +1,74 @@
+
+AddSpell()
+**********
+
+
+FUNKTION
+========
+
+   varargs int AddSpell(string verb, mapping ski)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string verb        Name des Spells
+   mapping ski        Skill-Mapping
+
+
+BESCHREIBUNG
+============
+
+   Fuegt den Spell zur Liste der in dieser Gilde lernbaren Spells
+   hinzu. Das Mapping enthaelt Informationen, die der Gildenraum
+   bzw. das Gildenobjekt zum Spell herausgeben und die das Lernen
+   des Spells beeinflussen.
+
+
+RUECKGABWERT
+============
+
+   1 fuer Erfolg
+
+
+BEMERKUNGEN
+===========
+
+   Siehe das Verhalten von QuerySpell (gilde) zum Zusammenfuegen
+   der AddSpell-Informationen aus Gilde und Spellbook. Relevant
+   zB fuer Lernrestriktionen.
+
+
+BEISPIEL
+========
+
+   AddSpell("entfluche",
+     ([SI_SKILLRESTR_LEARN :
+       ([P_GUILD_LEVEL: LVL_WANDER,
+         SR_FUN:        #'glaubensTest]),
+       SI_DIFFICULTY: 100,
+       SI_SKILLINFO:  "Wanderprediger ab Stufe 7",
+       SI_SKILLINFO_LONG: break_string(
+         "Um jemanden von einem laestigen Sprachfluch zu befreien, "
+         "sollte man diese Anrufung benutzen [...]", 78),
+       SI_GOD:        LEMBOLD]));
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSkill, QuerySpell, QuerySkill, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/GuildRating b/doc/sphinx/man/lfun/gilde/GuildRating
new file mode 100644
index 0000000..ca4ec1b
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/GuildRating
@@ -0,0 +1,47 @@
+
+GuildRating()
+*************
+
+
+FUNKTION
+========
+
+   int GuildRating(object pl)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   object pl          Spieler, der geratet werden soll
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Guild-Rating des Spielers im Bereich 0-MAX_ABILITY zurueck
+   und schreibt sie in P_GUILD_RATING. Wichtig fuer Levelbestimmung!
+
+
+
+   Normalerweise ist das der Mittelwert der Skill-Abilities aller Skills
+   und Spells, das Verhalten kann aber ueberschrieben werden.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS, P_GUILD_RATING
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+10. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/InitialSkillAbility b/doc/sphinx/man/lfun/gilde/InitialSkillAbility
new file mode 100644
index 0000000..afea3e9
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/InitialSkillAbility
@@ -0,0 +1,52 @@
+
+InitialSkillAbility()
+*********************
+
+
+FUNKTION
+========
+
+   static int InitialSkillAbility(mapping ski, object pl)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   mapping ski     Der zu lernende Skill
+   object  pl      Spieler
+
+
+BESCHREIBUNG
+============
+
+   Gibt den initialen Ability-Wert fuer einen neu zu lernenden Skill (Spell)
+   zurueck. Die Standardformel benutzt nur Intelligenz und SI_SKILLLEARN und
+   kann in der Gilde ueberschrieben werden.
+
+
+BEMERKUNGEN
+===========
+
+   Der zurueckgegebene Wert wird noch in das Spieler-Skillsystem eingegeben
+   und daher kann der real gelernte Wert abweichen
+
+
+SIEHE AUCH
+==========
+
+   Skills:         LimitAbility, ModifySkill
+   GObj Lernen:    LearnSkill, LearnSpell
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/LearnSkill b/doc/sphinx/man/lfun/gilde/LearnSkill
new file mode 100644
index 0000000..07a4dc9
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/LearnSkill
@@ -0,0 +1,59 @@
+
+LearnSkill()
+************
+
+
+FUNKTION
+========
+
+   int LearnSkill(string skill)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string skill     Der zu lernende Skill
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ueberprueft den Spieler auf Gildenzugehoerigkeit
+   und ruft, falls kein 'skill' angegeben ist die SkillListe()
+   fuer Skills auf.
+
+   Falls ein Argument angegeben wird, wird bei dem Spieler dieser Skill
+   initialisiert, sofern er die notwendigen Anforderungen erfuellt hat.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei Fehler, 1 bei Erfolg.
+
+
+BEMERKUNGEN
+===========
+
+   Fuer die Lebewesen-Skills gibt es eine gleichnamige Funktion.
+   Siehe dafuer LearnSkill.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/LearnSpell b/doc/sphinx/man/lfun/gilde/LearnSpell
new file mode 100644
index 0000000..385da3e
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/LearnSpell
@@ -0,0 +1,53 @@
+
+LearnSpell()
+************
+
+
+FUNKTION
+========
+
+   varargs int LearnSpell(string spell, object pl)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string spell     Der zu lernende Spell
+   object pl        lernender Spieler, wenn 0, wird this_player() genommen
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ueberprueft den Spieler auf Gildenzugehoerigkeit
+   und ruft, falls kein 'spell' angegeben ist die SkillListe()
+   fuer Spells auf.
+
+   Falls ein Argument angegeben wird, wird bei dem Spieler dieser Spell
+   initialisiert, sofern er die notwendigen Anforderungen erfuellt hat.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei Fehler, 1 bei Erfolg.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/QuerySkill b/doc/sphinx/man/lfun/gilde/QuerySkill
new file mode 100644
index 0000000..ee3e68a
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/QuerySkill
@@ -0,0 +1,54 @@
+
+QuerySkill()
+************
+
+
+FUNKTION
+========
+
+   mapping QuerySkill(string skill)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string skill       Name des Skills
+
+
+BESCHREIBUNG
+============
+
+   Liefert fuer diesen Skill die Gildeninformationen in einem
+   Mapping zurueck.
+
+
+BEISPIEL
+========
+
+   // /gilden/klerus->QuerySkill(FIGHT(WT_CLUB)) gibt zB zurueck:
+   ([SI_FUN:                "Fight_club",
+     OFFSET(SI_SKILLLEARN): 1
+     SI_SKILLRESTR_USE:     ([SR_FUN:#'gilden/klerus->spellTest()]),
+     OFFSET(SI_SKILLLEARN): #'gilden/klerus->learnOffset,
+     OFFSET(SI_SPELLCOST):  #'gilden/klerus->costOffset,
+     FACTOR(SI_SPELLCOST):  #'gilden/klerus->costFactor])
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSkill, AddSpell, QuerySpell
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/QuerySpell b/doc/sphinx/man/lfun/gilde/QuerySpell
new file mode 100644
index 0000000..32eff3a
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/QuerySpell
@@ -0,0 +1,75 @@
+
+QuerySpell()
+************
+
+
+FUNKTION
+========
+
+   mapping QuerySpell(string spell)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   string spell       Name des Spells
+
+
+BESCHREIBUNG
+============
+
+   Liefert fuer diesen Spell die Gilden- und Spellbookinformationen
+   zusammengefasst in ein Mapping zurueck.
+   Die Gildeninformationen haben dabei Vorrang (d.h. eine Lernrestriktion
+   im Spellbook wird benutzt, bei unterschiedlichen Werten fuer das gleiche
+   Attribut geht der Wert in der Gilde vor).
+
+
+BEISPIEL
+========
+
+   // /gilden/klerus->QuerySpell("entfluche") gibt zB zurueck:
+   ([SI_SPELLFATIGUE: 2,
+     SI_SP_LOW_MSG:   "Deine Konzentration reicht nicht aus, das Interesse "
+                      "der Goetter zu "wecken.\n",
+     SI_TIME_MSG:     "So schnell koennen sich die Goetter nicht wieder um "
+                      "Dich kuemmern!\n",
+     SI_SKILLLEARN:   5,
+     OFFSET(SI_SKILLLEARN):15
+     SI_SKILLRESTR_LEARN:
+     ([P_LEVEL:       7,
+       P_GUILD_LEVEL: LVL_WANDER,
+       SR_FUN:        #'gilden/klerus->glaubensTest]),
+     SI_DIFFICULTY:   100,
+     SI_SKILLINFO:    "Wanderprediger ab Stufe 7",
+     SI_SKILLINFO_LONG:
+       "Um jemanden von einem laestigen Sprachfluch zu befreien, "
+       "sollte man diese Anrufung benutzen [...]",
+     SP_NAME:         "entfluche",
+     SI_SKILLRESTR_USE: ([ SR_FREE_HANDS : 0 ]),
+     SI_MAGIC_TYPE:   ({MT_SAKRAL})
+     SI_GOD:          LEMBOLD,
+     SI_SKILLRESTR_USE:     ([SR_FUN:#'gilden/klerus->spellTest()]),
+     OFFSET(SI_SKILLLEARN): #'gilden/klerus->learnOffset,
+     OFFSET(SI_SPELLCOST):  #'gilden/klerus->costOffset,
+     FACTOR(SI_SPELLCOST):  #'gilden/klerus->costFactor])
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSkill, AddSpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/SkillListe b/doc/sphinx/man/lfun/gilde/SkillListe
new file mode 100644
index 0000000..200650b
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/SkillListe
@@ -0,0 +1,49 @@
+
+SkillListe()
+************
+
+
+FUNKTION
+========
+
+   int SkillListe(int what)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   int what        Rueckgabeoption:
+
+
+BESCHREIBUNG
+============
+
+   Gibt eine Text mit Liste mit lernbaren Skills/Spells zurueck:
+
+
+
+   Fuer 'what': 0 - alle; 1 - Spells; 2 - Skills.
+
+
+
+   Zeigt Eintraege aus SI_SKILLINFO.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   Skills:         skill_info_liste
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/UseSpell b/doc/sphinx/man/lfun/gilde/UseSpell
new file mode 100644
index 0000000..4f3724c
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/UseSpell
@@ -0,0 +1,53 @@
+
+UseSpell()
+**********
+
+
+FUNKTION
+========
+
+   varargs int UseSpell(object caster, string spell, mapping sinfo)
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   object caster      Spieler, der Spell nutzt
+   string spell       Spell-Name
+   mapping sinfo      Spell-Informationen
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob der Spell in der Gilde definiert ist und ruft ihn dann
+   ggf in aus dem Spell-Mapping gelesenen Gilden-SI_SPELLBOOK auf.
+
+   Wird von living/skills::UseSpell gerufen, wenn dieses die SI_CLOSURE,
+   also die Funktion eines Spells sucht, fuer den kein SI_SPELLBOOK
+   explizit angegeben wurde.
+
+
+RUECKGABWERT
+============
+
+   Rueckgabewert des Spells aus dem Spellbook oder 0.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:     GuildRating
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/austreten b/doc/sphinx/man/lfun/gilde/austreten
new file mode 100644
index 0000000..cde77e2
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/austreten
@@ -0,0 +1,52 @@
+
+austreten()
+***********
+
+
+FUNKTION
+========
+
+   varargs int austreten(int loss)
+
+
+ARGUMENTE
+=========
+
+   int loss       Prozentsatz, um den sich die Gildenskills verschlechtern
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+BESCHREIBUNG
+============
+
+   Austrittsfunktion der Gilde. Prueft die Restriktionen der Gilde und
+   laesst this_player() ggf austreten. Das Austreten aus der Standard-
+   gilde ist dabei nicht moeglich.
+
+   Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
+   E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.
+
+   Der Gildenmaster senkt auch die Skill/Spell-Faehigkeiten um 'loss' bzw.
+   normalerweise mindestens 20%.
+
+   Durch Ueberschreiben koennen hier zB Abschiedsmeldungen gesendet werden.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, bei_oder_aus_treten
+   * Props dafuer: P_GUILD_RESTRICTIONS
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/bei_oder_aus_treten b/doc/sphinx/man/lfun/gilde/bei_oder_aus_treten
new file mode 100644
index 0000000..abed024
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/bei_oder_aus_treten
@@ -0,0 +1,43 @@
+
+bei_oder_aus_treten()
+*********************
+
+
+FUNKTION
+========
+
+   int bei_oder_aus_treten(string str)
+
+
+ARGUMENTE
+=========
+
+   string str       Spielerparameter
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+BESCHREIBUNG
+============
+
+   Aus- oder Eintrittsfunktion, ruft beitreten() bzw. austreten() auf.
+   Wird im Std-Gildenraum per AddCmd zur Verfuegung gestellt.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, austreten
+   * Props dafuer: P_GUILD_RESTRICTIONS
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/gilde/beitreten b/doc/sphinx/man/lfun/gilde/beitreten
new file mode 100644
index 0000000..6e5a957
--- /dev/null
+++ b/doc/sphinx/man/lfun/gilde/beitreten
@@ -0,0 +1,43 @@
+
+beitreten()
+***********
+
+
+FUNKTION
+========
+
+   int beitreten()
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+BESCHREIBUNG
+============
+
+   Beitrittsfunktion der Gilde. Prueft die Gilde selbst im Gildenmaster,
+   dann die Restriktionen der Gilde und laesst this_player() ggf eintreten.
+
+   Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
+   E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.
+
+   Durch Ueberschreiben koennen hier zB Standard-Skills und Spells den
+   Spieler bei Eintritt gelehrt werden.
+
+
+SIEHE AUCH
+==========
+
+   GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
+   * Anzeigen:     SkillListe
+   * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell
+   * Nutzen:       UseSpell (gilde)
+   * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
+   Gildenfkt.:
+   * Ein/Austritt: bei_oder_aus_treten, austreten
+   * Props dafuer: P_GUILD_RESTRICTIONS
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/give b/doc/sphinx/man/lfun/give
new file mode 100644
index 0000000..866c1e3
--- /dev/null
+++ b/doc/sphinx/man/lfun/give
@@ -0,0 +1,65 @@
+
+give()
+******
+
+
+FUNKTION
+========
+
+   public varargs int give(object o, object dest, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   object o
+       Das Objekt, das uebergeben werden soll.
+   object dest
+       Der Spieler oder NPC, der das Objekt bekommen soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_GIVE_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC uebergibt dem Empfaenger das Objekt. Gibt o->move()
+   keinen positiven Wert zurueck, beispielsweise weil das Objekt verflucht
+   ist oder der Empfaenger es nicht mehr tragen kann, bekommt er eine
+   entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn die Uebergabe geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
+   weitergeben lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob der Spieler/NPC der Objekt ueberhaupt hat,
+   das muss man ggf. selbst ermitteln.
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_GIVE_MSG, give_objects(L), give_notify(L),
+   P_NOINSERT_MSG, P_NOLEAVE_MSG, P_TOO_MANY_MSG,
+   P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP
+
+Last modified: Thu Aug 28 22:21:19 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/give_notify b/doc/sphinx/man/lfun/give_notify
new file mode 100644
index 0000000..ef316cb
--- /dev/null
+++ b/doc/sphinx/man/lfun/give_notify
@@ -0,0 +1,87 @@
+
+give_notify()
+*************
+
+
+FUNKTION
+========
+
+   void give_notify(object obj);
+
+
+DEFINIERT IN
+============
+
+   /std/npc/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   obj
+     an den NPC uebergebenes Objekt
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird automatisch immer dann aufgerufen, wenn ein
+   Lebewesen (welches kein Spielercharakter ist) ein Objekt uebergeben
+   bekommt. Dies muss jedoch ueber die Funktionalitaet von
+   put_and_get.c geschehen sein, innerhalb von move() wird die Funktion
+   nicht aufgerufen!
+
+
+BEISPIEL
+========
+
+   Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
+   Item als Beweis der Erfuellung einer bestimmten Aufgabe ueberbracht
+   wird. Folgendermasse kann dies realisiert werden:
+   void create() {
+     ::create();
+     ...
+     SetProp(P_REJECT,({REJECT_GIVE,
+       Name(WER)+" sagt: Das brauche ich nicht!\n"}));
+     ...
+   }
+
+   void quest_ok(object obj) { ...
+     // Vernichtung des Questobjektes und Questtexte
+     // Questbelohnung und Questanerkennung
+   }
+
+   void give_notify(object obj) {
+     if(obj->id("\nquestitem")) // Questitem bekommen?
+       quest_ok(obj);
+     else
+       ::give_notify(obj);  // P_REJECT soll sonst greifen
+   }
+   Der Aufruf von ::give_notify() stellt sicher, dass ein Objekt
+   zurueckgegeben wird, sofern es nicht das gesuchte ist. Erreicht wird
+   dies ueber P_REJECT (siehe Bemerkungen).
+
+
+BEMERKUNGEN
+===========
+
+   Speziell in NPCs ist diese Funktion normalerweise dafuer
+   verantwortlich, dass mittels der Property P_REJECT die Annahme von
+   Objekten verweigert werden kann. Ueberschreibt man sie, so sollte
+   man gegebenenfalls darauf achten, dass diese Standardfunktion
+   ebenfalls aufgerufen wird.
+
+
+SIEHE AUCH
+==========
+
+   P_REJECT, show_notify(),
+   /std/npc/put_and_get.c, /std/living/put_and_get.c
+
+22. Oktober 2013, Arathorn.
diff --git a/doc/sphinx/man/lfun/give_obj b/doc/sphinx/man/lfun/give_obj
new file mode 100644
index 0000000..753fd09
--- /dev/null
+++ b/doc/sphinx/man/lfun/give_obj
@@ -0,0 +1,43 @@
+
+give_obj()
+**********
+
+
+FUNKTION
+========
+
+   int give_obj(object ob, object where)
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   ob      Das Objekt, das abgegeben werden soll.
+   where   Das Lebewesen, dass das Objekt erhaelt.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, gibt
+   den angegebenen Gegenstand (ob) an das angegebene Lebewesen (where).
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt uebergeben wurde oder die Uebergabe nicht moeglich war.
+   (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe plaziert.
+
+
+SIEHE AUCH
+==========
+
+   pick_obj(), drop_obj(), put_obj(), find_obs(), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/lfun/heal_self b/doc/sphinx/man/lfun/heal_self
new file mode 100644
index 0000000..53697a2
--- /dev/null
+++ b/doc/sphinx/man/lfun/heal_self
@@ -0,0 +1,68 @@
+
+heal_self()
+***********
+
+
+FUNKTION
+========
+
+   void heal_self(int points);
+
+
+ARGUMENTE
+=========
+
+   points: Die dem Lebewesen zukommende Heilung.
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden points Lebens- und Konzentrationspunkte
+   gutgeschrieben und auf die aktuellen addiert. Es werden aber nicht
+   die maximalen Werte ueberschritten.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner
+
+
+BEISPIELE
+=========
+
+   AddCmd("pflueck&beere","pfluecke_cmd","Was moechtest Du pfluecken?");
+
+   int pfluecke_cmd(string str){
+       write("Du pflueckst eine Beere, isst sie und fuehlst Dich gleich "
+            +"viel besser.\n");
+       this_player()->heal_self(30);
+       return 1;
+   }
+
+   Der Spieler bekommt hier pro Beere die er pflueckt und isst je 30 LP/KP
+   zu seinen momentanen.
+
+BEMERKUNGEN:
+   heal_self wird gerne fuer Heilstellen in Gebieten genommen, in
+   denen ein Spieler diese Heilung auch wirklich braucht. Dennoch ist
+   der Einsatz un- bedingt mit der Heilungsbalance abzusprechen und
+   darauf zu achten, dass pro reset() nur eine bestimmte Anzahl an
+   Heilungen ausgegeben werden.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der
+   eigens dafuer eingerichteten Funktion check_and_update_timed_key
+   realisiert werden.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:   restore_spell_points, restore_hit_points, buffer_hp
+               buffer_sp, check_and_update_timed_key
+   Gegenparts: do_damage, reduce_hit_points, reduce_spell_points
+   Props:      P_HP, P_SP
+   Konzept:    heilung
+
+Last modified: 27.05.2007 by Ennox
diff --git a/doc/sphinx/man/lfun/heart_beat b/doc/sphinx/man/lfun/heart_beat
new file mode 100644
index 0000000..475a781
--- /dev/null
+++ b/doc/sphinx/man/lfun/heart_beat
@@ -0,0 +1,57 @@
+
+heart_beat()
+************
+
+
+FUNKTION
+========
+
+   protected void heart_beat();
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+   /std/living/combat.c
+   und anderen...
+   kann auch in beliebigen Objekten selbst definiert werden.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird alle zwei Sekunden vom GameDriver aufgerufen. Sie
+   regelt in der MG-MudLib das Heilen von Spielern und Monstern, den
+   Ablauf von Kampfrunden, die Verdauung etc.
+
+   Da heart_beat() ziemlich viele Ressourcen des GameDrivers verbraet,
+   sollte man Objekte mit heart_beat() nur so selten wie moeglich
+   benutzen! Und selbst dann sollte der heart_beat() nicht die ganze Zeit
+   ueber laufen, sondern sich so bald wie moeglich abschalten.
+
+   Das Ein- und Ausschalten des heart_beat()s erfolgt mit
+   set_heart_beat().
+
+
+BEMERKUNGEN
+===========
+
+   1. Teuer, teuer, teuer!
+   2. Soll euer Viech pro "echtem" Heartbeat mehrere Kampfrunden haben,
+      benutzt dafuer SA_SPEED und ruft auf gar keinen Fall mehrfach
+      ::heart_beat() auf. Also _NICHT_
+      void heart_beat() {
+          ::heart_beat();
+          ::heart_beat(); }
+      sondern:
+      SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPEED: 200]) );
+
+
+SIEHE AUCH
+==========
+
+   Efuns:     set_heart_beat(), absolute_hb_count(), set_next_reset()
+   Fehler:    make_immortal(L)
+
+22.3.2008, Zesstra
diff --git a/doc/sphinx/man/lfun/id b/doc/sphinx/man/lfun/id
new file mode 100644
index 0000000..4921395
--- /dev/null
+++ b/doc/sphinx/man/lfun/id
@@ -0,0 +1,99 @@
+
+id()
+****
+
+
+FUNKTION
+========
+
+   varargs int id(string str, int lvl);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   string str
+        String, auf den getestet werden soll.
+   int lvl
+        In /std/player/base.c benutzt. Wenn der Spieler unsichtbar ist
+        und lvl kleiner ist als sein Level, wird 0 zurueckgegeben.
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob sich das Objekt mit str ansprechen laesst. Dazu
+   wird str mit dem Inhalt der Property P_IDS verglichen. Falls
+   P_ADJECTIVES gesetzt ist, werden auch alle Adjektivkombinationen mit
+   den Bezeichnern geprueft.
+
+   Besondere Bedeutung hat diese Funktion bei Mengenobjekten: Anhand von
+   str wird vermerkt, welche Menge des Objektes angesprochen wird. Es
+   werden dabei mehrere Faelle unterschieden:
+   o str ist einer der mit AddId() angegebener Bezeichner. In diesem
+     Fall ist die angesprochene Menge die Gesamtmenge.
+   o str ist einer der mit AddSingularId() angegebenen Bezeichner. Die
+     angesprochene Menge ist in diesem Fall 1.
+   o str ist einer der mit AddPluralId() angegebenen Bezeichner. Die
+     angesprochene Menge ist in diesem Fall . die Gesamtmenge.
+   o Hat str die Form "<n> <id>", wobei <n>=1 und <id> eine SingularId
+     oder 1 < <n> <= der Gesamtmenge und <id> eine PluralId, so ist die
+     angesprochene Menge = <n>.
+   Wie gesagt, gilt dies einzig und allein bei Mengenobjekten!
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn sich das Objekt von str angesprochen fuehlt, ansonsten 0.
+
+
+BEISPIELE
+=========
+
+   Angenommen, ein Objekt habe folgende Bezeichner:
+
+   AddId( "murmel" );
+   AddAdjective( "runde" );
+
+   Dann liefern die angegebenen id()-Aufrufe folgende Ergebnisse:
+
+   id( "murmel" );         => 1
+   id( "runde murmel" );   => 1
+   id( "kleine murmel" );  => 0
+   id( "runder ball" );    => 0
+   id( "runde murmel 2" ); => 1, wenn dies die zweite Murmel in der
+                                 gleichen Umgebung ist, ansonsten 0
+
+   Bei einem Haufen von 100 Muenzen haette man zB.:
+
+   AddId( "geld" );
+   AddSingularId( "muenze" );
+   AddPluralId( "muenzen" );
+
+   Nach fuehlen sich nach den folgenden id()-Aufrufen folgende Anzahlen
+   angesprochen:
+
+   id( "geld" );       => 100 Muenzen
+   id( "muenze" );     => 1 Muenze
+   id( "muenzen" );    => 100 Muenzen
+   id( "1 muenze" );   => 1 Muenze
+   id( "42 muenzen" ); => 42 Muenzen
+
+   id() liefert in all diesen Faellen 1 zurueck.
+
+
+SIEHE AUCH
+==========
+
+   AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
+   match_ids(), /std/thing/description.c, /std/unit.c
+
+6. Sep 2012 Gloinson
diff --git a/doc/sphinx/man/lfun/init b/doc/sphinx/man/lfun/init
new file mode 100644
index 0000000..481eec2
--- /dev/null
+++ b/doc/sphinx/man/lfun/init
@@ -0,0 +1,91 @@
+
+init()
+******
+
+
+FUNKTION
+========
+
+   void init();
+
+
+DEFINIERT IN
+============
+
+   /std/room/description.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   init() wird immer dann aufgerufen, wenn ein lebendes Objekt in die
+   Naehe anderer Objekte bewegt wird oder ein nicht lebendiges Objekt
+   in die Naehe von Lebewesen gelangt. init() wird dabei in allen
+   Objekten aufgerufen, bei denen es notwendig ist.
+
+   Der Hauptzweck dieser Funktion besteht darin, den Objekten
+   untereinander ihre jeweiligen Befehle zugaenglich zu machen.
+   Waehrend dies in anderen MudLibs durch eine Reihe von
+   add_action()-Aufrufen im Rumpf von init() geschah, geschieht dies in
+   der MG-MudLib bei Objekten, die /std/thing/commands.c erben
+    (das sind zB. alle Standardobjekte) quasi automatisch
+    (dort werden die Befehle dann per AddCmd() im create() angemeldet,
+     man spart sich die Implementierung von init() und dem Mud somit
+     Speicher). Der andere Weg ist aber natuerlich immer noch moeglich.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Der Ablauf der init()-Kette ist wie folgt:
+   o Ist das Objekt X, welches ins Zielobjekt D bewegt wurde, ein
+     Lebewesen, so wird in D init() aufgerufen, wobei this_player() auf
+     X gesetzt ist.
+   o Dann wird fuer jedes Objekt C in D folgendes ausgefuehrt:
+     + Ist C ein Lebewesen, dann wird init() in X aufgerufen, wobei
+       this_player() auf C gesetzt ist.
+     + Ist X ein Lebewesen, dann wird init() in C aufgerufen, wobei
+     this_player() auf X gesetzt ist.
+   o Schliesslich wird in dem Fall, dass D lebendig ist, in X init()
+     aufgerufen, wobei this_player() auf D gesetzt ist.
+
+
+BEISPIELE
+=========
+
+   D sei ein Raum, in dem sich das Lebewesen L1 sowie die Gegenstaende
+   N1 und N2 befinden.
+   Betritt ein Spieler X diesen Raum, so werden folgende init()s
+   aufgerufen:
+
+     D->init();  // this_player() == X
+     X->init();  // this_player() == L1
+     L1->init(); // this_player() == X
+     N1->init(); // this_player() == X
+     N2->init(); // this_player() == X
+
+   Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
+   wie folgt aus:
+
+     X->init();    // this_player() == L1
+
+
+SIEHE AUCH
+==========
+
+         exit(), AddCmd(), add_action(),
+   NotifyInsert()
+
+Last modified: 04.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/insert_sensitive_inv b/doc/sphinx/man/lfun/insert_sensitive_inv
new file mode 100644
index 0000000..513632a
--- /dev/null
+++ b/doc/sphinx/man/lfun/insert_sensitive_inv
@@ -0,0 +1,36 @@
+
+insert_sensitive_inv()
+**********************
+
+
+FUNKTION
+========
+
+   void insert_sensitive_inv(object ob, string key,
+                             int threshold, mixed *opt)
+
+
+DEFINIERT IN
+============
+
+   /std/container/inventory.c
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion sucht, ob beim Hinzufuegen eines sensitiven Objekts
+   schon ein Objekt da ist, dass dieses ausloest.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+   P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
+
+28.Jan.2001, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/insert_sensitive_inv_trigger b/doc/sphinx/man/lfun/insert_sensitive_inv_trigger
new file mode 100644
index 0000000..edb78f8
--- /dev/null
+++ b/doc/sphinx/man/lfun/insert_sensitive_inv_trigger
@@ -0,0 +1,36 @@
+
+insert_sensitive_inv_trigger()
+******************************
+
+
+FUNKTION
+========
+
+   void insert_sensitive_inv_trigger(object ob, string key,
+                                     int threshold, mixed *opt)
+
+
+DEFINIERT IN
+============
+
+   /std/container/inventory.c
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion sucht, ob ein sensitives Objekt im Inventory ist,
+   das durch dieses (soeben eingefuegte) Objekt ausgeloest wird.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+   P_SENSITIVE_INVENTORY_TRIGGER
+   CheckSensitiveAttack
+
+28.Jan.2001, Gloinson@MG
diff --git a/doc/sphinx/man/lfun/int_long b/doc/sphinx/man/lfun/int_long
new file mode 100644
index 0000000..931e132
--- /dev/null
+++ b/doc/sphinx/man/lfun/int_long
@@ -0,0 +1,91 @@
+
+int_long()
+**********
+
+
+FUNKTION
+========
+
+   varargs string int_long(mixed viewer, mixed viewpoint, int flags)
+
+
+DEFINIERT IN
+============
+
+   /std/room/description.c
+
+
+ARGUMENTE
+=========
+
+   mixed viewer       - der Betrachter des Raumes
+   mixed viewpoint    - 0/Objekt/Array der/die Ausgangspunkt(e) des
+                        Betrachtens (und damit nicht sichtbar!)
+   int flags          - Modifikatoren fuer die Anzeige
+                        (siehe "man make_invlist", wird mit 3 verUNDet!)
+
+
+BESCHREIBUNG
+============
+
+   Es wird die Beschreibung des Rauminneren erstellt. Dabei wird die
+   Langbeschreibung des Raumes, die enthaltenen Objekte (exklusive
+   aller viewpoints (normalerweise nur der Betrachter)) und Ausgaenge,
+   wenn vom Viewer eingeschaltet dargestellt.
+   Falls der Raum innerhalb eines anderen Raumes liegt und selbst
+   transparent ist, wie zusaetzlich die Kurzbeschreibung des Aussen-
+   raumes angezeigt.
+
+   Ist Viewer ein Magier mit eingeschaltetem Magiermodus, so wird der
+   Beschreibung der Dateiname des Raumes vorangestellt.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Langbeschreibung des Raumes von innen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Trennung von viewer und viewpoint hat durchaus ihren Sinn. So ist
+   es zum Beispiel moeglich, einen Raum "mit den Augen eines Anderen" zu
+   betrachten. Dabei saehe man sich selbst, wenn man im Raum waere.
+
+
+BEISPIELE
+=========
+
+   // in diesem Raum sieht man keine Mitspieler im "schau" oder beim
+   // Betreten (vielleicht ist es zu neblig)
+   // dazu werden einfach alle Interactives zu den viewpoints addiert
+   string int_long(object viewer, mixed viewpoints, int flags) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_long(&viewer,
+                      viewpoints+
+                      filter(all_inventory(this_object()),
+                                   #'interactive),
+                      &flags);
+   }
+
+   string int_short(object viewer, mixed viewpoints) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_short(&viewer,
+                       viewpoints+
+                       filter(all_inventory(this_object()),
+                                    #'interactive));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        int_short()
+   Properties:        P_INT_LONG, P_SHORT
+                      P_HIDE_EXITS, P_SHOW_EXITS
+                      P_TRANSPARENT
+   Kommandokette:     make_invlist(), short()
+   Sonstiges:         P_REFERENCE_OBJECT, P_WANTS_TO_LEARN
+
+11. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/int_short b/doc/sphinx/man/lfun/int_short
new file mode 100644
index 0000000..aabd547
--- /dev/null
+++ b/doc/sphinx/man/lfun/int_short
@@ -0,0 +1,85 @@
+
+int_short()
+***********
+
+
+FUNKTION
+========
+
+   string int_short(mixed viewer, mixed viewpoint);
+
+
+DEFINIERT IN
+============
+
+   /std/room/description.c
+
+
+ARGUMENTE
+=========
+
+   mixed viewer       - der Betrachter des Raumes
+   mixed viewpoint    - 0/Objekt/Array der/die Ausgangspunkt(e) des
+                        Betrachtens (und damit nicht sichtbar!)
+
+
+BESCHREIBUNG
+============
+
+   Es wird eine kurze  Beschreibung des Rauminneren erstellt. Dabei wird
+   die Kurzbeschreibung des Raumes, die enthaltenen Objekte (exklusive
+   aller viewpoints (normalerweise nur der Betrachter)) und Ausgaenge,
+   wenn vom Viewer eingeschaltet dargestellt.
+
+   Ist Viewer ein Magier mit eingeschaltetem Magiermodus, so wird der
+   Beschreibung der Dateiname des Raumes vorangestellt.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Kurzbeschreibung des Raumes von innen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Trennung von viewer und viewpoint hat durchaus ihren Sinn. So ist
+   es zum Beispiel moeglich, einen Raum "mit den Augen eines Anderen" zu
+   betrachten. Dabei saehe man sich selbst, wenn man im Raum waere.
+
+
+BEISPIELE
+=========
+
+   // in diesem Raum sieht man keine Mitspieler im "schau" oder beim
+   // Betreten (vielleicht ist es zu neblig)
+   // dazu werden einfach alle Interactives zu den viewpoints addiert
+   string int_long(object viewer, mixed viewpoints, int flags) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_long(&viewer,
+                      viewpoints+
+                      filter(all_inventory(this_object()),
+                                   #'interactive),
+                      &flags);
+   }
+
+   string int_short(object viewer, mixed viewpoints) {
+    if(!pointerp(viewpoints)) viewpoints=({viewpoints});
+    return ::int_short(&viewer,
+                       viewpoints+
+                       filter(all_inventory(this_object()),
+                                    #'interactive));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        int_long()
+   Properties:        P_INT_SHORT, P_SHORT
+                      P_HIDE_EXITS, P_SHOW_EXITS
+   Kommandokette:     make_invlist(), short()
+   Sonstiges:         P_REFERENCE_OBJECT, P_WANTS_TO_LEARN
+
+11. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/is_class_member b/doc/sphinx/man/lfun/is_class_member
new file mode 100644
index 0000000..1018e71
--- /dev/null
+++ b/doc/sphinx/man/lfun/is_class_member
@@ -0,0 +1,174 @@
+
+is_class_member()
+*****************
+
+
+FUNKTION
+========
+
+   int is_class_member(string|string* class);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   string/string* class       - String oder Stringarray der Klasse(n)
+
+
+BESCHREIBUNG
+============
+
+   Es wird getestet, ob das Objekt in eine der in class angegebenen
+   Klassen faellt. In diesen Test werden die folgenden Eigenschaften des
+   Objektes einbezogen:
+
+     1. Die Rasse des Objektes (bei Lebewesen),
+     2. die IDs des Objektes und
+     3. die explizit angegebenen Klassen des Objektes.
+     4. einigen impliziten Klassen, die sich aus den Klassen in 3 ergeben.
+
+   Die moeglichen Klassen sind in /sys/class.h definiert. Momentan stehen
+   folgende Klassen zur Verfuegung:
+
+   CL_AMMUNITION
+        Das Objekt eignet sich als Munition.
+   CL_ANIMAL
+        Das Objekt ist ein Tier.
+   CL_ARACHNID
+        Das Objekt in ein Spinnenwesen.
+   CL_BIGBANG
+        Dieses Objekt kann mehreren Lebewesen auf einmal Schaden zufuegen.
+   CL_BIRD
+        Ein Vogel.
+   CL_CRAWLING
+        Dieses Wesen bewegt sich kriechend.
+   CL_CURSE
+        Das Objekt ist ein Fluch (zB. ein Sprachfluch).
+   CL_DEMON
+        Bei dem Objekt handelt es sich um einen Daemon.
+   CL_DISEASE
+        Eine Krankheit.
+   CL_DRAGON
+        Ein Drache.
+   CL_DWARF
+        Fuer unsere kleinen Gaeste...
+   CL_ELF
+        Elfen aller Art.
+   CL_ELEMENTAL
+        Ein Elementar irgendeiner Art. Material setzen waere angebracht.
+   CL_EXPLOSIVE
+        Bei dem Objekt handelt es sich um einen Sprengstoff.
+   CL_FELINE
+        Felinen und andere katzenartigen Lebewesen.
+   CL_FISH
+        Fische - keine Meeressaeuger!
+   CL_FLYING
+        Dieses Wesen bewegt sich fliegend.
+   CL_FROG
+        Froesche - auch gefroschte Spieler.
+   CL_GHOST
+        Geister und geisterhafte Wesen.
+   CL_GHOUL
+        Ein Ghoul. Er faellt automatisch in die Klasse CL_UNDEAD.
+   CL_GIANT
+        Ein riesiges Lebewesen.
+   CL_GNOME
+        Ein Gnom.
+   CL_GOBLIN
+        Ein Goblin.
+   CL_HOBBIT
+        Ein Hobbit.
+   CL_HOBGOBLIN
+        Ein Hobgoblin. Er faellt automatisch auch in die Klasse CL_GOBLIN.
+   CL_HUMAN
+        Ein Mensch.
+   CL_INORGANIC
+        Anorganische Lebewesen wie Metallmonster
+   CL_INSECT
+        Insekten (Nicht mit Spinnen verwechseln)
+   CL_LIVING
+        Lebewesen im allgemeinen.
+   CL_MAMMAL
+        Saeugetiere.
+   CL_MAMMAL_LAND
+        Landsaeugetiere
+   CL_MAMMAL_WATER
+        Meeressaeuger.
+   CL_ORC
+        Ein Ork.
+   CL_PLANT
+        Pflanzen und pflanzenartige Monster.
+   CL_POISON
+        Das Objekt ist selbst ein Gift
+   CL_POISONOUS
+        Das Objekt kann einen Spieler/NPC vergiften.
+   CL_REPTILE
+        Reptilien.
+   CL_SHADOW
+        Schattenwesen.
+   CL_SKELETON
+        Ein Skelett. Es faellt automatisch in die Klasse CL_UNDEAD.
+   CL_SLIME
+        Fuer Einzeller und aehnliches Schleimgetier
+   CL_SNAKE
+        Schlangen.
+   CL_SWIMMING
+        Dieses Wesen bewegt sich schwimmend.
+   CL_TROLL
+        Ein Troll.
+   CL_UNDEAD
+        Ein untotes Lebewesen.
+   CL_WALKING
+        Dieses Wesen bewegt sich gehend.
+   CL_VAMPIRE
+        Ein Vampir. Er faellt automatisch in die Klasse CL_UNDEAD.
+   CL_ZOMBIE
+        Ein Zombie. Er faellt automatisch in die Klasse CL_UNDEAD.
+
+   Implizite Klassen:
+   Bei einigen Klassen wird im AddClass() automatisch eine oder mehrere
+   weiterer Klassen hinzugefuegt und im RemoveClass() die entsprechenden
+   impliziten Klassen auch automatisch entfernt.
+   Wuenscht man diese impliziten Klassen nicht, muss man nach dem AddClass()
+   diese mittels eines entsprechenden RemoveClass() entfernen.
+   Die impliziten Klassen einer Klasse lassen sich mit Hilfe der Funktion
+   QueryImplicitClasses() in CLASSDB herausfinden:
+     CLASSDB->QueryImplicitClasses(...)
+   Momentan sind dies:
+   CL_ZOMBIE:       CL_UNDEAD
+   CL_SKELETON:     CL_UNDEAD
+   CL_GHOUL:        CL_UNDEAD
+   CL_VAMPIRE:      CL_UNDEAD
+   CL_HOBGOBLIN:    CL_GOBLIN
+   CL_MAMMAL_LAND:  CL_MAMMAL, CL_ANIMAL
+   CL_MAMMAL_WATER: CL_MAMMAL, CL_ANIMAL
+   CL_SNAKE:        CL_REPTILE
+   CL_ARACHNID:     CL_ANIMAL
+   CL_BIRD:         CL_ANIMAL
+   CL_FISH:         CL_ANIMAL
+   CL_FROG:         CL_ANIMAL
+   CL_INSECT:       CL_ANIMAL
+   CL_MAMMAL:       CL_ANIMAL
+   CL_REPTILE:      CL_ANIMAL
+   CL_SNAKE:        CL_ANIMAL
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt in eine der angegebenen Klassen faellt, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   AddClass(), RemoveClass(), /std/thing/description.c
+   P_CLASS
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/lfun b/doc/sphinx/man/lfun/lfun
new file mode 100644
index 0000000..6e35081
--- /dev/null
+++ b/doc/sphinx/man/lfun/lfun
@@ -0,0 +1,25 @@
+
+lfun()
+******
+
+
+NAME
+====
+
+   lfun()
+
+
+DESCRIPTION
+===========
+
+   This directory contains descriptions for the lfuns used by
+   Amylaar's version of the LPC parser.
+
+   These are functions that are applied by the parser to the LPC
+   objects on various occasions.
+
+
+SEE ALSO
+========
+
+   efun(E), master(M), concepts(C), lpc(LPC), driver(D)
diff --git a/doc/sphinx/man/lfun/locate_objects b/doc/sphinx/man/lfun/locate_objects
new file mode 100644
index 0000000..5854980
--- /dev/null
+++ b/doc/sphinx/man/lfun/locate_objects
@@ -0,0 +1,79 @@
+
+locate_objects()
+****************
+
+
+FUNKTION
+========
+
+   object *locate_objects(string desc, int info);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   desc
+        Die Umschreibung des gesuchten Objektes.
+
+   info
+        Ist ungleich 0, wenn diese Funktion von /std/living/put_and_get.c
+        aus aufgerufen wurde.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion erweitert die Funktionalitaet von present_objects()
+   insofern, als dass es moeglich ist, auch noch Behaelter innerhalb des
+   Behaelters zu durchsuchen. Das genaue Verhalten haengt von desc ab:
+
+   Ist desc von der Form "<id>", so wird das Ergebnis von
+   present_objects(desc) zurueckgegeben.
+
+   Ist desc von der Form "<gesucht> in <id>", so wird in allen Objekten,
+   die von present_objects("<id>") erfasst wurden,
+   locate_objects("<desc>") aufgerufen. Zurueckgegeben werden alle auf
+   diese Weise gefundenen Objekte.
+
+
+RUeCKGABEWERT
+=============
+
+   Array von Objekten, die auf die oben geschilderte Art und Weise
+   ermittelt wurden. Konnte kein Objekt ermittelt werden, wird ein leeres
+   Array zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Theoretisch sollte es moeglich sein, ueber desc rekursiv mehrere
+   Behaelterebenen erfassen zu koennen (etwa mit "schwert in beutel in
+   beutel in wargon"). In der aktuellen Implementierung klappt das jedoch
+   nicht; nach dem ersten "in" ist Schluss!
+
+
+BEISPIELE
+=========
+
+   Was steckt alles dem Beutel, den der Spieler bei sich traegt?
+
+   object *obs;
+   obs = this_player()->locate_objects("alles in beutel");
+
+   Traegt der Spieler keinen Beutel bei sich oder ist dieser leer, so wird
+   ein leeres Array zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   present_objects(), /std/container/restrictions.c
+
+Last modified: Wed May 8 10:20:36 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/logon b/doc/sphinx/man/lfun/logon
new file mode 100644
index 0000000..4fb7117
--- /dev/null
+++ b/doc/sphinx/man/lfun/logon
@@ -0,0 +1,26 @@
+
+logon()
+*******
+
+
+SYNOPSIS
+========
+
+   int logon(void)
+
+
+DESCRIPTION
+===========
+
+   When the parser accepts a new connection, it first calls
+   connect() in the master object and then applies logon() to
+   the object that is returned by the master. That will usually be
+   a special login object, that is expected to clone and get going
+   a user shell or player object.
+   Should return 0 on failure, everything else means success.
+
+
+SEE ALSO
+========
+
+   connect(M)
diff --git a/doc/sphinx/man/lfun/long b/doc/sphinx/man/lfun/long
new file mode 100644
index 0000000..a186cf9
--- /dev/null
+++ b/doc/sphinx/man/lfun/long
@@ -0,0 +1,55 @@
+
+long()
+******
+
+
+FUNKTION
+========
+
+   varargs string long(int mode);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   int mode           - Modifikatoren fuer die Anzeige, falls this_object()
+                        ein Container ist
+                        (siehe "man make_invlist")
+
+
+BESCHREIBUNG
+============
+
+   Der Inhalt der Property P_LONG wird ausgewertet und zurueckgegeben.
+   Falls das Objekt ein Container und transparent (offen) ist, wird
+   zudem make_invlist() auf den Inhalt zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Langbeschreibung des Objektes.
+
+
+BEMERKUNGEN
+===========
+
+   Durch Ueberladen von long() lassen sich noch weitere Eigenschaften des
+   Objektes anzeigen. Behaelter koennen zum Beispiel noch ihren Inhalt
+   anzeigen, Lebewesen ihren Gesundheitszustand, o.ae.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        short()
+   Properties:        P_LONG, P_INVIS, P_TRANSPARENT
+   Sonstiges:         make_invlist()
+
+11. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/make_immortal b/doc/sphinx/man/lfun/make_immortal
new file mode 100644
index 0000000..9d0f402
--- /dev/null
+++ b/doc/sphinx/man/lfun/make_immortal
@@ -0,0 +1,44 @@
+
+make_immortal()
+***************
+
+
+FUNKTION
+========
+
+   void make_immortal();
+
+
+DEFINIERT IN
+============
+
+   /std/npc/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Macht den NPC fuer 5 Minuten unangreifbar und heilt ihn.
+
+   Wird bei Fehlern im Herzschlag des NPCs gerufen um Bugnutzung
+   zu unterbinden.
+
+   Ausschrift:
+   "... versteckt sich hinter einem Fehler im Raum-Zeit-Gefuege und
+    entgeht so voruebergehend allen Angriffen."
+
+
+BEMERKUNGEN
+===========
+
+   Nicht missbrauchen.
+
+
+SIEHE AUCH
+==========
+
+   Methoden:       heart_beat(), static _check_immortality()
+   Master:         heart_beat_error()
+   Properties:     "time_to_mortality"
+
+1.Juni 2007 Gloinson
diff --git a/doc/sphinx/man/lfun/make_invlist b/doc/sphinx/man/lfun/make_invlist
new file mode 100644
index 0000000..379b47c
--- /dev/null
+++ b/doc/sphinx/man/lfun/make_invlist
@@ -0,0 +1,59 @@
+
+make_invlist()
+**************
+
+
+FUNKTION
+========
+
+   varargs mixed make_invlist(object viewer, mixed inv, int flags)
+
+
+DEFINIERT IN
+============
+
+   /std/container/description.c
+
+
+ARGUMENTE
+=========
+
+   object viewer      - das Objekt, welches sich den Inhalt ansieht (in
+                        der Regel this_player())
+   mixed inv          - ein Array von Objekten, die in die Liste
+                        aufgenommen werden sollen
+   int flags          - Folgende Werte koennen verODERt werden:
+                        1: das Inv nicht als String, sondern als ein
+                           Array zurueckgeben
+                        2: gleiche Objekte nicht zusammengefassen
+                        4: unterdrueckt die Ausgabe des Dateinamens hinter
+                           jedem trotz eingeschaltetem Magiermodus
+
+
+BESCHREIBUNG
+============
+
+   Die Kurzbeschreibungen der Objekte in inv werden zu einer Liste
+   zusammengefasst (eine Zeile pro Objekt). Unsichtbare Objekte tauchen in
+   dieser Liste nicht auf.
+
+   Ist viewer ein Magier mit eingeschaltetem Magiermodus, so wird hinter
+   die Kurzbeschreibungen noch der Dateiname des jeweiligen Objektes in
+   eckigen Klammern angegeben. Unsichtbare Objekte erscheinen in diesem
+   Fall als Filenamen.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String oder ein Array, die das inv beschreiben.
+
+
+SIEHE AUCH
+==========
+
+   Kommandokette:     short()
+   Properties:        P_SHORT, P_INVIS, P_WANTS_TO_LEARN
+   Sonstiges:         P_REFERENCE_OBJECT
+
+Last modified: Tue Oct 15 10:10:00 2002 by Rikus
diff --git a/doc/sphinx/man/lfun/master/AddWizardForUID b/doc/sphinx/man/lfun/master/AddWizardForUID
new file mode 100644
index 0000000..249e27c
--- /dev/null
+++ b/doc/sphinx/man/lfun/master/AddWizardForUID
@@ -0,0 +1,74 @@
+
+AddWizardForUID()
+*****************
+
+
+FUNKTION
+========
+
+   string* AddWizardForUID(string uid, string wizard);
+
+
+DEFINIERT IN
+============
+
+   /secure/master/userinfo.c
+
+
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man einen (weiteren) verantwortlichen Magier
+     explizit eintragen moechte.
+   wizard
+     Der Magier, den man eintragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion traegt einen Magier 'wizard' explizit als verantwortlichen
+   Magier fuer die UID 'uid' ein. Hierbei kann 'uid' sogar der Name eines
+               anderen Magiers sein, dessen UIDs 'wizard' sozusagen "adoptiert".
+
+               Berechtigt zum Eintragen von Magiern fuer bestimmte UIDs sind alle Magier,
+   die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
+   Z.B. kann Zesstra ohne weiteres jemand weiteren als verantwortlich fuer
+   d.inseln.zesstra eintragen.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
+   fuer die dier Magier jetzt explizit eingetragen ist.
+
+
+BEMERKUNGEN
+===========
+
+   Es ist nicht noetig, z.B. Zesstra als verantwortlich fuer d.inseln.zesstra
+   einzutragen, da sie ohnehin schon implizit dafuer zustaendig ist. Auch
+   fuer RMs bzw. GMs muss ihre Region bzw. Gilde nicht explizit eingetragen
+   werden.
+
+
+BEISPIELE
+=========
+
+   master()->AddWizardForUID("p.waterluh","zook");
+
+
+
+               string *uids = master()->AddWizardForUID("jof","zook");
+   printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(), QueryUIDsForWizard,
+               RemoveWizardFromUID()
+
+20.02.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/master/QueryUIDAlias b/doc/sphinx/man/lfun/master/QueryUIDAlias
new file mode 100644
index 0000000..8f58509
--- /dev/null
+++ b/doc/sphinx/man/lfun/master/QueryUIDAlias
@@ -0,0 +1,65 @@
+
+QueryUIDAlias()
+***************
+
+
+FUNKTION
+========
+
+   varargs string* QueryUIDsForWizard(string uidalias, int recursive);
+
+
+DEFINIERT IN
+============
+
+   /secure/master/userinfo.c
+
+
+ARGUMENTE
+=========
+
+   uidalias
+     UID, die expandiert werden soll.
+   recursive (optional)
+     Gibt an, ob QueryUIDAlias() (indirekt) rekursiv aufgerufen wurde.
+     Sollte normalerweise nicht per Hand gesetzt werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt aus einer "Alias-UID" die UID, fuer die sie steht.
+   Hierbei werden folgende UID-Aliase beruecksichtigt:
+   "region":    d.region.* + region + d.region
+   "gilde":     GUILD.gilde, GUILD.gildenspellbook, p.gilde
+   "p":         p.* (ohne p.service)
+   "p.service": p.service.*
+   "magierid":  QueryUIDsForWizard()
+
+   Das Ergebnis dieser Funktion wird laengere Zeit gecachet (bis zu 24h).
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
+   Sollte uidaliase keines der o.g. sein, wird ein ({uidalias}) geliefert.
+
+
+BEISPIELE
+=========
+
+   string *uids = master()->QueryUIDAlias("schattenwelt");
+   // uids enthaelt nun:
+   // ({"d.anfaenger","anfaenger","d.anfaenger.ark","d.anfaenger.ennox",
+   //   "d.anfaenger.humni","d.anfaenger.kiria","d.anfaenger.konzepte",
+   //   "d.anfaenger.miril"})
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(),
+               AddWizardForUID(), RemoveWizardFromUID()
+
+16.12.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/master/QueryUIDsForWizard b/doc/sphinx/man/lfun/master/QueryUIDsForWizard
new file mode 100644
index 0000000..e0d5816
--- /dev/null
+++ b/doc/sphinx/man/lfun/master/QueryUIDsForWizard
@@ -0,0 +1,64 @@
+
+QueryUIDsForWizard()
+********************
+
+
+FUNKTION
+========
+
+   varargs string* QueryUIDsForWizard(string wizname, int recursive);
+
+
+DEFINIERT IN
+============
+
+   /secure/master/userinfo.c
+
+
+ARGUMENTE
+=========
+
+   wizname
+     Der Magier, fuer den man die UIDs ermitteln will, fuer die er
+     zustaendig ist.
+   recursive (optional)
+     Gibt an, ob QueryUIDsForWizard() (indirekt) rekursiv aufgerufen wurde.
+     Sollte normalerweise nicht per Hand gesetzt werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt die UIDs, fuer die dieser Magier zustaendig ist.
+   Dabei wird impliziert beruecksichtigt, wenn der Magier RM einer Region
+   oder Gildenmagier einer Gilde ist, ebenso wie Verzeichnisse in den
+   Regionen oder in /p/service.
+   Ausserdem wird nachgeschaut, fuer welche UIDs dieser Magier explizit
+   eingetragen worden ist.
+   Wenn z.B. Magier A auch fuer alle UIDs von Magier B zustaendig sein
+   sollte, liefert die Funktion auch die UIDs von B zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
+   Sollte fuer einen Namen keine UID ermittelbar sein, ist das Arrays leer.
+
+
+BEISPIELE
+=========
+
+   string *uids = master()->QueryUIDsForWizard("ennox");
+   // uids enthaelt nun:
+   // ({"ennox","d.anfaenger.ennox","d.schattenwelt.ennox",
+   //   "p.service.ennox","GUILD.chaos","p.chaos"})
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(),
+               AddWizardForUID(), RemoveWizardFromUID()
+
+16.12.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/master/QueryWizardsForUID b/doc/sphinx/man/lfun/master/QueryWizardsForUID
new file mode 100644
index 0000000..6ddbdc3
--- /dev/null
+++ b/doc/sphinx/man/lfun/master/QueryWizardsForUID
@@ -0,0 +1,71 @@
+
+QueryWizardsForUID()
+********************
+
+
+FUNKTION
+========
+
+   varargs string* QueryWizardsForUID(string uid, int recursive);
+
+
+DEFINIERT IN
+============
+
+   /secure/master/userinfo.c
+
+
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man die Magier ermitteln will, die fuer sie
+     zustaendig sind.
+   recursive (optional)
+     gibt an, ob das QueryWizardsForUID() (indirekt) aus einem
+     QueryWizardsForUID() heraus gerufen wurde. Sollte nicht manuell gesetzt
+     werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt die Magier, die fuer diese UID zustaendig sind.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist ein Magier.
+   Sollte fuer eine UID kein Magier ermittelbar sein, ist das Array leer.
+   Wenn z.B. fuer die UID der Magier "Atamur" gefunden wird, aber fuer alle
+   UIDs von "Atamur" auch der Magier "Rumata" zustaendig sein sollte, wird
+   "Rumata" ueber eine rekursive Suche gefunden.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn die UID den Magier nicht implizit enthaelt (z.B. GUILD.gilde, im
+   Gegensatz zu d.region.magier), findet diese Funktion nur Magier, fuer die
+   seit Laden des Master bereits einmal get_userinfo() oder
+   QueryUIDsForWizard() im Master gerufen wurde, was z.B. Einloggen passiert.
+   Magier, die lang nicht einloggten, werden also manchmal nicht gefunden,
+   was in der Regel nicht schlimm sein sollte, da sie ja ohnehin den
+   entsprechenden Code gerade nicht warten...
+
+
+BEISPIELE
+=========
+
+   string *wiz = master()->QueryWizards("GUILD.klerus");
+   // wiz enthaelt nun: ({"morgoth","magdalena"})
+
+
+SIEHE AUCH
+==========
+
+   QueryUIDsForWizard(),
+               AddWizardForUID(), RemoveWizardFromUID()
+
+16.12.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/master/RemoveWizardFromUID b/doc/sphinx/man/lfun/master/RemoveWizardFromUID
new file mode 100644
index 0000000..1fdeba5
--- /dev/null
+++ b/doc/sphinx/man/lfun/master/RemoveWizardFromUID
@@ -0,0 +1,62 @@
+
+RemoveWizardFromUID()
+*********************
+
+
+FUNKTION
+========
+
+   string* RemoveWizardFromUID(string uid, string wizard);
+
+
+DEFINIERT IN
+============
+
+   /secure/master/userinfo.c
+
+
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man einen zustaendigen Magier austragen will.
+   wizard
+     Der Magier, den man austragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion loescht die UID 'uid' aus der Liste der UIDs, fuer die
+   'wizard' explizit zustaendig ist.
+
+   Berechtigt zum Austragen von Magiern fuer bestimmte UIDs sind alle Magier,
+   die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
+   Man kann sich auch selber austragen. ;-)
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
+   fuer die dier Magier jetzt explizit eingetragen ist.
+
+
+BEISPIELE
+=========
+
+   master()->RemoveWizardFromUID("p.waterluh","zook");
+
+
+
+   string *uids = master()->RemoveWizardFromUID("jof","zook");
+   printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(), QueryUIDsForWizard()
+               AddWizardForUID()
+
+20.02.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/match_ids b/doc/sphinx/man/lfun/match_ids
new file mode 100644
index 0000000..48f368f
--- /dev/null
+++ b/doc/sphinx/man/lfun/match_ids
@@ -0,0 +1,69 @@
+
+match_ids()
+***********
+
+
+FUNKTION
+========
+
+   int match_ids(string *list);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   *list      String-Array mit zu testenden IDs
+
+
+BESCHREIBUNG
+============
+
+   Die Liste der uebergebenen IDs wird mit den IDs des Objektes
+   UND-Verknuepft. Die Groesse des resultierenden Arrays wird
+   zurueckgegeben.
+   Diese Funktion erlaubt also das gleichzeitige Pruefen auf
+   mehrere IDs. Allerdings werden - im Gegensatz zu id() -
+   Adjektive und Ausdruecke der Art "<ID> <nummer>" nicht
+   beruecksichtigt.
+   Ebenso werden Spezialitaeten wie Unitobjekte und Objekte mit
+   ueberschriebenem id() nicht beruecksichtigt! Im Zweifelsfall ist daher
+   doch die Nutzung von id() zu empfehlen.
+
+
+RUeCKGABEWERT
+=============
+
+   Anzahl der zutreffenden IDs.
+
+
+BEISPIELE
+=========
+
+   Angenommen, ein Objekt habe folgende Bezeichner:
+
+   AddId( ({"murmel","kugel","glasmurmel","glaskugel"}) );
+   AddAdjective( "rund" );
+
+   Dann liefern die angegebenen match_ids()-Aufrufe folgende Ergebnisse:
+
+   match_ids( ({"murmel","stein"}) );         => 1
+   match_ids( ({"murmel","kugel"}) );         => 2
+   match_ids( ({"runde murmel"}) );           => 0
+   match_ids( ({"murmel 2"}) );               => 0, auch wenn dies die
+                                             zweite Murmel in der
+                                             gleichen Umgebung ist
+
+
+SIEHE AUCH
+==========
+
+   AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
+   id(), /std/thing/description.c, /std/unit.c
+
+Last modified: Sat Mar 15 21:40:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/lfun/move b/doc/sphinx/man/lfun/move
new file mode 100644
index 0000000..bd9d924
--- /dev/null
+++ b/doc/sphinx/man/lfun/move
@@ -0,0 +1,242 @@
+
+move()
+******
+
+move()
+
+FUNKTION:
+   Fuer unbelebte Gegenstaende (/std/thing):
+      varargs int move(object|string dest, int method);
+
+   Fuer Lebewesen (/std/living, /std/npc, usw.):
+      varargs int move(object|string dest, int method, string dir,
+         string textout, string textin);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/moving.c
+   /std/living/moving.c
+
+
+ARGUMENTE
+=========
+
+   dest
+        Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
+
+   method
+        Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
+        koennen auch mehrere zusammenge-ODER-t werden).
+
+   dir
+        Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
+        eingeschlagene Laufrichtung (zB. "nach Norden").
+
+   textout
+        Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
+        Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
+        noch an textout angehaengt. Der Name des Lebewesens wird der
+        Meldung in jedem Fall vorangestellt.
+
+   textin
+        Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
+        betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
+        wird noch der Name des Spielers vorangestellt.
+
+
+BESCHREIBUNG
+============
+
+   Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
+   Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
+   Bewegungsmethode method zu waehlen.
+
+   In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
+   definiert:
+   M_NOCHECK
+        Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
+        in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
+        Fall sein koennte).
+
+   M_GO
+        Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
+        Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
+        benutzen, wenn man Spieler ueber einen SpecialExit in einen
+        benachbarten Raum bewegt.
+
+   M_TPORT
+        Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
+        Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
+        mittels M_TPORT verlaesst oder betritt.
+
+   M_NO_SHOW
+        Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
+        Zielraumes nicht ausgegeben.
+
+   M_NO_ATTACK
+        Beim Bewegen von Lebewesen bekommen diese keinen
+        Begruessungsschlag, wenn ein Feind im Zielraum steht.
+
+   M_SILENT
+        Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
+        Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
+
+   M_GET
+        Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
+        Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
+        bewegt.
+
+   M_PUT
+        Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
+        bewegt.
+
+   M_GIVE
+        Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
+        weitergereicht.
+
+   M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
+        Es wird die gesamte Menge bewegt, nicht nur ein Teil.
+
+   Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
+   reicht es, als method M_NOCHECK zu uebergeben.
+
+   Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
+   beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
+   M_SILENT enthalten, so geschieht dies ohne Meldungen.
+
+   Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
+   Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
+   laesst sich nur bei Lebewesen anwenden.
+
+
+ANMERKUNG
+=========
+
+   Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
+   greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
+   aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
+   anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
+   ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
+   genau macht. ;-)
+
+
+
+   Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
+   von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
+   landet.
+
+   Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
+   auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
+   innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
+   allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
+
+   Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
+   oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
+   erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
+
+
+RUeCKGABEWERT
+=============
+
+   Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
+   definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
+   Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
+   Zukunft wird == MOVE_OK empfohlen.)
+
+
+
+   MOVE_OK
+        Die Bewegung wurde erfolgreich abgeschlossen.
+
+   ME_PLAYER
+        Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
+        mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
+        angegeben werden.
+
+   ME_TOO_HEAVY
+        Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
+        aufnehmen.
+
+   ME_CANT_TPORT_IN
+        Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
+        M_TPORT ohne M_NOCHECK).
+
+   ME_CANT_TPORT_OUT
+        Der Raum, in dem sich das Lebewesen befindet, verbietet das
+        Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
+
+   ME_CANT_BE_DROPPED
+        Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
+        gesetzt ist).
+
+   ME_CANT_BE_TAKEN
+        Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
+        ist).
+
+   ME_CANT_BE_INSERTED
+        Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
+
+   ME_CANT_LEAVE_ENV
+        Der Container verhindert ein verlassen des Objektes
+
+   ME_TOO_HEAVY_FOR_ENV
+        Ein Objekt kann einen Behaelter nicht verlassen, da es dem
+        Lebewesen sonst zu schwer wuerde.
+
+   TOO_MANY_OBJECTS
+        Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
+
+   ME_NOT_ALLOWED
+        Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
+        Testspielern und Magiern betreten werden. Bei Spielern oder
+        Gildentesties gibt es diese Fehlermeldung.
+   ME_WAS_DESTRUCTED
+        Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
+        zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
+        beendet werden konnte. (Bsp: sensitive Objekte)
+
+   ME_DONT_WANT_TO_BE_MOVED
+        Das Objekt moechte nicht bewegt werden.
+
+
+BEISPIELE
+=========
+
+   o Ein Objekt "gibt sich" dem Spieler:
+
+     move(this_player(), M_GET);
+
+   o Ein Lebewesen wird in die Abenteurergilde teleportiert:
+
+     lv->move("/gilden/abenteurer", M_TPORT);
+
+   o Ein Spieler "wird in die Gilde gegangen":
+
+     this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
+
+     Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
+     Meldung:
+     "<name> geht in die Gilde."
+
+   o Ein Spieler schwimmt durchs Meer:
+
+     this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
+                         "schwimmt herein");
+
+     Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
+     Spieler in seinem Zielraum sehen "<name> schwimmt herein."
+
+
+SIEHE AUCH
+==========
+
+   move_object(), remove(), setmin, setmmin, setmout, setmmout, review,
+   PreventInsert(), PreventLeave(), PreventInsertLiving(),
+   PreventLeaveLiving(), PreventMove(), NotifyInsert(), NotifyLeave(),
+   NotifyMove(), NotifyRemove(), init(), exit(),
+   P_NO_PLAYERS, P_PARA, /std/thing/moving.c, /std/living/moving.c
+   -----------------------------------------------------------------------
+
+2015-Jan-19, Arathorn
diff --git a/doc/sphinx/man/lfun/moved_objects b/doc/sphinx/man/lfun/moved_objects
new file mode 100644
index 0000000..8a5b536
--- /dev/null
+++ b/doc/sphinx/man/lfun/moved_objects
@@ -0,0 +1,52 @@
+
+moved_objects()
+***************
+
+
+FUNKTION
+========
+
+   public object *moved_objects(void);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion lassen sich die Objekte ermitteln, die das Lebewesen
+   beim letzten Aufruf von drop_objects(L) oder einer aehnlichen Funktion
+   bewegt hat.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den zuletzt bewegten Objekten, oder ein leeres Array, falls
+   keine Objekte auf die Beschreibung des letzten drop_objects() /
+   pick_objects() / put_objects() / give_objects() passten.
+
+
+BEISPIELE
+=========
+
+   siehe drop_objects() und give_objects()
+
+
+SIEHE AUCH
+==========
+
+   drop_objects(L), give_objects(L), pick_objects(L), put_objects(L),
+   show_objects(L), NotifyMove(L)
+
+Last modified: Thu Aug 28 22:19:26 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/moved_where b/doc/sphinx/man/lfun/moved_where
new file mode 100644
index 0000000..640acae
--- /dev/null
+++ b/doc/sphinx/man/lfun/moved_where
@@ -0,0 +1,50 @@
+
+moved_where()
+*************
+
+
+FUNKTION
+========
+
+   public object moved_where(void);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion laesst sich ermitteln, wohin das Lebewesen zuletzt
+   mittels put_objects(L) oder give_objects(L) etwas bewegt oder wem es mit
+   show_objects(L) etwas gezeigt hat.
+
+
+RUECKGABEWERT
+=============
+
+   Der Container oder das Lebewesen, wohin die Gegenstaende bewegt wurden.
+
+
+BEISPIEL
+========
+
+   siehe give_objects()
+
+
+SIEHE AUCH
+==========
+
+   put_objects(L), give_objects(L), show_objects(L), NotifyInsert(L),
+   P_LAST_CONTENT_CHANGE
+
+Last modified: Thu Aug 28 22:16:15 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/muster b/doc/sphinx/man/lfun/muster
new file mode 100644
index 0000000..aa7279c
--- /dev/null
+++ b/doc/sphinx/man/lfun/muster
@@ -0,0 +1,33 @@
+
+muster()
+********
+
+
+FUNKTION
+========
+
+   type muster(...)
+
+
+ARGUMENTE
+=========
+
+
+BESCHREIBUNG
+============
+
+
+RUECKGABEWERT
+=============
+
+
+BEMERKUNG
+=========
+
+
+BEISPIEL
+========
+
+
+SIEHE AUCH
+==========
diff --git a/doc/sphinx/man/lfun/name b/doc/sphinx/man/lfun/name
new file mode 100644
index 0000000..3509366
--- /dev/null
+++ b/doc/sphinx/man/lfun/name
@@ -0,0 +1,81 @@
+
+name()
+******
+
+name()|Name()
+
+
+FUNKTION
+========
+
+   varargs string name(int casus, int demon);
+   varargs string Name(int casus, int demon);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   casus
+        Der Fall, in dem der Name dekliniert werden soll.
+   demon
+        Gibt an, ob der Name mit bestimmtem oder unbestimmtem Artikel
+        versehen werden soll:
+           + demon = 0: Unbestimmter Artikel.
+           + demon = 1: Bestimmter Artikel.
+           + demon = 2: Finde selbst heraus, ob ein bestimmter oder ein
+             unbestimmter Artikel verwendet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt den Namen des Objektes im gewuenschten Fall
+   und mit dem angegebenen Artikel. Moegliche Werte fuer casus sind in
+   <thing/language.h> definiert. Weiterhin werden auch (falls angegeben)
+   die Namensadjektive dekliniert und in den Namen eingebaut.
+
+   Name() ist ein Alias fuer capitalize(name()), der Artikel wird also
+   gross geschrieben.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit dem Namen des Objektes.
+
+
+BEMERKUNGEN
+===========
+
+   Falls P_ARTICLE gesetzt ist, werden weder Artikel noch Namensadjektive
+   in den Namen eingebaut.
+
+   Wenn man als casus RAW angibt, wird der Name im Nominativ ohne Artikel
+   und Namensadjektive zurueckgegeben.
+
+
+BEISPIELE
+=========
+
+   Wenn das Objekt ein Ball mit P_NAME="Ball" und P_NAME_ADJ="klein" ist,
+   so liefern die folgenden Aufrufe die angegebenen Ergebnisse:
+
+   name(WER,0);    => "ein kleiner Ball"
+   name(WESSEN,1); => "des kleinen Balls"
+   name(RAW);      => "Ball"
+   name(WEM,2);    => "einem kleinen Ball" oder "dem kleinen Ball",
+                      abhaengig davon, wieviele Baelle gerade da sind.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, Name()
+
+Letzte Aenderung: 29.07.2016, Bugfix
diff --git a/doc/sphinx/man/lfun/notify_player_change b/doc/sphinx/man/lfun/notify_player_change
new file mode 100644
index 0000000..34c4024
--- /dev/null
+++ b/doc/sphinx/man/lfun/notify_player_change
@@ -0,0 +1,82 @@
+
+notify_player_change()
+**********************
+
+void notify_player_change(string/object who, int rein [, int invis])
+
+
+FUNKTION
+========
+
+   void /notify_player_change(object who, int rein)
+   void /std/player/base::notify_player_change(string who, int rein,
+                                               int invis)
+
+
+GERUFEN VON
+===========
+
+   /std/player/base.c (d.h. alle Spielershells/-Objekte)
+
+
+ARGUMENTE
+=========
+
+   string who
+     getuid() eines Spielers
+   object who
+     Spieler-Objekt
+   int rein
+     0 fuer das MUD verlassende, 1 fuer hereinkommende Spieler
+   int invis
+     1 fuer unsichtbare Spieler (Magier)
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von Lebewesen fuer hereinkommende und das Spiel
+   verlassende Spieler an verschiedenen Stellen aufgerufen:
+
+
+
+   * in anderen Spielern mit notify_player_change() mit drei Parametern
+     - dies dient fuer die "erwarte"-Funktionalitaet
+   * in der Gilde des Spielern mit zwei Parameter
+     - damit koennen Gilden notwendige Anpassungen vornehmen
+
+   Diese Funktionen werden auch gerufen, wenn Magier "invis -e" bzw.
+   "vis e" benutzen.
+
+
+BEISPIELE
+=========
+
+   // in einer Gilde:
+   void notify_player_change(object pl, int rein) {
+     if (rein && objectp(pl)) {
+       // Checks, ob Spielerskills in Ordnung sind
+       mapping bete = pl->QuerySkill("bete");
+
+
+
+       if (!mappingp(bete)) {
+         if (IS_LEARNER(pl) || pl->QueryProp(P_TESTPLAYER)) {
+           tell_object(pl, break_string(
+             "Du bist ein kaputter Test-Kleriker ...", 78,
+             "Arkshat teilt dir mit: "));
+           // notduerftige Reparaturen
+         } else
+           raise_error("Klerus: Kaputter oder gesetzer Kleriker!\n");
+       }
+     }
+   }
+
+
+SIEHE AUCH
+==========
+
+   RegisterEvent mit (EVT_LIB_LOGIN, EVT_LIB_LOGOUT)
+   erwarte
+
+1. Sep 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/obsolete/AddHpHook b/doc/sphinx/man/lfun/obsolete/AddHpHook
new file mode 100644
index 0000000..5a2adce
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/AddHpHook
@@ -0,0 +1,52 @@
+
+AddHpHook()
+***********
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** AddHpHook()
+
+
+FUNKTION
+========
+
+   int AddHpHook(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, das sich eintragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Traegt ein Objekt in P_HP_HOOKS ein, wenn es nicht schon darin steht.
+
+   Aendern sich beim Spieler dann HP oder KP (nicht durch Set()), wird
+   an allen eingetragenen Objekten NotifyHpChange() gerufen.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn Erfolg, 0 sonst
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart: RemoveHpHook()
+   Props:     P_HP_HOOKS, P_HP
+   Verwandt:  reduce_hit_points(), do_damage(), buffer_hp()
+
+23.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/obsolete/AddInsertHook b/doc/sphinx/man/lfun/obsolete/AddInsertHook
new file mode 100644
index 0000000..9a372ba
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/AddInsertHook
@@ -0,0 +1,85 @@
+
+AddInsertHook()
+***************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** AddInsertHook()
+
+
+FUNKTION
+========
+
+   void AddInsertHook(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/player/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob - Das Objekt, das informiert werden soll, wenn ein Objekt dem
+        Spielerinventar hinzugefuegt wurde.
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion wird im Spielerobjekt aufgerufen, um das Objekt ob als
+   Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
+   werden informiert, wenn ein Objekt ins Spielerinventar bewegt wurde.
+   Technisch wird die Bewegung ueber NotifyInsert() im Spielerobjekt
+   detektiert, und im Listener-Objekt wird die Funktion InsertNotify()
+   gerufen, die als Parameter das neu ins Spielerinventar bewegte Objekt
+   uebergeben bekommt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Das Listener-Objekt muss sich ebenfalls im Spielerinventar befinden,
+   ansonsten wird der eingetragene Hook wieder geloescht.
+
+
+BEISPIEL
+========
+
+   a) Objekt "ob" wird im Spieler als Listener angemeldet:
+      this_player()->AddInsertHook(ob);
+
+   b) Objekt "new" wird ins Spielerinventar bewegt, das Spielerobjekt
+      informiert "ob" darueber:
+      ob->InsertNotify(new);
+
+   c) Das Listener-Objekt "ob" reagiert darauf, z.B. indem es die Fackel
+      loescht, sofern sie vorher brannte:
+      void InsertNotify(object new) {
+        if ( objectp(new) && new->id("\nfackel") &&
+             new->QueryProp(P_LIGHTED) )
+          new->unlight();
+        return;
+      }
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), RemoveInsertHook(), QueryInsertHooks()
+
+Last modified: 14.04.2010, Arathorn
diff --git a/doc/sphinx/man/lfun/obsolete/ModifySkillAttributeOld b/doc/sphinx/man/lfun/obsolete/ModifySkillAttributeOld
new file mode 100644
index 0000000..b0b81ab
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/ModifySkillAttributeOld
@@ -0,0 +1,118 @@
+
+ModifySkillAttributeOld()
+*************************
+
+
+FUNKTION
+========
+
+   varargs int ModifySkillAttributeOld(object caster, string atrname,
+                                       int value, int duration, mixed fun)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   <caster>    IGNORIERT
+               frueher Objekt, das die Modifikation vornimmt, heute ist
+               dieses Argument ohne Bedeutung und wird ignoriert.
+
+   <atrname>   STRING
+               Name des zu veraendernden Attributes
+               (Definiert in /sys/living/skill_attributes.h)
+
+   <value>     INT
+               Neuer Wert des Attributs (Standard: 100)
+
+   <duration>  INT
+               Dauer in Sekunden
+
+   <fun>       NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
+   Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
+
+   Aendert ein Skill-Attribut eines Living.
+
+
+
+   Fuer <value> ist folgendes zu beachten:
+   Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
+   Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
+   additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
+   uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur
+   ein Modifikator zur gleichen Zeit aktiv war.)
+   Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
+   tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
+   tragen, bei 50 einer von -50, welcher das Skillattribute folglich
+   reduziert.
+
+   Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
+   zulaessig.
+
+
+RUECKGABEWERT
+=============
+
+    0  wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
+       werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
+   >0  wenn alles okay war
+
+
+BEMERKUNGEN
+===========
+
+   Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
+   Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
+   ueberschreiben. Dies ist inzwischen ohne Bedeutung.
+
+
+BEISPIELE
+=========
+
+   Ein NPC:
+
+   void
+   create() {
+   .
+   .
+   .
+   AddSpell(1, 1,
+     "Der fuerchterliche NPC haut Dir auf den Kopf.\n",
+     "Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
+     DT_MAGIC, "schwaechen");
+   .
+   .
+   }
+
+   schwaechen(object enemy, int damage, mixed *dam_type) {
+     int ergebnis;
+     ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
+     if (ergebnis > 0)
+         tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
+   }
+
+
+
+   Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
+   50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
+
+
+SIEHE AUCH
+==========
+
+   P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
+   ModifySkillAttribute, QuerySkillAttribute(),
+   RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
+
+07.08.2008 Zesstra
diff --git a/doc/sphinx/man/lfun/obsolete/NotifyGiveQuest b/doc/sphinx/man/lfun/obsolete/NotifyGiveQuest
new file mode 100644
index 0000000..220942b
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/NotifyGiveQuest
@@ -0,0 +1,62 @@
+
+NotifyGiveQuest()
+*****************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Events (siehe "man
+events").                                        * ******************
+*****************************************************
+
+NotifyGiveQuest()
+
+
+FUNKTION
+========
+
+   void NotifyGiveQuest(object pl, string key);
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   pl     Der Spieler, der eine Quest geloest hat.
+   key    Name der geloesten Quest.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion wird in der Gilde des Spielers aufgerufen, wenn der
+   Spieler eine gueltige Quest besteht - und zwar unabhaengig davon,
+   ob er sie bereits geloest hat, oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion ist dafuer gedacht, von Gildenprogrammierern ueberschrieben
+   zu werden, wenn beispielsweise bestimmte Quests als Aufstiegsbedingung
+   verlangt werden, diese aber in der entsprechenden Gilde geloest sein
+   muessen (z.B. Obergladiator als Level-5-Zauberer).
+
+
+SIEHE AUCH
+==========
+
+   /std/gilden_ob.c
+   /std/player/quests.c
+
+Last modified: Fri Oct 4 10:17:00 1996 by Silvana
diff --git a/doc/sphinx/man/lfun/obsolete/NotifyHpChange b/doc/sphinx/man/lfun/obsolete/NotifyHpChange
new file mode 100644
index 0000000..3c96222
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/NotifyHpChange
@@ -0,0 +1,71 @@
+
+NotifyHpChange()
+****************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** NotifyHpChange()
+
+
+FUNKTION
+========
+
+   void NotifyHpChange();
+
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich die Lebenspunkte eines Spielers aendern, so werden davon
+   auch andere Objekte unterrichtet, sofern diese mittels der Funktion
+   AddHpHook() bei eben diesem Spieler angemeldet wurden.
+   Fortan wird dann die Funktion NotifyHpChange() in diesen
+   angemeldeten Objekten aufgerufen, wenn sich die Property P_HP des
+   Spielers aendert. Es werden hierbei keine Argumente an
+   NotifyHpChange() uebergeben, die aktuellen Lebenspunkte kann man ja
+   auch ohne weiteres ueber die Property P_HP in Erfahrung bringen und
+   aeltere Werte muss man sich gesondert merken. Zu beachten ist, dass
+   die Property P_HP bei Aufruf der Funktion NotifyHpChange() bereits
+   den neuen Wert enthaelt.
+   Bei dem Spieler angemeldete Objekte, die von Lebenspunkteaenderungen
+   informiert werden sollen, werden automatisch aus der Liste entfernt,
+   wenn sie zerstoert wurden. Diese Liste ist in der Property
+   P_HP_HOOKS zu finden. Per Hand kann man sie auch explizit mittels
+   der Funktion RemoveHpHook() entfernen.
+   Stirbt ein Spieler, so wird die Funktion NotifyPlayerDeath()
+   aufgerufen und nicht NotifyHpChange()!
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   ist in Arbeit
+
+
+SIEHE AUCH
+==========
+
+   P_HP, P_HP_HOOKS, AddHpHook(), RemoveHpHook(),
+   Defend(), do_damage(), NotifyPlayerDeath()
+
+Last modified: Thu Nov 19 13:54:33 1998 by Patryn
diff --git a/doc/sphinx/man/lfun/obsolete/QueryEnemy b/doc/sphinx/man/lfun/obsolete/QueryEnemy
new file mode 100644
index 0000000..2613f53
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/QueryEnemy
@@ -0,0 +1,51 @@
+
+QueryEnemy()
+************
+
+********************* OBSOLETE LFUN
+***********************************
+
+
+FUNKTION
+========
+
+   object QueryEnemy();
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   gefundener Gegner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert zufaellig einen der anwesenden Gegner
+   zurueck, sofern keine Gegner bevorzugt ausgewaehlt werden.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Lfun existiert nicht mehr. Bitte SelectEnemy() benutzen.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
+
+07.02.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/obsolete/QueryInsertHooks b/doc/sphinx/man/lfun/obsolete/QueryInsertHooks
new file mode 100644
index 0000000..317104c
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/QueryInsertHooks
@@ -0,0 +1,52 @@
+
+QueryInsertHooks()
+******************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** QueryInsertHooks()
+
+
+FUNKTION
+========
+
+   object *QueryInsertHooks();
+
+
+DEFINIERT IN
+============
+
+   /std/player/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion gibt die aktuell beim Spielerobjekt angemeldeten
+   Listener-Objekte zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Array aus Objektpointern oder leeres Array
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), AddInsertHook(), RemoveInsertHook()
+
+Last modified: 14.04.2010, Arathorn
diff --git a/doc/sphinx/man/lfun/obsolete/QueryOptQP b/doc/sphinx/man/lfun/obsolete/QueryOptQP
new file mode 100644
index 0000000..77404ad
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/QueryOptQP
@@ -0,0 +1,43 @@
+
+QueryOptQP()
+************
+
+
+FUNKTION
+========
+
+   int QueryOptQP()
+
+
+DEFINIERT IN
+============
+
+   /secure/questmaster.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte der optionalen Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der optionalen
+   Abenteuer zurueck.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryMaxQP, QueryTotalQP
+
+Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
diff --git a/doc/sphinx/man/lfun/obsolete/RemoveHpHook b/doc/sphinx/man/lfun/obsolete/RemoveHpHook
new file mode 100644
index 0000000..54c93ec
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/RemoveHpHook
@@ -0,0 +1,48 @@
+
+RemoveHpHook()
+**************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** RemoveHpHook()
+
+
+FUNKTION
+========
+
+   int RemoveHpHook(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, das sich austragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt den Eintrag fuer dieses Objekt in P_HP_HOOKS.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn Erfolg, 0 sonst
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart: AddHpHook()
+   Props:     P_HP_HOOKS, P_HP
+
+23.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/obsolete/RemoveInsertHook b/doc/sphinx/man/lfun/obsolete/RemoveInsertHook
new file mode 100644
index 0000000..6c77edf
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/RemoveInsertHook
@@ -0,0 +1,52 @@
+
+RemoveInsertHook()
+******************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** RemoveInsertHook()
+
+
+FUNKTION
+========
+
+   void RemoveInsertHook(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/player/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob - Das Objekt, das als Listener aus der Liste ausgetragen werden soll
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion wird im Spielerobjekt aufgerufen, um ein als Listener
+   eingetragenes Hook-Objekt ob wieder auszutragen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), AddInsertHook(), QueryInsertHooks()
+
+Last modified: 14.04.2010, Arathorn
diff --git a/doc/sphinx/man/lfun/obsolete/TestAttributeLock b/doc/sphinx/man/lfun/obsolete/TestAttributeLock
new file mode 100644
index 0000000..3d5d54d
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/TestAttributeLock
@@ -0,0 +1,47 @@
+
+TestAttributeLock()
+*******************
+
+********************* OBSOLETE LFUN
+*********************************** TestAttributeLock()
+
+
+FUNKTION
+========
+
+   string TestAttributeLock(mapping check)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   check      - Mapping mit Attributen: ([<attr>:<wert>])
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob eines der im Mapping enthaltenen Attribute blockiert
+   ist (bereits durch einen anderen Modifier belegt wurde).
+
+
+
+   Da Modifier nicht mehr direkt blockieren ist diese Funktion obsolet
+   und in Livings inzwischen nicht mehr existent.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+11.05.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/obsolete/extra_look b/doc/sphinx/man/lfun/obsolete/extra_look
new file mode 100644
index 0000000..d8e9703
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/extra_look
@@ -0,0 +1,32 @@
+
+extra_look()
+************
+
+********************* VERALTETE LFUN ****************************** *
+Diese LFUN ist veraltet. Bitte benutzt sie NICHT mehr, sondern  * *
+stattdessden AddExtraLook().                                    *
+*******************************************************************
+
+extra_look()
+
+
+FUNKTION
+========
+
+   string extra_look();
+
+
+BESCHREIBUNG
+============
+
+   Kann in Objekt definiert sein. Wenn ein Living (std/living/description)
+   das Objekt enthaelt, wird zu dessen long() der zurueckgegebene String
+   hinzugefuegt.
+
+
+SIEHE AUCH
+==========
+
+   AddExtraLook()
+
+25.Jan 2015 Gloinson
diff --git a/doc/sphinx/man/lfun/obsolete/paramove b/doc/sphinx/man/lfun/obsolete/paramove
new file mode 100644
index 0000000..25ce252
--- /dev/null
+++ b/doc/sphinx/man/lfun/obsolete/paramove
@@ -0,0 +1,66 @@
+
+paramove()
+**********
+
+
+FUNKTION
+========
+
+   int paramove();
+
+
+DEFINIERT IN
+============
+
+   /std/room/para.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Bewegt den Spieler ggf. in eine Paralleldimension.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn der Spieler die Dimension gewechselt hat.
+
+
+BEISPIEL
+========
+
+   init(){
+     if(!paramove()) ::init();
+    }
+
+
+BEMERKUNGEN
+===========
+
+   DIESE FUNKTION NICHT MEHR BENUTZEN!
+
+   Diese Funktion sollte nur aus einem init() aufgerufen werden!
+
+   Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit
+   von P_PARA landet, ist die Funktion move() zustaendig. Als Magier
+   muss man sich darum nicht gesondert kuemmern. Das heisst aber auch,
+   dass beim Anschluss eines Normalweltraumes automatisch alle in dem
+   Verzeichnis mit gleichem Namen vorhandenen Parallelweltraeume mit
+   angeschlossen werden.
+
+   Deswegen ist paramove() veraltet und sollte nicht mehr genutzt werden.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/para.c, P_PARA, P_NO_PLAYERS, move
+
+Last modified: 05.08.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/pick b/doc/sphinx/man/lfun/pick
new file mode 100644
index 0000000..5063ee6
--- /dev/null
+++ b/doc/sphinx/man/lfun/pick
@@ -0,0 +1,73 @@
+
+pick()
+******
+
+
+FUNKTION
+========
+
+   public varargs int pick(object o, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   object o
+       Das Objekt, das aufgehoben werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC nimmt das Objekt auf. Gibt o->move() keinen positiven
+   Wert zurueck, beispielsweise weil das Objekt zu schwer ist oder nicht
+   genommen werden darf, bekommt er eine entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Aufnehmen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
+   aufnehmen lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob sich das Objekt ueberhaupt in der Reichweite
+   des Spielers/NPC befindet, das muss man ggf. selbst ermitteln.
+
+
+BEISPIEL
+========
+
+   ob = clone_object(WEINGUMMI);
+
+   if (this_player()->pick(ob, ({ "Du nimmst @WENU2 aus dem Regal.",
+                                  "@WER1 nimmt @WENU2 aus dem Regal." })))
+       weingummi--;
+   else
+       ob->remove();
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_PICK_MSG, pick_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET
+
+Last modified: Thu Aug 28 22:21:41 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/pick_obj b/doc/sphinx/man/lfun/pick_obj
new file mode 100644
index 0000000..6557cee
--- /dev/null
+++ b/doc/sphinx/man/lfun/pick_obj
@@ -0,0 +1,43 @@
+
+pick_obj()
+**********
+
+
+FUNKTION
+========
+
+   int pick_obj(object ob)
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   ob      Das Objekt, das genommen werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, hebt
+   den angegebenen Gegenstand (ob) auf, falls es ihm moeglich ist.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt genommen wurde oder dies nicht moeglich war. (in diesem
+   Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
+   plaziert
+
+
+SIEHE AUCH
+==========
+
+   drop_obj(), find_obs(), give_obj(), put_obj(), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/lfun/pick_objects b/doc/sphinx/man/lfun/pick_objects
new file mode 100644
index 0000000..ac70415
--- /dev/null
+++ b/doc/sphinx/man/lfun/pick_objects
@@ -0,0 +1,61 @@
+
+pick_objects()
+**************
+
+
+FUNKTION
+========
+
+   public varargs int pick_objects(string str, int flag, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   string str
+       Was aufgehoben werden soll.
+   int flag
+       Muss das Objekt irgendwo drinstecken (flag = 1), oder darf es einfach
+       so herumliegen (flag = 0)? Dieses Argument ist hauptsaechlich fuer das
+       Kommando "hole" gedacht, in der Regel braucht man es nicht anzugeben.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC nimmt die in <str> benannten Sachen. Kann er ein
+   Objekt nicht nehmen, bekommt er eine entsprechende Fehlermeldung. Wenn
+   keine Objekte auf <str> passen, wird per _notify_fail() eine Meldung
+   gesetzt, aber noch nicht ausgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
+   etwas genommen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
+   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+
+
+SIEHE AUCH
+==========
+
+   move(L), pick(L), P_PICK_MSG, find_objects(L), moved_objects(L)
+
+Last modified: Fri Jul 25 10:58:43 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/present_objects b/doc/sphinx/man/lfun/present_objects
new file mode 100644
index 0000000..77f31fa
--- /dev/null
+++ b/doc/sphinx/man/lfun/present_objects
@@ -0,0 +1,50 @@
+
+present_objects()
+*****************
+
+
+FUNKTION
+========
+
+   object *present_objects(string desc);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   desc
+        Umschreibung des gesuchten Objektes oder "alles" oder "alle".
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt die Objekte im Inneren des Behaelters zurueck, die
+   sich mit desc ansprechen lassen. In dem Fall, dass "alle(s)"
+   angefordert wird, sind das alle sichtbaren Objekte, ansonsten das erste
+   Objekt, das sich mit desc ansprechen laesst.
+   Objekte, die P_INVIS gesetzt haben, zaehlen als nicht ansprechbar, im
+   Gegensatz zu solchen Objekten, die keine P_SHORT haben.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein Array von Objekten mit den geforderten Eigenschaften.
+
+   Befindet sich kein Objekt im Behaelter, das sich durch desc ansprechen
+   laesst, so wird ein leeres Array zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   locate_objects(), /std/container/restrictions.c
+
+03.03.2013, Zesstra
diff --git a/doc/sphinx/man/lfun/put b/doc/sphinx/man/lfun/put
new file mode 100644
index 0000000..9b1d5eb
--- /dev/null
+++ b/doc/sphinx/man/lfun/put
@@ -0,0 +1,65 @@
+
+put()
+*****
+
+
+FUNKTION
+========
+
+   public varargs int put(object o, object dest, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   object o
+       Das Objekt, das irgendwo hingesteckt werden soll.
+   object dest
+       Der Behaelter, in den das Objekt gesteckt werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PUT_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC steckt das Objekt in einen Behaelter. Gibt o->move()
+   keinen positiven Wert zurueck, beispielsweise weil er das Objekt nicht
+   weggeben darf oder der Behaelter schon voll ist, bekommt er eine
+   entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Bewegen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt irgendwo
+   hinstecken lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob sich das Objekt und der Behaelter ueberhaupt
+   in der Reichweite des Spielers/NPC befinden, das muss man ggf. selbst
+   ermitteln.
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_PUT_MSG, put_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET, P_NODROP
+
+Last modified: Thu Aug 28 22:21:58 2008 by Amynthor
diff --git a/doc/sphinx/man/lfun/put_obj b/doc/sphinx/man/lfun/put_obj
new file mode 100644
index 0000000..ff4dd91
--- /dev/null
+++ b/doc/sphinx/man/lfun/put_obj
@@ -0,0 +1,46 @@
+
+put_obj()
+*********
+
+
+FUNKTION
+========
+
+   int put_obj(object ob, object where)
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   ob      Das Objekt, das irgendwo hineingelegt werden soll.
+   where   Das (tote) Objekt, in das etwas hineingelegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, legt
+   den angegebenen Gegenstand (ob) in das angegebene Zielobjekt (where).
+   Dabei sollte es sich bei where um einen Container/Raum handeln.
+   Ist where ein Lebewesen, verwendet man besser give_obj().
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Objekt weggelegt wurde oder dies nicht moeglich war. (in diesem
+   Fall wird auch direkt eine Textausgabe ausgegeben)
+   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
+   plaziert
+
+
+SIEHE AUCH
+==========
+
+   drop_obj(), find_obs(), give_obj(), pick_obj(), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/lfun/query_prevent_shadow b/doc/sphinx/man/lfun/query_prevent_shadow
new file mode 100644
index 0000000..2c8d2f3
--- /dev/null
+++ b/doc/sphinx/man/lfun/query_prevent_shadow
@@ -0,0 +1,54 @@
+
+query_prevent_shadow()
+**********************
+
+query_prevent_shadow(L)
+
+
+FUNKTION
+========
+
+   varargs int query_prevent_shadow(object shadower)
+
+
+PARAMETER
+=========
+
+   object shadower    - da Objekt, das eine Beschattung beantragt
+
+
+BESCHREIBUNG
+============
+
+   Diese Methode kann in Objekten definiert werden, die nicht beschattet
+   werden wollen oder anhand des Objektes shadower entscheiden wollen ob
+   sie beschattet werden wollen.
+
+   Gibt die Funktion 0 zurueck, wird ein Shadow auf das Objekt erlaubt,
+   sonst schlaegt es fehl.
+
+
+BEISPIEL
+========
+
+   // generell keine Beschattung
+   int query_prevent_shadow(object who) {
+    return 1;
+   }
+
+   // Beschattung durch offizielle Objekte erlaubt
+   int query_prevent_shadow(object who) {
+    if(who && !strstr(object_name(who),"/std/player"))
+     return 0;
+    return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Rechte:         query_allow_shadow(M)
+   Generell:       shadow(E), unshadow(E)
+   Informationen:  query_shadowing(E)
+
+20. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/lfun/query_real_name b/doc/sphinx/man/lfun/query_real_name
new file mode 100644
index 0000000..1ebc69f
--- /dev/null
+++ b/doc/sphinx/man/lfun/query_real_name
@@ -0,0 +1,26 @@
+
+query_real_name()
+*****************
+
+
+SYNOPSIS
+========
+
+   string query_real_name(void)
+
+
+DESCRIPTION
+===========
+
+   The result of this_player()->query_real_name() is used as
+   default argument for the efun wizlist().
+
+   If LOG_SHOUT was #defined in the parser at compile time, the
+   efun shout will use query_real_name() to log the shouter's
+   name.
+
+
+SEE ALSO
+========
+
+   shout(E), wizlist(E)
diff --git a/doc/sphinx/man/lfun/query_weight_contents b/doc/sphinx/man/lfun/query_weight_contents
new file mode 100644
index 0000000..bd644f5
--- /dev/null
+++ b/doc/sphinx/man/lfun/query_weight_contents
@@ -0,0 +1,36 @@
+
+query_weight_contents()
+***********************
+
+
+FUNKTION
+========
+
+   int query_weight_contents()
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Gewicht des Inhaltes des Behaelters zurueck (ohne
+   Beruecksichtigung von P_WEIGHT_PERCENT!)
+
+
+RUeCKGABEWERT
+=============
+
+   Das Gewicht des Behaelterinhaltes.
+
+Last modified: Wed May 8 10:23:32 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/reduce_hit_points b/doc/sphinx/man/lfun/reduce_hit_points
new file mode 100644
index 0000000..7a1dcf0
--- /dev/null
+++ b/doc/sphinx/man/lfun/reduce_hit_points
@@ -0,0 +1,69 @@
+
+reduce_hit_points()
+*******************
+
+
+FUNKTION
+========
+
+   int reduce_hit_points(int damage)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   int damage  - der zugefuegte Schaden
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden damage Lebenspunkte abgezogen, aber der
+   Wert wird hinterher nicht kleiner als 1 sein und das Lebewesen
+   wird dadurch nicht sterben.
+
+
+RUECKGABEWERT
+=============
+
+   Die verbleibenden Lebenspunkte.
+
+
+BEISPIELE
+=========
+
+   write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
+         "heraus und\nbeisst Dich ins Bein, sie verschwindet so schnell, "+
+         "wie sie gekommen ist.\n");
+   this_player()->reduce_hit_points(50);
+   (Auszug aus /players/boing/friedhof/room/cat1x9)
+
+
+BEMERKUNGEN
+===========
+
+   damage kann auch ein negativer Wert sein, dann werden dem Lebewesen
+   diese Lebenspunkte gutgeschrieben und auf die aktuellen Lebenspunkte
+   addiert. Da dies eine Form der Heilung ist, nur nach Ruecksprache mit
+   dem Regionsmagier verwenden.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  restore_hit_points()
+   Verwandt:   do_damage(), Defend(), reduce_spell_points()
+   Props:      P_HP
+   Konzept:    heilung
+
+Last modified: Sat Dec 13 01:00:47 1999 by Tilly
diff --git a/doc/sphinx/man/lfun/reduce_spell_points b/doc/sphinx/man/lfun/reduce_spell_points
new file mode 100644
index 0000000..cddb7da
--- /dev/null
+++ b/doc/sphinx/man/lfun/reduce_spell_points
@@ -0,0 +1,48 @@
+
+reduce_spell_points()
+*********************
+
+
+FUNKTION
+========
+
+   void reduce_spell_points(int points)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   points: Anzahl der Konzentrationspunkte die abgezogen werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden points Konzentrationspunkte abgezogen. Falls
+   das Lebewesen weniger Konzentrationspunkte hat, als abgezogen werden
+   sollen, werden sie auf 0 gesetzt.
+
+
+BEISPIELE
+=========
+
+   write("Das boese boese Monster schaut Dich grimmig an und labt sich an "
+        +"Deiner Konzentration.\n");
+   this_player()->reduce_spell_points(50);
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  restore_spell_points(L)
+   Verwandt:   reduce_hit_points(L), buffer_sp(L)
+   Props:      P_SP
+   Konzept:    heilung
+
+23.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/register_modifier b/doc/sphinx/man/lfun/register_modifier
new file mode 100644
index 0000000..afe086c
--- /dev/null
+++ b/doc/sphinx/man/lfun/register_modifier
@@ -0,0 +1,42 @@
+
+register_modifier()
+*******************
+
+
+FUNKTION
+========
+
+   void register_modifier(object modifier)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   modifier   - Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD
+
+
+BESCHREIBUNG
+============
+
+   Registriert einen Modifier im Spieler. Wird durch InsertSensitiveObject
+   beziehungsweise beim Anziehen oder Zuecken gerufen.
+   Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
+   sollte stattdessen UpdateAttributes gerufen werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   deregister_modifier(), P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_ATTRIBUTES_MODIFIER,P_X_ATTR_MOD, P_M_ATTR_MOD,
+   /std/living/attributes.c
+
+13.Jun.2004, Muadib
diff --git a/doc/sphinx/man/lfun/remove b/doc/sphinx/man/lfun/remove
new file mode 100644
index 0000000..914c1e1
--- /dev/null
+++ b/doc/sphinx/man/lfun/remove
@@ -0,0 +1,56 @@
+
+remove()
+********
+
+
+FUNKTION
+========
+
+   varargs int remove(int silent);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/moving.c
+   /std/living/moving.c
+   /std/room/moving.c
+
+
+ARGUMENTE
+=========
+
+   silent
+        Falls ungleich 0, so werden beim Zerstoeren keine Meldungen
+        ausgegeben.
+
+
+BESCHREIBUNG
+============
+
+   Beim Aufruf dieser Funktion entfernt sich das Objekt selbst. Durch
+   Ueberladen dieser Funktion kann man diesen Vorgang noch durch die
+   Ausgabe von Meldungen kommentieren, oder irgendwelche Daten
+   abspeichern, oder das Zerstoeren ganz verhindern (auf diesem Weg... Mit
+   destruct() kann das Objekt immer noch direkt zerstoert werden!)
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn sich das Objekt erfolgreich selbst zerstoert hat, sonst 0.
+
+
+BEMERKUNGEN
+===========
+
+   Nach einem erfolgreichen ::remove() gelten die selben Einschraenkungen
+   wie nach einem destruct()!
+
+
+SIEHE AUCH
+==========
+
+   destruct()
+
+Last modified: Wed May 8 10:23:40 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/remove_multiple b/doc/sphinx/man/lfun/remove_multiple
new file mode 100644
index 0000000..9e60d55
--- /dev/null
+++ b/doc/sphinx/man/lfun/remove_multiple
@@ -0,0 +1,86 @@
+
+remove_multiple()
+*****************
+
+
+FUNKTION
+========
+
+   public varargs int remove_multiple(int limit, mixed fun);
+
+
+DEFINIERT IN
+============
+
+   /std/container/items.c
+
+
+ARGUMENTE
+=========
+
+   limit: Anzahl gleicher Objekte, die verbleiben sollen.
+   fun:   Funktionsname (string) oder Closure.
+
+
+BESCHREIBUNG
+============
+
+   Wird diese Funktion aufgerufen, werden alle gleichen Objekte
+   (standardmaessig definiert als gleicher Ladename, gleiche
+    Kurzbeschreibung und gleiche Langbeschreibung), deren Anzahl <limit>
+   ueberschreitet, entfernt.
+
+
+
+   Ausnahmen: Lebewesen und per AddItem() hinzugefuegte Objekte.
+
+   Mit dem Argument <fun> lassen sich die Kriterien fuer die "Gleichheit"
+   aendern.
+   Ist <fun> ein Funktionsname, wird diese Funktion an allen in Frage
+   kommenenden Objekten im Container gerufen.
+   Ist <fun> eine Closure, werden sie fuer jedes in Frage kommende Objekt
+   einmal gerufen und ihr das Objekt uebergeben.
+   Als 'gleich' werden alle Objekte betrachtet, fuer die <fun> den gleichen
+   Wert zurueckliefert.
+   Objekte, fuer die <fun> 0 zurueckliefert, werden ignoriert.
+
+
+BEMERKUNGEN
+===========
+
+   1) Raeume rufen remove_multiple(3) standardmaessig im reset(), jedoch
+      nur, wenn kein Spieler anwesend ist und mehr als 10 Objekte im Raum
+      sind.
+   2) remove_multipe(0) entfernt alle entfernbaren Objekte (s. Ausnahmen).
+
+
+BEISPIELE
+=========
+
+   Ein Container enthaelt 5 Fackeln. Im reset() ruft man nun
+   remove_multiple(3) auf. Anschliessend sind noch 3 Fackeln uebrig.
+
+
+
+   Alle verbleibenden Objekte im Container sollen unterschiedliche Namen
+   haben:
+   remove_multiple(1, "name");
+
+   Ein Container soll nur ein Objekt behalten, welches groesser als 70 cm
+   ist:
+   int groessen_filter(object ob) {
+     if (ob->QueryProp(P_SIZE > 70)) return 1;
+     return 0; // damit das Objekt ignoriert wird.
+     // Alternativ koennte man statt 0 auch object_name(ob) zurueckliefern,
+     // dann sind diese Objekte alle unterschiedlich.
+   }
+   ...
+   remove_multiple(1, #'groessen_filter);
+
+
+SIEHE AUCH
+==========
+
+   reset()
+
+31.01.2009, Zesstra
diff --git a/doc/sphinx/man/lfun/reset b/doc/sphinx/man/lfun/reset
new file mode 100644
index 0000000..5959b3f
--- /dev/null
+++ b/doc/sphinx/man/lfun/reset
@@ -0,0 +1,106 @@
+
+reset()
+*******
+
+
+FUNKTION
+========
+
+   void reset();
+   protected void reset();
+
+
+BESCHREIBUNG
+============
+
+   reset() wird vom GameDriver in jedem Objekt aufgerufen, um dem Objekt
+   die Gelegenheit zu geben, sich wieder in einen definierten Zustand zu
+   versetzen: Raeume und Monster erzeugen per AddItem() eingefuegte und
+   zwischenzeitlich entfernte Objekte neu, Tueren schliessen sich ...
+
+   Solange das Objekt "benutzt" wird, wird reset() regelmaessig alle
+   45 Minuten (+/-15 Minuten) mit einer Aufloesung von 2s aufgerufen
+   (d.h. der Driver prueft und ruft nur alle 2 Sekunden reset() auf
+   allen Objekten).
+
+   Wird eine Objekt nicht mehr "benutzt", d.h. wird an einem Objekt nicht
+   von aussen (durch call_other etc.) _nach_ einem reset() eine Methode
+   bzw. LFun gerufen, so bekommt dieses Objekt keinen weiteren reset().
+
+   Ein Funktionsaufruf am Objekt schaltet den reset() wieder ein.
+   Bei einem Objekt in einem Container waere das zB das Benutzen des
+   Containers (Hineinlegen/Herausnehmen/Hineinsehen). Das kann
+   sehr lange dauern.
+
+   Die Abschaltung kann man verhindern, indem man im reset() per call_out()
+   eine Funktion im Objekt ruft. Dies aber bitte _nur_ machen, wenn das
+   Objekt _unbedingt_ auf einen staendigen Reset angewiesen ist, auch wenn
+   es nicht "benutzt" wird.
+
+   Aendern laesst sich die Zeit zwischen den Aufrufen von reset() mit
+   set_next_reset(). Die Aufloesung von 2s kann man nicht aendern.
+
+
+BEMERKUNGEN
+===========
+
+   - man kann reset() nutzen, um Ereignisse auszuloesen:
+     - es ist billiger als lange call_out()
+     - siehe Warnung bezueglich Abschalten des reset
+   - man kann reset() als protected oder static definieren, wenn man nicht
+     moechte, dass die Funktion von aussen gerufen werden kann. Dies
+     verhindert Einflussnahme von aussen, kann aber auch Debugmassnahmen
+     erschweren. Es ist aber dennoch fuer einige Objekte sinnvoll.
+   - der Driver ruft reset() unabhaengig von zusaetzlichen, "manuellen"
+     Rufen von reset()
+     - keine Rufe von reset() mit call_out() aus reset() (Callout-Ketten-
+       bildung droht), fuer solche Faelle ist set_next_reset(E) da!
+   - bei Blueprints sollte der reset() in der Regel abgeschaltet werden,
+     sofern er nicht auf wichtige Aufgaben in der BP zu tun hat:
+     protected void create() {
+       if(!clonep(ME)) {
+           set_next_reset(-1);
+           return;
+       }
+       ::create();
+       ...
+     }
+
+
+BEISPIELE
+=========
+
+   // ein NPC, der bei jedem reset() schaut, ob um ihn herum bessere
+   // Ausruestung liegt als die, die er selbst gerade traegt:
+
+   ...
+   void reset() {
+     ::reset();
+
+     if(clonep(this_object()) && environment()) {
+       object o;
+       o=first_inventory(environment());
+       while(o) {
+           look_for_good_weapons_and_use_them_if_better(o);
+           o=next_inventory(o);
+       }
+     }
+   }
+
+   // ein reset fuer einen Gegenstand, der vielleicht in
+   // in einem Container landet und dann weiter einen reset
+   // bekommen muss/soll
+
+   void reset() {
+     // irgend ein Code hier
+     call_other(this_object(), "???"); // einfach nur was aufrufen
+   }
+
+
+SIEHE AUCH
+==========
+
+   clean_up(), set_next_reset(E), query_next_reset(E)
+   memory
+
+letzte Aenderung: 2009-01-14 Rumata
diff --git a/doc/sphinx/man/lfun/restore_hit_points b/doc/sphinx/man/lfun/restore_hit_points
new file mode 100644
index 0000000..b4917cf
--- /dev/null
+++ b/doc/sphinx/man/lfun/restore_hit_points
@@ -0,0 +1,57 @@
+
+restore_hit_points()
+********************
+
+
+FUNKTION
+========
+
+   int restore_hit_points(int heal)
+
+
+ARGUMENTE
+=========
+
+   int heal    - der zu heilende Betrag
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden heal Lebenspunkte aufgeschlagen. Die HP
+   steigen nicht ueber P_MAX_HP.
+
+
+RUECKGABEWERT
+=============
+
+   Die verbleibenden Lebenspunkte.
+
+
+BEISPIELE
+=========
+
+   write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
+         "heraus und\nschleimt dich heilend voll, sie verschwindet so, "+
+         "wie sie gekommen ist.\n");
+   this_player()->restore_hit_points(50);
+
+
+BEMERKUNGEN
+===========
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+   Ansonsten bitte buffer_hp() benutzen und die Konzeptseite lesen!
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  reduce_hit_points()
+   Verwandt:   buffer_hp(), heal_self(), restore_spell_points()
+   Props:      P_HP
+   Konzept:    heilung
+
+23.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/restore_spell_points b/doc/sphinx/man/lfun/restore_spell_points
new file mode 100644
index 0000000..2c8e42c
--- /dev/null
+++ b/doc/sphinx/man/lfun/restore_spell_points
@@ -0,0 +1,61 @@
+
+restore_spell_points()
+**********************
+
+
+FUNKTION
+========
+
+   void restore_spell_points(int points)
+
+
+ARGUMENTE
+=========
+
+   points: Anzahl der Konzentrationspunkte die gutgeschrieben werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   Dem Lebewesen werden points Konzentrationspunkte gutgeschrieben. Falls
+   Punkte abgezogen werden sollen und das Lebewesen nicht ueber <points>
+   Konzentrationspunkte verfuegt, werden sie auf 0 gesetzt.
+
+
+RUECKGABEWERT
+=============
+
+   Keiner
+
+
+BEISPIELE
+=========
+
+   write("Das boese boese Monster schaut Dich suess an und gibt dir mehr "
+        +"Konzentration.\n");
+   this_player()->restore_spell_points(50);
+
+
+BEMERKUNGEN
+===========
+
+   Da das Benutzen der Funktion eine Heilung bedeutet, sollte man bei
+   Verwendung auf jeden Fall Ruecksprache mit seinem RM nehmen, bzw
+   die Heilstelle bei der Heilungsbalance genehmigen lassen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+   Ansonsten bitte buffer_sp() benutzen und die Konzeptseite lesen!
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart:  reduce_spell_points(L)
+   Verwandt:   buffer_sp(L), restore_hit_points(L)
+   Props:      P_SP
+   Konzept:    heilung
+
+23.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/lfun/save_me b/doc/sphinx/man/lfun/save_me
new file mode 100644
index 0000000..cbce90a
--- /dev/null
+++ b/doc/sphinx/man/lfun/save_me
@@ -0,0 +1,41 @@
+
+save_me()
+*********
+
+save_me(L)
+
+
+FUNKTION
+========
+
+   void save_me(mixed value_items)
+
+
+DEFINIERT IN
+============
+
+   /std/player/base.c
+
+
+ARGUMENTE
+=========
+
+   value_items
+      Ungleich 0, wenn Wert der Gegenstaende berechnet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Speichert einen Spieler, seine Autoloader, bestimmt sein GuildRating
+   und berechnet/speichert auf Anforderung den Wert der getragenen
+   Gegenstaende.
+
+
+SIEHE AUCH
+==========
+
+   Props:       P_CARRIED_VALUE, P_AUTOLOADOBJ, P_LAST_LOGOUT
+   Kommandos:   save, ende
+
+1.September 2008 Gloinson
diff --git a/doc/sphinx/man/lfun/second_life b/doc/sphinx/man/lfun/second_life
new file mode 100644
index 0000000..1c3fc8b
--- /dev/null
+++ b/doc/sphinx/man/lfun/second_life
@@ -0,0 +1,52 @@
+
+second_life()
+*************
+
+
+FUNKTION
+========
+
+   varargs int second_life(object obj);
+
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   obj
+     Leiche des Lebewesens.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird im die() des Lebewesens aufgerufen, wenn sicher
+   ist, dass es stirbt. Ueblicherweise ist diese Funktion nur im Spieler
+   definiert und regelt EP-Verlust und dergleichen. Ein Shadow wuerde
+   diese Funktion ueberlagern, um zu verhindern, dass ein Spieler stirbt.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn das Lebewesen nicht stirbt, sonst 0
+
+
+BEMERKUNG
+=========
+
+   Bei NPCs sollte man direkt die() ueberschreiben, wenn man nicht
+   moechte, dass sie sterben.
+
+
+SIEHE AUCH
+==========
+
+   die()
+
+Last modified: 2015-Jan-19, Arathorn
diff --git a/doc/sphinx/man/lfun/sell_obj b/doc/sphinx/man/lfun/sell_obj
new file mode 100644
index 0000000..580fd87
--- /dev/null
+++ b/doc/sphinx/man/lfun/sell_obj
@@ -0,0 +1,59 @@
+
+sell_obj()
+**********
+
+sell_obj()
+
+Funktion:
+   static string sell_obj(object ob, int short)
+
+Definiert in:
+   /std/room/shop
+
+Argumente:
+   ob:
+      Das anzukaufende Objekt
+
+   short:
+      Gibt an, ob der Verkaeufer nur ein Objekt (0) oder mehrere (1)
+      verkauft. (Verkaufe alles etc.)
+
+Beschreibung:
+   Ermittelt ob der Laden bereit ist, <ob> anzukaufen.
+
+Rueckgabewert:
+   Meldung die ausgegeben wird, wenn ein Objekt abgelehnt wird oder 0.
+
+Bemerkung:
+   Man sollte im normalfall _niemals_ einfach 0 zurueckgeben, sondern
+   das geerbte sell_obj() aus /std/room/shop, damit beispielsweise
+   P_NOBUY beachtet wird.
+
+Beispiel:
+   Ein Schmied, der nur Waffen ankauft:
+
+   protected void create() {
+
+      ...
+
+   }
+
+   static string sell_obj(object ob, int short) {
+
+      if(!ob->QueryProp(P_WEAPON_TYPE)) {
+
+         return "Ich bin nur an Waffen interessiert.";
+
+      } return ::sell_obj(ob,short);
+
+   }
+
+Siehe auch:
+   Funktionen:
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryStorageRoom(), QueryBuyValue(), QueryBuyFact(), buy_obj()
+
+   Properties:
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+Letzte Aenderung: 21.05.2014, Bugfix
diff --git a/doc/sphinx/man/lfun/set_object_next_reset b/doc/sphinx/man/lfun/set_object_next_reset
new file mode 100644
index 0000000..9b77a9e
--- /dev/null
+++ b/doc/sphinx/man/lfun/set_object_next_reset
@@ -0,0 +1,41 @@
+
+set_object_next_reset()
+***********************
+
+
+FUNKTION
+========
+
+   int set_object_next_reset(object ob, int zeit );
+
+DEFINIERT IN: /secure/debug.c
+
+
+ARGUMENTE
+=========
+
+         ob: Das Objekt, dess Reset gesetzt werden soll.
+   zeit: Zeit bis zum naechsten Reset von ob.
+
+
+FUNKTION
+========
+
+   Die Funktion ruft letztendlich set_next_reset() in <ob> auf und setzt daher
+   dessen Resetzeit auf einen neuen Wert. Dies ist zu Debugzwecken gedacht.
+
+   Die Benutzung ist nur fuer EM+ moeglich.
+
+
+RUECKGABEWERT
+=============
+
+   Gibt den Rueckgabewert des set_next_reset()-Aufrufs in <ob> zurueck.
+
+
+SIEHE AUCH
+==========
+
+   set_next_reset(E)
+
+10.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/shoot_dam b/doc/sphinx/man/lfun/shoot_dam
new file mode 100644
index 0000000..f66be19
--- /dev/null
+++ b/doc/sphinx/man/lfun/shoot_dam
@@ -0,0 +1,63 @@
+
+shoot_dam()
+***********
+
+
+FUNKTION
+========
+
+   static int shoot_dam(mapping shoot)
+
+
+DEFINIERT IN
+============
+
+   /std/ranged_weapon.c
+
+
+ARGUMENTE
+=========
+
+   mapping shoot - Schussdaten
+
+
+BESCHREIBUNG
+============
+
+   Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und berechnet
+   den Schaden der Waffe, basierend auf den P_SHOOTING_WC von Waffe und
+   Munition sowie der Geschicklichkeit des Schuetzen. HitFuncs der Munition
+   und Skills werden hier ebenfalls beruecksichtigt.
+
+
+RUECKGABEWERT
+=============
+
+   Schaden. Ebenfalls in 'shoot' unter SI_SKILLDAMAGE aktualisiert.
+
+
+BEMERKUNGEN
+===========
+
+   'shoot' enthaelt normalerweise folgende Eintraege:
+   * Key P_WEAPON:       die Schusswaffe
+   * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
+   * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
+   * Key P_WC:           P_SHOOTING_WC der Waffe
+   * Key P_SHOOTING_WC:  P_SHOOTING_WC der Munition
+   * Key P_AMMUNITION:   Munitionsobjekt (eventuell Unit)
+   * Key SI_ENEMY:       gueltigen Gegner
+   * Key SI_SKILLDAMAGE_TYPE:  Schaden (aus P_DAM_TYPE der Munition)
+   * Key SI_SKILLDAMAGE_MSG/2: Munitionsname
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), cmd_shoot(L)
+   Skills:    UseSkill(L), SkillResTransfer(L)
+   Attribute: QueryAttribute
+   Sonstiges: fernwaffen, HitFunc
+
+28.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/lfun/short b/doc/sphinx/man/lfun/short
new file mode 100644
index 0000000..f7bb169
--- /dev/null
+++ b/doc/sphinx/man/lfun/short
@@ -0,0 +1,53 @@
+
+short()
+*******
+
+
+FUNKTION
+========
+
+   public varargs string short();
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Der Inhalt der Property P_SHORT wird ausgewertet, mit ".\n"
+   abgeschlossen und zurueckgegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Kurzbeschreibung als String oder 0, falls das Objekt unsichtbar
+   ist.
+
+
+BEMERKUNGEN
+===========
+
+   Durch Ueberladen von short() lassen sich noch weitere Eigenschaften des
+   Objektes zeigen. Fackeln zeigen zum Beispiel an, ob sie brennen,
+   Ruestungen, ob sie angezogen sind und Waffen, ob sie gezueckt sind.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        long()
+   Properties:        P_SHORT, P_INVIS
+   Sonstiges:         make_invlist()
+
+20.01.2015, Zesstra
diff --git a/doc/sphinx/man/lfun/show_notify b/doc/sphinx/man/lfun/show_notify
new file mode 100644
index 0000000..0ce99ac
--- /dev/null
+++ b/doc/sphinx/man/lfun/show_notify
@@ -0,0 +1,73 @@
+
+show_notify()
+*************
+
+give_notify()
+
+
+FUNKTION
+========
+
+   void show_notify(object obj)
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   obj - dem Lebewesen gezeigtes Objekt
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird automatisch immer dann aufgerufen, wenn einem
+   Lebewesen (welches kein Spielercharakter ist) ein Objekt gezeigt wird.
+   Dies funktioniert nur dann, wenn der Standardbefehl der Spielershell
+   verwendet wird ("zeige <name> <gegenstand>"). Selbstgebautes "zeige"
+   funktioniert nicht.
+
+
+BEISPIEL
+========
+
+   Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
+   Item als Beweis der Erfuellung einer bestimmten Aufgabe vorgezeigt
+   wird. Folgendermassen kann dies realisiert werden:
+
+   void quest_ok(object obj) { ...
+     // z.B. Vernichtung des Questobjektes und Questtexte
+     // Questbelohnung und Questanerkennung, etc.
+   }
+
+   void show_notify(object obj) {
+     if(obj->id("\nquestitem")) // Ist das das geforderte Questobjekt?
+       quest_ok(obj);
+   }
+
+
+BEMERKUNGEN
+===========
+
+   Da es nur um das Vorzeigen von Gegenstaenden geht, die nicht den
+   Besitzer wechseln, sind Mechanismen wie P_REJECT in diesem Fall
+   nicht erforderlich.
+
+
+SIEHE AUCH
+==========
+
+   give_notify(), /std/npc/put_and_get.c, /std/living/put_and_get.c
+
+22. Oktober 2013 Arathorn
diff --git a/doc/sphinx/man/lfun/spellbook/AddSpell b/doc/sphinx/man/lfun/spellbook/AddSpell
new file mode 100644
index 0000000..65f0df8
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/AddSpell
@@ -0,0 +1,78 @@
+
+AddSpell()
+**********
+
+
+FUNKTION
+========
+
+   varargs int AddSpell(string verb, int kosten, mixed ski)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   string verb     Name des Spells
+   int kosten      normale Kosten (Grundkosten)
+   mixed ski       Skillmapping mit allen Eintraegen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Addiert einen Eintrag fuer den Spell im Spellbook. Wenn dieser
+   Spell direkt vom Spieler (SI_SPELLBOOK) oder (normalerweise)
+   ueber ein Gildenobjekt aufgerufen wird, wird das Mapping auf
+   die Skillinformationen aus Spieler und Gilde addiert und
+   beeinflusst damit den Aufruf der letztlichen Spellfunktion.
+
+
+BEMERKUNGEN
+===========
+
+   Siehe das Verhalten von QuerySpell (gilde) zum Zusammenfuegen
+   der AddSpell-Informationen aus Gilde und Spellbook. Relevant
+   zB fuer Lernrestriktionen.
+
+
+BEISPIEL
+========
+
+   AddSpell("kampfschrei", 30,
+        ([SI_SKILLRESTR_LEARN:([P_LEVEL:13]),
+          SI_MAGIC_TYPE: ({MT_PSYCHO}),
+          SI_SPELL:      ([
+            SP_NAME: "Kampfschrei",
+            SP_SHOW_DAMAGE:
+              ({({ -1, "Dir geschieht jedoch nichts.",
+                  "@WEM1 geschieht jedoch nichts.",
+                  "@WEM1 geschieht jedoch nichts." }),
+                ({  0, "Du kannst darueber aber nur lachen.",
+                  "@WER1 kann darueber aber nur lachen.",
+                  "@WER1 kann darueber aber nur lachen." }),
+                ({ 10, "Dir droehnen die Ohren.",
+                  "@WEM1 droehnen die Ohren.",
+                  "@WEM1 droehnen die Ohren." })
+              })])
+        ]));
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/spellbook/Erfolg b/doc/sphinx/man/lfun/spellbook/Erfolg
new file mode 100644
index 0000000..6338e6d
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/Erfolg
@@ -0,0 +1,46 @@
+
+Erfolg()
+********
+
+
+FUNKTION
+========
+
+   void Erfolg(object caster, string spell, mapping sinfo)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster    Spell sprechender Spieler
+   string spell     Spellname
+   mapping sinfo    Spell-Info-Mapping mit allen Informationen
+
+
+BESCHREIBUNG
+============
+
+   Wird bei Erfolg eines Spells gerufen. Ruft SpellInform() am
+   Environment.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges:        SpellInform
+   Spellbook Lernen: Learn, SpellSuccess, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/spellbook/Learn b/doc/sphinx/man/lfun/spellbook/Learn
new file mode 100644
index 0000000..8de112e
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/Learn
@@ -0,0 +1,54 @@
+
+Learn()
+*******
+
+
+FUNKTION
+========
+
+   void Learn(object caster, string spell, mapping sinfo)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster   Derjenige, der den Spruch spricht.
+   string spell    Der gesprochene Spell
+   mapping sinfo   Mapping mit allen moeglichen Informationen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird von der Funktion "Misserfolg" aus dem
+   Spellbook aufgerufen. Hier lernt der Spieler den Spruch, der
+   nicht geglueckt ist.
+
+
+BEMERKUNGEN
+===========
+
+   Kann auch ueberschrieben werden, wenn man komplexe Lern-Aenderungen
+   vornehmen will. Andere Attribute sind ueber SI_LEARN_ATTRIBUTE
+   setzbar.
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/spellbook/Misserfolg b/doc/sphinx/man/lfun/spellbook/Misserfolg
new file mode 100644
index 0000000..5ffe8de
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/Misserfolg
@@ -0,0 +1,78 @@
+
+Misserfolg()
+************
+
+
+FUNKTION
+========
+
+   void Misserfolg(object caster, string spell, mapping sinfo)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster    Spell sprechender Spieler
+   string spell     Spellname
+   mapping sinfo    Spell-Info-Mapping mit allen Informationen
+
+
+BESCHREIBUNG
+============
+
+   Wird bei Misserfolg eines Spells im Spellbook aufgerufen und
+   ruft die Lernfunktion Learn() nach einer Fehlermeldung.
+
+
+
+   Kann ueberschrieben werden, um die Meldungen anzupassen.
+
+
+BEISPIEL
+========
+
+   // Misserfolge im Klerus mit angepassten Meldungen
+   void Misserfolg(object caster, string spell, mapping sinfo) {
+     switch(spell) {
+       case "begrabe":
+         tell_object(caster, BS(
+           "Du begraebst Deine Hoffnungen, dass Du diese Anrufung jemals "
+           "perfekt beherrschen wirst."));
+         tell_room(environment(caster),
+           caster->Name(WER)+" tritt die Leiche lustlos.\n", ({caster}));
+         break;
+       case "blitz":
+       [...]
+     }
+
+
+
+     int old_abil = sinfo[SI_SKILLABILITY];
+     Learn(caster, spell, sinfo);
+     int new_abil = caster->QuerySkillAbility(spell);
+     if (old_abil < new_abil)
+       tell_object(caster, "Die Goetter schenken Dir eine Erleuchtung.\n");
+     else
+       tell_object(caster, "Leider lernst Du nicht aus Deinem Fehler.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/spellbook/QuerySpell b/doc/sphinx/man/lfun/spellbook/QuerySpell
new file mode 100644
index 0000000..963d30c
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/QuerySpell
@@ -0,0 +1,46 @@
+
+QuerySpell()
+************
+
+
+FUNKTION
+========
+
+   mapping QuerySpell(string spell)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   string spell    Name des Spells
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Spellmapping aus P_SB_SPELLS fuer diesen Spell zurueck.
+
+
+
+   Hier enthaelt QuerySpell nur die Spellbook-Informationen.
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/spellbook/SpellSuccess b/doc/sphinx/man/lfun/spellbook/SpellSuccess
new file mode 100644
index 0000000..564c948
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/SpellSuccess
@@ -0,0 +1,52 @@
+
+SpellSuccess()
+**************
+
+
+FUNKTION
+========
+
+   int SpellSuccess(object caster, mapping sinfo)
+
+
+DEFINIERT IN
+============
+
+   /std/spellbook.c
+
+
+ARGUMENTE
+=========
+
+   object caster    Spell sprechender Spieler
+   mapping sinfo    Spell-Info-Mapping mit allen Informationen
+
+
+BESCHREIBUNG
+============
+
+   Berechnet den Erfolg der Anwendung eines Spells aus seiner
+   SI_SKILLABILITY und dem Skill SK_CASTING im Spieler. Laesst
+   den Spieler bei besonders gutem Gelingen SK_CASTING lernen.
+
+
+BEMERKUNGEN
+===========
+
+   SK_CASTING muss fuer die SK_CASTING-Boni beherrscht werden.
+   Das ist zB im Klerus ab bestimmtem Level der Fall.
+
+
+SIEHE AUCH
+==========
+
+   Spellbook Lernen: Learn, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
+                     TryGlobalAttackSpell
+   * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
+   Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:        UseSpell, UseSkill
+   * sonstig:        spruchermuedung, skill_info_liste
+
+5. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/lfun/spellbook/TryAttackSpell b/doc/sphinx/man/lfun/spellbook/TryAttackSpell
new file mode 100644
index 0000000..d66684e
--- /dev/null
+++ b/doc/sphinx/man/lfun/spellbook/TryAttackSpell
@@ -0,0 +1,57 @@
+
+TryAttackSpell()
+****************
+
+** gilden-doku
+   o TryAttackSpell(opfer,schaden,typen,is_spell,caster,info)
+      Versucht den Angriffs-Spruch auf den Gegner anzuwenden. Die
+      mittleren 4 Werte sind die, die auch bei Defend uebergeben
+      werden. Dabei wird die Abwehrfaehigkeit des Gegners gegen Magie
+      und das Skill-Attribut SA_DAMAGE automatisch beruecksichtigt.
+
+
+FUNKTION
+========
+
+int TryAttackSpell(object victim, int damage, mixed dtypes,
+   mixed is_spell, object caster, mapping sinfo)
+
+
+ARGUMENTE
+=========
+
+   victim   : Das arme Opfer.
+   damage   : Der Schaden.
+   dtypes   : Die Schadensarten.
+         is_spell : Ist es ein Spell? Werden noch Spezielle Parameter
+              uebergeben (als mapping) ?
+   caster   : Derjenige, der den Spruch spricht.
+   sinfo    : Mapping mit allen moeglichen Informationen zum Spell
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom Spellbook aufgerufen, wenn der Spieler
+   einen Angriffsspell gemacht hat und damit Schaden anrichten will.
+
+
+RUECKGABEWERT
+=============
+
+   Der Wert, der vom Defend() des Gegners zurueckgeliefert wird.
+
+
+BEMERKUNGEN
+===========
+
+   Zu erst wird ueberprueft, ob das Ziel ueberhaupt angreifbar ist. Dies
+   verhindert das ueben von Spells an unangreifbaren NPCs.
+   Als naechstes wird die Faehigkeit, Spells abzuwehren ueberprueft.
+   Falls beide Abfragen ok sind, wird Defend aufgerufen.
+
+Siehe auch:
+
+TryDefaultAttackSpell (to be written)
+
+07.10.2007, Zesstra
diff --git a/doc/sphinx/man/lfun/trigger_sensitive_attack b/doc/sphinx/man/lfun/trigger_sensitive_attack
new file mode 100644
index 0000000..f290fc8
--- /dev/null
+++ b/doc/sphinx/man/lfun/trigger_sensitive_attack
@@ -0,0 +1,97 @@
+
+trigger_sensitive_attack()
+**************************
+
+
+FUNKTION
+========
+
+   varargs void trigger_sensitive_attack(object enemy, string key, int
+   dam, mixed spell, mixed *options);
+
+
+DEFINIERT IN
+============
+
+   eigenen sensitiven Objekten, wird aufgerufen von
+   /std/living/inventory.c
+
+
+ARGUMENTE
+=========
+
+   enemy
+        Der Gegner, der die Aktion ausgeloest hat.
+   key
+        Der ausloesende Schadenstyp.
+   dam
+        Der angerichtete Schaden.
+   spell
+        Wie bei Defend().
+   options
+        Array mit den in P_SENSITIVE angegebenen Optionen fuer diese
+        Aktion.
+
+
+BESCHREIBUNG
+============
+
+   Wenn der bei einem Angriff zugefuegte Schaden den in P_SENSITIVE
+   angegebenen Grenzwert uebersteigt sowie der als Schluessel angegebene
+   Schadenstyp in den Schaedenstypen des Angriffes vorkommt, wird diese
+   Funktion aufgerufen und kann entsprechend reagieren.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Eine Fackel, die sich bei Feuerattacken selbst entzuendet und bei
+   Wasserattacken verloescht, koennte man wie folgt implementieren:
+
+   inherit "/std/lightsource.c"
+
+   #include <properties.h>
+   #include <sensitive.h>
+   #include <combat.h>
+
+   create()
+   {
+     ::create();
+
+     SetProp(...); // die ueblichen Eigenschaften definieren
+
+     SetProp(P_SENSITIVE,
+         //  Ereignis          Key       Grenze (keine Optionen)
+       ({ ({ SENSITIVE_ATTACK, DT_FIRE,  100 }),
+          ({ SENSITIVE_ATTACK, DT_WATER, 100 }) }) );
+   }
+
+   varargs void
+   trigger_sensitive_attack(object enemy, string key,
+                            int dam, mixed spell)
+   {
+     // Es soll nicht verschwiegen werden, dass das Entzuenden und
+     // Loeschen einer Lichtquelle so leider nicht funktioniert...
+     if (key == DT_FIRE && !QueryProp(P_LIGHTED)) {
+       SetProp(P_LIGHTED, 1);
+       tell_object(environment(), "Die Fackel faengt Feuer.\n");
+     }
+     else if (key == DT_WATER && QueryProp(P_LIGHTED)) {
+       SetProp(P_LIGHTED, 0);
+       tell_object(environment(), "Die Fackel verlischt.\n");
+     }
+   }
+
+
+SIEHE AUCH
+==========
+
+   trigger_sensitive_inv(), sensitive Objekte
+
+Last modified: Sun May 19 15:56:25 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/trigger_sensitive_inv b/doc/sphinx/man/lfun/trigger_sensitive_inv
new file mode 100644
index 0000000..27e26fb
--- /dev/null
+++ b/doc/sphinx/man/lfun/trigger_sensitive_inv
@@ -0,0 +1,61 @@
+
+trigger_sensitive_inv()
+***********************
+
+
+FUNKTION
+========
+
+   varargs void trigger_sensitive_inv(object ob, string key, int wert,
+   mixed *optionen1, mixed *optionen2);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten, wird aufgerufen von /std/container/inventory.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das ausloesende Objekt
+   key
+        Der Schluessel, der die Aktion ausloeste.
+   wert
+        Der Grenzwert des ausloesenden Objektes.
+   optionen1
+        Die Optionen des ausloesenden Objektes.
+   optionen2
+        Die Optionen des reagierenden Objektes.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion wird in Objekten des sensitiven Typs SENSITIVE_INVENTORY
+   aufgerufen, wenn sie in Kontakt mit Objekten des Typs
+   SENSITIVE_INVENTORY_TRIGGER treten, die den gleichen Schluessel
+   aufweisen und einen hoeheren Grenzwert haben.
+
+   Anhand der Parameter koennen dann die noetigen Aktionen ausgeloest
+   werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+
+SIEHE AUCH
+==========
+
+   trigger_sensitive_attack(), sensitive Objekte
+
+Last modified: Wed May 8 10:26:10 1996 by Wargon
diff --git a/doc/sphinx/man/lfun/wield_me b/doc/sphinx/man/lfun/wield_me
new file mode 100644
index 0000000..d1aa842
--- /dev/null
+++ b/doc/sphinx/man/lfun/wield_me
@@ -0,0 +1,17 @@
+
+wield_me()
+**********
+
+
+BEMERKUNGEN
+===========
+
+   wield_me wurde durch DoWield ersetzt.
+
+
+SIEHE AUCH
+==========
+
+   DoWieldFunc(), /std/weapon.c
+
+Last modified: Wed Apr 08 10:25:00 2004 by Muadib
diff --git a/doc/sphinx/man/lfuns-gilde b/doc/sphinx/man/lfuns-gilde
new file mode 100644
index 0000000..b56c734
--- /dev/null
+++ b/doc/sphinx/man/lfuns-gilde
@@ -0,0 +1,3 @@
+
+Verzeichnis der lfuns speziell in/für Gilden
+********************************************
diff --git a/doc/sphinx/man/lfuns-master b/doc/sphinx/man/lfuns-master
new file mode 100644
index 0000000..7ca731d
--- /dev/null
+++ b/doc/sphinx/man/lfuns-master
@@ -0,0 +1,13 @@
+
+Verzeichnis der lfuns in master()
+*********************************
+
+* AddWizardForUID()
+
+* QueryUIDAlias()
+
+* QueryUIDsForWizard()
+
+* QueryWizardsForUID()
+
+* RemoveWizardFromUID()
diff --git a/doc/sphinx/man/lfuns-obsolet b/doc/sphinx/man/lfuns-obsolet
new file mode 100644
index 0000000..ac47c41
--- /dev/null
+++ b/doc/sphinx/man/lfuns-obsolet
@@ -0,0 +1,29 @@
+
+Verzeichnis der veralteten lfuns
+********************************
+
+* AddHpHook()
+
+* AddInsertHook()
+
+* ModifySkillAttributeOld()
+
+* NotifyGiveQuest()
+
+* NotifyHpChange()
+
+* QueryEnemy()
+
+* QueryInsertHooks()
+
+* QueryOptQP()
+
+* RemoveHpHook()
+
+* RemoveInsertHook()
+
+* TestAttributeLock()
+
+* extra_look()
+
+* paramove()
diff --git a/doc/sphinx/man/props-gilden b/doc/sphinx/man/props-gilden
new file mode 100644
index 0000000..df0782d
--- /dev/null
+++ b/doc/sphinx/man/props-gilden
@@ -0,0 +1,17 @@
+
+Verzeichnis der Gilden-Properties
+*********************************
+
+* P_GLOVE_FINGERLESS
+
+* P_Z_AUTOSHIELD
+
+* P_Z_INFO
+
+* P_Z_NO_MATERIAL
+
+* P_Z_NO_NOCONN
+
+* P_Z_NO_SPELL_SUPPORT
+
+* kaempferboni
diff --git a/doc/sphinx/man/props-liste b/doc/sphinx/man/props-liste
new file mode 100644
index 0000000..f63a1cf
--- /dev/null
+++ b/doc/sphinx/man/props-liste
@@ -0,0 +1,937 @@
+
+Propertyliste
+*************
+
+
+Verzeichnis der dokumentierten Properties:
+==========================================
+
+* P_ABILITIES
+
+* P_AC
+
+* P_ACCEPT_PEACE
+
+* P_ACHATS
+
+* P_ACHAT_CHANCE
+
+* P_ACTUAL_NOTIFY_FAIL
+
+* P_ADJECTIVES
+
+* P_AERIAL_HELPERS
+
+* P_AGE
+
+* P_AGGRESSIVE
+
+* P_ALCOHOL
+
+* P_ALCOHOL_DELAY
+
+* P_ALC_FULL_MSG
+
+* P_ALIGN
+
+* P_ALLOWED_SHADOW
+
+* P_AMMUNITION
+
+* P_AMOUNT
+
+* P_AQUATIC_HELPERS
+
+* P_ARMOURS
+
+* P_ARMOUR_TYPE
+
+* P_ARRIVEMSG
+
+* P_ARTICLE
+
+* P_ATTACK_BUSY
+
+* P_ATTRIBUTES
+
+* P_ATTRIBUTES_MODIFIER
+
+* P_ATTRIBUTES_OFFSETS
+
+* P_AUTH_INFO
+
+* P_AUTOLOAD
+
+* P_AUTOLOADOBJ
+
+* P_AVATAR_URI
+
+* P_AVERAGE_SIZE
+
+* P_AVERAGE_WEIGHT
+
+* P_AWAY
+
+* P_BAD_MSG
+
+* P_BLIND
+
+* P_BODY
+
+* P_BRIEF
+
+* P_BUFFER
+
+* P_BUY_ONLY_PLANTS
+
+* P_CALLED_FROM_IP
+
+* P_CAN_FLAGS
+
+* P_CAP_NAME
+
+* P_CARRIED_VALUE
+
+* P_CHATS
+
+* P_CHAT_CHANCE
+
+* P_CLASS
+
+* P_CLOCKMSG
+
+* P_CLONER
+
+* P_CLONE_MSG
+
+* P_CLONE_TIME
+
+* P_CLOTHING
+
+* P_CMSG
+
+* P_CNT_STATUS
+
+* P_COMBATCMDS
+
+* P_COMMANDS
+
+* P_COMPILER_PATH
+
+* P_CONSUME_MSG
+
+* P_CONTAINER
+
+* P_CONTENTS
+
+* P_CORPSE
+
+* P_CURRENTDIR
+
+* P_CURSED
+
+* P_DAMAGED
+
+* P_DAMAGE_MSG
+
+* P_DAM_DESC
+
+* P_DAM_TYPE
+
+* P_DEADS
+
+* P_DEAF
+
+* P_DEATH_MSG
+
+* P_DEATH_SPONSORED_BY
+
+* P_DEFAULT_GUILD
+
+* P_DEFAULT_NOTIFY_FAIL
+
+* P_DEFENDERS
+
+* P_DEFEND_FUNC
+
+* P_DEFUEL_AMOUNT_DRINK
+
+* P_DEFUEL_AMOUNT_FOOD
+
+* P_DEFUEL_LIMIT_DRINK
+
+* P_DEFUEL_LIMIT_FOOD
+
+* P_DEFUEL_TIME_DRINK
+
+* P_DEFUEL_TIME_FOOD
+
+* P_DEPARTMSG
+
+* P_DESCRIPTION
+
+* P_DESTROY_BAD
+
+* P_DESTRUCT_MSG
+
+* P_DETAILS
+
+* P_DIE_MSG
+
+* P_DISABLE_ATTACK
+
+* P_DISABLE_COMMANDS
+
+* P_DISTRIBUTION
+
+* P_DMSG
+
+* P_DOMAIN
+
+* P_DOOR_INFOS
+
+* P_DO_DESTRUCT
+
+* P_DRINK
+
+* P_DRINK_DELAY
+
+* P_DRINK_FULL_MSG
+
+* P_DROP_MSG
+
+* P_EARMUFFS
+
+* P_EATER_MSG
+
+* P_EFFECTIVE_AC
+
+* P_EFFECTIVE_WC
+
+* P_EMPTY_MSG
+
+* P_EMPTY_PROPS
+
+* P_ENABLE_IN_ATTACK_OUT
+
+* P_ENEMY_DAMAGE
+
+* P_ENEMY_DEATH_SEQUENCE
+
+* P_ENTERCMDS
+
+* P_ENTERFAIL
+
+* P_ENTERMSG
+
+* P_ENV_MSG
+
+* P_ENV_TOO_HEAVY_MSG
+
+* P_EQUIP_TIME
+
+* P_EVAL_FACTORS
+
+* P_EVAL_OFFSETS
+
+* P_EXITS
+
+* P_EXTRA_LOOK
+
+* P_FAO
+
+* P_FAO_PORTALS
+
+* P_FISH
+
+* P_FLAGS
+
+* P_FOLLOW_SILENT
+
+* P_FOOD
+
+* P_FOOD_DELAY
+
+* P_FOOD_FULL_MSG
+
+* P_FORCE_MURDER_MSG
+
+* P_FREE_HANDS
+
+* P_FRIEND
+
+* P_FROG
+
+* P_FUEL
+
+* P_FUNC_MSG
+
+* P_FW_ALWAYS_READABLE
+
+* P_FW_UNDERSTAND
+
+* P_GENDER
+
+* P_GHOST
+
+* P_GIVE_MSG
+
+* P_GLOBAL_SKILLPROPS
+
+* P_GUARD
+
+* P_GUILD
+
+* P_GUILD_DEACTIVATE_SKILLS
+
+* P_GUILD_DEFAULT_SPELLBOOK
+
+* P_GUILD_FEMALE_TITLES
+
+* P_GUILD_LEVEL
+
+* P_GUILD_LEVELS
+
+* P_GUILD_MALE_TITLES
+
+* P_GUILD_PREPAREBLOCK
+
+* P_GUILD_RATING
+
+* P_GUILD_RESTRICTIONS
+
+* P_GUILD_SKILLS
+
+* P_GUILD_TITLE
+
+* P_HANDS
+
+* P_HANDS_USED_BY
+
+* P_HARBOUR
+
+* P_HAUS_ERLAUBT
+
+* P_HB
+
+* P_HEAL
+
+* P_HELPER_NPC
+
+* P_HELPER_OBJECTS
+
+* P_HIDE_EXITS
+
+* P_HISTMIN
+
+* P_HIT_FUNC
+
+* P_HOMEPAGE
+
+* P_HP
+
+* P_HP_DELAY
+
+* P_HP_HOOKS
+
+* P_HUNTTIME
+
+* P_IDS
+
+* P_IGNORE
+
+* P_INDOORS
+
+* P_INFO
+
+* P_INFORMME
+
+* P_INPC_HOME
+
+* P_INPC_LAST_ENVIRONMENT
+
+* P_INPC_LAST_PLAYER_CONTACT
+
+* P_INPC_WALK_AREA
+
+* P_INPC_WALK_DELAYS
+
+* P_INPC_WALK_FLAGS
+
+* P_INPC_WALK_MODE
+
+* P_INPC_WALK_ROUTE
+
+* P_INTERMUD
+
+* P_INTERNAL_EXTRA_LOOK
+
+* P_INT_LIGHT
+
+* P_INT_LONG
+
+* P_INT_SHORT
+
+* P_INVIS
+
+* P_IP_NAME
+
+* P_IS_ARTILLERY
+
+* P_ITEMS
+
+* P_I_HATE_ALCOHOL
+
+* P_KEEPER
+
+* P_KEEP_ON_SELL
+
+* P_KILLER
+
+* P_KILLS
+
+* P_KILL_MSG
+
+* P_KILL_NAME
+
+* P_KNOWN_POTIONROOMS
+
+* P_LASTDIR
+
+* P_LAST_COMBAT_TIME
+
+* P_LAST_COMMAND_ENV
+
+* P_LAST_CONTENT_CHANGE
+
+* P_LAST_DAMAGE
+
+* P_LAST_DAMTIME
+
+* P_LAST_DAMTYPES
+
+* P_LAST_DEATH_PROPS
+
+* P_LAST_DEATH_TIME
+
+* P_LAST_LOGIN
+
+* P_LAST_LOGOUT
+
+* P_LAST_MOVE
+
+* P_LAST_USE
+
+* P_LAST_WEAR_ACTION
+
+* P_LAST_XP
+
+* P_LEAVECMDS
+
+* P_LEAVEFAIL
+
+* P_LEAVEMSG
+
+* P_LEP
+
+* P_LEVEL
+
+* P_LIFETIME
+
+* P_LIGHT
+
+* P_LIGHTDESC
+
+* P_LIGHTED
+
+* P_LIGHT_ABSORPTION
+
+* P_LIGHT_MODIFIER
+
+* P_LIGHT_TRANSPARENCY
+
+* P_LIGHT_TYPE
+
+* P_LIQUID
+
+* P_LOCALCMDS
+
+* P_LOCATION
+
+* P_LOG_INFO
+
+* P_LONG
+
+* P_LONG_EMPTY
+
+* P_LONG_FULL
+
+* P_MAGIC
+
+* P_MAGIC_RESISTANCE_OFFSET
+
+* P_MAILADDR
+
+* P_MAP_RESTRICTIONS
+
+* P_MARRIED
+
+* P_MATERIAL
+
+* P_MATERIAL_KNOWLEDGE
+
+* P_MAX_ALCOHOL
+
+* P_MAX_DRINK
+
+* P_MAX_FOOD
+
+* P_MAX_HANDS
+
+* P_MAX_HP
+
+* P_MAX_OBJECTS
+
+* P_MAX_PASSENGERS
+
+* P_MAX_POISON
+
+* P_MAX_SP
+
+* P_MAX_WEIGHT
+
+* P_MESSAGE_BEEP
+
+* P_MESSAGE_PREPEND
+
+* P_MIN_STOCK
+
+* P_MMSGIN
+
+* P_MMSGOUT
+
+* P_MSGIN
+
+* P_MSGOUT
+
+* P_MSG_PROB
+
+* P_MUD_NEWBIE
+
+* P_MURDER_MSG
+
+* P_M_ATTR_MOD
+
+* P_M_HEALTH_MOD
+
+* P_NAME
+
+* P_NAME_ADJ
+
+* P_NEEDED_QP
+
+* P_NETDEAD_ENV
+
+* P_NETDEAD_INFO
+
+* P_NEVERDROP
+
+* P_NEVER_CLEAN
+
+* P_NEWSKILLS
+
+* P_NEXT_DEATH_SEQUENCE
+
+* P_NEXT_DISABLE_ATTACK
+
+* P_NOBUY
+
+* P_NOCORPSE
+
+* P_NODRINK_MSG
+
+* P_NODROP
+
+* P_NOFOOD_MSG
+
+* P_NOGET
+
+* P_NOINSERT_MSG
+
+* P_NOLEAVE_MSG
+
+* P_NOMAGIC
+
+* P_NOSELL
+
+* P_NO_ASCII_ART
+
+* P_NO_ATTACK
+
+* P_NO_BAD
+
+* P_NO_GLOBAL_ATTACK
+
+* P_NO_PARA_TRANS
+
+* P_NO_PLAYERS
+
+* P_NO_REGENERATION
+
+* P_NO_SCORE
+
+* P_NO_STD_DRINK
+
+* P_NO_TPORT
+
+* P_NO_TRAVELING
+
+* P_NO_XP
+
+* P_NPC
+
+* P_NPC_FASTHEAL
+
+* P_NR_HANDS
+
+* P_ORAKEL
+
+* P_ORIG_FILE_NAME
+
+* P_ORIG_NAME
+
+* P_PARA
+
+* P_PARRY
+
+* P_PARRY_WEAPON
+
+* P_PEACE_HISTORY
+
+* P_PERM_STRING
+
+* P_PICK_MSG
+
+* P_PILE_NAME
+
+* P_PLAYER_LIGHT
+
+* P_PLURAL
+
+* P_POISON
+
+* P_POISON_DELAY
+
+* P_PORTIONS
+
+* P_POST
+
+* P_POTIONROOMS
+
+* P_PRAY_ROOM
+
+* P_PREFERED_ENEMY
+
+* P_PRESAY
+
+* P_PREVENT_PILE
+
+* P_PRE_INFO
+
+* P_PROMPT
+
+* P_PUB_NOT_ON_MENU
+
+* P_PUB_NO_KEEPER
+
+* P_PUB_NO_MONEY
+
+* P_PUB_UNAVAILABLE
+
+* P_PURSUERS
+
+* P_PUT_MSG
+
+* P_QP
+
+* P_QUALITY
+
+* P_QUESTS
+
+* P_QUEST_ITEM
+
+* P_RACE
+
+* P_RACESTRING
+
+* P_RACE_DESCRIPTION
+
+* P_RANGE
+
+* P_READ_DETAILS
+
+* P_READ_NEWS
+
+* P_REAL_RACE
+
+* P_REFERENCE_OBJECT
+
+* P_REJECT
+
+* P_REMOVE_FUNC
+
+* P_REMOVE_MSG
+
+* P_RESET_LIFETIME
+
+* P_RESISTANCE
+
+* P_RESISTANCE_MODIFIER
+
+* P_RESISTANCE_STRENGTHS
+
+* P_RESTRICTIONS
+
+* P_ROOM_MSG
+
+* P_ROOM_TYPE
+
+* P_SB_SPELLS
+
+* P_SCREENSIZE
+
+* P_SECOND
+
+* P_SECOND_MARK
+
+* P_SEERDOORS
+
+* P_SEERDOOR_ALLOWED
+
+* P_SENSITIVE
+
+* P_SENSITIVE_ATTACK
+
+* P_SENSITIVE_INVENTORY
+
+* P_SENSITIVE_INVENTORY_TRIGGER
+
+* P_SHOOTING_AREA
+
+* P_SHOOTING_WC
+
+* P_SHORT
+
+* P_SHORT_CWD
+
+* P_SHOWEMAIL
+
+* P_SHOW_ALIAS_PROCESSING
+
+* P_SHOW_EXITS
+
+* P_SHOW_INV
+
+* P_SHOW_MSG
+
+* P_SIBLINGS
+
+* P_SIZE
+
+* P_SKILLS
+
+* P_SKILL_ATTRIBUTES
+
+* P_SKILL_ATTRIBUTE_OFFSETS
+
+* P_SMELLS
+
+* P_SNOOPFLAGS
+
+* P_SOUNDS
+
+* P_SP
+
+* P_SPECIAL_DETAILS
+
+* P_SPECIAL_EXITS
+
+* P_SPELLRATE
+
+* P_SPELLS
+
+* P_SP_DELAY
+
+* P_START_HOME
+
+* P_STD_OBJECT
+
+* P_STORE_CONSUME
+
+* P_STRETCH_TIME
+
+* P_SUBGUILD_TITLE
+
+* P_SYNTAX_HELP
+
+* P_TARGET_AREA
+
+* P_TEAM
+
+* P_TEAM_ASSOC_MEMBERS
+
+* P_TEAM_ATTACK_CMD
+
+* P_TEAM_AUTOFOLLOW
+
+* P_TEAM_COLORS
+
+* P_TEAM_LEADER
+
+* P_TEAM_NEWMEMBER
+
+* P_TEAM_WANTED_ROW
+
+* P_TEAM_WIMPY_ROW
+
+* P_TELNET_RTTIME
+
+* P_TESTPLAYER
+
+* P_TIMED_ATTR_MOD
+
+* P_TIMEZONE
+
+* P_TITLE
+
+* P_TOO_HEAVY_MSG
+
+* P_TOO_MANY_MSG
+
+* P_TOTAL_AC
+
+* P_TOTAL_LIGHT
+
+* P_TOTAL_OBJECTS
+
+* P_TOTAL_WC
+
+* P_TOTAL_WEIGHT
+
+* P_TOUCH_DETAILS
+
+* P_TPORT_COST_IN
+
+* P_TPORT_COST_OUT
+
+* P_TRANK_FINDEN
+
+* P_TRANSPARENT
+
+* P_TRAVEL_CMDS
+
+* P_TRAVEL_INFO
+
+* P_TRAY
+
+* P_TTY
+
+* P_TTY_COLS
+
+* P_TTY_ROWS
+
+* P_TTY_SHOW
+
+* P_TTY_TYPE
+
+* P_UNIT_DECAY_FLAGS
+
+* P_UNIT_DECAY_INTERVAL
+
+* P_UNIT_DECAY_MIN
+
+* P_UNIT_DECAY_QUOTA
+
+* P_UNWEAR_MSG
+
+* P_UNWIELD_FUNC
+
+* P_UNWIELD_MSG
+
+* P_UNWIELD_TIME
+
+* P_USED_HANDS
+
+* P_VALID_GUILDS
+
+* P_VALUE
+
+* P_VALUE_PER_UNIT
+
+* P_VARIABLES
+
+* P_VISIBLE_GUILD
+
+* P_VISIBLE_SUBGUILD_TITLE
+
+* P_VISUALBELL
+
+* P_VULNERABILITY
+
+* P_WAITFOR
+
+* P_WAITFOR_FLAGS
+
+* P_WAITFOR_REASON
+
+* P_WANTS_TO_LEARN
+
+* P_WATER
+
+* P_WC
+
+* P_WEAPON
+
+* P_WEAPON_TEACHER
+
+* P_WEAPON_TYPE
+
+* P_WEAR_FUNC
+
+* P_WEAR_MSG
+
+* P_WEIGHT
+
+* P_WEIGHT_PERCENT
+
+* P_WEIGHT_PER_UNIT
+
+* P_WIELDED
+
+* P_WIELD_FUNC
+
+* P_WIELD_MSG
+
+* P_WIMPY
+
+* P_WIMPY_DIRECTION
+
+* P_WIZ_DEBUG
+
+* P_WORN
+
+* P_XP
+
+* P_X_ATTR_MOD
+
+* P_X_HEALTH_MOD
+
+* P_ZAP_MSG
+
+* U_REQ
+
+* skill_info_liste
+
+* Verzeichnis der Gilden-Properties
+
+* Verzeichnis der obsoleten Properties
diff --git a/doc/sphinx/man/props-obsolet b/doc/sphinx/man/props-obsolet
new file mode 100644
index 0000000..a7e8edd
--- /dev/null
+++ b/doc/sphinx/man/props-obsolet
@@ -0,0 +1,29 @@
+
+Verzeichnis der obsoleten Properties
+************************************
+
+* P_BALANCED_WEAPON
+
+* P_DEFAULT_INFO
+
+* P_LAST_KILLER
+
+* P_LAST_PEACE_TIME
+
+* P_LOG_FILE
+
+* P_NEXT_SPELL_TIME
+
+* P_READ_MSG
+
+* P_TECHNIQUE
+
+* P_TMP_ATTACK_HOOK
+
+* P_TMP_ATTACK_MOD
+
+* P_TMP_DEFEND_HOOK
+
+* P_TMP_DIE_HOOK
+
+* P_TMP_MOVE_HOOK
diff --git a/doc/sphinx/man/props.index b/doc/sphinx/man/props.index
new file mode 100644
index 0000000..b63a77e
--- /dev/null
+++ b/doc/sphinx/man/props.index
@@ -0,0 +1,159 @@
+
+Properties
+**********
+
+Properties sind im MG Eigenschaften eines Objektes, welche von (in der
+Regel) von aussen gesetzt werden koennen (im Gegensatz zu Variablen
+innerhalb von Objekten).
+
+
+BESCHREIBUNG:
+=============
+
+Im Gegensatz zu Variablen innerhalb eines Objektes, kann man
+Properties von aussen veraendern, ohne eine besondere Funktion
+geschrieben zu haben.
+
+
+Das zugrundeliegende Prinzip
+----------------------------
+
+      Das grundlegende Konzept der MUDlib ist, dass wichtige,
+      objektbezogene Informationen in den sogenannnten Properties
+      gespeichert werden (engl. property -- Eigenschaft, Eigentum).
+      Diese Informationen koennen einfache Werte, wie z.B. Zahlen,
+      Zeichen oder Objekte, aber auch kompliziertere Strukturen sein.
+      Jedes Objekt kann beliebig viele solcher Properties besitzen und
+      deren Namensgebung ist nicht nur auf die von der MUDlib
+      bereitgestellten Standardproperties begrenzt. Das heisst, das
+      fuer eigene Anwendungen die Menge der Properties fuer ein Objekt
+      beliebig erweitert werden kann. Damit sind auch schon die beiden
+      Hauptmerkmale einer Property ange- sprochen:
+
+      1. ein Name oder Kennung und
+
+      2. ein Wert, der durch den Namen repraesentiert wird.
+
+   Das reine Verwalten einer Property mit Namen und Wert ist aber
+   nicht sehr sinnvoll und so gehoeren zu jeder Property noch zwei
+   weitere wichtige Dinge. Zu jeder Property wurden jeweils zwei
+   Operationen eingefuehrt, welche den uebergebenen Wert vor der
+   Speicherung oder Abfrage bearbeiten.
+
+   Zusammenfassend laesst sich das Konzept der Property in folgendem
+   Schema darstellen:
+
+      +-------------------------------------------+
+      | Property                                  |
+      +-------------------------------------------+
+      | privater Datenbereich (Property Werte)    |
+      +-------------------------------------------+
+      | Direktzugriff auf den Datenbereich        |
+      +-------------------------------------+     |
+      |     ^       Methoden       v        | ^ v |
+      |   Setzen       |        Abfragen    |     |
+      +-------------------------------------+-----+
+            ^                      |
+            |                      V
+         SetProp()             QueryProp()
+
+   Aus dem Schema laesst sich Folgendes erkennen
+
+   * beim Setzen und Abfragen wird der Wert einer Methode
+     uebergeben, die den Wert zurueckgibt oder ggf. die Aenderungen
+     vornimmt
+
+   * ein direkter Zugriff auf den Wert der ist ebenfalls moeglich,
+     sollte aber nicht der Normalfall sein, da die Methoden
+     Nebeneffekte erzeugen
+
+   * in bestimmten Faellen kann man den aeusserlich aendernden
+     Zugriff vollkommen unterbinden (NOSETMETHOD, PROTECT) (VORSICHT
+     bei mappings/arrays, diese werden bei QueryProp() als Referenz
+     zurueckgegeben, sind also so aenderbar)
+
+
+Implementation
+--------------
+
+   Die Klasse /std/thing/properties.c stellt folgende Funktionen fuer
+   die Behandlung von Properties bereit:
+
+   * Normaler Zugriff
+
+     * "mixed SetProp(<name>, <wert>)" setzt den Wert von <name> auf
+       <wert>
+
+     * "mixed QueryProp(<name>)" gibt den Wert von <name> zurueck
+
+   * Direkter Zugriff
+
+     * "mixed Set(<name>, <wert>, <interpretation>)" wird genutzt,
+       um eines der folgenden zu setzen:
+
+          * den normalen Wert (aber fast immer besser: *SetProp()*
+            verwenden!)
+
+          * eine Query- oder Setmethode
+
+          * ein Flag/Modus: Speicherstatus/Zugriffsschutz
+
+     * "mixed Query(<name>, <interpretation>)" fragt fuer <name>
+       einen <wert> ab
+
+       * den normalen Wert (aber fast immer besser: *QueryProp()*
+         verwenden!)
+
+       * die Closure der Query- oder Setmethode
+
+       * den Modus der Property
+
+
+Besonderheiten/Eingebaute Properties
+------------------------------------
+
+   Existiert zu einer Property eine Funktion mit dem selben Namen und
+   einem "_set_" bzw "_query_" davor, so wird nicht auf die das
+   Property-Mapping zugegriffen, sondern es werden die Argumente an
+   diese Funktion uebergeben und der Rueckgabewert dieser Funktion
+   zurueckgegeben.
+
+   * Vorteile
+
+        * so kann man Daten, die schnell verfuegbar sein muessen,
+          (bei denen also Effizienz gegen SetProp/QueryProp spricht)
+          trotzdem nach aussen einheitlich zugreifbar machen
+
+   * Nachteile
+
+        * nicht wirklich sauber
+
+        * Speichern muss man selbst vornehmen
+
+        * Set/Query gehen wie auch bei Methoden an _set_*/_query_*
+          vorbei
+
+        * dieses Verhalten sollte der Mudlib vorbehalten bleiben,
+          fuer eigene Prueffunktionen (wird etwas gesetzt/abgefragt)
+          bzw. Aenderungen sollte man Methoden
+          (F_SET_METHOD/F_QUERY_METHOD) benutzen
+
+
+SIEHE AUCH:
+===========
+
+* *SetProp()*, *QueryProp()*, *Set()*, *Query()*,
+
+* *SetProperties()*, *QueryProperties()*
+
+* objekte, effizienz, closures
+
+
+Gesamtverzeichnis der dokumentierten Properties:
+================================================
+
+* Propertyliste
+
+* Verzeichnis der Gilden-Properties
+
+* Verzeichnis der obsoleten Properties
diff --git a/doc/sphinx/man/props/P_ABILITIES b/doc/sphinx/man/props/P_ABILITIES
new file mode 100644
index 0000000..b852bdf
--- /dev/null
+++ b/doc/sphinx/man/props/P_ABILITIES
@@ -0,0 +1,22 @@
+
+P_ABILITIES
+***********
+
+
+NAME
+====
+
+   P_ABILITIES                   "abilities"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! ***
+   Siehe P_NEWSKILLS.
diff --git a/doc/sphinx/man/props/P_AC b/doc/sphinx/man/props/P_AC
new file mode 100644
index 0000000..e9eda47
--- /dev/null
+++ b/doc/sphinx/man/props/P_AC
@@ -0,0 +1,44 @@
+
+P_AC
+****
+
+
+NAME
+====
+
+   P_AC "ac"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property beschreibt die Ruestungsklasse (engl: armour class),
+   also den Schutz, den die Ruestung dem Traeger verleiht. Je hoeher der
+   Wert (als Zahl), um so besser ist die Ruestung. Negative Werte bewirken
+   negativen Schutz, d.h. der Schaden wird vergroessert statt verringert.
+
+
+BEMERKUNGEN
+===========
+
+   Query- und Setmethoden auf P_AC sollten unbedingt vermieden werden. Sie
+   fuehren in der Regel zu massiven Inkonsistenzen im Mechanismus der
+   Ruestungsbeschaedigung und -reparatur.
+   Fuer jeden Ruestungstyp ist in <combat.h> eine Obergrenze definiert,
+   die man nicht ueberschreiten darf.
+   Ruestungen vom Typ AT_MISC haben immer AC 0 und werden mit keinen
+   hoeheren Werten genemigt.
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, P_DAMAGED, Damage() P_TOTAL_AC
+
+02.10.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_ACCEPT_PEACE b/doc/sphinx/man/props/P_ACCEPT_PEACE
new file mode 100644
index 0000000..214dc06
--- /dev/null
+++ b/doc/sphinx/man/props/P_ACCEPT_PEACE
@@ -0,0 +1,37 @@
+
+P_ACCEPT_PEACE
+**************
+
+
+PROPERTY
+========
+
+   P_ACCEPT_PEACE                           "accept_peace"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Mittels setzen Dieser Prop lassen sich leicht NPCs bauen,
+   die von jedem zu befrieden sind. Wenn die Property == 1 ist,
+   ist der NPC immer wieder befriedbar, sonst fuehrt der NPC das
+   uebliche Verhalten aus.
+
+
+SIEHE AUCH
+==========
+
+   QueryPacify(),
+   P_PEACE_HISTORY
+
+
+LETZTE AENDERUNG
+================
+
+01.05.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_ACHATS b/doc/sphinx/man/props/P_ACHATS
new file mode 100644
index 0000000..c62e357
--- /dev/null
+++ b/doc/sphinx/man/props/P_ACHATS
@@ -0,0 +1,21 @@
+
+P_ACHATS
+********
+
+
+NAME
+====
+
+   P_ACHATS                      "achats"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Chats, die das Monster im Kampf ausgibt.
diff --git a/doc/sphinx/man/props/P_ACHAT_CHANCE b/doc/sphinx/man/props/P_ACHAT_CHANCE
new file mode 100644
index 0000000..fc28ac9
--- /dev/null
+++ b/doc/sphinx/man/props/P_ACHAT_CHANCE
@@ -0,0 +1,21 @@
+
+P_ACHAT_CHANCE
+**************
+
+
+NAME
+====
+
+   P_ACHAT_CHANCE                "achat_chance"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wahrscheinlichkeit fuer die Attack-Chat-Ausgabe.
diff --git a/doc/sphinx/man/props/P_ACTUAL_NOTIFY_FAIL b/doc/sphinx/man/props/P_ACTUAL_NOTIFY_FAIL
new file mode 100644
index 0000000..0c9acd1
--- /dev/null
+++ b/doc/sphinx/man/props/P_ACTUAL_NOTIFY_FAIL
@@ -0,0 +1,51 @@
+
+P_ACTUAL_NOTIFY_FAIL
+********************
+
+********************** VERALTETE PROPERTY
+*********************************
+
+
+NAME
+====
+
+   P_ACTUAL_NOTIFY_FAIL          "actual_notify_fail"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+ACHTUNG
+=======
+
+   Diese Prop wird nicht mehr gesetzt (und auch nicht mehr abgefragt), da LD
+   eine efun hat, um das Objekt zu ermitteln, was als letztes ein
+   notify_fail() gesetzt hat, ein Speichern im Spieler also voellig
+   ueberfluessig ist.
+
+
+BESCHREIBUNG
+============
+
+   Ist im Spielerobjekt  gesetzt und enthaelt das Objekt, welches zuletzt
+   eine Fehlermeldung mit notify_fail()/_notify_fail() erfolgreich
+   waehrend des aktuellen Kommandos abgespeichert hat.
+
+
+BEMERKUNGEN
+===========
+
+   Dient dazu, bei _notify_fail() zu ueberpruefen, ob schon vorher eine
+   Fehlermeldung gesetzt wurde.
+
+
+SIEHE AUCH
+==========
+
+   AddCmd(), add_action()
+   notify_fail(), _notify_fail()
+
+10.03.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_ADJECTIVES b/doc/sphinx/man/props/P_ADJECTIVES
new file mode 100644
index 0000000..1c8ccb6
--- /dev/null
+++ b/doc/sphinx/man/props/P_ADJECTIVES
@@ -0,0 +1,38 @@
+
+P_ADJECTIVES
+************
+
+
+NAME
+====
+
+   P_ADJECTIVES "adjectives"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Hier steht ein Array von Strings, welche die Identifizierung des
+   Objektes ergaenzen. Die Verwaltung erfolgt ueber die Funktionen
+   AddAdjective() und RemoveAdjective().
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte an dieser Property nicht "von Hand" herumfummeln, sondern
+   immer die zugehoerigen Funktionen benutzen!
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, AddAdjective(), RemoveAdjective()
+
+Last modified: Sun May 19 20:22:24 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_AERIAL_HELPERS b/doc/sphinx/man/props/P_AERIAL_HELPERS
new file mode 100644
index 0000000..781510c
--- /dev/null
+++ b/doc/sphinx/man/props/P_AERIAL_HELPERS
@@ -0,0 +1,63 @@
+
+P_AERIAL_HELPERS
+****************
+
+
+NAME
+====
+
+   P_AERIAL_HELPERS "lib_p_aerial_helpers"
+
+
+DEFINIERT IN
+============
+
+   <living/helpers.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
+   zu ermitteln, die fuer die Unterstuetzung beim Fliegen/Segeln bei diesem
+   Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
+   Form zurueckgeliefert:
+   ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
+   Eine Erlaeuterung dazu findet sich in der Dokumentation zu
+   RegisterHelperObject().
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property kann nur abgefragt werden.
+   Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche
+   Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.
+
+
+BEISPIEL
+========
+
+   Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das
+   beim Fliegen hilft, sucht man alle Objekte aus dem Mapping heraus, die
+   einen Wert >0 eingetragen haben und prueft deren Anzahl:
+
+   mapping aerial = this_player()->QueryProp(P_AERIAL_HELPERS);
+   object* helpers = filter( aerial, function int (object h) {
+                       return (aerial[h]>0); });
+   if ( sizeof(helpers) ) {
+     tell_object(this_player(), "Du erhebst Dich mit Hilfe "+
+       helpers[0]->name(WESSEN,1)+" elegant in die Luefte.\n");
+   }
+   else {
+     tell_object(this_player(), "Du hast nichts zum Fliegen bei Dir.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
+   Properties:  P_HELPER_OBJECTS, P_AQUATIC_HELPERS
+
+12.03.2016, Arathorn
diff --git a/doc/sphinx/man/props/P_AGE b/doc/sphinx/man/props/P_AGE
new file mode 100644
index 0000000..e35473c
--- /dev/null
+++ b/doc/sphinx/man/props/P_AGE
@@ -0,0 +1,21 @@
+
+P_AGE
+*****
+
+
+NAME
+====
+
+   P_AGE                         "age"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Alter des Spielers in Heart-Beats (1 HB == 2 Sekunden)
diff --git a/doc/sphinx/man/props/P_AGGRESSIVE b/doc/sphinx/man/props/P_AGGRESSIVE
new file mode 100644
index 0000000..5184687
--- /dev/null
+++ b/doc/sphinx/man/props/P_AGGRESSIVE
@@ -0,0 +1,55 @@
+
+P_AGGRESSIVE
+************
+
+
+NAME
+====
+
+   P_AGGRESSIVE                  "aggressive"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn das Wesen von sich aus Angriffe startet.
+
+   Ueblicherweise nimmt man als Wert 1, man kann jedoch auch
+   einen kleineren Wert nehmen wenn es nur mit einer bestimmten
+   Wahrscheinlichkeit automatisch angreifen soll.
+
+   Der Wert von Spieler und Monster wird addiert, um zu entscheiden,
+   ob ein Spieler angegriffen werden soll, man kann P_AGGRESSIVE
+   also auch bei Spielern setzen, so dass sie von allen Monstern
+   angegriffen werden.
+
+   Bei Monstern (und NUR bei diesen) kann man hier auch ein Mapping
+   angeben, das als Keys Namen von Properties des Spielers enthaelt
+   und als Values Mappings, in denen steht welcher Wert bei welchen
+   Wert fuer die Property genommen werden soll (Beispiele folgen).
+   Mit Key 0 kann man einen Default-Wert (sowohl in inneren Mappings
+   wie auch im aeusseren Mapping) festlegen. Default-Werte werden
+   genommen, falls keine anderen gesetzt sind, also Vorsicht mit
+   0-Eintraegen (Tip: 0.0 ist in LPC ungleich 0).
+   Bei mehreren Properties werden alle gesetzten Werte gemittelt.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_AGGRESSIVE,([P_RACE:(["Zwerg":1, "Elf":0.0, 0:0.5])]))
+   Zwerge werden immer automatisch angegriffen, Elfen nie und
+   alle anderen mit 50% Wahrscheinlichkeit.
+   Man beachte, dass hier 0.0 genommen werden musste anstelle von 0,
+   weil sonst Elfen auch 50% Wahrscheinlichkeit bekommen haetten.
+
+   SetProp(P_AGGRESSIVE,([P_RACE:(["Zwerg":0.3]),
+                          P_GUILD:(["Chaos":0.7])]))
+   Zwerge werden mit 30% Wahrscheinlichkeit angegriffen,
+   Chaoten mit 70% und Zwerg-Chaoten mit 50%.
diff --git a/doc/sphinx/man/props/P_ALCOHOL b/doc/sphinx/man/props/P_ALCOHOL
new file mode 100644
index 0000000..d827a94
--- /dev/null
+++ b/doc/sphinx/man/props/P_ALCOHOL
@@ -0,0 +1,36 @@
+
+P_ALCOHOL
+*********
+
+
+NAME
+====
+
+   P_ALCOHOL                  "alcohol"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Numerischer Wert fuer den Grad der Betrunkenheit eines Lebewesens.
+     Der maximale Wert steht in P_MAX_ALCOHOL.
+
+   - Speisen/Kneipen
+     Numerischer Wert fuer den Grad, den eine Portion der Speise den
+     Konsumenten betrunken macht
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_ALCOHOL, P_ALCOHOL_DELAY, consume,
+   P_FOOD, P_DRINK, wiz/food,
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_ALCOHOL_DELAY b/doc/sphinx/man/props/P_ALCOHOL_DELAY
new file mode 100644
index 0000000..6ea0513
--- /dev/null
+++ b/doc/sphinx/man/props/P_ALCOHOL_DELAY
@@ -0,0 +1,23 @@
+
+P_ALCOHOL_DELAY
+***************
+
+
+NAME
+====
+
+   P_ALCOHOL_DELAY                 "alcohol_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_ALCOHOL um einen Punkt sinkt.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/sphinx/man/props/P_ALC_FULL_MSG b/doc/sphinx/man/props/P_ALC_FULL_MSG
new file mode 100644
index 0000000..5df4b65
--- /dev/null
+++ b/doc/sphinx/man/props/P_ALC_FULL_MSG
@@ -0,0 +1,45 @@
+
+P_ALC_FULL_MSG
+**************
+
+
+NAME
+====
+
+   P_ALC_FULL_MSG                "std_food_alc_full_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn Alkohol konsumiert werden soll,
+   obwohl dieser nicht mehr Alkohol vertraegt.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Soviel Alkohol vertraegst Du nicht mehr."
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, P_MAX_ALCOHOL, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_ALIGN b/doc/sphinx/man/props/P_ALIGN
new file mode 100644
index 0000000..d4ca76c
--- /dev/null
+++ b/doc/sphinx/man/props/P_ALIGN
@@ -0,0 +1,29 @@
+
+P_ALIGN
+*******
+
+
+NAME
+====
+
+   P_ALIGN                       "align"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer Gut- oder Boesheit des Wesens.
+
+   Kann Werte von -1000 (Boese wie der Teufel hoechstpersoenlich)
+   bis +1000 (Jesus, bist Du's ?) annehmen.
+
+   Werte ausserhalb dieser Skala werden zwar teilweise verwendet,
+   das Setzen derselben sollte jedoch UNBEDINGT unterbleiben.
+
+Last modified: Sat Jul 12 17:00:00 by Mandragon
diff --git a/doc/sphinx/man/props/P_ALLOWED_SHADOW b/doc/sphinx/man/props/P_ALLOWED_SHADOW
new file mode 100644
index 0000000..5d849b7
--- /dev/null
+++ b/doc/sphinx/man/props/P_ALLOWED_SHADOW
@@ -0,0 +1,38 @@
+
+P_ALLOWED_SHADOW
+****************
+
+
+NAME
+====
+
+   P_ALLOWED_SHADOW              "allowed_shadow"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise koennen nur Shadows an Spieler gebunden werden, die in
+   /std/player/shadows/ liegen.
+
+
+
+   Zu Testzwecken kann in dieser Property der Pfad eines Shadows eingetragen
+   werden. Damit wird die oben beschriebene Regel fuer diesen Spieler und
+   diesen Shadow ausser Kraft gesetzt.
+
+BEMERKUNG:
+
+   Der Spieler muss ein Testspieler sein. Ansonsten wird diese
+   Property ignoriert.
+
+   Die Property ist secured gesetzt. Das heisst, nur EM+ koennen diese
+   Property setzen und loeschen.
+
+Last modified: Sun Mar 21 00:27:46 2004 by Vanion
diff --git a/doc/sphinx/man/props/P_AMMUNITION b/doc/sphinx/man/props/P_AMMUNITION
new file mode 100644
index 0000000..cbe7f56
--- /dev/null
+++ b/doc/sphinx/man/props/P_AMMUNITION
@@ -0,0 +1,62 @@
+
+P_AMMUNITION
+************
+
+
+NAME
+====
+
+   P_AMMUNITION     "munition"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die fuer eine Waffe gueltige Munition als String. Die
+   Munition muss diesen String als ID besitzen.
+
+   Fuer die Munitionsobjekte gilt:
+   * es kann ein Skill am Spieler definiert werden, dieser wirkt dann
+     zusaetzlich zum generellen SK_SHOOT-Skill.
+   * sie koennen eine HitFunc besitzten, die beim Schuss abgefragt wird
+
+
+BEMERKUNGEN
+===========
+
+   Bitte das #define MUN_MISC(x) benutzen. Munition sollte auch immer
+   in Deutsch und Plural angegeben werden, da P_AMMUNITION direkt
+   fuer Ausgaben an den Spieler ausgewertet wird.
+
+   Momentan sind vier Munitionsarten in der combat.h vordefiniert:
+   MUN_ARROW, MUN_STONE, MUN_BOLT, MUN_MISC
+
+
+BEISPIELE
+=========
+
+   // fuer ein kleines Blasrohr im Blasrohr
+   SetProp(P_AMMUNITION, MUN_MISC("Erbsen"));
+
+   // Entsprechend in der Munition:
+   AddId(MUN_MISC("Erbsen"));
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Waffen:    P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
+   Kampf:     Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
+   Team:      PresentPosition(L)
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_AMOUNT b/doc/sphinx/man/props/P_AMOUNT
new file mode 100644
index 0000000..5c0e51a
--- /dev/null
+++ b/doc/sphinx/man/props/P_AMOUNT
@@ -0,0 +1,21 @@
+
+P_AMOUNT
+********
+
+
+NAME
+====
+
+   P_AMOUNT                      "amount"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Objekte, fuer die das Objekt steht.
diff --git a/doc/sphinx/man/props/P_AQUATIC_HELPERS b/doc/sphinx/man/props/P_AQUATIC_HELPERS
new file mode 100644
index 0000000..8429a41
--- /dev/null
+++ b/doc/sphinx/man/props/P_AQUATIC_HELPERS
@@ -0,0 +1,64 @@
+
+P_AQUATIC_HELPERS
+*****************
+
+
+NAME
+====
+
+   P_AQUATIC_HELPERS "lib_p_aquatic_helpers"
+
+
+DEFINIERT IN
+============
+
+   <living/helpers.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
+   zu ermitteln, die fuer die Unterstuetzung beim Tauchen bei diesem
+   Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
+   Form zurueckgeliefert:
+   ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
+   Eine Erlaeuterung dazu findet sich in der Dokumentation zu
+   RegisterHelperObject().
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property kann nur abgefragt werden.
+   Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche
+   Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.
+
+
+BEISPIEL
+========
+
+   Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das
+   beim Tauchen hilft, sucht man alle Objekte aus dem Mapping heraus, die
+   einen Wert >0 eingetragen haben und prueft deren Anzahl:
+
+   mapping aquatic = this_player()->QueryProp(P_AQUATIC_HELPERS);
+   object* helpers = filter( aquatic, function int (object h) {
+                       return (aquatic[h]>0); });
+   if ( sizeof(helpers) ) {
+     tell_object(this_player(), "Du stuerzt Dich in die Fluten und "
+       "stellst ueberrascht fest, dass Du mit Hilfe "+
+       helpers[0]->name(WESSEN,1)+" sogar unter Wasser atmen kannst!\n");
+   }
+   else {
+     tell_object(this_player(), "Du hast nichts zum Tauchen bei Dir.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS
+
+06.04.2016, Arathorn
diff --git a/doc/sphinx/man/props/P_ARMOURS b/doc/sphinx/man/props/P_ARMOURS
new file mode 100644
index 0000000..e0d6a0c
--- /dev/null
+++ b/doc/sphinx/man/props/P_ARMOURS
@@ -0,0 +1,41 @@
+
+P_ARMOURS
+*********
+
+
+NAME
+====
+
+   P_ARMOURS                     "armours"
+
+
+DEFINIERT IN
+============
+
+   <living/combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Array mit den getragenen Schutzbekleidungen des Lebewesen.
+
+   Bitte nach Moeglichkeit davon absehen, diese Property zu beschreiben, da
+   es hierbei zu Inkonsistenzen kommen kann.
+
+
+
+   Falls ihr die Ruestungen des Lebewesens, ggf. mit bestimten Kriterien,
+   ermitteln wollt, benutzt hierfuer bitte die Funktion FilterArmours()
+   statt selber ueber dieses Array zu laufen.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:          QueryArmourByType(L), P_WEAPON, FilterClothing(),
+                FilterArmours()
+   Ruestungen:        P_AC, P_ARMOUR_TYPE, P_NR_HANDS
+   Sonstiges:         P_EQUIP_TIME, P_LAST_USE
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_ARMOUR_TYPE b/doc/sphinx/man/props/P_ARMOUR_TYPE
new file mode 100644
index 0000000..19e6812
--- /dev/null
+++ b/doc/sphinx/man/props/P_ARMOUR_TYPE
@@ -0,0 +1,63 @@
+
+P_ARMOUR_TYPE
+*************
+
+
+NAME
+====
+
+   P_ARMOUR_TYPE "armour_type"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird der Typ einer Ruestung festgehalten. Man sollte
+   hier nur die in <combat.h> definierten Konstanten verwenden:
+
+      AT_AMULET     Amulett
+      AT_ARMOUR     Ruestung
+      AT_BELT       Guertel
+      AT_BOOT       Schuhe
+      AT_CLOAK      Umhang
+      AT_GLOVE      Handschuhe
+      AT_HELMET     Helm
+      AT_QUIVER     Koecher
+      AT_RING       Ring
+      AT_SHIELD     Schild
+      AT_TROUSERS   Hosen
+      AT_MISC       Sonstiges
+
+   Der Ruestungstyp AT_MISC ist schnoedem Tand und anderem nutzlosen
+   Kram vorbehalten. Auf keinen Fall darf eine AT_MISC-Ruestung ueber
+   eine AC > 0 verfuegen noch irgendwie kampfrelevante Bedeutung be-
+   sitzen. Ruestungen des Typs AT_MISC, die KEINE DefendFunc benoetigen,
+   muessen mittels /std/clothing als einfaches Kleidungsstueck realisiert
+   werden.
+
+
+BEMERKUNGEN
+===========
+
+   Die P_AC wird bei AT_MISC-Ruestungen gar nicht erst ausgewertet.
+   DefendFuncs werden zwar ausgewertet, aber bitte ueberlegt euch gut, ob
+   ihr sie braucht (Rechenzeit im Kampf ist kritisch!) und ob sie seitens
+   der Balance in eurem Fall erlaubt sind.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:          QueryArmourByType(L), P_WEAPON
+   Ruestungen:        P_AC, P_NR_HANDS (Schilde)
+   Sonstiges:         P_EQUIP_TIME, P_LAST_USE
+   Code:              /std/armour.c, /std/clothing.c
+   Gildenergaenzung:  P_GLOVE_FINGERLESS
+
+27. Mai 2015, Arathorn
diff --git a/doc/sphinx/man/props/P_ARRIVEMSG b/doc/sphinx/man/props/P_ARRIVEMSG
new file mode 100644
index 0000000..cdafdaa
--- /dev/null
+++ b/doc/sphinx/man/props/P_ARRIVEMSG
@@ -0,0 +1,21 @@
+
+P_ARRIVEMSG
+***********
+
+
+NAME
+====
+
+   P_ARRIVEMSG                   "arrivemsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, wenn der Transporter anlegt.
diff --git a/doc/sphinx/man/props/P_ARTICLE b/doc/sphinx/man/props/P_ARTICLE
new file mode 100644
index 0000000..2bf2c54
--- /dev/null
+++ b/doc/sphinx/man/props/P_ARTICLE
@@ -0,0 +1,28 @@
+
+P_ARTICLE
+*********
+
+
+NAME
+====
+
+   P_ARTICLE                     "article"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/language.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, ob in der Beschreibung ein Artikel ausgegeben werden soll
+   oder nicht.
+
+   Wenn ein Artikel angegeben werden soll, so wird 1 gesetzt, sonst 0.
+   Diese Property ist aus historischen Gruenden auf 1 voreingestellt
+   und intern invertiert. (d.h., beim Auslesen per Query kommt als
+   Ergebnis genau das falsche heraus). Bitte beachtet das bei Set- bzw.
+   Query-Funktionen.
diff --git a/doc/sphinx/man/props/P_ATTACK_BUSY b/doc/sphinx/man/props/P_ATTACK_BUSY
new file mode 100644
index 0000000..dfc8ba6
--- /dev/null
+++ b/doc/sphinx/man/props/P_ATTACK_BUSY
@@ -0,0 +1,67 @@
+
+P_ATTACK_BUSY
+*************
+
+
+NAME
+====
+
+   P_ATTACK_BUSY                 "attack_busy"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Ueber diese Property kann festgestellt werden, ob ein Spieler noch
+   Spezialwaffen (zB Flammenkugel) einsetzen kann.
+
+
+
+   Ist der Wert bei Abfrage ungleich 0, dann darf der Spieler in dieser
+   Runde keine Aktion mehr durchfuehren. Mit SetProp(P_ATTACK_BUSY, 1)
+   wird eine Aktion verbraucht.
+
+   Intern wird relativ fein gerechnet, ein SetProp(P_ATTACK_BUSY, x)
+   wird in das Abziehen von x*100 Punkten umgerechnet. Der Wert freier
+   Aktionen pro Runde berechnet sich wie folgt:
+
+
+
+   Spieler: 100 + QuerySkillAttribute(SA_SPEED)
+   Seher:   Spieler + 200 + QueryProp(P_LEVEL)
+
+   Das Maximum liegt bei 500.
+   Damit betraegt die Anzahl der moeglichen Aktionen pro Runde: Wert/100,
+   also maximal 5 Aktionen pro Runde.
+
+   Zaubersprueche zaehlen im Normalfall auch als eine Aktion.
+
+
+BEMERKUNGEN
+===========
+
+   Benutzt man P_ATTACK_BUSY fuer eine sich nicht sofort verbrauchende
+   Sache, kann ein Seher dieses Objekt im Normalfall dreimal pro Runde
+   benutzen. Wenn ungewollt, muss das ueber einen Zeitmarker selbst
+   verhindert werden.
+
+
+BEISPIELE
+=========
+
+   (Code eines Objektes ist in
+    /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c)
+   // einfacher Test auf ATTACK_BUSY und anschliessendes Setzen
+   if (this_player()->QueryProp(P_ATTACK_BUSY)) {
+     write("Du hast dafuer momentan einfach nicht mehr die Puste.\n");
+     return 1;
+   }
+   this_player()->SetProp(P_ATTACK_BUSY, 1);
+
+7. Mar 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_ATTRIBUTES b/doc/sphinx/man/props/P_ATTRIBUTES
new file mode 100644
index 0000000..ed5dd1c
--- /dev/null
+++ b/doc/sphinx/man/props/P_ATTRIBUTES
@@ -0,0 +1,79 @@
+
+P_ATTRIBUTES
+************
+
+
+NAME
+====
+
+   P_ATTRIBUTES                    "attributes"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping mit den Attributen des
+   Lebewesens. Die Schluessel kennzeichnen hierbei das jeweilige
+   Attribut. Die verschiedenen Standardattribute findet man in
+   /sys/living/attributes.h, welche derzeit folgende Moeglichkeiten
+   bieten: - A_STR (Kraft)
+           - A_INT (Intelligenz)
+           - A_DEX (Geschick)
+           - A_CON (Konstitution)
+   Sie werden automatisch an verschiedenen Stellen in der MUDLib
+   ausgewertet, zum Beispiel bestimmt A_INT die maximal moeglichen
+   Konzentrationspunkte und A_CON die maximal moeglichen Lebenspunkte.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property, _query_attributes() und _set_attributes() sind
+   in /std/living/attributes.c implementiert.
+
+   Es bietet sich an, zum Erfragen der Attributwerte die Funktion
+   QueryAttribute() zu nutzen, da es auch moegliche Offsets gibt,
+   so beispielsweise ueber die Properties P_ATTRIBUTES_OFFSETS bzw.
+   P_ATTRIBUTES_MODIFIER im Lebewesen selbst, oder auch ueber
+   P_X_ATTR_MOD bzw. P_M_ATTR_MOD in Objekten im Lebewesen.
+   Kurzfristige zeit- oder objektgebundene Attributveraenderungen
+   koennen ueber die Property P_TIMED_ATTR_MOD realisiert werden.
+
+   Es gibt auch zahlreiche andere Dienstfunktionen fuer diesen sehr
+   balancekritischen Bereich, siehe unten.
+
+
+BEISPIEL
+========
+
+   Ein moegliches Ergebnis fuer einen frischen Level 1 Spieler waere:
+     QueryProp(P_ATTRIBUTES);
+     Ergebnis: (["int":1,"con":1,"str":1,"dex":1])
+   Hinzu kommen eventuell moegliche Rassenboni, die mittels
+   P_ATTRIBUTE_OFFSETS realisiert werden, Zwerge sind beispielsweise
+   recht stark:
+     QueryProp(P_ATTRIBUTES_OFFSETS);
+     Ergebnis: (["int":1,"con":1,"str":1,"dex":3])
+   Jetzt bekaeme man (sofern keine weiteren Offsets realisiert sind)
+   mittels QueryAttribute() insgesamt:
+     QueryAttribute(A_DEX);
+     Ergebnis: 4
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/props/P_ATTRIBUTES_MODIFIER b/doc/sphinx/man/props/P_ATTRIBUTES_MODIFIER
new file mode 100644
index 0000000..ab9f24d
--- /dev/null
+++ b/doc/sphinx/man/props/P_ATTRIBUTES_MODIFIER
@@ -0,0 +1,78 @@
+
+P_ATTRIBUTES_MODIFIER
+*********************
+
+
+NAME
+====
+
+   P_ATTRIBUTES_MODIFIER         "attributes_modifier"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property werden Attribut-Modifikatoren gespeichert, die
+   laengere Zeit wirksam sein sollen, tlw. auch ueber einen Reboot
+   hinweg.
+   Intern werden die Modifikatoren in einem Mapping der Form
+
+       ([ Setzer-Key : ([ A_xy : Wert, ... ]) , ... ])
+
+   gespeichert. Das Setzen folg hingegen in der Form
+
+       spieler->SetProp(P_ATTRIBUTES_MODIFIER, ([ A_xy : Wert, ... ]));
+   oder
+       spieler->SetProp(P_ATTRIBUTES_MODIFIER, ({ Setzer-Key, ([ ... ]) }));
+
+   Bei der ersten Variante wird hierbei der Filename des setzenden Objektes
+   als Setzer-Key genommen.
+   Es koennen also durchaus von mehreren Objekten Modifier gesetzt werden.
+   Bekannte Modifier sind:
+
+       #death      Attribut-Abzug durch Todesfolgen      (Mudlib)
+       #drain      Statabzug durch NPCs                  (Paracelsus)
+       #frosch     Staerken-Abzug bei Froeschen          (Mudlib)
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property, _query_attributes_modifier() und
+   _set_attributes_modifier() sind in /std/living/attributes.c
+   implementiert
+   - SetProp/QueryProp nutzen!
+   - Wenn ein Modifier nicht mehr gebracht wird, nicht die Attributswerte auf
+     0 setzen, sondern den ganzen Eintrag! also:
+     SetProp(P_ATTRIBUTES_MODIFIER, ([]) );
+     oder: SetProp(P_ATTRIBUTES_MODIFIER, 0 );
+     aber nicht: SetProp(P_ATTRIBUTES_MODIFIER, ([A_STR:0]));
+
+
+BEISPIELE
+=========
+
+   // ein Bonus ... 'ende'-fest (muss also per uid gesichert werden)
+   player->SetProp(P_ATTRIBUTES_MODIFIER,
+                   ({"g_klerus_segen", ([A_CON:5, A_INT:5])}));
+   ...
+   player->SetProp(P_ATTRIBUTES_MODIFIER, ({"g_klerus_segen", 0}));
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/props/P_ATTRIBUTES_OFFSETS b/doc/sphinx/man/props/P_ATTRIBUTES_OFFSETS
new file mode 100644
index 0000000..dfcbb8c
--- /dev/null
+++ b/doc/sphinx/man/props/P_ATTRIBUTES_OFFSETS
@@ -0,0 +1,46 @@
+
+P_ATTRIBUTES_OFFSETS
+********************
+
+
+NAME
+====
+
+   P_ATTRIBUTES_OFFSETS            "attributes_offsets"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping mit Offsets, die zu den
+   Attributen eine Lebewesens addiert werden. Diese koennen auch
+   negativ sein! Realisiert werden damit beispielsweise Rassenboni.
+   Es gibt noch weitere Moeglichkeiten, Attributoffsets anzugeben.
+   Fuer weiteres siehe P_ATTRIBUTES.
+
+
+BEMKERUNGEN
+===========
+
+   Keine echte Property, _query_attributes_offsets() und
+   _set_attributes_offsets() sind in /std/living/attributes.c
+   implementiert.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/props/P_AUTH_INFO b/doc/sphinx/man/props/P_AUTH_INFO
new file mode 100644
index 0000000..953b519
--- /dev/null
+++ b/doc/sphinx/man/props/P_AUTH_INFO
@@ -0,0 +1,21 @@
+
+P_AUTH_INFO
+***********
+
+
+NAME
+====
+
+   P_AUTH_INFO                   "auth_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Username des Spielers, wenn bei ihm ein AUTHD laeuft
diff --git a/doc/sphinx/man/props/P_AUTOLOAD b/doc/sphinx/man/props/P_AUTOLOAD
new file mode 100644
index 0000000..5e623bb
--- /dev/null
+++ b/doc/sphinx/man/props/P_AUTOLOAD
@@ -0,0 +1,31 @@
+
+P_AUTOLOAD
+**********
+
+
+NAME
+====
+
+   P_AUTOLOAD                    "autoload"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit der Menge der Autoloadobjekte und den zugeh.
+   Properties.
+
+
+BEMERKUNGEN
+===========
+
+   Funktioniert momentan nicht. Die Methode wurde entfernt. Doku bleibt
+   hier bis der Fall geklaert ist. (Stand 27.Aug 2006)
+
+27.Aug 2006 Gloinson
diff --git a/doc/sphinx/man/props/P_AUTOLOADOBJ b/doc/sphinx/man/props/P_AUTOLOADOBJ
new file mode 100644
index 0000000..3184fff
--- /dev/null
+++ b/doc/sphinx/man/props/P_AUTOLOADOBJ
@@ -0,0 +1,141 @@
+
+P_AUTOLOADOBJ
+*************
+
+
+NAME
+====
+
+   P_AUTOLOADOBJ                 "autoloadobj"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Hiermit kann prinzipiell angegeben werden ob ein Objekt ueber das
+   Ausloggen eines Spielers (Reboot/ende) behalten werden soll.
+
+   Als Inhalt der Property koennen permanente Eigenschaften des Objektes
+   angegeben werden.
+   Beim Einloggen wird das Objekt neu erzeugt und P_AUTOLOADOBJ auf die
+   gespeicherten Werte gesetzt. Die Werte muessen allerdings selbst
+   verwaltet werden.
+
+   Bitte geht nicht davon aus, dass es waehrend des Setzens/Abfragens dieser
+   Prop einen this_player() oder ein this_interactive() geben muss.
+   Speziell ist this_interactive() nicht == /secure/login!
+   Ebenfalls muss das Objekt beim Setzen/Abfragen nicht in einem Spieler
+   sein.
+
+
+BEMERKUNGEN
+===========
+
+   Autoloadobjekte werden beim Ausloggen nicht fallengelassen!
+
+
+BEISPIELE
+=========
+
+   ## Variante 1: simples Objekt, bleibt einfach nur erhalten,
+   ##             Variablen werden nicht gesichert ##
+   void create() {
+    ...
+    SetProp(P_AUTOLOADOBJ,1);
+    ...
+   }
+
+
+   ## Variante 2: Speicherung mehrerer Variablen ueber
+   ##             P_AUTOLOADOBJ (elegante Verwaltung)
+
+   // ein paar #defines fuer die Plaetze in der Speichervariablen
+   #define MY_AL_SHORT    0
+   #define MY_AL_ATTRM    1
+   #define MY_AL_OWNER    2
+   #define MY_AL_DESTRUCT 3
+
+   // die Variablen, die erhalten bleiben sollen
+   static object owner;
+   static int destruct_time;
+
+   // diese hier wird gerufen, wenn der Spieler gespeichert wird,
+   // wir packen also alle aktuellen Variablen in eine und geben die
+   // zum Speichern heraus ... wir nehmen hier ein Array (statt
+   // zB eines Mappings), weil das am wenigsten Platz braucht
+   static mixed* _query_autoloadobj() {
+    mixed *ret;
+    ret=allocate(4);
+    ret[MY_AL_SHORT] = QueryProp(P_SHORT);      // SHORT merken
+    ret[MY_AL_ATTRM] = QueryProp(P_M_ATTR_MOD); // einen Modifikator merken
+    ret[MY_AL_OWNER] = getuid(owner);           // ah, ein Besitzer!
+    ret[MY_AL_DESTRUCT]=destruct_time-time();   // und eine Lebensdauer!
+
+    return ret;
+
+    /*
+    // normalerweise wuerde man das einfach so schreiben:
+    return (({QueryProp(P_SHORT),
+              QueryProp(P_M_ATTR_MOD),
+              getuid(owner),
+              destruct_time-time()}));
+    */
+   }
+
+   // diese hier wird gerufen, wenn das Objekt neu im Spieler
+   // erzeugt wurde (Login), also packen wir das Speicherarray wieder
+   // aus und in alle entsprechenden Variablen
+   static mixed* _set_autoloadobj(mixed *new) {
+    // wenn das Format nicht mit dem oben uebereinstimmt ist was
+    // schiefgelaufen
+    if(pointerp(new) && !owner && sizeof(new)>4 &&
+       (owner=find_player(new[MY_AL_OWNER]))) {
+     // los, zuweisen!
+
+     SetProp(P_SHORT,      new[MY_AL_SHORT]);
+     SetProp(P_M_ATTR_MOD, new[MY_AL_ATTRM]);
+     destruct_time=        time()+new[MY_AL_DESTRUCT];
+
+     call_out(#'remove,new[3]);
+    } else call_out(#'remove,0);
+
+    return new;
+   }
+
+
+   ## Variante 3: und das gleiche mit Set/Querymethoden ##
+   // Prototypen fuer Set und Query-Methoden -> man Set
+   static mixed *my_query_autoloadobj();
+   static mixed *my_set_autoloadobj(mixed *new);
+
+   void create() {
+    // Binden der Methoden
+    Set(P_AUTOLOADOBJ, #'my_query_autoloadobj, F_QUERY_METHOD);
+    Set(P_AUTOLOADOBJ, #'my_set_autoloadobj, F_SET_METHOD);
+
+    // die werden nur von mir veraendert!
+    Set(P_AUTOLOADOBJ, PROTECTED, F_MODE_AS);
+    ...
+   }
+
+   static mixed *my_query_autoloadobj () {
+     // s.o.
+   }
+
+   static mixed *my_set_autoloadobj (mixed *new) {
+     // s.o.
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_AUTOLOAD, SetProp
+
+24.Aug.2006 Gloinson@MG
diff --git a/doc/sphinx/man/props/P_AVATAR_URI b/doc/sphinx/man/props/P_AVATAR_URI
new file mode 100644
index 0000000..0a2437c
--- /dev/null
+++ b/doc/sphinx/man/props/P_AVATAR_URI
@@ -0,0 +1,44 @@
+
+P_AVATAR_URI
+************
+
+
+NAME
+====
+
+   P_AVATAR_URI                    "p_lib_avataruri"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Lebewesen speichern in der Prop P_AVATAR_URI eine URI (string), welche auf
+   ein Bild im Netz verweist, welches ein Client fuer dieses Lebewesen
+   anzeigen kann.
+   Spieler koennen diese Avatar-URI mit dem Befehl 'avatar' anzeigen,
+   aendern und loeschen.
+   Avatar-URIs anderer Spieler lassen sich mit 'finger -a' ausgeben.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property kann nur vom Spieler oder einem EM modifiziert werden.
+
+
+SIEHE AUCH
+==========
+
+   avatar
+
+
+LETZTER AENDERUNG
+=================
+
+   03.9.2011, Zesstra
diff --git a/doc/sphinx/man/props/P_AVERAGE_SIZE b/doc/sphinx/man/props/P_AVERAGE_SIZE
new file mode 100644
index 0000000..155528f
--- /dev/null
+++ b/doc/sphinx/man/props/P_AVERAGE_SIZE
@@ -0,0 +1,21 @@
+
+P_AVERAGE_SIZE
+**************
+
+
+NAME
+====
+
+   P_AVERAGE_SIZE                "average_size"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Durchschnittliche Groesse eines Wesens dieser Rasse (derzeit nur Player)
diff --git a/doc/sphinx/man/props/P_AVERAGE_WEIGHT b/doc/sphinx/man/props/P_AVERAGE_WEIGHT
new file mode 100644
index 0000000..d71c53b
--- /dev/null
+++ b/doc/sphinx/man/props/P_AVERAGE_WEIGHT
@@ -0,0 +1,21 @@
+
+P_AVERAGE_WEIGHT
+****************
+
+
+NAME
+====
+
+   P_AVERAGE_WEIGHT                "average_weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Durchschnittliche Gewicht eines Wesens dieser Rasse (derzeit nur Player)
diff --git a/doc/sphinx/man/props/P_AWAY b/doc/sphinx/man/props/P_AWAY
new file mode 100644
index 0000000..5678440
--- /dev/null
+++ b/doc/sphinx/man/props/P_AWAY
@@ -0,0 +1,21 @@
+
+P_AWAY
+******
+
+
+NAME
+====
+
+   P_AWAY                        "away"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   String der ausgegeben wird, wenn man weg ist und eine Mitteilung bekommt.
diff --git a/doc/sphinx/man/props/P_BAD_MSG b/doc/sphinx/man/props/P_BAD_MSG
new file mode 100644
index 0000000..7015a9c
--- /dev/null
+++ b/doc/sphinx/man/props/P_BAD_MSG
@@ -0,0 +1,48 @@
+
+P_BAD_MSG
+*********
+
+
+NAME
+====
+
+   P_BAD_MSG                     "std_food_bad_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung, wenn eine Speise gerade verdirbt.
+   Befindet sich die Speise in einem Spieler, geht die Meldung an genau
+   diesen, liegt die Speise im Raum, geht die Meldung an alle anwesenden
+   Spieler.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER1 verdirbt."
+
+
+SIEHE AUCH
+==========
+
+   P_LIFETIME, P_RESET_LIFETIME, P_NO_BAD,
+   wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_BLIND b/doc/sphinx/man/props/P_BLIND
new file mode 100644
index 0000000..da86624
--- /dev/null
+++ b/doc/sphinx/man/props/P_BLIND
@@ -0,0 +1,56 @@
+
+P_BLIND
+*******
+
+
+NAME
+====
+
+   P_BLIND                       "blind"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/viewcmd.h
+
+
+BESCHREIBUNG
+============
+
+   1, wenn der Spieler blind ist und nichts mehr sehen kann.
+
+   Wird von CannotSee() bei 'schau' und Betreten von Raeumen
+   u.ae. ausgewertet.
+
+   P_BLIND kann auch auf einen String gesetzt werden, der
+   dann statt des 'Du bist blind' ausgegeben wird.
+
+
+BEISPIELE
+=========
+
+   this_player()->SetProp(P_BLIND,1);
+
+   this_player()->SetProp(P_BLIND,"Du hast Dir vorhin so schoen die "
+                                 +"Augen ausgekratzt ... deswegen "
+                                 +"siehst Du nun nichts mehr.\n");
+
+
+BEMERKUNGEN
+===========
+
+   Um herauszufinden, ob ein Spieler etwas sehen kann oder nicht,
+   sollte man lieber if(this_player()->CannotSee() != 0) pruefen
+   statt if(this_player()->QueryProp(P_BLIND)).
+
+   Denn CannotSee() beruecksichtigt auch Nachtsicht (bzw. hier
+   eine nicht aktivierte) und die Lichtmodifikatoren.
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT_MODIFIER, P_PLAYER_LIGHT, CannotSee
+
+Letzte Aenderung: Sa 02.11.02, 00:30:00 Uhr, von Tilly
diff --git a/doc/sphinx/man/props/P_BODY b/doc/sphinx/man/props/P_BODY
new file mode 100644
index 0000000..5871adb
--- /dev/null
+++ b/doc/sphinx/man/props/P_BODY
@@ -0,0 +1,22 @@
+
+P_BODY
+******
+
+
+NAME
+====
+
+   P_BODY                        "body"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die Abwehrstaerke des blanken Koerpers
+   des Wesens.
diff --git a/doc/sphinx/man/props/P_BRIEF b/doc/sphinx/man/props/P_BRIEF
new file mode 100644
index 0000000..f6d3769
--- /dev/null
+++ b/doc/sphinx/man/props/P_BRIEF
@@ -0,0 +1,21 @@
+
+P_BRIEF
+*******
+
+
+NAME
+====
+
+   P_BRIEF                       "brief"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/viewcmd.h
+
+
+BESCHREIBUNG
+============
+
+   Ist gesetzt, wenn der Spieler nur die Kurzbeschreibung sehen will.
diff --git a/doc/sphinx/man/props/P_BUFFER b/doc/sphinx/man/props/P_BUFFER
new file mode 100644
index 0000000..699f91c
--- /dev/null
+++ b/doc/sphinx/man/props/P_BUFFER
@@ -0,0 +1,21 @@
+
+P_BUFFER
+********
+
+
+NAME
+====
+
+   P_BUFFER                      "buffer"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Zeigt an, ob der Kobold des Spielers aktiv oder nicht aktiv ist.
diff --git a/doc/sphinx/man/props/P_BUY_ONLY_PLANTS b/doc/sphinx/man/props/P_BUY_ONLY_PLANTS
new file mode 100644
index 0000000..0d15a94
--- /dev/null
+++ b/doc/sphinx/man/props/P_BUY_ONLY_PLANTS
@@ -0,0 +1,31 @@
+
+P_BUY_ONLY_PLANTS
+*****************
+
+
+NAME
+====
+
+   P_BUY_ONLY_PLANTS              "lib_p_buy_only_plants"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann auf 1 gesetzt werden, wenn ein Laden nur Kraeuter
+   ankaufen darf. Hierzu muss /std/room/kraeuterladen.c geerbt werden,
+   da nur dieses Objekt die Property beruecksichtigt.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/kraeuterladen.c
+
+Last modified: 02.04.2015 Arathorn
diff --git a/doc/sphinx/man/props/P_CALLED_FROM_IP b/doc/sphinx/man/props/P_CALLED_FROM_IP
new file mode 100644
index 0000000..306241c
--- /dev/null
+++ b/doc/sphinx/man/props/P_CALLED_FROM_IP
@@ -0,0 +1,21 @@
+
+P_CALLED_FROM_IP
+****************
+
+
+NAME
+====
+
+   P_CALLED_FROM_IP              "called_from_ip"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Letzte IP-Adr, von der aus sich der Spieler eingeloggt hat.
diff --git a/doc/sphinx/man/props/P_CAN_FLAGS b/doc/sphinx/man/props/P_CAN_FLAGS
new file mode 100644
index 0000000..06afe76
--- /dev/null
+++ b/doc/sphinx/man/props/P_CAN_FLAGS
@@ -0,0 +1,22 @@
+
+P_CAN_FLAGS
+***********
+
+
+NAME
+====
+
+   P_CAN_FLAGS                   "can_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/can.h
+
+
+BESCHREIBUNG
+============
+
+   Flags die bestimmte Befehle freischalten:
+   CAN_EMOTE, CAN_ECHO, CAN_REMOTE, CAN_PRESAY
diff --git a/doc/sphinx/man/props/P_CAP_NAME b/doc/sphinx/man/props/P_CAP_NAME
new file mode 100644
index 0000000..0069948
--- /dev/null
+++ b/doc/sphinx/man/props/P_CAP_NAME
@@ -0,0 +1,22 @@
+
+P_CAP_NAME
+**********
+
+
+NAME
+====
+
+   P_CAP_NAME                    "cap_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Name des Spielers, der dekliniert und ausgegen wird.
+   NOT YET IMPLEMENTED.
diff --git a/doc/sphinx/man/props/P_CARRIED_VALUE b/doc/sphinx/man/props/P_CARRIED_VALUE
new file mode 100644
index 0000000..8792664
--- /dev/null
+++ b/doc/sphinx/man/props/P_CARRIED_VALUE
@@ -0,0 +1,21 @@
+
+P_CARRIED_VALUE
+***************
+
+
+NAME
+====
+
+   P_CARRIED_VALUE               "carried"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Entschaedigung, die der Spieler beim Einloggen erhaelt.
diff --git a/doc/sphinx/man/props/P_CHATS b/doc/sphinx/man/props/P_CHATS
new file mode 100644
index 0000000..51e1a5e
--- /dev/null
+++ b/doc/sphinx/man/props/P_CHATS
@@ -0,0 +1,21 @@
+
+P_CHATS
+*******
+
+
+NAME
+====
+
+   P_CHATS                       "chats"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Alist mit Strings, die das Monster zufaellig ausgibt.
diff --git a/doc/sphinx/man/props/P_CHAT_CHANCE b/doc/sphinx/man/props/P_CHAT_CHANCE
new file mode 100644
index 0000000..bd032bf
--- /dev/null
+++ b/doc/sphinx/man/props/P_CHAT_CHANCE
@@ -0,0 +1,21 @@
+
+P_CHAT_CHANCE
+*************
+
+
+NAME
+====
+
+   P_CHAT_CHANCE                 "chat_chance"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wahrscheinlichkeit, mit der die Chats ausgegeben werden.
diff --git a/doc/sphinx/man/props/P_CLASS b/doc/sphinx/man/props/P_CLASS
new file mode 100644
index 0000000..80017cc
--- /dev/null
+++ b/doc/sphinx/man/props/P_CLASS
@@ -0,0 +1,33 @@
+
+P_CLASS
+*******
+
+
+NAME
+====
+
+   P_CLASS                                            "class"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Die Klassifizierung eines Objektes, soweit sie nicht schon ueber die
+   Rasse oder die IDs des Objektes erfolgt ist. Zum Setzen dieser Property
+   sollte man AddClass() benutzen, zur Klassenabfrage steht
+   is_class_member() zur Verfuegung.
+   Die moeglichen Klassen findet man in /sys/class.h
+
+
+SIEHE AUCH
+==========
+
+   AddClass(), RemoveClass(), is_class_member()
+
+Last modified: Sun May 19 20:30:09 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_CLOCKMSG b/doc/sphinx/man/props/P_CLOCKMSG
new file mode 100644
index 0000000..6f85b56
--- /dev/null
+++ b/doc/sphinx/man/props/P_CLOCKMSG
@@ -0,0 +1,21 @@
+
+P_CLOCKMSG
+**********
+
+
+NAME
+====
+
+   P_CLOCKMSG                    "clockmsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Die Meldung wird zur vollen Stunde ausgegeben
diff --git a/doc/sphinx/man/props/P_CLONER b/doc/sphinx/man/props/P_CLONER
new file mode 100644
index 0000000..75e9d02
--- /dev/null
+++ b/doc/sphinx/man/props/P_CLONER
@@ -0,0 +1,28 @@
+
+P_CLONER
+********
+
+
+NAME
+====
+
+   P_CLONER                      "cloner"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String mit dem Namen desjenigen, der das Objekt gecloned
+   hat.
+
+
+SIEHE AUCH
+==========
+
+   P_CLONE_TIME
diff --git a/doc/sphinx/man/props/P_CLONE_MSG b/doc/sphinx/man/props/P_CLONE_MSG
new file mode 100644
index 0000000..d16f42e
--- /dev/null
+++ b/doc/sphinx/man/props/P_CLONE_MSG
@@ -0,0 +1,21 @@
+
+P_CLONE_MSG
+***********
+
+
+NAME
+====
+
+   P_CLONE_MSG                   "clone_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, die beim Clonen eines Obj ausgegegen wird (nur Magier)
diff --git a/doc/sphinx/man/props/P_CLONE_TIME b/doc/sphinx/man/props/P_CLONE_TIME
new file mode 100644
index 0000000..fb7c3e5
--- /dev/null
+++ b/doc/sphinx/man/props/P_CLONE_TIME
@@ -0,0 +1,30 @@
+
+P_CLONE_TIME
+************
+
+
+NAME
+====
+
+   P_CLONE_TIME                   "clone_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die Clone-Time eines Objektes.
+   Heutzutage obsolet, bitte stattdessen lieber die Efun object_time()
+   benutzen.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt: object_time(E)
+   Aehnlich: program_time(E)
diff --git a/doc/sphinx/man/props/P_CLOTHING b/doc/sphinx/man/props/P_CLOTHING
new file mode 100644
index 0000000..3458058
--- /dev/null
+++ b/doc/sphinx/man/props/P_CLOTHING
@@ -0,0 +1,42 @@
+
+P_CLOTHING
+**********
+
+
+P_CLOTHINGS
+===========
+
+
+NAME
+====
+
+   P_CLOTHING                     "std:clothing"
+
+
+DEFINIERT IN
+============
+
+   <living/clothing.h>
+
+
+BESCHREIBUNG
+============
+
+   Array mit der getragenen nicht-schuetzenden Kleidung des Lebewesen.
+
+
+
+   Falls ihr die Kleidung des Lebewesens, ggf. mit bestimten Kriterien,
+   ermitteln wollt, benutzt hierfuer bitte die Funktion FilterClothing()
+   statt selber ueber dieses Array zu laufen.
+
+   Diese Property kann nur vom Lebewesen selber beschrieben werden.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:          QueryArmourByType(L), FilterClothing(), FilterArmours()
+                Wear(), Unwear(), P_ARMOURS
+
+14.03.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_CMSG b/doc/sphinx/man/props/P_CMSG
new file mode 100644
index 0000000..e38f085
--- /dev/null
+++ b/doc/sphinx/man/props/P_CMSG
@@ -0,0 +1,21 @@
+
+P_CMSG
+******
+
+
+NAME
+====
+
+   P_CMSG                        "clonemsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! *** Siehe P_CLONE_MSG
diff --git a/doc/sphinx/man/props/P_CNT_STATUS b/doc/sphinx/man/props/P_CNT_STATUS
new file mode 100644
index 0000000..5bcc584
--- /dev/null
+++ b/doc/sphinx/man/props/P_CNT_STATUS
@@ -0,0 +1,22 @@
+
+P_CNT_STATUS
+************
+
+
+NAME
+====
+
+   P_CNT_STATUS                  "cnt_status"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Status des Containers (offen, geschlossen, abgeschlossen)
+   siehe auch /sys/container.h
diff --git a/doc/sphinx/man/props/P_COMBATCMDS b/doc/sphinx/man/props/P_COMBATCMDS
new file mode 100644
index 0000000..e82336a
--- /dev/null
+++ b/doc/sphinx/man/props/P_COMBATCMDS
@@ -0,0 +1,44 @@
+
+P_COMBATCMDS
+************
+
+
+NAME
+====
+
+   P_COMBATCMDS                  "combatcmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Fuer den Kampf gebrauchbare Befehle spezieller Objekte (damit auch
+   Monster sie automatisch richtig anwenden koennen)
+   Der Inhalt von P_COMBATCMDS ist ein Mapping, der Key ist das Kommando,
+   um den Gegenstand zu benutzen (also z.B. "wirf flammenkugel"), und der
+   Value ein weiteres Mapping mit Zusatzinfos (definiert in /sys/combat.h).
+   Folgende Keys sind definiert:
+   - C_MIN, C_AVG, C_MAX:
+     minimaler, mittlerer und maximaler Schaden, den das
+     Objekt macht. Alle Angaben in LEBENSPUNKTEN, d.h. Defend-Einheiten/10.
+     Bei einem Aufruf wie 'enemy->Defend(200+random(200), ...)' ist dann
+     C_MIN=20, C_AVG=30, C_MAX=40.
+   - C_DTYPES:
+     Array mit dem Schadenstyp oder den Schadenstypen. Beim Eisstab
+     wuerde der Eintrag dann 'C_DTYPES:({DT_COLD})' lauten.
+   - C_HEAL:
+     Sollte das Kampfobjekt ueber die Moeglichkeit verfuegen, den Anwender
+     irgendwie zu heilen, so wird hier die Heilung in LP/MP eingetragen.
+     Das funktioniert auch bei Objekten, die nur heilen, also sonst
+     nichts mit Kampf zu tun haben.
+     Im Lupinental z.B. gibt es Pfirsiche, die beim Essen 5LP heilen. Da
+     kann man dann 'SetProp(P_COMBATCMDS, (["iss pfirsich":([C_HEAL:5])]))'
+     eintragen.
+   Es sind auch mehrere Kommandos moeglich, z.B. bei Objekten, die sowohl
+   heilen als auch Kampfwirkung haben.
diff --git a/doc/sphinx/man/props/P_COMMANDS b/doc/sphinx/man/props/P_COMMANDS
new file mode 100644
index 0000000..5812b35
--- /dev/null
+++ b/doc/sphinx/man/props/P_COMMANDS
@@ -0,0 +1,76 @@
+
+P_COMMANDS
+**********
+
+
+NAME
+====
+
+   P_COMMANDS "commands"
+
+
+DEFINIERT IN
+============
+
+   <thing/commands.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping mit den Befehlen, die dem Objekt
+   zugeordnet sind.
+
+   Sie sollte nicht von Hand manipuliert werden, sondern nur ueber die
+   Funktionen AddCmd() und RemoveCmd().
+
+   Das Mapping hat folgenden Aufbau:
+
+   ([ befehl : ({funktion1,...});
+               ({flag1,...});
+               ({regel1,...});
+               ({id1, ...}),
+               ({closure auf fun1, ...}),
+      ... ])
+
+   Die Eintraege entsprechen den Parametern des AddCmd()-Aufrufs, sind
+   aber in anderer Form. Als Beispiel:
+
+   AddCmd(verb,fun1,1);
+   AddCmd(verb+syn1a|syn1b&syn2a|syn2b|syn2c, fun2,
+          error1_notify|error2_notify^error2_write);
+   -->
+   ([verb:
+      ({fun1,fun2});                                        // funs
+      ({1,({error1_notify, error2_write^error2_say, 1})});  // flags
+      ({0,({({syn1a,syn1b}),({syn2a,syn2b,syn2c})})});      // rules
+      0;                                                    // IDs
+      ({closure auf fun1, closure auf fun2}) ])             // Cache
+
+   Funs:  ({<fun1> ,...
+            'fun' kann sein: Closure
+                             String: Methodenname - wird etwas geprueft
+                             Objekt: wenn keine Methode, this_object() fuer
+                                     intern, previous_object() fuer extern
+                             0 (erloschenes externes Objekt)
+   Rules: ({<Regelsatz fuer fun1>, ({<1. Synonymgruppe>,
+                                     <2. Synonymgruppe, ...}), ...})
+   Flags: ({<Flag fuer fun1>, ({<Fehlermeldung 1. Synonymgruppe>, ... ,
+                                [, Index fuer write anstatt notify_fail]}),
+           ... })
+   IDs:   0 oder ({<ID fuer fun1>}) oder ({0, <ID fuer fun2>}) ...
+   Cache: ({<closure fuer fun1>, ...
+
+
+BEMERKUNGEN
+===========
+
+   Cache-Closures sind bei Export immer genullt
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/commands.c, AddCmd(), RemoveCmd()
+
+16. Dez 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_COMPILER_PATH b/doc/sphinx/man/props/P_COMPILER_PATH
new file mode 100644
index 0000000..e67d01f
--- /dev/null
+++ b/doc/sphinx/man/props/P_COMPILER_PATH
@@ -0,0 +1,40 @@
+
+P_COMPILER_PATH
+***************
+
+
+NAME
+====
+
+   P_COMPILER_PATH               "compiler_path"
+
+
+DEFINIERT IN
+============
+
+   /sys/v_compiler.h
+
+
+BESCHREIBUNG
+============
+
+   Directory in dem ein Virtual Compiler Objekte erzeugt.
+   Muss im virtual_compiler.c gesetzt werden.
+
+   Der VirtualCompiler muss nicht zwingend in diesem Verzeichnis
+   liegen, um zu funktionieren, sollte es aber, um die Zuordnung des VCs zu
+   "seinen" Objekten zu erleichern.
+
+
+BEISPIEL
+========
+
+   SetProp(P_COMPILER_PATH,"/d/region/magier/vc/");
+
+
+SIEHE AUCH
+==========
+
+   P_STD_OBJECT, virtual_compiler
+
+Letzte Aenderung: 23.10.2007, von Zesstra
diff --git a/doc/sphinx/man/props/P_CONSUME_MSG b/doc/sphinx/man/props/P_CONSUME_MSG
new file mode 100644
index 0000000..0300037
--- /dev/null
+++ b/doc/sphinx/man/props/P_CONSUME_MSG
@@ -0,0 +1,45 @@
+
+P_CONSUME_MSG
+*************
+
+
+NAME
+====
+
+   P_CONSUME_MSG                 "std_food_consume_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Raum exklusive Konsument, wenn eine Speise konsumiert
+   wird.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER2 konsumiert @WEN1."
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_CONTAINER b/doc/sphinx/man/props/P_CONTAINER
new file mode 100644
index 0000000..e779f75
--- /dev/null
+++ b/doc/sphinx/man/props/P_CONTAINER
@@ -0,0 +1,21 @@
+
+P_CONTAINER
+***********
+
+
+NAME
+====
+
+   P_CONTAINER                   "container"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_CONTENTS b/doc/sphinx/man/props/P_CONTENTS
new file mode 100644
index 0000000..fc9f20e
--- /dev/null
+++ b/doc/sphinx/man/props/P_CONTENTS
@@ -0,0 +1,21 @@
+
+P_CONTENTS
+**********
+
+
+NAME
+====
+
+   P_CONTENTS                    "contents"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! ***
diff --git a/doc/sphinx/man/props/P_CORPSE b/doc/sphinx/man/props/P_CORPSE
new file mode 100644
index 0000000..762f03c
--- /dev/null
+++ b/doc/sphinx/man/props/P_CORPSE
@@ -0,0 +1,43 @@
+
+P_CORPSE
+********
+
+
+NAME
+====
+
+   P_CORPSE            "corpse"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Hier kann man angeben, welche Art von Leiche beim Tod des NPCs
+   hinterlassen wird. Damit die Leiche auf dem Moerder-Kanal senden
+   kann, muss das Leichen-Objekt /std/corpse sein oder erben.
+
+
+BEISPIELE
+=========
+
+   Die uebliche Standardleiche befindet sich unter "/std/corpse.c",
+   welches auch die Defaulteinstellung fuer diese Property darstellt:
+     SetProp(P_CORPSE,"/std/corpse");
+   Man koennte aber auch einen Zombie entstehen lassen:
+     SetProp(P_CORPSE,PATH("zombie"));
+   PATH kennzeichnet hierbei den Pfad, unter welchem "zombie.c" zu
+   finden ist.
+
+
+SIEHE AUCH
+==========
+
+   P_NOCORPSE, P_ZAP_MSG, P_DIE_MSG, P_MURDER_MSG, P_KILL_MSG
+
+Last modified: Mon Apr 07 11:02:06 2003 by Mandragon
diff --git a/doc/sphinx/man/props/P_CURRENTDIR b/doc/sphinx/man/props/P_CURRENTDIR
new file mode 100644
index 0000000..b1dc2a4
--- /dev/null
+++ b/doc/sphinx/man/props/P_CURRENTDIR
@@ -0,0 +1,28 @@
+
+P_CURRENTDIR
+************
+
+
+NAME
+====
+
+   P_CURRENTDIR                  "currentdir"
+
+
+DEFINIERT IN
+============
+
+   /sys/shells.h
+
+
+BESCHREIBUNG
+============
+
+   Momentanes Verzeichnis in dem der Magier ist.
+   (nur fuer Magier von Belang)
+
+Siehe auch:
+   P_CURRENTDIR
+
+Letzte Aenderung:
+   03.06.2015, Bugfix
diff --git a/doc/sphinx/man/props/P_CURSED b/doc/sphinx/man/props/P_CURSED
new file mode 100644
index 0000000..c3a9061
--- /dev/null
+++ b/doc/sphinx/man/props/P_CURSED
@@ -0,0 +1,56 @@
+
+P_CURSED
+********
+
+
+NAME
+====
+
+   P_CURSED "cursed"
+
+
+DEFINIERT IN
+============
+
+   <properties.h>
+
+
+BESCHREIBUNG
+============
+
+   Ruestungen und Waffen, die sich, einmal angezogen bzw. gezueckt, nicht
+   wieder entfernen lassen sollen, kann man ueber diese Property
+   realisieren. Die Waffe oder Ruestung hat dann in der Regel negative
+   Auswirkungen auf den Traeger...
+
+   Setzt man diese Property auf eine Zahl ungleich 0, so bekommt man bei
+   dem Versuch, den verfluchten Gegenstand auszuziehen bzw. wegzustecken
+   eine Defaultmeldung.
+
+   Traegt man dagegen einen String ein, so wird dieser beim Versuch, den
+   Gegenstand loszuwerden, ausgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Der 'Fluch' wird erst wirksam, wenn das Opfer die Waffe zueckt bzw. die
+   Ruestung anzieht. Ist dies erst einmal geschehen, helfen nur noch
+   Zaubersprueche oder fluchbrechende Institutionen.
+
+   Moechte man, dass der Gegenstand entfluchbar ist, dann sollte er auch
+   ansprechbar sein (gueltige ID, nicht unsichtbar), da das durch derzeitige
+   Entfluchmoeglichkeiten vorausgesetzt wird.
+
+   Flueche koennen ein P_LEVEL 1-100 haben, welches die Schwierigkeit des
+   Enfluchens festlegt. Der Klerus behandelt das nicht linear.
+
+
+SIEHE AUCH
+==========
+
+   Eigenschaften: P_LEVEL
+   Aehnlich:      AddClass (CL_CURSE)
+   Code:         /std/armour, /std/weapon, /gilden/files.klerus/prayermaster
+
+25. Aug 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_DAMAGED b/doc/sphinx/man/props/P_DAMAGED
new file mode 100644
index 0000000..91d5324
--- /dev/null
+++ b/doc/sphinx/man/props/P_DAMAGED
@@ -0,0 +1,41 @@
+
+P_DAMAGED
+*********
+
+
+NAME
+====
+
+   P_DAMAGED "item_damaged"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Ruestungen und Waffen koennen im Eifer des Gefechts beschaedigt werden.
+   Der Grad der Beschaedigung sollte in dieser Property festgehalten
+   werden.
+
+   Bei Waffen ergibt sich die urspruengliche Waffenklasse aus der Summe
+   von aktueller Waffenklasse und dem Wert von P_DAMAGED:
+   altes P_WC = aktuelles P_WC + P_DAMAGED.
+
+   Analoges gilt fuer die Ruestungsklasse einer beschaedigten Ruestung:
+   altes P_AC = aktuelles P_AC + P_DAMAGED.
+
+   P_DAMAGED bitte niemals direkt setzen, sondern immer ueber
+   die Funktion Damage() manipulieren!
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, /std/weapon.c, TakeFlaw(), QueryFlaw(), Damage()
+
+02.10.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_DAMAGE_MSG b/doc/sphinx/man/props/P_DAMAGE_MSG
new file mode 100644
index 0000000..e9c71a8
--- /dev/null
+++ b/doc/sphinx/man/props/P_DAMAGE_MSG
@@ -0,0 +1,58 @@
+
+P_DAMAGE_MSG
+************
+
+
+NAME
+====
+
+   P_DAMAGE_MSG      "std_p_dam_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property lassen sich individuelle Treffer-/Schadensmeldungen
+   fuer dieses Lebewesen festlegen. Sie werden verwendet, falls bei
+   eingehendem Schaden der Aufrufer von Defend() Schadensmeldungen wuenscht
+   (d.h. SP_SHOW_DAMAGE != 0), jedoch keine eigenen Meldungen vorgibt.
+
+   Enthaelt diese Property kein Array, werden ggf. die Standardmeldungen
+   ausgegeben.
+
+   Datenstruktur der Property:
+     ({
+      ({ int lphit1, string mess_me,
+                     string mess_en,
+                     string mess_room }),
+      ({ lphit2, mess_me, mess_en, mess_room }),
+      ...
+      ({ lphitn, mess_me, mess_en, mess_room }),
+     })
+     wobei lphit1<lphit2<...<lphitn sein muss, d.h. das Array-
+     Array ist aufsteigend sortiert.
+
+   Ist ein Treffer x LP hart, werden die Meldungen des lphit-
+   Arrays ausgegeben, dessen Wert am naechsten unter dem Schaden
+   liegt.
+
+   In den Meldungen mess_me (an den Getroffenen), mess_en (an
+   den Feind), mess_room (an die restlichen Umstehenden) koennen
+   Ersatzstrings wie folgt verwendet werden:
+   @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
+   @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
+
+
+SIEHE AUCH
+==========
+
+   Defend()
+   /std/living/combat.c
+
+15.09.2010, Zesstra
diff --git a/doc/sphinx/man/props/P_DAM_DESC b/doc/sphinx/man/props/P_DAM_DESC
new file mode 100644
index 0000000..151f555
--- /dev/null
+++ b/doc/sphinx/man/props/P_DAM_DESC
@@ -0,0 +1,56 @@
+
+P_DAM_DESC
+**********
+
+
+NAME
+====
+
+   P_DAM_DESC "dam_desc"
+
+
+DEFINIERT IN
+============
+
+   <weapon/description.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property befindet sich ein String oder String-Array, durch
+   den die Langbeschreibung einer Ruestung oder Waffe ergaenzt wird,
+   wenn diese Beschaedigt ist.
+
+
+BEMERKUNGEN
+===========
+
+   Wird ein String gesetzt, so wird dieser angezeigt, wenn die Waffe
+   mehr als die Haelfte beschaedigt ist. Bei einem Array wird der
+   Text entsprechend dem Grad der Beschaedigung ausgewaehlt; das Array
+   muss in der Reihenfolge zunehmender Beschaedigung sortiert sein.
+
+
+
+   Bei Waffen ist P_DAM_DESC defaultmaessig auf DFLT_DAM_DESC gesetzt,
+   bei Ruestungen auf 0.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_DAM_DESC,"ist beschaedigt");
+   SetProp(P_DAM_DESC,({
+       "ist etwas beschaedigt",
+       "ist beschaedigt",
+       "ist beschaedigt",
+       "ist sehr beschaedigt"}) );
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon/description.c
+
+Last modified: Mon Oct 14 15:29:00 1996 by Paracelsus
diff --git a/doc/sphinx/man/props/P_DAM_TYPE b/doc/sphinx/man/props/P_DAM_TYPE
new file mode 100644
index 0000000..e5088d2
--- /dev/null
+++ b/doc/sphinx/man/props/P_DAM_TYPE
@@ -0,0 +1,35 @@
+
+P_DAM_TYPE
+**********
+
+
+NAME
+====
+
+   P_DAM_TYPE "dam_type"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Was fuer eine Art von Schaden richtet die Waffe an? Hier kann man einen
+   String oder ein Array von Strings angeben, je nachdem, welche Effekte
+   die Waffe ausloesen kann. Man sollte hier nur die in <combat.h>
+   definierten Schadenstypen verwenden.
+
+   Fragt man diese Property ab, bekommt man uebrigens immer ein Array von
+   Strings zurueck.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c
+
+Last modified: Sun May 19 15:23:43 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_DEADS b/doc/sphinx/man/props/P_DEADS
new file mode 100644
index 0000000..03f0c07
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEADS
@@ -0,0 +1,22 @@
+
+P_DEADS
+*******
+
+
+NAME
+====
+
+   P_DEADS                       "deads"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Tode des Spielers seit Einfuehrung dieser Property (irgendwann
+   im Dezember 94)
diff --git a/doc/sphinx/man/props/P_DEAF b/doc/sphinx/man/props/P_DEAF
new file mode 100644
index 0000000..570ac06
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEAF
@@ -0,0 +1,23 @@
+
+P_DEAF
+******
+
+
+NAME
+====
+
+   P_DEAF                        "deaf"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler ist taub. Falls hier ein String steht, wird dieser bei
+   "teile ... mit" an den Mitteilenden ausgegeben, ansonsten kommt nur
+   "Soundso ist leider gerade taub.\n"
diff --git a/doc/sphinx/man/props/P_DEATH_MSG b/doc/sphinx/man/props/P_DEATH_MSG
new file mode 100644
index 0000000..d5de007
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEATH_MSG
@@ -0,0 +1,79 @@
+
+P_DEATH_MSG
+***********
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property kann man ein Array ablegen, das beim Tod eines
+   Spielers ausgewertet und der darin enthaltene String
+   anschliessend auf dem Todeskanal gesendet wird.
+   Der Array muss folgenden Aufbau haben:
+
+     SetProp( P_DEATH_MSG, ({ Text, Flag }) )
+
+
+
+   Text: Der Text kann beliebig eingegeben werde. Allerdings darf
+         er nicht mit einem '\n' abgeschlossen werden.
+
+
+
+   Flag: Hier kann man drei Arten von Sendemethoden waehlen.
+         1. MSG_SAY      Normales Senden
+         2. MSG_GEMOTE   Genitiv-Emote
+         3. MSG_EMOTE    Emote
+
+
+BEISPIEL
+========
+
+   Der Spieler soll direkt nach seinem Tod eine Meldung auf dem
+   Todeskanal senden.
+
+
+
+   Nachricht auf dem Todes-Kanal:
+
+
+
+   [Tod:Spieler] Ich will keine Beleidsbekundungen!
+
+
+
+   void spieler_stirbt()
+   {
+    this_player()->SetProp( P_DEATH_MSG, ({ "Ich will keine "
+                                   "Beleidsbekundungen!", MSG_SAY}) );
+    this_player()->die();
+   }
+
+
+
+   Nachricht auf dem Todes-Kanal:
+
+
+
+   [Tod:Spieler liebt es zu sterben.]
+
+
+
+   void spieler_stirbt()
+   {
+    this_player()->SetProp( P_DEATH_MSG, ({ "liebt es zu sterben.",
+                                            MSG_EMOTE }) );
+    this_player()->die();
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_MURDER_MSG, P_FORCE_MURDER_MSG
diff --git a/doc/sphinx/man/props/P_DEATH_SPONSORED_BY b/doc/sphinx/man/props/P_DEATH_SPONSORED_BY
new file mode 100644
index 0000000..cae8532
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEATH_SPONSORED_BY
@@ -0,0 +1,42 @@
+
+P_DEATH_SPONSORED_BY
+********************
+
+
+NAME
+====
+
+   P_DEATH_SPONSORED_BY          "responsible_wizard_for_death"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property hat fuer den Spielverlauf keinerlei Bedeutung.
+   Doch gibt es Magier, die ihren Namen gern in /log/KILLS lesen.
+   Wird ein Spieler durch einen Npc getoetet, ist normalerweise der
+   Magier fuer den Tod verantwortlich, in dessen Verzeichnis sich
+   das Monster befindet.
+   Doch gibt es nun auch den Fall, dass sich das Monster in einem
+   Verzeichnis /alle/mon/ befindet, oder der Spieler durch eine
+   Aktion im Raum oder an einem Objekt stirbt.
+
+   Ist in einem solchen Monster, Raum oder Objekt diese Property
+   gesetzt, wird der dort angebene String an das Log-File ueber-
+   geben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_DEATH_SPONSORED_BY,"tilly");
+
+
+Last modified Don Feb 15 140100 2001 von Tilly
+==============================================
diff --git a/doc/sphinx/man/props/P_DEFAULT_GUILD b/doc/sphinx/man/props/P_DEFAULT_GUILD
new file mode 100644
index 0000000..55abd50
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFAULT_GUILD
@@ -0,0 +1,43 @@
+
+P_DEFAULT_GUILD
+***************
+
+
+NAME
+====
+
+   P_DEFAULT_GUILD                 "default_guild"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt den Namen der Gilde, welcher der Spieler
+   standardmaessig angehoert. Der Name wird hierbei in Form eines
+   kleingeschriebenen Strings angegeben. Ist P_GUILD gleich Null, so
+   wird bei der Abfrage selbiger Property hierfuer der Eintrag von
+   P_DEFAULT_GUILD eingesetzt.
+
+
+BEMERKUNGEN
+===========
+
+   Nach dem ersten Einloggen des Spielers wird ebenfalls dieser Eintrag
+   genutzt, um die Gildenzugehoerigkeit festzulegen. Dies kann dazu
+   genutzt werden, um eine rassenabhaengige Bestimmung der
+   Standardgilde zu gewaehrleisten
+    (Felinen -> Katzenkrieger, andere Rassen -> Abenteurer).
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, P_VISIBLE_GUILD
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_DEFAULT_NOTIFY_FAIL b/doc/sphinx/man/props/P_DEFAULT_NOTIFY_FAIL
new file mode 100644
index 0000000..351c96c
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFAULT_NOTIFY_FAIL
@@ -0,0 +1,21 @@
+
+P_DEFAULT_NOTIFY_FAIL
+*********************
+
+
+NAME
+====
+
+   P_DEFAULT_NOTIFY_FAIL         "default_notify_fail"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Welche Fehlermeldung kommt, wenn kein Objekt ein notify_fail macht?
diff --git a/doc/sphinx/man/props/P_DEFENDERS b/doc/sphinx/man/props/P_DEFENDERS
new file mode 100644
index 0000000..a54134a
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFENDERS
@@ -0,0 +1,45 @@
+
+P_DEFENDERS
+***********
+
+
+NAME
+====
+
+   P_DEFENDERS                     "defenders"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird in Lebewesen gesetzt, welche zum Beispiel durch
+   andere Lebewesen verteidigt werden. Die Verteidiger muessen
+   natuerlich bekannt sein, damit sie per InformDefend() ueber Angriffe
+   informiert werden und per DefendOther() in den laufenden Angriff
+   eingreifen koennen (zum Beispiel Schaeden abwehren oder umwandeln).
+   Es muessen jedoch nicht unbedingt Lebewesen oder echte Verteidiger
+   sein, auch beliebige Objekte koennen ueber Angriffe informiert
+   werden und in diese eingreifen. Allerdings besteht die
+   Einschraenkung, dass diese Objekte in der gleichen Umgebung sein
+   muessen, wie das zu verteidigende Lebewesen oder im zu verteidigenden
+   Lebewesen selbst.
+   Die Objekte, welche dies betrifft, sind in Form eines Arrays in
+   der Property P_DEFENDERS abgelegt.
+   Gesetzt und geloescht werden sollten die Eintraege dieses Arrays
+   jedoch nur mittels der dafuer bereitgestellten Funktionen
+   AddDefender() und RemoveDefender().
+
+
+SIEHE AUCH
+==========
+
+   AddDefender(), RemoveDefender(), InformDefend(), DefendOther(),
+   /std/living/combat.c
+
+Last modified: 21.09.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_DEFEND_FUNC b/doc/sphinx/man/props/P_DEFEND_FUNC
new file mode 100644
index 0000000..a9939e1
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFEND_FUNC
@@ -0,0 +1,50 @@
+
+P_DEFEND_FUNC
+*************
+
+
+NAME
+====
+
+   P_DEFEND_FUNC "defend_func"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine DefendFunc() fuer die Ruestung definiert, so muss
+   dieses Objekt in dieser Property eingetragen sein.
+
+   Die Auswertung dieser Property erfolgt in QueryDefend().
+
+
+BEMERKUNGEN
+===========
+
+   1. Es funktioniert _nicht_ hier eine Closure reinzuschreiben.
+   2. Diese Prop laesst sich _nicht_ sinnvoll mit Set() setzen, also z.B.
+      keine Query-Methoden hier reinzuschreiben.
+   3. Definieren von _set_defend_func() oder Set-Methoden via Set()
+      funktioniert auch nicht, zumindest nicht mit dem gewuenschten
+      Ergebnis. ;-)
+   4. Bei Verwendung bitte Balance-Richtlinien beachten!
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu DefendFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, DefendFunc(), balance, grenzwerte
+
+Last modified: Sat May 18 15:26:17 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_DEFUEL_AMOUNT_DRINK b/doc/sphinx/man/props/P_DEFUEL_AMOUNT_DRINK
new file mode 100644
index 0000000..79dcfa5
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFUEL_AMOUNT_DRINK
@@ -0,0 +1,36 @@
+
+P_DEFUEL_AMOUNT_DRINK
+*********************
+
+
+NAME
+====
+
+   P_DEFUEL_AMOUNT_DRINK                          "defuel_amount_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige Enttankvorgabe fuer Trinken.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_DEFUEL_AMOUNT_FOOD b/doc/sphinx/man/props/P_DEFUEL_AMOUNT_FOOD
new file mode 100644
index 0000000..f61a23e
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFUEL_AMOUNT_FOOD
@@ -0,0 +1,36 @@
+
+P_DEFUEL_AMOUNT_FOOD
+********************
+
+
+NAME
+====
+
+   P_DEFUEL_AMOUNT_FOOD                          "defuel_amount_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige Enttankvorgabe fuer Essen.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_DEFUEL_LIMIT_DRINK b/doc/sphinx/man/props/P_DEFUEL_LIMIT_DRINK
new file mode 100644
index 0000000..d3a2c3c
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFUEL_LIMIT_DRINK
@@ -0,0 +1,37 @@
+
+P_DEFUEL_LIMIT_DRINK
+********************
+
+
+NAME
+====
+
+   P_DEFUEL_LIMIT_DRINK                          "defuel_limit_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Menge an Trinken, ab dem ein
+   Enttankvorgang fuer den Spieler moeglich ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_FOOD,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_DEFUEL_LIMIT_FOOD b/doc/sphinx/man/props/P_DEFUEL_LIMIT_FOOD
new file mode 100644
index 0000000..bb012a3
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFUEL_LIMIT_FOOD
@@ -0,0 +1,37 @@
+
+P_DEFUEL_LIMIT_FOOD
+*******************
+
+
+NAME
+====
+
+   P_DEFUEL_LIMIT_FOOD                          "defuel_limit_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Menge an Essen, ab dem ein
+   Enttankvorgang fuer den Spieler moeglich ist.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+              P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_DEFUEL_TIME_DRINK b/doc/sphinx/man/props/P_DEFUEL_TIME_DRINK
new file mode 100644
index 0000000..3ff3b74
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFUEL_TIME_DRINK
@@ -0,0 +1,37 @@
+
+P_DEFUEL_TIME_DRINK
+*******************
+
+
+NAME
+====
+
+   P_DEFUEL_TIME_DRINK                          "defuel_time_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Zeit zwischen einzelnen
+   Enttankvorgaengen fuer Trinken eines Spielers.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_FOOD,
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_DEFUEL_TIME_FOOD b/doc/sphinx/man/props/P_DEFUEL_TIME_FOOD
new file mode 100644
index 0000000..fcd80d0
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEFUEL_TIME_FOOD
@@ -0,0 +1,37 @@
+
+P_DEFUEL_TIME_FOOD
+******************
+
+
+NAME
+====
+
+   P_DEFUEL_TIME_FOOD                          "defuel_time_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/defuel.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die rassenabhaengige minimale Zeit zwischen einzelnen
+   Enttankvorgaengen fuer Essen eines Spielers.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  P_DEFUEL_TIME_DRINK,
+              P_DEFUEL_LIMIT_FOOD, P_DEFUEL_LIMIT_DRINK,
+              P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_AMOUNT_DRINK
+   Methoden:  defuel_drink, defuel_food
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Weitere:   P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_FOOD, P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_DEPARTMSG b/doc/sphinx/man/props/P_DEPARTMSG
new file mode 100644
index 0000000..917e01c
--- /dev/null
+++ b/doc/sphinx/man/props/P_DEPARTMSG
@@ -0,0 +1,21 @@
+
+P_DEPARTMSG
+***********
+
+
+NAME
+====
+
+   P_DEPARTMSG                   "departmsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, mit der ein Transporter ablegt.
diff --git a/doc/sphinx/man/props/P_DESCRIPTION b/doc/sphinx/man/props/P_DESCRIPTION
new file mode 100644
index 0000000..4d32999
--- /dev/null
+++ b/doc/sphinx/man/props/P_DESCRIPTION
@@ -0,0 +1,21 @@
+
+P_DESCRIPTION
+*************
+
+
+NAME
+====
+
+   P_DESCRIPTION                 "description"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Beschreibung des Spielers
diff --git a/doc/sphinx/man/props/P_DESTROY_BAD b/doc/sphinx/man/props/P_DESTROY_BAD
new file mode 100644
index 0000000..94f00e5
--- /dev/null
+++ b/doc/sphinx/man/props/P_DESTROY_BAD
@@ -0,0 +1,52 @@
+
+P_DESTROY_BAD
+*************
+
+
+NAME
+====
+
+   P_DESTROY_BAD                 "std_food_destroy_bad"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Speichert den Wert fuer das Verhalten, wenn eine Speise verdirbt.
+   Dieses Verhalten wird in make_bad() umgesetzt.
+
+
+
+   DESTROY_BAD   : Die Speise wird beim Verderben zerstoert
+                   bzw. der Behaelter wird geleert
+   DESTROY_NEVER : Die Speise wird beim Verderben nicht zerstoert
+   pos. Integer  : Anzahl der Sekunden, die zwischen Verderben
+                   und Zerstoeren der Speise liegen sollen
+
+
+BEMERKUNGEN
+===========
+
+   Ist ein positiver Integer-Wert in dieser Property gespeichert, wird nach
+   Ausfuehren der Methode make_bad() nach Ablauf der angegebenen Sekunden
+   ein weiterer Reset ausgeloest, der make_destroy() aufruft.
+
+
+DEFAULT
+=======
+
+   Initial ist diese Property auf DESTROY_BAD gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_DESTRUCT_MSG b/doc/sphinx/man/props/P_DESTRUCT_MSG
new file mode 100644
index 0000000..334c374
--- /dev/null
+++ b/doc/sphinx/man/props/P_DESTRUCT_MSG
@@ -0,0 +1,21 @@
+
+P_DESTRUCT_MSG
+**************
+
+
+NAME
+====
+
+   P_DESTRUCT_MSG                "destruct_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung, die beim Destructen Obj ausgegegen wird (nur Magier)
diff --git a/doc/sphinx/man/props/P_DETAILS b/doc/sphinx/man/props/P_DETAILS
new file mode 100644
index 0000000..e14c15c
--- /dev/null
+++ b/doc/sphinx/man/props/P_DETAILS
@@ -0,0 +1,44 @@
+
+P_DETAILS
+*********
+
+
+NAME
+====
+
+   P_DETAILS            "details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man kann diese Property nicht per SetProp() veraendern, sondern muss die
+   entsprechenden Funktionen nutzen.
+   AddSpecialDetail() und RemoveSpecialDetail() sollten nicht mehr
+   verwendet werden.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail()
+   Loeschen:  RemoveDetail()
+   Aehnlich:  P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail()
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_DIE_MSG b/doc/sphinx/man/props/P_DIE_MSG
new file mode 100644
index 0000000..0bd5d17
--- /dev/null
+++ b/doc/sphinx/man/props/P_DIE_MSG
@@ -0,0 +1,56 @@
+
+P_DIE_MSG
+*********
+
+
+NAME
+====
+
+   P_DIE_MSG                  "die_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property uebergibt man einen String, der ausgegeben wird, wenn
+   das Lebewesen stirbt. Ist die Property nicht gesetzt, so wird als String
+   benutzt:
+      " faellt tot zu Boden.\n".
+
+   Der Name des Lebewesens wird dem String vor der Ausgabe vorangestellt.
+   Der Satzumbruch am Zeilenende und das Leerzeichen nach dem Namen des
+   Lebewesens muss man selbst angegeben. Es sollte allerdings beachtet
+   werden, dass ein Lebewesen, das durch Gift getoetet wird, eine spezielle
+   nicht zu beeinflussende Meldung erhaelt. Es wird dann als String
+   benutzt:
+      " wird von Gift hinweggerafft und kippt um.\n".
+
+
+BEISPIELE
+=========
+
+   Bei einem mitkaempfenden Schatten waere es eher unlogisch, wenn nach
+   dessen 'Tod' eine Leiche zurueckbliebe. Eine logische Konsequenz waere
+   folgende Meldung:
+      SetProp(P_DIE_MSG," loest sich auf.\n");
+      SetProp(P_NOCORPSE,1);
+
+   Damit dann auch wirklich keine Leiche zurueckbleibt, wird zusaetzlich
+   die Property P_NOCORPSE gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_DISABLE_ATTACK b/doc/sphinx/man/props/P_DISABLE_ATTACK
new file mode 100644
index 0000000..37544ae
--- /dev/null
+++ b/doc/sphinx/man/props/P_DISABLE_ATTACK
@@ -0,0 +1,64 @@
+
+P_DISABLE_ATTACK
+****************
+
+
+NAME
+====
+
+   P_DISABLE_ATTACK              "disable_attack"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Das Lebewesen kann nicht angreifen. Beim Setzen der Property ist es
+   wichtig, SetProp() zu benutzen und die Anzahl der Kampfrunden anzugeben,
+   die das Lebewesen paralysiert sein soll.
+
+   Ein negativer Wert ist nicht gueltig. Bei mehr als 30 Kampfrunden wird
+   die Paralyse auf 30 Kampfrunden gekappt.
+
+   Fuer jede Paralyse bekommt ein Living eine ebenso lange Schutzzeit nach
+   der Paralyse gewaehrt. Versucht man, vor Ablauf der Paralyse
+   P_DISABLE_ATTACK hoeher zu setzen (oder setzt man innerhalb der folgenden
+   Schutzzeit P_DISABLE_ATTACK auf > 0), wird DISABLE_TOO_EARLY von SetProp
+   zurueck gegeben.
+   Eine Reduktion von einem P_DISABLE_ATTACK ist moeglich, allerdings
+   reduziert dies _nicht_ eine einmal gesetzte Schutzzeit.
+
+   Einen Gegner,der nie paralysiert werden koennen soll, kann man einfach
+   per
+
+   Set(P_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);
+
+   erstellen, da bei diesem der Wert von P_DISABLE_ATTACK nicht mehr mit
+   einem normalen SetProp()-Aufruf geaendert werden kann.
+
+
+BEISPIELE
+=========
+
+   // Gegner 17 Runden lang paralysieren, ohne Ruecksicht auf fruehere P.
+   // (in diesem Moment ist das Living bis time() + 4 * 17 vor laengerer
+   //  oder erneuter Paralyse geschuetzt)
+   en->SetProp(P_DISABLE_ATTACK, 17);
+   // Der Gegner kann jetzt fuer 34 Kampfrunden nicht erneut paralysiert
+   // werden.
+   // Paralyse reduzieren auf 10 Kampfrunden
+   en->SetProp(P_DISABLE_ATTACK, 10);
+   // Die Schutzzeit ist immer noch bei 34 Kampfrunden, nicht bei 20.
+
+
+SIEHE AUCH
+==========
+
+   P_NEXT_DISABLE_ATTACK
+
+19.08.2014, Zesstra
diff --git a/doc/sphinx/man/props/P_DISABLE_COMMANDS b/doc/sphinx/man/props/P_DISABLE_COMMANDS
new file mode 100644
index 0000000..e66910a
--- /dev/null
+++ b/doc/sphinx/man/props/P_DISABLE_COMMANDS
@@ -0,0 +1,100 @@
+
+P_DISABLE_COMMANDS
+******************
+
+
+NAME
+====
+
+   P_DISABLE_COMMANDS             "p_lib_disablecommands"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/command.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Prop kann man verhindern, dass Kommandos eines Spielers
+   verarbeitet werden. Dies ist z.B. in Sequenzen nuetzlich, wo der Spieler
+   rein passiv konsumieren soll.
+   In diese Property muss ein Array mit 2 oder 3 Elementen geschrieben
+   werden:
+      1) Endzeitpunkt in Sekunden seit 1.1.1970 (int)
+      2) Meldung (String oder Closure)
+      3) (optional) Array von trotzdem erlaubten Verben (string*)
+        (nur ausgewertet, wenn die Meldung ein String ist)
+
+
+
+   Ist die Meldung ein String, wird dieser einfach bei jedem Kommando so wie
+   er ist an den Spieler ausgegeben und das Kommando abgebrochen.
+   Ist die Meldung eine Closure wird diese bei jedem Kommando aufgerufen und
+   das Kommando abgebrochen, wenn sie einen Rueckgabewert != 0 zurueckgibt.
+   In diesem Fall ist die gerufene Funktion dafuer verantwortlich, geeignete
+   Meldungen an den Spieler auszugeben!
+   Der Funktion wird der vom Spieler eingebene Befehl (string) als erstes
+   Argument uebergeben. Zu diesem Zeitpunkt wurde alle Aliase schon
+   ausgewertet. Die Funktion kann den Kommandogeber via this_player()
+   ermitteln.
+   Fuer weitere Informationen steht auch command_stack() zur Verfuegung,
+   allerdings ist dort die Alias-Ersetzung nicht beruecksichtigt.
+
+   Die Ausnahmeliste wird nur fuer simple Strings als Meldung ausgewertet,
+   wird eine Closure verwendet, kann diese besser selber die Ausnahmen
+   bestimmen.
+
+
+
+   Fragt man diese Prop ab, erhaelt man ein Array mit 4 Elementen: setzendes
+   Objekt (object), Ablaufzeit (int), Meldung (String oder Closure) und
+   Liste von Ausnahmen (string*).
+
+
+BEMERKUNGEN
+===========
+
+   1. Die Prop wird fuer Magier mit eingeschaltetem P_WANTS_TO_LEARN
+      ignoriert.
+   2. Wenn das Objekt zerstoert wird, was die Prop gesetzt hat, wird der
+      Eintrag unwirksam.
+   3. Wenn diese Prop gesetzt und nicht abgelaufen ist, kann nur das gleiche
+      Objekt sie mit neuen Daten ueberschreiben. Alle anderen Objekte koennen
+      die Prop nur loeschen. Dies soll verhindern, dass Magier unabsichtlich
+      einfach anderer Leute Eintraege ueberschreiben. Dementsprechend: Lasst
+      die Finger davon, wenn die schon gesetzt ist. ;-)
+   4. Diese Prop darf _ausschliesslich_ mit SetProp() und QueryProp() benutzt
+      werden, Set() und Query() funktionieren _nicht_.
+   5. Es gibt einige Verben, die NIE blockiert werden. Zur Zeit sind dies
+      "mrufe", "mschau", "bug", "idee", "typo" und "detail".
+   6. Bitte nicht missbrauchen, speziell nicht dazu, die Kommandos von
+      Spieler zu ueberwachen/mitzuschreiben. Das Setzen dieser Prop wird
+      geloggt.
+
+
+BEISPIEL
+========
+
+   In einem Raum startet eine Sequenz, in der der Spieler nichts machen soll:
+
+   if (!pl->QueryProp(P_DISABLE_COMMANDS))
+      pl->SetProp(P_DISABLE_COMMANDS,
+            ({ time() + 120, "Du bist tief in Deinem Traum gefangen!\n" }) );
+   else // ... Fehlerbehandlung, falls Prop schon gesetzt ...
+
+
+
+   Soll die Prop aus irgendeinem Grund (vorzeitig) geloescht werden:
+   pl->SetProp(P_DISABLE_COMMANDS, 0);
+
+
+SIEHE AUCH
+==========
+
+   command(), query_command(), command_stack(), modify_command(),
+   this_player()
+
+01.12.2012, Zesstra
diff --git a/doc/sphinx/man/props/P_DISTRIBUTION b/doc/sphinx/man/props/P_DISTRIBUTION
new file mode 100644
index 0000000..51140ae
--- /dev/null
+++ b/doc/sphinx/man/props/P_DISTRIBUTION
@@ -0,0 +1,31 @@
+
+P_DISTRIBUTION
+**************
+
+
+NAME
+====
+
+   P_DISTRIBUTION                "std_food_distribution"
+
+
+DEFINIERT IN
+============
+
+   /sys/food.h
+
+
+BESCHREIBUNG
+============
+
+   Verteilung der Heilung ueber mehrere Heartbeats.
+   Dieser Wert wird im entry_info als H_DISTRIBUTION dem consume() im
+   Living uebergeben.
+
+
+SIEHE AUCH
+==========
+
+   consume
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_DMSG b/doc/sphinx/man/props/P_DMSG
new file mode 100644
index 0000000..40af065
--- /dev/null
+++ b/doc/sphinx/man/props/P_DMSG
@@ -0,0 +1,21 @@
+
+P_DMSG
+******
+
+
+NAME
+====
+
+   P_DMSG                        "destmsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   *** OBSOLET! *** Siehe P_DESTRUCT_MSG
diff --git a/doc/sphinx/man/props/P_DOMAIN b/doc/sphinx/man/props/P_DOMAIN
new file mode 100644
index 0000000..aad5288
--- /dev/null
+++ b/doc/sphinx/man/props/P_DOMAIN
@@ -0,0 +1,50 @@
+
+P_DOMAIN
+********
+
+
+NAME
+====
+
+   P_DOMAIN                                        "lib_p_domain"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Region, in der ein Raum liegt, sofern er
+   in /d/ liegt.
+
+   Falls ein Raum nicht in /d/ liegt, aber es eigentlich ein Gebiet ist,
+   welches eindeutig in einer Region zugeordnet ist, kann der Magier
+   hier gezielt einen anderen Wert setzen.
+
+
+
+   Bitte keine Regionen faelschen!
+
+
+BEISPIEL
+========
+
+   In /d/inseln/zesstra/vulkanweg/room/r1 liefert
+   QueryProp(P_DOMAIN)
+   ein "Inseln" zurueck.
+
+   In einem Raum der Chaosgilde:
+   SetProp(P_DOMAIN, "Polar");
+   damit der Raum als Raum der Region Polar angezeigt wird.
+
+
+SIEHE AUCH
+==========
+
+   gmcp
+
+23.02.2013, Zesstra
diff --git a/doc/sphinx/man/props/P_DOOR_INFOS b/doc/sphinx/man/props/P_DOOR_INFOS
new file mode 100644
index 0000000..dc393da
--- /dev/null
+++ b/doc/sphinx/man/props/P_DOOR_INFOS
@@ -0,0 +1,58 @@
+
+P_DOOR_INFOS
+************
+
+
+NAME
+====
+
+   P_DOOR_INFOS                  "door_infos"
+
+
+DEFINIERT IN
+============
+
+   /sys/doorroom.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit Informationen ueber eine im Raum per NewDoor() definierte
+   Tuer. Diese Infos werden ueber /std/room/doors.c an den /obj/doormaster.c
+   weitergegeben und dem Raum, der die Tuer besitzt, als Property gesetzt.
+   Werden mehrere Tueren in einem Raum eingebunden, enthaelt das Mapping
+   entsprechend viele Eintraege.
+
+   Dieses Mapping dient zur internen Verwaltung der Tueren im
+   /obj/doormaster.c und sollte nicht per Hand veraendert werden!
+
+   Die Eintraege im Mapping haben folgende keys (definiert in
+   /sys/doorroom.h):
+
+   D_DEST : Zielraum (string)
+   D_CMDS : Befehl(e), um durch die Tuer zu gehen (string oder *string)
+   D_IDS  : IDs der Tuer (string oder *string)
+   D_FLAGS : Besondere Eigenschaften der Tuer (Tuer braucht Schluessel etc.)
+   D_LONG  : Langbeschreibung (string)
+   D_SHORT : Kurzbeschreibung (string)
+   D_NAME  : Name (string oder *string)
+   D_GENDER  : Geschlecht
+   D_FUNC    : Funktion, die VOR dem Durchschreiten der Tuer aufgerufen wird
+   D_MSGS    : Bewegungsmeldungen
+   D_FUNC2   : Funktion, die NACH dem Durchschreiten der Tuer aufgerufen wird
+   D_TESTFUNC  : Funktion die im Sartraum testet, ob die Tuer durchschritten
+                 werden darf
+   D_RESET_MSG : Meldungen beim Tuer-Reset
+   D_OPEN_WITH_MOVE : Falls gesetzt, wird die Tuer auch mit dem
+                      Bewegungsbefehl geoeffnet und durchschritten, falls
+                      Oeffnen erfolgreich
+
+
+SIEHE AUCH
+==========
+
+   NewDoor(), QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(),
+   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()
+
+Letzte Aenderung: Don, 08.05.2014, Gabylon
diff --git a/doc/sphinx/man/props/P_DO_DESTRUCT b/doc/sphinx/man/props/P_DO_DESTRUCT
new file mode 100644
index 0000000..6aa9384
--- /dev/null
+++ b/doc/sphinx/man/props/P_DO_DESTRUCT
@@ -0,0 +1,36 @@
+
+P_DO_DESTRUCT
+*************
+
+
+NAME
+====
+
+   P_DO_DESTRUCT                 "do_destruct"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Flag, ob sich die Lichtquelle am Ende der Leuchtzeit selbst
+   zerstoert.
+
+
+SIEHE AUCH
+==========
+
+   Basisklassen: /std/lightsource.c
+   Properties: P_FUEL, P_LIGHTDESC, P_LIGHT
+   Methoden: AddFuel(L)
+
+
+LETZTE AENDERUNG
+================
+
+   22. Dez. 2015, Arathorn
diff --git a/doc/sphinx/man/props/P_DRINK b/doc/sphinx/man/props/P_DRINK
new file mode 100644
index 0000000..028e987
--- /dev/null
+++ b/doc/sphinx/man/props/P_DRINK
@@ -0,0 +1,39 @@
+
+P_DRINK
+*******
+
+
+NAME
+====
+
+   P_DRINK                       "drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Numerischer Wert fuer den Saettigungsgrad eines Lebewesens mit
+     Getraenken. Der maximale Wert steht in P_MAX_DRINK.
+
+   - Speisen/Kneipen
+     Numerischer Wert fuer den Saettigungsgrad einer Portion eines
+     Getraenkes. Ist diese Property nicht gesetzt oder zusaetzlich
+     P_FOOD gesetzt, kann man diese Speise nicht trinken. Eine
+     funktionierende Speise _muss_ entweder P_FOOD oder P_DRINK
+     groesser 0 gesetzt haben.
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_DRINK, P_DRINK_DELAY, consume
+   P_FOOD, P_ALCOHOL, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_DRINK_DELAY b/doc/sphinx/man/props/P_DRINK_DELAY
new file mode 100644
index 0000000..1617b47
--- /dev/null
+++ b/doc/sphinx/man/props/P_DRINK_DELAY
@@ -0,0 +1,23 @@
+
+P_DRINK_DELAY
+*************
+
+
+NAME
+====
+
+   P_DRINK_DELAY                 "drink_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_DRINK um einen Punkt sinkt.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/sphinx/man/props/P_DRINK_FULL_MSG b/doc/sphinx/man/props/P_DRINK_FULL_MSG
new file mode 100644
index 0000000..1e5c2ce
--- /dev/null
+++ b/doc/sphinx/man/props/P_DRINK_FULL_MSG
@@ -0,0 +1,45 @@
+
+P_DRINK_FULL_MSG
+****************
+
+
+NAME
+====
+
+   P_DRINK_FULL_MSG              "std_food_drink_full_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn ein Getraenk getrunken werden soll,
+   obwohl dieser nichts mehr trinken kann.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "So viel kannst Du im Moment nicht trinken."
+
+
+SIEHE AUCH
+==========
+
+   P_DRINK, P_MAX_DRINK, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_DROP_MSG b/doc/sphinx/man/props/P_DROP_MSG
new file mode 100644
index 0000000..9ccb875
--- /dev/null
+++ b/doc/sphinx/man/props/P_DROP_MSG
@@ -0,0 +1,96 @@
+
+P_DROP_MSG
+**********
+
+
+NAME
+====
+
+   P_DROP_MSG                         "drop_message"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/put_and_get.h
+
+
+BESCHREIBUNG
+============
+
+   Mit P_DROP_MSG kann man die Meldung, die man beim Ablegen eines
+   Objektes bekommt, modifizieren.
+
+   Folgende Werte sind moeglich:
+
+
+
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+
+
+
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
+
+
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum.
+
+
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das fallengelassen wird
+
+
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an
+     den Raum.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Ugars Handaxt" );
+    SetProp( P_LONG, break_string(
+     "Dieses ist eine Kampfaxt, wie sie Orks normalerweise benutzen. "
+     "Da Du Zeit hast, sie Dir anzuschauen, ist der Besitzer wohl "
+     "bereits bei Lars.",78 ));
+
+
+
+    SetProp( P_NAME, "Axt" );
+    AddId( ({"handaxt","axt"}) );
+    SetProp( P_GENDER, FEMALE );
+
+
+
+    SetProp( P_DROP_MSG, ({
+     "Du schmeisst @WEN2 hin.",
+     "@WER1 schmeisst Dir @WENU2 vor die Fuesse.\n"}));
+    ...
+   }
+
+   Will Ugar seine Axt ablegen und gibt "lasse axt fallen" ein, werden
+   folgende Meldungen ausgegeben:
+
+
+
+   Ugar: "Du schmeisst die Axt hin."
+   Raum: "Ugar schmeisst Dir eine Axt vor die Fuesse."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_PICK_MSG, P_PUT_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), drop_obj(L), /std/living/put_and_get.c
+
+14. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_EARMUFFS b/doc/sphinx/man/props/P_EARMUFFS
new file mode 100644
index 0000000..e5b4bbb
--- /dev/null
+++ b/doc/sphinx/man/props/P_EARMUFFS
@@ -0,0 +1,22 @@
+
+P_EARMUFFS
+**********
+
+
+NAME
+====
+
+   P_EARMUFFS                    "earmuffs"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Shouts von Spielern und Magiern mit Magierlevel < earmuffs werden
+   abgeblockt (Nur fuer Magier).
diff --git a/doc/sphinx/man/props/P_EATER_MSG b/doc/sphinx/man/props/P_EATER_MSG
new file mode 100644
index 0000000..132469d
--- /dev/null
+++ b/doc/sphinx/man/props/P_EATER_MSG
@@ -0,0 +1,44 @@
+
+P_EATER_MSG
+***********
+
+
+NAME
+====
+
+   P_EATER_MSG                   "std_food_eater_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn eine Speise konsumiert wird.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Du konsumierst @WEN1."
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_EFFECTIVE_AC b/doc/sphinx/man/props/P_EFFECTIVE_AC
new file mode 100644
index 0000000..5473d5d
--- /dev/null
+++ b/doc/sphinx/man/props/P_EFFECTIVE_AC
@@ -0,0 +1,107 @@
+
+P_EFFECTIVE_AC
+**************
+
+
+NAME
+====
+
+   P_EFFECTIVE_AC      "effective_ac"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kommt sowohl in Ruestungen als auch in Waffen, die
+   schuetzen sollen, zum Einsatz.
+
+   In Ruestungen kann hier der Effektivwert der Ruestungsklasse vermerkt
+   werden, wenn diese noch durch eine DefendFunc() modifiziert wird
+   (soweit sich ein solcher Effektivwert angeben laesst).
+
+   In einigen Gilden koennen Waffen auch als Ruestung eingesetzt werden
+   (z.B. beim Parieren eines Angriffs). In dieser Property kann man die
+   Ruestungsklasse eintragen, die die Waffe bei solchen Aktionen aufweisen
+   soll. Dabei ist man an die ueblichen Beschraenkungen der
+   Ruestungsklasse gebunden! (s. /sys/combat.h)
+
+
+BERMERKUNGEN
+============
+
+   Das Kaempferspellbook verwendet fuer Paraden etc. P_EFFECTIVE_AC anstatt
+   P_AC, wenn verfuegbar.
+
+
+BEISPIELE
+=========
+
+   * DefendFuncs:
+     Der doppelte Mittelwert der DefendFunc wird zur Basis-AC dazuaddiert,
+     da sich der 'Schutzwert = random(Basis-AC) + absolut(DefendFunc-Wert)'
+     berechnet.
+
+   // #1 Eine Ruestung mit P_AC von 35 und randomisierter DefendFunc
+      SetProp(P_AC, 35);
+      SetProp(P_DEFEND_FUNC, this_object());
+
+      int DefendFunc(...) {
+        return random(20);                       // Mittelwert: 10
+      }
+      -> SetProp(P_EFFECTIVE_AC, 55);            // 35 + 2*10 = 55
+
+   // #2 Eine Ruestung mit P_AC von 35 und teilrandomisierter DefendFunc
+      SetProp(P_AC, 35);
+      SetProp(P_DEFEND_FUNC, this_object());
+
+      int DefendFunc(...) {
+        return 20 + random(10);                  // Mittelwert: 20 + 5
+      }
+      -> SetProp(P_EFFECTIVE_AC, 85);            // 35 + 2*(20+5) = 85
+
+   * Sonderfunktion im Kontext der Kaempfergilde:
+     Auch wenn der eigentliche AC-Wert durch keine DefendFunc oAe
+     modifiziert wird, sind abweichende Werte in P_EFFECTIVE_AC zB in der
+     Kaempfergilde fuer Paraden oder aehnliches sinnvoll. Maximalwert ist
+     dafuer der doppelte Wert des Basis-AC-Wertes.
+
+   // #3 Ein schon sehr gutes Schild, welches bei der Schildparade aber
+   //    noch besser schuetzen soll.
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 38);
+      SetProp(P_EFFECTIVE_AC, 55);
+
+   // #4 Ein sehr labbriges Schild schuetzt zwar gegen normale Schlaege,
+   //    ist zum Parieren aber irgendwie ungeeignet weil unkontrollierbar.
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 38);
+      SetProp(P_EFFECTIVE_AC, 20);
+
+   * Waffen:
+     P_EFFECTIVE_AC wird im Kaempferspellbook als Bonus dazugezaehlt! Daher
+     sollten gute Parierwaffen auch einen niedrigeren P_WC-Wert haben.
+     Reine Parierwaffen duerfen den maximalen AC-Wert von Schilden als
+     Maximum gesetzt haben - die Balance klaert ggf, ob das auch auf den
+     Gildenparierwert anwendbar ist.
+
+   // #5 Eine maessige Hellebarde/Axtwaffe mit Parierhaken.
+      SetProp(P_WEAPON_TYPE, WT_AXE);
+      SetProp(P_WC, 100);
+      SetProp(P_EFFECTIVE_AC, 25);
+
+
+SIEHE AUCH
+==========
+
+   Waffen:     P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
+   Ruestungen: P_AC, P_TOTAL_AC, DefendFunc()
+   Files:      /std/weapon.c, /std/weapon/combat.c
+   Balance:    waffen, ruestungen, properties, kaempferboni
+
+6. Nov 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_EFFECTIVE_WC b/doc/sphinx/man/props/P_EFFECTIVE_WC
new file mode 100644
index 0000000..aa16980
--- /dev/null
+++ b/doc/sphinx/man/props/P_EFFECTIVE_WC
@@ -0,0 +1,112 @@
+
+P_EFFECTIVE_WC
+**************
+
+
+NAME
+====
+
+   P_EFFECTIVE_WC     "effective_wc"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kommt sowohl in Waffen als auch Ruestungen, die Schaden
+   machen sollen, zum Einsatz.
+
+   Falls die Staerke einer Waffe noch durch eine HitFunc() modifiziert
+   wird, sollte hier der Effektivwert der Waffenklasse vermerkt werden,
+   soweit er sich angeben laesst.
+   Diese Property dient vor allem dazu, eine Waffe mit HitFunc() korrekt
+   einzuschaetzen.
+
+   In einigen Gilden koennen Ruestungen auch als Waffen eingesetzt werden
+   (z.B. ein Paar Schuhe zum Treten). In dieser Property kann man die
+   Waffenklasse eintragen, die die Ruestung bei solchen Aktionen aufweisen
+   soll. Dabei ist man an die ueblichen Beschraenkungen der Waffenklasse
+   gebunden! (s. /sys/combat.h)
+   Der Ruestung kann man dann auch einen Schadenstyp mit auf den Weg
+   geben.
+
+
+BEMERKUNGEN
+===========
+
+   Das Kaempferspellbook verwendet bei Ruestungen P_AC, wenn
+   P_EFFECTIVE_WC nicht gesetzt ist.
+
+
+BEISPIELE
+=========
+
+   * HitFuncs:
+     Der doppelte Mittelwert der HitFunc wird zur Basis-WC dazuaddiert,
+     da sich der 'Angriffswert = random(Basis-WC) + absolut(HitFunc-Wert)'
+     berechnet.
+
+   // #1 Waffe mit Basis-WC 120 und randomisierter HitFunc
+      SetProp(P_WC, 120);
+      SetProp(P_HIT_FUNC, this_object());
+
+
+
+      int HitFunc(...) {
+        return random(30);                       // Mittelwert: 15
+      }
+      -> SetProp(P_EFFECTIVE_WC, 150);           // 120 + 2*15 = 150
+
+
+
+   // #2 Waffe mit Basis-WC 120 und teilweise absoluter HitFunc
+      SetProp(P_WC, 120);
+      SetProp(P_HIT_FUNC, this_object());
+
+
+
+      int HitFunc(...) {
+        return 30 + random(10);                  // Mittelwert: 30 + 5
+      }
+      -> SetProp(P_EFFECTIVE_WC, 190);           // 120 + 2*(30+5) = 190
+
+   * Ruestungen (zB Gildennutzung):
+     Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der jeweils
+     doppelte maximale P_AC-Wert. Angabe eines Schadenstyps ist sinnvoll.
+
+   // #3 Ein paar Schuhe, mit maximalem Schlag-/Saeureschaden.
+      SetProp(P_ARMOUR_TYPE, AT_BOOT);
+      SetProp(P_AC, 2);
+      SetProp(P_DAM_TYPE, ({DT_BLUDGEON,DT_ACID}));
+      -> SetProp(P_EFFECTIVE_WC, 12);  // hoechstmoeglicher Wert bei
+                                       // Schuhen, da deren max. P_AC = 6
+   // aequivalent und zukunftssicher:
+      -> SetProp(P_EFFECTIVE_WC, 2 * VALID_ARMOUR_CLASS[AT_BOOT]);
+
+   // #4 Ein Schild mit spitzem Dorn. (Stichschaden beim Schildstoss.)
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 5);
+      SetProp(P_DAM_TYPE, ({DT_PIERCE}));
+      SetProp(P_EFFECTIVE_WC, 55);
+
+   // #5 Ein Gummischild ist schlecht fuer Angriffe. BOING!
+      SetProp(P_ARMOUR_TYPE, AT_SHIELD);
+      SetProp(P_AC, 30);
+      SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
+      SetProp(P_EFFECTIVE_WC, 10);
+
+
+SIEHE AUCH
+==========
+
+   Waffen:     P_WC, P_TOTAL_WC, HitFunc()
+   Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
+   Files:      /std/weapon.c, /std/weapon/combat.c
+   Balance:    waffen, ruestungen, properties, kaempferboni
+
+6. Nov 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_EMPTY_MSG b/doc/sphinx/man/props/P_EMPTY_MSG
new file mode 100644
index 0000000..e91d622
--- /dev/null
+++ b/doc/sphinx/man/props/P_EMPTY_MSG
@@ -0,0 +1,45 @@
+
+P_EMPTY_MSG
+***********
+
+
+NAME
+====
+
+   P_EMPTY_MSG                   "std_food_eater_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn versucht wird, eine aufgebrauchte Speise
+   (also einen leeren Behaelter) zu konsumieren.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise (also den leeren Behaelter)
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER1 ist bereits leer."
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_EMPTY_PROPS b/doc/sphinx/man/props/P_EMPTY_PROPS
new file mode 100644
index 0000000..6f5c126
--- /dev/null
+++ b/doc/sphinx/man/props/P_EMPTY_PROPS
@@ -0,0 +1,54 @@
+
+P_EMPTY_PROPS
+*************
+
+
+NAME
+====
+
+   P_EMPTY_PROPS                 "std_food_empty_props"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit Properties fuer den leeren Behaelter, der uebrig bleibt,wenn
+   eine Speise aufgebraucht ist. 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 - es bleibt also kein Behaelter zurueck.
+   Achtung: Es werden keine closures in diesem Mapping unterstuetzt!
+
+
+BEMERKUNGEN
+===========
+
+   Bei der Abfrage von P_VALUE und P_WEIGHT in der Speise, werden die dazu
+   in P_EMPTY_PROPS gespeicherten Werte verwendet, um das Gewicht/Wert des
+   leeren Behaelters zum Gesamtwert der Speise zu addieren.
+   Man kann alle Properties in dieses Mapping eintragen, die sich in der
+   Speise per SetProp setzen lassen. Zusaetzlich kann man Arrays in P_IDS
+   und P_ADJECTIVES speichern, die per Add-Methode in der Speise
+   hinzugefuegt werden, nachdem die im create() der Speise hinzugefuegten
+   Ids/Adjectives dort entfernt wurden.
+
+
+BEISPIELE
+=========
+
+   Beispiele zur Verwendung findet man unter /doc/beispiele/food
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_ENABLE_IN_ATTACK_OUT b/doc/sphinx/man/props/P_ENABLE_IN_ATTACK_OUT
new file mode 100644
index 0000000..0a64c74
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENABLE_IN_ATTACK_OUT
@@ -0,0 +1,51 @@
+
+P_ENABLE_IN_ATTACK_OUT
+**********************
+
+
+NAME
+====
+
+   P_ENABLE_IN_ATTACK_OUT          "enable_in_attack_out"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise wird die bekannte Taktik Rein-Angriff-Raus
+   standardmaessig unterbunden, damit NPCs auch eine Chance haben, sich
+   zu verteidigen. Hierzu wird der Schaden innerhalb do_damage()
+   durch einen Wert geteilt, der sich aus der Verweildauer des
+   Angreifers im Raum ergibt (bis zu 3 Sekunden).
+   Da manche NPCs so konzeptioniert wurden, dass man sie nur mit der
+   erwaehnten Taktik toeten kann, kann man sie auch explizit erlauben
+   (manche NPCs verwenden auch eigene Methoden, diese Taktik zu
+    verbieten, und sie waere dann doppelt abgefangen).
+   Hierzu setzt man einfach die Property P_ENABLE_IN_ATTACK_OUT im NPC.
+
+
+BEISPIEL
+========
+
+   Das folgende Beispiel erlaubt einfach mal die angesprochene Taktik:
+     void create()
+     { ...
+       SetProp(P_ENABLE_IN_ATTACK_OUT,1);
+       ...
+     }
+   Jetzt kann man den NPC mit Rein-Angriff-Raus auch wirkungsvoll
+   bekaempfen.
+
+
+SIEHE AUCH
+==========
+
+   do_damage(), P_LAST_MOVE, /std/living/life.c
+
+Last modified: Sat Jan 30 12:53:00 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_ENEMY_DAMAGE b/doc/sphinx/man/props/P_ENEMY_DAMAGE
new file mode 100644
index 0000000..bad9c99
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENEMY_DAMAGE
@@ -0,0 +1,48 @@
+
+P_ENEMY_DAMAGE
+**************
+
+
+NAME
+====
+
+   P_ENEMY_DAMAGE "enemy_damage"
+
+
+DEFINIERT IN
+============
+
+   <living/life.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property ist vermerkt, welches Wesen diesem Wesen wieviel
+   Schaden zugefuegt hat.
+
+   Die Property enthaelt ein Mapping, das den Angreifern den
+   errechten Schaden zuordnet:
+   ([ <obname1>: <damage>; <owner>, ... ])
+
+     <obname1>: Name des Objekts, das den Schaden verursacht hat (string),
+                z.B. "/magier:zesstra"
+     <damage> : Schadensmenge (int)
+     <owner>  : wenn das schadensverursachende Wesen ein NPC war/ist,
+                welches P_HELPER_NPC gesetzt hatte und somit einem Spieler
+                hilft, steht hier das Objekt des jeweiligen Spielers
+                (object)
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property laesst sich nur abfragen!
+
+
+SIEHE AUCH
+==========
+
+   P_HELPER_NPC
+
+26.10.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_ENEMY_DEATH_SEQUENCE b/doc/sphinx/man/props/P_ENEMY_DEATH_SEQUENCE
new file mode 100644
index 0000000..03b2bec
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENEMY_DEATH_SEQUENCE
@@ -0,0 +1,61 @@
+
+P_ENEMY_DEATH_SEQUENCE
+**********************
+
+
+NAME
+====
+
+   P_ENEMY_DEATH_SEQUENCE        "enemy_death_sequence"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Ueber diese Property kann Einfluss auf die Todessequenz eines getoeten
+   Spielers genommen werden. Sie muss im toetenden Objekt, d.h. dem
+   Objekt welches die()/do_damage()/Defend() im Spieler gerufen hat,
+   gesetzt sein.
+
+   Es gibt folgende gueltige Werte:
+   - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
+   - mixed*  Eine Todessequenz im Format des Todesraumes:
+             ({<int gesamtlaenge>,
+               ([<int index1>: <string umgebrochene Meldung1>,
+                 <int index2>: <string umgebrochene Meldung2>,
+                 ...])
+             })
+   - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
+             ([<int zeitindex>: <string umgebrochener Text>])
+
+
+BEISPIELE
+=========
+
+   // Pfad zu einer eigenen DSQ
+   SetProp(P_ENEMY_DEATH_SEQUENCE,  ".../passende_dsq.txt");
+
+   // eigene DSQ im Todesraumformat:
+   SetProp(P_ENEMY_DEATH_SEQUENCE,
+           ({ 2, ([1: "DU LERNST AUS DEINEM FEHLER.\n"])}));
+
+   // Einfuegen einer Meldung (des NPCs) in die Standard-Todessequenz
+   SetProp(P_ENEMY_DEATH_SEQUENCE,
+           ([5: "Du hoerst "+name(WEN)+" hoehnisch kichern.\n"]));
+
+
+SIEHE AUCH
+==========
+
+   Tod:            die(L)
+   Todesmeldungen: P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                   P_ZAP_MSG, P_NEXT_DEATH_SEQUENCE
+   Sonstiges:      P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+10. Nov 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_ENTERCMDS b/doc/sphinx/man/props/P_ENTERCMDS
new file mode 100644
index 0000000..fc6f72f
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENTERCMDS
@@ -0,0 +1,57 @@
+
+P_ENTERCMDS
+***********
+
+
+NAME
+====
+
+   P_ENTERCMDS                   "leavecmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array mit Befehlen, die zum Betreten des Transporters fuehren.
+
+
+BEISPIEL
+========
+
+   SetProp(P_ENTERCMDS,({ "betrete","betritt" }) );
+
+   Gibt der Spieler nun 'betrete xxx' ein, so sorgt /std/transport.c
+   dafuer, das der Spieler auch auf oder in den Transporter bewegt
+   wird. Vorausgesetzt natuerlich, er ist an einem Haltepunkt ange-
+   langt und es ist genuegend Platz dort.
+
+
+BEMERKUNGEN
+===========
+
+   Um /std/transport.c nicht aufzublaehen, werden weitere Argumente wie
+   etwa 'betrete das|die|den xxx' _nicht_ unterstuetzt!
+
+   Hier muss der verantwortliche Magier schon eine eigene Loesung finden
+   und in seinen Transporter schreiben.
+
+   Sollen Kommandos zum Betreten UND Verlassen eines Transporters ver-
+   wendet werden koennen, muessen diese in P_TRAVEL_CMDS gesetzt werden.
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEFAIL, P_ENTERFAIL, P_LEAVECMDS, P_TRAVEL_CMDS, transporter,
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_ENTERFAIL b/doc/sphinx/man/props/P_ENTERFAIL
new file mode 100644
index 0000000..5291065
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENTERFAIL
@@ -0,0 +1,48 @@
+
+P_ENTERFAIL
+***********
+
+
+NAME
+====
+
+   P_ENTERFAIL                   "enterfail"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Spieler, wenn er einen vollen Transporter betreten
+   will. Ist die Propertie ein Array, so wird das erste Element als
+   Meldung an den Spieler, das zweite als Meldung an die Mitspieler
+   im Raum geschickt.
+
+
+BEISPIEL
+========
+
+   SetProp(P_ENTERFAIL,"Dort ist wirklich kein Platz mehr fuer Dich");
+
+
+
+   SetProp(P_ENTERFAIL, ({ "Dort ist wirklich kein Platz mehr fuer Dich",
+                           "versucht, auf die Kutsche zu klettern, wird "
+                          +"aber wieder heruntergeschickt" }) );
+
+
+SIEHE AUCH
+==========
+
+   P_ENTERMSG, P_LEAVEFAIL, P_LEAVEMSG, transporter
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_ENTERMSG b/doc/sphinx/man/props/P_ENTERMSG
new file mode 100644
index 0000000..9ba314d
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENTERMSG
@@ -0,0 +1,40 @@
+
+P_ENTERMSG
+**********
+
+
+NAME
+====
+
+   P_ENTERMSG                    "entermsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit zwei Meldungen, eine fuer den Raum, den der Spieler
+   verlaesst, und eine fuer den Transporter, in den er geht.
+
+
+BEISPIEL
+========
+
+   SetProp(P_ENTERMSG, ({ "klettert in die Kutsche","klettert herein" }) );
+
+
+SIEHE AUCH
+==========
+
+   P_ENTERFAIL, P_LEAVEFAIL, P_LEAVEMSG, transporter
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_ENV_MSG b/doc/sphinx/man/props/P_ENV_MSG
new file mode 100644
index 0000000..e969399
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENV_MSG
@@ -0,0 +1,47 @@
+
+P_ENV_MSG
+*********
+
+
+NAME
+====
+
+   P_ENV_MSG                     "std_food_env_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn eine Speise konsumiert werden soll,
+   die nicht im eigenen Inventory liegt.
+   Wenn diese Property leer ist, kann man die Speise dann sogar
+   konsumieren!
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Vielleicht solltest Du @WEN1 vorher nehmen."
+
+
+SIEHE AUCH
+==========
+
+   wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_ENV_TOO_HEAVY_MSG b/doc/sphinx/man/props/P_ENV_TOO_HEAVY_MSG
new file mode 100644
index 0000000..23c1d6c
--- /dev/null
+++ b/doc/sphinx/man/props/P_ENV_TOO_HEAVY_MSG
@@ -0,0 +1,50 @@
+
+P_ENV_TOO_HEAVY_MSG
+*******************
+
+
+NAME
+====
+
+   P_ENV_TOO_HEAVY_MSG                      "env_too_heavy_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
+   versucht, ein Objekt in einen Behaelter zu legen, und dieser dann fuer
+   sein Environment zu schwer wird.
+   Die Property ist im Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("<Behaelter> wuerde dir dann zu schwer werden.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
+   zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_ENV_TOO_HEAVY_MSG, "Mit @WEM1 koenntest du den Rucksack nicht"
+                                " mehr tragen.");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_TOO_MANY_MSG, P_NOINSERT_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/props/P_EQUIP_TIME b/doc/sphinx/man/props/P_EQUIP_TIME
new file mode 100644
index 0000000..ee0d07f
--- /dev/null
+++ b/doc/sphinx/man/props/P_EQUIP_TIME
@@ -0,0 +1,39 @@
+
+P_EQUIP_TIME
+************
+
+
+NAME
+====
+
+   P_EQUIP_TIME                      "equip_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Innerhalb von Waffen und Ruestungen wird in dieser Property
+   registriert, wann diese zuletzt gezueckt bzw. angezogen wurden.
+   Innerhalb der Funktionen wield_me() in '/std/weapon/combat' bzw.
+   DoWear() in '/std/armour/combat' wird hierbei jeweils folgende Aktion
+   ausgefuehrt:
+     SetProp(P_EQUIP_TIME,time());
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:         P_LAST_USE
+   Waffen:           P_UNWIELD_TIME
+                     DoWield()
+   Ruestungen:       DoWear()
+   Sonstiges:        time()
+                     /std/weapon/combat.c, /std/armour/combat.c
+
+Last modified: Sun Jul 26 23:59:12 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_EVAL_FACTORS b/doc/sphinx/man/props/P_EVAL_FACTORS
new file mode 100644
index 0000000..ed83d4e
--- /dev/null
+++ b/doc/sphinx/man/props/P_EVAL_FACTORS
@@ -0,0 +1,21 @@
+
+P_EVAL_FACTORS
+**************
+
+
+NAME
+====
+
+   P_EVAL_FACTORS                "inpc_eval_factors"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/eval.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_EVAL_OFFSETS b/doc/sphinx/man/props/P_EVAL_OFFSETS
new file mode 100644
index 0000000..e571f51
--- /dev/null
+++ b/doc/sphinx/man/props/P_EVAL_OFFSETS
@@ -0,0 +1,21 @@
+
+P_EVAL_OFFSETS
+**************
+
+
+NAME
+====
+
+   P_EVAL_OFFSETS                "inpc_eval_offsets"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/eval.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_EXITS b/doc/sphinx/man/props/P_EXITS
new file mode 100644
index 0000000..c31bac3
--- /dev/null
+++ b/doc/sphinx/man/props/P_EXITS
@@ -0,0 +1,45 @@
+
+P_EXITS
+*******
+
+
+NAME
+====
+
+   P_EXITS                       "exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping (der Breite 2) aller unmittelbar sichtbaren Ausgaenge mit
+   zugehoerigen Nachbarraeumen und der jeweiligen Bewegungsmeldung.
+
+
+BEMERKUNG
+=========
+
+   Enthaelt auch SpecialExits, bei der Abfrage mit QueryProp() werden
+   diese jedoch ausgefiltert.
+
+
+
+   Zugriff nur mit den dafuer vorgesehenen Funktionen, bitte nicht aendern.
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_SPECIAL_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/props/P_EXTRA_LOOK b/doc/sphinx/man/props/P_EXTRA_LOOK
new file mode 100644
index 0000000..e4f050e
--- /dev/null
+++ b/doc/sphinx/man/props/P_EXTRA_LOOK
@@ -0,0 +1,52 @@
+
+P_EXTRA_LOOK
+************
+
+
+NAME
+====
+
+   P_EXTRA_LOOK                    "extralook"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+          Diese Property enthaelt einen String. Sie wird entweder in Lebewesen
+          direkt oder in Objekten gesetzt, die im Besitz von Lebewesen
+          sein koennen.
+          Diese Strings erscheinen dann zusaetzlich in der Langbeschreibung
+          des Lebewesens bzw. des Besitzers (wenn das Objekt sich direkt im
+   Lebewesen befindet, jedoch nicht in einem Behaelter im Lebewesen).
+          Fuer den Zeilenumbruch muss man selbst sorgen.
+
+
+BEISPIEL
+========
+
+   Ein Spieler hat eine Pfeife im Mund. In dieser Pfeife setzt man z.B.
+   in der Funktion zum Pfeife Rauchen folgendes:
+     SetProp(P_EXTRA_LOOK,break_string(
+    this_player()->Name(WER)+" ist ganz umnebelt.",78);
+
+
+BEMERKUNG
+=========
+
+   NUR dann benutzen, wenn ihr auch unabhaengig vom Extralook ein Objekt im
+   Spieler benoetigt, ansonsten IMMER AddExtraLook() verwenden.
+
+
+SIEHE AUCH
+==========
+
+         long(), /std/living/description.c, /std/player/base.c
+   AddExtraLook(), RemoveExtraLook()
+
+16.02.2017, Bugfix
diff --git a/doc/sphinx/man/props/P_FAO b/doc/sphinx/man/props/P_FAO
new file mode 100644
index 0000000..33f673e
--- /dev/null
+++ b/doc/sphinx/man/props/P_FAO
@@ -0,0 +1,33 @@
+
+P_FAO
+*****
+
+
+NAME
+====
+
+   P_FAO      "fraternitasdonoarchmagorum"
+
+
+DEFINIERT IN
+============
+
+   <player/fao.h>
+
+
+BESCHREIBUNG
+============
+
+   Fraternitas-relevante Property.
+
+   Genaue Informationen unbekannt.
+   Schreibender Zugriff ist nur EMs oder dem FAOMASTER (s. Headerfile)
+   moeglich.
+
+
+SIEHE AUCH
+==========
+
+   P_FAO_PORTALS
+
+1.September 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_FAO_PORTALS b/doc/sphinx/man/props/P_FAO_PORTALS
new file mode 100644
index 0000000..5d80c90
--- /dev/null
+++ b/doc/sphinx/man/props/P_FAO_PORTALS
@@ -0,0 +1,36 @@
+
+P_FAO_PORTALS
+*************
+
+
+NAME
+====
+
+   P_FAO_PORTALS      "fraternitasdonoarchmagorumPORTALS"
+
+
+DEFINIERT IN
+============
+
+   <player/fao.h>
+
+
+BESCHREIBUNG
+============
+
+   Fraternitas-relevante Property.
+
+   Enthaelt eine Array mit einer Liste der ueber die Fraternitas
+   gefundenen und benutzbaren Seher-Portale.
+
+   Genaue Informationen unbekannt.
+   Schreibender Zugriff ist nur EMs oder dem FAOMASTER (s. Headerfile)
+   moeglich.
+
+
+SIEHE AUCH
+==========
+
+   P_FAO_PORTALS, P_SEERDOORS
+
+1.September 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_FISH b/doc/sphinx/man/props/P_FISH
new file mode 100644
index 0000000..0fa259f
--- /dev/null
+++ b/doc/sphinx/man/props/P_FISH
@@ -0,0 +1,92 @@
+
+P_FISH
+******
+
+
+NAME
+====
+
+   P_FISH                        "fish"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt Einstellungen zu allem, was mit Fischen zu tun hat.
+   Kann in Fischen, Raeumen und Koedern gesetzt werden. Die verfuegbaren
+   Optionen und Funktionsweisen sind in den nachfolgenden Abschnitten
+   aufgefuehrt.
+
+   Fische:
+   *******
+   Die Property legt zusaetzliche Eigenschaften fest:
+
+     F_NOROTTEN
+       Fisch fault nicht; ggf. sollte hier auch gleich F_NOHEAL gesetzt
+       werden, weil sonst eine unverderbliche tragbare Tanke erzeugt wuerde.
+     F_NOTHUNGRY
+       Fisch frisst Koeder nur, wenn er auch wirklich nachher an der Angel
+       haengt. Ist er zu schwer fuer die Angel und reisst ab, bleibt der
+       Koeder erhalten.
+     F_REPLACE
+       Fisch soll sich beim Entfernen von der Angel verwandeln. Hierzu ist
+       die Funktion ReplaceFish() im Fisch zu definieren, die sich um die
+       Verwandlung kuemmert (z.B. Monster clonen und Fisch zerstoeren; ein
+       Beispiel findet sich in /d/ebene/fraggle/angel2/obj/saegefisch.c).
+     F_NOHEAL
+       Fisch heilt nicht bei Verzehr
+
+   Raum (OPTIONAL):
+   ****************
+   Legt die Fischdichte des Gewaessers fest. Der eingestellte Wert wirkt
+   sich auf die Wartezeit aus, die der Angler verbringen muss, bis ein
+   Fisch anbeisst. Berechnung im Detail (alle Zahlenwerte in Sekunden):
+   - Basis-Wartezeit: delay = 80
+   - Die Werte von P_FISH von Raum und Koeder werden addiert:
+     summe = raum->QueryProp(P_FISH) + koeder->QueryProp(P_FISH)
+     -> positive Werte (Bonus) werden auf 60 begrenzt und mit Zufalls-
+        komponente von <delay> abgezogen:
+        delay -= random(summe)
+     -> negative Werte (Malus) werden auf -300 begrenzt und mit Zufalls-
+        komponente auf <delay> aufgeschlagen:
+        delay += random(-summe)
+
+   Zusaetzlich wird ein weiterer Malus auf die Wartezeit faellig, falls
+   P_WATER in der Angel und/oder P_WATER im Koeder nicht zum aktuellen
+   Gewaesser passen. Der Malus betraegt jeweils 60+random(60) Sekunden.
+
+
+
+   Der Standardwert fuer P_FISH im Raum ist 0 und bedeutet 100 % Bestand.
+   Positive Werte erhoehen die Dichte, negative senken sie. Positive Werte
+   sollten nicht >100 sein.
+
+   Sofern sich die Werte fuer P_FISH in den empfohlenen Grenzen bewegen,
+   koennen Abzuege fuer falsches Gewaesser ueblicherweise kaum durch
+   Boni auf Angel oder Koeder kompensiert werden. Ausserdem ist zu
+   bedenken, dass es keine Boni fuer richtige Gewaesserwahl gibt.
+
+
+
+   Koeder (OPTIONAL):
+   ******************
+   Ein Koeder kann mittels P_FISH die Fischdichte modifizieren, um hierueber
+   ein besseres Beissen der Fische zu simulieren (reduziert die Wartezeit
+   beim Angeln, siehe oben unter "Raum"). Wenn also der Raum einen Wert
+   von -100 gesetzt hat und der Koeder +100, entspricht die Fischdichte im
+   Gewaesser wieder dem Normalwert.
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_WATER
+   Methoden:   GetAquarium(L)
+
+Zuletzt geaendert: 2014-Aug-21, Arathorn
diff --git a/doc/sphinx/man/props/P_FLAGS b/doc/sphinx/man/props/P_FLAGS
new file mode 100644
index 0000000..3962aed
--- /dev/null
+++ b/doc/sphinx/man/props/P_FLAGS
@@ -0,0 +1,21 @@
+
+P_FLAGS
+*******
+
+
+NAME
+====
+
+   P_FLAGS                       "can_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Flags des Spielers
diff --git a/doc/sphinx/man/props/P_FOLLOW_SILENT b/doc/sphinx/man/props/P_FOLLOW_SILENT
new file mode 100644
index 0000000..6dd07b3
--- /dev/null
+++ b/doc/sphinx/man/props/P_FOLLOW_SILENT
@@ -0,0 +1,22 @@
+
+P_FOLLOW_SILENT
+***************
+
+
+NAME
+====
+
+   P_FOLLOW_SILENT               "follow_silent"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property 1 ist, wird der MOVE vom verfolge Silent ausge-
+   fuehrt.
diff --git a/doc/sphinx/man/props/P_FOOD b/doc/sphinx/man/props/P_FOOD
new file mode 100644
index 0000000..3858431
--- /dev/null
+++ b/doc/sphinx/man/props/P_FOOD
@@ -0,0 +1,38 @@
+
+P_FOOD
+******
+
+
+NAME
+====
+
+   P_FOOD                        "food"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Numerischer Wert fuer den Saettigungsgrad eines Lebewesens.
+     Der maximale Wert steht in P_MAX_FOOD.
+
+   - Speisen/Kneipen
+     Numerischer Wert fuer den Saettigungsgrad einer Portion einer
+     Speise. Ist diese Property nicht gesetzt, kann man diese
+     Speise nicht essen. Eine funktionierende Speise _muss_ entweder
+     P_FOOD oder P_DRINK groesser 0 gesetzt haben.
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_FOOD, P_FOOD_DELAY, consume,
+   P_DRINK, P_ALCOHOL, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_FOOD_DELAY b/doc/sphinx/man/props/P_FOOD_DELAY
new file mode 100644
index 0000000..f4eb2df
--- /dev/null
+++ b/doc/sphinx/man/props/P_FOOD_DELAY
@@ -0,0 +1,23 @@
+
+P_FOOD_DELAY
+************
+
+
+NAME
+====
+
+   P_FOOD_DELAY                 "food_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_FOOD um einen Punkt sinkt.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/sphinx/man/props/P_FOOD_FULL_MSG b/doc/sphinx/man/props/P_FOOD_FULL_MSG
new file mode 100644
index 0000000..f5c1bce
--- /dev/null
+++ b/doc/sphinx/man/props/P_FOOD_FULL_MSG
@@ -0,0 +1,45 @@
+
+P_FOOD_FULL_MSG
+***************
+
+
+NAME
+====
+
+   P_FOOD_FULL_MSG               "std_food_full_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn eine Speise gegessen werden soll,
+   obwohl dieser nichts mehr essen kann.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "Du bist zu satt, das schaffst Du nicht mehr."
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_MAX_FOOD, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_FORCE_MURDER_MSG b/doc/sphinx/man/props/P_FORCE_MURDER_MSG
new file mode 100644
index 0000000..709ef4e
--- /dev/null
+++ b/doc/sphinx/man/props/P_FORCE_MURDER_MSG
@@ -0,0 +1,57 @@
+
+P_FORCE_MURDER_MSG
+******************
+
+
+NAME
+====
+
+   P_FORCE_MURDER_MSG              "force_murder_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon
+   ab, wie oft und welche Art von NPCs in der letzten Zeit getoetet
+   wurden. Zum Beispiel ist es eher selten, dass ein schwacher NPC auf
+   dem Kanal erscheint, wenn kuerzlich viele starke NPCs getoetet
+   wurden. Mittels der Property P_FORCE_MURDER_MSG kann man auf diese
+   Regelung Einfluss nehmen.
+   Ein Wert groesser Null erzwingt die Meldung auf dem Moerder-Kanal,
+   ein Wert kleiner Null unterdrueckt sie generell. Letzteres ist
+   insbesondere fuer allzuoft getoetete Monster sinnvoll, um den
+   Moerder-Kanal nicht uebermaessig zu belasten. Mit dem Erzwingen der
+   Meldungen sollte man somit vorsichtig sein: Weniger ist oftmals
+   besser als zu viel!
+   Die Defaulteinstellung von P_FORCE_MURDER_MSG ist natuerlich Null
+   und fuehrt zur bereits beschriebenen opferabhaengigen Meldung.
+
+
+BEISPIELE
+=========
+
+   Ein grosser starker NPC, der getoetet wurde, sollte schon eine tolle
+   Meldung auf dem Moerder-Kanal erzeugen. In der Property
+   P_MURDER_MSG koennen hierzu alternative Texte zu den normal per
+   Zufall ausgewaehlten angegeben werden:
+     SetProp(P_MURDER_MSG,
+             "Nicht schlecht, aber das schafft eh nur einer!");
+     SetProp(P_FORCE_MURDER_MSG,1);
+   Zwar ist es bei grossen NPCs hinreichend wahrscheinlich, dass es
+   infolge derer Staerke zur automatischen Ausgabe einer Moerdermeldung
+   kommt, aber mit der letzten Zeile wurde dies absolut sichergestellt.
+
+
+SIEHE AUCH
+==========
+
+   P_MURDER_MSG, P_ZAP_MSG, P_KILL_MSG, P_DIE_MSG, P_CORPSE, P_NOCORPSE
+
+Last modified: Tue Nov 10 02:15:26 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_FREE_HANDS b/doc/sphinx/man/props/P_FREE_HANDS
new file mode 100644
index 0000000..c8311cc
--- /dev/null
+++ b/doc/sphinx/man/props/P_FREE_HANDS
@@ -0,0 +1,40 @@
+
+P_FREE_HANDS
+************
+
+
+NAME
+====
+
+   P_FREE_HANDS                  "free_hands"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der freien Haende.
+   Effektiv nur ein die Differenz von P_MAX_HANDS und P_USED_HANDS.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property. Die Methode /std/living/combat::_query_free_hands
+   stellt die Daten zusammen. Nicht setzen!
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS
+   UseHands, FreeHands
+   /std/weapon.c, /std/spellbook.c
+
+1. Okt 2012, Gloinson
diff --git a/doc/sphinx/man/props/P_FRIEND b/doc/sphinx/man/props/P_FRIEND
new file mode 100644
index 0000000..b22203b
--- /dev/null
+++ b/doc/sphinx/man/props/P_FRIEND
@@ -0,0 +1,39 @@
+
+P_FRIEND
+********
+
+
+NAME
+====
+
+   P_FRIEND                        "friend"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Setzt man diese Property in einem NPC auf einen Wert ungleich Null,
+   so wird der NPC bei Zauberspruechen, die auf bestimmte Gruppen
+   wirken, der Gruppe der Spieler und nicht der Gruppe der NPCs
+   zugeordnet. Ausserdem wird der NPC bei einem "toete alle" nicht mit
+   angegriffen.
+   Wurde der NPC einem Spieler per AssocMember() zugeordnet, so
+   befindet sich der NPC automatisch im jeweiligen Team des Spielers
+    (moeglichst auch in der selben Kampfreihe), und die Property hat
+   dann automatisch das Spielerobjekt als Wert.
+   Da dieser Wert in diesem Fall natuerlich ungleich Null ist, wird der
+   NPC dann auch der Gruppe der Spieler zugeordnet.
+
+
+SIEHE AUCH
+==========
+
+   FindGroup(), AssocMember(), P_TEAM_ASSOC_MEMBERS, /std/living/team.c
+
+Last modified: Tue Dec 29 17:02:55 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_FROG b/doc/sphinx/man/props/P_FROG
new file mode 100644
index 0000000..71badbe
--- /dev/null
+++ b/doc/sphinx/man/props/P_FROG
@@ -0,0 +1,21 @@
+
+P_FROG
+******
+
+
+NAME
+====
+
+   P_FROG                        "frog"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Spieler ein Frosch ist.
diff --git a/doc/sphinx/man/props/P_FUEL b/doc/sphinx/man/props/P_FUEL
new file mode 100644
index 0000000..79f8515
--- /dev/null
+++ b/doc/sphinx/man/props/P_FUEL
@@ -0,0 +1,48 @@
+
+P_FUEL
+******
+
+
+NAME
+====
+
+   P_FUEL                        "fuel"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die Zeitdauer, die die Lichtquelle noch
+   leuchten kann. Standardmaessig ist der Wert auf 20 gesetzt.
+
+   Setzt man die Property auf einen Wert, der groesser ist als der vorige
+   Maximalwert, wird dieser auf den neuen Wert erhoeht. Aendert man den
+   Brennstoffvorrat der Lichtquelle hingegen mittels AddFuel(), so wird
+   der Wert von P_FUEL ueber den Maximalwert hinaus erhoeht.
+
+
+HINWEIS
+=======
+
+   Fuer Aenderungen an der Property kann auch die Funktion AddFuel()
+   verwendet werden.
+
+
+SIEHE AUCH
+==========
+
+   Basisklassen: /std/lightsource.c
+   Properties:   P_LIGHTDESC, P_DO_DESTRUCT, P_LIGHT
+   Methoden:     AddFuel(L)
+
+
+LETZTE AENDERUNG
+================
+
+   22. Dez. 2015, Arathorn
diff --git a/doc/sphinx/man/props/P_FUNC_MSG b/doc/sphinx/man/props/P_FUNC_MSG
new file mode 100644
index 0000000..adcca1a
--- /dev/null
+++ b/doc/sphinx/man/props/P_FUNC_MSG
@@ -0,0 +1,40 @@
+
+P_FUNC_MSG
+**********
+
+
+NAME
+====
+
+   P_FUNC_MSG                    "func_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Liste mit Funktionen, die zufaellig im Raum aufgerufen werden.
+
+   Hier ist nur eine zur rufende lokale Methode als String oder eine
+   Sammlung davon als Stringarray gespeichert.
+
+
+ANMERKUNGEN
+===========
+
+   Bitte AddRoomMessage() zum Hinzufuegen/Ueberschreiben benutzen!
+
+
+SIEHE AUCH
+==========
+
+   LFuns:    AddRoomMessage()
+   Verwandt: tell_room(), ReceiveMsg()
+   Props:    P_ROOM_MSG, P_MSG_PROB
+
+2.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_FW_ALWAYS_READABLE b/doc/sphinx/man/props/P_FW_ALWAYS_READABLE
new file mode 100644
index 0000000..f770431
--- /dev/null
+++ b/doc/sphinx/man/props/P_FW_ALWAYS_READABLE
@@ -0,0 +1,21 @@
+
+P_FW_ALWAYS_READABLE
+********************
+
+
+NAME
+====
+
+   P_FW_ALWAYS_READABLE          "fw_always_readable"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_FW_UNDERSTAND b/doc/sphinx/man/props/P_FW_UNDERSTAND
new file mode 100644
index 0000000..2884555
--- /dev/null
+++ b/doc/sphinx/man/props/P_FW_UNDERSTAND
@@ -0,0 +1,21 @@
+
+P_FW_UNDERSTAND
+***************
+
+
+NAME
+====
+
+   P_FW_UNDERSTAND               "fw_understand"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_GENDER b/doc/sphinx/man/props/P_GENDER
new file mode 100644
index 0000000..c2a3f77
--- /dev/null
+++ b/doc/sphinx/man/props/P_GENDER
@@ -0,0 +1,22 @@
+
+P_GENDER
+********
+
+
+NAME
+====
+
+   P_GENDER                      "gender"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/language.h
+
+
+BESCHREIBUNG
+============
+
+   Grammatikalisches Geschlecht des Objektes:
+   (Definiert in language.h) MALE, FEMALE oder NEUTER
diff --git a/doc/sphinx/man/props/P_GHOST b/doc/sphinx/man/props/P_GHOST
new file mode 100644
index 0000000..31c9f2d
--- /dev/null
+++ b/doc/sphinx/man/props/P_GHOST
@@ -0,0 +1,21 @@
+
+P_GHOST
+*******
+
+
+NAME
+====
+
+   P_GHOST                       "ghost"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Spieler tot ist.
diff --git a/doc/sphinx/man/props/P_GIVE_MSG b/doc/sphinx/man/props/P_GIVE_MSG
new file mode 100644
index 0000000..e21dbad
--- /dev/null
+++ b/doc/sphinx/man/props/P_GIVE_MSG
@@ -0,0 +1,83 @@
+
+P_GIVE_MSG
+**********
+
+
+NAME
+====
+
+   P_GIVE_MSG                         "give_message"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/put_and_get.h
+
+
+BESCHREIBUNG
+============
+
+   Mit P_GIVE_MSG kann man die Meldung, die man beim Uebergeben eines
+   Objektes bekommt, modifizieren.
+
+   Folgende Werte sind moeglich:
+
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum, der dritte (ebenfalls optionale) an den
+     Empfaenger.
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das uebergeben wird
+      Objekt3 - Empfaenger
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum. Beim Fehlen des dritten gibt es keine Meldung an den Empfaenger.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Etwas Sand" );
+    SetProp( P_LONG, break_string(
+      "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+
+    SetProp( P_NAME, "Sand" );
+    AddId( ({"sand"}) );
+    SetProp( P_GENDER, MALE );
+
+    SetProp( P_GIVE_MSG, ({
+     "Du laesst @WEN2 in @WESSEN3 Haende rieseln.",
+     "@WER1 laesst @WENU2 in @WESSEN3 Haende rieseln.",
+     "@WER1 laesst @WENU2 in deine Haende rieseln."}));
+     ...
+    }
+
+   Das ganze fuehrt bei Ugars "gib sand an peter" zu folgenden
+   Meldungen:
+
+   Ugar: "Du laesst den Sand in Peters Haende rieseln."
+   Raum: "Ugar laesst Sand in Peters Haende rieseln."
+   Peter: "Ugar laesst Sand in deine Haende rieseln."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_DROP_MSG, P_PUT_MSG, P_PICK_MSG, P_SHOW_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), give(L), give_objects(L),
+               give_notify(L), /std/living/put_and_get.c
+
+14. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_GLOBAL_SKILLPROPS b/doc/sphinx/man/props/P_GLOBAL_SKILLPROPS
new file mode 100644
index 0000000..1e3533b
--- /dev/null
+++ b/doc/sphinx/man/props/P_GLOBAL_SKILLPROPS
@@ -0,0 +1,46 @@
+
+P_GLOBAL_SKILLPROPS
+*******************
+
+
+NAME
+====
+
+   P_GLOBAL_SKILLPROPS        "sm_global"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gilden- und Spellbookproperty enthaelt Eigenschaften, die
+   alle Spells eines Spellbooks bzw. alle Skills und Spells einer Gilde
+   haben sollen.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_GLOBAL_SKILLPROPS,
+     ([SI_SKILLRESTR_USE:     ([SR_FUN: #'spellTest]),
+       OFFSET(SI_SKILLLEARN): #'learnOffset,
+       OFFSET(SI_SPELLCOST):  #'costOffset,
+       FACTOR(SI_SPELLCOST):  #'costFactor]));
+
+
+SIEHE AUCH
+==========
+
+   GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
+   * Properties:     P_GUILD_SKILLS
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Properties:     P_SB_SPELLS
+   Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_GUARD b/doc/sphinx/man/props/P_GUARD
new file mode 100644
index 0000000..7128df6
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUARD
@@ -0,0 +1,70 @@
+
+P_GUARD
+*******
+
+
+NAME
+====
+
+   P_GUARD                            "guard"
+
+
+DEFINIERT IN
+============
+
+   /sys/guard.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, ob ein NPC aus einem Raum entfernt werden darf
+   oder nicht. Abgefragt werden muss dies von den Items oder Spells, die
+   den NPC zu einer Bewegung zwingen wollen. Es wird nicht automatisch
+   darauf geachtet!
+
+   Entscheidend hierbei ist ein in der Property enthaltene (ganzzahliger)
+   Zahlenwert zwischen 0 und 100, der hierbei den Grad der
+   'Bewachungsstaerke' eines NPCs angibt. Bei 0 laesst sich das Lebewesen
+   immer zu einer Bewegung ueberreden, bei 100 ueberhaupt nicht. Dazwischen
+   gibt es die Wahrscheinlichkeit dafuer an.
+
+
+BEMERKUNGEN
+===========
+
+   - alle von /std/npc abgeleiteten NPCs haben standardmaessig P_GUARD
+     auf 100 gesetzt, sind also nicht fortfuehrbar
+   - bei der Erzeugung von NPCs mit P_GUARD < 100 AddItem() mit dem
+     Parameter REFRESH_MOVE_HOME verwenden, damit sie bei einem Raumreset
+     gegebenenfalls an ihren Ausgangsort zurueckkehren.
+   - gildenspezifische weitere Abfragen auf Level oAe bitte bei Gilden-
+     magiern erfragen
+
+
+BEISPIELE
+=========
+
+   // ein Test
+   if(random(100)<=liv->QueryProp(P_GUARD))
+    cannotMoveNPC(); // NPC darf nicht bewegt werden!
+   else
+    moveNPC();       // NPC darf bewegt werden
+
+   // ein wegfuehrbarer NPC
+   void create() {
+    ::create();
+    ...
+    SetProp(P_GUARD,50);
+    ...
+   }
+   // mit 50% Wahrscheinlichkeit (pro Versuch) laesst sich der NPC nun
+   // fortfuehren
+
+
+SIEHE AUCH
+==========
+
+   AddItem()
+
+13.April 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_GUILD b/doc/sphinx/man/props/P_GUILD
new file mode 100644
index 0000000..c3c13cb
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD
@@ -0,0 +1,40 @@
+
+P_GUILD
+*******
+
+
+NAME
+====
+
+   P_GUILD                            "guild"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt den Namen der Gilde, welcher das Lebewesen
+   angehoert. Der Name der Gilde ist hierbei kleingeschrieben als String
+   definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Bei Spielern ist der Wert dieser Property niemals Null, denn sie
+   gehoeren standardmaessig der in P_DEFAULT_GUILD stehenden Gilde an.
+   Ueber die gesetzte P_GUILD werden auch aktive Skills ermittelt.
+
+
+SIEHE AUCH
+==========
+
+   P_DEFAULT_GUILD, P_VISIBLE_GUILD
+   P_GUILD_TITLE, P_SUBGUILD_TITLE
+
+26. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_GUILD_DEACTIVATE_SKILLS b/doc/sphinx/man/props/P_GUILD_DEACTIVATE_SKILLS
new file mode 100644
index 0000000..a53d6ce
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_DEACTIVATE_SKILLS
@@ -0,0 +1,50 @@
+
+P_GUILD_DEACTIVATE_SKILLS
+*************************
+
+
+PROPERTY
+========
+
+   P_GUILD_DEACTIVATE_SKILLS     "guild_deactivate_skills"
+
+DEFINIERT IN:
+
+   new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property erlaubt es, Gildenmitgliedern die benutzung von ANY-
+   Skills zu untersagen. Dies sind einerseits die allgemeinen Waffenskills,
+   andererseits koennte das auch der entgifte-Spruch der Duesterwald -
+   Quest sein.
+
+   Wert dieser Property ist ein Mapping, das als Keys die einzelnen
+   Skills und als Wert 1 enthaelt, wenn ein Skill deaktiviert
+   werden soll und 0, falls nicht.
+
+   Diese Property wird nur bei einem Neuerzeugen des Spielers neu
+   ausgelesen, da es sonst zuviel Rechenzeit kostet.
+
+
+BEISPIEL
+========
+
+   Jede Gilde, die keine Waffenskills benutzen soll (oder selbst welche hat)
+   enthaelt folgenden Befehl:
+
+     SetProp(P_GUILD_DEACTIVATE_SKILLS,
+     ([FIGHT(WT_SWORD):1,
+     FIGHT(WT_AXE):1,
+     FIGHT(WT_CLUB):1,
+     FIGHT(WT_SPEAR):1,
+     FIGHT(WT_KNIFE):1,
+     FIGHT(WT_WHIP):1]));
+
+LETZTE AENDERUNG
+
+
+2003-01-30, 1415, Humni
+=======================
diff --git a/doc/sphinx/man/props/P_GUILD_DEFAULT_SPELLBOOK b/doc/sphinx/man/props/P_GUILD_DEFAULT_SPELLBOOK
new file mode 100644
index 0000000..4d6bbd0
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_DEFAULT_SPELLBOOK
@@ -0,0 +1,44 @@
+
+P_GUILD_DEFAULT_SPELLBOOK
+*************************
+
+
+NAME
+====
+
+   P_GUILD_DEFAULT_SPELLBOOK       "guild_sb"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt den Namen des Spellbooks, welches
+   standardmaessig von der Gilde verwendet wird.
+
+
+BEMERKUNGEN
+===========
+
+   Bei Spells kann sie mit SI_SPELLBOOK ueberschrieben werden.
+
+
+BEISPIELE
+=========
+
+   Bei Zauberern waere folgendes denkbar:
+     SetProp(P_GUILD_DEFAULT_SPELLBOOK,"magie_sp");
+   Das Spellbook ist hierbei unter "/spellbooks/magie_sp.c" zu finden.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_GUILD_FEMALE_TITLES b/doc/sphinx/man/props/P_GUILD_FEMALE_TITLES
new file mode 100644
index 0000000..c06947d
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_FEMALE_TITLES
@@ -0,0 +1,42 @@
+
+P_GUILD_FEMALE_TITLES
+*********************
+
+
+NAME
+====
+
+   P_GUILD_FEMALE_TITLES           "guild_female_titles"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt die Stufenbezeichnungen fuer
+   weibliche Gildenmitglieder. Als Schluessel dienen hierbei die
+   Gildenstufen und die entsprechenden Eintraege sind dann die zur
+   Stufe gehoerigen Gildentitel.
+
+
+BEISPIELE
+=========
+
+   Eine Programmierergilde koennte folgende Stufenbezeichnungen
+   beinhalten:
+     SetProp(P_GUILD_FEMALE_TITLES,([1:"die Anfaengerin",
+                                     2:"die Fortgeschrittene",
+                                     3:"die Professionelle ;)"]));
+
+
+SIEHE AUCH
+==========
+
+   P_GENDER, P_GUILD_LEVEL, P_GUILD_TITLE, P_GUILD_MALE_TITLES
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_GUILD_LEVEL b/doc/sphinx/man/props/P_GUILD_LEVEL
new file mode 100644
index 0000000..f38701c
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_LEVEL
@@ -0,0 +1,41 @@
+
+P_GUILD_LEVEL
+*************
+
+
+NAME
+====
+
+   P_GUILD_LEVEL                   "guild_level"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Gildenstufe des Lebewesens, welche nicht
+   unbedingt seiner Spielerstufe entspricht.
+
+
+BEMERKUNGEN
+===========
+
+   Bei manchen Gilden entspricht die Gildenstufe standardmaessig der
+   Spielerstufe (Abenteurer, Katzenkrieger). In der Property selbst
+   wird eigentlich ein Mapping eingetragen, welches die Gildennamen als
+   Schluessel und die dazugehoerige Gildenstufe als Eintrag enthaelt.
+   Bei der Abfrage der Property wird jedoch die Gilde beruecksichtigt
+   und die aktuelle Gildenstufe zurueckgeliefert.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, P_GUILD_TITLE, P_GUILD_MALE_TITLES, P_GUILD_FEMALE_TITLES
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_GUILD_LEVELS b/doc/sphinx/man/props/P_GUILD_LEVELS
new file mode 100644
index 0000000..9b9b80d
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_LEVELS
@@ -0,0 +1,56 @@
+
+P_GUILD_LEVELS
+**************
+
+
+NAME
+====
+
+   P_GUILD_LEVELS                  "guild_levels"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt ein Mapping mit den
+   Stufenbeschraenkungen fuer die jeweiligen Gildenstufen. Als
+   Schluessel dient der jeweilige Gildenlevel und die entsprechenden
+   Eintraege sind wiederum Mappings, in welchen die Beschraenkungen
+   angegeben sind.
+
+
+BEMERKUNGEN
+===========
+
+   Die Beschraenkungen fuer Level 1 sollten auch fuer die
+   Eintrittsbeschraenkungen der Gilde gelten. Letztere kann man in der
+   Property P_GUILD_RESTRICTIONS angeben.
+
+
+BEISPIELE
+=========
+
+   Das folgende Beispiel zeigt ein paar moegliche Abfragen:
+     string check(object pl);
+     SetProp(P_GUILD_LEVELS,([1:([P_LEVEL:3,P_QP:100,SR_FUN:#'check]),
+                              2:([A_INT:10,P_LEVEL:25]),
+                              3:([A_INT:20,P_LEVEL:50])]));
+     string check(object pl)
+     { if(pl->QueryProp(P_MALE))
+         return 0;
+       return "Fuer Frauen ist das nichts!\n";
+     }
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD_LEVEL, P_GUILD_RESTRICTIONS, /std/restriction_checker.c
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_GUILD_MALE_TITLES b/doc/sphinx/man/props/P_GUILD_MALE_TITLES
new file mode 100644
index 0000000..41cb773
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_MALE_TITLES
@@ -0,0 +1,42 @@
+
+P_GUILD_MALE_TITLES
+*******************
+
+
+NAME
+====
+
+   P_GUILD_MALE_TITLES             "guild_male_titles"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt die Stufenbezeichnungen fuer
+   maennliche Gildenmitglieder. Als Schluessel dienen hierbei die
+   Gildenstufen und die entsprechenden Eintraege sind dann die zur
+   Stufe gehoerigen Gildentitel.
+
+
+BEISPIELE
+=========
+
+   Eine Programmierergilde koennte folgende Stufenbezeichnungen
+   beinhalten:
+     SetProp(P_GUILD_MALE_TITLES,([1:"der Anfaenger",
+                                   2:"der Fortgeschrittene",
+                                   3:"der Profi"]));
+
+
+SIEHE AUCH
+==========
+
+   P_GENDER, P_GILD_LEVEL, P_GUILD_TITLE, P_GUILD_FEMALE_TITLES
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_GUILD_PREPAREBLOCK b/doc/sphinx/man/props/P_GUILD_PREPAREBLOCK
new file mode 100644
index 0000000..ee1c361
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_PREPAREBLOCK
@@ -0,0 +1,60 @@
+
+P_GUILD_PREPAREBLOCK
+********************
+
+
+P_GUILD_PREPAREBLOCK (int)
+==========================
+
+
+NAME
+====
+
+   P_GUILD_PREPAREBLOCK                           "guild_prepareblock"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Information, ob das Lebewesen in
+   der Konzentrationsphase eines Spells weiterkaempft oder ob
+   die Angriffe derweil ausgesetzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   In der Property selbst wird eigentlich ein Mapping eingetragen,
+   welches die Gildennamen als Schluessel und das dazugehoerige
+   Block-Flag als Eintrag enthaelt. Bei der Abfrage der Property wird
+   jedoch die Gilde beruecksichtigt und das aktuelle Flag
+   zurueckgeliefert.
+   Dementsprechend das diese Prop nicht mit Set() manipuliert werden,
+   bitte ausschliessliche SetProp() verwenden.
+
+
+BEISPIELE
+=========
+
+   Die Property sollte natuerlich nur von der Gilde gesetzt werden
+   und auch nur bei Gildenmitgliedern
+
+   if ( IsGuildMember(pl) )
+     pl->SetProp(P_GUILD_PREPAREBLOCK,1);
+
+   Resultat: Kein Ausfuehren von Attack(), wenn pl sich auf einen
+   Zauberspruch konzentriert.
+
+
+SIEHE AUCH
+==========
+
+   P_PREPARED_SPELL
+
+18.03.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_GUILD_RATING b/doc/sphinx/man/props/P_GUILD_RATING
new file mode 100644
index 0000000..af9c24e
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_RATING
@@ -0,0 +1,40 @@
+
+P_GUILD_RATING
+**************
+
+
+NAME
+====
+
+   P_GUILD_RATING                  "guild_rating"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird die Einstufung des Spielers innerhalb
+   seiner Gilde festgelegt. Der dafuer zu ermittelnde Wert muss in
+   einem Bereich von 0 bis 10000 liegen. Wie sich die Einstufung
+   zusammensetzt, bleibt der jeweiligen Gilde ueberlassen.
+
+
+BEMERKUNGEN
+===========
+
+   Der Wert muss von der Gilde ermittelt werden! Meist setzt er sich
+   aus den Faehigkeiten des Mitglieds zusammen und mitunter fliessen
+   auch Gildenquests oder aehnliches mit ein.
+
+
+SIEHE AUCH
+==========
+
+   P_NEWSKILLS, GuildRating
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_GUILD_RESTRICTIONS b/doc/sphinx/man/props/P_GUILD_RESTRICTIONS
new file mode 100644
index 0000000..c94ccf3
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_RESTRICTIONS
@@ -0,0 +1,59 @@
+
+P_GUILD_RESTRICTIONS
+********************
+
+
+NAME
+====
+
+   P_GUILD_RESTRICTIONS        "guild_rest"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt ein Mapping mit den
+   Eintrittsbeschraenkungen fuer die jeweilige Gilde.
+
+
+BEMERKUNGEN
+===========
+
+   Im allgemeinen sollte das Mapping mit den Eintrittsbeschraenkungen
+   mit den Beschraenkungen fuer Level 1 im Mapping von P_GUILD_LEVELS
+   uebereinstimmen.
+
+
+BEISPIELE
+=========
+
+   Ein paar moegliche Abfragen waeren folgende:
+   string check(object pl);
+
+   SetProp(P_GUILD_RESTRICTIONS,
+           ([P_LEVEL:3,
+             P_QP:100,
+             SR_FUN:#'check]));
+
+   string check(object pl) {
+     if(pl->QueryProp(P_MALE))
+       return 0;
+     return "Fuer Frauen ist das nichts!\n";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Gildenfkt.:
+   * Ein/Austritt: beitreten, bei_oder_aus_treten, austreten
+   * Sonstiges:    P_GUILD_LEVELS
+   Sonstiges:      /std/restriction_checker.c
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_GUILD_SKILLS b/doc/sphinx/man/props/P_GUILD_SKILLS
new file mode 100644
index 0000000..232a5cf
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_SKILLS
@@ -0,0 +1,42 @@
+
+P_GUILD_SKILLS
+**************
+
+
+NAME
+====
+
+   P_GUILD_SKILLS            "guild_skills"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Gildenproperty enthaelt ein Mapping mit allen Skills und
+   Spells der Gilde.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property sollte nicht per Hand veraendern, sondern
+   die Funktionen AddSkill() bzw. AddSpell() nutzen.
+
+
+SIEHE AUCH
+==========
+
+   GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
+   * Sonstiges:      GuildRating
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Properties:     P_SB_SPELLS, P_GLOBAL_SKILLPROPS, P_GUILD_RATING
+   Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+
+3. Okt 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_GUILD_TITLE b/doc/sphinx/man/props/P_GUILD_TITLE
new file mode 100644
index 0000000..d3a49b3
--- /dev/null
+++ b/doc/sphinx/man/props/P_GUILD_TITLE
@@ -0,0 +1,58 @@
+
+P_GUILD_TITLE
+*************
+
+
+NAME
+====
+
+   P_GUILD_TITLE                      "guild_title"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt den Gildentitel des Lebewesens, welcher der
+   Gildenstufe des Lebewesens entspricht und jedoch nur angezeigt wird,
+   wenn P_TITLE des Lebewesens gleich Null ist.
+
+
+BEMERKUNGEN
+===========
+
+   In der Property selbst wird eigentlich ein Mapping eingetragen, welches
+   die Gildennamen als Schluessel und die dazugehoerigen Gildentitel als
+   Eintrag enthaelt. Bei der Abfrage der Property wird jedoch die Gilde
+   beruecksichtigt und der aktuelle Gildentitel zurueckgeliefert.
+
+
+BEISPIELE
+=========
+
+   Fuer eine Programmierergilde waere folgendes denkbar:
+     SetProp(P_GUILD_MALE_TITLES,([1:"der Anfaenger",
+                                   2:"der Fortgeschrittene",
+                                   3:"der Profi"]));
+     SetProp(P_GUILD_FEMALE_TITLES,([1:"die Anfaengerin",
+                                     2:"die Fortgeschrittene",
+                                     3:"die Professionelle"]));
+   Ein weibliches Gildenmitglied mit der dritten Gildenstufe und ohne
+   P_TITLE wuerde dann den Titel "die Professionelle" tragen. Das hat
+   zwar nichts mit Programmierern zu tun, aber wie heisst eigentlich
+   ein weiblicher "Profi"?! :)
+
+
+SIEHE AUCH
+==========
+
+   P_TITLE, P_GUILD, P_GUILD_LEVEL,
+   P_GUILD_MALE_TITLES, P_GUILD_FEMALE_TITLES,
+   P_SUBGUILD_TITLE
+
+26. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_HANDS b/doc/sphinx/man/props/P_HANDS
new file mode 100644
index 0000000..859b4eb
--- /dev/null
+++ b/doc/sphinx/man/props/P_HANDS
@@ -0,0 +1,78 @@
+
+P_HANDS
+*******
+
+
+NAME
+====
+
+   P_HANDS                    "hands"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein dreielementiges Array mit
+   den folgenden Eintraegen:
+   1. Element: String mit der Meldung, wenn ohne Waffen angegriffen
+               wird.
+   2. Element: Waffenklasse, wenn ohne Waffen angegriffen wird.
+   3. Element: Array mit Schadensarten (frueher auch: Schadensart)
+
+   eim Setzen dieser Property wird auch P_TOTAL_WC mit veraendert,
+   wenn das Lebewesen keine Waffe gezueckt hat. Steckt das Lebewesen
+   eine gezueckte Waffe weg, so wird ebenfalls P_TOTAL_WC mit der
+   Waffenklasse aus P_HANDS aktualisiert. Zueckt das Lebewesen eine
+   Waffe, so wird P_TOTAL_WC mit der Waffenklasse der Waffe (P_WC)
+   ueberschrieben. Die Property P_TOTAL_WC enthaelt somit immer die
+   aktuelle Angriffsstaerke des Lebewesen.
+
+
+BEMERKUNGEN
+===========
+
+   In alten Objekten kann es vorkommen, dass das dritte Element (Angabe des
+   Schadenstyps) fehlt. Dies ist eine Altlast, die Angabe des Schadenstypes
+   ist NICHT optional.)
+
+
+BEISPIEL
+========
+
+   Ein starker Tausendfuessler mit Schlagschaden:
+
+     SetProp(P_HANDS,({" mit tausend kleinen Fuesschen",1000,
+                       ({DT_BLUDGEON}) }));
+
+
+   Ein Saeurededaemon:
+     SetProp(P_HANDS,
+       ({
+         " mit saeuretriefenden Klauen",
+         250,
+         ({DT_RIP, DT_ACID})
+       })
+     );
+
+   Hier wurden gleich zwei Schadensarten angegeben, also wird
+   Mischschaden verursacht. Man sollte es jedoch nicht zu sehr
+   uebertreiben! Mehr als zwei oder drei gleichzeitig verwendete
+   Schadensarten lassen sich kaum mehr begruenden.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+   P_TOTAL_WC, P_WC
+   /std/living/combat.c, /std/weapon/combat.c, /sys/combat.h
+
+22.02.2014 Zesstra
diff --git a/doc/sphinx/man/props/P_HANDS_USED_BY b/doc/sphinx/man/props/P_HANDS_USED_BY
new file mode 100644
index 0000000..f0d5165
--- /dev/null
+++ b/doc/sphinx/man/props/P_HANDS_USED_BY
@@ -0,0 +1,39 @@
+
+P_HANDS_USED_BY
+***************
+
+
+NAME
+====
+
+   P_HANDS_USED_BY           "hands_used_by"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt eine Liste mit den Objekten, die derzeit die Haende
+   des Livings belegen. Dabei koennen Objekte mehrmals auftauchen,
+   je nachdem wie viele Haende sie belegen.
+
+
+BEMERKUNGEN
+===========
+
+   Darf nur ueber UseHands() und FreeHands() manipuliert werden.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+
+1.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/props/P_HARBOUR b/doc/sphinx/man/props/P_HARBOUR
new file mode 100644
index 0000000..f049847
--- /dev/null
+++ b/doc/sphinx/man/props/P_HARBOUR
@@ -0,0 +1,94 @@
+
+P_HARBOUR
+*********
+
+
+NAME
+====
+
+   P_HARBOUR                                  "harbour_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit eindeutiger Bezeichnung des 'Hafens'
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property wird in Raeumen gesetzt, die als Anleger fuer Transporter
+   dienen sollen. Sie enthaelt ein Array aus zwei Elementen, einem String
+   und einem String-Array, zum Beispiel:
+
+   ({ "zur Sonneninsel", ({"sonneninsel"}) }) oder
+   ({ "nach Titiwu", ({"titiwu"}) })
+
+   Damit bekommt der Spieler bei einer Abfrage seiner Reiseroute mittels
+   "reise route" eine Ausgabe wie
+     'Du reist mit dem Floss nach Titiwu' oder
+     'Du reist mit dem Wal zur Sonneninsel'.
+
+   Das zweite Element der Property enthaelt eine Liste der IDs, mit denen
+   sich der Hafen mit dem Befehl "reise nach <ID>" ansprechen laesst. Im
+   Beispiel oben wuerde also "reise nach sonneninsel" und
+   "reise nach titiwu" akzeptiert werden. Der erste Eintrag in dieser ID-
+   Liste wird in der Ausgabe des Befehls "reise route" verwendet, sollte
+   also den Anlegeort korrekt bezeichnen und nicht z.B. eine Abkuerzung
+   enthalten.
+   Es bietet sich an, bei bestimmten, deklinierbaren Bezeichnungen alle
+   Varianten einzutragen, z.B. "verlorenes land" und zusaetzlich
+   "verlorene land" und "verlorenen land", damit alle Varianten von
+   "reise nach ..." funktionieren.
+
+   Ist in einem Hafen diese Property nicht gesetzt, so bekommt der
+   Spieler keinerlei Hinweis darauf, wohin ihn ein bestimmter Trans-
+   porter befoerdert.
+   Stattdessen erhaelt er die Bezeichnung 'unbekannt'.
+
+
+HINWEISE
+========
+
+   Wird der zweite Parameter in dieser Property, d.h. die Liste der
+   Anleger-IDs, nicht korrekt gesetzt, kann das dazu fuehren, dass Spieler
+   den hier anlegenden Transporter nicht benutzen koennen, weil es
+   keine sinnvolle Syntax gibt, um den gewuenschten Zielhafen zu finden.
+
+   Zu achten ist auch darauf, das der erste Eintrag unveraendert in einer
+   Meldung an den Spieler ausgegeben wird, d.h. Gross-und Kleinschreibung
+   sollte korrekt sein.
+
+
+HISTORIE
+========
+
+   Frueher war der zweite Eintrag in dieser Property ein einzelner String.
+   Es existiert eine SetMethode auf dieser Property, die solche Daten in
+   altem Code auf die neue Datenstruktur umbiegt. Dies fuehrt dazu, dass
+   bei solchen Objekten die im geladenen Raum enthaltenen Daten nicht mit
+   den Daten im File uebereinstimmen. Dies moege aber bitte niemand
+   zum Anlass nehmen, in neuem Code veraltete Daten in die Property zu
+   schreiben!
+
+
+SIEHE AUCH
+==========
+
+   Properties:     P_NO_TRAVELING, P_TRAVEL_INFO
+   Funktionen:     AddRoute(L)
+   Spielerbefehle: reise
+   weitere Doku:   /d/inseln/schiffe/HowTo
+
+
+LETZTE AENDERUNG
+================
+
+2015-Jan-18, Arathorn
diff --git a/doc/sphinx/man/props/P_HAUS_ERLAUBT b/doc/sphinx/man/props/P_HAUS_ERLAUBT
new file mode 100644
index 0000000..ffd5c8f
--- /dev/null
+++ b/doc/sphinx/man/props/P_HAUS_ERLAUBT
@@ -0,0 +1,46 @@
+
+P_HAUS_ERLAUBT
+**************
+
+
+NAME
+====
+
+   P_HAUS_ERLAUBT                "haus_erlaubt"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Hier darf ein Seherhaus abgestellt werden
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property sollte nicht per default in Raeumen auf einen Wert > 0
+   gesetzt werden um einem Wildwuchs an Seherhaus(-ruinen) vorzubeugen.
+   Auch sei darauf geachtet, dass in Raeumen die P_INDOORS auf einen
+   Wert > 0 haben, per default nicht gebaut werden kann.
+   Hier lieber die Property per Hand auf 1 setzen und nach dem Aufstellen
+   des Hauses wieder loeschen.
+
+
+
+   xcall $h->SetProp(P_HAUS_ERLAUBT,1);
+
+   Angemerkt sei noch, dass der Magier dem der Raum gehoert ueber Hausbau
+   entscheidet und nicht der Regionsmagier. In jedem Fall Ruecksprache
+   halten falls der entsprechende Magier zumindest ab und an anwesend sein
+   sollte.
+
+   Unter /doc/beispiele/misc liegt ein File, in dem dokumentiert ist,
+   wie nach Aenderungen am Seherhaus zu verfahren ist.
+
+Last modified: Fri Nov 26 15:41:47 1999 by Tilly
diff --git a/doc/sphinx/man/props/P_HB b/doc/sphinx/man/props/P_HB
new file mode 100644
index 0000000..bdaf9f1
--- /dev/null
+++ b/doc/sphinx/man/props/P_HB
@@ -0,0 +1,22 @@
+
+P_HB
+****
+
+
+NAME
+====
+
+   P_HB                          "hb"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird gesetzt, wenn das Monster immer einen
+   heart_beat haben soll. (VORSICHT, nur wenn es WIRKLICH sein muss!)
diff --git a/doc/sphinx/man/props/P_HEAL b/doc/sphinx/man/props/P_HEAL
new file mode 100644
index 0000000..83d4991
--- /dev/null
+++ b/doc/sphinx/man/props/P_HEAL
@@ -0,0 +1,48 @@
+
+P_HEAL
+******
+
+
+NAME
+====
+
+   P_HEAL                        "heal"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert, der beim Verzehr einer Leiche zu den Lebenspunkten
+   desjenigen hinzugezaehlt wird, der die Leiche isst. Der Wert kann auch
+   negativ sein. Falls die Leiche den maximalen Verfallszustand erreicht
+   hat, wird dieser Wert automatisch auf -4 gesetzt, sofern nicht schon
+   ein geringerer Wert eingetragen ist.
+
+   Werte unter -4 sind sehr sparsam und nur in begruendeten Einzelfaellen
+   zu setzen. Die Regionsmagier werden auf sinnvolle Wertebereiche in
+   ihrem Zustaendigkeitsbereich achten und ggf. Grenzwerte fuer ihre
+   Region festlegen.
+
+   Die Gilden koennen P_HEAL abfragen und eigene, grobe Informationstexte
+   ausgeben, die den Spieler ueber den zu erwartenden Effekt beim Essen
+   einer Leiche informieren.
+
+   Positive Werte von P_HEAL sind bei der Heilungsbalance als Heilstelle
+   zu beantragen.
+
+   Fuer nicht allzu harte NPCs sollte P_HEAL auf 0 gesetzt sein. Dieser
+   Wert ist gleichzeitig der Standardwert.
+
+
+SIEHE AUCH
+==========
+
+   /std/corpse, QueryHealInfo()
+
+31.03.2008 Arathorn
diff --git a/doc/sphinx/man/props/P_HELPER_NPC b/doc/sphinx/man/props/P_HELPER_NPC
new file mode 100644
index 0000000..af8bfef
--- /dev/null
+++ b/doc/sphinx/man/props/P_HELPER_NPC
@@ -0,0 +1,50 @@
+
+P_HELPER_NPC
+************
+
+
+NAME
+====
+
+   P_HELPER_NPC             "std:helper_npc
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Prop laesst sich herausfinden, ob ein NPC einem Spieler hilft
+   bzw. welche NPC einem Spieler helfen.
+   Wird diese Prop in einem NPC abgefragt, enthaelt sie ein Array
+     ({ spielerobjekt, flags }) oder 0.
+   Wird diese Prop in einem Spieler abgefragt, enthaelt sie ein Mapping
+     ([npcobjekt1: flags1, npc-objekt2: flags2]).
+
+   <flags> ist ein Integer, der eine Reihe von ver-oder-ten Konstanten (s.
+   RegisterHelperNPC) enthalten kann.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Prop wird automatisch von RegisterHelperNPC() und
+   UnregisterHelperNPC() verwaltet. Bitte aendert sie nicht per Hand.
+
+
+BEISPIEL
+========
+
+   s. RegisterHelperNPC().
+
+
+SIEHE AUCH
+==========
+
+   RegisterHelperNPC(), UnregisterHelperNPC()
+
+10.03.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_HELPER_OBJECTS b/doc/sphinx/man/props/P_HELPER_OBJECTS
new file mode 100644
index 0000000..94990c4
--- /dev/null
+++ b/doc/sphinx/man/props/P_HELPER_OBJECTS
@@ -0,0 +1,40 @@
+
+P_HELPER_OBJECTS
+****************
+
+
+NAME
+====
+
+   P_HELPER_OBJECTS "lib_p_helper_objects"
+
+
+DEFINIERT IN
+============
+
+   <living/helpers.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Liste von Hilfsobjekten, die das Lebewesen,
+   in dem sie gesetzt ist, bei bestimmten Aktivitaeten wie Tauchen oder
+   Fliegen/Segeln unterstuetzt. Die Property enthaelt ein Mapping der Form
+   ([ HELPER_TYPE : ({ Callback-Closures }) ]).
+
+
+BEMERKUNGEN
+===========
+
+   Externe Manipulationen an dieser Property bitte unterlassen, zum Ein-
+   und Austragen von Objekten gibt es die unten aufgefuehrten Methoden.
+
+
+SIEHE AUCH
+==========
+
+   Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
+   Properties:  P_AERIAL_HELPERS, P_AQUATIC_HELPERS
+
+18.02.2013, Arathorn
diff --git a/doc/sphinx/man/props/P_HIDE_EXITS b/doc/sphinx/man/props/P_HIDE_EXITS
new file mode 100644
index 0000000..c9aa2e5
--- /dev/null
+++ b/doc/sphinx/man/props/P_HIDE_EXITS
@@ -0,0 +1,53 @@
+
+P_HIDE_EXITS
+************
+
+
+NAME
+====
+
+   P_HIDE_EXITS                  "hide_exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/exits.h
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property in einem Raum auf einen Integerwert ungleich 0
+   gesetzt, werden einem Spieler fuer diesen Raum keine Ausgaenge angezeigt.
+   Auch der Text "Keine sichtbaren Ausgaenge." (oder so) kommt nicht.
+   Alternativ kann man auch ein array von strings uebergeben. In diesem
+   Fall werden all die Ausgaenge nicht angezeigt, deren Index in P_EXITS
+   in dem array vorkommt.
+   In diesem Fall wird ggf. der Text "Keine sichtbaren Ausgaenge."
+   ausgegeben.
+
+
+BEISPIEL
+========
+
+   AddExit("raus", "/ganz/wo/anders");
+   AddExit("weiter", "/in/der/naehe");
+
+   // KEINE Ausgaenge anzeigen. Noch nicht mal, dass man keine sieht.
+   SetProp(P_HIDE_EXITS, 1);
+
+   // Der Ausgang weiter wird nicht angezeigt.
+   SetProp(P_HIDE_EXITS, ({"weiter"}) );
+
+   // Keinen Ausgang zeigen, aber den Text, dass keiner sichtbar, ausgeben.
+   SetProp(P_HIDE_EXITS, ({"weiter", "raus"}) );
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_SHOW_EXITS
+   Sonstiges:         AddExit(), GetExits(), int_long(), int_short()
+
+25. Apr 1996 Highlander
diff --git a/doc/sphinx/man/props/P_HISTMIN b/doc/sphinx/man/props/P_HISTMIN
new file mode 100644
index 0000000..ca35504
--- /dev/null
+++ b/doc/sphinx/man/props/P_HISTMIN
@@ -0,0 +1,21 @@
+
+P_HISTMIN
+*********
+
+
+NAME
+====
+
+   P_HISTMIN                     "histmin"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Minimale Laenge, die eine Zeile haben muss, um in die History zu kommen
diff --git a/doc/sphinx/man/props/P_HIT_FUNC b/doc/sphinx/man/props/P_HIT_FUNC
new file mode 100644
index 0000000..9bcc328
--- /dev/null
+++ b/doc/sphinx/man/props/P_HIT_FUNC
@@ -0,0 +1,38 @@
+
+P_HIT_FUNC
+**********
+
+
+NAME
+====
+
+   P_HIT_FUNC "hit_func"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine HitFunc() fuer die Waffe definiert, so muss
+   dieses Objekt in dieser Property eingetragen werden.
+
+   Die Auswertung dieser Property erfolgt in QueryDamage().
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu HitFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, HitFunc()
+
+Last modified: Sun May 19 15:37:35 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_HOMEPAGE b/doc/sphinx/man/props/P_HOMEPAGE
new file mode 100644
index 0000000..5cf6bec
--- /dev/null
+++ b/doc/sphinx/man/props/P_HOMEPAGE
@@ -0,0 +1,21 @@
+
+P_HOMEPAGE
+**********
+
+
+NAME
+====
+
+   P_HOMEPAGE                    "homepage"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Die Homepage eines Spielers (mit dem Befehl 'url' zu setzen).
diff --git a/doc/sphinx/man/props/P_HP b/doc/sphinx/man/props/P_HP
new file mode 100644
index 0000000..b7ded4a
--- /dev/null
+++ b/doc/sphinx/man/props/P_HP
@@ -0,0 +1,39 @@
+
+P_HP
+****
+
+
+NAME
+====
+
+   P_HP                          "hp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Anzahl der Lebenspunkte des Wesens.
+
+   - Speisen/Kneipen
+     Heilwirkung einer Portion der Speise auf die Lebenspunkte
+     des Konsumenten
+
+
+SIEHE AUCH
+==========
+
+   Props:             P_MAX_HP
+   Veraenderung:      reduce_hit_points(), restore_hit_points()
+                      do_damage(L), Defend(L)
+                      buffer_hp()
+   Ueberwachung:      AddHpHook(L)
+   Speisen/Kneipen:   std/pub, wiz/food, consume
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_HP_DELAY b/doc/sphinx/man/props/P_HP_DELAY
new file mode 100644
index 0000000..f15f748
--- /dev/null
+++ b/doc/sphinx/man/props/P_HP_DELAY
@@ -0,0 +1,23 @@
+
+P_HP_DELAY
+**********
+
+
+NAME
+====
+
+   P_HP_DELAY                 "hp_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis P_HP um einen Punkt regeneriert.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/sphinx/man/props/P_HP_HOOKS b/doc/sphinx/man/props/P_HP_HOOKS
new file mode 100644
index 0000000..7bb48bf
--- /dev/null
+++ b/doc/sphinx/man/props/P_HP_HOOKS
@@ -0,0 +1,38 @@
+
+P_HP_HOOKS
+**********
+
+
+NAME
+====
+
+   P_HP_HOOKS                    "hp_hooks"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Welche Objekte sollen bei HP-Aenderungen benachrichtigt werden?
+   Diese Property bitte NICHT manipulieren! Zum Ein- und Austragen stehen
+   hierfuer AddHpHook() und RemoveHpHook() bereit.
+
+
+BEMERKUNGEN
+===========
+
+   Das neuere Hooksystem (s. Manpage std/hooks) stellt ebenfalls Hooks zur
+   Ueberwachung von P_HP bereit.
+
+
+SIEHE AUCH
+==========
+
+   AddHpHook(), RemoveHpHook(),
+   NotifyHpChange()
+   std/hooks
diff --git a/doc/sphinx/man/props/P_HUNTTIME b/doc/sphinx/man/props/P_HUNTTIME
new file mode 100644
index 0000000..e712a49
--- /dev/null
+++ b/doc/sphinx/man/props/P_HUNTTIME
@@ -0,0 +1,59 @@
+
+P_HUNTTIME
+**********
+
+
+P_HUNTTIME (int)
+================
+
+
+NAME
+====
+
+   P_HUNTTIME                                 "p_lib_hunttime"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Property laesst sich festlegen, wie lange ein Monster einen
+   Gegner verfolgt (also automatisch angreift), nachdem dieser geflohen ist.
+   Die Angabe erfolgt in Sekunden.
+   Die Standardzeit ist 600s (300 Heartbeats).
+
+
+BEMERKUNGEN
+===========
+
+   1. Wenn der Standardwert akzeptabel ist, bitte die Prop auch nicht setzen.
+   2. Enthaelt die Property keinen Integer oder ist sie <= 0, wird sie
+      ignoriert und der Standardwert von 600s verwendet.
+   3. Kaempft man mit einem Lebenwesen mit einem groesseren Wert als man
+      selber und man selber hat das Verfolgen eingestellt, der Gegner aber
+      nicht, wird dieser beim Reinkommen den Kampf neu starten (und den
+      ersten Schlag haben).
+
+
+BEISPIEL
+========
+
+   Ein NPC soll sich erst eine Stunde nach Flucht des Gegners beruhigen.
+   protected void create() {
+     ...
+     SetProp(P_HUNTTIME, 3600);
+   }
+
+
+SIEHE AUCH
+==========
+
+   InsertSingleEnemy, InsertEnemy
+   /std/living/combat.c
+
+13.03.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_IDS b/doc/sphinx/man/props/P_IDS
new file mode 100644
index 0000000..dee9a74
--- /dev/null
+++ b/doc/sphinx/man/props/P_IDS
@@ -0,0 +1,41 @@
+
+P_IDS
+*****
+
+
+NAME
+====
+
+   P_IDS "ids"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property steht ein Array von den Strings, mit denen sich das
+   Objekt ansprechen laesst. Die Verwaltung dieser Property erfolgt ueber
+   die Funktionen AddId() und RemoveId().
+
+   Der Inhalt dieser Property wird von den Funktionen id() und (indirekt)
+   present() ausgewertet.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte an dieser Property nicht "von Hand" herumfummeln, sondern
+   immer die zugehoerigen Funktionen benutzen!
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, AddId(), RemoveId()
+
+Last modified: Sun May 19 20:17:36 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_IGNORE b/doc/sphinx/man/props/P_IGNORE
new file mode 100644
index 0000000..3436a09
--- /dev/null
+++ b/doc/sphinx/man/props/P_IGNORE
@@ -0,0 +1,39 @@
+
+P_IGNORE
+********
+
+
+NAME
+====
+
+   P_IGNORE                      "ignore"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit Spielern, Kommandos, Aktionen u.ae. die ignoriert werden.
+   In aller Regel sollte die Ignorierepruefung durch Aufruf von TestIgnore()
+   im Spieler erfolgen und nicht selber P_IGNORE durchsucht werden.
+
+
+BEMERKUNGEN
+===========
+
+   Die Daten in dieser Property werden intern als Mapping gespeichert, nicht
+   als Array von Strings. Bitte nicht mit Set/Query() an dieser Property
+   herumbasteln.
+
+
+SIEHE AUCH
+==========
+
+   TestIgnore, /std/player/comm.c
+
+Last modified: 02.10.2011, Zesstra
diff --git a/doc/sphinx/man/props/P_INDOORS b/doc/sphinx/man/props/P_INDOORS
new file mode 100644
index 0000000..4483d10
--- /dev/null
+++ b/doc/sphinx/man/props/P_INDOORS
@@ -0,0 +1,52 @@
+
+P_INDOORS
+*********
+
+
+NAME
+====
+
+   P_INDOORS                     "indoors"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn von dem Raum aus der Himmel nicht sichtbar ist.
+
+   Objekte oder Gilden werten diese Property teilweise aus, fuer
+   Innenraeume sollte sie also sinnvollerweise gesetzt werden.
+
+   Licht wird _nicht_ durch P_INDOORS beeinflusst, muss also
+   selbst angepasst werden.
+
+
+BEISPIEL
+========
+
+   // Ein dunkler Innenraum:
+   SetProp(P_INDOORS, 1);            // ein Innenraum liegt innen :)
+   SetProp(P_LIGHT, 0);              // Licht auf 0
+
+   // Ein richtig heller Aussenraum:
+   SetProp(P_INDOORS, 0);
+   SetProp(P_LIGHT, 2);
+
+   // Ein heller Aussenraum mit Mondlicht (gut fuer Delfen)
+   SetProp(P_INDOORS, 0);
+   SetProp(P_LIGHT, 1);
+   SetProp(P_LIGHT_TYPE, LT_STARS|LT_MOON);
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT, P_LIGHT_ABSORPTION, P_LIGHT_TYPE
+
+25.Aug 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_INFO b/doc/sphinx/man/props/P_INFO
new file mode 100644
index 0000000..f29c242
--- /dev/null
+++ b/doc/sphinx/man/props/P_INFO
@@ -0,0 +1,36 @@
+
+P_INFO
+******
+
+
+NAME
+====
+
+   P_INFO                        "info"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Geheime Information, die ggf. ueber einen Zauberspruch
+   von Spielern ermittelt werden kann.
+
+
+BEISPIEL
+========
+
+   SetProp(P_INFO,"Du ergruendest das Geheimnis.\n")
+
+
+SIEHE AUCH
+==========
+
+   GetOwner(L)
+
+24. April 2006, Vanion
diff --git a/doc/sphinx/man/props/P_INFORMME b/doc/sphinx/man/props/P_INFORMME
new file mode 100644
index 0000000..c6dd0ed
--- /dev/null
+++ b/doc/sphinx/man/props/P_INFORMME
@@ -0,0 +1,30 @@
+
+P_INFORMME
+**********
+
+
+NAME
+====
+
+   P_INFORMME                    "informme"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt das Flag, ob der Spieler ueber ein-/ausloggende Spieler
+   informiert werden will.
+
+
+SIEHE AUCH
+==========
+
+   Spielerkommando: inform
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_INPC_HOME b/doc/sphinx/man/props/P_INPC_HOME
new file mode 100644
index 0000000..1eafd4d
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_HOME
@@ -0,0 +1,21 @@
+
+P_INPC_HOME
+***********
+
+
+NAME
+====
+
+   P_INPC_HOME                   "inpc_home"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_LAST_ENVIRONMENT b/doc/sphinx/man/props/P_INPC_LAST_ENVIRONMENT
new file mode 100644
index 0000000..8f7cb68
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_LAST_ENVIRONMENT
@@ -0,0 +1,21 @@
+
+P_INPC_LAST_ENVIRONMENT
+***********************
+
+
+NAME
+====
+
+   P_INPC_LAST_ENVIRONMENT       "inpc_last_environment"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_LAST_PLAYER_CONTACT b/doc/sphinx/man/props/P_INPC_LAST_PLAYER_CONTACT
new file mode 100644
index 0000000..14f8730
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_LAST_PLAYER_CONTACT
@@ -0,0 +1,21 @@
+
+P_INPC_LAST_PLAYER_CONTACT
+**************************
+
+
+NAME
+====
+
+   P_INPC_LAST_PLAYER_CONTACT    "inpc_last_player_contact"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_WALK_AREA b/doc/sphinx/man/props/P_INPC_WALK_AREA
new file mode 100644
index 0000000..9554d27
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_WALK_AREA
@@ -0,0 +1,21 @@
+
+P_INPC_WALK_AREA
+****************
+
+
+NAME
+====
+
+   P_INPC_WALK_AREA              "inpc_walk_area"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_WALK_DELAYS b/doc/sphinx/man/props/P_INPC_WALK_DELAYS
new file mode 100644
index 0000000..e59deea
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_WALK_DELAYS
@@ -0,0 +1,21 @@
+
+P_INPC_WALK_DELAYS
+******************
+
+
+NAME
+====
+
+   P_INPC_WALK_DELAYS            "inpc_walk_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_WALK_FLAGS b/doc/sphinx/man/props/P_INPC_WALK_FLAGS
new file mode 100644
index 0000000..86c4835
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_WALK_FLAGS
@@ -0,0 +1,21 @@
+
+P_INPC_WALK_FLAGS
+*****************
+
+
+NAME
+====
+
+   P_INPC_WALK_FLAGS             "inpc_walk_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_WALK_MODE b/doc/sphinx/man/props/P_INPC_WALK_MODE
new file mode 100644
index 0000000..134bb50
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_WALK_MODE
@@ -0,0 +1,21 @@
+
+P_INPC_WALK_MODE
+****************
+
+
+NAME
+====
+
+   P_INPC_WALK_MODE              "inpc_walk_mode"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INPC_WALK_ROUTE b/doc/sphinx/man/props/P_INPC_WALK_ROUTE
new file mode 100644
index 0000000..762408d
--- /dev/null
+++ b/doc/sphinx/man/props/P_INPC_WALK_ROUTE
@@ -0,0 +1,21 @@
+
+P_INPC_WALK_ROUTE
+*****************
+
+
+NAME
+====
+
+   P_INPC_WALK_ROUTE             "inpc_walk_route"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/walking.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_INTERMUD b/doc/sphinx/man/props/P_INTERMUD
new file mode 100644
index 0000000..8019998
--- /dev/null
+++ b/doc/sphinx/man/props/P_INTERMUD
@@ -0,0 +1,25 @@
+
+P_INTERMUD
+**********
+
+
+NAME
+====
+
+   P_INTERMUD                    "intermud"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Die Bedeutung dieser Property ist in den praehistorischen Untiefen
+   der Mudlib verlorengegangen.
+   Wird nicht mehr benutzt.
+   Nicht benutzen.
+   Ignorieren.
diff --git a/doc/sphinx/man/props/P_INTERNAL_EXTRA_LOOK b/doc/sphinx/man/props/P_INTERNAL_EXTRA_LOOK
new file mode 100644
index 0000000..ffa78ad
--- /dev/null
+++ b/doc/sphinx/man/props/P_INTERNAL_EXTRA_LOOK
@@ -0,0 +1,57 @@
+
+P_INTERNAL_EXTRA_LOOK
+*********************
+
+
+NAME
+====
+
+   P_INTERNAL_EXTRA_LOOK                   "internal_extralook"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+         Diese Property enthaelt ein Mapping, in dem alle einzelnen
+   Extra-Look-Eintraege des Livings enthalten sind. Dabei weden die Daten von
+   AddExtraLook() und RemoveExtraLook() verwaltet. Fragt man diese Prop mit
+   QueryProp() ab, erhaelt man die Ausgabe der gueltigen Extralooks des
+   Livings. Bei Abfrage per Query() erhaelt man ein Mapping mit allen
+   Eintraegen und deren Daten. Jeder Wert im Mapping ist erneut ein Mapping,
+   welches folgende Keys enthalten kann:
+   - "xllook": String, der im Extralook des Living angezeigt wird.
+   - "xlduration": Zeitstempel (int), der angibt, wie lang der Eintrag gueltig
+                   ist. 0 == "Unendlich", negative Zahlen besagen, dass der
+                   Eintrag nur bis Reboot/Ende gueltig sein und abs(xlduration)
+                   ist der Zeitpunkt des Eintrages dieses Extralooks.
+   - "xlende": String, der nach Ablaufen an das Living ausgegeben wird.
+   - "xlfun": Funktion, die gerufen wird und den String zurueckliefern muss,
+              der ausgeben werden soll.
+   - "xlendefun": Funktion, die gerufen wird, wenn der Eintrag abgelaufen ist
+                  und den String zurueckliefern muss, der dann ans Living
+                  ausgeben wird.
+   - "xlobjectname": Objekt, in dem die o.a. Funktionen gerufen werden.
+
+
+BEMERKUNG
+=========
+
+   DIESE PROPERTY BITTE NIEMALS PER HAND MIT Set()/SetProp() AENDERN!
+   Die Daten in dieser Prop werden vom Living selber verwaltet. Extralooks
+   koennen mittel AddExtraLook() eingetragen und mit RemoveExtraLook() entfernt
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   long(), /std/living/description.c, /std/player/base.c
+   AddExtraLook(), RemoveExtraLook()
+
+13.05.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_INT_LIGHT b/doc/sphinx/man/props/P_INT_LIGHT
new file mode 100644
index 0000000..dcf59b6
--- /dev/null
+++ b/doc/sphinx/man/props/P_INT_LIGHT
@@ -0,0 +1,36 @@
+
+P_INT_LIGHT
+***********
+
+
+NAME
+====
+
+   P_INT_LIGHT                       "int_light"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Lichtlevel an, der _in_ einem Objekt ist. Ein Abfragen dieser
+   Property kann z.B. in Raeumen sinnvoll sein, wenn es z.B. um das
+   aufwachen einer Eule oder einer Fledermaus geht. Zum Abfragen ob ein
+   Spieler etwas sehen kann, bitte auf jeden Fall P_PLAYER_LIGHT benutzen!
+
+   Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
+   da das Lichtlevel ggf. neu berechnet werden muss!
+
+   Ein direktes setzen dieser Property ist NICHT moeglich, hierzu bitte
+   P_LIGHT benutzen!
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT, P_TOTAL_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/sphinx/man/props/P_INT_LONG b/doc/sphinx/man/props/P_INT_LONG
new file mode 100644
index 0000000..741e511
--- /dev/null
+++ b/doc/sphinx/man/props/P_INT_LONG
@@ -0,0 +1,53 @@
+
+P_INT_LONG
+**********
+
+
+NAME
+====
+
+   P_INT_LONG                    "int_long"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt Beschreibung, die man bekommt, wenn man sich in dem
+   Container (jeder Raum ist einer) umschaut als String.
+
+   Der Text sollte bereits umgebrochen sein.
+
+   Diese Property bestimmt die Ansicht des Containers von innen.
+   Fuer die Aussen(lang)ansicht muss P_LONG benutzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   - Beschreibungen fuer etwaige Tueren im Raum werden in int_long()
+     hinzugefuegt. (Frueher wurde dies in einer Querymethode auf diese Prop
+     gemacht.)
+
+
+BEISPIELE
+=========
+
+   SetProp(P_INT_LONG, break_string(
+    "Du stehst in einem total spannenden Testraum. Seine absolute "
+    "Nichtigkeit erfuellt dich mit ehrfuerchtigem Grauen.",78));
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_INT_SHORT
+   Sonstiges:         int_long(), P_LONG
+                      process_string(), break_string()
+
+04.06.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_INT_SHORT b/doc/sphinx/man/props/P_INT_SHORT
new file mode 100644
index 0000000..618bbab
--- /dev/null
+++ b/doc/sphinx/man/props/P_INT_SHORT
@@ -0,0 +1,56 @@
+
+P_INT_SHORT
+***********
+
+
+NAME
+====
+
+   P_INT_SHORT                        "int_short"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Innen-Kurzbeschreibung des Containers
+   als String oder Closure (mit String-Rueckgabewert).
+
+   Container sind hierbei z.B. Raeume.
+   ACHTUNG: Die Kurzbeschreibung sollte dabei weder mit einem
+            Satzzeichen noch mit einem "\n" abgeschlossen sein
+            (dies wird von den zustaendigen Funktionen erledigt).
+
+   Man sollte die Property nicht auf 0 setzen.
+
+   Diese Property bestimmt die Ansicht des Containers von innen.
+   Fuer die Aussen(kurz)ansicht muss P_SHORT benutzt werden.
+
+
+BEMERKUNGEN
+===========
+
+   - int_short() (bei Bewegung) filtert P_INT_SHORT durch process_string()
+     -> daher sind Closures moeglich
+
+
+BEISPIELE
+=========
+
+   // ein Gang sieht natuerlich so aus
+   SetProp(P_INT_SHORT, "Ein Gang");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_INT_LONG
+   Sonstiges:         int_short(), P_SHORT
+                      process_string(), break_string()
+
+Last modified: Thu May 31 15:34:05 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_INVIS b/doc/sphinx/man/props/P_INVIS
new file mode 100644
index 0000000..4063546
--- /dev/null
+++ b/doc/sphinx/man/props/P_INVIS
@@ -0,0 +1,65 @@
+
+P_INVIS
+*******
+
+
+NAME
+====
+
+   P_INVIS                       "invis"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property P_INVIS dient dazu, Objekte als unsichtbar zu kennzeichnen.
+   Hierbei versucht P_INVIS die moeglichen Interaktionen mit Spielern zu
+   minimieren (im Gegensatz zu einer fehlenden P_SHORT, welche das Objekt
+   nur einfach nicht-sichtbar macht).
+
+
+
+   Man sollte drei Arten von unsichtbaren Objekten unterscheiden:
+
+   - Gegenstaende
+     Setzt man P_INVIS auf eine Zahl ungleich 0, wird der Gegenstand
+     unsichtbar und der Name zu "etwas". Zusaetzlich koennen Spieler ihn
+     nicht mehr ansprechen, d.h. nehmen, wegwerfen, weitergeben etc.
+     (Bei magier-eigenen Kommandos ist dies evtl. nicht umgesetzt...)
+     Setzt man P_SHORT auf 0, wird der Gegenstand nur nicht mehr in
+     der Inventarliste von Behaeltern/Raeumen angezeigt, er behaelt aber
+     seinen Namen und ist durch Spieler ansprechbar, wenn sie eine ID
+     kennen.
+
+   - NPCs
+     Bei gesetztem P_INVIS wird der NPC unsichtbar und sein Name wird zu
+     "Jemand". Zusaetzlich koennen Spieler ihn nicht mehr ansprechen, z.B.
+     toeten oder knuddeln.
+     (Bei magier-eigenen Kommandos ist dies evtl. nicht umgesetzt...)
+     Setzt man P_SHORT auf 0, wird der NPC nur nicht mehr in der
+     Inventarliste von Behaeltern/Raeumen angezeigt, er behaelt aber seinen
+     Namen und ist durch Spieler ansprechbar, wenn sie eine ID kennen. Auch
+     angreifen und kaempfen ist moeglich.
+
+
+
+   - Magier
+     Magier macht man unsichtbar, indem man ihnen die Property P_INVIS auf
+     einen Wert <> 0 setzt.
+     *  Spieler duerfen nicht unsichtbar gemacht werden!               *
+     *  Wird ein Magier unsichtbar gemacht, muss man ihm die Property  *
+     *  P_INVIS auf den Wert setzen, den die Property P_AGE zu diesem  *
+     *  Zeitpunkt hat (keine F_QUERY_METHOD !).                                                *
+     Setzt man die Property auf den Wert 1, so erhaelt ein Spieler,
+     wenn er den entsp. Magier fingert, die Ausgabe: Alter: 00:00:02,
+     was genauso verraeterisch ist, wie ein Alter, dass bei einem
+     scheinbar nicht eingeloggten Magier immer weiter hochgezaehlt
+     wird.
+
+27.05.2015, Zesstra
diff --git a/doc/sphinx/man/props/P_IP_NAME b/doc/sphinx/man/props/P_IP_NAME
new file mode 100644
index 0000000..6003c80
--- /dev/null
+++ b/doc/sphinx/man/props/P_IP_NAME
@@ -0,0 +1,21 @@
+
+P_IP_NAME
+*********
+
+
+NAME
+====
+
+   P_IP_NAME                     "ip_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Rechnername des Interactives
diff --git a/doc/sphinx/man/props/P_IS_ARTILLERY b/doc/sphinx/man/props/P_IS_ARTILLERY
new file mode 100644
index 0000000..2afcd60
--- /dev/null
+++ b/doc/sphinx/man/props/P_IS_ARTILLERY
@@ -0,0 +1,30 @@
+
+P_IS_ARTILLERY
+**************
+
+
+NAME
+====
+
+   P_IS_ARTILLERY                  "artillery"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Is ein Objekt Artillerie, so muss diese Property
+   gesetzt sein. (Derzeit einfach auf 1 setzen.)
+
+
+SIEHE AUCH
+==========
+
+   artillerie
+
+Last modified: Sam,  5. Jul 2003, 22:07:12 by Zook.
diff --git a/doc/sphinx/man/props/P_ITEMS b/doc/sphinx/man/props/P_ITEMS
new file mode 100644
index 0000000..1fcafc5
--- /dev/null
+++ b/doc/sphinx/man/props/P_ITEMS
@@ -0,0 +1,22 @@
+
+P_ITEMS
+*******
+
+
+NAME
+====
+
+   P_ITEMS                       "items"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Definition von Gegenstaenden, die in dem Raum liegen sollen.
+   Erklaerung in einem Extrafile.
diff --git a/doc/sphinx/man/props/P_I_HATE_ALCOHOL b/doc/sphinx/man/props/P_I_HATE_ALCOHOL
new file mode 100644
index 0000000..0a0eefc
--- /dev/null
+++ b/doc/sphinx/man/props/P_I_HATE_ALCOHOL
@@ -0,0 +1,41 @@
+
+P_I_HATE_ALCOHOL
+****************
+
+
+NAME
+====
+
+   P_I_HATE_ALCOHOL                        "i_hate_alcohol"
+
+
+DEFINIERT IN
+============
+
+   /sys/inpc/boozing.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert, der die Obergrenze an P_ALCOHOL in einem Monster
+   definiert, welcher beim eigenstaendigen Tanken beruecksichtigt wird.
+
+
+BEMERKUNG
+=========
+
+   Geht der Npc (und nur fuer solche ist diese Prop gedacht) eigen-
+   staendig tanken, werden vor dem Bestellen die Getraenke und Speisen
+   auf ihren Alkoholgehalt geprueft und mit dem aktuellen Wert von
+   P_ALCOHOL im Verhaeltnis zu P_I_HATE_ALCOHOL verglichen. Laege der
+   Wert fuer P_ALCOHOL dann ueber dem von P_I_HATE_ALCOHOL, wird dieses
+   Getraenk (diese Speise) nicht bestellt.
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, P_MAX_ALCOHOL
+
+Last modified: Sam Apr 14 12:35:00 2001 by Tilly
diff --git a/doc/sphinx/man/props/P_KEEPER b/doc/sphinx/man/props/P_KEEPER
new file mode 100644
index 0000000..63185c8
--- /dev/null
+++ b/doc/sphinx/man/props/P_KEEPER
@@ -0,0 +1,26 @@
+
+P_KEEPER
+********
+
+
+NAME
+====
+
+   P_KEEPER                       "shop_keeper"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man in Kneipen und Laeden einen String schreiben.
+   Dann wird vor den Transaktionen geprueft, ob ein NPC anwesend ist,
+   der diesen String als ID hat.
+   Ist der NPC nicht vorhanden, kann nichts ge- oder verkauft werden.
+
+Last modified: Mon Aug 23 14:29:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/props/P_KEEP_ON_SELL b/doc/sphinx/man/props/P_KEEP_ON_SELL
new file mode 100644
index 0000000..ce5feba
--- /dev/null
+++ b/doc/sphinx/man/props/P_KEEP_ON_SELL
@@ -0,0 +1,21 @@
+
+P_KEEP_ON_SELL
+**************
+
+
+NAME
+====
+
+   P_KEEP_ON_SELL                "keep_on_sell"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Bei "verkaufe alles" wird das Objekt behalten.
diff --git a/doc/sphinx/man/props/P_KILLER b/doc/sphinx/man/props/P_KILLER
new file mode 100644
index 0000000..01bb0d1
--- /dev/null
+++ b/doc/sphinx/man/props/P_KILLER
@@ -0,0 +1,46 @@
+
+P_KILLER
+********
+
+
+NAME
+====
+
+   P_KILLER                      "killer"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt das Objekt, welches das Lebewesen als letztes
+   getoetet hat. Sie wird von do_damage(), heart_beat() (Vergiftungen) und
+   die() (bei direkten Aufrufen) automatisch gesetzt. Ein manuelles
+   Setzen vor Aufruf von do_damage() oder die() hat keinerlei Wirkung!
+   Sinnvollerweise liest man diese Property im NotifyPlayerDeath() aus,
+   spaeteres Auslesen ist unzuverlaessig, da der Killer inzwischen zerstoert
+   sein koennte.
+   Diese Property sollte _nicht_ per Hand gesetzt werden, schon gar nicht
+   waehrend eines NotifyPlayerDeath(), weil es evtl. noch andere Objekte gibt,
+   die sich dafuer interessieren!
+
+
+BEMERKUNGEN
+===========
+
+   Normalerweise steht hier ein Objekt drin (s.o.). Es gibt allerdings eine
+   Ausnahme: Stirbt ein Lebewesen an Gift, enthaelt P_KILLER den String
+   "gift".
+
+
+SIEHE AUCH
+==========
+
+   do_damage()
+
+29.08.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_KILLS b/doc/sphinx/man/props/P_KILLS
new file mode 100644
index 0000000..7ec3dac
--- /dev/null
+++ b/doc/sphinx/man/props/P_KILLS
@@ -0,0 +1,23 @@
+
+P_KILLS
+*******
+
+
+NAME
+====
+
+   P_KILLS                       "playerkills"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Spieler, die dieser Spieler schon getoetet hat.
+   Unerlaubte Manipulation ist ein SCHWERES VERGEHEN gegen
+   die Mudreglen.
diff --git a/doc/sphinx/man/props/P_KILL_MSG b/doc/sphinx/man/props/P_KILL_MSG
new file mode 100644
index 0000000..9437975
--- /dev/null
+++ b/doc/sphinx/man/props/P_KILL_MSG
@@ -0,0 +1,96 @@
+
+P_KILL_MSG
+**********
+
+
+NAME
+====
+
+   P_KILL_MSG                      "kill_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler getoetet wird, so erscheint dazu eine kurze Information
+   auf dem Todeskanal. Um dem toetenden Objekt zusaetzlich die Moeglichkeit
+   zu geben, noch etwas mehr auf diesem Kanal auszugeben, kann man in
+   dieser Property einen String uebergeben.
+   Noetige Zeilenumbrueche werden hierbei automatisch generiert.
+
+   Es ist auch moeglich anzugeben, ob Emotes verwendet werden und ob das
+   toetende Objekt ein Plural-Objekt ist. Hierzu uebergibt man ein Array
+   der Gestalt:
+
+      ({Killmessage,Emotes}) bzw. ({Killmessage,Emotes,PLURAL})
+
+   Der Eintrag <Killmessage> stellt hierbei die Meldung selbst dar, PLURAL
+   gibt an, dass es sich um ein Plural-Objekt handelt und <Emotes> kann
+   folgende Werte annehmen:
+
+      MSG_SAY    - Meldung wird normal ausgegeben.
+      MSG_EMOTE  - Meldung erscheint als Emote.
+      MSG_GEMOTE - Meldung erscheint als Genitiv-Emote.
+      MSG_EMPTY  - Meldung erscheint ohne zuvorige Angabe des
+                     toetenden Objektes.
+
+   Moechte man die Meldung noch etwas "persoenlicher" ;-) gestalten, so
+   kann man den Platzhalter %s verwenden. An dessen Stelle wird dann der
+   Name des Verblichenen eingesetzt.
+
+
+BEISPIEL
+========
+
+   Ein nettes Beispiel ist das folgende: Wenn ein Spieler sich als
+   Drachentoeter bewehrt hat, so kann er traditionell in seinem Blut baden.
+   Hin und wieder ist jedoch auch der Drache erfolgreich, dem man eine
+   lustige Zusatzmeldung fuer den Todeskanal uebergeben kann:
+
+   void create() {
+     ::create();
+     ...
+     SetProp(P_KILL_MSG,"Jetzt bade ich mal in DEINEM Blut, %s!");
+     ...
+   }
+
+
+   Falls der 'Killer' ein Plural-Objekt oder -NPC war, koennte eine Meldung
+   auch folgendermassen aussehen:
+
+   SetProp(P_KILL_MSG,({"haun sich jetzt die Hucke voll.",
+                        MSG_EMOTE,
+                        PLURAL}));
+
+   wobei P_KILL_NAME hier natuerlich auf "Eine Menge Orks" oder
+   dergleichen gesetzt sein sollte. Auf dem Kanal waere dann dies zu
+   lesen:
+
+      [Tod:Lars] Eine Menge Orks haben gerade Orktoeter umgebracht.
+      [Tod:Eine Menge Orks haun sich jetzt die Hucke voll.]
+
+
+   Weiteres Beispiel.
+   Man habe einen NPC, dessen Killname als Plural aufzufassen ist, der aber
+   keinen zusaetlichen Text auf -Tod bringen soll.
+
+   SetProp(P_NAME, "Eine Horde Gummibaeren");
+   SetProp(P_KILL_NAME, "Viele kleine Gummibaeren");
+   SetProp(P_KILL_MSG, ({0, 0, 1}));
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_DIE_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+Last modified: Wed Aug 21 14:36:04 2002 by Bambi
diff --git a/doc/sphinx/man/props/P_KILL_NAME b/doc/sphinx/man/props/P_KILL_NAME
new file mode 100644
index 0000000..0504066
--- /dev/null
+++ b/doc/sphinx/man/props/P_KILL_NAME
@@ -0,0 +1,59 @@
+
+P_KILL_NAME
+***********
+
+
+NAME
+====
+
+   P_KILL_NAME                        "kill_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler getoetet wird, so erscheint eine kurze Information auf
+   dem Todeskanal. Im Normalfall werden die Informationen aus P_NAME,
+   P_ARTICLE und P_GENDER des toetenden Objektes verwendet, um einen Namen
+   fuer eben dieses Objekt zu kreieren. Manchmal moechte man jedoch einen
+   davon unabhaengigen Namen dort stehen haben. Dann kommt die Property
+   P_KILL_NAME zum Einsatz.
+   Man sollte beachten, dass der Name des Toetenden nicht zu lang sein
+   sollte, denn obwohl bei einer Todesmeldung automatisch umgebrochen wird,
+   kann es doch ziemlich stoeren. Wenn das toetende Objekt ein Plural-
+   Objekt ist, so kann man dies zusaetzlich in der Property P_KILL_MSG
+   angeben.
+
+
+BEISPIEL
+========
+
+   Eine Wolke, die wahlweise zwischen verschiedenen Zustaenden mutiert,
+   koennte mal eine Eiswolke, mal eine Giftwolke oder auch mal eine
+   Feuerwolke sein. Fuer den Todeskanal soll jedoch immer erscheinen:
+   '[Tod:] Eine mutierende Wolke hat gerade <Spieler> umgebracht.'
+
+   void create()
+   {
+     ::create();
+     ...
+     SetProp(P_KILL_NAME,"Eine mutierende Wolke");
+     ...
+   }
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_KNOWN_POTIONROOMS b/doc/sphinx/man/props/P_KNOWN_POTIONROOMS
new file mode 100644
index 0000000..29e17d3
--- /dev/null
+++ b/doc/sphinx/man/props/P_KNOWN_POTIONROOMS
@@ -0,0 +1,35 @@
+
+P_KNOWN_POTIONROOMS
+*******************
+
+
+NAME
+====
+
+   P_KNOWN_POTIONROOMS                 "known_potionrooms"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/potion.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit den Nummern der Raeume, in denen der Spieler Zauber-
+   traenke finden kann. Die Zuordnung der Raeume und Nummern
+   geschieht im Potionmaster.
+
+   Nur lesbare _query - Property.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_LASTDIR b/doc/sphinx/man/props/P_LASTDIR
new file mode 100644
index 0000000..2695f06
--- /dev/null
+++ b/doc/sphinx/man/props/P_LASTDIR
@@ -0,0 +1,28 @@
+
+P_LASTDIR
+*********
+
+
+NAME
+====
+
+   P_LASTDIR                  "p_lib_lastdir"
+
+
+DEFINIERT IN
+============
+
+   /sys/shells.h
+
+
+BESCHREIBUNG
+============
+
+   Das jeweils letzte Verzeichnis, in dem der Magier war.
+   (Nur fuer Magier von Belang)
+
+Siehe auch:
+   P_CURRENTDIR
+
+Letzte Aenderung:
+   03.05.2016, Zesstra
diff --git a/doc/sphinx/man/props/P_LAST_COMBAT_TIME b/doc/sphinx/man/props/P_LAST_COMBAT_TIME
new file mode 100644
index 0000000..941ec1e
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_COMBAT_TIME
@@ -0,0 +1,38 @@
+
+P_LAST_COMBAT_TIME
+******************
+
+
+NAME
+====
+
+   P_LAST_COMBAT_TIME              "last_combat_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird genau die Zeit festgehalten, zu der ein
+   Lebewesen zuletzt einen Angriff abgewehrt oder einen Angriff
+   durchgefuehrt hat. Die Property enthaelt diese Information hierbei
+   immer in Form eines Integerwertes.
+   Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte, wann
+   ein Lebewesen zuletzt gekaempft hat. Es ist beispielsweise nicht
+   moeglich, waehrend oder auch unmittelbar nach einem Kampf den Befehl
+   'Ende' zu nutzen, da dies zur Flucht missbraucht werden kann. Dafuer
+   wird der Wert der Property zuvor ausgewertet.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_DAMTIME, P_LAST_DAMAGE, P_LAST_DAMTYPES, Attack(), Defend(),
+   /std/living/combat.c, /std/living/life.c
+
+Last modified: Wed May 26 16:43:00 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_LAST_COMMAND_ENV b/doc/sphinx/man/props/P_LAST_COMMAND_ENV
new file mode 100644
index 0000000..40bd6a0
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_COMMAND_ENV
@@ -0,0 +1,30 @@
+
+P_LAST_COMMAND_ENV
+******************
+
+
+NAME
+====
+
+   P_LAST_COMMAND_ENV            "last_command_env"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Der Raum, in dem das letzte Kommando eingegeben wurde.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property, _query_last_command_env() ist
+   in /std/players/command.c implementiert.
+
+14.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/props/P_LAST_CONTENT_CHANGE b/doc/sphinx/man/props/P_LAST_CONTENT_CHANGE
new file mode 100644
index 0000000..f128774
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_CONTENT_CHANGE
@@ -0,0 +1,32 @@
+
+P_LAST_CONTENT_CHANGE
+*********************
+
+
+NAME
+====
+
+   P_LAST_CONTENT_CHANGE         "last_content_change"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wann wurde zum letzten Mal was ins Obj gestopft oder rausgenommen?
+   Wichtig fuer den Weight-Cache
+
+
+ANMERKUNG
+=========
+
+   Die Property kann nur ueber QueryProp() und SetProp() ausgelesen bzw.
+   gesetzt werden. Query() und Set() funktionieren *nicht*.
+
+   Ausserdem fuehrt ein Setzen per SetProp() zu einer Erhoehung des
+   Wertes um eins - unabhaengig vom gesetzten Wert.
diff --git a/doc/sphinx/man/props/P_LAST_DAMAGE b/doc/sphinx/man/props/P_LAST_DAMAGE
new file mode 100644
index 0000000..66388b7
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_DAMAGE
@@ -0,0 +1,37 @@
+
+P_LAST_DAMAGE
+*************
+
+
+NAME
+====
+
+   P_LAST_DAMAGE                   "last_damage"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird genau die Schadensstaerke festgehalten,
+   welche ein Lebewesen zuletzt abbekommen hat. Die Property enthaelt
+   diese Information hierbei immer in Form eines Integerwertes.
+   Auch die Staerke des Giftschadens durch die Wirkung einer Vergiftung
+   wird hier festgehalten.
+   Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte,
+   welche Schadensstaerke nach Einwirkung von Defendern, Ruestung,
+   Hooks und Skills uebriggeblieben ist.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_DAMTIME, P_LAST_DAMTYPES, Defend(),
+   /std/living/combat.c, /std/living/life.c
+
+Last modified: Tue Jan 26 12:34:29 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_LAST_DAMTIME b/doc/sphinx/man/props/P_LAST_DAMTIME
new file mode 100644
index 0000000..7e6d0ea
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_DAMTIME
@@ -0,0 +1,37 @@
+
+P_LAST_DAMTIME
+**************
+
+
+NAME
+====
+
+   P_LAST_DAMTIME                  "last_damtime"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird genau die Zeit festgehalten, zu der ein
+   Lebewesen zuletzt einen Schaden abbekommen hat. Die Property
+   enthaelt diese Information hierbei immer in Form eines
+   Integerwertes.
+   Auch der Zeitpunkt der Einwirkung von Giftschaden durch die Wirkung
+   einer Vergiftung wird hier festgehalten.
+   Dieser Wert koennte z.B. wichtig sein, wenn man wissen moechte, wann
+   ein Lebewesen zuletzt verletzt wurde.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_COMBAT_TIME, P_LAST_DAMAGE, P_LAST_DAMTYPES, Defend(),
+   /std/living/combat.c, /std/living/life.c
+
+Last modified: Wed May 26 16:44:38 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_LAST_DAMTYPES b/doc/sphinx/man/props/P_LAST_DAMTYPES
new file mode 100644
index 0000000..ecdf571
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_DAMTYPES
@@ -0,0 +1,36 @@
+
+P_LAST_DAMTYPES
+***************
+
+
+NAME
+====
+
+   P_LAST_DAMTYPES                 "last_damtypes"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property werden genau die Schadensarten festgehalten,
+   welche ein Lebewesen zuletzt abbekommen hat. Die Property enthaelt
+   diese Information hierbei immer in Form eines Arrays.
+   Auch der Giftschaden durch die Wirkung einer Vergiftung wird hier
+   festgehalten.
+   Dieser Wert koennte z.B. wichtig sein, wenn man nach dem Tod eines
+   Lebewesens feststellen moechte, durch was es umgekommen ist.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_DAMAGE, P_LAST_DAMTIME, Defend(),
+   /std/living/combat.c, /std/living/life.c
+
+Last modified: Tue Jan 26 12:34:29 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_LAST_DEATH_PROPS b/doc/sphinx/man/props/P_LAST_DEATH_PROPS
new file mode 100644
index 0000000..7249dad
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_DEATH_PROPS
@@ -0,0 +1,32 @@
+
+P_LAST_DEATH_PROPS
+******************
+
+
+NAME
+====
+
+   P_LAST_DEATH_PROPS                "last_death_props"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt nach dem Tod eines Spielers ein Mapping mit
+   den Werte aller Properties, die im die() zurueckgesetzt werden.
+
+   Auf diese Weise kann ein Objekt auch im NotifyPlayerDeath() noch
+   auf die Werte zurueckgreifen, obwohl sie bereits geloescht sind.
+
+   Folgende Properties werden so gesichert:
+
+
+
+   P_POISON, P_FROG, P_ALCOHOL, P_DRINK, P_FOOD , P_BLIND, P_DEAF,
+   P_MAX_HANDS, P_PARA, P_NO_REGENERATION , P_HP, P_SP, P_LAST_DEATH_TIME
diff --git a/doc/sphinx/man/props/P_LAST_DEATH_TIME b/doc/sphinx/man/props/P_LAST_DEATH_TIME
new file mode 100644
index 0000000..669e7a1
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_DEATH_TIME
@@ -0,0 +1,21 @@
+
+P_LAST_DEATH_TIME
+*****************
+
+
+NAME
+====
+
+   P_LAST_DEATH_TIME                "last_death_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Der Zeitpunkt des letzten Todes des Spielers.
diff --git a/doc/sphinx/man/props/P_LAST_LOGIN b/doc/sphinx/man/props/P_LAST_LOGIN
new file mode 100644
index 0000000..4ad7360
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_LOGIN
@@ -0,0 +1,35 @@
+
+P_LAST_LOGIN
+************
+
+
+NAME
+====
+
+   P_LAST_LOGIN                  "last_login"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Zeitpunkt des letzten Logins
+
+
+BEMERKUNGEN
+===========
+
+   Gegen aeussere Aenderung und Set/QueryMethoden geschuetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_LOGOUT, save_me
+
+28. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_LAST_LOGOUT b/doc/sphinx/man/props/P_LAST_LOGOUT
new file mode 100644
index 0000000..e94e89e
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_LOGOUT
@@ -0,0 +1,39 @@
+
+P_LAST_LOGOUT
+*************
+
+
+NAME
+====
+
+   P_LAST_LOGOUT                 "last_logout"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Zeitpunkt des letzten Logouts. Anhand dieser Zeit werden die Feindes-
+   listen und in Abwesenheit eingefuegte Gegenstaende aktualisiert.
+
+   Dieses Datum wird bei Magiern nicht aktualisiert, wenn sie unsichtbar
+   sind/sich unsichtbar ausloggen.
+
+
+BEMERKUNGEN
+===========
+
+   Gegen aeussere Aenderung und Set/QueryMethoden geschuetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_LAST_LOGIN, P_INVIS, save_me, init, StopHuntFor
+
+28. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_LAST_MOVE b/doc/sphinx/man/props/P_LAST_MOVE
new file mode 100644
index 0000000..f6c974a
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_MOVE
@@ -0,0 +1,36 @@
+
+P_LAST_MOVE
+***********
+
+
+NAME
+====
+
+   P_LAST_MOVE                     "last_move"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird die Zeit der letzten Bewegung eines
+   Lebewesens festgehalten. Selbsterklaerend ist auch der dazugehoerige
+   Quellcode innerhalb move() in '/std/living/moving.c':
+     SetProp(P_LAST_MOVE,time());
+   Wichtig ist diese Property insbesondere fuer die Unterbindung von
+   Rein-Angriff-Raus-Taktiken. Dieser Modus ist standardmaessig in jedem
+   NPC aktiviert und kann ueber die Property P_ENABLE_IN_ATTACK_OUT
+   ausgeschalten werden.
+
+
+SIEHE AUCH
+==========
+
+   move(), time(), P_ENABLE_IN_ATTACK_OUT, /std/living/moving.c
+
+Last modified: Sat Jan 30 12:53:00 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_LAST_USE b/doc/sphinx/man/props/P_LAST_USE
new file mode 100644
index 0000000..57519c9
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_USE
@@ -0,0 +1,33 @@
+
+P_LAST_USE
+**********
+
+
+NAME
+====
+
+   P_LAST_USE "last_use"
+
+
+DEFINIERT IN
+============
+
+   <properties.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird in Ruestungen und Waffen dazu benutzt um
+   festzuhalten, wann die Ruestung/Waffe zuletzt im Kampf benutzt
+   wurde.
+
+
+SIEHE AUCH
+==========
+
+   Ruestungen:        QueryDefend(L)
+   Waffen:            QueryDamage(L)
+   Sonstiges:         P_EQUIP_TIME, P_UNWIELD_TIME
+
+Last modified: Fri Feb 06 10:15:00 1998 by Paracelsus
diff --git a/doc/sphinx/man/props/P_LAST_WEAR_ACTION b/doc/sphinx/man/props/P_LAST_WEAR_ACTION
new file mode 100644
index 0000000..5531955
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_WEAR_ACTION
@@ -0,0 +1,31 @@
+
+P_LAST_WEAR_ACTION
+******************
+
+
+PROPERTY
+========
+
+   P_LAST_WEAR_ACTION    "last_wear_action"
+
+DEFINIERT IN:
+
+   /sys/armour.h (und damit auch in properties.h)
+
+
+BESCHREIBUNG
+============
+
+   Diese Prop gibt an, welche An/Auszieh-Aktion ein Spieler zuletzt
+   durchgefuehrt hat. Sie ist ein zweielementiges Array, wobei der
+   erste Eintrag angibt, ob der Spieler sich an- oder ausgezogen
+   hat (WA_WEAR, WA_UNWEAR, auch in armour.h definiert) und der
+   zweite den Zeitpunkt.
+
+   Die Property wird (unter anderem?) dafuer verwendet festzustellen ob
+   der Spieler in der letzten Runde schon einen Ruestungswechsel
+   vorgenommen hat und einen entgegengesetzten zu unterbinden.
+
+LETZTE AENDERUNG:
+
+2003-01-29, 17:30 von Humni
diff --git a/doc/sphinx/man/props/P_LAST_XP b/doc/sphinx/man/props/P_LAST_XP
new file mode 100644
index 0000000..c31a8b4
--- /dev/null
+++ b/doc/sphinx/man/props/P_LAST_XP
@@ -0,0 +1,43 @@
+
+P_LAST_XP
+*********
+
+
+NAME
+====
+
+   P_LAST_XP                        "last_xp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array vom Typ ({ pfad, xp }).
+
+   Der Eintrag "pfad" gibt das Gebiet an, in dem ein Spieler zuletzt XP
+   bekommen hat. Dabei wird aus "/d/ebene/magier/room/raum1.c" dann
+   "/d/ebene/magier/room".
+
+   Der Wert "xp" zeigt an, wieviele XP der Spieler _in diesem Gebiet_
+   gesammelt hat. Sobald er auch nur einen XP in einem anderen Gebiet
+   bekommt, zeigt P_LAST_XP nur noch diesen neu erhaltenen XP an.
+
+   Der Anwendungszweck waere z.B. eine Heilstelle, die nur dann Wirkung
+   zeigt, wenn der Spieler wirklich in dem betreffenden Gebiet gemetzelt hat
+   und nicht nur zum Tanken hergerannt ist oder eine Unterscheidung, ob
+   jemand metzelt oder nur uebt (ueber die XP).
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp()
+   Verwandt:    P_NO_XP, P_XP
+
+14.Feb 2007 Gloinson
diff --git a/doc/sphinx/man/props/P_LEAVECMDS b/doc/sphinx/man/props/P_LEAVECMDS
new file mode 100644
index 0000000..5b0e03c
--- /dev/null
+++ b/doc/sphinx/man/props/P_LEAVECMDS
@@ -0,0 +1,56 @@
+
+P_LEAVECMDS
+***********
+
+
+NAME
+====
+
+   P_LEAVECMDS                   "leavecmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array mit Befehlen, die zum Verlassen des Transporters fuehren.
+
+
+BEISPIEL
+========
+
+   SetProp(P_LEAVECMDS,({ "verlass","verlasse" }) );
+
+   Gibt der Spieler nun 'verlasse xxx' ein, so sorgt /std/transport.c
+   dafuer, das der Spieler auch von oder aus dem Transporter bewegt
+   wird. Vorausgesetzt natuerlich, er ist an einem Haltepunkt angelangt.
+
+
+BEMERKUNGEN
+===========
+
+   Um /std/transport.c nicht aufzublaehen, werden weitere Argumente wie
+   etwa 'verlasse das|die|den xxx' _nicht_ unterstuetzt!
+
+   Hier muss der verantwortliche Magier schon eine eigene Loesung finden
+   und in seinen Transporter schreiben.
+
+   Sollen Kommandos zum Betreten UND Verlassen eines Transporters ver-
+   wendet werden koennen, muessen diese in P_TRAVEL_CMDS gesetzt werden.
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEFAIL, P_ENTERFAIL, P_ENTERCMDS, P_TRAVEL_CMDS, transporter,
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_LEAVEFAIL b/doc/sphinx/man/props/P_LEAVEFAIL
new file mode 100644
index 0000000..88e92ea
--- /dev/null
+++ b/doc/sphinx/man/props/P_LEAVEFAIL
@@ -0,0 +1,48 @@
+
+P_LEAVEFAIL
+***********
+
+
+NAME
+====
+
+   P_LEAVEFAIL                   "leavefail"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Spieler, wenn er ausserhalb der Anlegezeiten einen
+   Transporter verlassen will. Ist die Propertie ein Array, so wird
+   das erste Element als Meldung an den Spieler, das zweite als
+   Meldung an die Mitspieler im Transporter geschickt. Ist der Eintrag
+   dagegen ein simpler String, so wird die Meldung nur an den Spieler
+   ausgegeben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_LEAVEFAIL, "Die Wildgaense fliegen viel zu hoch" );
+
+   SetProp(P_LEAVEFAIL, ({ "Die Wildgaense fliegen viel zu hoch",
+                           "versucht, vom Ruecken der Wildgans zu "
+                          +"klettern und besinnt sich dann doch" }) );
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEMSG, P_ENTERMSG, P_ENTERFAIL, transporter
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_LEAVEMSG b/doc/sphinx/man/props/P_LEAVEMSG
new file mode 100644
index 0000000..a3a1baf
--- /dev/null
+++ b/doc/sphinx/man/props/P_LEAVEMSG
@@ -0,0 +1,38 @@
+
+P_LEAVEMSG
+**********
+
+
+NAME
+====
+
+   P_LEAVEMSG                    "leavemsg"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit zwei Meldungen. Der erste Eintrag wird an den Transporter
+   ausgegeben, der zweite an den Raum in den der Spieler kommt.
+
+
+BEISPIEL
+========
+
+   SetProp(P_LEAVEMSG, ({ "klettert vom Ruecken der Wildgans",
+                          "kommt vom Ruecken einer Wildgans herunter" }) );
+
+SIEHE AUCH:
+   P_ENTERMSG, P_LEAVEFAIL, P_ENTERFAIL, transporter
+
+
+LETZTE AENDERUNG
+================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_LEP b/doc/sphinx/man/props/P_LEP
new file mode 100644
index 0000000..dbcea68
--- /dev/null
+++ b/doc/sphinx/man/props/P_LEP
@@ -0,0 +1,22 @@
+
+P_LEP
+*****
+
+
+NAME
+====
+
+   P_LEP                         "lep"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Levelpunkte eines Spielers
+   NICHT VON HAND SETZEN!!!
diff --git a/doc/sphinx/man/props/P_LEVEL b/doc/sphinx/man/props/P_LEVEL
new file mode 100644
index 0000000..a4b804c
--- /dev/null
+++ b/doc/sphinx/man/props/P_LEVEL
@@ -0,0 +1,48 @@
+
+P_LEVEL
+*******
+
+
+NAME
+====
+
+   P_LEVEL                       "level"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Spieler-Level (!= Magierlevel)
+
+   In Krankheits- (CL_DISEASE) und Giftobjekten (CL_POISON) drueckt
+   P_LEVEL aus, wie schwer die Krankheit/das Gift ist. Je nachdem, wie
+   hoch oder niedrig der Level gesetzt wird, muss z.B. ein Kleriker mehr
+   oder weniger oft kurieren, um  eine (ggf. stufenweise) Heilung zu
+   bewirken.
+
+   In Fluchobjekten (CL_CURSE) gibt P_LEVEL ebenfalls die Schwere des
+   Fluches an, jedoch ist hier zu beachten, dass z.B. Kleriker aktuell
+   keine stufenweise Schwaechung bewirken koennen, sondern entweder den
+   Fluch entfernen koennen oder komplett scheitern.
+   Der Fluchlevel ist hier grob als Chance des Scheiterns in einem
+   Wertebereich von 1-100 zu sehen, was bedeutet, dass ein Fluchlevel
+   von 100 als permanenter, nicht entfernbarer Fluch anzusehen ist.
+
+   Genaueres ist in der Klerusgilde nachzulesen oder beim GM Klerus zu
+   erfragen.
+
+
+SIEHE AUCH
+==========
+
+   Properties:  P_GUILD_LEVEL
+   Allgemeines: /doc/wiz/gift, /doc/help/gift
+   Funktionen:  AddClass(L), is_class_member(L)
+
+Letzte Aenderung: 2015-Feb-02, Arathorn.
diff --git a/doc/sphinx/man/props/P_LIFETIME b/doc/sphinx/man/props/P_LIFETIME
new file mode 100644
index 0000000..4c76f14
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIFETIME
@@ -0,0 +1,51 @@
+
+P_LIFETIME
+**********
+
+
+NAME
+====
+
+   P_LIFETIME                    "std_food_lifetime"
+
+
+DEFINIERT IN
+============
+
+   /sys/food.h
+
+
+BESCHREIBUNG
+============
+
+   Zeit in Sekunden, die die Speise haltbar ist.
+   Mit Setzen dieser Property wird der Wert fuer P_RESET_LIFETIME und
+   dort gespeichert.
+   Nach dieser Zeit wird diese Speise schlecht und je nach Konfiguration
+   der Speise eventuell zerstoert. Sichergestellt wird dies durch den
+   Aufruf von reset() nach dieser Anzahl Sekunden.
+   Moechte man eine Speise haben, die niemals verdirbt
+   (genehmigungspflichtig!), nutzt man die Property P_NO_BAD
+
+
+BEMERKUNGEN
+===========
+
+   Sobald der Countdown zum Schlechtwerden der Speise laeuft, also ein
+   Spieler damit in Beruehrung kam, zeigt SetProp auf diese Property keine
+   Wirkung mehr.
+
+
+DEFAULT
+=======
+
+   Ohne Setzen von P_LIFETIME ,P_RESET_LIFETIME und P_NO_BAD verdirbt die
+   Speise nach einem Reset, also zwischen 30 und 60 Minuten
+
+
+SIEHE AUCH
+==========
+
+   wiz/food, P_RESET_LIFETIME, P_NO_BAD
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_LIGHT b/doc/sphinx/man/props/P_LIGHT
new file mode 100644
index 0000000..d0b55d8
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHT
@@ -0,0 +1,81 @@
+
+P_LIGHT
+*******
+
+
+NAME
+====
+
+   P_LIGHT                       "light"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Lichtlevel eines Objektes an, d.h. wie hell das Objekt von sich
+   aus leuchtet. Moechte man den gesamten Lichtlevel haben der von einem
+   Objekt ausgeht, so sollte man P_TOTAL_LIGHT nehmen, das den Inhalt eines
+   Containers direkt mit verrechnet.
+
+   Bitte _nur_ ueber SetProp bzw. QueryProp zugreifen, da es fuer die
+   Berechnung wichtig ist, das in allen Containern P_LAST_CONTENT_CHANGE
+   gesetzt wird um ein neuberechnen des Lichtlevels auszuloesen!
+
+
+ANMERKUNG
+=========
+
+   Um ein ungefaehres Gefuehl davon zu bekommen was ein Lichtlevel in
+   etwa bedeutet hier einige allgemeine Beispiele von Gegenstaenden.
+   Grundsaetzlich sollten Lichtlevel <0 und >2 nur in Ruecksprache mit dem
+   Balanceteam benutzt werden.
+
+   Lichtlevel -1,  z.B. ein schwarzer Ring, von dem eine kleine dunkle Aura
+                   ausgeht, die den Spieler umgibt.
+   Lichtlevel  0,  der Gegenstand beeinflusst das Licht ueberhaupt nicht
+   Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in Haenden,
+                   dieses kann ein Leuchtpfirsich, eine Fackel oder ein
+                   Feuerschwert oder aehnliches sein.
+   Lichtlevel  2,  eine etwas groessere Lichtquelle, die aber immer noch
+                   nicht den Raum beleuchtet sondern lediglich dem Spieler
+                   einen Lichtschein gewaehrt mit dem er sehen kann.
+   Lichtlevel >2,  extrem helle Lichtquellen, die den gesamten Raum
+                   ausleuchten, in der Regel wohl eher magischer Natur.
+                   Solche Lichtquellen sollten sich mit der Zeit
+                   verbrauchen, dem Spieler Schaden zufuegen oder
+                   aehnliches, damit die Spieler nicht defaultmaessig mit
+                   einer solchen Lichtquelle durchs MG ziehn.
+
+   Daraus ergeben sich dann folgende Konsequenzen fuer Raeume:
+   Lichtlevel  >1: Der Raum ist sehr hell erleuchtet und kann von Spielern
+                   nicht oder nur sehr schwer abgedunkelt werden. Ein Wert
+                   von 2-3 kann interessant sein, wenn die NPCs im Raum
+                   ueber keine Nachtsicht verfuegen. Ueber ein Abdunkeln des
+                   Raumes kann der Spieler dann doch den Nachtkampf nutzen.
+   Lichtlevel   1: Der Raum ist erleuchtet und die Spieler koennen ohne
+                   weitere Lichtquellen sehen...
+   Lichtlevel   0: Ein dunkler Raum in dem man mit jeder Fackel sehen kann.
+   Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht
+                   um in diesem Raum etwas sehen zu koennen.
+   Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle um in
+                   diesem Raum noch etwas sehen zu koennen. Solche
+                   Lichtquellen sind nichts fuer Anfaenger oder mittlere
+                   Spieler da sie schwer zu beschaffen und in der Regel
+                   auch einige Handicaps haben.
+   Lichtlevel <-2: Der Raum ist wirklich absolut stockduster und
+                   Lichtquellen die solch einen Raum ausleuchten koennen,
+                   sind ausserordentlich selten und haben immer ihre
+                   Tuecken. Diese Lichtlevel sollten nur mit Vorsicht
+                   genossen werden.
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/sphinx/man/props/P_LIGHTDESC b/doc/sphinx/man/props/P_LIGHTDESC
new file mode 100644
index 0000000..e8c52d1
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHTDESC
@@ -0,0 +1,56 @@
+
+P_LIGHTDESC
+***********
+
+
+NAME
+====
+
+   P_LIGHTDESC                   "lightdesc"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   String oder Array von Strings mit Adjektiven, die das Leuchten der
+   Lichtquelle beschreiben (z.B. leuchtend, brennend, gluehend).
+   Standardmaessig ist die Property auf "brennend" gesetzt.
+
+   Wenn ein Array angegeben wird, werden die Beschreibungen passend auf
+   die Benndauer aufgeteilt und das zur aktuell noch vorhandenen Rest-
+   Brenndauer passende Adjektiv ausgegeben. Das Array wird dabei rueck-
+   aerts durchlaufen, d.h. fuer eine frisch entzuendete Lichtquelle wird
+   der letzte Eintrag des Arrays verwendet (s. Beispiele).
+
+
+BEISPIELE
+=========
+
+   Eine einfache Oellampe:
+
+   SetProp(P_LIGHTDESC, "angezuendet");
+
+   Eine Fackel mit mehreren Brennstadien (aus /items/fackel.c):
+
+   SetProp(P_LIGHTDESC, ({"glimmend","flackernd","leicht flackernd",
+                        "brennend","hell lodernd","frisch angezuendet"}));
+
+
+SIEHE AUCH
+==========
+
+   Basisklassen: /std/lightsource.c
+   Properties:   P_FUEL, P_DO_DESTRUCT, P_LIGHT
+   Methoden:     AddFuel(L)
+
+
+LETZTE AENDERUNG
+================
+
+   22. Dez. 2015, Arathorn
diff --git a/doc/sphinx/man/props/P_LIGHTED b/doc/sphinx/man/props/P_LIGHTED
new file mode 100644
index 0000000..31d7709
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHTED
@@ -0,0 +1,21 @@
+
+P_LIGHTED
+*********
+
+
+NAME
+====
+
+   P_LIGHTED                     "lighted"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Flag, ob die Lichtquelle in Betrieb ist.
diff --git a/doc/sphinx/man/props/P_LIGHT_ABSORPTION b/doc/sphinx/man/props/P_LIGHT_ABSORPTION
new file mode 100644
index 0000000..4443a98
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHT_ABSORPTION
@@ -0,0 +1,31 @@
+
+P_LIGHT_ABSORPTION
+******************
+
+
+NAME
+====
+
+   P_LIGHT_ABSORPTION                  "light_absorption"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   In Raeumen verteilt sich aufgrund ihrer Groesse das Licht und gerade in
+   groesseren Raeumen kann eine kleine Fackel unter Umstaenden nicht mehr
+   ausreichen den gesamten Raum auszuleuchten. In diesem Fall kann man
+   ueber diese Property das Verhalten des Lichts steuern.
+   Ein "normaler" durchschnittlicher Raum hat hier den Defaultwert 1.
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/sphinx/man/props/P_LIGHT_MODIFIER b/doc/sphinx/man/props/P_LIGHT_MODIFIER
new file mode 100644
index 0000000..c7741ee
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHT_MODIFIER
@@ -0,0 +1,75 @@
+
+P_LIGHT_MODIFIER
+****************
+
+
+NAME
+====
+
+   P_LIGHT_MODIFIER                     "light_modifier"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Veraendert das Lichtlevel das von einem Lebewesen wahrgenommen wird.
+   Der Wert dieser Property wird additiv in P_PLAYER_LIGHT beruecksichtigt.
+   Es ist hiermit z.B. moeglich eine Sonnenbrille zu programmieren, diese
+   veraendert ja nicht das tatsaechliche Lichtlevel, sondern verdunkelt nur
+   die Sicht.
+
+
+ANMERKUNG
+=========
+
+   Damit NPCs in der Lage sind solche Gegenstaende richtig einzuschaetzen,
+   sollte diese Property in jedem Gegenstand der einen Light-Modifier setzt,
+   auch gesetzt sein. Das veraendern dieser Property in Spielern durch NPCs
+   oder Gegenstaende ist selbstverstaendlich genehmigungspflichtig.
+
+
+BEISPIELE
+=========
+
+   // Ein NPC der auch in relativ dunklen Raeumen mit Lichtlevel -2
+   // noch sehen kann...
+   create_default_npc(10);
+   SetProp(P_LIGHT_MODIFIER, 3);
+
+   // Eine Sonnenbrille, die das Lichtlevel um eins senkt.
+
+   create()
+   {
+
+      :
+
+      SetProp(P_ARMOUR_TYPE, AT_GLASSES);
+      SetProp(P_LIGHT_MODIFIER, -1);
+
+      :
+
+   }
+
+   // Achtung: Falls pl Query- oder Set-Methoden auf P_LIGHT_MODIFIER hat,
+   // wird diese Methode hier furchtbar schief gehen und im besten Fall
+   // nichts veraendern. In realen Objekten empfiehlt sich zumindest eine
+   // Pruefung im Vorfeld, ob eine Query-/Set-Methode gesetzt ist.
+   protected void InformWear(object pl, int silent, int all) {
+       pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) -1);
+   }
+
+   protected void InformUnwear(object pl, int silent, int all) {
+       pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) +1);
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/sphinx/man/props/P_LIGHT_TRANSPARENCY b/doc/sphinx/man/props/P_LIGHT_TRANSPARENCY
new file mode 100644
index 0000000..42d0d13
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHT_TRANSPARENCY
@@ -0,0 +1,30 @@
+
+P_LIGHT_TRANSPARENCY
+********************
+
+
+NAME
+====
+
+   P_LIGHT_TRANSPARENCY             "light_transparency"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Wieviel Licht schluckt ein Container, d.h. wieviel Licht dringt aus
+   einem Behaelter noch nach draussen. Bei Containern die _nicht_
+   transparent sind, liefert eine _query_method hier immer 999 zurueck.
+   Defaultmaessig steht diese Property auf 2.
+
+
+SIEHE AUCH
+==========
+
+   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/sphinx/man/props/P_LIGHT_TYPE b/doc/sphinx/man/props/P_LIGHT_TYPE
new file mode 100644
index 0000000..47abbf4
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIGHT_TYPE
@@ -0,0 +1,106 @@
+
+P_LIGHT_TYPE
+************
+
+
+NAME
+====
+
+   P_LIGHT_TYPE                       "light_type"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, was fuer ein Licht in einem Objekt vorherrscht.
+
+
+
+   Es sind verschiedene 'atomare' Lichttypen, vordefiniert:
+   LT_MISC         Unbestimmt, keine Angaben.
+
+   LT_SUN          Sonnenlicht.
+   LT_MOON         Mondlicht
+   LT_STARS        Sternenlicht.
+
+
+
+   LT_DIFFUSE      Indirektes Tageslicht. (z.B. im Wald)
+
+   LT_CANDLE       Kerzenlicht.
+   LT_TORCH        Fackelschein.
+   LT_OPEN_FIRE    Sonstiges offenes Feuer. (Lagerfeuer etc.)
+
+
+
+   LT_MAGIC        Irgendeine magische Lichtquelle.
+
+   LT_GLOWING      Eine selbstleuchtende Lichtquelle.
+
+   LT_DARKNESS     Kein wirkliches Licht, aber auch Dunkelheit soll
+                   explizit gesetzt werden koennen.
+
+   In einem Objekt koennen mehrere Lichttypen gesetzt werden. Dies
+   geschieht durch logische Oder-Verknuepfungen, siehe man operators.
+
+   Wenn in einem Raum mehr als ein Lichttyp gesetzt ist, bedeutet das,
+   normalerweise, dass mehrere Lichtquellen verschiedenen Typs im Raum
+   sind.
+
+   Es gibt zudem noch Lichttypen, die zusammengesetzt sind:
+
+   LT_DAYLIGHT    Tageslicht (Sonne/Diffuse)
+   LT_NATURAL     Natuerliches Licht (Daylight/Sterne/Mond)
+   LT_ARTIFICIAL  Kuenstliches Licht (Magie/Feuer/Gluehen)
+   LT_FIRE        Feuer (Kerzen/Fackeln/offenes Feuer)
+
+
+BEISPIELE
+=========
+
+   Ein Objekt soll ein geheimnisvolles Gluehen von sich geben:
+
+
+
+   objekt->SetProp( P_LIGHT_TYPE, LT_GLOWING )
+
+   Soll ein Raum beschrieben werden, der durch Sternenlicht erhellt ist,
+   in dem aber zusaetzlich noch ein Lagerfeuer brennt, sieht die Syntax
+   folgendermassen aus:
+
+
+
+   raum->SetProp( P_LIGHT_TYPE, LT_STARS|LT_OPEN_FIRE );
+
+   Einer brennenden Hose kann der Lichttyp fuer offenes Feuer mitgegeben
+   werden. Es muss jedoch nicht zwingend der Lichttyp fuer magische
+   Lichtquellen benutzt werden. Es ist klar, dass es irgendwas mit Magie
+   zu tun hat, wenn brennende Spieler durch die Gegend laufen, ohne zu
+   schreien. P_LIGHT_TYPE sollte jedoch das fassbare Licht beschreiben.
+   LT_MAGIC ist also eher eine Notloesung fuer Licht, dessen Ursache man
+   nicht erklaeren kann.
+
+
+ANMERKUNG
+=========
+
+   P_LIGHT_TYPE dient ausschliesslich der Beschreibung des Lichtes, das
+   vorherrscht. Es ist nicht verbunden mit dem Lichtsystem, und soll es
+   auch nicht werden.
+
+   Die Empfindlichkeit der Dunkelelfen gegen Sonnenlicht wird ueber diese
+   Property gesteuert. Soll ein Raum mit (P_INDOORS==0) so dunkel sein, dass
+   sie nicht in Gefahr sind, sollten nicht LT_MISC oder LT_SUN gesetzt
+   sein.
+
+
+SIEHE AUCH
+==========
+
+   CheckLightType, /std/thing/description.h, operators
diff --git a/doc/sphinx/man/props/P_LIQUID b/doc/sphinx/man/props/P_LIQUID
new file mode 100644
index 0000000..55672bb
--- /dev/null
+++ b/doc/sphinx/man/props/P_LIQUID
@@ -0,0 +1,21 @@
+
+P_LIQUID
+********
+
+
+NAME
+====
+
+   P_LIQUID                      "w_max_wasserfuellmenge"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_LOCALCMDS b/doc/sphinx/man/props/P_LOCALCMDS
new file mode 100644
index 0000000..02a3c2a
--- /dev/null
+++ b/doc/sphinx/man/props/P_LOCALCMDS
@@ -0,0 +1,25 @@
+
+P_LOCALCMDS
+***********
+
+
+NAME
+====
+
+   P_LOCALCMDS                   "localcmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array von Arrays aller Befehle die im Spieler selbst definiert sind.
+   ({ ({ "befehl", "funktion", flag, wizlevel }) })
+   Wenn flag gesetzt ist werden nur die ersten Zeichen die auch in Befehl
+   angegeben sind mit dem Verb ueberprueft. Siehe auch
+   add_action("funktion", "befehl", 1) und AddCmd("befehl", "funktion", 1).
diff --git a/doc/sphinx/man/props/P_LOCATION b/doc/sphinx/man/props/P_LOCATION
new file mode 100644
index 0000000..cf2ed6c
--- /dev/null
+++ b/doc/sphinx/man/props/P_LOCATION
@@ -0,0 +1,32 @@
+
+P_LOCATION
+**********
+
+
+NAME
+====
+
+   P_LOCATION                   "location"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Hier kann der Spieler mit dem Befehl "ort" den Ort setzen,
+   von dem er kommt bzw. zu kommen glaubt ;)
+   Um wieder den automatisch ermittelten Ort anzuzeigen, ist
+   P_LOCATION auf 0 zu setzen.
+
+
+SIEHE AUCH
+==========
+
+   ort
+
+Last modified: Sat Jul 01 23:16:00 2000 by Mupfel
diff --git a/doc/sphinx/man/props/P_LOG_INFO b/doc/sphinx/man/props/P_LOG_INFO
new file mode 100644
index 0000000..0ed186d
--- /dev/null
+++ b/doc/sphinx/man/props/P_LOG_INFO
@@ -0,0 +1,55 @@
+
+P_LOG_INFO
+**********
+
+
+NAME
+====
+
+   P_LOG_INFO                    "log_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist wird jede Frage, die ein
+   Monster nicht beantworten kann, im Report-File des
+   zustaendigen Magiers geloggt.
+
+   Es ist jedoch auch moeglich, direkt einen Filenamen anzugeben.
+   Bei diesen wird dann jedoch automatisch ein /log/ vorne angehaengt.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_LOG_INFO,1);           // Alle fehlenden Infos dieses
+                                       Monsters werden in das Report-
+                                       File unter /log/report/ gelogt.
+
+   SetProp(P_LOG_INFO,"tilly/opa"); // Alle fehlenden Infos dieses
+                                       Monsters werden in das File
+                                       monster unter /log/tilly/ ge-
+                                       logt.
+
+
+BEMERKUNGEN
+===========
+
+   Bei nachtraeglich angeschlossenen Monstern empfiehlt sich Variante
+   2 der Beispiele. Ein muehsames Suchen (und Loeschen) der fehlenden
+   Infos des Monsters im Report-File eruebrigt sich dann naemlich.
+
+
+SIEHE AUCH
+==========
+
+   P_LOG_FILE, write_file(), log_file(), AddInfo
+
+Letzte Aenderung: 13.09.04 Tilly@MorgenGrauen
diff --git a/doc/sphinx/man/props/P_LONG b/doc/sphinx/man/props/P_LONG
new file mode 100644
index 0000000..bad7968
--- /dev/null
+++ b/doc/sphinx/man/props/P_LONG
@@ -0,0 +1,48 @@
+
+P_LONG
+******
+
+
+NAME
+====
+
+   P_LONG                                     "long"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Die Langbeschreibung des Objektes als String oder Closure (diese muss
+   einen String zurueckgeben). Die Langbeschreibung wird beim Untersuchen
+   des Objektes ausgegeben. Sie sollte umgebrochen sein.
+
+   Diese Property bestimmt die Ansicht des Objektes von aussen. Fuer die
+   Innen(lang)ansicht von Raeumen muss man P_INT_LONG benutzen.
+
+
+BEMERKUNGEN
+===========
+
+   - long() ("untersuche") filtert P_LONG durch process_string()
+     -> daher sind Closures moeglich
+
+
+BEISPIELE
+=========
+
+   SetProp(P_LONG, "Diese Axt ist eine furchtbare Waffe!\n");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_SHORT, long()
+   Sonstiges:         P_INT_LONG, process_string(), break_string()
+
+Last modified: Sun May 19 20:10:18 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_LONG_EMPTY b/doc/sphinx/man/props/P_LONG_EMPTY
new file mode 100644
index 0000000..cac74e0
--- /dev/null
+++ b/doc/sphinx/man/props/P_LONG_EMPTY
@@ -0,0 +1,21 @@
+
+P_LONG_EMPTY
+************
+
+
+NAME
+====
+
+   P_LONG_EMPTY                  "w_longdesc_empty"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_LONG_FULL b/doc/sphinx/man/props/P_LONG_FULL
new file mode 100644
index 0000000..7de6081
--- /dev/null
+++ b/doc/sphinx/man/props/P_LONG_FULL
@@ -0,0 +1,21 @@
+
+P_LONG_FULL
+***********
+
+
+NAME
+====
+
+   P_LONG_FULL                   "w_longdesc_full"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_MAGIC b/doc/sphinx/man/props/P_MAGIC
new file mode 100644
index 0000000..8994533
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAGIC
@@ -0,0 +1,21 @@
+
+P_MAGIC
+*******
+
+
+NAME
+====
+
+   P_MAGIC                       "magic"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Dieses Objekt ist magisch.
diff --git a/doc/sphinx/man/props/P_MAGIC_RESISTANCE_OFFSET b/doc/sphinx/man/props/P_MAGIC_RESISTANCE_OFFSET
new file mode 100644
index 0000000..8d270e3
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAGIC_RESISTANCE_OFFSET
@@ -0,0 +1,52 @@
+
+P_MAGIC_RESISTANCE_OFFSET
+*************************
+
+
+NAME
+====
+
+   P_MAGIC_RESISTANCE_OFFSET                     "mag_res_offset"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit ganzzahligen Prozentwerten in 0.01%-Schritten
+   (0-10000) zur Resistenz/Empfindlichkeit gegen bestimmte
+   Magieklassen.
+
+   Die Property wird in der Methode SpellDefend() ausgewertet und
+   fuer einen auf den NPC/Spieler gesprochenen Spell werden die
+   Werte fuer all dessen Magieklassen aufaddiert. Daher sind auch
+   negative Werte fuer einzelne Magieklassen sinnvoll.
+
+   P_MAGIC_RESISTANCE_OFFSET und SpellDefend werden von den Spellbooks
+   ausgewertet. Der Einfluss ist daher abhaengig vom Spellbook.
+
+
+BEISPIELE
+=========
+
+   // Goblins
+   SetProp(P_MAGIC_RESISTANCE_OFFSET,
+             ([MT_ANGRIFF:600,         // 6% Resistenz gegen Angriff
+               MT_ILLUSION:500,        // 6% Resistenz gegen Illusionen
+               MT_VERWANDLUNG:-300,    // 3% Empfindlichkeit
+               MT_HELLSICHT:-750,      // 7.5% Empfindlichkeit
+               MT_BEHERRSCHUNG:250])); // 2.5% Resistenz
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:     SpellDefend
+   Aehnlich:     P_NOMAGIC
+
+29.Dez 2007 Gloinson
diff --git a/doc/sphinx/man/props/P_MAILADDR b/doc/sphinx/man/props/P_MAILADDR
new file mode 100644
index 0000000..32556a7
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAILADDR
@@ -0,0 +1,21 @@
+
+P_MAILADDR
+**********
+
+
+NAME
+====
+
+   P_MAILADDR                    "mailaddr"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   EMailadresse des Spielers.
diff --git a/doc/sphinx/man/props/P_MAP_RESTRICTIONS b/doc/sphinx/man/props/P_MAP_RESTRICTIONS
new file mode 100644
index 0000000..ee9e620
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAP_RESTRICTIONS
@@ -0,0 +1,56 @@
+
+P_MAP_RESTRICTIONS
+******************
+
+
+NAME
+====
+
+   P_MAP_RESTRICTIONS                      "lib_p_map_restrictions"
+
+
+DEFINIERT IN
+============
+
+   /sys/rooms.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Property laesst sich beeinflussen, welche Informationen ueber
+   den Raum das Morgengrauen dem Client zukommen laesst (zur Zeit nur via
+   GMCP, aber es mag irgendwann auch andere Wege geben).
+   Beispielsweise sollen vielleicht in einem Labyrinth keine eindeutigen
+   Raum-IDs uebermittelt werden.
+
+   Als Werte duerfen alle MR_-Konstanten aus <rooms.h> verwendet werden.
+   Diese duerfen auch ver-ODER-t werden, wenn mehr als eine davon gelten
+   soll.
+
+   Moegliche Werte:
+     MR_NOUID - verhindert, dass die eindeutige Raum-ID uebertragen wird.
+     MR_NOINFO - verhindert, dass ueberhaupt irgendetwas an den Client
+                 uebermittelt wird. Damit kriegt er ggf. auch nicht mit,
+                 dass er Raum gewechselt wurde. Ist fuer Sequenzraeume
+                 gedacht. Bitte SEHR sparsam einsetzen.
+
+   Die Verwendung dieser Property sollte der Ausnahmefall sein!
+
+
+BEISPIEL
+========
+
+   (in einem Raum)
+   SetProp(P_MAP_RESTRICTIONS, MR_NOUID);
+
+   Nun bekommt der Client zwar die Kurzbeschreibung des Raums, die Region
+   und die sichtbaren Ausgaenge, aber keine UID mehr uebermittelt.
+
+
+SIEHE AUCH
+==========
+
+   gmcp
+
+23.02.2013, Zesstra
diff --git a/doc/sphinx/man/props/P_MARRIED b/doc/sphinx/man/props/P_MARRIED
new file mode 100644
index 0000000..7cafa6f
--- /dev/null
+++ b/doc/sphinx/man/props/P_MARRIED
@@ -0,0 +1,28 @@
+
+P_MARRIED
+*********
+
+
+NAME
+====
+
+   P_MARRIED                     "married"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String mit der uid des Partners
+   (sofern vorhanden)
+
+
+SIEHE AUCH
+==========
+
+   scheidung
diff --git a/doc/sphinx/man/props/P_MATERIAL b/doc/sphinx/man/props/P_MATERIAL
new file mode 100644
index 0000000..4ea4032
--- /dev/null
+++ b/doc/sphinx/man/props/P_MATERIAL
@@ -0,0 +1,99 @@
+
+P_MATERIAL
+**********
+
+
+NAME
+====
+
+   P_MATERIAL                                 "material"
+
+
+DEFINIERT IN
+============
+
+   <thing/material.h>
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt
+   besteht.
+
+
+BEMERKUNGEN
+===========
+
+   Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder
+   ein Array aus Materialien angeben. Die Anteile werden dann
+   gleichmaessig verteilt.
+
+
+BEISPIELE
+=========
+
+   // 100% Eis
+   SetProp(P_MATERIAL, MAT_ICE);
+   // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])
+
+   // 50% Eis, 50% Misc-Holz
+   SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
+   // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])
+
+   // 60% Eis, 40% Misc-Holz
+   SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));
+
+   // 100% Papier
+   SetProp(P_MATERIAL, MAT_PAPER);
+   // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])
+
+   // 50% Silber, 50% Gold
+   SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
+   // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])
+
+   // ein weiser Schmied, der was daraus macht:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% gut erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
+                      ({MATGROUP_METAL, 100})])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
+     }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_MATERIAL_KNOWLEDGE b/doc/sphinx/man/props/P_MATERIAL_KNOWLEDGE
new file mode 100644
index 0000000..0694fef
--- /dev/null
+++ b/doc/sphinx/man/props/P_MATERIAL_KNOWLEDGE
@@ -0,0 +1,56 @@
+
+P_MATERIAL_KNOWLEDGE
+********************
+
+
+NAME
+====
+
+   P_MATERIAL_KNOWLEDGE                               "material_knowledge"
+
+
+DEFINIERT IN
+============
+
+   <thing/material.h>
+
+
+BESCHREIBUNG
+============
+
+   Mapping, Closure oder Integer mit Regeln zur Materialienerkennung. Die
+   Regeln sind in "man materialerkennung" zu lesen.
+
+   Diese werden bei Angabe eines Spielerobjektes in MaterialList() oder
+   MaterialName() an diesem abgefragt und hat Einfluss darauf, ob ein
+   Material genau, generell oder gar nicht erkannt wird.
+
+   In den einzelnen Rassenshells sind Defaultwerte dafuer angegeben.
+
+
+BEISPIELE
+=========
+
+   // Erkennungsbonus auf diverse Materialgruppen und
+   // Erkennungsbonus/-malus auf biologische/nichtbiologische Materialien
+   SetProp(P_MATERIAL_KNOWLEDGE,
+      ([MATGROUP_WOOD:20,
+        MATGROUP_METAL:20,
+        MATGROUP_ELEMENTAL:20,
+        MATGROUP_CLOTH:20,
+        MATERIAL_SYMMETRIC_RECOGNIZABILITY: ({MATGROUP_BIO,5})]));
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+
+7. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_MAX_ALCOHOL b/doc/sphinx/man/props/P_MAX_ALCOHOL
new file mode 100644
index 0000000..541972f
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_ALCOHOL
@@ -0,0 +1,39 @@
+
+P_MAX_ALCOHOL
+*************
+
+
+NAME
+====
+
+   P_MAX_ALCOHOL                   "max_alcohol"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer den maximalen Grad der Betrunkenheit eines
+   Lebewesens.
+
+
+ANMERKUNGEN
+===========
+
+   Der Wert von P_MAX_ALCOHOL ist bei den einzelnen Rassen verschieden,
+   ebenso wie der fuer P_ALCOHOL_DELAY. Die genauen Werte stehen in den
+   Rassen-Shells (/std/shells).
+
+
+SIEHE AUCH
+==========
+
+   P_ALCOHOL, P_ALCOHOL_DELAY, drink_alcohol,
+   P_MAX_FOOD, P_MAX_DRINK
+
+Last modified: Tue Dec 18 12:16:10 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_MAX_DRINK b/doc/sphinx/man/props/P_MAX_DRINK
new file mode 100644
index 0000000..33fdeb8
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_DRINK
@@ -0,0 +1,39 @@
+
+P_MAX_DRINK
+***********
+
+
+NAME
+====
+
+   P_MAX_DRINK                     "max_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die maximale Saettigung eines Lebewesens mit
+   Getraenken.
+
+
+ANMERKUNGEN
+===========
+
+   Der Wert von P_MAX_DRINK ist bei den einzelnen Rassen verschieden,
+   ebenso wie der fuer P_DRINK_DELAY. Die genauen Werte stehen in den
+   Rassen-Shells (/std/shells).
+
+
+SIEHE AUCH
+==========
+
+   P_DRINK, P_DRINK_DELAY, drink_soft,
+   P_MAX_FOOD, P_MAX_ALCOHOL
+
+Last modified: Tue Dec 18 12:16:10 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_MAX_FOOD b/doc/sphinx/man/props/P_MAX_FOOD
new file mode 100644
index 0000000..fa7f661
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_FOOD
@@ -0,0 +1,38 @@
+
+P_MAX_FOOD
+**********
+
+
+NAME
+====
+
+   P_MAX_FOOD                      "max_food"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die maximale Saettigung eines Lebewesens.
+
+
+ANMERKUNGEN
+===========
+
+   Der Wert von P_MAX_FOOD ist bei den einzelnen Rassen verschieden,
+   ebenso wie der fuer P_FOOD_DELAY. Die genauen Werte stehen in den
+   Rassen-Shells (/std/shells).
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_FOOD_DELAY, eat_food,
+   P_MAX_DRINK, P_MAX_ALCOHOL
+
+Last modified: Tue Dec 18 12:16:10 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_MAX_HANDS b/doc/sphinx/man/props/P_MAX_HANDS
new file mode 100644
index 0000000..4c65afa
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_HANDS
@@ -0,0 +1,45 @@
+
+P_MAX_HANDS
+***********
+
+
+NAME
+====
+
+   P_MAX_HANDS                   "max_hands"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Haende, die ein Wesen hat.
+
+
+BEMERKUNGEN
+===========
+
+   An dieser Propertie sollte bei Spielern nur im Rahmen der
+   Gilden 'gespielt' werden.
+
+   Fuer Magier, die in ihren Npc gerne alle Properties setzen,
+   gilt folgendes:
+
+                Setzt diese Propertie NIE auf 0 !
+
+   Ohne Haende wird kein Npc irgendeinen Spieler angreifen koennen.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+
+1.Feb.2004 Gloinson
diff --git a/doc/sphinx/man/props/P_MAX_HP b/doc/sphinx/man/props/P_MAX_HP
new file mode 100644
index 0000000..fcb3cb0
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_HP
@@ -0,0 +1,30 @@
+
+P_MAX_HP
+********
+
+
+NAME
+====
+
+   P_MAX_HP                      "max_hp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Anzahl der Lebenspunkte.
+
+
+SIEHE AUCH
+==========
+
+   Props:     P_HP
+   Verwandt:  UpdateAttributes()
+
+21.April 2006 Gloinson
diff --git a/doc/sphinx/man/props/P_MAX_OBJECTS b/doc/sphinx/man/props/P_MAX_OBJECTS
new file mode 100644
index 0000000..68c008f
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_OBJECTS
@@ -0,0 +1,44 @@
+
+P_MAX_OBJECTS
+*************
+
+
+NAME
+====
+
+   P_MAX_OBJECTS                  "max_objects"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Anzahl an Objekten, die in einen Container passen.
+   P_MAX_OBJECTS sollte im Normfall zwischen 0 - 100 liegen.
+
+
+BEMERKUNGEN
+===========
+
+   Soll es sich um einen herausragenden Container handeln, der zum
+   Beispiel das Gewicht um mehr als 50% reduziert, sollte P_MAX_OBJECTS
+   einen kleineren Wert haben. Das Verhaeltnis von P_MAX_WEIGHT,
+   P_WEIGHT_PERCENT und dieser Property sollte stimmen.
+
+
+BEISPIELE
+=========
+
+   Als Beispiel sollte man sich das Postpaket ansehen und sich an dessen
+   Werten orientieren (/p/service/loco/obj/parcel).
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_WEIGHT, P_WEIGHT_PERCENT, P_LIGHT_TRANSPARENCY, container
diff --git a/doc/sphinx/man/props/P_MAX_PASSENGERS b/doc/sphinx/man/props/P_MAX_PASSENGERS
new file mode 100644
index 0000000..32e5f27
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_PASSENGERS
@@ -0,0 +1,22 @@
+
+P_MAX_PASSENGERS
+****************
+
+
+NAME
+====
+
+   P_MAX_PASSENGERS              "maxpass"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert fuer die maximale Anzahl von Wesen in dem Transporter.
+   0 bedeutet unbeschaenkte Spielerzahl.
diff --git a/doc/sphinx/man/props/P_MAX_POISON b/doc/sphinx/man/props/P_MAX_POISON
new file mode 100644
index 0000000..0d39dc4
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_POISON
@@ -0,0 +1,21 @@
+
+P_MAX_POISON
+************
+
+
+NAME
+====
+
+   P_MAX_POISON                  "max_poison"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Vergiftung
diff --git a/doc/sphinx/man/props/P_MAX_SP b/doc/sphinx/man/props/P_MAX_SP
new file mode 100644
index 0000000..7f7aa43
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_SP
@@ -0,0 +1,30 @@
+
+P_MAX_SP
+********
+
+
+NAME
+====
+
+   P_MAX_SP                      "max_sp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Maximale Anzahl der Magiepunkte.
+
+
+SIEHE AUCH
+==========
+
+   Props:     P_SP
+   Verwandt:  UpdateAttributes()
+
+21.April 2006 Gloinson
diff --git a/doc/sphinx/man/props/P_MAX_WEIGHT b/doc/sphinx/man/props/P_MAX_WEIGHT
new file mode 100644
index 0000000..abd0942
--- /dev/null
+++ b/doc/sphinx/man/props/P_MAX_WEIGHT
@@ -0,0 +1,38 @@
+
+P_MAX_WEIGHT
+************
+
+
+NAME
+====
+
+   P_MAX_WEIGHT                  "max_weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Maximales Gewicht in Gramm, das in dem Container verstaut werden
+   kann.
+
+
+BEMERKUNGEN
+===========
+
+   Das Verhaeltnis von P_WEIGHT_PERCENT, P_MAX_OBJECTS und dieser Property
+   sollte stimmen. Eine feste Grenze gibt es nicht. Als Beispiel kann
+   das Postpaket von Loco unter /p/servive/loco/obj herangezogen werden.
+   Bessere Werte als in diesem sollte es nicht, und wenn doch nur gut be-
+   gruendet, geben.
+
+
+SIEHE AUCH
+==========
+
+   P_WEIGHT_PERCENT, P_MAX_OBJECTS, P_LIGHT_TRANSPARENCY, container
diff --git a/doc/sphinx/man/props/P_MESSAGE_BEEP b/doc/sphinx/man/props/P_MESSAGE_BEEP
new file mode 100644
index 0000000..6ecf718
--- /dev/null
+++ b/doc/sphinx/man/props/P_MESSAGE_BEEP
@@ -0,0 +1,38 @@
+
+P_MESSAGE_BEEP
+**************
+
+
+NAME
+====
+
+   P_MESSAGE_BEEP                        "message_beep"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Wertebereich: int=0..3600 (Sekunden)
+   Wenn gesetzt wird in der Kommunikation des Spielers in den angegebenen
+   Zeitraeumen ein Signalton ausgegeben. Wird in player/comm.c in comm_beep()
+   verarbeitet.
+   Ausgabe erfolgt nur, wenn P_VISUALBELL nicht gesetzt ist.
+   Wird im Spielerobjekt gespeichert!
+
+
+SIEHE AUCH
+==========
+
+   klingelton, ton, P_VISUALBELL, P_MESSAGE_LAST_BEEP
+
+
+LETZTE AENDERUNG
+================
+
+   16. Mai 2007  Ennox
diff --git a/doc/sphinx/man/props/P_MESSAGE_PREPEND b/doc/sphinx/man/props/P_MESSAGE_PREPEND
new file mode 100644
index 0000000..be54d65
--- /dev/null
+++ b/doc/sphinx/man/props/P_MESSAGE_PREPEND
@@ -0,0 +1,37 @@
+
+P_MESSAGE_PREPEND
+*****************
+
+
+NAME
+====
+
+   P_MESSAGE_PREPEND                        "message_prepend"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Wertebereich: int = 0,1
+   Wenn vom Ziel eingeschaltet, wird von teile mit (_tell) und sag (_communicate) das
+   BS_PREPEND_INDENT Flag fuer break_string genutzt, um den Indent (Sender) ggf.
+   vor dem Textblock anzuzeigen.
+   Wird im Spielerobjekt gespeichert!
+
+
+SIEHE AUCH
+==========
+
+   grafik aus, break_string, senderwiederholung
+
+
+LETZTE AENDERUNG
+================
+
+   16. Mai 2007  Ennox
diff --git a/doc/sphinx/man/props/P_MIN_STOCK b/doc/sphinx/man/props/P_MIN_STOCK
new file mode 100644
index 0000000..3be8d4e
--- /dev/null
+++ b/doc/sphinx/man/props/P_MIN_STOCK
@@ -0,0 +1,55 @@
+
+P_MIN_STOCK
+***********
+
+
+NAME
+====
+
+   P_MIN_STOCK                     "min_stock"
+
+
+DEFINIERT IN
+============
+
+   /sys/bank.h
+
+
+BESCHREIBUNG
+============
+
+   P_MIN_STOCK enthaelt die Anzahl an Objekten, die ein Lager eines
+   Ladens minimal behaelt. Standardmaessig entspricht dies 20 Objekten
+   und sollte auch nicht wesentlich erhoeht werden. Nur fuer
+   Anfaengergebiete waeren Werte zwischen 20 und 60 akzeptabel. In die
+   Berechnung der Anzahl von Objekten gehen keine Objekte ein, die im
+   Laden mittels AddFixedObject() staendig verfuegbar gemacht worden
+   sind und auch keine Objekte, die per AddItem() im Lager hinzugefuegt
+   wurden und nach jedem Reset aufgefrischt werden.
+   Bei jedem Reset wird nun aus Speicher- und Laggruenden das Lager um
+   eine bestimmte Prozentzahl an Objekten dezimiert. Entscheidend
+   dafuer ist der Wert in der Property P_STORE_CONSUME.
+   Beide hier erwaehnten Properties sollten ueberigens nur mittels
+   QueryProp/SetProp ausgelesen bzw. veraendert werden.
+
+
+BEISPIEL
+========
+
+   In '/std/store.c' befindet sich bereits ein gutes Beispiel, da dort
+   der Standardwert von 20 Objekten bereitgestellt wird:
+     create()
+     { ...
+       SetProp(P_MIN_STOCK,20);
+     }
+   Diesen Wert kann man in einem davon abgeleiteten eigenen Lager
+   natuerlich auch veraendern.
+
+
+SIEHE AUCH
+==========
+
+   P_STORE_CONSUME, SetStorageRoom(), /std/store.c, /std/shop.c
+   AddItem(), RemoveItem(), AddFixedObject(), RemoveFixedObject()
+
+Last modified: 19-Jun-2015, Arathorn
diff --git a/doc/sphinx/man/props/P_MMSGIN b/doc/sphinx/man/props/P_MMSGIN
new file mode 100644
index 0000000..98d37f3
--- /dev/null
+++ b/doc/sphinx/man/props/P_MMSGIN
@@ -0,0 +1,22 @@
+
+P_MMSGIN
+********
+
+
+NAME
+====
+
+   P_MMSGIN                      "mmsgin"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Verlassen eines Raumes mit M_TPORT
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/sphinx/man/props/P_MMSGOUT b/doc/sphinx/man/props/P_MMSGOUT
new file mode 100644
index 0000000..6035ba8
--- /dev/null
+++ b/doc/sphinx/man/props/P_MMSGOUT
@@ -0,0 +1,22 @@
+
+P_MMSGOUT
+*********
+
+
+NAME
+====
+
+   P_MMSGOUT                     "mmsgout"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Betreten eines Raumes mit M_TPORT
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/sphinx/man/props/P_MSGIN b/doc/sphinx/man/props/P_MSGIN
new file mode 100644
index 0000000..f5d90f8
--- /dev/null
+++ b/doc/sphinx/man/props/P_MSGIN
@@ -0,0 +1,22 @@
+
+P_MSGIN
+*******
+
+
+NAME
+====
+
+   P_MSGIN                       "msgin"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Betreten eines Raumes mit M_GO
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/sphinx/man/props/P_MSGOUT b/doc/sphinx/man/props/P_MSGOUT
new file mode 100644
index 0000000..95a8545
--- /dev/null
+++ b/doc/sphinx/man/props/P_MSGOUT
@@ -0,0 +1,22 @@
+
+P_MSGOUT
+********
+
+
+NAME
+====
+
+   P_MSGOUT                      "msgout"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/moving.h
+
+
+BESCHREIBUNG
+============
+
+   String mit der Meldung, die beim Verlassen eines Raumes mit M_GO
+   an die uebrigen Anwesenden ausgegeben wird.
diff --git a/doc/sphinx/man/props/P_MSG_PROB b/doc/sphinx/man/props/P_MSG_PROB
new file mode 100644
index 0000000..b4465df
--- /dev/null
+++ b/doc/sphinx/man/props/P_MSG_PROB
@@ -0,0 +1,35 @@
+
+P_MSG_PROB
+**********
+
+
+NAME
+====
+
+   P_MSG_PROB                    "msg_prob"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Parameter fuer die Wartezeit in Sekunden bis zur naechsten Ausgabe
+   einer Raumnachricht.
+   Wird in AddRoomMessage() explizit mitgesetzt. Koennte natuerlich von
+   einer Nachrichtenmethode auch regelmaessig geaendert werden, um
+   mehr Zufall in die Intervalle zu bringen.
+
+
+SIEHE AUCH
+==========
+
+   LFuns:    AddRoomMessage()
+   Props:    P_ROOM_MSG, P_MSG_PROB
+   Verwandt: call_out()
+
+2.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_MUD_NEWBIE b/doc/sphinx/man/props/P_MUD_NEWBIE
new file mode 100644
index 0000000..71801eb
--- /dev/null
+++ b/doc/sphinx/man/props/P_MUD_NEWBIE
@@ -0,0 +1,31 @@
+
+P_MUD_NEWBIE
+************
+
+
+NAME
+====
+
+   P_MUD_NEWBIE                      "_lib_mud_newbie"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler hat bei Erstellung des Charakters angegeben, noch nie in einem
+   Mud gespielt zu haben. In diesem Fall enthaelt die Property den
+   Zeitstempel der Charaktererstellung.
+
+   ACHTUNG: Diese Prop wird nicht gespeichert, d.h. nachdem ein solcher
+   Spieler "ende" gemacht hat oder ein Reboot erfolgte, ist diese Information
+   verloren.
+
+
+SIEHE AUCH
+==========
diff --git a/doc/sphinx/man/props/P_MURDER_MSG b/doc/sphinx/man/props/P_MURDER_MSG
new file mode 100644
index 0000000..c565cfa
--- /dev/null
+++ b/doc/sphinx/man/props/P_MURDER_MSG
@@ -0,0 +1,83 @@
+
+P_MURDER_MSG
+************
+
+
+NAME
+====
+
+   P_MURDER_MSG                       "murder_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property kann man einen String oder eine Closure ablegen
+   dessen Wert bzw. deren Resultat beim Tod des NPCs auf dem
+   Moerder-Kanal erscheint.
+   Normalerweise ist die Property nicht gesetzt, woraufhin zufaellig
+   eine Meldung generiert wird.
+
+   Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon ab,
+   wie oft und welche Art von NPCs in der letzten Zeit getoetet wurden. Zum
+   Beispiel ist es eher selten, dass ein schwacher NPC auf dem Kanal
+   erscheint, wenn kuerzlich viele starke NPCs getoetet wurden. Allerdings
+   kann man auf diese Regelung mittels der Property P_FORCE_MURDER_MSG
+   Einfluss nehmen.
+
+   Wird in einen String der Platzhalter %s eingefuegt, so erscheint an der
+   Stelle spaeter der Name des Moerders.
+
+
+BEISPIELE
+=========
+
+   // Zum Beispiel koennte man ja bei einer Ratte, die getoetet wird,
+   // folgendes auf dem Moerder-Kanal ausgeben lassen:
+   SetProp(P_MURDER_MSG,
+     "Ratten aller MUDs, vereinigt euch gegen %s!");
+
+
+   // Um auch mal eine Closure zu zeigen: die Ratte koennte auch ihre
+   // Meldung erst bei ihrem Tod erstellen lassen:
+   private string moerder_meldung() {
+     return ({"Achweh!", "Au!", "Weia!"})[random(3)];
+   }
+
+   SetProp(P_MURDER_MSG, #'moerder_meldung);
+
+
+BEMERKUNGEN
+===========
+
+   - P_NOCORPSE:
+     Ist in dem NPC die Property P_NOCORPSE gesetzt, so wird die
+     Moerdermeldung nicht auf dem Kanal gesendet, da diese Ausgabe ueber
+     /std/corpse laeuft.
+     Will man dennoch eine Meldung, so sollte man /std/corpse im die()
+     selbst clonen, daran Identify(this_object()) rufen und das geclonte
+     Objekt wieder entsorgen.
+
+   - Closures:
+     Closures bieten sich an, wenn ein zentrales Objekt fuer mehrere NPCs
+     bestimmte Moerdermeldungen generieren soll. Dann muss nur noch bei
+     den NPCs die Closure, die auf die erstellende Methode zeigt gesetzt
+     werden.
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Verwandt:          P_FORCE_MURDER_MSG
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_DIE_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c
+
+30. Mai 2006, Gloinson
diff --git a/doc/sphinx/man/props/P_M_ATTR_MOD b/doc/sphinx/man/props/P_M_ATTR_MOD
new file mode 100644
index 0000000..d279484
--- /dev/null
+++ b/doc/sphinx/man/props/P_M_ATTR_MOD
@@ -0,0 +1,64 @@
+
+P_M_ATTR_MOD
+************
+
+
+NAME
+====
+
+   P_M_ATTR_MOD                  "magic_attributes_modifier"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping, das die Attribute des Spielers veraendert, der diese Ruestung
+   bzw. Waffe traegt bzw. benutzt.
+
+   Zu beachten:
+   P_M_ATTR_MOD kann problemlos durch ein SetProp() gesetzt werden. Es wird
+   nur dann beruecksichtigt, wenn die Ruestung/Waffe getragen/benutzt wird.
+   Beim Tragen/Ausziehen/Zuecken/Wegstecken wird im Spieler automatisch
+   UpdateAttributes() aufgerufen.
+
+   Fuer Krankheiten etc. oder Objekte, deren *Besitz* allein schon die
+   Attribute veraendern sollen, verwendet man besser P_X_ATTR_MOD.
+
+   P_X_ATTR_MOD und P_M_ATTR_MOD duerfen einen gemeinsamen kumulierten
+   positiven Grenzwert nicht ueberschreiten. Dieser Grenzwert,
+   CUMULATIVE_ATTR_LIMIT, ist in /sys/living/attributes.h definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Die Werte sollten moeglichst nicht dynamisch geaendert werden.
+   Wenn doch, muss mit TestLimitViolation() am Spieler auf Validitaet
+   geprueft und ggf. mit UpdateAttributes() an ihm upgedatet werden.
+
+
+BEISPIELE
+=========
+
+   // Dem Spieler, der das Objekt benutzt, wird 2 von A_INT abgezogen und
+   // dafuer 1 auf A_STR aufaddiert.
+   SetProp(P_M_ATTR_MOD, ([A_INT:-2, A_STR:1]) );
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_X_HEALTH_MOD, P_M_HEALTH_MOD, P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_TIMED_ATTR_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+02.02.2016, Gloinson
diff --git a/doc/sphinx/man/props/P_M_HEALTH_MOD b/doc/sphinx/man/props/P_M_HEALTH_MOD
new file mode 100644
index 0000000..cdc3fd4
--- /dev/null
+++ b/doc/sphinx/man/props/P_M_HEALTH_MOD
@@ -0,0 +1,64 @@
+
+P_M_HEALTH_MOD
+**************
+
+
+NAME
+====
+
+   P_M_HEALTH_MOD                  "magic_health_modifier"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping, mit dem die maximalen Lebenspunkte und Magiepunkte eines
+   Spielers veraendert werden, der diese Ruestung/Waffe traegt/benutzt. Im
+   Gegensatz zu P_M_ATTR_MOD erfolgt hier jedoch keine Blockade.
+
+   Zu beachten: P_M_HEALTH_MOD kann problemlos durch ein SetProp() gesetzt
+   werden, es wird nur beruecksichtigt, wenn die Ruestung/Waffe
+   getragen/benutzt wird. Beim tragen/ausziehen/zuecken/wegstecken wird im
+   Spieler automatisch UpdateAttributes() aufgerufen.
+
+   Fuer Krankheiten etc. verwendet man besser die Property P_X_HEALTH_MOD.
+
+   Bitte beachten: Die positiven Modifier werden nicht mehr 1:1 auf die
+   Lebens- und Magiepunkte draufaddiert. Stattdessen wird nur noch ein
+   gewisser Teil dort hinzuaddiert, der mit groesserer Menge von Punkten
+   zunimmt, und im unteren Bereich grob dem Wert entspricht. Das
+   theoretische Maximum ist insgesamt 149.
+
+
+BEMERKUNGEN
+===========
+
+   Die Werte sollten moeglichst nicht dynamisch geaendert werden.
+   Wenn doch, muss mit TestLimitViolation() am Spieler auf Validitaet
+   geprueft werden und mit UpdateAttributes() an ihm ggf. upgedatet.
+
+
+BEISPIEL
+========
+
+   SetProp(P_M_HEALTH_MOD,([P_HP:5,P_SP:-5]));
+   // Dem Spieler, der das Objekt benutzt, wird P_MAX_HP um 5 erhoeht und
+   // P_MAX_SP um 5 erniedrigt.
+
+
+SIEHE AUCH
+==========
+
+   P_X_HEALTH_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, balance
+
+
+LETZTE AeNDERUNG
+================
+
+   Fre,11.05.2007, 00:20 von Humni
diff --git a/doc/sphinx/man/props/P_NAME b/doc/sphinx/man/props/P_NAME
new file mode 100644
index 0000000..1fdc261
--- /dev/null
+++ b/doc/sphinx/man/props/P_NAME
@@ -0,0 +1,84 @@
+
+P_NAME
+******
+
+
+NAME
+====
+
+   P_NAME "name"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property wird der Name eines Objektes vermerkt. Wenn der Name
+   regelmaessig dekliniert wird, reicht ein einfacher String. Wird der
+   Name unregelmaessig dekliniert, so kann man ein Array von vier Strings
+   mit dem Namen im Nominativ, Genitiv, Dativ und Akkusativ (in dieser
+   Reihenfolge) angeben.
+
+   Die Funktion name() behandelt recht viele Sonderfaelle; man sollte den
+   Namen also erst einmal in der Form eines einzelnen Strings pruefen.
+
+   Eine Sonderrolle nehmen Unit-Objekte ein: Hier kann man einen Namen
+   fuer den Singular und einen Namen fuer den Plural vergeben.
+
+   Setzt man P_NAME eines Unit-Objekts auf einen einfachen String, so wird
+   dieser als Name sowohl im Singular als auch im Plural verwendet.
+
+   Uebergibt man ein Array von Strings, so wird der erste Eintrag fuer den
+   Singular und der zweite Eintrag fuer den Plural benutzt.
+
+   Bei Unit-Objekten ist es nicht moeglich, auch noch zwischen den
+   verschiedenen Faellen zu unterscheiden.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property sollte nur den reinen Namen enthalten; will man dem
+   Namen noch Adjektive voranstellen, so sollte man dies mit P_NAME_ADJ
+   bewerkstelligen, also statt
+
+   SetProp(P_NAME, ({ "alter Hut", "alten Huts",
+                      "alten Hut", "alten Hut" }) );
+
+   besser
+
+   SetProp(P_NAME, "Hut");
+   SetProp(P_NAME_ADJ, "alt");
+
+   Bei Lebewesen wird lower_case(P_NAME) (bei Arrays das erste Element
+   daraus) automatisch als LivingName gesetzt.
+
+
+BEISPIELE
+=========
+
+   Ein regelmaessig deklinierbarer Name:
+
+   SetProp(P_NAME, "Arkshat");
+
+   Hier ein Beispiel fuer einen unregelmaessig deklinierbaren Namen:
+
+   SetProp(P_NAME, ({ "Drache", "Drachen", "Drachen", "Drachen" }));
+
+   Und schliesslich der Name eines allseits bekannten Unit-Objektes:
+
+   SetProp(P_NAME, ({ "Muenze", "Muenzen" }));
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, name(), P_NAME_ADJ, set_living_name(),
+   find_living(), find_livings()
+
+Last modified: 19. Okt. 2015, Arathorn.
diff --git a/doc/sphinx/man/props/P_NAME_ADJ b/doc/sphinx/man/props/P_NAME_ADJ
new file mode 100644
index 0000000..c4cc4a4
--- /dev/null
+++ b/doc/sphinx/man/props/P_NAME_ADJ
@@ -0,0 +1,72 @@
+
+P_NAME_ADJ
+**********
+
+
+NAME
+====
+
+   P_NAME_ADJ "name_adj"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein oder mehrere Adjektive in Form eines Arrays
+   von Strings. Es ist nur der Wortstamm anzugeben! Die Adjektive werden
+   von der Funktion name() dekliniert und vor den Namen gesetzt, wirken
+   also als Aufzaehlung von Adjektiven vor dem Namen.
+
+   Die hier angegebenen Adjektive dienen nur zur Ausgabe! Soll sich das
+   Objekt auch ueber Adjektive ansprechen lassen, muss man diese mit
+   AddAdjective() uebergeben.
+
+   Soll das Objekt nur ein einzelnes Namensadjektiv besitzen, kann man dem
+   SetProp()-Aufruf auch einen String uebergeben; gespeichert wird die
+   Property aber in jedem Fall als Array.
+
+   Wenn ein Adjektiv unregelmaessig ist, kann man die vier Faelle auch
+   als Array uebergeben. Man muss dann aber Arrays schachteln, damit von den
+   mehrfachen Adjektiven unterschieden werden kann.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Hut");
+   SetProp(P_NAME_ADJ, "alt");
+
+   name(WESSEN,1)      => "des alten Huts"
+
+
+   // Zwei Adjektive, gleichrangig zu Substantiv
+   SetProp(P_NAME_ADJ, ({"alt", "gammelig"}));
+
+   name(WESSEN,1)      => "des alten, gammeligen Huts"
+
+
+   // Zwei Adjektive, erstes ist Attribut zu zweitem
+   falsch:  SetProp(P_NAME_ADJ, ({"gruen", "gestreift"}));
+            name(WESSEN,1)      => "des gruenen, gestreiften Huts"
+   richtig: SetProp(P_NAME_ADJ, ({"gruen gestreift"}));
+            name(WESSEN,1)      => "des gruen gestreiften Huts"
+
+   // Unregelmaessiges Adjektiv
+   SetProp( P_NAME_ADJ,({({"rosa","rosa","rosa","rosa"})});
+            name(WESSEN,1)         => "des rosa Huts"
+   // Ohne inneres Array haette man 4 mal rosa als Adjektiv
+   // => "des rosaen, rosaen, rosaen, rosaen Huts"
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c, name(), P_NAME, DeclAdj()
+
+23.April 2007 Rumata
diff --git a/doc/sphinx/man/props/P_NEEDED_QP b/doc/sphinx/man/props/P_NEEDED_QP
new file mode 100644
index 0000000..2df4c78
--- /dev/null
+++ b/doc/sphinx/man/props/P_NEEDED_QP
@@ -0,0 +1,31 @@
+
+P_NEEDED_QP
+***********
+
+
+NAME
+====
+
+   P_NEEDED_QP                   "needed_qp"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   APs, die man fuer den Seherstatus braucht
+
+   Diese Property ist mittlerweile obsolet. Die
+   aktuell geltenden Seher-Anforderungen stehen in
+   /secure/lepmaster.h
+
+
+LETZTE AENDERUNG
+================
+
+   2006-09-30, Zook.
diff --git a/doc/sphinx/man/props/P_NETDEAD_ENV b/doc/sphinx/man/props/P_NETDEAD_ENV
new file mode 100644
index 0000000..2e46f5d
--- /dev/null
+++ b/doc/sphinx/man/props/P_NETDEAD_ENV
@@ -0,0 +1,43 @@
+
+P_NETDEAD_ENV
+*************
+
+
+NAME
+====
+
+   P_NETDEAD_ENV                  "netdead_env"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann in netztoten Spielern abgefragt werden,
+               um herauszufinden, in welchem Raum sie netztot geworden sind.
+
+               Es wird der selbe Wert zurueckgegeben, den die Mudlib benutzen
+               wuerde, um die Spieler beim reconnect wieder an den richtigen
+               ort zu bringen. Das ist normalerweise das Raumobjekt oder der
+               Dateiname des Raums (zum Beispiel so dieser ein clone war).
+
+               Bei nicht netztoten Spielern wird 0 zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property ist read-only.
+
+
+SIEHE AUCH
+==========
+
+   P_NETDEAD_INFO
+
+2009-08-04 Rumata
diff --git a/doc/sphinx/man/props/P_NETDEAD_INFO b/doc/sphinx/man/props/P_NETDEAD_INFO
new file mode 100644
index 0000000..fe96ac6
--- /dev/null
+++ b/doc/sphinx/man/props/P_NETDEAD_INFO
@@ -0,0 +1,120 @@
+
+P_NETDEAD_INFO
+**************
+
+
+NAME
+====
+
+   P_NETDEAD_INFO                "netdead_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Wird im Raum X gesetzt und wirkt nur, falls dieser Raum ein '#' im
+   object_name() hat (normale Clones, zB "/room/void#10153018").
+
+
+
+   Bei Einschlafen eines Spielers in diesem Raum werden die Werte aus
+   der Property im Spieler gespeichert (Netztoteninformationen).
+
+   Ist beim Aufwachen des Spielers das Raumobjekt X zerstoert worden, dann
+   wird bei der Blueprint von X per SetProp() die gespeicherte Information
+   gesetzt. Der Rueckgabewert des SetProp wird als Pfad zu einem Ausweich-
+   Aufwach-Raum interpretiert und der Spieler wird in dem Fall dorthin
+   bewegt.
+
+
+BEMERKUNGEN
+===========
+
+   Zum Clonen von Raeumen sollten Virtual Compiler benutzt werden:
+   Wird in den erzeugten Objektnamen KEIN '#' verwendet, dann ist diese
+   Property nicht sinnvoll und wird nicht verwendet. Ein ordentlicher
+   VC kann Bewegen eines Spielers in dessen alten, nicht mehr existierenden
+   Raum oder einen Ersatzraum beim Aufwachen selbst loesen.
+
+
+BEISPIELE
+=========
+
+   // #1: geclonter Raum mit Ausweich-Aufwachraum: Klerus-Gilde
+   #include <properties.h>
+   inherit "/std/room";
+
+
+
+   void create() {
+     ::create();
+
+     SetProp(P_NETDEAD_INFO, "/gilden/klerus");
+     SetProp(P_LIGHT, 1);
+   }
+
+
+
+   // #2: komplexerer Beispielraum fuer P_NETDEAD_INFO-Funktionalitaet
+   // Siehe auch: /doc/beispiele/testobjekte/netdead_info_testraum.c
+   #include <properties.h>
+   inherit "/std/room";
+
+   void create() {
+     ::create();
+
+     if (clonep(this_object()))
+       // setze Informationen, die im Netztoten gespeichert werden sollen
+       Set(P_NETDEAD_INFO, random(5));
+     else
+       // Blueprint: hier kann man zu einem Cloneraum gehen
+       AddExit("cloneraum", #'create_room);
+
+     // Set-Method, um die Informationen aus P_NETDEAD_INFO beim Aufwachen
+     // in der Blueprint auswerten zu koennen
+     Set(P_NETDEAD_INFO, #'create_destiny, F_SET_METHOD);
+     SetProp(P_LIGHT, 1);
+   }
+
+
+
+   // Raum entfernen, normalerweise so KEINE GUTE IDEE!
+   void BecomesNetDead(object pl) {
+     call_out(#'remove, 30);
+   }
+
+   // erzeuge einen Cloneraum und bewege den Spieler dahin
+   int create_room(string dir) {
+     object dest = clone_object(object_name(this_object()));
+     this_player()->move(dest, M_NOCHECK);
+     return 1;
+   }
+
+
+
+   // Set-Method fuer P_NETDEAD_INFO: gibt Pfad zurueck
+   // benutze die Informationen aus dem jetzt aufwachenden Netztoten, um
+   // einen alternativen Aufwachraum zu ermitteln, da der Einschlafraum
+   // zerstoert ist
+   string create_destiny(mixed val) {
+     if (intp(val)) {
+       switch (val) {
+         case 0:
+           return "/d/ebene/room/PortVain/po_haf1";
+         case 1:
+           return "/gilden/klerus";
+         case 2:
+           return "/gilden/karate";
+         default:
+       }
+       return "/d/ebene/room/waldweg4";
+     }
+   }
+
+2. Jan 2012 Gloinson
diff --git a/doc/sphinx/man/props/P_NEVERDROP b/doc/sphinx/man/props/P_NEVERDROP
new file mode 100644
index 0000000..d0cdf41
--- /dev/null
+++ b/doc/sphinx/man/props/P_NEVERDROP
@@ -0,0 +1,50 @@
+
+P_NEVERDROP
+***********
+
+
+NAME
+====
+
+   P_NEVERDROP                     "neverdrop"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Objekte, welche diese Property gesetzt haben, werden beim Tod eines
+   Lebewesens nicht automatisch in die Leiche oder in den umgebenden
+   Raum (z.B. bei bei gesetztem P_NOCORPSE) transportiert.
+
+
+BEMERKUNGEN
+===========
+
+   Soll das Objekt vom Lebewesen nicht weggelegt werden koennen, so ist
+   die Property P_NODROP zu verwenden.
+   Beide Properties zusammen stellen sicher, dass ein Objekt nicht
+   weitergegeben werden kann.
+
+
+BEISPIELE
+=========
+
+   Eine dauerhafte Belohnung, die auch beim Tod des Spielers bei ihm
+   verbleiben soll, setzt das so:
+     SetProp(P_NEVERDROP,1);
+   Sollen auch Reboots ueberstanden werden, ist zusaetzlich
+   P_AUTOLOADOBJ zu setzen.
+
+
+SIEHE AUCH
+==========
+
+   P_NODROP, P_NOGET, P_NOCORPSE, P_AUTOLOADOBJ, /std/living/life.c
+
+Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_NEVER_CLEAN b/doc/sphinx/man/props/P_NEVER_CLEAN
new file mode 100644
index 0000000..fc568ff
--- /dev/null
+++ b/doc/sphinx/man/props/P_NEVER_CLEAN
@@ -0,0 +1,53 @@
+
+P_NEVER_CLEAN
+*************
+
+
+NAME
+====
+
+   P_NEVER_CLEAN                   " never clean "
+
+
+DEFINIERT IN
+============
+
+   /sys/rooms.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise wird ein Raum nach 2 Resets zerstoert, wenn er waerend
+   dieser Zeit von keinem Lebewesen betreten wurde und wenn
+   keine REFRESH_NONE- oder REFRESH_DESTRUCT-Objekte existieren, die
+   nicht mehr im Raum vorhanden sind.
+   Mit dieser Property kann man den sogenannten Clean-Up unterbinden.
+
+
+BEISPIEL
+========
+
+   Der folgende Raum wird nicht mehr zerstoert, wenn er einmal geladen
+   wurde:
+     #include <properties.h>
+     // #include <rooms.h> ... wird schon von properties.h included!
+     inherit "std/room";
+     void create()
+     { ::create();
+       SetProp(P_SHORT,"Ein toller Raum");
+       ...
+       SetProp(P_NEVER_CLEAN,1);
+       ...
+     }
+   Man sollte die Anwendung nicht uebertreiben! Wichtig ist diese
+   Funktion zum Beispiel fuer Raeume, die gleichzeitig Masterobjekte
+   darstellen.
+
+
+SIEHE AUCH
+==========
+
+   /std/room.c
+
+Last modified: Wed Feb  3 00:54:32 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_NEWSKILLS b/doc/sphinx/man/props/P_NEWSKILLS
new file mode 100644
index 0000000..7cb61c7
--- /dev/null
+++ b/doc/sphinx/man/props/P_NEWSKILLS
@@ -0,0 +1,38 @@
+
+P_NEWSKILLS
+***********
+
+
+NAME
+====
+
+   P_NEWSKILLS                     "newskills"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property sind saemtliche Skills und Spells vermerkt, die
+   das Lebewesen kennt.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen von "/std/living/skills.c" nutzen.
+
+
+SIEHE AUCH
+==========
+
+   ModifySkill(), LearnSkill(), UseSkill(), /std/living/skills.c,
+   P_GUILD_SKILLS, P_SB_SPELLS
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_NEXT_DEATH_SEQUENCE b/doc/sphinx/man/props/P_NEXT_DEATH_SEQUENCE
new file mode 100644
index 0000000..6992a32
--- /dev/null
+++ b/doc/sphinx/man/props/P_NEXT_DEATH_SEQUENCE
@@ -0,0 +1,68 @@
+
+P_NEXT_DEATH_SEQUENCE
+*********************
+
+
+NAME
+====
+
+   P_NEXT_DEATH_SEQUENCE         "p_lib_next_death_sequence"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Im Spieler kann damit dessen eigene Todessequenz fuer den naechsten
+   Tod festgelegt werden. Nach einem Tod (egal welche Todessequenz
+   gewaehlt wurde) wird die Property geloescht und muesste neu gesetzt
+   werden.
+
+   Es gibt folgende gueltige Werte:
+   - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
+   - mixed*  Eine Todessequenz im Format des Todesraumes:
+             ({<int gesamtlaenge>,
+               ([<int index1>: <string umgebrochene Meldung1>,
+                 <int index2>: <string umgebrochene Meldung2>,
+                 ...])
+             })
+   - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
+             ([<int zeitindex>: <string umgebrochener Text>])
+
+
+BEMERKUNGEN
+===========
+
+   Eine Todessequenz eines Gegners, festgelegt ueber
+   P_ENEMY_DEATH_SEQUENCE hat Vorrang vor dieser Property.
+
+
+BEISPIELE
+=========
+
+   // Pfad zu einer eigenen DSQ
+   SetProp(P_NEXT_DEATH_SEQUENCE,  ".../passende_dsq.txt");
+
+   // eigene DSQ im Todesraumformat:
+   SetProp(P_NEXT_DEATH_SEQUENCE,
+           ({ 2, ([1: "Der Tod entlaesst dich eilig.\n"])}));
+
+   // Einfuegen einer Meldung in die Standard-Todessequenz
+   SetProp(P_NEXT_DEATH_SEQUENCE,
+           ([5: "Du fuehlst dich etwas daemlich.\n"]));
+
+
+SIEHE AUCH
+==========
+
+   Tod:            die(L)
+   Todesmeldungen: P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                   P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:      P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+10. Nov 2011 Gloinson
diff --git a/doc/sphinx/man/props/P_NEXT_DISABLE_ATTACK b/doc/sphinx/man/props/P_NEXT_DISABLE_ATTACK
new file mode 100644
index 0000000..6a9eea3
--- /dev/null
+++ b/doc/sphinx/man/props/P_NEXT_DISABLE_ATTACK
@@ -0,0 +1,52 @@
+
+P_NEXT_DISABLE_ATTACK
+*********************
+
+
+PROPERTY
+========
+
+   P_NEXT_DISABLE_ATTACK    "next_diable_attack"
+
+
+DEFINIERT IN
+============
+
+   combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, wann der NPC das naechste Mal paralysiert
+   werden kann. Ueblicherweise wird sie automatisch beim Setzen
+   von P_DISABLE_ATTACK gesetzt. Sie gibt einen Zeitpunkt wie
+   die Funktion time() an, an dem zum ersten Mal wieder Paralyse
+   moeglich ist.
+
+   Will man einen NPC schreiben, der immer paralysierbar ist und nicht erst
+   nach einer gewissen Wartezeit nach der letzten Paralyse, laesst sich dies
+   durch eine Set-Methode auf P_NEXT_DISABLE_ATTACK erreichen:
+
+
+
+   Set(P_NEXT_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);
+
+   Diese Set-Methode verhindert das Setzen von P_NEXT_DISABLE_ATTACK mittels
+   eines SetProp-Aufrufes.
+
+
+BEMERKUNGEN
+===========
+
+   Die Zeit zum Schutz vor erneuter Paralyse existiert absichtlich. Bitte
+   waegt sorgfaeltig ab, bevor ihr diese Property an Gegnern/Spielern
+   manipuliert.
+
+
+SIEHE AUCH
+==========
+
+   P_DISABLE_ATTACK
+
+21.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_NOBUY b/doc/sphinx/man/props/P_NOBUY
new file mode 100644
index 0000000..27f6c70
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOBUY
@@ -0,0 +1,23 @@
+
+P_NOBUY
+*******
+
+
+NAME
+====
+
+   P_NOBUY                       "nobuy"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist, wird das Objekt nach einem
+   Verkauf im Laden zerstoert, damit es nicht wieder von einem Spieler
+   gekauft werden kann.
diff --git a/doc/sphinx/man/props/P_NOCORPSE b/doc/sphinx/man/props/P_NOCORPSE
new file mode 100644
index 0000000..15d5de2
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOCORPSE
@@ -0,0 +1,51 @@
+
+P_NOCORPSE
+**********
+
+
+NAME
+====
+
+   P_NOCORPSE                      "nocorpse"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property ist gesetzt, wenn im Todesfall kein Leichnam
+   automatisch erzeugt werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   In diesem Fall wird die Property P_CORPSE ignoriert, mit der man
+   ein spezielles Leichenobjekt angeben kann, sofern nicht die
+   Standardleiche "/std/corpse.c" verwendet werden soll.
+   Da die Moerdermeldungen ueber ebendiese Objekt laufen, werden
+   hierbei auch keine ausgegeben.
+
+
+BEISPIELE
+=========
+
+   Das Lebewesen soll keine Leiche hinterlassen, weil es zu Staub
+   zerfaellt:
+     SetProp(P_DIE_MSG," zerfaellt zu Staub!\n");
+     SetProp(P_NOCORPSE,1)
+   Es wurde auch gleich die Sterbemeldung dementsprechend gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_CORPSE, P_ZAP_MSG, P_DIE_MSG, P_MURDER_MSG, P_KILL_MSG,
+   P_NEVERDROP, /std/corpse.c
+
+Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_NODRINK_MSG b/doc/sphinx/man/props/P_NODRINK_MSG
new file mode 100644
index 0000000..a3407c7
--- /dev/null
+++ b/doc/sphinx/man/props/P_NODRINK_MSG
@@ -0,0 +1,46 @@
+
+P_NODRINK_MSG
+*************
+
+
+NAME
+====
+
+   P_NODRINK_MSG                 "std_food_nodrink_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn versucht wird, ein Nicht-Getraenk
+   zu trinken. Sobald eine Speise einen Wert in P_FOOD setzt, gilt es als
+   Nicht-Getraenk.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WEN1 kann man nicht trinken!"
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_DRINK, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_NODROP b/doc/sphinx/man/props/P_NODROP
new file mode 100644
index 0000000..786cdea
--- /dev/null
+++ b/doc/sphinx/man/props/P_NODROP
@@ -0,0 +1,60 @@
+
+P_NODROP
+********
+
+
+NAME
+====
+
+   P_NODROP                        "nodrop"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property in einem Objekt gesetzt, so kann ein Lebewesen
+   das Objekt nicht weglegen.
+   Als Standardmeldung kommt in diesem Fall beispielsweise:
+     Du kannst <Objektname> nicht wegwerfen!
+     Du kannst <Objektname> nicht weggeben.
+   Man kann auch eine alternative Meldung angeben, wobei selbstaendig
+   auf einen korrekten Zeilenumbruch zu achten ist.
+
+
+BEMERKUNGEN
+===========
+
+   Soll ein Objekt beim Tod des Lebewesens oder bei Ende eines Spielers
+   nicht in der Leiche bzw. im Raum zurueckgelassen werden, so ist
+   die Property P_NEVERDROP zu nutzen.
+   Beide Properties zusammen stellen sicher, dass ein Objekt nicht
+   weitergegeben werden kann.
+
+
+BEISPIELE
+=========
+
+   Ein schwer zu erkaempfender Dolch koennte folgendes beinhalten,
+   um nicht weitergegeben werden zu koennen:
+     SetProp(P_NODROP,1);
+   Informativer jedoch ist eine eigene Meldung:
+     SetProp(P_NODROP,
+    "Den Dolch hast Du Dir hart erkaempft, nicht wegwerfen!\n");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_NOGET, P_NEVERDROP, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG,
+               P_TOO_MANY_MSG, P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+
+Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_NOFOOD_MSG b/doc/sphinx/man/props/P_NOFOOD_MSG
new file mode 100644
index 0000000..d195c5e
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOFOOD_MSG
@@ -0,0 +1,46 @@
+
+P_NOFOOD_MSG
+************
+
+
+NAME
+====
+
+   P_NOFOOD_MSG                  "std_food_nofood_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung an den Konsumenten, wenn versucht wird, ein Getraenk zu essen.
+   Sobald eine Speise keinen Wert in P_FOOD und einen Wert in P_DRINK
+   setzt, gilt es als Getraenk.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WEN1 kann man nicht essen!"
+
+
+SIEHE AUCH
+==========
+
+   P_FOOD, P_DRINK, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_NOGET b/doc/sphinx/man/props/P_NOGET
new file mode 100644
index 0000000..17a6248
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOGET
@@ -0,0 +1,49 @@
+
+P_NOGET
+*******
+
+
+NAME
+====
+
+   P_NOGET                         "noget"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property in einem Objekt gesetzt, so kann ein Lebewesen
+   das Objekt nicht nehmen.
+   Als Standardmeldung kommt in diesem Fall beispielsweise:
+     Du kannst <Objektname> nicht nehmen.
+     Du kannst <Objektname> so nirgendwo reinstecken.
+   Man kann auch eine alternative Meldung angeben, wobei selbstaendig
+   auf einen korrekten Zeilenumbruch zu achten ist.
+
+
+BEISPIELE
+=========
+
+   Ein Objekt, welches fest im Raum verankert ist, kann natuerlich
+   nicht entfernt werden, z.B. ein angebundenes Seil:
+     SetProp(P_NOGET,"Das Seil ist fest am Baum verknotet!\n");
+   In einem Kommando zum Losknoten koennte man die Property dann
+   loeschen, um ein Wegnehmen zu ermoeglichen.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_NODROP, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG,
+               P_TOO_MANY_MSG, P_NOINSERT_MSG, P_NOLEAVE_MSG
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
+
+Last modified: Thu Jun 14 22:26:29 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_NOINSERT_MSG b/doc/sphinx/man/props/P_NOINSERT_MSG
new file mode 100644
index 0000000..de7d8e8
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOINSERT_MSG
@@ -0,0 +1,65 @@
+
+P_NOINSERT_MSG
+**************
+
+
+NAME
+====
+
+   P_NOINSERT_MSG                      "noinsert_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
+   jemand versucht, ein Objekt in einen Behaelter zu bewegen und der
+   Behaelter dieses im PreventInsert() verhindert.
+   Die Property ist im Zielbehaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("<Objekt> kannst Du dort nicht hineinstecken.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Zielbehaelter
+   als zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   1. Ein Kochtopf laesst im PreventInsert nur bestimmte Objekte zu, die zu
+   einer Suppe gehoeren. Fuer eine passende Meldung wird im Topf jetzt die
+   Property gesetzt:
+   SetProp(P_NOINSERT_MSG, "Du kannst @WEN1 nicht in den Kochtopf tun, da"
+                           " gehoeren doch nur Suppenzutaten rein!");
+   Wenn jemand jetzt versucht, eine Muenze reinzustecken, dann wuerde
+   folgende Meldung erscheinen:
+      Du kannst die Muenze nicht in den Kochtopf tun, da gehoeren doch nur
+      Suppenzutaten rein!
+
+   2. Ein Rucksack soll in einer bestimmten Reihenfolge gepackt werden, dazu
+   kann im PreventInsert die Meldung je nach Bedarf gesetzt werden:
+   if (<objekt noch nicht an der Reihe>)
+      SetProp(P_NOINSERT_MSG, "@WEN1 solltest du erst spaeter einpacken.");
+   else if (<objekt schon im Rucksack>)
+      SetProp(P_NOINSERT_MSG, "Aber @WER1 ist doch schon eingepackt!");
+   else ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/props/P_NOLEAVE_MSG b/doc/sphinx/man/props/P_NOLEAVE_MSG
new file mode 100644
index 0000000..d2cd164
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOLEAVE_MSG
@@ -0,0 +1,52 @@
+
+P_NOLEAVE_MSG
+*************
+
+
+NAME
+====
+
+   P_NOLEAVE_MSG                      "noleave_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
+   jemand versucht, ein Objekt aus einem Behaelter zu entfernen und der
+   Behaelter dieses im PreventLeave() verhindert.
+   Die Property ist im verhindernden Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("Du kannst <Objekt> nicht nehmen.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der verhindernde
+   Behaelter als zweites Objekt angegeben. Danach wird der String auf 78
+   Zeichen umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   Nur Bierschuettler sollen eine Bierflasche aus einem Kasten nehmen
+   koennen, neben einer entsprechenden Behandlung im PreventLeave setzt man
+   dazu die Property:
+   SetProp(P_NOLEAVE_MSG, "Nur Bierschuettler duerfen das!");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/props/P_NOMAGIC b/doc/sphinx/man/props/P_NOMAGIC
new file mode 100644
index 0000000..42e51d1
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOMAGIC
@@ -0,0 +1,42 @@
+
+P_NOMAGIC
+*********
+
+
+NAME
+====
+
+   P_NOMAGIC                     "nomagic"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Angabe in Prozent, mit welcher Wahrscheinlichkeit Magie fehlschlaegt.
+
+
+
+   Fuer einen Raum ist es eine generelle Aussage, wie wahrscheinlich ein
+   Spell in ihm fehlschlaegt. Bei NPC zeigt es an, wie wahrscheinlich
+   ein auf ihn gesprochener Spell fehlschlaegt.
+
+
+BEISPIEL
+========
+
+   // in einem Raum keine Spells zulassen
+   SetProp(P_NOMAGIC, 100)
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:     P_MAGIC_RESISTANCE_OFFSET, SpellDefend
+
+29.Dez 2007 Gloinson
diff --git a/doc/sphinx/man/props/P_NOSELL b/doc/sphinx/man/props/P_NOSELL
new file mode 100644
index 0000000..6141be3
--- /dev/null
+++ b/doc/sphinx/man/props/P_NOSELL
@@ -0,0 +1,50 @@
+
+P_NOSELL
+********
+
+
+NAME
+====
+
+   P_NOSELL                      "nosell"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist, kann das Objekt nicht in einem
+   Laden verkauft werden.
+   Gibt man in der Property einen String an, wird dieser ausgegeben,
+   ansonsten erfolgt eine Meldung "Du kannst <NAME> nicht verkaufen!"
+
+   Diese Meldung beinhaltet auch den Namen des in P_NAME einge-
+   tragenen Besitzer des Ladens. Ist dies nicht gesetzt, wird per
+   default 'Der Haendler' ausgegeben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_NOSELL,"Den Schrott behaeltst Du lieber selber.");
+
+   ==> Apu sagt: Den Schrott behaeltst Du lieber selber.
+   ==> Der Haendler sagt: Den Schrott behaeltst Du lieber selber.
+
+   SetProp(P_NOSELL,1);
+
+   ==> Apu sagt: Du kannst <name> nicht verkaufen!
+   ==> Der Haendler sagt: Du kannst <name> nicht verkaufen!
+
+
+SIEHE AUCH
+==========
+
+   P_NOBUY, P_NODROP, P_KEEPER
+
+03.09.2010, Zesstra
diff --git a/doc/sphinx/man/props/P_NO_ASCII_ART b/doc/sphinx/man/props/P_NO_ASCII_ART
new file mode 100644
index 0000000..3a143a4
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_ASCII_ART
@@ -0,0 +1,35 @@
+
+P_NO_ASCII_ART
+**************
+
+
+NAME
+====
+
+   P_NO_ASCII_ART                   "no_ascii_art"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann der Spieler mit dem Befehl "grafik aus" auf
+   1 setzen. Damit zeigt er an, dass er keine ASCII Art sehen moechte.
+
+   Wer ASCII-Art einsetzt, sollte an diesen Stellen die Property
+   abfragen und textliche Umschreibungen oder Alternativloesungen
+   einbauen.
+
+
+SIEHE AUCH
+==========
+
+   grafik
+
+
+   Letzte Aenderung: 2005-10-18, Zook.
diff --git a/doc/sphinx/man/props/P_NO_ATTACK b/doc/sphinx/man/props/P_NO_ATTACK
new file mode 100644
index 0000000..9ca4c95
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_ATTACK
@@ -0,0 +1,99 @@
+
+P_NO_ATTACK
+***********
+
+
+NAME
+====
+
+   P_NO_ATTACK "no_attack"
+
+
+DEFINIERT IN
+============
+
+   <living/combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Wenn ein NPC nicht angreifbar sein soll (weil er zum Beispiel in einer
+   Gilde oder einer Quest Informationen vermittelt oder aehnlichen), sollte
+   man diese Property auf einen Wert ungleich Null setzen. Sie wird immer
+   abgefragt, wenn ermittelt wird, ob ein Lebewesen prinzipiell angreifbar
+   ist. D.h. auch, dass nach Abfragen von P_NO_ATTACK _nicht_ immer ein
+   Kampf gestartet wird und dass man dabei _nicht_ im Kampf sein muss!
+
+   Gibt man hier einen String an (mit einem Satzzeichen und "\n" abge-
+   schlossen), wird dieser bei direkten Angriffen ausgegeben. Bei anderen
+   Datentypen wird eine Defaultmeldung ausgegeben. Die Defaultmeldung
+   lautet: "<Name> laesst sich nicht angreifen!\n"
+
+   Mit direkten Angriffen sind 'toete <name>' und Angriffszauber gemeint
+   (bzw. alles, was living/life::Kill(), spellbook::TryAttackSpell(),
+   spellbook::TryDefaultAttackSpell() und spellbook::FindEnemyVictim()
+   aufruft).
+
+
+ACHTUNG
+=======
+
+   1) Zum Thema QueryMethoden auf P_NO_ATTACK
+      Grundsaetzlich legt man entweder eine Query-Methode auf P_NO_ATTACK:
+         Set(P_NO_ATTACK, #'my_no_attack, F_QUERY_METHOD);
+      oder definiert eine Funktion _query_no_attack() im NPC.
+
+      Wie muss nun eine solche Funktion aussehen? Z.B.:
+
+
+
+      int|string my_no_attack() {
+        if (!objectp(this_player())) return 0;
+        if (opfer==getuid(this_player()) || this_player()==this_object())
+          return(0);
+        return(1); //nicht angreifbar
+      }
+
+      Diese Funktion macht den NPC nun nur fuer den Spieler 'opfer' angreifbar.
+      Stattdessen kann natuerlich auch jede andere Bedingung genutzt werden.
+
+      Aber warum die zweite Bedingung, this_player()==this_object()?
+      Warum sollte der NPC sich selber angreifen duerfen?
+
+      Das liegt an folgenden 2 Dingen:
+
+      1. Kaempfer kriegen bei eingeschaltetem Fokus Probleme, wenn man das
+      nicht macht. Das liegt an folgendem: Wenn der NPC angreift, ruft er
+      natuerlich Defend() im Spieler auf. Dieses schaut nach, ob der Spieler
+      den Skill SK_MAGICAL_DEFENSE hat. Dieser ist bei Kaempfern das Parieren.
+      Dieses schaut nach, ob der Fokus aktiv ist, wenn ja, wird dem
+      ge'fokus'te Gegner besonders gut ausgewichen. Zu diesem Zweck wird die
+      Liste der Feind im Raum erstellt mit PresentEnemies() abgerufen. Dieses
+      fragt aber in allen (potentiellen) Gegnern P_NO_ATTACK ab und beendet
+      den Kampf mit allen Gegnern, die nicht angreifbar sind. Bei dieser
+      Abfrage ist jedoch TP==NPC, weil der ja angreift. Wenn er nun 1
+      zurueckgibt, wird der Kampf an der Stelle beendet.
+
+      2. Wenn der NPC den Spieler angreift, wird im Spieler InsertEnemy(NPC)
+      aufgerufen. Auch diesem Fall findet die Abfrage von P_NO_ATTACK statt,
+      da InsertEnemy() ja erstmal rausfinden muss, ob der Gegner angreifbar
+      ist, bevor er in die Feindliste eingetragen wird. Da der NPC den
+      Angriff beginnt, ist TP der NPC. Wenn die Query-Methode auf P_NO_ATTACK
+      hier abbricht, wird der NPC nicht in die Feindliste des Spielers
+      eingetragen. Dann bekaempft der NPC den Spieler, aber der Spieler nicht
+      den NPC.
+
+
+   2) P_NO_ATTACK des NPC wird z.B. beim Kampf eines Kaempfers mit dem NPC
+      pro Kampfrunde um die 10mal abgerufen. Wenn der Kaempfer nur eine
+      Attacke macht. Wenn er noch Sonderattacken machen, Spells ausfuehrt,
+      etc. wird das noch mehr. D.h. was auch immer ihr in der Query-Methode
+      im NPC macht:
+      Es sollte schnell sein, jeder Tick an Rechenzeit zaehlt hier xfach!
+
+
+LETZTE AENDERUNG
+================
+
+09.11.2015, Arathorn
diff --git a/doc/sphinx/man/props/P_NO_BAD b/doc/sphinx/man/props/P_NO_BAD
new file mode 100644
index 0000000..ae2adf2
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_BAD
@@ -0,0 +1,43 @@
+
+P_NO_BAD
+********
+
+
+NAME
+====
+
+   P_NO_BAD                      "std_food_no_bad"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Flag, ob die Speise ewig haltbar ist.
+   0: Speise verdirbt nach der Anzahl Sekunden, die in P_LIFETIME
+      angegeben ist bzw. nach einem Reset
+   1: Speise verdirbt nicht
+
+
+
+   ACHTUNG: Diese Property darf nur in Absprache mit der Balance
+            geaendert werden.
+
+
+DEFAULT
+=======
+
+   Initial ist diese Property auf 0 gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_NO_GLOBAL_ATTACK b/doc/sphinx/man/props/P_NO_GLOBAL_ATTACK
new file mode 100644
index 0000000..962186c
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_GLOBAL_ATTACK
@@ -0,0 +1,33 @@
+
+P_NO_GLOBAL_ATTACK
+******************
+
+
+NAME
+====
+
+   P_NO_GLOBAL_ATTACK "no_global_attack"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Setzt man diese Property in einem NPC auf einen Wert ungleich 0, so
+   wird der NPC bei einem "toete alle" nicht angegriffen.
+
+   Damit kann man zB. NPCs, die dem eigenen Schutz dienen (als Folge von
+   Zauberspruechen o.ae.) vor versehentlichen Angriffen schuetzen.
+
+
+SIEHE AUCH
+==========
+
+   /std/npc.c, P_FRIEND
+
+Last modified: Sat May 18 15:26:28 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_NO_PARA_TRANS b/doc/sphinx/man/props/P_NO_PARA_TRANS
new file mode 100644
index 0000000..677f9c8
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_PARA_TRANS
@@ -0,0 +1,30 @@
+
+P_NO_PARA_TRANS
+***************
+
+
+NAME
+====
+
+   P_NO_PARA_TRANS                         "no_para_trans"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn in einem Raum diese Property gesetzt ist, darf dort kein
+   Wechsel in oder aus der Paralellwelt erfolgen. Objekte die so
+   einen Wechsel ermoeglichen sind dafuer verantwortlich diese
+   Property abzufragen.
+
+
+SIEHE AUCH
+==========
+
+   P_NO_TPORT
diff --git a/doc/sphinx/man/props/P_NO_PLAYERS b/doc/sphinx/man/props/P_NO_PLAYERS
new file mode 100644
index 0000000..3cc88c1
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_PLAYERS
@@ -0,0 +1,56 @@
+
+P_NO_PLAYERS
+************
+
+
+NAME
+====
+
+   P_NO_PLAYERS                     "no_players"
+
+
+DEFINIERT IN
+============
+
+   /sys/rooms.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn in einem Raum die Property P_NO_PLAYERS auf einen Wert != 0 gesetzt
+   ist, kann dieser von Spielern auf normalem Wege nicht mehr betreten werden.
+   Magier und Testspieler(*) koennen den Raum betreten; Spieler muessen mit
+   M_NOCHECK hineinbewegt werden.
+
+   Auf diese Weise koennen Gebiete, die noch nicht offiziell angeschlossen
+   sind, vor 'unbeabsichtigtem' Betreten durch Spieler geschuetzt werden.
+
+   Moechte man zu einem schon angeschlossenen Gebiet nachtraeglich eine
+   Parallelwelt einbauen, so sollte P_NO_PLAYERS *dringend* in den
+   Parallelweltraeumen gesetzt werden, bis die Parallelwelt ausdruecklich
+   fuer Spieler freigegeben wird. Andernfalls sind alle Parallelweltraeume,
+   zu denen angeschlossene Normalweltraeume mit gleichem Filenamen existieren,
+   automatisch durch Spieler erreichbar!
+
+   (*) Ausschliesslich Testspieler, die auf den Namen eines existierenden
+   Magiers markiert sind, koennen 'geschuetzte' Raeume betreten.
+   Gildentesties werden wie Spieler behandelt.
+
+
+ANMERKUNG
+=========
+
+   Im Gegensatz zu Bewegungen von Livings wird bei der Bewegung von Gegen-
+   staenden P_NO_PLAYERS nur beim Wechsel der Welt ausgewertet, um z.B. zu
+   verhindern, dass Bumerangs in noch nicht angeschlossene Gebiete fliegen.
+
+   Moechte man in seinem eigenen Gebiet mit Bumerangs o.ae. testen, muss
+   in diesen P_TESTPLAYER gesetzt sein. Das ist zwar eher ein Missbrauch
+   der Property, aber ein Umkompieren vom Werfer war auf Dauer zu teuer. ;-)
+
+
+SIEHE AUCH
+==========
+
+   P_PARA, move
diff --git a/doc/sphinx/man/props/P_NO_REGENERATION b/doc/sphinx/man/props/P_NO_REGENERATION
new file mode 100644
index 0000000..cc672e3
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_REGENERATION
@@ -0,0 +1,52 @@
+
+P_NO_REGENERATION
+*****************
+
+
+NAME
+====
+
+   P_NO_REGENERATION    "no_regeneration"
+
+
+DEFINIERT IN
+============
+
+   <living/life.h> und <health.h>
+
+
+BESCHREIBUNG
+============
+
+   Durch das Setzen dieser Property kann man verhindern, das ein Lebewesen
+   sich regeneriert.
+   Es gibt sieben moegliche Werte, die man durch verodern kombinieren
+   kann:
+   NO_REG_HP        : es werden keine HP regeneriert
+   NO_REG_BUFFER_HP : es werden beim "tanken" keine HP regeneriert
+   NO_REG_SP        : es werden keine SP regeneriert
+   NO_REG_BUFFER_SP : es werden beim "tanken" keine SP regeneriert
+   NO_REG_ALCOHOL   : der Alkoholspiegel wird nicht gesenkt
+   NO_REG_DRINK     : der Fluessigkeitsspiegel wird nicht gesenkt
+   NO_REG_FOOD      : der Nahrungsspiegel wird nicht gesenkt
+   sowie die Konstante NO_REG, die eine Kombination aller moeglichen
+   Werte darstellt (quasi das groesstmoegliche Uebel ;).
+
+
+BEISPIELE
+=========
+
+   Dieses Lebewesen heilt nur beim "tanken" in der Kneipe, ansonsten
+   nicht:
+
+
+
+   SetProp( P_NO_REGENERATION, NO_REG_HP|NO_REG_SP );
+
+
+SIEHE AUCH
+==========
+
+   /std/living/life.c
+
+Last modified: 14-05-2001 by Mupfel
diff --git a/doc/sphinx/man/props/P_NO_SCORE b/doc/sphinx/man/props/P_NO_SCORE
new file mode 100644
index 0000000..49cfee5
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_SCORE
@@ -0,0 +1,73 @@
+
+P_NO_SCORE
+**********
+
+
+NAME
+====
+
+   P_NO_SCORE               "no_score"
+
+
+DEFINIERT IN
+============
+
+   /secure/scoremaster.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property stellt ein Flag innerhalb von Lebewesen dar, welches
+   standardmaessig nicht gesetzt ist. In diesem Fall werden
+   Erstkillstufenpunkte an den Angreifer vergeben, sofern er ein Opfer
+   toetet.
+
+   Innerhalb eines Teams koennen Erstkillstufenpunkte auch an
+   Mitglieder vergeben werden, die das Lebewesen nicht selbst getoetet
+   haben. Voraussetzung hierfuer ist, dass derjenige, der den letzten
+   Schlag ausfuehrte, den Kill schon hat. Danach werden Mitglieder des
+   Teams gesucht, welche den Kill noch nicht haben und in der Formation
+   moeglichst weit vorne stehen.
+
+   Mit der gesetzten Property P_NO_SCORE im Opfer erreicht man nun,
+   dass diese Gutschrift fuer den/die Angreifer unterbunden wird.
+
+
+BEISPIEL
+========
+
+   Folgendermassen unterbindet man die Vergabe von
+   Erstkillstufenpunkten fuer den Tod eines NPC's:
+
+     include "/secure/scoremaster.h"
+     inherit "std/npc";
+     void create() {
+       ::create();
+       ...
+       SetProp(P_NO_SCORE,1);
+     }
+
+   Damit kann P_XP einen Wert haben, der eigentlich zum automatischen
+   Eintragen von Erstkillstufenpunkten fuer ein Lebewesen fuehrt, und
+   trotzdem wird dieser Eintrag nicht vorgenommen.
+   Sinnvoll ist dies insbesondere bei Lebewesen, die nicht jeder
+   Spieler erreichen kann (man moechte doch eine gewisse
+   Chancengleichheit fuer das Erreichen von Stufenpunkten bieten).
+
+
+BEMERKUNGEN
+===========
+
+   Auch die Vergabe von Erfahrungspunkten kann explizit unterbunden
+   werden. Hierfuer gibt es die aehnlich geartete Property P_NO_XP.
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  GiveKillScore(), do_damage()
+   Verwandt:    P_NO_XP
+   Sonstiges:   P_XP
+
+14.Feb 2007 Gloinson
diff --git a/doc/sphinx/man/props/P_NO_STD_DRINK b/doc/sphinx/man/props/P_NO_STD_DRINK
new file mode 100644
index 0000000..f8c2f33
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_STD_DRINK
@@ -0,0 +1,37 @@
+
+P_NO_STD_DRINK
+**************
+
+
+NAME
+====
+
+   P_NO_STD_DRINK                  "no_std_drink"
+
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   Durch setzen dieser Property in einer Kneipe sorgt man dafuer, dass
+   "Standard-Drinks" (z.B. Gluehwein im Dezember) nicht in das Menue
+   der Kneipe aufgenommen werden.
+
+
+BEMERKUNGEN
+===========
+
+   Keine.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
+Last modified: Sat Mar 04 22:42:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/props/P_NO_TPORT b/doc/sphinx/man/props/P_NO_TPORT
new file mode 100644
index 0000000..1c6de77
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_TPORT
@@ -0,0 +1,30 @@
+
+P_NO_TPORT
+**********
+
+
+NAME
+====
+
+   P_NO_TPORT                    "tport"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Kann folgende Werte annnehmen (definiert in moving.h):
+   NO_TPORT_IN        = Man kann nicht in den Raum hinein teleportieren.
+   NO_TPORT_OUT = Man kann nicht aus dem Raum hinaus teleportieren.
+   NO_TPORT   = Weder noch.
+
+
+SIEHE AUCH
+==========
+
+   P_NO_PARA_TRANS
diff --git a/doc/sphinx/man/props/P_NO_TRAVELING b/doc/sphinx/man/props/P_NO_TRAVELING
new file mode 100644
index 0000000..cd1073a
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_TRAVELING
@@ -0,0 +1,48 @@
+
+P_NO_TRAVELING
+**************
+
+
+NAME
+====
+
+   P_NO_TRAVELING                   "no_traveling"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht der allgemeine reise-Befehl nicht zur Verfuegung.
+
+
+BEMERKUNGEN
+===========
+
+   P_NO_TRAVELING wird in Transportern gesetzt wenn Spieler ihn
+   nicht mehr 'automatisch' mittels des 'reise'-Befehls betreten
+   koennen sollen.
+
+   Sie bekommen in dem Transporter und in den Zielraeumen auch
+   keinerlei Hinweise darauf, wohin sie evtl. reisen koennten.
+
+
+
+   Standardmaessig ist P_NO_TRAVELING natuerlich 0.
+
+
+SIEHE AUCH
+==========
+
+   reise
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_NO_XP b/doc/sphinx/man/props/P_NO_XP
new file mode 100644
index 0000000..b16c4ab
--- /dev/null
+++ b/doc/sphinx/man/props/P_NO_XP
@@ -0,0 +1,65 @@
+
+P_NO_XP
+*******
+
+
+NAME
+====
+
+   P_NO_XP                    "no_xp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Im Normalfall bekommt man im Kampf gegen einen Gegner fuer Treffer
+   und beim Toeten eine XP-Gutschrift.
+
+   Ist P_NO_XP gesetzt, so erhaelt man keinerlei XP-Gutschriften
+   fuer den Kampf oder den Tod des NPCs.
+
+
+BEISPIEL
+========
+
+   Folgendermassen unterbindet man die Vergabe von Erfahrungspunkte
+   fuer den Angriff eines NPC's:
+
+     include "/sys/living/life.h"
+     inherit "std/npc";
+     void create() {
+       ::create();
+       ...
+       SetProp(P_NO_XP,1);
+     }
+
+   Damit kann P_XP trotzdem einen Wert im NPC haben, der
+   Erstkillstufenpunkte fuer Lebewesen automatisch eintraegt!
+
+   Auch fuer das kurzzeitige Unterbinden der Vergabe von
+   Erfahrungspunkten ist diese Property sinnvoller, als P_XP im NPC
+   auf 0 zu setzen.
+
+
+BEMERKUNGEN
+===========
+
+   Auch die Vergabe von Erstkillstufenpunkten kann explizit unterbunden
+   werden. Hierfuer gibt es die aehnlich geartete Property P_NO_SCORE.
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp(), DistributeExp(), do_damage()
+   Properties:  P_XP, P_LAST_XP
+   Verwandt:    P_NO_SCORE
+   Sonstiges:   P_TOTAL_WC, create_default_npc()
+
+14.Feb 2007 Gloinson
diff --git a/doc/sphinx/man/props/P_NPC b/doc/sphinx/man/props/P_NPC
new file mode 100644
index 0000000..60651d8
--- /dev/null
+++ b/doc/sphinx/man/props/P_NPC
@@ -0,0 +1,21 @@
+
+P_NPC
+*****
+
+
+NAME
+====
+
+   P_NPC                         "is_npc"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt bei Monstern.
diff --git a/doc/sphinx/man/props/P_NPC_FASTHEAL b/doc/sphinx/man/props/P_NPC_FASTHEAL
new file mode 100644
index 0000000..3c358ef
--- /dev/null
+++ b/doc/sphinx/man/props/P_NPC_FASTHEAL
@@ -0,0 +1,39 @@
+
+P_NPC_FASTHEAL
+**************
+
+
+NAME
+====
+
+   P_NPC_FASTHEAL                  "npc_fastheal"
+
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   Durch setzen dieser Property in einer Kneipe sorgt man dafuer, dass
+   bei NPCs, die dort "tanken", die Lebens- und Konzentrationspunkte
+   direkt erhoeht werden und nicht, wie bei ungesetzter Property, in
+   die jew. Buffer geschrieben werden.
+
+
+BEMERKUNGEN
+===========
+
+   Die Benutzung dieser Property sollte nicht unbedingt zum Standard
+   werden.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
+Last modified: Wed Sep 29 13:58:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/props/P_NR_HANDS b/doc/sphinx/man/props/P_NR_HANDS
new file mode 100644
index 0000000..a3bf299
--- /dev/null
+++ b/doc/sphinx/man/props/P_NR_HANDS
@@ -0,0 +1,45 @@
+
+P_NR_HANDS
+**********
+
+
+NAME
+====
+
+   P_NR_HANDS "nr_hands"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Wieviele Haende muss man frei haben, um die Waffe zuecken oder den
+   Schild tragen zu koennen?
+   Dieser Wert muss mindestens 1 betragen!
+
+   Sollen Spieler die Waffe benutzen koennen, so sind hier nur die Werte 1
+   und 2 moeglich. Falls die Waffe nur von Monstern benutzbar sein soll,
+   kann man hier auch hoehere Werte eintragen (dazu muss man beim Monster
+   P_MAX_HANDS entsprechend hoch setzen). Als Beispiel sei hier nur das
+   vierhaendige Schwert aus dem Friedhof genannt.
+
+   Defaultmaessig sind alle Waffen Zweihaender.
+
+   Diese Property kann auch bei Zaubern benutzt werden, bei denen man eine
+   oder mehrere Haende frei haben muss.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+   /std/weapon.c, /std/spellbook.c
+
+Last modified: Sun May 19 15:00:02 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_ORAKEL b/doc/sphinx/man/props/P_ORAKEL
new file mode 100644
index 0000000..773a80d
--- /dev/null
+++ b/doc/sphinx/man/props/P_ORAKEL
@@ -0,0 +1,22 @@
+
+P_ORAKEL
+********
+
+
+NAME
+====
+
+   P_ORAKEL                      "orakel"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property gesetzt ist, kann der Wanderer in diesen
+   Raum hinein.
diff --git a/doc/sphinx/man/props/P_ORIG_FILE_NAME b/doc/sphinx/man/props/P_ORIG_FILE_NAME
new file mode 100644
index 0000000..53243c2
--- /dev/null
+++ b/doc/sphinx/man/props/P_ORIG_FILE_NAME
@@ -0,0 +1,21 @@
+
+P_ORIG_FILE_NAME
+****************
+
+
+NAME
+====
+
+   P_ORIG_FILE_NAME                "original_object_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einer Leiche der Filename des Gestorbenen.
diff --git a/doc/sphinx/man/props/P_ORIG_NAME b/doc/sphinx/man/props/P_ORIG_NAME
new file mode 100644
index 0000000..e44a06d
--- /dev/null
+++ b/doc/sphinx/man/props/P_ORIG_NAME
@@ -0,0 +1,21 @@
+
+P_ORIG_NAME
+***********
+
+
+NAME
+====
+
+   P_ORIG_NAME                   "original_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einer Leiche der Name des Gestorbenen. (name(RAW))
diff --git a/doc/sphinx/man/props/P_PARA b/doc/sphinx/man/props/P_PARA
new file mode 100644
index 0000000..0a7f416
--- /dev/null
+++ b/doc/sphinx/man/props/P_PARA
@@ -0,0 +1,73 @@
+
+P_PARA
+******
+
+
+NAME
+====
+
+   P_PARA                        "para"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Nummer der Parallelwelt, in der sich ein Spieler befindet.
+
+   Ist die Property P_PARA auf Null gesetzt, so befindet sich der Spieler in
+   der 'Normalwelt'. Gibt es bei einer Bewegung dieses Spielers mehrere
+   moegliche Zielraeume mit identischem Namen aber unterschiedlichen Endungen
+   'name.c', 'name^1.c', 'name^2.c' etc., so wird der Spieler in den Raum
+   'name.c' bewegt.
+
+   Wird die Property P_PARA auf einen Wert n>0 gesetzt, so landet der Spieler
+   bei einer Bewegung im Raum 'name^n.c'. Ist kein Raum mit entsprechender
+   Endung vorhanden, wird der Spieler stattdessen in den Normalweltraum
+   bewegt.
+
+   Diese Prop kann auch in einem Virtual Compiler gesetzt werden. In diesem
+   Fall schraenkt sie die Dimensionen ein, in denen der VC Objekte erzeugt.
+   Die Prop kann eine einzelne Ziffer (Int) oder ein Array von Ints
+   aufnehmen, dann ist der VC fuer alle angegeben Dimensionen zustaendig.
+   Ein leeres Array erlaubt gar keine Para-Objekte.
+
+
+ANMERKUNG
+=========
+
+   Die Endung '^0' kennzeichnet _nicht_ die Normalwelt. So lange kein Ausgang
+   explizit auf den Raum 'name^0.c' verweist, wird kein Spieler den Raum
+   betreten koennen. Deshalb kann man die Endung '^0' z.B. dazu benutzen, um
+   eigene Standardraeume fuer ein Gebiet zu schreiben, die dann sowohl von
+   den Normal- als auch von den Parallelweltraeumen inheritet werden.
+
+   Raeume mit Endungen '^n.c', bei denen 'n' keine positive ganze Zahl ist,
+   werden nicht beachtet.
+
+   Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit von
+   P_PARA landet, ist die Funktion move() zustaendig. Als Magier muss man sich
+   darum nicht gesondert kuemmern. Das heisst aber auch, dass beim Anschluss
+   eines Normalweltraumes automatisch alle in dem Verzeichnis mit gleichem
+   Namen vorhandenen Parallelweltraeume mit angeschlossen werden.
+
+   Sollen einzelne Parallelweltraeume noch nicht angeschlossen werden, so muss
+   in ihnen die Property P_NO_PLAYERS gesetzt werden. Diese Raeume sind dann
+   nur durch Magier und Testspieler zu betreten (und zu testen).
+
+   In Paraweltraeumen liefert P_PARA 'n' zurueck.
+   Man kann also z.B. in NPCs einfach ueber environment()->QueryProp(P_PARA)
+   abfragen, in welcher Parawelt sich dieser gerade befindet.
+
+
+SIEHE AUCH
+==========
+
+   P_NO_PLAYERS, move, pararaeume
+
+25.Jan 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_PARRY b/doc/sphinx/man/props/P_PARRY
new file mode 100644
index 0000000..40ddecd
--- /dev/null
+++ b/doc/sphinx/man/props/P_PARRY
@@ -0,0 +1,47 @@
+
+P_PARRY
+*******
+
+
+NAME
+====
+
+   P_PARRY "parry"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property legt fest, inwiefern eine Waffe als Parierwaffe
+   genutzt werden kann. Moegliche Werte:
+
+       PARRY_NOT     Eine reine Angriffswaffe ohne Parierfunktion.
+
+       PARRY_TOO     Eine kombinierte Angriffs- und Parierwaffe.
+
+       PARRY_ONLY    Eine reine Parierwaffe. Diese kann zusaetzlich
+                     zu einer normalen Waffe gezueckt werden.
+
+   Man sollte nur die in <combat.h> definierten Konstanten verwenden.
+
+
+BEMERKUNGEN
+===========
+
+   Durch diese Propertie laesst sich _kein_ Parade-Bonus fuer Trves
+   setzen! Alle Gilden haben etwas davon. Vor Verwendung bitte mit
+   der Objekt-Balance absprechen.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon/combat.c
+
+Last modified: Sat Jun 01 13:28:45 2001 by Tilly
diff --git a/doc/sphinx/man/props/P_PARRY_WEAPON b/doc/sphinx/man/props/P_PARRY_WEAPON
new file mode 100644
index 0000000..9ee60aa
--- /dev/null
+++ b/doc/sphinx/man/props/P_PARRY_WEAPON
@@ -0,0 +1,30 @@
+
+P_PARRY_WEAPON
+**************
+
+
+NAME
+====
+
+   P_PARRY_WEAPON "parry_weapon"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, welche Parierwaffe ein Spieler derzeit
+   gezueckt hat.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon/combat.c, /std/living/combat.c
+
+Last modified: Sat Jun 26 15:23:00 1999 by Paracelsus
diff --git a/doc/sphinx/man/props/P_PEACE_HISTORY b/doc/sphinx/man/props/P_PEACE_HISTORY
new file mode 100644
index 0000000..eab38d5
--- /dev/null
+++ b/doc/sphinx/man/props/P_PEACE_HISTORY
@@ -0,0 +1,62 @@
+
+P_PEACE_HISTORY
+***************
+
+
+NAME
+====
+
+   P_PEACE_HISTORY      "_peace_history"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Prop wird nach Gilden getrennt gespeichet, wie oft das Lebewesen
+   in letzter Zeit befriedet worden ist. Diese Information geht in die
+   Chance auf eine zukuenftige Befriedung ein.
+   Die Zaehler werden im Durchschnitt alle 2700s um 2-3 reduziert.
+   Die Datenstruktur ist ein Array, welches einen Zeitstempel als erstes
+   Element und ein Mapping als zweites enthaelt. Das Mapping enthaelt unter
+   den Gildennamen als Keys den ganzzahligen Zaehler erfolgreicher
+   Befriedungen von Spielern dieser Gilde.
+
+
+BEMERKUNGEN
+===========
+
+   * Diese Property sollte niemals direkt geaendert werden. Bitte greift also
+     nur lesend darauf zu. Sollte hiermit Schindluder getrieben werden,
+     werden die Daten vor externer Aenderung geschuetzt.
+   * Die Datenstruktur in dieser Prop kann in Zukunft u.U. geaendert werden.
+     Daher aendert sie am besten auch nicht im eigenen NPC oder seid darauf
+     gefasst, irgendwann Hand anlegen zu muessen.
+   * Die Aktualisierung (auch die Reduktion) findet im Zuge eines
+     QueryPacify() statt, nicht im Reset des Lebewesens.
+
+
+BEISPIEL
+========
+
+   In P_PEACE_HISTORY steht:
+   ({1209654597, (["zauberer": 3, "klerus": 4]) })
+   Bei der Berechnung der naechsten Befriede-Chance gehen bei Zauberern also
+   3 erfolgreiche Versuche, bei Klerikern 4 erfolgreiche Versuche ein.
+   Der Zeitwert an erster Stelle des Arrays wird der bei der Berechnung der
+   naechsten Reduktion der Zaehler beruecksichtigt. (Genaues: s. combat.c)
+
+
+SIEHE AUCH
+==========
+
+   P_PEACE_ACCEPT
+   QueryPacify()
+   /std/living/combat.c
+
+01.05.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_PERM_STRING b/doc/sphinx/man/props/P_PERM_STRING
new file mode 100644
index 0000000..373c516
--- /dev/null
+++ b/doc/sphinx/man/props/P_PERM_STRING
@@ -0,0 +1,24 @@
+
+P_PERM_STRING
+*************
+
+
+NAME
+====
+
+   P_PERM_STRING                 "perm_string"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Fuer Sprachflueche, Property ist im Spieler-Objekt zu setzen. In dem
+   Objekt, das in P_PERM_STRING gespeichert ist, wird bei Sprachbefehlen
+   permutate_string(str) aufgerufen und der zurueckgegebene String
+   stattdessen ausgegeben.
diff --git a/doc/sphinx/man/props/P_PICK_MSG b/doc/sphinx/man/props/P_PICK_MSG
new file mode 100644
index 0000000..76b2760
--- /dev/null
+++ b/doc/sphinx/man/props/P_PICK_MSG
@@ -0,0 +1,78 @@
+
+P_PICK_MSG
+**********
+
+
+NAME
+====
+
+   P_PICK_MSG                         "pick_message"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/put_and_get.h
+
+
+BESCHREIBUNG
+============
+
+   Mit P_PICK_MSG kann man die Meldung, die man beim Aufnehmen eines
+   Objektes bekommt, modifizieren.
+
+   Folgende Werte sind moeglich:
+
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum.
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das genommen wird
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Etwas Sand" );
+    SetProp( P_LONG, break_string(
+     "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+
+    SetProp( P_NAME, "Sand" );
+    AddId( ({"sand"}) );
+    SetProp( P_GENDER, MALE );
+
+    SetProp( P_PICK_MSG, ({
+     "Du schaufelst @WEN2 in deine Hand.",
+     "@WER1 schaufelt @WEN2 in eine Hand."}));
+    ...
+   }
+
+   Das ganze fuehrt bei Ugars "nimm sand" zu folgenden
+   Meldungen:
+
+   Ugar: "Du schaufelst den Sand in deine Hand."
+   Raum: "Ugar schaufelt den Sand in eine Hand."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), pick_obj(L), /std/living/put_and_get.c
+
+14. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_PILE_NAME b/doc/sphinx/man/props/P_PILE_NAME
new file mode 100644
index 0000000..edb0123
--- /dev/null
+++ b/doc/sphinx/man/props/P_PILE_NAME
@@ -0,0 +1,22 @@
+
+P_PILE_NAME
+***********
+
+
+NAME
+====
+
+   P_PILE_NAME                   "file_name"
+
+
+DEFINIERT IN
+============
+
+   /sys/container/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einer Leiche der Name des Gestorbenen im Dativ. (name(WEM))
+   Wird vom Haufen benoetigt.
diff --git a/doc/sphinx/man/props/P_PLAYER_LIGHT b/doc/sphinx/man/props/P_PLAYER_LIGHT
new file mode 100644
index 0000000..ce0c22d
--- /dev/null
+++ b/doc/sphinx/man/props/P_PLAYER_LIGHT
@@ -0,0 +1,44 @@
+
+P_PLAYER_LIGHT
+**************
+
+
+NAME
+====
+
+   P_PLAYER_LIGHT                       "player_light"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt den Lichtlevel an, mit dem ein Lebewesen sieht, ein Abfragen dieser
+   Property kann z.B. sinnvoll sein wenn man abfragen will ob ein Spieler
+   genug Licht dabei hat um ein bestimmtes Detail untersuchen zu koennen.
+
+   Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
+   da das Lichtlevel ggf. neu berechnet werden muss!
+
+   Ein direktes setzen dieser Property ist NICHT moeglich. Es ist jedoch
+   moeglich entweder eine Closure zu benutzen oder den Wert ueber einen
+   P_LIGHT_MODIFIER zu veraendern.
+
+   Um zu erreichen, das ein NPC Nachtsicht bekommt, gibt es nun 3 Varianten.
+   - eine closure:
+       Set(P_PLAYER_LIGHT, function int () {return 1;} , F_QUERY_METHOD)
+     dieses bedeutet, dass der NPC in jeder Dunkelheit perfekt sehen kann.
+   - das setzen von einem P_LIGHT_MODIFIER
+   - das benutzen des stdskills. Hierzu schreibt man in das create() des
+     NPCs einfach ein: ModifySkill(SK_NIGHTVISION, 10000);
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT_MODIFIER, P_LIGHT, P_TOTAL_LIGHT, P_INT_LIGHT, CannotSee()
diff --git a/doc/sphinx/man/props/P_PLURAL b/doc/sphinx/man/props/P_PLURAL
new file mode 100644
index 0000000..eed829f
--- /dev/null
+++ b/doc/sphinx/man/props/P_PLURAL
@@ -0,0 +1,58 @@
+
+P_PLURAL
+********
+
+
+NAME
+====
+
+   P_PLURAL                      "plural"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/language.h
+
+
+BESCHREIBUNG
+============
+
+   Mit Hilfe von P_PLURAL koennen auch nicht Unit Objekte als Pluralobjekte
+   markiert werden. Bei einem Wert > 1 wird der Wert ausserdem auch noch in
+   den Namen eingefuegt. Sollte man in eigenem Code zulassen wollen, das
+   etwas mit bestimmten Objekten geschieht, dann sollte man die Verben
+   entsprechen konjugieren.
+
+
+BEMERKUNGEN
+===========
+
+   Wirkt nicht auf Todesmeldungen -> siehe dafuer P_KILL_MSG
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Stiefel"); SetProp(P_PLURAL, 2);
+   name(WER, 1) -> "die zwei Stiefel"
+
+   SetProp(P_NAME, "Stiefel"); SetProp(P_PLURAL, 1);
+   name(WER, 1) -> "die Stiefel"
+
+   // Ein Beispiel fuer das konjugieren von Verben
+   static int cmd_opfer(string str)
+   {
+      int i;
+      object *obs;
+      notify_fail("Was moechtest Du opfern?\n");
+      if (!str || !sizeof(obs=PL->find_obs(str))) return 0;
+      for (i=sizeof(obs)-1; i>=0; i--)
+         if (obs[i]->QueryProp(P_VALUE)<=0)
+           write(obs[i]->Name(WER)+" "
+                +(ob->QueryProp(P_PLURAL) ? "sind" : "ist")
+                +" doch gar nichts wert.\n");
+         else obs[i]->remove();
+   }
+
+26. Juni 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_POISON b/doc/sphinx/man/props/P_POISON
new file mode 100644
index 0000000..2ab5dc1
--- /dev/null
+++ b/doc/sphinx/man/props/P_POISON
@@ -0,0 +1,21 @@
+
+P_POISON
+********
+
+
+NAME
+====
+
+   P_POISON                      "poison"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wie stark wir vergiftet sind (0-11)
diff --git a/doc/sphinx/man/props/P_POISON_DELAY b/doc/sphinx/man/props/P_POISON_DELAY
new file mode 100644
index 0000000..079efd9
--- /dev/null
+++ b/doc/sphinx/man/props/P_POISON_DELAY
@@ -0,0 +1,25 @@
+
+P_POISON_DELAY
+**************
+
+
+NAME
+====
+
+   P_POISON_DELAY                     "poison_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats nach denen sich die Giftwirkung erneut
+   zeigt. Je kleiner der Wert, desto empfindlicher ist das Lebewesen
+   gegen Gift.
+   Aenderungen dieser Property in Spielern beduerfen der Genehmigung
+   des EMs fuer Balance.
diff --git a/doc/sphinx/man/props/P_PORTIONS b/doc/sphinx/man/props/P_PORTIONS
new file mode 100644
index 0000000..a6bdf16
--- /dev/null
+++ b/doc/sphinx/man/props/P_PORTIONS
@@ -0,0 +1,39 @@
+
+P_PORTIONS
+**********
+
+
+NAME
+====
+
+   P_PORTIONS                    "std_food_portions"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property steht die Anzahl der Portionen einer Speise.
+   Es duerfen nur Werte > -1 gesetzt werden. Ist diese Property 0,
+   wird die Speise als leer bzw. verbraucht angesehen und kann nicht
+   konsumiert werden.
+
+
+DEFAULT
+=======
+
+   Initial ist diese Property auf 1 gesetzt, die Speise ist also mit
+   einem Bissen/Schluck verbraucht bzw. leer.
+
+
+SIEHE AUCH
+==========
+
+   /std/food.c, wiz/food
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_POST b/doc/sphinx/man/props/P_POST
new file mode 100644
index 0000000..975a884
--- /dev/null
+++ b/doc/sphinx/man/props/P_POST
@@ -0,0 +1,82 @@
+
+P_POST
+******
+
+
+NAME
+====
+
+   P_POST                          "Post"
+
+
+DEFINIERT IN
+============
+
+   /mail/post.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property laesst sich die Versendeerlaubnis von Paketen
+   regeln. Hierbei gibt es zum einen die postlagernden Pakete, die man
+   in einer Post abholen muss, und es gibt die sogenannten
+   Kurierpakete, welche direkt und unmittelbar zugestellt werden.
+   Nicht immer ist es erwuenscht, dass Pakete aus der Ferne in einen
+   Raum geschickt werden duerfen. Dies duerfte insbesondere innerhalb
+   von Gebieten interessant sein, in welche man nur beschraenkt viele
+   Objekte mitfuehren kann. Mit dieser Property nun ist es leicht
+   moeglich, dies zu verbieten. Man kann auch in den Objekten selbst
+   angeben, ob diese per postlagerndem Paket bzw. Kurierpaket
+   verschickt werden duerfen. Dies duerfte zum Beispiel bei Komponenten
+   fuer Spells oder fuer Unique-Objekte interessant sein.
+   Folgende Werte sind moeglich, wobei in Raeumen und Objekten
+   Standardmaessig PP_DEFAULT genutzt wird:
+
+     PP_FORBIDDEN          -2      // auf jeden Fall verboten
+     PP_NO_EXPRESS         -1      // Kurierpakete verboten
+     PP_DEFAULT             0      // Default
+     PP_NORMAL_ALLOWED      1      // postlagernde Pakete erlaubt
+     PP_ALLOWED             2      // auf jeden Fall erlaubt
+
+   Raeume, die von /std/post.c abgeleitet wurden, nutzen als Standard
+   natuerlich PP_ALLOWED.
+
+
+BEISPIEL
+========
+
+   Um Kurierpakete fuer einen Raum zu verbieten, nutzt man die
+   Funktionalitaet dieser Property folgendermassen:
+
+     include "/mail/post.h"
+     ...
+     void create()
+     { ::create();
+       ...
+       SetProp(P_POST,PP_NO_EXPRESS);
+       ...
+     }
+
+   Objekte selbst koennte man folgendermassen aus Paketen verbannen,
+   welche versendet werden sollen:
+
+     include "/mail/post.h"
+     ...
+     void create()
+     { ::create();
+       ...
+       SetProp(P_POST,PP_FORBIDDEN);
+       ...
+     }
+
+   In letzterem Fall funktionieren im Gegensatz zum ersten Beispiel
+   auch keine postlagernden Pakete mehr.
+
+
+SIEHE AUCH
+==========
+
+   /std/post.c, /std/mailcabin.c, /p/service/loco/std/mailcabin.c
+
+Last modified: Sun Sep  6 19:34:37 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_POTIONROOMS b/doc/sphinx/man/props/P_POTIONROOMS
new file mode 100644
index 0000000..0df158f
--- /dev/null
+++ b/doc/sphinx/man/props/P_POTIONROOMS
@@ -0,0 +1,35 @@
+
+P_POTIONROOMS
+*************
+
+
+NAME
+====
+
+   P_POTIONROOMS                 "potionrooms"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/potion.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit den Nummern der Raeume, in denen der Spieler noch Zauber-
+   traenke hat. Die Freischaltung als bekannt geschieht im Orakel.
+   Die Zuordnung der Raeume und Nummern geschieht im Potionmaster.
+
+   Nur lesbare _query - Property.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  FindPotion(), AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_KNOWN_POTIONROOMS
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_PRAY_ROOM b/doc/sphinx/man/props/P_PRAY_ROOM
new file mode 100644
index 0000000..ad0a469
--- /dev/null
+++ b/doc/sphinx/man/props/P_PRAY_ROOM
@@ -0,0 +1,54 @@
+
+P_PRAY_ROOM
+***********
+
+
+NAME
+====
+
+   P_PRAY_ROOM                      "_lib_p_pray_room"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Dies ist der Raum, in den der Spieler nach dem Ende der Todessequenz
+   bewegt wird, d.h. ein Raum, wo er beten kann, um einen neuen Koerper zu
+   erhalten.
+   Der Raum muss als String angegeben werden (kein Objekt).
+
+   Diese Property wird im Spieler rebootfest gespeichert.
+
+   Der jeweils gueltige Betraum wird im Spieler mittels QueryPrayRoom()
+   ermittelt. Jede Rasse hat einen Default fuer diese Funktion. Wird die
+   Property auf 0 dgesetzt, wird dieser Default wiederhergestellt.
+
+   Von einer Ueberlagerung mittels Query- oder gar Setmethoden wird
+   abgeraten. Ebenso lasst bitte die Modusbits unveraendert.
+
+   Vor einer Aenderung dieser Property sollte geprueft werden, ob sie 0 ist.
+   Wenn nicht, sollte von einem Setzen der Property abgesehen werden, da dann
+   schon jemand anders den Betraum des Spielers geaendert hat. (Gleiches gilt
+   fuers Loeschen.) Bitte niemals den Inhalt der Property woanders speichern
+   und spaeter zurueckschreiben.
+
+   Eine dauerhafte Aenderung des Betraums des Spielers muss mit dem EM
+   Rassen und dem EM Gilden abgestimmt werden.
+
+
+SIEHE AUCH
+==========
+
+   QueryPrayRoom(), SetDefaultPrayRoom()
+
+
+LETZTE AeNDERUNG
+================
+
+21.05.2013, Zesstra
diff --git a/doc/sphinx/man/props/P_PREFERED_ENEMY b/doc/sphinx/man/props/P_PREFERED_ENEMY
new file mode 100644
index 0000000..6b629aa
--- /dev/null
+++ b/doc/sphinx/man/props/P_PREFERED_ENEMY
@@ -0,0 +1,41 @@
+
+P_PREFERED_ENEMY
+****************
+
+
+NAME
+====
+
+   P_PREFERED_ENEMY                "pref_enemy"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt ein Array mit folgenden Eintraegen:
+     Eintrag 1:      Integerwert zwischen 0 und 100, welcher die
+                     Wahrscheinlichkeit dafuer angibt, dass ein
+                     Lebewesen bevorzugt bei einem Angriff gewaehlt
+                     werden soll.
+     Eintraege ab 2: Lebewesen, aus welchen per Zufall eines
+                     ausgewaehlt wird, welches beim aktuellen Angriff
+                     bevorzugt wird.
+   Es ist zu beachten, dass solch ein bevorzugtes Opfer natuerlich auch
+   wirklich Gegner sein muss und auch im selben Raum zu stehen hat, wie
+   der Angreifer. Ist dies nicht der Fall, wird dann doch irgendein
+   anderer Gegner aus diesem Raum genommen.
+
+
+SIEHE AUCH
+==========
+
+   QueryPreferedEnemy(), IsEnemy(), SelectEnemy(), Attack(),
+   /std/living/combat.c, /std/living/life.c
+
+Last modified: Wed May 26 16:44:38 1999 by Patryn
diff --git a/doc/sphinx/man/props/P_PRESAY b/doc/sphinx/man/props/P_PRESAY
new file mode 100644
index 0000000..1580b5e
--- /dev/null
+++ b/doc/sphinx/man/props/P_PRESAY
@@ -0,0 +1,22 @@
+
+P_PRESAY
+********
+
+
+NAME
+====
+
+   P_PRESAY                      "presay"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Presay des Spielers. Erscheint vor dem Namen in Kurz/Langbeschreibung.
+   Erscheint auch in name(), also in sag, ruf, teile mit usw.
diff --git a/doc/sphinx/man/props/P_PREVENT_PILE b/doc/sphinx/man/props/P_PREVENT_PILE
new file mode 100644
index 0000000..1ad6807
--- /dev/null
+++ b/doc/sphinx/man/props/P_PREVENT_PILE
@@ -0,0 +1,34 @@
+
+P_PREVENT_PILE
+**************
+
+
+NAME
+====
+
+   P_PREVENT_PILE                   "prevent_pile"
+
+
+DEFINIERT IN
+============
+
+   /sys/container/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn in einem Raum diese Property gesetzt ist, endet das Verwesen einer
+   Leiche damit, dass ihr Inventar in dem Raum verteilt wird. Ist diese
+   Property nicht gesetzt, entsteht ein "Haufen", der das Inventar
+   enthaelt.
+
+   Diese Property sollte nur in Ausnahmefaellen benutzt werden!
+
+   Diese Property ist vor allem fuer "Store-Rooms" gedacht, in denen die
+   Magier die Leiche eines Spieler ablegen und in denen nachher die
+   gesammelten Sachen von einer anderen Stelle aus gesucht werden. In
+   diesem Fall wuerden Spieler sonst die Moeglichkeit haben, einen Haufen
+   als Ganzes zu bekommen, das soll aber *NIE* passieren.
+
+Last modified: Tue May 15 13:56:18 CEST 2007 by Rumata
diff --git a/doc/sphinx/man/props/P_PRE_INFO b/doc/sphinx/man/props/P_PRE_INFO
new file mode 100644
index 0000000..099e592
--- /dev/null
+++ b/doc/sphinx/man/props/P_PRE_INFO
@@ -0,0 +1,86 @@
+
+P_PRE_INFO
+**********
+
+
+NAME
+====
+
+   P_PRE_INFO                        "npc_pre_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/npc.h
+
+
+BESCHREIBUNG
+============
+
+   Ist die Property in einem NPC definiert, so wird ihr Ergebnis
+   ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
+
+
+
+   Moegliche Werte:
+   - numerischer Wert ungleich 0
+     => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
+        ins Leere
+
+   - Stringwert
+     => wird als Rueckgabe an den Fragenden ausgegeben, umstehende
+        Personen bekommen den Text:
+       "XY ist nicht gewillt, Spieler YZ zu antworten".
+       Der Fragende selbst bekommt bei angegebenem Stringwert:
+       "XY " + Stringwert.
+
+   - Closure
+     => die Antwort bzw. Reaktion des NPCs obliegt ganz der
+        angegebenen Closure. Diese muss dabei einen String oder
+        Ganzzahlen-Wert zurueckgeben
+
+
+BEISPIEL
+========
+
+   Ein NPC der manchmal herumrennt, um z.B. eine Aufgabe zu verrichten,
+   koennte so lange Chats abschalten, z.B.
+
+     SetProp(P_CHAT_CHANCE,0); // NPC latscht los
+
+
+
+   Und eine Weile spaeter:
+
+
+
+     SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
+
+
+
+   Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
+   soll er auch keinerlei Fragen beantworten:
+
+
+
+     Set(P_PRE_INFO, function mixed () {
+       return (QueryProp(P_CHAT_CHANCE) ? 0 :
+         "hat gerade keine Zeit fuer Dich.");
+       }, F_QUERY_METHOD);
+
+
+HINWEISE
+========
+
+   Bitte beachten, dass der interne Name der Property "npc_pre_info"
+   ist und somit nur das Ueberschreiben von _query_npc_pre_info()
+   funktioniert.
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(), /std/npc/info.c
+
+Last modified: 01.03.2016 by Arathorn
diff --git a/doc/sphinx/man/props/P_PROMPT b/doc/sphinx/man/props/P_PROMPT
new file mode 100644
index 0000000..267437e
--- /dev/null
+++ b/doc/sphinx/man/props/P_PROMPT
@@ -0,0 +1,21 @@
+
+P_PROMPT
+********
+
+
+NAME
+====
+
+   P_PROMPT                      "prompt"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Das Prompt (Nur fuer Magier).
diff --git a/doc/sphinx/man/props/P_PUB_NOT_ON_MENU b/doc/sphinx/man/props/P_PUB_NOT_ON_MENU
new file mode 100644
index 0000000..8618009
--- /dev/null
+++ b/doc/sphinx/man/props/P_PUB_NOT_ON_MENU
@@ -0,0 +1,39 @@
+
+P_PUB_NOT_ON_MENU
+*****************
+
+
+NAME
+====
+
+   P_PUB_NOT_ON_MENU                       "pub_not_on_menu"
+
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn der Spieler etwas bestellt, was es in der Kneipe nicht
+   gibt.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Tut mir leid, das fuehren wir nicht! Wir sind ein anstaendiges
+    Lokal!\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
+Last modified: Sat Mar 04 22:46:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/props/P_PUB_NO_KEEPER b/doc/sphinx/man/props/P_PUB_NO_KEEPER
new file mode 100644
index 0000000..55c4230
--- /dev/null
+++ b/doc/sphinx/man/props/P_PUB_NO_KEEPER
@@ -0,0 +1,37 @@
+
+P_PUB_NO_KEEPER
+***************
+
+
+NAME
+====
+
+   P_PUB_NO_KEEPER                         "pub_no_keeper"
+
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn der in P_KEEPER eingetragene NPC nicht anwesend ist.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Es ist niemand anwesend, der Dich bedienen koennte.\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
+Last modified: Son Apr 11 19:28:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_PUB_NO_MONEY b/doc/sphinx/man/props/P_PUB_NO_MONEY
new file mode 100644
index 0000000..9510b07
--- /dev/null
+++ b/doc/sphinx/man/props/P_PUB_NO_MONEY
@@ -0,0 +1,39 @@
+
+P_PUB_NO_MONEY
+**************
+
+
+NAME
+====
+
+   P_PUB_NO_MONEY                          "pub_no_money"
+
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn der Spieler nicht ueber genug Geld verfuegt, um das
+   gewuenschte Gericht zu bezahlen.
+   Fuer den Preis kann man ein %d als Platzhalter einfuegen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Das kostet %d Goldstuecke, und Du hast nicht so viel!\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
+Last modified: Sat Mar 04 22:48:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/props/P_PUB_UNAVAILABLE b/doc/sphinx/man/props/P_PUB_UNAVAILABLE
new file mode 100644
index 0000000..7eaede7
--- /dev/null
+++ b/doc/sphinx/man/props/P_PUB_UNAVAILABLE
@@ -0,0 +1,38 @@
+
+P_PUB_UNAVAILABLE
+*****************
+
+
+NAME
+====
+
+   P_PUB_UNAVAILABLE                       "pub_unavailable"
+
+
+DEFINIERT IN
+============
+
+   /sys/pub.h
+
+
+BESCHREIBUNG
+============
+
+   In diese Property kann man einen String schreiben, der ausgegeben
+   wird, wenn in einer Kneipe ein Getraenk oder eine Speise nicht mehr
+   vorraetig ist.
+
+
+BEMERKUNGEN
+===========
+
+   Die Standardmeldung ist:
+   "Davon ist leider nichts mehr da.\n"
+
+
+SIEHE AUCH
+==========
+
+   /std/room/pub.c
+
+Last modified: Sat Mar 04 22:44:00 2000 by Paracelsus
diff --git a/doc/sphinx/man/props/P_PURSUERS b/doc/sphinx/man/props/P_PURSUERS
new file mode 100644
index 0000000..05ead3b
--- /dev/null
+++ b/doc/sphinx/man/props/P_PURSUERS
@@ -0,0 +1,29 @@
+
+P_PURSUERS
+**********
+
+
+NAME
+====
+
+   P_PURSUERS                    "pursuers"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt Verfolger - nicht von Hand manipulieren!
+
+
+SIEHE AUCH
+==========
+
+   AddPursuer(L), RemovePursuer(L)
+
+16.06.2016, Arathorn
diff --git a/doc/sphinx/man/props/P_PUT_MSG b/doc/sphinx/man/props/P_PUT_MSG
new file mode 100644
index 0000000..65624ce
--- /dev/null
+++ b/doc/sphinx/man/props/P_PUT_MSG
@@ -0,0 +1,79 @@
+
+P_PUT_MSG
+*********
+
+
+NAME
+====
+
+   P_PUT_MSG                          "put_message"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/put_and_get.h
+
+
+BESCHREIBUNG
+============
+
+   Mit P_PUT_MSG kann man die Meldung, die man beim Hineinstecken eines
+   Objektes in einen Container bekommt, modifizieren.
+
+   Folgende Werte sind moeglich:
+
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+
+   o NO_PNG_MSG       == -1
+     Es wird keinerlei Meldung ausgegeben
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum.
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+      Objekt1 - Spieler
+      Objekt2 - das Objekt, das irgendwohin gesteckt wird
+      Objekt3 - der Container
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum.
+
+
+BEISPIEL
+========
+
+   void create() {
+    ...
+    SetProp( P_SHORT, "Etwas Sand" );
+    SetProp( P_LONG, break_string(
+     "Ein wenig magischer Sand. Sehr feinkruemelig.",78 ));
+
+    SetProp( P_NAME, "Sand" );
+    AddId( ({"sand"}) );
+    SetProp( P_GENDER, MALE );
+
+    SetProp( P_PUT_MSG, ({
+     "Du laesst @WEN2 in @WENU3 rieseln.",
+     "@WER1 laesst @WEN2 in @WENU3 rieseln."}));
+    ...
+   }
+
+   Das ganze fuehrt bei Ugars "stecke sand in paket" zu folgenden
+   Meldungen:
+
+   Ugar: "Du laesst den Sand in ein Paket rieseln."
+   Raum: "Ugar laesst den Sand in ein Paket rieseln."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_WEAR_MSG, P_WIELD_MSG
+   Fehler:     P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
+               P_NOINSERT_MSG, P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Sonstiges:  replace_personal(E), put_obj(L), /std/living/put_and_get.c
+
+14. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_QP b/doc/sphinx/man/props/P_QP
new file mode 100644
index 0000000..9840586
--- /dev/null
+++ b/doc/sphinx/man/props/P_QP
@@ -0,0 +1,29 @@
+
+P_QP
+****
+
+
+NAME
+====
+
+   P_QP                          "questpoints"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/quest.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Questpunkte, die ein Spieler hat.
+
+
+HINWEIS
+=======
+
+   Nur Abfragen der Property mit QueryProp() liefert den korrekten Wert,
+   da eine Quermethode fuer die Auslieferung der Daten sorgt. Query()
+   oder gar QueryProperties() enthalten u.U. einen veralteten Wert.
diff --git a/doc/sphinx/man/props/P_QUALITY b/doc/sphinx/man/props/P_QUALITY
new file mode 100644
index 0000000..a103eaf
--- /dev/null
+++ b/doc/sphinx/man/props/P_QUALITY
@@ -0,0 +1,57 @@
+
+P_QUALITY
+*********
+
+
+NAME
+====
+
+   P_QUALITY "quality"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Ruestungen und Waffen koennen im Eifer des Gefechts beschaedigt werden.
+   Setzt man die Property P_QUALITY auf einen Wert n (n>0), so wird
+   eine Waffe (Ruestung) bei jedem n-ten Schlag (Treffer) beschaedigt,
+   d.h. P_WC (P_AC) wird um 1 erniedrigt und P_DAMAGED um 1 erhoeht.
+
+
+BEISPIEL
+========
+
+   inherit "/std/weapon";
+
+   ...
+   #include <combat.h>
+
+   create()
+   {
+     ...
+     SetProp(P_QUALITY,200);
+     ...
+   }
+
+   Diese Waffe wuerde bei jedem 200. Schlag etwas beschaedigt.
+
+
+BEMERKUNG
+=========
+
+   Defaultmaessig ist P_QUALITY auf 0 gesetzt, d.h. die entspr.
+   Waffe/Ruestung wird nicht beschaedigt.
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, /std/weapon.c, TakeFlaw(), QueryFlaw(), Damage()
+
+Last modified: Thu May 22 10:42:39 1997 by Paracelsus
diff --git a/doc/sphinx/man/props/P_QUESTS b/doc/sphinx/man/props/P_QUESTS
new file mode 100644
index 0000000..84fe435
--- /dev/null
+++ b/doc/sphinx/man/props/P_QUESTS
@@ -0,0 +1,21 @@
+
+P_QUESTS
+********
+
+
+NAME
+====
+
+   P_QUESTS                      "quests"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/quest.h
+
+
+BESCHREIBUNG
+============
+
+   Liste der geloesten Quests.
diff --git a/doc/sphinx/man/props/P_QUEST_ITEM b/doc/sphinx/man/props/P_QUEST_ITEM
new file mode 100644
index 0000000..135954b
--- /dev/null
+++ b/doc/sphinx/man/props/P_QUEST_ITEM
@@ -0,0 +1,73 @@
+
+P_QUEST_ITEM
+************
+
+
+NAME
+====
+
+   P_QUEST_ITEM                            "quest_item"
+
+
+DEFINIERT IN
+============
+
+   /sys/quest_items.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, ob es sich bei dem Objekt um ein Quest-
+   relevantes Objekt handelt.
+
+
+BEISPIEL
+========
+
+   Ein Schwert (Notung) koennte folgendermassen definiert sein:
+
+   create()
+   {
+     ::create() ;
+     SetProp(P_SHORT, "Notung das neidliche Schwert") ;
+     SetProp(P_LONG, "Das aus seinen Truemmern neu geschmiedete Schwert "
+                     "Notung.\n");
+
+     SetProp(P_NAME, "Notung");
+     SetProp(P_GENDER, NEUTER);
+     SetProp(P_ARTICLE,0);
+     AddId(({"notung","schwert","Notung", "\nNotung"}));
+
+
+
+     SetProp(P_WEAPON_TYPE, WT_SWORD);
+     SetProp(P_DAM_TYPE, DT_BLUDGEON);
+
+     SetProp(P_QUEST_ITEM,QI_OBJ);
+     ...
+   }
+
+
+
+   Andere Magier koennen nun auf Notung Ruecksicht nehmen, und zum
+   Beispiel davon absehen, es bei einem NPC-Spell zu destructen.
+
+
+BEMERKUNGEN
+===========
+
+   Alle questrelevanten Objekte sollten auf diese Weise markiert werden.
+
+
+
+   Questrelevante Objekte anderer Magier sollten immer mit Vorsicht
+   behandelt werden.
+
+
+SIEHE AUCH
+==========
+
+   "/sys/quest_items.h"
+
+Last modified: Thu Jul 10 07:08:32 2003 by Vanion
diff --git a/doc/sphinx/man/props/P_RACE b/doc/sphinx/man/props/P_RACE
new file mode 100644
index 0000000..c6aebc7
--- /dev/null
+++ b/doc/sphinx/man/props/P_RACE
@@ -0,0 +1,48 @@
+
+P_RACE
+******
+
+
+NAME
+====
+
+   P_RACE                          "race"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Die Rasse eines Lebewesens kann ueber diese Property ermittelt bzw.
+   gesetzt werden. Es empfiehlt sich hierbei, Rassen nur in Form von
+   grossgeschriebenen Strings zu setzen. Leichen erhalten mittels
+   dieser Property automatisch die Rasse der Lebewesen, aus denen sie
+   hervorgegangen sind.
+   Der Sinn des Ganzen liegt darin, das Spiel differenzierter zu
+   gestalten und auf Rassenspezifika einzugehen. Zum Beispiel koennen
+   Elfen weniger Alkohol vertragen als Zwerge, was in '/std/pub'
+   beruecksichtigt wurde.
+
+
+BEISPIEL
+========
+
+   void create()
+   { ::create();
+     // Definitionen
+     SetProp(P_RACE,"Ork");
+     // weitere Definitionen
+   }
+
+
+SIEHE AUCH
+==========
+
+   /std/npc.c, /std/pub.c
+
+Last modified: Mon Sep 15 21:15:49 2003 by Vanion
diff --git a/doc/sphinx/man/props/P_RACESTRING b/doc/sphinx/man/props/P_RACESTRING
new file mode 100644
index 0000000..2a13577
--- /dev/null
+++ b/doc/sphinx/man/props/P_RACESTRING
@@ -0,0 +1,22 @@
+
+P_RACESTRING
+************
+
+
+NAME
+====
+
+   P_RACESTRING                  "racestring"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt eine dem Geschlecht angepasste Beschreibung der Rasse zurueck
+   ("Zwerg" oder "Zwergin" etc.)
diff --git a/doc/sphinx/man/props/P_RACE_DESCRIPTION b/doc/sphinx/man/props/P_RACE_DESCRIPTION
new file mode 100644
index 0000000..ca1f576
--- /dev/null
+++ b/doc/sphinx/man/props/P_RACE_DESCRIPTION
@@ -0,0 +1,21 @@
+
+P_RACE_DESCRIPTION
+******************
+
+
+NAME
+====
+
+   P_RACE_DESCRIPTION            "racedescr"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Beschreibung der Vor/Nachteile einer Rasse.
diff --git a/doc/sphinx/man/props/P_RANGE b/doc/sphinx/man/props/P_RANGE
new file mode 100644
index 0000000..2fabc63
--- /dev/null
+++ b/doc/sphinx/man/props/P_RANGE
@@ -0,0 +1,43 @@
+
+P_RANGE
+*******
+
+
+NAME
+====
+
+   P_RANGE     "range"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Legt die Reichweite einer Schusswaffe fest. Ist ein Schuetze in einem
+   Raum mit gueltigem P_TARGET_AREA (andere Raum) oder environment() und
+   ist fuer diesen Raum P_SHOOTING_AREA festgelegt, dann kann er mit seiner
+   Schusswaffe in diesen anderen Raum schiessen, wenn die P_RANGE groesser
+   als P_SHOOTING_AREA ist.
+
+
+BEISPIELE
+=========
+
+   // Langbogen mit 100 Reichweite
+   SetProp(P_RANGE, 100);
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_SHOOTING_AREA, P_TARGET_AREA
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_READ_DETAILS b/doc/sphinx/man/props/P_READ_DETAILS
new file mode 100644
index 0000000..06a7598
--- /dev/null
+++ b/doc/sphinx/man/props/P_READ_DETAILS
@@ -0,0 +1,40 @@
+
+P_READ_DETAILS
+**************
+
+
+NAME
+====
+
+   P_READ_DETAILS                "read_details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit den Daten der Details, die durch Lesen ermittelt werden
+   koennen.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte nur mit den entsprechenden Methoden veraendern!
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddReadDetail()
+   Loeschen:  RemoveReadDetail()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Veraltet:  P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_READ_NEWS b/doc/sphinx/man/props/P_READ_NEWS
new file mode 100644
index 0000000..8c69c89
--- /dev/null
+++ b/doc/sphinx/man/props/P_READ_NEWS
@@ -0,0 +1,21 @@
+
+P_READ_NEWS
+***********
+
+
+NAME
+====
+
+   P_READ_NEWS                   "read_news"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Welche Artikel bereits gelesen wurde (frueher: in der MPA)
diff --git a/doc/sphinx/man/props/P_REAL_RACE b/doc/sphinx/man/props/P_REAL_RACE
new file mode 100644
index 0000000..39c196a
--- /dev/null
+++ b/doc/sphinx/man/props/P_REAL_RACE
@@ -0,0 +1,95 @@
+
+P_REAL_RACE
+***********
+
+
+NAME
+====
+
+   P_REAL_RACE                             "real_race"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Rasse des Livings. Sie darf nicht durch
+   Shadows ueberschrieben werden.
+
+
+
+   Wirklich interessant ist sie, wenn ein Spieler sich tarnt. Dort kann
+   man mit dieser Property trotz Tarnung feststellen, welche Rasse der
+   Spieler hat.
+
+   Bei NPC enthaelt sie den gleichen Wert wie P_RACE. Wenn P_REAL_RACE
+   allerdings gesetzt wird, kann man damit einen getarnten NPC simu-
+   lieren, da dann P_RACE und P_REAL_RACE voneinander abweichen.
+
+
+BEISPIEL
+========
+
+   Ein Zwerg mag Zwergenbrot, fuer Elfen ist es giftig. Selbst wenn der
+   Elf sich als Zwerg tarnt, wird ihm durch lembas sicher uebel werden:
+
+   int futter(string arg)
+   {
+     notify_fail("Was willst Du essen?\n");
+     if(!arg || !id(arg)) return 0;
+
+     notify_fail("Du kannst nichts mehr essen.\n");
+     if(!this_player()->eat_food(55)) return 0;
+
+     write("Du isst ein Stueck Zwegenbrot. Du versuchst es zumindest!\n");
+     say(sprintf("%s beisst in ein Stueck Zwergenbrot. Zahnschmerz!!!\n",
+         this_player()->Name()));
+
+
+     switch( this_player()->QueryProp(P_REAL_RACE) )
+     {
+     case "Zwerg":
+       if ((this_player()->QueryProp(P_RACE))!="Zwerg")
+         write("Zur Tarnung spuckst Du etwas von dem Brot aus!\n");
+       this_player()->buffer_hp(100,10);
+       this_player()->buffer_sp(100,10);
+       break;
+
+     case "Elf":
+       write("Das Zwergenbrot brennt wie Feuer auf Deiner Zunge!");
+       // Getarnt?
+       if ((this_player()->QueryProp(P_RACE))!="Elf")
+         write(" Deine Tarnung nutzt Dir da wenig.\n"
+       else write("\n");
+       this_player()->restore_spell_points(-100);
+       this_player()->do_damage(100,this_object());
+       break;
+
+     default:
+       write("Du bekommst nur wenig davon herunter..\n");
+       this_player()->buffer_hp(10,1);
+       this_player()->buffer_sp(10,2);
+       break;
+     }
+
+
+
+     remove();
+
+
+
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   /std/living/description.c, /sys/living/description.h, P_RACE
+
+Last modified: Mon Sep 15 21:15:49 2003 by Vanion
diff --git a/doc/sphinx/man/props/P_REFERENCE_OBJECT b/doc/sphinx/man/props/P_REFERENCE_OBJECT
new file mode 100644
index 0000000..9187a49
--- /dev/null
+++ b/doc/sphinx/man/props/P_REFERENCE_OBJECT
@@ -0,0 +1,41 @@
+
+P_REFERENCE_OBJECT
+******************
+
+
+NAME
+====
+
+   P_REFERENCE_OBJECT            "reference_object"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Propertie wird das aktuelle Bezugsobjekt eines Spielers
+   gespeichert. Untersucht der Spieler ein Monster, so ist dies das
+   Monsterobjekt, untersucht der Spieler sich selber, ist es das
+   Spielerobjekt.
+
+   Der Inhalt dieser Propertie besteht also immer aus dem zuletzt
+   betrachteten Objekt. Sei es ein Raum, eine Ruestung, ein Monster oder
+   was auch immer. Bewegungsbefehle und andere Kommandos werden nicht
+   beruecksichtigt.
+
+   Einzig wenn der Spieler 'schau' tippt, wird der Inhalt der Propertie
+   geloescht und betraegt 0.
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges:         P_INT_LONG, P_LONG, P_SHORT
+                      int_long(), long(), short(), make_invlist()
+
+Letzte Aenderung: 29.06.02, 23:50:00 h, von Tilly
diff --git a/doc/sphinx/man/props/P_REJECT b/doc/sphinx/man/props/P_REJECT
new file mode 100644
index 0000000..072bdab
--- /dev/null
+++ b/doc/sphinx/man/props/P_REJECT
@@ -0,0 +1,72 @@
+
+P_REJECT
+********
+
+
+NAME
+====
+
+   P_REJECT                        "reject"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property zeigt standardmaessig nur in NPCs eine Wirkung. Mit
+   ihr laesst sich sehr einfach einstellen, wie sich ein solcher NPC
+   gegenueber Gegenstaenden verhalten soll, welche ihm zugesteckt
+   werden. Hierbei besteht die Property aus 2 Elementen, welche
+   bestimmt, was der NPC mit Dingen tuen soll, die ihm gegeben werden.
+   Standardmaessig behaelt der NPC die Sachen einfach.
+   Folgende Moeglichkeiten gibt es ausserdem:
+     1. Arrayelement: Art der Handlung. (aus "/sys/moving.h")
+       REJECT_GIVE: Der NPC gibt das Objekt zurueck.
+       REJECT_DROP: Der NPC laesst das Objekt fallen.
+       REJECT_KEEP: Der NPC behaelt das Objekt doch.
+       REJECT_LIGHT_MODIFIER: Der NPC nimmt keine Gegenstaende an, die
+         sein Lichtlevel veraendern und damit Einfluss auf sein
+         Kampfverhalten haben koennten.
+     2. Arrayelement: Meldung, mit welcher der NPC die Handlung
+                      kommentiert.
+       Der Meldung wird nichts automatisch vorangestellt und ein
+       abschliessender Zeilenumbruch ist ebenfalls selbstaendig
+       vorzunehmen. Mit einem Leerstring ist somit auch gar keine
+       Rueckmeldung moeglich.
+
+
+BEISPIEL
+========
+
+   Der NPC schmeisst alle ihm gegebenen Gegenstaende einfach weg:
+     void create()
+     { ::create();
+       ...
+       SetProp(P_REJECT,({REJECT_GIVE,
+       Name(WER)+" murmelt: Was soll ich denn damit?!\n"}));
+       ...
+     }
+   Manchmal ist das recht nuetzlich, z.B. kann man so eigentlich schwer
+   zu toetende NPCs dagegen schuetzen, dass man ihnen angezuendetes
+   Dynamit oder aehnliches ueberreicht.
+
+
+BEMERKUNGEN
+===========
+
+   Innerhalb von NPCs ist die Funktion give_notify() fuer die
+   automatische Auswertung dieser Property verantwortlich; das sollte
+   man insbesondere beim Ueberschreiben dieser Funktion beachten!
+
+
+SIEHE AUCH
+==========
+
+   give_notify(), /std/npc/put_and_get.c
+
+Last modified: Mon Apr 23 16:54:07 2001 by Patryn
diff --git a/doc/sphinx/man/props/P_REMOVE_FUNC b/doc/sphinx/man/props/P_REMOVE_FUNC
new file mode 100644
index 0000000..f5c2232
--- /dev/null
+++ b/doc/sphinx/man/props/P_REMOVE_FUNC
@@ -0,0 +1,40 @@
+
+P_REMOVE_FUNC
+*************
+
+
+NAME
+====
+
+   P_REMOVE_FUNC "remove_func"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine RemoveFunc() fuer die Ruestung oder Kleidung
+   definiert, so muss dieses Objekt in dieser Property eingetragen sein.
+
+   Die Auswertung dieser Property erfolgt im Laufe des DoUnwear() in
+   der nicht-oeffentlichen Funktionen _check_unwear_restrictions().
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu RemoveFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/armour.c, /std/clothing.c, clothing, armours
+   RemoveFunc()
+
+Letzte Aenderung: 15.02.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_REMOVE_MSG b/doc/sphinx/man/props/P_REMOVE_MSG
new file mode 100644
index 0000000..78a1357
--- /dev/null
+++ b/doc/sphinx/man/props/P_REMOVE_MSG
@@ -0,0 +1,49 @@
+
+P_REMOVE_MSG
+************
+
+
+NAME
+====
+
+   P_REMOVE_MSG                  "std_food_remove_msg"
+
+
+DEFINIERT IN
+============
+
+   <sys/food.h>
+
+
+BESCHREIBUNG
+============
+
+   Meldung, wenn eine verdorbene Speise gerade vernichtet wird.
+   Diese Meldung erscheint nur, wenn in P_DESTROY_BAD ein positiver
+   Integer-Wert gesetzt ist.
+   Befindet sich die Speise in einem Spieler, geht die Meldung an genau
+   diesen, liegt die Speise im Raum, geht die Meldung an alle anwesenden
+   Spieler.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Meldung wird von replace_personal mit den Argumenten:
+   1. Speise
+   2. Konsument
+   verarbeitet, kann als entsprechende Platzhalter enthalten
+
+
+DEFAULT
+=======
+
+   "@WER1 zerfaellt zu Staub."
+
+
+SIEHE AUCH
+==========
+
+   P_DESTROY_BAD, wiz/food, replace_personal
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_RESET_LIFETIME b/doc/sphinx/man/props/P_RESET_LIFETIME
new file mode 100644
index 0000000..bbd4bbe
--- /dev/null
+++ b/doc/sphinx/man/props/P_RESET_LIFETIME
@@ -0,0 +1,52 @@
+
+P_RESET_LIFETIME
+****************
+
+
+NAME
+====
+
+   P_RESET_LIFETIME              "std_food_lifetime_reset"
+
+
+DEFINIERT IN
+============
+
+   /sys/food.h
+
+
+BESCHREIBUNG
+============
+
+   Zeit in Resets, die die Speise haltbar ist.
+   Jeder einzelne Reset wird in seiner Laenge zufaellig festgelegt und
+   zu einer Gesamtanzahl von Sekunden zusammengefasst. Diese Zeit in
+   Sekunden wird dann in P_LIFETIME gespeichert.
+   Nach dieser Zeit wird diese Speise schlecht und je nach Konfiguration
+   der Speise eventuell zerstoert. Sichergestellt wird dies durch den
+   Aufruf von reset() nach dieser Anzahl "Resets".
+   Moechte man eine Speise haben, die niemals verdirbt
+   (genehmigungspflichtig!), nutzt man die Property P_NO_BAD
+
+
+BEMERKUNGEN
+===========
+
+   Sobald der Countdown zum Schlechtwerden der Speise laeuft, also ein
+   Spieler damit in Beruehrung kam, zeigt SetProp auf diese Property keine
+   Wirkung mehr.
+
+
+DEFAULT
+=======
+
+   Ohne Setzen von P_LIFETIME ,P_RESET_LIFETIME und P_NO_BAD verdirbt die
+   Speise nach einem Reset, also zwischen 30 und 60 Minuten
+
+
+SIEHE AUCH
+==========
+
+   wiz/food, P_LIFETIME, P_NO_BAD
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_RESISTANCE b/doc/sphinx/man/props/P_RESISTANCE
new file mode 100644
index 0000000..48e476f
--- /dev/null
+++ b/doc/sphinx/man/props/P_RESISTANCE
@@ -0,0 +1,61 @@
+
+P_RESISTANCE
+************
+
+
+NAME
+====
+
+   P_RESISTANCE                  "resistance"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+WICHTIG
+=======
+
+   DIESE PROPERTY IST VERALTET! BITTE P_RESISTANCE_STRENGTHS
+   VERWENDEN! AUCH FUNKTIONIERT Set() NICHT WIE ES SOLLTE.
+
+
+BESCHREIBUNG
+============
+
+   Hiermit koennen die Resistenzen eines Lebewesens sehr einfach gesetzt
+   werden. Es kann ein Array mit Schadensarten gesetzt werden, jeder
+   Eintrag eines Schadens verdoppelt die Resistenz gegen diesen.
+
+
+BEMERKUNGEN
+===========
+
+   - P_RESISTANCE_STRENGTHS spiegelt diese Eintraege hier wieder
+   - um genauere Werte anzugeben einen AddResistanceModifier() oder
+     P_RESISTANCE_STRENGTHS benutzen.
+   - P_RESISTANCE kann und wird nicht aus P_RESISTANCE_STRENGTHS
+     upgedatet
+
+
+BEISPIELE
+=========
+
+   // ein NPC mit halbierter Feuerempfindlichkeit und
+   // geviertelter Windempfindlichkeit
+   SetProp(P_RESISTANCE, ({DT_FIRE, DT_AIR, DT_AIR}));
+
+
+SIEHE AUCH
+==========
+
+   simple Resistenz:  P_RESISTANCE
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier(),
+                      P_RESISTANCE_MODIFIER
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
+
+1.Dez 2004, Gloinson
diff --git a/doc/sphinx/man/props/P_RESISTANCE_MODIFIER b/doc/sphinx/man/props/P_RESISTANCE_MODIFIER
new file mode 100644
index 0000000..2a3322e
--- /dev/null
+++ b/doc/sphinx/man/props/P_RESISTANCE_MODIFIER
@@ -0,0 +1,45 @@
+
+P_RESISTANCE_MODIFIER
+*********************
+
+
+NAME
+====
+
+   P_RESISTANCE_MODIFIER             "rstr:mod"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Hier werden die Resistenzmodifikatoren in einem Mapping abgespeichert.
+
+   Format:
+
+   (["me":<Aufaddition aller Resistenz/Empfindlichkeitsmodifikationen>;0,
+     "<Objektname>#<Schluessel>":<Resistenzmapping>;<Objekreferenz>,
+     ...])
+
+
+BEMERKUNGEN
+===========
+
+   Nur ueber AddResistanceModifier(), RemoveResistanceModifier() aendern!
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier()
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
+
+29.Apr 2002, Gloinson@MG
diff --git a/doc/sphinx/man/props/P_RESISTANCE_STRENGTHS b/doc/sphinx/man/props/P_RESISTANCE_STRENGTHS
new file mode 100644
index 0000000..4a93f08
--- /dev/null
+++ b/doc/sphinx/man/props/P_RESISTANCE_STRENGTHS
@@ -0,0 +1,114 @@
+
+P_RESISTANCE_STRENGTHS
+**********************
+
+
+NAME
+====
+
+   P_RESISTANCE_STRENGTHS     "resistance_strengths"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Lebewesen:
+
+   Mapping mit Schadensarten, gegen die das Lebewesen resistent oder
+   anfaellig ist. Durch eine _query_method werden alle existierenden
+   Resistenzen hier zusammengefasst.
+
+   Die Staerke der Resistenz oder Anfaelligkeit wird numerisch aus-
+   gedrueckt:
+   - Resistenzen gehen bis von 0 bis -1.0 (absolute Resistenz)
+     - -0.5 == halbierter Schaden, -0.75 == geviertelter Schaden
+     -> in % des "aufgehaltenen" Schadens interpretierbar
+   - Empfindlichkeiten gehen von 0 bis MAX_INT
+     -  1.0 == verdoppelter Schaden, 3.0 == vervierfachter Schaden
+     -> als Faktor (x+1.0) interpretierbar
+
+   Ruestungen:
+
+   Mapping mit Prozentwerten der Maximalwerte fuer Ruestungen des
+   entsprechenden Typs. Dabei sind positive Werte Resistenzen und
+   negative Empfindlichkeiten. Dabei duerfen die Prozentwerte nur
+   im Bereich von +100 bis -800 (-1000 ?!) liegen.
+
+   Bei Ruestungen ist es damit unnoetig, Resistenzen mittels
+   AddResistanceModifier() im Traeger zu setzen, da dies bereits
+   in /std/armour automatisch gemacht wird. Der Schluessel fuer
+   den Eintrag ist dabei P_ARMOUR_TYPE.
+
+   Die Maximalwerte sind derzeit:
+    AT_CLOAK, AT_RING, AT_AMULET: max 10% Resistenz
+    AT_SHIELD, AT_ARMOUR:  max 15% Resistenz
+    alle anderen:   max 5% Resistenz
+
+
+BEMERKUNGEN
+===========
+
+   Ruestungen:
+   * die Property muss _nach_ P_ARMOUR_TYPE gesetzt werden (_set-Method)
+
+   Lebewesen:
+   * -1.0 bedeutet bereits absolute Resistenz, bei kleineren Werten werden
+     die anderen Schadensanteile im Kampf u.U. nicht mehr wie gewuenscht
+     bilanziert. Bitte daher drauf verzichten. ;-)
+   * Aenderungen an P_RESISTANCE und P_VULNERABILITY werden direkt in
+     P_RESISTANCE_STRENGTHS gespeichert:
+     -> daher niemals im Nachhinein bei fremden NPCs P_RESISTANCE_STRENGTHS
+        manipulieren, dafuer gibt es AddResistanceModifier
+   * QueryProp(P_RESISTANCE_STRENGTHS) enthaelt die gesamten Resistenzen
+     P_RESISTANCE, P_VULNERABILITY, P_RESISTANCE_MODIFIER (_query-Method)
+
+   Die Werte in P_RESISTANCE_STRENGTHS sollten nur in Ausnahmefaellen oder
+   gut begruendet den Hoechstwert haben. Ein Eiswesen kann zwar sehr
+   resistent gegen Kaelteschaden sein, sollte aber zu gleichem Teil auch
+   anfaellig auf Feuerschaden sein.
+
+   Auf dieser Property liegt eine Querymethode, welche eine Kopie der
+   Daten zurueckliefert.
+
+
+BEISPIELE
+=========
+
+   // ein Eistroll
+   SetProp(P_RESISTANCE_STRENGTHS,([DT_FIRE:0.5,DT_COLD:-0.5,
+                                    DT_MAGIC:0.1]));
+
+   Feuerangriffe werden mit 1.5 multipliziert, magische mit 1.1 und
+   der Schadenswert von Kaelteangriffen wird halbiert. Zum Beispiel
+   wuerde
+   Defend(100, ({DT_FIRE,DT_MAGIC}), ...)
+   einen Schaden von 130 statt den normalen 100 verursachen.
+
+
+   // eine Eisruestung
+   SetProp(P_RESISTANCE_STRENGTHS, ([DT_COLD:50, DT_FIRE:-100]));
+
+   Dieses Kettenhemd schuetzt nun mit 50% des Maximalwertes gegen
+   Kaelte (also 0.5*15%=7,5% Resistenz) und macht mit dem Maximal-
+   wert anfaellig gegen Feuer (1*15%=15% Empfindlichkeit).
+
+   ! der Code spricht zusaetzlich von
+     Empfindlichkeit=(Empfindlichkeit/4)*5 -> 15/4*5=18.75% !
+
+
+SIEHE AUCH
+==========
+
+   simple Resistenz: P_RESISTANCE, P_VULNERABILITY
+   Modifikatoren: AddResistanceModifier, RemoveResistanceModifier(),
+   P_RESISTANCE_MODIFIER
+   Berechnung: CheckResistance(), UpdateResistanceStrengths()
+   anderes:  balance, /std/armour/combat.c, /std/living/combat.c
+
+6.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_RESTRICTIONS b/doc/sphinx/man/props/P_RESTRICTIONS
new file mode 100644
index 0000000..a1764b9
--- /dev/null
+++ b/doc/sphinx/man/props/P_RESTRICTIONS
@@ -0,0 +1,163 @@
+
+P_RESTRICTIONS
+**************
+
+
+NAME
+====
+
+   P_RESTRICTIONS                                "restrictions"
+
+
+DEFINIERT IN
+============
+
+   /sys/combat.h
+   (Die SR_*-Parameter sind in /sys/new_skills.h definiert.)
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt ein mapping mit den zu pruefenden Einschraenkungen.
+
+   In dieser Property lassen sich Restriktionen setzen, die vor dem
+   Zuecken einer Waffe / Anziehen einer Ruestung oder Kleidung geprueft
+   werden und dies gegebenfalls verhindern, ohne gleich auf eine evtl.
+   vorhandene WieldFunc / WearFunc zuzugreifen.
+
+   Die Auswertung erfolgt ueber den Aufruf von check_restrictions()
+   in /std/restriction_checker.c
+
+   Folgende Keys werden in dem Mapping ausgewertet:
+
+   P_LEVEL
+     Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
+     auszufuehren.
+   P_GUILD_LEVEL
+     Gildenlevel, das das Lebewesen mindestens erreicht haben muss, um die
+     Aktion auszufuehren.
+   SR_SEER
+     Ist gesetzt, wenn das Lebewesen Seher sein muss.
+     Auswertung nur fuer Interactives, NSC ignorieren das Flag.
+   P_XP
+     Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen muss,
+     um die Aktion auszufuehren.
+   P_QP
+     Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
+   P_ALCOHOL
+     Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen liegen
+     muss, um die Aktion noch ausfuehren zu koennen.
+   P_DRINK
+     Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
+     Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
+   P_FOOD
+     Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel des
+     Spielers liegen muss, um die Aktion noch ausfuehren zu koennen.
+   P_DEAF
+     Ist gesetzt, falls der Spieler nicht taub sein darf.
+   P_FROG
+     Ist gesetzt, falls der Spieler kein Frosch sein darf.
+   P_BLIND
+     Ist gesetzt, falls der Spieler nicht blind sein darf.
+     Achtung: das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
+     nichts mehr sehen kann. Auch andere Gruende (zum Beispiel Dunkelheit)
+     koennen bewirken, dass ein Spieler nichts mehr sieht.
+   A_INT, A_DEX, A_CON, A_STR
+     Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren zu
+     koennen.
+   SR_BAD, SR_GOOD
+     Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein Charakter sein
+     darf, um eine Aktion ausfuehren zu koennen.
+   SR_MIN_SIZE, SR_MAX_SIZE
+     Gibt die minimale, bzw. die maximale Groesse an, die ein Charakter
+     maximal haben darf, um eine Aktion ausfuehren zu koennen.
+   SR_FREE_HANDS
+     Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
+     besitzen muss.
+   SR_EXCLUDE_RACE
+     Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
+     diese Aktion nicht ausfuehren.
+   SR_INCLUDE_RACE
+     Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen koennen
+     diese Aktion nicht ausfuehren.
+   SM_RACE
+     Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese Rasse
+     geltenden Einschraenkungen vorgenommen werden. Als Keys sind die
+     in dieser Manpage beschriebenen Keys erlaubt, wobei SM_RACE nicht
+     rekursiv ausgewertet wird.
+     Der Rassenname ist gross geschrieben und "*" steht fuer alle Rassen.
+   SR_EXCLUDE_GUILD
+   SR_INCLUDE_GUILD
+     Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
+     genannt werden.
+   SR_FUN
+     Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
+     Restriktionen angegeben werden, siehe execute_anything().
+     Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
+     wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
+     Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
+   SR_PROP
+     Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
+     werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
+     eine Meldung angegeben werden, die als Fehlermeldung ausgegeben wird,
+     wenn der Spieler die Bedingung nicht erfuellt. Es sollte immer eine
+     passende Meldung fuer den Spieler eingebaut werden. Beispiel:
+     ([ SR_PROP: ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
+         "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn Du "
+         "Dich als wuerdig erwiesen hast!"]) ])
+     Aufgrund der Meldung wird empfohlen, SR_PROP nicht in Restriktionen
+     einzusetzen, die massenweise in Savefiles landen (z.B.
+     Spielersavefiles).
+   SR_QUEST
+     Hier kann ein String-Array mit den Namen (Keys) der Quest(s) angegeben
+     werden, die der Spieler bestanden haben muss, um die Aktion ausfuehren
+     zu koennen.
+   SR_MINIQUEST
+     Hier kann entweder ein String-Array mit den Ladenamen der vergebenden
+     Objekte oder ein Int-Array mit den Index-Nummern (IDs) der
+     Miniquest(s) (empfohlen!) angegeben werden, die der Spieler bestanden
+     haben muss, um die Aktion ausfuehren zu koennen.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property eignet sich hervorragend dafuer, einige Grundbedingungen
+   fuer das Nutzen der Waffe / Ruestung / Kleidung zu stellen ohne gleich
+   eine Wield- oder WearFunc setzen und auswerten zu muessen.
+
+   Denkbar waere der Einsatz bei hochwertigen Waffen / Ruestungen / Kleidung,
+   z.B. aus der Para-Welt oder solchen, die sich nah am Limit der geltenden
+   Grenzwerte fuer P_WC / P_AC bewegen oder sogar (nach Genehmigung durch
+   die Balance) darueber.
+
+
+BEISPIEL
+========
+
+   Mindeststufe 25: SetProp(P_RESTRICTIONS,([P_LEVEL:25]));
+   Keine Menschen:  SetProp(P_RESTRICTIONS,([SR_EXCLUDE_RACE:({"Mensch"})]));
+   Alignment >499:  SetProp(P_RESTRICTIONS,([SR_GOOD:500]));
+
+   Komplexeres Beispiel
+
+   Quest "Diamond Club" bestanden, magiereigene Property P_AUSGANG_GEFUNDEN
+   muss gesetzt sein, Stufe 10, nicht taub, max. 45 Food:
+   SetProp(P_RESTRICTIONS, ([ P_LEVEL: 10, P_DEAF: 1, P_FOOD: 45,
+     SR_PROP: ([P_AUSGANG_GEFUNDEN:1]), SR_QUEST:({"Diamond Club"}) ]));
+
+
+SIEHE AUCH
+==========
+
+   check_restrictions(L)
+   WieldFunc(L), WearFunc(L), RemoveFunc(L), UnwieldFunc(L),
+   P_WIELD_FUNC, P_WEAR_FUNC, P_REMOVE_FUNC, P_UNWIELD_FUNC
+   /std/armour/wear.c, /std/weapon/combat.c, clothing, armours, weapon
+
+
+LETZTE AeNDERUNG
+================
+
+3. Januar 2014, Arathorn
diff --git a/doc/sphinx/man/props/P_ROOM_MSG b/doc/sphinx/man/props/P_ROOM_MSG
new file mode 100644
index 0000000..3486458
--- /dev/null
+++ b/doc/sphinx/man/props/P_ROOM_MSG
@@ -0,0 +1,39 @@
+
+P_ROOM_MSG
+**********
+
+
+NAME
+====
+
+   P_ROOM_MSG                    "room_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/room/description.h
+
+
+BESCHREIBUNG
+============
+
+   Liste mit Meldungen, die zufaellig im Raum ausgegeben werden.
+
+   Hier sind nur die Textmeldungen als String-Array gespeichert.
+
+
+ANMERKUNGEN
+===========
+
+   Bitte AddRoomMessage() zum Hinzufuegen/Ueberschreiben benutzen!
+
+
+SIEHE AUCH
+==========
+
+   LFuns:    AddRoomMessage()
+   Verwandt: tell_room(), ReceiveMsg()
+   Props:    P_FUNC_MSG, P_MSG_PROB
+
+2.Feb 2016 Gloinson
diff --git a/doc/sphinx/man/props/P_ROOM_TYPE b/doc/sphinx/man/props/P_ROOM_TYPE
new file mode 100644
index 0000000..22e894e
--- /dev/null
+++ b/doc/sphinx/man/props/P_ROOM_TYPE
@@ -0,0 +1,39 @@
+
+P_ROOM_TYPE
+***********
+
+
+NAME
+====
+
+   P_ROOM_TYPE                       "room_type"
+
+
+DEFINIERT IN
+============
+
+   /sys/rooms.h
+
+
+BESCHREIBUNG
+============
+
+   In P_ROOM_TYPE wird die Art des Raumes durch entsprechende Flags
+   beschrieben.
+
+   Bisher unterstuetzt werden:
+       - RT_SHOP       fuer Raeume, die /std/room/shop inheriten
+       - RT_PUB        fuer Raeume, die /std/room/pub inheriten
+
+
+BEISPIEL
+========
+
+   Wenn ein NPC abfragen moechte, ob er sich in einer Kneipe aufhaelt (um
+   selbststaendig tanken zu koennen) koennte eine Abfrage z.B. so aussehen:
+
+       if ( environment() &&
+            environment()->QueryProp(P_ROOM_TYPE) & RT_PUB ){
+
+           ... tanken ...
+       }
diff --git a/doc/sphinx/man/props/P_SB_SPELLS b/doc/sphinx/man/props/P_SB_SPELLS
new file mode 100644
index 0000000..1ffac9d
--- /dev/null
+++ b/doc/sphinx/man/props/P_SB_SPELLS
@@ -0,0 +1,42 @@
+
+P_SB_SPELLS
+***********
+
+
+NAME
+====
+
+   P_SB_SPELLS            "sb_spells"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Spellbookproperty sind saemtliche Sprueche des Spellbooks
+   vermerkt. Veraendert wird sie durch AddSpell().
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktion AddSpell() nutzen.
+
+
+SIEHE AUCH
+==========
+
+   GObj Verwalten:   LearnSkill, LearnSpell, InitialSkillAbility
+   * Properties:     P_GUILD_SKILLS
+   Spellbook Lernen: Learn, SpellSuccess, Erfolg, Misserfolg
+   * Verwalten:      AddSpell, QuerySpell
+   * Properties:     P_GLOBAL_SKILLPROPS
+   Skills:           P_NEWSKILLS, spruchermuedung, skill_info_liste
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_SCREENSIZE b/doc/sphinx/man/props/P_SCREENSIZE
new file mode 100644
index 0000000..e54ee8b
--- /dev/null
+++ b/doc/sphinx/man/props/P_SCREENSIZE
@@ -0,0 +1,21 @@
+
+P_SCREENSIZE
+************
+
+
+NAME
+====
+
+   P_SCREENSIZE                  "screensize"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Bildschirmgroesse in Zeilen (fuer More)
diff --git a/doc/sphinx/man/props/P_SECOND b/doc/sphinx/man/props/P_SECOND
new file mode 100644
index 0000000..69c97d6
--- /dev/null
+++ b/doc/sphinx/man/props/P_SECOND
@@ -0,0 +1,39 @@
+
+P_SECOND
+********
+
+
+NAME
+====
+
+   P_SECOND                      "second"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Prop gesetzt ist, ist der Spieler ein Zweitie. Inhalt der
+   Prop ist ein String mit dem (lowercase) Namen des Ersties.
+
+
+BEISPIEL
+========
+
+   if (this_player()->QueryProp(P_SECOND)=="notstrom") {
+     tell_object(this_player(), "Nicht alles aufessen!\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_SECOND_MARK
+   Sonstiges:  /secure/zweities.c
+
+Last modified: 18-Jun-2015, Arathorn.
diff --git a/doc/sphinx/man/props/P_SECOND_MARK b/doc/sphinx/man/props/P_SECOND_MARK
new file mode 100644
index 0000000..dd2c68a
--- /dev/null
+++ b/doc/sphinx/man/props/P_SECOND_MARK
@@ -0,0 +1,31 @@
+
+P_SECOND_MARK
+*************
+
+
+NAME
+====
+
+   P_SECOND_MARK                 "second_mark"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, wie mit der Zweitie-Markierung eines Spielers umgegangen wird.
+
+   -1  'unsichtbare' Markierung; im wer/kwer wird bei diesem Zweitie s
+       oder S angezeigt.
+
+    0  'sichtbare' Markierung; im wer/kwer wird bei diesem Zweitie z oder
+       Z angezeigt. Der Name des Ersties ist beim Fingern jedoch nur
+       fuer Magier sichtbar.
+
+    1  Markierung 'sichtbar + Name'; wie 0, nur dass beim Fingern alle
+       Spieler den Namen des Ersties sehen koennen.
diff --git a/doc/sphinx/man/props/P_SEERDOORS b/doc/sphinx/man/props/P_SEERDOORS
new file mode 100644
index 0000000..8ec02e7
--- /dev/null
+++ b/doc/sphinx/man/props/P_SEERDOORS
@@ -0,0 +1,45 @@
+
+P_SEERDOORS
+***********
+
+
+NAME
+====
+
+   P_SEERDOORS      "rw_sehertore"
+
+
+DEFINIERT IN
+============
+
+   /d/seher/portale/sehertor.h
+
+
+BESCHREIBUNG
+============
+
+   Sehertor-relevante Property.
+
+   Enthaelt ein Mapping mit den Wertepaaren
+   ([ Seher-Portal-Nummer: x ])
+   mit x != 0 fuer entdeckte Tore.
+
+
+
+   0 hat ein Sonderverhalten fuer mobile Tore.
+
+
+BEMERKUNG
+=========
+
+   Auf gar keinen Fall in Spielern manipulieren! Und bitte das enthaltene
+   Mapping nicht von einem Spieler abfragen und P_SEERDOORS in einem
+   Testspieler zuweisen!
+
+
+SIEHE AUCH
+==========
+
+   P_FAO_PORTALS
+
+1.September 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_SEERDOOR_ALLOWED b/doc/sphinx/man/props/P_SEERDOOR_ALLOWED
new file mode 100644
index 0000000..12f062b
--- /dev/null
+++ b/doc/sphinx/man/props/P_SEERDOOR_ALLOWED
@@ -0,0 +1,27 @@
+
+P_SEERDOOR_ALLOWED
+******************
+
+
+NAME
+====
+
+   P_SEERDOOR_ALLOWED          "rw_sehertor_erlaubt"
+
+
+DEFINIERT IN
+============
+
+   /d/seher/portale/sehertor.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property muss in einem Raum gesetzt sein, soll
+   ein Seher dort ein mobiles Sehertor abstellen duerfen.
+   Zusaetzlich darf der Raum nicht in PARA liegen und muss
+   als eigenes File existieren.
+   Es ist darauf zu achten, Sehertore nicht in Questgebieten,
+   direkt an Tanken oder aehnlichen Plaetzen zu erlauben.
+   Es gilt die Einschaetzung des fuer den Raum Verantwortlichen.
diff --git a/doc/sphinx/man/props/P_SENSITIVE b/doc/sphinx/man/props/P_SENSITIVE
new file mode 100644
index 0000000..c1e8051
--- /dev/null
+++ b/doc/sphinx/man/props/P_SENSITIVE
@@ -0,0 +1,154 @@
+
+P_SENSITIVE
+***********
+
+
+NAME
+====
+
+   P_SENSITIVE                   "sensitive"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property kann in Objekten gesetzt werden, die auf bestimmte
+   Schadensarten empfindlich reagieren sollen. Moegliche Anwendungsfaelle:
+   - Das Lebewesen, in dessen Inventar sich ein Objekt befindet, erleidet
+     einen Angriff mit der fraglichen Schadensart (Beispiel: eine
+     Pusteblume, die bei Angriff mit Luftschaden auseinanderfaellt).
+   - Zwei Objekte treffen im gleichen Environment aufeinander, wobei
+     eines empfindlich auf eine Schadensart reagiert, und das zweite diese
+     Schadensart mitbringt, d.h. die Empfindlichkeit ausloesen kann.
+     (Beispiel: ein feuerempfindlicher Postsack wird angesengt, wenn eine
+      brennende Fackel ins gleiche Inventar kommt.)
+     Das Ausloesen dieser Empfindlichkeit ist unabhaengig davon, welches
+     Objekt zuerst da war.
+
+   Die Property enthaelt ein Array aus Arrays:
+     ({<sensprops_1>, <sensprops_2>, ..., <sensprops_n>})
+
+
+
+   wobei jeder Eintrag <sensprops> jeweils folgende Struktur hat:
+     ({string list_key, string damtype, int treshold, mixed options })
+
+
+
+   Die Eintraege haben dabei folgende Bedeutung:
+
+
+
+   list_key: Kann einen von folgenden drei Werten annehmen
+        1) SENSITIVE_INVENTORY, passive Eigenschaft; zeigt an, dass das
+           Objekt empfindlich auf aktive Objekte reagiert, die in das
+           Inventory des Containers hineinbewegt werden
+        2) SENSITIVE_ATTACK, passive Eigenschaft; zeigt an, dass das
+           Objekt empfindlich auf aeussere Einfluesse bzw. Angriffe
+           auf ein Lebewesen reagiert, in dessen Inventar es sich befindet
+        3) SENSITIVE_INVENTORY_TRIGGER, aktive Eigenschaft; zeigt an, dass
+           das Objekt eine Ausstrahlung auf andere Objekte im Inventar
+           hat. Wird ausgeloest, wenn das Objekt ins Inventar hineinbewegt
+           wird.
+   damtype: eine Schadensart (DT_FIRE, DT_WATER, ...)
+   treshold: hat zwei Bedeutungen abhaengig von dem Wert in list_key:
+        1) Fuer Objekte mit SENSITIVE_INVENTORY oder SENSITIVE_ATTCK ist
+           dies der Schadenswert, ab dem das Objekt benachrichtigt werden
+           soll.
+           Hier wird ein Wert in "Defend-Einheiten" erwartet, d.h. das
+           Zehnfache dessen, was am Ende in LP abgezogen wuerde.
+        2) Fuer Objekte mit SENSITIVE_INVENTORY_TRIGGER ist dies der
+           Schadenswert, mit dem das Objekt andere bereits im Inventar
+           des Containers befindliche Objekte beeinflusst, die eine
+           entsprechende Empfindlichkeit gesetzt haben
+   options: Optionale Daten, die der programmierende Magier selbst
+          definieren kann. Werden an die in den betroffenen Objekten
+          aufgerufenen Funktionen durchgereicht.
+
+   Ein SENSITIVE_ATTACK-Objekt, dessen Trigger-Bedingungen erfuellt sind,
+   wird durch folgenden Funktionsaufruf darueber informiert:
+     trigger_sensitive_attack(object enemy, string damtype, int damage,
+               mixed spell, mixed options)
+
+
+
+   Ein SENSITIVE_INVENTORY-Objekt, dessen Trigger-Bedingungen erfuellt sind,
+   wird durch folgenden Funktionsaufruf darueber informiert:
+     trigger_sensitive_inv(object whodid, string damtype, int threshold,
+               mixed options, mixed options)
+
+   Die beiden Funktionen muessen selbst ge-/ueberschrieben werden.
+
+
+BEMERKUNGEN
+===========
+
+   1. P_SENSITIVE-Objekte kosten Rechenzeit bei jedem Angriff oder jedem
+      move() - daher bitte sparsam verwenden
+   2. Ist P_SENSITIVE nicht statisch, sondern wird es situationsabhaengig
+      geaendert, muss man das environment() jeweils selbst ueber seine
+      neue Empfindlichkeit benachrichtigen. Dies geschieht mit den
+      Funktionen RemoveSensitiveObject() bzw.InsertSensitiveObject(),
+      siehe deren Manpages.
+
+
+BEISPIEL
+========
+
+   Beispiel 1:
+   Beispielcode eines Objektes mit SENSITIVE_ATTACK und SENSITIVE_INVENTORY
+   siehe hier: /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c
+
+   Beispiel 2:
+   Ein Eiszapfen, der bei Feuerangriffen oder bei heissen Gegenstaenden im
+   gemeinsamen Environment zerschmelzen soll:
+
+   void create() {
+     SetProp( P_SENSITIVE, ({ ({SENSITIVE_ATTACK,     DT_FIRE, 100}),
+                               ({SENSITIVE_INVENTORY, DT_FIRE, 100}) }) );
+     [...]
+   }
+
+   varargs void trigger_sensitive_attack() {
+     remove();
+   }
+
+   varargs void trigger_sensitive_inv() {
+     call_out("remove",0);  // verzoegert, wegen move()
+   }
+
+   varargs int remove(int silent) {
+     if(!silent) {
+       object room = all_environment(this_object())[<1];
+       tell_room(room, Name()+" zerschmilzt.\n");
+     }
+     return ::remove();
+   }
+
+   - wird eine Fackel mit
+     SetProp(P_SENSITIVE,({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,250})}))
+     in das gleiche environment() wie dieser Zapfen bewegt wird, loest
+     diese im Zapfen trigger_sensitive_inv() aus
+   - wird ein Angriff mit DT_FIRE und initialem Schaden > 100 auf das
+     environment() veruebt, loest dies im Zapfen trigger_sensitive_attack()
+     aus
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY,
+               P_SENSITIVE_INVENTORY_TRIGGER
+   Funktionen: InsertSensitiveObject(L), RemoveSensitiveObject(L),
+               CheckSensitiveAttack(L), Defend(),
+               insert_sensitive_inv(L), insert_sensitive_inv_trigger(L),
+               trigger_sensitive_inv(L), trigger_sensitive_attack(L)
+   Defines:    /sys/sensitive.h
+
+Letzte Aenderung: 10. Januar 2015, Arathorn
diff --git a/doc/sphinx/man/props/P_SENSITIVE_ATTACK b/doc/sphinx/man/props/P_SENSITIVE_ATTACK
new file mode 100644
index 0000000..168c15b
--- /dev/null
+++ b/doc/sphinx/man/props/P_SENSITIVE_ATTACK
@@ -0,0 +1,42 @@
+
+P_SENSITIVE_ATTACK
+******************
+
+
+NAME
+====
+
+   P_SENSITIVE_ATTACK            "sensitive_attack"
+
+
+DEFINIERT IN
+============
+
+   /sys/sensitive.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht die Liste der zu informierenden Objekte, die potentiell
+   auf einen Angriff reagieren koennten.
+   Wird von InsertSensitiveObject() und RemoveSensitiveObject()
+   geschrieben und in CheckSensitiveAttack() ausgewertet.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_INVENTORY_TRIGGER, P_SENSITIVE_INVENTORY
+   CheckSensitiveAttack
+
+25.Apr.2001, Gloinson@MG
diff --git a/doc/sphinx/man/props/P_SENSITIVE_INVENTORY b/doc/sphinx/man/props/P_SENSITIVE_INVENTORY
new file mode 100644
index 0000000..418f9a1
--- /dev/null
+++ b/doc/sphinx/man/props/P_SENSITIVE_INVENTORY
@@ -0,0 +1,43 @@
+
+P_SENSITIVE_INVENTORY
+*********************
+
+
+NAME
+====
+
+   P_SENSITIVE_INVENTORY         "sensitive_inv"
+
+
+DEFINIERT IN
+============
+
+   /sys/sensitive.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht die Liste der zu informierenden Objekte, die potentiell
+   auf ein anderes Objekt mit gesetztem P_SENSITIVE_INVENTORY_TRIGGER
+   reagieren koennten.
+   Wird von InsertSensitiveObject() und RemoveSensitiveObject()
+   geschrieben.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_INVENTORY_TRIGGER, P_SENSITIVE_ATTACK
+   CheckSensitiveAttack
+
+25.Apr.2001, Gloinson@MG
diff --git a/doc/sphinx/man/props/P_SENSITIVE_INVENTORY_TRIGGER b/doc/sphinx/man/props/P_SENSITIVE_INVENTORY_TRIGGER
new file mode 100644
index 0000000..627a582
--- /dev/null
+++ b/doc/sphinx/man/props/P_SENSITIVE_INVENTORY_TRIGGER
@@ -0,0 +1,42 @@
+
+P_SENSITIVE_INVENTORY_TRIGGER
+*****************************
+
+
+NAME
+====
+
+   P_SENSITIVE_INVENTORY_TRIGGER "sensitive_inv_trigger"
+
+
+DEFINIERT IN
+============
+
+   /sys/sensitive.h
+
+
+BESCHREIBUNG
+============
+
+   Hier steht die Liste der aktiven Objekte, die eine potentielle
+   "Ausstrahlung" auf andere Objekte haben.
+   Wird von InsertSensitiveObject() und RemoveSensitiveObject()
+   geschrieben.
+
+
+BEMERKUNGEN
+===========
+
+   Nicht selbst veraendern - bitte P_SENSITIVE fuer Eintraege benutzen.
+
+
+SIEHE AUCH
+==========
+
+   P_SENSITIVE
+   InsertSensitiveObject, RemoveSensitiveObject
+   insert_sensitive_inv_trigger, insert_sensitive_inv
+   P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY
+   CheckSensitiveAttack
+
+25.Apr.2001, Gloinson@MG
diff --git a/doc/sphinx/man/props/P_SHOOTING_AREA b/doc/sphinx/man/props/P_SHOOTING_AREA
new file mode 100644
index 0000000..9339847
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOOTING_AREA
@@ -0,0 +1,38 @@
+
+P_SHOOTING_AREA
+***************
+
+
+NAME
+====
+
+   P_SHOOTING_AREA     "shooting_area"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Legt die 'Groesse' eines Raumes fest. Ein Schuetze kann mit seiner
+   Fernkampfwaffe nur dann aus diesem Raum in einen anderen Raum schiessen,
+   wenn die P_RANGE seiner Waffe mindestens gleich ist.
+
+   Erreichbare Raeume sind entweder das environment() oder der in
+   P_SHOOTING_AREA festgelegte Raum.
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_TARGET_AREA
+   Raeume:    P_NEVER_CLEAN
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_SHOOTING_WC b/doc/sphinx/man/props/P_SHOOTING_WC
new file mode 100644
index 0000000..6345d76
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOOTING_WC
@@ -0,0 +1,48 @@
+
+P_SHOOTING_WC
+*************
+
+
+NAME
+====
+
+   P_SHOOTING_WC     "shooting_wc"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Legt in einer Fernkampfwaffe UND ihrer Munition die Waffenstaerke fest.
+   Bei einem Schuss wird die Summe kombiniert mit der Geschicklichkeit
+   zur Berechnung der Angriffstaerke benutzt.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_SHOOTING_WC, 70);     // Langbogen
+   SetProp(P_SHOOTING_WC, 50);     // Kurzbogen
+
+   SetProp(P_SHOOTING_WC, 40);     // Bambuspfeil
+   SetProp(P_SHOOTING_WC, 60);     // Aluminiumpfeil
+
+   // So haetten Langbogen mit Aluminiumpfeil eine P_SHOOTING_WC von 70+60.
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Waffen:    P_WEAPON_TYPE, P_WC, P_EQUIP_TIME, P_NR_HANDS
+   Kampf:     Attack(L), Defend(L), P_DISABLE_ATTACK, P_ATTACK_BUSY
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_SHORT b/doc/sphinx/man/props/P_SHORT
new file mode 100644
index 0000000..49b2603
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHORT
@@ -0,0 +1,60 @@
+
+P_SHORT
+*******
+
+
+NAME
+====
+
+   P_SHORT                            "short"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Kurzbeschreibung des Objektes als String
+   oder Closure (diese muss einen String zurueckgeben).
+
+   ACHTUNG: Die Kurzbeschreibung sollte dabei weder mit einem
+            Satzzeichen noch mit einem "\n" abgeschlossen sein
+            (dies wird von den zustaendigen Funktionen erledigt).
+
+   Setzt man diese Property auf 0, so ist das Objekt unsichtbar, allerdings
+   ansprechbar, wenn der Spieler eine ID des Objektes kennt. D.h. Objekte
+   koennen mitgenommen, weggeworfen oder ggf. auch angegriffen werden. Will
+   man dies nicht, sollte man das Objekt mit P_INVIS unsichtbar machen.
+
+   Diese Property bestimmt die Ansicht des Objektes von aussen. Fuer die
+   Innen(kurz)ansicht von Raeumen muss man P_INT_LONG benutzen.
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion, die die Kurzbeschreibung ausgibt (short()), filtert P_SHORT
+   durch process_string(). Von der Nutzung dieses Features wird in neuem
+   Code abgeraten.
+   Soll eine dyn. Kurzbeschreibung geschaffen werden, bitte eine
+   F_QUERY_METHOD einsetzen oder short() passend ueberschreiben.
+
+
+BEISPIELE
+=========
+
+   // eine Axt sieht natuerlich so aus:
+   SetProp(P_SHORT, "Eine Axt");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_LONG, short()
+   Sonstiges:         P_INT_SHORT, process_string()
+
+27.05.2015, Zesstra
diff --git a/doc/sphinx/man/props/P_SHORT_CWD b/doc/sphinx/man/props/P_SHORT_CWD
new file mode 100644
index 0000000..46f0236
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHORT_CWD
@@ -0,0 +1,21 @@
+
+P_SHORT_CWD
+***********
+
+
+NAME
+====
+
+   P_SHORT_CWD                   "short_cwd"
+
+
+DEFINIERT IN
+============
+
+   /sys/shells.h
+
+
+BESCHREIBUNG
+============
+
+   .readme bei cd ausgeben oder nicht
diff --git a/doc/sphinx/man/props/P_SHOWEMAIL b/doc/sphinx/man/props/P_SHOWEMAIL
new file mode 100644
index 0000000..b6cf580
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOWEMAIL
@@ -0,0 +1,23 @@
+
+P_SHOWEMAIL
+***********
+
+
+NAME
+====
+
+   P_SHOWEMAIL                        "showemail"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Eintrag, wer die E-Mail im "finger" zu sehen bekommen soll:
+   0, "alle", "freunde"
+   Kann durch "emailanzeige" (/std/player/base.c) geaendert werden.
diff --git a/doc/sphinx/man/props/P_SHOW_ALIAS_PROCESSING b/doc/sphinx/man/props/P_SHOW_ALIAS_PROCESSING
new file mode 100644
index 0000000..94552dd
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOW_ALIAS_PROCESSING
@@ -0,0 +1,21 @@
+
+P_SHOW_ALIAS_PROCESSING
+***********************
+
+
+NAME
+====
+
+   P_SHOW_ALIAS_PROCESSING       "show_alias_processing"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Arbeit des Parsers beobachten (debugging)
diff --git a/doc/sphinx/man/props/P_SHOW_EXITS b/doc/sphinx/man/props/P_SHOW_EXITS
new file mode 100644
index 0000000..0e00886
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOW_EXITS
@@ -0,0 +1,31 @@
+
+P_SHOW_EXITS
+************
+
+
+NAME
+====
+
+   P_SHOW_EXITS                  "show_exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Im Spieler gesetzt, wenn der Spieler die offensichtlichen Ausgaenge
+   immer automatisch sehen will.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches:        P_HIDE_EXITS
+   Sonstiges:         AddExit(), GetExits(), int_long(), int_short()
+
+11. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_SHOW_INV b/doc/sphinx/man/props/P_SHOW_INV
new file mode 100644
index 0000000..e982154
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOW_INV
@@ -0,0 +1,32 @@
+
+P_SHOW_INV
+**********
+
+
+NAME
+====
+
+   P_SHOW_INV "show_inv"
+
+
+DEFINIERT IN
+============
+
+   <thing/description.h>
+
+
+BESCHREIBUNG
+============
+
+   Wenn diese Property auf einen Wert ungleich 0 gesetzt ist, wird das
+   Objekt, soweit es sich in einem Spieler befindet, in dessen
+   Langbeschreibung angezeigt. Zur Anzeige wird der Name des Objektes
+   verwendet.
+
+
+SIEHE AUCH
+==========
+
+   /std/thing/description.c
+
+Last modified: Sun May 19 20:36:05 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_SHOW_MSG b/doc/sphinx/man/props/P_SHOW_MSG
new file mode 100644
index 0000000..c19c49f
--- /dev/null
+++ b/doc/sphinx/man/props/P_SHOW_MSG
@@ -0,0 +1,69 @@
+
+P_SHOW_MSG
+**********
+
+
+NAME
+====
+
+   P_SHOW_MSG                          "show_message"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/put_and_get.h
+
+
+BESCHREIBUNG
+============
+
+   Mit P_SHOW_MSG kann man die Meldungen, die beim Vorzeigen eines Objektes
+   ausgegeben werden, modifizieren.
+
+   Folgende Werte sind moeglich:
+
+   o 0
+     Es wird eine Standardmeldung ausgegeben. Dies ist Voreinstellung.
+
+   o NO_PNG_MSG        == -1
+     Es wird keinerlei Meldung ausgegeben
+
+   o Ein Array aus Strings
+     Der erste String wird an den Spieler ausgegeben, der zweite
+     (optionale) an den Raum, der dritte (ebenfalls optionale) an den
+     Empfaenger.
+
+     Die Strings werden durch die Funktion replace_personal() geparst.
+       Objekt1 - Spieler
+       Objekt2 - das Objekt, das uebergeben wird
+       Objekt3 - Empfaenger
+
+     Wird der zweite String nicht angegeben, erfolgt keine Meldung an den
+     Raum. Beim Fehlen des dritten gibt es keine Meldung an den Empfaenger.
+
+
+BEISPIEL
+========
+
+   SetProp(P_SHOW_MSG, ({
+     "Du haeltst @WEM3 @WEN2 unter die Nase.",
+     "@WER1 haelt @WEM3 @WENU2 unter die Nase.",
+     "@WER1 haelt Dir @WENU2 unter die Nase."
+   }));
+
+   Das fuehrt bei Ugars "zeig peter medaille" zu folgenden Meldungen:
+
+   Ugar: "Du haeltst Peter die Medaille unter die Nase."
+   Raum: "Ugar haelt Peter eine Medaille unter die Nase."
+   Peter: "Ugar haelt Dir eine Medaille unter die Nase."
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_DROP_MSG, P_PUT_MSG, P_PICK_MSG, P_GIVE_MSG
+   Sonstiges:  replace_personal(E), show(L), show_objects(L),
+               show_notify(L), /std/living/put_and_get.c
+
+3. Juni 2008 Amynthor
diff --git a/doc/sphinx/man/props/P_SIBLINGS b/doc/sphinx/man/props/P_SIBLINGS
new file mode 100644
index 0000000..6e18f0c
--- /dev/null
+++ b/doc/sphinx/man/props/P_SIBLINGS
@@ -0,0 +1,22 @@
+
+P_SIBLINGS
+**********
+
+
+NAME
+====
+
+   P_SIBLINGS                     "siblings"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String mit den Blutsbruedern eines Spielers
+   (sofern vorhanden).
diff --git a/doc/sphinx/man/props/P_SIZE b/doc/sphinx/man/props/P_SIZE
new file mode 100644
index 0000000..aa311f3
--- /dev/null
+++ b/doc/sphinx/man/props/P_SIZE
@@ -0,0 +1,50 @@
+
+P_SIZE
+******
+
+
+NAME
+====
+
+   P_SIZE                        "size"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Groesse des Lebewesens bzw. Laenge der Waffe (in cm).
+
+   Wird keine Waffenlaenge explizit angegeben, so sind die Defaultwerte
+   fuer die entsprechenden Waffentypen folgende:
+
+      WT_SWORD  : 100
+      WT_AXE    :  80
+      WT_CLUB   :  80
+      WT_SPEAR  : 180
+      WT_KNIFE  :  20
+      WT_WHIP   : 200
+      WT_STAFF  : 150
+
+
+BEMERKUNGEN
+===========
+
+   1. Uebertreibt es bitte mit der Groesse nicht, auch sehr grosse NPCs
+      sollten nicht ueber 1000000 liegen. Sonst kriegt die Karategilde
+      Probleme.
+   2. Negative Werte fuer P_SIZE sind nicht moeglich, da dies zum einen
+      voellig unsinnig ist und zum anderen evtl. zu Problemen mit Waffen
+      fuehrt, die Schaden in Abhaengigkeit von P_SIZE machen und sich
+      darauf verlassen, dass nur positive Werte vorkommen.
+
+
+LETZTE AENDERUNG
+================
+
+   2006-09-29, von Zesstra
diff --git a/doc/sphinx/man/props/P_SKILLS b/doc/sphinx/man/props/P_SKILLS
new file mode 100644
index 0000000..492cbbe
--- /dev/null
+++ b/doc/sphinx/man/props/P_SKILLS
@@ -0,0 +1,30 @@
+
+P_SKILLS
+********
+
+
+NAME
+====
+
+   P_SKILLS                        "skills"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property sollte nicht mehr verwendet werden. Sie wurde
+   vollstaendig durch P_NEWSKILLS ersetzt.
+
+
+SIEHE AUCH
+==========
+
+   P_NEW_SKILLS
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_SKILL_ATTRIBUTES b/doc/sphinx/man/props/P_SKILL_ATTRIBUTES
new file mode 100644
index 0000000..066bd78
--- /dev/null
+++ b/doc/sphinx/man/props/P_SKILL_ATTRIBUTES
@@ -0,0 +1,69 @@
+
+P_SKILL_ATTRIBUTES
+******************
+
+
+NAME
+====
+
+   P_SKILL_ATTRIBUTES        "skill_attr"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/skill_attributes.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Prop stehen alle nicht-permanenten Modifikatoren der
+   Skill-Attribute.
+   Die Datenstruktur ist ein Mapping mit den SA-Namen als Schluessel und
+   jeweils drei Werten pro Schluessel.
+   Der erste Wert ist ein Array mit drei Werten: der Summe der stat.
+   Modifier, dem Zeitpunkt an dem dies Summe ungueltig wird und der
+   Gesamtzahl aktiver Modifikatoren.
+   Der zweite Wert enthaelt ein Mapping mit allen statischen Modifikatoren
+   und den Objekten dieser Mods als Schluessel. Die beiden Werte dieses
+   Mappings sind der Wert des Modifikators (int) und die Ablaufzeit (int).
+   Der dritte Wert enthaelt ein Mapping mit allen dynamischen
+   Modifikatoren und den Objekten dieser Mods als Schluessel. Die beiden
+   Werte dieses Mappings sind die zu rufende Closure (closure) und die
+   Ablaufzeit des Mods (int).
+
+   ([ SA_ATTR: ({Summe_Stat_Modifier, Zeitpunkt, AnzahlModifier, });
+               ([ ob1:value;duration,
+                  ob2:value;duration, ...]);  // stat. Modifier
+               ([ ob1:closure;duration,
+                  ob2:closure;duration, ...])     // dyn. Modifier
+               ,
+      SA_ATTR2: ({...}); ([]); ([]),
+      SA_ATTR3: ({...}); ([]); ([]),
+   ])
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property darf AUF GAR KEINEN FALL per Hand manipuliert werden,
+   dafuer gibt es die Funktionen ModifySkillAttribute() und
+   RemoveSkillAttributeModifier().
+   Zum Auslesen stehen QuerySkillAttribute() und
+   QuerySkillAttributeModifier() zur Verfuegung.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+13.09.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_SKILL_ATTRIBUTE_OFFSETS b/doc/sphinx/man/props/P_SKILL_ATTRIBUTE_OFFSETS
new file mode 100644
index 0000000..6bfcad3
--- /dev/null
+++ b/doc/sphinx/man/props/P_SKILL_ATTRIBUTE_OFFSETS
@@ -0,0 +1,49 @@
+
+P_SKILL_ATTRIBUTE_OFFSETS
+*************************
+
+
+NAME
+====
+
+   P_SKILL_ATTRIBUTE_OFFSETS       "skill_attr_offsets"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/skill_attributes.h
+
+
+BESHREIBUNG
+===========
+
+   Der Wert der Property ist ein Mapping: ([Attributname: Wert])
+   In dieser Property stehen permanente Abweichungen der Skillattribute
+   vom Standardwert 100.
+
+   Zu den Moeglichen Attributwerten, siehe P_SKILL_ATTRIBUTES.
+
+   Die Werte duerfen zwischen 10 und 1000 liegen.
+
+
+BEMERKUNG
+=========
+
+   Diese Property sollte AUF GAR KEINEN FALL in einem Spieler gesetzt
+   werden, ohne Ruecksprachen mit allerhoechsten Stellen!
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
+
+31.12.2013, Zesstra
diff --git a/doc/sphinx/man/props/P_SMELLS b/doc/sphinx/man/props/P_SMELLS
new file mode 100644
index 0000000..0098bd8
--- /dev/null
+++ b/doc/sphinx/man/props/P_SMELLS
@@ -0,0 +1,43 @@
+
+P_SMELLS
+********
+
+
+NAME
+====
+
+   P_SMELLS            "smell_details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property entspricht dem P_DETAILS fuer Standarddetails,
+   nur werden hierin Gerueche gespeichert:
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddSmells()
+   Loeschen:  RemoveSmells()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_SNOOPFLAGS b/doc/sphinx/man/props/P_SNOOPFLAGS
new file mode 100644
index 0000000..340dde2
--- /dev/null
+++ b/doc/sphinx/man/props/P_SNOOPFLAGS
@@ -0,0 +1,21 @@
+
+P_SNOOPFLAGS
+************
+
+
+NAME
+====
+
+   P_SNOOPFLAGS                  "snoopflags"
+
+
+DEFINIERT IN
+============
+
+   /sys/snooping.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_SOUNDS b/doc/sphinx/man/props/P_SOUNDS
new file mode 100644
index 0000000..520265b
--- /dev/null
+++ b/doc/sphinx/man/props/P_SOUNDS
@@ -0,0 +1,43 @@
+
+P_SOUNDS
+********
+
+
+NAME
+====
+
+   P_SOUNDS            "sound_details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property entspricht dem P_DETAILS fuer Standarddetails,
+   nur werden hierin Gerauesche gespeichert:
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddSounds()
+   Loeschen:  RemoveSounds()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_SP b/doc/sphinx/man/props/P_SP
new file mode 100644
index 0000000..fa30cb1
--- /dev/null
+++ b/doc/sphinx/man/props/P_SP
@@ -0,0 +1,37 @@
+
+P_SP
+****
+
+
+NAME
+====
+
+   P_SP                          "sp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   - Lebewesen
+     Anzahl der Konzentrationspunkte des Wesens.
+
+   - Speisen/Kneipen
+     Heilwirkung einer Portion der Speise auf die Konzentrationspunkte
+     des Konsumenten
+
+
+SIEHE AUCH
+==========
+
+   Props:             P_MAX_SP
+   Veraenderung:      reduce_spell_points(), restore_spell_points()
+                      buffer_sp()
+   Speisen/Kneipen:   std/pub, wiz/food, consume
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_SPECIAL_DETAILS b/doc/sphinx/man/props/P_SPECIAL_DETAILS
new file mode 100644
index 0000000..9b3f63c
--- /dev/null
+++ b/doc/sphinx/man/props/P_SPECIAL_DETAILS
@@ -0,0 +1,42 @@
+
+P_SPECIAL_DETAILS
+*****************
+
+
+NAME
+====
+
+   P_SPECIAL_DETAILS             "special_details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping von Details, die beim Anschauen eine Funktion starten.
+
+
+BEMERKUNGEN
+===========
+
+   Dies ist keine "echte" Property. Die Daten werden bei der Abfrage in einer
+   Querymethode dynamisch aus P_DETAILS extrahiert. Dementsprechend
+   funktioniert es auch nicht, hier eine Query- oder Setmethode von aussen
+   drauf zu legen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail()
+   Loeschen:  RemoveDetail()
+   Daten:     P_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail()
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_SPECIAL_EXITS b/doc/sphinx/man/props/P_SPECIAL_EXITS
new file mode 100644
index 0000000..3f2a7a5
--- /dev/null
+++ b/doc/sphinx/man/props/P_SPECIAL_EXITS
@@ -0,0 +1,51 @@
+
+P_SPECIAL_EXITS
+***************
+
+
+NAME
+====
+
+   P_SPECIAL_EXITS               "special_exits"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt ein Mapping (der Breite 2) mit den Ausgaengen, der Funktion,
+   die jeweils gerufen wird, wenn der Ausgang benutztwird und einer
+   Bewegungsmeldung.
+
+
+
+   Die Bewegungsmeldung wird bei SpecialExits nicht ausgewertet, sondern
+   ist nur aufgrund der gemeinsamen Datenstruktur vorhanden. Im Normalfall
+   ist sie 0.
+
+
+BEMERKUNG
+=========
+
+   Keine echte Property, wird bei der Abfrage aus P_EXITS erstellt.
+
+
+
+   Zugriff nur mit den dafuer vorgesehenen Funktionen, nicht aendern!
+
+
+SIEHE AUCH
+==========
+
+   AddExit(), AddSpecialExit(), GetExits(),
+   RemoveExit(), RemoveSpecialExit(),
+   GuardExit(),
+   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
+   ausgaenge
+
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/sphinx/man/props/P_SPELLRATE b/doc/sphinx/man/props/P_SPELLRATE
new file mode 100644
index 0000000..1a3e5a2
--- /dev/null
+++ b/doc/sphinx/man/props/P_SPELLRATE
@@ -0,0 +1,21 @@
+
+P_SPELLRATE
+***********
+
+
+NAME
+====
+
+   P_SPELLRATE                   "spellrate"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   NPC-Spellrate (in %)
diff --git a/doc/sphinx/man/props/P_SPELLS b/doc/sphinx/man/props/P_SPELLS
new file mode 100644
index 0000000..647daf4
--- /dev/null
+++ b/doc/sphinx/man/props/P_SPELLS
@@ -0,0 +1,21 @@
+
+P_SPELLS
+********
+
+
+NAME
+====
+
+   P_SPELLS                      "spells"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   NPC-Spells
diff --git a/doc/sphinx/man/props/P_SP_DELAY b/doc/sphinx/man/props/P_SP_DELAY
new file mode 100644
index 0000000..aa74360
--- /dev/null
+++ b/doc/sphinx/man/props/P_SP_DELAY
@@ -0,0 +1,23 @@
+
+P_SP_DELAY
+**********
+
+
+NAME
+====
+
+   P_SP_DELAY                 "sp_delay"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der heart_beats, bis die Magiepunkte um einen Punkt steigen.
+   Aenderungen dieser Property in Spielern beduerfen der
+   Genehmigung des EM fuer Balance.
diff --git a/doc/sphinx/man/props/P_START_HOME b/doc/sphinx/man/props/P_START_HOME
new file mode 100644
index 0000000..fd80124
--- /dev/null
+++ b/doc/sphinx/man/props/P_START_HOME
@@ -0,0 +1,21 @@
+
+P_START_HOME
+************
+
+
+NAME
+====
+
+   P_START_HOME                  "start_home"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Raum, in dem der Spieler nach dem Einloggen landen soll
diff --git a/doc/sphinx/man/props/P_STD_OBJECT b/doc/sphinx/man/props/P_STD_OBJECT
new file mode 100644
index 0000000..7c66296
--- /dev/null
+++ b/doc/sphinx/man/props/P_STD_OBJECT
@@ -0,0 +1,59 @@
+
+P_STD_OBJECT
+************
+
+
+NAME
+====
+
+   P_STD_OBJECT                  "std_object"
+
+
+DEFINIERT IN
+============
+
+   /sys/v_compiler.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt den Namen eines Files welches als Standard-Objekt fuer den
+   Virtual Compiler gelten soll.
+
+   In diesem File werden das generelle Aussehen, Ausgaenge, Funktionen
+   usw. der VC-generierten Raeume / Objekte festgelegt.
+
+   Dieses File ist ein 'normales' .c - File, welches geclont wird und
+   anschliessend umbenannt wird.
+
+
+
+   Ganz wichtig: Falls euer Standardobjekt (direkt oder indirekt) von
+   /std/room.c erbt, solltet ihr darauf achten, dass euer Objekt ausser dem
+   create() noch eine weitere (beliebige) Funktion hat.
+   Ansonsten wuerde das Programm eures Standardobjekts automatisch durch
+   /std/room.c ersetzt, was in der Regel zu schwer zu findenen Bugs fuehrt.
+
+
+BEISPIEL
+========
+
+   (create eines VCs)
+   protected void create() {
+     ...
+     SetProp(P_STD_OBJECT,"/d/region/magier/vc/std_raum");
+     ...
+   }
+
+   Was in diesem std_raum.c nun steht, wird in jedem VC-Clone
+   verfuegbar. Sei es Details, Gerueche, auch Objekte die per
+   AddItem eingebunden sind, ...
+
+
+SIEHE AUCH
+==========
+
+   P_COMPILER_PATH, virtual_compiler
+
+Letzte Aenderung: 22.10.07 von Zesstra
diff --git a/doc/sphinx/man/props/P_STORE_CONSUME b/doc/sphinx/man/props/P_STORE_CONSUME
new file mode 100644
index 0000000..8a9afd9
--- /dev/null
+++ b/doc/sphinx/man/props/P_STORE_CONSUME
@@ -0,0 +1,69 @@
+
+P_STORE_CONSUME
+***************
+
+
+NAME
+====
+
+   P_STORE_CONSUME                 "store_consume"
+
+
+DEFINIERT IN
+============
+
+   /sys/bank.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property ist entscheidend dafuer, wieviel Prozent an Objekten
+   bei jedem Reset in einem Lager eines Ladens vernichtet werden. Dies
+   geschieht aus Speicher- und Laggruenden. Es verbleibt dabei jedoch
+   eine Grundmenge an Objekten, deren Anzahl in der Property
+   P_MIN_STOCK festgehalten ist. Standardwert fuer P_STORE_CONSUME ist
+   hierbei 30%, aber in oft benutzten Laeden kann man dort ruhig einen
+   hoeheren Wert eintragen. Erlaubt sind Werte zwischen 0% und 100%.
+   Aufgeraeumt werden jedoch keine Objekte, die mittels AddItem() im
+   Lager eingebunden wurden. Mittels der Ladenfunktion AddFixedObject()
+   als staendig verfuegbar markierte Objekte werden natuerlich auch
+   nicht beruecksichtigt.
+   Beide hier erwaehnten Properties sollten ueberigens nur mittels
+   QueryProp/SetProp ausgelesen bzw. veraendert werden.
+
+
+BEISPIEL
+========
+
+   Ein eigener haeufig benutzter Laden koennte ein Lager in folgender
+   Form erhalten:
+     // myStore
+     #include <bank.h>
+     inherit "std/store";
+     void create()
+     { ::create();
+       SetProp(P_STORE_CONSUME,90);
+       // keine weiteren Beschreibungen, Spieler sollen da drin
+       // schliesslich nicht rumwuseln
+     }
+   Um das Lager dem Laden zuzuweisen, nutzt man folgendes:
+     // myShop
+     inherit "std/laden";
+     void create()
+     { ::create();
+       SetStorageRoom("pfad/myStore");
+       // Beschreibungen folgen
+       ...
+     }
+   Es werden hierbei waehrend jedes Lager-Resets 90% der im Lager
+   befindlichen Objekte vernichtet.
+
+
+SIEHE AUCH
+==========
+
+   P_MIN_STOCK, SetStorageRoom(), /std/store.c, /std/shop.c
+   AddItem(), RemoveItem(), AddFixedObject(), RemoveFixedObject()
+
+Last modified: 19-Jun-2015, Arathorn
diff --git a/doc/sphinx/man/props/P_STRETCH_TIME b/doc/sphinx/man/props/P_STRETCH_TIME
new file mode 100644
index 0000000..1b38b7e
--- /dev/null
+++ b/doc/sphinx/man/props/P_STRETCH_TIME
@@ -0,0 +1,34 @@
+
+P_STRETCH_TIME
+**************
+
+
+NAME
+====
+
+   P_STRETCH_TIME     "stretch_time"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt die Zeit in Runden (2s), die man braucht, um eine Fernwaffe zu
+   spannen/benutzen. Zaehlt seit dem letzten Schuss oder der Zeit des
+   Zueckens (P_EQUIP_TIME).
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA, P_TARGET_AREA
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_SUBGUILD_TITLE b/doc/sphinx/man/props/P_SUBGUILD_TITLE
new file mode 100644
index 0000000..83515d7
--- /dev/null
+++ b/doc/sphinx/man/props/P_SUBGUILD_TITLE
@@ -0,0 +1,38 @@
+
+P_SUBGUILD_TITLE
+****************
+
+
+NAME
+====
+
+   P_SUBGUILD_TITLE           "subguild_title"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eventuelle Zusatztitel eines Spielers, den er
+   innerhalb einer Gilde traegt. Das kann z.B. ein Clan sein, ein Zweig oder
+   einfach nur der Gildenrang.
+
+
+BEMERKUNGEN
+===========
+
+   Inhalt der Property kann 0 sein oder ein String.  Ein Zusatztitel kann
+   mittels P_VISIBLE_SUBGUILD_TITLE vorgetaeuscht werden.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD_TITLE, P_VISIBLE_SUBGUILD_TITLE
+
+26. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_SYNTAX_HELP b/doc/sphinx/man/props/P_SYNTAX_HELP
new file mode 100644
index 0000000..a796fb5
--- /dev/null
+++ b/doc/sphinx/man/props/P_SYNTAX_HELP
@@ -0,0 +1,62 @@
+
+P_SYNTAX_HELP
+*************
+
+
+NAME
+====
+
+   P_SYNTAX_HELP              "lib_p_syntax_help"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/commands.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property kann man fuer Spieler eine ausfuehrliche Syntaxhilfe zu
+   den Kommandos eines Objektes ablegen. Diese wird angezeigt, wenn der
+   Spieler das Kommando "synxtaxhilfe <objekt>" eingibt.
+   Die Property kann verschiedene Datenstrukturen enthalten:
+
+   1) ein String
+   Der String wird angezeigt, hierbei ggf. umgebrochen, vorhandene
+   Zeilenumbrueche werden beibehalten.
+
+   2) ein Array: ({hilfetext, bedingungen})
+
+   <hilfetext>:
+     * ein string:
+       Der String wird angezeigt, hierbei ggf. umgebrochen, vorhandene
+       Zeilenumbrueche werden beibehalten.
+     * eine lfun-closure:
+       Diese erhaelt beim Aufruf das betreffende Objekt als Argument.
+       Wenn diese dann einen String zurueckliefert, wird dieser dem Spieler
+       angezeigt. Hierbei wird ggf. umgebrochen, vorhandene Zeilenumbrueche
+       werden beibehalten.
+
+   <bedingungen>, welche erfuellt sein muessen, damit dem Spieler die Hilfe
+   angezeigt wird. Die Bedingungen sind entweder:
+     * ein Mapping fuer check_restriction()
+     * eine lfun-closure
+       Diese erhaelt beim Aufruf das betreffende Objekt als Argument und darf
+       eine 0 fuer 'erlaubt', 1 fuer 'nicht erlaubt (mit Standardtext)' oder
+       einen string fuer 'nicht erlaubt mit individuellem Text' sein.
+
+
+BEMERKUNGEN
+===========
+
+   Hat ein Objekt keine Syntaxhilfe, wird das Kommando "syntaxhilfe" aus dem
+   Objekt wieder entfernt (d.h. die Property muss gesetzt sein, bevor der
+   erste Spieler das Kommando eingibt).
+
+
+SIEHE AUCH
+==========
+
+   AddCmd
diff --git a/doc/sphinx/man/props/P_TARGET_AREA b/doc/sphinx/man/props/P_TARGET_AREA
new file mode 100644
index 0000000..614320f
--- /dev/null
+++ b/doc/sphinx/man/props/P_TARGET_AREA
@@ -0,0 +1,95 @@
+
+P_TARGET_AREA
+*************
+
+
+NAME
+====
+
+   P_TARGET_AREA     "target_area"
+
+
+DEFINIERT IN
+============
+
+   <combat.h>
+
+
+BESCHREIBUNG
+============
+
+   Kann in einem Raum gesetzt werden, um einen anderen, von dort aus mit
+   Fernkampfwaffen beschiessbaren Raum als Objekt oder Objektnamen (zu
+   einem geladenen Objekt) festzulegen.
+
+
+BEMERKUNGEN
+===========
+
+   Ein Schuetze kann nur in den anderen Raum schiessen, wenn die P_RANGE
+   seiner Waffe mindest gleich der P_SHOOTING_AREA des Raums (nicht des
+   Zielraums) ist.
+
+   Idealerweise sollte in mit P_TARGET_AREA angegebenen Raeumen auch
+   P_NEVER_CLEAN gesetzt sein.
+
+
+BEISPIELE
+=========
+
+   // #1 Ein Baum-Raum (/std/room)
+   void create() {
+     ::create();
+     SetProp(P_INT_SHORT, "Auf einem Baum");
+     SetProp(P_INT_LONG, break_string("Du hockst auf einem Baum und kannst "
+       "auf die Lichtung unter Dir sehen.\n");
+
+     AddExit("unten", RAEUME("lichtung"));
+
+     SetProp(P_TARGET_AREA, RAEUME("lichtung"));  // Lichtung beschiessbar
+     SetProp(P_SHOOTING_AREA, 15);                // 15 Entfernung
+   }
+
+   // #2 Ein Elefanten-Transporter (/std/transport)
+   // Er trampelt durch mehrere Raeume durch und der Schuetze kann vom
+   // Ruecken des Elefanten aus auf Gegner draussen schiessen.
+   void create() {
+     ::create();
+     SetProp(P_NAME, "Kampfelefant");
+     AddId(({"elefant", "kampfelefant")});
+     SetProp(P_GENDER, MALE);
+     SetProp(P_SHORT, "Ein Kampfelefant");
+     SetProp(P_INT_SHORT, "Auf einem Kampfelefanten");
+     // P_LONG, P_INT_LONG
+
+     SetProp(P_ENTERCMDS, ({"kletter", "erkletter"}));
+     SetProp(P_LEAVECMDS, ({"verlass", "verlasse"}));
+
+     SetProp(P_ARRIVEMSG, ({"Der Elefant trampelt in einen Raum.\n",
+                            "Ein Kampfelefant trampelt herein.\n"}));
+     SetProp(P_DEPARTMSG, ({"Der Elefant trampelt weiter.\n",
+                            "Der Kampfelefant trampelt weiter.\n"}));
+
+     SetProp(P_SHOOTING_AREA, 8); // weiter als 8 sollte man schiessen
+
+     AddRoute(RAEUME("schlachtfeld"), 20+random(10), 6, "Schlachtfeld");
+     AddRoute(RAEUME("burgtor"), 20+random(10), 6, "Burgtor");
+     AddRoute(RAEUME("burghof"), 20+random(10), 6, "Burghof");
+     AddRoute(RAEUME("halle"), 20+random(10), 6, "Halle");
+     AddRoute(RAEUME("bresche"), 20+random(10), 6, "Bresche");
+     // ...
+
+     Start();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA
+   Raeume:    P_NEVER_CLEAN
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
diff --git a/doc/sphinx/man/props/P_TEAM b/doc/sphinx/man/props/P_TEAM
new file mode 100644
index 0000000..4f853e8
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM
@@ -0,0 +1,39 @@
+
+P_TEAM
+******
+
+
+NAME
+====
+
+   P_TEAM                         "team"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Liefert das Teamobjekt, falls Spieler in einem Team ist, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_ASSOC_MEMBERS b/doc/sphinx/man/props/P_TEAM_ASSOC_MEMBERS
new file mode 100644
index 0000000..b57a276
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_ASSOC_MEMBERS
@@ -0,0 +1,48 @@
+
+P_TEAM_ASSOC_MEMBERS
+********************
+
+
+NAME
+====
+
+   P_TEAM_ASSOC_MEMBERS           "team_assoc_members"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit den zugeordneten NPCs des Spielers bzw. der Spieler,
+   dem dieser NPC zugeordnet ist.
+   Zugeordnete NPCs sind automatisch im Team des Spielers.
+
+
+BEMERKUNG
+=========
+
+   Der Zugriff auf diese Property sollte ueber AssocMember()
+   bzw. DeAssocMember() erfolgen.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_ATTACK_CMD b/doc/sphinx/man/props/P_TEAM_ATTACK_CMD
new file mode 100644
index 0000000..b7993e7
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_ATTACK_CMD
@@ -0,0 +1,39 @@
+
+P_TEAM_ATTACK_CMD
+*****************
+
+
+NAME
+====
+
+   P_TEAM_ATTACK_CMD              "team_attack_cmd"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Angriffsbefehl des Spielers, nicht setzbar.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_AUTOFOLLOW b/doc/sphinx/man/props/P_TEAM_AUTOFOLLOW
new file mode 100644
index 0000000..0e8c45f
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_AUTOFOLLOW
@@ -0,0 +1,39 @@
+
+P_TEAM_AUTOFOLLOW
+*****************
+
+
+NAME
+====
+
+   P_TEAM_AUTOFOLLOW              "team_autofollow"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Folgewunsch des Spielers, nicht setzbar.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_COLORS b/doc/sphinx/man/props/P_TEAM_COLORS
new file mode 100644
index 0000000..a855035
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_COLORS
@@ -0,0 +1,40 @@
+
+P_TEAM_COLORS
+*************
+
+
+NAME
+====
+
+   P_TEAM_COLORS                  "team_colors"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Grenzwerte fuer farbige Anzeige im Teaminfo.
+   Array mit 4 Werten: ({ lp_rot, lp_gelb, sp_rot, sp_gelb })
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_LEADER b/doc/sphinx/man/props/P_TEAM_LEADER
new file mode 100644
index 0000000..b4927f3
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_LEADER
@@ -0,0 +1,39 @@
+
+P_TEAM_LEADER
+*************
+
+
+NAME
+====
+
+   P_TEAM_LEADER                  "team_leader"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Liefert das Teamobjekt, falls Spieler Anfuehrer eines Teams ist.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_NEWMEMBER b/doc/sphinx/man/props/P_TEAM_NEWMEMBER
new file mode 100644
index 0000000..da89b70
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_NEWMEMBER
@@ -0,0 +1,40 @@
+
+P_TEAM_NEWMEMBER
+****************
+
+
+NAME
+====
+
+   P_TEAM_NEWMEMBER               "potential_team_member"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt das Objekt des Teamleaders, sobald ein Spieler um
+   Teamaufnahme gebeten hat, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_WANTED_ROW b/doc/sphinx/man/props/P_TEAM_WANTED_ROW
new file mode 100644
index 0000000..ba94af4
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_WANTED_ROW
@@ -0,0 +1,39 @@
+
+P_TEAM_WANTED_ROW
+*****************
+
+
+NAME
+====
+
+   P_TEAM_WANTED_ROW              "team_wanted_row"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Gewuenschte Reihe des Spielers (von 1 bis MAX_TEAMROWS)
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TEAM_WIMPY_ROW b/doc/sphinx/man/props/P_TEAM_WIMPY_ROW
new file mode 100644
index 0000000..90bfacb
--- /dev/null
+++ b/doc/sphinx/man/props/P_TEAM_WIMPY_ROW
@@ -0,0 +1,46 @@
+
+P_TEAM_WIMPY_ROW
+****************
+
+
+NAME
+====
+
+   P_TEAM_WIMPY_ROW               "team_wimpy_row"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/team.h
+
+
+BESCHREIBUNG
+============
+
+   Fluchtreihe des Spielers, von 1 bis MAX_TEAMROWS.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Fluchtreihe <=1 ist, ist die Flucht in eine hintere Reihe
+   deaktiviert.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD, P_TEAM_AUTOFOLLOW,
+               P_TEAM_COLORS, P_TEAM_LEADER, P_TEAM_NEWMEMBER,
+               P_TEAM_WANTED_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
+Last modified: 16-08-2010, Gabylon
diff --git a/doc/sphinx/man/props/P_TELNET_RTTIME b/doc/sphinx/man/props/P_TELNET_RTTIME
new file mode 100644
index 0000000..b781bea
--- /dev/null
+++ b/doc/sphinx/man/props/P_TELNET_RTTIME
@@ -0,0 +1,43 @@
+
+P_TELNET_RTTIME
+***************
+
+
+NAME
+====
+
+   P_TELNET_RTTIME                                  "p_lib_telnet_rttime"
+
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht die letzte gemessene 'round-trip' Zeit
+   (in Mikrosekunden) einer 'Telnet timing mark' vom MUD zum Client und
+   zurueck.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt und 'telnet keepalive' eingeschaltet
+   ist, ansonsten bleibt diese Property 0.
+   Die meisten Telnets/Clients antworten zumindest eine Ablehnung auf
+   die 'timing marks', so dass trotzdem eine Zeit bestimmt werden kann.
+
+   Die Prop kann nicht gesetzt werden bzw. es hat keinen Effekt.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_COLS, P_TTY_ROWS, P_TTY_SHOW, P_TTY, P_TTY_TYPE
+
+
+LETZTE AeNDERUNG
+================
+
+   03.02.2013, Zesstra
diff --git a/doc/sphinx/man/props/P_TESTPLAYER b/doc/sphinx/man/props/P_TESTPLAYER
new file mode 100644
index 0000000..bf0c765
--- /dev/null
+++ b/doc/sphinx/man/props/P_TESTPLAYER
@@ -0,0 +1,48 @@
+
+P_TESTPLAYER
+************
+
+
+NAME
+====
+
+   P_TESTPLAYER                  "testplayer"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Spieler ein Testspieler ist. Enthaelt die UID des
+   Magiers, dem dieser Testie (momentan) gehoert.
+
+
+
+   Bei Testspielern duerfen Skills geaendert werden, sie duerfen gezappt
+   werden und - ihre eigentliche Aufgabe - nicht angeschlossene Gebiete
+   testen.
+
+   AUSNAHMEN: Gildentesties duerfen nur sehr eingeschraenkt manipuliert
+              werden werden, da sie im ganzen Mud rumlaufen koennen,
+              Spielerkontakt haben und nach Abschluss der Tests ggf. sogar
+              die Testiemarkierung entfernt werden kann.
+
+
+
+   Fuer Spielertesties, die von einem Spieler kontrolliert werden, gelten
+   teilweise besondere Regeln, s. 'spielertesties'.
+
+BEMERKUNGEN:
+   P_TESTPLAYER kann nur per SetProp() gesetzt werden und das auch nur
+   ein Mal! Geloescht werden kann das Flag nur von EM+.
+
+
+ZULETZT GEAeNDERT
+=================
+
+05.01.2010, Zesstra
diff --git a/doc/sphinx/man/props/P_TIMED_ATTR_MOD b/doc/sphinx/man/props/P_TIMED_ATTR_MOD
new file mode 100644
index 0000000..fa7db3f
--- /dev/null
+++ b/doc/sphinx/man/props/P_TIMED_ATTR_MOD
@@ -0,0 +1,78 @@
+
+P_TIMED_ATTR_MOD
+****************
+
+
+NAME
+====
+
+   P_TIMED_ATTR_MOD         "timed_attr_mod"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Property werden Attribut-Modifikatoren gespeichert, die
+   nicht ueber laengere Zeit wirksam sein sollen.
+   Die Wirksamkeit der Modifikatoren kann an Zeit und Objekte
+   gebunden werden.
+
+   Intern werden die Modifikatoren in einer Datenstruktur der Form
+
+   ({
+      ({ Ablaufzeiten }),
+      ([ Key : Ablaufobjekt ]),
+      ([ Key : ([ Mapping mit den Modifikatoren ]);
+        Ablaufzeit ; Ablaufobjekt ; Nachrichtenempfaenger
+      ])
+   })
+
+   gespeichert mit:
+   * Ablaufzeiten:  Zeit in Sekunden seit 1. Jan 1970, 0.0:0 GMT
+   * Ablaufobjekte: Objekte, an deren Existenz die Attribut-
+                    veraenderungen gebunden sind
+   * Nachrichtenempfaenger:
+     Objekte/Klassen, welche ueber abgelaufene Attributveraenderung
+     durch den Aufruf von "NotifyTimedAttrModExpired" (mit key als
+     Argument) benachrichtigt werden.
+
+   Das Setzen der Werte erfolgt NUR ueber die Methoden SetTimedAttrModifier
+   und DeleteTimedAttrModifier.
+
+   Die Daten zu einem Key koennen ueber QueryTimedAttrModifier abgefragt
+   werden. Die Abfrage mittels QueryProp liefert eine Kopie der gueltigen
+   Datenstruktur, die per Query nicht (siehe Bemerkungen).
+
+   Die Bedingungen fuer die ueber P_TIMED_ATTR_MOD gesetzten
+   Attributveraenderungen werden im Heartbeat in der Funktion
+   attribute_hb ueberprueft. Eine verminderte Funktionalitaet im
+   Falle von Magiern ist somit kein Fehlerfall.
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property. Die Methode _query_timed_attr_mod() in
+   /std/living/attributes.c stellt die Daten zusammen.
+
+   ACHTUNG: Bitte nur die bereitgestellten Methoden zur Manipulation
+            benutzen! Setzen als Property hat keinen Effekt.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+Last modified: Tue Jul 27 20:00:20 2004 by Muadib
diff --git a/doc/sphinx/man/props/P_TIMEZONE b/doc/sphinx/man/props/P_TIMEZONE
new file mode 100644
index 0000000..7e4ce7d
--- /dev/null
+++ b/doc/sphinx/man/props/P_TIMEZONE
@@ -0,0 +1,23 @@
+
+P_TIMEZONE
+**********
+
+
+NAME
+====
+
+   P_TIMEZONE                 "timezone"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Integer-Wert, der bei der Uhrzeitmeldung und beim Befehl
+   "(uhr)zeit" beruecksichtig wird. Gibt die Anzahl der Stunden
+   Zeitabweichung von Berliner Zeit an.
diff --git a/doc/sphinx/man/props/P_TITLE b/doc/sphinx/man/props/P_TITLE
new file mode 100644
index 0000000..555e26a
--- /dev/null
+++ b/doc/sphinx/man/props/P_TITLE
@@ -0,0 +1,21 @@
+
+P_TITLE
+*******
+
+
+NAME
+====
+
+   P_TITLE                       "title"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/description.h
+
+
+BESCHREIBUNG
+============
+
+   Titel des Spielers. Erscheint hinter dem Namen in Kurz/Langbeschreibung.
diff --git a/doc/sphinx/man/props/P_TOO_HEAVY_MSG b/doc/sphinx/man/props/P_TOO_HEAVY_MSG
new file mode 100644
index 0000000..c2a40ea
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOO_HEAVY_MSG
@@ -0,0 +1,50 @@
+
+P_TOO_HEAVY_MSG
+***************
+
+
+NAME
+====
+
+   P_TOO_HEAVY_MSG                      "too_heavy_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
+   versucht, ein Objekt in einen Behaelter zu legen, fuer den dieses Objekt
+   zu schwer ist.
+   Die Property ist im Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("<Objekt> passt in <Behaelter> nicht mehr rein.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
+   zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_TOO_HEAVY_MSG, "Wenn du @WEN1 noch in den Beutel stecken"
+                            " wuerdest, wuerde er reissen.");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG, P_NOINSERT_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/props/P_TOO_MANY_MSG b/doc/sphinx/man/props/P_TOO_MANY_MSG
new file mode 100644
index 0000000..fd1ffe9
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOO_MANY_MSG
@@ -0,0 +1,50 @@
+
+P_TOO_MANY_MSG
+**************
+
+
+NAME
+====
+
+   P_TOO_MANY_MSG                      "too_many_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/moving.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn jemand
+   versucht, ein Objekt in einen Behaelter zu legen, der schon die maximale
+   Anzahl an Objekten enthaelt.
+   Die Property ist im Behaelter zu setzen.
+   Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
+   so wird die Standardmeldung ausgegeben.
+   ("Dafuer ist nicht mehr genug Platz in <Behaelter>.")
+   Der String in der Property wird noch durch replace_personal()
+   verarbeitet, das zu bewegende Objekt wird als erstes, der Behaelter als
+   zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
+   umgebrochen.
+   Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
+   ganz.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_TOO_MANY_MSG, "Aber der Korb hat doch nur drei Faecher, die"
+                           " sind alle schon voll.");
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOINSERT_MSG,
+               P_NOLEAVE_MSG, P_NODROP, P_NOGET
+   Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
+               P_WEAR_MSG, P_WIELD_MSG
+   Sonstiges:  replace_personal(E), /std/living/put_and_get.c
diff --git a/doc/sphinx/man/props/P_TOTAL_AC b/doc/sphinx/man/props/P_TOTAL_AC
new file mode 100644
index 0000000..baa9cf9
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOTAL_AC
@@ -0,0 +1,42 @@
+
+P_TOTAL_AC
+**********
+
+
+NAME
+====
+
+   P_TOTAL_AC                    "total_ac"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert der Abwehrstaerke des Wesens.
+   Dieser wird durch Aufaddieren der P_AC aller getragenen Ruestungen
+   bestimmt. Aus diesem Grund ist das Abfragen dieser Property ziemlich
+   teuer. Falls das Ergebnis mehrfach kurz hintereinander gebraucht wird,
+   sollte die Property auf jeden Fall nur einmal abgefragt und der Wert
+   gespeichert werden.
+
+
+BEMERKUNGEN
+===========
+
+   Auf diese Property sollte nicht mittels Query() oder Set() zugegriffen
+   werden, das Setzen von Query- oder Setmethoden bitte auf jeden Fall
+   unterlassen.
+
+
+SIEHE AUCH
+==========
+
+   P_AC
+
+05.09.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_TOTAL_LIGHT b/doc/sphinx/man/props/P_TOTAL_LIGHT
new file mode 100644
index 0000000..f4f0083
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOTAL_LIGHT
@@ -0,0 +1,42 @@
+
+P_TOTAL_LIGHT
+*************
+
+
+NAME
+====
+
+   P_TOTAL_LIGHT                 "total_light"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gibt das Lichtlevel an, das von einem Objekt ausgeht. Hierzu wird das
+   eigene Lichtlevel P_LIGHT mit dem gesamten Inhalt eines Containers
+   verrechnet.
+
+   Bitte _nur_ ueber QueryProp auf diese Property zugreifen,
+   da das Lichtlevel ggf. neu berechnet werden muss!
+
+   Ein direktes setzen dieser Property ist NICHT moeglich, hierzu bitte
+   P_LIGHT benutzen!
+
+
+BEMERKUNGEN
+===========
+
+   Das ist die VON einem Objekt ausgehende Lichtstaerke. Fuer das IN einem
+   Raum herrschende Licht bitte P_INT_LIGHT abfragen!
+
+
+SIEHE AUCH
+==========
+
+   P_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
diff --git a/doc/sphinx/man/props/P_TOTAL_OBJECTS b/doc/sphinx/man/props/P_TOTAL_OBJECTS
new file mode 100644
index 0000000..4e2d009
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOTAL_OBJECTS
@@ -0,0 +1,32 @@
+
+P_TOTAL_OBJECTS
+***************
+
+
+NAME
+====
+
+   P_TOTAL_OBJECTS                "total_objects"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Objekte im Container. Diese Property kann man nur abfragen!
+   Es werden nur Objekte gezaehlt, deren Methode short() einen
+   Wert != 0 zurueckgibt. Insofern koennen Spielern beliebig
+   viele unsichtbare Objekte gegeben werden ohne sie zu behindern.
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_OBJECTS
+
+26.Jan 2005 Gloinson
diff --git a/doc/sphinx/man/props/P_TOTAL_WC b/doc/sphinx/man/props/P_TOTAL_WC
new file mode 100644
index 0000000..19349f0
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOTAL_WC
@@ -0,0 +1,45 @@
+
+P_TOTAL_WC
+**********
+
+
+NAME
+====
+
+   P_TOTAL_WC                      "total_wc"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+         In dieser Property wird der numerische Wert der Angriffsstaerke
+         eines Lebewesens registriert.
+   Hierzu werden die P_WC von P_WEAPON bzw. P_HANDS sowie die Kraft des
+   Lebewesens beruecksichtigt.
+         Nicht eingerechnet in die Angriffsstaerke sind natuerlich Extraspells und
+   -skills des Angreifers.
+   Braucht man den Wert mehrfach kurz hintereinander, sollte man die Prop aber
+   nur einmal abfragen und den Wert speichern (sofern sich in der Zwischenzeit
+   nichts an der Waffe, den Hands oder den Attributen des Lebenwesens aendert).
+
+
+BEMERKUNGEN
+===========
+
+   Auf diese Property sollte nicht mittels Query() oder Set() zugegriffen
+   werden, das Setzen von Query- oder Setmethoden bitte auf jeden Fall
+   unterlassen.
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_WC, P_XP
+
+05.09.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_TOTAL_WEIGHT b/doc/sphinx/man/props/P_TOTAL_WEIGHT
new file mode 100644
index 0000000..bdb72f6
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOTAL_WEIGHT
@@ -0,0 +1,21 @@
+
+P_TOTAL_WEIGHT
+**************
+
+
+NAME
+====
+
+   P_TOTAL_WEIGHT                "total_weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/restrictions.h
+
+
+BESCHREIBUNG
+============
+
+   Gewicht incl. Inhalt in Gramm. P_WEIGHT_PERCENT wird beruecksichtigt.
diff --git a/doc/sphinx/man/props/P_TOUCH_DETAILS b/doc/sphinx/man/props/P_TOUCH_DETAILS
new file mode 100644
index 0000000..f4345db
--- /dev/null
+++ b/doc/sphinx/man/props/P_TOUCH_DETAILS
@@ -0,0 +1,43 @@
+
+P_TOUCH_DETAILS
+***************
+
+
+NAME
+====
+
+   P_TOUCH_DETAILS            "touch_details"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property entspricht dem P_DETAILS fuer Standarddetails,
+   nur werden hierin Gerueche gespeichert:
+   Diese Property enthaelt ein Mapping, in der Details im Objekt
+   definiert werden und Beschreibungen, die ausgegeben werden, wenn man
+   sich diese Details anschaut.
+
+
+BEMERKUNGEN
+===========
+
+   Man sollte diese Property nicht per Hand veraendern, sondern die
+   Funktionen nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddTouchDetail()
+   Loeschen:  RemoveTouchDetail()
+   Aehnlich:  AddDetail(), P_DETAILS
+   Sonstiges: GetDetail(), break_string()
+
+27. Jan 2013 Gloinson
diff --git a/doc/sphinx/man/props/P_TPORT_COST_IN b/doc/sphinx/man/props/P_TPORT_COST_IN
new file mode 100644
index 0000000..f2e51a9
--- /dev/null
+++ b/doc/sphinx/man/props/P_TPORT_COST_IN
@@ -0,0 +1,22 @@
+
+P_TPORT_COST_IN
+***************
+
+
+NAME
+====
+
+   P_TPORT_COST_IN               "tport_cost_in"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einem Raum mit Sehertor: Kostenanteil, um sich in den Raum zu
+   teleportieren
diff --git a/doc/sphinx/man/props/P_TPORT_COST_OUT b/doc/sphinx/man/props/P_TPORT_COST_OUT
new file mode 100644
index 0000000..c97c752
--- /dev/null
+++ b/doc/sphinx/man/props/P_TPORT_COST_OUT
@@ -0,0 +1,22 @@
+
+P_TPORT_COST_OUT
+****************
+
+
+NAME
+====
+
+   P_TPORT_COST_OUT              "tport_cost_out"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   In einem Raum mit Sehertor: Kostenanteil, sich aus dem Raum heraus
+   zu teleportieren
diff --git a/doc/sphinx/man/props/P_TRANK_FINDEN b/doc/sphinx/man/props/P_TRANK_FINDEN
new file mode 100644
index 0000000..a3e270d
--- /dev/null
+++ b/doc/sphinx/man/props/P_TRANK_FINDEN
@@ -0,0 +1,22 @@
+
+P_TRANK_FINDEN
+**************
+
+
+NAME
+====
+
+   P_TRANK_FINDEN                "trank_finden"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/potion.h
+
+
+BESCHREIBUNG
+============
+
+   Wenn die Property auf 1 steht kann immer ein Zaubertrank gefunden
+   werden, auch wenn er nicht in der Liste des Spielers steht.
diff --git a/doc/sphinx/man/props/P_TRANSPARENT b/doc/sphinx/man/props/P_TRANSPARENT
new file mode 100644
index 0000000..56c0558
--- /dev/null
+++ b/doc/sphinx/man/props/P_TRANSPARENT
@@ -0,0 +1,46 @@
+
+P_TRANSPARENT
+*************
+
+
+NAME
+====
+
+   P_TRANSPARENT                 "transparent"
+
+
+DEFINIERT IN
+============
+
+   /sys/container.h
+
+
+BESCHREIBUNG
+============
+
+   ist != 0, wenn in einen Container hinein (offen) oder aus einem
+   hinausgeschaut werden kann.
+
+   Schaut man aus einem hinaus, erhaelt der Spieler normalerweise die
+   Meldung 'Ausserhalb siehst Du:'. Diese kann jedoch durch eine eigene,
+   stimmigere  Meldung ersetzt werden, wenn in P_TRANSPARENT ein String
+   mit dieser Meldung angegeben wird.
+
+
+BEISPIEL
+========
+
+   SetProp(P_TRANSPARENT,1); -> normale Meldung
+
+   SetProp(P_TRANSPARENT,"Vom Ruecken des Pferdes aus siehst Du:\n");
+
+   Diese Meldung ist natuerlich nur dann sinnvoll, wenn es sich
+   auch tatsaechlich um ein Pferd handelt :-)
+
+
+SIEHE AUCH
+==========
+
+   int_long()
+
+Last modified: Mon Jul 18 24:00:00 2001 by Tilly
diff --git a/doc/sphinx/man/props/P_TRAVEL_CMDS b/doc/sphinx/man/props/P_TRAVEL_CMDS
new file mode 100644
index 0000000..3f9b0d5
--- /dev/null
+++ b/doc/sphinx/man/props/P_TRAVEL_CMDS
@@ -0,0 +1,62 @@
+
+P_TRAVEL_CMDS
+*************
+
+
+NAME
+====
+
+   P_TRAVEL_CMDS                   "travel_cmds"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Array mit Befehlen, die zum Verlassen UND Betreten des Trans-
+   porters fuehren.
+
+
+BEISPIEL
+========
+
+   void create()
+   {
+     ::create();
+
+     SetProp(P_TRAVEL_CMDS,({ "steig","steige" }) );
+
+   }
+
+   Als Parameter werden hier ausschliesslich 'auf,in' und 'von,aus'
+   verarbeitet.
+
+   steige auf|in  <xxx>    fuehrt also zum Betreten des Transporters,
+   steige von|aus <xxx>    dagegen fuehrt zum Verlassen desselben.
+
+
+BEMERKUNGEN
+===========
+
+   Um /std/transport.c nicht aufzublaehen, werden weitere Parameter wie
+   etwa 'steige auf|in das|die|den xxx' _nicht_ unterstuetzt!
+
+   Hier muss der verantwortliche Magier schon eine eigene Loesung finden
+   und in seinen Transporter schreiben.
+
+
+SIEHE AUCH
+==========
+
+   P_LEAVEFAIL, P_ENTERFAIL, P_ENTERCMDS, P_LEAVECMDS, transporter,
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_TRAVEL_INFO b/doc/sphinx/man/props/P_TRAVEL_INFO
new file mode 100644
index 0000000..720e9ec
--- /dev/null
+++ b/doc/sphinx/man/props/P_TRAVEL_INFO
@@ -0,0 +1,53 @@
+
+P_TRAVEL_INFO
+*************
+
+
+NAME
+====
+
+   P_TRAVEL_INFO                 "travel_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/transport.h
+
+
+BESCHREIBUNG
+============
+
+   Array mit Informationen zur vom Spieler gewuenschten Reiseroute.
+
+   [0]        Der Raum (object), in dem die Reiseroute momentan
+              'aktiv' ist. Nur hier wird sie beruecksichtigt.
+
+   [1]        Das gewuenschte Transportmittel (object) falls
+              gewaehlt. Ansonsten 0.
+
+   [2]        Der gewuenschte Zielort (string) oder 0 (ziellos).
+
+   [3]        Der gewuenschte Zielort als Richtung (string), falls
+              gewaehlt (z.B. 'zur Feuerinsel'). Sonst 0. Wird aus
+              P_HARBOUR des Zielraumes ausgelesen.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property wird von /std/transport.c sowie std/player/travel.c
+   verwendet, und sollte NICHT von anderen Objekten oder per Hand
+   veraendert werden!
+
+
+SIEHE AUCH
+==========
+
+   /std/transport.c, /std/player/travel.c, reise
+
+
+LETZTER AENDERUNG
+=================
+
+   Don, 24.01.2002, 10:15:07h von Tilly
diff --git a/doc/sphinx/man/props/P_TRAY b/doc/sphinx/man/props/P_TRAY
new file mode 100644
index 0000000..0c394d4
--- /dev/null
+++ b/doc/sphinx/man/props/P_TRAY
@@ -0,0 +1,21 @@
+
+P_TRAY
+******
+
+
+NAME
+====
+
+   P_TRAY                        "tray"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   *** KEINE BESCHREIBUNG VORHANDEN ***
diff --git a/doc/sphinx/man/props/P_TTY b/doc/sphinx/man/props/P_TTY
new file mode 100644
index 0000000..87841fd
--- /dev/null
+++ b/doc/sphinx/man/props/P_TTY
@@ -0,0 +1,45 @@
+
+P_TTY
+*****
+
+
+NAME
+====
+
+   P_TTY                         "tty"
+
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   Name der Terminalemulation, die der Spieler nutzt.
+   Es existieren bisher "dumb", "vt100" und "ansi".
+
+
+ANMERKUNG
+=========
+
+   Farben duerfen ausschliesslich bei P_TTY=="ansi" benutzt werden.
+   Bei nicht farbfaehigen Terminals koennen ANSI-Codes die gesamte
+   Ausgabe zerschiessen!
+
+   Die Attribute fett, unterstrichen, blinkend und invers koennen auch
+   schon von vt100-Terminals dargestellt werden. Aber nicht ueberall
+   sind alle Attribute/Farben implementiert.
+
+   Bei allen ANSI-Codes sind drei Sachen zu beachten:
+
+
+
+      1) Sparsam benutzen! Aufgezwungene Hervorhebungen koennen
+         Spieler ganz schnell nerven.
+
+      2) Nicht jeder benutzt dieselbe Hintergrundfarbe!
+
+      3) Sparsam benutzen! Beser noch: nur im Notfall!
diff --git a/doc/sphinx/man/props/P_TTY_COLS b/doc/sphinx/man/props/P_TTY_COLS
new file mode 100644
index 0000000..8780417
--- /dev/null
+++ b/doc/sphinx/man/props/P_TTY_COLS
@@ -0,0 +1,40 @@
+
+P_TTY_COLS
+**********
+
+
+NAME
+====
+
+   P_TTY_COLS                                  "tty_cols"
+
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht die Anzahl der Spalten, die das
+   Terminalfenster des Spielers derzeit hat.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
+   leer.
+   Das Setzen der Property aendert die Fenstergroesse des Spielers
+   natuerlich nicht.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_ROWS, P_TTY_TYPE, P_TTY_SHOW
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/sphinx/man/props/P_TTY_ROWS b/doc/sphinx/man/props/P_TTY_ROWS
new file mode 100644
index 0000000..7289109
--- /dev/null
+++ b/doc/sphinx/man/props/P_TTY_ROWS
@@ -0,0 +1,40 @@
+
+P_TTY_ROWS
+**********
+
+
+NAME
+====
+
+   P_TTY_ROWS                                  "tty_rows"
+
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht die Anzahl der Zeilen, die das
+   Terminalfenster des Spielers derzeit hat.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
+   leer.
+   Das Setzen der Property aendert die Fenstergroesse des Spielers
+   natuerlich nicht.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_COLS, P_TTY_TYPE, P_TTY_SHOW
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/sphinx/man/props/P_TTY_SHOW b/doc/sphinx/man/props/P_TTY_SHOW
new file mode 100644
index 0000000..a43076f
--- /dev/null
+++ b/doc/sphinx/man/props/P_TTY_SHOW
@@ -0,0 +1,35 @@
+
+P_TTY_SHOW
+**********
+
+
+NAME
+====
+
+   P_TTY_SHOW                                  "tty_show"
+
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   Bei Telnets, die Telnetnegotiations unterstuetzen, wird eine Aenderung
+   der Fenstergroesse dem Spielerobjekt mitgeteilt. Steht in P_TTY_SHOW
+   ein Wert ungleich Null, wird dem Spieler diese Aenderung mitgeteilt.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_ROWS, P_TTY_COLS, P_TTY_TYPE, telnegs
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/sphinx/man/props/P_TTY_TYPE b/doc/sphinx/man/props/P_TTY_TYPE
new file mode 100644
index 0000000..5842cb2
--- /dev/null
+++ b/doc/sphinx/man/props/P_TTY_TYPE
@@ -0,0 +1,41 @@
+
+P_TTY_TYPE
+**********
+
+
+NAME
+====
+
+   P_TTY_TYPE                                  "tty_type"
+
+
+DEFINIERT IN
+============
+
+   /secure/telnetneg.h
+
+
+BESCHREIBUNG
+============
+
+   In dieser Properties steht der Terminaltyp, den ein Spieler lokal auf
+   seinem Rechner verwendet.
+
+   Voraussetzung hierfuer ist allerdings, dass das Telnet des Spielers
+   Telnetnegotiations unterstuetzt, ansonsten bleibt diese Property
+   leer. Die meisten Telnets/Clients geben ihren Terminaltyp allerdings
+   nicht preis.
+   Das Setzen der Property aendert den Terminaltyp des Spielers
+   natuerlich nicht.
+
+
+SIEHE AUCH
+==========
+
+   P_TTY_COLS, P_TTY_ROWS, P_TTY_SHOW
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/sphinx/man/props/P_UNIT_DECAY_FLAGS b/doc/sphinx/man/props/P_UNIT_DECAY_FLAGS
new file mode 100644
index 0000000..25a5ed1
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNIT_DECAY_FLAGS
@@ -0,0 +1,90 @@
+
+P_UNIT_DECAY_FLAGS
+******************
+
+
+NAME
+====
+
+   P_UNIT_DECAY_FLAGS                                 "unit_decay_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Prop kann das Zerfallsverhalten gesteuert werden, entweder
+   fuer alle Clones durch Setzen in der Blueprint oder fuer einzelne Clones.
+
+   In dieser Prop koennen momentan 4 Flags gesetzt werden:
+   - NO_DECAY:
+        Zerfall ist abgeschaltet.
+   - NO_DECAY_UNTIL_MOVE:
+        Der Zerfall ist solange ausgesetzt, bis dieses Objekt in ein anderes
+        Env bewegt wird. Setzt also ein NPC beim AddItem() diese Prop,
+        zerfaellt seine Unit nicht, bis sie bewegt wurde (Leiche, Spieler
+        etc.). Hierbei zaehlt das move() nicht, wenn das Objekt noch kein
+        Env hatte, es zaehlen nur Moves von einem Env in ein anderes Env.
+        Dieses Flag sollte nur in Clones gesetzt werden.
+   - INACCURATE_DECAY
+        Sollen z.b. 45.34 Einheiten zerfallen, wird der Rest von 0.34
+        normalerweise als Wahrscheinlichkeit aufgefasst, dass eine
+        zusaetzliche Einheit zerfaellt. Dieses Flag sorgt dafuer, dass
+        dieser Rest weggeworfen wird und einfach 45 Einheiten zerfallen.
+        Gleichzeitig wird bei diesem Flag aber _immer min_ 1 Einheit
+        zerstoert!
+   - ABSOLUTE_DECAY
+        P_UNIT_DECAY_QUOTA wird nicht als prozentualer Anteil aufgefasst,
+        sondern als absolute Zahl, d.h. es zerfallen immer einfach
+        P_UNIT_DECAY_QUOTA Einheiten.
+
+   Diese Flags koennen z.B. genutzt werden, den Zerfall fuer einzelne
+   Objekte temporaer oder dauerhaft abzuschalten, auch wenn alle anderen
+   Clones weiterzerfallen.
+
+   Diese Prop kann in der Blueprint gesetzt werden. In diesem Fall wird
+   allerdings NO_DECAY_UNTIL_MOVE ignoriert, weil die BP ja nie bewegt
+   wuerde. NO_DECAY in der BP schaltet den Zerfallsprozess (temporaer) fuer
+   alle Clones aus. Ist nie ein Zerfall gewuenscht, sollte in der Blueprint
+   aber besser P_UNIT_DECAY_INTERVAL auf 0 gesetzt werden!
+
+   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
+   liefert ein klon->QueryProp(P_UNIT_DECAY_FLAGS) den in der Blueprint
+   eingestellten Wert zurueck.
+
+
+BEMERKUNGEN
+===========
+
+   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus der
+     Blueprint zurueckgeben. Hierbei wird allerdings ein NO_DECAY_UNTIL_MOVE
+     ausgefiltert, da dies den Zerfall fuer alle Objekte dauerhaft stoppen
+     wuerde, weil BPs nicht bewegt werden.
+   * Die Flags koennen "verodert" werden:
+     SetProp(P_UNIT_DECAY_FLAGS, NO_DECAY_UNTIL_MOVE | ABSOLUTE_DECAY);
+
+
+BEISPIEL
+========
+
+   // Dieser NPC hat tolle Pfeile, die sollen aber nicht zerfallen, solange
+   // sie im Inventar des NPCs sind:
+   AddItem("/d/tolleregion/tollermagier/obj/pfeile", REFRESH_NONE,
+       ([ P_AMOUNT: 50+random(50),
+          P_UNIT_DECAY_FLAGS: NO_DECAY_UNTIL_MOVE ]) );
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_MIN
+   DoDecay, DoDecayMessage
+   /std/unit.c
+
+14.10.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_UNIT_DECAY_INTERVAL b/doc/sphinx/man/props/P_UNIT_DECAY_INTERVAL
new file mode 100644
index 0000000..e0118c3
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNIT_DECAY_INTERVAL
@@ -0,0 +1,56 @@
+
+P_UNIT_DECAY_INTERVAL
+*********************
+
+
+NAME
+====
+
+   P_UNIT_DECAY_INTERVAL                                      "unit_decay_interval"
+
+
+DEFINIERT IN
+============
+
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Prop bestimmt, wie oft ein Zerfall der entsprechenden Unitobjekte
+   durchgefuehrt wird. Das Intervall ist in Sekunden anzugeben (int).
+   Die Prop muss in der Blueprint der entsprechenden Unitobjekte gesetzt
+   werden, in Clones kann sie nicht gesetzt werden.
+   Die Blueprint resettet dann in diesem Intervall und ruft in allen ihren
+   Clones (und denen alter Versionen der gleichen BP!) DoDecay() auf,
+   woraufhin die Clones den Zerfall durchfuehren.
+   Ist die Prop in der Blueprint nicht gesetzt, erfolgt kein Zerfall.
+
+
+BEMERKUNGEN
+===========
+
+   * Ist die Blueprint nicht geladen, erfolgt kein Zerfall der Clones.
+   * Ein Setzen dieser Prop beinhaltet immer auch einen Aufruf von
+     set_next_reset() auf das ensprechende Intervall.
+   * Die Prop kann in den Clones abgefragt werden und liefert das in der
+     Blueprint eingestellte Intervall.
+   * Von einer Manipulation per Set() wird dringend abgeraten.
+   * Die Prop kann nur vom Objekt selber, vom Programmierer des Objekts, vom
+     RM der entsprechenden Region, von einem Weisen oder von einem Objekt
+     gesetzt werden, welches die gleiche UID hat.
+
+
+BEISPIEL
+========
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
+   DoDecay(), DoDecayMessage()
+
+13.10.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_UNIT_DECAY_MIN b/doc/sphinx/man/props/P_UNIT_DECAY_MIN
new file mode 100644
index 0000000..b78a735
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNIT_DECAY_MIN
@@ -0,0 +1,71 @@
+
+P_UNIT_DECAY_MIN
+****************
+
+
+NAME
+====
+
+   P_UNIT_DECAY_MIN                                                       "unit_decay_min"
+
+
+DEFINIERT IN
+============
+
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Prop bestimmt, wieviele Einheiten der Unitobjekten mindestens
+   uebrig bleiben sollen.
+   Faellt die Menge eines Unitobjekts unter diesen Wert, zerfaellt diese
+   Unit solange nicht weiter, bis der Wert wieder ueberschritten wird.
+   Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
+   werden.
+   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
+   liefert ein QueryProp(P_UNIT_DECAY_MIN) den in der Blueprint
+   eingestellten Wert zurueck und die Unit zerfaellt bis zu dieser
+   Mindestmenge..
+   D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
+   Clones nur soweit diese abweichende Werte haben sollen.
+   Es sind nur Werte zwischen 0 und 100 zulaessig. Auf diese Art laesst sich
+   die minidestens uebrig bleibende Menge aller Clones durch Aendern einer
+   Prop in der Blueprint aendern.
+
+
+BEMERKUNGEN
+===========
+
+   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
+     Blueprint zum Zerfall benutzt.
+   * Will man fuer ein bestimmtes Unitobjekt kein Minimum haben, also dass
+     dieses Objekt zerfaellt, bis nichts mehr da ist, die Blueprint hat aber
+     einen Minimalwert gesetzt, sollte diese Prop im betreffenden Objekt auf
+     -1 gesetzt werden.
+   * Diese Prop sollte vorsichtig angewandt werden, da Spieler so den
+     Zerfall von Units stoppen koennen, indem sie die Units entsprechend
+     aufteilen, so dass jedes Einzelobjekt unter dem Minimum liegt.
+
+
+BEISPIEL
+========
+
+   // es soll min. 1 Einheit uebrig bleiben.
+   SetProp(P_UNIT_DECAY_MIN, 1);
+
+   // die Blueprint hat ein Minimum von 10 gesetzt, dieser Clone soll
+   // aber zerfallen, bis nix mehr da ist.
+   klon->SetProp(P_UNIT_DECAY_MIN, -1);
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA
+   DoDecay, DoDecayMessage
+   /std/unit.c
+
+14.10.2007, Zesstra
diff --git a/doc/sphinx/man/props/P_UNIT_DECAY_QUOTA b/doc/sphinx/man/props/P_UNIT_DECAY_QUOTA
new file mode 100644
index 0000000..0b4c9a6
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNIT_DECAY_QUOTA
@@ -0,0 +1,69 @@
+
+P_UNIT_DECAY_QUOTA
+******************
+
+
+P_UNIT_DECAY_QUOTA (int)
+========================
+
+
+NAME
+====
+
+   P_UNIT_DECAY_QUOTA                                 "unit_decay_quota"
+
+
+DEFINIERT IN
+============
+
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Prop bestimmt, welcher Anteil der einzelnen Unitobjekte pro Zerfall
+   zerstoert wird. Dieser Anteil wird als ganze Zahl zwischen 0 und 10000
+   ausgedrueckt. 1 entspricht einem Zerfall von 0.01%, 10000 entspricht
+   100%.
+   Momentan sind keine Werte < 0 zulaessig, die einem Zuwachs entsprechend
+   wurden.
+
+   Falls das Flag ABSOLUTE_DECAY (s. P_UNIT_DECAY_FLAGS) gesetzt ist, steht
+   die Zahl in dieser Prop fuer die absolute Anzahl an zu zerstoerenden
+   Einheiten.
+
+   Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
+   werden.
+   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
+   liefert ein QueryProp(P_UNIT_DECAY_QUOTA) den in der Blueprint
+   eingestellten Wert zurueck und die Unit zerfaellt zu diesem Anteil.
+   D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
+   Clones nur soweit diese abweichende Zerfallsraten haben sollen.
+
+
+BEMERKUNGEN
+===========
+
+   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
+     Blueprint zum Zerfall benutzt.
+   * Will man den Zerfall fuer ein bestimmtes Unitobjekt abschalten, sollte
+     man P_UNIT_DECAY_FLAGS benutzen.
+
+
+BEISPIEL
+========
+
+   // pro Zerfallsintervall sollen 12% zerfallen.
+   SetProp(P_UNIT_DECAY_QUOTA, 1200);
+
+
+SIEHE AUCH
+==========
+
+   unit
+   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
+   DoDecay, DoDecayMessage
+   /std/unit.c
+
+14.03.2008, Zesstra
diff --git a/doc/sphinx/man/props/P_UNWEAR_MSG b/doc/sphinx/man/props/P_UNWEAR_MSG
new file mode 100644
index 0000000..0b2e89a
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNWEAR_MSG
@@ -0,0 +1,78 @@
+
+P_UNWEAR_MSG
+************
+
+
+NAME
+====
+
+   P_UNWEAR_MSG                       "unwear_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/armour.h
+
+
+BESCHREIBUNG
+============
+
+   Zweiteiliges Array mit Meldungen, die beim Ausziehen einer Ruestung
+   oder Kleidung an den Spieler und die Umgebung ausgegeben werden.
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung. Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
+
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Mantel");
+   SetProp(P_UNWEAR_MSG,
+    ({"Du reisst Dir @WEN2 vom Leib.",
+      "@WER1 reisst sich @WENU2 vom Leib." }));
+
+   -> beim Ausziehen durch Urk:
+      Urk bekommt: Du reisst dir den Mantel vom Leib.
+      Der Raum:    Urk reisst sich einen Mantel vom Leib.
+
+   SetProp(P_UNWEAR_MSG,
+    ({"Dir wird furchtbar warm. So eine Hitze aber auch. Schnell "
+      "schluepfst Du aus Deiner dicken Ruestung. Aaaah, was fuer "
+      "eine Wohltat.",
+      "@WEM1 scheint ploetzlich warm zu werden. Schnell schluepft "
+      "@WERQP1 aus @WEMQPPFS1 dicken Ruestung. Du hoffst instaendig, "
+      "das es noch etwas waermer wird ... "}));
+
+   -> beim Ausziehen durch Urk:
+      Urk bekommt: Dir wird furchtbar warm. So eine Hitze aber auch.
+                   Schnell schluepfst Du aus Deiner dicken Ruestung.
+                   Aaaah, was fuer eine Wohltat.
+      Der Raum:    Urk scheint ploetzlich warm zu werden. Schnell
+                   schluepft er aus seiner dicken Ruestung. Du hoffst
+                   instaendig, das es noch etwas waermer wird ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_WEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: WearFunc, UnwearFunc
+   Sonstiges:  replace_personal(E), /std/armour/wear.c, armours
+               clothing, /std/clothing.wear.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_UNWIELD_FUNC b/doc/sphinx/man/props/P_UNWIELD_FUNC
new file mode 100644
index 0000000..4466ec0
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNWIELD_FUNC
@@ -0,0 +1,32 @@
+
+P_UNWIELD_FUNC
+**************
+
+
+NAME
+====
+
+   P_UNWIELD_FUNC "unwield_func"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine UnwieldFunc() fuer die Waffe definiert, so muss
+   dieses Objekt in dieser Property eingetragen werden.
+
+   Die Auswertung dieser Property erfolgt in DoUnwield().
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, UnwieldFunc()
+
+Last modified: Sun May 19 15:44:08 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_UNWIELD_MSG b/doc/sphinx/man/props/P_UNWIELD_MSG
new file mode 100644
index 0000000..d1d1668
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNWIELD_MSG
@@ -0,0 +1,77 @@
+
+P_UNWIELD_MSG
+*************
+
+
+NAME
+====
+
+   P_UNWIELD_MSG                       "unwield_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Zweiteiliges Array mit Meldungen, die beim Wegstecken einer
+   Waffe an den Spieler und die Umgebung ausgegeben werden.
+
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung.  Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
+
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Streitkolben");
+   SetProp(P_UNWIELD_MSG,
+    ({ "Du steckst @WEN2 zurueck und atmest erstmal tief durch.",
+       "@WER1 steckt @WENU2 zurueck und atmet erstmal tief durch." }));
+
+   -> beim Wegstecken durch Urk:
+      Urk bekommt: Du steckst den Streitkolben zurueck und atmest erstmal
+                   tief durch.
+      Der Raum:    Urk steckt einen Streitkolben zurueck und atmet erstmal
+                   tief durch.
+
+   SetProp(P_UNWIELD_MSG,
+    ({"Du steckst die schwere Keule zurueck. Zufaellig landet sie "
+      "dabei auf Deinem Fuss. Laut schreiend humpelst Du in der "
+      "Gegend herum.",
+      "@WER1 steckt eine schwere Keule zurueck. Dummerweise landet diese "
+      "direkt auf dem eigenen Fuss. Aua, das tat sicher weh ... nicht "
+      "umsonst humpelt @WERQP1 jetzt schreiend durch die Gegend."}));
+
+   -> beim Wegstecken durch Urk:
+      Urk bekommt: Du steckst die schwere Keule zurueck. Zufaellig landet
+                   sie dabei auf Deinem Fuss. Laut schreiend humpelst Du in
+                   der Gegend herum.
+      Der Raum:    Urk steckt eine schwere Keule zurueck. Dummerweise
+                   landet diese direkt auf dem eigenen Fuss. Aua, das tat
+                   sicher weh ... nicht umsonst humpelt er jetzt schreiend
+                   durch die Gegend.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_WIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: UnwieldFunc, WieldFunc
+   Sonstiges:  replace_personal(E), /std/weapon/combat.c
+
+29. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_UNWIELD_TIME b/doc/sphinx/man/props/P_UNWIELD_TIME
new file mode 100644
index 0000000..e93a24b
--- /dev/null
+++ b/doc/sphinx/man/props/P_UNWIELD_TIME
@@ -0,0 +1,33 @@
+
+P_UNWIELD_TIME
+**************
+
+
+NAME
+====
+
+   P_UNWIELD_TIME                    "unwield_time"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt den Zeitpunkt zu dem ein Living eine Waffe weggesteckt hat und
+   ist im Living gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:         P_WEAPON, P_WIELDED, DoUnwield()
+                     P_LAST_USE
+   Sonstiges:        P_EQUIP_TIME
+                     time()
+
+10.Feb 2005 Gloinson
diff --git a/doc/sphinx/man/props/P_USED_HANDS b/doc/sphinx/man/props/P_USED_HANDS
new file mode 100644
index 0000000..b90bd61
--- /dev/null
+++ b/doc/sphinx/man/props/P_USED_HANDS
@@ -0,0 +1,39 @@
+
+P_USED_HANDS
+************
+
+
+NAME
+====
+
+   P_USED_HANDS                  "used_hands"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+BESCHREIBUNG
+============
+
+   Anzahl der Haende in Benutzung.
+   Effektiv nur ein sizeof(P_HANDS_USED_BY).
+
+
+BEMERKUNGEN
+===========
+
+   Keine echte Property. Die Methode /std/living/combat::_query_used_hands
+   stellt die Daten zusammen. Nicht setzen!
+
+
+SIEHE AUCH
+==========
+
+   P_HANDS, P_HANDS_USED_BY
+   P_MAX_HANDS, P_FREE_HANDS
+   UseHands, FreeHands
+
+1. Okt 2012, Gloinson
diff --git a/doc/sphinx/man/props/P_VALID_GUILDS b/doc/sphinx/man/props/P_VALID_GUILDS
new file mode 100644
index 0000000..f431e7b
--- /dev/null
+++ b/doc/sphinx/man/props/P_VALID_GUILDS
@@ -0,0 +1,41 @@
+
+P_VALID_GUILDS
+**************
+
+
+NAME
+====
+
+   P_VALID_GUILDS                  "valid_guilds"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die zugelassenen Gilden in Form von
+   kleingeschriebenen Gildennamen, welche in einem Array
+   zusammengefasst sind. Sie ist nur fuer den Gildenmaster selbst von
+   Bedeutung.
+
+
+BEISPIELE
+=========
+
+   Abfrage der zugelassenen Gilden:
+     find_object("/obj/gildenmaster")->QueryProp(P_VALID_GUILDS)
+   Das ergibt zum Beispiel:
+     ({"abenteurer","zauberer","klerus","kaempfer"})
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, /obj/gildenmaster.c
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_VALUE b/doc/sphinx/man/props/P_VALUE
new file mode 100644
index 0000000..cb48202
--- /dev/null
+++ b/doc/sphinx/man/props/P_VALUE
@@ -0,0 +1,43 @@
+
+P_VALUE
+*******
+
+
+NAME
+====
+
+   P_VALUE                       "value"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   - Objekte
+     Wert des Objektes in Goldmuenzen. Diesen Wert erhaelt man beim
+     Verkauf. Kaufen kostet ein Vielfaches hiervon.
+
+   - Speisen/Kneipen
+     Wert einer Portion der Speise.
+
+
+BEMERKUNGEN
+===========
+
+   In tragbaren Speisen (erben von /std/food) setzt man mit SetProp
+   den Wert _einer_ Portion. Per QueryProp erhaelt man aber den Gesamt-
+   wert der Speise inclusive des eventuell vorhandenen Behaelters. Der
+   Wert des Behaelters wird dabei aus P_EMPTY_PROPS[P_VALUE] gelesen.
+
+
+SIEHE AUCH
+==========
+
+   Speisen: std/pub, wiz/food, P_EMPTY_PROPS
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_VALUE_PER_UNIT b/doc/sphinx/man/props/P_VALUE_PER_UNIT
new file mode 100644
index 0000000..3ff1b3c
--- /dev/null
+++ b/doc/sphinx/man/props/P_VALUE_PER_UNIT
@@ -0,0 +1,29 @@
+
+P_VALUE_PER_UNIT
+****************
+
+
+NAME
+====
+
+   P_VALUE_PER_UNIT              "value_per_unit"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Wert in Goldstuecken pro Untereinheit.
+
+
+BEMERKUNGEN
+===========
+
+   Deprecated. Bitte SetCoinsPerUnits() (U_CPU) benutzen.
+
+25.Aug 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_VARIABLES b/doc/sphinx/man/props/P_VARIABLES
new file mode 100644
index 0000000..52a979c
--- /dev/null
+++ b/doc/sphinx/man/props/P_VARIABLES
@@ -0,0 +1,28 @@
+
+P_VARIABLES
+***********
+
+
+NAME
+====
+
+   P_VARIABLES "variables"
+
+
+DEFINIERT IN
+============
+
+   /sys/magier.h
+
+
+BESCHREIBUNG
+============
+
+   Interne Variable der Magiershell in dem die mit dem 'Set'-Befehl
+   gesetzten Variablen gespeichert werden.
+
+
+
+   NICHT VON HAND VERAENDERN! IMMER 'SET' VERWENDEN!
+
+Letzte Aenderung: 13.02.2003 22:00:00 von Mandragon
diff --git a/doc/sphinx/man/props/P_VISIBLE_GUILD b/doc/sphinx/man/props/P_VISIBLE_GUILD
new file mode 100644
index 0000000..92de8b7
--- /dev/null
+++ b/doc/sphinx/man/props/P_VISIBLE_GUILD
@@ -0,0 +1,42 @@
+
+P_VISIBLE_GUILD
+***************
+
+
+NAME
+====
+
+   P_VISIBLE_GUILD                    "visible_guild"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die sichtbare Gilde des Lebewesens in Form eines
+   kleingeschriebenen Strings, also die Gilde, die bei Spielern zum
+   Beispiel bei 'kwer' oder 'finger' angezeigt wird. So kann man fremde
+   Gilden testen und trotzdem nach aussen hin in der gleichen Gilde wie
+   zuvor bleiben.
+
+
+BEISPIEL
+========
+
+   Wenn man gerne nach aussen hin Zauberer bleiben moechte:
+        pl->SetProp(P_VISIBLE_GUILD,"zauberer");
+   Nach aussen hin bleibt man jetzt auch Zauberer, wenn P_GUILD eine
+   andere Gilde angibt.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD, P_DEFAULT_GUILD
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/P_VISIBLE_SUBGUILD_TITLE b/doc/sphinx/man/props/P_VISIBLE_SUBGUILD_TITLE
new file mode 100644
index 0000000..e0e5c83
--- /dev/null
+++ b/doc/sphinx/man/props/P_VISIBLE_SUBGUILD_TITLE
@@ -0,0 +1,39 @@
+
+P_VISIBLE_SUBGUILD_TITLE
+************************
+
+
+NAME
+====
+
+   P_VISIBLE_SUBGUILD_TITLE           "visible_subguild_title"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property dient dazu, als Magier einen Zusatztitel innerhalb einer
+   Gilde vorzutaeuschen, ohne den tatsaechlichen P_SUBGUILD_TITLE zu
+   aendern.
+
+
+BEMERKUNGEN
+===========
+
+   Inhalt der Property kann 0 sein oder ein String.
+   Wenn der Inhalt 0 ist, wird bei QueryProp der P_SUBGUILD_TITLE
+   durchgereicht.
+
+
+SIEHE AUCH
+==========
+
+   P_GUILD_TITLE, P_SUBGUILD_TITLE
+
+Last modified: Mon Aug 13 21:20:00 2001 by Nachtwind
diff --git a/doc/sphinx/man/props/P_VISUALBELL b/doc/sphinx/man/props/P_VISUALBELL
new file mode 100644
index 0000000..8a3d836
--- /dev/null
+++ b/doc/sphinx/man/props/P_VISUALBELL
@@ -0,0 +1,58 @@
+
+P_VISUALBELL
+************
+
+
+NAME
+====
+
+   P_VISUALBELL                    "visualbell"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property stellt ein Flag innerhalb von Spielern dar, welches
+   standardmaessig nicht gesetzt ist. In diesem Fall werden Toene,
+   welche innerhalb einiger Funktionen erzeugt werden, auch wirklich an
+   den Spieler geschickt.
+   Setzt man die Property, so erhaelt der Spieler keine Toene mehr.
+
+
+BEISPIEL
+========
+
+   Pieptoene werden durch den ASCII-Code 0x7 praesentiert. Ausgeben
+   kann man diesen folgendermassen:
+     if(!IS_WIZARD(caster)&&!victim->QueryProp(P_VISUALBELL))
+       tell_object(victim,sprintf("%c",7));
+   Das waere beispielsweise ein Codestueck aus einem Piepspell. :)
+   Das Opfer bekommt den Piepton hierbei nur ab, wenn der Caster ein
+   Magier ist oder das Spieleropfer die Property P_VISUALBELL gesetzt
+   hat (kann mit Kommando 'ton' vom Spieler beeinflusst werden).
+
+
+BEMERKUNGEN
+===========
+
+   Achtung: P_VISUALBELL steht auf 1, wenn der Spieler _keine_ Piepstoene
+         hoeren will!
+         Die Funktionalitaet dieser Property wirkt nur soweit, wie sie auch
+         von tonerzeugenden Befehlen selbst unterstuetzt wird. Es ist darauf
+         zu achten, dass P_VISUALBELL zu diesem Zweck grundsaetzlich
+         ausgewertet wird! Eine Ausnahme sei hierbei zugelassen: Magier
+         koennen Spielern grundsaetzlich Toene zusenden.
+
+
+SIEHE AUCH
+==========
+
+   ton, wecke, erwarte, P_WAITFOR, /std/player/base.c
+
+Last modified: 07.02.2007 by Zesstra
diff --git a/doc/sphinx/man/props/P_VULNERABILITY b/doc/sphinx/man/props/P_VULNERABILITY
new file mode 100644
index 0000000..f0e3abb
--- /dev/null
+++ b/doc/sphinx/man/props/P_VULNERABILITY
@@ -0,0 +1,62 @@
+
+P_VULNERABILITY
+***************
+
+
+NAME
+====
+
+   P_VULNERABILITY               "vulnerability"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/combat.h
+
+
+WICHTIG
+=======
+
+   DIESE PROPERTY IST VERALTET! BITTE P_RESISTANCE_STRENGTHS
+   VERWENDEN! AUCH FUNKTIONIERT Set() NICHT WIE ES SOLLTE.
+
+
+BESCHREIBUNG
+============
+
+   Hiermit koennen die Empfindlichkeiten eines Lebewesens definiert
+   werden. Es kann ein Array mit Schadensarten gesetzt werden, jeder
+   Eintrag eines Schadens verdoppelt die Empfindlichkeit gegen
+   diesen.
+
+
+BEMERKUNGEN
+===========
+
+   - P_RESISTANCE_STRENGTHS spiegelt die Eintraege hier wieder
+   - um genauere Werte anzugeben einen AddResistanceModifier() oder
+     P_RESISTANCE_STRENGTHS benutzen.
+   - P_VULNERABILITY kann und wird nicht aus P_RESISTANCE_STRENGTHS
+     upgedatet
+
+
+BEISPIELE
+=========
+
+   // ein NPC mit verdoppelter Eisempfindlichkeit und
+   // vervierfachter Wasserempfindlichkeit
+   SetProp(P_VULNERABILITY, ({DT_COLD, DT_WATER, DT_WATER}));
+
+
+SIEHE AUCH
+==========
+
+   simple Resistenz:  P_RESISTANCE
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Modifikatoren:     AddResistanceModifier, RemoveResistanceModifier(),
+                      P_RESISTANCE_MODIFIER
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
+
+1.Dez 2004, Gloinson
diff --git a/doc/sphinx/man/props/P_WAITFOR b/doc/sphinx/man/props/P_WAITFOR
new file mode 100644
index 0000000..301838e
--- /dev/null
+++ b/doc/sphinx/man/props/P_WAITFOR
@@ -0,0 +1,30 @@
+
+P_WAITFOR
+*********
+
+
+NAME
+====
+
+   P_WAITFOR                     "waitfor"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Die Erwarte-Liste. Ein Array mit den Namen der Erwarteten.
+
+
+SIEHE AUCH
+==========
+
+   erwarte
+   P_WAITFOR_REASON, P_WAITFOR_FLAGS
+
+16. Feb 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_WAITFOR_FLAGS b/doc/sphinx/man/props/P_WAITFOR_FLAGS
new file mode 100644
index 0000000..5e616b7
--- /dev/null
+++ b/doc/sphinx/man/props/P_WAITFOR_FLAGS
@@ -0,0 +1,34 @@
+
+P_WAITFOR_FLAGS
+***************
+
+
+NAME
+====
+
+   P_WAITFOR_FLAGS                  "waitfor_flags"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Int. Bisher bekannte Flags:
+
+
+
+   0x01 - "erwarte aus"
+
+
+SIEHE AUCH
+==========
+
+   erwarte
+   P_WAITFOR, P_WAITFOR_REASON
+
+16. Feb 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_WAITFOR_REASON b/doc/sphinx/man/props/P_WAITFOR_REASON
new file mode 100644
index 0000000..1d997d8
--- /dev/null
+++ b/doc/sphinx/man/props/P_WAITFOR_REASON
@@ -0,0 +1,35 @@
+
+P_WAITFOR_REASON
+****************
+
+
+NAME
+====
+
+   P_WAITFOR_REASON                  "waitfor_reason"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Ein Mapping mit den Erwarteten als Schluessel und einem Grund als
+   Key, zB:
+
+
+
+   (["Zook":"muh muh"])
+
+
+SIEHE AUCH
+==========
+
+   erwarte (erwarte <wen> wegen <was>)
+   P_WAITFOR, P_WAITFOR_FLAGS
+
+16. Feb 2008 Gloinson
diff --git a/doc/sphinx/man/props/P_WANTS_TO_LEARN b/doc/sphinx/man/props/P_WANTS_TO_LEARN
new file mode 100644
index 0000000..639ab61
--- /dev/null
+++ b/doc/sphinx/man/props/P_WANTS_TO_LEARN
@@ -0,0 +1,25 @@
+
+P_WANTS_TO_LEARN
+****************
+
+
+NAME
+====
+
+   P_WANTS_TO_LEARN              "wants_to_learn"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/base.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Magier die Filenamen sehen will.
+   (Nur fuer Magier). Wird diese Property auf 0 gesetzt, gehen auch
+   einige andere Dinge nicht mehr - verfolge zB. Eigentlich sollten
+   dann auch die Magierbefehle wie "goto" usw unterbunden werden -
+   das kommt vielleicht noch.
diff --git a/doc/sphinx/man/props/P_WATER b/doc/sphinx/man/props/P_WATER
new file mode 100644
index 0000000..79742c1
--- /dev/null
+++ b/doc/sphinx/man/props/P_WATER
@@ -0,0 +1,130 @@
+
+P_WATER
+*******
+
+
+NAME
+====
+
+   P_WATER                       "water"
+
+
+DEFINIERT IN
+============
+
+   /sys/fishing.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt den Gewaessertyp. Kann in Raeumen, Angeln und Wasserbehaeltern
+   verwendet werden. Die verfuegbaren Optionen und Funktionsweisen sind in
+   den nachfolgenden Abschnitten aufgefuehrt.
+
+   Raum:
+   *****
+     Legt den Typ des Gewaessers fest, das es in diesem Raum gibt. Von
+     diesem Typ haengt ab, welche Arten von Fischen es hier standardmaessig
+     gibt und welche Arten von Angeln verwendet werden koennen.
+
+
+
+     Beispiel:
+
+     SetProp(P_WATER, W_HARBOR);
+
+
+
+     Folgende
+     Typen stehen zur Verfuegung, von denen in Raeumen nur einer gesetzt
+     werden darf:
+
+     Salzwasser:
+       W_BEACH   Strand: Scholle, Flunder, Rochen, Seezunge, Katzenhai
+       W_HARBOR  Hafen: Dorsch, Rochen, Seezunge, Hering, Katzenhai
+       W_OCEAN   Ozean/Meer: Hai, Thunfisch, Kabeljau, Schwertfisch, Seehase,
+                 Seeteufel, Seewolf
+
+     Suesswasser:
+       W_RIVER   Fluss: Piranha, Lachs, Forelle, Bachsaibling
+       W_POOL    Teich: Stichling, Goldfisch, Schlei, Karpfen, Goldorfe
+       W_LAKE    See: Karpfen, Barsch, Hecht, Seesaibling
+       W_ROCK    Bergbach: Lachs, Forelle, Bachsaibling
+       W_STREAM  Bach: Stichling, Bachforelle, Neuauge, Bachsaibling
+
+     Sonstige:
+       W_USER    wenn dieser Gewaessertyp gesetzt wird, MUSS der Raum
+                 zusaetzlich die Funktion GetAquarium() definieren, die
+                 eine Liste der hier fangbaren Fische zurueckgeben muss.
+                 Beispiel:
+
+                 string* GetAquarium(){
+                   return ({"/d/ebene/fraggle/angel/fisch"});
+                 }
+       W_DEAD    Lebloses Wasser. Enthaelt keine Fische, man kann
+                 aber die Standardflasche fuellen.
+
+       W_OTHER   1024   // Flasche enthaelt Fluessigkeit!=Wasser
+
+
+   Angel:
+   ******
+     Angeln sind ueblicherweise auf bestimmte Anwendungsbereiche ausgelegt.
+     Ob eine Angel in einem Gewaesser benutzt werden kann, haengt davon ab,
+     ob P_WATER in der Angel den Gewaessertyp des Raumes enthaelt. Von den
+     oben genannten Typen koennen mehrere ver-ODER-t gesetzt werden.
+     Verwendung einer fuer das oertliche Gewaesser ungeeigneten Angel fuehrt
+     zu einer um 60+random(60) Sekunden verlaengerten Wartezeit beim Angeln.
+
+
+
+     Beispiel: Setzt man den Gewaessertyp mit
+
+       SetProp(P_WATER, W_HARBOR|W_OCEAN);
+
+     schaltet das die Angel sowohl fuer Haefen, als auch fuer offene Meere
+     (Ozeane) frei.
+
+     Folgende kombinierte Gewaessertypen sind fuer einfache Angeln
+     vordefiniert:
+
+     Kurze Standardangeln:
+       W_SHORT W_HARBOR|W_RIVER|W_POOL|W_LAKE|W_ROCK|W_USER|W_OCEAN|W_STREAM
+     Spezielle Strandruten:
+       W_LONG  W_BEACH|W_USER
+     funktioniert in allen Salzgewaessern:
+       W_SALT  W_HARBOR|W_OCEAN|W_BEACH
+     funktioniert in allen Suessgewaessern:
+       W_SWEET W_RIVER|W_POOL|W_LAKE|W_ROCK|W_STREAM
+
+     Hinweis: W_DEAD ist in diesen Kombinationen nicht enthalten, da es
+     in solchen Gewaessern ohnehin keine Fische gibt.
+     Die Kombi-Typen enthalten W_USER, um bei entsprechenden Gewaessern
+     zu vermeiden, dass es dort standardmaessig einen Malus auf die
+     Wartezeit gibt. Standardwert fuer P_WATER in Angeln ist ebenfalls
+     W_USER.
+
+   Koeder:
+   *******
+     Auch Koeder koennen fuer die Verwendung in bestimmten Gewaessern besser
+     geeignet sein als in anderen, z.B. eine Seeschnecke fuer Salzwasser,
+     ein Mehlwurm hingegen fuer Suesswasser. Gesetzt wird P_WATER hierfuer
+     auf die oben aufgefuehrten Werte.
+     Verwendung eines ungeeigneten Koeders fuehrt zu einer um 60+random(60)
+     Sekunden laengeren Wartezeit beim Angeln.
+
+   Wasserbehaelter:
+   ****************
+     Die Property gibt an, ob der Behaelter Wasser enthaelt oder nicht.
+     Der Wert sollte immer auf den Typ jenes Gewaessers gesetzt sein, aus
+     dem der Behaelter aufgefuellt wurde.
+
+
+SIEHE AUCH
+==========
+
+   Properties: P_FISH
+   Methoden:   GetAquarium(L)
+
+Zuletzt geaendert: 2014-Aug-21, Arathorn
diff --git a/doc/sphinx/man/props/P_WC b/doc/sphinx/man/props/P_WC
new file mode 100644
index 0000000..cfa18e4
--- /dev/null
+++ b/doc/sphinx/man/props/P_WC
@@ -0,0 +1,56 @@
+
+P_WC
+****
+
+
+NAME
+====
+
+   P_WC                            "wc"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Die Waffenklasse (engl: weapon class), also die Staerke der Waffe,
+   stellt einen numerischen Wert dar, der umso groesser ist, desto mehr
+   Schaden eine Waffe im Kampf anrichtet. Beim Zuecken oder Wegstecken
+   einer Waffe durch ein Lebewesen wird innerhalb des Lebewesens auch
+   die Property P_TOTAL_WC aktualisiert, welche somit immer die
+   aktuelle Angriffsstaerke enthaelt. Beim Zuecken erhaelt sie hierbei
+   die Waffenklasse der Waffe und beim Wegstecken die Angriffsstaerke
+   aus der Property P_HANDS (Kaempfen mit blossen Haenden).
+   Die Waffenklasse von einhaendigen Waffen sollte 150 nicht
+   ueberschreiten, die Obergrenze fuer zweihaendige Waffen liegt bei
+   200. Ausnahmen von dieser Regel beduerfen der Absprache mit der
+   Balance.
+   Negative Werte bewirken keinen Schaden, allerdings auch keine
+   Heilung.
+
+
+BEMERKUNGEN
+===========
+
+   Query- und Setmethoden auf P_WC sollten unbedingt vermieden werden. Sie
+   fuehren in der Regel zu massiven Inkonsistenzen im Mechanismus der
+   Ruestungsbeschaedigung und -reparatur.
+   Auch mit einer HitFunc() duerfen die Obergrenzen nicht ohne
+   Absprache ueberschritten werden! Ausserdem ist es ratsam, die
+   zusaetzlichen Kampfeigenschaften in P_EFFECTIVE_WC gesondert
+   anzugeben.
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, /std/weapon/combat.c
+   P_DAMAGED, P_EFFECTIVE_WC, P_WEAPON_TYPE
+   Damage()
+
+14.02.2017, Bugfix
diff --git a/doc/sphinx/man/props/P_WEAPON b/doc/sphinx/man/props/P_WEAPON
new file mode 100644
index 0000000..a7f68b2
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEAPON
@@ -0,0 +1,31 @@
+
+P_WEAPON
+********
+
+
+NAME
+====
+
+   P_WEAPON                      "weapon"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Momentan gezueckte Waffe. Im Living gesetzt.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:         P_ARMOURS
+   Waffen:           P_WC, P_WEAPON_TYPE, P_DAM_TYPE, P_NR_HANDS, P_PARRY
+   Sonstiges:        P_UNWIELD_TIME, P_EQUIP_TIME, P_LAST_USE
+
+10.Feb 2005 Gloinson
diff --git a/doc/sphinx/man/props/P_WEAPON_TEACHER b/doc/sphinx/man/props/P_WEAPON_TEACHER
new file mode 100644
index 0000000..ebeb788
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEAPON_TEACHER
@@ -0,0 +1,29 @@
+
+P_WEAPON_TEACHER
+****************
+
+
+NAME
+====
+
+   P_WEAPON_TEACHER              "weapon_teacher"
+
+
+DEFINIERT IN
+============
+
+   combat.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property wird in einem Azubi gesetzt (zur Zeit nur fuer die
+   Kaempfer-Gilde), der selbst ueber die allgemeinen Waffenskills
+   verfuegt.
+
+   In diese Property wird der Name eines Kaempfergilden-Ausbilders
+   eingetragen.
+
+   Unter Anleitung des Ausbilders lernt der Azubi dann etwas schneller
+   die allgemeinen Waffenskills.
diff --git a/doc/sphinx/man/props/P_WEAPON_TYPE b/doc/sphinx/man/props/P_WEAPON_TYPE
new file mode 100644
index 0000000..d200054
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEAPON_TYPE
@@ -0,0 +1,41 @@
+
+P_WEAPON_TYPE
+*************
+
+
+NAME
+====
+
+   P_WEAPON_TYPE "weapon_type"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+    Um was fuer eine Waffe handelt es sich? Es stehen verschiedene
+    Typen zur Auswahl. Man sollte hier nur die in <combat.h> definierten
+    Konstanten verwenden:
+
+       WT_AMMU           Munition fuer Fernkampfwaffen
+       WT_AXE            Axt
+       WT_CLUB           Keule
+       WT_HANDS          blosse Haende
+       WT_KNIFE          Messer, Dolch
+       WT_RANGED_WEAPON  Fernkampfwaffe
+       WT_SPEAR          Speer
+       WT_STAFF          Kampfstab
+       WT_SWORD          Schwert
+       WT_WHIP           Peitsche
+       WT_MISC           Sonstiges
+
+   Der Waffentyp WT_MISC ist schnoedem Tand und nutzlosem Kram vorbehalten.
+   Waffen dieses Typs duerfen keine P_WC > 0 besitzen oder kampfrelevante
+   Bedeutung haben.
+
+Letzte Aenderung: 27. Mai 2015, Arathorn.
diff --git a/doc/sphinx/man/props/P_WEAR_FUNC b/doc/sphinx/man/props/P_WEAR_FUNC
new file mode 100644
index 0000000..d288187
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEAR_FUNC
@@ -0,0 +1,44 @@
+
+P_WEAR_FUNC
+***********
+
+
+NAME
+====
+
+   P_WEAR_FUNC "wear_func"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine WearFunc() fuer die Ruestung / Kleidung definiert,
+   so muss dieses Objekt in dieser Property eingetragen sein.
+
+   Die Auswertung dieser Property erfolgt in Laufe eines DoWear() in der
+   nicht-oeffentlichen Funktion _check_wear_restrictions()..
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu WearFunc()
+
+
+SIEHE AUCH
+==========
+
+   armours, clothing, /std/clothing/wear.c, /std/armour/wear.c
+   WearFunc(), InformWear()
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_WEAR_MSG b/doc/sphinx/man/props/P_WEAR_MSG
new file mode 100644
index 0000000..69fbf44
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEAR_MSG
@@ -0,0 +1,82 @@
+
+P_WEAR_MSG
+**********
+
+
+NAME
+====
+
+   P_WEAR_MSG                       "wear_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/armour.h
+
+
+BESCHREIBUNG
+============
+
+   Zweiteiliges Array mit Meldungen, die beim Anziehen einer Ruestung oder
+   Kleidung an den Spieler und die Umgebung ausgegeben werden.
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung. Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
+
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Helm");
+   SetProp(P_WEAR_MSG,
+    ({"Du stuelpst die @WEN2 ueber.",
+      "@WER1 stuelpt sich @WENU2 ueber."}));
+
+   -> beim Anziehe durch Urk:
+      Urk bekommt: Du stuelpst dir den Helm ueber.
+      Der Raum:    Urk stuelpt sich einen Helm ueber.
+
+   SetProp(P_WEAR_MSG,
+    ({"Als Du Dir den langen Mantel ueberziehst, steckst Du erstmal "
+      "mit Deinem dicken Schaedel fest. Doch nach einem kraeftigen "
+      "Ruck bist Du endlich durch und siehst wieder etwas.",
+      "@WER1 zieht sich einen langen Mantel ueber und bleibt "
+      "prompt mit dem dicken Schaedel stecken. Doch nach einem "
+      "kraeftigen Ruck kann @WERQP1 wieder etwas sehen und grinst Dich "
+      "verlegen an."}));
+
+   -> beim Anziehen durch Urk:
+      Urk bekommt: Als Du Dir den langen Mantel ueberziehst, steckst Du
+                   erstmal mit Deinem dicken Schaedel fest. Doch nach einem
+                   kraeftigen Ruck bist Du endlich durch und siehst wieder
+                   etwas.
+
+      Der Raum:    Urk zieht sich einen langen Mantel ueber und bleibt
+                   prompt mit dem dicken Schaedel stecken. Doch nach
+                   einem kraeftigen Ruck kann er wieder etwas sehen und
+                   grinst Dich verlegen an.
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: WearFunc, UnwearFunc, InformWear()
+   Sonstiges:  replace_personal(E), clothing, /std/clothing/wear.c
+               armour, /std/armour/wear.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009
diff --git a/doc/sphinx/man/props/P_WEIGHT b/doc/sphinx/man/props/P_WEIGHT
new file mode 100644
index 0000000..4c37e46
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEIGHT
@@ -0,0 +1,43 @@
+
+P_WEIGHT
+********
+
+
+NAME
+====
+
+   P_WEIGHT                      "weight"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/restrictions.h
+
+
+BESCHREIBUNG
+============
+
+   - Objekte
+     Das Gewicht eines Objetes in Gramm.
+
+   - Speisen
+     Gewicht einer Portion der Speise.
+
+
+BEMERKUNGEN
+===========
+
+   In tragbaren Speisen (erben von /std/food) setzt man mit SetProp
+   das Gewicht _einer_ Portion. Per QueryProp erhaelt man aber das
+   Gesamtgewicht der Speise inclusive des eventuell vorhandenen Behaelters.
+   Das Gewicht des Behaelters wird dabei aus P_EMPTY_PROPS[P_WEIGHT]
+   gelesen.
+
+
+SIEHE AUCH
+==========
+
+   Speisen: wiz/food, P_EMPTY_PROPS
+
+Last modified: Thu Oct 28 12:15:00 2010 by Caldra
diff --git a/doc/sphinx/man/props/P_WEIGHT_PERCENT b/doc/sphinx/man/props/P_WEIGHT_PERCENT
new file mode 100644
index 0000000..a4d0506
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEIGHT_PERCENT
@@ -0,0 +1,47 @@
+
+P_WEIGHT_PERCENT
+****************
+
+
+NAME
+====
+
+   P_WEIGHT_PERCENT              "weight_percent"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, wieviel Prozent des Gewichts des Inhaltes
+   "nach aussen" wiedergegeben werden.
+
+
+BEMERKUNGEN
+===========
+
+   Alle Werte die < 50% liegen sollten sehr gut begruendet und mit Vor-
+   sicht verwendet werden. Hier koennten dann zum Beispiel P_MAX_OBJECTS
+   auf einen kleinen Wert begrenzt werden.
+
+   Container die hier einen Wert ueber dem des Postpakets haben, sollten
+   auch schwer zu erreichen sein. Auf jeden Fall mit dem Regionsmagier
+   besprechen!
+
+
+BEISPIELE
+=========
+
+   Um sich zu orientieren kann das Postpaket von Loco als Beispiel hin-
+   zugezogen werden (/p/service/loco/obj/parcel).
+
+
+SIEHE AUCH
+==========
+
+   P_MAX_OBJECTS, P_MAX_WEIGHT, P_LIGHT_TRANSPARENCY, container
diff --git a/doc/sphinx/man/props/P_WEIGHT_PER_UNIT b/doc/sphinx/man/props/P_WEIGHT_PER_UNIT
new file mode 100644
index 0000000..c777b65
--- /dev/null
+++ b/doc/sphinx/man/props/P_WEIGHT_PER_UNIT
@@ -0,0 +1,29 @@
+
+P_WEIGHT_PER_UNIT
+*****************
+
+
+NAME
+====
+
+   P_WEIGHT_PER_UNIT             "weight_per_unit"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Gewicht in Gramm pro Untereinheit.
+
+
+BEMERKUNGEN
+===========
+
+   Deprecated. Bitte SetGramsPerUnits() (U_GPU) benutzen.
+
+25.Aug 2015 Gloinson
diff --git a/doc/sphinx/man/props/P_WIELDED b/doc/sphinx/man/props/P_WIELDED
new file mode 100644
index 0000000..26bcff7
--- /dev/null
+++ b/doc/sphinx/man/props/P_WIELDED
@@ -0,0 +1,37 @@
+
+P_WIELDED
+*********
+
+
+NAME
+====
+
+   P_WIELDED "wielded"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Ist diese Property gesetzt, dann ist die Waffe gerade gezueckt. Der
+   Traeger ist in der Property vermerkt.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property laesst sich nur abfragen!
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c
+   P_WEAPON
+
+Last modified: 2015-Jul-11, Arathorn
diff --git a/doc/sphinx/man/props/P_WIELD_FUNC b/doc/sphinx/man/props/P_WIELD_FUNC
new file mode 100644
index 0000000..fbe49a7
--- /dev/null
+++ b/doc/sphinx/man/props/P_WIELD_FUNC
@@ -0,0 +1,38 @@
+
+P_WIELD_FUNC
+************
+
+
+NAME
+====
+
+   P_WIELD_FUNC "wield_func"
+
+
+DEFINIERT IN
+============
+
+   <weapon.h>
+
+
+BESCHREIBUNG
+============
+
+   Falls ein Objekt eine WieldFunc() fuer die Waffe definiert, so muss
+   dieses Objekt in dieser Property eingetragen werden.
+
+   Die Auswertung dieser Property erfolgt in wield_me().
+
+
+BEISPIELE
+=========
+
+   Siehe das Beispiel zu WieldFunc()
+
+
+SIEHE AUCH
+==========
+
+   /std/weapon.c, WieldFunc()
+
+Last modified: Sun May 19 15:40:02 1996 by Wargon
diff --git a/doc/sphinx/man/props/P_WIELD_MSG b/doc/sphinx/man/props/P_WIELD_MSG
new file mode 100644
index 0000000..fa9dafc
--- /dev/null
+++ b/doc/sphinx/man/props/P_WIELD_MSG
@@ -0,0 +1,74 @@
+
+P_WIELD_MSG
+***********
+
+
+NAME
+====
+
+   P_WIELD_MSG                       "wield_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Zweiteiliges Array mit Meldungen, die beim Zuecken einer Waffe an den
+   Spieler und die Umgebung ausgegeben werden.
+   Der erste Eintrag geht an den Spieler, der zweite Eintrag an die
+   Umgebung.  Zeilenumbrueche werden automatisch gemacht, existierende
+   jedoch beruecksichtigt.
+
+   Platzhalter fuer Spieler ist @WExxx1, fuer die Waffe @WExxx2 (siehe
+   man replace_personal()).
+
+   [Wegen Abwaertskompatibilitaet ist auch noch der Platzhalter %s
+    moeglich, wobei in der eigenen Meldung %s fuer den Waffennamen steht,
+    in der an den Raum das erste %s fuer den Spielernamen, das zweite fuer
+    den Waffennamen.]
+
+
+BEISPIELE
+=========
+
+   SetProp(P_NAME, "Streitkolben");
+   SetProp(P_WIELD_MSG,
+    ({"Du zueckst @WEN2 und stoesst einen markerschuetternden Schrei aus.",
+      "@WER1 zueckt @WENU2 und stoesst einen markerschuetternden Schrei "
+      "aus." }));
+
+   -> beim Zuecken durch Urk:
+      Urk bekommt: Du zueckst den Streitkolben und stoesst einen
+                   markerschuetternden Schrei aus.
+      Der Raum:    Urk zueckt einen Streitkolben und stoesst einen
+                   markerschuetternden Schrei aus.
+
+   SetProp(P_WIELD_MSG,
+    ({"Du zueckst den klobigen Streitkolben und fuchtelst damit "
+      "wild vor Deiner Nase herum.",
+      "@WER1 zueckt einen klobigen Streitkolben und fuchtelt "
+      "damit wild vor der eigenen Nase herum. Hoffentlich verletzt "
+      "@WERQP1 sich dabei nicht ..."}));
+
+   -> beim Zuecken durch Urk:
+      Urk bekommt: Du zueckst den klobigen Streitkolben und fuchtelst
+                   damit wild vor Deiner Nase herum.
+      Der Raum:    Urk zueckt einen klobigen Streitkolben und fuchtelt
+                   damit wild vor der eigenen Nase herum. Hoffentlich
+                   verletzt er sich dabei nicht ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnliches: P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
+               P_DROP_MSG, P_PUT_MSG, P_GIVE_MSG, P_PICK_MSG
+   Funktionen: UnwieldFunc, WieldFunc
+   Sonstiges:  replace_personal(E), /std/weapon/combat.c
+
+29. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/props/P_WIMPY b/doc/sphinx/man/props/P_WIMPY
new file mode 100644
index 0000000..d0ba078
--- /dev/null
+++ b/doc/sphinx/man/props/P_WIMPY
@@ -0,0 +1,30 @@
+
+P_WIMPY
+*******
+
+
+NAME
+====
+
+   P_WIMPY                       "wimpy"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Numerischer Wert. Das Lebewesen flieht, wenn die Lebenspunkte
+   unter diesen Wert sinken.
+
+
+SIEHE AUCH
+==========
+
+   P_WIMPY_DIRECTION
+
+Letzte Aenderung: Mon Feb 12 17:50:47 2001 von Tilly
diff --git a/doc/sphinx/man/props/P_WIMPY_DIRECTION b/doc/sphinx/man/props/P_WIMPY_DIRECTION
new file mode 100644
index 0000000..11bedeb
--- /dev/null
+++ b/doc/sphinx/man/props/P_WIMPY_DIRECTION
@@ -0,0 +1,40 @@
+
+P_WIMPY_DIRECTION
+*****************
+
+
+NAME
+====
+
+   P_WIMPY_DIRECTION             "wimpy_dir"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Fluchtrichtung eines Spielers oder NPCs
+
+
+BEMERKUNGEN
+===========
+
+   Die Fluchtrichtung kann nicht nur ein Ausgang (sueden, osten, ...)
+   sein, sondern auch ein Kommando, welches der Spieler beim Anschlagen
+   ausfuehrt (z.b. <kletter seil hoch> oder <rufe Elender Mist!>).
+
+   Ausgefuehrt wird die Fluchtrichtung per command(), wenn die LP des
+   Lebewesens unter die mit <vorsicht> angegebe LP-Grenze sinkt.
+
+
+SIEHE AUCH
+==========
+
+   P_WIMPY
+
+Letzte Aenderung: Mon Feb 12 17:46:47 2001 von Tilly
diff --git a/doc/sphinx/man/props/P_WIZ_DEBUG b/doc/sphinx/man/props/P_WIZ_DEBUG
new file mode 100644
index 0000000..0bea2ad
--- /dev/null
+++ b/doc/sphinx/man/props/P_WIZ_DEBUG
@@ -0,0 +1,37 @@
+
+P_WIZ_DEBUG
+***********
+
+
+NAME
+====
+
+   P_WIZ_DEBUG                    "std_p_wizdebug"
+
+
+DEFINIERT IN
+============
+
+   /sys/player/comm.h
+
+
+BESCHREIBUNG
+============
+
+   Gesetzt, wenn der Magier (oder ein Testspieler) Debugmeldungen wahrnehmen
+   moechte.
+   Debugmeldungen sind Nachrichten, die mit dem Typ MT_DEBUG an ReceiveMsg()
+   uebergeben werden.
+
+
+
+   Die Werte von P_WIZ_DEBUG sind zur Zeit 0 oder 1, das kann sich aber
+   jederzeit aendern.
+   Magier aendern diese Prop bitte ueber "mschau".
+
+
+SIEHE AUCH
+==========
+
+   mschau
+   P_WANTS_TO_LEARN
diff --git a/doc/sphinx/man/props/P_WORN b/doc/sphinx/man/props/P_WORN
new file mode 100644
index 0000000..999ab76
--- /dev/null
+++ b/doc/sphinx/man/props/P_WORN
@@ -0,0 +1,63 @@
+
+P_WORN
+******
+
+
+NAME
+====
+
+   P_WORN "worn"
+
+
+DEFINIERT IN
+============
+
+   <armour.h>
+
+
+BESCHREIBUNG
+============
+
+   Mittels dieser Property laesst sich ermitteln, ob eine Ruestung bzw.
+   Kleidung derzeit getragen wird und wenn ja, von wem.
+
+   Entweder enthaelt die Property den Wert 0, oder sie enthaelt den
+   Traeger der Ruestung / Kleidung (als Objekt).
+
+
+BEMERKUNGEN
+===========
+
+   Diese Property laesst sich nur abfragen!
+
+
+BEISPIELE
+=========
+
+   Eine DefendFunc() koennte dem Traeger der Ruestung wie folgt etwas
+   mitteilen:
+
+   // Die Ruestung gibt Schutz gegen Feuer
+   int DefendFunc(string *dtyp, mixed spell, object enemy)
+   {
+     if (member(dtyp, DT_FIRE) != -1) {
+       // P_WORN ist auf jeden Fall gesetzt, da sonst die
+       // DefendFunc ueberhaupt nicht aufgerufen wuerde!
+       tell_object(QueryProp(P_WORN),
+         "Die Flammen zuengeln nur leicht ueber die Ruestung.\n");
+       return 10;
+     }
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   clothing, /std/clothing.c, armour, /std/armour.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/sphinx/man/props/P_XP b/doc/sphinx/man/props/P_XP
new file mode 100644
index 0000000..649f4e0
--- /dev/null
+++ b/doc/sphinx/man/props/P_XP
@@ -0,0 +1,81 @@
+
+P_XP
+****
+
+
+NAME
+====
+
+   P_XP                    "xp"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/life.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt die Anzahl der Erfahrungspunkte, die ein
+   Lebewesen erreicht hat. Dies geschieht insbesondere durch
+   Kampfhandlungen, wobei es sowohl fuer Einzelschlaege als auch fuer
+   das Toeten eines Opfers Punkte gibt.
+
+   Bei einzelnen Schlaegen ist die Vergabe von Erfahrungspunkten davon
+   abhaengig, wie stark man das Opfer getroffen hat, und welche
+   Gesamtwaffenklasse es hat (damage*P_TOTAL_WC/10).
+
+   Beim Todesschlag erhaelt man zusaetzlich die Erfahrungspunkte des
+   Opfers geteilt durch 100 (P_XP/100). Dieser Wert wird allerdings
+   gegebenenfalls auf ein Team aufgeteilt, sofern der Angreifer sich in
+   einem solchigen befindet.
+
+
+BEISPIEL
+========
+
+   NPC's gibt man im allgemeinen einen levelabhaengigen Sockelwert an
+   Erfahrungspunkten mit, da sie nicht allzuoft selbst Gegner toeten
+   und somit kaum die Moeglichkeit haben, diese Punkte selbst
+   anzusammeln. Trotzdem sollen sie ja dem Spieler eine gewisse Anzahl
+   an Erfahrungspunkten liefern, wenn sie getoetet werden:
+
+     include "/sys/living/life.h"
+     inherit "std/npc";
+     void create() {
+       ...
+       SetProp(P_XP,25000000);
+     }
+
+   Beim Toeten gibt es nun 25.000.000/100 = 250.000 Erfahrungspunkte.
+   Damit wird der NPC sogar automatisch fuer die Vergabe von
+   Erstkillstufenpunkten vorgesehen.
+
+   Die Funktion create_default_npc() setzt P_XP und andere Eigenschaften
+   auf geeignete Werte.
+
+
+BEMERKUNGEN
+===========
+
+   Die Vergabe von Erstkillstufenpunkten kann man ueber die Property
+   P_NO_SCORE unterbinden, die Vergabe von Erfahrungspunkten ueber
+   P_NO_XP. Automatisch werden Lebewesen fuer Erstkillstufenpunkte
+   vorgesehen, sofern sie eine der folgenden Grenzen ueberschritten
+   haben:
+     SCORE_LOW_MARK:  200000 (1 Stufenpunkt)
+     SCORE_HIGH_MARK: 600000 (2 Stufenpunkte)
+   Definiert sind die Konstanten in "/secure/scoremaster.h".
+
+
+SIEHE AUCH
+==========
+
+   Funktionen:  AddExp(), do_damage()
+   Verwandt:    P_NO_XP, P_LAST_XP
+   Sonstiges:   P_NO_SCORE, create_default_npc()
+                P_TOTAL_WC
+
+14.Feb 2007 Gloinson
diff --git a/doc/sphinx/man/props/P_X_ATTR_MOD b/doc/sphinx/man/props/P_X_ATTR_MOD
new file mode 100644
index 0000000..14ab9a4
--- /dev/null
+++ b/doc/sphinx/man/props/P_X_ATTR_MOD
@@ -0,0 +1,68 @@
+
+P_X_ATTR_MOD
+************
+
+
+NAME
+====
+
+   P_X_ATTR_MOD                  "extern_attributes_modifier"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping, das die Attribute des Spielers veraendert, der das Objekt bei
+   sich hat.
+
+   Zu beachten:
+   Diese Property bitte _ausschliesslich_ mit SetProp aendern, weil damit
+   gleichzeitig UpdateAttributes() im Lebewesen aufgerufen und ggf. das
+   Objekt als Statmodifizierer registriert wird.
+
+   Diese Property ist fuer Krankheiten, Flueche etc. gedacht. Bei
+   Waffen/Ruestungen, die die Attribute beeinflussen sollen, verwendet
+   man besser P_M_ATTR_MOD.
+
+   P_X_ATTR_MOD und P_M_ATTR_MOD duerfen einen gemeinsamen kumulierten
+   positiven Grenzwert nicht ueberschreiten. Dieser Grenzwert,
+   CUMULATIVE_ATTR_LIMIT, ist in /sys/living/attributes.h definiert.
+
+
+BEMERKUNGEN
+===========
+
+   Die Methode /std/thing/restrictions::_set_extern_attributes_modifier()
+   benachrichtigt tragende Livings ueber Aenderungen.
+   Bitte beim "Loeschen" der Prop nicht den Wert des jew. Attributes im
+   uebergebenen Mapping als 0 uebergeben, sondern das Key/Werte-Paar ganz
+   entfernen und bzw. ein leeres Mapping oder 0 uebergeben.
+
+
+BEISPIEL
+========
+
+   // Dem Lebewesen, das das Objekt bei sich hat, wird 2 von A_INT abgezogen
+   SetProp(P_X_ATTR_MOD,([A_INT:-2]));
+
+   // Stats wiederherstellen:
+   SetProp(P_X_ATTR_MOD,([]));
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   SetTimedAttrModifier(), QueryTimedAttrModifier(),
+   DeleteTimedAttrModifier(),
+   P_X_HEALTH_MOD, P_M_HEALTH_MOD, P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS,
+   P_TIMED_ATTR_MOD, P_M_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+
+02.02.2016, Gloinson
diff --git a/doc/sphinx/man/props/P_X_HEALTH_MOD b/doc/sphinx/man/props/P_X_HEALTH_MOD
new file mode 100644
index 0000000..69aafab
--- /dev/null
+++ b/doc/sphinx/man/props/P_X_HEALTH_MOD
@@ -0,0 +1,60 @@
+
+P_X_HEALTH_MOD
+**************
+
+
+NAME
+====
+
+   P_X_HEALTH_MOD                  "extern_health_modifier"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/attributes.h
+
+
+BESCHREIBUNG
+============
+
+   Mapping, mit dem die maximalen Lebenspunkte und Magiepunkte eines
+   Spielers veraendert werden, der dieses Objekt bei sich traegt.
+
+   Zu beachten: Diese Property bitte _ausschliesslich_ mit SetProp
+   aendern, weil damit gleichzeitig UpdateAttributes() im
+   Lebewesen aufgerufen und ggf. das Objekt als Statmodifizierer
+   registriert wird.
+
+   Bei Ruestungen/Waffen, die diese Wirkung entfalten sollen, verwendet
+   man besser P_M_HEALTH_MOD.
+
+
+BEMERKUNGEN
+===========
+
+   Bitte bei "Loeschen" der Prop nicht den Wert des jew. Attributes im
+   uebergebenen Mapping als 0 uebergeben, sondern das Key/Werte-Paar ganz
+   entfernen und ggf. ein leeres Mapping oder 0 uebergeben.
+
+
+BEISPIEL
+========
+
+   // Dem Spieler, der das Objekt bei sich traegt, wird P_MAX_HP um 5
+   // erhoeht und P_MAX_SP um 5 erniedrigt.
+   SetProp(P_X_HEALTH_MOD,([P_HP:5,P_SP:-5]));
+   // Stats wiederherstellen:
+   SetProp(P_X_HEALTH_MOD,([]);
+
+
+SIEHE AUCH
+==========
+
+   P_M_HEALTH_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, balance
+
+
+LETZTE AeNDERUNG
+================
+
+   Sat, 06.02.1999, 14:00:00 von Paracelsus
diff --git a/doc/sphinx/man/props/P_ZAP_MSG b/doc/sphinx/man/props/P_ZAP_MSG
new file mode 100644
index 0000000..6f9c7ce
--- /dev/null
+++ b/doc/sphinx/man/props/P_ZAP_MSG
@@ -0,0 +1,41 @@
+
+P_ZAP_MSG
+*********
+
+
+NAME
+====
+
+   P_ZAP_MSG                 "zap_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property enthaelt ein dreielementiges Array mit den folgenden
+   Eintraegen:
+       1.) Meldung, die der Magier beim Zappen bekommt.
+       2.) Meldung, die die Spieler im Raum beim Zappen bekommen.
+       3.) Meldung, die das Opfer beim Zappen bekommt.
+
+   Mit @@wer@@, @@wessen@@, ... kann der Name des Opfers und mit @@ich@@
+   der Name des Magiers in die Meldung eingewoben werden.
+
+   Die Property ist in Magiern gesetzt und gilt nur dort.
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_DIE_MSG, P_MURDER_MSG
+                      P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
+Last modified: Wed Jan 14 19:17:06 1998 by Patryn
diff --git a/doc/sphinx/man/props/U_REQ b/doc/sphinx/man/props/U_REQ
new file mode 100644
index 0000000..1594c4f
--- /dev/null
+++ b/doc/sphinx/man/props/U_REQ
@@ -0,0 +1,83 @@
+
+U_REQ
+*****
+
+
+NAME
+====
+
+   U_REQ                         "u_req"
+
+
+DEFINIERT IN
+============
+
+   /sys/unit.h
+
+
+BESCHREIBUNG
+============
+
+   Die Prop kann in Unitobjekten gesetzt werden.
+   Sie gibt die Anzahl der Einheiten an, die an der Unit manipuliert werden
+   sollen, falls mit weniger als P_AMOUNT umgegegangen werden soll.
+
+
+
+   Die Prop wird automatisch gesetzt, wenn id() an einem Unitobjekt gerufen
+   wird und die ID grundsaetzlich zutreffend ist, die aus der ID ermittelte
+   Zahl aber kleiner als P_AMOUNT ist.
+   Sie kann auch manuell mittel SetProp() (aber nicht Set()) gesetzt werden.
+
+   U_REQ wird beim Bewegen und Zerstoeren, bei Ermittlung von Wert und
+   Gewicht beruecksichtigt.
+
+   U_REQ wird vom Unitobjekt automatisch wieder auf P_AMOUNT gesetzt, wenn
+   sich query_verb() oder debug_info(DINFO_EVAL_NUMBER) veraendert haben.
+   (DINFO_EVAL_NUMBER ist eine Zahl, die sich jedesmal erhoeht, wenn der
+    Driver eine neue Berechnung/Ausfuehrung beginnt. Diese Nummer wird fuer
+    jeden vom driver initiierten Aufruf von LPC-Code erhoeht, z.B. bei jedem
+    Kommando, call_out, heart_beat etc. Details s. debug_info().)
+
+   Ebenso wird U_REQ bei der Vereinigung mit einem anderen (gleichen)
+   Objekt auf P_AMOUNT des vereinigten Objektes gesetzt.
+
+
+BUGS
+====
+
+   Viele. Dies ist ein uebler Hack. Geht aber nicht ohne.
+   Diese Prop war endlos lang gar nicht dokumentiert. Hier beschrieben ist
+   das Verhalten, was zur Zeit vorliegt. Dies mag unterschiedlich zu dem
+   irgendwann intendierten sein.
+
+
+BEISPIELE
+=========
+
+   object o = clone_object("unitobjekt");
+   o->SetProp(P_AMOUNT, 100);   // ab jetzt hat o 100 Einheiten.
+   o->move(npc, M_GET);         // ob mit 100 Einheiten wird bewegt
+   o->SetProp(U_REQ, 50);
+   o->move(anderernpc, M_GIVE); // 50 Einheiten werden bewegt, 50 verbleiben
+   (Technisch: das Objekt wird auf 50 Einheiten geaendert, bewegt und in der
+    alten Umgebung wird ein neues Objekt mit 50 Einheiten erzeugt.)
+
+   o->SetProp(U_REQ, 42);
+   o->remove(1);               // 42 Einheiten von den 50 werden zerstoert.
+   (Technisch: P_AMOUNT wird einfach um U_REQ reduziert.)
+
+   # gib 18 muenzen an blupp
+   Hierbei wird ob->id("18 muenzen") gerufen, was U_REQ im Geldobjekt auf 18
+   setzt. Bei der Bewegung bekommt blupp daher das Objekt mit P_AMOUNT==18
+   und der Rest wird im Abgebenden neu erzeugt.
+   # gib geld an flubbel
+   Das U_REQ aus dem verherigen Kommando ist jetzt nicht mehr gueltig. Zwar
+   ist es das gleiche Kommandoverb, aber DINFO_EVAL_NUMBER ist jetzt
+   anders.
+
+
+ZULETZT GEAeNDERT
+=================
+
+16.01.2015, Zesstra
diff --git a/doc/sphinx/man/props/gildenprops/P_GLOVE_FINGERLESS b/doc/sphinx/man/props/gildenprops/P_GLOVE_FINGERLESS
new file mode 100644
index 0000000..0485c9a
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/P_GLOVE_FINGERLESS
@@ -0,0 +1,30 @@
+
+P_GLOVE_FINGERLESS
+******************
+
+
+NAME
+====
+
+   P_GLOVE_FINGERLESS                     "fingerfreie_handschuhe"
+
+
+DEFINIERT IN
+============
+
+   /p/katzenkrieger/kkrieger.h
+
+
+BESCHREIBUNG
+============
+
+   So gekennzeichnete Handschuhe sind fingerlos und koennen
+   waehrend "krallenschlag" getragen werden.
+
+
+SIEHE AUCH
+==========
+
+   Verwandt:  P_ARMOUR_TYPE, AT_GLOVE
+
+10.Okt 2006 Gloinson
diff --git a/doc/sphinx/man/props/gildenprops/P_Z_AUTOSHIELD b/doc/sphinx/man/props/gildenprops/P_Z_AUTOSHIELD
new file mode 100644
index 0000000..994abad
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/P_Z_AUTOSHIELD
@@ -0,0 +1,43 @@
+
+P_Z_AUTOSHIELD
+**************
+
+
+NAME
+====
+
+   P_Z_AUTOSHIELD                             "z_autoshield"
+
+
+DEFINIERT IN
+============
+
+   /p/zauberer/wiznpc.h
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Property  kann man einen automatischen
+   Schutzzauber in Zauberer-NPCs einstellen, dessen
+   Vorhandensein dann in jeder Kampfrunde ueberprueft
+   wird, z.B. "schutz","schutzhuelle","zauberschild".
+
+
+BEMERKUNGEN
+===========
+
+   "zauberschild" ist ein Magisterspruch und kann nur in
+   bestimmten Zeitabstaenden benutzt werden. Wer also als
+   Autoshield nur Zauberschild benutzt, blockiert damit
+   alle anderen Spells, solange der Magisterspruch nicht
+   gesprochen werden kann.
+   Abhilfe: _query_next_master_spell_time()  return 0; }
+
+
+SIEHE AUCH
+==========
+
+   /p/zauberer/text/wiznpc.doku
+
+21.Okt 2006 Chagall
diff --git a/doc/sphinx/man/props/gildenprops/P_Z_INFO b/doc/sphinx/man/props/gildenprops/P_Z_INFO
new file mode 100644
index 0000000..654c768
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/P_Z_INFO
@@ -0,0 +1,73 @@
+
+P_Z_INFO
+********
+
+
+NAME
+====
+
+   P_Z_INFO                                           "z_info"
+
+
+DEFINIERT IN
+============
+
+   /p/zauberer/wiznpc.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property muss gesetzt werden, wenn man den
+   Zauberergilden-Standard-NPC nutzt. Sie setzt die
+   Grundeinstellungen des NPCs und generiert das
+   Newskills-Mapping.
+
+   Die Property ist wie folgt aufgebaut:
+
+   * MIN (minimale Skillability im Bereich von 0 - 10000)
+   * MAX (maximale Skillability im Bereich von 0 - 10000)
+   * LEV (Gildenlevel)
+   * ZWEIG (Gildenzweig)
+
+
+BEMERKUNGEN
+===========
+
+   Fuer die Argumente LEV und ZWEIG stehen folgende Auswahl-
+   moeglichkeiten zur Verfuegung.
+
+   LEV:
+
+      Z_ANFAENGER     0
+      Z_LEHRLING      1
+      Z_MEISTER       2
+      Z_ERZMEISTER    3
+
+   ZWEIG:
+
+      ZZW_ANGRIFF               1
+      ZZW_ABWEHR                2
+      ZZW_ILLUSION              4
+      ZZW_BEHERRSCHUNG          8
+      ZZW_HELLSICHT            16
+      ZZW_VERWANDLUNG          32
+      ZZW_SCHWARZ              64     INAKTIV
+      ZZW_WEISS               128
+      ZZW_ALLE                511
+
+
+BEISPIEL
+========
+
+   SetProp(P_Z_INFO, ({9000, 9500, Z_ERZMEISTER, ZZW_ANGRIFF|ZZW_ABWEHR}));
+   erzeugt einen Erzmagister-PC, der alle Lehrlings- sowie die Magister und
+   Erzmagister-Sprueche Angriff und Abwehr mit 90-95% beherrscht.
+
+
+SIEHE AUCH
+==========
+
+   /p/zauberer/text/wiznpc.doku
+
+21.Okt 2006 Chagall
diff --git a/doc/sphinx/man/props/gildenprops/P_Z_NO_MATERIAL b/doc/sphinx/man/props/gildenprops/P_Z_NO_MATERIAL
new file mode 100644
index 0000000..cda514a
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/P_Z_NO_MATERIAL
@@ -0,0 +1,34 @@
+
+P_Z_NO_MATERIAL
+***************
+
+
+NAME
+====
+
+   P_Z_NO_MATERIAL                     "npc_braucht_keine_kmp"
+
+
+DEFINIERT IN
+============
+
+   /p/zauberer/zauberer.h
+
+
+BESCHREIBUNG
+============
+
+   Setzt man diese Property in einem NPC, so benoetigt er fuer die
+   Sprueche der Zauberergilde keine Komponenten.
+
+
+BEMERKUNGEN
+===========
+
+   NIEMALS diese Property einfach so in einem Spieler setzen.
+
+
+SIEHE AUCH
+==========
+
+21.Okt 2006 Chagall
diff --git a/doc/sphinx/man/props/gildenprops/P_Z_NO_NOCONN b/doc/sphinx/man/props/gildenprops/P_Z_NO_NOCONN
new file mode 100644
index 0000000..6cd0024
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/P_Z_NO_NOCONN
@@ -0,0 +1,42 @@
+
+P_Z_NO_NOCONN
+*************
+
+
+P_Z_NO_NOCON
+============
+
+
+NAME
+====
+
+   P_Z_NO_NOCON                                       "no_nocon"
+
+
+DEFINIERT IN
+============
+
+   /p/zauberer/wiznpc.h
+
+
+BESCHREIBUNG
+============
+
+   Der Standardzauberergildennpc setzt SI_NO_CONSEQUENCES, damit
+   die Gildenpcs nicht den negativen Auswirkungen beim Misslingen
+   der Sprueche geschuetzt sind. Setzt man diese Property vor
+   P_Z_INFO auf 0, wird das Flag nicht gesetzt.
+
+
+BEMERKUNGEN
+===========
+
+   Muss vor P_Z_INFO gesetzt werden, damit es wirksam ist.
+
+
+SIEHE AUCH
+==========
+
+   /p/zauberer/text/wiznpc.doku, P_Z_INFO
+
+21.Okt 2006 Chagall
diff --git a/doc/sphinx/man/props/gildenprops/P_Z_NO_SPELL_SUPPORT b/doc/sphinx/man/props/gildenprops/P_Z_NO_SPELL_SUPPORT
new file mode 100644
index 0000000..74860f6
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/P_Z_NO_SPELL_SUPPORT
@@ -0,0 +1,41 @@
+
+P_Z_NO_SPELL_SUPPORT
+********************
+
+
+NAME
+====
+
+   P_Z_NO_SPELL_SUPPORT       "zauberer_ruestung_unterstuetzt_noch_nicht"
+
+
+DEFINIERT IN
+============
+
+   /p/zauberer/zauberer.h
+
+
+BESCHREIBUNG
+============
+
+   Normalerweise unterstuetzt eine Ruestung den Zauberer, sobald sie im
+   entsprechenden Ruestungsmaster eingetragen ist. Moechte man allerdings
+   die Unterstuetzung an bestimmte Bedingungen knuepfen, z.B. das loesen
+   einer Miniquest, so kann man diese Property auf 1 setzen. Die Ruestung
+   unterstuetzt dann nicht. Um die Unterstuetzung wieder zu aktivieren,
+   setzt man die Property wieder auf 0.
+
+
+BEMERKUNGEN
+===========
+
+   NIEMALS diese Property einfach so in fremden Zaubererruestungen
+   setzen. Sollte der Gildenmagier erfahren, dass z.B. ein NPC
+   einfach so die Unterstuetzung der Ruestungen ausschaltet, wird
+   diese Property wieder deaktiviert.
+
+
+SIEHE AUCH
+==========
+
+21.Okt 2006 Chagall
diff --git a/doc/sphinx/man/props/gildenprops/kaempferboni b/doc/sphinx/man/props/gildenprops/kaempferboni
new file mode 100644
index 0000000..0d34e98
--- /dev/null
+++ b/doc/sphinx/man/props/gildenprops/kaempferboni
@@ -0,0 +1,270 @@
+
+kaempferboni
+************
+
+Kaempferboni und deren Implementation
+
+======================================================================
+
+Bei den Kaempfern gibt es einige Properties, die, in Waffen oder
+Ruestungen gesetzt, der Kampfverlauf eines Spielers erheblich
+beeinflussen koennen.
+
+Zu beachten ist, dass die Abnahme von Waffen oder Ruestungen mit
+Kaempferboni allein der Balance obliegt. Der Gildenmagier der Kaempfer
+steht aber gerne mit Rat und Tat zur Seite.
+
+Abschnitt A
+
+In Waffen koennen nachfolgende, in /p/kaempfer/kaempfer.h definierten,
+Properties gesetzt werden. Die meisten davon fungieren als 'Boni' und
+werden dem Spieler auch mittels 'schaetz <waffe>' angezeigt
+
+1 Waffenschlagbonus - K_BRAWLING_WC (INT) - "k_brawling_wc"
+
+   Wenn die Waffe eine zusaetzlich gefaehrliche Stelle besitzt - z.B.
+   einen harten Dorn am Stielende, eine Spitze am Ruecken einer
+   Axtklinge, Zacken am Dolchgriff - kann man der Waffe einen
+   Waffenschlagbonus geben. Dies bedeutet, dass der Waffenschlag um
+   ein paar Prozente verstaerkt wird, da der Spieler natuerlich
+   versucht, immer genau mit diesem 'feature' den Waffenschlag
+   auszufuehren (der Waffenschlag ist kurz gesagt ein unerwarteter
+   Schlag, der nicht mit dem 'normalen' Waffenende ausgefuehrt wird,
+   der Gegner wird dadurch ueberrascht -> mehr Schaden). Da solch ein
+   'feature' doch recht auffaellig ist, sollte es in der
+   Langbeschreibung der Waffe auf jeden Fall erwaehnt werden.
+
+   Interessant zu wissen waere noch, dass Zweihandwaffen einen
+   generellen zusaetzlichen Bonus auf den Waffenschlag bekommen und
+   dass es eine Abstufung gibt, nach der die Waffengattungen die Hoehe
+   des Basiswertes gesetzt bekommen, wobei Speere den hoechsten und
+   Messer den niedrigsten besitzen
+
+   Speere - Kampfstaebe - Aexte - Keulen - Schwerter - Messer
+
+   Der max. Bonus fuer diese Property betraegt 30, wobei 1-10 ->
+   geringer Bonus, 11-20 -> guter Bonus, 21-30 -> sehr guter Bonus.
+
+   Bitte beachten ein Zweihand-Speer mit max. P_WC und max.
+   K_BRAWLING_WC haut entsprechend gut rein und sollte nur schwer zu
+   ergattern sein, bzw. noch andere Auflagen haben (ggf. unique,
+   personalisiert, etc.)
+
+2 Waffenschlagschaden - K_BRAWLING_DT (STRING) - "k_brawling_dt"
+
+   Wenn die Waffe, mit der der Kaempfer einen Waffenschlag ausfuehrt,
+   ein 'feature' hat, mit dem er diesen Schlag ausfuehrt, kann dieses
+   'feature' einen anderen Waffenschlagschaden besitzen. Z.B. kann ein
+   Schwert, welches normalerweise DT_SLASH macht, besonders lange und
+   spitze Parierstangen besitzen, die vielleicht auch noch vergiftet
+   sind. Dann kann der Magier ({DT_PIERCE,DT_POISON}) setzen, so dass
+   beim Waffenschlag immer ein Mischschaden aus Stiche und Gift
+   erfolgt.
+
+3 Waffenschlagsmeldung - K_BRAWLING_MSG (STRING/STRING*) -
+k_brawling_msg"
+
+   In diese Property kann man hineinschreiben, mit welchem Teil der
+   Waffe der Waffenschlag ausgefuehrt wird. Angenommen, es bietet sich
+   an, mit einer Waffe stets den Waffenschlag mit einem grossen Knauf
+   am Griff auszufuehren, wird schlicht und einfach "mit einem grossen
+   Knauf am Griff der Schlachtaxt" in die Property gesetzt. Sollte
+   sich bei der Programmierung ergeben, dass es sich anbietet, der
+   Waffe mehr als nur eine guenstige Stelle anzudichten mit der man
+   den Waffenschlag ausfuehren kann, so setzt man ein Array, z.B.
+   ({"mit einem grossen Knauf am Griff der Schlachtaxt","mit der
+   breiten Seite der " "Schlachtaxtklinge"}). Insgesamt ist darauf zu
+   achten, dass die Meldungen 'vollstandig' sind. Das Array kann
+   beliebige Groesse annehmen, es wird dann zufaellig eine Meldung
+   beim Schlag ausgesucht.
+
+   Es empfiehlt sich, jede Waffe mit dieser Property zu schmuecken,
+   die K_BRAWLING_WC gesetzt haben, da die Waffenschlagmeldungen damit
+   im Kampf 'individualisiert' werden. In der Praxis wird es jedoch
+   daran scheitern, dass es viel zu viele alte Waffen gibt, die keiner
+   mehr anfassen moechte. Daher wird auf Standardmeldungen
+   zurueckgegriffen, sollte diese Property nicht gesetzt sein.
+
+4 Waffenbruchbonus - K_WEAPON_SHATTER (INT) - "k_weapon_shatter"
+
+   Waffen, die besonders fuer den Waffenbruch konstruiert wurden,
+   koennen einen Bonus einbringen, der in dieser Property angegeben
+   wird. Natuerlich eignen sich die verschiedenen Waffentypen wieder
+   unterschiedlich gut fuer einen Waffenbruch Keulen (meist aufgrund
+   ihres Gewichts) am besten, Messer am schlechtesten, alle anderen
+   dazwischen (Axt - Schwert - Stab - Speer). Dabei kriegen alle
+   Waffen, die u.a. Schlagschaden verursachen, nochmal einen kleinen
+   Bonus obendrauf.
+
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 ->
+   geringer Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
+
+   Bei gut gelungenem Waffenbruch wird die Waffe des Gegners
+   beschaedigt, wenn die Technik sehr gut gelingt, kann es auch sein,
+   dass dem Gegner die Waffe aus der Hand geschlagen wird (der Spieler
+   kann sie allerdings nicht aufheben und der NPC zueckt sie nach ein
+   paar Kampfrunden wieder).
+
+5 Bonus fuer Finte/Waffentrick - K_DISTRACTING_WEAPON (INT) -
+   "k_distracting_weapon"
+
+   Waffen, die fuer den Gegner aufgrund ihrer Bauweise besonders
+   irritierend sein koennen, koennen einen Bonus fuer Finte und
+   Waffentrick haben. Dabei wird der Gegner bei einer Finte bzw. einem
+   Waffentrick NOCH mehr verwirrt, als er es ohnehin schon nur durch
+   die angewandte Technik wird. Ein gutes Beispiel hierfuer ist z.B.
+   der Kriegshamster ein Hamster, der auf einem Holzstab aufgespiesst
+   ist, sollte fuer den Gegner schon SEHR irritierend sein ;). Die
+   Waffengattung hat nur wenig Einfluss auf Finte/Waffentrick.
+
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-10 ->
+   geringer Bonus, 11-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
+
+6 Todesstossbonus - K_CRITICAL_HIT (INT) - "k_critical_hit"
+
+   Man stelle sich eine Waffe mit besonders spitzer, langer Klinge vor
+   oder eine magische Waffe, die dem geschwaechten Gegner die Seele
+   entreisst. Diese Eigenschaften verleihen dem Spieler beim
+   Todesstoss einen entsprechenden Bonus von bis zu 100%.
+
+   Es ist moeglich, dass ein und dasselbe 'feature' sowohl dem
+   Waffenschlag als auch dem Todesstoss den Bonus stellt, z.B. zwei
+   Hiebklingen auf dem Klingenruecken einer grossen Axt. Auch dies
+   sollte man deutlich aus der Langbeschreibung herauslesen koennen.
+
+   Der max. Bonus fuer diese Property betraegt 100, wobei 100 eine
+   Verdopplung der P_WC beim Todesstoss bedeutet! Ansonsten bedeutet
+   1-20 -> geringer Bonus, 21-60 -> guter Bonus, 61-100 -> sehr guter
+   Bonus.
+
+7 Waffenwurfbonus - K_THROWING_WEAPON (INT) - "k_throwing_weapon"
+
+   Wenn eine Waffe besonders gut zum Werfen geeignet ist, z.B. ein
+   Wurfdolch, dann kann diese Property gesetzt werden. Natuerlich ist
+   der Grundwert wieder von der Waffengattung abhaengig. Es gilt, dass
+   man Messer und Speere grundsaetzlich am besten werfen - und dabei
+   gut Schaden machen - kann, am schlechtesten schneiden Keulen und
+   Kampfstaebe ab.
+
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 ->
+   geringer Bonus, 21-40 -> guter Bonus, 31-50 -> sehr guter Bonus.
+
+   Zu beachten ist hierbei, dass ein sehr hoher Bonus nur bei Waffen
+   mit etwas geringerer P_WC vergeben werden sollte. Ein reines
+   Wurfmesser ist nunmal im normalen Kampf nicht die gefaehrlichste
+   aller Waffen (speziell ausbalanciert, keinen richtigen Griff,
+   etc.). Natuerlich kann es einen Wurfspeer mit max. P_WC und sehr
+   hohem Waffenwurfbonus geben, allerdings mit den ueblich hohen
+   Restriktionen.
+
+8 KO-Schlag-Bonus - K_KO (INT) - "k_ko"
+
+   Waffen, die besonders fuer einen KO-Schlag geeignet sind, koennen
+   einen Bonus mit dieser Property bekommen. Eine entsprechende Waffe
+   koennte z.B. ein lederumwickelter Pruegel sein, denn man will den
+   Gegner ja nur KO schlagen und nicht gleich toeten.
+
+   Der max. Bonus fuer diese Property betraegt 50, wobei 1-20 ->
+   geringer Bonus, 21-30 -> guter Bonus, 31-50 -> sehr guter Bonus.
+
+9 Kein Waffenschaerfen - K_NO_HONING (INT) - "k_no_honing"
+
+   Wenn eine Waffe aus irgendeinem Grund nicht geschaerft werden kann
+   oder darf, muss man diese Property auf 1 setzen. Eine Erklaerung
+   dafuer sollte in der P_LONG bzw. P_INFO erfolgen.
+
+Abschnitt B
+
+Die beiden Properties, P_EFFECTIVE_AC und P_EFFECTIVE_WC, welche in
+<combat.h> definiert sind, sind eigentlich nur dazu da, um Ruestungen
+und Waffen, die eine DefendFunc() bzw. HitFunc() besitzen, korrekt vom
+Spieler einschaetzen lassen zu koennnen.
+
+Das Kaempferspellbook verwendet diese Properties darueberhinaus wie
+folgt
+
+1 Schutzboni in Waffen - P_EFFECTIVE_AC (INT) - "effective_ac"
+
+   Ist diese Property in einer Waffe gesetzt, geht das
+   Kaempferspellbook davon aus, dass diese Waffe mehr oder weniger die
+   Faehigkeit besitzt, auch wie eine Ruestung schuetzen zu koennen. Da
+   man eine Waffe aber nicht anziehen, sondern nur vor sich hertragen
+   kann, kann auch der max. Ruestungsschutz einer Waffe nur gleich dem
+   max. Ruestungsschutz eines Schildes entsprechen. Eine gesetzte
+   P_EFFECTIVE_AC in einer Waffe wird dem Spieler als mehr oder
+   weniger gute 'Paradewaffe' im 'schaetz' angezeigt und geht sowohl
+   bei der Waffenparade als auch beim Block als Bonus mit ein.
+
+   Z.B. koennte ein leichtes Schwert, was aufgrund seiner Bauweise
+   mehr fuer den defensiven Kampf ausgelegt ist (extralange
+   Parierstangen, verstaerkter Handschutz im Griffbereich, ...) wie
+   ein maessiges Schild wirken. Die Vorteile liegen auf der Hand der
+   Spieler bekommt verstaerkten Schutz, kann aber weiterhin eine
+   Zweihandwaffe fuehren.
+
+   Der max. Bonus fuer diese Property betraegt 40, wobei 1-20 ->
+   geringer Bonus, 21-30 -> guter Bonus, 31-40 -> sehr guter Bonus.
+
+   Zu beachten ist hier, dass sehr gute Parierwaffen mit
+   P_EFFECTIVE_AC > 30 moeglichst deutlich unter der max. WC liegen
+   sollten.
+
+   Anmerkungen Eine gesetzte P_EFFECTIVE_AC in einem Schild kann den
+   Bonus fuer die Schildparade nach oben oder unten beeinflussen.
+   Moechte man ein Schild herstellen, welches speziell bei der
+   Schildparade der Kaempfer besser als 'normal' schuetzt, sollte man
+   hier einen Wert eintragen, der deutlich groesser als die P_AC des
+   Schildes ist.
+
+   Eine gesetzte P_EFFECTIVE_AC in einer anderen Ruestung hat nur den
+   Nutzen, auf deren erhoehten (und nicht sofort sichtbaren)
+   Verteidigungswert hinzuweisen, der durch eine DefendFunc()
+   realisiert wird.
+
+2 Angriffsboni in Ruestungen - P_EFFECTIVE_WC (INT) - "effective_wc"
+
+   Fuer die Kaempfer koennen folgende Ruestungstypen modifiziert
+   werden AT_TROUSERS (Hosen), AT_HELMET (Kopfbedeckung), AT_BOOT
+   (Fusskleidung), AT_ARMOUR (Koerperruestung), AT_SHIELD (Schilde).
+   Ist in einer dieser Typen P_EFFECTIVE_WC gesetzt, so macht diese
+   Ruestung bei einem Angriff mit einer Spezialattacke (Kniestoss,
+   Kopfstoss, Fusstritt, Ellbogenschlag und Schildstoss) entsprechend
+   mehr bzw. weniger Schaden als ohne diese Property. Eine
+   entsprechende Begruendung fuer eine Verstaerkung oder Schwaechung
+   sollte auch hier fuer den Spieler offensichtlich sein (Dornen am
+   Schild, verstaerkter Kniebereich, Zacken am Helm, etc.).
+
+   Wenn man der Ruestung einen Bonus geben moechte, muss man darauf
+   achten, dass P_EFFECTIVE_WC hoeher ist als die P_AC der Ruestung!
+   Sollte P_EFFECTIVE_WC niedriger als P_AC sein, wird dennoch
+   P_EFFECTIVE_WC als Angriffswert genommen. Dies stellt natuerlich
+   eine Schwaechung der Spezialattacke dar. Moeglicherweise ist aber
+   genau das gewollt, wenn eine Ruestung, die sehr gut schuetzt, nur
+   geringen Kaempferbonus aufweisen soll.
+
+   Beispiel ein Schild aus Hartgummi kann recht gut Schlaege aller Art
+   abfangen (-> P_AC 35). Will der Kaempfer jedoch einen Schildstoss
+   damit machen, fehlt ihm aufgrund der Beschaffenheit die Wucht, eher
+   daempft es den Schildstoss noch ein wenig (-> P_EFFECTIVE_WC 25).
+
+   Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der
+   jeweils doppelte maximale P_AC-Wert (s. 'man ruestungen').
+
+   Die Angabe eines Schadenstyps (P_DAM_TYPE) in einer Ruestung kann
+   dann sinnvoll sein, wenn bei der Spezialattacke ein spezieller
+   Schaden gemacht werden soll. Beispielsweise sollten Flammenstiefel
+   logischerweise DT_FIRE und DT_BLUDGEON oder DT_PIERCE bei einem
+   Kampftritt verursachen. Es MUSS (logischerweise) mindestens ein
+   physikalischer Schadenstyp enthalten sein. Wird kein Schadenstyp
+   angegeben, wird auf Standardtypen zurueckgegriffen.
+
+
+SIEHE AUCH
+==========
+
+   Waffen:     P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
+   Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
+   Files:      /std/weapon.c, /std/weapon/combat.c
+   Balance:    waffen, ruestungen, properties
+
+26.10.2012, Gabylon
diff --git a/doc/sphinx/man/props/obsolete/P_BALANCED_WEAPON b/doc/sphinx/man/props/obsolete/P_BALANCED_WEAPON
new file mode 100644
index 0000000..83a2fc4
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_BALANCED_WEAPON
@@ -0,0 +1,59 @@
+
+P_BALANCED_WEAPON
+*****************
+
+********************* UNGENUTZTE PROPERTY
+***************************** * Diese Property wird von der Mudlib
+NICHT ausgewertet und kann       * * als veraltet gelten.
+* * Momentan ist auch keine Gilde bekannt, die mehr macht, als sie
+* * auszugeben.
+* *******************************************************************
+****
+
+
+NAME
+====
+
+   P_BALANCED_WEAPON  "balanced_weapon"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Die Property gibt an, ob eine Waffe ausbalanciert ist oder nicht.
+   Die beiden moeglichen Werte sind logischerweise:
+
+           WP_BALANCED       balanciert
+           WP_UNBALANCED     unbalanciert
+
+   Die WP_* sind ebenfalls in <weapon.h> definiert.
+
+
+BEISPIELE
+=========
+
+   a) Eine ausbalancierte Waffe ist z.B. ein Kampfstab.
+
+       SetProp(P_BALANCED_WEAPON,WP_BALANCED);
+
+   b) Eine nicht ausbalancierte Waffe ist z.B. eine Keule.
+
+       SetProp(P_BALANCED_WEAPON,WP_UNBALANCED);
+
+
+SIEHE AUCH
+==========
+
+   P_TECHNIQUE, /std/weapon/combat.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_DEFAULT_INFO b/doc/sphinx/man/props/obsolete/P_DEFAULT_INFO
new file mode 100644
index 0000000..9a16169
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_DEFAULT_INFO
@@ -0,0 +1,50 @@
+
+P_DEFAULT_INFO
+**************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
+
+
+NAME
+====
+
+   P_DEFAULT_INFO                "default_info"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Default-Antwort eines Npc, wenn er auf das Schluesselwort durch den
+   Spieler kein AddInfo parat hat.
+
+
+BEMERKUNG
+=========
+
+   Diese Property sollte nicht mehr benutzt werden. Stattdessen bitte
+   AddInfo(DEFAULT_INFO,...) verwenden.
+   Dem in dieser Prop angegeben String wird immer der Name des Npc
+   vorausgestellt. Will man dies verhindern, muss man sie ueberschreiben.
+
+
+BEISPIEL
+========
+
+   SetProp(P_DEFAULT_INFO,"bohrt gelangweilt in der Nase.\n");
+
+
+SIEHE AUCH
+==========
+
+   AddInfo
+
+17.08.2010, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_EXTRA_LOOK b/doc/sphinx/man/props/obsolete/P_EXTRA_LOOK
new file mode 100644
index 0000000..203fb8e
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_EXTRA_LOOK
@@ -0,0 +1,57 @@
+
+P_EXTRA_LOOK
+************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+benutzt sie NICHT mehr, sondern  * * stattdessden AddExtraLook().
+* *******************************************************************
+****
+
+
+NAME
+====
+
+   P_EXTRA_LOOK                    "extralook"
+
+
+DEFINIERT IN
+============
+
+   /sys/living/description.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property enthaelt einen String. Sie wird entweder in Lebewesen
+   direkt oder in Objekten gesetzt wird, die im Besitz von Lebewesen
+   sein koennen.
+   Diese Strings erscheinen dann zusaetzlich in der Langbeschreibung
+   des Lebewesens bzw. des Besitzers (wenn das Objekt sich direkt im
+    Lebewesen befindet, jedoch nicht in einem Behaelter im Lebewesen).
+   Fuer den Zeilenumbruch muss man selbst sorgen.
+
+
+BEISPIEL
+========
+
+   Ein Spieler hat eine Pfeife im Mund. In dieser Pfeife setzt man z.B.
+   in der Funktion zum Pfeife Rauchen folgendes:
+     SetProp(P_EXTRA_LOOK,break_string(
+    this_player()->Name(WER)+" ist ganz umnebelt.",78);
+
+
+BEMERKUNG
+=========
+
+   BITTE NICHT MEHR BENUTZEN!
+
+
+SIEHE AUCH
+==========
+
+         long(), /std/living/description.c, /std/player/base.c
+   AddExtraLook(), RemoveExtraLook()
+
+13.05.2007, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_LAST_KILLER b/doc/sphinx/man/props/obsolete/P_LAST_KILLER
new file mode 100644
index 0000000..199a878
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_LAST_KILLER
@@ -0,0 +1,37 @@
+
+P_LAST_KILLER
+*************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet und wird
+bald aus der Mudlib entfernt.  * ************************************
+***********************************
+
+
+NAME
+====
+
+   P_LAST_KILLER                 "last_killer"
+
+
+DEFINIERT IN
+============
+
+   /sys/player.h
+
+
+BESCHREIBUNG
+============
+
+   Letzter Moerdes des Wesens.
+   Diese Property wurde nur in Spielern gesetzt und auch dann nicht immer.
+   Bitte stattdessen P_KILLER abfragen, welche in NPC und Spielern gesetzt
+   wird.
+
+
+SIEHE AUCH
+==========
+
+   P_KILLER, die()
+
+05.09.2008, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_LAST_PEACE_TIME b/doc/sphinx/man/props/obsolete/P_LAST_PEACE_TIME
new file mode 100644
index 0000000..f8aea49
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_LAST_PEACE_TIME
@@ -0,0 +1,41 @@
+
+P_LAST_PEACE_TIME
+*****************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet und wird
+bald aus der Mudlib entfernt.  * ************************************
+***********************************
+
+
+PROPERTY
+========
+
+   P_LAST_PEACE_TIME       "last_peace_time"
+
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+BESCHREIBUNG
+============
+
+   Diese Property gibt an, wann zuletzt versucht wurde, einen NPC zu
+   befrieden. Bitte nach Moeglichkeit nur lesend verwenden. Des weiteren
+   wird sie nur im ueblichen Verhalten von QueryPacify gesetzt, und nur
+   dann, wenn P_ACCEPT_PEACE nicht gesetzt ist.
+
+
+SIEHE AUCH
+==========
+
+   QueryPacify, P_ACCEPT_PEACE
+
+
+LETZTE AENDERUNG
+================
+
+   2004-03-17, 14:30 von Humni
diff --git a/doc/sphinx/man/props/obsolete/P_LOG_FILE b/doc/sphinx/man/props/obsolete/P_LOG_FILE
new file mode 100644
index 0000000..ed57133
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_LOG_FILE
@@ -0,0 +1,69 @@
+
+P_LOG_FILE
+**********
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property wird nicht mehr
+ausgewertet.                         * ******************************
+*****************************************
+
+
+NAME
+====
+
+   P_LOG_FILE                   "log_file"
+
+
+DEFINIERT IN
+============
+
+   /sys/thing/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Enthaelt einen String auf einen Filenamen.
+
+   Werden zu dem Objekt (Raum, Monster, ...) Fehlermeldungen abgesetzt,
+   werden diese in das angegebene File umgeleitet. Die Eintragung in
+   die per Default fuer Fehlermeldungen vorgesehenen Dateien erfolgt
+   nicht.
+
+
+BEMERKUNGEN
+===========
+
+   P_LOG_FILE wird ausgewertet wie log_file().
+
+   Das heisst, es wird AUF JEDEN FALL nach /log geschrieben!
+
+   Direkt in /log kann NICHT geschrieben werden, es muss also ein
+   Unterverzeichnis mit Eurem Magiernamen vorhanden sein.
+
+
+BEISPIELE
+=========
+
+   SetProp(P_LOG_FILE,"tilly_log");          // FALSCH, es wuerde versucht,
+                                                das File /log/tilly_log
+                                                anzulegen
+   SetProp(P_LOG_FILE,"/log/tilly_log");     // FALSCH, es wuerde versucht,
+                                                das File /log/log/tilly_log
+                                                anzulegen
+   SetProp(P_LOG_FILE,"/d/ebene/tilly_log"); // FALSCH, s.o.
+
+   SetProp(P_LOG_FILE,"tilly/tilly_log");    // RICHTIG!
+
+   Im letzten Beispiel werden alle Eintraege in das File tilly_log ge-
+   schrieben, das sich im Verzeichnis /log/tilly/ befindet.
+
+   Das Unterverzeichnis /tilly in /log muss zuvor angelegt werden.
+
+
+SIEHE AUCH
+==========
+
+   P_LOG_INFO, write_file(), log_file(),
+
+Letzte Aenderung: 13.09.04 Tilly@MorgenGrauen
diff --git a/doc/sphinx/man/props/obsolete/P_NEXT_SPELL_TIME b/doc/sphinx/man/props/obsolete/P_NEXT_SPELL_TIME
new file mode 100644
index 0000000..300a766
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_NEXT_SPELL_TIME
@@ -0,0 +1,49 @@
+
+P_NEXT_SPELL_TIME
+*****************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
+
+
+NAME
+====
+
+   P_NEXT_SPELL_TIME             "next_spell"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Wann kann das naechste Mal gezaubert werden?
+   Dies ist eine globale Spruchermuedung/-Sperre.
+   Flexiblere Sperren koennen mittels SetSpellFatigue/CheckSpellFatigue()
+   verwaltet werden.
+
+   Diese Property ist keine echte Property, sondern liefert nur das
+   Ergebnis von von CheckSpellFatigue() zurueck bzw. ruft beim Setzen
+   SetSpellFatigue(<spruchsperre>, 0) auf.
+   Diese Prop sollte _nicht_ mittels Query- oder Setmethoden manupuliert
+   werden, da sonst Inkonsistenzen zum Ergebnis von CheckSpellFatigue()
+   auftreten.
+
+
+SIEHE AUCH
+==========
+
+   SetSpellFatigue(L), CheckSpellFatigue(L)
+   spruchermuedung
+
+
+ZULETZT GEAeNDERT
+=================
+
+14.03.2010, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_READ_MSG b/doc/sphinx/man/props/obsolete/P_READ_MSG
new file mode 100644
index 0000000..2331508
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_READ_MSG
@@ -0,0 +1,56 @@
+
+P_READ_MSG
+**********
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
+
+
+NAME
+====
+
+   P_READ_MSG                "read_msg"
+
+
+DEFINIERT IN
+============
+
+   /sys/properties.h
+
+
+BESCHREIBUNG
+============
+
+   Diese Property ist veraltet. Ihre Funktion wird von
+   AddReadDetail(SENSE_DEFAULT, ...) uebernommen.
+
+
+
+   Hier koennen Informationen gespeichert werden, die beim Lesen
+   des Objektes ausgegeben werden.
+
+
+
+   Fuer das Identifizieren des zu lesenden Objektes wird der gleiche
+   Mechanismus benutzt wie fuer lesbare und andere Details.
+
+   Die Benutzung von process_string() ist in dieser Prop nicht mehr erlaubt.
+
+
+BEISPIEL
+========
+
+   AddId(({"rolle", "schriftrolle"}));
+   SetProp(P_READ_MSG,
+      "Du oeffnest die Rolle und liest: LOREM IPSUM ...\n");
+
+
+SIEHE AUCH
+==========
+
+   Details:   AddReadDetail(), RemoveReadDetail(), P_READ_DETAILS
+   Sonstiges: break_string()
+
+09.12.2012, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_TECHNIQUE b/doc/sphinx/man/props/obsolete/P_TECHNIQUE
new file mode 100644
index 0000000..a556ce6
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_TECHNIQUE
@@ -0,0 +1,70 @@
+
+P_TECHNIQUE
+***********
+
+********************* UNGENUTZTE PROPERTY
+***************************** * Diese Property wird von der Mudlib
+NICHT ausgewertet und kann       * * als veraltet gelten.
+* * Momentan ist auch keine Gilde bekannt, die mehr macht, als sie
+* * auszugeben.
+* *******************************************************************
+****
+
+
+NAME
+====
+
+   P_TECHNIQUE                             "technique"
+
+
+DEFINIERT IN
+============
+
+   /sys/weapon.h
+
+
+BESCHREIBUNG
+============
+
+   Die Technik(en), mit denen eine Waffe im Kampf eingesetzt werden
+   kann. Folgende Techniken stehen zur Verfuegung:
+
+           TQ_STROKE       Streichtechnik
+           TQ_THRASH       Schlagtechnik
+           TQ_THRUST       Stosstechnik
+           TQ_WHIP         Peitschtechnik
+
+   Die Techniken sind ebenfalls in <weapon.h> definiert und auf der
+   man-page 'techniken' naeher erlaeutert.
+
+
+BEMERKUNGEN
+===========
+
+   Man kann einer Waffe eine oder mehrere Techniken zuweisen.
+
+
+BEISPIELE
+=========
+
+   a) Eine Waffe, die nur mit einer Peitschtechnik eingesetzt wird,
+      also typischerweise eine Peitsche, aber auch ein Morgenstern:
+
+       SetProp(P_TECHNIQUE,TQ_WHIP);
+
+   b) Eine Waffe, die sowohl mit der Schlag- als auch der Stosstechnik
+      eingesetzt wird, also z.B. eine Hellebarde:
+
+       SetProp(P_TECHNIQUE,({TQ_THRASH,TQ_THRUST}));
+
+
+SIEHE AUCH
+==========
+
+   techniken, P_BALANCED_WEAPON, /std/weapon/combat.c
+
+
+LETZTE AeNDERUNG
+================
+
+15.02.2009, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_TMP_ATTACK_HOOK b/doc/sphinx/man/props/obsolete/P_TMP_ATTACK_HOOK
new file mode 100644
index 0000000..6bd5130
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_TMP_ATTACK_HOOK
@@ -0,0 +1,95 @@
+
+P_TMP_ATTACK_HOOK
+*****************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_ATTACK_HOOK
+
+
+NAME
+====
+
+   P_TMP_ATTACK_HOOK             "attack_hook"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mittels dieser Property koennen die Attacken eines Livings ggf.
+   abgebrochen werden noch bevor Waffen oder Skills zum ausgewertet
+   wurden.
+
+   Es wird an dem Living die Property als mindestens 3-elementiges Array:
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+
+   Der Methode wird als Parameter der Gegner uebergeben.
+
+   Gibt die Methode 0 als Rueckgabewert zurueck, wird die Attacke sofort
+   kommentarlos abgebrochen.
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIELE
+=========
+
+   *** der Spieler erhaelt eine Verwundung, die ihn manchmal behindert ***
+   if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_HOOK)) ||
+      sizeof(tmp)<3 || tmp[0]<=time()) {
+     TP->SetProp(P_TMP_ATTACK_HOOK,
+                 ({time()+3600, this_object(), "test_hurt"}));
+   ...
+
+   // die entsprechende Methode, die bei jedem Angriff ueber Attack()
+   // gerufen wird ...
+   int test_hurt(object enemy) {
+
+     // mit 10% Chance generell und 20% Chance bei groesseren Gegnern
+     // bricht der Angriff ab ... previous_object() ist natuerlich
+     // der Angreifer
+     if(!random(10) ||
+        (enemy->QueryProp(P_SIZE)>previous_object()->QueryProp(P_SIZE) &&
+         !random(5)) {
+
+        tell_object(previous_object(),
+          "Deine Wunde schmerzt dich zu sehr um anzugreifen.\n");
+        tell_room(environment(previous_object()),
+          previous_object()->Name(WER,1)+" zuckt vor Schmerzen zusammen.\n",
+          ({previous_object()}));
+        return 0;
+     }
+
+     // ansonsten geht der Angriff weiter
+     return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L)
+   Schutz:    Defend(L)
+   Verwandt:  InternalModifyAttack(L), P_TMP_ATTACK_MOD
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_DEFEND_HOOK
+   neue Hooks: std/hooks
+
+08.12.2008, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_TMP_ATTACK_MOD b/doc/sphinx/man/props/obsolete/P_TMP_ATTACK_MOD
new file mode 100644
index 0000000..df10409
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_TMP_ATTACK_MOD
@@ -0,0 +1,134 @@
+
+P_TMP_ATTACK_MOD
+****************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_ATTACK_MOD
+
+
+NAME
+====
+
+   P_TMP_ATTACK_MOD              "attack_mod"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mittels dieser Property koennen die Attacken eines Livings temporaer
+   veraendert werden.
+
+   Es wird an dem Living die Property als mindestens 3-elementiges Array
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+
+   Der Methode wird beim Aufruf ein Kopie des Mappings uebergeben, in dem
+   die bisherigen Werte des Angriffes vermerkt sind.
+   Aufbau von Mapping 'ainfo':
+   ([ SI_ENEMY :           object Angreifer,                  (-> Defend)
+      SI_SPELL :           0/1/array Spellparameter,          (-> Defend)
+      P_WEAPON :           - oder Waffe,
+      SI_SKILLDAMAGE_MSG:  string Angriffsmeldungsende an Raum,
+      SI_SKILLDAMAGE_MSG2: string Angriffsmeldungsende an Kaempfende,
+      SI_SKILLDAMAGE:      int Schaden in Zehntel HP (Skills bis auf Rasse
+                           drin!)                             (-> Defend),
+      SI_SKILLDAMAGE_TYPE: string/string* Schadenstypen,      (-> Defend)
+      P_WEAPON_TYPE:       string Waffentyp (combat.h),
+      P_WC:                - oder int WC der Waffe/Hand,
+      P_NR_HANDS:          - oder int Hands der Waffe/Hand,
+   ]);
+
+   Gibt die Methode:
+   - 0 oder kein Mapping zurueck, fuehrt das zum Abbruch der Attacke
+     -> da inzwischen Waffen abgefragt wurden, koennen schon Meldungen
+        von diesen ausgegeben worden sein
+   - ein leeres Mapping ( ([]) ) zurueck, fuehrt das zu keiner Modifikation
+   - ein Mapping mit veraenderten Werten zurueck, werden diese in das
+     Angriffsmapping kopiert
+     Die geaenderten Werte werden teilweise von SkillResTransfer() in
+     den eigentlichen Angriff uebernommen.
+
+
+BEMERKUNGEN
+===========
+
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Modifiers
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIELE
+=========
+
+   *** ein besonder heisser Segen modifiziert die Attacken des Spielers ***
+   int action_segen() {
+     ...
+     mixed *tmp;
+
+     // pruefen, ob nicht ein anderer Modifier existiert
+     if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_MOD)) ||
+        sizeof(tmp)<3 || tmp[0]<=time()) {
+
+       object wield;
+       wield=TP->QueryProp(P_WEAPON);
+
+       write(break_string(
+         "Der Priester der Flamme weiht "+
+         (wield?wield->name(WEN,1):"deine Haende")+".", 78));
+
+       // setzen des Modifiers .. 30-40 Sekunden gueltig
+       TP->SetProp(P_TMP_ATTACK_MOD,
+                    ({time()+30+random(10), this_object(), "modfun"}));
+      } else ...
+      ...
+    return 1;
+   }
+
+   // die eigentlich Methode, die waehrend des Angriffs gerufen wird
+   mapping modfun(mapping ainfo) {
+     mapping ret;
+
+     // Returnwert ist immer ein Mapping, damit die Attacke weitergeht
+     ret=m_allocate(0,1);
+
+     // magische Waffen oder Sprueche werden nicht verbessert
+     if(ainfo[P_WEAPON_TYPE]!=WT_MAGIC) {
+       // sonst Verbesserungen ... Feuer addieren ...
+       ret[SI_SKILLDAMAGE_TYPE]=(ainfo[SI_SKILLDAMAGE_TYPE]||({}))+
+                              ({DT_FIRE});
+       // ... und bei Waffe Meldungen anpassen
+       if(ainfo[P_WEAPON]) {
+         ret[SI_SKILLDAMAGE_MSG]=
+           " mit sengendem "+ainfo[P_WEAPON]->name(RAW);
+         ret[SI_SKILLDAMAGE_MSG2]=
+           " mit sengendem "+ainfo[P_WEAPON]->name(RAW);
+       }
+     }
+
+     return ret;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L)
+   Schutz:    Defend(L)
+   Verwandt:  InternalModifyAttack(L)
+              P_TMP_ATTACK_HOOK
+              P_TMP_DEFEND_HOOK
+   Sonstiges: SkillResTransfer(L)
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK
+
+10.Feb 2005 Gloinson
diff --git a/doc/sphinx/man/props/obsolete/P_TMP_DEFEND_HOOK b/doc/sphinx/man/props/obsolete/P_TMP_DEFEND_HOOK
new file mode 100644
index 0000000..f29d342
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_TMP_DEFEND_HOOK
@@ -0,0 +1,131 @@
+
+P_TMP_DEFEND_HOOK
+*****************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_DEFEND_HOOK
+
+
+NAME
+====
+
+   P_TMP_DEFEND_HOOK             "defend_hook"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mittels dieser Property koennen die Abwehren eines Livings temporaer
+   veraendert werden.
+
+   Es wird an dem Living die Property als mindestens 3-elementiges Array
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des Defend() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+
+   Der Methode werden die Parameter der Defend() uebergeben:
+   int dam, mixed dam_type, mixed spell, object enemy
+   - spell ist definitiv ein Mapping - ein an Defend() uebergebener
+     int-Wert wurde aequivalent umgesetzt.
+   - dam_type ist definitiv ein Array von Schadenswerten oder einem Wert
+
+   Zudem findet der Aufruf der Methode nach dem Abarbeiten der P_DEFENDERS
+   statt, diese koennen also weitere Modifikationen vorgenommen haben.
+
+   Gibt die Funktion:
+   - 0 zurueck, wird Defend() abgebrochen (und damit der Schaden voellig
+     abgefangen) - nur noch die Flucht wird geprueft
+   - ein 3-elementiges Array ({schaden, schadenstypen, spell}) zurueck,
+     werden diese Werte in der Defend() an Stelle der uebergebenen Werte
+     verwendet
+   - weder noch zurueck, wird das Ergebnis ignoriert und die Defend laeuft
+     regulaer weiter
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIEL
+========
+
+   *** ein gruener Schutzzauber ***
+   // Setzen der Prop
+   ...
+   tmp=TP->QueryProp(P_TMP_DEFEND_HOOK);
+
+   // ein etwas ausfuehrlicher Check, ob wir ueberschreiben koennen,
+   // Existenz && Gueltigkeit
+   if(pointerp(tmp) && sizeof(tmp) && intp(tmp[0]) && (time()<tmp[0]))
+    write("Der Zauber klappt nicht!\n");
+   else {
+    // der Zauber gilt eine Stunde
+    TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
+    write("Ein Zauber legt sich auf dich.\n");
+   }
+   ...
+
+   // die gerufene Methode
+   mixed abwehrfun(int dam, string* dam_type, mapping spell, object en) {
+    // keine rekursiven Schaeden abfangen ... mindestens ein magischer
+    // muss auch dabei sein
+    if((!mappingp(spell) || !spell[SP_RECURSIVE]) &&
+       sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+
+     // mit 10% Whkeit schuetzt der Zauber total
+     if(!random(10)) {
+      tell_object(previous_object(),
+        "Dein Zauber gleisst rund um dich gruen auf.\n");
+      tell_room(environment(previous_object()), break_string(
+        previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
+        previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+        ({previous_object()}));
+
+      // manchmal geht der Zauber dabei endgueltig kaputt
+      if(!random(10)) previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
+
+      return 0;                       // volles Abfangen des Angriffs
+     }
+
+     // der Zauber schuetzt auf jeden Fall immer ein bischen
+     tell_object(previous_object(),
+       "Dein Zauber flackert rund um dich gruen auf.\n");
+     tell_room(environment(previous_object()), break_string(
+       previous_object()->Name(WESSEN)+" Haut flackert rund um "+
+       previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+       ({previous_object()}));
+     dam=(7+random(2))*dam/10;        // Schaden reduzieren
+
+     return(({dam, dam_type, spell}));
+    }
+
+    // der Zauber schuetzt dann gar nicht ...
+    return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Angriff:   Attack(L)
+   Schutz:    Defend(L)
+   Verwandt:  InternalModifyDefend(L), P_TMP_ATTACK_MOD
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
+   neue Hooks: std/hooks
+
+08.12.2008, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_TMP_DIE_HOOK b/doc/sphinx/man/props/obsolete/P_TMP_DIE_HOOK
new file mode 100644
index 0000000..f4008cb
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_TMP_DIE_HOOK
@@ -0,0 +1,91 @@
+
+P_TMP_DIE_HOOK
+**************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+************************************* P_TMP_DIE_HOOK
+
+
+NAME
+====
+
+   P_TMP_DIE_HOOK                "die_hook"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mittels dieser Property kann der Tod eines Livings abgewendet werden.
+
+   Es wird an dem Living die Property als mindestens 3-elementiges Array
+   ({zeitpunkt, objekt, methode, ...})
+   gesetzt und die Methode 'methode' wird dann waehrend des die() des
+   Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
+   Bei Geistern wird der Hook nicht gerufen.
+
+   Der Methode wird ein int uebergeben, ob das Living Opfer von Gift
+   (P_POISON) war.
+
+   Gibt die Funktion einen Wert != 0 zurueck, wird die() sofort abgebrochen
+   und das Living stirbt nicht.
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+BEISPIELE
+=========
+
+   *** ein besonderer Giftschutz .. wirkt beim Tod ***
+   // pruefen, ob nicht ein anderer Modifier existiert
+   if(!pointerp(tmp=TP->QueryProp(P_TMP_DIE_HOOK)) ||
+      sizeof(tmp)<3 || tmp[0]<=time()) {
+     TP->SetProp(P_TMP_DIE_HOOK,
+                 ({time()+120+random(10), this_object(), "prevent_die"}));
+
+   // die gerufene Methode
+   int prevent_die(int poison) {
+     int ret;
+
+     if(poison) {
+       tell_object(previous_object(),
+         "Ein Zauber reinigt im Moment des Todes dein Blut!\n");
+       tell_object(environment(previous_object()),
+         previous_object()->Name(WER,1)+" wird von Lichtern umhuellt.\n",
+         ({previous_object()}));
+
+       ret=1;
+     }
+
+     // wir helfen nur einmal ... und ein Tod vernichtet die Hilfe auch
+     previous_object()->SetProp(P_TMP_DIE_HOOK, 0);
+
+     return ret;
+   }
+
+
+SIEHE AUCH
+==========
+
+   Tod:       die(L)
+   Sonstiges: P_POISON, P_KILLS, P_GHOST
+   Hooks:     P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK, P_TMP_DEFEND_HOOK
+   neue Hooks: std/hooks
+
+08.12.2008, Zesstra
diff --git a/doc/sphinx/man/props/obsolete/P_TMP_MOVE_HOOK b/doc/sphinx/man/props/obsolete/P_TMP_MOVE_HOOK
new file mode 100644
index 0000000..8f1aa77
--- /dev/null
+++ b/doc/sphinx/man/props/obsolete/P_TMP_MOVE_HOOK
@@ -0,0 +1,65 @@
+
+P_TMP_MOVE_HOOK
+***************
+
+********************* VERALTETE PROPERTY
+****************************** * Diese Property ist veraltet. Bitte
+nicht mehr in neuem Code nutzen. * **********************************
+*************************************
+
+
+NAME
+====
+
+   P_TMP_MOVE_HOOK             "move_hook"
+
+
+DEFINIERT IN
+============
+
+   /sys/new_skills.h
+
+
+BESCHREIBUNG
+============
+
+   Mindestens 3-elementiges Array ({zeitpunkt, objekt, funktion, ...}).
+   Die Funktion wird im 'objekt' mit den gleichen Parametern wie move()
+   nach der Abfrage auf P_NO_TPORT aufgerufen, wenn der 'zeitpunkt'
+   noch nicht ueberschritten ist. Wenn die Funktion etwas anderes als ein
+   5-elementiges Array ({dest, methods, direction, textout, textin})
+   oder -1 zurueckgibt, wird move() normal ausgefuehrt, ansonsten werden die
+   5 move-Parameter durch die Array-Eintraege ersetzt bzw. wird bei einem
+   Rueckgabewert von -1 das move() abgebrochen. In letzterem Fall ist
+   die Funktion dafuer verantwortlich, eine entspr. Meldung an den
+   Spieler auszugeben!
+
+
+HINWEIS
+=======
+
+   Falls man einem Spieler einen Move-Hook setzt, ist es ratsam, im
+   Move-Hook zu pruefen, ob das Spielerobjekt nach Abarbeitung der Hook-
+   Funktion noch lebt. Ansonsten wird ein doppeltes move() ausgefuehrt:
+   in den Todesraum und direkt wieder zurueck zur Leiche.
+
+
+BEMERKUNGEN
+===========
+
+   - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
+   - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+     Property auf 0 gesetzt
+   - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+     pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
+     im Code anderer und ist andererseits unfair gegenueber ihnen
+
+
+SIEHE AUCH
+==========
+
+   Bewegung:  move(L), NotifyMove(), PreventMove()
+   Hooks:     P_TMP_DIE_HOOK, P_TMP_DEFEND_HOOK, P_TMP_ATTACK_HOOK
+   neue Hooks: std/hooks
+
+08.12.2008, Zesstra
diff --git a/doc/sphinx/man/props/skill_info_liste b/doc/sphinx/man/props/skill_info_liste
new file mode 100644
index 0000000..a8ad089
--- /dev/null
+++ b/doc/sphinx/man/props/skill_info_liste
@@ -0,0 +1,355 @@
+
+skill_info_liste
+****************
+
+
+SI_*
+====
+
+
+DEFINIERT IN
+============
+
+   /sys/newskills.h
+
+
+BESCHREIBUNG
+============
+
+   Die folgende Liste der SI-Typen ist grob nach Gueltigkeit fuer Skills
+   und Spells sortiert.
+
+
+
+   Anwendungsorte der SI_-Werte sind:
+   - /std/living/combat und von dort gerufene Skills (Kampf)
+   - /std/gilden_ob und in Gilden lernbare Spells/Skills
+   - /std/spellbook und von Spellbooks ausgefuehrte Spells
+   - /std/living/life und von dort gerufene Skills (Alkohol)
+   - /std/shells/* und entsprechende Rassenskills
+
+   Im Skillsystem unter /std/living/skills wird vor auf Informationen
+   aus dem Teil #1 Ruecksicht genommen. Einige dieser Werte
+   werden auch permanent im Spieler gespeichert (wie zB die
+   SI_SKILLABILITY).
+
+AKTUELLE LISTE: (5. Oktober 2011)
+   #1 Skills und Spells:
+      SI_SKILLFUNC: string
+         Beinhaltet den Namen der Methode, die die eigentliche
+         Funktionalitaet des Skills/Spells implementiert. Falls nicht
+         angegeben, wird bei Spells durch UseSpell() das Verb, das der
+         Spieler eingegeben hat, als Spell-Methodenname angenommen. Im
+         Gildenobjekt kann hier abweichend von Spell-Namen stehen, wie
+         die Spellfunktion im Spellbook heisst.
+
+      SI_CLOSURE: closure
+         Optimiert den Zugriff fuer den internen Gebrauch, indem die
+         gefundene Spell/Skillfunktion darin direkt gespeichert wird
+         und so lange gueltig ist, bis das/die Objekt(e)/Closure(s)
+         zerstoert sind. Kann theoretisch auch fuer externe Skills
+         durch (Autoload-)Objekte benutzt werden.
+
+      SI_SKILLABILITY: int
+         Faehigkeit, den Spell/Skill zu benutzen. Normal ist von
+         -MAX_ABILITY bis MAX_ABILITY.
+
+      SI_SKILLDAMAGE_TYPE: string*
+         Art des Schadens eines Angriffs: siehe Schadenstypen in
+         /sys/combat.h
+
+      SI_SKILLDAMAGE_MSG: string
+         Meldung anstatt der Waffe oder Haende-Meldung.
+
+      SI_SKILLDAMAGE_MSG2: string
+         Meldung anstatt der Waffe oder Haende-Meldung fuer den Raum.
+
+      SI_INHERIT: string
+         Enthaelt den Namen des Skills/Spells, von dem geerbt wird.
+         Das bedeutet einerseits, das LearnSkill() auch diesen
+         uebergeordneten Skill beeinflusst und andererseits, dass bei
+         Skills auch dieser uebergeordnete Skill im Rahmen einer
+         Skill-Anwendung gerufen wird.
+
+      SI_DIFFICULTY: int / [Spells: mixed]
+         Schwierigkeit eines Skills/Spells. Beeinflusst die jeweils
+         oberen Schranken fuer das Lernen eines Skills/Spells in
+         Abhaengigkeit von Spielerlevel. Wenn in einem Spell-Info-
+         Mapping kein Wert steht wird bei Spells automatisch
+         SI_SPELLCOST genommen, der Wert im Spell-Info-Mapping geht
+         beim Lernen aber immer vor Parametern.
+
+      FACTOR(SI_DIFFICULTY): int / mixed OFFSET(SI_DIFFICULTY): int /
+      mixed
+
+         Nur fuer Spellbooks/Spells. Der mixed-Parameter kann
+         Funktionen enthalten. Siehe unten bei SI_SPELLCOST.
+
+      SI_LASTLIGHT: int
+         Zeitpunkt, bis wann der Standardskills SK_NIGHTVISION den
+         Spieler sehen laesst.
+
+      SI_TESTFLAG: int
+         Wenn gesetzt, dann soll der Skill nicht genutzt, sondern nur
+         getestet werden, ob er erfolgreich waere. Entspricht also in
+         etwa dem Aufruf von SpellSuccess() in Spellbooks, wird aber
+         bei UseSkill() als Skill-Parameter uebergeben. Der Skill muss
+         entsprechend implementiert sein!
+
+      SI_GUILD: string
+         Angabe der Gilde, aus der der Skill stammt. Sinnvoll, wenn
+         der Skill nicht aus der aktuellen P_GUILD stammt. Fuer
+         generelle Skills/Spells zB waere das "ANY". Gilt nicht fuer
+         Spells!
+
+      SI_ENEMY: object
+         Aktuelles Feindesobjekt, wird bei Skill-Anwendung aus dem
+         Kampf heraus von std/living/combat.c an den Skill uebergeben.
+         Beispiel: Standardwaffenskills, SK_MAGIC_DEFENSE,
+         SK_MAGIC_ATTACK,
+
+            SK_TWOHANDED, SK_SPELL_DEFEND, SK_INFORM_DEFEND und
+            SK_DEFEND_OTHER.
+
+      SI_FRIEND: object
+         Zu verteidigendes Freundesobjekt, wird bei Skill-Anwendung
+         aus dem Kampf heraus von std/living/combat.c an den Skill
+         uebergeben. Beispiele: SK_INFORM_DEFEND und SK_DEFEND_OTHER.
+
+      SI_MAGIC_TYPE: string*
+         Enthaelt ein Array der Magietypen, die zum Einsatz kommen.
+         Die Angabe geschieht zB im Spellbook und beeinflusst
+         SpellDefend().
+
+      SI_LAST_USE: int (eventuell obsolet)
+         Letzte Nutzung des Skills.
+
+      SI_LEARN_PROB: int (eventuell obsolet)
+         Lernwahrscheinlichkeit.
+
+      SI_SKILLDURATION: int
+         Dauer des Skills/Spells. Momentan nicht allzu verbreitet in
+         Nutzung.
+
+   #2 nur fuer Spells:
+      SI_SPELLBOOK: string
+         Kann direkt das enthaltende Spellbook fuer einen Spell
+         enthalten.
+
+      SM_RACE: mapping
+         Mapping, das als Key die Rasse und als Value ein Mapping X
+         enthaelt. Dieses Mapping X wird direkt zu sinfo hinzugefuegt
+         und ueberschreibt damit bei Bedarf Defaultwerte durch
+         rassenspezifische Werte.
+
+      SI_SPELLCOST: int / mixed FACTOR(SI_SPELLCOST): int / mixed
+      OFFSET(SI_SPELLCOST): int / mixed
+
+         Beinhaltet die Werte, die fuer die Berechnung der Spellkosten
+         zustaendig sind. Dabei gilt: Realkosten = OFFSET(COST) +
+         (COST * FACTOR(COST))/100 Die einzelnen Eintraege koennen
+         anstatt eines fixen Wertes auch den Verweis auch eine
+         Funktion in Form von Closure/Methodenname/Array mit
+         Objekt/Objektname und Methodenname enthalten. Siehe dazu auch
+         execute_anything().
+
+      SI_TIME_MSG: string
+         Meldung, die dem Spieler mitteilt, dass er noch nicht wieder
+         einen Spell casten kann. Falls dieser Eintrag nicht gesetzt
+         ist, wird ein Standardtext ausgegeben.
+
+      SI_SP_LOW_MSG: string
+         Meldung, die dem Spieler mitteilt, dass er zu wenige
+         Konzentrationspunkte besitzt, um den Spell zu casten. Falls
+         dieser Eintrag nicht gesetzt ist, wird ein Standardtext
+         ausgegeben.
+
+      SI_PREPARE_MSG: string
+         Meldung, die dem Spieler ausgegeben werden soll, wenn er
+         einen Spell vorbereitet. Ansonsten wird ein Standardtext
+         ausgegeben.
+
+      SI_PREPARE_BUSY_MSG: string
+         Meldung, die dem Spieler ausgegeben werden soll, wenn er
+         schon diesen Spell vorbereitet. Ansonsten wird ein
+         Standardtext ausgegeben.
+
+      SI_PREPARE_ABORT_MSG: string
+         Meldung, die dem Spieler ausgegeben werden soll, wenn er die
+         Vorbereitung dieses Spells durch einen anderen Spell
+         unterbricht. Ansonsten wird ein Standardtext ausgegeben.
+
+      SI_NOMAGIC: int
+         Wert zwischen 0 und 100 (oder mehr), der gegen die P_NOMAGIC-
+         Wirkung eines Raumes wirkt. Je hoeher der Wert ist, desto
+         unwahrscheinlicher ist es, dass ein Raum den Spell durch
+         Antimagie stoert. Ein Raum sollte nur Werte zwischen 0 und
+         100 gesetzt haben. Ist der Wert des Raums groesser als der
+         hier angegeben, dann blockiert er Magie mit einer gewissen
+         eben seiner angegebenen Wahrscheinlichkeit.
+
+      SI_NOMAGIC_MSG: string
+         Meldung, die bei Fehlschlag durch P_NOMAGIC des Raumes
+         ausgegeben wird. Ansonsten wird ein Standardtext ausgegeben.
+
+      SI_SPELLFATIGUE: int / mixed FACTOR(SI_SPELLFATIGUE): int /
+      mixed OFFSET(SI_SPELLFATIGUE): int / mixed
+
+         Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt
+         werden. Die Berechnung und die moeglichen Angaben (Closure
+         etc.) sind identisch zu SI_SPELLCOST. Das Spellbook gibt bei
+         Nicht-Wieder-Bereitschaft SI_TIME_MSG aus.
+
+      SI_X_SPELLFATIGUE: mapping mit ([string key: int val])
+         Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt
+         werden. Spellbook-Casten: Mapping wird durch Aufruf von
+         CheckSpellFatigue(<key>) am Caster gefiltert. Nur wenn das
+         resultierende Mapping leer ist (kein <key> hat einen
+         gueltigen Fatigue-Eintrag), ist Spell castbar, sonst Ausgabe
+         von SI_TIME_MSG. Nach Spellbook-Casten: Setzen der Fatigue
+         fuer alle <val> > 0 mit <key>.
+
+      SI_SKILLLEARN: int / mixed FACTOR(SI_SKILLLEARN): int / mixed
+      OFFSET(SI_SKILLLEARN): int / mixed
+
+         Werte, die fuer die Berechnung der Lerngeschwindigkeit
+         benutzt werden, normalerweise pro A_INT/2 je 0.01% (also 1
+         von MAX_ABILITY). Die Berechnung und die moeglichen Angaben
+         (Closure etc.) sind identisch zu SI_SPELLCOST.
+
+      SI_LEARN_ATTRIBUTE: mapping
+         Mapping, welches die Attribute, nach denen gelernt werden
+         soll als Keys enthaelt. Der Value legt die Gewichtung fest,
+         denn bei mehreren Attributen wird ein Mittelwert gebildet.
+         Der Normalfall entspraeche ([A_INT: 1]) fuer
+         SI_LEARN_ATTRIBUTE.
+
+      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.
+
+         SI_SKILLARG: string Beinhaltet den Text, den der Spieler nach
+         dem Spellkommando eingegeben hat. Z.B. stuende bei
+         "krallenschlag ork 2" der Text "ork 2" im Parameter.
+
+      SI_SKILLRESTR_USE: mixed
+         Einschraenkungen fuer das Nutzen des Spells. Wird
+         normalerweise direkt im Spellbook fuer den Spell eingetragen.
+         Die einzelnen Moeglichkeiten werden in der manpage zu
+         "check_restrictions" erlaeutert.
+
+      SI_SKILLRESTR_LEARN: mixed
+         Einschraenkungen fuer das Lernen des Spells. Wird
+         normalerweise direkt im Gildenobjekt fuer den Spell
+         eingetragen. Die einzelnen Moeglichkeiten werden in der
+         manpage zu "check_restrictions" erlaeutert.
+
+      SI_SKILLINFO: string SI_SKILLINFO_LONG: string
+
+         Beschreibung des Spells. Wird im Gildenobjekt eingetragen und
+         SI_SKILLINFO wird von SkillListe angezeigt.
+
+      SI_SKILLDAMAGE: int / mixed FACTOR(SI_SKILLDAMAGE): int / mixed
+      OFFSET(SI_SKILLDAMAGE): int / mixed
+
+         Werte, die fuer die Schadenshoehenberechnung des Spells
+         benutzt werden (random ueber den Gesamtwert normalerweise).
+         Die Berechnung und die moeglichen Angaben (Closure etc.) sind
+         identisch zu SI_SPELLCOST.
+
+      SI_SKILLDAMAGE_BY_ROW
+         Ein Mapping mit Boni fuer den Angriff aus bestimmten
+         Kampfreihen. Funktioniert nur bei Verwendung von
+         TryDefaultAttackSpell-Spells aus dem Spellbook. Der Key steht
+         fuer eine bestimmte Reihe, sein Wert fuer den randomisierten
+         Bonus fuer Lebewesen, die aus dieser Reihe casten.
+
+      OFFSET(SI_SKILLDAMAGE_BY_ROW)
+         Ein Mapping mit fixem Wert fuer Row-Boni im Kampf.
+
+         Beispiel: AddSpell("feuerball", 20,
+            ([SI_SKILLDAMAGE:50,
+               OFFSET(SI_SKILLDAMAGE):100,
+               SI_SKILLDAMAGE_BY_ROW:([2:40,3:20}),
+               OFFSET(SI_SKILLDAMAGE_BY_ROW):([2:20]), ...
+
+         gibt
+            Reihe 1: random(50)+100; Reihe 2:
+            random(50)+100+random(40)+20 Reihe 3:
+            random(50)+100+random(20)
+
+         ACHTUNG: Hier gilt nicht die selbe Struktur wie bei
+         SI_SPELLCOST!
+
+      SI_SPELL: mapping
+         Dieser Eintrag enthaelt verschiedene Unterwerte, die den
+         Spell gerade fuer Angriffs-Spells genauer beschreiben. Siehe
+         Defend() fuer eine Beschreibung der verschiedenen Eintraege
+         (die so auch in das Spellbook uebernommen werden koennen).
+
+      SI_COLLATERAL_DAMAGE: int
+         Hiermit kann man einen Prozentwert von SI_SKILLDAMAGE
+         (inklusive Offsets und Factor) fuer Kollateralschaden an
+         Freunden im definierten Bereich eines Flaechenspells
+         (TryGlobalAttackSpell()) angeben. 10 bedeutet bei
+         OFFSET(SI_SKILLDAMAGE)=100 zB 10% von 100 = 10 = 1 LP an mit
+         reduce_hit_points() verursachtem Schaden.
+
+      SI_NUMBER_ENEMIES, SI_NUMBER_FRIENDS: int
+         Wird von TryGlobalAttackSpell() im Spell gesetzt und enthaelt
+         die Anzahl der im angegebenen Bereich befindlichen Feinde und
+         Freunde. Ist dementsprechend von informativem Nutzen fuer den
+         Angegriffenen und das Spellbook NACH Aufruf von
+         TryGlobalAttackSpell().
+
+      SI_DISTANCE, SI_WIDTH, SI_DEPTH: int
+         Limitiert die Entfernung, Tiefen und Breite der Wirkung eines
+         TryGlobalAttackSpell()
+
+      SI_SKILLHEAL: int
+         Konvention fuer Spells im Spellbook, dort den Heilwert zu
+         hinterlegen, hat keine Auswirkungen unter /std/.
+
+      SI_USR: mixed
+         Fuer selbst definierte Infos, spellbookabhaengig.
+
+      SI_PREPARE_TIME: int
+         Dauer der Zeit fuer zu praeparierende Spells.
+
+      SI_ATTACK_BUSY_MSG: string
+         Meldung, die dem Spieler mitteilt, dass er schon zu
+         beschaeftigt mit einem Angriff ist, um einen Spell zu casten.
+         Falls dieser Eintrag nicht gesetzt ist, wird  ein
+         Standardtext ausgegeben.
+
+      SI_NO_ATTACK_BUSY: int
+         Enthaelt als Flag NO_ATTACK_BUSY_QUERY wenn der Spell NICHT
+         wie eine Spezialwaffe die Aktionen einschraenkt. Siehe
+         P_ATTACK_BUSY.
+
+      SI_ATTACK_BUSY_AMOUNT: int
+         Menge des P_ATTACK_BUSY fuer diesen Spell. Falls dieser Wert
+         nicht gesetzt ist, aber auch SI_NO_ATTACK_BUSY nicht mit
+         NO_ATTACK_BUSY_QUERY ausgezeichnet ist wird 1 angenommen.
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung
+   * Properties:   P_NEWSKILLS
+   Spellbook:      UseSpell, Learn, SpellSuccess
+   Gilden:         gilden-doku
+   Kampf:          Defend
+
+7. Nov 2012 Gloinson
diff --git a/doc/sphinx/man/sefun.index b/doc/sphinx/man/sefun.index
new file mode 100644
index 0000000..6d9564f
--- /dev/null
+++ b/doc/sphinx/man/sefun.index
@@ -0,0 +1,137 @@
+
+sefuns (simulated efuns)
+************************
+
+sefuns sind Funktionen, die aehnlich wie echte efuns im Driver allen
+Objekten (ausser dem Masterobjekt) zur Verfuegung stehen ohne dass die
+explizit geerbt werden muessen. Sie sind allerdings in LPC
+implementiert und damit langsamer als efuns.
+
+Es ist moeglich, sefuns mit demselben Namen wie efuns zu erstellen,
+diese wird dann anstelle der efun gerufen. Will man ausnahmsweise aber
+die efun mit dem Namen rufen, so kann dies mit der Syntax
+"efun::function()" erreichen.
+
+Verzeichnis der dokumentierten sefuns im Morgengrauen:
+
+* CountUp()
+
+* _notify_fail()
+
+* break_string()
+
+* broken_count_bits()
+
+* cindent()
+
+* debug_info()
+
+* deep_present()
+
+* dtime()
+
+* dump_netdead()
+
+* enable_commands()
+
+* file_time()
+
+* find_living()
+
+* find_livings()
+
+* find_netdead()
+
+* find_player()
+
+* getuuid()
+
+* iso2ascii()
+
+* log_file()
+
+* lowerchar()
+
+* lowerstring()
+
+* m_copy_delete()
+
+* match_living()
+
+* md5()
+
+* mkdirp()
+
+* notify_fail()
+
+* object_info()
+
+* old_explode()
+
+* process_call()
+
+* process_string()
+
+* query_editing()
+
+* query_idle()
+
+* query_input_pending()
+
+* query_ip_name()
+
+* query_ip_number()
+
+* query_limits()
+
+* query_mud_port()
+
+* query_next_reset()
+
+* query_once_interactive()
+
+* query_shadowing()
+
+* query_snoop()
+
+* query_wiz_grp()
+
+* query_wiz_level()
+
+* read_data()
+
+* replace_personal()
+
+* restore_object()
+
+* save_object()
+
+* send_room()
+
+* set_heart_beat()
+
+* set_light()
+
+* set_living_name()
+
+* set_object_heart_beat()
+
+* sha1()
+
+* shadow()
+
+* shout()
+
+* time2string()
+
+* update_actions()
+
+* upperstring()
+
+* uptime()
+
+* wizlist()
+
+* wizlist_info()
+
+* write_data()
diff --git a/doc/sphinx/man/sefun/CountUp b/doc/sphinx/man/sefun/CountUp
new file mode 100644
index 0000000..9e55d69
--- /dev/null
+++ b/doc/sphinx/man/sefun/CountUp
@@ -0,0 +1,40 @@
+
+CountUp()
+*********
+
+
+FUNKTION
+========
+
+   public varargs string CountUp( string *s, string sep, string lastsep );
+
+
+ARGUMENTE
+=========
+
+         *s
+           Array von Strings mit Woertern.
+   sep
+     String, der zwischen den Woerten in der Aufzaehlung eingefuegt wird.
+     Standard: ", "
+   lastsep
+     String, der zwischen dem vorletzten und letzten Element eingefuegt wird.
+     Standard: " und "
+
+
+BESCHREIBUNG
+============
+
+   Die Woerter Wort_1 bis Wort_n aus dem Stringaray werden als
+   Aufzaehlung in der Form
+     Wort_1<sep>Wort_2, ... Wort_n-1<lastsep>Wort_n
+   zusammengesetzt. Mit Standardwerten also:
+     Wort_1, Wort_2, ... Wort_n-1 und Wort_n
+
+
+RUeCKGABEWERT
+=============
+
+   String als Aufzaehlung der einzelnen Woerter.
+
+15.03.2008, Zesstra
diff --git a/doc/sphinx/man/sefun/_notify_fail b/doc/sphinx/man/sefun/_notify_fail
new file mode 100644
index 0000000..a9801ef
--- /dev/null
+++ b/doc/sphinx/man/sefun/_notify_fail
@@ -0,0 +1,35 @@
+
+_notify_fail()
+**************
+
+simul_efun::_notify_fail(E)
+
+
+FUNKTION
+========
+
+   void _notify_fail(string str)
+
+
+ARGUMENTE
+=========
+
+   str
+      umgebrochener Fehlermeldungsstring
+
+
+BESCHREIBUNG
+============
+
+   Identisches Verhalten zu notify_fail(E), bis darauf, dass bei bereits
+   gesetzter Fehlermeldung _keine_ neue Fehlermeldung gesetzt wird.
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), P_ACTUAL_NOTIFY_FAIL
+   add_action(E), AddCmd(L), AddAction(L),
+   query_verb(E)
+
+24 Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/sefun/break_string b/doc/sphinx/man/sefun/break_string
new file mode 100644
index 0000000..8e3017d
--- /dev/null
+++ b/doc/sphinx/man/sefun/break_string
@@ -0,0 +1,112 @@
+
+break_string()
+**************
+
+
+FUNKTION
+========
+
+   string break_string(string str)
+   string break_string(string str, int width)
+   string break_string(string str, int width, string indent)
+   string break_string(string str, int width, int space)
+   string break_string(string str, int width, string indent, int flags)
+   string break_string(string str, int width, int space, int flags)
+
+
+ARGUMENTE
+=========
+
+   str    - umzubrechender String
+   width  - optional: maximale Zeilenlaenge (default 78)
+   indent - optional: String, der vor jeder umgebrochenen Zeile erscheint
+   space  - optional: Anzahl der Leerzeichen vor jeder umgebrochenen Zeile
+   flags  - optional: hiermit laesst sich das Verhalten von break_string()
+            aendern; moegliche Flags siehe Punkt 'Beschreibung'
+
+
+BESCHREIBUNG
+============
+
+   In der ersten Form wird der String 'str' durch Einfuegen von "\n" so um-
+   gebrochen, dass bei einer anschliessenden Ausgabe keine Zeile laenger
+   als 'width' Zeichen ist. Eventuell schon in 'str' vorhandene "\n" werden
+   dabei vorher entfernt.
+
+   Gibt man zusaetzlich noch einen String 'indent' an, so wird dieser vor
+   jede der umgebrochenen Zeilen gesetzt.
+
+   Analog wird bei der Angabe der Zahl 'space' ein String mit 'space' Leer-
+   zeichen vor jede umgebrochene Zeile gesetzt.
+
+   Zusaetzlich gibt es folgende optionale Flags, die man beliebig kombinieren
+   kann:
+
+       BS_LEAVE_MY_LFS  -  schon im Text vorhandene "\n" werden beibehalten
+       BS_SINGLE_SPACE  -  doppelte Leerzeichen sowie Leerzeichen nach Zeilen-
+                           umbruechen werden entfernt
+       BS_BLOCK         -  der Text wird im Blocksatz formatiert
+       BS_NO_PARINDENT  -  bei Blocksatz mit vorgegebenen Zeilenumbruechen
+                           (BS_BLOCK|BS_LEAVE_MY_LFS) werden Zeilen nach "\n"
+                           normalerweise mit einem Leerzeichen begonnen.
+                           Um das Einfuegen des fuehrenden Leerzeichens zu
+                           unterdruecken, muss BS_NO_PARINDENT angegeben werden
+       BS_INDENT_ONCE   -  die erste Zeile des Textes wird mit vorangestelltem
+                           'indent' ausgegeben; alle folgenden Zeilen bekommen
+                           einen Leerstring vorangestellt
+       BS_PREPEND_INDENT - der Ident wird dem Text vorangestellt sofern der
+                           Indent + Text laenger als eine Zeile ist. Der Text
+                           wird um ein Leerzeichen eingerueckt, was mittels
+                           BS_NO_PARINDENT verhindert werden kann.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgebrochene Text.
+
+   Laufzeit-Fehler, wenn der Indent laenger ist als die vorgegebene Breite.
+
+
+BEISPIELE
+=========
+
+   write(break_string("Dies ist ein laengerer Text. Nur so als Beispiel.",27));
+
+       => Dies ist ein laengerer
+          Text. Nur so als Beispiel.
+
+   write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: "));
+
+       => Wargon sagt: Mit indent sieht
+          Wargon sagt: das so aus
+
+   write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: ",
+                       BS_INDENT_ONCE));
+
+       => Wargon sagt: Mit indent sieht
+                       das so aus
+
+   write(break_string("Mit Leerzeichen sieht das so aus", 30, 2));
+
+       =>   Mit Leerzeichen sieht das so
+            aus...
+
+   write(break_string("Ich will es\naber vorformatiert!",60,
+                       "Wargon sagt: ", BS_LEAVE_MY_LFS));
+
+       => Wargon sagt: Ich will es
+          Wargon sagt: aber vorformatiert!
+
+   write(break_string("Ich will es\naber vorformatiert!",30,
+                       "Wargon sagt: ", BS_PREPEND_INDENT));
+
+       => Wargon sagt:
+           Ich will es aber
+           vorformatiert!
+
+
+SIEHE AUCH
+==========
+
+   senderwiederholung
diff --git a/doc/sphinx/man/sefun/broken_count_bits b/doc/sphinx/man/sefun/broken_count_bits
new file mode 100644
index 0000000..de01e96
--- /dev/null
+++ b/doc/sphinx/man/sefun/broken_count_bits
@@ -0,0 +1,48 @@
+
+broken_count_bits()
+*******************
+
+
+SYNOPSIS
+========
+
+   int count_bits (string str)
+
+
+DESTRIPTION
+===========
+
+   Count the number of set bits in bitstring <str> and return the number
+   as result.
+
+
+NOTE
+====
+
+   Bitstrings store 6 Bits per Character. Consequently, the functions for
+   manipulating bitstrings (see below) do generally not work on most
+   strings. An exception is this (s)efun. It accepts strings which are
+   not correct bitstrings (like getuid(PL)), BUT: It does NOT work
+   correctly on them! The results are NOT the correct number of bits!
+   Additionally, count_bits() in LDMud rejects such strings with an error
+   instead of returning false results, as all the other functions for
+   bitstrings do as well.
+
+
+EXAMPLES
+========
+
+   string s;
+
+   s = set_bit("", 3); s = set_bit(s, 15);
+
+   count_bits(s) --> returns 2
+
+
+SEE ALSO
+========
+
+   clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
+   or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
+
+19.12.2006, Zesstra
diff --git a/doc/sphinx/man/sefun/cindent b/doc/sphinx/man/sefun/cindent
new file mode 100644
index 0000000..e0e16af
--- /dev/null
+++ b/doc/sphinx/man/sefun/cindent
@@ -0,0 +1,22 @@
+
+cindent()
+*********
+
+
+SYNOPSIS
+========
+
+   int cindent(string file)
+
+
+DESCRIPTION
+===========
+
+   Indent a file using an LPC-enhanced version of the GNU indent
+   program, which is modelled after the Berkeley indent(1).
+
+
+SEE ALSO
+========
+
+   ed(E)
diff --git a/doc/sphinx/man/sefun/debug_info b/doc/sphinx/man/sefun/debug_info
new file mode 100644
index 0000000..02e02b8
--- /dev/null
+++ b/doc/sphinx/man/sefun/debug_info
@@ -0,0 +1,508 @@
+
+debug_info()
+************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <debug_info.h>
+
+   mixed debug_info(int flag)
+   mixed debug_info(int flag, mixed arg)
+   mixed debug_info(int flag, mixed arg2, mixed arg3)
+
+
+BESCHREIBUNG
+============
+
+   Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
+   des Treibers. <flag> kann dabei folgende in debug_info.h definierte
+   Werte enthalten:
+
+   DINFO_OBJECT   (0): Angezeigt werden Informationen zum in <arg>
+       spezifizierten Objekt, zum Beispiel heart_beat,
+       enable_commands etc. Die Funktion liefert 0 zurueck.
+
+   DINFO_MEMORY   (1): Angezeigt werden Informationen zu
+       Speicherbelegung und -ausnutzung des in <arg> spezifizierten
+       Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
+       Objektgroesse etc. Die Funktion liefert 0 zurueck.
+
+   DINFO_OBJLIST  (2): debug_info() liefert Objekte aus der globalen
+       Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
+       Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
+       ist, das n-te Element. Ist <arg2> ein Objekt, werden die
+       nachfolgenden Objekte in der Objektliste zurueck geliefert.
+       Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
+       gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
+       Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
+       ein Array mit hoechstens m Elementen zurueck geliefert. Auf
+       diese Weise kann ein Array mit saemtlichen Objekten im Spiel
+       erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
+       entsprechende maximale Arraygroesse vorausgesetzt).
+
+   DINFO_MALLOC   (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
+       Es muessen keine weiteren Argumente angegeben werden.
+
+   DINFO_STATUS   (4): Angezeigt wird die Statusinformation des Drivers.
+       Optional kann das Argument <arg> die Werte 0, "tables", "swap",
+       "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
+       Das Resultat ist ein druckbarer String, der die Statusinformation
+       enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.
+
+   DINFO_DUMP     (5): Die durch <arg2> angeforderte Information wird
+       in ein File geschrieben, das man mit <arg3> angeben kann. Wird
+       <arg3> nicht angegeben, wird eine Standarddatei verwendet.
+       debug_info() ueberprueft mittels master->valid_write(), ob es
+       das File schreiben kann. Falls bereits eine entsprechende Datei
+       existiert, wird diese ueberschrieben. Die Funktion liefert 1
+       bei Erfolg, 0 sonst.
+
+       <arg2> == "objects": liefert Informationen ueber alle Objekte im
+           Spiel und schreibt diese standardmaessig in die Datei
+           /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
+           Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
+           jeweils folgende Informationen aufgelistet sind:
+             - Name des Objekts (object_name)
+             - Groesse im Speicher, gemeinsamer genutzter Speicher nur
+               einmal gezaehlt
+             - Groesse im Speicher, wenn es keine gemeinsam genutzte
+               Daten geben wuerde
+             - Anzahl Referenzen
+             - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
+             - der Name der Umgebung oder '--', wenn das Objekt keine
+               Umgebung hat
+             - in Klammern die Anzahl der durch das Objekt verursachten
+               Verarbeitungsschritten (execution ticks)
+             - der Swap-Status:
+                 > nichts, wenn das Objekt nicht geswapt wurde
+                 > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
+                 > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
+                 > 'SWAPPED', wenn beide geswapt wurden
+             - die Zeit, zu der das Objekt geladen wurde.
+
+       <arg2> == "destructed": liefert Informationen ueber alle
+           zerstoerten Objekte und schreibt diese standardmaessig in
+           die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
+           uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
+           in der jeweils folgende Informationen aufgelistet sind:
+             - Name des Objekts (object_name)
+             - Anzahl der Referenzen
+             - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
+               zerstoert wurde, nichts wenn es bereits fruehre zerstoert
+               worden war.
+
+       <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
+           opcodes. Standardmaessig wird in die Datei /OPC_DUMP
+           geschrieben. valid_write() wird 'opcdump' uebergeben.
+
+       <arg2> == "memory": liefert eine Liste aller allokierten
+           Speicherbloecke.
+           Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
+           valid_write() wird 'memdump' uebergeben.  Existiert die
+           Datei bereits, werden die neuen Daten angehaengt.
+           Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
+           wird keine Datei geschrieben und immer 0 zurueckgegeben.
+           Diese Funktion ist am nuetzlichsten wenn der Allokator
+           mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
+           wurde.
+
+
+   DINFO_DATA    (6): Liefert Rohdaten ueber gewisse, durch <arg2>
+       spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
+       ein Array mit der Information oder 0, falls <arg2> keinen
+       gueltigen Wert enthalten hat.
+       Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
+       Resultat-Array, liefert die Funktion nur das entsprechende
+       Element zurueck.
+       Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
+       DID_MALLOC.
+
+       <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
+           Information. Folgende Indizes sind definiert:
+             - int DID_ST_BOOT_TIME
+                   die Zeit (time()), zu der das Mud gestartet wurde
+             - int DID_ST_ACTIONS
+             - int DID_ST_ACTIONS_SIZE
+                   die Anzahl und Groesse im Speicher der allozierten
+                   Actions.
+             - int DID_ST_SHADOWS
+             - int DID_ST_SHADOWS_SIZE
+                   Anzahl und Groesse im Speicher aller allozierten
+                   Shadows.
+             - int DID_ST_OBJECTS
+             - int DID_ST_OBJECTS_SIZE
+                   Anzahl und Groesse im Speicher aller Objekte.
+             - int DID_ST_OBJECTS_SWAPPED
+             - int DID_ST_OBJECTS_SWAP_SIZE
+                   Anzahl und Groesse im Speicher der geswapten
+                   Variablenbloecke der Objekte
+             - int DID_ST_OBJECTS_LIST
+                   Anzahl Objekte in der Objektliste
+             - int DID_ST_OBJECTS_NEWLY_DEST
+                   Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
+                   die in diesem Verarbeitungszyklus zerstoert wurden)
+             - int DID_ST_OBJECTS_DESTRUCTED
+                   Anzahl der zerstoerten, aber noch immer referenzierten
+                   Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
+                   bereits gezaehlten.
+             - int DID_ST_OBJECTS_PROCESSED
+                   Anzahl der gelisteten Objekte, die im letzten
+                   Verarbeitungszyklus verarbeitet wurden.
+             - float DID_ST_OBJECTS_AVG_PROC
+                   Durchschnittlicher Anteil der pro Zyklus verarbeiteten
+                   Objekte, ausgedrueckt in Prozent (0 .. 1.0)
+             - int DID_ST_OTABLE
+                   Anzahl eingetragener Objekte in der Objekttabelle
+             - int DID_ST_OTABLE_SLOTS
+                   Anzahl von Hashplaetzen, die von jeder Objekttabelle
+                   bereitgestellt werden
+             - int DID_ST_OTABLE_SIZE
+                   Durch die Objekttabelle belegter Speicher
+             - int DID_ST_HBEAT_OBJS
+                   Anzahl Objekte mit einem heart_beat()
+             - int DID_ST_HBEAT_CALLS
+                   Anzahl aktiver heart_beat() Zyklen bisher (d.h.
+                   Zyklen, in denen mindestens eine heart_beat() Funktion
+                   aufgerufen wurde)
+             - int DID_ST_HBEAT_CALLS_TOTAL
+                   Gesamtzahl von heart_beat() Zyklen bisher.
+             - int DID_ST_HBEAT_SLOTS
+             - int DID_ST_HBEAT_SIZE
+                   Anzahl und Groesse aller allozierten Eintraege in der
+                   heart_beat() Tabelle.
+             - int DID_ST_HBEAT_PROCESSED
+                   Anzahl heart_beat()s im letzten Zyklus
+             - float DID_ST_HBEAT_AVG_PROC
+                   Durchschnittlicher Anteil der pro Zyklus aufgerufenen
+                   heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
+             - int DID_ST_CALLOUTS
+                   Anzahl und Groesse aller laufenden call_out()s
+             - int DID_ST_ARRAYS
+             - int DID_ST_ARRAYS_SIZE
+                   Anzahl und Groesse aller Arrays
+             - int DID_ST_MAPPINGS
+             - int DID_ST_MAPPINGS_SIZE
+                   Anzahl und Groesse aller Mappings
+             - int DID_ST_PROGS
+             - int DID_ST_PROGS_SIZE
+                   Anzahl und Groesse aller Programme
+             - int DID_ST_PROGS_SWAPPED
+             - int DID_ST_PROGS_SWAP_SIZE
+                   Anzahl und Groesse der geswapten Programme
+             - int DID_ST_USER_RESERVE
+             - int DID_ST_MASTER_RESERVE
+             - int DID_ST_SYSTEM_RESERVE
+                   Momentane Groesse der drei Speicherreserven
+             - int DID_ST_ADD_MESSAGE
+             - int DID_ST_PACKETS
+             - int DID_ST_PACKET_SIZE
+                   Anzahl Aufrufe von add_message(), Anzahl und Groesse
+                   der versendeten Pakete.
+                   Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
+                   liefern alle drei Werte immer -1 zurueck.
+             - int DID_ST_APPLY
+             - int DID_ST_APPLY_HITS
+                   Anzahl Aufrufen von apply_low(), und wie viele davon
+                   Cache-Treffer waren. Wenn der Driver nicht mit
+                   APPLY_CACHE_STAT kompiliert wurde, liefern beide
+                   Werte immer -1.
+             - int DID_ST_STRINGS
+             - int DID_ST_STRING_SIZE
+                   Anzahl unterschiedlicher Strings in der Stringtabelle,
+                   sowie ihre Groesse
+             - int DID_ST_STR_TABLE_SIZE
+                   Groesse der String Tabelle
+             - int DID_ST_STR_REQ
+             - int DID_ST_STR_REQ_SIZE
+                   Gesamte Anzahl von String Allokationen, und ihre
+                   Groesse
+             - int DID_ST_STR_SEARCHES
+             - int DID_ST_STR_SEARCH_LEN
+                   Anzahl Suchvorgaenge in der Stringtabelle und die
+                   Gesamtlaenge des Suchstrings
+             - int DID_ST_STR_FOUND
+                   Anzahl erfolgreicher Suchvorgaenge
+             - int DID_ST_STR_ENTRIES
+                   Anzahl Eintraege (Hash Ketten) in der String Tabelle
+             - int DID_ST_STR_ADDED
+                   Anzahl zur String Tabelle bisher hinzugefuegter
+                   Strings
+             - int DID_ST_STR_DELETED
+                   Anzahl aus der String Tabelle bisher geloeschter
+                   Strings
+             - int DID_ST_STR_COLLISIONS
+                   Anzahl zu einer existierenden Hash Kette hinzugefuegte
+                   Strings
+             - int DID_ST_RX_CACHED
+                   Anzahl gecacheter regulaerer Ausdruecke (regular
+                   expressions)
+             - int DID_ST_RX_TABLE
+             - int DID_ST_RX_TABLE_SIZE
+                   Anzahl Plaetze in der Regexp Cache Tabelle und
+                   Speicherbedarf der gecacheten Ausdruecke
+             - int DID_ST_RX_REQUESTS
+                   Anzahl Anfragen fuer neue regexps
+             - int DID_ST_RX_REQ_FOUND
+                   Anzahl gefundener regexps in der regexp Cache Tabelle
+             - int DID_ST_RX_REQ_COLL
+                   Anzahl angefragter regexps, die mit einer bestehenden
+                   regexp kollidierten
+             - int DID_ST_MB_FILE
+                   Die Groesse des 'File' Speicherpuffers
+             - int DID_ST_MB_SWAP
+                   Die Groesse des 'Swap' Speicherpuffers
+
+       <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
+             - int DID_SW_PROGS
+             - int DID_SW_PROG_SIZE
+                   Anzahl und Groesse der geswappten Programmbloecke
+             - int DID_SW_PROG_UNSWAPPED
+             - int DID_SW_PROG_U_SIZE
+                   Anzahl und Groesse der nicht geswappten Bloecke
+             - int DID_SW_VARS
+             - int DID_SW_VAR_SIZE
+                   Anzahl und Groesse der geswappten Variablenbloecke
+             - int DID_SW_FREE
+             - int DID_SW_FREE_SIZE
+                   Anzahl und Groesse der freien Bloecke in der
+                   Auslagerungsdatei
+             - int DID_SW_FILE_SIZE
+                   Groesse der Auslagerungsdatei
+             - int DID_SW_REUSED
+                   Gesamter wiederverwendeter Speicherplatz in der
+                   Auslagerungsdatei
+             - int DID_SW_SEARCHES
+             - int DID_SW_SEARCH_LEN
+                   Anzahl und Gesamtlaenge der Suchvorgaenge nach
+                   wiederverwendbaren Bloecken in der Auslagerungsdatei
+             - int DID_SW_F_SEARCHES
+             - int DID_SW_F_SEARCH_LEN
+                   Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
+                   Block, der frei gemacht werden kann.
+             - int DID_SW_COMPACT
+                   TRUE wenn der Swapper im Compact-Modus laeuft
+             - int DID_SW_RECYCLE_FREE
+                   TRUE wenn der Swapper gerade einen freien Block
+                   wiederverwendet
+
+       <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
+             - string DID_MEM_NAME
+                   Der Name des Allokators: "sysmalloc", "smalloc",
+                   "slaballoc"
+             - int DID_MEM_SBRK
+             - int DID_MEM_SBRK_SIZE
+                   Anzahl und Groesse der Speicherbloecke, die vom
+                   Betriebssystem angefordert wurden (smalloc, slaballoc)
+             - int DID_MEM_LARGE
+             - int DID_MEM_LARGE_SIZE
+             - int DID_MEM_LFREE
+             - int DID_MEM_LFREE_SIZE
+                   Anzahl und Groesse der grossen allozierten bzw.
+                   freien Bloecke (smalloc, slaballoc)
+             - int DID_MEM_LWASTED
+             - int DID_MEM_LWASTED_SIZE
+                   Anzahl und Groesse der unbrauchbaren grossen
+                   Speicherfragmente (smalloc, slaballoc)
+             - int DID_MEM_CHUNK
+             - int DID_MEM_CHUNK_SIZE
+                   Anzahl und Groesse kleiner Speicherbloecke (chunk
+                   blocks; smalloc, slaballoc)
+             - int DID_MEM_SMALL
+             - int DID_MEM_SMALL_SIZE
+             - int DID_MEM_SFREE
+             - int DID_MEM_SFREE_SIZE
+                   Anzahl und groesse der allozierten bzw. freien
+                   kleinen Speicherbloecke (smalloc, slaballoc)
+             - int DID_MEM_SWASTED
+             - int DID_MEM_SWASTED_SIZE
+                   Anzahl und Groesse der unbrauchbar kleinen
+                   Speicherfragmente (smalloc, slaballoc)
+             - int DID_MEM_MINC_CALLS
+             - int DID_MEM_MINC_SUCCESS
+             - int DID_MEM_MINC_SIZE
+                   Anzahl Aufrufe von malloc_increment(), Anzahl der
+                   erfolgreichen Aufrufe und die Groesse des auf diese
+                   Art allozierten Speichers (smalloc, slaballoc)
+             - int DID_MEM_PERM
+             - int DID_MEM_PERM_SIZE
+                   Anzahl und Groesse permanenter (non-GCable)
+                   Allokationen (smalloc, slaballoc)
+             - int DID_MEM_CLIB
+             - int DID_MEM_CLIB_SIZE
+                   Anzahl und Groesse der Allokationen durch Clib
+                   Funktionen (nur smalloc, slaballoc mit SBRK_OK)
+             - int DID_MEM_OVERHEAD
+                   Overhead fuer jede Allokation (smalloc, slaballoc)
+             - int DID_MEM_ALLOCATED
+                   Der Speicher, der durch die Speicherverwaltung
+                   alloziert wurde, inklusive den Overhead fuer die
+                   Speicherverwaltung (smalloc, slaballoc)
+             - int DID_MEM_USED
+                   Der Speicher, der durch den Driver belegt ist, ohne
+                   den durch die Speicherverwaltung belegten Speicher
+                   (smalloc, slaballoc)
+             - int DID_MEM_TOTAL_UNUSED
+                   Der Speicher, der vom System zur Verfuegung gestellt,
+                   aber vom Treiber nicht benoetigt wird.
+             - int DID_MEM_AVL_NODES          (smalloc, slaballoc)
+                   Anzahl der AVL-Knoten, die zur Verwaltung der
+                   freien grossen Speicherbloecke verwendet werden
+                   (nur smalloc). Dieser Wert kann in Zukunft
+                   wieder verschwinden.
+             - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
+                   Detaillierte Statistiken des Allokators sofern
+                   diese aktiviert wurden; 0 anderenfalls.
+
+                   Dieser Wert kann in Zukunft wieder verschwinden.
+
+                   Das Array enthaelt NUM+2 Eintraege, wobei NUM
+                   Anzahl der verschiedenen 'kleinen'
+                   Blockgroessen ist. Eintrag [NUM] beschreibt
+                   die uebergrossen 'kleinen' Bloecke, Eintrag
+                   [NUM+1] beschreibt summarisch die 'grossen'
+                   Bloecke. Jeder Eintrag ist ein Array mit
+                   diesen Feldern:
+
+                   int DID_MEM_ES_MAX_ALLOC:
+                     Maximale Anzahl allokierter Bloecke dieser
+                     Groesse.
+
+                   int DID_MEM_ES_CUR_ALLOC:
+                     Derzeitige Anzahl allokierter Bloecke dieser
+                     Groesse.
+                     Current number of allocated blocks of this size.
+
+                   int DID_MEM_ES_MAX_FREE:
+                     Maximale Anzahl freier Bloecke dieser
+                     Groesse.
+
+                   int DID_MEM_ES_CUR_FREE:
+                     Derzeitige Anzahl freier Bloecke dieser
+                     Groesse.
+
+                   float DID_MEM_ES_AVG_XALLOC:
+                     Durchschnittliche Zahl von Allokationen pro
+                     Sekunde.
+
+                   float DID_MEM_ES_AVG_XFREE:
+                     Durchschnittliche Zahl von Deallokationen pro
+                     Sekunde.
+
+                 Die Durchschnittsstatistiken schliessen interne
+                 Umsortierungen der Blocklisten nicht ein.
+
+
+   DINFO_TRACE    (7): Liefert die 'trace' Information aus dem
+       Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
+       ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
+       oder ein druckbarer String. Wird <arg2> weggelasen entspricht
+       dies DIT_CURRENT.
+
+       <arg2> == DIT_CURRENT (0): Momentaner Call Trace
+              == DIT_ERROR   (1): Letzter Fehler Trace (caught oder
+                   uncaught)
+              == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
+                   gefangen werden konnte (uncaught)
+
+       Die Information wird in Form eines Array uebergeben.
+
+       Die Fehlertraces werden nur geaendert, wenn ein entsprechender
+       Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
+       Collection) geloescht. Nach einem Fehler, der nicht gefangen
+       werden konnte (uncaught error), weisen beide Traces auf das
+       gleiche Array, sodass der ==-Operator gilt.
+
+       Wenn das Array mehr als ein Element enthaelt, ist das erste
+       Element 0 oder der Name des Objekts, dessen heart_beat() den
+       laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
+       bezeichnen den Call Stack, beginnen mit der hoechsten
+       aufgerufenen Funktion.
+
+       Alle Eintraege im Array sind wiederum Arrays mit folgenden
+       Elementen:
+         - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
+               TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
+                                      vorkommen)
+               TRACE_TYPE_SEFUN  (1): eine simul-efun
+               TRACE_TYPE_EFUN   (2): eine Efun Closure
+               TRACE_TYPE_LAMBDA (3): eine lambda Closure
+               TRACE_TYPE_LFUN   (4): eine normale Lfun
+         - int[TRACE_NAME]
+               _TYPE_EFUN    : entweder der Name der Funktion oder der
+                               Code einer Operator-Closure
+               _TYPE_LAMBDA  : die numerische Lambda-ID
+               _TYPE_LFUN    : der Name der Lfun
+         - string[TRACE_PROGRAM]:  Der Name des Programms mit dem Code
+         - string[TRACE_OBJECT]:   Der Name des Objekts, fuer das der
+                                   Code ausgefuehrt wurde
+         - int[TRACE_LOC]:
+               _TYPE_LAMBDA  : Der Offset des Programms seit Beginn des
+                               Closure-Codes
+               _TYPE_LFUN    : Die Zeilennummer.
+
+       <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
+           momentanen Call Trace als druckbarer String.
+
+       <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
+           dem Control Stack (Rekursionstiefe).
+
+   DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
+       zurueck. Diese Nummer wird fuer jeden vom driver initiierten
+       Aufruf von LPC-Code erhoeht, also bei Aufruf von:
+         - Kommandos (die per add_action hinzugefuegt wurden)
+         - heart_beat, reset, clean_up
+         - Aufrufe durch call_out oder input_to
+         - master applies, die auf externe Ereignisse zurueckgehen
+         - driver hooks genauso
+         - Rueckrufen von send_erq
+         - logon in interaktiven Objekten
+
+      Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
+      bestimmte Aktionen mehrfach innerhalb eines heart_beat()
+      ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
+      Zeitstempel zur Sortierung zur Sortierung von Ereignissen.
+
+      Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
+      auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.
+
+
+GESCHICHTE
+==========
+
+   Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
+       nur auszugeben.
+   DINFO_DUMP wurde in 3.2.7 eingefuehrt.
+   LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
+       DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
+       verschiedenen DID_MEM_WASTED Statistiken.
+   LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
+       DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
+       die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
+       DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
+       DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
+       und die found / added / collision Stringstatistiken.
+   LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
+       entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
+       DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
+       DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
+       fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
+       die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
+       bzw. _SLOTS.
+   LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
+       hinzu.
+   LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
+       hinzu.
+   LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
+   LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.
+
+
+SIEHE AUCH
+==========
+
+   trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
diff --git a/doc/sphinx/man/sefun/deep_present b/doc/sphinx/man/sefun/deep_present
new file mode 100644
index 0000000..c3f673a
--- /dev/null
+++ b/doc/sphinx/man/sefun/deep_present
@@ -0,0 +1,40 @@
+
+deep_present()
+**************
+
+
+FUNKTION
+========
+
+   object deep_present(string what)
+   object deep_present(object what)
+   object deep_present(string what, object ob)
+   object deep_present(object what, object ob)
+
+
+ARGUMENTE
+=========
+
+   what - Objekt oder ID des Objektes, nach dem gesucht werden soll
+   ob - Objekt, in dem gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   deep_present() sucht in this_object() (oder in ob, falls angegeben)
+   nach dem Objekt what oder einem Objekt, das auf what anspricht.
+   Im Gegensatz zu present() wird aber das komplette Inventory berueck-
+   sichtigt (also zB. auch der Inhalt von Beuteln).
+
+
+RUECKGABEWERT
+=============
+
+   das gefundene Objekt oder 0
+
+
+SIEHE AUCH
+==========
+
+   present(E)
diff --git a/doc/sphinx/man/sefun/dtime b/doc/sphinx/man/sefun/dtime
new file mode 100644
index 0000000..dac7dd0
--- /dev/null
+++ b/doc/sphinx/man/sefun/dtime
@@ -0,0 +1,49 @@
+
+dtime()
+*******
+
+
+FUNKTION
+========
+
+   string dtime(int time)
+
+
+ARGUMENTE
+=========
+
+   time - Umzuwandelndes Datum in Sekunden seit 1.1.1970, 0:0:0h
+
+
+BESCHREIBUNG
+============
+
+   Wandelt das Datum time in einen deutschsprachigen String der Form
+   "<wtag>, <tag>. <mon> <jahr>, <std>:<min>:<sek>" um.
+
+
+RUECKGABEWERT
+=============
+
+   Der String mit dem umgewandelten Datum.
+
+
+BEMERKUNGEN
+===========
+
+         Als time wird meistens das Ergebnis von time() benutzt.
+   strftime() stellt eine wesentlich flexiblere Moeglichkeit der Ausgabe von
+   Zeiten dar.
+
+
+BEISPIELE
+=========
+
+   datum = dtime(time());
+   => datum = "Mon,  6. Mar 1994, 15:00:08"
+
+
+SIEHE AUCH
+==========
+
+   ctime(E), strftime(E), time(E)
diff --git a/doc/sphinx/man/sefun/dump_netdead b/doc/sphinx/man/sefun/dump_netdead
new file mode 100644
index 0000000..b5b480a
--- /dev/null
+++ b/doc/sphinx/man/sefun/dump_netdead
@@ -0,0 +1,29 @@
+
+dump_netdead()
+**************
+
+
+FUNKTION
+========
+
+   string *dump_netdead()
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array mit den Namen aller zur Zeit netztoten Spieler
+   zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Stringarray mit den Namen der netztoten Spieler.
+   gibt.
+
+
+SIEHE AUCH
+==========
+
+   find_netdead(E)
diff --git a/doc/sphinx/man/sefun/enable_commands b/doc/sphinx/man/sefun/enable_commands
new file mode 100644
index 0000000..593fb31
--- /dev/null
+++ b/doc/sphinx/man/sefun/enable_commands
@@ -0,0 +1,42 @@
+
+enable_commands()
+*****************
+
+
+SYNOPSIS
+========
+
+   void enable_commands();
+
+
+BESCHREIBUNG
+============
+
+   Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
+   zugaenglich sind. Der Aufruf markiert das Objekt als "living". Dies
+   wird fuer Spieler und alle von /std/npc abgeleiteten Objekte
+   bereits von der Mudlib erledigt und sollte nicht nochmals gemacht
+   werden.
+
+   Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
+   Compat-Modus) aufgerufen werden, weil der Kommandogeber auf dieses
+   Objekt gesetzt wird.
+
+
+BEISPIEL
+========
+
+   void create()
+   {
+       enable_commands();
+       ...
+   }
+
+   Dies markiert das Objekt als "living".
+
+
+SIEHE AUCH
+==========
+
+   command(E), living(E), disable_commands(E), native(C), hooks(C)
+   set_living_name(E)
diff --git a/doc/sphinx/man/sefun/file_time b/doc/sphinx/man/sefun/file_time
new file mode 100644
index 0000000..ddaefce
--- /dev/null
+++ b/doc/sphinx/man/sefun/file_time
@@ -0,0 +1,13 @@
+
+file_time()
+***********
+
+
+FUNKTION
+========
+
+   int file_time(string filename);
+
+Liefert den Zeitpunkt der letzten Modifikation des Files in Sekunden
+seit dem 1.1.1970, 0:00. Kann per ctime() in ein lesbares Format
+gebracht werden.
diff --git a/doc/sphinx/man/sefun/find_living b/doc/sphinx/man/sefun/find_living
new file mode 100644
index 0000000..5930695
--- /dev/null
+++ b/doc/sphinx/man/sefun/find_living
@@ -0,0 +1,42 @@
+
+find_living()
+*************
+
+
+SYNOPSIS
+========
+
+   object find_living(string str)
+
+
+BESCHREIBUNG
+============
+
+   Findet das erste "lebende" Objekt, welches per set_living_name() den
+   Namen <str> setzte.
+
+
+
+   Das Objekt muss ausserdem per enable_commands() als Lebewesen
+   markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
+   _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
+   werden.
+
+
+BEISPIEL
+========
+
+   object ob;
+   ob = find_living("Public Enemy");
+
+
+SIEHE AUCH
+==========
+
+   find_player(E), enable_commands(E), set_living_name(E)
+
+
+LETZTE AeNDERUNG
+================
+
+09.10.2011, Zesstra
diff --git a/doc/sphinx/man/sefun/find_livings b/doc/sphinx/man/sefun/find_livings
new file mode 100644
index 0000000..7f8f9b1
--- /dev/null
+++ b/doc/sphinx/man/sefun/find_livings
@@ -0,0 +1,49 @@
+
+find_livings()
+**************
+
+
+FUNKTION
+========
+
+   object *find_livings(string name)
+
+
+ARGUMENTE
+=========
+
+   name - der living_name der gesuchten Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Array mit allen Lebewesen, die den gleichen
+   living_name haben.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den Lebewesen oder 0, wenn es kein Lebewesen diesen Namens
+   gibt.
+
+
+BEISPIELE
+=========
+
+   ob = find_livings("herkules");
+   => ob = ({ [/human:herkules],
+              [/d/inseln/wargon/luftschloss/mon/herkules] })
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), set_living_name(E), find_player(E), find_netdead(E)
+
+
+LETZTE AENDERUNG
+================
+
+19. Okt. 2015, Arathorn
diff --git a/doc/sphinx/man/sefun/find_netdead b/doc/sphinx/man/sefun/find_netdead
new file mode 100644
index 0000000..8686436
--- /dev/null
+++ b/doc/sphinx/man/sefun/find_netdead
@@ -0,0 +1,46 @@
+
+find_netdead()
+**************
+
+
+FUNKTION
+========
+
+   object find_netdead(string name)
+
+
+ARGUMENTE
+=========
+
+   name - Name des gesuchten Spielers
+
+
+BESCHREIBUNG
+============
+
+   Falls der Spieler name netztot ist, liefert diese Funktion das Spieler-
+   objekt zurueck.
+
+   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
+   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
+   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
+   zurueckliefern, wenn das die UUID "Jof_1234" hat).
+
+
+RUECKGABEWERT
+=============
+
+   Der netztote Spieler oder 0, falls es keinen Netztoten diesen Namens
+   gibt.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_player(E)
+
+
+LETZT AeNDERUNG
+===============
+
+06.01.2009, Zesstra
diff --git a/doc/sphinx/man/sefun/find_player b/doc/sphinx/man/sefun/find_player
new file mode 100644
index 0000000..048b105
--- /dev/null
+++ b/doc/sphinx/man/sefun/find_player
@@ -0,0 +1,60 @@
+
+find_player()
+*************
+
+
+FUNKTION
+========
+
+   object find_player(string uid)
+
+
+BESCHREIBUNG
+============
+
+   Findet den Spieler mit dem Namen bzw. der User-ID <uid>.
+
+
+
+   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
+   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
+   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
+   zurueckliefern, wenn das die UUID "Jof_1234" hat).
+
+   Rueckgabewert ist das Spielerobjekt (wenn Spieler anwesend),
+   ansonsten 0.
+
+
+BEISPIEL
+========
+
+   object ob;
+   ob = find_player("deepthought");
+
+   if(ob)
+     tell_object(ob,"Tach Du!\n");
+
+   oder auch
+
+   if(ob = find_player("deepthought"))
+     tell_object(ob,"Tach Du!\n");
+
+
+ANMERKUNGEN
+===========
+
+   Via find_player() werden auch unsichtbare Magier gefunden. In
+   Objekten, die fuer Spieler gedacht sind, muss dies dann extra
+   per Abfrage auf if(ob->QueryProp(P_INVIS)) getestet werden.
+
+   Netztote Spieler und Monster werden nicht gefunden da find_player
+   den Namen aus set_living_name() verwendet, der in player.c ge-
+   setzt wird.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), set_living_name(E), find_object(E), find_netdead(E)
+
+Letzte Aenderung: 06.01.2009, Zesstra
diff --git a/doc/sphinx/man/sefun/getuuid b/doc/sphinx/man/sefun/getuuid
new file mode 100644
index 0000000..63ea31e
--- /dev/null
+++ b/doc/sphinx/man/sefun/getuuid
@@ -0,0 +1,29 @@
+
+getuuid()
+*********
+
+
+SYNOPSIS
+========
+
+   string getuuid(object ob)
+
+
+DESCRIPTION
+===========
+
+   Liefert eine eindeutige (get unique uid) UID fuer einen Spieler.
+   Wird zusammengesetzt aus der UID des Spielers und seinem
+   Erstlogin-Datum.
+
+   Nach einer Selbstloeschung und neuem Login erhaelt der Spieler eine
+   neue UUID, bei einer Restaurierung behaelt er seine alte UUID.
+
+   Wenn die Funktion ohne Parameter aufgerufen wird, wird per Default
+   this_object() genommen.
+
+
+SEE ALSO
+========
+
+   getuid(E)
diff --git a/doc/sphinx/man/sefun/iso2ascii b/doc/sphinx/man/sefun/iso2ascii
new file mode 100644
index 0000000..bd64d73
--- /dev/null
+++ b/doc/sphinx/man/sefun/iso2ascii
@@ -0,0 +1,32 @@
+
+iso2ascii()
+***********
+
+
+FUNKTION
+========
+
+   public string iso2ascii( string str );
+
+
+ARGUMENTE
+=========
+
+   str
+     String, in welchem Zeichen ersetzt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   In dem String werden alle Nicht-ASCII-Zeichen durch ASCII-Zeichen
+   ersetzt, und zwar Umlaute in der bekannten Form und alle anderen
+   durch ein Fragezeichen.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit ASCII-Zeichen.
+
+Last modified: Fri Jul  6 19:36:09 2001 by Patryn
diff --git a/doc/sphinx/man/sefun/log_file b/doc/sphinx/man/sefun/log_file
new file mode 100644
index 0000000..a3f3cab
--- /dev/null
+++ b/doc/sphinx/man/sefun/log_file
@@ -0,0 +1,59 @@
+
+log_file()
+**********
+
+
+FUNKTION
+========
+
+         int log_file(string file, string text)
+   int log_file(string file, string text, int size_to_break)
+
+
+ARGUMENTE
+=========
+
+   file - Name der Datei, in die geschrieben werden soll
+   text - Der Text, der geschrieben werden soll
+   size_to_break - Groesse, ab der ein neues File begonnen wird (optional)
+
+
+BESCHREIBUNG
+============
+
+   log_file schreibt den Text text in die Datei /log/file.
+   Sollte file schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
+   eingefuegt.
+
+
+RUECKGABEWERT
+=============
+
+   1 bei Erfolg oder 0, falls ein Fehler beim Schreiben auftrat.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn die Groesse von file vor dem Schreiben 50000 Bytes ueberschreitet,
+   wird sie in file.old umbenannt. Eine schon vorhandene Datei file.old
+   wird dabei geloescht. Der Text wird nach dem Umbenennen geschrieben.
+   Wird 'size_to_break' angegeben und ist dies > 0, wird dieser Wert (in
+   Bytes) statt der 50000 Bytes zum Rotieren des Logfiles benutzt.
+
+
+BEISPIELE
+=========
+
+   log_file( "report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
+   In /log/report/wargon.rep finde ich nun die neueste Typomeldung... ;)
+   log_file( "/log/report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
+   Gleiches Ergebnis. ;-)
+
+
+SIEHE AUCH
+==========
+
+   write_file(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sphinx/man/sefun/lowerchar b/doc/sphinx/man/sefun/lowerchar
new file mode 100644
index 0000000..8e6cfdd
--- /dev/null
+++ b/doc/sphinx/man/sefun/lowerchar
@@ -0,0 +1,42 @@
+
+lowerchar()
+***********
+
+
+FUNKTION
+========
+
+   int lowerchar(int char)
+
+
+ARGUMENTE
+=========
+
+   char - Das umzuwandelnde Zeichen
+
+
+BESCHREIBUNG
+============
+
+   Wenn char ein Grossbuchstabe ist, so wird es in einen Kleinbuchstaben
+   umgewandelt. Andere Zeichen werden von dieser Funktion nicht beein-
+   flusst.
+
+
+RUECKGABEWERT
+=============
+
+   Das umgewandelte Zeichen.
+
+
+BEISPIELE
+=========
+
+   printf("%c\n", lowerchar('A')); => a
+   printf("%c\n", lowerchar('1')); => 1
+
+
+SIEHE AUCH
+==========
+
+   lower_case(E), lowerstring(E), upperstring(E), capitalize(E)
diff --git a/doc/sphinx/man/sefun/lowerstring b/doc/sphinx/man/sefun/lowerstring
new file mode 100644
index 0000000..a483224
--- /dev/null
+++ b/doc/sphinx/man/sefun/lowerstring
@@ -0,0 +1,45 @@
+
+lowerstring()
+*************
+
+
+FUNKTION
+========
+
+   string lowerstring(string str)
+
+
+ARGUMENTE
+=========
+
+   str - Der umzuwandelnde String.
+
+
+BESCHREIBUNG
+============
+
+   Alle Grossbuchstaben in str werden in Kleinbuchstaben umgewandelt.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgewandelte String.
+
+
+BEMERKUNGEN
+===========
+
+   lowerstring ist mit lower_case identisch!
+
+
+BEISPIELE
+=========
+
+   s = lowerstring("So, McLaud...\n"); => s = "so, mclaud...\n"
+
+
+SIEHE AUCH
+==========
+
+   lower_case(E), lowerchar(E), upperstring(E), capitalize(E)
diff --git a/doc/sphinx/man/sefun/m_copy_delete b/doc/sphinx/man/sefun/m_copy_delete
new file mode 100644
index 0000000..9aa90f2
--- /dev/null
+++ b/doc/sphinx/man/sefun/m_copy_delete
@@ -0,0 +1,68 @@
+
+m_copy_delete()
+***************
+
+
+FUNKTION
+========
+
+   mapping m_copy_delete(mapping map, mixed key)
+
+
+ARGUMENTE
+=========
+
+   map - das Mapping, aus dem geloescht werden soll.
+   key - der zu loeschende Eintrag
+
+
+BESCHREIBUNG
+============
+
+   Aus dem Mapping map wird der Eintrag key geloescht (wenn er in map vor-
+   handen ist). map wird dabei nicht veraendert.
+
+
+RUECKGABEWERT
+=============
+
+   Eine (flache !) Kopie von map ohne den Eintrag key, d.h. enthaltene
+   Mappings/Arrays werden nicht kopiert.
+
+
+BEMERKUNGEN
+===========
+
+         Das urspruengliche Mapping wird bei dieser Operation nicht veraendert!
+         Wenn man nur einen Wert aus dem Mapping loeschen will und die Kopie nicht
+         braucht, bietet sich efun::m_delete(mapping,key) sehr an, da die Erstellung
+   einer Kopie sehr aufwendig sein kann.
+
+
+BEISPIELE
+=========
+
+   mapping m1, m2;
+
+   m1 = ([ "a":1, "b":2, "c":3 ]);
+
+   m2 = m_copy_delete(m1, "b");
+      => m1 = ([ "a":1, "b":2, "c":3 ])
+         m2 = ([ "a":1, "c":3 ])
+
+   m_copy_delete(m1, "a");
+      => (es hat sich nichts geaendert)
+
+   m1 = m_copy_delete(m1, "a");
+      => m1 = ([ "b":2, "c":3 ])
+
+   Im letzten Fall sollte aber besser efun::m_delete(m1, "a") benutzt
+   werden, da ansonsten das Mapping unnoetig kopiert wird und Rechen-
+   leistung frisst.
+
+
+SIEHE AUCH
+==========
+
+   efun::m_delete(E), mappingp(E), mkmapping(E), m_indices,(E) m_values(E),
+   sizeof(E), widthof(E)
diff --git a/doc/sphinx/man/sefun/match_living b/doc/sphinx/man/sefun/match_living
new file mode 100644
index 0000000..5cb347b
--- /dev/null
+++ b/doc/sphinx/man/sefun/match_living
@@ -0,0 +1,52 @@
+
+match_living()
+**************
+
+match_living(sefun)
+
+
+FUNKTION
+========
+
+   varargs mixed match_living( string str, int players_only,
+                               string *exclude)
+
+
+ARGUMENTE
+=========
+
+   string str         - Kuerzel, nach dem die living_names durchsucht
+                        werden soll
+   int players_only   - 1, um nur Spieler (Interactives) zu suchen
+   string *exlude     - welche Namen sollen ignoriert werden
+
+
+BESCHREIBUNG
+============
+
+   Sucht alle Lebewesen, deren Namen mit str beginnen.
+
+
+RUECKGABEWERT
+=============
+
+   Ein String, falls es ein Lebewesen mit dem Namen str gibt (der Name
+   muss genau passen).
+   -1, wenn es mehrere Lebewesen gibt, deren Namen mit str beginnen.
+   -2, wenn es kein Lebewesen gibt, dessen Name mit str beginnt.
+
+
+BEISPIELE
+=========
+
+   match_living("wargon"); => "wargon", wenn Wargon eingeloggt ist.
+   match_living("war");    => "wargon", wenn es kein anderes Lebewesen
+                              gibt, dessen Name mit "war" beginnt.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_player(E), find_netdead(E)
+
+27. Mai 2004 Gloinson
diff --git a/doc/sphinx/man/sefun/md5 b/doc/sphinx/man/sefun/md5
new file mode 100644
index 0000000..f48dcc8
--- /dev/null
+++ b/doc/sphinx/man/sefun/md5
@@ -0,0 +1,52 @@
+
+md5()
+*****
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   string md5 (string arg [ , int iterations ] )
+   string md5 (int *  arg [ , int iterations ] )
+
+
+BESCHREIBUNG
+============
+
+   Berechnet den MD5-Hashwert von <arg>.
+   Das Argument kann ein String, oder ein Array von Zahlen sein (von
+   welchen nur das unterste Byte betrachted wird).
+
+   Das Ergebnis wird als 32-stelliger Hexadezimalwert geliefert.
+
+   Ist das <iterations> Argument eine Zahl groesser 0, berechnet der
+   Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
+   Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
+
+
+BEISPIEL
+========
+
+   string s;
+
+   s = md5("Hallo");
+   s = md5( ({ 'H', 'e', 'l', 'l', 'o' }) )
+   s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
+
+
+AENDERUNGEN
+===========
+
+   Eingefuehrt in LDMud 3.2.9
+   LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
+     die Anzahl der Wiederholungen.
+
+
+SIEHE AUCH
+==========
+
+   crypt(E), md5_crypt(E), sha1(E), hash(E), hmac(E)
diff --git a/doc/sphinx/man/sefun/mkdirp b/doc/sphinx/man/sefun/mkdirp
new file mode 100644
index 0000000..2bb9d06
--- /dev/null
+++ b/doc/sphinx/man/sefun/mkdirp
@@ -0,0 +1,42 @@
+
+mkdirp()
+********
+
+
+FUNKTION
+========
+
+   int mkdirp(string dir)
+
+
+ARGUMENTE
+=========
+
+   dir - Name des zu erstellenden Verzeichnisses (absolut)
+
+
+BESCHREIBUNG
+============
+
+   Erzeugt das Verzeichnis <dir>. Dies muss als abs. Pfad angegeben
+   werden.
+   Wenn noetig, wird die ganze Verzeichnishierarchie rekursiv erstellt.
+
+
+RUECKGABEWERT
+=============
+
+   0 - Verzeichnis konnte nicht erstellt werden
+   1 - Verzeichnis wurde erstellt oder existierte bereits
+
+
+SIEHE AUCH
+==========
+
+   mkdir(E)
+
+
+LETZT AeNDERUNG
+===============
+
+26.01.2013, Zesstra
diff --git a/doc/sphinx/man/sefun/notify_fail b/doc/sphinx/man/sefun/notify_fail
new file mode 100644
index 0000000..85b700a
--- /dev/null
+++ b/doc/sphinx/man/sefun/notify_fail
@@ -0,0 +1,107 @@
+
+notify_fail()
+*************
+
+
+FUNKTION
+========
+
+   #include <notify_fail.h>
+
+   varargs void notify_fail(string str, int prio)
+   varargs void notify_fail(closure cl, int prio)
+
+
+ARGUMENTE
+=========
+
+   str   Meldung die an den Spieler anstatt des 'Wie bitte' ausgegeben
+         werden soll
+   cl    Closure, die bei Fehlschlag ausgefuehrt werden soll
+   prio  Prioritaet dieses Objekts bei diesem Setzen der Meldung
+
+
+BESCHREIBUNG
+============
+
+   Merkt sich den angegebenen str und gibt ihn im Falle einer inkorrekten
+   Eingabe des Spielers anstatt eines 'Wie bitte' aus.
+
+   Gedacht ist notify_fail, um dem Spieler eine bessere Hilfestellung
+   bei Kommandos / Eingaben zu geben, um ihn u.U. auf die richtige
+   Syntax hinzuweisen.
+
+   Wird notify_fail mehrfach (durch verschiedene Objekte o.ae.) auf-
+   gerufen, wird der letzte erfolgreiche Aufruf gewertet. Eine Meldung wird
+   dann tatsaechlich gesetzt, wenn die Prioritaet dieses Objekts gleich
+   gross oder groesser ist als die Prioritaet des Objekts, was das bisher
+   gueltige notify_fail() gesetzt hat. Folgende Prioritaeten sind
+   vordefiniert und werden automatisch ermittelt:
+   NF_NL_OWN    100         // eigenes Objekt (soul) ueberschreibt kaum was
+   NF_NL_THING  100000
+   NF_NL_ROOM   1000000     // Raeume ueberschreiben sonstigen Krams
+   NF_NL_LIVING 10000000    // Lebewesen ueberschreiben auch Raeume
+   2 weitere vordefinierte koennen von Magier angegeben werden:
+   NF_NL_NONE   -1          // wird von allem ueberschrieben
+   NF_NL_MAX    __INT_MAX__ // hoechste Prioritaet, ueberschreibt alles
+
+   Wird eine Closure als Argument gegeben, wird sie im Fehlerfall
+   (also erst wenn ein Kommando endgueltig fehlgeschlagen hat)
+   ausgefuehrt und hat die Fehlermeldung als Resultat
+   zurueckzugeben. Die Closure erhaelt als Argument den
+   originalen Befehlsgeber; in der Regel dies ist this_player(),
+   was aber vom MODIFY_CMD hook geaendert werden kann.
+
+   notify_fail() erkennt verschachtelte Kommandos (siehe Efun
+   command()), und ein notify_fail() in einem Unterkommando
+   hat keinen Einfluss auf das uebergeordnete Kommando.
+
+
+BEMERKUNGEN
+===========
+
+   - solange man sich nicht absolut sicher ist, dass ein bestimmtes Objekt
+     mit dem Kommando gemeint ist (Identifikation ueber id()), sollte man
+     - notify_fail(str); return 0;
+     nutzen anstatt mit
+     - write(str) return 1;
+     die Kommandoauswertung abzubrechen (und anderen Objekten die Chance
+     zu nehmen das Kommando zu erfuellen)
+   - Kommandos werden uebrigens oft erst vom betretenen Raum, dann von den
+     Objekten abgearbeitet (je nachdem wann diese dazukamen)
+   - die Prioritaet wird momentan nicht gespeichert, sie ist nur beim Setzen
+     relevant. Will spaeter ein anderes Objekt eine Meldung setzen, wird
+     fuer das eigene Objekt die Standardprioritaet ermittelt, auch wenn man
+     eine andere hier uebergeben hat
+   - Die NF_NL_* sind in /sys/notify_fail.h defniert.
+
+
+BEISPIELE
+=========
+
+   Ein Raum erwartet die korrekte Eingabe von 'iss suppe':
+
+   int iss_cmd(string str){
+     // zu Anfang der Funktion das notify_fail definieren
+     notify_fail("Moechtest Du vielleicht von der Suppe essen?\n");
+
+     // Spieler hat nur 'iss' ohne Parameter eingegeben oder einen anderen
+     // Parameter angegeben ... Abbruch!
+     // Falls kein weiteres Objekt das Kommando erfuellt oder das
+     // notify_fail() mit einer eigenen Meldung ueberschreibt, wird obige
+     // Meldung an den Spieler ausgegeben.
+
+     if(!str || str!="suppe") return 0;
+     // ab hier ist die Eingabe dann wirklich 'suppe' und die Funktion
+     // kann beliebig fortgefuehrt werden
+     ...
+     return   1;
+
+
+SIEHE AUCH
+==========
+
+   add_action(E), AddCmd(L), AddAction(L),
+   query_verb(E), query_notify_fail(E)
+
+8.Aug 2007 Gloinson
diff --git a/doc/sphinx/man/sefun/object_info b/doc/sphinx/man/sefun/object_info
new file mode 100644
index 0000000..bee892e
--- /dev/null
+++ b/doc/sphinx/man/sefun/object_info
@@ -0,0 +1,148 @@
+
+object_info()
+*************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <objectinfo.h>
+
+   mixed * object_info(object ob, int what)
+   mixed * object_info(object ob, int what, int index)
+
+
+DESCRIPTION
+===========
+
+   Returns some internal information about object <ob>, collected
+   in an array. Argument <what> determines which information is
+   returned.
+
+   The result is usually an array. However, if <index> is specified,
+   the result is the value from position <index> of the array which
+   would have been returned normally.
+
+   The possible values of <what>, and the indices of the returned
+   arrays are defined in the include file <objectinfo.h>, and may
+   change in future versions of the driver!
+
+
+   <what> == OINFO_BASIC:
+
+     This call returns basic information about <ob>:
+
+     int [OIB_HEART_BEAT]:       1 if <ob> has a heart_beat, 0 else.
+     int [OIB_IS_WIZARD]:        1 if <ob> has the wizard flag set,
+                                   0 else.
+       This entry is always 0 when set_is_wizard() is not available.
+     int [OIB_ENABLE_COMMANDS]:  1 if <ob> can give commands, 0 else.
+     int [OIB_CLONE]:            1 if <ob> is a clone, 0 else.
+     int [OIB_DESTRUCTED]:       1 if <ob> is destructed, 0 else.
+     int [OIB_SWAPPED]:          1 if <ob> is swapped, 0 else.
+     int [OIB_ONCE_INTERACTIVE]: 1 if <ob> was once interactive, 0 else.
+     int [OIB_RESET_STATE]:      1 if <ob> is (still) reset, 0 else.
+     int [OIB_WILL_CLEAN_UP]:    1 if <ob> will call clean_up(), 0 else.
+     int [OIB_LAMBDA_REFERENCED]: 1 if <ob> has lambdas, 0 else.
+     int [OIB_SHADOW]:           1 if <ob> has a shadow structure tied
+                                   to it, 0 if not.
+     int [OIB_REPLACED]:         1 if the program for <ob> was replaced,
+                                 0 else.
+     int [OIB_NEXT_RESET]:   time of the next reset
+     int [OIB_TIME_OF_REF]:  time of the last call to <ob>
+     int [OIB_NEXT_CLEANUP]: time of the next data cleanup
+     int [OIB_REF]:          number of references to <ob>
+     int [OIB_GIGATICKS] and [OIB_TICKS]: together, these numbers
+       give the accumulated evaluation cost spend in <ob>
+     int [OIB_SWAP_NUM]:     the swap number for <ob>s program,
+                             or -1 if not swapped.
+     int [OIB_PROG_SWAPPED]: 1 if <ob>'s program is swapped, 0 else.
+     int [OIB_VAR_SWAPPED]:  1 if <ob>'s variables are swapped, 0 else.
+     int [OIB_NAME]:         <ob>'s object name.
+     int [OIB_LOAD_NAME]:    <ob>'s load name.
+     object [OIB_NEXT_ALL]:  next object in the object list.
+     object [OIB_PREV_ALL]:  previous object in the object list.
+
+
+   <what> == OINFO_POSITION:
+
+     This call returns information about <ob>'s position in the
+     global list of objects:
+
+     object [OIP_NEXT]: next object in the object list.
+     object [OIP_PREV]: previous object in the object list.
+     int    [OIP_POS]:  position of <ob> in list, counting from 0 up.
+
+     This call can be expensive in computing time.
+
+
+   <what> == OINFO_MEMORY:
+
+     This call returns information about the program <ob> uses:
+
+     int    [OIM_REF]:            number of references to the program.
+     string [OIM_NAME]:           name of program.
+     int    [OIM_PROG_SIZE]:      size of the program.
+     int    [OIM_NUM_FUNCTIONS]:  number of functions in the program.
+     int    [OIM_SIZE_FUNCTIONS]: size needed for the function structs.
+     int    [OIM_NUM_VARIABLES]:  number of variables in the program.
+     int    [OIM_SIZE_VARIABLES]: size needed for the variable structs.
+     int    [OIM_NUM_STRINGS]:    number of strings in the program.
+     int    [OIM_SIZE_STRINGS]:   size needed for the string pointers.
+     int    [OIM_SIZE_STRINGS_DATA]: size needed for the string data,
+                                  scaled down according to the extend of
+                                  data sharing.
+     int    [OIM_SIZE_STRINGS_TOTAL]: unmodified size needed for the
+                                  string data.
+     int    [OIM_NUM_INCLUDES]:   number of included files in the program.
+     int    [OIM_NUM_INHERITED]:  number of inherited programs.
+     int    [OIM_SIZE_INHERITED]: size needed for the inherit structs.
+     int    [OIM_TOTAL_SIZE]:     total size of the program.
+     int    [OIM_DATA_SIZE]:      total size of the values held in the
+                                  object's variables, scaled down
+                                  according to the extend of data
+                                  sharing.
+     int    [OIM_DATA_SIZE_TOTAL]: unmodified total size of the values
+                                  held in the object's variables
+     int    [OIM_NO_INHERIT]:     1 if the program can't be inherited.
+     int    [OIM_NO_CLONE]:       1 if the program/blueprint can't be
+                                  cloned.
+     int    [OIM_NO_SHADOW]:      1 if the program's functions can't be
+                                  shadowed.
+     int    [OIM_SHARE_VARIABLES]:  1 if clones of this program share
+                                  their initial variable values with
+                                  the blueprint.
+
+     This call swaps in the program if necessary.
+     Note that the OIM_SIZE_xxx entries only give the size spent on
+     the structures and pointers, not the size of the variable data,
+     function code, and strings themselves.
+
+
+HISTORY
+=======
+
+   Introduced in LDMud 3.2.6.
+   Changes in LDMud 3.2.7:
+     - new basic result OIB_REPLACED.
+     - basic result OIB_IS_WIZARD is always 0 if set_is_wizard()
+         is not available.
+     - basic result OIB_APPROVED is gone.
+   LDMud 3.2.8 added OIM_DATA_SIZE to the result of OINFO_MEMORY.
+   LDMud 3.2.9 added the index mechanism, OIM_NUM_INCLUDES,
+     OIM_NO_INHERIT, OIM_NO_SHADOW, OIM_NO_CLONE, OIM_SIZE_STRINGS_DATA,
+     OIM_SIZE_STRINGS_TOTAL, and OIM_DATA_SIZE_TOTAL to the result
+     of OINFO_MEMORY.
+   LDMud 3.3.378 added the OIM_SHARE_VARIABLES to the result
+     of OINFO_MEMORY.
+   LDMud 3.3.654 added the OIB_NEXT_CLEANUP to the result of OINFO_BASIC.
+
+
+SEE ALSO
+========
+
+   debug_info(E)
diff --git a/doc/sphinx/man/sefun/obsolete/exclude_alist b/doc/sphinx/man/sefun/obsolete/exclude_alist
new file mode 100644
index 0000000..5d1aace
--- /dev/null
+++ b/doc/sphinx/man/sefun/obsolete/exclude_alist
@@ -0,0 +1,11 @@
+
+exclude_alist()
+***************
+
+
+SYNOPSIS
+========
+
+   mixed *exclude_alist(int i, mixed *alist)
+
+Remove element i from alist.
diff --git a/doc/sphinx/man/sefun/obsolete/remove_alist b/doc/sphinx/man/sefun/obsolete/remove_alist
new file mode 100644
index 0000000..fceac4f
--- /dev/null
+++ b/doc/sphinx/man/sefun/obsolete/remove_alist
@@ -0,0 +1,7 @@
+
+remove_alist()
+**************
+
+mixed >>*<<remove_alist(mixed key, mixed >>*<<alist)
+
+Removes element associated by key key from alist.
diff --git a/doc/sphinx/man/sefun/old_explode b/doc/sphinx/man/sefun/old_explode
new file mode 100644
index 0000000..357e838
--- /dev/null
+++ b/doc/sphinx/man/sefun/old_explode
@@ -0,0 +1,53 @@
+
+old_explode()
+*************
+
+
+FUNKTION
+========
+
+   string *old_explode(string str, string del)
+
+
+ARGUMENTE
+=========
+
+   str - Der String, der aufgespaltet werden soll.
+   del - Der String, nach dem str aufgespalten werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Durch Ausschneiden von del wird der String str in ein Array von Strings
+   zerlegt. Dieses Array wird anschliessend zuruckgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Das Array mit den Bestandteilen der Zerlegung.
+
+
+BEMERKUNGEN
+===========
+
+   Das Verhalten von old_explode() entspricht dem dem explode()-Verhalten,
+   das in /doc/efun/explode als "altes" Verhalten bezeichnet wird, d.h.
+   Leerstrings an Anfang und Ende des zerlegten Strings werden entfernt!
+
+
+BEISPIELE
+=========
+
+   strs = explode( "nimm alles", " "); => strs = ({ "nimm", "alles" })
+   strs = explode( "abc", "abc" );     => strs = ({ })
+   strs = explode( "ein test", "" );   => strs = ({ "ein test" })
+   strs = explode( "a b", "a");        => strs = ({ " b" });
+
+
+SIEHE AUCH
+==========
+
+   explode(E), new_explode(E), efun::explode(E), sscanf(E)
+   implode(E), regexplode(E)
diff --git a/doc/sphinx/man/sefun/process_call b/doc/sphinx/man/sefun/process_call
new file mode 100644
index 0000000..cd43faf
--- /dev/null
+++ b/doc/sphinx/man/sefun/process_call
@@ -0,0 +1,38 @@
+
+process_call()
+**************
+
+simul_efun::process_call(E)
+
+
+FUNKTION
+========
+
+   int process_call()
+
+
+BESCHREIBUNG
+============
+
+   Gibt zurueck, ob die Ausfuehrung zum derzeitigen Zeitpunkt durch
+   process_string() ausgerufen wurde.
+
+
+BEISPIELE
+=========
+
+   process_string("@@current_long@@");
+   ...
+   string current_long() {
+    if(process_call())
+     return("Dieser String wurde durch ein process_string eingefuegt.");
+    else return("Du hast die Funktion direkt gerufen!");
+   }
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_string(E), replace_personal(E)
+
+28. Maerz 2004 Gloinson
diff --git a/doc/sphinx/man/sefun/process_string b/doc/sphinx/man/sefun/process_string
new file mode 100644
index 0000000..fbc7018
--- /dev/null
+++ b/doc/sphinx/man/sefun/process_string
@@ -0,0 +1,77 @@
+
+process_string()
+****************
+
+process_string(E)
+
+
+FUNKTION
+========
+
+   string process_string(string str)
+   string process_string(closure cl)
+
+
+BESCHREIBUNG
+============
+
+   Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
+   durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
+   durch einen impliziten Funktionsaufruf.
+
+   Der zu ersetzenden Substring hat die Form:
+   @@function[:filename][|argument1|argument2]@@
+
+   Die entsprechende Funktion muss einen String zurueckgeben, oder der
+   process_string() uebergebene String str wird nicht modifiziert.
+
+   process_string() arbeitet nicht rekursiv, object_name und argument sind
+   optionale Werte.
+
+   Falls eine Closure angegeben wurde, wird diese lediglich gerufen
+   und nicht gefiltert.
+
+
+ANMERKUNGEN
+===========
+
+   - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
+                 anfangen, '_' ist nicht moeglich!
+   - folgendes Properties und Details werden bei der Abfrage ueber
+     process_string() gefiltert:
+     P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
+     P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
+   - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
+     process_call()
+
+
+BEISPIEL
+========
+
+   // komplette Ersetzung ...
+   SetProp(P_LONG,"@@current_long@@");
+   ...
+   string current_long() {
+    if(x) return(break_string("Die Beschreibung."));
+    else return(break_string("Die andere Beschreibung."));
+   }
+
+   -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
+
+
+   // Teilersetzung
+   SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
+   ...
+   string farbenfun(string str) {
+    return(str+" "+"gelbes");
+   }
+
+   -> bei Abfrage: "Ein huebsch gelbes Ding."
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_call(E), replace_personal(E)
+
+22. Nov. 2006 Arathorn
diff --git a/doc/sphinx/man/sefun/query_editing b/doc/sphinx/man/sefun/query_editing
new file mode 100644
index 0000000..32358ed
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_editing
@@ -0,0 +1,29 @@
+
+query_editing()
+***************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   mixed query_editing(object ob);
+
+
+BESCHREIBUNG
+============
+
+   Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
+   Benutzer mit einer Socketverbindung zum Mud) und gerade mit ed() eine
+   Datei bearbeitet. Wenn ed() mit einem Funktionsnamen als zweites
+   Argument aufgerufen wird, wird das Objekt, aus dem ed() aufgerufen
+   wurde, geliefert, sonst 0.
+
+
+SIEHE AUCH
+==========
+
+   ed(E)
diff --git a/doc/sphinx/man/sefun/query_idle b/doc/sphinx/man/sefun/query_idle
new file mode 100644
index 0000000..7deccee
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_idle
@@ -0,0 +1,21 @@
+
+query_idle()
+************
+
+
+SYNOPSIS
+========
+
+   int query_idle(object ob);
+
+
+BESCHREIBUNG
+============
+
+   Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
+
+
+SIEHE AUCH
+==========
+
+   interactive(E)
diff --git a/doc/sphinx/man/sefun/query_input_pending b/doc/sphinx/man/sefun/query_input_pending
new file mode 100644
index 0000000..c40c355
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_input_pending
@@ -0,0 +1,27 @@
+
+query_input_pending()
+*********************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   object query_input_pending(object ob);
+
+
+BESCHREIBUNG
+============
+
+   Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
+   Efun das Objekt zurueck, welches den input_to() aufgerfuen hat. Ist
+   kein input_to() haengig, liefert die Funktion 0.
+
+
+SIEHE AUCH
+==========
+
+   input_to(E), find_input_to(E), input_to_info(E), remove_input_to(E)
diff --git a/doc/sphinx/man/sefun/query_ip_name b/doc/sphinx/man/sefun/query_ip_name
new file mode 100644
index 0000000..76de80f
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_ip_name
@@ -0,0 +1,28 @@
+
+query_ip_name()
+***************
+
+
+GESCHUETZT
+==========
+
+
+SYNOPSIS
+========
+
+   string query_ip_name(object ob);
+
+
+BESCHREIBUNG
+============
+
+   Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
+   <ob> nicht angegeben wurde. Der IP-Name wird durch den asynchronen
+   Prozess hname ermittelt. Wenn der IP-Name nicht ermittelt werden kann,
+   liefert query_ip_name() die IP-Nummer zurueck.
+
+
+SIEHE AUCH
+==========
+
+   query_ip_number(E)
diff --git a/doc/sphinx/man/sefun/query_ip_number b/doc/sphinx/man/sefun/query_ip_number
new file mode 100644
index 0000000..d09bc88
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_ip_number
@@ -0,0 +1,43 @@
+
+query_ip_number()
+*****************
+
+
+GESCHUETZT
+==========
+
+
+SYNOPSIS
+========
+
+   string query_ip_number(object ob);
+   string query_ip_number(mixed & ob);
+
+
+BESCHREIBUNG
+============
+
+   Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
+   wenn <ob> nicht angegeben wurde.
+
+   Wenn <ob> als Referenz angegeben wird (dann muss es ein gueltiges
+   Objekt sein), wird dieses bei der Ausgabe auf die struct sockaddr_in
+   gesetzt. struct sockaddr_in ist ein Integer-Array, mit einem Integer
+   pro Adressbyte:
+
+       ob[0 .. 1] : sin_family
+       ob[2 .. 3] : sin_port
+       ob[4 .. 7] : sin_addr
+       ob[8 ..15] : nicht definiert.
+
+
+AENDERUNGEN
+===========
+
+   Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
+
+
+SIEHE AUCH
+==========
+
+   query_ip_name(E)
diff --git a/doc/sphinx/man/sefun/query_limits b/doc/sphinx/man/sefun/query_limits
new file mode 100644
index 0000000..8af988f
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_limits
@@ -0,0 +1,82 @@
+
+query_limits()
+**************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <sys/rtlimits.h>
+
+   int *query_limits();
+   int *query_limits(int default);
+
+
+BESCHREIBUNG
+============
+
+   Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
+   die standardmaessigen Laufzeit Limiten, wenn <default> wahr ist.
+   Die Eintraege im gelieferten Array bedeuten:
+
+   int[LIMIT_EVAL]:        die maximalen Eval Kosten
+   int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
+   int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
+   int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
+                           /write_bytes() bearbeitet werden koennen
+   int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
+                           /write_file() bearbeitet werden koennen
+   int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
+   int[LIMIT_COST]:        wie die aktuellen Kosten einzurechnen sind
+
+   Ausser fuer LIMIT_COST ein Limit von '0' (auch LIMIT_UNLIMITED)
+   bedeutet 'keine Limit'.
+
+   LIMIT_COST hat diese Bedeutungen:
+
+
+
+     wert > 0: Maximal <wert> fuer als Kosten fuer die aktuelle Ausfuehrung
+               verwendet, ungeachtet wie lange sie tatsaechlich dauert.
+          = 0: ist die derzeite LIMIT_EVAL groesser als die vorherige
+               LIMIT_EVAL, kostet die aktuelle Ausfuehrung nur 10
+               Ticks; andernfalls werden die gesamten Kosten angerechnet.
+           < 0: (-wert)% der aktuellen Ausfuehrungskosten werden
+                angerechnet.
+
+
+BEMERKUNGEN
+===========
+
+   "Aktuelle Kosten" bei LIMIT_COST hat im Falle der Benutzung von
+   limited() die Bedeutung von "im limited verbrauchte Kosten", steuert
+   also, wieviel der im Durchlaufen der Funktion im limited()
+   verbrauchten Ticks mit dem Ende von limited() angezogen wird.
+
+
+BEISPIELE
+=========
+
+   query_limits()
+   --> liefert die momentan gueltigen Laufzeit Limiten.
+   query_limits(1)
+   --> liefert die standardmaessigen Laufzeit Limiten.
+
+
+AENDERUNGEN
+===========
+
+   Eingefuehrt in LDMud 3.2.7.
+   LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
+
+
+SIEHE AUCH
+==========
+
+   limited(E), set_limits(E)
+
+16.05.2007, Zesstra
diff --git a/doc/sphinx/man/sefun/query_mud_port b/doc/sphinx/man/sefun/query_mud_port
new file mode 100644
index 0000000..de4c1e2
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_mud_port
@@ -0,0 +1,39 @@
+
+query_mud_port()
+****************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   int query_mud_port(void)
+   int query_mud_port(object user)
+   int query_mud_port(int num)
+
+
+DESCRIPTION
+===========
+
+   Returns the port number the parser uses for user connections.
+
+   If no argument is given, the port for this_player() is
+   returned. If this_player() is not existing or not interactive,
+   the first port number open for connections is returned.
+
+   If an user object is given, the port used for its connection
+   is returned.
+   If a positive number is given, the <num>th port number the
+   parser uses for connections is returned (given that there are
+   that many ports).
+   If -1 is given, the number of ports open for connections is
+   returned.
+
+
+SEE ALSO
+========
+
+   query_udp_port(E)
diff --git a/doc/sphinx/man/sefun/query_next_reset b/doc/sphinx/man/sefun/query_next_reset
new file mode 100644
index 0000000..528ae56
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_next_reset
@@ -0,0 +1,47 @@
+
+query_next_reset()
+******************
+
+simul_efun::query_next_reset(E)
+
+
+FUNKTION
+========
+
+   varargs int query_next_reset(object ob)
+
+
+ARGUMENTE
+=========
+
+   ob - das interessierende Objekt; wenn nicht angegeben, wird
+        this_object() verwendet
+
+
+BESCHREIBUNG
+============
+
+   Diese sefun gibt den Zeitpunkt des naechsten Resets des Objektes ob
+   zurueck. Die Angabe erfolgt in Sekunden, die seit dem 01. Januar 1970
+   00:00:00 GMT verstrichen sind, analog zu time().
+
+   In der Regel erfolgt der Reset im naechsten Backend-Zyklus nach dem
+   Faelligkeitszeitpunkt,  d.h. momentan in den nachfolgenden 2s.
+   Allerdings kann dies auch mal nen Zyklus laenger dauern (4s), wenn der
+   Driver viel zu tun hat.
+
+
+BEMERKUNGEN
+===========
+
+   Diese sefun ist object_info()-Abfragen vorzuziehen, da die Parameter und
+   Rueckgabewerte von object_info() bei verschiedenen Gamedriverversionen
+   variieren koennen.
+
+
+SIEHE AUCH
+==========
+
+   call_out(E), object_info(E), reset(L), set_next_reset(E), time(E)
+
+28.07.2014 Arathorn
diff --git a/doc/sphinx/man/sefun/query_once_interactive b/doc/sphinx/man/sefun/query_once_interactive
new file mode 100644
index 0000000..bfb8b55
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_once_interactive
@@ -0,0 +1,21 @@
+
+query_once_interactive()
+************************
+
+
+SYNOPSIS
+========
+
+   int query_once_interactive(object obj);
+
+
+BESCHREIBUNG
+============
+
+   Wahr, wenn <obj> interaktiv ist oder dies einmal war.
+
+
+SIEHE AUCH
+==========
+
+   remove_interactive(E)
diff --git a/doc/sphinx/man/sefun/query_shadowing b/doc/sphinx/man/sefun/query_shadowing
new file mode 100644
index 0000000..aadf109
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_shadowing
@@ -0,0 +1,38 @@
+
+query_shadowing()
+*****************
+
+
+DEPRECATED
+==========
+
+query_shadowing(E)
+
+
+FUNKTION
+========
+
+   object query_shadowing(object obj)
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion gibt das derzeit vom Objekt <obj> beschattete Objekt
+   victim oder 0 zurueck.
+
+
+BEISPIELE
+=========
+
+   // B beschattet A
+   query_shadowing(find_object(B)) == A
+
+
+SIEHE AUCH
+==========
+
+   Generell:       shadow(E), unshadow(E)
+   Rechte:         query_allow_shadow(M), query_prevent_shadow(L)
+
+23.02.2016, Zesstra
diff --git a/doc/sphinx/man/sefun/query_snoop b/doc/sphinx/man/sefun/query_snoop
new file mode 100644
index 0000000..94e598a
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_snoop
@@ -0,0 +1,26 @@
+
+query_snoop()
+*************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   object query_snoop(object victim)
+
+
+DESCRIPTION
+===========
+
+   Returns the user who currently snoops victim. The calling
+   object must be privileged by the master object.
+
+
+SEE ALSO
+========
+
+   snoop(E)
diff --git a/doc/sphinx/man/sefun/query_wiz_grp b/doc/sphinx/man/sefun/query_wiz_grp
new file mode 100644
index 0000000..fe01fbd
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_wiz_grp
@@ -0,0 +1,34 @@
+
+query_wiz_grp()
+***************
+
+
+FUNKTION
+========
+
+   query_wiz_grp(string wiz)
+   query_wiz_grp(object wiz)
+
+
+ARGUMENTE
+=========
+
+   wiz - Spieler, dessen Magierlevelgruppe ermittelt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt die Magiergruppe, der der Spieler wiz angehoert.
+
+
+RUECKGABEWERT
+=============
+
+   Die Magierlevelgruppe des Spielers.
+
+
+SIEHE AUCH
+==========
+
+   /secure/wizlevels.h
diff --git a/doc/sphinx/man/sefun/query_wiz_level b/doc/sphinx/man/sefun/query_wiz_level
new file mode 100644
index 0000000..3645035
--- /dev/null
+++ b/doc/sphinx/man/sefun/query_wiz_level
@@ -0,0 +1,70 @@
+
+query_wiz_level()
+*****************
+
+
+FUNKTION
+========
+
+   int query_wiz_level(object ob)
+   int query_wiz_level(string ob)
+
+
+ARGUMENTE
+=========
+
+    ob - Der Spieler/das Objekt, dessen Magierlevel ermittelt werden soll.
+   Es kann auch eine UID (z.B. "zesstra", "d.inseln.zesstra") als String
+   uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+         query_wiz_level() liefert den Magierlevel des Objekts ob zurueck.
+         Normale Spieler haben einen Magierlevel von 0, Seher normalerweise
+   einen von 1 (auf jeden Fall < 10).
+   Objekte bekommen folgende Level:
+   /d/           - 25
+   /p/           - 21
+   /obj/         - 0
+   /std/         - 0
+   /gilden/      - 30
+   /spellbooks/  - 30
+   /players/     - entsprechend Magier, 20 - 111
+   /secure/      - 100
+
+
+RUECKGABEWERT
+=============
+
+   Der Magierlevel des Spielers/Objekts.
+
+
+BEMERKUNGEN
+===========
+
+   Wird als Parameter ein String mit einem Spielernamen uebergeben, so
+   kann auch der Magierlevel eines nicht eingeloggten Spielers heraus-
+   gefunden werden.
+
+
+BEISPIELE
+=========
+
+   lv = query_wiz_level(find_player("jof"))
+      => lv = 111, falls Jof eingeloggt ist.
+   lv = query_wiz_level("jof")
+      => lv = 111 in jedem Fall.
+
+
+SIEHE AUCH
+==========
+
+   /secure/wizlevels.h
+
+
+LETZTE AeNDERUNG
+================
+
+15.10.2007, Zesstra
diff --git a/doc/sphinx/man/sefun/read_data b/doc/sphinx/man/sefun/read_data
new file mode 100644
index 0000000..1756890
--- /dev/null
+++ b/doc/sphinx/man/sefun/read_data
@@ -0,0 +1,34 @@
+
+read_data()
+***********
+
+
+SYNOPSIS
+========
+
+   string read_data(string file, int start, int anzahl)
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion macht genau das, was read_file() tut (also siehe dort),
+   allerdings stellt sie sicher, dass <file> immer mit einem /data/
+   beginnt (setzt es also notfalls davor).
+   Es wird also immer irgendwo unterhalb von /data/ gelesen.
+
+
+BEISPIEL
+========
+
+   # read_data("/d/ebene/zesstra/blupp");
+   -> liest das File /data/d/ebene/zesstra/blupp.
+   # read_data("/data/d/ebene/zesstra/blupp");
+   -> tut dasselbe.
+
+
+SIEHE AUCH
+==========
+
+   write_data()
+   read_file(E), write_file(E), read_bytes(E), write_file(E)
diff --git a/doc/sphinx/man/sefun/replace_personal b/doc/sphinx/man/sefun/replace_personal
new file mode 100644
index 0000000..3804be3
--- /dev/null
+++ b/doc/sphinx/man/sefun/replace_personal
@@ -0,0 +1,113 @@
+
+replace_personal()
+******************
+
+
+FUNKTION
+========
+
+   varargs string replace_personal(string str, mixed *obs [, int caps]);
+
+
+DEFINIERT IN
+============
+
+   /secure/simul_efun.c
+
+
+ARGUMENTE
+=========
+
+   str    - zu bearbeitender String
+   obs    - Liste von Objekt1, Objekt2, ..., Objekt9
+            (Objekte oder Strings)
+   caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
+            0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Ersetzt in Strings
+   @WERx, @WESSENx, @WEMx, @WENx durch
+      Objectx->name(<casus>, 1);
+   @WERUx, @WESSENUx, @WEMUx, @WENUx durch
+      Objectx->name(<casus>);
+   @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
+      Objectx->QueryPronoun(<casus>);
+   @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
+      Objectx->QueryArticle(<casus>, 1, 1);
+   @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
+      Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
+   oder den entsprechenden String bei "Objektx".
+
+
+BEMERKUNGEN
+===========
+
+   x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
+
+
+
+   Besonderheiten beim Possessivpronomen (@WERQPPGNx):
+   G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
+   oder P) ersetzt werden.
+   Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
+   besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
+   bestimmt.
+
+
+RUeCKGABEWERT
+=============
+
+   durchersetzter String
+
+Beispiele
+
+   replace_personal("@WER1", ({find_player("gloinson")})) ==
+   "Gloinson"
+
+   replace_personal("@WEMQP1", ({find_player("gloinson")})) == "ihm"
+
+   // unbestimmter und bestimmter Artikel: replace_personal("@WER1
+   zueckt @WENU2 und verhaut @WEN3.",
+
+      ({find_player("gloinson"),
+         find_object("/obj/mpa"), find_object("/obj/wanderer")}))
+
+   == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
+
+   // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ, //
+   Femininum, Plural) auf die Taschen, nicht auf Kessa:
+   replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
+
+      "Taschen.", ({find_player("kessa"),
+
+         find_player("gloinson")}))
+
+   == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
+
+   // Ein Beispiel mit laengerem >>*<<obs: replace_personal("@WER1
+   zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
+
+      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die " "@WEN4
+      haut und die Schuhe in @WEMQPPFS2 Tasche " "verschwinden laesst.
+      @WERU5 schaut zu und kichert " "irre. Wenn das @WER6 gesehen
+      haette!", ({find_player("gloinson"),
+
+         find_player("kessa"), find_object("/obj/mpa"), "Birne",
+         find_object("/obj/wanderer"), find_netdead("jof")}),1)
+
+   == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so
+   beeindruckt, "
+      "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in
+      ihrer " "Tasche verschwinden laesst. Ein Wanderer schaut zu und
+      kichert " "irre. Wenn das Jof gesehen haette!"
+
+
+SIEHE AUCH
+==========
+
+   AddCmd(L)
+
+5. September 2015, Arathorn
diff --git a/doc/sphinx/man/sefun/restore_object b/doc/sphinx/man/sefun/restore_object
new file mode 100644
index 0000000..631252d
--- /dev/null
+++ b/doc/sphinx/man/sefun/restore_object
@@ -0,0 +1,31 @@
+
+restore_object()
+****************
+
+
+SYNOPSIS
+========
+
+   mixed restore_object(string name);
+
+
+BESCHREIBUNG
+============
+
+   Diese Simul-Efun unterscheidet sich in einigen Details von der
+   Driver-Efun restore_object() (s. auch dort! Wichtig!).
+
+   1. diese sefun restauriert auch die mit F_SAVE markierten Properties
+   eines Objektes, sofern das Savefile von sefun save_object erstellt
+   wurde (was die efun des Driver nicht tut!).
+   2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
+   wird das Savefile als erstes immer unter /data/+name gesucht. Erst wenn es
+   dort nicht gefunden wird, wird unter name gesucht.
+
+
+SIEHE AUCH
+==========
+
+   save_object(E), restore_object(E), save_value(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sphinx/man/sefun/save_object b/doc/sphinx/man/sefun/save_object
new file mode 100644
index 0000000..fc8175f
--- /dev/null
+++ b/doc/sphinx/man/sefun/save_object
@@ -0,0 +1,35 @@
+
+save_object()
+*************
+
+
+SYNOPSIS
+========
+
+   mixed save_object(string name);
+
+
+BESCHREIBUNG
+============
+
+   Diese Simul-Efun unterscheidet sich in einigen Details von der
+   Driver-Efun save_object() (s. auch dort! Wichtig!).
+   1. diese sefun speichert auch die mit F_SAVE markierten Properties
+   eines Objektes ab (was die efun des Driver nicht tut!).
+   2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
+   wird /data/ vorangestellt, d.h. das Savefile wird immer unter /data/
+   erstellt.
+   3. das Format, in dem gespeichert wird, kann bei der sefun nicht
+   ausgewaehlt werden (ist aber auch nicht noetig!), sondern ein
+   mudlib-weiter Standard wird benutzt.
+   4. will man nicht in einem File speichern, sondern das, was im File
+   stehen wurde, als String zurueckhaben, muss man 0 als 'name'
+   uebergeben.
+
+
+SIEHE AUCH
+==========
+
+   save_object(E), restore_object(E), save_value(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sphinx/man/sefun/send_room b/doc/sphinx/man/sefun/send_room
new file mode 100644
index 0000000..7ddf43d
--- /dev/null
+++ b/doc/sphinx/man/sefun/send_room
@@ -0,0 +1,42 @@
+
+send_room()
+***********
+
+
+FUNKTION
+========
+
+varargs void send_room(object|string room, string msg, int msg_type,
+   string msg_action, string msg_prefix, object >>*<<exclude, object
+   origin)
+
+
+BESCHREIBUNG
+============
+
+   Sendet msg an alle Objekte in room durch Aufruf von ReceiveMsg() mit
+   den uebergebenen Argumenten.
+   Zur Bedeutung der Argumente siehe Manpage von ReceiveMsg().
+
+   Wenn das Raumobjekt mit seinem Namen angegeben ist, wird das Objekt
+   unter diesem Namen gesucht und und geladen, falls notwendig.
+
+   Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
+   die darin enthaltenen Objekte gesendet wird.
+   Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
+   und diese selbst nicht erhalten soll.
+
+   origin gibt an, welches Objekt die Meldung ausloest (muss nicht das
+   sendende Objekt selber) und wird vor allem fuer die Ignorierepruefung
+   verwendet. Default ist das sendende Objekt.
+
+   Letztendlich ist die sefun vergleichbar zu tell_room().
+
+
+SIEHE AUCH
+==========
+
+   ReceiveMsg(L)
+   tell_object(E), tell_room(E), say(E), write(E)
+
+13.03.2016, Zesstra
diff --git a/doc/sphinx/man/sefun/set_heart_beat b/doc/sphinx/man/sefun/set_heart_beat
new file mode 100644
index 0000000..a304181
--- /dev/null
+++ b/doc/sphinx/man/sefun/set_heart_beat
@@ -0,0 +1,41 @@
+
+set_heart_beat()
+****************
+
+
+SYNOPSIS
+========
+
+   int set_heart_beat(int flag);
+
+
+BESCHREIBUNG
+============
+
+   Schaltet den Heartbeat ein (1) oder aus (0). Der Treiber wendet die
+   Lfun heart_beat() auf das aktuelle Objekt alle __HEARTBEAT_INTERVAL__
+   Sekunden an, wenn der Heartbeat eingeschaltet ist. Ein Shadow
+   auf der Lfun wird ignoriert.
+
+
+
+   Der Heartbeat sollte immer ausgeschaltet werden, wenn er nicht
+   gebraucht wird. Das reduziert die Systemauslastung.
+
+   Liefert '1' bei Erfolg, '0' bei Fehler.
+
+   Das Abschalten eines bereits abgeschalteten Heartbeats (und umgekehrt
+   das Einschalten eines bereits eingeschalteten Heartbeats) zaehlt
+   als Fehler.
+
+
+BEMERKUNGEN
+===========
+
+   __HEARTBEAT_INTERVAL__ ist in MG = 2 Sekunden
+
+
+SIEHE AUCH
+==========
+
+   heart_beat(A), call_out(E)
diff --git a/doc/sphinx/man/sefun/set_light b/doc/sphinx/man/sefun/set_light
new file mode 100644
index 0000000..b9dfc9c
--- /dev/null
+++ b/doc/sphinx/man/sefun/set_light
@@ -0,0 +1,32 @@
+
+set_light()
+***********
+
+
+SYNOPSIS
+========
+
+   int set_light(int n)
+
+
+DESCRIPTION
+===========
+
+   An object is by default dark. It can be set to not dark by
+   calling set_light(1). The environment will then also get this
+   light. The returned value is the total number of lights in
+   this room. So if you call set_light(0) it will return the
+   light level of the current object.
+
+
+
+   Note that the value of the argument is added to the light of
+   the current object.
+
+
+BUGS
+====
+
+   This handling of light by the parser is inappropriate for most
+   purposes: If you put a burning candle into a safe, the safe
+   will start to emit light.
diff --git a/doc/sphinx/man/sefun/set_living_name b/doc/sphinx/man/sefun/set_living_name
new file mode 100644
index 0000000..e588e6e
--- /dev/null
+++ b/doc/sphinx/man/sefun/set_living_name
@@ -0,0 +1,41 @@
+
+set_living_name()
+*****************
+
+
+SYNOPSIS
+========
+
+   void set_living_name(string name)
+
+
+BESCHREIBUNG
+============
+
+   Setzt einen "Lebewesennamen" fuer das Objekt, indem Name und Objekt in
+   eine Tabelle eingetragen werden, welche von find_living() durchsucht
+   wird. Nach Setzen des Namens kann das Objekt per find_living()
+   gefunden werden.
+
+   Das Objekt muss ausserdem per enable_commands() als Lebewesen
+   markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
+   _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
+   werden.
+
+   Alle von /std/npc erbenden NPCs setzen ebenfalls automatisch einen
+   LivingName, der lower_case(P_NAME) entspricht.
+
+   Ein Objekt kann nur einen Namen haben, mit dem es per find_living()
+   gesucht werden kann.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_livings(E), find_player(E), enable_commands(E)
+
+
+LETZTE AeNDERNG
+===============
+
+19.10.2015, Arathorn
diff --git a/doc/sphinx/man/sefun/set_object_heart_beat b/doc/sphinx/man/sefun/set_object_heart_beat
new file mode 100644
index 0000000..caecca2
--- /dev/null
+++ b/doc/sphinx/man/sefun/set_object_heart_beat
@@ -0,0 +1,34 @@
+
+set_object_heart_beat()
+***********************
+
+
+FUNKTION
+========
+
+   int set_object_heart_beat(object ob, int on)
+
+
+ARGUMENTE
+=========
+
+   ob - Objekt, dessen heart_beat veraendert werden soll
+   on - Soll der heart_beat ein- oder ausgeschaltet werden?
+
+
+BESCHREIBUNG
+============
+
+   Der heart_beat des Objektes wird ein- (on=1) oder aus- (on=0) geschaltet.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn das Setzen geklappt hat, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   set_heart_beat(E), heart_beat(L), call_out(E)
diff --git a/doc/sphinx/man/sefun/sha1 b/doc/sphinx/man/sefun/sha1
new file mode 100644
index 0000000..ef3b10e
--- /dev/null
+++ b/doc/sphinx/man/sefun/sha1
@@ -0,0 +1,44 @@
+
+sha1()
+******
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   string sha1 (string arg)
+   string sha1 (int *  arg)
+
+
+BESCHREIBUNG
+============
+
+   Berechnet den SHA1-Hashwert von <arg>.
+   Das Argument kann ein String, oder ein Array von Zahlen sein (von
+   welchen nur das unterste Byte betrachted wird).
+
+
+BEISPIEL
+========
+
+   string s;
+
+   s = sha1("Hello");
+   s = sha1( ({ 'H', 'e', 'l', 'l', 'o' })
+
+
+HISTORY
+=======
+
+   Eingefuehrt in LDMud 3.3.523.
+   LDMud 3.3.712 fuehrte Zaehlenarrays als Argument ein.
+
+
+SIEHE AUCH
+==========
+
+   crypt(E), md5(E)
diff --git a/doc/sphinx/man/sefun/shadow b/doc/sphinx/man/sefun/shadow
new file mode 100644
index 0000000..2b7032c
--- /dev/null
+++ b/doc/sphinx/man/sefun/shadow
@@ -0,0 +1,162 @@
+
+shadow()
+********
+
+
+FUNKTION
+========
+
+   object shadow(object ob, int flag)
+
+
+ARGUMENTE
+=========
+
+   object ob          - das vom shadow betroffene Objekt
+   int flag           - 0 fuer eine Shadow-Existenzabfrage
+                    1 fuer Shadow durch previous_object()
+
+
+BESCHREIBUNG
+============
+
+   Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
+   als Shadow uebergeworfen. Bei Erfolg wird das geshadowte Objekt
+   zurueckgegeben, sonst 0.
+   Wenn <flag> 0 ist, wird entweder 0 oder das geshadowte Objekt
+   zurueck gegeben.
+
+   Wenn ein Objekt A ein Objekt B beschattet, werden alle call_other() fuer
+   B auf A umgeleitet. Wenn die an B gerufene Funktion in A existiert, so
+   wird sie in A gerufen, bei Nichtexistenz in B.
+   A ist das einzige Objekt, welche die beschatteten Funktionen mit
+   call_other() in B aufrufen kann, selbst B kann nicht per call_other()
+   diese Funktion rufen.
+   Alle intern verwendeten Funktionen arbeiten jedoch weiterhin normal.
+
+   Das aufrufende Objekt muss vom Master-Objekt die Erlaubnis haben,
+   als Shadow zu wirken.
+
+   Es gibt folgende Kriterien fuer eine erfolgreiche Beschattung:
+   - das zu beschattende Objekt ob:
+     - ist weder ein access_rights-Objekt noch ein ROOT-Objekt
+     - gibt beim Aufruf von query_prevent_shadow(beschatter) eine 0
+       zurueck
+     - beschattet selbst niemanden
+     - hat kein '#pragma no_shadow' gesetzt
+   - der Beschatter:
+     - wird nicht selbst (direkt) beschattet
+     - beschattet noch niemanden (sonst folgt direkter Abbruch)
+     - hat kein environment()
+     - definiert/beschattet keine Methode, die im beschatteten Objekt ob
+       als nomask definiert ist
+
+   Beschattet man ein Objekt A mit einem Objekt B und dann das Objekt A
+   zusaetzlich mit einem Objekt C, so wird eine Beschattungshierarchie
+   erstellt:
+
+   B macht shadow(A, 1)
+   B->A
+   C macht shadow(A, 1)
+   C->B->A
+
+
+BEISPIELE
+=========
+
+   // wenn: B beschattet A, dann
+   shadow(find_object(A), 0) == B
+
+
+   // 3 Objekte beschatten in Hierarchie (liegt auch im Pfad)
+   --- aa.c ---
+   void fun() {
+       printf("%O [a] fun()\n", this_object());
+   }
+
+   void fun3() {
+       printf("%O [a] fun3()\n", this_object());
+   }
+
+   --- bb.c ---
+   int fun() {
+       printf("%O [b] fun()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun();
+   }
+
+   void fun2() {
+       printf("%O [b] fun2()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun3();
+       this_object()->fun3();
+   }
+
+   void do_shadow(object target) { shadow(target, 1); }
+
+   --- cc.c ---
+   int fun() {
+       printf("%O [c] fun()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun();
+   }
+
+   void fun3() {
+       printf("%O [c] fun3()\n", this_object());
+   }
+
+   void do_shadow(object target) { shadow(target, 1); }
+
+   // darauf arbeitender Code
+
+   object a, b, c;
+
+   destruct("/doc/beispiele/shadow/aa");
+   a = load_object("/doc/beispiele/shadow/aa");
+   destruct("/doc/beispiele/shadow/bb");
+   b = load_object("/doc/beispiele/shadow/bb");
+   destruct("/doc/beispiele/shadow/cc");
+   c = load_object("/doc/beispiele/shadow/cc");
+
+   b->do_shadow(a);
+   c->do_shadow(a);
+   printf("--- a->fun() ---\n");
+   a->fun();
+   printf("--- b->fun() ---\n");
+   b->fun();
+   printf("--- c->fun() ---\n");
+   c->fun();
+   printf("--- b->fun2() ---\n");
+   b->fun2();
+
+   // ... und seine Ausgabe:
+
+   --- a->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- b->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- c->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- b->fun2() ---
+   /doc/beispiele/shadow/bb [b] fun2()
+   /doc/beispiele/shadow/aa [a] fun3()
+   /doc/beispiele/shadow/cc [c] fun3()
+
+   // Der erste Aufruf von b::fun2() in a findet sofort a::fun3()! Der
+   // Driver nimmt an, dass alle Shadows ab c bei Rufen von b nach a
+   // schon ihre Chance hatten.
+   // Der zweite Aufruf allerdings ist auf b und wird beim Durchgeben
+   // an a von c uebernommen.
+
+
+SIEHE AUCH
+==========
+
+   Generell:       shadow(E)
+   Rechte:         query_allow_shadow(M), query_prevent_shadow(L)
+   Informationen:  query_shadowing(E)
+
+8.Aug 2007 Gloinson
diff --git a/doc/sphinx/man/sefun/shout b/doc/sphinx/man/sefun/shout
new file mode 100644
index 0000000..0d38abb
--- /dev/null
+++ b/doc/sphinx/man/sefun/shout
@@ -0,0 +1,93 @@
+
+shout()
+*******
+
+
+FUNKTION
+========
+
+   varargs void shout( string text, mixed where )
+
+
+DEFINIERT IN
+============
+
+   /secure/simul_efun.c
+
+
+ARGUMENTE
+=========
+
+   text
+        Der Text, der ausgegeben werden soll
+
+   where [optional]
+        Wo soll man den Text ueberall hoeren koennen?
+
+
+BESCHREIBUNG
+============
+
+   Der Text 'text' wird an alle Spieler in einem Gebiet ausgegeben.
+   Wird der Parameter 'where' weggelassen bzw. ist er null, so geht der
+   Text an alle Spieler im Mud. Das catch_tell() von NPCs wird nicht
+   ausgeloest.
+
+   Ist 'where' eine Zahl != 0, so wird der Text nur an Spieler ausgegeben,
+   die sich im selben Gebiet aufhalten wie this_player(). Dabei wird die
+   Zugehoerigkeit zum selben Gebiet an den ersten zwei Ebenen des Pfades
+   der Raeume festgemacht. Befindet sich this_player() z.B. in
+   "/d/ebene/irgendwo", so geht der Text an alle Spieler, deren Aufenthalts-
+   orte in "/d/ebene/*" liegen.
+
+   Fuer 'where' kann auch direkt ein Pfad angegeben werden. So wuerde ein
+   'shout( txt, "/players/" )' an alle Spieler gehen, die sich in
+   (eigentlich nicht erwuenschten) Raeumen in /players/* befinden.
+
+   Um mit einem Aufruf gleich mehrere Pfade abzudecken, kann auch ein Array
+   von Strings uebergeben werden. Alle Pfade werden als 'regular expression'
+   interpretiert. Dadurch ist es moeglich, die Zielraeume auf einfache Art
+   sehr genau einzuschraenken.
+
+   HINWEIS: Bitte ueberleg vor jedem shout() genau, ob es wirklich noetig
+   ist, dass _jeder_ etwas davon mitbekommt oder ob es nicht vielleicht
+   sinnvoller ist, das Zielgebiet etwas einzuschraenken. Im Zweifelsfall
+   sollte der zustaendige RM aufpassen, dass die Spieler nicht durch allzu
+   zahlreiche shouts belaestigt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   shout( "Du spuerst, wie ein Zittern durch das MorgenGrauen geht.\n" );
+      Der allseits bekannte Text wird an alle Spieler im MG ausgegeben.
+
+   shout( "Du hoerst eine gewaltige Explosion.\n", 1 );
+      Von der Explosion bekommen alle Spieler in derselben Gegend etwas mit,
+      aber nicht am anderen Ende des Muds.
+
+   shout( "Irgendwo ist ein Baum umgefallen.\n", "/d/vland/" );
+      ... gibt eine Meldung aus, die keinen wirklich interessiert. Aber es
+      trifft eh nur Leute in einem unwichtigen Teil des MorgenGrauen. ;-)
+
+   shout( "Aufwachen Du Idler!\n", "/players/.*/workroom" );
+      Mit Hilfe von regular expressions kann man recht einfach z.B. alle
+      Workrooms auf einmal adressieren.
+
+   shout( "Halloooooo, Echoooooo!\n", ({ "/d/gebirge/", "/d/ebene/" }) );
+      Wenn der Spieler hoch oben auf dem Berg laut genug ruft, hoert man
+      ihn auch noch weit in der Ebene.
+
+
+SIEHE AUCH
+==========
+
+   write(), say(), tell_object(), tell_room(), regexp()
+
+Last modified: Sun Nov 28 03:00:00 1999 by Tiamak
diff --git a/doc/sphinx/man/sefun/time2string b/doc/sphinx/man/sefun/time2string
new file mode 100644
index 0000000..4acd1a2
--- /dev/null
+++ b/doc/sphinx/man/sefun/time2string
@@ -0,0 +1,75 @@
+
+time2string()
+*************
+
+
+FUNKTION
+========
+
+   string time2string( string format, int time )
+
+
+ARGUMENTE
+=========
+
+   format: String, der das Format der Zeitausgabe festlegt.
+   time: Eine Anzahl von Sekunden, die ausgegeben werden soll.
+
+
+ERGEBNIS
+========
+
+   Zeit in String-Form.
+
+
+BESCHREIBUNG
+============
+
+     Der Formatstring wird zurueckgegeben, wobei bestimmte Ersetzungs-
+     symbole durch passende Daten, die aus der Zeit berechnet werden,
+     ersetzt werden. Die Ersetzungssymbole funktionieren aehnlich
+     denen aus 'printf' bekannten Symbolen. Insbesondere kann eine
+     Feldbreite mit angegeben werden.
+
+     Folgende Ersetzungssymbole sind erlaubt:
+     %%      wird durch ein Prozent (%) ersetzt.
+     %n, %w, %d, %h, %m, %s
+               werden durch die Anzahl der Monate, Wochen, Tage, Stunden, Minuten oder
+   Sekunden ersetzt. Die Funktion erkennt, welches die groesste benutzte
+               Zeiteinheit ist und rechnet die keineren so um, dass sie zwischen 0 und
+   jeweiligen Maximum der Zeiteinheit liegen (59, 23 etc.) liegen.
+     %N      wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
+   je nachdem welchen Wertd %n haette.
+     %W      wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
+               je nachdem welchen Wert %w haette.
+     %D      wird durch die Worte 'Tag' oder 'Tage' ersetzt,
+               je nachdem welchen Wert %d haette.
+     %H,%M,%S
+               werden durch die Worte 'Stunde(n)', 'Minute(n)' bzw. 'Sekunde(n)'
+   ersetzt.
+     %X      wird durch die groesste Zeiteinheit ersetzt, die nicht Null ist. Wenn
+   bei %X die Feldbreite 0 angegeben wird (also %0X), dann wird nicht der
+   ausgeschriebene Name, sonder eine Abkuerzung fuer die Zeiteinheit
+   ausgegeben. (Das sind dann 'd','h','m' oder 's'.)
+     %x      wird durch den numerischen Wert dieser Zeiteinheit
+               ersetzt.
+
+
+BEISPIELE
+=========
+
+   time2string( "%m %M", 60 ) -> "1 Minute"
+   time2string( "%m %M", 120 ) -> "2 Minuten"
+   time2string( "%s %S", 125 ) -> "125 Sekunden"
+   time2string( "%m %M und %s %S" ) -> "2 Minuten und 5 Sekunden"
+   time2string( "%d:%02h:%02m:%02s", 10000 ) -> "0:02:46:40"
+   time2string( "%x %X", 3600 ) -> "1 Stunde"
+   time2string( "%x %0X", 3600 ) -> "1 h"
+   time2string( "%x %X", 360000 ) -> "4 Tage"
+   time2string( "%x %0X", 360000 ) -> "4 d"
+
+
+SIEHE AUCH
+==========
+
+   sprintf(E)
diff --git a/doc/sphinx/man/sefun/update_actions b/doc/sphinx/man/sefun/update_actions
new file mode 100644
index 0000000..b25c07c
--- /dev/null
+++ b/doc/sphinx/man/sefun/update_actions
@@ -0,0 +1,63 @@
+
+update_actions()
+****************
+
+
+FUNKTION
+========
+
+   void update_actions()
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Falls eine Aktion ein add_action() ausgeloest hat, werden mit dieser
+   Funktion die neuen Befehle bei allen Lebewesen im aufrufenden Objekt
+   bzw. in der Umgebung des aufrufenden Objektes aktiv.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird eigentlich nur benoetigt, wenn man mit add_action()
+   anstelle von AddCmd() arbeitet (zB. bei Objekten, die nicht
+   /std/thing/commands inheriten).
+
+
+BEISPIELE
+=========
+
+   /* Normalerweise sollte man es SO gerade nicht machen. Stattdessen
+    * sollte die "kletter"-Funktion pruefen, ob die Luke geoeffnet ist,
+    * und sich im Fehlerfall beschweren.
+    * So aber dient es als schoenes Beispiel fuer update_actions() ;)
+    */
+   int oeffne(string str)
+   {
+     if( str == "luke" ) {
+       write( "Du oeffnest die Luke. Du kannst jetzt nach unten klettern.\n");
+       add_action("kletter", "kletter", 1);
+       update_actions();
+       return 1;
+     }
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   add_action(E), AddCmd(L), RemoveCmd(L)
diff --git a/doc/sphinx/man/sefun/upperstring b/doc/sphinx/man/sefun/upperstring
new file mode 100644
index 0000000..416c90d
--- /dev/null
+++ b/doc/sphinx/man/sefun/upperstring
@@ -0,0 +1,39 @@
+
+upperstring()
+*************
+
+
+FUNKTION
+========
+
+   string upperstring(string str)
+
+
+ARGUMENTE
+=========
+
+   str - Der umzuwandelnde String.
+
+
+BESCHREIBUNG
+============
+
+   Alle Kleinbuchstaben in str werden in Grossbuchstaben umgewandelt.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgewandelte String.
+
+
+BEISPIELE
+=========
+
+   s = upperstring( "Na, Sterblicher!\n") => s = "NA, STERBLICHER!\n"
+
+
+SIEHE AUCH
+==========
+
+   lowerstring(E), lower_case(E), capitalize(E)
diff --git a/doc/sphinx/man/sefun/uptime b/doc/sphinx/man/sefun/uptime
new file mode 100644
index 0000000..4c007a3
--- /dev/null
+++ b/doc/sphinx/man/sefun/uptime
@@ -0,0 +1,37 @@
+
+uptime()
+********
+
+
+FUNKTION
+========
+
+   string uptime()
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert die aktuelle Uptime des MorgenGrauens.
+
+
+RUECKGABEWERT
+=============
+
+   Die Uptime als Zeitstring.
+
+
+BEISPIELE
+=========
+
+   ut = uptime() => ut = "14 Tage, 9 Stunden, 3 Minuten und 7 Sekunden."
+
+
+SIEHE AUCH
+==========
diff --git a/doc/sphinx/man/sefun/wizlist b/doc/sphinx/man/sefun/wizlist
new file mode 100644
index 0000000..f81b9b8
--- /dev/null
+++ b/doc/sphinx/man/sefun/wizlist
@@ -0,0 +1,84 @@
+
+wizlist()
+*********
+
+
+SYNOPSIS
+========
+
+   varargs void wizlist(string name, int sortkey )
+
+
+DESCRIPTION
+===========
+
+   wizlist() liefert eine Liste mit verschiedenen Verbrauchsdaten
+         zu Magiern. Es werden dabei normalerweise 21 Eintraege ausgegeben:
+   10 vor <name>, <name> selbst und 10 nach <name>.
+
+   Die Liste ist dabei folgendermassen aufgebaut:
+
+         1. WL_NAME
+            Gesammelt werden die Daten pro UID. Hierbei zaehlt aber jede EUID, nicht
+      nur die von Magiern.
+      Das heisst, Objekte unter /d/polar/vanion/eispalast
+            werden nicht unter "vanion" sondern unter "d.polar.vanion"
+            abgerechnet.
+
+         2. WL_COMMANDS
+      Anzahl der diesem Objekt zugeordneten commands.
+
+         3. WL_COMMANDS * 100 / total_cmd
+      Prozentualer Anteil an den gesamt verbrauchten commands.
+
+         4. WL_COST (links in der eckigen Klammer)
+      Anzahl der verbrauchten eval ticks. Dies ist zeitlich gewichtet, d.h.
+      nimmt im Lauf der Zeit ab, wenn nichts mehr dazu kommt.
+
+   5. WL_TOTAL_GIGACOST (rechts in der eckigen Klammer)
+      Anzahl der insgesamt verbrauchten eval ticks in Giga-Ticks.
+      Nicht zeitlich gewichtet.
+
+         6. WL_HEART_BEATS
+      Anzahl der ausgeloesten heart beats.
+
+
+
+   7. WL_ARRAY_TOTAL
+
+   8. WL_MAPPING_TOTAL
+
+PARAMETERS:
+   Wird name angegeben, wird erzwungen, dass die erwaehnte EUID mit in
+   der Liste dargestellt wird. Wird name nicht angegeben, wird es
+   automatisch auf this_player()->query_real_name() gesetzt.
+
+   Wird als name "TOP100" angegeben, wird die Top-100-Liste
+   ausgegeben.
+
+   Wird als name "ALL" angegeben, wird die vollstaendige Liste aus-
+   gegeben.
+
+   Durch Angabe von sortkey kann die Liste nach einer der Spalten
+   sortiert werden. Gueltige Werte sind die in /sys/wizlist.h ange-
+   gebenen Defines.
+
+EXAMPLE
+   > xeval wizlist("vanion", WL_HEART_BEATS)
+      Erzwingt Vanions Eintrag in der Liste und sortiert die Liste
+      anhand der durch die EUIDs ausgefuehrten heart beats.
+
+   > xeval wizlist("ALL", WL_EVAL_COST)
+      Zeigt die komplette Liste nach eval ticks-Verbauch sortiert an.
+
+
+SEE ALSO
+========
+
+   wizlist_info(E)
+
+
+LAST UPDATED
+============
+
+   09.05.2015, Zesstra
diff --git a/doc/sphinx/man/sefun/wizlist_info b/doc/sphinx/man/sefun/wizlist_info
new file mode 100644
index 0000000..0c86434
--- /dev/null
+++ b/doc/sphinx/man/sefun/wizlist_info
@@ -0,0 +1,58 @@
+
+wizlist_info()
+**************
+
+
+GESCHUETZT
+==========
+
+
+SYNOPSIS
+========
+
+   #include <sys/wizlist.h>
+
+   *mixed wizlist_info();
+
+
+BESCHREIBUNG
+============
+
+   Liefert ein Array mit Eintraegen aus der Wizlist (der internen
+   Magierliste). Die Benutzung muss durch das Masterobjekt erlaubt
+   werden.
+
+   Das Resultat ist ein Array mit einem Eintrag fuer jeden Magier (uid).
+   Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
+
+       string  w[WL_NAME]          Name des Magiers
+       int w[WL_COMMANDS]          Gewichtete Anzahl Kommandi, die von
+                                   Objekten dieses Gottes ausgefuehrt
+                                   wurden
+       int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
+       int w[WL_GIGACOST]          Gewichtete Summe der Eval-Kosten
+       int W[WL_TOTAL_COST]        Totale Summe der Eval-Kosten
+       int w[WL_TOTAL_GIGACOST]    Totale Summe der Eval-Kosten
+       int w[WL_HEART_BEAT]        Gewichtete Anzahl der heat_beat()s
+       int w[WL_CALL_OUT]          Reserviert fuer call_out()s
+                                   (bisher nicht implementiert)
+       int w[WL_ARRAY_TOTAL]       Totale Groesse aller Arrays in
+                                   Elementen
+       mixed w[WL_EXTRA]           Die eigentliche Wizlist-Info
+
+   Die "gewichteten" Werte verfallen pro Stunde um 10%.
+
+
+AENDERUNGEN
+===========
+
+   LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
+   um laengeren Uptimes gerecht zu werden. Ausserdem wurde
+   WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
+
+
+SIEHE AUCH
+==========
+
+   privilege_violation(M), set_extra_wizinfo_size(E),
+   get_extra_wizinfo(E), set_extra_wizinfo(E)
diff --git a/doc/sphinx/man/sefun/write_data b/doc/sphinx/man/sefun/write_data
new file mode 100644
index 0000000..b8f0d4f
--- /dev/null
+++ b/doc/sphinx/man/sefun/write_data
@@ -0,0 +1,39 @@
+
+write_data()
+************
+
+
+SYNOPSIS
+========
+
+   string write_data(string file, int start, int anzahl)
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion macht genau das, was write_file() tut (also siehe dort),
+   allerdings stellt sie sicher, dass <file> immer mit einem /data/
+   beginnt (setzt es also notfalls davor).
+   Es wird also immer irgendwo unterhalb von /data/ geschrieben.
+
+   Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
+   ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
+   Code getrennt abgelegt sind. Dies vereinfacht z.B. die
+   Datensicherung.
+
+
+BEISPIEL
+========
+
+   # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
+   -> schreibt in das File /data/d/ebene/zesstra/blupp.
+   # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
+   -> tut dasselbe.
+
+
+SIEHE AUCH
+==========
+
+   read_data()
+   read_file(E), write_file(E), read_bytes(E), write_file(E)
