Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/obj/vertrag.c b/obj/vertrag.c
new file mode 100644
index 0000000..570990e
--- /dev/null
+++ b/obj/vertrag.c
@@ -0,0 +1,115 @@
+#pragma strict_types
+#pragma combine_strings
+#pragma no_shadow
+#pragma no_inherit
+
+inherit "std/thing";
+
+#include <properties.h>
+#include <language.h>
+#include <wizlevels.h>
+
+private int gelesen;
+private string unterschrieben;
+
+static string text();
+
+public void create()
+{
+ if ( !geteuid(this_object()) )
+ call_out( "remove", 0 );
+
+ if ( !IS_WIZARD(geteuid(this_object())) )
+ call_out( "remove", 0 );
+
+ if ( !clonep(this_object()) )
+ return;
+
+ thing::create();
+ SetProp( P_SHORT, "Ein Vertrag" );
+ SetProp( P_LONG, "@@unterschrieben@@" );
+ SetProp( P_NAME, "Vertrag" );
+ Set(P_READ_MSG, #'text, F_QUERY_METHOD);
+ SetProp( P_GENDER, MALE );
+ SetProp( P_ARTICLE, 1 );
+ AddId("vertrag");
+ SetProp(P_NEVERDROP, 1);
+ AddCmd(({"unterschreibe","unterschreib","unterzeichne"}),"unterschreibe");
+ AddCmd(({"zerreisse", "zerreiss"}),"zerreisse");
+
+ gelesen = 0;
+ unterschrieben = "";
+}
+
+static string _query_nodrop()
+{
+ if (this_player() && IS_WIZARD(this_player())) return 0;
+ return "Nein Nein! Dies ist dein Vertrag!\n";
+}
+
+static string unterschrieben()
+{
+ string s;
+
+ s = "Dies ist Dein Magier-Vertrag. Du solltest ihn vielleicht ";
+ if ( gelesen )
+ s += "noch";
+ s += "mal lesen.\nEr wurde Dir von " + capitalize(geteuid(this_object()))
+ +" ueberreicht.\nWenn Du ihn unterschreibst, wirst Du von "
+ + capitalize(geteuid(this_object())) + " gesponsort.\n";
+
+ if (this_player() && (unterschrieben == getuid(this_player())) )
+ s += "Du hast ihn unterschrieben.\n";
+
+ return s;
+}
+
+
+static string text()
+{
+ gelesen = 1;
+ this_player()->More("/etc/WIZRULES",1);
+ return "";
+}
+
+
+static int unterschreibe( string str )
+{
+ notify_fail("Was willst Du denn unterschreiben?\n");
+ if ( !id(str) )
+ return 0;
+
+ if ( !this_player() || this_player() != this_interactive()
+ || this_player() != environment() )
+ return 0;
+
+ if ( !gelesen ){
+ write( "Du hast ihn noch nicht gelesen. ERST lesen, DANN schreiben!\n");
+ return 1;
+ }
+
+ write( "Du unterschreibst den Vertrag. Wenn das ein Versehen war, "
+ + "zerreiss ihn sofort.\n" );
+ unterschrieben = getuid( this_interactive() );
+ SetProp( P_NODROP, "Nein, der ist unterschrieben. Du kannst ihn hoechstens"
+ + " zerreissen.\n" );
+ SetProp( P_NEVERDROP, 1 );
+ return 1;
+}
+
+
+static int zerreisse( string str )
+{
+ notify_fail("Was willst Du denn zerreissen?\n");
+ if ( !id(str) ) return 0;
+ write( "Du zerreisst den Vertrag.\n" );
+ return remove();
+}
+
+
+public int is_unterschrieben()
+{
+ return environment() && query_once_interactive(environment())
+ && getuid(environment()) == unterschrieben;
+}
+