Modding numerical values
You can change most numerical values of Galactic Crew like weapon turret damage, loot chances, firearm properties or enemy's hit points by editing a single XML file. Before you start changing this file, please read an online article about the structure of XML files, if you are not familiar with this file format. You can use any text editor to change it. However, I recommend using a text editor with highlighting. It makes work much easier.
Before you can start changing the values, you must have launched Galactic Crew at least once after Update 36 was published. Then, open your Windows Explorer and type %appdata%\Galactic Crew into the Explorer's address bar and press Enter. There are two folders that are important: Templates and Mods. Open the Templates folder and edit the file Mods.xml with any text editor.
As you can see, the file has four child nodes under its Root: one for each section. First, we will discuss SpaceCombat. This nodes has several child nodes, one for each weapon turret available in Galactic Crew. The values listed here are the base values for these weapon turrets. They might be altered at run-time, e.g. a weapon turret with Epic rareness has an increased rate of fire. This modifier is applied to the base values. Each weapon turret has three properties that can be changed: MinimumDamage, MaximumDamage and RateOfFire. Each time a weapon turret fires, it inflicts a random damage value in the range between MinimumDamage and MaximumDamage. The RateOfFire is the time (in ms) between two shots. Having a RateOfFire of 1000 means that 1 second is in between two shots. Please note that these values apply for all ships, e.g. they are change your enemies' ships! MinimumDamage must be at least 1, MaximumDamage must be a value larger than MinimumDamage and RateOfFire must be at least 500.
Next, I will explain GroundCombat. It lists all firearms available as child nodes. Unlike weapon turrets, firearms always inflict the same amount of damage. As a result, there are two properties that can be changed: Damage and RateOfFire. The firearm inflichts Damage points of damage every RateOfFire ms. The value of Damage must be at least 1 and RateOfFire must be 500 or larger.
Now, we come to the Creatures section. It lists all close-combat enemies. You can change two of their properties: HitPoints and MeleeDamage. HitPoints is the life a creature has. For comparison: crew members start with 200 when you create a new game. Increasing the value to 400 means that this creature has two times the life one of your crew member has by default. The MeleeDamage is a factor that is multiplied to a base value whenever a creature attacks. Unlike the damage of firearms and space weapon turrets, this value is not absolute, but a modifier. You should increase the MeleeDamage carefully. Otherwise, your enemies might become too tough to fight. The HitPoints value must be at least 50 and MeleeDamage must be at least 0.1.
Finally, we come to the Loot section. Each of these items can be looted from enemy spaceships after they have been defeated. The two values are chances in % to loot this item with the "Luck" bonus card (DefaultLootChance) and without it (LuckLootChance). These value are in %. That means having a value of 25 results in a 25% chance to loot this item after space combat. The valid values are between 1 and 100.
After you are done, save the file in the Mods folder. Do not change the file's name! When you start Galactic Crew the next time, it will load this file and use your values.
Writing space quests
You can write your own space quests by creating one or more XML files. Each file can have as many space quests as you want and you can have as many files as you want. If you want to share your work with other people, simply send the files and ask them to copy them into the Mods folder.
As a first step, create a new XML file in the Mods folder. The name of the file must start with the text Quest, so the file name could be Quest.xml, Quest_123.xml, QuestMyStuff.xml, etc. But if can't be something like MyQuest.xml.
The root node of the XML file must be called Quests. It has an attribute called removeBaseQuests. If the attribute's value is True, it means that all (!) space quests from the base game are discarded and only modded quests are used. This is perfect to either test your work or to ignore the original quests, because you don't like them. To keep all original quests in-game, set the value to False. The base file will look like this:
For each quest you want to write, you need to add a child node to Quests. The child node must have the name Quest and two attributes: encounter and text. In case of a space combat, the encounter attributes defines the type of enemy you fight. Possible values for this attribute are Miner, Merchant, Pirate and Scientist. If this quest does not have any space combat, set this attribute to any of these four values. The attribute text contains the text that is shown as text description. I will show an example after the next paragraph.
Each quest must have at least one option the player can select. The two most common options are Okay and Cancel. Every option must be added as a child to the Quest node. The Okay and Cancel options both have just a single attribute text that defines the text that is shown on the buttons. When the user clicks on an Okay button, he gets rewarded. This is normally used for situations in which the player helps someone or he loots from debris. By pressing the Cancel option, the quest is aborted and the player does not get any reward. Have a look at this very simple quest below and how it looks in Galactic Crew.
The Okay and Cancel options are the most common ones. However, there are more options available. Next, I want to show you how to travel to planets and dungeons. In order to travel to a planet, add a child node called Planet. This node also needs an attribute text that contains the text that will be displayed on the in-game button. This button alone is not enough, because the quest also needs to know which planet you want to visit. Therefore, you need to add an additional attribute planet to your Quest node. The text of this attribute specifies the type of planet you want to visit. If there are different versions of the same planet type (like medieval villages or ancient temples), the game will pick a random planet using the specified theme, when the button is clicked. Possible values for the planet attribute are: AncientTemple, CrashSite, FieldLab, MedievalVillage, MiningOutpost, PirateHideout, Scrapyard and WeaponSmuggler. The example below shows a quest that enables travelling to one of the crash site planets.
Dungeons work like planets, butt the XML node is called Dungeon and the Quest node must have an attribute called dungeon. The value of this attribute defines which dungeon type is used, if the player wants to visit the dungeon. Possible values are DrugLab, Mine, Prison, ScienceLab and Temple. Example:
You can also build a decision tree by having sub-quests. You can use the node SubQuest to define a multiple-choice option. This node needs a text attribute like the other options, but it also needs one or more Quest node children. When the user clicks on the SubQuest option, one of the child quests is randomly selected as new quest. This way, you can build decision trees and you can create quests with multiple outcomes. Take a look at the following example:
When the quest is shown, the player has three options: Getting more options, getting rewards or not getting anything. The Cancel and Okay were already discussed. When the player selects the first option, SubQuest, one of its sub-quests are randomly selected as new quest. That means, when the player selects the first option, he or she either gets the quest to visit a dungeon or a quest to visit a planet. Each of the sub-quests follow exactly the same rules as noral quests. This means you can create new sub-quests in these sub-quests creating a large tree of quests and creating all sorts of different outcomes. You can use it to create complex dialogs, if you want.