#include <properties.h>#include <attributes.h>#include <wizlevels.h>#include <health.h>#include <new_skills.h>#include <language.h>#include <defines.h>#include <combat.h>#include <defuel.h>
gehe zum Quellcode dieser Datei
Funktionen | |
| protected void | create () |
| static void | FinalSetup () |
| string | _query_race () |
| string | _query_real_race () |
| static string | _query_racedescr () |
| int | QueryAllowSelect () |
| string * | _query_racestring () |
| static string | _query_default_guild () |
| static int | sun_in_room (object room) |
| protected void | heart_beat () |
| static int | _query_no_regeneration () |
| int | StdSkill_Nightvision (object me, string sname, mixed sinfo) |
| varargs int | CannotSee (int silent) |
| static int | _indoorbug (string key) |
| static string * | _query_localcmds () |
Variablen | |
| inherit std player | base |
| static int _indoorbug | ( | string | key | ) | [static] |
Definiert in Zeile 248 der Datei darkelf.c.
00249 { 00250 if (!stringp(key)) key= ""; 00251 log_file("DARKELF_INDOOR", sprintf("%s : %s, %s: %s\n", 00252 object_name(environment(this_object())), 00253 dtime(time()), getuid(this_object()), key )); 00254 write("Du hast einen fehlerhaften Innen-/Aussen-/Sonnenlichtraum gemeldet.\n" 00255 ); 00256 return 1; 00257 }

| static string _query_default_guild | ( | ) | [static] |
| static string* _query_localcmds | ( | ) | [static] |
Definiert in Zeile 259 der Datei darkelf.c.
Benutzt _query_localcmds().
00260 { 00261 return ({ ({"sonnenfehler", "_indoorbug", 0, 0 }) }) 00262 + base::_query_localcmds(); 00263 }

| static int _query_no_regeneration | ( | ) | [static] |
Definiert in Zeile 166 der Datei darkelf.c.
Benutzt NO_REG, P_NO_REGENERATION, Query() und sun_in_room().
00167 { 00168 if (sun_in_room(environment())) 00169 return NO_REG; 00170 return Query(P_NO_REGENERATION); 00171 }

| string _query_race | ( | ) |
| static string _query_racedescr | ( | ) | [static] |
Definiert in Zeile 99 der Datei darkelf.c.
00100 { 00101 return 00102 "\ 00103 Das Volk der Dunkelelfen lebt in einer grossen Hoehlenstadt gut versteckt\n\ 00104 hinter einem Wasserfall. Ueber kaum ein anderes Volk gibt es soviele\n\ 00105 Vorurteile wie ueber die Dunkelelfen, und so werden sie von allen misstrauisch\n\ 00106 beaeugt oder sogar bekaempft. In diesem Kampf, insbesondere gegen die Elfen,\n\ 00107 sind sie voellig auf sich allein gestellt, und so hat sich eine mehr oder\n\ 00108 minder autarke Gesellschaft entwickelt. Die Dunkelelfen haben eine eigene\n\ 00109 Kultur und eine eigene Goettin, der sie huldigen. Wie auch die Elfen\n\ 00110 verfuegen sie ueber ausserordenlich grosse magische Faehigkeiten, auch wenn\n\ 00111 sie sich mehr auf die schwarze Seite der Magie spezialisiert haben.\n"; 00112 }
| string* _query_racestring | ( | ) |
Definiert in Zeile 118 der Datei darkelf.c.
Benutzt P_GENDER und QueryProp().
00119 { 00120 if (QueryProp(P_GENDER)==2) 00121 return ({"Dunkelelfe","Dunkelelfe","Dunkelelfe","Dunkelelfe"}); 00122 return ({"Dunkelelf","Dunkelelfen","Dunkelelf","Dunkelelf"}); 00123 }

| string _query_real_race | ( | ) |
| varargs int CannotSee | ( | int | silent | ) |
Definiert in Zeile 210 der Datei darkelf.c.
Benutzt IS_LEARNER, ME, P_BLIND, P_GHOST, P_PLAYER_LIGHT, P_WANTS_TO_LEARN, Query(), QueryProp(), QuerySkill(), SK_NIGHTVISION, StdSkill_Nightvision() und UseSkill().
00211 { 00212 string is_blind; 00213 00214 if ( is_blind = QueryProp( P_BLIND ) ) { 00215 if (!silent) { 00216 if (stringp(is_blind)) write(is_blind); 00217 else write("Du bist blind!\n"); 00218 } 00219 return 1; 00220 } 00221 if (environment() && (!IS_LEARNER(ME) || !Query(P_WANTS_TO_LEARN))) { 00222 if (QueryProp(P_GHOST)) { 00223 if (StdSkill_Nightvision(ME, SK_NIGHTVISION, QuerySkill(SK_NIGHTVISION))>0) 00224 return 0; 00225 } 00226 else if (UseSkill(SK_NIGHTVISION)>0) return 0; 00227 if (!silent) { 00228 if (QueryProp(P_PLAYER_LIGHT)<=0) 00229 write("Du kannst nichts sehen, da sich Deine Augen noch nicht an die Dunkelheit\n" 00230 +"gewoehnt haben!\n"); 00231 else write("Du bist von dem hellen Licht total geblendet und Du musst Dich erst langsam\n" 00232 +"daran gewoehnen.\n"); 00233 } 00234 return 1; 00235 } 00236 return 0; 00237 }

