Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/std/player/shadows/zaubersh.c b/std/player/shadows/zaubersh.c
new file mode 100644
index 0000000..a19cecc
--- /dev/null
+++ b/std/player/shadows/zaubersh.c
@@ -0,0 +1,220 @@
+#pragma strong_types,save_types
+
+#include <properties.h>
+
+object caster;
+string*ids,name;
+int gender,article,plural;
+string lgdesc;
+string min,mout,mmin,mmout;
+mixed hands;
+
+void Initialize(object _caster,
+                string*_ids,
+                string _name,
+                int _gender,
+                int _article,
+                int _plural)
+{ if(!objectp(_caster)    ||
+     !interactive(_caster)||
+     !stringp(_name)      ||
+     _name==""            ||
+     _gender<0            ||
+     _gender>2)
+  { destruct(this_object());
+    return;
+  }
+  caster=_caster;
+  ids=_ids;
+  name=_name;
+  gender=_gender;
+  article=_article;
+  plural=_plural;
+  lgdesc=0;
+  shadow(caster,1);
+}
+
+void SetLongDesc(string txt)
+{ if(!stringp(txt)||txt=="")
+    return;
+  lgdesc=txt;
+}
+
+string* _query_ids()
+{ return caster->Query(P_IDS)+ids;
+}
+
+// nicht alle Verben mit veraendertem Aussehen
+int special_verb()
+{ string verb;
+  verb=query_verb();
+  if(!stringp(verb)||verb=="")
+    return 0;
+  if(verb[0]=='-')
+    return 1;
+  if(member(({"ruf","rufe","mruf","mrufe",
+              "teil","teile","erzaehl","erzaehle"}),verb)!=-1)
+    return 1;
+  return 0;
+}
+
+string _query_name()
+{ if(!special_verb())
+    return name;
+  return capitalize(caster->Query(P_NAME));
+}
+
+string _query_short()
+{ if(!special_verb())
+    return caster->Name();
+  return caster->Query(P_SHORT);
+}
+
+string _query_long()
+{ if(!special_verb())
+  { string str;
+    if(lgdesc)
+      return lgdesc;
+    str=caster->name();
+    return break_string(capitalize(str)+" ist "+str+" ist "+str+".",78);
+  }
+  return caster->Query(P_LONG);
+}
+
+int _query_gender()
+{ if(!special_verb())
+    return gender;
+  return caster->Query(P_GENDER);
+}
+
+int _query_article()
+{ if(!special_verb())
+    return article;
+  return caster->Query(P_ARTICLE);
+}
+
+int _query_plural()
+{ if(!special_verb())
+    return plural;
+  return caster->Query(P_PLURAL);
+}
+
+string _query_race()
+{ if(!special_verb())
+    return name;
+  return caster->Query(P_RACE);
+}
+
+varargs int remove(int silent) {
+  unshadow();
+  destruct(this_object());
+  return 1;
+}
+
+void stop_shadow()
+{ 
+  remove();
+}
+
+string _query_presay()
+{ return"";
+}
+
+string _query_title()
+{ return"";
+}
+
+string _set_msgin(string val)
+{ return min=val;
+}
+
+string _query_msgin()
+{ return min;
+}
+
+string _set_msgout(string val)
+{ return mout=val;
+}
+
+string _query_msgout()
+{ return mout;
+}
+
+string _set_mmsgin(string val)
+{ return mmin=val;
+}
+
+string _query_mmsgin()
+{ return mmin;
+}
+
+string _set_mmsgout(string val)
+{ return mmout=val;
+}
+
+string _query_mmsgout()
+{ return mmout;
+}
+
+mixed _set_hands(mixed val)
+{ return hands=val;
+}
+
+mixed _query_hands()
+{ return hands;
+}
+
+varargs int Defend(int dam,mixed dam_type,mixed spell,object enemy)
+{ object ob;
+  if(!enemy ||  // Silvana 26.1.2002
+     (!query_once_interactive(previous_object())&&
+      !query_once_interactive(enemy)))
+    return caster->Defend(dam,dam_type,spell,enemy);
+  else
+  { enemy->StopHuntFor(caster);
+    caster->StopHuntFor(enemy);
+  }
+  if(objectp(ob=present("zauberer\nshadow",caster)))
+    ob->remove();
+  if(this_object())
+    remove();
+  return 0;
+}
+
+int Kill(object enemy)
+{ object ob;
+  if(!query_once_interactive(enemy))
+    return caster->Kill(enemy);
+  if(objectp(ob=present("zauberer\nshadow",caster)))
+    ob->remove();
+  if(this_object())
+    remove();
+  return 0;
+}
+
+int InsertEnemy(object enemy)
+{ object ob;
+  if(!query_once_interactive(enemy))
+    return caster->InsertEnemy(enemy);
+  else {
+    enemy->StopHuntFor(caster);
+    caster->StopHuntFor(enemy);
+  }
+  if(objectp(ob=present("zauberer\nshadow",caster)))
+    ob->remove();
+  if(this_object())
+    remove();
+  return 0;
+}
+
+string short()
+{ if(load_name(previous_object()) == "/obj/werliste")
+    return capitalize(geteuid(caster))+" verkleidet als "+caster->short();
+  return caster->short();
+}
+
+varargs string long()
+{ if(lgdesc)
+    return lgdesc;
+  return caster->long();
+}