TOD (nicht Tod oder leer) als Sender seiner Infos
Change-Id: I00000c0ded00000baba000002ab40b0000099998
diff --git a/room/death/death_room.c b/room/death/death_room.c
index cb20aca..39708ca 100644
--- a/room/death/death_room.c
+++ b/room/death/death_room.c
@@ -64,7 +64,7 @@
"zentral aufgestellten Schreibtisch, der mit Diagrammen und "
"Buechern bedeckt ist. Die Waende verschwinden hinter Regalen, "
"die gefuellt sind mit in Leder gebundenen, dunklen Waelzern, "
- "von denen geheimnisvolle Runen leuchten.\nTod.", 78, 0, 1 ) );
+ "von denen geheimnisvolle Runen leuchten.\nTOD.", 78, 0, 1 ) );
}
public int ch_check_access(string ch, object user, string cmd) {
@@ -116,11 +116,11 @@
string *texte;
sz = sizeof( texte = explode( table, "##" ) - ({""}) );
-
+
for ( i = 0; i < sz; i++ )
if ( i%2 ){
sscanf( texte[i], "%d", wert );
-
+
if ( value < wert )
break;
}
@@ -138,7 +138,7 @@
// ziemlich vom htmld abgekupfert ;)
private string
-parseText( string msg, object pl )
+parseText( string msg, object pl )
{
string *words, *texte, *todo, *done;
int endFlag;
@@ -157,7 +157,7 @@
}
else
endFlag = 0;
-
+
switch( cmd[0] ){
case 'A': /*** Alignment ersetzen ***/
if (!endFlag){
@@ -171,7 +171,7 @@
todo = todo[0..<2];
}
break;
-
+
case 'D': /*** Tode ersetzen ***/
if ( !endFlag ){
PUSH( cmd, todo );
@@ -184,7 +184,7 @@
POP(todo);
}
break;
-
+
case 'L': /*** Level ersetzen ***/
if ( !endFlag ){
PUSH( cmd, todo );
@@ -197,7 +197,7 @@
POP(todo);
}
break;
-
+
case 'Z': /*** Zufall ersetzen ***/
if ( !endFlag ){
PUSH( cmd, todo );
@@ -206,7 +206,7 @@
else{
if ( todo[<1][0] == 'Z'){
int cnt, rnd, wert, sz2;
-
+
if ( !sscanf(todo[<1], "Z=%d", rnd) )
STOS(done) += "\n###\n### Syntax Error in <Z>!\n###\n\n";
else {
@@ -214,7 +214,7 @@
sz2 = sizeof( texte = explode(TOS(done), "##") );
wert=0;
cnt=0;
-
+
for ( int k = 1; k < sz2; k += 2 ){
sscanf( texte[k], "%d", wert );
cnt += wert;
@@ -256,7 +256,7 @@
race = 2 * (member( ({ "Mensch", "Elf", "Zwerg", "Hobbit",
"Feline", "Dunkelelf" }),
({string}) pl->QueryProp(P_RACE) ) + 1);
-
+
if ( race >= sizeof(texte) )
race = 0;
@@ -284,7 +284,7 @@
{
for ( int j = sizeof(players); j--; )
if ( !objectp(players[j][0]) ||
- environment(players[j][0]) !=
+ environment(players[j][0]) !=
find_object("/room/death/virtual/death_room_"+getuid(players[j][0])) )
players[j] = 0;
@@ -305,14 +305,14 @@
msg = players[j][2][nr];
else
msg = 0;
-
+
if ( !msg )
msg = players[j][3][1][nr];
-
+
if ( msg )
tell_object( players[j][0], parseText( msg, players[j][0] ) );
}
-
+
do_remove();
}
@@ -322,13 +322,13 @@
int res;
string prayroom;
object plobj, pl;
-
+
for ( int j = sizeof(players); j--; ){
if ( players[j][1] >= players[j][3][0]){
pl = players[j][0];
while ( plobj = present("\ndeath_mark", pl) )
plobj->remove();
-
+
if ( !(prayroom = ({string}) pl->QueryPrayRoom()) )
prayroom="/room/pray_room";
@@ -339,7 +339,7 @@
pl->Set( P_ENEMY_DEATH_SEQUENCE, 0 );
pl->Set( P_NEXT_DEATH_SEQUENCE, 0 );
pl->Set( P_POISON, 0, F_QUERY_METHOD );
-
+
if ( catch( res = ({int}) pl->move(prayroom, M_GO|M_SILENT|M_NOCHECK) )
|| res < 1 )
pl->move( "/room/pray_room", M_GO|M_NOCHECK );
@@ -359,7 +359,7 @@
{
string *sequences;
int i, len, cacheable;
-
+
if ( !stringp(str) || catch( len = file_size(str) ) || len <= 0 ){
sequences = get_dir( "/room/death/sequences/*" ) - ({ ".", "..", ".svn" });
str = "/room/death/sequences/" + sequences[random( sizeof(sequences) )];
@@ -372,13 +372,13 @@
return ({ msgCache[str], str });
}
}
-
+
sequences = explode( read_file(str), "\n" );
sscanf( sequences[0], "%d", len );
string seq = implode( sequences[1..], "\n" );
sequences = regexplode( seq, "[0-9][0-9]*:" );
mapping m = ([]);
-
+
for ( i = 1; i < sizeof(sequences)-1; i += 2 )
m[(int) sequences[i]] = sequences[i+1];
@@ -394,12 +394,13 @@
int kart, kgen;
int escaped;
object kill_liv, kill_ob;
- mixed dseq, act_seq, killer_name, killer_msg;
-
+ mixed dseq, act_seq, killer_msg;
+ string|string* killer_name;
+
set_heart_beat(1);
kgen = MALE;
- foreach(object prev : caller_stack(1)) {
+ foreach(object prev : caller_stack(1)) {
if ( !objectp(prev) || prev == pl )
continue;
@@ -434,7 +435,7 @@
kgen = ({int}) pre->QueryProp(P_GENDER);
}
- killer_msg = pre->QueryProp(P_KILL_MSG);
+ killer_msg = pre->QueryProp(P_KILL_MSG);
}
if ( !killer_name && kill_liv && function_exists( "QueryProp", kill_liv ) ){
@@ -462,7 +463,7 @@
killer_msg = kill_ob->QueryProp(P_KILL_MSG);
pre = kill_ob;
}
-
+
// falls keine Sequenz gesetzt, eventuelle eigene Todessequenz nehmen
if (!dseq)
dseq = ({<string|mapping|mixed*>})pl->QueryProp(P_NEXT_DEATH_SEQUENCE);
@@ -504,8 +505,9 @@
players[i][5] = pre;
- if ( escaped ){
- killer_name = "";
+ if ( escaped )
+ {
+ killer_name = "TOD";
killer_msg = upperstring(getuid(pl)) + " VERSUCHTE, MIR ZU "
"ENTKOMMEN - JETZT HABE ICH WIEDER EXTRA-ARBEIT MIT "+
(({int}) pl->QueryProp(P_GENDER) != 2 ? "IHM" : "IHR") +
@@ -547,7 +549,7 @@
if (testplayer[<5..<1]!="Gilde")
magiertestie = 1;
}
-
+
string kanal;
if (magiertestie || IS_LEARNING(pl))
kanal = "TdT";
@@ -556,8 +558,9 @@
CHMASTER->join( kanal, this_object() );
- if ( (!stringp(killer_name) || killer_name != "") &&
- (sizeof(killer_msg) < 4 || !killer_msg[3]) ){
+ if ( (!escaped && sizeof(killname)) &&
+ (sizeof(killer_msg) < 4 || !killer_msg[3]) )
+ {
if ( killer_msg[2] == PLURAL )
CHMASTER->send( kanal, this_object(),
killname + " haben gerade " +
@@ -570,21 +573,27 @@
i = ({int}) pl->QueryProp(P_DEADS);
if ( i && (getuid(pl) == "key" || i%100 == 0 || i%250 == 0) ){
- SetProp( P_NAME, "Tod" );
+ SetProp( P_NAME, "TOD" );
CHMASTER->send( kanal, this_object(),
sprintf( "DAS WAR SCHON DAS %dTE MAL!", i ) );
SetProp( P_NAME, "Lars" );
}
- if( killer_msg[0] ){
- if ( stringp(killer_name) && killer_name == "" ){
+ if( killer_msg[0] )
+ {
+ // escaped oder kein sinnvoller killer_name (ja, kein killname hier)?
+ // killer_name kann alles sein, was P_NAME/P_KILL_NAME sein kann.
+ if ( escaped || !sizeof(killer_name)
+ || (pointerp(killer_name) && sizeof(killer_name) != 4))
+ {
CHMASTER->send( kanal, this_object(),
break_string( funcall(killer_msg[0]), 78,
"["+kanal+":] " )[0..<2],
MSG_EMPTY );
- return;
+ return;
}
- else {
+ else
+ {
if ( (killer_msg[1] < MSG_SAY) || (killer_msg[1] > MSG_GEMOTE) )
killer_msg[1] = MSG_SAY;
@@ -613,7 +622,7 @@
}
if (({int})pl->query_hc_play()>1){
- SetProp( P_NAME, "Tod" );
+ SetProp( P_NAME, "TOD" );
CHMASTER->send( kanal, this_object(),"NUN GEHOERST DU FUER EWIG MIR!" );
SetProp( P_NAME, "Lars" );
}
@@ -624,7 +633,7 @@
{
int i;
string fn;
-
+
for ( i = sizeof(players); i--; )
if ( players[i][0] == this_player() )
break;
@@ -650,7 +659,7 @@
}
public mixed hier_geblieben( mixed dest, int methods, string direction,
- string textout, string textin )
+ string textout, string textin )
{
// Magier duerfen Spieler heraustransen
if ( this_interactive() && IS_LEARNER(this_interactive()) &&
@@ -670,7 +679,7 @@
// wenn mal fuer nen bestimmten Zwecks Bewegungen raus aus dem
// Todesraum erforderlich sind, sollten hier entsprechende
// Ausnahmen eingebaut werden.
- if ( (stringp(dest) &&
+ if ( (stringp(dest) &&
dest == object_name(environment(previous_object()))) ||
(objectp(dest) &&
dest == environment(previous_object())) ) {
@@ -684,6 +693,6 @@
// Spieler ist nicht mehr im Raum oder eingeschlafen
if ( previous_object() )
previous_object()->Set( P_TMP_MOVE_HOOK, 0 );
-
+
return ({ dest, methods, direction, textout, textin });
}
diff --git a/room/death/death_room_vc.c b/room/death/death_room_vc.c
index 3509c06..0d3c24a 100644
--- a/room/death/death_room_vc.c
+++ b/room/death/death_room_vc.c
@@ -24,7 +24,7 @@
{
if (IS_BLUE(this_object())) return;
::create();
-
+
SetProp( P_GENDER, MALE );
SetProp( P_ARTICLE, 0 );
SetProp( P_LIGHT,1 );
@@ -39,7 +39,7 @@
"zentral aufgestellten Schreibtisch, der mit Diagrammen und "
"Buechern bedeckt ist. Die Waende verschwinden hinter Regalen, "
"die gefuellt sind mit in Leder gebundenen, dunklen Waelzern, "
- "von denen geheimnisvolle Runen leuchten.\nTod.", 78, 0, 1 ) );
+ "von denen geheimnisvolle Runen leuchten.\nTOD.", 78, 0, 1 ) );
previous_object()->CustomizeObject();
call_other("/room/death/death_room","???");
}
@@ -71,7 +71,7 @@
}
public varargs void init(object oldenv)
-{
+{
string prayroom;
int res;
@@ -83,7 +83,7 @@
if ( !(prayroom = ({string}) this_player()->QueryPrayRoom()) )
prayroom = "/room/pray_room";
-
+
if ( !({int})this_player()->QueryProp(P_GHOST) )
{
if ( IS_WIZARD(this_player()) &&
@@ -91,16 +91,16 @@
{
if ( !({int})this_player()->QueryProp(P_INVIS) )
tell_room( this_object(),
- "Der Tod sagt: WAS WILLST DU HIER, "+
+ "TOD sagt: WAS WILLST DU HIER, "+
upperstring(({string})this_player()->name())+"?\n"+
- "Der Tod sagt: DU BIST UNSTERBLICH, DU HAST HIER "
+ "TOD sagt: DU BIST UNSTERBLICH, DU HAST HIER "
"NICHTS ZU SUCHEN!\n\n" );
}
- else
+ else
{
- write("Der Tod sagt: WAS TUST DU HIER? DEINE ZEIT IST NOCH "
+ write("TOD sagt: WAS TUST DU HIER? DEINE ZEIT IST NOCH "
"NICHT REIF!\n\n");
-
+
if ( catch(res = ({int}) this_player()->move( prayroom,M_GO|M_SILENT|M_NOCHECK ))
|| res < 1 && environment(this_player()) == this_object() )
this_player()->move( "/room/pray_room", M_GO|M_SILENT|M_NOCHECK );
@@ -111,14 +111,14 @@
if ( !IS_DEPUTY(this_player()) ){
add_action( "filter_ldfied", "", 1 );
this_player()->Set( P_TMP_MOVE_HOOK,
- ({ time()+31536000,
- find_object("/room/death/death_room"),
+ ({ time()+31536000,
+ find_object("/room/death/death_room"),
"hier_geblieben" }) );
}
this_player()->Set( P_NO_ATTACK, #'no_attack, F_QUERY_METHOD );
this_player()->Set( P_POISON, #'no_poison, F_SET_METHOD );
-
+
"/room/death/death_room"->add_player(this_player());
}
@@ -127,14 +127,14 @@
{
// Description: Filter out relevant commands.
string verb;
-
+
verb=query_verb();
-
+
if ( (verb == "schlafe" || verb == "schlaf") && str == "ein" ){
write("DU KANNST DEM TOD NICHT ENTRINNEN!\n");
return 0;
}
-
+
if ( verb == "typo" || verb == "fehler" || verb == "bug" || verb == "idee" )
return 0;