Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/wiz/zaubertraenke b/doc/wiz/zaubertraenke
new file mode 100644
index 0000000..aadb54a
--- /dev/null
+++ b/doc/wiz/zaubertraenke
@@ -0,0 +1,95 @@
+
+Zaubertraenke fuer Magier
+=========================
+
+Wie man die Traenke jetzt genau versteckt bleibt dem betreffenden Magier
+ueberlassen, es sollte halt insgesamt ein breites Spektrum von sehr leicht
+zu finden bis fast unmoeglich abgedeckt sein.
+Fuer das Orakel der Hochebene sollte dann ein entsprechender Spruch
+vorbereitet werden, nicht zu kryptisch aber doch orakleig.
+
+Die zufaellige Auswahl an zugeordneten Zaubertraenken wird beim ersten
+Einloggen des Spielers festgelegt.
+
+Die Raeume, in denen Traenke versteckt werden (und es duerfen nur Raeume
+sein), werden in 8 Listen eingeteilt, je nach Schwierigkeitsgrad. Der haengt
+natuerlich von der Lage (so ist ein Trank in einem monsterwimmelnden
+Labyrinth schwieriger zu erreichen, als einer auf der Hochebene), und von
+dem Versteck selbst ab.
+Questraeume, die nur im Rahmen der Quest erreichbar sind, sind ungeeignet.
+
+
+Mein Standardbeispiel fuer ein Versteck ist immer folgendes:
+
+> schaue
+blablablabla .... Ein Schreibtisch steht in der Ecke. ... blablabla
+> unt schreibtisch
+Er hat eine Schublade.
+> oeffne schublade
+Du oeffnest die Schublade.
+> unt schublade
+In der Schublade enteckst Du ein paar Papiere.
+> unt papiere
+Beim Rumwuehlen in den Papieren entdeckst Du einen kleinen Zaubertrank, den
+Du sofort trinkst.
+
+Dann kommt die Auswahlsequenz, welche Eigenschaft man erhoehen will.
+
+In diesem Fall reichen Details, Details mit Closure und eine Kommando fuer
+"oeffne" aus. Etwa wie folgt:
+
+ void create() {
+ [...]
+ SetProp(P_INT_LONG, ... Ein Schreibtisch steht in der Ecke ...);
+
+ AddDetail(({"tisch", "schreibtisch"}),
+ "Er hat eine Schublade.");
+
+ AddCmd("oeffne&schublade", #'action_oeffne,
+ "Was moechtest du oeffnen.");
+ }
+
+ private int action_oeffne() {
+ tell_object(this_player(), "Du oeffnest die Schublade.\n");
+ tell_room(this_object(), this_player()->Name()+
+ " oeffnet eine Schublade.\n", ({this_player()}));
+
+ AddDetail("schublade",
+ "In der Schublade entdeckst du ein paar Papiere.\n");
+ AddDetail("papiere", #'detail_papiere);
+ }
+
+ // Zaubertrankgebendes Detail
+ private 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";
+ }
+
+ // Aufraeumen des Raumes
+ void reset() {
+ if(!sizeof(filter(all_inventory(this_object()), #'interactive))) {
+ RemoveDetail("papiere");
+ RemoveDetail("schublade");
+ }
+ ::reset();
+ }
+
+FindPotion() gibt 1 zurueck, wenn der Spieler den Zaubertrank finden darf.
+
+Wer also Traenke verstecken will, macht sowas in der Art und meldet dann den
+Raum persoenlich oder per Post bei den Erzmagiern bzw seinem aktiven
+Regionsmagier an.
+
+SIEHE AUCH:
+ Weitere Dateinamen mit Beispielen fuer Trankverstecke kann man der
+ Datei /etc/traenke entnehmen.
+
+ Befehl: traenke (fuer Magier zum Einschalten des Findens von ZTs)
+
+10. August 2015 Gloinson