orakel.c-Dateireferenz

#include <properties.h>
Include-Abhängigkeitsdiagramm für orakel.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define ROOM(x)   "/players/boing/orakel/"+x
#define TIPS(x)   "/secure/ARCH/ZT/"+x
#define POTIONMASTER   "/secure/potionmaster"
#define WANNWIEVIEL
#define KEINTIPTEXT   "Der Nebel ueber der Kugel ruehrt sich nicht.\n"

Funktionen

 create ()
int NeuerTip ()
int ZTAuswahl ()
 Vision ()
string TipListe ()
 trinken (str)
 meditieren ()
 werfen (str)

Variablen

inherit std room

Makro-Dokumentation

#define KEINTIPTEXT   "Der Nebel ueber der Kugel ruehrt sich nicht.\n"

Definiert in Zeile 28 der Datei orakel.c.

Wird benutzt von Vision().

#define POTIONMASTER   "/secure/potionmaster"

Definiert in Zeile 10 der Datei orakel.c.

Wird benutzt von create(), FindPotion(), raise(), SelectWhich(), TipListe(), Vision() und ZTAuswahl().

#define ROOM ( x   )     "/players/boing/orakel/"+x

Definiert in Zeile 7 der Datei orakel.c.

Wird benutzt von Request().

#define TIPS ( x   )     "/secure/ARCH/ZT/"+x

Definiert in Zeile 8 der Datei orakel.c.

Wird benutzt von TipLesen().

#define WANNWIEVIEL
Wert:
({ 0, 0, 0, 0,\
   25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375,\
   400, 425, 450, 475, 500, 525, 550, 575, 600, 625, 650, 675, 700, 725,\
   750,\
   790, 830, 870, 910, 950, 990, 1030, 1070, 1110, 1150, 1190, 1230, 1270,\
   1310, 1350, 1390, 1430, 1470, 1510, 1550, 1590, 1630, 1670, 1710, 1750,\
   1790,\
   1860, 1930, 2000, 2070, 2140, 2210, 2280, 2350, 2420, 2490,\
   2590, 2690, 2790, 2890, 2990, 3090, 3190, 3290, 3390, 3490 })

Definiert in Zeile 19 der Datei orakel.c.

Wird benutzt von NeuerTip().


Dokumentation der Funktionen

create (  ) 

Definiert in Zeile 32 der Datei orakel.c.

Benutzt AddCmd(), AddDetail(), AddExit(), create(), P_INDOORS, P_INT_LONG, P_INT_SHORT, P_LIGHT und SetProp().

00033 {
00034    ::create();
00035    SetProp(P_INDOORS, 1);
00036    SetProp(P_LIGHT, 1);
00037    SetProp(P_INT_SHORT, "Das heilige Orakel von Tingan");
00038    SetProp(P_INT_LONG,
00039    "Du befindest Dich in einer mittelgrossen Hoehle, die sich halbkugel-\n"+
00040    "foermig ueber Deinem Kopf erhebt. Die Hoehle wird fast komplett vom\n"+
00041    "gruenlich schimmernden Quellsee des Osterbachs ausgefuellt. Ueber dem\n"+
00042    "See schwebt eingehuellt in langsam ziehende Nebelschwaden eine magisch\n"+
00043    "leuchtende Kugel, das heilige Orakel von Tingan. Im Osten fliesst das\n"+
00044    "Wasser des Sees durch einen schmalen Gang ab, dem Du folgen koenntest.\n");
00045    AddDetail("boden", "Der Boden ist groesstenteils mit Wasser bedeckt.\n");
00046    AddDetail("decke", "Die Decke ist aus massivem Felsgestein, Du willst gar nicht wissen,\nwieviele Tonnen davon ueber Deinem Kopf lasten.\n");
00047    AddDetail(({"fels", "gestein", "felsgestein"}), "Sowas ist im Gebirge recht haeufig.\n");
00048    AddDetail(({"wand", "waende"}), "Die Waende sind feucht.\n");
00049    AddDetail(({"quellsee", "see"}), "Er ist die Quelle des Osterbachs.\n");
00050    AddDetail("quelle", "Das heisst, der Bach entspringt hier.\n");
00051    AddDetail(({"bach", "osterbach"}), "Er fliesst nach Osten ab.\n");
00052    AddDetail("wasser", "Es ist klar und frisch.\n");
00053    AddDetail("gang", "Er fuehrt nach Osten.\n");
00054    AddDetail("orakel", "Du fuehlst grosses Wissen in Deiner Umgebung.\n");
00055    AddDetail("umgebung", "Die Umgebung ist das, was Dich umgibt.\n");
00056    AddDetail("wissen", "Vielleicht nuetzt es Dir ja was.\n");
00057    AddDetail(({"nebel", "schwaden", "nebelschwaden"}), "Sie ziehen langsam ueber den See.\n");
00058    AddDetail("kugel", "Die Kugel leuchtet in magischem Licht und laedt Dich fast zum meditieren ein.\n");
00059    AddDetail("licht", "Magisches Licht erhellt den Raum.\n");
00060    AddDetail("raum", "Schau Dich einfach mal um.\n");
00061    AddDetail("hoehle", "Du befindest Dich tatsaechlich in einer Hoehle.\n");
00062    AddDetail("kopf", "Das anzuschauen duerfte Dir schwer fallen.\n");
00063    AddCmd(({"trink", "trinke"}), "trinken");
00064    AddCmd("meditiere", "meditieren");
00065    AddCmd(({"wirf", "werfe"}), "werfen");
00066    AddExit("osten", "/players/boing/orakel/organg2");
00067 }

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

