gilde.c-Dateireferenz

#include <properties.h>
#include <defines.h>
#include <rooms.h>
#include <wizlevels.h>
#include <language.h>
#include <new_skills.h>
#include <exploration.h>
#include <ansi.h>
#include "/secure/questmaster.h"
#include "/secure/lepmaster.h"
#include <events.h>
Include-Abhängigkeitsdiagramm für gilde.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define kosten_0
#define kosten_20
#define kosten_40
#define kosten_60
#define kosten_80
#define male_title_str
#define fem_title_str

Funktionen

mixed get_next_exp (int lev)
varargs string get_new_title (int lev, object pl)
void create ()
void init ()
string zeige_reboot ()
int next_ap (int lev, object pl)
int seer_cond (int silent)
varargs int kosten (string str)
int advance (string arg)
static int compare (mixed *i, mixed *j)
static string asText (int max, int dontneed)
varargs int liste (mixed pl)

Variablen

inherit std room

Makro-Dokumentation

#define fem_title_str
Wert:
({ \
      "die hoffnungsvolle Anfaengerin", \
      "die Landstreicherin",            \
      "die Streunerin",                 \
      "die Wandergesellin",             \
      "die Waldlaeuferin",              \
      "die Faehrtensucherin",           \
      "die Wegekundige",                \
      "die Jaegerin",                   \
      "die Kundschafterin",             \
      "die Reisende",                   \
      "die Abenteurerin",               \
      "die Weltenbummlerin",            \
      "die Draufgaengerin",             \
      "die Schatzsucherin",             \
      "die Feuerbaendigerin",           \
      "die Entdeckerin",                \
      "die Erobererin",                 \
      "die Heldin",                     \
      "die angehende Seherin",          \
      "die Seherin" })

Definiert in Zeile 182 der Datei gilde.c.

Wird benutzt von get_new_title().

#define kosten_0
Wert:
([0:                "Bis Du Dich das naechste Mal hier blicken laesst, solltest Du eine Menge Stufenpunkte sammeln. Sonst wird das nix!",\
    "zauberer":       "Jetzt fang hier ja nicht an zu jammern. Du hast doch grade erst erhoeht. Fuer die naechste Stufe musst Du erstmal Leistung zeigen!",\
    "kaempfer":       "Hat grade erst erhoeht und faengt schon an zu jammern wie ein altersschwacher Zauberer. Nimm gefaelligst Haltung an!",\
    "klerus":         "Wer hat Dir denn das Gehirn gelaeutert? Zeig erstmal was von Deinem Koennen, bevor Du schon wieder erhoehen willst!",\
    "chaos":          "So chaotisch kannst Du doch nicht sein zu glauben, dass Du schon wieder erhoehen kannst!",\
    "karate":         "Ruh Deine Knochen erstmal ein bisschen aus. Bis zur naechsten Stufe werden sie noch genug leiden muessen!",\
    "katzenkrieger":  "Da hilft kein Maunzen und kein Schnurren. Du hast grade erst erhoeht und dabei bleibt das!",\
    "tanjian":        "Jetzt schrei nicht gleich nach Siamil. Du musst noch eine Menge leisten bis zur naechsten Stufe!",\
    "bierschuettler": "Du hast das Bier auf Deinen letzten Erfolg noch nicht einmal ausgetrunken. Werd jetzt ja nicht groessenwahnsinnig!",\
    "werwoelfe" :     "Und wenn Du noch so grimmig guckst und den Mond anheulst. Du hast gerade erst erhoeht. Nun musst Du erstmal wieder etwas tun!",\
  ])

Definiert in Zeile 29 der Datei gilde.c.

Wird benutzt von kosten().

