Interstellaria Guide

Interstellaria Modding: Reference Guide for Interstellaria

Interstellaria Modding: Reference Guide

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

<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.

Text

ex. <text>We have big guns, and we come in peace.</text>

<text> is used to display content in the dialog box.

Choice

<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.

CText

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>.

Reqs

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

Goto

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)

Add Place

<addpl>

Giving Money

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.

Reputation Alteration

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

Item Requirements

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.

Drop Item

ex. <dropItem>drop_krill</dropItem>
*planet only

This command is used to give players inv items or plot items.

Hex

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

Human
  • Sakari
  • Yunqi
  • Xiwang
  • Zephyr
  • Rebirth
  • Earth
  • Shan
  • Trade Co

Anoa
  • Oloke
  • Anoa

Kursha
  • Cyala
  • Cylus
  • Khiori
  • Tumier
  • Buyuran
  • Kuten
  • Kursha
  • Oron
  • Tsaaraa
  • Ongmon
  • Ulu
  • Gadaad
  • Eshou
  • Kere
  • Sluu

Kaidun
  • Kaidun
  • Eshk
  • Ikuu
  • Aibit
  • Ahar
  • K’chou

Suna
  • Ghfi
  • Herafor
  • Wiegre
  • Ott
  • Eler
  • Hain
  • Lein
  • Enfern
  • Grent
  • Jaxackt
Pirate
  • Paren
  • Brand
  • Stadam
  • Ayudar
  • Anskad
  • Tharkad
  • Polv
  • Dumbous
  • Bik
  • Yomin
  • Reekompensa

Bashien
  • Delna
  • Casino

Terran
  • New Terra
  • Kibou
  • Cultus

Others
  • 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.

Items
  • 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

NPC Weapons
  • inventory_gun_conthrow
  • inventory_gun_googun
  • inventory_gun_handgun
  • inventory_gun_knife
  • inventory_gun_needlepistol
  • inventory_gun_needlerifle
  • inventory_gun_shotgun

Ship Weapons
  • 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

Armor
  • 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

Ship Stations

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

Special Items

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.

<dialogue id=”Bashien”> //Hardcoded id, based on ship’s faction. <response> //Response #0 <text>Hello captain. What ya’ want.</text> //Text displayed in NPC’s dialog box. <choice> //Start of first dialog choice data. <ctext>Any trade info?</ctext> //Written text in the player dialog choice box. <goto>1</goto> //When selected this choice will lead to #1 response. </choice> //End of first choice data. <choice> <ctext>Tell us about Bashien.</ctext> <goto>2</goto> </choice> <choice> <ctext>Know anything about Abductions?</ctext> <goto>3</goto> </choice> <choice> <ctext>What’s in the Future for Bashien?</ctext> <req>994=4</req> //To show this choice a req must be met. In this case starmap level 4. <goto>4</goto> </choice> <choice> <ctext>-End Communications-</ctext> <goto>999</goto> //This ends the conversations with no other effect. </choice> </response> //End of response data <response> //Response #1 <text>Y’know we don’t usually share trade data. I tell you what though, the Suna are always great to trade with. They are really interested in DNA for some reason.</text> <choice> <ctext>Let me ask you something else</ctext> <goto>0</goto> //This choice will lead to Response #0. Starting the dialog tree over </choice> </response> <response> //Response #2 <text>Our homeworld is far coreward, well beyond your cheap maps. A lot of us are spreading rimward to seek out new resources and trade partners. The people back home are pretty boring.</text> <choice> <ctext>Let me ask you something else</ctext> <goto>0</goto> </choice> </response> <response> //Response #3 <text>Nope. And why would you ask, I will kill you now for some reason.</text> <choice> <ctext>That escalated quickly…</ctext> <hex>d04648</hex> //This colors the text option to the indicated hex value. Here it is red. <goto>991</goto> //Goto 991 will end comms and enter combat. </choice> </response> <response> //Response #4 <text>Once we build up our little territory here we’ll likely start selling off coreward maps. If all things go well, we’ll end up being the hub between two major territories of space!</text> <choice> <ctext>Let me ask you something else</ctext> <goto>0</goto> </choice> </response> </dialogue> //This closes the dialog content for this particular dialog tree.

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.