meditieren (  ) 

Definiert in Zeile 205 der Datei orakel.c.

00206 {
00207   write(
00208   "Du sammelst Deine geistigen Kraefte und verfaellst schon schnell in einen\n"+
00209   "tranceartigen Zustand. Eine Vision eines Helden, der eine Muenze in den\n"+
00210   "See wirft erscheint vor Deinen Augen, verschwindet aber schon schnell\n"+
00211   "wieder. Als Du wieder aufwachst, ist alles wie vorher.\n");
00212   return 1;
00213 }

int NeuerTip (  ) 

Definiert in Zeile 70 der Datei orakel.c.

Benutzt P_ATTRIBUTES, P_KNOWN_POTIONROOMS, P_LEP und WANNWIEVIEL.

Wird benutzt von Vision().

00071 {
00072    mapping platt;   // Attributmapping des Spielers
00073    int             summe;   // Summe der Attribute des Spielers + der noch zu findenen
00074                                     // aber bekannten Zaubertrankstellen
00075    int             sps;     // Stufenpunkte des Spielers
00076 
00077    platt  = this_player()->QueryProp(P_ATTRIBUTES);
00078    summe  = (int)platt["int"] + (int)platt["con"] + 
00079                     (int)platt["dex"] + (int)platt["str"] - 4; 
00080    summe  += sizeof(this_player()->QueryProp(P_KNOWN_POTIONROOMS));
00081    sps            = this_player()->QueryProp(P_LEP);
00082 
00083 // Wenn genug Stufenpunkte da sind, dann wird 1 zurueckgegeben, sonst 0
00084   if (summe>79)
00085     return 0;
00086   if (sps > WANNWIEVIEL[summe])
00087     return 1;
00088    return 0;
00089 }

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

string TipListe (  ) 

Definiert in Zeile 167 der Datei orakel.c.

Benutzt P_KNOWN_POTIONROOMS und POTIONMASTER.

00168 {
00169   int*            pll;
00170   string* tip;
00171   string  ret;
00172   int             plsize, i;
00173 
00174   ret            = "";
00175   pll            = this_interactive()->QueryProp(P_KNOWN_POTIONROOMS);
00176   plsize = sizeof(pll);
00177 
00178   for (i=0; i<plsize; i++)
00179   {
00180     tip = POTIONMASTER->TipLesen(pll[i]);
00181     if (sizeof(tip))
00182     {
00183       ret += tip[random(sizeof(tip))];
00184       ret += "--------------------------------------------------------------------------\n";
00185     }
00186   }
00187 
00188   if (ret=="")
00189     return "Du kennst momentan keine Tips zu Zaubertraenken.\n";
00190   else
00191     return "--------------------------------------------------------------------------\n"+ret;
00192 }

trinken ( str   ) 

Definiert in Zeile 194 der Datei orakel.c.

Benutzt notify_fail().

Wird benutzt von liste().

00195 {
00196   notify_fail("Was moechtest Du trinken?\n");
00197   if (!str || str=="") return 0;
00198   notify_fail("Das kannst Du hier nicht trinken!\n");
00199   if (str!="wasser")
00200     return 0;
00201   write("Du trinkst einen Schluck Quellwasser und fuehlst Dich koestlich erfrischt.\n");
00202   return 1;
00203 }

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

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

Vision (  ) 

Definiert in Zeile 132 der Datei orakel.c.

Benutzt KEINTIPTEXT, liste(), NeuerTip(), P_KNOWN_POTIONROOMS, POTIONMASTER, text() und ZTAuswahl().

Wird benutzt von werfen().

