Halcyon 6: Lightspeed Edition

Halcyon 6: Lightspeed Edition

26 个评价
Official Modding Guide [ALPHA]
由 Grendel 制作
This is the official Halcyon 6: Lightspeed Edition Modding Guide [ALPHA].

This guide and modding functionality is currently in the ALPHA phase and is a work in progress and will be continually updated. The purpose of releasing this guide ahead of Steam Workshop integration is to allow for the modding community to provide feedback, request assistance, and get a head start on creating their mods in anticipation of Steam Workshop integration, which is expected to be released in Late Fall 2017.

Feedback is appreciated and welcome, as are specific requests for clarifications on the scripts. Please respond on the Mod Forums and not in the comments here, as we will not be able to manage them as easily as in the Forums.

[Last updated August 16, 2017]
   
奖励
收藏
已收藏
取消收藏
Introduction
StreamingAssets Folder
From the beginning of H6’s development, we’ve tried to keep modding in mind and divided the architecture into 2 separate sections: the core engine which is built in Unity 3D, written in C#, and the easily moddable scripts, written in Lua.

The moddable scripts are all contained in the “/StreamingAssets” folder, divided into various “.h6module” folders.
To access “/StreamingAssets” folder, in Steam right-click on the game in your library and select Properties. In the popup go to Local Files > Browse Local Files... and in the window that pops up open the folder H6_Data to find the “/StreamingAssets” folder.
  • “mdi_baseline”
    - core baseline script repository that is referenced by all campaigns
  • “mdi_main_campaign”
    - contains all the event scripts, dialogue, and scenario data for the main campaign. Inherits from “mdi_baseline”
  • “mdi_tutorial”
    - contains all the scripts related to the main campaign’s tutorial. Inherits from “mdi_main_campaign”
  • “mdi_lightspeed_main_campaign”
    - contains all scripts that were modified for the new Lightspeed version. Inherits from “mdi_main_campaign”
  • “mdi_lightspeed_tutorial”
    - contains scripts related to the Lightspeed version’s tutorial. Inherits from “mdi_lightspeed_main_campaign”

H6’s modules use inheritance and overriding to determine which scripts to use. A script that exists in the module that has the same file path as another module that it inherits from is overridden with the current module’s script. Any scripts that do not exist in the current module are referenced in the inherited module’s scripts, or in any module along the inheritance path, all the way to the baseline.

Example:
  • Open the file “/mdi_lightspeed_main_campaign.h6module/main.lua”
  • Notice the first line says:
    inherit = {"mdi_main_campaign"}

This means that all the files from “/mdi_main_campaign.h6module” will be used UNLESS a file with the same file path and name exists in the Lightspeed module.

For example, look inside the folder “/mdi_lightspeed_main_campaign.h6module/events” and also look inside “/mdi_main_campaign.h6module/events”. The Lightspeed module only contains some of the scripts from the original campaign module. These are the files where we wanted the events to differ from the original campaign. For all other events, the Lightspeed module will use the scripts in the original campaign folder.

For best practices, we advise you then to NOT modify any of the original files. Instead, you should create your own mod folder and simply copy the files that you wish to edit into your new mod folder, maintaining the existing folder hierarchy. Your new files would override the existing script files and simply inherit the rest.

Final note: Many changes were made, fast and furious, during Halcyon 6’s development process, Early Access, and even post-Release. As a result, unfortunately, there may be remnants of old code and properties that were, perhaps at one time, relevant, but either were thrown out or not deemed important to the gameplay. However, we never really had the time to go back and clean out the deprecated code or properties from our scripts, so you may find things not documented here. In most cases, they can just be ignored and considered deprecated.
Changelog
  • August 16, 2017 - Added Starbase Rooms
  • August 15, 2017 - Added Power & Effect Animation sections 1-4
  • August 14, 2017 - Initial creation of the Official Modding Guide (How to Create A Mod, Officers, Starships, Loadouts, Powers, Effects)
How to Create A Mod
DISCLAIMER: Currently, we don’t support Steam Workshop but once we do, the process to create and install a mod WILL change. We are currently aiming for a Late Fall update that will support Steam Workshop and enabling multiple mods.

Creating your “.h6module” Mod folder
Create your new H6Module at the same folder level as the other existing “.h6module” folders. Make sure that you add the “.h6module” suffix to the name of the folder.

Example H6Module mod folder name: “/my_example_mod.h6module”

Required Files
For every mod, you should include the following files:
  • main.lua
  • properties.lua

main.lua
Main configuration file for the module
  • resources
    - list of resources available
    - all valid resources must be registered here
  • morale
    - list of morale types available
    - all valid morale types must be registered here
  • ship_construction_filters
    - list of the ship type tabs to be displayed on the Ship Construction screen
  • officer_activity_types
    - list of the officer activity attributes
    - all valid officer activity attributes must be registered here
  • combat_status_effects
    - list of all the primary combat status effects
    - all valid primary combat status effects must be listed here
  • fleet_travel_time
    - default travel time for fleets to move 1 unit of distance (in milliseconds)
  • event_scripts
    - list of event scripts loaded into the engine
    - all event scripts should be registered here
    - not needed for “/quest” scripts (see Quest scripts)
  • include statements
    - list of scenario data to include in the module
    - all scenario data accessed must be registered here

properties.lua

Property file for the module
  • inherit [REQUIRED]
    - determines which module to inherit
  • name
    - title of module
  • description
    - long description of the module
  • image
    - display image for the module
  • sorting_order
    - sort order priority when being displayed in the list of modules (0 = highest)
  • default_selection_priority
    - 1 = select as default, 0 = not selected
    - there should only be one module selected as default

Script Files
To mod existing script files, simply copy over the existing script file from another module, recreating its entire folder structure and path, and make the chances in your new mod folder.

Example, modify Terran Tier 1 - Rogue Starship:
  1. Create a new “my_mod.h6module” mod folder in “/StreamingAssets”
  2. Create “main.lua” script that inherits from “mdi_lightspeed_main_campaign”
  3. Create “properties.lua” script that specifies all the necessary data to identify your module
  4. Create a “/ships” subfolder in the new module folder
  5. Copy “terran_tac1.lua” from “/mdi_baseline.h6module/ships” to “/my_mod.h6module/ships”
  6. Edit “/my_mod.h6module/ships/terran_tac1.lua”
  7. Start Halcyon 6, select New Game and select your mod name as the campaign.

Once we have Steam Workshop integration, you will be able to select which mods you can have activated at once, but for this Alpha phase, only a single mod at a time is supported.
Officers
Officer scripts can be found in “/mdi_baseline.h6module/officers/” under their own folders. Each folder represents an individual officer and contains the necessary data for that officer.
  • “properties.lua”
    - Contains the data on officer
  • “/animations”
    - Contains the animation data and sprites

There are 2 types of officers, regular officers (both friendly and enemy) whose properties are pre-scripted, and the backer custom officers who have no properties but instead are custom configured by the player in the game. We will detail primarily how to edit regular officers as the custom officers are a just subset of the regular officers.

Editing Existing Officers
Officer Properties
You can edit the “properties.lua” script in the officer folder and alter the following values:
  • name
    - name of the Officer
  • class
    - officer’s class (see Officer Classes)
  • portrait
    - location of the portrait sprite
  • tooltip
    - text that appears when hovering over the officer
  • description
    - officer’s bio
  • xp_table
    - XP advancement table that this officer should follow
  • initial_loadouts
    - loadouts that the officer should get on creation (see Loadouts)
  • idle_animation, hit_animation, destruction_animation
    - basic animation script names
  • animation_table
    - animation table listing the animation scripts specific for this officer
  • script_data
    - script_data is a catch all storage place for scripting specific data
    - combat_dialogue
    :stores the officer’s context sensitive combat barks

Officer Animations & Head Sprites
Work in progress...

Officer Body Sprites
Work in progress...


