@program #3221 1 1000 d i $include $lib/alynna $include $lib/lmgr $include $muf/cp-mv2 $def VIXENSAY VIXEN "shipcom " rot mpime dup if strcat force else pop pop pop then $def DIRS { "Special" "Jobs" "Caps" } array_make $def here me @ location $define SHIPNAME dup location "/~vixen/name" envprop swap pop dup not if pop "/~vixen/name" envprop swap pop dup not if pop "None" then else swap pop then $enddef $define MYSHIPNAME "/~vixen/name" getprop dup not if pop "None" then $enddef $def SHIPPROP "/~vixen/" swap SHIPNAME "/" strcat strcat $def MYSHIPPROP "/~vixen/" swap MYSHIPNAME "/" strcat strcat $def VIXTELL "Vixen" pretty tellme $def VIXOTELL "Vixen" pretty tellhere $def VIXEN "$vixen" match $def HELP "$vixendb" match $def LSEDIT "lsedit" match getlink $def VIXENVER version "(" split dup strlen -- strcut pop swap pop "" "ProtoMUCK" subst lvar param lvar param2 lvar param3 lvar param4 : properaction { "lib;lib/add;lib/ed;lib/del;lib/mv;" "lib/prot;lib/classify;" (ship library) "rep;var;check;" (db functions) "roster;vx;" (roster & vx ) "+vix;+vixs;+vixi;+vixf;+vixd;+vixo;" (vixen db set) "vixen/install;vixen/mvprops;" ( installer ) "look around;loo around;lo around;l around;" (look around ) "crew/set;crew/del;" ( crew tools ) "vixenaction" ( end action ) }cat ; : seek-the-lite ( -- d ) var result me @ location "/@lite/general/vehicle" envprop pop result ! result @ int 0 < if me @ location result ! begin result @ location "$lite/parents/ship" match dbcmp if break else result @ location result ! then result @ #-1 dbcmp until then result @ ; : lite2shipvars 0 sleep ; : vixencron var item var value var item2 var value2 var sysheart { "VIXEN BIOS " vixenver }cat VIXENSAY "VIXEN ready." VIXENSAY "VIXEN Cron daemon 1.7, started, pulsetime 1.0 furry minutes." VIXENSAY begin ( increment the cron daemon ) VIXEN "/_cron" over over getpropval 1 + dup sysheart ! setprop ( what announcements exist ) VIXEN "/_acron/" array_get_propdirs foreach item ! pop ( if sysheart mod propqueue = 0 ) sysheart @ item @ atoi % not if ( run the specified propqueue ) VIXEN "/_acron/" item @ "/" strcat strcat array_get_propvals foreach value2 ! item2 ! value2 @ VIXENSAY repeat then repeat ( what propqueues exist ) VIXEN "/_cron" array_get_propvals foreach value ! item ! ( if sysheart mod propqueue = 0 ) sysheart @ item @ atoi % not if ( run the specified propqueue ) prog "/_cron/" item @ "/" VIXEN "MUFCron" propqueue then repeat 60 sleep repeat ; : getvix ( d s -- ? ) "ds" checkargs over SHIPPROP swap strcat getprop ; PUBLIC getvix : envvix ( d s -- ? ) "ds" checkargs over SHIPPROP swap strcat envprop swap pop ; PUBLIC envvix : setvix ( d s ? -- ) "ds?" checkargs swap 3 pick SHIPPROP swap strcat swap setprop ; PUBLIC setvix : mygetvix ( d s -- ? ) "ds" checkargs over MYSHIPPROP swap strcat getprop ; PUBLIC mygetvix : myenvvix ( d s -- ? ) "ds" checkargs over MYSHIPPROP swap strcat envprop swap pop ; PUBLIC myenvvix : mysetvix ( d s ? -- ) "ds?" checkargs swap 3 pick MYSHIPPROP swap strcat swap setprop ; PUBLIC mysetvix : getvixmpi ( d s -- ? ) "ds" checkargs over SHIPPROP swap strcat getpropstr ; : envvixmpi ( d s -- ? ) "ds" checkargs over SHIPPROP swap strcat envpropstr swap pop ; : setvixmpi ( d s ? -- ) "ds?" checkargs swap 3 pick SHIPPROP swap strcat swap setprop ; : mygetvixmpi ( d s -- ? ) "ds" checkargs over MYSHIPPROP swap strcat getpropstr ; : myenvvixmpi ( d s -- ? ) "ds" checkargs over MYSHIPPROP swap strcat envpropstr swap pop ; : mysetvixmpi ( d s ? -- ) "ds?" checkargs swap 3 pick MYSHIPPROP swap strcat swap setprop ; : islevel? ( d i -- b ) swap "rank" getvix swap > ; PUBLIC islevel? : iscommand? ( d -- b ) dup "rank" getvix 16 >= swap #170 dbcmp or ; PUBLIC iscommand? : levlock ( i -- b ) me @ swap islevel? if "1" else "0" then ; : commandlock ( -- b ) me @ iscommand? if "1" else "0" then ; : prover ( s -- ) var target var targetdir var value var tmp var obj param @ not if "Invalid syntax, rep " "VIXEN" pretty tellme exit then param @ target ! 0 targetdir ! me @ me @ SHIPPROP target @ strcat getprop value ! value @ not if me @ me @ SHIPPROP array_get_propdirs DIRS array_union foreach tmp ! me @ me @ SHIPPROP tmp @ "/" target @ strcat strcat strcat getprop dup if value ! tmp @ targetdir ! else pop then repeat then value @ if { "^RED^VIXEN^NORMAL^: Database lookup confirms that ^CYAN^" target @ "^NORMAL^ " "is set on ^YELLOW^" me @ "^NORMAL^ with a value of ^GREEN^" value @ "^NORMAL^" value @ int? if value @ 16777215 > if " (^YELLOW^Date value: " "%X %x" value @ timefmt ", " systime value @ - timex " ago^NORMAL^)" then then "." targetdir @ if " [Found in: " targetdir @ "]" then }cat tellhere else { "^RED^VIXEN^NORMAL^: Database lookup confirms that ^CYAN^" target @ "^NORMAL^ is ^RED^NOT^NORMAL^ set on ^YELLOW^" me @ "^NORMAL^." }cat tellhere then ; : varshow ( s -- ) var target var targetdir var value var tmp param @ not if "Invalid syntax, var " "VIXEN" pretty tellme exit then param @ target ! here target @ envvix value ! value @ if { "^RED^VIXEN^NORMAL^: Database lookup confirms that ^CYAN^" target @ "^NORMAL^" " is set with a value of ^GREEN^" value @ "^NORMAL^" value @ int? if value @ 16777215 > if " (^YELLOW^Date value: " "%X %x" value @ timefmt ", " systime value @ - timex " ago^NORMAL^)" then then "." targetdir @ if " [Found in: " targetdir @ "]" then }cat tellhere else { "^RED^VIXEN^NORMAL^: Database lookup confirms that ^CYAN^" target @ "^NORMAL^ is ^RED^NOT^NORMAL^ set." }cat tellhere then ; : varshow2 ( s -- ) var target var targetdir var value var tmp var obj me @ iscommand? not if "^RED^Permission denied.^NORMAL^" tellme exit then param @ not if "Invalid syntax, check =" "VIXEN" pretty tellme exit then param @ "=" instr not if "Invalid syntax, check =" "VIXEN" pretty tellme exit then param @ "=" split target ! resolve obj ! obj @ int 0 < if "Target not found or ambiguous." "Vixen" pretty tellme exit then obj @ target @ getvix value ! value @ if { "^RED^VIXEN^NORMAL^: Database lookup confirms that ^CYAN^" target @ "^NORMAL^ " "is set with a value of ^GREEN^" value @ "^NORMAL^" value @ int? if value @ 16777215 > if " (^YELLOW^Date value: " "%X %x" value @ timefmt ", " systime value @ - timex " ago^NORMAL^)" then then " on ^YELLOW^" obj @ "^NORMAL^" "." targetdir @ if " [Found in: " targetdir @ "]" then }cat tellme else { "^RED^VIXEN^NORMAL^: Database lookup confirms that ^CYAN^" target @ "^NORMAL^ is ^RED^NOT^NORMAL^ set on " obj @ "." }cat tellme then ; : vixsay param @ mpime vixensay ; : mvprops var target me @ mlevel 7 < if "Call a W3 or better to do this please." vixotell exit then 2 dbtop int 1 - 1 for dbref target ! target @ param @ propdir? if target @ param @ target @ SHIPPROP mv-prop pop { "Moved props in tailpain rename for " target @ unparseobj }cat vixotell then repeat "Done, yerf." vixotell ; : payroll var target var item var value #2 nextplayer target ! begin target @ MYSHIPNAME if target @ "rank" mygetvix if target @ awake? if target @ "lastpaid" mygetvix toint 86400 + systime < if target @ "rank" mygetvix 3 * value ! target @ { "You get paid ^GREEN^" value @ "^NORMAL^ from your service for " target @ MYSHIPNAME "." }cat "Payroll" pretty ansi_notify target @ value @ addpennies target @ "lastpaid" systime mysetvix then then then then target @ nextplayer target ! target @ int 0 < until ; : roster var target var item var value "Crew Roster" header tellme #2 nextplayer target ! begin target @ "rank" getvix if { "^GREEN^" target @ name 20 lj "^CYAN^" target @ "duty" getvix tostr 25 lj "^PURPLE^" target @ "sdf" getvix tostr 25 lj "^YELLOW^" target @ "rank" getvix tostr 8 rj "^NORMAL^" }cat tellme then target @ nextplayer target ! target @ int 0 < until "VIXEN v1.0" footer tellme ; : installer var shipenv var puppet var shipdb var action "VIXEN Sentient Installer and Upgrader.. By Alynna Trypnotk the Foxy Fox" vixotell "Begin fenneky install..." vixotell ( MUF defs ) "Installing MUF defs.." vixotell prog "_defs/getvix" { "#" prog int " \"getvix\" call" }cat setprop prog "_defs/setvix" { "#" prog int " \"setvix\" call" }cat setprop prog "_defs/envvix" { "#" prog int " \"envvix\" call" }cat setprop prog "_defs/mygetvix" { "#" prog int " \"mygetvix\" call" }cat setprop prog "_defs/mysetvix" { "#" prog int " \"mysetvix\" call" }cat setprop prog "_defs/myenvvix" { "#" prog int " \"myenvvix\" call" }cat setprop prog "_defs/iscommand?" { "#" prog int " \"iscommand?\" call" }cat setprop prog "_defs/islevel?" { "#" prog int " \"islevel?\" call" }cat setprop "I just installed the MUF defines: getvix setvix envvix mygetvix mysetvix myenvvix iscommand? islevel" vixotell ( Find the environment, Luke ) "Seeking the environment of your ship.." vixotell seek-the-lite shipenv ! shipenv @ int 0 < if "Waaaah!!! I couldnt find your ship environment!" vixotell "Assuming not a ship and installing on this room!" vixotell me @ location shipenv ! then { "Sought and found a likely ship environment at " shipenv @ unparseobj }cat vixotell ( register this library, Luke ) "I'm looking for my programming, gee, I know where that is..." vixotell shipenv @ "_reg/lib/vixen" prog int setprop "Registered myself on your ships environment as $lib/vixen" vixotell ( Name the ship, Luke ) shipenv @ "/~vixen/name" getprop if "Your ship is already named, so I wont ask what it is" vixotell "and I will safely assume this is an upgrade." vixotell else "Now, I need to know the name of your ship so I can" vixotell "differentiate my database from other ships. Choose" vixotell "wisely, as its a pain in my tails to change names:" vixotell shipenv @ "/~vixen/name" read setprop then { "The name of the ship is " shipenv @ "/~vixen/name" getprop }cat vixotell ( Find and yiff the vixen, Luke.. ) "I'm looking for myself, yerf, i'm onna spirit quest.." vixotell "$vixen" match puppet ! puppet @ int 0 < if "Aww, crap.. I could not find the VIXEN object!" vixotell "So... I'm making one.. cause I exist, honest.." vixotell me @ "VIXEN" newobject puppet ! { "And here it is, all nice and shiny.. " puppet @ unparseobj }cat vixotell puppet @ shipenv @ moveto puppet @ shipenv @ setlink { "And " puppet @ unparseobj " was linked" }cat vixotell "to the ships environment, put it elsewhere if you want.." }cat vixotell shipenv @ "_reg/vixen" puppet @ setprop "I just registered myself on your ship's environment as $vixen" vixotell "I am now raiding your refrigerator and you cant stop me cause I'm cute." vixotell else { "I identified my VIXEN object as " puppet @ unparseobj "." }cat vixotell shipenv @ "_reg/vixen" puppet @ setprop "I just registered myself on your ship's environment as $vixen" vixotell "I am now raiding your refrigerator and you cant stop me cause I'm cute." vixotell then ( Get her hard drive in.. ) "I'm looking for my hard drive..." vixotell "$vixendb" match shipdb ! shipdb @ int 0 < if "Aww, crap.. I could not find my hard drive!" vixotell "So... I'm making one.. because i'm bad.. mmm.." vixotell me @ "VIXENDB" newobject shipdb ! { "And here it is, all nice and fenneky.. " puppet @ unparseobj }cat vixotell shipdb @ shipenv @ moveto shipdb @ shipenv @ setlink { "And " shipdb @ unparseobj " was linked" }cat vixotell "to the ships environment, just like me.." }cat vixotell shipenv @ "_reg/vixendb" shipdb @ setprop "I just registered my database on your ship's environment as $vixendb" vixotell "Now I will be able to remember all this stuff for you" vixotell else { "I identified my database object as " shipdb @ unparseobj "." }cat vixotell shipenv @ "_reg/vixendb" shipdb @ setprop "I just registered my database on your ship's environment as $vixendb" vixotell "Now I will be able to remember all this stuff for you" vixotell then ( now for standard action ) "I'm looking for my actions..." vixotell shipenv @ "vixenaction" rmatch action ! action @ exit? not if "I couldnt find the vixen action! If theres no vixen action," vixotell "you wont be able to do anything with me! So i'm making some.." vixotell shipenv @ properaction newexit action ! action @ prog setlink "I created a vixen action in your ships environment. Yerf." vixotell "I also linked it to me, mmhmm.." vixotell else "I found a vixen action.. but lets see if its good.." vixotell action @ location shipenv @ dbcmp not if "Yip!! Its not on your ship's environment! I'm ignoring that one " vixotell "and making one on your environment..." vixotell shipenv @ properaction newexit action ! action @ prog setlink "I created a vixen action in your ships environment. Yerf." vixotell "I also linked it to me, mmhmm.." vixotell then action @ name properaction stringcmp if "Yip!! It doesnt seem to have an up to date name! I am renaming" vixotell "the action to make sure all the commands are covered.." vixotell action @ properaction setname "The new name is:" vixotell properaction vixotell then action @ getlink prog dbcmp not if "Yip!! Its linked to something other than me!! I'm going" vixotell "to set this disobedient action back to me." vixotell action @ prog setlink "And I just did." vixotell then then ( msgmacs section ) "Now I am setting up a few MPI macros..." vixotell shipenv @ "/_msgmacs/commandlock" { "{muf:#" prog int ",commandlock}" }cat shipenv @ "/_msgmacs/levlock" { "{muf:#" prog int ",commandlock}" }cat shipenv @ "/_msgmacs/getvix" { "{muf:#" prog int ",envvix~:~{:1}{if:{:2},~:~{:2}}}" }cat shipenv @ "/_msgmacs/getvix!" { "{muf:#" prog int ",getvix~:~{:1}{if:{:2},~:~{:2}}}" }cat shipenv @ "/_msgmacs/setvix" { "{muf:#" prog int ",setvix~:~{:1}{if:{:2},~:~{:2}}{if:{:3},~:~{:3}}}" }cat shipenv @ "/_msgmacs/mygetvix" { "{muf:#" prog int ",envvix~:~{:1}{if:{:2},~:~{:2}}}" }cat shipenv @ "/_msgmacs/mygetvix!" { "{muf:#" prog int ",getvix~:~{:1}{if:{:2},~:~{:2}}}" }cat shipenv @ "/_msgmacs/mysetvix" { "{muf:#" prog int ",setvix~:~{:1}{if:{:2},~:~{:2}}{if:{:3},~:~{:3}}}" }cat "I just installed {getvix} {getvix!} {setvix} {mygetvix} {mygetvix!} {mysetvix} {commandlock} {levlock} in your ships environment." vixotell "VIXEN is now installed!" vixotell ; : vixset var target var item var value me @ iscommand? not if "^RED^Permission denied.^NORMAL^" tellme exit then param @ "=" explode 3 = not if 0 param ! then param @ not if "Format: +vix ==" "Vixen" pretty tellme "For , blank or 's' set string, 'd' or 'o' set object," "Vixen" pretty tellme "'i' sets integer, 'f' sets float. Use default, strings." "Vixen" pretty tellme exit then resolve target ! item ! value ! target @ int 0 < if "Target not found or ambiguous." "Vixen" pretty tellme exit then target @ item @ value @ command @ tolower case "{+vix|+vixs}" smatch when tostr end "{+vixd|+vixo}" smatch when todbref end "{+vixi}" smatch when toint end "{+vixf}" smatch when tofloat end endcase setvix { "^RED^VIXEN^NORMAL^: Database command accepted: ^CYAN^" item @ " ^NORMAL^@^YELLOW^ " target @ dup dbref? if dup me @ swap controls if unparseobj then then " ^NORMAL^=^GREEN^ " value @ dup dbref? if dup me @ swap controls if unparseobj then then }cat tellme ; : helpsys var count var linestore var item var function function ! ( If a topic, dump it as a topic ) HELP function @ "#" strcat propdir? if { "Library file on: " function @ }cat header tellme function @ "#" strcat HELP LMGR-getlist array_make atellme else ( dump an index ) { "Library file on: " function @ }cat header tellme function @ "/" smatch if "VIXEN 1.0 - Virtual Information eXchange ENgine" tellme "^GREEN^Indexes are listed in green^NORMAL^, ^YELLOW^Topics are listed in yellow.^NORMAL^" tellme { "To view a topic or index, type " command @ " " }cat tellme "Indexes" header tellme else "VIXEN 1.0 - Virtual Information eXchange ENgine" tellme "^GREEN^Indexes are listed in green^NORMAL^, ^YELLOW^Topics are listed in yellow.^NORMAL^" tellme { "To view a topic or index, type " command @ " " function @ "/" }cat tellme "Indexes" header tellme then ( indexes ) -1 count ! "" linestore ! HELP function @ array_get_propdirs foreach item ! item @ "*#" smatch not if item @ "*/r" smatch not if me @ "rank" getvix item @ "/r/class" strcat getprop >= if count @ 1 + count ! linestore @ { "^GREEN^" item @ tostr dup strlen 2 > if capitalize else toupper then 19 lj "^NORMAL^" }cat strcat linestore ! count @ 4 % 3 = if linestore @ tellme "" linestore ! then then then then repeat count @ 4 % 3 < if linestore @ tellme "" linestore ! then "Topics" header tellme ( subtopics ) -1 count ! "" linestore ! HELP function @ array_get_propdirs foreach item ! item @ "*#" smatch if item @ "*/r" smatch not if me @ "rank" getvix item @ "/r/class" strcat getprop >= if count @ 1 + count ! linestore @ { "^YELLOW^" item @ tostr "" "#" subst dup strlen 2 > if capitalize else toupper then 19 lj "^NORMAL^" }cat strcat linestore ! count @ 4 % 3 = if linestore @ tellme "" linestore ! then then then then repeat count @ 4 % 3 < if linestore @ tellme "" linestore ! then then "VIXEN system v1.0" footer tellme ; : addfile param @ not if { "34, Syntax error, 00, 00: Required, file name" }cat "VIXEN" pretty tellme exit then "VIXEN 1.0 - Virtual Information eXchange ENgine" tellme { "Preparing to edit file: " HELP name ":/" param @ }cat tellme { "#" HELP int "=/" param @ }cat LSEDIT call HELP param @ "#/r/prot" strcat me @ "rank" getvix toint setprop { "03, Files protected, 01, " me @ "rank" getvix ": " HELP name ":/" param @ }cat "VIXEN" pretty tellme { "00, OK, 00, 00: " HELP name ":/" param @ }cat "VIXEN" pretty tellme ; : delfile var incompetance var aggression var dissatisfaction var dismissal var item var value param @ not if { "34, Syntax error, 00, 00: Required, file name" }cat "VIXEN" pretty tellme exit then HELP "/" param @ "#" strcat strcat getprop not if { "43, File not found, 00, 00: " param @ }cat "VIXEN" pretty tellme exit then me @ "rank" getvix HELP param @ "/r/prot" strcat getprop <= if { "53, Files protected, 01, " HELP param @ "/r/prot" strcat getprop ": Files not deleted." }cat "VIXEN" pretty tellme exit then HELP "/" param @ "#/" strcat strcat array_get_propvals foreach value ! item ! HELP "/" param @ "#/" item @ strcat strcat strcat 0 setprop repeat { "01, Files scratched, 01, 00: " HELP name ":/" param @ }cat "VIXEN" pretty tellme ; : mvfile var src var tgt param @ not if { "35, Syntax error, 00, 00: Required, " command @ " file1=file2" }cat "VIXEN" pretty tellme exit then param @ "=" instr not if { "36, Syntax error, 00, 00: Required, " command @ " file1=file2" }cat "VIXEN" pretty tellme exit then param @ "=" split tgt ! src ! me @ "rank" getvix HELP src @ "/r/prot" strcat getprop <= if { "53, Files protected, 01, " HELP src @ "/r/prot" strcat getprop ": Files not moved." }cat "VIXEN" pretty tellme exit then HELP src @ "#/" strcat HELP tgt @ "#/" strcat mv-prop { "02, Files moved, 01, 00: " HELP name ":/" param @ }cat "VIXEN" pretty tellme ; : protfile var file var level param @ not if { "37, Syntax error, 00, 00: Required, " command @ " =" }cat "VIXEN" pretty tellme exit then param @ "=" instr not if { "36, Syntax error, 00, 00: Required, " command @ " =" }cat "VIXEN" pretty tellme exit then param @ "=" split level ! file ! HELP file @ "#" strcat getprop not if { "43, File not found, 00, 00: " file @ }cat "VIXEN" pretty tellme exit then level @ int 0 < level @ int 31 > or if { "44, Invalid protection level, 00, " level @ int ": Required, 00-31" }cat "VIXEN" pretty tellme exit then HELP { file @ "#/r/prot" }cat level @ setprop { "02, Files protected, 01, " level @ int ": " HELP name ":/" param @ }cat "VIXEN" pretty tellme ; : classifyfile var file var level param @ not if { "37, Syntax error, 00, 00: Required, " command @ " =" }cat "VIXEN" pretty tellme exit then param @ "=" instr not if { "36, Syntax error, 00, 00: Required, " command @ " =" }cat "VIXEN" pretty tellme exit then param @ "=" split level ! file ! HELP file @ "#" strcat getprop not if { "43, File not found, 00, 00: " file @ }cat "VIXEN" pretty tellme exit then level @ int 0 < level @ int 31 > or if { "44, Invalid protection level, 00, " level @ int ": Required, 00-31" }cat "VIXEN" pretty tellme exit then HELP { file @ "#/r/class" }cat level @ setprop { "02, Files protected, 01, " level @ int ": " HELP name ":/" param @ }cat "VIXEN" pretty tellme ; : crewset var target var rank var duty var SDF var count param @ not if "Syntax: crew/set ==[=]" "Crew" pretty tellme exit then me @ iscommand? not if "Manipulating the roster is a command function only." "Crew" pretty tellme exit then me @ SHIPNAME not if "You must be aboard or part of a ship crew to manipulate its roster." "Crew" pretty tellme exit then param @ "=" explode count ! count @ 3 < count @ 4 > or if "Syntax: crew/set ==[=]" "Crew" pretty tellme exit then count @ 3 = if resolve target ! toint rank ! capitalize duty ! "" SDF ! then count @ 4 = if resolve target ! toint rank ! capitalize duty ! capitalize SDF ! then target @ toint 0 < if "Target not found or ambiguous match." "Crew" pretty tellme exit then me @ "rank" getvix target @ "rank" getvix <= if "Cannot change the rank of someone of equal or greater rank than yourself." "Crew" pretty tellme exit then me @ "rank" getvix rank @ <= if "Cannot change the rank of someone to equal or greater than your own rank." "Crew" pretty tellme exit then target @ "/~vixen/name" me @ SHIPNAME setprop target @ "rank" rank @ setvix target @ "duty" duty @ setvix target @ "SDF" SDF @ setvix { "^GREEN^" target @ "^NORMAL^ was just added to the roster by ^GREEN^" me @ "^NORMAL^: " "Rank: ^YELLOW^" rank @ "^NORMAL^ Duty: ^CYAN^" duty @ SDF @ if " SDF-Rank: ^YELLOW^" SDF @ "^NORMAL^" then }cat "Crew" pretty tellhere ; : crewdel var target var rank var duty var SDF var count param @ not if "Syntax: crew/del " "Crew" pretty tellme exit then me @ iscommand? not if "Manipulating the roster is a command function only." "Crew" pretty tellme exit then me @ SHIPNAME not if "You must be aboard or part of a ship crew to manipulate its roster." "Crew" pretty tellme exit then param @ "=" explode count ! count @ 1 = not if "Syntax: crew/del " "Crew" pretty tellme exit then resolve target ! target @ toint 0 < if "Target not found or ambiguous match." "Crew" pretty tellme exit then me @ "rank" getvix target @ "rank" getvix <= if "Cannot change the rank of someone of equal or greater rank than yourself." "Crew" pretty tellme exit then target @ "/~vixen/name" 0 setprop target @ "rank" 0 setvix target @ "duty" 0 setvix target @ "SDF" 0 setvix { "^GREEN^" target @ "^NORMAL^ was just removed from the roster by ^GREEN^" me @ "^NORMAL^." }cat "Crew" pretty tellhere ; : main param ! ( Ship library ) command @ "lib*" smatch if command @ "*/add" smatch if addfile exit then command @ "*/ed" smatch if addfile exit then command @ "*/del" smatch if delfile exit then command @ "*/mv" smatch if mvfile exit then command @ "*/prot" smatch if protfile exit then command @ "*/classify" smatch if classifyfile exit then param @ not if "/" helpsys else param @ helpsys then exit then ( look around hack ) command @ "l*around" smatch if me @ location "_around" getprop mpime tellme exit then ( Ice cube maker ) ( command @ "{shiplog*|perslog*}" smatch if command @ "*/add" smatch if addlog exit then command @ "*/ed" smatch if addlog exit then command @ "*/del" smatch if dellog exit then then ) command @ "*(MPI)*" smatch if param @ "~:~" explode pop param ! depth if param2 ! then depth if param3 ! then depth if param4 ! then then command @ "*(MPI)*" smatch if param @ case "getvix" smatch when param3 @ if param3 @ resolve else me @ then param2 @ getvixmpi exit end "setvix" smatch when param4 @ if param4 @ resolve else me @ then param3 @ param2 @ setvixmpi exit end "envvix" smatch when param3 @ if param3 @ resolve else me @ then param2 @ envvixmpi exit end "mygetvix" smatch when param3 @ if param3 @ resolve else me @ then param2 @ getvixmpi exit end "mysetvix" smatch when param4 @ if param4 @ resolve else me @ then param3 @ param2 @ setvixmpi exit end "myenvvix" smatch when param3 @ if param3 @ resolve else me @ then param2 @ envvixmpi exit end "levlock" smatch when param2 @ levlock exit end "commandlock" smatch when commandlock exit end "payroll" smatch when payroll end "install" smatch when installer end endcase then command @ "Queued Event." smatch if param @ case "Startup" smatch when vixencron end "Look" smatch when lite2shipvars exit end "Arrive" smatch when lite2shipvars exit end endcase then command @ tolower case "rep" smatch when prover exit end "var" smatch when varshow exit end "check" smatch when varshow2 exit end "roster" smatch when roster exit end "vx" smatch when vixsay exit end "crew/set" smatch when crewset exit end "crew/del" smatch when crewdel exit end "{+vix|+vixs|+vixi|+vixf|+vixd|+vixo}" smatch when vixset exit end "vixen/install" smatch when installer exit end "vixen/mvprops" smatch when mvprops exit end endcase me @ iscommand? ; . c q