#define kosten_20
Wert:
([0:                "Da liegt aber noch ein weiter Weg vor Dir. Aber Du schaffst es ganz sicher!",\
    "zauberer":       "Du kannst zwar zaubern, aber nicht hexen. Fuer die naechste Stufe musst Du schon noch einiges tun!",\
    "kaempfer":       "Oh weh, da hast Du aber noch ne Menge vor Dir. Beiss die Zaehne zusammen und los gehts!",\
    "klerus":         "Du wirst bestimmt noch einige Heiltraenke brauchen bis zur naechsten Stufe!",\
    "chaos":          "Hast Du versucht Dein Chaos zu beseitigen, oder was hast Du gemacht? Sehr weit gekommen biste jedenfalls noch nicht. Musst Dich schon ein bisschen anstrengen!",\
    "karate":         "Ganz schoen anstrengend immer nur mit Hand und Fuss zu metzeln, oder? Aber es hat Dich schon etwas naeher an die naechste Stufe rangebracht!",\
    "katzenkrieger":  "Bisschen weniger Fellpflege betreiben, und ein bisschen mehr Stufenpunkte sammeln. Du hast naemlich noch ein gutes Stueck vor Dir!",\
    "tanjian":        "Du hast noch ne Menge zu tun bis zur naechsten Stufe. Sterb nicht so oft, aber sowas tun Tanjian ja eh nicht!",\
    "bierschuettler": "Bier trinken alleine wird Dich nicht weiter bringen, obwohl Du schon ein Stueck weit gekommen bist!",\
    "werwoelfe" :     "Staerke Deine Willenskraft. Du hast noch einiges vor Dir!",\
  ])

Definiert in Zeile 41 der Datei gilde.c.

Wird benutzt von kosten().

#define kosten_40
Wert:
([0:                "Also die Haelfte hast Du schon ungefaehr geschafft. Aber ruh Dich jetzt ja nicht darauf aus. Sieh mal zu, dass Du die zweite Haelfte zur naechsten Stufe auch noch schaffst. Auf einem Bein kann man schliesslich nicht lange stehn!",\
    "zauberer":       "Teile Llystrathe mit Hilfe. Och schade scheint nicht zu funktionieren, dann musst Du eben selber noch ne Menge Stufenpunkte sammeln!",\
    "kaempfer":       "Kaempfer schnell an die Waffen! Die Haelfte hast Du ungefaehr geschafft, aber es gibt noch viel zu tun!",\
    "klerus":         "Beile Dich! Das Boese sitzt Dir im Nacken und Du hast noch ungefaehr die Haelfte vor Dir!",\
    "chaos":          "Schnapp Dir Deinen Daemon und teil Dir die zweite Haelfte der Arbeit mit ihm!",\
    "karate":         "Du scheinst eingesehen zu haben, dass hirnloses Draufhauen nix nutzt. Die Haelfte haste ungefaehr schon geschafft!",\
    "katzenkrieger":  "So ungefaehr bis zur Haelfte hast Du Dich schon an die neue Stufe herangeschlichen!",\
    "tanjian":        "Man kann den Wert zwischen den beiden Stufen durchaus als ausgewogen bezeichnen. Trotzdem hast Du noch ein Stueck des Weges vor Dir!",\
    "bierschuettler": "War das Fass nu halb voll oder halb leer? Jedenfalls biste ungefaehr bei der Haelfte angekommen!",\
    "werwoelfe" :     "Noch einige Gegner werden sich vor Dir fuerchten muessen, obwohl Du schon viel geschafft hast!",\
  ])

Definiert in Zeile 53 der Datei gilde.c.

Wird benutzt von kosten().

#define kosten_60
Wert:
([0:                "Also ein bisschen was musst Du noch tun, aber es sieht schon ziemlich gut aus!",\
    "zauberer":       "Ein bisschen Wille und Magie und Du schaffst es wieder ein Stueck naeher an die neue Stufe heranzukommen!",\
    "kaempfer":       "Staerke Deinen Kampfwillen. Die groessten Anstrengungen hast Du schon hinter Dir!",\
    "klerus":         "So nah am Ziel wirst Du doch nicht aufgeben wollen. Hol Dir noch ein bisschen goettliche Unterstuetzung und weiter gehts!",\
    "chaos":          "Chaotisch sein alleine hilft nicht. Ein bisschen was musst Du schon noch tun!",\
    "karate":         "Die Handkanten geschaerft, den Gi fest zugebunden. Bald hast Du es geschafft!",\
    "katzenkrieger":  "Auf Samtpfoten schleichst Du mit grossen Schritten ans Ziel heran. Aber ein bisschen fehlt noch!",\
    "tanjian":        "Eine Quest hier, ein paar Monster da. Aber immer schoen ausgeglichen bleiben, dann klappts auch weiterhin!",\
    "bierschuettler": "Noch ein paar kraeftige Schlucke und Du hast es fast geschafft!",\
    "werwoelfe" :     "Verlass Dein Rudel und zieh hinaus ins Abenteuer. Dann wirst Du bald siegreich heimkehren!",\
  ])

