Jump to content

Unlocking "Rush Construction"


Amineri

Recommended Posts

I've built this little modlet that unlocks the ability to rush construction from the very beginning of the game.

 

First an explanation (this is so little used that maybe not everyone knows about it) :

 

In vanilla, Rush Construction has the following properties :

  • Can only be applied to vehicle items, Facilities, and Foundry projects
  • Halves the time for the project to complete
  • Double the cost in Cash, Alloy, and Elerium
  • Does not alter any other item quantities (e.g. sectoid corpses for aim boost)
  • Becomes available after completing the Advanced Construction Foundry project, which is unlocked by the Sectopod Autopsy

Sectopods appear so late in the game (being just about the toughest enemy in the game) that by the time you kill one, do the autopsy, and then do the foundry project, the ability to do projects faster doesn't really matter very much.

 

Plus, the ability to halve time while doubling the cost really isn't all that attractive an option in most cases, especially when considering whether to shell out to finance the foundry project.

 

So, this modlet unlocks the "Rush Construction" option in the Manufacturing UI from the beginning. Also included an optional bit that allows for rushing items in any category, not just category 3 (so soldier items and armor could be rushed as well).

 

Hex changes:

 

 

In XGManufacturingUI.DirectInitialize 

change:  -- unlocks Rush capability from beginning of game
m_bCanRush = ENGINEERING().IsFoundryTechResearched(12);
14 2D 01 B3 36 00 00 19 1B 75 0B 00 00 00 00 00 00 16 0C 00 7C 2A 00 00 00 1B 65 14 00 00 00 00 00 00 2C 0C 16 

to:
m_bCanRush = true; ENGINEERING().IsFoundryTechResearched(1);
14 2D 01 B3 36 00 00 27 19 1B 75 0B 00 00 00 00 00 00 16 0C 00 7C 2A 00 00 00 1B 65 14 00 00 00 00 00 00 26 16 

change: -- allows all items to be Rush built
if(m_bCanRush && Item(m_kIProject.eItem).iCategory != 3)
07 81 03 82 2D 01 B3 36 00 00 18 41 00 9B 35 B9 02 00 00 C8 02 00 00 01 00 1B 09 15 00 00 00 00 00 00 38 3A 35 1F 03 00 00 21 03 00 00 00 00 01 B6 36 00 00 4A 16 2C 03 16 16 

to:
if(m_bCanRush && Item(m_kIProject.eItem).iCategory < 0)
07 81 03 82 2D 01 B3 36 00 00 18 41 00 96 35 B9 02 00 00 C8 02 00 00 01 00 1B 09 15 00 00 00 00 00 00 38 3A 35 1F 03 00 00 21 03 00 00 00 00 01 B6 36 00 00 4A 16 2C 00 16 16 


Fix up the awkwardly long string that don't quite fit in the box:
In XComStrategyGame.int

change:
m_strLabelRushBuild="Rush Construction"
m_strLabelYES="YES"
m_strLabelNO="NO"

to:
m_strLabelRushBuild="Build"
m_strLabelYES="Quickly"
m_strLabelNO="Normally" 

 

 

 

I've also included some suggested changes to the localization so that the text fits better into the toggle button.

 

The balance of time gained versus extra resources spent can be adjusted via single value hex edits for the most part -- item, facility and foundry cost multipliers are all defined separately.

 

Note that this leaves Foundry project 12 as an "empty" project that has no game effect. However, this allows for another Foundry project to be put in its place -- presumably one that will have a greater game effect (my own personal favorite is an interceptor / firestorm upgrade).

 

 

-------------------------------

 

 

Some thoughts on balance.

 

This option creates some interesting choices, particularly when combined with several of the continent bonuses. NA, Europe and Asia all have bonuses that halve the cost of various items. NA reduces interceptor cost as well as interceptor weapons, Europe reduces Lab / Workshop costs, and Asia halve Foundry costs.

 

When combined with Rush construction, these bonuses effectively allow the option to construct at normal cost but in half the time. This could potentially be an unbalancing factor, and so may require changing the Rush cost multiplier to 3x instead of 2x, depending on how other factors are adjusted.

