dsI/bin/
dsI/extra/creremote/
dsI/extra/mingw/
dsI/extra/wolfpaw/
dsI/fluffos-2.7-ds2.018/
dsI/fluffos-2.7-ds2.018/ChangeLog.old/
dsI/fluffos-2.7-ds2.018/Win32/
dsI/fluffos-2.7-ds2.018/compat/
dsI/fluffos-2.7-ds2.018/compat/simuls/
dsI/fluffos-2.7-ds2.018/testsuite/
dsI/fluffos-2.7-ds2.018/testsuite/clone/
dsI/fluffos-2.7-ds2.018/testsuite/command/
dsI/fluffos-2.7-ds2.018/testsuite/data/
dsI/fluffos-2.7-ds2.018/testsuite/etc/
dsI/fluffos-2.7-ds2.018/testsuite/include/
dsI/fluffos-2.7-ds2.018/testsuite/inherit/
dsI/fluffos-2.7-ds2.018/testsuite/inherit/master/
dsI/fluffos-2.7-ds2.018/testsuite/log/
dsI/fluffos-2.7-ds2.018/testsuite/single/
dsI/fluffos-2.7-ds2.018/testsuite/single/tests/compiler/
dsI/fluffos-2.7-ds2.018/testsuite/single/tests/efuns/
dsI/fluffos-2.7-ds2.018/testsuite/single/tests/operators/
dsI/fluffos-2.7-ds2.018/testsuite/u/
dsI/fluffos-2.7-ds2.018/tmp/
dsI/lib/cfg/
dsI/lib/cmds/common/
dsI/lib/cmds/creators/include/
dsI/lib/cmds/creators/include/SCCS/
dsI/lib/daemon/services/
dsI/lib/doc/
dsI/lib/domains/Ylsrim/
dsI/lib/domains/Ylsrim/adm/
dsI/lib/domains/Ylsrim/armour/
dsI/lib/domains/Ylsrim/broken/
dsI/lib/domains/Ylsrim/fish/
dsI/lib/domains/Ylsrim/meal/
dsI/lib/domains/Ylsrim/npc/
dsI/lib/domains/Ylsrim/virtual/
dsI/lib/domains/Ylsrim/weapon/
dsI/lib/domains/default/creator/
dsI/lib/domains/default/etc/
dsI/lib/domains/default/room/
dsI/lib/lib/comp/
dsI/lib/lib/lvs/
dsI/lib/lib/user/
dsI/lib/lib/virtual/
dsI/lib/obj/
dsI/lib/obj/include/
dsI/lib/realms/
dsI/lib/save/kills/a/
dsI/lib/save/kills/b/
dsI/lib/save/kills/f/
dsI/lib/save/kills/m/
dsI/lib/save/kills/q/
dsI/lib/save/kills/r/
dsI/lib/secure/cfg/
dsI/lib/secure/cfg/classes/
dsI/lib/secure/cfg/races/SCCS/
dsI/lib/secure/cmds/creators/include/
dsI/lib/secure/cmds/players/
dsI/lib/secure/cmds/players/include/
dsI/lib/secure/daemon/include/
dsI/lib/secure/lib/
dsI/lib/secure/lib/include/
dsI/lib/secure/lib/net/
dsI/lib/secure/lib/net/include/
dsI/lib/secure/lib/std/
dsI/lib/secure/obj/
dsI/lib/secure/obj/include/
dsI/lib/secure/save/
dsI/lib/spells/
dsI/lib/verbs/admins/include/
dsI/lib/verbs/common/
dsI/lib/verbs/common/include/
dsI/lib/verbs/creators/
dsI/lib/verbs/creators/include/
dsI/lib/verbs/players/include/SCCS/
dsI/lib/verbs/rooms/
dsI/lib/verbs/rooms/include/
dsI/lib/www/
dsI/v22.2b14/
dsI/win32/
/*    /secure/cmds/admins/stupidemote.c
 *    From the Dead Souls V Object Library
 *    Adds lame emotes
 *    Created by Descartes of Borg 961214
 *    Version: @(#) stupidemote.c 1.4@(#)
 *    Last modified: 96/12/15
 */