| protected void create | ( | ) |
Definiert in Zeile 23 der Datei darkelf.c.
Benutzt A_DEX, A_INT, ALCOHOL_DELAY, create(), DRINK_DELAY, DT_HOLY, DT_TERROR, DT_UNHOLY, F_MODE_AS, FEMALE, FOOD_DELAY, HEAL_DELAY, MT_ANGRIFF, MT_BEHERRSCHUNG, MT_ILLUSION, MT_PSYCHO, P_ALCOHOL_DELAY, P_ALIGN, P_ATTRIBUTES_OFFSETS, P_AVERAGE_SIZE, P_AVERAGE_WEIGHT, P_DEFUEL_AMOUNT_DRINK, P_DEFUEL_AMOUNT_FOOD, P_DEFUEL_LIMIT_DRINK, P_DEFUEL_LIMIT_FOOD, P_DEFUEL_TIME_DRINK, P_DEFUEL_TIME_FOOD, P_DRINK_DELAY, P_FOOD_DELAY, P_GENDER, P_HP_DELAY, P_MAGIC_RESISTANCE_OFFSET, P_MATERIAL_KNOWLEDGE, P_MAX_ALCOHOL, P_MAX_DRINK, P_MAX_FOOD, P_RESISTANCE_STRENGTHS, P_SIZE, P_SKILL_ATTRIBUTE_OFFSETS, P_SP_DELAY, P_WEIGHT, QueryProp(), SA_ENEMY_SAVE, SAVE, Set(), set_next_reset(), SetDefaultHome(), SetPrayRoom() und SetProp().
00024 { 00025 if (!clonep() || object_name(this_object()) == __FILE__[0..<3]) { 00026 set_next_reset(-1); 00027 return; 00028 } 00029 base::create(); 00030 SetDefaultHome("gilden/dunkelelfen"); 00031 SetPrayRoom("d/unterwelt/cadra/room/town/templemain"); 00032 SetProp(P_AVERAGE_SIZE,175); 00033 SetProp(P_AVERAGE_WEIGHT,70000); 00034 SetProp(P_ALIGN, -500); 00035 SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_ENEMY_SAVE:110])); 00036 SetProp(P_ATTRIBUTES_OFFSETS,([A_INT:4,A_DEX:2])); 00037 SetProp(P_MATERIAL_KNOWLEDGE,([MATGROUP_UNHOLY: 100, 00038 MATGROUP_MAGIC: 70, 00039 MATGROUP_DEAD: 50, 00040 MATGROUP_METAL: 30]) ); 00041 SetProp(P_RESISTANCE_STRENGTHS, 00042 ([ DT_HOLY : 0.25, 00043 DT_UNHOLY : -0.15, 00044 DT_TERROR : -0.05 ])); 00045 SetProp(P_MAX_FOOD,80); 00046 SetProp(P_MAX_DRINK,150); 00047 SetProp(P_MAX_ALCOHOL,70); 00048 00049 SetProp(P_SP_DELAY, HEAL_DELAY-2); // dafuer regeneriert man im freien 00050 SetProp(P_HP_DELAY, HEAL_DELAY-1); // wirklich _nichts_ 00051 SetProp(P_FOOD_DELAY,FOOD_DELAY+1); 00052 SetProp(P_DRINK_DELAY,DRINK_DELAY-2); 00053 SetProp(P_ALCOHOL_DELAY,ALCOHOL_DELAY+1); 00054 00055 SetProp(P_MAGIC_RESISTANCE_OFFSET, 00056 ([ MT_ILLUSION : 200, 00057 MT_ANGRIFF : 500, 00058 MT_BEHERRSCHUNG: 500, 00059 MT_PSYCHO : 800 ])); 00060 00061 /* Groesse wird nur einmal gesetzt */ 00062 if(!QueryProp(P_SIZE)) { 00063 SetProp(P_SIZE,150+random(50)); 00064 Set(P_SIZE,SAVE,F_MODE_AS); 00065 } 00066 00067 /* Dito Gewicht */ 00068 if(!QueryProp(P_WEIGHT) || (QueryProp(P_WEIGHT) == 75000)){ 00069 SetProp(P_WEIGHT,60000+random(20001)); 00070 if(QueryProp(P_GENDER)==FEMALE) 00071 SetProp(P_WEIGHT,QueryProp(P_WEIGHT)-5000); 00072 Set(P_WEIGHT,SAVE,F_MODE_AS); 00073 } 00074 SetProp(P_DEFUEL_LIMIT_FOOD,40); 00075 SetProp(P_DEFUEL_LIMIT_DRINK,30); 00076 SetProp(P_DEFUEL_TIME_FOOD,400); 00077 SetProp(P_DEFUEL_TIME_DRINK,250); 00078 SetProp(P_DEFUEL_AMOUNT_FOOD,0.45); 00079 SetProp(P_DEFUEL_AMOUNT_DRINK,0.4); 00080 }

