blob: dec4118f306ba9f3caab4f17bccd451cf091011f [file] [log] [blame]
// MorgenGrauen MUDlib
//
// shells/elf.c -- Elven Shell
//
// $Id: elf.c 8928 2014-09-08 16:18:41Z Zesstra $
#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 <defuel.h>
void create()
{
if (!clonep() || object_name(this_object()) == __FILE__[0..<3]) {
set_next_reset(-1);
return;
}
base::create();
SetDefaultHome("/d/wald/room/es_mitte");
SetDefaultPrayRoom("/d/wald/room/es_mitte");
SetProp(P_AVERAGE_SIZE,195);
SetProp(P_AVERAGE_WEIGHT,70000);
SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_ENEMY_SAVE:110]));
SetProp(P_ATTRIBUTES_OFFSETS,([A_INT:3,A_DEX:2,A_CON:1]));
SetProp(P_MATERIAL_KNOWLEDGE,([MATGROUP_WOOD:30,
MATGROUP_HERBAL:30,
MATGROUP_LIVING:20]));
SetProp(P_MAX_FOOD,80);
SetProp(P_MAX_DRINK,150);
SetProp(P_MAX_ALCOHOL,70);
SetProp(P_SP_DELAY,HEAL_DELAY-1);
SetProp(P_FOOD_DELAY,FOOD_DELAY+1);
SetProp(P_DRINK_DELAY,DRINK_DELAY-2);
SetProp(P_ALCOHOL_DELAY,ALCOHOL_DELAY+1);
SetProp(P_MAGIC_RESISTANCE_OFFSET,
([ MT_ILLUSION : 800,
MT_ANGRIFF : 200,
MT_VERWANDLUNG : 400,
MT_PSYCHO : 500 ]));
// Elfen kriegen die Ebene der Wipfellaeufer per default. (Zu diesem
// Zeitpunkt stehen in P_CHANNELS nur die default channel drin, wird dann
// ueber das Einlesen des Savefiles ggf. ueberschrieben.)
SetProp(P_CHANNELS, QueryProp(P_CHANNELS) + ({"wipfellaeufer"}));
if(!IS_SEER(this_object())){
SetProp(P_MSGIN,"wandelt herein");
SetProp(P_MSGOUT,"wandelt");
}
/* Groesse wird nur einmal gesetzt */
if(!QueryProp(P_SIZE)){
SetProp(P_SIZE,185+random(21));
Set(P_SIZE,SAVE,F_MODE_AS);
}
/* Dito Gewicht */
if(!QueryProp(P_WEIGHT) || (QueryProp(P_WEIGHT) == 75000)){
SetProp(P_WEIGHT,60000+random(20001));
if(QueryProp(P_GENDER)==FEMALE)
SetProp(P_WEIGHT,QueryProp(P_WEIGHT)-5000);
Set(P_WEIGHT,SAVE,F_MODE_AS);
}
SetProp(P_DEFUEL_LIMIT_FOOD,40);
SetProp(P_DEFUEL_LIMIT_DRINK,20);
SetProp(P_DEFUEL_TIME_FOOD,400);
SetProp(P_DEFUEL_TIME_DRINK,200);
SetProp(P_DEFUEL_AMOUNT_FOOD,0.4);
SetProp(P_DEFUEL_AMOUNT_DRINK,0.35);
}
string _query_race()
{
return "Elf";
}
string _query_real_race()
{
return "Elf";
}
string _query_racedescr()
{
return
"\
Als Elfen bezeichnet man in der Regel jene hageren Hinterwaeldler, deren\n\
demonstratives Naturgehabe in der Regel nur durch ihre Liebe zu kitschigen\n\
Gedichten und ausschweifendem Geschlechtsleben in den Schatten gestellt wird.\n\
Einen Elf kann man im allgemeinen nicht nur an aeusseren Missbildungen\n\
(spitze Ohren, spindelduerre Gestalt, blonde Haare) erkennen, sondern auch\n\
an seiner aufdringlichen Art, ueber jeden und alles hemmungslos ins Gruene\n\
loszuphilosophieren.\n";
}
int QueryAllowSelect() { return 1; }
string *_query_racestring()
{
if (QueryProp(P_GENDER)==2)
return ({"Elfe","Elfe","Elfe","Elfe"});
return ({"Elf","Elfen","Elf","Elf"});
}
int _query_hp_delay(){
int re;
re = Query(P_HP_DELAY);
if (environment() && environment()->QueryProp(P_INDOORS))
re++;
else
re--;
return re;
}
int _query_sp_delay(){
int re;
re = Query(P_SP_DELAY);
if (environment() && environment()->QueryProp(P_INDOORS))
re++;
else
re--;
return re;
}
string _query_default_guild(){
return "wipfellaeufer";
}
static void FinalSetup()
{
if(QueryProp(P_GUILD) != "chaos")
SetProp(P_RESISTANCE_STRENGTHS,
([ DT_MAGIC : -0.2,
DT_HOLY : 0.1,
DT_UNHOLY : 0.3 ]));
else
SetProp(P_RESISTANCE_STRENGTHS,
([ DT_MAGIC : -0.2,
DT_UNHOLY : 0.1,
DT_HOLY : 0.3 ]));
}