Definiert in Zeile 65 der Datei gilde.c.

Wird benutzt von kosten().

#define kosten_80
Wert:
([0:                "Huch na sowas, Du hast die naechste Stufe ja schon fast erreicht. Na also! Der Rest ist ja wirklich nur noch Kleinkram!",\
    "zauberer":       "Die paar fehlenden Puenktchen haste Dir doch rasch zusammengezaubert!",\
    "kaempfer":       "Das fehlende bisschen machst Du als gnadenlos guter Kaempfer doch mit Links. Jetzt halt Dich aber mal ran. Oder willst Du Dich auf dem letzten Stueck noch von so einem luschigen Zauberer ueberrunden lassen?",\
    "klerus":         "Bei Saphina, Kandri und Lembold, Du bist fast bei der naechsten Stufe angekommen!",\
    "chaos":          "Boese waehrt am laengsten. Fast hast Du es geschafft!",\
    "karate":         "So viele blaue Flecken wie Du an Armen und Beinen hast, kann die naechste Stufe nicht mehr weit sein!",\
    "katzenkrieger":  "Pass bloss auf, dass Dich auf den letzten Zentimetern nicht noch ein Hund erwischt!",\
    "tanjian":        "Siamil wird stolz auf Dich sein. Du hast Dich gegen Gut und Boese durchgesetzt und das Ziel fast erreicht!",\
    "bierschuettler": "Lange musst Du nicht mehr warten. Kannst ruhig schon mal ein frisches Bier in Auftrag geben!",\
    "werwoelfe" :     "Noch ein letztes Mal die fuerchterlichen Krallen schaerfen, dann hast Du Deinen neuen Level erreicht!",\
  ])

Definiert in Zeile 77 der Datei gilde.c.

Wird benutzt von kosten().

#define male_title_str
Wert:
({ \
      "der hoffnungsvolle Anfaenger",\
      "der Landstreicher",           \
      "der Streuner",                \
      "der Wandergeselle",           \
      "der Waldlaeufer",             \
      "der Faehrtensucher",          \
      "der Wegekundige",             \
      "der Jaeger",                  \
      "der Kundschafter",            \
      "der Reisende",                \
      "der Abenteurer",              \
      "der Weltenbummler",           \
      "der Draufgaenger",            \
      "der Schatzsucher",            \
      "der Feuerbaendiger",          \
      "der Entdecker",               \
      "der Eroberer",                \
      "der Held",                    \
      "der angehende Seher",         \
      "der Seher" })

Definiert in Zeile 160 der Datei gilde.c.

Wird benutzt von get_new_title().


Dokumentation der Funktionen

int advance ( string  arg  ) 

Definiert in Zeile 320 der Datei gilde.c.

Benutzt E_ENVIRONMENT, E_GUILDNAME, E_OBJECT, E_PLNAME, EVENTD, EVT_LIB_ADVANCE, find_player(), get_new_title(), IS_SEER, kosten(), level, notify_fail(), P_GUILD, P_GUILD_TITLE, P_KILLS, P_LEP, P_LEVEL, P_TITLE, PL, pl und WER.

Wird benutzt von advance().

