blob: dec4118f306ba9f3caab4f17bccd451cf091011f [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// MorgenGrauen MUDlib
2//
3// shells/elf.c -- Elven Shell
4//
5// $Id: elf.c 8928 2014-09-08 16:18:41Z Zesstra $
6
7#pragma strong_types,save_types
8
9inherit "std/player/base";
10
11#include <properties.h>
12#include <attributes.h>
13#include <wizlevels.h>
14#include <health.h>
15#include <new_skills.h>
16#include <language.h>
17#include <combat.h>
18#include <defuel.h>
19
20
21
22void create()
23{
24 if (!clonep() || object_name(this_object()) == __FILE__[0..<3]) {
25 set_next_reset(-1);
26 return;
27 }
28
29 base::create();
30 SetDefaultHome("/d/wald/room/es_mitte");
31 SetDefaultPrayRoom("/d/wald/room/es_mitte");
32 SetProp(P_AVERAGE_SIZE,195);
33 SetProp(P_AVERAGE_WEIGHT,70000);
34 SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_ENEMY_SAVE:110]));
35 SetProp(P_ATTRIBUTES_OFFSETS,([A_INT:3,A_DEX:2,A_CON:1]));
36 SetProp(P_MATERIAL_KNOWLEDGE,([MATGROUP_WOOD:30,
37 MATGROUP_HERBAL:30,
38 MATGROUP_LIVING:20]));
39
40 SetProp(P_MAX_FOOD,80);
41 SetProp(P_MAX_DRINK,150);
42 SetProp(P_MAX_ALCOHOL,70);
43
44 SetProp(P_SP_DELAY,HEAL_DELAY-1);
45 SetProp(P_FOOD_DELAY,FOOD_DELAY+1);
46 SetProp(P_DRINK_DELAY,DRINK_DELAY-2);
47 SetProp(P_ALCOHOL_DELAY,ALCOHOL_DELAY+1);
48
49 SetProp(P_MAGIC_RESISTANCE_OFFSET,
50 ([ MT_ILLUSION : 800,
51 MT_ANGRIFF : 200,
52 MT_VERWANDLUNG : 400,
53 MT_PSYCHO : 500 ]));
54
55 // Elfen kriegen die Ebene der Wipfellaeufer per default. (Zu diesem
56 // Zeitpunkt stehen in P_CHANNELS nur die default channel drin, wird dann
57 // ueber das Einlesen des Savefiles ggf. ueberschrieben.)
58 SetProp(P_CHANNELS, QueryProp(P_CHANNELS) + ({"wipfellaeufer"}));
59
60 if(!IS_SEER(this_object())){
61 SetProp(P_MSGIN,"wandelt herein");
62 SetProp(P_MSGOUT,"wandelt");
63 }
64
65 /* Groesse wird nur einmal gesetzt */
66 if(!QueryProp(P_SIZE)){
67 SetProp(P_SIZE,185+random(21));
68 Set(P_SIZE,SAVE,F_MODE_AS);
69 }
70
71 /* Dito Gewicht */
72 if(!QueryProp(P_WEIGHT) || (QueryProp(P_WEIGHT) == 75000)){
73 SetProp(P_WEIGHT,60000+random(20001));
74 if(QueryProp(P_GENDER)==FEMALE)
75 SetProp(P_WEIGHT,QueryProp(P_WEIGHT)-5000);
76 Set(P_WEIGHT,SAVE,F_MODE_AS);
77 }
78 SetProp(P_DEFUEL_LIMIT_FOOD,40);
79 SetProp(P_DEFUEL_LIMIT_DRINK,20);
80 SetProp(P_DEFUEL_TIME_FOOD,400);
81 SetProp(P_DEFUEL_TIME_DRINK,200);
82 SetProp(P_DEFUEL_AMOUNT_FOOD,0.4);
83 SetProp(P_DEFUEL_AMOUNT_DRINK,0.35);
84
85}
86
87string _query_race()
88{
89 return "Elf";
90}
91
92string _query_real_race()
93{
94 return "Elf";
95}
96
97string _query_racedescr()
98{
99 return
100"\
101Als Elfen bezeichnet man in der Regel jene hageren Hinterwaeldler, deren\n\
102demonstratives Naturgehabe in der Regel nur durch ihre Liebe zu kitschigen\n\
103Gedichten und ausschweifendem Geschlechtsleben in den Schatten gestellt wird.\n\
104Einen Elf kann man im allgemeinen nicht nur an aeusseren Missbildungen\n\
105(spitze Ohren, spindelduerre Gestalt, blonde Haare) erkennen, sondern auch\n\
106an seiner aufdringlichen Art, ueber jeden und alles hemmungslos ins Gruene\n\
107loszuphilosophieren.\n";
108
109}
110
111int QueryAllowSelect() { return 1; }
112
113string *_query_racestring()
114{
115 if (QueryProp(P_GENDER)==2)
116 return ({"Elfe","Elfe","Elfe","Elfe"});
117 return ({"Elf","Elfen","Elf","Elf"});
118}
119int _query_hp_delay(){
120 int re;
121 re = Query(P_HP_DELAY);
122 if (environment() && environment()->QueryProp(P_INDOORS))
123 re++;
124 else
125 re--;
126 return re;
127}
128int _query_sp_delay(){
129 int re;
130 re = Query(P_SP_DELAY);
131 if (environment() && environment()->QueryProp(P_INDOORS))
132 re++;
133 else
134 re--;
135 return re;
136}
137
138string _query_default_guild(){
139 return "wipfellaeufer";
140}
141
142static void FinalSetup()
143{
144 if(QueryProp(P_GUILD) != "chaos")
145 SetProp(P_RESISTANCE_STRENGTHS,
146 ([ DT_MAGIC : -0.2,
147 DT_HOLY : 0.1,
148 DT_UNHOLY : 0.3 ]));
149 else
150 SetProp(P_RESISTANCE_STRENGTHS,
151 ([ DT_MAGIC : -0.2,
152 DT_UNHOLY : 0.1,
153 DT_HOLY : 0.3 ]));
154}