Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/LPC/switch b/doc/LPC/switch
new file mode 100644
index 0000000..9bca596
--- /dev/null
+++ b/doc/LPC/switch
@@ -0,0 +1,93 @@
+NAME
+        switch
+
+SYNTAX
+        switch (expr) block
+
+DESCRIPTION
+        Branch to the case label in statement that matches expr.
+        If no matching case label is found (by value or by type),
+        branch to the default label in statement.
+
+        A case label has the form
+
+                case expr_n :
+
+        where expr_n must be constant, or the form
+
+                case expr_n1 .. expr_n2 :
+
+        where expr_n1 and expr_n2 must be numeric constants and
+        expr_n1 < expr_n2.
+
+        Either all case labels have to be strings or all have to be
+        numeric. Only 0 is special: it is allowed in a switch
+        statement where all other labels are strings.
+
+        A default label has the form
+
+                default :
+
+        The default label defaults to the end of statement if not
+        given explicitly.
+
+        Whenever a 'break' statement is executed inside 'statement' a
+        branch to the end of the switch statement is performed.
+
+EXAMPLE
+        Typical usage:
+
+            switch(random(100)) {
+              case 0 .. 22 : write("Nothing happens"); break;
+              case 23 .. 27 :
+                write("You are surrounded by a golden glow");
+                this_player()->heal_self(random(3));
+                break;
+              case 28 .. 32 :
+                write("The water was poisoned!\n");
+                this_player()->add_exp(this_player()->hit_player(random(4)));
+                break;
+              case 33 : write("You hear a voice whispering: "+random_hint());
+              /* fall through */
+              case 34 :
+                write("While you didn't pay attention, a water demon "
+                      "snatches a coin out of your purse!\n");
+                this_player()->add_money(-1);
+                break;
+              default : write "You hear some strange noises\n"; break;
+              case 42 : return;
+              case 99 : write("It tastes good.\n";
+            }
+
+NOTE
+        In C, the grammar for switch() is
+
+            switch (expr) statement
+
+        allowing constructs like
+
+            switch (expr)
+              while (expr2)
+              {
+              case 1: ...
+              case 2: ...
+              }
+
+        In LPC a switch has to be followed by a block that contains the
+        case labels directly. In contrast to C the group of statements
+        following a case label have their own lexical scope so that
+        variable declarations may not cross case labels.
+
+HISTORY
+        LDMud 3.2.10 constrained the grammar to require a block for the
+          switch() body, not just a statement. This differs from the C
+          syntax, but was necessary as the compiler didn't handle
+          the statement case correctly.
+        LDMud 3.3 allowed to pass values of the wrong type to switch(), the
+          driver would in that case use the default case. Before, values of
+          the wrong type caused a runtime error.
+        LDMud 3.3.718 disallowed case labels in inner blocks and variable
+          declarations that cross case labels.
+
+SEE ALSO
+        for(LPC), foreach(LPC), do-while(LPC), if(LPC), while(LPC)