Social Shortcuts Feature (#452)(an instance of Generic Feature Object made by genna)Go to location of this object, Features Feature Object. HELP MANUAL:      Commands that emote for you, much like those on Diku-Muds.";      ";      Examples: laugh (alone)";      laugh bob (victim)";       laugh me (self)";       laugh everything (everything in room)";      laugh everyone (all players in room)";      ";      If you don't like the messages for a verb, create a property on yourself";       with the verb's name and load it in this format...";      ";      line 1: Told to player when used alone.";      line 2: Announced to room when used alone.";      line 3: Told to player when used with victim.";      line 4: Told to victim.";      line 5: Annouced to room when used with victim.";      line 6: Told to player when used on self.";      line 7: Announced to room when used on self.";      ";       Messages are run through pronoun_sub, with you as visitor and victim as $nothing.";       Look at #452.social (or any of its other properties) for an example.";       This verb may NOT be called without using it as a Feature. If you want to use it without going through Features, call the techie verb #452:_social() in the format #452:(\"_\"+socialverbname)(victim || list of victims || $no_one)";      If you're calling without a victim, send $no_one.";      ";      Note: When yo use ` VERB SOURCE CODE: _social _smirk _hug _comfort _wink _yawn _wave _cackle _giggle _cry _poke _shrug _blush _cringe _nod _grin _smile _laugh _sigh _chuckle _kiss _french _bow:
":_social(victim | list of victims | $no_one if no victim[, social-verb])";
"The first arg should be a single objnum or a list of objnums or $no_one if there
is no victim.";
"The second arg should be wave or wink or yawn or one of the other current social
verbs. The second arg is optional. you can just call the verb with the verbname
\"_\"+action instead.";
if (!valid(caller))
return;
endif
where = player.location;
victim = args[1];
verb = (length(args) == 2) ? args[2] | verb;
whose = $object_utils:has_property(player, verb) ? player | this;
this.custom = setadd(this.custom, player);
if (length(emote = whose.(verb)) < 7)
overb = (verb[l = length(verb)] == "y") ? tostr(verb[1..l - 1], "ies") | tostr(verb,
"s");
emote = {tostr("You ", verb, "."), tostr("%n ", overb, "."), tostr("You ", verb,
" at %d."), tostr("%n ", overb, " at you."), tostr("%n ", overb, " at %d."), tostr("You
", verb, " at yourself."), tostr("%n", overb, " at %r.")};
endif
if (victim == $no_one)
player:tell($string_utils:pronoun_sub(emote[1], player, victim));
where:announce($string_utils:pronoun_sub(emote[2], player, victim));
elseif ((typeof(victim) == OBJ) && (victim.location != player.location))
player:tell(victim.name, " isn't here.");
elseif (victim == player)
player:tell($string_utils:pronoun_sub(emote[6], player, victim));
where:announce($string_utils:pronoun_sub(emote[7], player, victim));
elseif (typeof(victim) == OBJ)
player:tell($string_utils:pronoun_sub(emote[3], player, player, where, victim));
victim:tell($string_utils:pronoun_sub(emote[4], player, player, where, victim));
where:announce_all_but({player, victim}, $string_utils:pronoun_sub(emote[5],
player, player, where, victim));
else
player:tell(#452:super_sub(emote[3], player, player, player, where, victim));
where:announce_all_but({player, @victim}, #452:super_sub(emote[5], $no_one, player,
player, where, victim));
for v in (victim)
$command_utils:suspend_if_needed(0);
v:tell(#452:super_sub(emote[5], v, player, player, where, victim));
endfor
endif
if ($object_utils:has_verb(where, "notify_social"))
where:notify_social(verb, victim);
endif
.
super_sub:
"Pronoun (and other things) substitution. See 'help pronouns' for details.";
"The main advantage of :super_sub() is that any of the objects can be a list and
by defining the listener (second arg), all references to the listener are used with
$You.";
"set_task_perms($no_one);";
if (typeof(args[1]) == LIST)
nargs = listdelete(args, 1);
plines = {};
"syntax: #452:super_sub(text[,listener[,who[,thing[,location[,dobj[,iobj]]]]])";
"%s,%o,%p,%q,%r =>
social comfort wink yawn wave cackle giggle cry poke shrug blush cringe smirk nod grin smile laugh sigh chuckle hug kiss french bow: "Commands that emote for you, much like those on Diku-Muds."; ""; "Examples: laugh (alone)"; " laugh bob (victim)"; " laugh me (self)"; " laugh everything (everything in room)"; " laugh everyone (all players in room)"; ""; "If you don't like the messages for a verb, create a property on yourself"; " with the verb's name and load it in this format..."; ""; "line 1: Told to player when used alone."; "line 2: Announced to room when used alone."; "line 3: Told to player when used with victim."; "line 4: Told to victim."; "line 5: Annouced to room when used with victim."; "line 6: Told to player when used on self."; "line 7: Announced to room when used on self."; ""; " Messages are run through pronoun_sub, with you as %n and victim as %d."; " Look at #452.social (or any of its other properties) for an example."; " This verb may NOT be called without using it as a Feature. If you want to use it without going through Features, call the techie verb #452:_social() in the format #452:(\"_\"+socialverbname)(victim || list of victims || $no_one)"; " If you're calling without a victim, send $no_one."; ""; "Note: When you use ` PROPERTY DATA:       custom       comfort       wink       wave       cackle       sigh       chuckle       hug       kiss       french       smirk       trusted       grin       smile       laugh       yawn       cringe       giggle       poke       cry       bow       social       nod       blush       shrug |