Jump to content

UI Mod - Bigger Perk Tree


Amineri

Recommended Posts

  • Replies 193
  • Created
  • Last Reply

Top Posters In This Topic

have all the nexus wiki's been moved? can't seem to load them up

The various wikis are very low in priority compared to the Nexus download pages in the move to the new cloud structure. Database pointers have to be updated. We just have to be patient until they get to them.

 

Edit: Wiki is back up today (09 Dec).

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

  • 2 weeks later...

Some good news... I started plucking out some actual mods (while also continuing to debug this new tool -- and it needs it :p).

 

The actionscript change from EU was able to slide into EW with only some minor tweaks -- sprite IDs changing and the size changing a little bit. I've verified that the basic 3x7 layout grid is working in EW. Now I just need to rework how the upk-side works, since that saw the biggest changes.

 

A couple of changes I'm planning on making compared to the EU-version mod:

 

1) Placing duplicate perks in a tree will no longer be allowed

If this is done it can cause a later rank to allow no perks to be selected. This is the same behavior as vanilla. This change will substantially reduce the number of upk functions I have to mod, too :)

 

2) Perk icons will be hidden until the the first rank perk is chosen. After that all perks up through rank 7 will be visible. In the EU-mod perks were completely hidden (sort of) until the soldier reached that rank. The new training roulette makes that unfeasible. I'm still going to hide the perks until squaddie perk is selected in order to maintain forward compatibility with the 8 subclasses is Long War. Which perks will be available will depend on which perk, and hence subclass, is chosen at rank 1.

 

I'm going to make sure I get the keyboard / gamepad controls right too. So selecting the left-most perk will be possible, etc.

 

Hopefully will only be a matter of time before it rolls out :)

Link to comment
Share on other sites

Some initial eye-candy to tide people over... I went subtle on this one, replicating the normal perk tree layout except for slipping in one extra 3rd perk option :D

 

http://wiki.tesnexus.com/images/7/72/2013-12-17_00001.jpg

 

However the sprite functions like it did for EU -- it's a full 3x7 array of icon locations.

 

With the EW changes all 3 perks per rank are now configurable via the DGC.ini. The above layout was configured via :

SoldierPerkTrees=(SoldierType=eSC_Support,		Squaddie=0, 				Corporal1=ePerk_CoveringFire, Corporal2=0, Sergeant1=ePerk_SmokeAndMirrors, Sergeant2=0, Lieutenant1=ePerk_FocusedSuppression,  Lieutenant2=0, Captain1=ePerk_CombatDrugs, 	Captain2=0, Major=0, 				 Colonel1=ePerk_Sentinel, 	Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Support,		Squaddie=ePerk_SmokeBomb, 	Corporal1=ePerk_BulletSwarm,  Corporal2=0, Sergeant1=0, 					Sergeant2=0, Lieutenant1=0, 						Lieutenant2=0, Captain1=0, 					Captain2=0, Major=ePerk_DeepPockets, Colonel1=0, 				Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Support,		Squaddie=0, 				Corporal1=ePerk_Sprinter, 	  Corporal2=0, Sergeant1=ePerk_FieldMedic, 		Sergeant2=0, Lieutenant1=ePerk_Revive, 				Lieutenant2=0, Captain1=ePerk_DenseSmoke, 	Captain2=0, Major=0, 				 Colonel1=ePerk_Savior, 	Colonel2=0)

