ab_spells.c-Dateireferenz

#include <properties.h>
#include <language.h>
#include <attributes.h>
#include <combat.h>
#include <wizlevels.h>
#include <new_skills.h>
Include-Abhängigkeitsdiagramm für ab_spells.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define LICHTKUGEL   "/gilden/files.abenteurer/lichtkugel"
#define LICHTMASTER   "/gilden/files.abenteurer/lichtmaster"

Funktionen

void create ()
int schaetz (object caster, mapping sinfo)
int kampfschrei (object caster, mapping sinfo)
int ausweichen (object caster, mapping sinfo)
mixed Deckung (int dam, mixed dam_type, mixed spell, object enemy)
int identifiziere (object caster, mapping sinfo)
int licht (object caster, mapping sinfo)
int saeurestrahl (object caster, mapping sinfo)
int feuerball (object caster, mapping sinfo)
int pfeil (object caster, mapping sinfo)
int schnell (object caster, mapping sinfo)

Variablen

inherit std spellbook

Makro-Dokumentation

#define LICHTKUGEL   "/gilden/files.abenteurer/lichtkugel"

Definiert in Zeile 36 der Datei ab_spells.c.

Wird benutzt von licht().

#define LICHTMASTER   "/gilden/files.abenteurer/lichtmaster"

Definiert in Zeile 37 der Datei ab_spells.c.

Wird benutzt von licht().


Dokumentation der Funktionen

int ausweichen ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 257 der Datei ab_spells.c.

Benutzt ERFOLG, MISSERFOLG, P_TMP_DEFEND_HOOK und SpellSuccess().

00258 {
00259   if (!caster->InFight())
00260   {
00261     write("Ausweichen ausserhalb eines Kampfes ist ziemlich sinnlos.\n");
00262     return 0;
00263   }
00264 
00265   if (caster->QueryProp(P_TMP_DEFEND_HOOK))
00266   {
00267     write("Das geht momentan nicht, Du wunderst Dich wieso!\n");
00268     return 0;
00269   }
00270 
00271   if (SpellSuccess(caster,sinfo)<=0)
00272     return MISSERFOLG;
00273 
00274   caster->SetProp(P_TMP_DEFEND_HOOK, ({ time()+4, this_object(), "Deckung" }));
00275   return ERFOLG;
00276 }

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

void create (  ) 

Definiert in Zeile 42 der Datei ab_spells.c.

Benutzt AddSpell(), create(), DT_ACID, DT_FIRE, DT_MAGIC, FACTOR, MT_ANGRIFF, MT_HELLSICHT, MT_PSYCHO, OFFSET, P_GLOBAL_SKILLPROPS, P_LEVEL, SetProp(), SI_MAGIC_TYPE, SI_SKILLDAMAGE, SI_SKILLDAMAGE_BY_ROW, SI_SKILLDAMAGE_TYPE, SI_SKILLLEARN, SI_SKILLRESTR_LEARN, SI_SPELLFATIGUE und SP_NAME.