Creating New Officers
When creating new officers for Halcyon 6, there are a few different ways they can be added to the game. You can add them as a special custom officer that the player can manually select and create. You can add the officer to the random officer rotation when awarding new officers. Or you can specifically grant them in via event scripting.

Adding Officers to Custom Selection (Epic)
At the start of the game, and at select points during the campaign, you have the option of creating your own custom epic officer. If you want to add your own custom officer to this list then you will have to add the name of the officer script folder to the “custom_officer_profiles” table in “/scenario_data/officer_customization.lua”

Example:
  1. Create a new officer script folder in “/officers” in your mod folder, (ie. “/my_new_officer”)
  2. Create the “properties.lua” and animations data for your officer
  3. Create new “/scenario_data” folder in your mod folder
  4. Copy “/scenario_data/officer_customization.lua” from your inherited modules scripts into your mod’s “/scenario_data” folder
  5. Edit your mod’s “/scenario_data/officer_customization.lua” and add your officer script folder into the “custom_officer_profiles” table

Adding Officers to Random Selection
During Halcyon 6, you are given the option to choose a randomly selected officer to add to your roster. To add your own officer to this pool of officers, you will need to add them to the “terran_tactical_officers”, or “terran_engineering_officers” or “terran_science_officers” tables in “/scenario_data/fleets/officers.lua” respectively.

Example:
  1. Create new officer script folder in “/officers” in your mod folder, (ie. “/my_new_officer”)
  2. Create the “properties.lua” and animations data for your officer
  3. Create new “/scenario_data/fleets/” folder structure in your mod folder
  4. Copy “/scenario_data/fleet/officers.lua” from your inherited modules scripts into your mod’s “/scenario_data” folder
  5. Edit your mod’s “/scenario_data/fleet/officers.lua” and add your officer script folder into the table for that officer class (“terran_tactical_officers” or “terran_engineering_officers” or “terran_science_officers” respectively)

Adding Officer via Event Scripting
(Documentation regarding Event Scripting coming soon...)
If you would like to award an officer to the player as a result of a quest or activity via event scripting, then you can do so with the following:

function e:start(p) local data = { ["title"] = "Officers", ["message"] = "You've rescued Zulf Maddox!", ["entries"] = { { ["officer"] = "eng_zulf_maddox", }, }, ["callback_event"] = self.name, ["callback_method"] = "get_officer", ["customizable"] = false, } DisplayOfficerSelection(data) end function e:get_officer(p) local officer = fetch(p, "officer", nil).Officer AddOfficerToFaction(officer, Game.PlayerFaction) TrackOfficer(officer) end

  1. Create a table that contains all the info required for displaying the Officer selection popup
    - “title” - popup title
    - “message” - the message displayed at the top of the popup
    - “entries” - the list of officers to choose from
    - “callback_event” - the name of the event to be called after player has chosen
    - “callback_method” - the name of the method to be called in “callback_event”
    - “customizable” - whether or not the player can create a custom epic officer instead
  2. DisplayOfficerSelection(data)
    - displays the officer selection popup to the player
  3. AddOfficerToFaction(officer, faction)
    - adds the officer to the corresponding faction
  4. TrackOfficer(officer)
    - adds officer to an internal list of “seen” officers so they will not be available for recruitment again later in the game
Officer Classes
Officer class scripts can be found in “/mdi_baseline.h6module/officer_classes/” under their own folders.
There are a few different types of officer classes:
  • Base Classes - Engineering, Science, Tactical
    - used in most parts of the game to determine class
  • Main Classes - Inventor, Mechanic, Physicist, Biologist, Operative, Strategist
    - assigned to officers to determine their skill trees
  • Prestige Classes - Chaos Theorist, Commando, Counselor
    - unlockable prestige classes that an officer can attain at higher levels
  • Other Classes
    - special classes used by other officers and enemies

Similar to the officer script folders, they contain a “properties.lua” file and animations folder. However, any attributes or animations not found in the officer’s script file will be inherited from its officer class scripts.

Officer Class Properties
You can edit the “properties.lua” script in the officer class folder and alter the following values:
  • name
    - name of the officer class
  • base_class
    - filename of the base class, if applicable
  • prestige_class
    - name of the unlockable prestige class, if applicable
  • health
    - base health
  • aim
    - base aiming %
  • evasion
    - base evasion %
  • speed
    - base speed (50 is normal)
  • critical_chance
    - base critical hit %
  • damage_min, damage_max
    - base damage range
  • threat
    - base threat value
  • strength_rating
    - arbitrary value to determine relative strength of unit
  • damage_resistance
    - table to determine base resistance to damage types
  • damage_bonus_vs_class
    - table to determine base bonus damage against another class
  • activity_points_generated
    - table to determine starting attribute points for each activity skill
  • initial_loadouts
    - loadouts that the officer should get on creation (see Loadouts)
  • skill_tree
    - table defining the officer class’s skill tree
    : id = file path for the skill node
    : location = location of the skill node in the tree, using (x,y) coordinates system
    : minimum_level = minimum level before the node is unlocked
    : required_skills = required skills before the node is unlocked, determines branching
    : skill_group = “prestige” or “”
    : enter_prestige = true, changes officer to prestige class when this node is obtained
  • core_space_powers
    - list of space combat powers that are displayed during officer selection
  • core_ground_powers
    - list of ground combat powers that are displayed during officer selection
  • core_prestige_powers
    - list of prestige class combat powers that are displayed during officer selection
  • core_space_proficiencies
    - status effect that is listed as a proficiency during officer selection
  • core_space_resistances
    - status effect that is listed as a vulnerability during officer selection

Officer Class Animations & Head Sprites
Work in progress...

Officer Class Body Sprites
Work in progress...
Officer Skills
Officer skill scripts can be found in “/mdi_baseline.h6module/skills/” under their corresponding officer class folders.
Officer skills are the nodes that are unlocked in the officer’s skill tree by using skill points obtained when levelling up.

Officer Skill Script
An officer skill script can contain the following properties:
  • name
    - display name of the skill node
  • description
    - detailed description of the skill node
  • icon
    - icon image displayed
  • priority
    - the order in which the officer’s various skill scripts process() methods are executed (1 = first; skills lower in the skill tree should be executed first)
  • color_normal, color_inactive, color_disabled
    - the tint color of the skill node in various states
  • process(params)
    - a Lua method that is executed during a Loadout execution to grant / remove powers and traits

