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");
+}