darkelf.c-Dateireferenz

#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>
Include-Abhängigkeitsdiagramm für darkelf.c:

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

Dokumentation der Funktionen

static int _indoorbug ( string  key  )  [static]

Definiert in Zeile 248 der Datei darkelf.c.

Benutzt dtime() und log_file.

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static string _query_default_guild (  )  [static]

Definiert in Zeile 125 der Datei darkelf.c.

00126 {
00127   return "dunkelelfen";
00128 }

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

string _query_race (  ) 

Definiert in Zeile 88 der Datei darkelf.c.

00090 {
00091   return "Dunkelelf";
00092 }

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

string _query_real_race (  ) 

Definiert in Zeile 94 der Datei darkelf.c.

00095 {
00096   return "Dunkelelf";
00097 }

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

int QueryAllowSelect (  ) 

Definiert in Zeile 116 der Datei darkelf.c.

00116 { return 1; }

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:


Variablen-Dokumentation

inherit std player base

Definiert in Zeile 9 der Datei darkelf.c.

Erzeugt am Thu Jun 3 14:43:08 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3