DONE Exit current table OK Print the message Ok. MSG M Print message M GET I Get item I, fails as a condition if you can't carry item.. message is printed doesn't check item is present or carriable etc. DROP I Drop item I PLACE I1 I2 Place I1 in I2 CALL T Execute table T LD F N Load flag F with N LDF F1 F2 Load flag F1 with the contents of flag F2 PRINT N Print number N LDO F I N Load F with the Nth data item of I. The data items are 0: Flags 1: Location 2: State + 16 * Maxstate 3: Weight 4: Size 5: Class (unused) 6+ User flags SETO I N1 N2 Set data item N1 of item I to N2 LDR F I N As LDO for rooms. Valid numbers for N are 0: Flags 1: Location 2: Exit N 3: Exit E 4: Exit S 5: Exit W 6: Exit U 7: Exit D 8-13: NE,SE...IN OUT etc 14+: Userflags STR I N1 N2 As SETO for rooms LDP F I N As LDO for players. Valid offsets are 0: Flags 1: Location 2: Level 3: Score 4: Strength (1/10th of max weight player can carry) 5: Person user is snooping on or -1 6: Visibility of player (must be level>=vis to see) 7+: User flags SETP I N1 N2 As SETO for players MUL F N Multiply F by N DIV F N Divide F by N ADD F N Add N to F SUB F N Subtract N from F SET F N Set bit N in F RES F N Reset bit N in F INC I Increase state of I by 1 unless it is at max state DEC I Reduce state of I by 1 unless at 0 SETSTATE I N Set the state of I to N DOACT I M N Every user in the room with I (except I) is sent I {M}. N holds values controlling this N can be 1 If you can't see em say nothing 2 If you can't see em say 'Someone' 4 Not if deaf - 8 Not if blind - 16 Dont tell sleepers. Without this sleepers are told and woken. or any sum thereof eg DOACT !0 BURPS 2 could be used for a burp command DOTO I1 M I2 N Similar to DOACT but everyone is told I1 {M} I2, except I2 who is told I1 {M} you. SCORE Display a players score LOBJL I Display list of items in room, in long format. LOBJS I Display list of items in I in short format PNAME I Print the name of item I PDESC IN Print the Nth state description of object I PLONG I Print the long description of item I JP N After running this line move current line by this amount relative to next line thus JP -1 re-runs same line CR Print a carriage return MSGCR M Print message then a carriage return Z F True if flag is zero EQ F N True if flag F=N GT F N True for Flag F > N LT F N Guess what ? AT I True if player is at I BIT F N True if bit N of flag F is set ISAT I1 I2 True if I1 is at I2 HERE I True if item I is here PRES I True if item I is here or carried DARK True if it is dark STATE I N True if item I is in state N CHANCE N True N times in 10000 IS I N Test if item is of specific type. Types are N= 1 PLAYER 2 ROOM 3 OBJECT OBIT I B True if bit B of object I's flags is set RBIT I B Same for rooms PBIT I B and players CANSEE I1 I2 True if I1 can see I2, considering darkness and invisibility LEVEL I N True if player I is at least level N ARCH I True if item I is an archwiz CALLED I M True if item I has a name the same as the text in message M WEIGHS N True if current player + belongings weighs at least N CANPUT I1 I2 True if I1 can fit in / be carried by I2 GOT I True if I is carried EXIT Player leaves game SAVE Saves the current persona. To kill someone just reset all their stats to initial When saving someone you MUST clear their snoop flag before you save them!\ NUMOF M F Converts the text of message m and stores the result in flag f. If the message does not contain a number the NUMOF condition fails. NEIL I N F Put the number of the next item in loction I, after item N into flag F. Fails if no more items. Put N=-1 to find first. GETWORDS I F1 F2 Loads the adj/noun pair for I into F1 F2 NEXTMATCH I F1 F2 N F3 As NEIL, but puts next matching item in vocabulary, F1=ADJ F2=NOUN F3=ANSWER NEXTGMATCH F1 F2 N F3 As NEXTMATCH for whole system PARSE M Feed M as input to the parser. TABTO N Shift the print position forwards until it is modulo N. Newlines will be started if required PROMPT M Set the prompt to message M AUTOVERB M [UNIMPLEMENTED] Set an automatic input precursor for this player. '*' typed in front of lines over-rides this APPEND M1 M2 Appends the contents of M2 onto file M1 TYPE M1 Type the contents of file M1. This is a condition. If file M1 does not exist the condition fails. RANDOM F Load flag F with a number between 0-9999. ZEBEDEE Time for bed said the server PWCHANGE Change user password SETPASS M Message should contain a space seperated name and password. The password for that user will be changed without any verification. You are advised to be careful how you use this in a database and who you allow to use it. PCNAME I Print the name of I with the first letter capitalised MFORMAT M1 M2 M3 M4 I1 I2 I3 This function formats a message according to a format message M1. The new message is placed in M2 and any previous contents of M2 are zapped. The format string may contain any of the following format strings introduced by '%', in addition to straight text which is merely copied into the result string. Format strings insert the following text into the result message. % A single '%' message N0 Name of I1 Capitalised N1 Name of I2 N2 Name of I3 n0 Name of I1 n1 Name of I2 n2 Name of I3 T0 True Name of I1 T1 True Name of I2 T2 True Name of I3 d0 Description of object I1 (current) d1 Description of object I2 (current) d2 Description of object I3 (current) r0 Long text of room I1 r1 Long text of room I2 r2 Long text of room I3 h0 Here message of player I1 h1 Here message of player I2 h2 Here message of player I3 a0 Arrives message of player I1 a1 Arrives message of player I2 a2 Arrives message of player I3 l0 Leaves message of player I1 l1 Leaves message of player I2 l2 Leaves message of player I3 m0 Message M3 m1 Message M4 All unused fields can be filled with dummys eg '{ }' for messages, and !ME etc for item slots. eg MSFORMAT {%N1 has entered the game.} U1 { } { } !ME !ME !ME Will leave U1 holding {[PlayerName] has entered the game.} Note in the example that dummy fields are used for all the unused fields, since the system requires fixed argument commands. MKROOM M F Create a room, with true name M, put item number of it in F MKOBJECT As above for an object MKPLAYER And a player TRASH I Totally destroy item I. Do not refer to a destroyed item or it will all fall down. The system routines to scan for things automatically skip destroyed items NEVER destroy a player slot SETDESC I N M Set description N of object I to M SETMAXSTATE I N Set the max state of object I to N SETLONG I M Set the long description of room I to M SETIOH I N M Set either the arrives/leaves/here message (In Out Here) of player I to M according to value in N. HERE=0 ARRIVES=1 LEAVES=2 SETNAME I M Set the name of item I to M SETVOCAB I N1 N2 Set the vocabulary of item I to have adj N1 noun N2 LENGTH M F Sets F to be the length of message M ADDWORD M N1 N2 Adds word M, of type N1 (1=Verb 2=Adj 3=Noun 4=Prep) as word number N2. Currently choosing N2 is a user problem. Future versions will permit N2 to be set to -1 to mean choose a word. The recommended method is to start at 15000 and work upwards in ones, which is ok unless you add 13000 words in one game. Words will be correctly numbered to take up spaces on boot, starting from 0. Users are assigned as codes 28000 to 28000+Max Users. FINDWORD M N F Sets F to the code of word M in type N. -1 means none DELWORD M T Delete word M of type T. Words must be deleted as many times as they are added before they go. TOD F1 F2 F3 F4 F5 F6 F7 Read real time of day/date F1=Seconds F2=Minutes F3=Hours F4=Day of Month F5=Month F6=Year F7=Day Of Week FLOAD M N1 N2 Load the flags from N1 upto N2 (not including N2) from file M FSAVE M N1 N2 As above but save the flags to the file, which will be created. DO N Mark the start of a loop named 'N', any previous loop marker 'N' is forgotten (N is in range 0-15). Loops may not be across tables. Due to a bug in the current driver loops are not local - they will become so ie a DO 0 in table 0 will not be affected if calling table 8 then does another DO 0. LOOP N Go back to the line after the corresponding DO DELFILE M Delete the file called 'M'. True if succeeds. FINDSTR M1 M2 N F Finds the first character in M1 which is contained in the string M2, from position N onwards, and store the result in F, False if it fails to find one. SKIPSTR M1 M2 N F As FINDSTR but finds first NOT contained in M2 LOADU I M Load the user named M over the top of any currently exisiting player I. Do not load over the top of a user, unless you know what you are doing! SAVEU I M Save item I (must be a player) as the name M SUBSTR M1 M2 True if M2 is a sub string of M1 EXTRACT M1 M2 N1 N2 Makes M2 characters N1 to N2 in M1. If N2>length of string characters are copied till end of string. If N2>N1 or N1>length of string a null string is the result. WTEXT N1 N2 M Puts the text of a word name matching type=N1, value=N2 into message M, or $ANY if it does not match Scribble In any table !n replaces a number with the equivalent flag value ie !4 is contents of flag 4. if the value is of type 'F' flag anyway. !x becomes the flag whose number is contained in flag x. You can use flags for items too, indeed it is used a lot. @item written for a number replaces number with the value of item ?item replaces number with ts location eg LD 33 ?SWORD sets flag 33 to &name is the number of a message. the location of the sword. There are 256 flags (16 bit signed) 0-63 are system reserved.