Startopia Mod Scripting Guide V1.3 19/10/01 This the Startopia Scripting guide. It will be updated as frequently as possible to remove errors and add new sections/examples. Directory Structure (Unpatched Version) The following directories are used in basic mission building: Missions\XX\ Where xx is the mission number. The game automatically looks in folder 00 and loads in some default files. It then looks in the appropriate mission folder and loads the remainder of necessary files. Folder 00 should not be modified unless you wish your changes to affect the entire game. Note that the mission number is not necessarily the same as the mission position in the game the path missions\12\ is in fact Mission 5 in the game. A separate system is used to link mission folders to in-game levels. Text\English\ This is where the text strings used in the missions are stored. Note that you can ignore this folder and place your text directly into the mission file it only exists to facilitate localisation into different languages. It is recommended you try to use it though, even if you don t plan on doing a mission in more than one language someone else may do that job for you. Data\Speech\English\Foldername This is where speech files are stored. You can create your own and place them here. They should have the same filename as the text string they represent. The foldername should be the same as the.txt file in which the speech is stored. Example: If you have a string called blackholewarning in the file newmission.txt then the associated sound file needs to be called blackholewarning.wav, placed in a folder called newmission.
Files (Unpatched Version) Missions\XX\MishXX.txt This is the core mission file. It can be numbered from 00 99, and should have the same number value as the folder it resides in. There is one script per player per level. If mission 8 is for three players, the associated filenames are mish08.txt, mish08-2.txt & mish08-3.txt. Human players are assigned the lower numbers, currently in whatever order direct play decides. The following mission numbers are those used: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 11, 12 Main Missions 30, 31, 32, 33, 34 - Tutorials 90, 91, 92, 93, 98 Sandbox Missions\XX\*.txt These can be called from within MishXX.txt. This is a handy way to include common script commands without having to generate duplicate scripts. Example: I have a file called peepenergy00.txt that determines how much energy is generated by happy aliens. Instead of rewriting this script in every mishxx.txt, a single command will automatically include it within mishxx.txt Missions\XX\*.csv These are used to represent traders (including Arona). The traders are called from within mishxx.txt, and can have any name except techxx.csv Missions\00\Tech00.csv Missions\XX\TechXX.csv Aside from the default version tech00.txt, this is an optional file. This is used to determine which technologies are available for research. Tech00.csv is loaded as a default, and then the appropriate techxx.csv is loaded on top of that. Missions\00\Class_Data_In00.txt Missions\XX\Class_Data_InXX.txt Aside from the default version class_data_in00.txt, this is an optional file. This holds important game balance information. class_data_in00.txt is loaded as a default, and then the appropriate class_data_inxx.txt is loaded on top of that. Missions\00\Build_Changers_In00.txt Missions\XX\Build_Changers_InXX.txt Aside from the default version build_changers_in00.txt, this is an optional file. This holds important game balance information. build_changers_in00.txt is loaded as a default, and then the appropriate build_changers_inxx.txt is loaded on top of that.
Text\English\Index.txt This file tells the game where to look for text strings called from within a mishxx.txt file, as well as general non-mission specific game text. When you create a new mission number you must define it here. Text\English\LevXX.txt This is where mission specific text strings are stored. Directory Structure (Patched Version) Missions\missiontitle\ Where missiontitle is the name of your mission. The game automatically looks in folder 00 and loads in some default files. It then looks in the appropriate mission folder and loads the remainder of necessary files. The missiontitle can be anything except the numbers 00-99. Files (Patched Version) All relevant files are placed in your missiontitle folder. They include: Mish.txt text.txt Build changers in.txt Class data in.txt Moods in.txt This is your mission file. A text file for mission text this is where text should be placed if you wish translations to be done or speech to go with the text. Otherwise, all in-game text can be included directly in the mish.txt file. This can be edited if you wish to alter any game balance characteristics. Otherwise place a renamed copy of build changers in 00.txt here. This can be edited if you wish to alter any game balance characteristics. Otherwise place a renamed copy of class data in 00.txt here. This can be edited if you wish to alter any game balance characteristics. Otherwise place a renamed copy of moods in 00.txt here. SFX Files (All Versions) These are currently not supported in either the unpatched and patched version. We are working on a system to allow the inclusion of user-recorded sound files, hopefully to follow in a subsequent update.
Scripting A mish file is composed of a number of elements. Elements are checked approximately once every 6 th of a second. The ordering of elements in the script is not related to the order they are checked. Each element has the following format: :title if then end condition statements :title this is the unique identifier for the script element. It can be anything you like, but must be unique to that script element. You can include a single element titled :Autorun this element will always be executed first before any other elements are checked. NOTE: Disabling decks in here will determine whether lifts are created or not. If,then This sets the conditions that must be met before the remainder of the element is executed. Then,end these are the commands that will be executed. Conditions These are generally set by comparing variables and constants against one another or a value. Examples: Turn > 100 Scutter_count > 3 Berth_count < ((lovenest_count siren_count) * 5) Expressions must be enclosed in brackets. There are no precedence rules, so a+b*c must be expressed as (a+(b*c)) Binary expression operators are +, -, *, /, %. There is no unary minus so use (0-50) to represent -50.
Syntax Lines starting with ; are ignored To comment out a lump of script, add a /* line above it and */ below it (don't put anything else on the lines) if, then and end must have lines to themselves. Each statement and condition needs to be on a separate line. Strings are enclosed in double quotes if conditions are a=b, a!= b, a>b, a<b Including External Script Elements You can insert the contents of a text file directly into the current script by placing the path to the file within curly brackets thus: {directory\directory\filename.txt} Example: {missions\00\rehabs.txt} This pastes the contents of rehabs.txt directly into the script at the location the command is called. You can make these conditional on specified sandbox options being non-default. You must add a [ ], the name of the option to be checked and the value to be found. Example: {missions\00\researcheverything.txt OPT_RESEARCH=3} This will only be loaded if OPT_Research (research speed in the Sandbox settings) is set to 3 when the game is started. See Appendix for a list of sandbox options and their settings. Text Strings (Unpatched Version) Instead of using a text string, you can point to an existing *.txt file and use a string already defined there. To do this, use the format location_tag, where location is a pointer in the file index.txt that tells the game where the string is stored. Tag is the name of the tag that goes with each string. The file where the string is stored must be placed in the folder \Startopia\text\ E.G. Say lev01_general01 This looks in INDEX.TXT under the marker [lev01]. This tells the game to look in the folder text for a file called lev01.txt, then print the string marked as general01. The.txt file must have a header that matches its marker in INDEX.TXT: e.g [lev01] For examples look at the file INDEX.TXT and then look at the files it refers to. Text Strings (Patched Version) Instead of using a text string, you can point to a file called text.txt and use a string already defined there. To do this, use the format mish_tag, where tag is the name of the tag that goes with each string. Text.txt must be placed in the same folder as the mish.txt file. E.G. Say mish_general01 This tells the game to look in your mission folder for the file text.txt, for a string marked as general01. The file text.txt must have the header [mish] See the accompanying mission files for an example of this system.
Statements Addenergy <value> This will add the specified value to the player s energy total. Use (0-n) if you with to subtract energy from their total. Examples: Addenergy 1000 Addenergy (0 3000) Cam_pos <x y z yaw tilt> x is from 0 to 2560 (10 per map square) y from 0 to 100 (height, 100 is max height) z from 0 to 320 (10 per map square) Yaw is from 0 to 2047 (0-360 degrees) Tilt is from 0 to 2047 (0-360 degrees) Example: cam_pos 70 90 210 1536 256 Disable This will stop the script element from being triggered in future, effectively removing the element from the script. Commonly used in script elements that are only to be triggered once. A disabled element can still be triggered by manually calling it using the Trigger command. Disallow all peeps This will not allow any non-script generated peeps to come on board Disallow decks <sub_deck> <mid_deck> <bio_deck> This will disallow the assigned deck. Example: Disallow decks bio_deck Discover @<technology> This will enable the assigned technology, allowing the player to build the item. Examples: discover @satcom discover @collector Discover @<technology>_theory As above, but will discover all foundation technologies too. Examples: discover @satcom_theory discover @collector_theory Evacuate <deck> <segment_no> <seconds> Make peeps run away from this piece of station for at least this length of time. Segments are numbered from 0-15 from the top of the map in a clockwise direction. Example: Evacuate sub_deck 7 90 Evaporate <portable> [<sub-type>] <amount> This command removes an amount (or as much as exists if less) of the specified cargo from the players station. Only works on tradeable crates. Examples: evaporate food_supply_crate 50 evaporate hard_plan_crate port 2
Exterior_graphics <directoryname> Where to look for exterior graphics such as nebula and planet textures, and specify which to use. Will use default settings if not specified. Examples: exterior_graphics "data\exteriors\torus3" exterior_graphics "data\exteriors\hub3" exterior_graphics "data\exteriors\space\2" FindRoom <room_type> <x_variable> <y_variable> <deck_variable> Fills three specified variables with the coordinates and deck (0-2) of the centre of the first room_type specified you own. (x is relative to your start segment) Hide_Counter <variable> Stop displaying the specified counter (see the Show_Counter command). Incoming <message_type> [respond <variable>] [within <value>] [skill <value>] [icon <icon_number>] text_string This will generate a message. The message type determines it s properties: Ship_comms: This message is seen by the player of this script only. Requires a Comsensor to be viewed. Stellar_event: This message is seen by all players. Requires a Comsensor to be viewed. Local_comms: This message is seen by the player of this script only. Does not require a Comsensor [Respond <variable>] This will make the message interactive, placing the players response into the variable specified. Response values are Yes (2), No (1), Ignored (-1). The variable used should be pre-set to a value higher than 2 prior to being called, usually in the :Autorun script element. [Within <value>]: This specifies how long the message will persist from creation, at which point it will disappear. Any respond value will be set to 0. [Skill <value>]: The difficulty of Comsensor decoding the message. Defaults to 100 (practically instant) if not specified. A low difficulty setting would be 5000. Medium difficulty 10000. Very hard to decode 20000+. [Icon <icon_number>] Text_String Specify the type of icon to be displayed with the message. If not specified, Ship_comms will default icon 4, stellar events to icon 7, Local_comms to icon 3. The text that appears in the message interface. Load moods <folder> This will load in the mood_changers_inxx.txt file from the specified folder. This command only works with folders numerically defined (00-99), and the mood_changers_inxx.txt must be numbered the same as the folder. Load builds <folder> This will load in the build_changers_inxx.txt file from the specified folder. This command only works with folders numerically defined (00-99), and the build_changers_inxx.txt must be numbered the same as the folder. Load class <folder> This will load in the class_data_inxx.txt file from the specified folder. This command only works with folders numerically defined (00-99), and the build_data_inxx.txt must be numbered the same as the folder. Lose Text String This will trigger the lose mission screen. The lose command can be followed by a string that is displayed in the lose mission screen.
Example: Lose Condolences. Lost in Space! Meteor_Shower <segment_no> <deck> <quantity> This will generate a quantity of meteors that will strike the specified deck and segment. Segments are numbered 0-15 from top in a clockwise direction. Pbuffer <variable> Sets the variable pbuffer_size to the specified variable. Pbuffer Contains <classvalue> <subtype> <variable> Sets the specified variable to 1 if the pattern buffer contains the specified cargotype. Only accepts the classvalue (a number) of the cargo type, rather than it s long name. Classvalues: Peep 1 Portable 2 Tree 4 Furniture 5 Place_furniture <x y> <deck> <furniture_type> <orientation> This will place the specified furniture at co-ordinates x y on the specified deck. Orientation determines the furniture facing, and can be north, south, east or west. Examples: place_furniture 15 9 mid_deck analyser west place_furniture 38 15 sub_deck litter_bin south place_peep <peep_type> [criminal] (resident assassin saboteur convict) [loyalty <value>] [skill <value>] [dedication <value>] [infected <value>] [mood <mood_type> <value>] (<x y> <deck> <angle> <groupno>) This will create a peep of the specified type. Criminal creates a criminal peep. Resident specifies already hired. Assassin creates a Psycho Killer (should only be used with Gor, Targ, Grey and Salt-Hog). Saboteur creates a Psycho Bomber. Convict creates a peep in need of rehabilitation. Loyalty, skill and dedication can be values between 0 5. If no loyalty / skill / dedication is specifed, a random value is assigned. Infected gives the peep a disease of the specified value. Mood can be inserted once for each mood type, and value must be between 0 10000. Location can be specified with x y co-ordinates, deck and angle 0-2047. If no location is specified, the peep will arrive via the port. Groupno is 1-31, and can only be used with peeps arriving via the port (no location settings). Peeps always belong to group zero. Place_portable <portable_type> <x y> <deck> <angle> <sub_type> This will place the specified portable at co-ordinates x y on the specified deck. Angle determines the rotation of the item, and is a value between 0-2047 (equivalent to 0 360 degrees). Sub_type determines the contents of the portable in the case of hard_plans, furniture_plans, technology and scutters. Avoid placing damaged goods crates with this command, as this will cause energy/recycling related errors. Examples: place_portable food_crate 15 19 sub_deck 1024 place_portable technology 15 19 mid_deck 512 @laboratory place_portable hard_plan_crate 26 30 sub_deck 16 recycler place_room <x y> [<w h>] <deck> <room_type> [<orientation>] This will place a specified room at co-ordinates x,y, with width w and height (length) h (for non-dragable rooms specify a value of 1) on the specified deck. Orientation is for non-dragable rooms, and can be north, east, south or west. Examples: place_room 8 7 1 1 sub_deck collector north place_room 130 24 10 10 mid_deck berth
Quake <value> This triggers a StarQuake that will last for the number of seconds specified Say [<tag number>] [important] [icon <icon number>] Text String This will generate a message. This must be followed by a text string. An optional numerical value, or tag can be assigned to the message. A message marked as important cannot be deleted by the player and will remain on-screen indefinitely (or until removed with the unsay command). However it is recommended that you use the sayx command for this purpose. A message will default to a basic stellar icon. A different icon can be specified with the icon switch. Information Icon 2 VAL Icon 3 Trade Ship Icon 4 Red Skull Icon 5 Arona Icon 6 Stellar Icon 7 Auction Icon 8 Meteor Icon 9 Examples: Say Hello Say important Hello Say important 5 Hello Say important 5 icon 6 Hello Say icon 3 Hello Sayx This is the same as the say command when used with the important parameter. Unsay n This will remove from the game screen a message with the specified tag value. Example: Unsay 5 Unsayx n This will remove from the game an important screen a message with the specified tag value. Example: Unsayx 5 Set This will set a variable to a new value Examples: set asteroids 6 set asteroids (asteroids + 1) Set <variable> <value> after say text string This will set a variable to a new value after the player has confirmed reading the specified message. Example: Set last_message_read 1 after say This is the last message Show_Counter <variable> <icon number> Display the (continuously updating) value of the specified variable on screen from now on, along with the specified icon type. 0 Cures Icon 1 Deaths Icon 2 Rehabs Icon 3 Escapee Icon 4 Crates Icon 5 Penitents Icon
6 Arona Timer 7 Research Count 8 Cargo Value Count Status_message text_string This will print the specified text stringon screen in the form of a status message (a green pop-up box in the lower half of the screen). Status messages time-out after a few seconds, and are queued if several are generated at once. Trader <trader.csv> <time in seconds> text_string [local] Creates a trader using the specified.csv file (which must be in the same directory as the mish file). Time in seconds determines how many seconds the trader will remain before departing. A text string will be displayed with each trader when they are queried. If the [Local] option is set, only this script s player will get the trader. Trigger <:title> This will run a script element, regardless of whether the conditions are met or not, and regardless of whether it has been disabled. Example trigger :spawngenerator Trigger <:title> after say text string This will trigger the specified script element after the player has confirmed reading the specified message. Example: trigger :selfdestructsequence after say After being read this message will self destruct in 5 seconds Multitrigger <:title> As the normal trigger command, but will activate the specified script element in all players scripts. Unlock <segment_no> Make the segment specified ownable. Multiple segment numbers can be specified. Win Text String This will trigger the win mission screen. The win command can be followed by a string that is displayed in the win mission screen. Example: win Congratulations. You re a Winner!
General Purpose Peep Counter Function: PeepStat [Stationwide] [Race <race_type>] [Group <groupno>] [AllSet <flags>] [AllUnset <flags>] [NotAllSet <flags>] [NotAllUnset <flags>] [Mood <mood_type>] Roger Returns the number of matching peeps when Mood isn t specified. When Mood is specified, the average value of the specified mood for those peeps is returned, or 0 if there are no such peeps. Valid flags are: resident, dead, criminal, convict, assassin, saboteur. Take care when using multiple flags, the opposite of AllSet is NotAllSet rather than AllUnset. If you say something like 'AllSet dead resident criminal' it means that only peeps that are ALL of these things (dead AND resident AND criminal) will be included in the count. NotAllSet would mean everyone except the above. AllUnset means honest, living vistors only, and NotAllUnset would be the opposite of that, which would be peeps that are dead OR resident OR criminal. Examples: ; count this players unemployed warriors set warriors peepstat race gor grey targ salt_hog allunset resident roger ; count all dead criminals for all players set dead_crims peepstat stationwide allset dead criminal roger ; get average body value of nasty people in group 2, returns 0 if nobody of that description set health peepstat group 2 notallunset criminal convict assassin saboteur mood body roger Array & CargoExists Access group information via the array function. Array <variable> <groupno> The following are valid arrays: Array Resident_Count 2 how many residents are currently in group 2 Array CuredSoFar 0 how many curings so far, regardless of group Array ArrivalsSoFar 5 how many arrivals via the port of group 5 peeps Array DeparturesSoFar 3 how many departures so far via the port of group 3 peeps Array DeathsSoFar 1 how many peeps in group one have died Array OwnBioDeck 14 Array OwnMidDeck 4 Array OwnSubDeck 6 values of these are the script number of the player owning that deck segment (or 0 if no owner). AI players have larger numbers than human players. Arrays can t be modified directly. Cargoexists <portable> <sub-type> Similar to Array is CargoExists, which returns the amount of the specified cargo that the player owns. Example Usage: ;Cargocheck if CargoExists hard_plan_crate berth > 9
then end CargoExists ore_crate > 9 CargoExists technology_crate @lavotron > 9 say Hurrah, you have at least ten of the three specified cargoes! disable CargoExists is currently slow to evaluate so should be evaluated as infrequently as possible. Tutorial Commands Tutorial Text_string [set <variable> <value>] [( <panel id> findroom <roomtype> findpeep <peeptype> findportable <portabletype> message <tagnumber> special (placeroom <roomtype> wait <time>))] This command will generate a Tutorial Text Panel on screen. It will then wait for certain conditions to be met before disappearing and setting any specified variables. If no conditions are included with the command, a right-click in the Tutorial Panel will dismiss it. Set <variable> <value> <panel id> Findroom <roomtype> Findpeep <peeptype> Findportable <portabletype> Message <tagnumber> Special placeroom <roomtype> The specified variable will be set to the specified value when the tutorial command conditions are met. This will wait for the player to press the specified button. A list of panel id s is given in the Appendix. This will wait for the player to right click and activate the room menu of the specified roomtype. This will wait for the player to right click and activate the peep menu of the specified peep. This will wait for the player to right click and activate the cargo menu of the specified cargotype. Waits for the specified important message to be activated and read. This waits until a room of that type is blueprinted and confirmed. Instead of specifying a roomtype, the player can replace this with a numbercode. These numbercodes will wait for the following events: 1 Pick up a blueprint 2 Drag out a blueprint by a corner 3 Resize a blueprint by dragging an edge 4 Rotate a blueprint Special wait <time> Special <variable> This waits until the specified number of seconds have passed. The special command can accept a variable. The tutorial will move on if that variable is greater than 0.
Trader Files These are easily edited in a spreadsheet package such as excel. They follow the following format: Version 3 Race Gor Buy range 90 110 Sell range 120 150 Stock range 10 20 Wanted range 5 5 Spend range 20000 40000 Type Subtype Stock ratio Wanted Ratio Price adjust Essential Ore_crate 24 0 Scutter_crate scutter 1 0 Technology_crate rough bar 10 1 Hard_plan_crate laboratory 10 0-20 1 Version: This tells the game what format to expect for the trader file should be left at 3 if the above layout is used. Version 2 trader files didn t have the Essential column. Race: Valid entries are: Arona, Gem_Slug, Gor, Grey, Karmarama, Salt_Hog, Siren, Targ, Turakken, Zedem_Monk. Buy Range: The price range (% of default item cost) they will pay for the players goods. Randomly selected for each cargo type within the specified range. The first value should be equal to or lower than the second. Sell Range: The price range (% of default item cost) they will sell goods to the player. Randomly selected for each cargo type within the specified range. The first value should be equal to or lower than the second. Stock Range: Represents how many times to go through the Cargo Stock List and select a random item to add to the inventory. Randomly selected each time the trader visits within the specified range. The first value should be equal to or lower than the second. Wanted Range: Represents how many times to go through the Cargo Wanted List and select a random item to add to the traders wants. Randomly selected each time the trader visits within the specified range. The first value should be equal to or lower than the second. Spend Range: The maximum amount of energy the Trader has to spend on buying the players goods. Randomly selected on each visit within the specified range. The first value should be equal to or lower than the second. Type: Portable type. Subtype: Portable contents if applicable. Stock Ratio: Chance of a single crate of the item being available. (Stock Ratio of individual item) / (Stock Ratio Total of all items in trader file) Wanted Ratio: Chance of a single crate of the item being on the traders wants list. (Wanted Ratio of individual item) / (Wanted Ratio Total of all items in trader file) Price Adjust: Adjustment applied to Buy Range and Sell Range for this item only. All prices must be greater than 0% of RRP after adjustment. Essential: The trader will always have at least one crate of this item if the player does not already own one or hasn t built its contents. Stock Ratio can be 0 in this case. A full list of tradable items can be found in traders.csv
Variables Variables are declared by using them, and default to 0. Their names are case insensitive. The following variables are reserved by the scripting language. @<technology> Arona_called ArrivalInterval ArrivalsSoFar Bio_deck Blueprint_count Blueprint_fixed CuredSoFar DeathsSoFar DeckSegmentCount DeparturesSoFar Discovery_count Docking_disease Enemy_count Energy Junk_count Human Litter_count mid_deck Normal_peep_count Num_ascensions Num_suited Pbuffer_size Peep_count <peep_type>_count <peep_type>_max <peep_type>_ratio <peep_type>_every <Plant_type>_count Players PortQueuePriority PortQueueStandard <portabletype>_count Reloaded Resident_count ResidentMonksCount Rnd Room_count Evaluates to 0 if specified technology is unresearched and 1 plus number of improvements if it has been researched. Set to 1 if you press the A key. If set to zero, uses the <peep>_every system. Otherwise, how many seconds (on average) between non-scripted peeps joining a queue for station entry. If a peep joins a queue but is of a disallowed type, the interval will appear longer because they won't make it onto the lift. Setting the <peep>_ratio variable for that peep type to zero prevents this. The number of peeps who have come aboard via a port during the mission. This equals 1 when the biodeck is available Number of non-fully-built rooms the player has. This equals 1 when a blueprint is confirmed. The number of peeps that have been cured during the mission. The number of normal peeps that have died during the mission. Number of segments owned by all players. The number of peeps that have left via a port during the mission Number of items the player has researched. This determines the % chance of a non-scripted peep coming on board with an illness. Defaults to the setting provided in build_changers_in00.txt The number of players that are flagged as enemies. The player s energy score. Number of pieces of litter and junk in the player s territory. Returns 1 if the player is human, 0 if the player is an AI. Number of pieces of litter in the player s territory This equals 1 when the pleasure deck is active. Number of peeps minus scuzzers and animals that are aboard the player s area of the station. The number of ascensions that the player has triggered. The number of penance suits that have been created by the player. The number of items in the players pattern buffer. Number of peeps that are aboard the player s area of the station. Number of specified peeps that are aboard the players station. See Peep Types for a list of available peeps. Set the maximum number of non-script generated peeps the player is allowed to have aboard his station. If ArrivalInterval is non-zero, determines that probability of a peep type being chosen when a peep is generated. The higher the value, the greater the chance this peep type will be chosen. Set the frequency of these peep types becoming available to board the station. If ArrivalInterval is zero, this value represents seconds (on average) between non-scripted peeps becoming available. How many of the specified plant-type the player has. Number of player that have not lost still in the game. Number of scripted peeps that are waiting to come onboard. Number of non-script generated peeps that are waiting to come onboard. The number of items of the specified portabletype that the player owns. Used for special save-game purposes. Set to 1 when a game is reloaded. Testing for this allows visual counters or anything else that doesn t get saved for whatever reason to be reconstructed. Number of residents aboard your station. How many resident Zedem Monks the player has. Random value that changes at each evaluation. Use (rnd%n) to return a number between 0 and n-1. Number of completed rooms belonging to the player.
<room_type>_count SegmentDecks sub_deck ThinkEvery Turn Number of specified completed rooms belonging to the player. See Room Types for a list of available rooms. Number of segments owned by the player This equals 1 when the technical deck is active. Set this to 0 to put the AI in neutral. Remember to set it back to it s original value to restart the AI thinking. Number of turns the game has been running. Turns increment at 24 a second. Old Variables There are a number of reserved variables that are no longer used by the game. However, these should still be avoided as script defined variables. A full list of variables, reserved, old and script-defined can be viewed via the debug script info pages. Debugging Unfortunately there is no debug capability for the unpatched version of Startopia. To activate debug mode in the patched version, use the following procedure: While in the actual game hold down F11 and type scriptinfo without the quotes. A random VAL message will pop down to confirm the mode has been activated. The following keys are used to cycle through a number of pages of debug script and peep info. LeftShift + Tab RightShift + Tab Cycle forward through debug info Cycle backward through debug info Contact Questions? Bugs? Reporting errors? Direct them to me at the following address: wayne@muckyfoot.com Let the mods begin. Wayne Imlach Game Designer www.muckyfoot.com
APPENDIX Peep Types Scutter 1 Wheel_scutter 2 Hover_scutter 3 Police_scutter 4 salt_hog 5 grey 6 gor 7 targ 8 karmarama 9 siren 12 turakken 11 zedem_monk 10 gem_slug 14 penance_suit 15 vermin 19 memau 20 spawn 21 spy 22 Room Types army_surplus 30 beer_bar 34 berth 5 brig 37 cargo_bay 10 casino 35 charger 12 cocktail_bar 33 collector 3 collector_node 4 computer_shop 27 curio_gift_shop 28 disco 16 dry_dock 8 fighting_pit 17 fountain 41 general_store 31 gunner 38 gyro 20 laboratory 7 lavotron 24 lift 2 love_nest 39 music_shop 26 one_star_hotel 21 orophux 19 port 1 recycler 9 rough_bar 32 satcom 14 securitycontrol 15 sick_bay 6 slugpartment 25 sports_shop 29 suite 18 temple 40 three_star_hotel 23 two_star_hotel 22 vendor 13 viewing_gallery 36 workshop 11 Furniture Types Bench 3 Bunk 8 Cell 28 Dispenser 11 flegicali_bar 39 flegicali_bar_table 27 health_charts 9 hurbish_bar 38 hurbish_bar_table 16 lamp 30 litter_bin 17 love_bench 36 love_chair 35 machine_that_goes_ping 13 matter_replicator medi_bed 12 microscope 4 plaza_bench 29 projector 1 replicator 5 slug_bar 40 slug_bar_table 41 spoodian_bar 37 spoodian_bar_table 15 waiting_couch 10 workstation 2 x-ray_machine 14 teevee 42 lavalamp 43 clock 44 plantpot 45 father_zeodorus 31 tower 32 monument 34 gnmerich 18 kategukhat 19 legacy 20 matter 21 mother 22 planetscape 23 endeavour 24 furies 25 uplanter 26 Diseases 1 = Blastocephalis 2 = Blotchy Green 3 = Space Plague 4 = Spawn 5 = Uncommon Cold 6 = Radiation Poisoning 7 = Solar Fever 8 = Luna Psychosis 9 = Nymphitis 10 = Gut Rot 11 = Droop Eye 12 = Hyperactivitus Portable Types Alien_artifact_crate 10 Black_market_goods_crate 8 Bomb_crate 9 Damaged_goods_crate 17 Food_supply_crate 3 Furniture_plan_crate 16 Hard_plan_crate 15 Hardware_crate 4 Industrial_crate 1 Junk 11 Litter 12 Luxury_item_crate 6 Medical_supply_crate 2 Ore_crate 7 Scutter_crate 14 Technology_crate 5 Turdite 13 Plant types tree_ltlm bush_ltlm tree_mtlm bush_mtlm tree_htlm bush_htlm tree_ltmm bush_ltmm tree_mtmm bush_mtmm tree_htmm bush_htmm tree_lthm bush_lthm tree_mthm bush_mthm tree_hthm bush_hthm water_rushes water_weeds water_lily
Technologies (Portables) @alien_artifact @black_market_goods @food_supply @hardware @industrial @luxury_item @medical_supply @ore Technologies (Peeps) @scutter_level1 @scutter_level2 @scutter_level3 @police_scutter Technologies (Furniture) @art_endeavour @art_furies @art_gnmerich @art_kategukhat @art_legacy @art_matter @art_mother @art_planetscape @art_uplanter @beer_bar_bar @beer_bar_table @bunk @cell @clock @cocktail_bar_bar @cocktail_bar_table @dispenser @health_charts @lab_bench @lavalamp @litter_bin @love_bench @love_chair @medi_bed @microscope @plantpot @plaza_bench @plaza_lamp @plaza_monk @plaza_monument @plaza_tower @projector @replicator @rough_bar_bar @rough_bar_table @slug_bar_bar @slug_bar_table @teevee @waiting_chair @workstation @x_ray_machine Technologies (Plants) @tree_ltlm @bush_ltlm @tree_mtlm @bush_mtlm @tree_htlm @bush_htlm @tree_ltmm @bush_ltmm @tree_mtmm @bush_mtmm @tree_htmm @bush_htmm @tree_lthm @bush_lthm @tree_mthm @bush_mthm @tree_hthm @bush_hthm @water_rushes @water_weeds @water_lily Technologies (Rooms) @docking_port @collector @collector_node @beer_bar @berths @brig @cargo_bay @casino @charger @cocktail_bar @def_con @disco @dry_dock @fountain @gallery @gunner2 @hotel_one @hotel_three @hotel_two @laboratory @lavotron @love_nest @orophux @recycler @rough_bar @satcom @slugpartments @shop_music @shop_pooter @shop_curio @shop_sport @shop_army @shop_general @sick_bay @suites @vendor @workshop Panel Id s Demolishbutton Opencratebutton RoompanelOKbutton Powertogglebutton Segmentdoor Peephirefire Peep_mood_health Peep_mood_hunger Peep_mood_toilet Peep_mood_love Peep_mood_fun Peep_mood_tired Peep_mood_happy Addfurniturebutton price_decrease price_increase vendor_price_decrease vendor_price_increase shop_price_decrease shop_price_increase berth_price_decrease berth_price_increase vendor_energy vendor_cargo vendor_ore berth_occupant_previous berth_occupant_next berth_occupant message <messageno> cargobay_category_hardplan cargobay_category_furnplan cargobay_category_techplan cargobay_category_scuzplan cargobay_category_cargo scuzzer_task_repair scuzzer_task_build scuzzer_task_recycle scuzzer_task_clean scuzzer_repairbar scuzzer_powerbar scuzzer_task_lock Sandbox Options OPT_energy (0,1,2) OPT_flares (0,1,2,3) OPT_meteors (0,1,2,3) OPT_quakes (0,1,2,3) OPT_residents (0,1,2,) OPT_research (0,1,2,3) OPT_spies (0,1,2,3) OPT_visitors (0,1,2) OPT_winenergy (200000-1000000, 50000step) OPT_winresearch (1-65, 1step) OPT_winscore (200000 5000000, 100000step) OPT_winterritory (4-48, 1step) OPT_economy (0,1,2) OPT_wincritera (0,1,2,3)