00042               {
00043   ::create();
00044   SetProp(P_GLOBAL_SKILLPROPS,
00045           ([SI_SPELLFATIGUE:2,       // 2 Sekunden kein neuer Spell
00046             SI_SKILLLEARN:5,         // 0.05% pro 2 A_INT
00047             OFFSET(SI_SKILLLEARN):10 // plus 0.1% in jedem Fall
00048             ]));
00049   AddSpell("licht",5,4);
00050   AddSpell("schaetz",3,
00051        ([SI_SKILLRESTR_LEARN:([P_LEVEL:10]),
00052          SI_MAGIC_TYPE: ({ MT_HELLSICHT }),
00053          SP_NAME: "schaetz"]));
00054   AddSpell("pfeil",10,
00055            ([SI_SKILLRESTR_LEARN:([P_LEVEL:11]),
00056              // Um diesen Spruch lernen zu koennen muss
00057              // der Level mindestens 11 sein
00058              SI_SKILLDAMAGE:200,
00059              // Schaden: Random(200) ...
00060              SI_SKILLDAMAGE_TYPE:DT_MAGIC,
00061              // Damage Type: Magic
00062              SI_MAGIC_TYPE: ({ MT_ANGRIFF }),
00063             SP_NAME: "pfeil",
00064             // Boni für hintere Kampfreihen
00065             SI_SKILLDAMAGE_BY_ROW: ([2:110,3:50,4:10]),
00066             OFFSET(SI_SKILLDAMAGE_BY_ROW): ([2:50,3:20,4:5])
00067              ]));
00068   AddSpell("ausweichen", 10, 12);
00069   AddSpell("kampfschrei", 30,
00070        ([SI_SKILLRESTR_LEARN:([P_LEVEL:13]),
00071          SI_MAGIC_TYPE: ({ MT_PSYCHO }),
00072          SP_NAME: "kampfschrei"]));
00073   AddSpell("identifiziere",10,
00074        ([SI_SKILLRESTR_LEARN:([P_LEVEL:8]),
00075          SI_MAGIC_TYPE: ({ MT_HELLSICHT }),
00076          SP_NAME: "identifiziere"]));
00077   AddSpell("feuerball",20,
00078            ([SI_SKILLRESTR_LEARN:([P_LEVEL:15]),
00079              SI_SKILLDAMAGE:300,
00080              // Schaden: Random(300) ...
00081              OFFSET(SI_SKILLDAMAGE):100,
00082              // ... plus 100
00083              SI_SKILLDAMAGE_TYPE:DT_FIRE,
00084              // Damage Type: Fire
00085             SI_MAGIC_TYPE: ({ MT_ANGRIFF }),
00086             SP_NAME: "feuerball",
00087             SI_SKILLDAMAGE_BY_ROW: ([2:80,3:150,4:80,5:20]),
00088             OFFSET(SI_SKILLDAMAGE_BY_ROW): ([2:30,3:80,4:30,5:10])
00089              ]));
00090   AddSpell("schnell",100,17);
00091   AddSpell("saeurestrahl",25,
00092        ([SI_SKILLRESTR_LEARN:([P_LEVEL:30]),
00093          OFFSET(SI_SKILLLEARN):1,
00094          FACTOR(SI_SKILLLEARN):20,
00095              SI_SKILLDAMAGE:400,
00096              // Schaden: Random(400) ...
00097              OFFSET(SI_SKILLDAMAGE):200,
00098              // ... plus 200
00099              SI_SKILLDAMAGE_TYPE:DT_ACID,
00100              // Damage Type: Saeure
00101              SI_MAGIC_TYPE: ({ MT_ANGRIFF }),
00102              SP_NAME: "saeurestrahl",
00103              SI_SKILLDAMAGE_BY_ROW:([2:60,3:150,4:210,5:150,6:60]),
00104              OFFSET(SI_SKILLDAMAGE_BY_ROW):([2:30,3:80,4:120,5:80,6:30])
00105              ]));
00106 
00107 }

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

mixed Deckung ( int  dam,
mixed  dam_type,
mixed  spell,
object  enemy 
)

Definiert in Zeile 278 der Datei ab_spells.c.

Benutzt P_TMP_DEFEND_HOOK, PHYSICAL_DAMAGE_TYPES und QueryProp().

00279 {
00280   if (!pointerp(dam_type))
00281     dam_type = ({ dam_type });
00282   if (sizeof(dam_type & m_indices(PHYSICAL_DAMAGE_TYPES)))
00283   {
00284     tell_object(previous_object(), "Du weichst gekonnt aus.\n");
00285     if (previous_object()->QueryProp(P_TMP_DEFEND_HOOK)[1] == this_object())
00286       previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
00287     return 0;
00288   }
00289   tell_object(previous_object(), "Dein Ausweichversuch ist vergebens.\n");
00290   return ({ dam, dam_type, spell, enemy });
00291 }

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

int feuerball ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 396 der Datei ab_spells.c.

Benutzt ERFOLG, FindEnemyVictim(), hands, MISSERFOLG, SI_SKILLARG, SP_NAME, SP_SHOW_DAMAGE, SpellDefend(), SpellSuccess(), TryDefaultAttackSpell() und WEM.