00321 {
00322   string name_of_player;
00323   string uid;
00324   int level;
00325   string s, title;
00326   mapping ts;
00327   int gap;
00328   object pl;
00329 
00330   if (arg && 
00331       arg != "stufe" && arg != "spielerstufe" && arg != "spieler"
00332       && arg != "spielerlevel")
00333     return 0;
00334   if (PL->QueryProp(P_KILLS)>0) {
00335     notify_fail("Du hast einen Mitspieler umgebracht!\n"+
00336                                 "In diesem Fall kannst Du Deine Stufe nicht erhoehen.\n"+
00337                                 "Bitte geh zur Polizei und bring das in Ordnung.\n");
00338     say(capitalize(PL->name(WER))+" hat soeben auf schmerzliche Weise "+
00339                 "erfahren muessen,\ndass es wirklich nicht foerderlich ist, "+
00340                 "Mitspieler umzubringen.\n",PL);
00341     return 0;
00342   }
00343 
00344   uid = getuid(PL);
00345   name_of_player = PL->name(WER);
00346   title = PL->QueryProp( P_TITLE );
00347   level = PL->QueryProp( P_LEVEL );
00348   if (level == -1) level = 0;
00349 
00350   if (100*(++level) > PL->QueryProp(P_LEP)){
00351       return kosten("");
00352   }
00353 
00354   title = get_new_title(level-1, pl);
00355 
00356   say( name_of_player + " hat jetzt Stufe " + level + " erreicht.\n");
00357   pl = find_player(uid);
00358   pl->SetProp( P_LEVEL, level );
00359 
00360   if (!mappingp(ts=pl->Query(P_GUILD_TITLE)))
00361       ts=([]);
00362   ts["abenteurer"]=title;
00363   pl->Set(P_GUILD_TITLE,ts);
00364   if (!IS_SEER(pl))
00365     pl->SetProp(P_TITLE,0);
00366 
00367   title=pl->QueryProp(P_TITLE);
00368   // Aufstiegs-Event ausloesen
00369   EVENTD->TriggerEvent(EVT_LIB_ADVANCE, ([
00370                 E_OBJECT: pl, E_PLNAME: getuid(pl),
00371                 E_ENVIRONMENT: environment(pl), 
00372                 E_GUILDNAME: pl->QueryProp(P_GUILD),
00373                 P_LEVEL: pl->QueryProp(P_LEVEL),
00374                 P_TITLE: pl->QueryProp(P_TITLE) ]) );
00375 
00376   if (level < 7) {
00377     write("Du bist jetzt " + name_of_player + " " + title +
00378       " (Stufe " + level + ").\n");
00379     return 1;
00380   }
00381   if (level < 14) {
00382     write("Gut gemacht, " + name_of_player + " " + title +
00383       " (Stufe " + level + ").\n");
00384     return 1;
00385   }
00386   write("Willkommen auf Deiner neuen Stufe.\n" +
00387     "Du bist jetzt " + name_of_player+" "+ title +
00388     " (Stufe " + level + ").\n");
00389 
00390   return 1;
00391 }

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

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

static string asText ( int  max,
int  dontneed 
) [static]

Definiert in Zeile 401 der Datei gilde.c.

00402 {
00403   if( !dontneed ) return "muessen alle";
00404   switch( max-dontneed )
00405   {
00406     case 0: return "muss keine";
00407     case 1: return "muss eine";
00408     default:
00409       return sprintf( "muessen %d", max-dontneed );
00410   }
00411 }

static int compare ( mixed *  i,
mixed *  j 
) [static]

Definiert in Zeile 393 der Datei gilde.c.

00394 {
00395   if( i[2] == j[2] )
00396     return i[1] > j[1];
00397   else
00398     return i[2] > j[2];
00399 }

void create (  ) 

Definiert in Zeile 90 der Datei gilde.c.

Benutzt AddCmd(), AddSpecialDetail(), create(), P_INDOORS, P_INT_LONG, P_INT_SHORT, P_LIGHT, set_next_reset() und SetProp().