<dialogue id=”eshkguy”> //NPCs are spawned in level data, and told what id to use for dialog there. <response> //Response #0. Begins a dialog screen. <text>What do you want?</text> //This text is displayed in the NPC dialog box. <choice> //Start player dialog option. <ctext>What can you tell me about this place?</ctext> //Text displayed in dialog box. <goto>5</goto> //The chat tree progesses to response number 5. </choice> //End Choice. <choice> <ctext>Who are you?</ctext> <req>996=Horizon*2</req> //This choice only appears if requirements are met. In this case the second level on planet Horizon must be unlocked. <goto>1</goto> </choice> <choice> <ctext>–Walk Away–</ctext> <goto>999</goto> //Hardcoded goto destination, ends dialog. </choice> </response> //Ends response data. <response> //Response #1 <text>I’m no one. I’m likely the only Kursha you’ll ever see in Kaidun space.</text> <choice> <ctext>Why’s that?</ctext> <addpl>Kuten*2</addpl> //Lets player see the 2nd level of planet Kuten. <goto>2</goto> </choice> <choice> <ctext>–Walk Away–</ctext> <hex>597dce</hex> //Text displays as hex color. In this case red. <goto>991</goto> //Hardcoded goto destination, ends dialog, turns NPC hostile. </choice> </response> <response> //Response #2 <text>When human kind first reached the stars, the Kaidun and the Kursha were already years into a long border war. The war is what tempered the Kursha sword, and allowed us to Unify the known races into the great empire. The Kursha and the Kaidun do not ‘get along.'”</text> <choice> <ctext>So why are you here?</ctext> <itemreq>inventory_fruit*15</itemreq> //Player needs 15 fruit for this choice to appear. <goto>3</goto> </choice> <choice> <ctext>let me ask you something else…</ctext> <goto>0</goto> </choice> </response> <response> //Response #3 <text>I’ve had… unlawful dealings. Some may say immoral. The ones that would set out to find me wouldn’t look for me here. </text> <choice> <ctext>What did you do?</ctext> <goto>4</goto> </choice> <choice> <ctext>let me ask you something else…</ctext> <dropItem>drop_krill</dropItem> //drops item. Limited in use. Needs experimentation. <goto>0</goto> </choice> </response> <response> //Response #4 <text>I’ve worked too closely with Humans on things that aren’t their business. I now have so much money, yet I can never return home.</text> <choice> <ctext>let me ask you something else…</ctext> <goto>0</goto> </choice> </response> <response> //Response #5 <text>It’s a ghastly Kaidun hole.</text> <choice> <ctext>You should come with me!</ctext> <goto>990</goto> //Hardcoded goto destination, ends dialog, NPC joins crew. </choice> </response> </dialogue> //Ends dialog data.

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.

[<system> [i]//Starts system data.[/i] <id>3</id> //Unique system id. <name>Xiwang</name> //Name of the system, appears when you hover over a system. <maplevel>2</maplevel> //Starmap level. As the game progresses you are shown more planets on your starmap, this indicates at what level you are allowed to see it at. <starcolor>green</starcolor> //Indicates what color star art to use.
<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]

Valid Entries
<starcolor>
  • Blue
  • Green
  • Red
  • Yellow
  • Dark
<starportimage>
  • starport1
  • starport2
  • starport3
  • starport4
  • starport5
  • starport6
  • starport7
<planetimage>
planet_mclass_earth
planet_gas_red
planet_mclass_smallminorcontinent
planet_mclass_smallisland
planet_mclass_lime
planet_mclass_minorcontinents
planet_mclass_jungle2
planet_barren_grayscratches
planet_barren_smallmountains
planet_mclass_jungle
planet_ice_whitepangea
planet_aclass_bluelandmass
planet_water_tiny
planet_water_st
planet_gas_goldy
planet_barren_egg
planet_aclass_bluetiny
planet_water_kursha
planet_barren_blasted
planet_lava_islands
planet_lava_smallcontinents
planet_gas_green
planet_water_water
planet_desert_small
planet_barreny_tino
planet_barren_brownhills
planet_gas_watermelon
planet_gas_purple
planet_barren_dirt
planet_barren_nocloudsdesert
planet_barren_toxic
planet_ice_bluesomewhite
planet_barren_greycontinents
planet_gas_starburst
planet_gas_ugly
planet_barren_smallmoon
planet_barren_desert
planet_barren_dead1
planet_lava_medium
planet_mclass_browncloud
planet_mclass_war
planet_toxic_ayudar
planet_finale
planet_mclass_yellowclouds
planet_mclass_waterymounts
planet_barren_stripes
planet_mclass_grassy
planet_barren_moonlight
planet_gas_yellow
planet_barren_tinymount
planet_lava_mostlylava
planet_mclass_dirty
planet_barren_greymountains
planet_aclass_green
world_trailwardmisc2
planet_gas_pink
planet_gas_lightblue
planet_barren_dead2
planet_toxic_reekompensa

<worldimage>
world_sakari
world_yunqi
world_xiwang
world_zephyr
world_rebirth
world_earth
world_shan
world_hq
world_oloke
world_anoa
world_cyla
world_cylus
world_khiori
world_tumier
world_batai
world_byuran
world_kuten
world_kursha
world_bron
world_tsaaraa
world_ongmon
world_green
world_blue
world_eshou
world_kre
world_kaidun
world_red
world_ekuu
world_aibit
world_char
world_ghfi
world_herafor
world_wigre
world_paren
world_delna
world_casino
world_newterra
world_horizon
world_brand
world_stadam
world_ott
world_ayudar
world_finale
world_misc1
world_misc2
world_eler
world_hain
world_lein
world_enfern
world_grent
world_jaxackt
world_kibou
world_cultus
world_trailwardmisc1
world_trailwardmisc2
world_rimwardtrade
world_pink
world_lightblue
world_dead
world_reekompensa

<levelToLoad>

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!

SteamSolo.com