shut.c-Dateireferenz

#include <properties.h>
#include <defines.h>
#include <language.h>
#include <moving.h>
#include "/secure/wizlevels.h"
Include-Abhängigkeitsdiagramm für shut.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define S_PRESAY   1
#define S_IGNORE   2
#define messages1
#define messages2
#define messages3
#define messages4

Funktionen

static int _query_restzeit ()
static string * _query_ignore ()
public varargs void die (int poisondeath, int extern)
status access_check ()
public void create ()
static varargs string text_time (int sec, int flag)
public string _query_long ()
public string _query_short ()
public int shut (mixed minutes)
static void SHOUT (string str, int flags)
static void NextStep (int seconds)
static void ArmasShout ()
public void catch_tell (string str)
public int remove ()
public int do_damage (int dam, object enemy)
string NotifyDestruct (object caller)

Variablen

inherit std npc
static int restzeit
static string * ignorierer = ({})

Makro-Dokumentation

#define messages1
Wert:
({ \
  "Wolken ballen sich am Himmel. Es scheint wohl ein Unwetter aufzuziehen. " \
  "Du hast ein ungutes Gefuehl in Deiner Haut.", \
  "Aus der Ferne hoerst Du ein Donnern ... ob das ein Gewitter ist?", \
  "Wolken ziehen schnell vorbei und verdunkeln die Sonne und die Sterne. " \
  "Dies scheint keines der normalen Unwetter zu sein, die Du schon erlebt " \
  "hast.", \
  "Das ferne Rauschen der Baeche und Fluesse wird lauter. Die Wassermassen " \
  "scheinen nicht mehr kontrolliert zu fliessen und Du bekommst Angst!", \
  "Der Himmel faerbt sich violett. Das Unwetter scheint gewaltiger zu " \
  "werden als sonst. Dir laeuft ein Schauer ueber den Ruecken." \
  })

Definiert in Zeile 33 der Datei shut.c.

#define messages2
Wert:
({ \
  "Die Wolken verdunkeln den Himmel. Es wird ueberall duester in der Welt " \
  "und Du kannst kaum noch erkennen, was um Dich herum geschieht.", \
  "Ein starker Wind weht durch alle Gegenden und zerrt an allem, was nicht " \
  "fest ist. Hoffentlich wird das nicht noch schlimmer.", \
  "Regen prasselt ueberall nieder und fuellt die Baeche und Seen, die das " \
  "Wasser aber kaum noch halten koennen. Du versucht eine trockene Stelle " \
  "zu finden.", \
  "Der Himmel ist fast schwarz. Der Regen faellt in einer Menge, als haetten " \
  "alle Schleusen der Welt geoeffnet, um sie fuer immer zu ertraenken.", \
  "Die Luft scheint zu knistern! Das Ende des Unwetters ist sicher noch nicht "\
  "in Sicht. Elektrizitaet entlaedt sich im Himmel zwischen den Wolken. " \
  "Was fuer ein Lichtspiel!", \
  "Blitz und Donner hallen durch die Welt. Es scheint keine Stelle zu geben, " \
  "an der man sicher sein kann." \
  })

Definiert in Zeile 46 der Datei shut.c.

#define messages3
Wert:
({ \
  "Du siehst, wie die Einwohner der Welt versuchen, sich panisch vor dem " \
  "Unwetter zu retten, aber es ist fuer sie zu spaet.", \
  "Blitze nie gesehener Gewalt schlagen rund um Dich ein. Feuer flammen auf " \
  "und scheinen alles verbrennen zu wollen, was um Dich herum existiert.", \
  "Dicke Wolken tuermen sich immer weiter auf und scheinen Dich erdruecken zu "\
  "wollen. Sie sind nicht mehr schwarz, sondern blutrot wie das Wasser, was " \
  "sie von sich geben.", \
  "Die Fluesse und Meere der Welt treten ueber ihre Ufer und zerstoeren alles "\
  "Leben. Das Wasser hat sich zu Blut gewandelt! Um Dich herum wird alles " \
  "rot!", \
  "Der Donner grollt mit roher Gewalt durch die Welt. Die Schallwellen " \
  "schlagen mit aller Kraft gegen die Gebirge und scheinen sie reizen zu " \
  "wollen. Du kriegst Angst!", \
  "Der Regen faerbt sich rot! Das ist kein Wasser mehr, sondern Blut, was da " \
  "auf Dich herabregnet. Dir schwinden kurz die Sinne beim Gedanken an das, " \
  "was noch kommen mag." \
  })

Definiert in Zeile 63 der Datei shut.c.