00396                                         {
00397   object victim;
00398   int hands;
00399   string vnw;
00400   int suc;
00401 
00402   victim=FindEnemyVictim(sinfo[SI_SKILLARG],caster,
00403                          "Auf wen willst Du einen Feuerball schleudern?\n");
00404   if (!victim)
00405     return 0;
00406   if ((suc=SpellSuccess(caster,sinfo))<=0)
00407     return MISSERFOLG;
00408   if (suc < victim->SpellDefend(caster, sinfo))
00409   {
00410     tell_object(caster, victim->Name() + " wehrt Deinen Spruch ab.\n");
00411     return ERFOLG;
00412   }
00413 
00414   vnw = victim->name(WEM, 2);
00415   say(sprintf("%s wirft einen Feuerball nach %s.\n",
00416               caster->Name(), vnw), victim);
00417   printf("Du wirfst einen Feuerball nach %s.\n", vnw);
00418   tell_object(victim, sprintf("%s wirft einen Feuerball nach Dir.\n",
00419                               caster->Name()));
00420 
00421   TryDefaultAttackSpell(victim,caster,sinfo,
00422             ([SP_NAME:"Feuerball", SP_SHOW_DAMAGE:1]));
00423 
00424   return ERFOLG;
00425 }

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

int identifiziere ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 294 der Datei ab_spells.c.

Benutzt break_string(), ERFOLG, FindVictim(), info, MISSERFOLG, ob(), P_INFO, P_PLURAL, result(), SI_SKILLARG, SpellDefend(), SpellSuccess(), WEM und WEN.

00294                                             {
00295   object ob;
00296   string* fi;
00297   string cn;
00298   string result, info;
00299   int suc;
00300   ob=FindVictim(sinfo[SI_SKILLARG], caster,
00301                 "Was moechtest Du identifizieren?\n");
00302   if (!ob)
00303     return 0;
00304 
00305   cn = caster->name();
00306   if ((suc=SpellSuccess(caster,sinfo))<=0)
00307     return MISSERFOLG;
00308   if (suc < ob->SpellDefend(caster, sinfo))
00309   {
00310     tell_object(caster, ob->Name() + " wehrt Deinen Spruch ab.\n");
00311     return ERFOLG;
00312   }
00313 
00314   result="Du identifizierst "+ob->name(WEN,1)+". "
00315         +capitalize(ob->QueryPronoun())
00316         +" besteh"
00317         +(ob->QueryProp(P_PLURAL) ? "en" : "t")
00318         +" aus "
00319         +(ob->MaterialList(WEM, caster))+". ";
00320   if (info=ob->QueryProp(P_INFO))
00321     result+="Ausserdem bemerkst Du folgendes:\n"+info;
00322   else result+="Du kannst sonst nichts besonderes an "+ob->QueryPronoun(WEM)
00323               +" erkennen.";
00324   write(break_string(result, 78, 0, 1));
00325 /*
00326   if (result=ob->QueryProp(P_INFO))
00327     printf("Du identifizierst %s.\n%s", ob->name(WEN, 1), result);
00328   else
00329     printf("Du kannst nichts besonderes an %s erkennen.\n", ob->name(WEM, 1));
00330 */
00331   return ERFOLG;
00332 }

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

int kampfschrei ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 208 der Datei ab_spells.c.

Benutzt break_string(), cmdline(), ERFOLG, F_MODE_AS, FindEnemyVictim(), MISSERFOLG, ob(), P_LEVEL, SA_SPEED, SAVE, SI_SKILLARG, SpellDefend() und SpellSuccess().

