lange Bewegungsmeldungen mit ReceiveMsg() umbrechen
Darueber hinaus liess sich mehrfach ein Rudel an Schleifen
(inkl. Filteraufrufen) durch jeweils eine einzelne Schleife
ersetzen.
Change-Id: I4731b94b9d9a72fe0dca13767603251e81d44d95
diff --git a/std/living/moving.c b/std/living/moving.c
index 84a9ef8..d75c0c0 100644
--- a/std/living/moving.c
+++ b/std/living/moving.c
@@ -186,7 +186,7 @@
string textout, string textin )
{
int para, invis, tmp;
- object oldenv, *inv;
+ object oldenv;
string fn,vc;
mixed res;
mixed hookData, hookRes;
@@ -313,30 +313,31 @@
if ( !sizeof(direction) )
direction = 0;
- inv = all_inventory(environment()) - ({ this_object() });
- inv = filter( inv, #'living/*'*/ );
- inv -= filter_objects( inv, "CannotSee", 1 );
+ foreach (object who : all_inventory(environment())) {
+ if (who != this_object() && living(who) && !who->CannotSee(1))
+ who->ReceiveMsg(sprintf("%s %s%s%s.",
+ Name(WER,2),
+ textout,
+ direction ? " " + direction : "",
+ sizeof(mout) > 1 ? mout[1] : ""),
+ MT_LOOK, MA_MOVE_OUT);
+ }
- filter( inv, #'tell_object/*'*/,
- Name( WER, 2 ) + " " + textout +
- (direction ? " " + direction : "") +
- (sizeof(mout) > 1 ? mout[1] : "") + ".\n" );
}
// Magier sehen auch Bewegungen, die M_SILENT sind
else if ( interactive(ME) ){
- inv = (all_inventory(environment()) & users())
- - ({ this_object() });
- inv = filter( inv, #'_is_learner/*'*/ );
-
if ( invis )
fn = "(" + capitalize(getuid(ME)) + ") verschwindet "
"unsichtbar.\n";
else
fn = capitalize(getuid(ME)) + " verschwindet ganz leise.\n";
-
- filter( inv, #'tell_object/*'*/, fn );
+
+ foreach (object who : all_inventory(environment())) {
+ if (who != this_object() && _is_learner(who))
+ tell_object(who, fn);
+ }
}
-
+
// Nackenschlag beim Fluechten:
if ( !(method & M_NO_ATTACK) && objectp(ME) )
ExitAttack();
@@ -383,23 +384,24 @@
else
textin = ({string}) QueryProp(P_MSGIN);
}
-
- inv = all_inventory(environment()) - ({ this_object() });
- inv = filter( inv, #'living/*'*/ );
- inv -= filter_objects( inv, "CannotSee", 1 );
- filter( inv, #'tell_object/*'*/,
- capitalize(name( WER, 0 )) + " " + textin + ".\n" );
+
+ foreach (object who : all_inventory(environment())) {
+ if (who != this_object() && living(who) && !who->CannotSee(1))
+ who->ReceiveMsg(Name(WER,0)+" "+textin+".", MT_LOOK, MA_MOVE_IN);
+ }
}
// sonst: Magier sehen auch M_SILENT-Bewegungen, hier also nur an Magier
// ausgeben, alle anderen sehen eh nix.
- else if ( interactive(ME) ) {
- inv = (all_inventory(environment()) & users()) - ({this_object()});
- inv = filter( inv, #'_is_learner/*'*/ );
+ else if ( interactive(ME) ) {
if ( invis )
fn = "(" + capitalize(getuid(ME)) + ") taucht unsichtbar auf.\n";
else
- fn = capitalize(getuid(ME)) + " schleicht leise herein.\n";
- filter( inv, #'tell_object, fn );
+ fn = capitalize(getuid(ME)) + " schleicht leise herein.\n";
+
+ foreach (object who : all_inventory(environment())) {
+ if (who != this_object() && _is_learner(who))
+ tell_object(who, fn);
+ }
}
// "Objekt" ueber das Move informieren.