#define messages4
Wert:
({ \
  "Das Blut des Regens scheint Dich fortzuschwemmen. Ueberall ist das Blut " \
  "ueber die Ufer getreten und sucht sich seinen toedlichen Weg.", \
  "Die Vulkane der Welt brechen aus und die Lava verbrennt alles, was sich " \
  "ihr in den Weg stellt. Sie bringt das Blut zum Verdampfen und erfuellt " \
  "alles mit ihrer zerstoererischen, grausamen Hitze.", \
  "Ploetzlich ist alles mit Feuer und Hitze erfuellt. Die Meere und " \
  "Fluesse verdampfen und der Dampf treibt heiss ueber die Welt, um alles " \
  "zu verbruehen, was sich nicht schuetzt!", \
  "Von ueberall hoerst Du Schreie und Du erkennst panische Angst in den " \
  "Augen der Eingeborenen. Elendig verenden sie in der Hitze zwischen Feuer " \
  "und Lava. Dir wird uebel.", \
  "Um Dich herum siehst Du nur brennende Truemmer. Die Welt scheint vor " \
  "ihrem Untergang, denn ueberall oeffnet sich der Boden und spuckt Feuer. " \
  "Heisses Magma quillt aus ihm heraus und mischt sich zischend mit dem Blut " \
  "der Meere. Es gibt nun sicher kein Entrinnen mehr.", \
  "Du kannst Dich kaum noch halten. Erdbeben erschuettern alles um Dich " \
  "herum. Ueberall kannst Du nur noch Truemmer erkennen, wo einmal Haeuser " \
  "standen. Alles ist erfuellt vom Geruch des Todes!" \
  })

Definiert in Zeile 82 der Datei shut.c.

#define S_IGNORE   2

Definiert in Zeile 25 der Datei shut.c.

Wird benutzt von SHOUT().

#define S_PRESAY   1

Definiert in Zeile 24 der Datei shut.c.

Wird benutzt von SHOUT().


Dokumentation der Funktionen

static string* _query_ignore (  )  [static]

Definiert in Zeile 107 der Datei shut.c.

Benutzt ignorierer.

00107 { return ignorierer; }

public string _query_long (  ) 

Definiert in Zeile 194 der Datei shut.c.

Benutzt _query_restzeit(), break_string() und text_time().

00195 {
00196     return break_string( "Dies ist Armageddon, der Weltenvernichter. Als Du "
00197                          "ihn ansiehst, blickt er auf und fluestert Dir zu: "
00198                          "Noch " + text_time(_query_restzeit()) +
00199                          " muessen vergehen, ehe ich die Welt vernichte.", 78 );
00200 }

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

static int _query_restzeit (  )  [static]

Definiert in Zeile 106 der Datei shut.c.

Benutzt restzeit.

Wird benutzt von _query_long().

00106 { return restzeit + find_call_out("NextStep"); }

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

public string _query_short (  ) 

Definiert in Zeile 203 der Datei shut.c.

00204 {
00205     return "Armageddon, der Weltenvernichter";
00206 }

status access_check (  ) 

Definiert in Zeile 124 der Datei shut.c.

Benutzt ELDER_SECURITY und process_call().

Wird benutzt von create(), ReassignError(), set_lock() und shut().

00124                       {
00125     //wer darf rebooten?
00126 
00127     //in einem process_string() gar nicht.
00128     if (process_call()) return(0);
00129 
00130     //Master darf natuerlich. (->slow_shut_down(), vom Driver bei
00131     //Speicherknappheit gerufen.)
00132     if (previous_object() && 
00133         previous_object()==find_object(__MASTER_OBJECT__))
00134         return(1);
00135 
00136     // rebooten duerfen ansonsten nur [W]+
00137     if ( ELDER_SECURITY) {
00138         return(1);
00139     }
00140 
00141     //andere nicht.
00142     return(0);
00143 }

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

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

static void ArmasShout (  )  [static]

Definiert in Zeile 297 der Datei shut.c.

00298 {
00299     int dauer;
00300     
00301     dauer = _query_restzeit();
00302     call_out( "ArmasShout", 40+random(40) );
00303     
00304     if ( 701 < dauer )
00305         SHOUT( messages1[ random(sizeof(messages1))], S_IGNORE);
00306     else if ( 501 < dauer )
00307         SHOUT( messages2[ random(sizeof(messages2))], S_IGNORE);
00308     else if ( 251 < dauer )
00309         SHOUT( messages3[ random(sizeof(messages3))], S_IGNORE);
00310     else
00311         SHOUT( messages4[ random(sizeof(messages4))], S_IGNORE);
00312 }