00209 {
00210   object ob;
00211   string cmdline, meldung;
00212   int    suc, dauer;
00213 
00214   cmdline = this_player()->_unparsed_args();
00215   if (cmdline)
00216   {
00217     if (sscanf(cmdline, "meldung %s", meldung))
00218     {
00219       caster->Set("ab_kampfschrei", SAVE, F_MODE_AS);
00220       caster->SetProp("ab_kampfschrei", meldung);
00221       printf("Dein Kampfschrei ist jetzt: %s\n", meldung);
00222       return 0;
00223     }
00224   }
00225   ob = FindEnemyVictim(sinfo[SI_SKILLARG], caster,
00226           "Wem willst Du Deinen Kampfschrei entgegenschleudern?\n");
00227 
00228   if (!ob)
00229     return 0;
00230 
00231   if ((suc=SpellSuccess(caster, sinfo)) <= 0)
00232     return MISSERFOLG;
00233   if (suc < ob->SpellDefend(caster, sinfo))
00234   {
00235     tell_object(caster, ob->Name() + " wehrt Deinen Spruch ab.\n");
00236     return ERFOLG;
00237   }
00238 
00239   meldung = caster->QueryProp("ab_kampfschrei");
00240   if (!meldung)
00241     meldung = "Aaaaaaaiiiiieeeeeeeeeeeeeeeehhhhhhhhhhhhhhh!!!!!!!\n";
00242 
00243   write(break_string(meldung, 78, "Du kreischst: "));
00244   tell_room(environment(caster),
00245         break_string(meldung, 78, caster->Name()+" kreischt: "),
00246         ({caster}));
00247   tell_object(ob, "Du fuehlst Dich wie gelaehmt.\n");
00248 
00249   dauer = 1 + (suc/1000 + random(caster->QueryProp(P_LEVEL)/2))/2;
00250   if (dauer>25)
00251     dauer = 25;
00252   ob->ModifySkillAttribute(caster, SA_SPEED, 50, dauer);
00253 
00254   return ERFOLG;
00255 }

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

int licht ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 335 der Datei ab_spells.c.

Benutzt ERFOLG, LICHTKUGEL, LICHTMASTER, MISSERFOLG, P_LEVEL und SpellSuccess().

00336 {
00337    object l;
00338 
00339    printf("Du machst eine magische Bewegung.\n");
00340    say(sprintf("%s macht eine magische Bewegung.\n",
00341            capitalize(caster->name())));
00342 
00343    if (SpellSuccess(caster,sinfo)<=0)
00344       return MISSERFOLG;
00345 
00346    l = clone_object(LICHTKUGEL);
00347    if (l->move(this_player()) > 0)
00348    {
00349       LICHTMASTER->add_kugel(l, caster->QueryProp(P_LEVEL)*20);
00350       printf("Wie aus dem Nichts erscheint eine leuchtende Kugel.\n");
00351    }
00352    else
00353    {
00354       l->remove();
00355       printf("Eine Lichtkugel erscheint, zerplatzt aber sofort mit einem sanften 'plopp'.\n");
00356    }
00357 
00358    return ERFOLG;
00359 }

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

int pfeil ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 428 der Datei ab_spells.c.

Benutzt ERFOLG, FindEnemyVictim(), hands, MISSERFOLG, SI_SKILLARG, SP_NAME, SP_SHOW_DAMAGE, SpellDefend(), SpellSuccess(), TryDefaultAttackSpell() und WEN.

00428                                     {
00429   object victim;
00430   int hands;
00431   string vn, vnw, cn;
00432   int suc;
00433 
00434   victim=FindEnemyVictim(sinfo[SI_SKILLARG],caster,
00435                          "Nach wem willst Du einen magischen Pfeil werfen?\n");
00436   if (!victim)
00437     return 0;
00438   if ((suc=SpellSuccess(caster,sinfo))<=0)
00439     return MISSERFOLG;
00440   if (suc < victim->SpellDefend(caster, sinfo))
00441   {
00442     tell_object(caster, victim->Name() + " wehrt Deinen Spruch ab.\n");
00443     return ERFOLG;
00444   }
00445 
00446   cn = caster->Name();
00447   vnw = victim->name(WEN, 2);
00448   say(sprintf("%s feuert einen magischen Pfeil auf %s ab.\n",cn, vnw),
00449       victim);
00450   printf("Du feuerst einen magischen Pfeil auf %s ab.\n", vnw);
00451   tell_object(victim,sprintf("%s feuert einen magischen Pfeil auf Dich ab.\n",
00452                              cn));
00453   TryDefaultAttackSpell(victim,caster,sinfo,
00454             ([SP_NAME:"Pfeil", SP_SHOW_DAMAGE:1]));
00455   return ERFOLG;
00456 }

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

int saeurestrahl ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 362 der Datei ab_spells.c.

