@q
@program oocsay.muf
1 9999 d
i
( oocsay.muf v1.0 Jessy @ FurryMUCK 7/99
A simple say program that inserts a configurable string to indicate
the statement is made OOC. There is a companion program, oocpose.muf,
to handle OOC poses.
INSTALLATION:
Link a global action to the program. No macros or libraries are
required.
CONFIGURATION:
A wizard or the owner of the program may set either a prefix, insert,
or suffix that indicates a statement is OOC, by setting props
_prefix, _insert, or _suffix on the trigger. The default is a suffix
of [OOC].
EXAMPLES:
@set osay=_prefix:<<OOC>>
osay Hiya!
<<OOC>> You say, "Hiya!"
<<OOC>> Jessy says, "Hiya!"
@set osay=_insert:<<OOC>>
osay Hiya!
You <<OOC>> say, "Hiya!"
Jessy <<OOC>> says, "Hiya!"
@set osay=_suffix:<<OOC>>
osay "Hiya!"
You say, "Hiya!" <<OOC>>
Jessy says, "Hiya!" <<OOC>>
USAGE:
Type the command name followed by a message string to make an OOC
statement.
This program may be freely ported. Please comment any changes.
)
(2345678901234567890123456789012345678901234567890123456789012345678901)
$define tell me @ swap notify $enddef
lvar ourText (* str: original message string *)
lvar ourTell (* str: message formatted to display to user *)
lvar ourOTell (* str: message formatted to display to others in room *)
lvar ourSet (* bool: true if a configured OOC string is set *)
: DoHelp ( -- ) (* display help screen *)
" " tell
"oocsay.muf (#" prog intostr strcat ")" strcat tell " " tell
"A simple tell program that inserts a string to indicate that "
"statements are made Out Of Character." strcat tell " " tell
"SYNTAX: " command @ strcat " <message>" strcat tell " " tell
"CONFIGURATION: Wizards or the owner of the trigger action may "
"set a prefix, insert, or suffix string that indicates statements "
"are made OOC. Prefixes are put before the message string; inserts "
"appear immediately after the speaker's name; suffixes follow the "
"message string. Set prop _prefix, _insert, or _suffix, respectively, "
"on the trigger to configure these. The default is a suffix of [OOC]."
strcat strcat strcat strcat strcat tell
;
: main
"me" match me ! (* block identity spoofing *)
dup if
"#help" over stringpfx if
DoHelp exit
then
ourText !
else (* bail out for null messages *)
exit
then
trig "_prefix" getpropstr dup if (* insert prefix if configured *)
dup
" " strcat ourTell !
" " strcat ourOTell !
1 ourSet !
else
pop "" "" ourTell ! ourOTell !
then
ourTell @ "You " strcat ourTell ! (* insert name and 'You' *)
ourOTell @ me @ name strcat " " strcat ourOTell !
trig "_insert" getpropstr dup if (* insert suffix if configured *)
dup
ourTell @ swap strcat "say, \"" strcat ourTell !
ourOTell @ swap strcat "says, \"" strcat ourOTell !
1 ourSet !
else
pop
ourTell @ "say, \"" strcat ourTell !
ourOTell @ "says, \"" strcat ourOTell !
then
(* insert trailing quote *)
ourTell @ ourText @ strcat "\"" strcat ourTell !
ourOTell @ ourText @ strcat "\"" strcat ourOTell !
trig "_suffix" getpropstr dup if (* insert suffix if configured *)
dup
ourTell @ " " strcat swap strcat ourTell !
ourOTell @ " " strcat swap strcat ourOTell !
1 ourSet !
else
pop
then
(* insert default indicatore string if nothing was configured *)
ourSet @ not if
ourTell @ " [OOC]" strcat ourTell !
ourOTell @ " [OOC]" strcat ourOTell !
then
me @ ourTell @ notify (* display to user *)
(* display to others in room *)
me @ location me @ ourOTell @ notify_except
;
.
c
q