public void catch_tell ( string  str  ) 

Definiert in Zeile 315 der Datei shut.c.

00316 {
00317     string who, what;
00318     object ob;
00319 
00320     if ( sscanf( str, "%s teilt Dir mit: %s", who, what ) != 2 ||
00321          !this_player() )
00322         return;
00323     
00324     // Ein Spieler will fuer dieses Reboot ignoriert werden, oder
00325     // das Ignoriere soll aufgehoben werden.
00326     if (lower_case(what)[0..<2]=="ruhe"){
00327       if (member(ignorierer, getuid(this_player()))>-1)
00328       {
00329          ignorierer -= ({ getuid(this_player()) });
00330          tell_object( this_player(), break_string(
00331           "Gut, ich notier's mir. Ab nun hast Du wieder am grossen Showdown "
00332           "teil. Viel Spass dabei.\n", 78, "Armageddon teilt Dir mit: "));
00333       } else {
00334          ignorierer += ({ getuid(this_player()) });
00335          tell_object( this_player(), break_string(
00336           "Gut, ich notier's mir. Der Weltuntergang soll Dich beim Spielen "
00337           "nicht weiter stoeren.\n", 78, "Armageddon teilt Dir mit: "));
00338       }
00339       return;
00340     }
00341    
00342     // In den Laden
00343     if ( _query_restzeit() < 600 ){
00344         this_player()->move( "/d/ebene/room/PortVain/laden", M_TPORT );
00345         return;
00346     }
00347     
00348     tell_object( this_player(),
00349                  break_string( "Es ist noch zu frueh! Probier es 10 Minuten "
00350                                "vor dem Ende nochmal!\nIn " +
00351                                text_time( _query_restzeit(), 1 ) +
00352                                " ist es soweit!", 78,
00353                                "Armageddon teilt Dir mit: ", 1 ) );
00354     return;
00355 }

public void create (  ) 

Definiert in Zeile 145 der Datei shut.c.

Benutzt access_check(), AddId(), create(), destruct(), MALE, P_ARTICLE, P_GENDER, P_NAME, P_NO_ATTACK, P_SHORT, P_XP, set_living_name() und SetProp().

00146 {    
00147     ::create();
00148     
00149     SetProp( P_NAME, "Armageddon" );
00150     SetProp( P_GENDER, MALE );
00151     SetProp( P_SHORT, "Armageddon, der Weltenvernichter" );
00152     AddId( "armageddon" );
00153     set_living_name( "armageddon" );
00154     SetProp( P_ARTICLE, 0 );
00155     SetProp( P_XP, 0 );
00156     SetProp( P_NO_ATTACK,
00157              "Armageddon grinst: Dein Ende kommt noch frueh genug!\n" );
00158 
00159     if (!access_check()) {
00160         destruct(this_object());
00161         raise_error("Armageddon darf nur von W+ aktiviert werden!");
00162     }
00163 }

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

public varargs void die ( int  poisondeath,
int  extern 
)

Definiert in Zeile 109 der Datei shut.c.

Benutzt room.

Wird benutzt von do_damage() und heart_beat().

00110 {
00111   object tp;
00112   object room;
00113 
00114   if (objectp(room=environment(this_object())))
00115     if (!objectp(tp=this_player()))
00116       tell_room(room,"Armageddon kratzt sich ratlos am Kopf.\n");
00117     else 
00118       tell_room(room,
00119         "Armageddon sagt: Ich weigere mich, einfach so zu sterben, "+
00120         (tp->Name())+".\n");
00121   return;
00122 }

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

public int do_damage ( int  dam,
object  enemy 
)

Definiert in Zeile 365 der Datei shut.c.

Wird benutzt von heart_beat().

00366 {
00367     return 0;
00368 }

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

static void NextStep ( int  seconds  )  [static]

Definiert in Zeile 265 der Datei shut.c.

00266 {
00267     int neu;
00268 
00269     if ( seconds <= 0 ){
00270         SHOUT( "Ich starte das Spiel jetzt neu !", S_PRESAY);
00271         shutdown("");
00272         return;
00273     }
00274     
00275     if ( seconds <= 600 )
00276       SHOUT( "Teile mir mit, wenn Du in den Laden gebracht werden willst!", 
00277               S_PRESAY|S_IGNORE);
00278     
00279     if ( seconds > 2 * 86400 )
00280         neu = seconds - 5 * 3600;
00281     else if ( seconds > 4800 )
00282         neu = seconds - 1800;
00283     else
00284         neu = seconds * 3 / 4 - 10;
00285     
00286     restzeit = neu;
00287     call_out( "NextStep", seconds-neu, neu );
00288     
00289     SHOUT( "In " + text_time( seconds, 1 ) + " werde ich die Welt "
00290            "zerstoeren und neu erschaffen!", S_PRESAY|S_IGNORE);
00291     
00292     if ( neu < 900 && find_call_out("ArmasShout") == -1 )
00293         call_out( "ArmasShout", random(60)+10 );
00294 }