#include <lib.h>
#include <daemons.h>

inherit LIB_DAEMON;

mixed cmd(string args) {
    string array rules = ({ "", "STR" });
    string array adverbs;
    string emote, xtra, prep;
    
    if( !args || args == "" ) {
	return "Add which emote?";
    }
    if( sscanf(args, "%s %s", emote, xtra) != 2 ) {
	emote = args;
	xtra = 0;
    }
    if( xtra ) {
	if( xtra == "LIV" || xtra == "LVS" ) {
	    prep = 0;
	}
	else {
	    string token;
	    
	    if( strlen(xtra) < 5 ) {
		return "The expression " + xtra + " makes no sense.";
	    }
	    prep = xtra[0..<5];
	    token = xtra[<3..];
	    if( member_array(prep, master()->parse_command_prepos_list()) ==
		-1 ) {
		return "The preposition " + prep + " is not a valid.";
	    }
	    if( member_array(token, ({ "LIV", "LVS" })) == -1 ) {
		return "The token " + token + " is invalid.";
	    }
	    rules = ({ rules..., token });
	}
	rules = ({ rules..., xtra, "STR " + xtra, xtra + " STR" });
    }
    else {
	prep = 0;
    }
    if( !SOUL_D->AddVerb(emote, capitalize(emote) + " how?") ) {
	previous_object()->eventPrint("Failed to create emote.");
	return 1;
    }
    foreach(string rule in rules) {
	string msg;
	
	if( rule == "" ) {
	    msg = "$agent_name $agent_verb.";
	    adverbs = 0;
	}
	else if( rule == "STR" ) {
	    msg = "$agent_name $agent_verb $adverb.";
	    adverbs = ({ "-" });
	}
	else if( rule == "LIV" || rule == "LVS" || rule == xtra ) {
	    if( prep ) {
		msg = "$agent_name $agent_verb " + prep + " $target_name.";
	    }
	    else {
		msg = "$agent_name $agent_verb $target_name.";
	    }
	}
	else {
	    if( prep ) {
		msg = "$agent_name $agent_verb $adverb " + prep +
		    " $target_name.";
	    }
	    else {
		msg = "$agent_name $agent_verb $target_name $adverb.";
	    }
	}
	if( adverbs ) {
	    SOUL_D->AddRule(emote, rule, ({ ({ emote }), msg }), adverbs);
	}
	else {
	    SOUL_D->AddRule(emote, rule, ({ ({ emote }), msg }));
	}
    }
    previous_object()->eventPrint("Stupid emote added.");
    return 1;
}

string GetHelp(string args) {
    return ("Syntax: <stupidemote EMOTE>\n"
	    "        <stupidemote EMOTE RULE>\n"
	    "This command allows you to add the most common kinds of "
	    "emote straight from the command line.  Using the first syntax, "
	    "You can add a simple, untargetted emote.  For example, "
	    "if you did <stupidemote cheese>, this would create an emote "
	    "that would allow people to do <cheese> and <cheese adverb> "
	    "with a message that looks like \"Descartes cheeses.\"\n"
	    "The second syntax is for targetted emotes.  You specify a "
	    "targetting rule.  Targetting rules can be one of the following:\n"
	    "\t* LIV\n"
	    "\t* LVS\n"
	    "\t* preposition LIV\n"
	    "\t* preposition LVS\n"
	    "The difference between LIV and LVS just determines whether the "
	    "emote can be targetted at a single living being or one or more "
	    "living beings.  So, to add the \"smile\" emote, you would "
	    "do:\n"
	    "> stupidemote smile at LVS\n"
	    "and that would give you all the functionality of the \"smile\" "
	    "emote that exists on this mudlib.\n\n"
	    "See also: addadverb, addemote, removeadverb, removeemote");
}