| static void FinalSetup | ( | ) | [static] |
Definiert in Zeile 82 der Datei darkelf.c.
Benutzt ModifySkill(), QuerySkill() und SK_NIGHTVISION.
00083 { 00084 if (!QuerySkill(SK_NIGHTVISION)) 00085 ModifySkill(SK_NIGHTVISION, 5000, 0, "ANY"); 00086 }

| protected void heart_beat | ( | ) |
Definiert in Zeile 145 der Datei darkelf.c.
Benutzt do_damage(), heart_beat(), ME, P_GHOST, P_HP, P_KILL_NAME, QueryProp(), SetProp() und sun_in_room().
00146 { 00147 ::heart_beat(); 00148 if (sun_in_room(environment()) && 00149 QueryProp("Dunkelelfen:Outdoor")<random(100) && !QueryProp(P_GHOST)) { 00150 int hp; 00151 hp=QueryProp(P_HP)-1; 00152 SetProp(P_HP, hp); 00153 if (hp<0) { 00154 tell_object(ME, 00155 "Das war wohl zuviel fuer Dich. Das naechste mal solltest Du Dich " 00156 +"wohl besser\ngegen die Sonne schuetzen.\n"); 00157 SetProp(P_KILL_NAME,"Zuviel Sonne"); 00158 do_damage(999,ME); 00159 SetProp(P_KILL_NAME,0); 00160 } 00161 else tell_object(ME, /* die Info musste irgendwie in eine Zeile */ 00162 "Die Sonne scheint gnadenlos auf Dein Haupt und schwaecht Dich.\n"); 00163 } 00164 }

| int StdSkill_Nightvision | ( | object | me, | |
| string | sname, | |||
| mixed | sinfo | |||
| ) |
Definiert in Zeile 173 der Datei darkelf.c.
Benutzt last, light(), MAX_ABILITY, ModifySkill(), P_PLAYER_LIGHT, QueryProp(), SI_GUILD, SI_LASTLIGHT, SI_SKILLABILITY und SI_USR.
00174 { 00175 int last, light; 00176 00177 if (!sinfo || !environment()) return 0; 00178 if (intp(sinfo)) sinfo=([SI_SKILLABILITY:sinfo]); 00179 if (!mappingp(sinfo)) return 0; 00180 light=(QueryProp(P_PLAYER_LIGHT)<=0 ? -1 : 1); 00181 if (last=sinfo[SI_USR]) { // letztes Lichtlevel != 0 00182 if (light==last) { 00183 if (sinfo[SI_LASTLIGHT]<=time()) 00184 return sinfo[SI_SKILLABILITY]+1; 00185 return -1; 00186 } 00187 else { 00188 last=( MAX_ABILITY - sinfo[SI_SKILLABILITY] ); 00189 last=(last/1000) + (last%1000 > random(1001) ? 1 : 0); 00190 if (light<0) last/=2; // an Dunkelkeit schneller gewoehnen... 00191 if(!this_interactive() || this_interactive()==this_object()) 00192 { 00193 ModifySkill(sname, ([SI_USR: light, SI_LASTLIGHT: time()+last]), 00194 0, sinfo[SI_GUILD]); 00195 } 00196 if (last<=0) 00197 return sinfo[SI_SKILLABILITY]+1; 00198 return -1; 00199 } 00200 } 00201 else { // Startwert... 00202 if(!this_interactive() || this_interactive()==this_object()) 00203 { 00204 ModifySkill(sname, ([SI_USR: light, SI_LASTLIGHT: 0]), 0, sinfo[SI_GUILD]); 00205 } 00206 return sinfo[SI_SKILLABILITY]+1; 00207 } 00208 }

| static int sun_in_room | ( | object | room | ) | [static] |
Definiert in Zeile 130 der Datei darkelf.c.
Benutzt LT_MISC, LT_SUN, P_INDOORS, P_INT_LIGHT, P_LIGHT_TYPE und qp.
Wird benutzt von _query_no_regeneration() und heart_beat().
00131 { 00132 int lt; 00133 closure qp; 00134 if (!room) return 0; 00135 qp=symbol_function("QueryProp", room); 00136 lt=funcall(qp, P_LIGHT_TYPE); 00137 // (lt & LT_SUN) ist hier zunaechst _testweise_ drin. Die Rasse wurde 00138 // anders genehmigt. Sollte das im MG ueberhand nehmen und jeder Keller 00139 // nun sonnendurchflutet sein, dann wird das wieder ausgebaut! 00140 // 27.06.04 Padreic 00141 return (room && (funcall(qp, P_INT_LIGHT)>0) && 00142 ((lt & LT_SUN) || ((lt==LT_MISC) && !funcall(qp, P_INDOORS)))); 00143 }

1.6.3