Benutzt break_string(), ERFOLG, FindEnemyVictim(), hands, MISSERFOLG, SI_SKILLARG, SP_NAME, SP_SHOW_DAMAGE, SpellDefend(), SpellSuccess(), TryDefaultAttackSpell() und WEN.

00362                                            {
00363   object victim;
00364   int hands;
00365   string vnw;
00366   int suc;
00367 
00368   victim=FindEnemyVictim(sinfo[SI_SKILLARG],caster,
00369                      "Wen willst Du mit einem Saeurestrahl beschiessen?\n");
00370   if (!victim)
00371     return 0;
00372   if ((suc=SpellSuccess(caster,sinfo))<=0)
00373     return MISSERFOLG;
00374   if (suc < victim->SpellDefend(caster, sinfo))
00375   {
00376     tell_object(caster, victim->Name() + " wehrt Deinen Spruch ab.\n");
00377     return ERFOLG;
00378   }
00379 
00380   vnw = victim->name(WEN, 2);
00381   say(break_string(
00382    sprintf(
00383    "%s fuchtelt seltsam in der Luft herum und schiesst einen Saeurestrahl auf %s.\n",
00384        caster->Name(), vnw), 78), victim);
00385   printf("Du schiesst einen Saeurestrahl auf %s.\n", vnw);
00386   tell_object(victim, sprintf("%s schiesst einen Saeurestrahl auf Dich.\n",
00387                               caster->Name()));
00388 
00389   TryDefaultAttackSpell(victim,caster,sinfo,
00390             ([SP_NAME:"Saeurestrahl", SP_SHOW_DAMAGE:1]));
00391 
00392   return ERFOLG;
00393 }

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

int schaetz ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 110 der Datei ab_spells.c.

Benutzt ERFOLG, FindLivingVictim(), MISSERFOLG, P_HP, P_TOTAL_AC, P_TOTAL_WC, result(), SI_SKILLARG, SpellDefend(), SpellSuccess(), WEM, WER und WESSEN.