Example Lua methods for process(params):
Add Ship Combat Power
params["results"].AddPower("eng_quick_tune_up1")
Remove Ship Combat Power
params["results"].RemovePower("eng_quick_tune_up1")
Add Ground Combat Power
params["results"].AddOfficerPower("gc_eng_kirkish_haymaker1")
Remove Ground Combat Power
params["results"].RemoveOfficerPower("gc_eng_kirkish_haymaker1")
Add Ship Combat Officer Trait
params["results"].AddTrait("class_traits/mechanic/mec5_3_trait")
Remove Ship Combat Officer Trait
params["results"].RemoveTrait("class_traits/mechanic/mec5_3_trait")
Add Ground Combat or General Officer Trait
params["results"].AddOfficerTrait("class_traits/mechanic/mec1_2_trait")
Remove Ground Combat or General Officer Trait
params["results"].RemoveOfficerTrait("class_traits/mechanic/mec1_2_trait”)
Starships
Starship scripts can primarily be found in “/mdi_baseline.h6module/ships/”, however some ships were modified for Lightspeed Edition and they can be found in “/mdi_lightspeed_main_campaign.h6module/ships/”.

Starship Script
A starship script can contain the following properties:
  • name
    - display name
  • race
    - default faction race
  • class
    - base class of the ship
  • tier
    - tier of the ship
  • template
    - starship class name
  • tooltip
    - text for tooltip hovers
  • description
    - text for description
  • sprite
    - default ship sprite
  • construction_time
    - default time in days to construct
  • construction_cost
    - default cost to construct, as a Lua table of resources
  • repair_cost
    - default cost to fully repair, as a Lua table of resources
  • scrap_reward
    - default rewards to scrap, as a Lua table of resources
  • kill_reward
    - default rewards to destroy, as a Lua table of resources
  • health
    - default maximum health
  • damage_min
    - minimum base damage
  • damage_max
    - maximum base damage
  • speed
    - base speed
  • evasion
    - base evasion %
  • critical_chance
    - base critical chance %
  • strength_rating
    - arbitrary value to determine relative strength of unit, used in balancing random fleet generation
  • threat
    - base threat
  • aim
    - base aim %
  • xp_table
    - XP advancement table that this ship should follow
  • script_data
    - script_data is a catch all storage place for scripting specific data
    - xp_reward = amount of XP awarded for defeating this ship
    - tier = tier of the ship, as an integer
  • loadout_slots
    - number of powers that this ship is allowed to customize
  • equipment_slots
    - number of ship equipment slots that this ship has
  • initial_loadouts
    - ship’s initial loadout scripts
  • idle_animation, hit_animation, destruction_animation
    - basic animation script names
  • damage_resistance
    - table of damage resistances / vulnerabilities
  • damage_bonus_vs_class
    - base damage bonus versus another base class
  • required_traits
    - list of officer traits that are required to command this ship
  • sprite_levels
    - list of sprites to represent the ship at various damage levels (100 = 100% ship health)

Customizing Starship Sprites
Work in progress...

Adding Starship Class via Event Scripting
(Documentation regarding Event Scripting coming soon...)
If you would like to unlock a Starship class to be built as a result of a quest, activity or other event via event scripting, then you can do so with the following:

DiscoverPrototype("terran_tiny1")
  • where the parameter is the name of the ship script
Loadouts
Loadout scripts can primarily be found in “/mdi_baseline.h6module/loadouts/”, however some loadouts were modified for Lightspeed Edition and they can be found in “/mdi_lightspeed_main_campaign.h6module/loadouts/”.

Loadouts are scripts that assign combat powers, traits, and equipment to officers and ships. In general, there are the following types of loadouts:
  • Combat Power Loadouts
    - for every combat power, there is a corresponding loadout specifically for that power
  • Officer and Ship Trait Loadouts
    - for every officer perk, personality trait, ship bonus, there is a corresponding loadout specifically for that trait
  • Faction Loadouts
    - loadouts that define resistances and vulnerabilities for each faction and their ships
  • Officer and Ship Loadouts
    - base loadouts for specific officers and ship types

Loadout Script
A loadout script can contain the following properties:
  • name
    - display name
  • tooltip
    - text for tooltip hovers
  • icon
    - icon image to be displayed
  • priority
    - the order in which the unit’s various loadout scripts process() methods are executed (lower = first)
  • hidden
    - hide this loadout from the available powers list when customizing a ship’s power configuration
  • process(params)
    - a Lua method that is executed during a Loadout execution to grant / remove powers and traits

Example Lua process(params) methods:
  • Add Ship Combat Power
    params["results"].AddPower("eng_quick_tune_up1")
  • Remove Ship Combat Power
    params["results"].RemovePower("eng_quick_tune_up1")
  • Add Ground Combat Power
    params["results"].AddOfficerPower("gc_eng_kirkish_haymaker1")
  • Remove Ground Combat Power
    params["results"].RemoveOfficerPower("gc_eng_kirkish_haymaker1")
  • Add Ship Combat Officer Trait
    params["results"].AddTrait("class_traits/mechanic/mec5_3_trait")
  • Remove Ship Combat Officer Trait
    params["results"].RemoveTrait("class_traits/mechanic/mec5_3_trait")
  • Add Ground Combat or General Officer Trait
    params["results"].AddOfficerTrait("class_traits/mechanic/mec1_2_trait")
  • Remove Ground Combat or General Officer Trait
    params["results"].RemoveOfficerTrait("class_traits/mechanic/mec1_2_trait”)
Powers
Power scripts can be found in “/mdi_baseline.h6module/powers/”.

Powers are the selectable combat powers in both space and ground combat.

Power Script
A power script can contain the following properties:
  • name
    - display name
  • tooltip
    - text for tooltip hovers
  • icon
    - icon image to be displayed
  • description
    - text for description of the power
  • type
    - can be an arbitrary string but we do use the following conventions for combat AI power selection (“attack”, “buff”, “debuff”, “heal”)
  • preparation_time
    - the delay, in seconds, between using this power and it actually firing (a combat turn is 3 seconds)
  • warmup_time
    - the delay, in seconds, before a power can be used from the beginning of combat (a combat turn is 3 seconds)
  • recovery_time
    - the delay, in seconds, before the unit can act again after using this power (a combat turn is 3 seconds)
  • cooldown_time
    - the delay, in seconds, before the unit can use this power again (a combat turn is 3 seconds)
  • threat
    - the amount of threat generated by using this power
  • limited_use
    - determines if this power has a limited number of uses in a single combat
  • use_count
    - determines the amount of limited uses of this power in a single combat
  • is_consumable
    - determines if this power must be replenished by returning to the starbase
  • consumable_count
    - determines the amount of uses of this power before they have to return to the starbase
  • hit_type
    - determines the target of this power; valid values are: “all”, “all_allies”, “all_enemies”, "target", "target_allies", "target_enemies" or "self"
  • has_volley
    - determines if this power can be evaded (true = can be evaded)
  • text_color
    - determines the color of the text that is displayed when the power is used
  • can_be_disrupted
    - determines if this power can be disrupted by Weapons Disruption or not
  • animation_script
    - determines the animation script to execute when this power is used
  • attribute_modifiers
    - determines any attributes that are affected when using this power; ie. if we want a power to have a lower to-hit %, then we could have:
    attribute_modifiers = { aim = -10 }
    , which would reduce the to-hit by 10%
  • exploited_effects
    - determines which status effect to display as the effect that was exploited by this power. This does NOT actually inflict the exploited damage nor remove the effect from the target unit(s).
  • damage_types
    - determines what type of damage (can be arbitrary) and how much % of the unit’s base damage, to inflict; ie
    damage_types = { propulsion_damage = 100 }
    - inflicts propulsion damage, which does extra damage to units that are vulnerable to propulsion damage
    damage_types = { immobilized_damage = 125 }
    - inflicts immobilized damage, which does extra damage to units that have been immobilized
    damage_types = { heal_damage = -300 }
    - inflicts heal damage, which is negative, and heals the target(s)
    damage_types = { damage = 40 }
    - inflicts generic damage
  • source_effects
    - determine which effects to apply to the unit activating the power
  • target_effects
    - determine which effects to apply to the targeted unit
    - only applicable when hit_type = “target”, “target_allies”, or “target_enemies”
  • ally_effects
    - determine which effects to apply to your allied units
    - only applicable when hit_type = “all”, “all_allies”
  • enemy_effects
    - determine which effects to apply to all enemy units
    - only applicable when hit_type = “all”, “all_enemies”
  • source_effects_nullify
    - determine which effects to remove from the unit activating the power
  • target_effects_nullify
    - determine which effects to remove from the targeted unit
    - only applicable when hit_type = “target”, “target_allies”, or “target_enemies”
  • ally_effects_nullify
    - determine which effects to remove from your allied units
    - only applicable when hit_type = “all”, “all_allies”
  • enemy_effects_nullify
    - determine which effects to remove from all enemy units
    - only applicable when hit_type = “all”, “all_enemies”

For applying effects, a table of the effects and special conditions can be applied.
For example:
target_effects = { { name = "effect_sci_siphon_dark_matter_target1", tethered = "effect_sci_siphon_dark_matter_source1", }, { name = "status_panicked", proc_chance = 95 }, { name = "effect_tac_epic_onis_vortex2", prerequisites = { "effect_tac_epic_onis_vortex1" }, } }

  • name = the name of the effect script to apply
  • tethered = the name of the effect script that this effect is tethered to, meaning if the source effect is stopped, then this effect stops as well
  • proc_chance = the base % chance that this effect will land on the target unit, if proc_chance is not specified, then it will always land
  • prerequisites = required status effects that have to already be applied on the target unit for this effect to be able to land

Power Animations
Animation scripts can be found in “/mdi_baseline.h6module/animations/”. Not all animation scripts are power animations, some are effect animations as well.

Creating Custom Power Animations
Work in progress...

Creating Custom Graphics for Power Animations
Work in progress...
Effects
Effect scripts can primarily be found in “/mdi_baseline.h6module/effects/”, however some effects were modified for Lightspeed Edition and they can be found in “/mdi_lightspeed_main_campaign.h6module/effects/”.

Effects are scripts that specify combat status effects, ship upgrades, or officer, ship, class, morale, or faction traits. In general, anything that applies some sort of change onto something else can be done via an effect script. Here are some types of effects:
  • Combat Status Effects
    - for every combat status effect, there is a corresponding effect script specifically for that status effect, buff, debuff, damage over time, or heal over time effect
  • Ship Upgrades
    - the effects that a ship upgrade has on a ship when applied
  • Faction Traits
    - faction based resistances and vulnerabilities
  • Officer Class, Perks, Personality, and Stats Traits
    - effects applied when unlocking skill nodes for an officer class, defining perks, personality, stats, and ship command traits
  • Morale Traits
    - effects applied on varying levels of morale
  • Ship Equipment Effects
    - effects applied when equipping various ship equipment
  • Difficulty Based Damage and Health Changes
    - effect scripts changing enemy damage and health for various difficulty levels
  • Starbase Effects
    - effect scripts that affect the faction based on starbase upgrades

Effect Script
An effect script can contain the following properties:
  • name
    - display name of the effect
  • icon
    - display icon of the effect
  • tooltip
    - display hover tooltip of the effect
  • description
    - display description of the effect
  • category
    - describes the type of effect
    - buff = a positive combat buff
    - debuff = a negative combat debuff
    - trait = an effect that is displayed in the Traits section of an Officer
    - elite_crew = an effect that is displayed in the Elite Crew section of a ship
    - hidden_trait = an effect that is not displayed anywhere
    - affinity_bonus = [DEPRECATED]
  • text_display, text_color, text_type
    - defines what is displayed in combat when the status effect is applied
  • target_type
    - for combat effects, “ship” or “officer”
  • animation_script
    - determines the animation script to execute when this effect is applied in combat
  • resisted_animation_script
    - determines the animation script to execute when this effect is resisted in combat
  • element
    - used to determine resistance against this effect being applied (see chance_to_be_hit_modifier_percentages)
  • duration
    - the duration time in seconds that this effect will last (3 seconds per combat turn)
  • expiry
    - false = never expires
    - (default = true)
  • crew_panicked
    - true = chance that the unit will act out on its own and use an attack power of its choice while this effect is applied
  • weapons_disrupted
    - true = randomly disables an attack power while this effect is applied
  • stunned
    - true = stuns the ship and prevents them from taking their turn
  • armor
    - number value that determines the maximum damage the unit can take from a single attack while this effect is applied
  • dps
    - the amount of damage this effect does per second of a specific damage_type (see Powers)
  • relative_dps
    - the amount of damage this effect does per second of a specific damage_type, determined as a percentage of the unit’s base damage
  • attribute_modifier_amounts
    - changes to attributes, in points, when this effect is applied (see below for expanded list of possible attributes)
  • attribute_modifier_percentages
    - changes to attributes, as a percentage, when this effect is applied
  • damage_resistance_percentages
    - resistances to specific damage_types as a percentage
  • damage_vulnerability_percentages
    - vulnerabilities to specific damage_types as a percentage (determines EXPLOITABLE effects)
  • chance_to_be_hit_modifier_percentages
    - chance as a percentage, to resist having an effect of a specific “element” applied
  • damage_bonus_vs_faction_percentages
    - bonus damage, as a percentage, done against specified factions
  • damage_resistance_vs_faction_percentages
    - damage resistance, as a percentage, against specified factions
  • damage_bonus_vs_class_percentages
    - bonus damage, as a percentage, done against specified classes
  • damage_resistance_vs_class_percentages
    - damage resistance, as a percentage, done against specified classes
  • follow_up_effects
    - applies this effect immediately after this effect expires
  • activity_point_modifier_amounts
    - officer trait, grants class skill points for activities
  • label_name, label_value
    - the label name and value, when displayed as a trait in Morale listings

Deprecated Fields
The following fields are no longer used:
  • systems_down
  • required_systems
  • damage_modifier_percentages
  • damage_modifier_amounts
  • damage_resistance_amounts
  • damage_threshold_modifier_percentages
  • damage_threshold_modifier_amounts
  • effect_category_resistance_percentages

Modifiable Attributes
List of possible attributes that can be modified in attribute_modifier_amounts and attribute_modifier_percentages:
Combat Attributes
  • aim
  • health
  • evasion
  • speed
  • damage_min
  • damage_max
  • critical_chance
  • critical_damage (additional as a percentage)
  • threat

Faction Attributes
  • resource_multiplier_<RESOURCE_ID>
  • min_morale_<MORALE_ID>
  • max_morale_<MORALE_ID>
  • fleet_travel_time
  • officer_heal_cost_<RESOURCE_ID>
  • <OFFICER_CLASS>_officer_heal_cost_<RESOURCE_ID>
  • ship_construction_time
  • ship_construction_cost_<RESOURCE_ID>
  • <SHIP_CLASS>_ship_construction_cost_<RESOURCE_ID>
  • ship_scrap_reward_<RESOURCE_ID>
  • <SHIP_CLASS>_ship_scrap_reward_<RESOURCE_ID>
  • ship_repair_cost_<RESOURCE_ID>
  • <SHIP_CLASS>_ship_repair_cost_<RESOURCE_ID>
  • ship_kill_reward_<RESOURCE_ID>
  • <SHIP_CLASS>_ship_kill_reward_<RESOURCE_ID>
  • crew_recovery
  • room_construction_time
  • room_construction_cost_<RESOURCE_ID>
  • starbase_exploration_time
  • starmap_travel_cost

Adding an Effect / Trait to Officer or Ship
See Loadouts to see how you would add a trait to a ship or officer in the process(params) method.

Adding an Effect / Trait to a Faction via Event Scripting
You can add an effect or trait to a faction via Event Scripting with the following command:
AddTraitToFaction(Game.PlayerFaction, "station_health_upgrade_trait")
Power & Effect Animations - Part 1
Animation scripts can be found in “/mdi_baseline.h6module/animations/”. Not all animation scripts are power animations, some are effect animations as well.

Creating Custom Power Animations

Animations are created by stringing together "sequences" using a sort of functional-programming paradigm.

Example #1:
The following sequence launches a "chaos_laser" missile that originates from the source and targets the enemy area, resolves damage at the time of impact and, finally, apply any effects 0.5 seconds after resolving damage.

LaunchMissile("Animations/chaos_laser", Data.source, Data.enemyArea).Then().Resolve().After(0.5).ApplyEffects()


Example #2:
The following sequences play the "ship explode" effect on the ship, rotate the ship and tint the ship, all simultaneously.
Also simultaneously, it loops a sequence that quickly moves the ship back and forth by 10 pixels along the x-axis 20 times.

PlayEffect("Animations/ship explode") RotateBy(15, 3, NoEasing) ChangeColor(255, 0, 0, 0, 3) MoveBy(10, 0, 0.05, SlightEaseInOut).Then().MoveBy(-10, 0, 0.05, SlightEaseInOut).Then().Loop(20)

Example #3:
The following sequence launches a “missile” animation that targets the source (the ship using the power), after 1.5 seconds plays the “remote_repair” effect animation on the source, 1 second after that starts playing the effect is stopped and then we resolve the effects and apply the results of that.

“LaunchMissile” doesn’t necessarily have to be tied to a missile. Occasionally we use this for particle effects that simply travel from point A to point B. In this case, the missing is launching from and hitting the same target, which is also acceptable. The main reason for it being a missile in this particular instance is that the “eng_instant_repairs” base animation component could be used to create other repair animations for powers that target other ships...which saves time and effort.

LaunchMissile("Animations/eng_instant_repairs", Data.source, Data.source).After(1.5).PlayEffect("Animations/remote_repair",Data.source).After(1) .StopEffect().Then() .ApplyEffects() .Resolve()

Example #4
The following sequence is slightly more complicated than previous examples, because here we want to change what happens if the attack misses. “If Data.accurate then” is simply saying that if the attack hits the target in question we’re going run the commands in the first part of the if statement displayed below. However, if the attack misses we provide what should happen after the “else”. Both sets of commands need to be complete including ApplyEffects() and Resolve() , treat them as if they are each their own separate animation because that is how this is intended to behave.

Why is this useful? It allows you to make an attack “miss” more realistically. You can use it to change the target end point for a projectile to behind the target giving the illusion of the attack flying past the target. Also, you can ensure that a special effect or explosion doesn’t play when it’s not supposed to trigger. Despite being a powerful tool in your toolbelt it should be noted you can’t use this on powers designated to be AOE attacks.

You may have also noticed that this is the animation for the ground combat power “Kirkish Haymaker”. Ground combat powers have a few other additions that you won’t see in animations for space combat. PlayAnimation and Trigger are used here to designate when our sprite should perform one of its ground combat animations and what additional animations / effects to play. More information concerning what animations are available to you will be provided later in this section.

if Data.accurate then -- movement MoveTo(Data.target.x * Data.forward -1, Data.target.y, 0.25, HeavyEaseIn).Then() -- impact LaunchMissile("Animations/ground_eng_kirkish_haymaker").PlayAnimation("melee").Trigger(PlayEffect("Animations/hit", Data.target).ShakeCamera(0.5)).After(0.5) -- recovery MoveBy(-200, 0, 2, HeavyEaseOut).RotateBy(5, 3, NoEasing).Do( MoveBy(0, 5, 0.02, SlightEaseInOut).Then().MoveBy(0, -5, 0.02, SlightEaseInOut).Then().Loop(5) ).Then() -- done .ApplyEffects().Resolve().Reset(1) else -- movement MoveTo(Data.target.x * Data.forward -1, Data.target.y, 0.25, HeavyEaseIn).Then() -- impact LaunchMissile("Animations/ground_eng_kirkish_haymaker").PlayAnimation("melee").Trigger(MoveBy(-200, 0, 2, HeavyEaseOut).RotateBy(5, 3, NoEasing)).Do( MoveBy(0, 5, 0.02, SlightEaseInOut).Then().MoveBy(0, -5, 0.02, SlightEaseInOut).Then().Loop(2) ).Then() -- done .ApplyEffects().Resolve().Reset(1) end

Ship Movement:

MoveBy(x, y, time, easing_method, ship): Moves the ship by an amount of pixels.
x,y: pixels along x- and y-axes.
time: seconds to move over.
easing_method: (see Easing Methods below).
ship: defaults to source ship (see Animation Data below).

MoveTo(x, y, time, easing_method, ship): Moves the ship to a specific pixel point.
x,y: pixel point coordinates.
time: seconds to move over.
easing_method: (see Easing Methods below).
ship: defaults to source ship (see Animation Data below).

RotateBy(angle, time, easing_method, ship): Rotates the ship by an amount of degrees.
angle: degrees of rotation.
time: seconds to rotate over.
easing_method: (see Easing Methods below).
ship: defaults to source ship (see Animation Data below).

RotateTo(angle, time, easing_method, ship): Rotates the ship to a specific direction angle.
angle: angle of direction.
time: seconds to rotate over.
easing_method: (see Easing Methods below).
ship: defaults to source ship (see Animation Data below).

Flip(is_flipped, time, ship): Flips the ship.
is_flipped: true to reverse the ship, false otherwise.
time: seconds to flip over.
ship: defaults to source ship (see Animation Data below).

ChangeColor(red, green, blue, alpha, time, ship): Tints the ship to a specific RGBA color.
red, green, blue, alpha: RGBA values (between 0 and 255).
time: seconds to tint over.
ship: defaults to source ship (see Animation Data below).

Reset(time, ship): Resets the position, direction, flipped state and color of the ship.
time: seconds to reset over.
ship: defaults to source ship (see Animation Data below).

Power Animations:
LaunchMissile(missile_animation, source_point, target_point): Launches a missile.
missile_animation: the name of the missile animation.
source_point: defaults to source ship (see Animation Data below).
target_point: defaults to target ship (see Animation Data below).

EmitBeam(beam_animation, source_point, target_point): Emits a beam.
beam_animation: the name of the beam animation.
source_point: defaults to source ship (see Animation Data below).
target_point: defaults to target ship (see Animation Data below).

SweepBeam(x, y, time): Sweeps the last preceding beam in the sequence by an amount of pixels.
x,y: pixels along x- and y-axes.
time: seconds to sweep over.

StopBeam(): Stops emitting the last preceding beam in the sequence.

FireArtillery(artillery_animation, source_point, target_point): Fires an artillery.
artillery_animation: the name of the artillery animation.
source_point: defaults to source ship (see Animation Data below).
target_point: defaults to target ship (see Animation Data below).

PlayEffect(effect_animation, target_point): Plays an effect.
effect_animation: the name of the effect animation.
target_point: defaults to target ship (see Animation Data below)

StopEffect(): Stops playing the last preceding effect in the sequence.
Power & Effect Animations - Part 2
Combat Triggers:
Resolve(): Resolves the current power, which proceeds to deal all of the damage and show all of the combat texts.

ApplyEffects(): Applies all awaiting effects from the current power.

SlowTime(duration): Slows time by a preset amount.
duration: seconds to keep time slowed.

ShakeCamera(duration): Shakes the camera.
duration: seconds to keep shaking the camera.

Sequencing Logic:
Then(): Waits for the preceding element in the sequence to finish before proceeding. (e.g. LaunchMissile(...).Then() will wait for the launched missile to hit).

After(time): Waits for a certain amount of time before continuing the sequence.
time: seconds to wait.

Do(sequence_1, sequence_2, sequence_3, sequence_4)
: Initiates up to four new sequences simultaneously.
sequence_1,2,3,4: animation sequences.

Loop(count): Loops the sequence from the first element a certain number or infinite amount of times.
count: number of times to loop, or do not specify for infinite looping.

OnExit(): Flags the current sequence to occur only when all other animation sequences are finished.

Easing Methods:
The following indicate easing methods available for ship movement.

NoEasing: constant speed the entire time.

SlightEaseIn: gradually eases in and accelerates out.

SlightEaseOut: accelerates in and gradually eases out.

SlightEaseInOut: gradually eases in and gradually eases out.

HeavyEaseIn: eases in momentarily and quickly accelerates out.

HeavyEaseOut: quickly accelerates in and eases out momentarily.

HeavyEaseInOut: eases in momentarily to a high speed before easing out momentarily.


Animation Data:
The following are values exposed by the animation system regarding the current animation.

Data.source: the source ship (as an animation point) that triggered the animation (See Animation Points below).

Data.target: the target ship (as an animation point) that was specified for the animation (See Animation Points below).

Data.allies: a list of the allied ships of the source ship (as animation points) (See Animation Points below).

Data.enemies: a list of the enemy ships of the source ship (as animation points) (See Animation Points below).

Data.allyArea: an animation point lying in the vicinity of source's fleet (See Animation Points below).

Data.enemyArea: an animation point lying in the vicinity of opposing fleet (See Animation Points below).

Data.allyOffscreen: an animation point lying in the allied off-screen fleet area (See Animation Points below).

Data.enemyOffscreen: an animation point lying in the enemy off-screen fleet area (See Animation Points below).

Data.center: an animation point lying in the center of the screen (See Animation Points below).

Data.damage: the amount of damage being done by the current power.

Data.heal: the amount of heal being done by the current power.

Data.accurate: true if accurate, false if missed.

Data.optimal: true if optimal, false otherwise.

Data.critical: true if critical, false otherwise.

Data.moveDelta: x,y coordinates (via .x and .y) for how much the ship is being moved.

Data.forward: 1 if source ship is on the left, -1 if source ship is on the right.

Animation Points:
Offset(x, y): offsets the animation point by an amount of pixels.
x,y: pixels along x- and y-axes.

RandOffset(range): randomly offsets the animation point within a range of pixels.
range: maximum range of the random offset.

Miscellaneous:
The following are not animation sequence elements. They're just helper functions.

Rand01(): Returns a random number between 0 and 1.

Ground Combat Animations:

PlayAnimation("X").Trigger(PlayEffect("Animations/hit", Data.target)

The X can be replaced with the following animations for officers:
melee
shoot
spell
throw
device
gun
hit
*Note: Most officers can use all of these, but there are a few cases where that particular class doesn’t have ‘sniper’.
Power & Effect Animations - Part 3
Animation Components:

As displayed in the examples at the start of this section, animation scripts are built using a series of commands that use our custom animation components. More often than not animations are comprised of multiple prefabs / components. Many of these components are named after the power they are most commonly associated with, however most power components get utilized in a variety of other powers. It’s also worth noting that there are many components that are not tied to any power in particular. In addition, there are some power components on this list that were never used in the full release of the game and as a result they are not as polished as some of the finished components. There is no real difference between power components for ground combat and space combat, they are all particle effects being modified with sprites / spritesheets.


Here is a list of the animation components and their types:

ablative_field --- Effect
aggressive --- Effect
artillery_grav_aoe --- Missile
artillery_kinetic_aoe --- Missile
artillery_kinetic_OLD --- Missile
artillery_laser_aoe_OLD --- Missile
artillery_laser_aoe --- Missile
artillery_melt_aoe_OLD --- Missile
artillery_melt_aoe --- Missile
basic_laser_strike --- Missile
blink_flash --- Effect
boost effect --- Effect
boost_effect_aoe --- Effect
brace --- Effect
casting_anim_big_alt --- Effect
casting_anim_big --- Effect
casting_anim_bolt_BIG --- Effect
casting_anim_bolt --- Effect
casting_anim_heat --- Effect
casting_anim_regular --- Effect
casting_overcharge --- Effect
casting_sci_anim --- Effect
cha_darkmatterstorm_aoe --- Beam
cha_darkmatterstorm --- Effect
cha_dimensional_inversion --- Effect
cha_force_targeting --- Missile
cha_reflective_shield --- Effect
chaos_barrage --- Artillery
chaos_beam --- Beam
chaos_laser --- Missile
chruul_alacrity_serum --- Effect
chruul_apoc_beam --- Beam
chruul_armageddon --- Artillery
chruul_armoured --- Effect
chruul_burst_blue --- Effect
chruul_burst_green --- Effect
chruul_burst_large --- Effect
chruul_burst_small --- Effect
chruul_burst_yellow --- Effect
chruul_chaos_lock --- Missile
chruul_chaos_overload --- Artillery
chruul_debilitating_beam --- Beam
chruul_dimensional_distortion ---Effect
chruul_dimensional_slingshot_portal ---Effect
chruul_enhanced_strength --- Effect
chruul_enrage --- Effect
chruul_entrapment --- Missile
chruul_gas_leak --- Effect
chruul_globule --- Missile
chruul_haste --- Missile
chruul_hull_leech --- Beam
chruul_meteor_blackhole --- Missile
chruul_meteor --- Missile
chruul_mothership_explosion_transition --- Effect
chruul_possession_beam --- Beam
chruul_pry_opening --- Missile
chruul_psychic_distress --- Effect
chruul_rend_apart --- Beam
chruul_savage_strike --- Beam
chruul_spasm --- Effect
chruul_sudden_strike --- Beam
chruul_unnatural_surge --- Beam
chruul_yellow_bile --- Missile
collective_blue_flash --- Effect
collective_em_trap --- Missile
collective_emp_pulse --- Missile
collective_emp_wave --- Effect
collective_hack_weapons --- Missile
collective_harmonious_systems --- Effect
collective_harmony --- Effect
collective_intrusion --- Missile
collective_ion_matrix_aoe --- Missile
collective_malware --- Missile
collective_meltdown --- Missile
collective_overcharge_weapons --- Effect
collective_overload --- Effect
collective_quality_assurance --- Effect
collective_reboot --- Effect
collective_restore_backup --- Effect
collective_security_breach --- Missile
collective_sol_survivor --- Missile
collective_supercharge_aoe --- Missile
collective_supercharge --- Effect
collective_system_opt --- Effect
collective_targeting_scramble_aoe --- Missile
collective_trojan_injection --- Effect
collision_burst_anim --- Missile
cou_meditation_boost --- Effect
cou_microaggressions --- Effect
cou_psyched_up --- Missile
cou_subtle_encouragement --- Effect
deconstruct --- Missile
disruptor_cannon --- Missile
disruptor_storm --- Missile
doom_cannon_red --- Missile
doom_chaos --- Missile
doom_grav --- Missile
doom_laser --- Missile
doom_melt --- Missile
drone_swarm --- Missile
effect_eng_dimensional_warhead_generated --- Effect
effect_tac_epic_ambush_animation --- Effect
emp_mine --- Missile
emp_storm_aoe --- Missile
enf_focus_fire_1 --- Effect
enf_focus_fire_2 --- Missile
enf_focus_fire_3 --- Effect
enf_guard_ally --- Effect
eng_acidbombs_new --- Missile
eng_acidbombs --- Missile
eng_droneoverdrive --- Effect
eng_engulf_flames --- Missile
eng_epic_dimensional_warhead_buff --- Beam
eng_epic_dimensional_warhead_fire --- Missile
eng_epic_dimensional_warhead1 --- Missile
eng_epic_harden_hull_casting --- Effect
eng_epic_harden_hull_explosion_source --- Effect
eng_epic_harden_hull_target --- Effect
eng_eruption --- Missile
eng_feedback --- Effect
eng_flak_cannon --- Missile
eng_hardenhull_effect --- Effect
eng_hardenhull --- Effect
eng_instant_repairs --- Missile
eng_overcharge --- Effect
eng_protector --- Effect
eng_salvageharpoon --- Missile
eng_tractor_beam_aoe --- Beam
enhanced_melt_laser --- Missile
exploit --- Effect
Explosion Blue --- Effect
Explosion Green --- Effect
Explosion Large --- Effect
Explosion Med --- Effect
Explosion Purple --- Effect
Explosion Small --- Effect
flesh_meld --- Effect
gc_chruul_acid_spurt --- Beam
gc_chruul_paralyze_prey --- Effect
gc_tac_arc_burst --- Effect
grav_barrage_OLD --- Artillery
grav_barrage --- Artillery
grav_field --- Missile
grav_laser --- Missile
grav_strike --- Beam
ground_casting --- Effect
ground_cryo --- Missile
ground_eng_ball_lightning --- Missile
ground_eng_basic_shock --- Beam
ground_eng_drone_takedown --- Missile
ground_eng_explosive --- Missile
ground_eng_ghost_pepper_bomb --- Missile
ground_eng_grey_goo --- Missile
ground_eng_healing_status --- Effect
ground_eng_heavens_fury --- Beam
ground_eng_kinetic_expulsion_burst --- Effect
ground_eng_kinetic_expulsion --- Missile
ground_eng_kirkish_haymaker --- Missile
ground_eng_nano_repairs --- Effect
ground_eng_nano_shield --- Effect
ground_eng_personal_magnetism --- Effect
ground_eng_powerfist --- Missile
ground_eng_smoke_out_flames --- Effect *This animation only works as a player power. We're applying positive force along the x-axis so if used on the right side of the screen it will pulse forward and then fold in on itself.
ground_eng_smoke_out --- Missile
ground_nano --- Effect
ground_scanner --- Effect
ground_sci_blooddrive --- Missile
ground_sci_delayedrecovery --- Missile
ground_sci_dropisotopes --- Missile
ground_sci_emergencymeds --- Missile
ground_sci_expprocedure --- Effect
ground_sci_invasivesurgery --- Beam
ground_sci_organfailure --- Missile
ground_sci_psionicblast --- Effect
ground_sci_psychicsurgery --- Effect
ground_sci_radiation --- Missile
ground_sci_transfusion --- Missile
ground_stealth_shine --- Effect
ground_tac_arclaser --- Beam
ground_tac_kamikaze --- Missile
ground_tac_laserknife --- Missile
ground_tac_phaserblast --- Missile
ground_tac_precisionshot --- Missile
ground_tac_reflectiveshield --- Effect
ground_tac_sabotage --- Missile
ground_tac_shellshock --- Missile
ground_tac_shrapnelgrenade --- Missile
ground_tac_teargas --- Missile
h6_death_laser --- Missile
h6_death_ray_explosion --- Effect
hacking --- Effect
Heat Beam --- Missile
hit_bleed --- Effect
hit_hull --- Effect
hit --- Effect
holo_targeting --- Effect
Horror --- Effect
Imperil --- Effect
inspire --- Effect
intercept --- Missile
intimidating blow --- Missile
ion_cannons --- Missile
kinetic_strike_OLD --- Missile
kinetic_strike --- Missile
korzan_bombing_run --- Missile
korzan_brain_warp_aura --- Effect
korzan_brain_warp --- Missile
korzan_disruptor --- Missile
korzan_disturbing_vision --- Missile
korzan_engine_disabled_effect --- Effect
korzan_fifth_column --- Beam
korzan_kannon --- Missile
korzan_kinetic_storm_aoe_new --- Missile
korzan_locked_on --- Effect
korzan_lower_guard --- Effect
korzan_mental_meltdown --- Missile
korzan_mind_over_matter --- Missile
korzan_portal_rip --- Missile
[... continued ...]
Power & Effect Animations - Part 4
korzan_precision_strike_aim --- Effect
korzan_precognition_aura --- Effect
korzan_precognition_effect --- Effect
korzan_precognition --- Effect
korzan_psy_backlash --- Effect
korzan_psy_focus --- Effect
korzan_psychic_assault --- Missile
korzan_psychic_wave --- Beam
korzan_ring_attack --- Missile
korzan_sow_panic --- Beam
korzan_strength_of_mind --- Missile
korzan_stress_release --- Effect
korzan_submission --- Effect
korzan_wrend --- Missile
large_laser --- Missile
laser_barrage_OLD --- Artillery
laser_barrage --- Artillery
laser_beam_blue --- Missile
laser_field --- Missile
laser_strike_red --- Beam
laser_strike --- Beam
laser --- Missile
melt_barrage --- Artillery
melt_explosion --- Missile
melt_field --- Missile
melt_laser --- Missile
melt_shield --- Effect
melt_strike --- Beam
missile_barrage_chaos --- Missile
missile_barrage_grav --- Missile
missile_barrage_melt --- Missile
missile_chruulspike --- Missile
missile_swarm_wild --- Missile
mon_bleed_attack --- Effect
mon_borgoth_burn --- Beam
mon_borgoth_flash --- Effect
mon_borgoth_intensify_power --- Effect
mon_borgoth_reconstitute --- Effect
mon_borgoth_shock_beam --- Missile
mon_chruul_hybernate --- Effect
mon_chruul_hypnotize --- Effect
mon_chruul_scream --- Effect
mon_chruul_slash --- Missile
mon_chruul_vomit --- Missile
mon_grom_eyebeam --- Beam
mon_grom_mini_shock --- Effect
mon_grom_scream --- Effect
mon_grom_shock_orb --- Effect
mon_grom_shock --- Effect
mon_grom_sonar --- Effect
mon_grom_swoop_bursts --- Effect
mon_leech_donateblood --- Effect
mon_leech_feed --- Effect
mon_leech_healingreg --- Effect
mon_leech_spacefever --- Artillery
mon_leecher_infectedsting --- Missile
mon_leecher_slash --- Missile
mon_myrm_acidspike --- Missile
mon_myrm_birthspike --- Effect
mon_myrm_porcupine --- Effect
mon_myrm_spike --- Missile
mon_roll_burst --- Missile
mon_skrill_bind --- Effect
mon_skrill_def_boost --- Effect
mon_skrill_voracious --- Effect
mon_slash_flail --- Effect
omega_drone --- Effect
overkill_ship_explosion --- Effect
pirate_blindanger --- Missile
pirate_dirty_shot --- Missile
pirate_disruptor_cannon --- Missile
pirate_dumb_missile --- Missile
pirate_exploit_shot_animation --- Missile
pirate_heal_animation --- Effect
pirate_lick_wounds --- Missile
pirate_salvage_beam --- Beam
pirate_threesheets --- Beam
pirate_yoho --- Effect
protective_field --- Effect
puncture --- Missile
purplehaze_effect --- Effect
purplehaze --- Missile
redux_caster --- Effect
redux_target --- Effect
remote_repair --- Effect
repair_drones --- Effect
scan --- Effect
sci_bendspacetime --- Effect
sci_better_torture --- Beam
sci_casting_small --- Effect
sci_casting --- Effect
sci_epic_causality_violation_effect --- Effect
sci_epic_causality_violation --- Effect
sci_epic_kistlers_ague --- Effect
sci_epic_mckean1 --- Effect
sci_epic_mckean2 --- Effect
sci_gravity_well --- Missile
sci_matterreconstruct --- Effect
sci_mindcontrol --- Effect
sci_overwhelm_core_burst --- Missile
sci_overwhelm_core --- Beam
sci_portal_cannon --- Artillery
sci_psionic_storm --- Missile
sci_singularity --- Missile
sci_siphondarkmatter --- Beam
sci_solarflare --- Missile
sci_stasis_blast --- Missile
sci_stoptime --- Effect
sci_systems_overload --- Missile
sci_torture_burst --- Missile
sci_torture --- Effect
sci_void_splatter --- Missile
sci_warpatomiceffect --- Effect
ship explode_2 --- Effect
ship explode_3 --- Effect
ship explode --- Effect
ship_retreat_flash --- Effect
spin_cocoon --- Beam
status_aciddamage --- Effect
status_blinded_effect --- Effect
status_boost_casting --- Effect
status_boost --- Effect
status_confused --- Effect
status_crew_panic_small --- Effect
status_engines_down_small --- Effect
status_engines_down --- Effect
status_evasive --- Effect
status_fireatwill --- Effect
status_harden --- Effect
status_haste --- Missile
status_hull_breach_small --- Effect
status_hull_breach --- Effect
status_marked_effect_small --- Effect
status_marked_effect --- Effect
status_not_effect_reflect --- Effect
status_noteffective --- Effect
status_sensors_offline_small --- Effect
status_ship_disabled_small --- Effect
status_ship_disabled --- Effect
status_singularity --- Missile
status_siphondarkmatter --- Effect
status_timebubble --- Missile
status_trappedintime --- Missile
status_weakened_small --- Effect
status_weakened --- Effect
status_weapon_disruption_small --- Effect
status_weaponoverload --- Effect
superchargepolarity --- Effect
tac_aux_guns --- Missile
tac_cloaking --- Effect
tac_countersniper_smoke --- Effect
tac_countersniper --- Beam
tac_dimensional_flashbang --- Missile
tac_epic_ambush --- Effect
tac_epic_doom_cannon --- Missile
tac_epic_entranced_effect --- Effect
tac_epic_nuclear_missile --- Missile
tac_epic_onis_vortex_casting --- Effect
tac_epic_onis_vortex_effect1 --- Effect
tac_epic_onis_vortex_effect2 --- Effect
tac_epic_onis_vortex_effect3 --- Effect
tac_epic_onis_vortex_effect4 --- Effect
tac_epic_the_bomb_bomb_deploy --- Effect
tac_epic_the_bomb_bomb_explode --- Effect
tac_epic_the_bomb_explode2 --- Missile
tac_epic_the_bomb_hypno_beam --- Beam
tac_evasive_maneuvers --- Effect
tac_fire_at_will --- Missile
tac_focused_beam --- Missile
tac_inspire_effect --- Effect
tac_intothefray --- Effect
tac_munitions_backfire --- Beam
tac_precision_shot --- Missile
tac_pulse_mesh --- Effect
tac_seeker_missile --- Missile
tac_targeting_support --- Effect
tac_teleport_explosives --- Artillery
tac_weapons_overload --- Effect
targeting_support --- Effect
taunt_taunted --- Effect
taunt_taunter --- Effect
teleport_explosive --- Missile
terror --- Effect
threat_reduction --- Effect
thruster --- Effect
tractorbeam --- Beam
voraash_absorb --- Effect
voraash_agitate --- Effect
voraash_dispell --- Effect
voraash_equalize --- Missile
voraash_extract_power --- Beam
voraash_full_sized_worm --- Missile
voraash_gather_power --- Effect
voraash_hook --- Missile
voraash_immunization --- Effect
voraash_mosquito_swarm --- Missile
voraash_negate --- Effect
voraash_neurotoxin --- Effect
voraash_piercing_barb --- Missile
voraash_red_burst --- Effect
voraash_resurrectionist --- Missile
voraash_seizure --- Missile
voraash_slicer_beam --- Beam
voraash_sucker --- Beam
voraash_temporal_mastery --- Effect
weapons_sabotage --- Effect
xlar_blast_purple --- Missile
xlar_called_shot --- Missile
xlar_combat_drugs --- Effect
xlar_cull --- Beam
xlar_energy_pulse --- Missile
xlar_extermination_aura --- Effect
xlar_extermination_beam --- Beam
xlar_flummox --- Missile
xlar_grav_beam --- Beam
xlar_hellfire_missiles --- Missile
xlar_ion_burst --- Missile
xlar_laser_strike --- Beam
xlar_nightmare --- Beam
xlar_rage_restoration --- Effect
xlar_rally --- Effect
xlar_rapid_repair --- Effect
xlar_rending_strike --- Missile
xlar_shell_attack --- Missile
xlar_ultragenesis --- Effect
yabbling_biting_bile --- Missile
yabbling_blind_fire --- Missile
yabbling_greased_lightning --- Effect
yabbling_paralytic_venom --- Effect
yabbling_searing_slime --- Missile
yabbling_soothing_salve --- Effect
yabbling_spore_burst --- Artillery
yabling_corrosive_payload_aoe --- Missile
yabling_hamstring --- Missile
yabling_parasitic_lash --- Beam
yabling_predatory_strike --- Missile
yabling_rust_aoe --- Missile
yabling_slime_emission_aoe --- Missile
yabling_spore --- Missile
yabling_struck_blind --- Effect

Creating Custom Graphics for Power Animations
Not yet supported.
Starbase Rooms
Starbase Rooms
The scripts used to define the starbase are divided into “slots”, “rooms”, and “modules”, as well as the actual starbase script itself.

Starbase Script
The file that determines the layout of the starbase can be found in “\mdi_lightspeed_main_campaign.h6module\scenario_data\starbase.lua”.

It’s properties are:
  • width: how many slots horizontally the starbase can be
  • height: how many slots vertically the starbase can be
  • slots: a table defining:
    - x,y: the coordinates of each slot
    - script: what type of slot
    - room: if there is a pre-built room there or not

Starbase Slots
Starbase slots represent the actual type of slot that exists at a starbase room location.

Starbase slot scripts can primarily be found in “/mdi_baseline.h6module/starbase_slots/”.

Starbase Slot Script
A starbase slot script can contain the following properties:
  • name
    - display name
  • type
    - descriptor that is accessed in other scripts
  • tier
    - descriptor that is accessed in other scripts to determine encounter difficulty
  • description
    - text displayed as the description
  • background_unexplored
    - the background image to be displayed if the room is unexplored
  • background_explored
    - the background image to be displayed after the room has been explored
  • exploration_time
    - the base amount of time to explore this slot in days
  • modules
    - a list of module scripts that this slot will execute

Customizing Starbase Slot Backgrounds
Not yet supported.

Starbase Rooms
Starbase rooms are rooms that you can build into starbase slots.

Starbase room scripts can primarily be found in “/mdi_baseline.h6module/starbase_rooms/”, however some rooms were modified for Lightspeed Edition and they can be found in “/mdi_lightspeed_main_campaign.h6module/starbase_rooms/”.

Starbase Room Script
A starbase room script can contain the following properties:
  • name
    - display name
  • type
    - descriptor that is accessed in other scripts
  • description
    - text displayed as the description
  • background
    - the background image or the room
  • can_scrap
    - is the room scrappable
  • construction_time
    - base construction time in days
  • construction_cost
    - base construction cost of the room
  • power_required
    - the amount of power required to build this room
  • power_generated
    - the amount of power generated by this room
  • modules
    - a list of module scripts that this room will execute
  • script_data
    - tech_research
    ---- the tech that is unlocked after this room is built
    - unique
    ---- if “yes”, then only one of these rooms can be built
    - loadouts
    ---- all the loadouts unlocked after this room is built
    - trait
    ---- effect_name: name of the effect to apply after this room is built
    ---- scope: where to apply the effect
    - resources_per_day
    ---- <RESOURCE_ID>_per_day: amount of resource gained per day

Customizing Starbase Room Backgrounds
Not yet supported.

Starbase Room Modules
Starbase room modules are Lua scripts that can be attached to specific rooms or slots.

Starbase room module scripts can primarily be found in “/mdi_baseline.h6module/starbase_modules/”.

A starbase room module can execute the following functions:
  • can_explore
    - executed when checking to see if this slot can be explored or not
  • is_slot_explored
    - checks state to see if slot is explored or not
  • update
    - executed during every update cycle
  • can_construct
    - executed when checking to see if this room can be built or not
Localization
We are currently in the process of refactoring our code to isolate all the text and dialogue in our code for easier translation into other languages. It is a long process but we will update this guide as we continue to make progress.
16 条留言
Neorexus 2023 年 10 月 12 日 上午 2:20 
le sadsh
James Logan 87 2020 年 12 月 11 日 上午 4:19 
It's 2020 and still no Steam Workshop and no mods, :winter2019sadbulb:
Prolbo 2019 年 11 月 26 日 下午 12:47 
Horrible manual. Almost all the things written here is simple and not too hard to fihure out on your own. Much more userful would be explanation how things are binded to each other, interacts with each other and inner logics of script lang used. But NO... We will explain the very basic things wich can be easy learned from simle anilysis and comparsion. Also there is no sence to make separate mod because stat tuning is not modding. And if you want to make something more than tuning game will break in some way with hight probability. You even cant change Station rooms without breaking rooms interfaces. Whant to add new ship? Lol, nope. Whant to adjust sprites? Its impossible!

Best guide ever. Best open-closed architecture.
Ravioli 2018 年 4 月 1 日 下午 7:51 
still waiting for mods :fmad:
Onar 2018 年 4 月 1 日 下午 2:12 
dead here?
Lurch456 2018 年 3 月 8 日 上午 4:18 
can we get steam workshop max 2020! - min2018!
Phen 2017 年 10 月 14 日 下午 12:16 
Can't wait for localization support. Right now it's a huge pain to edit tons of lua scripts and I gave up :(
Pax Empyrean 2017 年 10 月 13 日 上午 10:38 
It's always nice when devs keep modders in mind. Thanks.
�[Dire_Venom]� 2017 年 10 月 9 日 上午 12:19 
This is awesome! Thank you devs :3
Methwitch 2017 年 9 月 17 日 上午 11:57 
This game is so great, The story is open for a 2nd game or dlc, so many unkowns like the voraash and the chruul