Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/shells/orc.c b/std/shells/orc.c
new file mode 100644
index 0000000..95c73f6
--- /dev/null
+++ b/std/shells/orc.c
@@ -0,0 +1,203 @@
+#pragma strong_types,save_types
+
+inherit "std/player/base";
+
+#include <properties.h>
+#include <attributes.h>
+#include <wizlevels.h>
+#include <health.h>
+#include <new_skills.h>
+#include <language.h>
+#include <combat.h>
+#include <defines.h>
+#include <defuel.h>
+
+/*
+ * Orks:
+ * Orks sind eigentlich boese und blutruenstig, was auch oft genug zum
+ * Vorschein tritt :) Wenn ein Ork zu heftig forscht, quengelt er rum
+ * und weigert sich, bis er nicht wieder ein bisschen Blut verspritzt
+ * hat,
+*/
+#define F_MAX 500
+#define F_DEG 3
+#define NO_EXAMINE ({ \
+ "Du knurrst: Ich will Blut, keine Bluemchen.", \
+ "Du grummelst: Bin ich ein Forscher, oder was?" \
+ })
+
+static int f_cnt, f_deg;
+
+int
+QueryFCnt() {
+ return f_cnt;
+}
+
+int
+SetFCnt(int fc) {
+ if(fc > -1 && fc < F_MAX)
+ f_cnt = fc;
+ return f_cnt;
+}
+
+int
+QueryFDeg() {
+ return f_deg;
+}
+
+void
+create() {
+ if (!clonep() || object_name(this_object()) == __FILE__[0..<3]) {
+ set_next_reset(-1);
+ return;
+ }
+
+ mixed res;
+
+ base::create();
+
+ f_cnt=0;
+ f_deg=F_DEG;
+
+ SetDefaultHome("/d/vland/morgoth/room/city/rathalle");
+ SetDefaultPrayRoom("/d/vland/morgoth/room/city/c0606");
+ SetProp(P_ATTRIBUTES_OFFSETS,([A_STR:3,A_INT:-1,A_CON:2]));
+ /* Kleine aeh grosse Muskelpakete */
+ SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_DAMAGE:110]));
+ SetProp(P_AVERAGE_SIZE,195);
+ SetProp(P_AVERAGE_WEIGHT,125000); // ziemlich schwer, viele Muskeln
+ SetProp(P_MATERIAL_KNOWLEDGE,([MATGROUP_DEAD:60,
+ MATGROUP_BIO:40,
+ MATGROUP_ELEMENTAL: 20,
+ MAT_BLOOD:100]));
+ SetProp(P_CHANNELS, QueryProp(P_CHANNELS) + ({"Uruk-Hai"}));
+ SetProp(P_RESISTANCE_STRENGTHS,
+ ([
+ DT_FIRE : -0.2,
+ DT_HOLY :0.3,
+ DT_UNHOLY : -0.2,
+ DT_ACID : 0.2 ]));
+
+ SetProp(P_MAX_FOOD,110);
+ SetProp(P_MAX_DRINK,110);
+ SetProp(P_MAX_ALCOHOL,150);
+ SetProp(P_DEFUEL_LIMIT_FOOD,50);
+ SetProp(P_DEFUEL_LIMIT_DRINK,70);
+ SetProp(P_DEFUEL_TIME_FOOD,300);
+ SetProp(P_DEFUEL_TIME_DRINK,400);
+ SetProp(P_DEFUEL_AMOUNT_FOOD,0.4);
+ SetProp(P_DEFUEL_AMOUNT_DRINK,0.35);
+
+ /* SP regenerieren sie nich ganz so schnell, dafuer sind sie
+ * ein bischen schneller bei Gift und Futter */
+ SetProp(P_SP_DELAY,HEAL_DELAY+1);
+ SetProp(P_POISON_DELAY,POISON_DELAY-1);
+ SetProp(P_FOOD_DELAY,FOOD_DELAY-1);
+
+ SetProp(P_MAGIC_RESISTANCE_OFFSET,
+ ([ MT_ANGRIFF : 500,
+ MT_ILLUSION : -250,
+ MT_BEHERRSCHUNG : -250,
+ MT_VERWANDLUNG : 500 ]));
+
+
+ if(!(res=QueryProp(P_HANDS)) || !pointerp(res) || (sizeof(res)<3))
+ res=({" mit starken Haenden",35,({DT_BLUDGEON, DT_RIP}) });
+ SetProp(P_HANDS,res);
+ /* Orks haben dicke Haut */
+ SetProp(P_BODY,20);
+
+ /* Groesse wird nur einmal gesetzt */
+ if(!QueryProp(P_SIZE)){
+ SetProp(P_SIZE,180+random(31));
+ Set(P_SIZE,SAVE,F_MODE_AS);
+ }
+
+ /* Dito Gewicht */
+ if(!QueryProp(P_WEIGHT) || (QueryProp(P_WEIGHT) == 75000)){
+ SetProp(P_WEIGHT,100000+random(25001)+random(25001));
+ Set(P_WEIGHT,SAVE,F_MODE_AS);
+ }
+}
+
+string
+_query_race() {
+ return "Ork";
+}
+
+string
+_query_real_race() {
+ return "Ork";
+}
+
+string
+_query_racedescr() {
+ return break_string("Ein Ork. Die brutale Macht des Boesen. Ein "
+ "erbitterter Kaempfer, ohne Furcht vor dem Tod. So stellst Du "
+ "Dir einen Ork vor.\nDiese Orks sehen vielleicht ausserlich so "
+ "aus: Eine dicke und dunkle, lederartige Haut, die sicher "
+ "einiges an Schlaegen abhaelt. Lange Eckzaehne, die sicher boese "
+ "Wunden reissen koennen.\nDu spuerst, dass diese Orks hier ein "
+ "wenig anders sind. Ihren Drang nach dem Blut ihrer Feinde scheinen "
+ "sie recht gut unter Kontrolle zu haben, die meiste Zeit zumindest. "
+ "Sie sind in der Lage, friedlich zwischen den anderen Rassen zu "
+ "wandeln. Dennoch sind vor allem die Uruk-Hai Orks als Gegner nicht "
+ "zu unterschaetzen, sollte es doch einmal zu einem Kampf kommen.",
+ 78,0,BS_LEAVE_MY_LFS);
+}
+
+int
+QueryAllowSelect() {
+ return 1;
+}
+
+string
+*_query_racestring() {
+ if (QueryProp(P_GENDER)==FEMALE)
+ return ({"Orkin","Orkin","Orkin","Orkin"});
+ return ({"Ork","Orkes","Ork","Ork"});
+}
+
+string
+_query_default_guild(){
+ return "urukhai";
+}
+
+mixed
+RaceDefault(string arg) {
+ if (!arg)
+ return 0;
+ switch(arg) {
+ case P_HANDS :
+ return ({" mit starken Haenden",35,({DT_BLUDGEON,DT_RIP}) });
+ case P_BODY :
+ return 25;
+ }
+ return base::RaceDefault(arg);
+}
+
+protected void heart_beat() {
+ ::heart_beat();
+
+ if(f_cnt > 0 && !--f_deg) {
+ f_cnt--;
+ f_deg=F_DEG;
+ }
+}
+
+void
+Attack(object enemy) {
+ if(f_cnt > 0)
+ f_cnt--;
+ return ::Attack(enemy);
+}
+
+varargs int
+_examine(string str, int mode) {
+
+ if(++f_cnt > F_MAX) {
+ tell_object(this_object(),break_string(NO_EXAMINE[random(sizeof(NO_EXAMINE))],78));
+ return 1;
+ }
+ return ::_examine(str,mode);
+}