Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/fernwaffen/kurzbogen.c b/doc/beispiele/fernwaffen/kurzbogen.c
new file mode 100644
index 0000000..93623e5
--- /dev/null
+++ b/doc/beispiele/fernwaffen/kurzbogen.c
@@ -0,0 +1,32 @@
+inherit "/std/ranged_weapon";
+
+#include "./path.h"
+#include <properties.h>
+
+void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+
+  SetProp(P_SHORT, "Ein Kurzbogen");
+  SetProp(P_INFO,
+    "Die Syntax lautet: schiesse <geschoss> auf <ziel>\n");
+  SetProp(P_NAME, "Kurzbogen");
+  SetProp(P_LONG, break_string(
+    "Mit diesem Kurzbogen kann man sicher nicht weit schiessen."));
+  SetProp(P_MATERIAL, MAT_MISC_WOOD);
+
+  AddId("kurzbogen");
+  SetProp(P_GENDER, MALE);
+  SetProp(P_WEIGHT, 800);
+  SetProp(P_VALUE, 300);
+
+  SetProp(P_WC, 10);
+  SetProp(P_DAM_TYPE, DT_BLUDGEON);
+
+  SetProp(P_SHOOTING_WC, 60);
+  SetProp(P_NR_HANDS, 2);
+  SetProp(P_WEAPON_TYPE, WT_RANGED_WEAPON);
+  SetProp(P_AMMUNITION, MUN_ARROW);
+  SetProp(P_STRETCH_TIME, 1);
+  SetProp(P_RANGE, 10);
+}
\ No newline at end of file
diff --git a/doc/beispiele/fernwaffen/langbogen.c b/doc/beispiele/fernwaffen/langbogen.c
new file mode 100644
index 0000000..7956dd3
--- /dev/null
+++ b/doc/beispiele/fernwaffen/langbogen.c
@@ -0,0 +1,32 @@
+inherit "/std/ranged_weapon";
+
+#include "./path.h"
+#include <properties.h>
+
+void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+
+  SetProp(P_SHORT, "Ein Langbogen");
+  SetProp(P_INFO,
+    "Die Syntax lautet: schiesse <geschoss> auf <ziel>\n");
+  SetProp(P_NAME, "Langbogen");
+  SetProp(P_LONG, break_string(
+    "Mit diesem Langbogen kann man bestimmt hervorragend weit schiessen."));
+  SetProp(P_MATERIAL, MAT_MISC_WOOD);
+
+  AddId("langbogen");
+  SetProp(P_GENDER, MALE);
+  SetProp(P_WEIGHT, 800);
+  SetProp(P_VALUE, 300);
+
+  SetProp(P_WC, 30);
+  SetProp(P_DAM_TYPE, DT_BLUDGEON);
+
+  SetProp(P_SHOOTING_WC, 120);
+  SetProp(P_NR_HANDS, 2);
+  SetProp(P_WEAPON_TYPE, WT_RANGED_WEAPON);
+  SetProp(P_AMMUNITION, MUN_ARROW);
+  SetProp(P_STRETCH_TIME, 2);
+  SetProp(P_RANGE, 30);
+}
\ No newline at end of file
diff --git a/doc/beispiele/fernwaffen/npc.c b/doc/beispiele/fernwaffen/npc.c
new file mode 100644
index 0000000..3544d44
--- /dev/null
+++ b/doc/beispiele/fernwaffen/npc.c
@@ -0,0 +1,29 @@
+inherit "/std/npc";
+
+#include "./path.h"
+#include <properties.h>
+
+void create() {
+  ::create();
+  AddId(({"npc", "gegner", "ziel"}));
+  SetProp(P_NAME, "Ziel");
+  SetProp(P_GENDER, NEUTER);
+  SetProp(P_SHORT, "Ein Ziel");
+
+  SetProp(P_HP, 1000);
+  SetProp(P_BODY, 100);
+}
+
+varargs int Defend(int dam, string* dam_type, mixed spell, object enemy) {
+  int predam = dam;
+  int result = ::Defend(dam, &dam_type, &spell, enemy);
+  
+  string str = break_string(sprintf(
+    "Die Zielscheibe sagt: %d Schaden rein und fuer %d getroffen.",
+    predam, result), 78);
+
+  tell_room(load_object(__PATH__(0)"zielraum"), str);
+  tell_room(load_object(__PATH__(0)"schussraum"), str);
+
+  return result;
+}
\ No newline at end of file
diff --git a/doc/beispiele/fernwaffen/path.h b/doc/beispiele/fernwaffen/path.h
new file mode 100644
index 0000000..d284140
--- /dev/null
+++ b/doc/beispiele/fernwaffen/path.h
@@ -0,0 +1,3 @@
+#pragma rtt_checks, save_types
+#pragma pedantic,  range_check
+#pragma warn_empty_casts, warn_missing_return, warn_function_inconsistent
\ No newline at end of file
diff --git a/doc/beispiele/fernwaffen/pfeile.c b/doc/beispiele/fernwaffen/pfeile.c
new file mode 100644
index 0000000..f4b11a3
--- /dev/null
+++ b/doc/beispiele/fernwaffen/pfeile.c
@@ -0,0 +1,41 @@
+inherit "/std/unit";
+
+#include "./path.h"
+#include <properties.h>
+#include <class.h>
+
+void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+
+  SetProp(P_NAME, ({"Pfeil", "Pfeile"}) );
+  SetProp(P_LONG, break_string(
+    "Ein paar einfache Holzpfeile.", 78));
+  SetProp(P_GENDER, MALE);
+  SetProp(P_AMOUNT, 1);
+  SetProp(P_SHOOTING_WC, 40);
+  SetProp(P_DAM_TYPE, ({DT_PIERCE}));
+  SetProp(P_WEAPON_TYPE, WT_AMMU);
+  SetProp(P_MATERIAL, MAT_MISC_WOOD);
+
+  SetGramsPerUnits(120,1);
+  SetCoinsPerUnits(25,1);
+
+  AddId(MUN_ARROW);
+  AddSingularId("pfeil");
+  AddPluralId("pfeile");
+  AddClass(CL_AMMUNITION);
+
+  SetProp(P_HIT_FUNC, this_object());
+}
+
+int HitFunc(object enemy) {
+  if(!random(5)) {
+    tell_object(environment(), break_string(
+      "Der Pfeil schnurrt vom Bogen und dabei splittert das Holz "
+      "etwas. Gratiswiderhaken, das ist ja toll!", 78));
+    return 20;
+  }
+
+  return 0;
+}
\ No newline at end of file
diff --git a/doc/beispiele/fernwaffen/schussraum.c b/doc/beispiele/fernwaffen/schussraum.c
new file mode 100644
index 0000000..79179c9
--- /dev/null
+++ b/doc/beispiele/fernwaffen/schussraum.c
@@ -0,0 +1,34 @@
+inherit "/std/room";
+
+#include "./path.h"
+#include <properties.h>
+
+void create() {
+  ::create();
+
+  SetProp(P_LIGHT, 1);
+  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. "
+    "'schau runter' hilft sicherlich, Ziele auszumachen."));
+
+  AddDetail("runter", function string { 
+                        return __PATH__(0)"zielraum"->int_long(this_player());
+                      });
+
+  AddItem(__PATH__(0)"langbogen", REFRESH_REMOVE);
+  AddItem(__PATH__(0)"kurzbogen", REFRESH_REMOVE);
+  AddItem(__PATH__(0)"pfeile", REFRESH_REMOVE, ([P_AMOUNT: 20]));
+
+  AddExit("zielraum", __PATH__(0)"zielraum");
+  load_object(__PATH__(0)"zielraum");
+
+  SetProp(P_TARGET_AREA, __PATH__(0)"zielraum"); // anderer Raum beschiessbar
+  SetProp(P_SHOOTING_AREA, 15);                  // 15 Entfernung
+}
+
+// nur wegen des P_NEVER_CLEAN im Zielraum und nur hier in doc relevant
+public varargs int remove(int silent) {
+  __PATH__(0)"zielraum"->remove();
+  return ::remove();
+}
diff --git a/doc/beispiele/fernwaffen/zielraum.c b/doc/beispiele/fernwaffen/zielraum.c
new file mode 100644
index 0000000..6177032
--- /dev/null
+++ b/doc/beispiele/fernwaffen/zielraum.c
@@ -0,0 +1,19 @@
+inherit "/std/room";
+
+#include "./path.h"
+#include <properties.h>
+
+void create() {
+  ::create();
+
+  SetProp(P_LIGHT, 1);
+  SetProp(P_INT_SHORT, "Auf einer Lichtung");
+  SetProp(P_INT_LONG, break_string(
+    "Auf dieser Lichtung steht ein Baum, der verdaechtig viele Aeste hat, "
+    "von denen man auf die Lichtung gut sehen kann."));
+  SetProp(P_NEVER_CLEAN, 1); // damit der Raum auch da bleibt
+
+  AddItem(__PATH__(0)"npc", REFRESH_REMOVE);
+
+  AddExit("schussraum", __PATH__(0)"schussraum");
+}