Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/lfun/DefendFunc b/doc/lfun/DefendFunc
new file mode 100644
index 0000000..7043e04
--- /dev/null
+++ b/doc/lfun/DefendFunc
@@ -0,0 +1,78 @@
+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