Link to comment
Share on other sites

Hmm, this sounds pretty cool, thank you.

 

"Note that this leaves Foundry project 12 as an "empty" project that has no game effect. However, this allows for another Foundry project to be put in its place -- presumably one that will have a greater game effect (my own personal favorite is an interceptor / firestorm upgrade)."

 

Do you happen to have this on hand?

Link to comment
Share on other sites

Hmm, this sounds pretty cool, thank you.

 

"Note that this leaves Foundry project 12 as an "empty" project that has no game effect. However, this allows for another Foundry project to be put in its place -- presumably one that will have a greater game effect (my own personal favorite is an interceptor / firestorm upgrade)."

 

Do you happen to have this on hand?

 

I only have this as a delta change relative to the Long War.

 

JL had already been through the XGItemTree.UpdateShips function and scrubbed out the unneeded bytes to make room for UFO upgrades, which left room for me to simply tack on the hex change to the end.

 

I think it's the same code as in Long War 1.08 so if you are basing on that I think it should be good. Also note that this doesn't change at all the prerequisites for completing Foundry project 12.

 

Here is some hex that might hopefully be of some use :

 

 

 

Add lines to XGItemTree.UpdateShips

if(ENGINEERING().IsFoundryTechResearched(12))
{
    UpdateShip(1, 1500, 10, 2500, 5, 0);
    UpdateShip(3, 3500, 15, 3500, 25, 16);
}


previous hex line in UpdateShips
BuildShipWeapon(10, -1, 101, 1.250, 2500, 50, 45);
1B 92 04 00 00 00 00 00 00 24 0A 1D FF FF FF FF 2C 65 1E 00 00 A0 3F 1D C4 09 00 00 2C 32 2C 2D 16 



new hex broken down:
if(ENGINEERING().IsFoundryTechResearched(12)) //(37/33)
07 AE 03 19 1B 75 0B 00 00 00 00 00 00 16 0C 00 7C 2A 00 00 00 1B 65 14 00 00 00 00 00 00 2C 0C 16 

	UpdateShip(1, 1500, 10, 2500, 5, 0);  //(28/28)
	1B 0A 2C 00 00 00 00 00 00 24 01 1D DC 05 00 00 2C 0A 1D C4 09 00 00 2C 05 2C 00 16 

	UpdateShip(3, 3500, 15, 3500, 25, 16);  //(28/28)
	1B 0A 2C 00 00 00 00 00 00 24 03 1D AC 0D 00 00 2C 0F 1D AC 0D 00 00 2C 19 2C 10 16 

goes into position 0x351 in UpdateShips


--------------------

Long War original hex :
header change:
6E 35 00 00 AB 1F 00 00 00 00 00 00 6E 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0E 01 00 00 D1 62 00 00 02 04 00 00 E6 03 00 00 
body change:
1B 92 04 00 00 00 00 00 00 24 0A 1D FF FF FF FF 2C 65 1E 00 00 A0 3F 1D C4 09 00 00 2C 32 2C 2D 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 



new hex:
header change:
6E 35 00 00 AB 1F 00 00 00 00 00 00 6E 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0E 01 00 00 D1 62 00 00 06 04 00 00 E6 03 00 00 
body change:
1B 92 04 00 00 00 00 00 00 24 0A 1D FF FF FF FF 2C 65 1E 00 00 A0 3F 1D C4 09 00 00 2C 32 2C 2D 16 07 AE 03 19 1B 75 0B 00 00 00 00 00 00 16 0C 00 7C 2A 00 00 00 1B 65 14 00 00 00 00 00 00 2C 0C 16 1B 0A 2C 00 00 00 00 00 00 24 01 1D DC 05 00 00 2C 0A 1D C4 09 00 00 2C 05 2C 00 16 1B 0A 2C 00 00 00 00 00 00 24 03 1D AC 0D 00 00 2C 0F 1D AC 0D 00 00 2C 19 2C 10 16  

 

 

Edited by Amineri
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...