Basically each line defines one vertical column of perks. The first line is the right-most vertical column, second line is the middle, and third line is the left-most. To make an icon invisible simply put a 0 in. The <rank>2 fields are unused (they don't have be zero, but will be ignored).

 

 

Unsurprisingly this also works for the basic perks for MECs, but not for the MEC armor upgrades, genemod selection, or medal selection (those are different sprites). As in EU this will also apply to the psionic perk tree (which can be up to 3x7 as well).

 

Will be still a little bit before I release. Still have some glitchy UI issues to resolve, but it should be soon, like a day or two.

Link to comment
Share on other sites

Okay, here is the completed set of hex change necessary to install the Expanded Perk Tree for EW.

 

This includes the gamepad/keyboard fixes that I'd made for the EU version. I've done a little initial testing with the SW option training roulette and it didn't crash the game when soldier were promoted, but I can't promise that all of the functionality is there.

 

Affected package files :

XComStrategyGame.upk

XComGame.upk

UICollection_Strategy_SF.upk

 

WARNING, the changes are a bit lengthy ...

 

 

Consolidated Expanded Perk Tree EW v1.0

MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2  // XComStrategyGame_EW_patch1.upk
 // XComStrategyGame_EU_patch4.upk
FUNCTION=UpdateAbilityData@UISoldierPromotion

[BEFORE_HEX]
[HEADER]
75 05 00 00 DD 03 00 00 
[/HEADER]
[code]
07 45 00 2D 01 C0 1A 00 00 0F 00 F8 1A 00 00 2C 03 0F 00 F7 1A 00 00 19 01 BE 1A 00 00 0A 00 C8 52 00 00 00 1B F5 12 00 00 00 00 00 00 16 06 7A 00 0F 00 F8 1A 00 00 2C 07 0F 00 F7 1A 00 00 19 01 BE 1A 00 00 0A 00 C6 52 00 00 00 1B 00 13 00 00 00 00 00 00 16 14 2D 00 F5 1A 00 00 27 0F 00 FB 1A 00 00 25 07 67 05 96 00 FB 1A 00 00 00 F8 1A 00 00 16 14 2D 00 F6 1A 00 00 27 0F 00 FA 1A 00 00 25 07 B4 02 96 00 FA 1A 00 00 2C 02 16 07 18 01 97 00 FA 1A 00 00 25 16 07 F3 00 9A 00 FB 1A 00 00 25 16 06 B4 02 06 18 01 07 18 01 82 F2 2D 01 C0 1A 00 00 28 16 18 0E 00 9A 00 FB 1A 00 00 2C 05 16 16 06 B4 02 0F 00 F9 1A 00 00 38 3A 19 01 BE 1A 00 00 29 00 E4 52 00 00 00 1B DB 12 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 00 FA 1A 00 00 2D 01 C0 1A 00 00 16 07 B2 01 84 19 01 BE 1A 00 00 13 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 00 F9 1A 00 00 16 18 15 00 99 00 FB 1A 00 00 00 F7 1A 00 00 16 16 14 2D 00 F6 1A 00 00 28 07 19 02 99 00 FB 1A 00 00 00 F7 1A 00 00 16 1B 59 02 00 00 00 00 00 00 00 FB 1A 00 00 00 FA 1A 00 00 1F 75 6E 6B 6E 6F 77 6E 00 19 01 BE 1A 00 00 13 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 00 F9 1A 00 00 16 16 06 A6 02 1B 59 02 00 00 00 00 00 00 00 FB 1A 00 00 00 FA 1A 00 00 12 20 6C FE FF FF 34 00 5E F9 FF FF 00 1B D9 12 00 00 00 00 00 00 00 F9 1A 00 00 19 1B 71 12 00 00 00 00 00 00 4A 16 0A 00 0C 01 00 00 00 1B D9 27 00 00 00 00 00 00 16 16 19 01 BE 1A 00 00 13 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 00 F9 1A 00 00 16 16 A3 00 FA 1A 00 00 16 06 BF 00 07 26 04 2D 00 F6 1A 00 00 07 96 03 2D 00 F5 1A 00 00 14 2D 00 F5 1A 00 00 28 19 1B 71 12 00 00 00 00 00 00 4A 16 16 00 00 00 00 00 00 1B 58 2A 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 16 1B 72 02 00 00 00 00 00 00 00 FB 1A 00 00 EB 19 19 2E 5C FE FF FF 19 12 20 CD FE FF FF 0A 00 A8 FA FF FF 00 1C 49 FD FF FF 16 09 00 91 FA FF FF 00 01 91 FA FF FF 09 00 60 FA FF FF 00 01 60 FA FF FF 18 00 1B F9 FF FF 00 1B 02 13 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 4A 4A 16 16 26 16 06 23 04 1B 72 02 00 00 00 00 00 00 00 FB 1A 00 00 EB 19 19 2E 5C FE FF FF 19 12 20 CD FE FF FF 0A 00 A8 FA FF FF 00 1C 49 FD FF FF 16 09 00 91 FA FF FF 00 01 91 FA FF FF 09 00 60 FA FF FF 00 01 60 FA FF FF 18 00 1B F9 FF FF 00 1B 02 13 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 4A 4A 16 16 2C 02 16 06 59 05 07 CD 04 99 00 FB 1A 00 00 00 F7 1A 00 00 16 1B 72 02 00 00 00 00 00 00 00 FB 1A 00 00 EB 19 19 2E 5C FE FF FF 19 12 20 CD FE FF FF 0A 00 A8 FA FF FF 00 1C 49 FD FF FF 16 09 00 91 FA FF FF 00 01 91 FA FF FF 09 00 60 FA FF FF 00 01 60 FA FF FF 18 00 1B F9 FF FF 00 1B 02 13 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 4A 4A 16 16 2C 03 16 06 59 05 1B 72 02 00 00 00 00 00 00 00 FB 1A 00 00 EB 19 19 2E 5C FE FF FF 19 12 20 CD FE FF FF 0A 00 A8 FA FF FF 00 1C 49 FD FF FF 16 09 00 91 FA FF FF 00 01 91 FA FF FF 09 00 60 FA FF FF 00 01 60 FA FF FF 18 00 1B F9 FF FF 00 1B 02 13 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 4A 4A 16 16 25 16 A3 00 FB 1A 00 00 16 06 91 00 1C FE 1A 00 00 4A 16 04 0B 53 	
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
E1 04 00 00 DD 03 00 00 
[/HEADER]
[code]
07 45 00 2D 01 C0 1A 00 00 0F 00 F8 1A 00 00 2C 03 0F 00 F7 1A 00 00 19 01 BE 1A 00 00 0A 00 C8 52 00 00 00 1B F5 12 00 00 00 00 00 00 16 06 7A 00 0F 00 F8 1A 00 00 2C 07 0F 00 F7 1A 00 00 19 01 BE 1A 00 00 0A 00 C6 52 00 00 00 1B 00 13 00 00 00 00 00 00 16 14 2D 00 F5 1A 00 00 27 0F 00 FB 1A 00 00 25 07 6B 03 96 00 FB 1A 00 00 2C 07 16 07 D3 00 99 00 FB 1A 00 00 00 F7 1A 00 00 16 0F 00 FA 1A 00 00 2C 03 14 2D 00 F5 1A 00 00 28 06 C9 02 0F 00 FA 1A 00 00 2C 00 14 2D 00 F6 1A 00 00 27 07 4D 02 96 00 FA 1A 00 00 2C 03 16 0F 00 F9 1A 00 00 38 3A 19 01 BE 1A 00 00 29 00 E4 52 00 00 00 1B DB 12 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 00 FA 1A 00 00 2D 01 C0 1A 00 00 16 07 95 01 84 19 01 BE 1A 00 00 13 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 00 F9 1A 00 00 16 18 15 00 99 00 FB 1A 00 00 00 F7 1A 00 00 16 16 14 2D 00 F6 1A 00 00 28 07 3F 02 2D 00 F5 1A 00 00 07 3F 02 97 00 F9 1A 00 00 2C 00 16 1B 59 02 00 00 00 00 00 00 00 FB 1A 00 00 00 FA 1A 00 00 12 20 6C FE FF FF 34 00 5E F9 FF FF 00 1B D9 12 00 00 00 00 00 00 00 F9 1A 00 00 19 1B 71 12 00 00 00 00 00 00 4A 16 0A 00 0C 01 00 00 00 1B D9 27 00 00 00 00 00 00 16 16 19 01 BE 1A 00 00 13 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 00 F9 1A 00 00 16 16 A3 00 FA 1A 00 00 16 06 EB 00 07 BD 02 2D 00 F6 1A 00 00 07 AE 02 2D 00 F5 1A 00 00 0F 00 FA 1A 00 00 26 14 2D 00 F5 1A 00 00 28 19 1B 71 12 00 00 00 00 00 00 4A 16 16 00 00 00 00 00 00 1B 58 2A 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 16 06 BA 02 0F 00 FA 1A 00 00 2C 02 06 C9 02 0F 00 FA 1A 00 00 2C 00 1B 72 02 00 00 00 00 00 00 00 FB 1A 00 00 EB 19 19 2E 5C FE FF FF 19 12 20 CD FE FF FF 0A 00 A8 FA FF FF 00 1C 49 FD FF FF 16 09 00 91 FA FF FF 00 01 91 FA FF FF 09 00 60 FA FF FF 00 01 60 FA FF FF 18 00 1B F9 FF FF 00 1B 02 13 00 00 00 00 00 00 92 00 FB 1A 00 00 26 16 4A 4A 16 16 00 FA 1A 00 00 16 A3 00 FB 1A 00 00 16 06 91 00 1C FE 1A 00 00 4A 16 04 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 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 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 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 0B 0B 0B 0B 0B 53 	
[/CODE]
[/AFTER_HEX]


MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2 // XComStrategyGame_EW_patch1.upk
FUNCTION=RotateSoldier@XGSoldierUI

//turn into helper function for left/right keyboard/gamepad perk selection

[BEFORE_HEX]
[HEADER]
75 00 00 00 51 00 00 00 
[/HEADER]
[code]
07 72 00 82 77 01 78 4C 00 00 2A 16 18 22 00 77 19 01 78 4C 00 00 09 00 A1 52 00 00 00 01 A1 52 00 00 2A 16 16 19 19 01 78 4C 00 00 09 00 A1 52 00 00 00 01 A1 52 00 00 13 00 00 00 00 00 00 1B ED 29 00 00 00 00 00 00 00 9B 4C 00 00 16 04 0B 53 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
55 00 00 00 51 00 00 00 
[/HEADER]
[code]
1B 59 2A 00 00 00 00 00 00 FB 93 92 1B 1E 11 00 00 00 00 00 00 16 90 00 9B 4C 00 00 2C 02 16 16 26 16 25 2C 02 16 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 04 0B 53 
[/CODE]
[/AFTER_HEX]



MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2  // XComStrategyGame_EW_patch1.upk
FUNCTION=PerkLockedOut@XGStrategySoldier

// handle up to 3 perks

[BEFORE_HEX]
[code]
if(iOptions < 2)
07 CE 00 96 00 F0 52 00 00 2C 02 16 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[code]
if(iOptions < 3)
07 CE 00 96 00 F0 52 00 00 2C 03 16 
[/CODE]
[/AFTER_HEX]


MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2 // XComStrategyGame_EW_patch1.upk
FUNCTION=OnPromotionRight@XGSoldierUI

//redirect to call RotateSoldier@XGSoldierUI

[BEFORE_HEX]
[code]
1B 59 2A 00 00 00 00 00 00 25 16 1B 0F 28 00 00 00 00 00 00 16 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[code]
1B EF 29 00 00 00 00 00 00 25 16 1B 0F 28 00 00 00 00 00 00 16 
[/CODE]
[/AFTER_HEX]


MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2 // XComStrategyGame_EW_patch1.upk
FUNCTION=OnPromotionLeft@XGSoldierUI

//redirect to call RotateSoldier@XGSoldierUI

[BEFORE_HEX]
[code]
1B 59 2A 00 00 00 00 00 00 26 16 1B 0F 28 00 00 00 00 00 00 16 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[code]
1B EF 29 00 00 00 00 00 00 26 16 1B 0F 28 00 00 00 00 00 00 16 
[/CODE]
[/AFTER_HEX]


MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2  // XComStrategyGame_EW_patch1.upk
FUNCTION=HasAvailablePerksToAssign@XGStrategySoldier

// handle up to 3 perks

//psionics case
[BEFORE_HEX]
[code]
//if(jIndex < 2)
07 2C 01 96 00 EA 52 00 00 2C 02 16 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[code]
//if(jIndex < 3)
07 2C 01 96 00 EA 52 00 00 2C 03 16 
[/CODE]
[/AFTER_HEX]


//regular tree case
[BEFORE_HEX]
[code]
if(jIndex < 2)
07 E7 01 96 00 EA 52 00 00 2C 02 16 
[/CODE]
[/BEFORE_HEX]

[AFTER_HEX]
[code]
if(jIndex < 3)
07 E7 01 96 00 EA 52 00 00 2C 03 16 
[/CODE]
[/AFTER_HEX]


MODFILEVERSION=3
UPKFILE=XComGame.upk 
GUID=5B 06 B8 18 67 22 12 44 85 9B A8 5B 9D 57 1D 4B  // XComGame_EW_patch1.upk
FUNCTION=GetPerkInTree@XComPerkManager

[BEFORE_HEX]
[HEADER]
99 02 00 00 B9 01 00 00 
[/HEADER]
[code]
0B 07 2B 00 2D 00 02 71 00 00 04 1B 5F 3A 00 00 00 00 00 00 00 04 71 00 00 00 03 71 00 00 16 14 2D 00 FF 70 00 00 28 58 01 18 2B 00 00 00 00 71 00 00 00 4A 8C 00 07 8B 00 9A 38 3A 35 0A 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 38 3A 00 05 71 00 00 16 14 2D 00 FF 70 00 00 27 06 8C 00 31 30 07 8B 02 2D 00 FF 70 00 00 05 04 71 00 00 00 00 04 71 00 00 0A CE 00 26 04 35 09 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 1F 01 2C 02 07 02 01 9A 00 03 71 00 00 25 16 04 35 08 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 06 1F 01 04 35 07 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 70 01 2C 03 07 53 01 9A 00 03 71 00 00 25 16 04 35 06 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 06 70 01 04 35 05 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A C1 01 2C 04 07 A4 01 9A 00 03 71 00 00 25 16 04 35 04 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 06 C1 01 04 35 03 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 12 02 2C 05 07 F5 01 9A 00 03 71 00 00 25 16 04 35 02 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 06 12 02 04 35 01 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 34 02 2C 06 04 35 00 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 85 02 2C 07 07 68 02 9A 00 03 71 00 00 25 16 04 35 FF 2A 00 00 0B 2B 00 00 00 00 00 00 71 00 00 06 85 02 04 35 FE 2A 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A FF FF 06 8B 02 04 24 00 04 3A 01 71 00 00 53 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
58 02 00 00 B9 01 00 00 
[/HEADER]
[code]
0B 07 2B 00 2D 00 02 71 00 00 0F 00 05 71 00 00 24 05 00 04 71 00 00 0B 0B 0B 0B 0B 0B 0B 0B 14 2D 00 FF 70 00 00 28 0F 00 1E 71 00 00 2C 00 58 01 18 2B 00 00 00 00 71 00 00 00 4A BB 00 07 B9 00 9A 38 3A 35 0A 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 38 3A 00 05 71 00 00 16 07 AE 00 9A 00 1E 71 00 00 00 03 71 00 00 16 14 2D 00 FF 70 00 00 27 06 BA 00 A3 00 1E 71 00 00 16 31 30 07 CE 01 2D 00 FF 70 00 00 05 04 71 00 00 00 00 04 71 00 00 0A FC 00 26 04 35 09 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 1E 01 2C 02 04 35 08 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 40 01 2C 03 04 35 06 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 62 01 2C 04 04 35 04 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A 84 01 2C 05 04 35 02 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A A6 01 2C 06 04 35 00 2B 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A C8 01 2C 07 04 35 FF 2A 00 00 0B 2B 00 00 00 00 00 00 71 00 00 0A FF FF 06 CE 01 04 24 00 04 3A 01 71 00 00 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 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 53 
[/CODE]
[/AFTER_HEX]



MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2 // XComStrategyGame_EW_patch1.upk
FUNCTION=GetPerkInClassTree@XGStrategySoldier

//fix up random perk retrieval to work with more perks

[BEFORE_HEX]
[HEADER]
24 02 00 00 98 01 00 00 
[/HEADER]
[code]
0B 07 AD 01 82 1B 22 18 00 00 00 00 00 00 24 04 16 18 0D 00 81 1B 6C 17 00 00 00 00 00 00 16 16 16 07 61 00 2D 00 E5 52 00 00 04 19 1B DA 27 00 00 00 00 00 00 16 1C 00 1B FF FF FF 00 1B DE 12 00 00 00 00 00 00 00 E7 52 00 00 00 E6 52 00 00 16 05 E7 52 00 00 00 00 E7 52 00 00 0A 86 00 26 0F 00 E3 52 00 00 25 06 99 01 0A B7 00 2C 02 07 A8 00 9A 00 E6 52 00 00 25 16 0F 00 E3 52 00 00 26 06 B4 00 0F 00 E3 52 00 00 2C 02 06 99 01 0A E9 00 2C 03 07 DA 00 9A 00 E6 52 00 00 25 16 0F 00 E3 52 00 00 2C 03 06 E6 00 0F 00 E3 52 00 00 2C 04 06 99 01 0A 1B 01 2C 04 07 0C 01 9A 00 E6 52 00 00 25 16 0F 00 E3 52 00 00 2C 05 06 18 01 0F 00 E3 52 00 00 2C 06 06 99 01 0A 4D 01 2C 05 07 3E 01 9A 00 E6 52 00 00 25 16 0F 00 E3 52 00 00 2C 07 06 4A 01 0F 00 E3 52 00 00 2C 08 06 99 01 0A 61 01 2C 06 0F 00 E3 52 00 00 2C 09 06 99 01 0A 93 01 2C 07 07 84 01 9A 00 E6 52 00 00 25 16 0F 00 E3 52 00 00 2C 0A 06 90 01 0F 00 E3 52 00 00 2C 0B 06 99 01 0A FF FF 04 24 00 04 10 00 E3 52 00 00 01 9F 52 00 00 04 19 1B DA 27 00 00 00 00 00 00 16 55 00 1C FF FF FF 00 1B DD 12 00 00 00 00 00 00 35 01 FF FF FF CA F9 FF FF 00 00 35 DC F8 FF FF C1 F9 FF FF 00 00 01 B2 52 00 00 00 E7 52 00 00 00 E6 52 00 00 2D 00 E5 52 00 00 16 04 3A E4 52 00 00 53 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
DC 01 00 00 98 01 00 00 
[/HEADER]
[code]
0B 07 88 00 82 1B 22 18 00 00 00 00 00 00 24 04 16 18 0D 00 81 1B 6C 17 00 00 00 00 00 00 16 16 16 07 61 00 2D 00 E5 52 00 00 04 19 1B DA 27 00 00 00 00 00 00 16 1C 00 1B FF FF FF 00 1B DE 12 00 00 00 00 00 00 00 E7 52 00 00 00 E6 52 00 00 16 04 10 92 90 2C 03 93 00 E7 52 00 00 2C 01 16 16 00 E6 52 00 00 16 01 9F 52 00 00 04 19 1B DA 27 00 00 00 00 00 00 16 55 00 1C FF FF FF 00 1B DD 12 00 00 00 00 00 00 35 01 FF FF FF CA F9 FF FF 00 00 35 DC F8 FF FF C1 F9 FF FF 00 00 01 B2 52 00 00 00 E7 52 00 00 00 E6 52 00 00 2D 00 E5 52 00 00 16 04 3A E4 52 00 00 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 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 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 53 
[/CODE]
[/AFTER_HEX]



MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2 // XComStrategyGame_EW_patch1.upk
FUNCTION=AssignRandomPerks@XGStrategySoldier

//fix up random perk assignment to work with more perks

[BEFORE_HEX]
[HEADER]
B8 01 00 00 38 01 00 00 
[/HEADER]
[code]
0F 00 DD 52 00 00 1B DA 27 00 00 00 00 00 00 16 0F 36 01 9F 52 00 00 25 0F 00 DC 52 00 00 26 07 B5 01 96 00 DC 52 00 00 2C 08 16 0F 00 DB 52 00 00 25 07 A7 01 96 00 DB 52 00 00 2C 02 16 0F 00 DE 52 00 00 19 00 DD 52 00 00 39 00 1C FF FF FF 00 1B DD 12 00 00 00 00 00 00 35 02 FF FF FF CB F9 FF FF 00 00 01 B3 52 00 00 00 DC 52 00 00 00 DB 52 00 00 4A 16 07 F2 00 19 00 DD 52 00 00 13 00 61 FF FF FF 00 1B C9 17 00 00 00 00 00 00 00 DE 52 00 00 16 55 01 9F 52 00 00 0A 00 00 DE 52 00 00 16 06 75 01 0F 00 DE 52 00 00 19 00 DD 52 00 00 0A 00 1A FF FF FF 00 1B FE 12 00 00 00 00 00 00 16 07 5F 01 81 1B 3A 18 00 00 00 00 00 00 00 DE 52 00 00 16 16 0F 00 DE 52 00 00 19 00 DD 52 00 00 0A 00 1A FF FF FF 00 1B FE 12 00 00 00 00 00 00 16 06 1B 01 55 01 9F 52 00 00 0A 00 00 DE 52 00 00 16 07 99 01 84 9A 00 DC 52 00 00 26 16 18 0E 00 9A 00 DC 52 00 00 2C 06 16 16 06 A7 01 A3 00 DB 52 00 00 16 06 46 00 A3 00 DC 52 00 00 16 06 2B 00 04 0B 53 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
B0 01 00 00 38 01 00 00 
[/HEADER]
[code]
0F 00 DD 52 00 00 1B DA 27 00 00 00 00 00 00 16 0F 36 01 9F 52 00 00 25 0F 00 DC 52 00 00 26 07 91 01 96 00 DC 52 00 00 2C 08 16 0F 00 DB 52 00 00 25 07 83 01 96 00 DB 52 00 00 2C 03 16 0F 00 DE 52 00 00 19 00 DD 52 00 00 39 00 1C FF FF FF 00 1B DD 12 00 00 00 00 00 00 35 02 FF FF FF CB F9 FF FF 00 00 01 B3 52 00 00 00 DC 52 00 00 00 DB 52 00 00 4A 16 07 F2 00 19 00 DD 52 00 00 13 00 61 FF FF FF 00 1B C9 17 00 00 00 00 00 00 00 DE 52 00 00 16 55 01 9F 52 00 00 0A 00 00 DE 52 00 00 16 06 75 01 0F 00 DE 52 00 00 19 00 DD 52 00 00 0A 00 1A FF FF FF 00 1B FE 12 00 00 00 00 00 00 16 07 5F 01 81 1B 3A 18 00 00 00 00 00 00 00 DE 52 00 00 16 16 0F 00 DE 52 00 00 19 00 DD 52 00 00 0A 00 1A FF FF FF 00 1B FE 12 00 00 00 00 00 00 16 06 1B 01 55 01 9F 52 00 00 0A 00 00 DE 52 00 00 16 A3 00 DB 52 00 00 16 06 46 00 A3 00 DC 52 00 00 16 06 2B 00 04 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 53 
[/CODE]
[/AFTER_HEX]






{ Change MAX_ROWS_PER_COLUMN = 2 to MAX_ROWS_PER_COLUMN = 3 }

{ hex code before: }
{ UNINSTALL }
96 02 00 04 03 3E 4F 96 09 00 04 02 08 35 07 02 00 00 00 4F 96 09 00 04 02 08 5C 07 E0 FF FF FF

{ hex code after: }
{ INSTALL }
96 02 00 04 03 3E 4F 96 09 00 04 02 08 35 07 03 00 00 00 4F 96 09 00 04 02 08 5C 07 E0 FF FF FF


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

{ Change InitializeTree to allow setting of upper-left window icon }

{ original: }
{ UNINSTALL }
96 04 00 04 01 08 1E 4E 12 12 9D 02 00 22 00 96 0B 00 04 06 07 01 00 00 00 04 01 08 08 4E 96 02 00 08 09 4E 96 02 00 08 3D 4E 96 02 00 08 20 52 17 4F

{ new: }
{ INSTALL }
96 0B 00 04 06 07 01 00 00 00 04 01 08 08 4E 96 02 00 08 09 4E 96 02 00 08 3D 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 1E 4E 12 12 9D 02 00 22 00 4F


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

{ Replace psiTree sprite with normalTree sprite }

{ before: }
{ UNINSTALL }
96 04 00 04 01 08 1E 4E 96 02 00 05 01 49 12 9D 02 00 45 00 96 0B 00 08 1F 07 01 00 00 00 04 01 08 08 4E 96 02 00 08 20 52 17 96 0B 00 08 21 07 01 00 00 00 04 01 08 0F

{ after: }
{ INSTALL }
96 04 00 04 01 08 1E 4E 96 02 00 05 01 49 12 9D 02 00 45 00 96 0B 00 08 26 07 01 00 00 00 04 01 08 08 4E 96 02 00 08 20 52 17 96 0B 00 08 27 07 01 00 00 00 04 01 08 0F


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

{ Change SetColumnData to allow turning off columns: }

{ original hex (copied via HxD from original swf file): (1014 bytes) }
{ UNINSTALL }
96 04 00 04 02 08 48 8E 23 00 00 03 00 07 29 00 04 63 6F 6C 75 6D 6E 49 6E 64 65 78 00 06 6C 61 62 65 6C 00 05 73 74 61 74 65 00 C8 03 96 02 00 04 05 87 01 00 00 96 04 00 04 01 08 49 4E 66 9D 02 00 35 00 96 06 00 04 00 04 01 08 4A 4E 66 9D 02 00 8E 00 96 06 00 04 00 04 01 08 4B 4E 66 9D 02 00 E7 00 96 06 00 04 00 04 01 08 4C 4E 66 9D 02 00 0E 01 99 02 00 72 01 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 01 4F 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 07 00 08 44 07 64 00 00 00 4F 96 0B 00 08 4D 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 07 00 08 44 07 64 00 00 00 4F 99 02 00 09 01 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 01 4F 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 0B 00 08 4D 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 06 00 08 44 04 01 08 4E 4E 4F 99 02 00 A0 00 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 00 4F 96 0B 00 08 26 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 99 02 00 69 00 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 00 4F 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 06 00 08 44 04 01 08 47 4E 4F 96 0B 00 08 4F 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 06 00 08 44 04 01 08 47 4E 4F 99 02 00 00 00 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 03 17 96 06 00 04 03 04 01 08 34 4E 96 02 00 04 04 4E 96 02 00 08 50 4E 48 12 9D 02 00 88 01 96 04 00 04 01 08 34 4E 96 02 00 04 04 4E 96 02 00 04 03 4E 87 01 00 02 17 96 02 00 04 05 87 01 00 00 96 04 00 04 01 08 49 4E 66 9D 02 00 35 00 96 06 00 04 00 04 01 08 4B 4E 66 9D 02 00 5F 00 96 06 00 04 00 04 01 08 4A 4E 66 9D 02 00 9E 00 96 06 00 04 00 04 01 08 4C 4E 66 9D 02 00 C8 00 99 02 00 13 01 96 04 00 04 02 08 36 4E 96 07 00 08 44 07 64 00 00 00 4F 96 04 00 04 01 08 24 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 D9 00 96 04 00 04 02 08 43 4E 96 02 00 05 01 49 12 12 9D 02 00 13 00 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 04 00 04 01 08 22 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 8A 00 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 04 00 04 01 08 24 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 50 00 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 47 4E 4F 96 0B 00 08 4F 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 51 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 00 00 96 02 00 04 03 50 87 01 00 03 17 99 02 00 5B FE 96 04 00 04 01 08 1E 4E 12 12 9D 02 00 45 00 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 52 4E 96 04 00 08 53 04 06 4F 96 04 00 08 30 04 04 47 4B 96 09 00 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 31 4E 96 02 00 08 20 52 17 4F 

{ new hex: (copied via HxD from file modified and saved with JPEXS) (1018 bytes) (need +6 bytes) }
{ INSTALL }
96 04 00 04 02 08 48 8E 23 00 00 03 00 07 29 00 04 63 6F 6C 75 6D 6E 49 6E 64 65 78 00 06 6C 61 62 65 6C 00 05 73 74 61 74 65 00 C8 03 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 00 4F 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 01 4F 96 02 00 04 05 87 01 00 00 96 04 00 04 01 08 49 4E 66 9D 02 00 35 00 96 06 00 04 00 04 01 08 4A 4E 66 9D 02 00 8E 00 96 06 00 04 00 04 01 08 4B 4E 66 9D 02 00 E7 00 96 06 00 04 00 04 01 08 4C 4E 66 9D 02 00 F8 00 99 02 00 0E 01 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 01 4F 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 07 00 08 44 07 64 00 00 00 4F 96 0B 00 08 4D 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 07 00 08 44 07 64 00 00 00 4F 99 02 00 A5 00 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 01 4F 96 04 00 04 01 08 32 4E 96 02 00 04 04 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 0B 00 08 4D 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 06 00 08 44 04 01 08 4E 4E 4F 99 02 00 3C 00 96 0B 00 08 26 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 20 52 17 99 02 00 1B 00 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 04 00 08 0A 05 00 4F 99 02 00 00 00 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 03 17 96 06 00 04 03 04 01 08 34 4E 96 02 00 04 04 4E 96 02 00 08 50 4E 48 12 9D 02 00 9A 01 96 04 00 04 01 08 34 4E 96 02 00 04 04 4E 96 02 00 04 03 4E 87 01 00 02 17 96 04 00 04 02 08 36 4E 96 07 00 08 44 07 64 00 00 00 4F 96 02 00 04 05 87 01 00 00 96 04 00 04 01 08 49 4E 66 9D 02 00 35 00 96 06 00 04 00 04 01 08 4B 4E 66 9D 02 00 73 00 96 06 00 04 00 04 01 08 4A 4E 66 9D 02 00 B2 00 96 06 00 04 00 04 01 08 4C 4E 66 9D 02 00 F0 00 99 02 00 12 01 96 04 00 04 02 08 43 4E 96 02 00 05 01 49 12 9D 02 00 13 00 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 04 00 04 01 08 24 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 C4 00 96 04 00 04 02 08 43 4E 96 02 00 05 01 49 12 12 9D 02 00 13 00 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 04 00 04 01 08 22 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 75 00 96 04 00 04 02 08 43 4E 96 02 00 05 01 49 12 9D 02 00 13 00 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 4E 4E 4F 96 04 00 04 01 08 24 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 27 00 96 04 00 04 01 08 22 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 99 02 00 00 00 96 02 00 04 03 50 87 01 00 03 17 99 02 00 49 FE 96 04 00 04 01 08 1E 4E 12 9D 02 00 21 00 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 31 4E 96 04 00 08 0A 05 00 4F 99 02 00 29 00 96 04 00 08 30 04 04 47 4B 96 09 00 07 01 00 00 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 31 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 2C 4E 96 02 00 04 04 4E 96 02 00 08 52 4E 96 04 00 08 53 04 06 4F 96 02 00 00 00 17 4F

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

{ SetAbilityIcon -- actively set icon hilighing (HasPerk) state for every icon -- don't assume it's false }

{ original hex: }
{ UNINSTALL }
96 04 00 04 02 08 3F 8E 2D 00 00 04 00 07 29 00 03 63 6F 6C 75 6D 6E 00 04 72 6F 77 00 06 69 63 6F 6E 4C 61 62 65 6C 00 05 69 73 48 69 6C 69 67 68 74 65 64 00 85 01 96 04 00 04 01 08 34 4E 96 02 00 04 03 4E 96 02 00 04 04 4E 87 01 00 02 17 96 03 00 04 02 03 49 12 9D 02 00 20 00 96 04 00 08 40 04 03 47 96 02 00 08 41 47 96 02 00 04 04 47 96 02 00 08 42 47 26 96 01 00 03 3E 96 0B 00 04 06 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 20 52 17 96 02 00 04 05 12 9D 02 00 A1 00 96 06 00 04 02 08 43 05 01 4F 96 04 00 04 02 08 36 4E 96 07 00 08 44 07 64 00 00 00 4F 96 04 00 04 01 08 22 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 29 4E 96 02 00 08 45 4E 96 01 00 03 49 4C 9D 02 00 12 00 17 96 06 00 04 03 04 01 08 29 4E 96 02 00 08 45 4E 67 12 9D 02 00 2C 00 96 04 00 04 01 08 29 4E 96 04 00 08 45 04 03 4F 96 04 00 08 46 04 03 47 96 09 00 07 01 00 00 00 04 01 08 29 4E 96 02 00 08 20 52 17 99 02 00 73 00 96 04 00 04 01 08 29 4E 96 02 00 08 45 4E 96 01 00 03 49 4C 9D 02 00 15 00 17 96 04 00 04 01 08 29 4E 96 02 00 08 45 4E 96 02 00 04 03 67 12 9D 02 00 2C 00 96 04 00 04 01 08 29 4E 96 04 00 08 45 04 03 4F 96 04 00 08 46 04 03 47 96 09 00 07 01 00 00 00 04 01 08 29 4E 96 02 00 08 20 52 17 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 47 4E 4F 96 06 00 04 02 08 0A 05 01 4F 4F

{ new hex: }
{ INSTALL }
96 04 00 04 02 08 3F 8E 2D 00 00 04 00 07 29 00 03 63 6F 6C 75 6D 6E 00 04 72 6F 77 00 06 69 63 6F 6E 4C 61 62 65 6C 00 05 69 73 48 69 6C 69 67 68 74 65 64 00 85 01 96 04 00 04 01 08 34 4E 96 02 00 04 03 4E 96 02 00 04 04 4E 87 01 00 02 17 96 03 00 04 02 03 49 12 9D 02 00 20 00 96 04 00 08 40 04 03 47 96 02 00 08 41 47 96 02 00 04 04 47 96 02 00 08 42 47 26 96 01 00 03 3E 96 0B 00 04 06 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 20 52 17 96 06 00 04 02 08 43 04 05 4F 96 02 00 04 05 12 9D 02 00 97 00 96 04 00 04 02 08 36 4E 96 07 00 08 44 07 64 00 00 00 4F 96 04 00 04 01 08 22 4E 96 09 00 07 01 00 00 00 04 02 08 36 4E 96 02 00 08 3A 4E 96 02 00 08 20 52 17 96 04 00 04 01 08 29 4E 96 02 00 08 45 4E 96 01 00 03 49 4C 9D 02 00 12 00 17 96 06 00 04 03 04 01 08 29 4E 96 02 00 08 45 4E 67 12 9D 02 00 2C 00 96 04 00 04 01 08 29 4E 96 04 00 08 45 04 03 4F 96 04 00 08 46 04 03 47 96 09 00 07 01 00 00 00 04 01 08 29 4E 96 02 00 08 20 52 17 99 02 00 73 00 96 04 00 04 01 08 29 4E 96 02 00 08 45 4E 96 01 00 03 49 4C 9D 02 00 15 00 17 96 04 00 04 01 08 29 4E 96 02 00 08 45 4E 96 02 00 04 03 67 12 9D 02 00 2C 00 96 04 00 04 01 08 29 4E 96 04 00 08 45 04 03 4F 96 04 00 08 46 04 03 47 96 09 00 07 01 00 00 00 04 01 08 29 4E 96 02 00 08 20 52 17 96 04 00 04 02 08 36 4E 96 06 00 08 44 04 01 08 47 4E 4F 96 06 00 04 02 08 0A 05 01 4F 4F

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

{ Correct size of tagged block that contains ability icons sprite }

before:
FF 09 55 04 00 00 9D 00
after:
FF 09 42 05 00 00 9D 00


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

{ Add ability icon locations (21 ability icons, 3 rows per each of 7 columns) -- get space by shortening constant pool of Environment package: }

original: (2996 bytes)

FF 0A 0B 00 00 00 6E 6F 72 6D 61 6C 54 72 65 65 00 BF 06 1E 00 00 00 36 2B 00 8D 00 1D 36 27 2C E0 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 36 00 BF 06 1E 00 00 00 36 2F 00 8D 00 1D 36 26 98 20 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 35 00 BF 06 1E 00 00 00 36 33 00 8D 00 1D 36 26 03 E0 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 34 00 BF 06 1E 00 00 00 36 37 00 8D 00 1D 36 25 6F 80 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 33 00 BF 06 1E 00 00 00 36 3B 00 8D 00 1D 36 24 DA C0 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 32 00 BF 06 1E 00 00 00 36 3F 00 8D 00 1D 36 24 46 00 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 31 00 BF 06 1E 00 00 00 36 43 00 8D 00 1F 9B 12 EC 48 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 30 00 BF 06 14 00 00 00 36 47 00 8E 00 1D 83 BD E1 40 09 00 69 63 6F 6E 31 5F 31 00 BF 06 14 00 00 00 36 49 00 8F 00 1D C8 8D DF E0 09 00 69 63 6F 6E 31 5F 30 00 BF 06 14 00 00 00 36 4B 00 8E 00 1B 07 79 CD 00 09 00 69 63 6F 6E 32 5F 31 00 BF 06 14 00 00 00 36 4D 00 8F 00 1B 91 19 CD 80 09 00 69 63 6F 6E 32 5F 30 00 BF 06 14 00 00 00 36 4F 00 8E 00 1B 07 7C 29 80 09 00 69 63 6F 6E 33 5F 31 00 BF 06 13 00 00 00 36 51 00 8F 00 19 22 30 96 09 00 69 63 6F 6E 33 5F 30 00 BF 06 14 00 00 00 36 53 00 8E 00 1B 07 7E 73 00 09 00 69 63 6F 6E 34 5F 31 00 BF 06 13 00 00 00 36 55 00 8F 00 19 22 39 CE 09 00 69 63 6F 6E 34 5F 30 00 BF 06 14 00 00 00 36 57 00 8E 00 1B 07 73 19 00 09 00 69 63 6F 6E 36 5F 31 00 BF 06 13 00 00 00 36 59 00 8F 00 19 22 2C 68 09 00 69 63 6F 6E 36 5F 30 00 BF 06 14 00 00 00 36 5B 00 90 00 1B 07 AF FE 80 09 00 69 63 6F 6E 35 5F 30 00 BF 06 14 00 00 00 36 5D 00 90 00 1D 83 D5 18 80 09 00 69 63 6F 6E 30 5F 30 00 BF 06 21 00 00 00 36 5F 00 99 00 C9 41 E3 50 6F 0E CA 5A C5 90 09 00 73 65 6C 65 63 74 6F 72 42 72 61 63 6B 65 74 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 02 07 01 00 02 07 07 00 02 07 0D 00 02 07 13 00 02 07 19 00 02 07 1F 00 02 07 25 00 02 07 2B 00 02 07 2F 00 02 07 33 00 02 07 37 00 02 07 4F 00 02 07 51 00 02 07 53 00 02 07 55 00 02 07 57 00 02 07 59 00 02 07 5B 00 FF 0A 08 00 00 00 70 73 69 54 72 65 65 00 BF 06 13 00 00 00 36 01 00 9C 00 19 96 B5 A2 13 00 62 6F 72 64 65 72 32 00 BF 06 14 00 00 00 36 03 00 9C 00 1B CB 5B 16 00 13 00 62 6F 72 64 65 72 31 00 BF 06 14 00 00 00 36 05 00 9C 00 1B CB 58 C3 80 13 00 62 6F 72 64 65 72 30 00 88 06 05 3B 00 1D 36 36 02 00 88 06 05 3F 00 1D 36 1D 6E 00 88 06 05 43 00 1D 36 1C DA 00 88 06 05 47 00 1D 39 DF 08 C0 88 06 05 49 00 1D 74 87 08 C0 88 06 05 4B 00 1D 39 DF 9C 20 88 06 05 4D 00 1D 74 87 9C 20 88 06 05 5D 00 1D 35 DE 40 A0 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 00 00 FF 09 95 00 00 00 9E 00 01 00 BF 06 16 00 00 00 26 01 00 62 00 1D D7 74 3D 00 70 72 6F 6D 6F 74 69 6F 6E 42 47 00 BF 06 19 00 00 00 26 0D 00 63 00 20 88 BF E0 6A 73 6F 6C 64 69 65 72 53 74 61 74 73 4D 43 00 BF 06 18 00 00 00 26 0E 00 64 00 1E D8 E3 15 A0 73 6F 6C 64 69 65 72 49 6E 66 6F 4D 43 00 BF 06 17 00 00 00 26 0F 00 51 00 1E D9 14 01 F8 6D 65 63 41 62 69 6C 69 74 79 4D 43 00 BF 06 11 00 00 00 26 1B 00 9D 00 17 0D AD D0 74 68 65 54 72 65 65 00 40 00 00 00 3F 0E 1B 00 00 00 01 00 9E 00 53 6F 6C 64 69 65 72 50 72 6F 6D 6F 74 69 6F 6E 53 63 72 65 65 6E 00 BF 06 14 00 00 00 26 01 00 9E 00 1E B6 04 F8 18 74 68 65 53 63 72 65 65 6E 00 FF 09 06 00 00 00 9F 00 00 00 00 00 3F 0E 1B 00 00 00 01 00 9F 00 5F 5F 50 61 63 6B 61 67 65 73 2E 49 44 69 73 70 6F 73 61 62 6C 65 00 FF 0E 44 00 00 00 9F 00 88 16 00 02 00 5F 67 6C 6F 62 61 6C 00 49 44 69 73 70 6F 73 61 62 6C 65 00 96 02 00 08 00 1C 96 02 00 08 01 4E 12 12 9D 02 00 14 00 96 02 00 08 00 1C 96 02 00 08 01 9B 05 00 00 00 00 00 00 4F 17 00 FF 09 06 00 00 00 A0 00 00 00 00 00 3F 0E 1B 00 00 00 01 00 A0 00 5F 5F 50 61 63 6B 61 67 65 73 2E 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 FF 0E CA 16 00 00 A0 00 88 A9 06 6E 00 5F 67 6C 6F 62 61 6C 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 67 66 78 45 78 74 65 6E 73 69 6F 6E 73 00 64 65 62 75 67 67 69 6E 67 00 67 66 78 50 6C 61 79 65 72 00 67 66 78 56 65 72 73 69 6F 6E 00 72 65 73 6F 6C 75 74 69 6F 6E 00 66 6C 61 73 68 00 67 65 6F 6D 00 52 65 63 74 61 6E 67 6C 65 00 73 61 66 65 41 72 65 61 00 61 72 72 4E 6F 74 69 66 79 55 70 6F 6E 52 65 73 6F 6C 75 74 69 6F 6E 43 68 61 6E 67 65 00 41 72 72 61 79 00 61 72 72 4E 6F 74 69 66 79 55 70 6F 6E 49 6E 70 75 74 43 68 61 6E 67 65 00 49 4E 54 00 53 65 74 4C 61 6E 67 75 61 67 65 00 70 72 6F 74 6F 74 79 70 65 00 49 44 69 73 70 6F 73 61 62 6C 65 00 69 6E 73 74 61 6E 63 65 00 5F 69 6E 73 74 61 6E 63 65 00 64 69 73 70 6F 73 65 64 00 57 41 52 4E 49 4E 47 3A 20 52 65 2D 63 72 65 61 74 69 6E 67 20 61 20 6E 65 77 20 73 69 6E 67 6C 65 74 6F 6E 20 69 6E 73 74 61 6E 63 65 20 6F 66 20 45 6E 76 69 72 6F 6E 6D 65 6E 74 28 29 20 61 66 74 65 72 20 64 69 73 70 6F 73 65 21 00 64 69 73 70 6F 73 65 00 70 6C 61 74 66 6F 72 6D 00 74 6F 53 74 72 69 6E 67 00 7B 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 7C 5F 67 6C 6F 62 61 6C 2E 67 66 78 45 78 74 65 6E 73 69 6F 6E 73 3A 00 7C 5F 67 6C 6F 62 61 6C 2E 64 65 62 75 67 67 69 6E 67 3A 00 7C 6D 6F 75 73 65 41 63 74 69 76 65 3A 00 62 49 73 4D 6F 75 73 65 45 6E 61 62 6C 65 64 00 7C 7D 00 53 65 74 56 69 65 77 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 2E 53 65 74 56 69 65 77 3A 20 00 2C 20 00 57 41 52 4E 49 4E 47 3A 20 55 49 20 45 6E 76 69 72 6F 6E 6D 65 6E 74 2E 53 65 74 56 69 65 77 28 29 20 72 65 63 65 69 76 65 64 20 73 61 66 65 20 61 72 65 61 20 61 62 6F 76 65 20 31 2E 30 3A 20 00 4E 6F 74 69 66 79 52 65 73 6F 6C 75 74 69 6F 6E 43 68 61 6E 67 65 00 69 50 6C 61 74 66 6F 72 6D 00 67 65 74 41 6E 63 68 6F 72 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 4C 45 46 54 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 43 45 4E 54 45 52 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 52 49 47 48 54 00 41 4E 43 48 4F 52 5F 4D 49 44 44 4C 45 5F 4C 45 46 54 00 41 4E 43 48 4F 52 5F 4D 49 44 44 4C 45 5F 43 45 4E 54 45 52 00 41 4E 43 48 4F 52 5F 4D 49 44 44 4C 45 5F 52 49 47 48 54 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 4C 45 46 54 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 43 45 4E 54 45 52 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 52 49 47 48 54 00 6C 65 66 74 00 74 6F 70 00 72 69 67 68 74 00 62 6F 74 74 6F 6D 00 50 6F 69 6E 74 00 49 73 4D 6F 75 73 65 41 63 74 69 76 65 00 73 65 74 4D 6F 75 73 65 41 63 74 69 76 65 00 47 46 58 5F 49 4E 50 55 54 3A 20 53 65 74 4D 6F 75 73 65 41 63 74 69 76 65 3A 20 27 00 27 00 54 6F 67 67 6C 65 4D 6F 75 73 65 48 69 74 44 65 62 75 67 67 69 6E 67 00 54 6F 67 67 6C 69 6E 67 20 4D 6F 75 73 65 20 48 69 74 20 44 65 62 75 67 67 69 6E 67 20 66 6F 72 20 27 00 6F 6E 4D 6F 75 73 65 4D 6F 76 65 00 44 65 62 75 67 4D 6F 75 73 65 54 61 72 67 65 74 69 6E 67 00 4D 6F 75 73 65 00 67 65 74 54 6F 70 4D 6F 73 74 45 6E 74 69 74 79 00 63 75 72 72 65 6E 74 4D 6F 75 73 65 54 61 72 67 65 74 00 4D 6F 75 73 65 20 74 61 72 67 65 74 20 63 68 61 6E 67 65 64 3A 20 00 49 73 50 43 00 50 4C 41 54 46 4F 52 4D 5F 50 43 00 49 73 50 53 33 00 50 4C 41 54 46 4F 52 4D 5F 50 53 33 00 49 73 58 62 6F 78 00 50 4C 41 54 46 4F 52 4D 5F 58 42 4F 58 00 53 75 62 73 63 72 69 62 65 54 6F 52 65 73 6F 6C 75 74 69 6F 6E 55 70 64 61 74 65 00 6C 65 6E 67 74 68 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 2E 53 75 62 73 63 72 69 62 65 54 6F 52 65 73 6F 6C 75 74 69 6F 6E 55 70 64 61 74 65 28 29 3A 20 44 75 70 6C 69 63 61 74 65 20 73 75 62 73 63 72 69 70 74 69 6F 6E 3F 20 59 6F 75 27 72 65 20 61 6C 72 65 61 64 79 20 73 75 62 73 63 72 69 62 65 64 20 76 69 61 20 74 68 69 73 20 66 75 6E 63 74 69 6F 6E 3A 20 00 70 75 73 68 00 55 6E 73 75 62 73 63 72 69 62 65 54 6F 52 65 73 6F 6C 75 74 69 6F 6E 55 70 64 61 74 65 00 73 70 6C 69 63 65 00 46 52 41 00 53 50 41 00 49 54 41 00 44 45 55 00 4B 4F 52 00 52 55 53 00 4A 50 4E 00 50 4F 4C 00 6C 61 6E 67 75 61 67 65 00 4C 41 4E 47 55 41 47 45 5F 46 52 41 00 4C 41 4E 47 55 41 47 45 5F 53 50 41 00 4C 41 4E 47 55 41 47 45 5F 49 54 41 00 4C 41 4E 47 55 41 47 45 5F 44 45 55 00 4C 41 4E 47 55 41 47 45 5F 4B 4F 52 00 4C 41 4E 47 55 41 47 45 5F 52 55 53 00 4C 41 4E 47 55 41 47 45 5F 4A 50 4E 00 4C 41 4E 47 55 41 47 45 5F 50 4F 4C 00 4C 41 4E 47 55 41 47 45 5F 49 4E 54 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 2E 53 65 74 4C 61 6E 67 75 61 67 65 3A 20 42 41 44 20 4C 41 4E 47 55 41 47 45 20 53 45 54 21 20 27 00 27 2E 20 44 65 66 61 75 6C 74 69 6E 67 20 74 6F 20 49 4E 54 2E 00 67 65 74 4C 61 6E 67 75 61 67 65 00 69 73 4C 61 6E 67 75 61 67 65 00 73 65 74 4B 6F 72 65 61 6E 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 53 77 61 70 00 62 4B 6F 72 65 61 6E 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 53 77 61 70 00 49 73 4B 6F 72 65 61 6E 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 53 77 61 70 41 63 74 69 76 65 00 47 65 74 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 49 63 6F 6E 00 49 63 6F 6E 5F 42 5F 43 69 72 63 6C 65 00 49 63 6F 6E 5F 41 5F 58 00 47 65 74 42 61 63 6B 42 75 74 74 6F 6E 49 63 6F 6E 00 53 43 52 45 45 4E 5F 57 49 44 54 48 00 53 43 52 45 45 4E 5F 48 45 49 47 48 54 00 41 4E 43 48 4F 52 5F 4E 4F 4E 45 00 4D 4F 55 53 45 5F 44 4F 55 42 4C 45 5F 43 4C 49 43 4B 5F 53 50 45 45 44 00 41 53 53 65 74 50 72 6F 70 46 6C 61 67 73 00 


new hex: (2966 bytes)

FF 0A 0B 00 00 00 6E 6F 72 6D 61 6C 54 72 65 65 00 BF 06 1E 00 00 00 36 2B 00 8D 00 1D 36 27 2C E0 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 36 00 BF 06 1E 00 00 00 36 2F 00 8D 00 1D 36 26 98 20 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 35 00 BF 06 1E 00 00 00 36 33 00 8D 00 1D 36 26 03 E0 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 34 00 BF 06 1E 00 00 00 36 37 00 8D 00 1D 36 25 6F 80 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 33 00 BF 06 1E 00 00 00 36 3B 00 8D 00 1D 36 24 DA C0 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 32 00 BF 06 1E 00 00 00 36 3F 00 8D 00 1D 36 24 46 00 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 31 00 BF 06 1E 00 00 00 36 43 00 8D 00 1F 9B 12 EC 48 09 00 70 72 6F 6D 6F 74 69 6F 6E 42 72 61 63 6B 65 74 30 00 BF 06 14 00 00 00 36 45 00 8E 00 1D 83 05 4A E0 09 00 69 63 6F 6E 30 5F 32 00 BF 06 14 00 00 00 36 47 00 8E 00 1D A5 85 4A E0 09 00 69 63 6F 6E 30 5F 31 00 BF 06 14 00 00 00 36 49 00 8E 00 1D C8 05 4A E0 09 00 69 63 6F 6E 30 5F 30 00 BF 06 14 00 00 00 36 4B 00 8E 00 1D 83 05 DF 60 09 00 69 63 6F 6E 31 5F 32 00 BF 06 14 00 00 00 36 4D 00 8E 00 1D A5 85 DF 60 09 00 69 63 6F 6E 31 5F 31 00 BF 06 14 00 00 00 36 4F 00 8E 00 1D C8 05 DF 60 09 00 69 63 6F 6E 31 5F 30 00 BF 06 14 00 00 00 36 51 00 8E 00 1D 83 06 73 E0 09 00 69 63 6F 6E 32 5F 32 00 BF 06 14 00 00 00 36 53 00 8E 00 1D A5 86 73 E0 09 00 69 63 6F 6E 32 5F 31 00 BF 06 14 00 00 00 36 55 00 8E 00 1D C8 06 73 E0 09 00 69 63 6F 6E 32 5F 30 00 BF 06 14 00 00 00 36 57 00 8E 00 1D 83 07 08 60 09 00 69 63 6F 6E 33 5F 32 00 BF 06 14 00 00 00 36 59 00 8E 00 1D A5 87 08 60 09 00 69 63 6F 6E 33 5F 31 00 BF 06 14 00 00 00 36 5B 00 8E 00 1D C8 07 08 60 09 00 69 63 6F 6E 33 5F 30 00 BF 06 14 00 00 00 36 5D 00 8E 00 1D 83 07 9C E0 09 00 69 63 6F 6E 34 5F 32 00 BF 06 14 00 00 00 36 5F 00 8E 00 1D A5 87 9C E0 09 00 69 63 6F 6E 34 5F 31 00 BF 06 14 00 00 00 36 61 00 8E 00 1D C8 07 9C E0 09 00 69 63 6F 6E 34 5F 30 00 BF 06 14 00 00 00 36 63 00 8E 00 1D 83 00 31 60 09 00 69 63 6F 6E 35 5F 32 00 BF 06 14 00 00 00 36 65 00 8E 00 1D A5 80 31 60 09 00 69 63 6F 6E 35 5F 31 00 BF 06 14 00 00 00 36 67 00 8E 00 1D C8 00 31 60 09 00 69 63 6F 6E 35 5F 30 00 BF 06 14 00 00 00 36 69 00 8E 00 1D 83 00 C5 E0 09 00 69 63 6F 6E 36 5F 32 00 BF 06 14 00 00 00 36 6B 00 8E 00 1D A5 80 C5 E0 09 00 69 63 6F 6E 36 5F 31 00 BF 06 14 00 00 00 36 6D 00 8E 00 1D C8 00 C5 E0 09 00 69 63 6F 6E 36 5F 30 00 BF 06 21 00 00 00 36 5F 00 99 00 C9 41 E3 50 6F 0E CA 5A C5 90 09 00 73 65 6C 65 63 74 6F 72 42 72 61 63 6B 65 74 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 02 07 01 00 02 07 07 00 02 07 0D 00 02 07 13 00 02 07 19 00 02 07 1F 00 02 07 25 00 02 07 2B 00 02 07 2F 00 02 07 33 00 02 07 37 00 02 07 4F 00 02 07 51 00 02 07 53 00 02 07 55 00 02 07 57 00 02 07 59 00 02 07 5B 00 FF 0A 08 00 00 00 70 73 69 54 72 65 65 00 BF 06 13 00 00 00 36 01 00 9C 00 19 96 B5 A2 13 00 62 6F 72 64 65 72 32 00 BF 06 14 00 00 00 36 03 00 9C 00 1B CB 5B 16 00 13 00 62 6F 72 64 65 72 31 00 BF 06 14 00 00 00 36 05 00 9C 00 1B CB 58 C3 80 13 00 62 6F 72 64 65 72 30 00 88 06 05 3B 00 1D 36 36 02 00 88 06 05 3F 00 1D 36 1D 6E 00 88 06 05 43 00 1D 36 1C DA 00 88 06 05 47 00 1D 39 DF 08 C0 88 06 05 49 00 1D 74 87 08 C0 88 06 05 4B 00 1D 39 DF 9C 20 88 06 05 4D 00 1D 74 87 9C 20 88 06 05 5D 00 1D 35 DE 40 A0 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 00 00 FF 09 95 00 00 00 9E 00 01 00 BF 06 16 00 00 00 26 01 00 62 00 1D D7 74 3D 00 70 72 6F 6D 6F 74 69 6F 6E 42 47 00 BF 06 19 00 00 00 26 0D 00 63 00 20 88 BF E0 6A 73 6F 6C 64 69 65 72 53 74 61 74 73 4D 43 00 BF 06 18 00 00 00 26 0E 00 64 00 1E D8 E3 15 A0 73 6F 6C 64 69 65 72 49 6E 66 6F 4D 43 00 BF 06 17 00 00 00 26 0F 00 51 00 1E D9 14 01 F8 6D 65 63 41 62 69 6C 69 74 79 4D 43 00 BF 06 11 00 00 00 26 1B 00 9D 00 17 0D AD D0 74 68 65 54 72 65 65 00 40 00 00 00 3F 0E 1B 00 00 00 01 00 9E 00 53 6F 6C 64 69 65 72 50 72 6F 6D 6F 74 69 6F 6E 53 63 72 65 65 6E 00 BF 06 14 00 00 00 26 01 00 9E 00 1E B6 04 F8 18 74 68 65 53 63 72 65 65 6E 00 FF 09 06 00 00 00 9F 00 00 00 00 00 3F 0E 1B 00 00 00 01 00 9F 00 5F 5F 50 61 63 6B 61 67 65 73 2E 49 44 69 73 70 6F 73 61 62 6C 65 00 FF 0E 44 00 00 00 9F 00 88 16 00 02 00 5F 67 6C 6F 62 61 6C 00 49 44 69 73 70 6F 73 61 62 6C 65 00 96 02 00 08 00 1C 96 02 00 08 01 4E 12 12 9D 02 00 14 00 96 02 00 08 00 1C 96 02 00 08 01 9B 05 00 00 00 00 00 00 4F 17 00 FF 09 06 00 00 00 A0 00 00 00 00 00 3F 0E 1B 00 00 00 01 00 A0 00 5F 5F 50 61 63 6B 61 67 65 73 2E 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 FF 0E DD 15 00 00 A0 00 88 BC 05 6E 00 5F 67 6C 6F 62 61 6C 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 67 66 78 45 78 74 65 6E 73 69 6F 6E 73 00 64 65 62 75 67 67 69 6E 67 00 67 66 78 50 6C 61 79 65 72 00 67 66 78 56 65 72 73 69 6F 6E 00 72 65 73 6F 6C 75 74 69 6F 6E 00 66 6C 61 73 68 00 67 65 6F 6D 00 52 65 63 74 61 6E 67 6C 65 00 73 61 66 65 41 72 65 61 00 61 72 72 4E 6F 74 69 66 79 55 70 6F 6E 52 65 73 6F 6C 75 74 69 6F 6E 43 68 61 6E 67 65 00 41 72 72 61 79 00 61 72 72 4E 6F 74 69 66 79 55 70 6F 6E 49 6E 70 75 74 43 68 61 6E 67 65 00 49 4E 54 00 53 65 74 4C 61 6E 67 75 61 67 65 00 70 72 6F 74 6F 74 79 70 65 00 49 44 69 73 70 6F 73 61 62 6C 65 00 69 6E 73 74 61 6E 63 65 00 5F 69 6E 73 74 61 6E 63 65 00 64 69 73 70 6F 73 65 64 00 57 41 52 4E 49 4E 47 3A 20 00 64 69 73 70 6F 73 65 00 70 6C 61 74 66 6F 72 6D 00 74 6F 53 74 72 69 6E 67 00 7B 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 7C 5F 67 6C 6F 62 61 6C 2E 67 66 78 45 78 74 65 6E 73 69 6F 6E 73 3A 00 7C 5F 67 6C 6F 62 61 6C 2E 64 65 62 75 67 67 69 6E 67 3A 00 7C 6D 6F 75 73 65 41 63 74 69 76 65 3A 00 62 49 73 4D 6F 75 73 65 45 6E 61 62 6C 65 64 00 7C 7D 00 53 65 74 56 69 65 77 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 2E 53 65 74 56 69 65 77 3A 20 00 2C 20 00 57 41 52 4E 49 4E 47 3A 20 00 4E 6F 74 69 66 79 52 65 73 6F 6C 75 74 69 6F 6E 43 68 61 6E 67 65 00 69 50 6C 61 74 66 6F 72 6D 00 67 65 74 41 6E 63 68 6F 72 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 4C 45 46 54 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 43 45 4E 54 45 52 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 52 49 47 48 54 00 41 4E 43 48 4F 52 5F 4D 49 44 44 4C 45 5F 4C 45 46 54 00 41 4E 43 48 4F 52 5F 4D 49 44 44 4C 45 5F 43 45 4E 54 45 52 00 41 4E 43 48 4F 52 5F 4D 49 44 44 4C 45 5F 52 49 47 48 54 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 4C 45 46 54 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 43 45 4E 54 45 52 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 52 49 47 48 54 00 6C 65 66 74 00 74 6F 70 00 72 69 67 68 74 00 62 6F 74 74 6F 6D 00 50 6F 69 6E 74 00 49 73 4D 6F 75 73 65 41 63 74 69 76 65 00 73 65 74 4D 6F 75 73 65 41 63 74 69 76 65 00 47 46 58 5F 49 4E 50 55 54 3A 20 53 65 74 4D 6F 75 73 65 41 63 74 69 76 65 3A 20 27 00 27 00 54 6F 67 67 6C 65 4D 6F 75 73 65 48 69 74 44 65 62 75 67 67 69 6E 67 00 54 6F 67 67 6C 69 6E 67 20 4D 6F 75 73 65 20 48 69 74 20 44 65 62 75 67 67 69 6E 67 20 66 6F 72 20 27 00 6F 6E 4D 6F 75 73 65 4D 6F 76 65 00 44 65 62 75 67 4D 6F 75 73 65 54 61 72 67 65 74 69 6E 67 00 4D 6F 75 73 65 00 67 65 74 54 6F 70 4D 6F 73 74 45 6E 74 69 74 79 00 63 75 72 72 65 6E 74 4D 6F 75 73 65 54 61 72 67 65 74 00 4D 6F 75 73 65 20 74 61 72 67 65 74 20 63 68 61 6E 67 65 64 3A 20 00 49 73 50 43 00 50 4C 41 54 46 4F 52 4D 5F 50 43 00 49 73 50 53 33 00 50 4C 41 54 46 4F 52 4D 5F 50 53 33 00 49 73 58 62 6F 78 00 50 4C 41 54 46 4F 52 4D 5F 58 42 4F 58 00 53 75 62 73 63 72 69 62 65 54 6F 52 65 73 6F 6C 75 74 69 6F 6E 55 70 64 61 74 65 00 6C 65 6E 67 74 68 00 45 20 00 70 75 73 68 00 55 6E 73 75 62 73 63 72 69 62 65 54 6F 52 65 73 6F 6C 75 74 69 6F 6E 55 70 64 61 74 65 00 73 70 6C 69 63 65 00 46 52 41 00 53 50 41 00 49 54 41 00 44 45 55 00 4B 4F 52 00 52 55 53 00 4A 50 4E 00 50 4F 4C 00 6C 61 6E 67 75 61 67 65 00 4C 41 4E 47 55 41 47 45 5F 46 52 41 00 4C 41 4E 47 55 41 47 45 5F 53 50 41 00 4C 41 4E 47 55 41 47 45 5F 49 54 41 00 4C 41 4E 47 55 41 47 45 5F 44 45 55 00 4C 41 4E 47 55 41 47 45 5F 4B 4F 52 00 4C 41 4E 47 55 41 47 45 5F 52 55 53 00 4C 41 4E 47 55 41 47 45 5F 4A 50 4E 00 4C 41 4E 47 55 41 47 45 5F 50 4F 4C 00 4C 41 4E 47 55 41 47 45 5F 49 4E 54 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 2E 53 65 74 4C 61 6E 67 3A 20 42 41 44 20 4C 41 4E 47 55 41 47 45 20 53 45 54 21 20 27 00 27 2E 20 44 65 66 61 75 6C 74 69 6E 67 20 74 6F 20 49 4E 54 2E 00 67 65 74 4C 61 6E 67 75 61 67 65 00 69 73 4C 61 6E 67 75 61 67 65 00 73 65 74 4B 6F 72 65 61 6E 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 53 77 61 70 00 62 4B 6F 72 65 61 6E 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 53 77 61 70 00 49 73 4B 6F 72 65 61 6E 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 53 77 61 70 41 63 74 69 76 65 00 47 65 74 41 64 76 61 6E 63 65 42 75 74 74 6F 6E 49 63 6F 6E 00 49 63 6F 6E 5F 42 5F 43 69 72 63 6C 65 00 49 63 6F 6E 5F 41 5F 58 00 47 65 74 42 61 63 6B 42 75 74 74 6F 6E 49 63 6F 6E 00 53 43 52 45 45 4E 5F 57 49 44 54 48 00 53 43 52 45 45 4E 5F 48 45 49 47 48 54 00 41 4E 43 48 4F 52 5F 4E 4F 4E 45 00 4D 4F 55 53 45 5F 44 4F 55 42 4C 45 5F 43 4C 49 43 4B 5F 53 50 45 45 44 00 41 53 53 65 74 50 72 6F 70 46 6C 61 67 73 00 


 

 

 

Link to comment
Share on other sites

And here is the new text for the DefaultGameCore.ini. These changes simply replicate the vanilla perk choices and layout:

SoldierPerkTrees=(SoldierType=eSC_Assault,      Squaddie=0,                 Corporal1=ePerk_Aggression,     Corporal2=0, Sergeant1=ePerk_CloseAndPersonal,  Sergeant2=0, Lieutenant1=ePerk_RapidFire,   Lieutenant2=0, Captain1=ePerk_BringEmOn,             Captain2=0, Major=0,                       Colonel1=ePerk_KillerInstinct,  Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Assault,      Squaddie=ePerk_RunAndGun,   Corporal1=0,                    Corporal2=0, Sergeant1=0,                       Sergeant2=0, Lieutenant1=0,                 Lieutenant2=0, Captain1=0,                           Captain2=0, Major=ePerk_ExtraConditioning, Colonel1=0,                     Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Assault,      Squaddie=0,                 Corporal1=ePerk_TacticalSense,  Corporal2=0, Sergeant1=ePerk_LightningReflexes, Sergeant2=0, Lieutenant1=ePerk_Flush,       Lieutenant2=0, Captain1=ePerk_CloseCombatSpecialist, Captain2=0, Major=0,                       Colonel1=ePerk_Resilience,      Colonel2=0)

SoldierPerkTrees=(SoldierType=eSC_Support,      Squaddie=0,                 Corporal1=ePerk_CoveringFire,   Corporal2=0, Sergeant1=ePerk_SmokeAndMirrors,   Sergeant2=0, Lieutenant1=ePerk_FocusedSuppression,  Lieutenant2=0, Captain1=ePerk_CombatDrugs,  Captain2=0, Major=0,                 Colonel1=ePerk_Sentinel,   Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Support,      Squaddie=ePerk_SmokeBomb,   Corporal1=0,                    Corporal2=0, Sergeant1=0,                       Sergeant2=0, Lieutenant1=0,                         Lieutenant2=0, Captain1=0,                  Captain2=0, Major=ePerk_DeepPockets, Colonel1=0,                Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Support,      Squaddie=0,                 Corporal1=ePerk_Sprinter,       Corporal2=0, Sergeant1=ePerk_FieldMedic,        Sergeant2=0, Lieutenant1=ePerk_Revive,              Lieutenant2=0, Captain1=ePerk_DenseSmoke,   Captain2=0, Major=0,                 Colonel1=ePerk_Savior,     Colonel2=0)

SoldierPerkTrees=(SoldierType=eSC_HeavyWeapons, Squaddie=0,                 Corporal1=ePerk_TracerBeams,    Corporal2=0, Sergeant1=ePerk_FocusedSuppression,    Sergeant2=0, Lieutenant1=ePerk_RapidReaction,   Lieutenant2=0, Captain1=ePerk_DangerZone, Captain2=0, Major=0,                   Colonel1=ePerk_Mayhem,     Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_HeavyWeapons, Squaddie=ePerk_FireRocket,  Corporal1=0,                    Corporal2=0, Sergeant1=0,                           Sergeant2=0, Lieutenant1=0,                     Lieutenant2=0, Captain1=0,                Captain2=0, Major=ePerk_WillToSurvive, Colonel1=0,                Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_HeavyWeapons, Squaddie=0,                 Corporal1=ePerk_BulletSwarm,    Corporal2=0, Sergeant1=ePerk_ShredderRocket,        Sergeant2=0, Lieutenant1=ePerk_HEATAmmo,        Lieutenant2=0, Captain1=ePerk_Grenadier,  Captain2=0, Major=0,                   Colonel1=ePerk_Rocketeer,  Colonel2=0)

SoldierPerkTrees=(SoldierType=eSC_Sniper,       Squaddie=0,                     Corporal1=ePerk_SquadSight, Corporal2=0, Sergeant1=ePerk_DamnGoodGround, Sergeant2=0, Lieutenant1=ePerk_BattleScanner,  Lieutenant2=0, Captain1=ePerk_Opportunist, Captain2=0, Major=0,                 Colonel1=ePerk_DoubleTap,   Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Sniper,       Squaddie=ePerk_PrecisionShot,   Corporal1=0,                Corporal2=0, Sergeant1=0,                    Sergeant2=0, Lieutenant1=0,                    Lieutenant2=0, Captain1=0,                 Captain2=0, Major=ePerk_LowProfile,  Colonel1=0,                 Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Sniper,       Squaddie=0,                     Corporal1=ePerk_SnapShot,   Corporal2=0, Sergeant1=ePerk_Gunslinger,     Sergeant2=0, Lieutenant1=ePerk_DisablingShot,  Lieutenant2=0, Captain1=ePerk_Executioner, Captain2=0, Major=0,                 Colonel1=ePerk_InTheZone,   Colonel2=0)

SoldierPerkTrees=(SoldierType=eSC_Mec,          Squaddie=0,             Corporal1=ePerk_AutoThreatAssessment,   Corporal2=0, Sergeant1=ePerk_DamageControl,       Sergeant2=0, Lieutenant1=ePerk_OneForAll,     Lieutenant2=0, Captain1=ePerk_ExpandedStorage,  Captain2=0, Major=0,                Colonel1=ePerk_ReactiveTargetingSensors,    Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Mec,          Squaddie=ePerk_Barrage, Corporal1=0,                            Corporal2=0, Sergeant1=0,                         Sergeant2=0, Lieutenant1=0,                   Lieutenant2=0, Captain1=0,                      Captain2=0, Major=ePerk_Overdrive,  Colonel1=0,                                 Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Mec,          Squaddie=0,             Corporal1=ePerk_AdvancedFireControl,    Corporal2=0, Sergeant1=ePerk_XenobiologyOverlays, Sergeant2=0, Lieutenant1=ePerk_JetbootModule, Lieutenant2=0, Captain1=ePerk_RepairServos,     Captain2=0, Major=0,                Colonel1=ePerk_AbsorptionFields,            Colonel2=0)

SoldierPerkTrees=(SoldierType=eSC_Psi,          Squaddie=0,              Corporal1=ePerk_PsiPanic,          Corporal2=0, Sergeant1=ePerk_MindControl,       Sergeant2=0, Lieutenant1=0, Lieutenant2=0, Captain1=0,  Captain2=0, Major=0, Colonel1=0,    Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Psi,          Squaddie=ePerk_MindFray, Corporal1=0,                       Corporal2=0, Sergeant1=0,                       Sergeant2=0, Lieutenant1=0, Lieutenant2=0, Captain1=0,  Captain2=0, Major=0, Colonel1=0,    Colonel2=0)
SoldierPerkTrees=(SoldierType=eSC_Psi,          Squaddie=0,              Corporal1=ePerk_PsiInspiration,    Corporal2=0, Sergeant1=ePerk_TelekineticField,  Sergeant2=0, Lieutenant1=0, Lieutenant2=0, Captain1=0,  Captain2=0, Major=0, Colonel1=0,    Colonel2=0)

Perks are layed out in a 3x7 grid. Put a 0 in to create a blank space in the perk tree. The <rank>2 options currently have no game effect.

 

With the mod installed the PsiPerkTree is no longer used. Instead Psi perks are set by chaning the eSC_Psi lines in the above SoldierPerkTrees.

Link to comment
Share on other sites

Hey Amineri, hope this Holiday season sees you well.

I installed this modlet so that my Training Roulette soldiers could have two Major perks to choose from, but I ran into a pretty big bug. Sometimes it wouldn't let me select a new perk, not recognizing that I had actually taken all the previous ones.

 

 

 

http://wiki.tesnexus.com/images/f/fe/ExpandedPerkTreeEWBugLeftColumnSmall.png

 

I found that this only occurred if the last perk I'd taken was in the left-most column.

 

http://wiki.tesnexus.com/images/d/d8/ExpandedPerkTreeEWBugRightColumnSmall.png

 

 

 

I tracked the issue to the function XComStrategyGame.XGSoldierUI.PreviousPerksToAssign, which was improperly returning True.

 

 

 

function bool PreviousPerksToAssign()
{
    local int iBranch;
    local bool perkA, perkB;
    // End:0x127
    if((GetAbilityTreeBranch()) > 0)
    {
        iBranch = 1;
        J0x1B:
        // End:0x127 [Loop If]
        if(iBranch < (GetAbilityTreeBranch()))
        {
            perkA = m_kSoldier.HasPerk(m_kSoldier.GetPerkInClassTree(iBranch, 0, m_iCurrentView == 2));
            perkB = m_kSoldier.HasPerk(m_kSoldier.GetPerkInClassTree(iBranch, 1, m_iCurrentView == 2));
            // End:0x119
            if(!perkA && !perkB)
            {
                return true;
            }
            ++ iBranch;
            // [Loop Continue]
            goto J0x1B;
        }
    }
    return false;
    //return ReturnValue;    
}

 

It's only checking two perks to see if you've taken any in the row, instead of all three. Couldn't do the straightforward expansion, of course, so I've rewritten it to handle 3 choices (or with an integer change, however many there may be)

 

 

 

function bool PreviousPerksToAssign()
{
    local int iBranch;
    local bool perkA, perkB;
    // End:0x10F
    if((GetAbilityTreeBranch()) > 1)
    {
        perkA = false;
        iBranch = 0;
        J0x27:
        // End:0xC2 [Loop If]
        if(iBranch < 3)
        {
            perkA = perkA || m_kSoldier.HasPerk(m_kSoldier.GetPerkInClassTree((GetAbilityTreeBranch()) - 1, iBranch, m_iCurrentView == 2));
            ++ iBranch;
            // [Loop Continue]
            goto J0x27;
        }
        return !perkA;    
    }
    return false;
    //return ReturnValue;    
}
MODFILEVERSION=3
UPKFILE=XComStrategyGame.upk 
GUID=31 9C 3B 3F 9C 5D E4 40 AB AF 92 8E 25 65 74 F2 // XComStrategyGame_EW_patch1.upk
FUNCTION=PreviousPerksToAssign@XGSoldierUI
 
//Changes how the perk tree detects unchosen perks to accomodate 3 choices.
 
[BEFORE_HEX]
[HEADER]
34 01 00 00 E4 00 00 00
[/HEADER]
[code]
07 27 01 97 1B 1D 11 00 00 00 00 00 00 16 25 16 0F 00 B1 4C 00 00 26 07 27 01 96 00 B1 4C 00 00 1B 1D 11 00 00 00 00 00 00 16 16 14 2D 00 B0 4C 00 00 19 01 78 4C 00 00 42 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 38 3A 19 01 78 4C 00 00 21 00 E4 52 00 00 00 1B DB 12 00 00 00 00 00 00 00 B1 4C 00 00 25 9A 01 1C 09 00 00 2C 02 16 16 16 14 2D 00 AF 4C 00 00 19 01 78 4C 00 00 42 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 38 3A 19 01 78 4C 00 00 21 00 E4 52 00 00 00 1B DB 12 00 00 00 00 00 00 00 B1 4C 00 00 26 9A 01 1C 09 00 00 2C 02 16 16 16 07 19 01 82 81 2D 00 B0 4C 00 00 16 18 0D 00 81 2D 00 AF 4C 00 00 16 16 04 27 A5 00 B1 4C 00 00 16 06 1B 00 04 28 04 3A B2 4C 00 00 53
[/CODE]
[/BEFORE_HEX]
 
[AFTER_HEX]
[HEADER]
1C 01 00 00 E4 00 00 00
[/HEADER]
[code]
07 0F 01 97 1B 1D 11 00 00 00 00 00 00 16 26 16 14 2D 00 B0 4C 00 00 28 0F 00 B1 4C 00 00 25 07 C2 00 96 00 B1 4C 00 00 2C 03 16 14 2D 00 B0 4C 00 00 84 2D 00 B0 4C 00 00 18 64 00 19 01 78 4C 00 00 42 00 8B 53 00 00 00 1B 28 14 00 00 00 00 00 00 38 3A 19 01 78 4C 00 00 21 00 E4 52 00 00 00 1B DB 12 00 00 00 00 00 00 93 1B 1D 11 00 00 00 00 00 00 16 26 16 00 B1 4C 00 00 9A 01 1C 09 00 00 2C 02 16 16 16 16 A5 00 B1 4C 00 00 16 06 27 00 04 81 2D 00 B0 4C 00 00 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 04 28 04 3A B2 4C 00 00 53
[/CODE]
[/AFTER_HEX]

 

 

 

This appears to fix the problem, and the re-purposing of the iBranch loop shouldn't have any negative effect. Seemed unnecessary to me, if the function does its job the case where a missing perk is more than one rank back will never occur.

That little hiccup aside, it looks like Training Roulette is playing nice with these changes.

Link to comment
Share on other sites

Thanks for testing it out, and providing some feedback :) I'm glad it appears to be working for you.

 

