Fun and GamesI used to spend a fair amount of time playing interactive online games. I played on TrekMUSE and TrekMUSH: Among The Stars. Both are, as you have probably guessed, based on a StarTrek® theme.
As I became more proficient in the language used by the MUSE engine which runs the TrekMUSE game, I gave a series of programming lectures to other players about it. I also put together an edited version of a discussion I had with one of the game directors about the parser. Another good source of information is this MUSE manual by Edward Wallace.
I have also started to play around with a MUX and a space engine in my spare time. The space engine is under the GNU General Public Licence, and I co-develop it with Cameron Smith, and feedback from the userbase.
If you play a fair amount on multi-user servers the TinyFugue client software is something you should take a look at if you run on a unix system. It is one of the most widely used clients, and has a powerful macro language, multiple session support, and logging capabilities.
I have put together a RedHat RPM of TinyFugue for x86 based PCs running Linux. It installs the client software as /usr/bin/tf and the library files into /usr/lib/tf-lib/*. The RPMS and SRPMS I have built for Redhat 7.2 are available.
The status line in TinyFugue's visual mode can be easily customized. For example, the following script is one I use. It is released under the GNU General Public Licence.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TF Tools
;;
;; TrekMush: Among the Stars Commands
;;
;; Released under the GNU Public License.
;; Copyright Mark Cooke, 1998. <mpc@star.sr.bham.ac.uk>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/def -wMFrl ShieldFreq= \
/eval /send -wMFrl shield freq $[strcat(rand(999),".",rand(999))]
/def -wMFrl WarpHop= \
/send -wMFrl warp 1 %; \
/def -wMFrl -t'[Speed now warp 1.000000]' -n1 -msimple = imp 1
/def -wMFrl -mregexp -t"You have ([0-9]+)/([0-9]+) Body, \
([0-9]+)/([0-9]+) Endurance, and ([0-9]+)/([0-9]+) Stun." ATS_Health= \
/set ats_body=%P1 %; \
/set ats_full_body=%P2 %; \
/set ats_endurance=%P3 %; \
/set ats_full_endurance=%P4 %; \
/set ats_stun=%P5 %; \
/set ats_full_stun=%P6 %; \
/test status_fields := status_fields
/def -wMFrl -msimple -t"Endurance fully recovered" ATS_Endurance_Rec= \
/set ats_endurance_hi=Ccyan %; \
/set ats_endurance=%ats_full_endurance
/def -wMFrl -msimple -t"Stun fully recovered" ATS_Stun_Rec= \
/set ats_stun_hi=Ccyan %; \
/set ats_stun=%ats_full_stun
/def -p5 -h"WORLD MFrl" ATS_Activation_Hook= \
/eval /set status_fields=%ATS_Status_Bar %; \
/test status_fields := status_fields
/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) days ([0-9]*) hrs \
([0-9]*) min ([0-9]*) .*' ATS_ETA_D= \
/let hours=$[%P1 * 24 + %P2] %; \
/IF (%hours > 99) \
/let hours=99 %; \
/let minutes=59 %; \
/ENDIF %; \
/set ats_eta=$[substr(strcat("0",%hours),-2)]:\
$[substr(strcat("0",%P3),-2)] %; \
/IF (ATS_Eta_Update =~ "Yes") \
/kill %ATS_Eta_pid %; \
/ENDIF %; \
/set ATS_Eta_Update=Yes %; \
/eval /repeat -$[%P2 + 60] 1 /ATS_Track_Eta %; \
/set ATS_Eta_pid=%?
/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) hrs ([0-9]*) min ([0-9]*) .*' ATS_ETA_H= \
/set ats_eta=$[substr(strcat("0",%P1),-2)]:$[substr(strcat("0",%P2),-2)] %; \
/IF (ATS_Eta_Update =~ "Yes") \
/kill %ATS_Eta_pid %; \
/ENDIF %; \
/set ATS_Eta_Update=Yes %; \
/eval /repeat -$[%P2 + 60] 1 /ATS_Track_Eta %; \
/set ATS_Eta_pid=%?
/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) min ([0-9]*) .*' ATS_ETA_M= \
/set ats_eta=00:$[substr(strcat("0",%P1),-2)] %; \
/IF (ATS_Eta_Update =~ "Yes") \
/kill %ATS_Eta_pid %; \
/ENDIF %; \
/set ATS_Eta_Update=Yes %; \
/eval /repeat -$[%P2 + 60] 1 /ATS_Track_Eta %; \
/set ATS_Eta_pid=%?
/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) sec.*' ATS_ETA_S= \
/IF (ATS_Eta_Update =~ "Yes") \
/kill %ATS_Eta_pid %; \
/ENDIF %; \
/set ats_eta=00:00 %; \
/set ATS_Eta_Update=Yes %; \
/eval /repeat -$[%P2] 1 /ATS_Track_Eta %; \
/set ATS_Eta_pid=%?
/def -wMFrl ATS_Track_Eta= \
/let hours=$[substr(%ats_eta,0,2)] %; \
/let minutes=$[substr(%ats_eta,3)] %; \
/IF (%minutes > 1) \
/let minutes=$[%minutes - 1] %; \
/ELSE \
/let minutes=59 %; \
/let hours=$[%hours - 1] %; \
/ENDIF %; \
/IF (0 > %hours) \
/let hours=0 %; \
/let minutes=0 %; \
/set ATS_Eta_Update=No %; \
/beep %; \
/ENDIF %; \
/set ats_eta=$[substr(strcat("0",%hours),-2)]:\
$[substr(strcat("0",%minutes),-2)] %; \
/IF (%ATS_Eta_Update =~ "Yes") \
/eval /repeat -60 1 /ATS_Track_Eta %; \
/set ATS_Eta_pid=%? %; \
/ENDIF
/set ATS_Status_Bar=@more:8:Br "_H2H(":5 ats_body:2:%ats_body_hi ":":1 \
ats_endurance:2:%ats_endurance_hi ":":1 ats_stun:2:%ats_stun_hi \
")_ETA(":6 ats_eta:5:Ccyan ")":2 @world :1 @active:11 :1 @clock:5
/set ATS_Eta_Update=No
/set ATS_Combat=No
/set ats_body=10
/set ats_endurance=26
/set ats_stun=26
/set ats_full_body=10
/set ats_full_endurance=26
/set ats_full_stun=26
/set ats_body_hi=Ccyan
/set ats_endurance_hi=Ccyan
/set ats_stun_hi=Ccyan
/set ats_eta=00:00
StarTrek® is a registered trademark of Paramount Pictures, a Viacom company.