Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/wiz/scoremaster b/doc/wiz/scoremaster
new file mode 100644
index 0000000..c32319f
--- /dev/null
+++ b/doc/wiz/scoremaster
@@ -0,0 +1,213 @@
+Der Scoremaster
+===============
+
+BESCHREIBUNG
+
+  Funktion: Verwaltung der Erstkill-Stufenpunkte, die fuer das Toeten von
+  NPCs vergeben werden. Fuer alle NPCs, die mehr als 200000 XP
+  (SCORE_LOW_MARK) geben, wird ein Stufenpunkt vergeben. Ab 600000 XP
+  (SCORE_HIGH_MARK) sind es 2 Stufenpunkte. Ueber diese Werte hinausgehende
+  Punkte muessen beantragt und manuell ueber den Scoremaster eingetragen
+  werden.
+
+  Jeder NPC, der mindestens einen Stufenpunkt gibt, wird automatisch in
+  eine Liste temporaerer EKs eingetragen, die vom EK-Maintainer einzeln
+  bestaetigt werden muessen. Dieses Verfahren ist erforderlich, weil der
+  bis vor einiger Zeit eingesetzte Mechanismus, EKs automatisch einzutragen,
+  dazu gefuehrt hat, dass eigentlich nicht als EK vorgesehene oder erlaubte,
+  aber auch laengst wieder abgehaengte oder gar nie angeschlossene NPCs
+  eingetragen waren. Da aus dem Scoremaster auch die von Brumni in der
+  Fraternitas ausgegebenen EK-Tips abgefragt werden, ist das natuerlich fatal
+  fuer Spieler, wenn sie Tips bekommen, die sie nicht erreichen koennen.
+
+  Die Liste der Erstkills ist ein Mapping, das als Keys eine fortlaufende
+  Nummer enthaelt, zu der jeweils die Daten des NPCs zugeordnet sind. Diese
+  Nummer dient vor allem auch zur Indizierung des Bitstrings im Spieler,
+  in dem die Erstkills gespeichert werden.
+
+  Diese Datei dokumentiert die Funktionalitaet des Scoremasters fuer die
+  Benutzung durch EM und EK-Maintainer, jedoch nicht die vollstaendige
+  interne Arbeitsweise und Verwaltung der Daten.
+
+  Inhaltsverzeichnis dieser Dokumentation
+  1) Neueintragung von EKs
+  2) Verwaltung der unbestaetigten EKs
+  3) Aenderungen an bestehenden EKs
+  4) Spielerbezogene Daten verwalten
+  5) Daten von NPCs abfragen
+  6) Permanentes Loeschen von EKs
+  7) Verwaltung der EK-Tips von Brumni
+  8) Sonstige Funktionen (nur von NPCs gerufen)
+
+
+RUECKGABEWERTE:
+
+  SCORE_INVALID_ARG   -1
+  SCORE_NO_PERMISSION -2
+
+
+FUNKTIONEN
+
+1) Neueintragung von EKs
+
+  NewNPC(string key, int score)
+  AddNPC(string key, int score) [veraltet, leitet an NewNPC weiter]
+        Neuen NPC eintragen, key ist hierbei der Pfad, score die Punktzahl
+        Die ID des EKs wird automatisch ausgewaehlt, indem der naechste
+        freie Platz im Mapping belegt wird.
+
+
+2) Verwaltung der unbestaetigten EKs
+
+  ConfirmScore(mixed key)
+        unbestaetigten EK mit der Nummer oder dem Pfad "key" genehmigen
+    =>  EK in den Spielern setzen und Statistik hochzaehlen,
+    =>  EK aus der Liste der unbestaetigten EKs in die Liste der aktiven
+        uebertragen,
+
+  RejectScore(mixed key)
+        unbestaetigten EK mit der Nummer oder dem Pfad "key" ablehnen
+    =>  Eintrag aus der Liste der unbestaetigten EKs loeschen
+    =>  Bit-Nr. in die Liste der freien Nummern eintragen
+
+  DumpUnconfirmedScores()
+        unbestaetigte NPCs an den abfragenden Magier ausgeben
+
+
+3) Aenderungen an bestehenden EKs
+
+  SetScore(mixed key, int score)
+        Punktzahl fuer bereits eingetragenen NPC aendern, key ist der Pfad
+        oder die NPC-Nummer, score die neue Punktzahl
+
+  RemoveScore(mixed key)
+        Setzt die Punktzahl auf 0. Solche EKs koennen spaeter durch Angabe
+        einer neuen Punktzahl reaktiviert werden.
+        Alternativ kann fuer diese Funktion auch SetScore(mixed key, 0)
+        verwendet werden.
+        key kann hierbei der Pfad oder die NPC-Nummer sein
+
+  MoveScore(mixed oldkey, string newpath)
+        Verlegt einen EK
+        oldkey ist der aktuelle Pfad oder die Nummer
+        newpath ist der neue Pfad
+
+
+4) Spielerbezogene Daten verwalten
+
+  HasKill(mixed pl, mixed npc)
+        fragt ab, ob der Spieler "pl" den Kill "npc" hat
+        pl kann hierbei der Spielername oder das Spielerobjekt sein,
+        npc der Pfad oder dessen Nummer
+
+  SetScoreBit(string pl, int bit)
+        Mit dieser Funktion wird dem Spieler "pl" der EK mit der Nummer
+        "bit" gutgeschrieben.
+
+  ClearScoreBit(string pl, int bit)
+        Mit dieser Funktion wird dem Spieler "pl" der EK mit der Nummer
+        "bit" permanent ausgetragen.
+
+  QueryKillPoints(mixed pl)
+        liefert die Anzahl der Stufenpunkte zurueck, die dem Spieler pl
+        durch die aktiven EKs gutgeschrieben wurden
+
+  getFreeEKsForPlayer(object player)
+        liefert alle EKs, die aktiv sind, und die der Spieler noch nicht
+        hat, in einem Mapping entsprechend der Liste "npcs" zurueck.
+
+  QueryAllKills(string pl)
+        liefert alle Kills des Spielers als Bitstring zurueck, auch solche,
+        die momentan ausgetragen/deaktiviert sind
+        pl ist hierbei der Spielername als String
+
+  QueryKills(string pl)
+        liefert die aktiven Kills des Spielers als Bitstring zurueck
+        pl ist hierbei der Spielername als String
+
+
+5) Daten von NPCs abfragen
+
+  QueryNPCbyNumber(int num)
+        liefert die Daten des NPCs mit der Nummer "num" als Array zurueck
+
+  QueryNPCbyObject(object o)
+        liefert die Daten des NPCs mit dem Objekt "o" als Array zurueck
+
+
+6) Permanentes Loeschen von EKs
+
+  MarkEKForLiquidation(mixed key)
+        entfernt einen EK endgueltig und unwiderruflich und gibt die Nr.
+        wieder frei.
+        Technisch wird der EK erstmal in eine Liste eingetragen. Im Reset
+        iteriert der Master ueber alle Spieler-Savefiles und loescht den EK
+        aus allen Spielern. Nach Abschluss wird der Eintrag in "npcs"
+        geloescht und seine Nr. in die Liste freier Nummern eingetragen.
+
+  UnmarkEKForLiquidation(mixed key)
+        Entfernt die Loeschmarkierung von einem EK
+    =>  Dies geht nur, solange nach einem MarkEKForLiquidation() noch kein
+        reset() gelaufen ist!
+
+  QueryLiquidationMarks()
+        Fragt die fuer Loeschung vorgesehenen EKs ab.
+
+  RestoreEK(string key, int bit, int score)
+        restauriert die Daten eines frueher geloeschten, in den Spielern noch
+        enthaltenen EKs. Moeglich nur dann, wenn der EK frueher mal geloescht
+        wurde, aber in den Bitstrings in den Spielern noch eingetragen ist.
+        Es werden Pfad, Nr. und Punkte benoetigt.
+        Fuer nach dem Umbau des Scoremasters geloeschte EKs nicht mehr
+        moeglich, weil diese permanent aus den Bitstrings ausgetragen wird.
+
+
+7) Verwaltung der EK-Tips von Brumni
+
+  addTip(mixed key,string tip)
+        Traegt fuer den NPC mit der Nummer oder dem Pfad "key" einen EK-Tip-
+        Text fuer Brumni ein.
+
+  changeTip(mixed key,string tip)
+        Aendert den durch Brumni auszugebenden EK-Tip fuer den NPC mit der
+        Nummer oder dem Pfad "key". Der neue Tip wird dabei als 2. Parameter
+        "tip" uebergeben.
+
+  removeTip(mixed key)
+        Loescht den durch Brumni auszugebenden EK-Tip-Spruch. Der Tip als
+        solcher bleibt bestehen - anschliessend wird wieder der Standard-
+        Spruch ausgegeben.
+
+  getTip(mixed key)
+        Gibt den Tip-Spruch fuer den NPC mit der Nummer oder dem Pfad
+        "key" zurueck, oder den Standard-Spruch. Liefert fuer nicht
+        eingetragenen "key" den Leerstring zurueck.
+
+  QueryTipObjects(mixed player)
+        Gibt die Objektnamen der EK-Tips des jeweiligen Spielers zurueck.
+
+  allTipsForPlayer(object player)
+        Gibt den Gesamtstring aller Tips des Spielers "player" zurueck.
+
+  playerMayGetTip(object player)
+        Fragt ab, ob der Spieler "player" einen Tip bekommen kann.
+
+  giveTipForPlayer(object player)
+        Waehlt einen zufaelligen EK aus, den der Spieler noch nicht hat, und
+        traegt diesen im Master in die Liste ein, die mit allTipsForPlayer()
+        abgefragt werden kann.
+
+
+8) Sonstige Funktionen (nur von NPCs gerufen)
+
+  GiveKill(object pl, int bit)
+        schreibt dem Spieler "pl" den EK mit der Nummer "bit" gut.
+        Diese Funktion wird ausschliesslich aus NPCs heraus gerufen.
+
+  QueryNPC(int score)
+        Wird vom getoeteten NPC gerufen, um zu ermitteln, ob dieser einen
+        Erstkill gibt. Wenn der EK noch nicht existiert, wird dieser im
+        Master zunaechst in der Liste der unbestaetigten EKs eingetragen
+        Direkte Abfrage dieser Funktion von aussen z.B. durch Magier nicht
+         moeglich, weil nicht sinnvoll.
+