; tfrc
; startup definition file
; please do not remove the next line, it enables the additional
; Windows Specific Functionality for the GUI tools (only installed
; by the Windows Enhanced Build installer)
/require winlib.tf
; general
/set isize=3
/visual on
/redef on
; worlds
; Please make all of your manual edit changes below this line as tf-config
; will overwrite any changes above here.
; ----------------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; TFRC file for Gwen Morse, last modified: 06/30/03 ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Updated so all macros work under 4s1 and 5a11.
;;; Definitions that must come 'first'
/def -Fag -hREDEF gag_redef
/def -Fag -h'conflict' gag_conflict
/def -hload -Fag gag_load
;;; Enter the directories where you keep your tf files.
;;; Home directory if-else help from "Sizer"
;;; The if-else check is to see 'which' machine I am running TF on.
;;; I do this because I use TF on multiple machines and OS-es.
;;; That way, I can use one tfrc file on multiple machines.
;;;
;;; I make use of the "STATUS" definition in later macros to determine
;;; "which" machine I'm on.
/if (HOME=~"/home/goldmoon")\
/cd /home/goldmoon %;\
/set HOME=/home/goldmoon %;\
/def LOGDIR=/win/My Documents/Tinyfugue/logs %;\
/def LOCALLIBDIR=/win/My Documents/Tinyfugue/ %;\
/def LOGFILE=/win/My Documents/Tinyfugue/tiny.log %;\
/def DECDIR=/win/My Documents/Tinyfugue/decompile %;\
/set status=linbook %;\
/elseif (HOME=~"/home/morsej")\
/cd /home/morsej%;\
/set HOME=/home/morsej %;\
/def LOGDIR=/home/morsej/tf-logs %;\
/def LOCALLIBDIR=/home/morsej/locallib %;\
/def LOGFILE=/home/morsej/logs/tiny.log %;\
/def DECDIR=/home/morsej/tf-dec %;\
/set status=work %;\
/else \
/cd /cygdrive/e/MUSH/Tf/%;\
/def LOGDIR=/cygdrive/e/My Documents/Tinyfugue/logs %;\
/def LOCALLIBDIR=/cygdrive/e/MUSH/Tf/locallib %;\
/def LOGFILE=/cygdrive/e/MUSH/Tf/logs/tiny.log %;\
/set status=winbook %;\
/set DECDIR=/cygdrive/e/My Documents/Tinyfugue/decompile %;\
/endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; loading lib programs I like
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/require world-q.tf
/require spc-page.tf
/require kbstack.tf
/require complete.tf
/require textutil.tf
/def -F spelling=\
/if ({status}=~"winbook") \
/require complete.tf %;\
/else \
/require spell.tf %;\
/endif
/spelling
;; More space-page broken in 5a11.
;; As a short-term workaround you could try redefining pager like so:
/def -i pager = \
/dokey page%; \
/if (moresize() == 0) \
/purge -ib" "%; \
/endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; setting TF system defaults I like
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; /set TZ=EST5EDT
/set maildelay=0
/set oldslash=off
/set redef=on
/set isize=5
/set more=on
/set cleardone=on
/set quiet=on
/set visual=on
/set wrapspace=2
/set insert=on
/set histsize=25000
/set ptime=0
/def -f host_def = \
/quote /set hostname=!hostname
/host_def
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Special Logging Macros
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Put together from definitions by Andrew Mortimer and members of the
; Tinyfugue mailing list
; When I connect to a world, it starts logging (-w) to the file
; 'date_worldname.log', where date is in the format Year-Month-Day. For
; example: 1997-12-02_.log. It also writes the time the log starts in the file.
; This format keeps logs in date order in the directory.
;;; This version doesn't include the multi-machine 'status' check:
;; /def -Fp100 -h'connect' connect_log = \
;; /log -w ${LOGDIR}/$[ftime("%Y-%m-%d", time())]_${world_name}.log %;\
;; /eval /echo -ag -w${world_name} \
;; %========================================================================== %;\
;; /eval /echo -ag -w${world_name} \
;; %= Log for world *** ${world_name} ***, started $(/time %%c) %;\
;; /eval /echo -ag -w${world_name} \
;; %==========================================================================
;;; This version includes the multi-machine 'status' check:
/def -Fp100 -h'connect' connect_log = \
/if ({status}=~"work") \
/log -w ${LOGDIR}/$[ftime("%Y-%m-%d", time())]w_${world_name}.log %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/eval /echo -ag -w${world_name} \
%= Log for world *** ${world_name} ***, started $(/time %%c) %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/elseif ({status}=~"linbook") \
/log -w ${LOGDIR}/$[ftime("%Y-%m-%d", time())]_${world_name}.log %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/eval /echo -ag -w${world_name} \
%= Log for world *** ${world_name} ***, started $(/time %%c) %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/elseif ({status}=~"winbook") \
/log -w ${LOGDIR}/$[ftime("%Y-%m-%d", time())]_${world_name}.log %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/eval /echo -ag -w${world_name} \
%= Log for world *** ${world_name} ***, started $(/time %%c) %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/else \
/log -w ${LOGDIR}/$[ftime("%Y-%m-%d", time())]b_${world_name}.log %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/eval /echo -ag -w${world_name} \
%= Log for world *** ${world_name} ***, started $(/time %%c) %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/endif
; Lets /dc function like 'QUIT' to trigger the disconnect (needed to close the log)
; written by 'Brack '
/def -F -1ag -h'conflict' gagconflict
/def -Fiq dc = /if /@dc %*%; /then /trigger -hdisconnect %*%; /endif
; This lets you return to the special logging after shutting it off with /log off.
; Note, if the original special log was during the previous calendar 'day', then,
; /relog will start a new log!
;
; Syntax: '/relog'
/def -i -q relog = /connect_log
;This is the disconnect function, noting the time the log ended and closing the file.
/def -Fp100 -h'disconnect' disconnect_log = \
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/eval /echo -ag -w${world_name} \
%= Log for world *** ${world_name} ***, ended $(/time %%c) %;\
/eval /echo -ag -w${world_name} \
%============================================================================== %;\
/log -w${world_name} off
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; World.tf file info
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;;;;;;;;;;;;;;;;;;;;;
;; Sneaky world system
;; Pretend you have multiple computers you play from, and you have a character
;; (or characters) that you only want to be able to play from a specific account.
;; (Stealth RP!)
;; You can use a modified form of the below macro (coupled with the {status} macro
;; shown earlier) to only add world(s) when you're on the 'correct' account.
/def -F tsc=\
/if ({status}=~"winbox") \
/addworld -T"tiny.mush" tsc palemoon.com 9990 %;\
/else \
/endif
/tsc
;;;;;;;;;;;;;;;;;;;;
;;
;;
/addworld -T"tiny" NOWHERE nowhere guest guest localhost 9999
;;
;;;;;; IRC "Worlds"
/addworld -T"irc.irc" teambg irc.teambg.net 6667
/addworld -T"irc.irc" fwp irc.gamesnet.net 6667
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; hilite.tf file info
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Make pages, multipages, and whispers stand out
;;; Gwen: I like to make my pages/multipages/whispers that I send out hilighted
;;; also, not just the ones people send to me. To discriminate between them,
;;; I use the non-bold form of the color I use for the incoming communication
;;; of the same type. This mostly helps me visually seperate any remote
;;; conversation from action in my location.
;bold cyan color pages
/def -i -p2 -aBCcyan -t'* pages[,:] *' hl_page1
/def -i -p4 -aBCcyan -t'You sense that * is looking for you in *' hl_page2
/def -i -p4 -aBCcyan -t'From afar, *' hl_page3
/def -i -p2 -aCcyan -t'Long distance to *' hl_page4
/def -i -p2 -aCcyan -t'You paged *' hl_page5
;bold green multi-pages
/def -i -p3 -aBCgreen -t'* pages (*) *' hl_mpage1
/def -i -p5 -aBCgreen -mregexp -t"(multipages|multi-pages)" hl_mpage2
/def -i -p5 -aCgreen -mregexp -t"(multipage|multi-page)" hl_mpage3
/def -i -p6 -aBCgreen -t'(To: *)' hl_mpage4
/def -i -p4 -aCgreen -t'(To: *) Long Distance, *' hl_mpage5
/def -i -p5 -aCgreen -t'(To: *) * pages: *' hl_mpage6
;bold blue color whispers
/def -i -p2 -aBCblue -t'* whispers[,:] *' hl_whisper1
/def -i -p3 -aBCblue -t'You sense *' hl_whisper2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Full-line highlights (odds and ends)
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;When someone triggers a character @adesc (bold magenta)
/def -p5 -aBCmagenta -t'* looked at *.' hl_adesc
/def -p5 -aBCmagenta -t'* is looking at *.' hl_adesc2
;hilite Activity in bg worlds
/def -p2 -F -hACTIVITY -aBCwhite hl_activity
; Code
/def -p4 -aBCyellow -t' *' hl_ooc
;+watch code
/def -i -p5 -aBCgreen -t' *' hl_watch
;MUX 'game' messages
/def -i -p5 -F -aBCgreen -t'GAME:*' hl_watch2
;+finger pemits
/def -i -p5 -F -aBCgreen -t'* +fingered you.' hl_finger
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; "Partial" highlights of importance
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Channels
;Any '[ ]' or '>'
/def -i -p9 -P0BCred -F -t'\\[*\\]' tiny_sh1
/def -i -p8 -P0BCred -mregexp -F -t"^\\[.*\\]" tiny_sh2
/def -i -p8 -P0BCred -mregexp -F -t"^[A-Za-z0-9 _-]*>" tiny_sh3
/def -i -p7 -P0BCred -mregexp -F -t"^<.*> " tiny_sh4
; Warnings
/def -i -p3 -F -P1xBCred -t'(ALERT>)' par_alert
/def -i -p1 -P0BCred -F -t'^[^ ]+ >>' night_chan
; Table-talk conversation partially in white
/def -i -p7 -P0xBCwhite -t'^(At|In) (your|the) [^,:]*[,:]' par_place1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Gag lines
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Gags
/def -i -p3 -ag -mregexp -t"^You own a (floating|disconnected) room" floating_gag
/def -i -p3 -ag -t"*Saving your work*" savework_gag
/def -i -p3 -ag -t"START LOG NOW*" startlog_gag
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Odds and Ends (doesn't fit anywhere else)
;; What time people connect
/def -i -p10 -F -t'* has connected.' contime_trig = \
/send -w @pemit me=\[time()\]
/def -i -p10 -F -t'* has disconnected.' discontime_trig = \
/send -w @pemit me=\[time()\]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Auto-idler
/def idler=\
/if (world_info()!~"") \
/send -W @@ %;\
/repeat -0:6:00 1 /idler %;\
/endif%;\
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;----------------------------------------------------------------------
;;; TF stuff, by Tiercel/JBB, batzel at cceb.med.upenn.edu
;;;----------------------------------------------------------------------
;;; MUSHcode escaper. If you've typed a long line of code (or grabbed
;;; it with /fuguedit), you don't want to have to go through by hand to
;;; escape out all those characters MUSH will eat. Instead, with this
;;; loaded, just hit esc-e, and it escapes all the odd characters in
;;; what you've just typed (or /redit'd).
;;; RATING: **** (Very useful for heavy coders or for teaching people code)
/def -ib'^[e' = /test kbgoto(kblen() + 1) %;\
/grab $(/escape %%[]{}\ $[kbhead()])
/def -i -F eschelp = %;/echo%;/echo *** Tiercel's MUSHcode Escaper Help %;\
/echo If you've typed a long line of code (or grabbed it with Fuguedit), %;\
/echo you don't want to have to go through by hand to escape out all those %;\
/echo characters MUSH will eat. Instead, with this loaded, just hit esc-e, %;\
/echo and it escapes all the odd characters in the command line. %;\
/echo %;/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Status Field update
;;;
;;; Status_field default
;;; @more:8:Br :1 @world :1 @read:6 :1 @active:11 :1 @log:5 :1 @mail:6 :1 insert:6 :1 @clock:5
;;;
;;; and the corresponding format variables are:
;;;
;;; /set status_int_more \
;;; moresize() == 0 ? "" : \
;;; moresize() > 9999 ? "MuchMore" : \
;;; pad("More", 4, moresize(), 4)
;;; /set status_int_world ${world_name}
;;; /set status_int_read nread() ? "(Read)" : ""
;;; /set status_int_active nactive() ? pad("(Active:",0,nactive(),2,")") : ""
;;; /set status_int_log nlog() ? "(Log)" : ""
;;; /set status_int_mail \
;;; !nmail() ? "" : \
;;; nmail()==1 ? "(Mail)" : \
;;; pad("Mail", 0, nmail(), 2)
;;; /set status_var_insert insert ? "" : "(Over)"
;;; /set status_int_clock ftime("%I:%M", time())
;;;
;;; /set status_fields @more:8:Br :1 @world :1 @read:6 :1 @active:11 :1 @log:5 :1 insert:6 :1 @clock:12
;;; /set status_int_clock ftime("%I:%M %m/%d", time())
;;;
;;; My changes (Gwen Morse)
;;; 1) removed the @mail configuration (since I use Windoze)
;;; 2) reset the clock to show date in dd/mm format along with time.
;;; 3) updated status line to include Australia TZ information (based on help below)
;;;
;;; From: Craig Marsden (TF mailing list)
;;;
;;; Not very pleasant but this line displays the time in the UK (me), AT
;;; (time on the game) and MC is the timezone of a good friend of mine
;;; (Canada).
;;; The number is in seconds so its (hours from your timezone to another) * 60 * 60
;;; This may be incorrect 2 weeks out of 52, as different regions treat DST differently.
;;;
;;; (Gwen Note: Australia +15 hrs=+54000 || Australia +14 hours=+50400 || +16 hours +57600)
;;;
;;; /set status_int_clock strcat(ftime("%H:%M", time()), "__AT:", ftime("%H:%M", time()-18000), "__MC:", ftime("%H:%M", time()-14400))
;;; /def setstatus = /set status_fields = @more:8 "_Wd:":4 @world:5 "_UK:":4 @clock:25 @read:6 @active:11 @log:5 @mail:6 insert:6
;;;
;;; /set status_int_clock strcat(ftime("%I:%M%p", time()), " SW: ", ftime("%I:%M%p", time()+21600), " OZ: ", ftime("%I:%M%p", time()+54000))
;;; /set status_int_clock strcat(ftime("%I:%M%p", time()), " OZ: ", ftime("%I:%M%p", time()+57600))
;;; /set status_fields @more:8:Br :1 "Wd:":3 @world:5 :1 @read:6 :1 @active:11 :1 @log:5 :1 "_NY: ":5 @clock:32
;;; 5.0 update: New way to modify status field. The below code will give errors, but, does function. Look
;;; into updating it to work seamlessly.
/set status_int_clock strcat(ftime("%I:%M%p", time()), " _ OZ: ", ftime("%I:%M%p", time()+50400))
/set status_fields @more:8:Br :1 "Wd:":3 @world:5 :1 @read:6 :1 @active:11 :1 @log:5 :1 "_NY: ":5 @clock:21
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; IDE Highlighting
;;;
;;; I'm sure most of you have worked on a IDE that uses syntax highlighting if you're into
;;; any sort of coding at all, you all know how useful it can be. Of course, MUSHes didn't
;;; have that -- till now. If you paste the following into your .tfrc (for tinyfugue
;;; users; others probably will have to modify this code) and then do line joins if
;;; necessary, you'll get some form of syntax highlighting.
;;; Author: Kamikaze: http://www.imsa.edu/~kamikaze/
/def -p10 hilight_cmd = /def -PBCwhite -F -t"%1"
/def -p10 hilight_cmd2 = /def -PBCwhite -F -t"%1"
/def -p10 hilight_cmd3 = /def -PBCwhite -F -t"%1"
/def -p10 hilight_cmd4 = /def -PBCwhite -F -t"%1"
/def -p10 -F -PBCyellow -t'(\{|\})'
/def -p10 -F -PBCred -t'(\[|\])'
/def -p10 -F -PBCgreen -t'(\(|\))'
/def -p10 -F -PBCblue -t'(=|;|/|\%0|\%1|\%2|\%3|\%4|\%5|\%6|\%7|\%8|\%9|\%#|\%@|\%N)'
/def -p10 -F -PBCmagenta -t'(\%r|\%b|\%t|\%s|\%p|\%o|\%!|\%l)'
/def -p10 -F -PBCcyan -t'(\%q0|\%q1|\%q2|\%q3|\%q4|\%q5|\%q6|\%q7|\%q8|\%q9|\%Q0|\%Q1|\%Q2|\%Q3|\%Q4|\%Q5|\%Q6|\%Q7|\%Q8|\%Q9)'
/def -p10 -F -PBCmagenta -t'(,)'
/hilight_cmd (@@|@allhalt|@allquota|@atrchown|@atrlock|@attribute|@boot|@cemit|@channel|@chat|@chown)
/hilight_cmd (@chownall|@chzone|@chzoneall|@clock|@clone|@command|@config|@cpattr|@create|@dbck)
/hilight_cmd (@decompile|@destroy|@dig|@disable|@doing|@dolist|@drain|@dump|@edit|@elock|@emit|@enable)
/hilight_cmd (@entrances|@eunlock|@find|@firstexit|@fixdb|@force|@function|@gedit|@grep|@halt|@hide|@kick)
/hilight_cmd2 (@link|@listmotd|@list|@lock|@log|@mail|@map|@motd|@mvattr|@name|@newpassword|@notify|@nuke)
/hilight_cmd2 (@oemit|@open|@parent|@password|@pcreate|@pemit/list|@pemit|@poll|@poor|@power|@ps|@purge|@quota)
/hilight_cmd2 (@recycle|@rejectmotd|@remit|@restart|@rwall|@rwallemit|@rwallpose|@scan|@search|@select)
/hilight_cmd3 (@shutdown|@sitelock|@squota|@stats|@sweep|@switch|@tel|@teleport|@toad|@trigger|@ulock|@unlock)
/hilight_cmd3 (@undestroy|@unlink|@unlock|@unrecycle|@uptime|@uunlock|@verb|@version|@wait|@wall|@wallemit)
/hilight_cmd3 (@wallpose|@warnings|@wcheck|@wipe|@wizemit|@wizmotd|@wizpose|@wizwall|@zemit|@desc|@dol)
/hilight_cmd4 (@sel|@fo|@no|@listen|@lemit|@femit|@fpose|@fsay|@mudwho|@alias|@last|@robot|@readcache)
/hilight_cmd4 (@setq|@set)
; Hilite various Tiny-MUSH specific settings (dbrefs, flags, @'s, etc)
; written by Andrew Mortimer
/def -i -p1 -P0BCred -mregexp -F -t'#[0-9]+' tiny_dbrefnum
/def -i -p1 -P0BCred -mregexp -F -t'#-1' tiny_dbreferr
/def -i -p1 -P1BCred -mregexp -F -t'#[0-9]+([A-Za-z\$+&@]+( \[[^]]+\])?)' tiny_dbrefflag
/def -i -p1 -P0Cwhite -mregexp -F -t'@[A-Za-z_]+' tiny_atcomm
/def -i -p1 -P1Cwhite -mregexp -F -t'^([ ]*[^;()# ]+)(\\(#[0-9]+\\))?:.*' tiny_heads
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; defining Improved Fugue Edit command
;;;
;;; FROM: http://www.chaoticmux.org/~kareila/TF/
;;;
;;; FugueEdit macro (ed obj/attr)
;;; Probably the most common tf macro out there is one that will grab the text of
;;; an attribute into the input buffer for editing. The incarnation I was given required
;;; some softcode to implement, and the only tf-side code you had to define was the
;;; gag-trigger that got the input. This worked, but I was annoyed that I had to
;;; port this piece of softcode to every game I was on. So I recoded it to be
;;; defined entirely within tf. It uses the usual syntax: "/ed /".
;;;
;;; FugueEdit macro (ed obj/attr) coded by Kareila@ChaoticMUX
;;; based on mushcode that originated with van@TinyTIM
;;; and has mutated several times since then.
;;; Thanks to Gwen Morse for the incentive to make improvements. :)
;;;
;;; Gwen: works -- very nice! And, look, I get credit for "inspiring" improvements!
; edmarker can be anything you like - no spaces allowed.
/set edmarker TFEdit
/eval /def -p100 -ag -t'%{edmarker} > *' edtrig = /grab %%-2
/def ed = \
/if (regmatch('/',{*})) \
/let edobj %PL %; \
/let edattr %PR %; \
/def -n1 -t#* -q -ag tempedtrig = \
@pemit me = switch(%%*, \
#-1, I don't see that here., \
#-2, I don't know which one you mean!, \
%{edmarker} > &%{edattr} %{edobj} = \
[get(%%*/%{edattr})]) %; \
/send @pemit me = locate(me, %{edobj}, *) %; \
/else /echo %% %{edmarker}: ed argument must be of form / %; \
/endif
/def -h"send ed *" edhook = /ed %-1
/def ng = \
/if (regmatch('/',{*})) \
/echo %% %{edmarker}: ng argument must be a valid object name %; \
/else \
/def -n1 -t#* -q -ag tempngtrig = \
@pemit me = switch(%%*, \
#-1, I don't see that here., \
#-2, I don't know which one you mean!, \
%{edmarker} > @name %* = [translate(fullname(%%*))]) %; \
/send @pemit me = locate(me, %*, *) %; \
/endif
/def -h"send ng *" nghook = /ng %-1
/def lock = \
/if (regmatch('/',{*})) \
/let edobj %PL %; \
/let edattr %PR %; \
/def -n1 -t#* -q -ag templocktrig = \
@pemit me = switch(%%*, \
#-1, I don't see that here., \
#-2, I don't know which one you mean!, \
%{edmarker} > @lock/%{edattr} %{edobj} = \
[lock(%%*/%{edattr})]) %; \
/send @pemit me = locate(me, %{edobj}, *) %; \
/else \
/def -n1 -t#* -q -ag templocktrig = \
@pemit me = switch(%%*, \
#-1, I don't see that here., \
#-2, I don't know which one you mean!, \
%{edmarker} > @lock %* = [lock(%%*)]) %; \
/send @pemit me = locate(me, %*, *) %; \
/endif
/def -h"send lock *" lockhook = /lock %-1
/def edhelp = \
/echo -p @{h}ed /:@{n} \
edits the given attribute on the given object. %; \
/echo -p @{h}ng :@{n} \
grabs the name of the given object for editing. %; \
/echo -p @{h}lock [/]:@{n} \
edits the given lock (default lock if no type given).
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; FROM: http://www.chaoticmux.org/~kareila/TF/
;;; Macro for quickly cloning a copy of an object to a different mush
;;; without the need to log a @decompile. http://www.amtgard.com/~marvin/
;;; This is a useful macro I got from Pedersen's web page, which unfortunately
;;; appears to have bitten the proverbial dust since I snarfed it. It defines a macro,
;;; /clone, that can be used to quickly reproduce an object between worlds you
;;; are connected to, with no intermediate logfile.
;;;
/def clone = \
/def -t&* -p100 -q -ag -w%1 cloneitampertrig = /send -w%2 \%* %; \
/def -t@* -p100 -q -ag -w%1 cloneitattrig = /send -w%2 \%* %; \
/def -tCLONEDONE -p10 -q -ag -w%1 cloneitdone = /purge cloneit* %; \
/def -tCLONEDONE -p1000 -n1 -q -ag -w%1 cloneitgagfirst %; \
/send -w%1 OUTPUTSUFFIX CLONEDONE %; \
/send -w%1 @decompile %3 %; \
/send -w%1 OUTPUTSUFFIX %; \
/send -w%1 @pemit \%#=Object is now sent.
/def clonehelp = /echo -p @{u}Syntax:@{n} /clone