Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/inpc/walking.c b/std/inpc/walking.c
new file mode 100644
index 0000000..f24aae6
--- /dev/null
+++ b/std/inpc/walking.c
@@ -0,0 +1,130 @@
+// MorgenGrauen MUDlib
+//
+// inpc/walking.c -- Intelligent herumlaufen
+//
+// $Id: walking.c 8755 2014-04-26 13:13:40Z Zesstra $
+#pragma strong_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+#define NEED_PROTOTYPES
+#include <thing/properties.h>
+#include <thing.h>
+#undef NEED_PROTOTYPES
+
+#include <inpc.h>
+#include <properties.h>
+#include <moving.h>
+
+#define ME this_object()
+#define ENV environment()
+
+int _set_inpc_walk_delay(int del) {
+ if (del && del<5) del=5;
+ return Set(P_INPC_WALK_DELAYS,del);
+}
+
+mixed _query_inpc_home() {
+ mixed res;
+
+ res=Query(P_INPC_HOME);
+ if (!res) return "/room/void";
+ return res;
+}
+
+int area_check(string fn) {
+ mixed area;
+ string *words;
+ int i;
+
+ if (!(area=QueryProp(P_INPC_WALK_AREA)))
+ return 1; // Keine Beschraenkung im Gebiet?
+ if (mappingp(area)) {
+ if (area[fn])
+ return 1; // Explizit erlaubter Raum
+ words=old_explode(fn,"/");
+ for (i=sizeof(words)-2;i>=0;i--)
+ if (area[implode(words[0..i],"/")])
+ return 1; // Erlaubtes Gebiet
+ return 0; // Nicht erlaubtes Gebiet
+ }
+ if (pointerp(area)) {
+ for (i=sizeof(area)-1;i>=0;i--)
+ if (fn[0..(sizeof(area[i])-1)]==area[i])
+ return 1; // Erlaubtes Gebiet
+ return 0; // Nicht erlaubtes Gebiet
+ }
+ return 1;
+}
+
+int may_enter_room(mixed room) {
+ int flags;
+ string fn;
+ object ob;
+
+ if (objectp(room)) {
+ fn=object_name(room);
+ ob=room;
+ } else if (stringp(room)) {
+ fn=room;
+ ob=find_object(room);
+ } else
+ return 1; // Dann sollte move schon nen Fehler machen
+ if (fn=="/room/void") // Void darf IMMER betreten werden
+ return 1;
+ flags=QueryProp(P_INPC_WALK_FLAGS);
+ if (!(flags & WF_MAY_LOAD)
+ && !objectp(ob))
+ return 0; // Darf nicht in nicht geladene Raeume folgen.
+ if (!(flags & WF_MAY_WALK_BACK)
+ && ob==QueryProp(P_INPC_LAST_ENVIRONMENT))
+ return 0; // Darf nicht in den vorherigen Raum
+ return area_check(fn);
+}
+
+int walk_random() {
+ string *ex,*ex2;
+ object env;
+ int i,r,flags;
+
+ if (!objectp(env=ENV))
+ return 0;
+ ex=m_indices(ENV->QueryProp(P_EXITS));
+ flags=QueryProp(P_CAN_FLAGS);
+ if (flags & WF_MAY_USE_SPECIAL)
+ ex+=m_indices(ENV->QueryProp(P_SPECIAL_EXITS));
+ ex2=ex[0..];
+ while (i=sizeof(ex)) {
+ r=random(i);
+ command(ex[r]);
+ if (ENV!=env)
+ return 1;
+ ex-=({ex[r]});
+ }
+ if (!(flags & WF_MAY_WALK_BACK)) {
+ SetProp(P_INPC_LAST_ENVIRONMENT,0);//Dirty Hack, um Sackgassen zu verlassen
+ ex=ex2;
+ while (i=sizeof(ex)) {
+ r=random(i);
+ command(ex[r]);
+ if (ENV!=env)
+ return 1;
+ ex-=({ex[r]});
+ }
+ }
+ return move(QueryProp(P_INPC_HOME),M_TPORT);
+}
+
+int walk_route() {
+}
+
+int walk_to() {
+}
+
+int walk_follow() {
+}
+
+int walk_flee() {
+}