Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/p/daemon/teammaster.c b/p/daemon/teammaster.c
new file mode 100644
index 0000000..76e8ca0
--- /dev/null
+++ b/p/daemon/teammaster.c
@@ -0,0 +1,84 @@
+#pragma strong_types,save_types
+#pragma no_shadow,no_clone
+
+#include <living/team.h>
+#include <wizlevels.h>
+#define ME this_object()
+#define PO previous_object()
+
+static mapping team_names;
+static mapping team_names_reverse;
+
+void create() {
+
+ team_names=([]); // Objekt -> Name
+ team_names_reverse=([]); // Name -> Objekt
+}
+
+static mixed DoRegisterTeam(object ob, string name) {
+ mixed old;
+
+ old=team_names[ob];
+ m_delete(team_names_reverse,old); // Namen Freigeben
+ if (!name) { // UnRegister
+ m_delete(team_names,ob);
+ return name;
+ }
+ team_names[ob]=name;
+ team_names_reverse[name]=ob;
+ return name;
+}
+
+varargs string RegisterTeam(string name) {
+ int i,min;
+
+ if (member(inherit_list(PO),TEAM_OBJECT+".c")<0)
+ return 0;
+ if (stringp(name)){
+ if (!team_names_reverse[name]) // Name noch nicht vergeben
+ return DoRegisterTeam(PO,name);
+ return 0;
+ }
+ min=sizeof(m_indices(team_names_reverse))+2;
+ for (i=1;i<min;i++)
+ if (!team_names_reverse[sprintf("%d",i)]) {
+ min=i;
+ break;
+ }
+ name=sprintf("%d",i);
+ return DoRegisterTeam(PO,name);
+}
+
+void UnregisterTeam() {
+ if (member(inherit_list(PO),TEAM_OBJECT+".c")>=0)
+ DoRegisterTeam(PO,0);
+}
+
+object *ListTeamObjects() {
+ return(m_indices(team_names)-({0}));
+}
+
+string *ListTeamNames() {
+ return(m_indices(team_names_reverse)-({0}));
+}
+
+string *SortedListTeamNames() {
+ return(sort_array(ListTeamNames(),#'<));
+}
+
+void ShowTeamInfos() {
+ object ob;
+ string *ind;
+ int i;
+
+ write(" --- Teamliste: ---\n");
+ ind=SortedListTeamNames();
+ for (i=sizeof(ind)-1;i>=0;i--)
+ if (objectp(ob=team_names_reverse[ind[i]]))
+ ob->ShowTeamInfo();
+ write(" --- (Ende Teamliste) ---\n");
+}
+
+varargs int remove(int silent) {
+ return 0;
+}