So, I was looking at the blockBehaviorConfig.xml file in the dev build and thinking that while the weapons part is fairly robust in customizablity, the other mechanics (power, thrust, shields) seem to be slightly more limited.
First part of the changes is for different types of blocks to contribute to the same stat (say, two types of power blocks or tank blocks) with different ratings or amounts, or possibly to contribute to two different types of stats.
Second part is to let the ship properties (power, shields, thrust) be defined in the xml file. This would allow us to create some forms of modding (like active heat sinks, thermal engines) in the config file alone.
Third part is to allow customizable cost and outputs for all block types, for example, I could have shields require a "fuel" to recharge (thus implementing the liquid armor that many people have dicussed) or have weapons require ammo. I could also have weapons generate waste heat, or have engines build up heat as well.
Fourth part is probably the most difficult part to implement, and is probably enough of a pain that Schema will now curse me to have a grey cat sit on my keyboard any time I try to make a suggestion. Allow modders to put formulas in the xml file, and have the program implement them. For example, I could change the power consumption of the laser to vary over time, or have power generators with a different scale than the xm3.4s, or almost any other mechanic that could be implemented by modifying existing game code (i.e. not FTL)
so the xml file would have a structure like this:
Hopefully some of you are less confused by all of this. And if you're wondering why the turn rates are properties, imagine making turning thrusters using some special block.
First part of the changes is for different types of blocks to contribute to the same stat (say, two types of power blocks or tank blocks) with different ratings or amounts, or possibly to contribute to two different types of stats.
Second part is to let the ship properties (power, shields, thrust) be defined in the xml file. This would allow us to create some forms of modding (like active heat sinks, thermal engines) in the config file alone.
Third part is to allow customizable cost and outputs for all block types, for example, I could have shields require a "fuel" to recharge (thus implementing the liquid armor that many people have dicussed) or have weapons require ammo. I could also have weapons generate waste heat, or have engines build up heat as well.
Fourth part is probably the most difficult part to implement, and is probably enough of a pain that Schema will now curse me to have a grey cat sit on my keyboard any time I try to make a suggestion. Allow modders to put formulas in the xml file, and have the program implement them. For example, I could change the power consumption of the laser to vary over time, or have power generators with a different scale than the xm3.4s, or almost any other mechanic that could be implemented by modifying existing game code (i.e. not FTL)
so the xml file would have a structure like this:
Code:
<Properties> these have attributes that control how they are displayed, both in build and flight mode
<Thrust>
<Mass>
<Turnx>
<Turny>
<Turnz>
<ShieldCapacity>
<ShieldRegen>
<Power> energy/second aka regen
<Energy>
<Heat> or whatever other mechanics you decide to add
</Properties>
<Ship> properties that depend on the entire ship
</Ship>
<Block Name="THRUST_ID" Grouping="Contiguous">
<Activation type="movement_keys">
<Movement direction = "movement_keys"> Other types are group_facing and ship_facing,
formula goes here i.e. "group.thrust"
</Movement>
<Cost property="energy"> cost types will cause the block/group to stop functioning if the property will go below zero or above the max value
formula goes here i.e. "-300 * group.thrust" negative cause it decreases the energy available.
</Cost>
<Passive property="thrust"> passive types modify a property but do not change it whether active or inactive.
formula goes here i.e. "group.mass * group.x * group.y * group.z * 75"
</Passive>
</Block>
<Block Controller="POWERSUPPLY_COMPUTER_ID" Name="POWERSUPPLY_ID" Grouping="Contiguous"> shields would have grouping "all"
<Activation type="hotbar_sticky"> click it on and off.
<Tweakables> this allows you to like adjust weapons and stuff
formula here that determines how many points you get per block to divide between the different tweakables.
<Range_tweak>
<Rate_tweak>
<Effect type="transfer" mechanism="beam"> transfer effects only happen when the whatever hits a target
<Distance>
formula i.e. "Range_tweak"
</Distance>
<Cooldown>
formula i.e. "200"
</Cooldown>
<Effect_Cost property="energy">
formula i.e "Rate_tweak"
</Effect_Cost>
<Transfer_Cost property="energy">
formula i.e Rate_tweak
</Transfer_Cost>
</Effect> I could put more costs here like if I want to have the powersupply have a slight overhead even when not hitting anything.
</Block>
<Block Controller="MISSILE_COMPUTER_ID" Name="MISSILE_ID" Grouping="Contiguous">
<Activation type="hotbar_loose"> hold to keep it going
<Tweakables> this allows you to like adjust weapons and stuff
formula here that determines how many points you get per block to divide between the different tweakables.
<Range_tweak>
<Rate_tweak>
<Damage_tweak>
<Speed_tweak>
<Radius_tweak>
<Tracking_tweak>
</Tweakables>
<Effect type="attack" mechanism="missile">
<Distance>
formula for the range of the missiles
</Distance>
<Cooldown>
formula for the time between shots
</Cooldown>
<Damage>
formula for the damage
</Damage>
<Radius>
formula
</Radius>
<Tracking> types are none(0), IR(1), IFF/IR-avoid(2), IFF/IR-avoid-ally(3), IFF/IR-target(4), IFF/IR-target-ally(5), evil-seeking(6), and Lock-on(7). IR is basically the KBs, IFF/IR describes what the missiles will do to your faction, IFF/IR -ally describes what the missiles will do to you and your allies, and evil-seeking only targets hostiles.
formula
</Tracking>
<Tracking_time> only for lock-on tracking. Is constant to find time needed to aquire lock. Ignored otherwise
formula
</Tracking_time>
<Effect_Cost property="energy">
formula
</Effect_Cost>
</Effect>
<Slave name="LASER_COMPUTER_ID" ratio="1.0"> ratio determines the ratio at which maxmimum effect occurs 2.0 means there needs to be twice as many slave blocks as master blocks.
Yeah, looks a lot like a block section on its own, except the effect has no type attribute, and all forumlas reference the master formula of the same type
<Modifier name="EMP_EFFECT_COMPUTER_ID" ratio="1.0">
Looks almost exactly a normal block group
</Modifier>
</Block>