I'd actually found that bug with the PreviousPerksToAssign but hadn't updated yet (and my solution looks basically the same as your ^_^). Bertilsson is back from holiday, and he and I are going to embark on a mission to build an export module to take the upk_mod files UPKmodder is using and build PatchUpk-compatible installable versions. Hopefully it won't take too terribly long :)

 

Also I'm happy to get the feedback on Training Roulette. It's difficult to test that one out.

 

My newest version also makes use of the already-defined psionic rank names instead of putting the regular rank names in the psionic tree. I've also been building the extension to the base mod that will enable the 8 subclasses used in Long War. It's a pretty big upgrade, basically putting in 16 perk trees... one for each subclass, and one for each MEC derived from each subclass.

Link to comment
Share on other sites

One way to speed up testing on Training Roulette may be to use this mod. Rather than having to train up a new batch of soldiers whenever a change is made, you can just load a save, maybe an easy run with all the xp requirements dropped to nil, and force a high-ranking soldier to re-shuffle his tree. It uses the same function used to assign perks in the first place, so will reflect all relevant changes.

 

I also used it to reformat the perk trees when using the Expanded Perk Tree. Making the changes to an extant game kinda... collapsed all the perks into the lower ranks? Running them through the augmentation -> dismissal loop put everything into place.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...