00133 {
00134   int             nr;
00135   string* text;
00136   int*            liste;
00137 
00138   if (!NeuerTip())
00139     return KEINTIPTEXT + "Du hast wahrscheinlich zu wenig Stufenpunkte.\n";
00140 
00141   nr = ZTAuswahl();
00142   if (nr == -1)
00143     return KEINTIPTEXT + "Du hast schon alle Zaubertraenke gefunden.\n";
00144 
00145   text = POTIONMASTER->TipLesen(nr);
00146 // Das Folgende kann passieren, wenn entweder die Datei zu einem ZT nicht
00147 // existiert oder das Einlesen sonstwie fehlschlaegt. Zur Behebung des
00148 // Fehlers sollte man sich als erstes die Datei <nr>.zt anschauen.
00149   if (intp(text) || !sizeof(text)) 
00150     return 
00151   "Ploetzlich wird es totenstill im Raum, die Nebelschwaden beginnen sich\n"+
00152   "um die Kugel zu drehen. Immer schneller wird der wirbelnde Tanz, bis\n"+
00153   "sich das Ganze unmerklich zu einer Schrift formt:\n"+
00154   "   Fehler im Raum-Zeit-Gefuege, bitte wende Dich an Rikus\n"+
00155   "   und melde ihm die Zahl '"+nr+"'!\n"+
00156   "Dann zerfliesst der Nebel und alles ist beim Alten.\n";
00157 
00158   liste = this_player()->QueryProp(P_KNOWN_POTIONROOMS);
00159   this_player()->AddKnownPotion(nr);
00160 
00161 //bis nach Reboot noetig!!! Rikus
00162 //  "/players/boing/orakel/orakel"->AddKnownPotion(nr);
00163 
00164   return "Der Nebel ueber der Kugel beginnt sich zu bewegen, dann hoerst Du eine\ntiefe Stimme in Deinem Kopf erklingen:\n\n"+text[random(sizeof(text))];
00165 }

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

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

werfen ( str   ) 

Definiert in Zeile 215 der Datei orakel.c.

Benutzt name, QueryMoney() und Vision().

00216 {
00217   if (str=="muenze in see" || str=="muenze in wasser" ||
00218       str=="muenze in quellsee")
00219   {
00220     if (this_player()->QueryMoney()<1)
00221     {
00222       write("Du hast keine Muenze.\n");
00223       return 1;
00224     }
00225     this_player()->AddMoney(-1);
00226     write("Du wirfst eine Muenze ins Wasser.\n");
00227     say(capitalize(this_player()->name())+" wirft eine Muenze ins Wasser.\n");
00228     write(Vision());
00229     return 1;
00230   }
00231 }

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

int ZTAuswahl (  ) 

Definiert in Zeile 93 der Datei orakel.c.

Benutzt i, P_KNOWN_POTIONROOMS, P_POTIONROOMS und POTIONMASTER.

Wird benutzt von Vision().

00094 {
00095    int* pllist;
00096    int          pllsize;
00097    int i;
00098    mixed sorted_list; // ({ ({liste1}), ({liste2}), ..., ({liste8}) })
00099 
00100 // Initialisierung
00101    sorted_list = ({ ({ }), ({ }), ({ }), ({ }), ({ }), ({ }), ({ }), ({ }) });
00102    pllist      = this_player()->QueryProp(P_POTIONROOMS);
00103    pllsize     = sizeof(pllist);
00104 
00105 // Zaubertraenke werden gemaess ihrer Liste in den neuen Array eingetragen.
00106    for (i=0; i<pllsize; i++)
00107       sorted_list[POTIONMASTER->GetListByNumber(pllist[i])] += ({ pllist[i] });
00108 
00109 // Alle Unterarrays werden aneinandergehaengt.
00110    pllist = ({ });
00111    for (i=0; i<8; i++)
00112       pllist += sorted_list[i];
00113    pllist -= this_player()->QueryProp(P_KNOWN_POTIONROOMS);
00114 
00115 // Jetzt sind alle Zaubertraenke wieder in der Liste, sortiert nach dem
00116 // Schwierigkeitsgrad, bis auf die Zaubertraenke, die der Spieler bereits
00117 // kennt (d.h. wo er schon den Tip bekommen hat, sie aber noch nicht
00118 // gefunden hat).
00119 
00120 
00121 // Einer der leichtesten Zaubertraenke wird ausgewaehlt und zurueckgegeben.
00122    pllsize = sizeof(pllist);
00123    if (!pllsize)
00124       return -1;
00125    if (pllsize>10)
00126       return pllist[random(10)];
00127    else
00128       return pllist[random(pllsize)];
00129 }

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


Variablen-Dokumentation

inherit std room

Definiert in Zeile 12 der Datei orakel.c.

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