00091 {
00092   if (object_name(this_object()) == __FILE__[0..<3]) {
00093       set_next_reset(-1);
00094       // hier mal kein return;
00095   }
00096   room::create();
00097   SetProp(P_INDOORS,1);
00098   SetProp(P_INT_LONG,
00099       "Du befindest Dich in der beruehmten Abenteurer Gilde.\n"
00100       +"Hier kannst Du Deine Erfahrungsstufe erhoehen.\n"
00101       +"An der Wand siehst Du eine grosse Uhr.\n"
00102       +"Moegliche Befehle sind:\n"
00103       +"                   liste\n"
00104       +"                   erhoehe (stufe)\n"
00105       +"                   kosten (kurz)\n");
00106   SetProp(P_INT_SHORT,"Abenteuer-Gilde");
00107   AddCmd("kosten","kosten");
00108   AddCmd("liste","liste");
00109   AddSpecialDetail("uhr","zeige_reboot");
00110   AddCmd("erhoehe","advance");
00111   SetProp( P_LIGHT, 1 );
00112 }

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

varargs string get_new_title ( int  lev,
object  pl 
)

Definiert in Zeile 204 der Datei gilde.c.

Benutzt fem_title_str, IS_SEER, MALE, male_title_str, P_GENDER, P_TITLE und PL.

Wird benutzt von adjust_title() und advance().

00205 {
00206   if (!pl) pl=PL;
00207   if (lev<0) lev=0;
00208   if (lev >= 19)
00209     lev = IS_SEER(PL) ? 19 : 18;
00210 
00211   if (lev <= 19)
00212     if (pl->QueryProp(P_GENDER) == MALE)
00213       return male_title_str[lev];
00214     else
00215       return fem_title_str[lev];
00216   else
00217     return (string)pl->Query(P_TITLE); // Keine Endlos-Rekursion
00218 }

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

mixed get_next_exp ( int  lev  ) 

Definiert in Zeile 220 der Datei gilde.c.

00221 {
00222   if (lev<1) return -1;
00223   if (lev>31) return 100000000+(lev-31)*25000000;
00224   return
00225     ({
00226       676, 1014, 1522, 2283, 3425,
00227       5138, 7707, 11561, 17341, 26012,
00228       39018, 58527, 77791, 97791, 131687,
00229       197530, 296296, 444444, 666666, 1000000,
00230       1500000, 2250000, 3375000, 5062500, 7600000,
00231       11000000, 17000000, 25000000, 40000000, 60000000,
00232       80000000, 100000000, 125000000, 150000000, 175000000,
00233       200000000
00234       })[lev];
00235 }

void init (  ) 

Definiert in Zeile 114 der Datei gilde.c.

Benutzt init().

00115 {
00116   room::init();
00117 }

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

varargs int kosten ( string  str  ) 

Definiert in Zeile 263 der Datei gilde.c.

Benutzt break_string(), BS_LEAVE_MY_LFS, IS_SEER, kosten_0, kosten_20, kosten_40, kosten_60, kosten_80, P_GUILD, P_LEP, P_LEVEL, PL und seer_cond().

Wird benutzt von advance().

00264 {
00265   int diff, lvl;
00266   string tmp;
00267 
00268   diff = 100 * ((lvl=PL->QueryProp(P_LEVEL)+1)) - PL->QueryProp(P_LEP);
00269 
00270   switch ( diff ){
00271   case 101..1000000000:
00272       // Bei Spielern < Lvl 11 gibt es groessere Stufenpunkt-Verluste beim
00273       // Erhoehen, da die Erfahrungspunkte mit steigendem Level weniger
00274       // wert sind
00275       if ( lvl < 11 )
00276           tmp = "Na komm, Du hast doch gerade erst die letzte Stufe geschafft.";
00277       else
00278           tmp = "Wie bist Du ueberhaupt an Deinen Level gekommen?\nSei froh, "
00279           "dass Du nicht wieder abgestuft wirst.";
00280       break;
00281 
00282   case 81..100:
00283       tmp=kosten_0[PL->QueryProp(P_GUILD)] || kosten_0[0];
00284       break;
00285 
00286   case 61..80:
00287       tmp=kosten_20[PL->QueryProp(P_GUILD)] || kosten_20[0];
00288       break;
00289       
00290   case 41..60:
00291       tmp=kosten_40[PL->QueryProp(P_GUILD)] || kosten_40[0];
00292       break;
00293       
00294   case 21..40:
00295       tmp=kosten_60[PL->QueryProp(P_GUILD)] || kosten_60[0];
00296       break;
00297       
00298   case 1..20:
00299       tmp=kosten_80[PL->QueryProp(P_GUILD)] || kosten_80[0];
00300       break;
00301       
00302   default:
00303       if ( lvl < 5 )
00304           tmp = "Probier mal den Befehl 'erhoehe'.";
00305       else
00306           tmp = "Den Befehl 'erhoehe' kennst Du aber, ja?";
00307   }
00308 
00309   write( break_string( tmp, 78, 0, BS_LEAVE_MY_LFS ) );
00310   
00311   if (!IS_SEER(this_player()) && str != "kurz") {
00312     seer_cond(0);
00313     write (break_string("\nMit 'kosten kurz' kannst Du die Angabe der "
00314                                                 "Seher-Anforderungen unterdruecken.", 78,0,1));
00315   }
00316 
00317   return 1;
00318 }

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

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

