#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>
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 |
| #define fem_title_str |
({ \
"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 |
([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 |
([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 |
([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 |
([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 |
([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 |
({ \
"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().
| 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 }


| static string asText | ( | int | max, | |
| int | dontneed | |||
| ) | [static] |
| static int compare | ( | mixed * | i, | |
| mixed * | j | |||
| ) | [static] |
| 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 }

| 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 }

| 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 }

| 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 }


| 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 }

| 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 }


| 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 }

1.6.3