string NotifyDestruct ( object  caller  ) 

Definiert in Zeile 371 der Datei shut.c.

Wird benutzt von NotifyDestruct().

00371                                      {
00372     if( (caller!=this_object() && !ELDER_SECURITY) || process_call() ) {
00373       return "Du darfst Armageddon nicht zerstoeren!\n";
00374     }
00375     return 0;
00376 }

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

public int remove (  ) 

Definiert in Zeile 358 der Datei shut.c.

00359 {
00360     write( "Armageddon will nicht removed werden!\n" );
00361     return 0;
00362 }

static void SHOUT ( string  str,
int  flags 
) [static]

Definiert in Zeile 248 der Datei shut.c.

Benutzt break_string(), ignorierer, S_IGNORE und S_PRESAY.

00249 {
00250    if (flags&S_PRESAY)
00251      str = break_string(str, 78, "Armageddon ruft: ");
00252    else
00253      str = break_string(str, 78);
00254      
00255    if (flags&S_IGNORE)
00256      filter(
00257        users()-filter_objects(users(),"TestIgnore",({"armageddon"}))
00258               -map(ignorierer, #'find_player),
00259        #'tell_object, str);
00260    else
00261      filter( users(), #'tell_object, str);
00262 }

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

public int shut ( mixed  minutes  ) 

Definiert in Zeile 209 der Datei shut.c.

Benutzt access_check(), c, call_out(), destruct(), M_GO, ME, move() und restzeit.

00210 {
00211     int a, b, c;
00212 
00213     if (!access_check()) {
00214         destruct(this_object());
00215         raise_error("Armageddon darf nur von W+ aktiviert werden!");
00216         return(-1);   //never reached
00217     }
00218     
00219     a = b = c = 0;
00220     move( "/gilden/abenteurer", M_GO );
00221     
00222     if ( intp(minutes) )
00223         c = minutes;
00224     else if ( stringp(minutes) ){
00225         if ( sscanf( minutes, "%d:%d:%d", a, b, c ) == 3 )
00226             c += b * 60 + a * 24 * 60;
00227         else if( sscanf( minutes, "%d:%d", b, c) == 2 )
00228             c += b * 60;
00229         else if( sscanf( minutes, "%d", c ) != 1 )
00230             return -2;
00231     }
00232     else {
00233       destruct(ME);
00234       raise_error("Illegal argument type to shut()\n");
00235     }
00236 
00237     while ( remove_call_out("NextStep") >= 0 )
00238         ;
00239     
00240     restzeit = c * 60;
00241     call_out( "NextStep", 0, restzeit );
00242     return restzeit;
00243 }

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

static varargs string text_time ( int  sec,
int  flag 
) [static]

Definiert in Zeile 166 der Datei shut.c.

Wird benutzt von _query_long().

00167 {
00168     string s;
00169     int tage, stunden, minuten, sekunden;
00170 
00171     sekunden = sec;
00172     tage = sekunden / 86400;
00173     stunden = (sekunden % 86400) / 3600;
00174     minuten = (sekunden % 3600) / 60;
00175     sekunden = sec % 60;
00176     s = "";
00177     
00178     if ( sec >= 86400 )
00179         s += tage + " Tag" + (tage == 1 ? ", " : (flag ? "en, " : "e, "));
00180     
00181     if ( sec >= 3600 )
00182         s += stunden + " Stunde" + (stunden == 1 ? ", " : "n, ");
00183     
00184     if ( sec >= 60 )
00185         s += minuten + " Minute" + (minuten == 1 ? "" : "n");
00186     
00187     s += (sec/60 ? " und " : " ") + sekunden + " Sekunde" +
00188         (sekunden == 1 ? "" : "n");
00189     
00190     return s;
00191 }

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


Variablen-Dokumentation

string* ignorierer = ({}) [static]

Definiert in Zeile 104 der Datei shut.c.

Wird benutzt von _query_ignore() und SHOUT().

inherit std npc

Definiert in Zeile 22 der Datei shut.c.

int restzeit [static]

Definiert in Zeile 103 der Datei shut.c.

Wird benutzt von _query_restzeit() und shut().

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