=========================== = Section 1. Introduction = =========================== What is a Script? Before you can write one you need to understand what they are for. As with a script for a play, a Script for an area is a set of directives controlling the behavior and actions of the constructs of the Game. In the realm of the Game there are three basic constructs: Objects, Characters and Rooms. We can further break down Characters into two distinct groups: Player Characters (PCs) and Non-Player Characters (Mobiles or Mobs). As an area builder, you can directly influence the behavior and actions of Objects, Mobiles and Rooms with Scripts. As for the PCs, they are on their own. Scripts allow you, the area builder, to breath life into your creation. No longer does a Mob have to stand in a room and provide a sense of action via a description that the PCs read when they type: 'look '. With Scripts you can direct the Mob to greet the PC as he/she enters the room and begin an interaction with them. No longer is a key always required for a door. Instead, you can have an object that must be used in a certain way in order to open the path to the next part of the area. While there are a few things that Scripts can't do, for the most part you are only limited by your imagination. -Infoteq How to Use this Guide --------------------- Section 1: Introduction You are here X. Section 2: Basic Structure This section examines the relationship between Scripts and triggers and provides a general idea of what the script file will look like. Section 3: Trigger Header This section breaks down the first section of a Script, known as the 'Header' and describes what information will be necessary for each field. Section 4: Trigger Types This section discusses the various types of Triggers available and what they do. Section 5: Script Directives This section discusses the body of the Trigger where the directives are written. It includes information about conditional statements as well as available functions. Section 6: Script Variables This section lists the various types of information that is available during the execution of a Script as well as how to store and manipulate information of your own. Section 7: Script Expressions In this section you will find information on the mathematical and comparison operators available for use during Script execution. Section 8: Script Assignment From this section you will learn how to link the Scripts you have written to the specific Game constructs that you wish to have execute them. Section 9: Quick Reference For the experienced Script writer, this section provides a quick way to refresh your memory. Section 10: Examples For the beginning Script writer, this section provides examples of how you might go about causing certain types of actions to occur. ============================== = Section 2. Basic Structure = ============================== Going back to our analogy of the Play, 'the Script' is a comprehensive listing of all the action and the dialog of the Play. In the same way, the term Script can be used to apply to all of the directives that you write for all of the Game constructs in your Area. Taking a step further, each actor/actress in a Play does not really need to worry about every piece of action and dialog in the Play, they only have to focus on the parts that concern them directly. Similarly, when you write a Script you will break up your list of directives and assign them to the Game constructs that need them. It wouldn't make very much sense for our actors to read the parts of another character in our play. Therefore, we need to distinguish between different parts, so we can tell each character which parts they should read. Therefore, we will give each part an Identifier. Now, each actor/actress has their parts, but they can't simply just start reading them whenever they feel like it. Everything has to be organized in such a way that the actors/actresses know when it's time for them to play their part. In exactly the same way the directives assigned to the Game constructs require a 'Trigger' so that they know when to execute their part of the Script. In order for the Game to understand what it is you want to happen, your Script has to be organized as a series of individual Triggers in a file. So, throughout the documentation we will refer to the idea of the 'Trigger' as the information that controls the activation and the 'Script' will be the set of directives that are executed when that Trigger is activated. In order to avoid confusion the term 'Trigger file' will be used to refer to what in Play terms would be 'the Script'. The Trigger file is read in to the Game when it starts up after a reboot or a crash. The Trigger files are named with the following format: ###.trg Where ### is a three digit number used to identify your zone (Zone 20: 020.trg, Zone 100: 100.trg). The leading zeroes are used only for the file names, everywhere else you will start with the first non-zero number. Identifier ---------- We will give each part of our play two Identifiers. The first Identifier is the VNum (Virtual Number), which must be different for each part. VNums will follow the format XYY, where X is the number for your zone (X may be more than 1 digit), and YY is the number specific for that part. VNums must always be increasing as you go down the Trigger file, but increments can be greater than one. For example, if you were writing a Trigger file for zone 67, your first part could have the VNum 6700, and the second part 6701, and the third 6702, and so on. The second Identifier we assign to our parts is the Part Name. The Part Name is simply a textual name by which the part may be referred by some special script commands. In general, names that describe either the Trigger or the Script are best, but you can name it whatever you want. In general, it is wise to give each part a different Part Name, but it is not required. Note that you also need to distinguish your parts from the parts in other areas, so it is often wise to have your Part Name include a reference to the name of the zone. As an example, if you were writing a part for an area called Wyverns' Stone, and the trigger related to answering a riddle, then the Part Name might be "wyverns stone riddle answer". Trigger ------- Triggers for a part are covered in Sections 3 and 4. Script ------ What you can do within a Script is discussed in sections 5 through 7. File Format ----------- When writing a part, the Trigger file has the following format: # ~ Trigger Line 2 Trigger Line 3 Script Line 1 Script Line 2 Script Line 3 ... Script Line n ~ ... ... $~ The first line of a part must be a # followed by the VNum. The second line must be the Part Name, followed by a ~. The Identifier of each part has to always appear at the top, so it is easy to recognize where one part end and the next one begins. The third and fourth lines of the part are the Trigger lines. There will always be two lines for the Trigger, and they must always be the third and fourth lines of the part, right after the Identifier. They have to come before the Script, since the Trigger has to occur before the Script can be read. The Script itself follows the Trigger, with as many commands as are necessary. At the end of the Script, there must be a ~ to separate the current part from the next one. At the end of a Trigger file, $~ should be placed on the last line. ====================== = Section 3. Trigger = ====================== The Trigger for each part contains the information that describe what needs to occur before the Script can be enacted. Triggers are always two lines, after the two lines of the Identifier. There are five components to each Trigger: Trigger Type, Number, PercAct, Options, and Argument. Trigger Format -------------- The Trigger has the following format: ~ The first line is the Trigger Type, Number, PercAct, and Options, each separated by a single space. The second line of the Trigger is the Argument, followed by a ~. Type ---- The Trigger Type sets the actions which must occur for a trigger to activate. Since the Trigger Type is a bitvector, it is possible to have one Trigger activate under many different conditions. However, some Trigger Types place restrictions on what can go into the Number, Options, or Argument fields, so care should be used when doing this. A list of Trigger Types and their explanations are in section 4. An explanation of bitvectors can be found at the end of this section. Number ------ The Number field for a Trigger is an integer value which is used by some Trigger Types to determine whether the script executes. The exact usage of the Number field is specific to each Trigger Type, and detailed further in section 4. Even if the Trigger Type does not use the Number field, some value must still be placed in this field (though it will have no effect on the Trigger). The default null value is to use 0 as the Number field. PercAct ------- The Percent Activation (PercAct) field is the percent chance that a Trigger will activate given that all of the other conditions set by the Trigger Type are met. This field must be an integer between 0 and 100, inclusive, where a value of 0 means the Trigger will never activate, and 100 means it will always activate. Options ------- The Options field for a Trigger declares Class-specific conditions for a Trigger's activation. There are three Classes of Triggers based on the game constructs the Trigger will be attached to: Mob Triggers, Object Triggers, and World (or Room) Triggers. Currently, the Options field is only used for object constructs. This field is a bitvector which determines where the object must be in order for the trigger to run. If the trigger will work when the object is equipped, 'a' must be set. For the inventory, 'b' must be set. For being on the ground in the same room, 'c' must be set. Like all bitvectors, combinations are allowed, so ab means the trigger will work if the object is in inventory, or equipped. An explanation of bitvectors can be found at the end of this section. For triggers on mob and room constructs, a value of 0 should be placed in the Options field. Argument -------- The Argument of a script is a value whose use is dependent on what the Trigger Type is. The Argument can be a number, or a word, or anything else that fits on one line. Spaces are acceptable for multiple words. The use of the Argument is covered in Section 4. 3.1. Bitvectors --------------- Bitvectors are simply a set of letters used to define what options are going to be set. The letters work like a series of on-off switches, where the letters which appear in the definition determine which switches are on. For example, a bitvector might look like 'acdhi'. In this case, switches a, c, d, h, and i are all "on", while the switches for all letters not listed are off. If no switches are on, the bitvector will be 0. A value of 0 should be placed in the definition to show the absence of other values. ============================ + Section 4. Trigger Types + ============================ The following is a list of Trigger Types. The name and bitvector of each Trigger Type is given, followed by a brief description of the Trigger Type. After the description, the Classes that the Trigger Type work on are given, where the Classes are the Game constructs which can use scripts: mobs, objects, and rooms. Then, the use of the Number, PercAct, and Options fields and the Argument for that Trigger Type are defined. The effects of the Return variable (used by the 'return' command, section 5) are given. Finally, if the Trigger Type sets any variables automatically, the name and value of the variables will be given (more information on variables appears in section 6). Only one Type of each Trigger can go off at a time on a single mob/object/ room. For example, if a mob had two Triggers of Type 'n' (when it receives an object), if the first trigger goes off, the second one will never be checked. Therefore, it is often wisest to avoid multiple Triggers of the same Type on a single mob/object/room. If there is some type of trigger which is not covered by the ones listed here, more can be added by request. Global [a] In order to conserve memory, Triggers are normally only checked for when I PC is in the same zone as the component with the Trigger. However, there may be instances where a Trigger needs to execute even when there are no PCs present. If a Trigger is Global, then it can activate even when PCs are not present. The Global Trigger Type should be used with other Trigger Types, as it will do nothing by itself. Class : All. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : Not used. Variables: None. Random [b] This trigger is checked every 13 seconds. Class : All. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : Not used. Variables: None. Command [c] This trigger is checked whenever a character types a command in the same room as the trigger. If the command typed is a substring of the argument, the trigger is called. This trigger type could be used to create a new command or override the way an existing command works. For example, there is no default 'pull' command, but a trigger of this type with an Argument of 'pull' would allow a character to pull a lever. Class : All. Number : The minimum length of the substring that will match. For example, if the Argument was 'switch' and the Number was 3, then 'swi', 'swit', 'switc', and 'switch' would all work, but 's' or 'sw' would not. PercAct : 0 - 100 Options : See section 3. Argument : The command name, one word. Return : If 1, the character will execute the command as normal, in addition to the trigger activating. If 0, the command is handled by the trigger, and the normal affect of typing that command is ignored. Variables: actor - The character typing the command. arg - The full argument of the command (everything typed after the command word). arg1 - The first word of the argument line. arg2 - The second word of the argument line. Speech [d] This trigger is checked whenever someone says something around this trigger. Class : All. Number : If 1, then words in the word list may not be substrings. If 0, then words in the word list may be substrings of other words in the speech. For example, if the Argument was 'puff', and someone said 'puffy', then the trigger would activate if the Number was 0, but not if the number was 1. PercAct : 0 - 100 Options : See section 3. Argument : The phrase or word list to be matched. Phrases, if they must be matched exactly, may be enclosed in double quotes. For example, if the Argument was 'puff "fractal dragon"', then speech with the word 'puff', or speech with the phrase 'fractal dragon', would match. Return : Not used. Variables: actor - The character speaking. speech - What was said. Act [e] This trigger runs when Argument is a substring of a string of text that a mob sees. In other words, the mob will act the way you specify based on an action that it can see. The text can come only come from certain output (those generated by the act() function of the game). This includes most messages, such as socials, damage messages, and skill messages. Text from players, such as echo, emote, say, and tell, are not checked. If you have a specific question whether a message is checked, ask an implementor. The variables will be set to the right character or object, even if 'someone' or 'something' is used instead of the name. Class : Mob only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : The phrase or word list to be matched. Return : Not used. Variables: Not all the variables will be set. Which ones are set and to what depends on the message. If you have trouble, ask an implementor. actor - The primary character in the text. victim - The secondary character in the text. object - The primary object of the text. target - The secondary object of the text. arg - The variable string portion of the text. arg1 - The first word of the text line. arg2 - The second word of the text line. Death [f] This trigger is checked when a character dies. If this Type of trigger is on a mob, then only the mob's own death will activate this trigger. Class : All. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If the return value is 1, the death cry (such as 'Your blood freezes as you hear the beastly fido's death cry.') will not be heard. If the return value is 0, the normal death cry will be heard. Variables: victim - The victim. killer - The killer, if there is one. Get [g] This trigger is checked whenever an item is picked up or removed from a container. If this Type of trigger is on an object, the trigger will only work on that object. Class : Object or Room only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the object is taken/removed from container. If 0, the object is not picked up/removed from container. If -1, the object is taken but the standard message, such as 'Puff gets a Rubik's Cube.' will not be shown. Variables: actor - The mob that picks up the object. object - The object being taken. Drop [h] This trigger is checked when a character attempts to drop an object. If a trigger with this Type is on an object, the trigger will only work on that object. Class : Object and Room only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the object is dropped. If 0, the object is not dropped. If -1, the object is dropped but no messages, such as 'Puff drop a Rubik's Cube.' are sent. Variables: actor - The character attempting to drop the item. object - The object being dropped. Enter [i] This trigger is checked whenever someone enters the room. This trigger is checked just before the character enters the room, so if you want the action to occur in the room the character is entering, you must use a wait command, or teleport the character. If a trigger of this Type is on a mob, the mob must be able to see the person entering for the trigger to activate. (See Script Commands for more information on wait and teleport.) Class : Mob and Room only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : 1 if the player is allowed to enter. 0 if prevention of player's entry. -1 will prevent entry and disable all messages/room descs. Variables: actor - The character entering the room. direction - The name of the direction the actor entered from. Exit [j] This trigger is checked whenever someone exits the room. This trigger is checked just before the character exits the room, so if you want the action to occur in the room the character is leaving to, you must use a wait command, or teleport the character. If a trigger of this Type is on a mob, the mob must be able to see the person exiting for the trigger to activate. (See Script Commands for more information on wait and teleport.) Class : Mob and Room only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the player is allowed to exit. If 0, the player will be prevented from exiting. If -1, exit will be prevented and all messages/room descs will be disabled. Variables: actor - The character that exited the room. direction - The name of the direction the character exited to. Greet [k] This trigger is checked every time the mobile enters a room. Class : Mob only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the mobile is allowed to enter. If 0, the mobile is prevented from entering. Variables: direction - The name of the direction the mobile entered from. Farewell [l] This trigger is checked every time the mobile exits a room. Class : Mob only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the mobile is allowed to exit. If 0, the mobile is prevented from exiting. Variables: direction - The name of the direction the mobile exiting to. Give [m] This trigger is checked whenever someone attempts to give away the object. Class : Object only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the object is given. If 0, the object is not given. If -1, the object is given but no messages, such as 'Puff gives Infoteq a Rubik's Cube.' are sent. Variables: actor - the character giving the object victim - the character receiving the object Receive [n] This trigger is checked when an object is given. If a trigger of this Type is on a mob, the trigger will only activate when the mob receives an object. If on an object, it will only activate when that object is received. Class : Mob or Object only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the object will be received. If 0, the object will not be transfer. If -1, the object will be received, but no messages, such as 'Puff gives you a Rubik's Cube.' will be sent. Variables: actor - The character giving the object. victim - The character receiving the object. object - The object being given. Wear [o] This trigger is checked whenever someone attempts to wear the object. Class : Object only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the object is worn. If 0, the object is not worn. If -1, the object is worn, but no messages, such as 'You wear a spacesuit on your body.' are sent. Variables: actor - The character that is attempting to wear the object. Remove [p] This trigger is checked whenever a character attempts to remove the item from their equipment. Class : Object only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : If 1, the object is removed. If 0, the object is not removed. If -1, the object is removed, but no messages, such as 'You stop using a spacesuit.' are sent. Variables: actor - The character attempting to remove the object. Fight [q] This trigger is checked every round a character is fighting, after the character has had all its attacks. If a trigger of this Type is on a mob, then the mob must be involved in the combat. Class : Mob or Object only. Number : Not used. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : Not used. Variables: actor - The character the mob is fighting. victim - The character being fought. Bribe [r] This trigger is checked when some type of currency is given to a mob. Class : Mob only. Number : The minimum amount of currency that must be given to the mob for the trigger to be run. PercAct : 0 - 100 Options : See section 3. Argument : Type of currency, which can be one of Credits, Gold, Copper, Platinum, Yen, Yuan, Silver, Opal, Bloodstone. Return : Not used. Variables: actor - The character giving the mob the coins. amount - The number of coins given to the mob. currency - The type of currency used. Invoked [s] This trigger is used as a subroutine of another trigger type. Configuring a trigger as Invoked allows it to be called with the call command. Class : All. Number : 0 = Retain Trigger after Execute. 1 = Remove Trigger after Execute. PercAct : 0 - 100 Options : See section 3. Argument : Not used. Return : Not used. Variables: All local variables are copied from the calling trigger. Load [t] This trigger is checked when an object or mob is created in the game. Class : Mob or Object only. Number : Not used. PercAct : 0 - 100. Options : See section 3. Argument : Not used. Return : Not used. Variables: None. Destruction [u] This trigger is checked when an object is destroyed with object damage. Class : Any. Number : Not used. PercAct : 0 - 100. Options : See section 3. Argument : Not used. Return : Not used. Variables: actor - The character who destroyed the object. destroyed - The object that was destroyed. Unload [v] This trigger is checked when an object or mob is removed from the game. This is slightly different from the death and destruction trigger in that it activates on any reason that the object or mob is removed. Class : Mob or Object only. Number : Not used. PercAct : 0 - 100. Options : See section 3. Argument : Not used. Return : Not used. Variables: None. Mission [w] This trigger is checked whenever a mission is accepted, aborted or completed. Class : All. Number : 0 - Mission is Accepted 1 - Mission is Completed 2 - Mission is Aborted PercAct : 0 - 100 Options : See section 3. Argument : Return : Not used. Variables: actor - The character actioning the mission. ============================== = Section 5. Script Commands = ============================== There are a number of special commands which can be used in the body of a trigger. Each command requires additional information which must be supplied. This additional information, called arguments, is represented by words contained in <> or []. Each argument in <> must be replaced by a value or variable. Each argument in [] is optional; either a value or variable can be supplied, or nothing can be provided. In general, unless otherwise specified, each argument may only be one word or number long; in other words, spaces and tabs should not be used within one argument. Special arguments include : victim - If a command has an argument called 'victim', then the command expects a character (PC or mob), specified either by name or UID. If the argument is replaced by 'all', then all characters in the room are affected. target - If a command has an argument called 'target', then the command expects a room specified by vnum, or a character specified by name or UID, or an object specified by name. If a room is specified, it may not be a god room, or a cross plane of existence. Mob Commands ------------ Mobs can use any game command available to a mortal player character of the same level as the mob, in addition to the other script commands. Comments -------- Comments allow you to put explanations or notes into your triggers, without having them actually do anything. This may be useful as a reference to other people (such as the script debuggers) in explaining what a trigger is supposed to be doing for convoluted commands. * An '*' at the beginning of a line is a comment. The rest of the line is ignored. This may only be used within the body of a script. The may be more than one word long. Example: * This is a comment. slog Adds to the script log. The may be more than one word long. This should be used to indicate error messages in the log, or can be used in debugging. Example: slog This line will go into the log. Variable Commands ----------------- These commands allow variables to be modified in a number of ways. For each of these commands, the first argument is , which should be replaced with the name of a variable (do not use %'s around the variable). See section 6 for more information on variables. eval Evaluates , and sets to the result. See section 8 for details on how expression evaluation works. The may be more than one word long. Example: eval foobar 15 - 5 Sets the variable foobar to the value 10. set Sets the to , without evaluating . The may be more than one word long. Example: set foobar Dweezle Sets the variable foobar to the string "Dweezle". Example: set foobar 15 - 5 Sets the variable foobar to the string "15 - 5". global Changes into a global variable. zglobal Changes into a zone-global variable. unset Eliminates the if it exists. If there are multiple types of variable with the same name (a local variable and a global variable and a zone global variable), then unset will work on the zone global variable, then the global variable, then the local variable. Conditional Statements ---------------------- It may be necessary for some triggers to have commands occur only if some conditions are met. For example, you may want to have a trigger only work if a character is carrying a specific item. Conditional statements allow a number of commands to only occur if a specified condition exists. if () ... [elseif ()] ... [else] ... end An "if" must occur before the other three. If the evaluates to true (see Section 8 for expression evaluation), the statements between the "if" statement and the next "elseif", "else", or "end" are executed. If it stopped at an "elseif" or "else", it scans for the next "end", and continues execution at that point. If the expression evaluated to false, it searches for the next "elseif", "else", or "end". If it finds an "elseif", it checks that . If it is true, it executes the statements between the "elseif" and the next "elseif", "else", or "end", and then finds the end of the block. If it is false, it continues searching in the same pattern until a true "elseif" is found, an "else" is found, or an "end" is found. The s may be more than one word long, but they must be contained within parentheses. Example: if (5 > 6) say 5 elseif (5 < 6) say 6 else say equal end In this case, since 5 is always less than 6, the command "say 6" will always occur. Example: if (%x% > %y%) say %x% elseif (%x% < %y%) say %y% else say equal end In this example, the greater variables will be said, unless they are equal, in which case "equal" will be said. while () ... [continue] ... [break] ... done A "done" must occur before a "done". If the evaluates to true (see Section 7 for expression evaluation), the statements between the "while" and the next "done" are executed. Afterwards, the process is repeated, with the again being evaluated, and if true, the statements in between the "while" and "done" being executed. This repeats until evaluates to false. The statement "continue" will cause none of the statements between the "continue" and the "done" to be evaluated, and instead the script will go back and check the "while" statement again, starting over. A "break" statement will cause the script to skip all of the commands between the "break" and "done" statements, and begin executing statements after the "done" statement. The does not get checked again, if a "break" statement is evaluated. The expression may be more than one word long, but it must be contained within parentheses. switch () case ... [case ] [case ] ... [break] [default] ... done A "switch" must occur before a "done". The will be evaluated, and then the script will go to the first "case" statement whose is equal to the . It will then begin executing statements from that point onward. If none of the "case" statement's match the , the script will go to the "default" statement and execute the statements from that point onward. If there is no "default" statement, then the script will instead go to the "done" statement, and proceed from there. If a "break" statement occurs, the script will go to the "done" statements, skipping all commands in between, and begin executing from there. The expression may be more than one word long, but must be contained within parentheses. Message and Display Commands ---------------------------- These commands allow you to display messages in a variety of ways. With all of these commands, the last argument (called ) can be multiple words long. When using any of these commands, if you want to send a message about a specific mob or object, you may need to use subwrite operators. Subwrite operators allow you to alter the message based on whose point of view the message is being seen from. For example, if you wanted to send the message Dranor slays Puff with a mighty bolt of lightning! you would want Dranor to see the message You slay Puff with a mighty bolt of lightning! and Puff to see the message Dranor slays you with a mighty bolt of lightning! Section 6 explains how to use these operators. sasound Echos to the all the rooms around the room that the script is run from (all the rooms that are exits from the current room). secho Sends the to everyone awake in the same room as the script. sechoaround Sends the to everyone in the room except for the . If called from a script on a mob, the mob will also not receive the . The must be in the same room as the script. sechoaroundto Sends the to everyone in the room with except for the . The can be in a different room from the script. ssend Sends to . The must be in the same room as the script. ssendto Sends to . The does not need to be in the same room as the script. szoneecho This command will send to everyone in an entire . The should be specified by zone number. Creation and Destruction Commands --------------------------------- These commands allow scripts to create and destroy mobs and/or objects. These messages will not display any messages, so if you would a visual indication for the players of something happening, you will have to display it manually. sgive Loads and gives object with virtual number to . sdrop This command can only be used on mob construct triggers.. Drops the in the mob's inventory, but without displaying a message to the people in the room. If is 'all', all objects in the mob's inventory and equipment, and all money the mob has will be dropped. If is 'all.*', where '*' can be anything, all objects that match * will be dropped. sjunk This command can only be used on mob construct triggers. Junks the in the mob's inventory. If is 'all', all objects in the mob's inventory and equipment, and all money the mob has will be junked. If is 'all.*', where '*' can be anything, all objects that match * will be junked. sload Loads a mob or object with virtual number into the game. should be one of 'obj' or 'mob'. If called from a script on a mob, notake objects are loaded into the mob's room, and all other objects are loaded into the mob's inventory. Otherwise, all mobs/objects are loaded into the room from which the script is run. The object or mob's vnum must be specified; the name will not work. spurge [] must be a mob or an object, for this command. PCs are not affected. Removes from the game. If no argument is given, then all objects and mobs in the room will be removed. Action Commands --------------- There are a number of standard actions, such as moving or casting spells, which can be done in advanced ways within scripts. These commands allow these special actions. scast '' This command can only be used on mob construct triggers. Casts on . is limited by the level of the mob. The mob's spheres do not affect which spells can be used. sforce Forces the to perform the . The can be more than one word long. No message is sent to the , except what is caused by the . Immortals are not affected. sgoto This command can only be used on mob or object construct triggers. Moves the mob/object to the . No message is displayed by this command. sput Puts into . No message is displayed by this command. steleport Moves the to the . No message is displayed by this command. swalk