Overview
This is a reference guide for modding Interstellaria. It is to be a companion to a series of modding tutorials. However, if you like digging into game files and messing around, you’ll find here to be a good place to start.
Overview
Note: This is not a tutorial. It does not explain complex usage of the following commands, instead it is just a list of things you can alter and their effects are. Tutorials should follow shortly explaining in greater detail how to utilize them. However, most of what I know, I will learn from trial and error, so go nuts with it and report back what you find.
Interstellaria has a few files of importance, these are:
- SteamsteamappscommonInterstellariaAssetsResourcesLevelsnpcdialogue.xml
- SteamsteamappscommonInterstellariaAssetsResourcesLevelsstarmap.xml
- SteamsteamappscommonInterstellariaAssetsResourcesTextFilescommdialogue.xml
starmap.xml holds all the information of the starmap as well as some information on planets and levels.
npcdialogue.xml holds all of the planet side conversation data.
commdialogue.xml holds all of the in space conversation data.
As a note, throughout this document almost, if not everything, is case sensitive. So capitalization will always matter. This is an easy way to make a confusing mistake.
Now, the first step to modding Interstellaria is to BACK UP YOUR ORIGINAL FILES.
I REPEAT BACK UP ANY FILE YOU ALTER.
If something goes wrong, which at some point it probably will, you will want to be able to revert back to your base settings. Additionally you should also keep backups of your altered work.
Commands
<response> is the infrastructure of a dialog encounter. For now the start of space comms is hard coded. So you can only alter existing conversations instead of creating new encounters. However there is a lot of flexibility with what we can currently do. Planetside NPCs can have custom dialogs. Everything between <response> and </response> a single screen of a conversation. It presents what the NPC will say, what options the player has to choose, and what those options will then do.
ex. <text>We have big guns, and we come in peace.</text>
<text> is used to display content in the dialog box.
<choice> designates a dialog option. Between <choice> and </choice> are all the details of a single dialog option. From the text of the option, pre-requisites for displaying, color, and effect of a choice.
ex. <ctext>Tell me about humans</ctext>
<ctext> is used to designate what a player dialog option will say. Must be placed within <choice></choice>.
ex. <req>994=2</req>
When <req> is included in a <choice> then certain conditions must be met before that option will become available. Must be placed within <choice></choice>.
- 997=(planet) must be unlocked
- 996=[planet name]*[level] for requires drop zone level
- 994=[maplevel] (requires map level) 0 is tutorial, 1 is when sakari opens up, 2 is when the starmap opens up, 3 is when new terra opens up, 4 is when horizon opens up, 5 is when the zoo opens up
- 993 just means to send an update to your hud (planet only) that your map has been updated
ex. <goto>991</goto>
<goto> is a powerful command in the dialog system. It will allow you to progress a conversation to another step, or to end a conversation with a certain effect. Must be placed within <choice></choice>. When you place a nonhardcode number into <goto> the next dialog screen will be the corresponding response number. The code determines the response number simply by their order.
- <response>Response Data</response> Response 0
- <response>Response Data</response> Response 1
- <response>Response Data</response> Response 2
- <response>Response Data</response> Response 3
Because the automatic numbering begins with 0, instead of 1, it can be a little confusing. So keep an eye on it. If you inject a new response between Response 1 and 2, then the new response will become Response 2, and the original Response 2 will become Response 3.
Hardcoded Gotos
- 999 – End Comms
- 991 – End Comms, Ship/NPC turns hostile.
- 990 – End Comm, Hire NPC (planet side only)
<addpl>
ex. <giveDY>1000</giveDY>
When placed within a <choice> it will make selecting that dialog option give the player the indicated money. Negative numbers do not work with this command.
ex. <addrep>human*-150</addrep>
<addrep> later in the game one faction becomes hostile to the player after being friendly before. This command alters that state. Positive numbers makes them more friendly, negative numbers more hostile. Must be placed within <choice></choice>. The chances of an enemy spawning hostile/neutral/friendly is calculated when they spawn. Positive numbers lead to friendly encounters more often, negative numbers lead to hostile encounters. Jacking the numbers really high/low will result in always friendly/hostile responses. There is some middleground though to play in if you wish. You could make a race slowly turn fully hostile over time for instance.
Faction Titles
- human
- kursha
- kaidun
- anoa
- pirate
- bashien
- suna
ex. <itemreq>inventory_ooze*5</itemreq>
Planet only
This will check to see if the player currently holds the item and in the correct quantity. The example will only show the choice that contains this <req> if the player has 5 Ooze items. When an <itemreq> is successfully used, the indicated items will be removed. A list of items is available in the Inventory Type List.
ex. <dropItem>drop_krill</dropItem>
*planet only
This command is used to give players inv items or plot items.
ex. <hex>597dce</hex>
Hex changes the color of dialog option. Used to signify the result of a choice. Blue used for Plot, Red for Combat. However, this is purely cosmetic. You can use any custom hex color value here. You can find codes here: [link] (remove the #)
Codes already used in game
- 597dce Blue
- d04648 Red
Planet List
- Sakari
- Yunqi
- Xiwang
- Zephyr
- Rebirth
- Earth
- Shan
- Trade Co
- Oloke
- Anoa
- Cyala
- Cylus
- Khiori
- Tumier
- Buyuran
- Kuten
- Kursha
- Oron
- Tsaaraa
- Ongmon
- Ulu
- Gadaad
- Eshou
- Kere
- Sluu
- Kaidun
- Eshk
- Ikuu
- Aibit
- Ahar
- K’chou
- Ghfi
- Herafor
- Wiegre
- Ott
- Eler
- Hain
- Lein
- Enfern
- Grent
- Jaxackt
- Paren
- Brand
- Stadam
- Ayudar
- Anskad
- Tharkad
- Polv
- Dumbous
- Bik
- Yomin
- Reekompensa
- Delna
- Casino
- New Terra
- Kibou
- Cultus
- Station Horizon
- The Zoo
Inventory Item Lists
Fortunately these these items are pretty self explanatory. It is not currently fully comprehensive. There are some unique items not shown. Items that are tied to some quests or random drops may not be listed. I will attempt to track these down. If you have an item in your cargo, the code name will be present in your save file though if you want to find something on your own.
- inventory_artifact
- inventory_data
- inventory_dna
- inventory_dynium
- inventory_firestone
- inventory_fruit
- inventory_gas
- inventory_plant
- inventory_podone
- inventory_puddle
- inventory_pwater
- inventory_scrap
- inventory_vine
- inventory_warrelics
- dogtreat
- inventory_gun_conthrow
- inventory_gun_googun
- inventory_gun_handgun
- inventory_gun_knife
- inventory_gun_needlepistol
- inventory_gun_needlerifle
- inventory_gun_shotgun
- inventory_artillery
- inventory_disintegrator
- inventory_emp_one
- inventory_ewar_one
- inventory_missile_kaidun
- inventory_missile_one
- inventory_missile_two
- inventory_nano_Deconstructor
- inventory_nuke
- inventory_overloader
- inventory_projectile_anoa
- inventory_projectile_newterra
- inventory_projectile_one
- inventory_armor_blueshorts_leggings
- inventory_armor_bow_helmet
- inventory_armor_eyepatch_helmet
- inventory_armor_piratecoat_chestpeice
- inventory_armor_plainblack_leggings
- inventory_armor_plainblue_chestpeicetee
- inventory_armor_plainblue_leggings
- inventory_armor_plainbrown_leggings
- inventory_armor_plaingray_leggings
- inventory_armor_plaingreen_chestpeicetee
- inventory_armor_plainred_chestpeicetee
- inventory_armor_redbandana_helmet
- inventory_armor_spacesuit_chestpeice
- inventory_armor_spacesuit_helmet
- inventory_armor_spacesuit_leggings
- inventory_armor_spelunky_helmet
All ship stations are upgraded by replacing “_one” with “_two” or “_three”.
- inventory_station_engineering_huaman_one
- inventory_station_entertainment_huaman_one
- inventory_station_food_huaman_one
- inventory_station_medical_huaman_one
- inventory_station_navigation_huaman_one
- inventory_station_scanner_huaman_one
- inventory_station_sleep_huaman_one
- inventory_station_tactical_huaman_one
This includes spoilers for hidden content.
- inventory_gun_sword
- inventory_krill
Annotated commdialogue.xml Sample
This code is based on in game code found in the commdialogue.xml file. It has been altered to include a greater variety of commands.
Annotated npcdialogue.xml Sample
This code is based on in game code found in the npcdialogue.xml file. It has been altered to include a greater variety of commands.
Annotated Starmap.xml Sample
Note: Currently there is no way to create new maps (even copying existing maps and renaming them will not work). You can create new systems, but at the moment you would need to use/alter existing level names to populate it with.
<x>50</x> //X coordinate on the Starmap.
<y>42</y> //Y coordinate on the Starmap.
<details>Xiwang – Human. Wildlife Preserve.</details> //Info displayed on starmap when seleting a system.
<planetimage>planet_mclass_smallminorcontinents</planetimage> //Planet displayed on the ship screen.
<worldimage>world_xiwang</worldimage> //World image displayed on the landing screen.
<startingZones>1</startingZones> //When the game starts this is the default value. In this instance the only level to appear on the planet screen will be the first one. You can alter this later with <addpl> to allow people access to further levels.
<levelData> //Start data for level 1.
<levelToLoad>xiwang_hills</levelToLoad> //Directs the game to a hardcoded list, that informs which level data to load upon choosing this destination.
<title>overworld</title> //Name to appear on planet view above traingle selection.
<x>-20</x> //X coordinate on the planet map.
<y>-28</y> //Y coordinate on the planet map.
</levelData> //End level data.
<levelData> //Start data for level 2.
<levelToLoad>xiwang_underground</levelToLoad>
<title>Underground</title>
<x>-8</x>
<y>-10</y>
</levelData>
<levelData> //Start data for level 3.
<levelToLoad>xiwang_caves</levelToLoad>
<title>Caves</title>
<x>30</x>
<y>20</y>
</levelData>
<starportimage></starportimage> //Places a starport on the planet map. The coordinates of the station is fixed to around “x.-35, y.60”. Station art is located in images_starsplanets.png.
<trade></trade> //Depreciated
<repair></repair> //Depreciated
<hire></hire> //Depreciated
<shipyard></shipyard> //Depreciated
<tradeitems></tradeitems> //Depreciated
<ships></ships> //Depreciated
</system> //End system data.[/code]
- Blue
- Green
- Red
- Yellow
- Dark
- starport1
- starport2
- starport3
- starport4
- starport5
- starport6
- starport7
Currently this is the kink in the pipeline for the creation of new maps. You MUST use an existing map name here. The ability to load certain levels is hardcoded. This is not an easy fix and would take time on the Developer’s part. Possibly down the line this will be worked around, but for now you MUST place existing level names here. There are too many to list as I have with the world and planet images. They are easy to find in the SteamsteamappscommonInterstellariaAssetsResourcesLevelsstarmap.xml file though. Just open the file and find the <levelToLoad> data and work from there!