foundationI_fluffos_v1/
foundationI_fluffos_v1/bin/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/ChangeLog.old/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/Win32/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/compat/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/compat/simuls/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/include/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/clone/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/command/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/data/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/etc/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/include/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/inherit/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/inherit/master/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/log/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/compiler/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/efuns/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/operators/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/u/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/tmp/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/windows/
foundationI_fluffos_v1/lib/
foundationI_fluffos_v1/lib/cmds/ambassador/
foundationI_fluffos_v1/lib/cmds/database/
foundationI_fluffos_v1/lib/cmds/soul/
foundationI_fluffos_v1/lib/daemon/include/
foundationI_fluffos_v1/lib/daemon/save/
foundationI_fluffos_v1/lib/daemon/services/
foundationI_fluffos_v1/lib/daemon/soul/
foundationI_fluffos_v1/lib/doc/build/
foundationI_fluffos_v1/lib/doc/build/room/
foundationI_fluffos_v1/lib/doc/build/virtual/
foundationI_fluffos_v1/lib/doc/driver/
foundationI_fluffos_v1/lib/doc/efun/
foundationI_fluffos_v1/lib/doc/etc/
foundationI_fluffos_v1/lib/doc/help/creator/
foundationI_fluffos_v1/lib/doc/help/hm/
foundationI_fluffos_v1/lib/doc/help/user/
foundationI_fluffos_v1/lib/doc/lpc/basic/
foundationI_fluffos_v1/lib/doc/lpc/data_types/
foundationI_fluffos_v1/lib/doc/lpc/etc/
foundationI_fluffos_v1/lib/doc/lpc/intermediate/
foundationI_fluffos_v1/lib/doc/lpc/types/
foundationI_fluffos_v1/lib/doc/mudlib/
foundationI_fluffos_v1/lib/doc/mudlib/features/
foundationI_fluffos_v1/lib/domains/Examples/etc/
foundationI_fluffos_v1/lib/domains/Examples/room/
foundationI_fluffos_v1/lib/domains/Examples/virtual/
foundationI_fluffos_v1/lib/domains/Examples/virtual/exaA/
foundationI_fluffos_v1/lib/domains/Examples/virtual/exaB/
foundationI_fluffos_v1/lib/domains/Examples/weapon/
foundationI_fluffos_v1/lib/domains/Standard/
foundationI_fluffos_v1/lib/domains/Standard/pools/
foundationI_fluffos_v1/lib/domains/Standard/std/
foundationI_fluffos_v1/lib/domains/Standard/xtra/
foundationI_fluffos_v1/lib/include/
foundationI_fluffos_v1/lib/news/
foundationI_fluffos_v1/lib/secure/cfg/
foundationI_fluffos_v1/lib/secure/cmds/adm/
foundationI_fluffos_v1/lib/secure/cmds/ambassador/
foundationI_fluffos_v1/lib/secure/cmds/mortal/
foundationI_fluffos_v1/lib/secure/etc/
foundationI_fluffos_v1/lib/secure/etc/approval/
foundationI_fluffos_v1/lib/secure/etc/elections/
foundationI_fluffos_v1/lib/secure/etc/mudlib/
foundationI_fluffos_v1/lib/secure/etc/quests/
foundationI_fluffos_v1/lib/secure/save/daemon/
foundationI_fluffos_v1/lib/secure/save/postal/d/descartes/
foundationI_fluffos_v1/lib/secure/save/users/d/
foundationI_fluffos_v1/lib/secure/std/
foundationI_fluffos_v1/lib/std/obj/
foundationI_fluffos_v1/lib/std/room/
foundationI_fluffos_v1/lib/std/user/
foundationI_fluffos_v1/lib/std/virtual/
foundationI_fluffos_v1/old/
foundationI_fluffos_v1/win32/
//      /bin/user/_yell.c
//      from the Nightmare mudlib
//      yells to adjacent rooms, good for muds who want to axe shout
//      created by Descartes of Borg 20 april 1993
 
#include <std.h>
 
inherit DAEMON;
 
void do_yell(object env, string prompt, string str);
 
int cmd_yell(string str) {
    string *primary, *secondary, *tmp_arr;
    string char_arr;
    int i, j, tmp, tmp2;
    object env;
 
    if(this_player()->query_ghost()) {
        write("You howl pitifully.\n");
        say("You hear the howling of a ghost.\n");
        return 1;
    }
 
    if((int)this_player()->query_sp()<5) {
        notify_fail("You are just too tired to yell now.\n");
        return 0;}
 
    if(!str) {
        notify_fail("Sore throat?\n");
        return 0;
    }
   
    this_player()->add_sp(-5);
    env = environment(this_player());
    if(env->query_property("no shout")) {
        notify_fail("Your voice does not travel far.\n");
        return 0;
    }
 
    
    log_file("shouts", this_player()->query_name()+" (yell): "+str+"\n");
    primary = (string *)env->query_destinations();
    message("my_action", "%^BLUE%^%^BOLD%^You yell: "+str, this_player());
    message("their_action", "%^BLUE%^%^BOLD%^"+this_player()->query_cap_name()+" yells: "+str, environment(this_player()), this_player());
    do_yell(env, "You hear a "+this_player()->query_gender()+" "+
      this_player()->query_race()+" yell: ", str);
    for(i=0, tmp_arr = ({}), secondary=({}), tmp=sizeof(primary);i<tmp;i++){
        char_arr = (string)env->query_direction(primary[i]);
        if(char_arr) {
            if(env->query_door(char_arr)) secondary += ({primary[i]});
            else tmp_arr += ({ primary[i] });
        }
    }
    primary = tmp_arr;
    for(i=0, tmp=sizeof(primary); i<tmp; i++) {
        call_other(primary[i], "???");
        if(!(env = find_object(primary[i]))) continue;
        do_yell(env, "You hear a "+this_player()->query_gender()+" "+
          this_player()->query_race()+" yell: ", str);
        tmp_arr = (string *)env->query_destinations();
        for(j=0, tmp2 = sizeof(tmp_arr); j<tmp2; j++) {
            if(!(char_arr = (string)env->query_direction(tmp_arr[j])))
                continue;
            if(env->query_door(char_arr)) continue;
            secondary += ({ tmp_arr[j] });
        }
    }
    secondary = distinct_array(secondary);
    for(i=0, tmp=sizeof(secondary); i<tmp; i++) {
        if(member_array(secondary[i], primary) != -1) continue;
        call_other(secondary[i], "???");
        if(!(env = find_object(secondary[i]))) continue;
        do_yell(env, "You hear a voice yell from nearby.","");
    }
    return 1;
}
 
void do_yell(object env, string prompt, string str) {
    object *inv;
    int i, tmp;
 
    if(env == environment(this_player())) return;
    if(env->query_property("no shout")) return;
    for(i=0, tmp=(sizeof(inv=all_inventory(env))); i<tmp; i++) {
        if(!living(inv[i])) continue;
        if(inv[i] == this_player()) continue;
        if(inv[i]->query_ansi()) tell_object(inv[i], 
          (prompt)+str+"\n");
        else tell_object(inv[i], prompt+str+"\n");
    }
}
 
void help() {
    write("Syntax: <yell [message]>\n\n"
        "It yells a message to surrounding rooms.\n"
        "The sound does dissipate over distance, however.\n"
        "It also takes a bit of strength to do this.\n"
        "See also: say, whisper, emote, shout\n"
    );
}