varargs int liste ( mixed  pl  ) 

Definiert in Zeile 413 der Datei gilde.c.

Benutzt find_netdead(), find_player(), IS_SEER, LEPMASTER, PL und QM.

00414 {
00415   string str; 
00416   if (!this_player()) return 0;
00417 
00418   if(!objectp(pl))
00419     if(stringp(pl))
00420       pl=find_player(pl)||find_netdead(pl);
00421   if(!objectp(pl))
00422     pl=PL;
00423   if (pl != this_player()) {
00424     write ("Du kannst Dir nur Deine eigenen Abenteuer ansehen.\n");
00425     return 1;
00426   }
00427 
00428   str = "";
00429   str += QM->liste(pl);
00430   
00431   if (!IS_SEER(pl))
00432     str+=LEPMASTER->QueryReadyForWizText(pl);
00433 
00434   this_player()->More( str, 0 );
00435   return 1;
00436 }

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

int next_ap ( int  lev,
object  pl 
)

Definiert in Zeile 237 der Datei gilde.c.

Benutzt need und P_NEEDED_QP.

00238 {
00239   int need;
00240 
00241   need=pl->QueryProp(P_NEEDED_QP);
00242   lev--;
00243   if(lev>=20) return 0;
00244   if(lev==19) return need;
00245   return (int)((exp(log(1.262)*lev)+lev-2)*need/100);
00246 
00247   return 0;
00248 }

int seer_cond ( int  silent  ) 

Definiert in Zeile 250 der Datei gilde.c.

Benutzt break_string() und LEPMASTER.

Wird benutzt von kosten().

00251 {
00252   int cond;
00253 
00254   cond=LEPMASTER->QueryReadyForWiz(this_player());
00255   
00256   if (!silent)
00257     write(break_string(LEPMASTER->QueryReadyForWizText(this_player()),
00258           78, 0, 1));
00259 
00260   return cond;
00261 }

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

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

string zeige_reboot (  ) 

Definiert in Zeile 119 der Datei gilde.c.

Benutzt last_reboot_time().

00120 {
00121   string str;
00122   int t,t2;
00123 
00124   t=time()-last_reboot_time();
00125   t2=t;
00126   str="Seit dem letzten Shutdown sind "+t+" Sekunden vergangen.\n";
00127   if (t<60) return str;
00128   str+="Das sind ";
00129   if (t>=86400)
00130   {
00131     str+=t/86400+" Tag";
00132     if (t>=86400*2)
00133       str+="e";
00134     str+=", ";
00135     t2=t2%86400;
00136   }
00137   if (t>=3600)
00138   {
00139     str+=t2/3600+" Stunde";
00140     if (t2/3600!=1)
00141       str+="n";
00142     str+=", ";
00143     t2=t2%3600;
00144   }
00145   if (t>=60)
00146   {
00147     str+=t2/60+" Minute";
00148     if (t2/60!=1)
00149       str+="n";
00150     str+=" und ";
00151     t2=t2%60;
00152   }
00153   str+=t2+" Sekunde";
00154   if (t2!=1)
00155     str+="n";
00156   str+=".\n";
00157   return str;
00158 }

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


Variablen-Dokumentation

inherit std room

Definiert in Zeile 12 der Datei gilde.c.

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