Jump to content

Foundry, Autopsy, Corpses Overhaul


Yzaxtol

Recommended Posts

I've been debating with myself how to fix the problem with running out of old corpses for the UFO modules, especially since UFO combat has been overhauled recently. While still leaving the Autopsies feeling like a worthwhile investment. So I decided to completely seperate the two entities. With corpses only affecting foundry projects and a few items.

And the Interceptions modules requiring different tech more inline with the idea of researching alien crafts for upgrades and weaknesses. Mainly Navigation and Power source, for Dodge and Boost.

here's my initial ideas for people to mess around with, because as usual I've hit my limits on coding with upks :( But my ideas... they can't die with my ineptitude.


Ok In XComStrategyGame.XGTechTree

function BuildFoundryItemCost

The Original Foundry Item Cost code.

function BuildFoundryItemCost(int iTech, out TFoundryTech kTech)
{
// End:0xe7 Loop:False
if(iTech == 10)
{
kTech.kCost.arrItems.AddItem(149);
kTech.kCost.arrItemQuantities.AddItem(6);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x1ce Loop:False
if(iTech == 9)
{
kTech.kCost.arrItems.AddItem(157);
kTech.kCost.arrItemQuantities.AddItem(4);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x2b5 Loop:False
if(iTech == 3)
{
kTech.kCost.arrItems.AddItem(148);
kTech.kCost.arrItemQuantities.AddItem(4);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x406 Loop:False
if(iTech == 11)
{
kTech.kCost.arrItems.AddItem(147);
kTech.kCost.arrItemQuantities.AddItem(2);
kTech.kCost.arrItems.AddItem(157);
kTech.kCost.arrItemQuantities.AddItem(2);
kTech.kCost.arrItems.AddItem(152);
kTech.kCost.arrItemQuantities.AddItem(2);
}
// End:0xa9f
else
{
// End:0x4ed Loop:False
if(iTech == 12)
{
kTech.kCost.arrItems.AddItem(156);
kTech.kCost.arrItemQuantities.AddItem(2);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x56a Loop:False
if(iTech == 7)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(30);
}
// End:0xa9f
else
{
// End:0x5e7 Loop:False
if(iTech == 6)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(15);
}
// End:0xa9f
else
{
// End:0x664 Loop:False
if(iTech == 5)
{
kTech.kCost.arrItems.AddItem(147);
kTech.kCost.arrItemQuantities.AddItem(4);
}
// End:0xa9f
else
{
// End:0x74b Loop:False
if(iTech == 4)
{
kTech.kCost.arrItems.AddItem(157);
kTech.kCost.arrItemQuantities.AddItem(4);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x831 Loop:False
if(iTech == 2)
{
kTech.kCost.arrItems.AddItem(88);
kTech.kCost.arrItemQuantities.AddItem(1);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x8ae Loop:False
if(iTech == 17)
{
kTech.kCost.arrItems.AddItem(177);
kTech.kCost.arrItemQuantities.AddItem(3);
}
// End:0xa9f
else
{
// End:0x92b Loop:False
if(iTech == 13)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(5);
}
// End:0xa9f
else
{
// End:0x9a8 Loop:False
if(iTech == 14)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(25);
}
// End:0xa9f
else
{
// End:0xa25 Loop:False
if(iTech == 15)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(50);
}
// End:0xa9f
else
{
// End:0xa9f Loop:False
if(iTech == 18)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(15);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}



My Idea, switch Drone corpses(157) to Floater Corpses(146) for ArcThrower II(4), removing the 2 extra types of corpses from advanced flight(11) to JUST Heavy floaters(147), 6 of them and then add corpse requirement to S.C.O.P.E. Upgrade(18). 6 Sectoid Corpses(144). Change Tech 14(Useless Pistol II) to 8, SHIV Repair and make it require 4 Floater Corpses(152).

For my mod I would be doubling the corpse count for all foundry tech.

function BuildFoundryItemCost(int iTech, out TFoundryTech kTech)
{
// End:0xe7 Loop:False
if(iTech == 10)
{
kTech.kCost.arrItems.AddItem(149);
kTech.kCost.arrItemQuantities.AddItem(6);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x1ce Loop:False
if(iTech == 9)
{
kTech.kCost.arrItems.AddItem(157);
kTech.kCost.arrItemQuantities.AddItem(4);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x2b5 Loop:False
if(iTech == 3)
{
kTech.kCost.arrItems.AddItem(148);
kTech.kCost.arrItemQuantities.AddItem(4);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x406 Loop:False
if(iTech == 11)
{
kTech.kCost.arrItems.AddItem(147);
kTech.kCost.arrItemQuantities.AddItem(6);
}
// End:0xa9f
else
{
// End:0x4ed Loop:False
if(iTech == 12)
{
kTech.kCost.arrItems.AddItem(156);
kTech.kCost.arrItemQuantities.AddItem(2);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x56a Loop:False
if(iTech == 7)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(30);
}
// End:0xa9f
else
{
// End:0x5e7 Loop:False
if(iTech == 6)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(15);
}
// End:0xa9f
else
{
// End:0x664 Loop:False
if(iTech == 5)
{
kTech.kCost.arrItems.AddItem(147);
kTech.kCost.arrItemQuantities.AddItem(4);
}
// End:0xa9f
else
{
// End:0x74b Loop:False
if(iTech == 4)
{
kTech.kCost.arrItems.AddItem(146);
kTech.kCost.arrItemQuantities.AddItem(4);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x831 Loop:False
if(iTech == 2)
{
kTech.kCost.arrItems.AddItem(88);
kTech.kCost.arrItemQuantities.AddItem(1);
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(20);
}
// End:0xa9f
else
{
// End:0x8ae Loop:False
if(iTech == 17)
{
kTech.kCost.arrItems.AddItem(177);
kTech.kCost.arrItemQuantities.AddItem(3);
}
// End:0xa9f
else
{
// End:0x92b Loop:False
if(iTech == 13)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(5);
}
// End:0xa9f
else
{
// End:0x9a8 Loop:False
if(iTech == 8 )
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(25);
kTech.kCost.arrItems.AddItem(152);
kTech.kCost.arrItemQuantities.AddItem(2);
}
// End:0xa9f
else
{
// End:0xa25 Loop:False
if(iTech == 15)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(50);
}
// End:0xa9f
else
{
// End:0xa9f Loop:False
if(iTech == 18)
{
kTech.kCost.arrItems.AddItem(173);
kTech.kCost.arrItemQuantities.AddItem(15);
kTech.kCost.arrItems.AddItem(144);
kTech.kCost.arrItemQuantities.AddItem(6);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}



Then you'll probably need to switch the Tech requirements for the Foundry projects in BuildFoundryTechs to the Autopsy of the Corpses in question

function BuildFoundryTechs()
{
m_arrFoundryTechs.Add(19);
BuildFoundryTech(1, 7, 5, 70, 0);
BuildFoundryTech(2, 7, 10, 75, 12, 9);
BuildFoundryTech(8, 14, 10, 175, 44, 1);
BuildFoundryTech(9, 14, 10, 175, 53, 2);
BuildFoundryTech(3, 14, 5, 125, 45, 3);
BuildFoundryTech(4, 14, 10, 100, 20, 49, 4);
BuildFoundryTech(10, 14, 5, 150, 35, 46, 5);
BuildFoundryTech(6, 14, 5, 125, 35, 21, 6);
BuildFoundryTech(7, 14, 10, 250, 25, 50, 25, 7);
BuildFoundryTech(11, 14, 15, 325, 50, 50, 18, 8);
BuildFoundryTech(12, 14, 15, 375, 30, 50, 54, 10);
BuildFoundryTech(5, 14, 15, 175, 30, 40, 51, 11);
BuildFoundryTech(13, 7, 5, 75, 0, 0, 12);
BuildFoundryTech(14, 7, 5, 150, 0, 20, 19, 13);
BuildFoundryTech(15, 14, 10, 250, 30, 40, 22, 14);
BuildFoundryTech(16, 14, 5, 75, 0, 0, 15);
BuildFoundryTech(17, 7, 5, 150, 31, 16);
BuildFoundryTech(18, 7, 10, 75, 43, 17);
BalanceFoundry();
}



Also might want to change the Tech and corpse requirements for the Interception Modules.

//Aim Uplink: Weapon Fragments
BuildItem(135, 10, 0, 0, 0, 5, 9, 47);
//Dodge Module: Alien Navigation
BuildItem(133, 50, 0, 0, 0, 5, 31, 20);
//Track Boost : UFO Power Source
BuildItem(134, 20, 0, 0, 0, 10, 32, 58);

==== XGFacility_Engineering ====

>>>> noexport function TProjectCost GetItemProjectCost(XComGame.XGGameData.EItemType eItem, int iQuantity, optional bool Brush)

Changed:

kCost.arrItems.AddItem(144);
kCost.arrItemQuantities.AddItem(ItemAmount(3));

kCost.arrItems.AddItem(146);
kCost.arrItemQuantities.AddItem(ItemAmount(3));

kCost.arrItems.AddItem(152);
kCost.arrItemQuantities.AddItem(ItemAmount(2));


To:

kCost.arrItems.AddItem(144);
kCost.arrItemQuantities.AddItem(ItemAmount(0));

kCost.arrItems.AddItem(146);
kCost.arrItemQuantities.AddItem(ItemAmount(0));

kCost.arrItems.AddItem(152);
kCost.arrItemQuantities.AddItem(ItemAmount(0));


This makes it so no corpse are needed to create an aircraft powerup.

HEX Hint:
Change:
03 16 16 06 84 05 07 C1 02 9A 38 3A 00 28 2A 00 00 38 3A 24 85 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C 92 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 03 16 16 06 84 05 07 26 03 9A 38 3A 00 28 2A 00 00 38 3A 24 86 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C 98 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 02
To:
00 16 16 06 84 05 07 C1 02 9A 38 3A 00 28 2A 00 00 38 3A 24 85 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C 92 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 00 16 16 06 84 05 07 26 03 9A 38 3A 00 28 2A 00 00 38 3A 24 86 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C 98 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 00




In the End you should have the 3 Interception modules being researched by UFO-based tech, costing no corpses and capable of being mass-produced at every stage of the game.

AND

Autopsies and Corpses are now consistently useful throughout the game as unlocking most of the upgrades in the Foundry and permenant items.

 

Current UPK Changes made

 

//***Autopsy and Foundry Projects**\\

Cyberdisc Autopsy = 31
Floater Autopsy = 2C
Sectoid Autopsy = 2B

SHIV Repair to require

24 08 2C 0E 2C 0A 2C AF 4A 4A 24 21
TO
24 08 2C 0E 2C 0A 2C AF 4A 4A 24 31

ArcThrower II to require

24 04 2C 0E 2C 0A 2C 64 2C 14 4A 24 0C
TO
24 04 2C 0E 2C 0A 2C 64 2C 14 4A 24 2C

S.C.O.P.E. Upgrade to require

24 12 2C 07 2C 0A 2C 4B 4A 4A 24 09
TO
24 12 2C 07 2C 0A 2C 4B 4A 4A 24 2B



Interception Modules to require UFO-type Tech, not Autopsies

2C 87 2C 0A 25 25 25 2C 05 24 2B 4A 4A 2C 2F 16 1B 6E 04 00 00 00 00 00 00 2C 85 2C 32 25 25 25 2C 05 24 2C 4A 4A 2C 14 16 1B 6E 04 00 00 00 00 00 00 2C 86 2C 14 25 25 25 2C 0A 24 31 4A 4A 2C 3A 16
TO
2C 87 2C 0A 25 25 25 2C 05 24 09 4A 4A 2C 2F 16 1B 6E 04 00 00 00 00 00 00 2C 85 2C 32 25 25 25 2C 05 24 1F 4A 4A 2C 14 16 1B 6E 04 00 00 00 00 00 00 2C 86 2C 14 25 25 25 2C 0A 24 20 4A 4A 2C 3A 16



This makes it so no corpses are needed to create an aircraft powerup.Just Weapon Fragments. (5/10/15)

2C 90 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 03 16 16 06 84 05 07 C1 02 9A 38 3A 00 28 2A 00 00 38 3A 24 85 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C 92 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 03 16 16 06 84 05 07 26 03 9A 38 3A 00 28 2A 00 00 38 3A 24 86 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C 98 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 02
To:
2C AD 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 05 16 16 06 84 05 07 C1 02 9A 38 3A 00 28 2A 00 00 38 3A 24 85 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C AD 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 0A 16 16 06 84 05 07 26 03 9A 38 3A 00 28 2A 00 00 38 3A 24 86 16 55 35 05 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 03 00 2C AD 16 55 35 04 03 00 00 09 03 00 00 00 00 00 23 2A 00 00 0D 00 1B 10 15 00 00 00 00 00 00 2C 0F

 

Edited by Yzaxtol
Link to comment
Share on other sites

I really like the concept of grouping together some of the weaker enhancements under fewer projects, as that would free up project slots for adding in new capabilities (the alternative being, of course, to enhance those weaker enhancements).

 

However, a lot of this depends on being able to update the UI in order to properly display what is actually happening. I'm finding that it is a lot easier to change the underlying mechanics then to update what gets displayed to the player. And it bugs me ... there's only so much "you just have to remember that this is different from vanilla" that a person can get away with.

 

Looking at what it is that you want to do ... perhaps we should come up with some sort of mini-tool that would enable a modder to more easily manipulate these things. A lot of the changes you want don't seem super -difficult- but can be fairly time-consuming. Semi-automating that process would be really handy.

 

And if EliotVU happens to read this the ability to export the embedded actionscript would be really handy for updating those pesky UIs (hint ^_^ )

Link to comment
Share on other sites

In my mod I also change the localisation files, atleast for english, describing the changes I've made somewhere in the game, hopefully where they will read it.

 

The main thing I'm stumped on at the moment is changing the Item requirements (Corpses) I'm going to be making all the other changes on my mod and will release the HEX code so people can follow but modifying the Item requirement function to that extent is beyond me as I have no idea when the Cases start or finish, I generally just look for bytes immediately after 24, or 2C. :S

Edited by Yzaxtol
Link to comment
Share on other sites

Added UPK changes i've made... just need to tidy up the foundry projects with the corpses (sounds strange) if anyone is able to help I'd really appreciate it :biggrin:

 

I've formatted the HEX code to be fairly readable if you compare it to the BuildFoundryItemCost code.

 

 

10 46 00 00 AB 1F 00 00 00 00 00 00 0E 46 00 00 00 00 00 00 00 00 00 00 10 46 00 00 00 00 00 00 86 02 00 00 3E 76 00 00 A2 0A 00 00 CE 06 00 00 07 E7 00 9A 00 10 46 00 00

2C 0A 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 95 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 06 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 14 16 06 9F 0A 07 CE 01 9A 00 10 46 00 00

2C 09 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 9D 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 04 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 14 16 06 9F 0A 07 B5 02 9A 00 10 46 00 00

2C 03 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 94 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 04 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 14 16 06 9F 0A 07 06 04 9A 00 10 46 00 00

2C 0B 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 93 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 02 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 9D 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 02 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 98 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 02 16 06 9F 0A 07 ED 04 9A 00 10 46 00 00

2C 0C 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 9C 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 02 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 14 16 06 9F 0A 07 6A 05 9A 00 10 46 00 00

2C 07 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 1E 16 06 9F 0A 07 E7 05 9A 00 10 46 00 00

2C 06 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 0F 16 06 9F 0A 07 64 06 9A 00 10 46 00 00

2C 05 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 93 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 04 16 06 9F 0A 07 4B 07 9A 00 10 46 00 00

2C 04 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 9D 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 04 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 14 16 06 9F 0A 07 31 08 9A 00 10 46 00 00

2C 02 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 58 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 02 00 26 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 14 16 06 9F 0A 07 AE 08 9A 00 10 46 00 00

2C 11 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C B1 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 03 16 06 9F 0A 07 2B 09 9A 00 10 46 00 00

2C 0D 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 05 16 06 9F 0A 07 A8 09 9A 00 10 46 00 00

2C 0E 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 19 16 06 9F 0A 07 25 0A 9A 00 10 46 00 00

2C 0F 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 32 16 06 9F 0A 07 9F 0A 9A 00 10 46 00 00

2C 12 16 55 35 24 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C AD 16 55 35 23 1E 00 00 28 1E 00 00 00 00 35 38 1E 00 00 44 1E 00 00 00 00 48 0F 46 00 00 03 00 2C 0F 16 04 0B 53 00 00 00 02 00 42 00 65 04 00 00 00 00 00 00

 

Edited by Yzaxtol
Link to comment
Share on other sites

I really like the concept... it makes more sense, moreover many times I run out of sectoids if I've got to sell them early in the game... I wanted to re-do techs and foundry projects a bit too, and I'll definitively incorporate this into my game.

 

I def can give you some guidance on how to change the code yourself (yesterday I managed to get jumps to work! yay! and found that switch cases follow the same pattern), but I can't post my code since it wouldn't work on your game. I guess the main difficulty lays in adjusting those lines with multiple items that now only require 1 and vice versa, so if I may suggest, you could try to change the order in which things appear to make use of current structure (ie, if tech110 has item1 and item2, and tech112 has only 1 item, and you want it the other way, instead of re-writting those two sentences just change the order in which they appear, so first tech112 with 1 item, then tech110 with 2 items. It's a theoretical example, I actually haven't gone deep through the code). I know it's not perfect but it's a bit more you can do without changing jumps and offsets (it's like if you change the shape of the sentences [not the content], you got to tell the game where some relevant sentences start, since their position has been moved, kind of). If you're interested in re-scripting there's tons of examples and useful stuff in this thread, or maybe some modder with the latest patch will mod it out since it's a cool idea.

 

Btw, as it seems to me you're already familiar with stuff involving research, foundry projects, items, etc, could you please post those, or the class where they are defined? I'm asking 'cause I assume you've got them in a text file, if you don't then don't worry I'll search it myself

 

edit: typo

Edited by anUser
Link to comment
Share on other sites

There's probably a really easy programmer way of finding these out, but I treated it like a massive sudoku puzzle :D

 

XComStrategyGame.UPK

 

XGTechTree.BuildFoundryTechs

 

function BuildFoundryTechs()
{
m_arrFoundryTechs.Add(19);
BuildFoundryTech(1, 7, 5, 70, 0);
BuildFoundryTech(2, 7, 10, 75, 11, 9);
BuildFoundryTech(8, 14, 10, 175, 33, 1);
BuildFoundryTech(9, 14, 10, 175, 53, 2);
BuildFoundryTech(3, 14, 5, 125, 45, 3);
BuildFoundryTech(4, 14, 10, 100, 20, 12, 4);
BuildFoundryTech(10, 14, 5, 150, 35, 46, 5);
BuildFoundryTech(6, 14, 5, 125, 35, 21, 6);
BuildFoundryTech(7, 14, 10, 250, 25, 50, 25, 7);
BuildFoundryTech(11, 14, 15, 325, 50, 50, 18, 8 );
BuildFoundryTech(12, 14, 15, 375, 30, 50, 54, 10);
BuildFoundryTech(5, 14, 15, 175, 30, 40, 51, 11);
BuildFoundryTech(13, 7, 5, 75, 0, 0, 12);
BuildFoundryTech(14, 7, 5, 150, 0, 20, 19, 13);
BuildFoundryTech(15, 14, 10, 250, 30, 40, 22, 14);
BuildFoundryTech(16, 14, 5, 75, 0, 0, 15);
BuildFoundryTech(17, 7, 5, 150, 31, 16);
BuildFoundryTech(18, 7, 10, 75, 9, 17);
BalanceFoundry();
}



1, SHIV,
2, AlienGrenades,
8, SHIV_Heal,
9, CaptureDrone,
3, MedikitII,
4, ArcThrowerII,
10, AmmoConservation,
6, AutomatedLasers,
7, AutomatedPlasma,
11, AdvancedFlight,
12, AdvancedConstruction,
5, VehicleRepair,
13, PistolI,
14, PistolII,
15, PistolIII,
16, SHIVSuppression,
17, StealthSatellites,
18, Scope,

 



XGItemtree . BuildItems


function BuildItems()


{
m_iCurrentCategory = 1;
//Starting Gear
//Pistol(??)
BuildItem(2, -1, -1, -1, 37);
//Rifle(??)
BuildItem(3, -1, -1, -1, 16);
//Shotgun(??)
BuildItem(4, -1, -1, -1, 54);
//LMG(??)
BuildItem(5, -1, -1, -1, 31);
//Sniper Rifle(??)
BuildItem(6, -1, -1, -1, 57);
//Rocket Launcher(??)
BuildItem(7, -1, -1, -1, 45);
//Smoke Grenade(??)
BuildItem(85, -1, -1, -1, 23);
//Battle Scanner(??)
BuildItem(86, -1, -1, -1, 56);
//Medkit
BuildItem(76, 25, 7, 5, 32);
//Alien Grenade
BuildItem(88, -1, -1, -1, 2, 6);
//Arc-Thrower
BuildItem(80, 10, 7, 5, 2, 8 );
//Frag Grenade(???)
BuildItem(99, -1, -1, -1, 17);
//SCOPE
BuildItem(81, 20, 7, 5, 9, 48);
//Nano-Fiber Vest
BuildItem(82, 20, 7, 5, 10, 36);
//Chitin Plating
BuildItem(79, 85, 7, 10, 47, 18);
//Combat-Stims
BuildItem(77, 50, 7, 10, 50, 151, 19);
//Mind Shield
BuildItem(78, 150, 10, 25, 55, 34);
//Skeleton Key
BuildItem(192, 25, 20, 20, 7, 15, 3, 55);
//Laser Pistol
BuildItem(8, 10, 10, 7, 10, 19, 27);
//Laser Rifle
BuildItem(9, 25, 15, 7, 12, 19, 28);
//Scatter laser
BuildItem(10, 30, 25, 7, 12, 20, 29);
//Laser Sniper
BuildItem(12, 35, 25, 7, 12, 20, 30);
//Heavy Laser
BuildItem(11, 30, 25, 7, 12, 21, 26);
//Plasma Pistol
BuildItem(13, 100, 10, 20, 10, 20, 22, 40);
//Light Plasma Rifle
BuildItem(14, 125, 15, 20, 10, 20, 23, 42);
//Plasma Rifle
BuildItem(15, 200, 20, 30, 10, 20, 24, 41);
//Alloy Cannon
BuildItem(16, 200, 20, 50, 12, 25, 27, 43);
//Heavy Plasma
BuildItem(17, 250, 30, 30, 10, 25, 25, 39);
//Plasma Sniper
BuildItem(18, 250, 25, 30, 15, 25, 26, 44);
//Blaster Launcher
BuildItem(19, 275, 35, 40, 15, 40, 30, 38);


m_iCurrentCategory = 2;
//Kevlar Armor(???)
BuildItem(57, -1, -1, -1, 12);
//Carapace Armor
BuildItem(58, 25, 15, 10, 10, 14, 10);
//Skeleton Suit
BuildItem(59, 30, 10, 10, 15, 15, 14);
//Titan Armor
BuildItem(60, 150, 10, 35, 10, 25, 16, 15);
//Archangel Armor
BuildItem(61, 200, 16, 30, 14, 35, 18, 9);
//Ghost Armor
BuildItem(62, 250, 20, 25, 14, 40, 17, 11);
//Psi Armor
BuildItem(63, 400, 40, 20, 10, 30, 13, 13);


m_iCurrentCategory = 3;
//SHIV
BuildItem(102, 50, 14, 5, 1, 49);
//Alloy SHIV
BuildItem(103, 100, 25, 14, 10, 14, 1, 50);
//Hover SHIV
BuildItem(104, 200, 30, 30, 14, 20, 5, 1, 51);
//Interceptor(???)
BuildItem(105, 40, -1, -1, 25);
//Firestorm
BuildItem(106, 275, 40, 60, 21, 20, 5, 21);
//Skyranger(???)
BuildItem(107, -1, -1, -1, 66);
//Satellite
BuildItem(108, 100, 20, 5, 46);
//Small Scout
BuildItem(113, -1, -1, -1, 1, 52);
//Large Scout
BuildItem(115, -1, -1, -1, 53);
//Abductor
BuildItem(116, -1, -1, -1, 65);
//Supply Barge
BuildItem(117, -1, -1, -1, 1, 49);
//Battleship
BuildItem(118, -1, -1, -1, 50);
//Overseer
BuildItem(119, -1, -1, -1, 51);
//Pheonix Cannon
BuildItem(123, 25, 7, 5, 11, 2);
//Avalanche Missiles
BuildItem(124, -1, -1, -1, 4);
//Laser Cannon
BuildItem(125, 35, 25, 7, 10, 21, 3);
//Plasma Cannon
BuildItem(126, 100, 20, 20, 10, 20, 28, 5);
//EMP Cannon
BuildItem(127, 200, 20, 30, 10, 30, 33, 0);
//Fusion Lance
BuildItem(128, 150, 20, 30, 10, 35, 29, 1);
//Aim Uplink
BuildItem(135, 10, 0, 0, 0, 5, 43, 47);
//Dodge Module
BuildItem(133, 50, 0, 0, 0, 5, 44, 20);
//Track Boost
BuildItem(134, 20, 0, 0, 0, 10, 49, 58);


m_iCurrentCategory = 5;
//Elerium
BuildItem(171, 3, 1, -1, -1, 14);
//Alloy
BuildItem(172, 2, 1, -1, -1, 36);
//Fragments
BuildItem(173, 1, -1, -1, 0);
//Outsider Shard
BuildItem(191, -1, -1, -1, 40);
//Power Source
BuildItem(179, 75, -1, -1, 44);
//Nav Computer
BuildItem(177, 40, -1, -1, 43);
//Alien Misc Items
BuildItem(175, 10, -1, -1, 46);
BuildItem(174, 17, -1, -1, 47);
BuildItem(176, 10, -1, -1, 48);
BuildItem(178, 25, -1, -1, 49);
//Fusion Core
BuildItem(188, 125, -1, -1, 45);
//Hyperwave Beacon
BuildItem(180, -1, -1, -1, 193);
//Etheral Device
BuildItem(189, -1, -1, -1, 51);
//Alien Damaged Items
BuildItem(186, 30, -1, -1, 163);
BuildItem(184, 20, -1, -1, 199);
BuildItem(182, 5, -1, -1, 199);
BuildItem(181, 5, -1, -1, 199);
BuildItem(183, 5, -1, -1, 199);
BuildItem(185, 10, -1, -1, 186);
BuildItem(187, 45, -1, -1, 193);
m_iCurrentCategory = 6;
//Corpses
BuildItem(144, 5, -1, -1, 52);
BuildItem(146, 5, -1, -1, 53);
BuildItem(148, 5, -1, -1, 55);
BuildItem(149, 5, -1, -1, 54);
BuildItem(154, 5, -1, -1, 56);
BuildItem(152, 7, -1, -1, 59);
BuildItem(156, 10, -1, -1, 61);
BuildItem(157, 2, -1, -1, 60);
BuildItem(153, 15, -1, -1, 58);
BuildItem(145, 10, -1, -1, 65);
BuildItem(151, 5, -1, -1, 62);
BuildItem(150, 8, -1, -1, 63);
BuildItem(147, 6, -1, -1, 64);
//Captives
BuildItem(160, -1, -1, -1, 52);
BuildItem(162, -1, -1, -1, 53);
BuildItem(164, -1, -1, -1, 55);
BuildItem(165, -1, -1, -1, 54);
BuildItem(168, -1, -1, -1, 58);
BuildItem(161, -1, -1, -1, 65);
BuildItem(167, -1, -1, -1, 62);
BuildItem(166, -1, -1, -1, 63);
BuildItem(163, -1, -1, -1, 64);
BalanceItems();
}

 

 

XGTechTree.BuildTechs

 

function BuildTechs()
{
BuildTech(9, TechCost(2), 173, 0);
BuildTech(10, TechCost(2), 173, 1);
BuildTech(11, TechCost(3), true, 16);
BuildTech(1, TechCost(2), true, 42);
BuildTech(19, TechCost(6), true, 9, 23);
BuildTech(20, TechCost(8 ), 19, 24);
BuildTech(21, TechCost(8 ), 19, 22);
BuildTech(22, TechCost(20), 13, 9, 31);
BuildTech(23, TechCost(25), 14, 9, 30);
BuildTech(24, TechCost(30), true, 23, 32);
BuildTech(25, TechCost(35), true, 23, 29);
BuildTech(26, TechCost(40), true, 34);
BuildTech(28, TechCost(25), true, 28);
BuildTech(27, TechCost(25), true, 33);
BuildTech(29, TechCost(40), 188, 18);
BuildTech(30, TechCost(40), 188, 27);
BuildTech(2, TechCost(3), 1, 3);
BuildTech(13, TechCost(40), true, 9);
BuildTech(3, TechCost(10), true, 191, 10);
BuildTech(31, TechCost(5), 177, 39);
BuildTech(32, TechCost(10), 179, 40);
BuildTech(5, TechCost(15), true, 32, 17);
BuildTech(33, TechCost(25), 5, 15);
BuildTech(12, TechCost(10), 171, 32, 14);
BuildTech(14, TechCost(7), true, 10, 5);
BuildTech(15, TechCost(15), 14, 7);
BuildTech(16, TechCost(30), true, 14, 8 );
BuildTech(17, TechCost(35), true, 16, 6);
BuildTech(18, TechCost(35), true, 16, 4);
BuildTech(7, TechCost(30), 180, 21);
BuildTech(8, TechCost(40), 189, 35);
BuildTech(34, TechCost(5), 160, 1, 43, 1);
BuildTech(35, TechCost(5), 162, 1, 44, 4);
BuildTech(36, TechCost(5), 165, 1, 45, 2);
BuildTech(39, TechCost(5), 164, 1, 46, 6);
BuildTech(42, TechCost(10), 168, 1, 47, 9);
BuildTech(38, TechCost(5), 167, 1, 48, 5);
BuildTech(41, TechCost(5), 166, 1, 49, 3);
BuildTech(40, TechCost(5), 163, 1, 50, 7);
BuildTech(37, TechCost(8 ), 161, 1, 51, 8 );
BuildTech(43, TechCost(2), 144, 1, 52);
BuildTech(44, TechCost(2), 146, 1, 53);
BuildTech(46, TechCost(2), 149, 1, 54);
BuildTech(45, TechCost(2), 148, 1, 55);
BuildTech(47, TechCost(2), 154, 1, 56);
BuildTech(55, TechCost(8 ), 153, 1, 58);
BuildTech(49, TechCost(2), 152, 1, 59);
BuildTech(53, TechCost(2), 157, 1, 60);
BuildTech(54, TechCost(2), 156, 1, 61);
BuildTech(50, TechCost(2), 151, 1, 62);
BuildTech(52, TechCost(2), 150, 1, 63, 2);
BuildTech(51, TechCost(2), 147, 1, 64);
BuildTech(6, TechCost(8 ), 145, 1, 65);
BalanceTechs();

 

ID. Name "Info"

1. Xeno-Biology "Misc research starts here"
2. Arc Thrower
3. Outsider Shard

4. Discover Psionic Soldier
5. New Fighter Craft "Firestorm"
6. Sectoid Commander Autopsy
7. Hyperwave Communication
8. Ethereal Device

 

9. Weapon Fragments "Misc research starts here"
10. Alien Materials
11. Experimental Warfare

12. Elerium

13. Psi Armor "Armors start here"
14. Carapace Armor
15. Skeleton Suit
16. Titan Armor
17. Ghost Armor
18. Archangel Armor

19. Beam Weapons "Laser weapons start here"
20. Precision Lasers
21. Heavy Lasers
22. Plasma Pistol "Plasma weapons start here"
23. Light Plasma Rifle
24. Plasma Rifle
25. Heavy Plasma
26. Plasma Sniper
27. Alloy Cannon
28. Plasma Cannon

29. Fusion Lance "UFO components start here"
30. Guided Fusion Launcher
31. Alien Nav Computer
32. UFO Power Source
33. EMP Cannon

34. Interrogate Sectoid "Interrogations start here"
35. Interrogate Floater
36. Interrogate Muton
37. Interrogate Sectoid Commander
38. Interrogate Berserker
39. Interrogate Thin Man
40. Interrogate Heavy Floater
41. Interrogate Muton Elite
42. Interrogate Ethereal

43. Sectoid Autopsy "Autopsies start here"
44. Floater Autopsy
45. Thin Man Autopsy
46. Muton Autopsy
47. Chryssalid Autopsy
48. Zombie Autopsy
49. Cyberdisc Autopsy
50. Berserker Autopsy
51. Heavy Floater Autopsy
52. Muton Elite Autopsy
53. Drone Autopsy
54. Sectopod Autopsy
55. Ethereal Autopsy
}

 

 

Edited by Yzaxtol
Link to comment
Share on other sites

  • Recently Browsing   0 members

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