Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/shells/magier/comm.c b/std/shells/magier/comm.c
new file mode 100644
index 0000000..0cbd266
--- /dev/null
+++ b/std/shells/magier/comm.c
@@ -0,0 +1,149 @@
+// MorgenGrauen MUDlib
+//
+// comm.c
+//
+// $Id: comm.c 8755 2014-04-26 13:13:40Z Zesstra $
+#pragma strict_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+#include <wizlevels.h>
+#include <magier.h>
+#define NEED_PROTOTYPES
+#include <thing/properties.h>
+#include <thing/description.h>
+#include <player.h>
+#include <properties.h>
+
+
+// ###########
+//############################ ECHOALL ################################
+// ###########
+
+static int _echoall(string str)
+{
+ if (!(str=_unparsed_args()))
+ return USAGE("echoall <text>\n");
+ str=break_string(str);
+ shout(str);
+ printf(str);
+ return 1;
+}
+
+// ##########
+//############################ ECHOTO #################################
+// ##########
+
+static int _echoto(string str)
+{
+ object ob;
+ string who;
+ string msg;
+
+ if (!(str=_unparsed_args())||sscanf(str, "%s %s", who, msg) != 2)
+ return USAGE("echoto <spieler> <text>\n");
+ ob = find_player(lower_case(who));
+ if (!ob)
+ {
+ printf("echoto: Es ist kein Spieler '%s' eingeloggt.\n",who);
+ return 1;
+ }
+ msg=break_string(msg,78);
+ tell_object(ob,msg);
+ printf("%s->%s",ob->Name(WEN),msg);
+ return 1;
+}
+
+// #########
+//############################ MECHO ##################################
+// #########
+
+static int _mecho(string str) {
+ object *who;
+ int i;
+
+ if (!sizeof(str=_unparsed_args()))
+ return USAGE("mecho <text>\n");
+ who=users();
+ i=sizeof(who);
+ while(i--)if (IS_LEARNER(who[i]))
+ tell_object(who[i], break_string(str,78));
+ return 1;
+}
+
+// ########
+//############################# PING ##################################
+// ########
+
+static int _ping(string str)
+{
+ object pl;
+
+ if (!sizeof(str))
+ return USAGE("ping <spielername>\n");
+ if (!(pl=find_player(lower_case(str))))
+ return
+ _notify_fail(sprintf("ping: Spieler %s nicht gefunden.\n",
+ capitalize(str))),0;
+ tell_object(pl,sprintf("%s pingt Dich an.\a\n",capitalize(getuid())));
+ return printf("PINGGGGGGG! DAS sollte %s auf Dich aufmerksam "
+ "gemacht haben.\n",capitalize(getuid(pl))),1;
+}
+
+// ##########
+//############################ OROPAX #################################
+// ##########
+
+int _oropax(string cmdline)
+{
+ int level,old,new;
+
+ cmdline=_unparsed_args();
+ old=QueryProp(P_EARMUFFS);
+ if (!sizeof(cmdline)||cmdline=="0")
+ {
+ if (old)
+ {
+ printf("Du nimmst das Oropax aus Deinen Ohren und hoerst "
+ "wieder allen anderen zu.\n");
+ SetProp(P_EARMUFFS, 0);
+ }
+ else
+ printf("Du hast doch gar kein Oropax in den Ohren.\n");
+ return 1;
+ }
+ if (sscanf(cmdline, "%d", level) == 0 || level < 1)
+ return USAGE("oropax [<magierlevel>]\n");
+ if ((new=SetProp(P_EARMUFFS, level))==level)
+ {
+ if (new==old)
+ return printf("Du hattest Deine Oropaxmenge schon auf Magierlevel "
+ "%d angepasst.\n",level),1;
+ if (new>old)
+ return printf("Du stopfst Dir soviel Oropax in die Ohren, dass "
+ "Du nur noch %s ab\nLevel %d hoerst.\n",
+ level>=LEARNER_LVL?"Magier":"Seher",level),1;
+ return printf("Du nimmst soviel Oropax aus den Ohren, dass Du ab "
+ "sofort wieder %s ab\nLevel %d verstehst.\n",
+ level>=LEARNER_LVL?"Magier":"Seher",level),1;
+ }
+ return printf("Du stopfst und stopfst, bis Dir das Oropax wieder zur "
+ "Nase herauskommt.\nLeider musst Du damit Magier ab Level "
+ "%d weiterhin hoeren.\n",new),1;
+}
+
+// ###################
+//########################## INITIALISIERUNG #############################
+// ###################
+
+static mixed _query_localcmds()
+{
+ return
+ ({({"oropax","_oropax",0,LEARNER_LVL}),
+ ({"echoto","_echoto",0,LEARNER_LVL}),
+ ({"echoall","_echoall",0,LEARNER_LVL}),
+ ({"mecho","_mecho",0,LEARNER_LVL}),
+ ({"ping","_ping",0,LEARNER_LVL})});
+}