Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/std/shells/feline.c b/std/shells/feline.c
new file mode 100644
index 0000000..f590fab
--- /dev/null
+++ b/std/shells/feline.c
@@ -0,0 +1,259 @@
+// MorgenGrauen MUDlib
+//
+// shells/feline.c -- Feline Shell
+//
+// $Id: feline.c 8487 2013-05-21 19:15:52Z Zesstra $
+
+#pragma strong_types,save_types
+
+inherit "/std/player/base";
+
+#include <attributes.h>
+#include <combat.h>
+#include <health.h>
+#include <new_skills.h>
+#include <properties.h>
+#include <language.h>
+#include <wizlevels.h>
+#include <defuel.h>
+
+
+void create()
+{   
+    if (!clonep() || object_name(this_object()) == __FILE__[0..<3]) {
+      set_next_reset(-1);    
+      return;
+    }
+
+    int   i,g;
+    mixed h;
+
+    base::create();
+
+// Startraum/Kapelle setzen
+    SetDefaultHome("/d/dschungel/paracelsus/room/fkapelle");
+    SetDefaultPrayRoom("/d/dschungel/paracelsus/room/fkapelle");
+
+// Besondere rassenspezifische Properties (bei denen es nichts macht, wenn
+// sie nach jedem Einloggen neu gesetzt werden):
+
+    SetProp(P_ATTRIBUTES_OFFSETS, // Summe 4 statt 6 wg. SA_SPEED
+    ([
+        A_STR :  1,
+        A_INT :  2,
+        A_DEX :  2,
+        A_CON : -1 
+    ]) );
+    SetProp(P_AVERAGE_SIZE,200);
+    SetProp(P_AVERAGE_WEIGHT,85000);
+    SetProp(P_BODY,15);
+    SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_SPEED:120]));
+    SetProp(P_MATERIAL_KNOWLEDGE,
+    ([
+        MATGROUP_WOOD    :  60,
+        MATGROUP_JEWEL   : 100,
+        MATGROUP_EATABLE :  30
+    ]) );
+
+    SetProp(P_MAGIC_RESISTANCE_OFFSET,
+    ([
+        MT_ANGRIFF     :  200,
+        MT_ILLUSION    : -500,
+        MT_VERWANDLUNG :  500,
+        MT_PSYCHO      : 1000 
+    ]) );
+
+    SetProp(P_RESISTANCE_STRENGTHS,
+    ([
+        DT_WATER : -0.1,
+        DT_ACID  :  0.1,
+        DT_COLD  :  0.1 
+    ]) );
+
+// Lebenspunkte werden langsamer als normal regeneriert
+    SetProp(P_HP_DELAY,HEAL_DELAY+1);
+
+// Magiepunkte werden schneller als normal regeneriert
+    SetProp(P_SP_DELAY,HEAL_DELAY-1);
+
+// Gift wirkt etwas langsamer als normal
+    SetProp(P_POISON_DELAY,POISON_DELAY+1);
+
+// Getraenke werden etwas schneller als normal abgebaut
+    SetProp(P_DRINK_DELAY,DRINK_DELAY-1);
+
+// Essen wird etwas schneller als normal abgebaut ...
+    SetProp(P_FOOD_DELAY,FOOD_DELAY-1);
+    SetProp(P_MAX_FOOD,140);
+
+// Es gibt einige Sachen, die sollen nur beim ersten Einloggen gesetzt werden.
+// Andere muessen nachtraeglich - aber nur einmal - gemacht werden, weil sich
+// etwas geaendert hat.
+    switch( QueryProp(P_SHELL_VERSION) )
+    {
+        case 0 :
+
+            g=QueryProp(P_GENDER);
+
+            if ( !(i=QueryProp(P_SIZE)) || (i<(g==FEMALE?165:170)) 
+                || (i>(g==FEMALE?225:230)) )
+            {
+                SetProp(P_SIZE, (g==FEMALE?195:200)
+                    + random(16) - random(16) + random(16) - random(16) );
+            }
+
+            if( !(i=QueryProp(P_WEIGHT)) || (i<(g==FEMALE?70000:77000)) 
+               || (i>(g==FEMALE?88000:95000)) || (i==75000) )
+            {
+                SetProp(P_WEIGHT, (g==FEMALE?70000:77000)
+                    + random(4501) + random(4501) + random(4501) + random(4501) );
+            }
+
+
+            SetProp(P_MATERIAL,([
+                MAT_MISC_LIVING : 90,
+                MAT_PELT        :  8,
+                MAT_HORN        :  2
+            ]) );
+
+            if ( !IS_SEER(this_object()) )
+            {
+                SetProp(P_MSGIN,"schleicht herein");
+                SetProp(P_MSGOUT,"schleicht");
+                SetProp(P_MMSGIN,"erscheint mit einem grellen Blitz");
+                SetProp(P_MMSGOUT,"verschwindet mit einem grellen Blitz");
+                SetProp(P_HANDS,({" mit scharfen Krallen",40, ({DT_RIP}) }));
+            }
+            else
+            {
+                if ( !pointerp(h=QueryProp(P_HANDS)) || (sizeof(h)<1) )
+                    h = ({" mit scharfen Krallen",40, ({DT_RIP}) });
+                else
+                    h = ({h[0],40, ({DT_RIP}) });
+                SetProp(P_HANDS, h);
+            }
+
+            if ( !pointerp(h=QueryProp(P_CHANNELS)) )
+                SetProp(P_CHANNELS,({"katzenkrieger"}));
+            else if ( member(h,"katzenkrieger")==-1 )
+                SetProp(P_CHANNELS, h + ({"katzenkrieger"}) );
+
+            Set(P_SIZE,SAVE,F_MODE_AS);
+            Set(P_MATERIAL,SAVE,F_MODE_AS);
+            Set(P_WEIGHT,SAVE,F_MODE_AS);
+
+        default :
+
+            SetProp(P_SHELL_VERSION,1);
+    }
+  SetProp(P_DEFUEL_LIMIT_FOOD,70);
+  SetProp(P_DEFUEL_LIMIT_DRINK,40);
+  SetProp(P_DEFUEL_TIME_FOOD,400);
+  SetProp(P_DEFUEL_TIME_DRINK,300);
+  SetProp(P_DEFUEL_AMOUNT_FOOD,0.55);
+  SetProp(P_DEFUEL_AMOUNT_DRINK,0.4);
+
+}
+
+// Diese Rasse kann derzeit gewaehlt werden:
+int QueryAllowSelect() { return 1; }
+
+// Rassenbezeichnung
+string _query_race()
+{
+    return "Feline";
+}
+
+string _query_real_race()
+{
+    return "Feline";
+}
+
+// Die Rassenbeschreibung, die man beim ersten Einloggen abrufen kann.
+string _query_racedescr()
+{
+    return break_string(
+        "Felinen sind aufrecht gehende Katzenwesen.\n"+
+        "Ihre Heimat ist der Dschungel. Kaum jemand duerfte sich dort "+
+        "besser zurechtfinden als sie. Bedingt durch diese Umgebung "+
+        "haben sie im Laufe der Zeit eine Vorliebe fuer elegante Hoelzer "+
+        "und funkelnde Edelsteine entwickelt. Sie sind zwar nicht so "+
+        "'raffgierig' wie Zwerge, aber dennoch sollte man besser nicht "+
+        "versuchen, einem Felinen einen Edelstein wegzunehmen. Sie "+
+        "benutzen die Edelsteine sehr gerne, um sich damit zu schmuecken. "+
+        "Felinen betreiben sogar einen regelrechten Koerperkult, "+
+        "insbesondere wenn es darum geht, das Fell oder die Krallen zu "+
+        "faerben. Edelsteine kommen da als Accessoires gerade recht.\n"+
+        "Auch im Kampf gegen einen Felinen sollte man sehr vorsichtig "+
+        "sein, da Felinen ihre geringe Ausdauer durch eine hohe "+
+        "Geschwindigkeit sowie Geschick und Intelligenz wettmachen. "+
+        "Auch die Spitzen Krallen sind da nicht zu verachten und so "+
+        "mancher Gegner musste schon als Ersatz fuer einen Kratzbaum "+
+        "herhalten.",78,0,1);
+}
+
+// Geschlechtsabhaengiges Rassenbezeichnungs-Array
+string *_query_racestring()
+{
+    if (QueryProp(P_GENDER)==2)
+        return ({"Felinin","Felinin","Felinin","Felinin"});
+    return ({"Feline","Felinen","Felinen","Felinen"});
+}
+
+// Regeneration der Lebenspunkte ist von der Umgebung abhaengig
+// Im Wald und Dschungel geht es schneller, in der Wueste und im
+// Polargebiet dagegen langsamer.
+int _query_hp_delay()
+{
+    int re;
+    string fn;
+
+    re = Query(P_HP_DELAY);
+    if (environment() && !(environment()->QueryProp(P_INDOORS)) &&
+        fn=object_name(environment()))
+    {
+        if (fn[0..12]=="/d/dschungel/" || fn[0..7]=="/d/wald/")
+            re--;
+        else if (fn[0..9]=="/d/wueste/" || fn[0..8]=="/d/polar/")
+            re++;
+    }
+    return re;
+}
+
+// Regeneration der Magiepunkte ist von der Umgebung abhaengig
+// Im Wald und Dschungel geht es schneller, in der Wueste und im
+// Polargebiet dagegen langsamer.
+int _query_sp_delay()
+{
+    int re;
+    string fn;
+
+    re = Query(P_SP_DELAY);
+    if (environment() && !(environment()->QueryProp(P_INDOORS)) &&
+        fn=object_name(environment()))
+    {
+        if (fn[0..12]=="/d/dschungel/" || fn[0..7]=="/d/wald/")
+            re--;
+        else if (fn[0..9]=="/d/wueste/" || fn[0..8]=="/d/polar/")
+            re++;
+    }
+    return re;
+}
+
+string _query_default_guild(){
+  return "katzenkrieger";
+}
+
+mixed RaceDefault(string arg)
+{
+    if (!arg)
+      return 0;
+    switch(arg)
+    {
+        case P_HANDS :
+            return ({" mit scharfen Krallen",40, ({DT_RIP}) });
+        case P_BODY :
+            return 15;
+    }
+    return base::RaceDefault(arg);
+}