Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/std/player/shadows/tarnhelm_shadow.c b/std/player/shadows/tarnhelm_shadow.c
new file mode 100644
index 0000000..63ea744
--- /dev/null
+++ b/std/player/shadows/tarnhelm_shadow.c
@@ -0,0 +1,140 @@
+#pragma strong_types,save_types
+
+#include <defines.h>
+#include <properties.h>
+
+#define WEG() destruct(this_object())
+
+object player;
+int gender;
+string desc;
+
+void _tarn_turn_on(object pl,string txt,int gen)
+{
+  if (!objectp(pl)||!interactive(pl)) return WEG();
+  if (!stringp(txt)||txt=="") return WEG();
+  if (gen<0||gen>2) return WEG();
+  player=pl;
+  desc=capitalize(txt);
+  gender=gen;
+  shadow(pl,1);
+}
+
+int special_verb()
+{
+  string verb;
+  
+  verb=query_verb();
+  if (!verb||verb=="") return 0;
+  if (verb[0]=='-') return 1;
+  if (verb=="ruf"||verb=="rufe"||verb=="teile"||verb=="teil"||verb=="mruf"||
+      verb=="mrufe"||verb=="erzaehl"||verb=="erzaehle") return 1;
+  return(0); // non-void funktion, Zesstra
+}
+
+int _query_gender()
+{
+  return gender;
+}
+
+string _query_name()
+{
+  if (!special_verb())
+    return capitalize(desc);
+  return player->Query(P_NAME);
+}
+
+string _query_short()
+{
+  return capitalize(player->name());
+}
+
+string _query_long()
+{
+  string str;
+
+  str=player->name();
+  return capitalize(str)+" ist "+str+" ist "+str+".\n";
+}
+
+string* _query_ids()
+{
+  return player->Query("ids")+({lower_case(desc)});
+}
+
+string _query_race()
+{
+  return desc;
+}
+
+void _tarn_turn_off()
+{
+  unshadow();
+  destruct(this_object());
+}
+
+int _query_article()
+{
+  if (!special_verb())
+    return 1;
+  return(0); // non-void funktion, Zesstra
+}
+
+string _query_presay()
+{
+  return "";
+}
+
+string _query_title()
+{
+  return "";
+}
+
+void Defend(int dam,mixed dam_type,mixed spell,object enemy)
+{
+  object o;
+
+  if (!query_once_interactive(previous_object()))
+    player->Defend(dam, dam_type, spell, enemy);
+  else
+    previous_object()->StopHuntFor(player);
+  if ((o=present("\ntarnhelm",player)))
+        o->DoUnwear();
+  if (this_object()) destruct(this_object());
+}
+
+int Kill(object ob)
+{
+  object o;
+
+  if ((o=present("\ntarnhelm",player)))
+      o->DoUnwear();
+  if (this_object()) destruct(this_object());
+  return(0); // non-void funktion, Zesstra
+}
+
+int InsertEnemy(object ob)
+{
+  object o;
+
+  if (!query_once_interactive(ob))
+    player->InsertEnemy(ob);
+  else
+    ob->StopHuntFor(player);
+  if ((o=present("\ntarnhelm",player)))
+      o->DoUnwear();
+  if (this_object()) destruct(this_object());
+  return 0;
+}
+
+string short()
+{
+  if (old_explode(object_name(previous_object()),"#")[0]=="/obj/werliste")
+    return capitalize(geteuid(player)+" verkleidet als "+player->short());
+  return player->short();
+}
+
+string QueryDisguise()
+{
+  return desc; 
+}