@create Commlink Parent @set Commlink Parent = LINK_OK @set Commlink Parent = SAFE @set Commlink Parent = HALT @set Commlink Parent = NO_COMMAND &ACTIVE Commlink Parent=0 @set Commlink Parent/ACTIVE=no_command @ADROP Commlink Parent=@ulock me=me;@name me=Commlink;@set me=no_command;@dolist lattr(me)=&## me;th cdb(d) @set Commlink Parent/ADROP=no_command @ASUCCESS Commlink Parent=@set me=!no_command;@ulock me=%#;@name me=name(%#)'s Commlink;&COMM_CHANDLE me=name(%#) @set Commlink Parent/ASUCCESS=no_command &CMD_CSTAT Commlink Parent=$CSTAT:th pemit(%#,if(v(active),u(FN_CSTAT),u(FN_OFF))) &CMD_ONOFF Commlink Parent=$^COMMLINK (on|off)$:th pemit(%#,switch(%1,on,if(v(active),ansi(hg,-) Your commlink is already on.,ansi(hg,-) You turn your commlink on[setq(0,cdb(a))][if(not(%q0), but it doesn't appear to be functioning properly)].[set(%!,ACTIVE:1)][oemit(%#,name(%!) beeps as %s turns it on.)]),off,if(v(active),ansi(hg,-) You turn your commlink off.[setq(0,cdb(d))][set(%!,ACTIVE:0)][oemit(%#,name(%!) beeps as %s turns it off.)],ansi(hr,-) Your commlink is already off.))) @set Commlink Parent/CMD_ONOFF=regexp &CMD_SETCDESC Commlink Parent=$^CDESC (1|2|3)=(.+)$:th pemit(%#,if(v(active),set(%!,COMM_CDESC%1:[setr(0,left(iter(%2,capstr(lcstr(##))),12))])[ansi(hg,-)] You set the descrption for slot [ansi(hy,%1)] to [ansi(hy,v(COMM_CDESC%1))].[u(FN_FIDDLE)],u(FN_OFF))) @set Commlink Parent/CMD_SETCDESC=regexp &CMD_SETDEFHANDLE Commlink Parent=$^CHANDLE DE.+=(.+)$:th pemit(%#,if(v(active),set(%!,COMM_CHANDLE:[setr(0,left(iter(%1,capstr(lcstr(##))),12))])[ansi(hg,-)] You set your default commlink handle to [ansi(hy,%q0)].[u(FN_FIDDLE)],u(FN_OFF))) @set Commlink Parent/CMD_SETDEFHANDLE=regexp &CMD_SETFREQ Commlink Parent=$^CFREQ (1|2|3)=([0-9]|[0-9]\.[0-9][0-9]|[0-9][0-9]|[0-9][0-9]\.[0-9][0-9]|[0-9][0-9][0-9]|[0-9][0-9][0-9]\.[0-9][0-9]|[0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9]\.[0-9][0-9])$:th pemit(%#,set(%!,COMM_FRQS:[replace(v(COMM_FRQS),%1,setr(0,round(%2,2)))])[ansi(hg,-)] You set the frequency for commlink slot [ansi(hy,%1)] to [ansi(hy,%q0)].[u(FN_FIDDLE)]) @set Commlink Parent/CMD_SETFREQ=regexp &CMD_SETHANDLE Commlink Parent=$^CHANDLE (1|2|3)=(.+)$:th pemit(%#,if(v(active),set(%!,COMM_CHANDLE%1:[setr(0,left(iter(%2,capstr(lcstr(##))),12))])[ansi(hg,-)] You set your handle for [ansi(hw,if(setr(1,v(COMM_CDESC%1)),%q1,slot %1))] to [ansi(hy,%q0)][u(FN_FIDDLE)],u(FN_OFF))) @set Commlink Parent/CMD_SETHANDLE=regexp &CMD_TRANSMIT Commlink Parent=$cl *:th if(v(active),if(match(%0,*=*),switch(setr(0,extract(v(COMM_FRQS),before(%0,=),1)),#-1*,U(FN_BADFREQ),,U(FN_BADFREQ), u(FN_TRANSMIT,%q0,after(%0,=))),u(FN_TRANSMIT,extract(v(COMM_FRQS),v(COMM_LASTSLOT),1),%0)),pemit(%#,u(FN_OFF)) &COMM_CDESC1 Commlink Parent=Hailing &COMM_CDESC2 Commlink Parent=Emergency &COMM_FRQS Commlink Parent=1.00 911.00 1000.00 &COMM_LASTSLOT Commlink Parent=1 @DESCRIBE Commlink Parent=You see a [ansi(hb,Fujitamatek 9000 Personal Commlink)]%r%r[ansi(hg,Operating Instructions)]%r%r[ljust(ansi(hc,Commlink ),27)]%r[ljust(ansi(hc,CSTAT),27)] View the current settings for your Commlink%r[ljust(ansi(hc,CL ),27)] Send a message over the default freq or the last freq you used.%r[ljust(ansi(hc,CL =),27)] Send a message over a specific frequency%r[ljust(ansi(hc,CHANDLE ),27)] Set your default commlink handle%r[ljust(ansi(hc,CHANDLE =),27)] Set your handle for a specific slot/frequency%r[ljust(ansi(hc,CDESC =),27)] Set a description for a specific frequency/slot%r @set Commlink Parent/DESCRIBE=no_command visual &EXECUTE Commlink Parent=if(u(FN_ACTIVE),pemit(lock(me/use),ansi(c,\[)[ansi(hw,if(setr(9,v(COMM_CDESC[member(v(COMM_FRQS),%1)])),%q9,%1))]:[ansi(hy,extract(%0,2,1,|))][ansi(c,\])] [last(%0,|)]))[if(not(match(%2,%!)),if(not(member(lcon(loc(lock(me/use))),first(%0,|))),oemit(lock(me/use),[name(%!)] chirps then you a hear a voice say\, "[last(%0,|)]")))] &FN_ACTIVE Commlink Parent=and(or(hastype(%#,THING),hasflag(%#,CONNECTED)),v(ACTIVE)) &FN_BADFREQ Commlink Parent=pemit(%#,ansi(hr,-) Invalid Frequency) &FN_CSTAT Commlink Parent=ansi(hb,.[repeat(-,55)].%r|)[center(ansi(hw,Commlink Status),55)][ansi(hb,|)]%r% [ansi(b,>[repeat(-,53)]<)]%r[ansi(hb,|)][ansi(hw,rjust(\[#\],4) [rjust(Freq,7)] % [ljust(Channel Desc,21)][ljust(Handle,20)])][ansi(hb,|)]%r% [ansi(b,>[repeat(-,53)]<)]%r[iter(v(COMM_FRQS),ansi(hb,|) \[#@\] [rjust(##,7)] % [ljust(if(setr(1,left(v(COMM_CDESC#@),19)),%q1,ansi(hx,-)),20)] [ljust(if(setr(1,left(v(COMM_CHANDLE#@),19)),%q1,v(COMM_CHANDLE)),20)][ansi(hb,|)],,%r)]%r[ansi(hb,|)][ansi(b,repeat(-,55))][ansi(hb,|)]%r[ansi(hb,`[repeat(-,55)]')] &FN_FIDDLE Commlink Parent=oemit(%#,name(%#) [switch(rand(3),0,fiddles with,1,adjusts,2,changes)] the settings on %p commlink.) &FN_HANDLE Commlink Parent=if(setr(5,v(COMM_CHANDLE[member(v(COMM_FRQS),%0)])),%q5,v(COMM_CHANDLE)) &FN_OFF Commlink Parent=ansi(hr,-) Your commlink is off. &FN_TRANSMIT Commlink Parent=cdb(transmit,%q0,v(maxrange),,%#|[u(FN_HANDLE,%0)]|[edit(%1,|,)])[set(%!,COMM_LASTSLOT:[member(v(COMM_FRQS),%0)])][oemit(%#,name(%#) taps %p commlink and says\, "%1")][pemit(%#,%%q0 is %q0)] &MAXRANGE Commlink Parent=500000