Platzhalter von AddToMenu() umgestellt.
Fuer bessere Wartbarkeit benutzt der Pub jetzt replace_personal() fuer
Platzhalter. Die alten funktionieren weiterhin, sollten aber nicht mehr
verwendet werden.
Change-Id: Iaf96d9b21ca47e1a921e58fbb612035cad4ecb5b
diff --git a/std/room/pub.c b/std/room/pub.c
index c15e33e..92eb9f8 100644
--- a/std/room/pub.c
+++ b/std/room/pub.c
@@ -71,6 +71,34 @@
set_next_reset(-1);
}
+// Die alten durch die neuen Platzhalter ersetzen
+private string replace_dummy(string str)
+{
+ switch(str)
+ {
+ case "&&": return "@WERU1";
+ case "&1&": return "@WERU1";
+ case "&2&": return "@WESSENU1";
+ case "&3&": return "@WEMU1";
+ case "&4& ": return "@WENU1";
+ case "&1#": return "@WERU1";
+ case "&2#": return "@WESSENU1";
+ case "&3#": return "@WEMU1";
+ case "&4# ": return "@WENU1";
+ case "&!": return "@WERQP1";
+ case "&5&": return "@WERQP1";
+ case "&6&": return "@WESSENQP1";
+ case "&7&": return "@WEMQP1";
+ case "&8&": return "@WENQP1";
+ case "&5#": return "@WERQP1";
+ case "&6#": return "@WESSENQP1";
+ case "&7#": return "@WEMQP1";
+ case "&8#": return "@WENQP1";
+ default: return str;
+ }
+ return str;
+}
+
/* Zur Syntax:
*
* menuetext - Der Text steht im Menue
@@ -136,6 +164,18 @@
for( i=sizeof(ids)-1;i>=0;i-- )
id_list += ([ ids[i] : ident ]);
+ if(pointerp(msg) && sizeof(msg)>=2)
+ {
+ msg[0]=regreplace(msg[0],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ msg[1]=regreplace(msg[1],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ }
+
+ if(pointerp(d_msg) && sizeof(d_msg)>=2)
+ {
+ d_msg[0]=regreplace(msg[0],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ d_msg[1]=regreplace(msg[1],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ }
+
if ( intp(refresh) && (refresh>0) )
refresh = ([ PR_ALL : refresh; 1 ]);
else if ( !mappingp(refresh) )
@@ -509,35 +549,16 @@
return 0;
}
-/* Hier hats jede Menge neue Platzhalter */
+
string mess(string str,object pl)
{
- string dummy1, dummy2;
-
if ( !pl )
pl=PL;
if ( !stringp(str) || str=="" )
return str;
- str=implode(explode(str,"&&"),pl->name(WER,2));
- str=implode(explode(str,"&1&"),pl->name(WER,2));
- str=implode(explode(str,"&2&"),pl->name(WESSEN,2));
- str=implode(explode(str,"&3&"),pl->name(WEM,2));
- str=implode(explode(str,"&4&"),pl->name(WEN,2));
- str=implode(explode(str,"&1#"),capitalize(pl->name(WER,2)));
- str=implode(explode(str,"&2#"),capitalize(pl->name(WESSEN,2)));
- str=implode(explode(str,"&3#"),capitalize(pl->name(WEM,2)));
- str=implode(explode(str,"&4#"),capitalize(pl->name(WEN,2)));
- str=implode(explode(str,"&!"),pl->QueryPronoun(WER));
- str=implode(explode(str,"&5&"),pl->QueryPronoun(WER));
- str=implode(explode(str,"&6&"),pl->QueryPronoun(WESSEN));
- str=implode(explode(str,"&7&"),pl->QueryPronoun(WEM));
- str=implode(explode(str,"&8&"),pl->QueryPronoun(WEN));
- str=implode(explode(str,"&5#"),capitalize(pl->QueryPronoun(WER)));
- str=implode(explode(str,"&6#"),capitalize(pl->QueryPronoun(WESSEN)));
- str=implode(explode(str,"&7#"),capitalize(pl->QueryPronoun(WEM)));
- str=implode(explode(str,"&8#"),capitalize(pl->QueryPronoun(WEN)));
+ str=replace_personal(str,({pl}),1);
return break_string(capitalize(str),78,"", BS_LEAVE_MY_LFS);
}