@q
@program oocpose.muf
1 9999 d
i

( oocpose.muf    v1.0    Jessy @ FurryMUCK    7/99
  
  A simple pose program that inserts a configurable string to indicate
  the gesture is made OOC. There is a companion program, oocsay.muf,
  to handle OOC statements.
  
  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 opose=_prefix:<<OOC>>
  opose waves!
  <<OOC>> Jessy waves!
  
  @set opose=_insert:<<OOC>>
  opose waves!
  <<OOC>> Jessy waves!
  
  @set opose=_suffix:<<OOC>>
  opose waves!
  Jessy waves! <<OOC>>
  
  USAGE:
  
  Type the command name followed by a pose string to make an OOC
  gesture.
  
  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 ourSet           (* bool: true if a configured OOC string is set *)
 
: DoHelp  (  --  )                             (* display help screen *)
  
  " " tell
  "oocpose.muf (#" prog intostr strcat ")" strcat tell " " tell
  
  "A simple pose program that inserts a string to indicate that "
  "gestures are made Out Of Character." strcat tell " " tell
  
  "SYNTAX: " command @ strcat " <pose>" strcat tell " " tell
  
  "CONFIGURATION: Wizards or the owner of the trigger action may "
  "set a prefix, insert, or suffix string that indicates gestures "
  "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 *)
    " " strcat ourTell  !
    1 ourSet !
  else
    pop "" ourTell !
  then
  
  ourTell @ me @ name strcat " " strcat ourTell !      (* insert name *) 
  
  trig "_insert" getpropstr dup if     (* insert suffix if configured *)
    ourTell @ swap strcat " "  strcat ourTell !
    1 ourSet !
  else
    pop
  then
  
  ourTell @
  ourText @ ",*" smatch 
  ourText @ "'*" smatch or if
    strip
  then
  ourText @ strcat ourTell !
  
  trig "_suffix" getpropstr dup if    (* insert suffix if configured *)
    ourTell @ " " strcat swap strcat ourTell !
    1 ourSet !
  else
    pop
  then
  
       (* insert default indicatore string if nothing was configured *)
  ourSet @ not if
    ourTell @ " [OOC]" strcat ourTell !
  then
  
  me @ location #-1 ourTell @ notify_except               (* display *)
;
.
c
q