00110                                       {
00111    object victim;
00112    int hpdiff, wcdiff, acdiff;
00113    int hp, vhp, wc, vwc, ac, vac;
00114    string result;
00115    string vname, vnamegen;
00116    int suc;
00117 
00118    victim=FindLivingVictim(sinfo[SI_SKILLARG],caster,
00119                            "Wen moechtest Du einschaetzen?\n");
00120    if (!victim)
00121      return 0;
00122    if ((suc=SpellSuccess(caster,sinfo))<=0)
00123       return MISSERFOLG;
00124    if (suc < victim->SpellDefend(caster, sinfo))
00125    {
00126      tell_object(caster, victim->Name() + " wehrt Deinen Spruch ab.\n");
00127      return ERFOLG;
00128    }
00129 
00130    hp = caster->QueryProp(P_HP);    vhp = victim->QueryProp(P_HP);
00131    wc = caster->QueryProp(P_TOTAL_WC);  vwc = victim->QueryProp(P_TOTAL_WC);
00132    ac = caster->QueryProp(P_TOTAL_AC);  vac = victim->QueryProp(P_TOTAL_AC);
00133    hpdiff = hp - vhp;
00134    wcdiff = wc - vwc;
00135    acdiff = ac - vac;
00136    vname = victim->name(WER, 1);
00137    vnamegen = victim->name(WESSEN, 1);
00138 
00139    if (hpdiff > 10*vhp)
00140       result = capitalize(victim->name(WER, 1))+" sollte sich besser schon mal einen Sarg besorgen.\n";
00141    else if (hpdiff > 7*vhp)
00142       result = "Du bist " + victim->name(WEM, 1) + " haushoch ueberlegen.\n";
00143    else if (hpdiff > 4*vhp)
00144       result = "Du bist sehr viel staerker als " + vname + ".\n";
00145    else if (hpdiff > 2*vhp)
00146       result = "Du bist viel staerker als " + vname + ".\n";
00147    else if (2*hpdiff > 3*vhp)
00148       result = "Du bist spuerbar staerker als " + vname + ".\n";
00149    else if (hpdiff > vhp)
00150       result = "Du bist staerker als " + vname + ".\n";
00151    else if (hpdiff > vhp/5)
00152       result = "Du bist etwas staerker als " + vname + ".\n";
00153    else if (-hpdiff > 10*hp)
00154       result = "Besorg Dir besser schon mal einen Sarg.\n";
00155    else if (-hpdiff > 7*hp)
00156       result = capitalize(vname) + " ist Dir haushoch ueberlegen.\n";
00157    else if (-hpdiff > 4*hp)
00158       result = capitalize(vname) + " ist sehr viel staerker als Du.\n";
00159    else if (-hpdiff > 2*hp)
00160       result = capitalize(vname) + " ist viel staerker als Du.\n";
00161    else if (-2*hpdiff > 3*hp)
00162       result = capitalize(vname) + " ist spuerbar staerker als Du.\n";
00163    else if (-hpdiff > hp)
00164       result = capitalize(vname) + " ist staerker als Du.\n";
00165    else if (-hpdiff > hp/5)
00166       result = capitalize(vname) + " ist etwas staerker als Du.\n";
00167    else
00168       result = capitalize(vname) + " ist etwa gleich stark wie Du.\n";
00169    write(result);
00170 
00171    if (acdiff > 2*vac)
00172       result = "Deine Ruestung ist unglaublich viel besser als die "
00173      + vnamegen + ".\n";
00174    else if (acdiff > vac)
00175       result = "Deine Ruestung ist viel besser als die " + vnamegen + ".\n";
00176    else if (acdiff >vac/5)
00177       result = "Deine Ruestung ist besser als die " + vnamegen + ".\n";
00178    else if (-acdiff > 2*ac)
00179       result = "Die Ruestung " + vnamegen
00180      + " ist unglaublich viel besser als Deine.\n";
00181    else if (-acdiff > ac)
00182       result = "Die Ruestung " + vnamegen + " ist viel besser als Deine.\n";
00183    else if (-acdiff > ac/5)
00184       result = "Die Ruestung " + vnamegen + " ist besser als Deine.\n";
00185    else
00186       result = "Eure Ruestungen sind etwa gleich gut.\n";
00187    write(result);
00188 
00189    if (wcdiff > 2*vwc)
00190       result = "Deine Waffe ist eigentlich zu gut fuer diesen Gegner.\n";
00191    else if (wcdiff > vwc)
00192       result = "Deine Waffe ist viel besser als die " +vnamegen + ".\n";
00193    else if (wcdiff > vwc/5)
00194       result = "Deine Waffe ist besser als die " +vnamegen + ".\n";
00195    else if (-wcdiff > 2*wc)
00196       result = "Die Waffe " + vnamegen
00197      + " laesst Deine ganz mickrig aussehen.\n";
00198    else if (-wcdiff > wc)
00199       result = "Die Waffe " + vnamegen + " ist viel besser als Deine.\n";
00200    else if (-wcdiff > wc/5)
00201       result = "Die Waffe " + vnamegen + " ist besser als Deine.\n";
00202    else
00203       result = "Eure Waffen sind etwa gleich gut.\n";
00204    write(result);
00205    return ERFOLG;
00206 }

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

int schnell ( object  caster,
mapping  sinfo 
)

Definiert in Zeile 459 der Datei ab_spells.c.

Benutzt A_DEX, ERFOLG, MISSERFOLG, SA_SPEED, SI_SKILLABILITY und SpellSuccess().

00459                                       {
00460   int dauer;
00461 
00462   if (SpellSuccess(caster,sinfo)<=0)
00463     return MISSERFOLG;
00464   write("Du fuehlst Dich ploetzlich deutlich schneller.\n");
00465   dauer = 2 * (caster->QueryAttribute(A_DEX) +
00466            random(sinfo[SI_SKILLABILITY]/1000));
00467   if (dauer>60)
00468     dauer = 60;
00469   caster->ModifySkillAttribute(caster,SA_SPEED,200,dauer);
00470 
00471   return ERFOLG;
00472 }

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


Variablen-Dokumentation

inherit std spellbook

Definiert in Zeile 39 der Datei ab_spells.c.

Wird benutzt von QuerySpell() und UseSpell().

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