-
Posts
267 -
Joined
-
Last visited
Nexus Mods Profile
About Daemonjax
Profile Fields
-
Country
United States
Daemonjax's Achievements
-
I'd like to add stability damage when firing missile weapons... I think that would balance them out nicely... Like, LRM 20's would do 20 stability damage to yourself. LRM 15's would do 15 stability damage, etc. I'm looking at the "statusEffects" array field in the weapons json file... And I'd imagine there's a way to use it to add self stability damage, but can't find any examples in other json files that would show the way. The other idea I had was with an actual mod... hook into the after attack sequence is complete function, somehow get a list of all weapons fired, check if they're missile weapons somehow, and then the specific type, and then somehow apply stability damage to the mech firing it... I imagine that's possible.
-
Cant get modtek mods to work ;C
Daemonjax replied to clements1983's topic in BattleTech's Discussion
Check the logs in the mods/.modtek folder. -
I would go about it by trying to make it equipable in only the head location -- since there's only one head slot on all mechs as far as I remember.
-
Can anyone help me with a endless loop loading screen?
Daemonjax replied to Darkbutcher79's topic in BattleTech's Discussion
Try blocking the game in your firewall. There are software firewalls, like Tinywall, that make it pretty simple. If that alone doesn't work, then try putting steam in offline mode. I block everything by default and never use steam cloud. Never had a problem like this. -
Need help can't load Mods correctly
Daemonjax replied to akoenig2201's topic in BattleTech's Discussion
For those mods that were made before modtek, just plop the dll in the mods folder and it'll load. You still have to follow the steps in https://github.com/Mpstark/ModTek/wiki/The-Drop-Dead-Simple-Guide-to-Installing-BTML-&-ModTek-&-ModTek-mods of course. -
I think I think it's balanced as is because: a) It costs you a turn b) Removing it would make the game easier (for sniping/LRM mechs, anyways) because the AI really relies on guarding as they approach On a similar note, removing guarding would devalue other abilities/mechanics in the game... off the top of my head: bulwark (obviously), breaching shot, the defensive morale ability, the unsteady modifier, and melee in general. I think a dirty way to accomplish what you want is to change the guarded modifier to give 0% damage resistance... Then I guess you'd want to find the graphics icon for it and change it be full alpha so that it's not visible on the UI.
-
Which, if any, of the following are currently possible to do (listed here in order of my perceived difficultly in implementation): 1) Changing the cost of existing abilities based upon factors like what skills a pilot has 2) Adding requirements to existing morale abilities (such as what skills a pilot has) 3) Adding new morale abilities at all and have them display in the UI 4) Adding new morale abilities that would: a) Increase movement distance for a turn (would be nice for a pilot/scout) b) Remove a sensor lock on a team mate (would be nice for a tactician)
-
I followed the directions in the first page and nothing happens. There's ZERO documentation that I can find on the extension author's page. EDIT: The project is dead. Man, this is going to suck using an IDE without code completion. May as well be coding in notepad. This is pretty close to how we did mods for xcom1. Well, this is better for sure, but still. No proper IDE.
- 100 replies
-
I had this same problem recently, but with a twist. I managed to narrow it down to immersive armors v8 but, get this: I only get the bug when I create a patch (bashed patch or a manually created compatibility patch) that uses the immersive armor esp as a master.Even if I delete basically everything from the patch and have just immersive armors, skyrim.esm, and update.esm as the masters, it'll bug outthe carriage ride. Weird, eh? immmersive armors 7.1 works fine when used as a master in whatever patches I create, though... which is weird because v8 supposedly includes fixes to help preventthis issue in the first place. DOUBLE WEIRD. I spent like an entire day on this, btw. heh
-
1. I think so, since it's in my notes. Been a year. I think the reason that happened is because there's overlapping functions changed and I wanted to have both. Or maybe I wanted to combine the mod that displayed when an alien soldier was affected by red fog with the exp mod, and that's where the overlapping functions happened. There's a thread somewhere where I discuss it... I'll look for it: http://forums.nexusmods.com/index.php?/topic/1036704-red-fog-mods/page-2&do=findComment&comment=18390659 -- "I liked Drakous79's idea to add a "(Fatigued)" string after aliens' names... and since Wghost81's "Display Soldier XP, PsiXP and Mobility in Barracks and in Battle" mod also modifies that same function (UpdateHeader), I've combined the changes here..." So, pretty sure it's required since it assumes it's installed. 2. I don't know.
-
That's how overwatch should have worked from the beginning, but I think it would be too much work to even begin to figure out how to fix it. I'm not even sure it's possible. But maybe I'm wrong and it's a simple fix... but I think it's handled by native functions.
-
Here's a mod I made for myself for EW around last year (it still works with the latest EW version) that's closer to what you want, but not exactly. IMO trying to model a simulation of armor the way you want it is working against the system already in place (armor simply adds health), and so would be more work for little effect and would also screw over aliens because they don't wear armor the way soldiers do. To more closely simulate armor without going crazy or overly penalizing aliens for being aliens, you'd want to modify this to use a non-linear function to determine penalties... but I think it's fine the way it is, otherwise I would have done that myself last year. Anyways, here's what I got: * NOTE: I'm fairly sure you'd need to use my modiified version of Wasteland Ghost's "Display Soldier XP, PsiXP and Mobility in Barracks and in Battle" with this (included after this), but it's been a year... so... not 100% sure why I did the things I did, code-wise. I just installed these into a fresh version of EW recently, so I know they work. MOD_NAME=Red Fog Rebalance AUTHOR=Daemonjax DESCRIPTION=I did not like how the Red Fog second wave option worked in Vanilla, so I never used it. Now, after making these modifications, I do. Version: 1.1 Compatible with Enemy Within version newest as of 11/1/2015 1) Added requirement to use Wasteland Ghost's "Display Soldier XP, PsiXP and Mobility in Barracks and in Battle" found at: http://www.nexusmods.com/xcom/mods/474/?tab=1&navtag=http%3A%2F%2Fwww.nexusmods.com%2Fxcom%2Fajax%2Fmoddescription%2F%3Fid%3D474%26preview%3D&pUp=1 Notes: 2) Since the above mod ALSO breaks the multiplayer infocard UI, point #7 in this mod's v1.0 change notes is rendered moot. Version: 1.0 Compatible with Enemy Within version newest as of 11/1/2015 * Gameplay changes: 1) Better scaling for both aim and mobility: both penalties now linearly approach 50% of max aim/move as the unit approaches death (Vanilla hard floor limit of 2 mobility is preserved). 2) Red Fog now affects all non-robotic units, including aliens. 3) Info card shows when an Alien is affected by Red Fog aim/mobility penalties 4) Healing of any kind reduces the penalties, including all the way back to no penalties when fully healed -- as you would expect. * Vanilla bug fixes: 5) Battle Fatigue hit penalty was displayed as a bonus rather than a penalty on info card (just a display bug). It now displays properly. 6) Red Fog mobility penalties had no effect on distance units can move. It now does affect how far units can move. * What I had to break to make all these edits: 7) The UI for info cards in Multiplayer somewhat... (but who cares about Multiplayer when using mods). Misc. Notes: I did not change anything related to how the willpower penalties work. I did not increase the size of any function. UPK_FILE=XComGame.upk OBJECT=XGUnit.ApplyHPStatPenalties:KEEP /* original code function ApplyHPStatPenalties() { local float fPct; if(IsAlien_CheckByCharType()) { return; } if(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.CharacterHasProperty(GetCharacter().m_kChar.iType, 3)) { return; } m_aCurrentStats[1] += -m_iBWAimPenalty; m_aCurrentStats[3] += -m_iBWMobPenalty; fPct = float(GetUnitHP()) / float(GetUnitMaxHP()); if(fPct >= float(1)) { m_iBWAimPenalty = 0; m_iBWMobPenalty = 0; } else { if(fPct >= 0.50) { m_iBWAimPenalty = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.-15; m_iBWMobPenalty = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.-2; } else { m_iBWAimPenalty = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.-15 * 2; m_iBWMobPenalty = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.-2 * 2; } } m_aCurrentStats[1] += m_iBWAimPenalty; m_aCurrentStats[3] += m_iBWMobPenalty; //return; } */ FIND_HEX=BB C9 00 00 51 60 00 00 00 00 00 00 A3 C9 00 00 00 00 00 00 00 00 00 00 A4 C9 00 00 00 00 00 00 EA 19 00 00 86 38 03 00 31 03 00 00 29 02 00 00 07 0F 00 1B 53 44 00 00 00 00 00 00 16 04 0B 07 B0 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 3E 00 14 10 00 00 00 1B 27 12 00 00 00 00 00 00 35 56 0F 00 00 58 0F 00 00 00 00 19 1B E5 37 00 00 00 00 00 00 16 09 00 03 B8 00 00 00 01 03 B8 00 00 2C 03 16 04 0B A1 1A 26 01 63 3A 00 00 8F 01 C6 C4 00 00 16 16 A1 1A 2C 03 01 63 3A 00 00 8F 01 C5 C4 00 00 16 16 0F 00 A4 C9 00 00 AC 38 3F 1B 01 3C 00 00 00 00 00 00 16 38 3F 1B 04 3C 00 00 00 00 00 00 16 16 07 2F 01 B3 00 A4 C9 00 00 38 3F 26 16 0F 01 C6 C4 00 00 25 0F 01 C5 C4 00 00 25 06 01 03 07 1F 02 B3 00 A4 C9 00 00 1E 00 00 00 3F 16 0F 01 C6 C4 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 05 00 46 32 00 00 00 1D F1 FF FF FF 0F 01 C5 C4 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 05 00 46 32 00 00 00 1D FE FF FF FF 06 01 03 0F 01 C6 C4 00 00 90 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 05 00 46 32 00 00 00 1D F1 FF FF FF 2C 02 16 0F 01 C5 C4 00 00 90 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 05 00 46 32 00 00 00 1D FE FF FF FF 2C 02 16 A1 1A 26 01 63 3A 00 00 01 C6 C4 00 00 16 A1 1A 2C 03 01 63 3A 00 00 01 C5 C4 00 00 16 04 0B 53 00 00 00 02 00 02 00 78 04 00 00 00 00 00 00 /* new code function ApplyHPStatPenalties() { local float fPct; if(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.IsOptionEnabled(6)) { if(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.CharacterHasProperty(GetCharacter().m_kChar.iType, 3)) { return; } m_aCurrentStats[1] += m_iBWAimPenalty; fPct = float(1) - (float(GetUnitHP()) / float(GetUnitMaxHP())); m_iBWAimPenalty = int(fPct * (float(m_aCurrentStats[1]) / float(2))); m_iBWMobPenalty = 0; m_iBWMobPenalty = int(fPct * (float(GetMaxPathLength()) / float(2))); m_aCurrentStats[1] -= m_iBWAimPenalty; } //return; } */ //replace whole function MODDED_HEX=BB C9 00 00 51 60 00 00 00 00 00 00 A3 C9 00 00 00 00 00 00 00 00 00 00 A4 C9 00 00 00 00 00 00 EA 19 00 00 86 38 03 00 AD 02 00 00 29 02 00 00 07 AA 02 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 0C 00 1F 10 00 00 00 1B B4 45 00 00 00 00 00 00 24 06 16 07 0E 01 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 3E 00 14 10 00 00 00 1B 27 12 00 00 00 00 00 00 35 56 0F 00 00 58 0F 00 00 00 00 19 1B E5 37 00 00 00 00 00 00 16 09 00 03 B8 00 00 00 01 03 B8 00 00 2C 03 16 04 0B A1 1A 26 01 63 3A 00 00 01 C6 C4 00 00 16 0F 00 A4 C9 00 00 AF 38 3F 26 AC 38 3F 1B 01 3C 00 00 00 00 00 00 16 38 3F 1B 04 3C 00 00 00 00 00 00 16 16 16 0F 01 C6 C4 00 00 38 44 AB 00 A4 C9 00 00 AC 38 3F 1A 26 01 63 3A 00 00 38 3F 2C 02 16 16 0F 01 C5 C4 00 00 25 0F 01 C5 C4 00 00 38 44 AB 00 A4 C9 00 00 AC 38 3F 1B CB 39 00 00 00 00 00 00 4A 16 38 3F 2C 02 16 16 A2 1A 26 01 63 3A 00 00 01 C6 C4 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 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 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 00 00 00 02 00 02 00 78 04 00 00 00 00 00 00 OBJECT=XGUnitNativeBase.GetMaxPathLength:KEEP /* old code simulated event int GetMaxPathLength(optional bool bIgnorePoison) { local int iMaxMobility; bIgnorePoison = false; iMaxMobility = m_kCharacter.GetCharMaxPathLength() + m_aInventoryStats[3]; if((GetAppliedAbility(31)) != none) { iMaxMobility += XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.4; } if(IsAffectedByAbility(72)) { iMaxMobility += XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.4; } if(IsAffectedByAbility(74)) { iMaxMobility += XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.2; } if(GetCharacter().HasUpgrade(122)) { if((IsATank()) || IsAugmented()) { iMaxMobility += XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.3; } } if((IsAugmented()) && GetInventory().HasItemOfType(22)) { iMaxMobility += XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.4; } if(IsAffectedByAbility(57)) { iMaxMobility *= XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.0.50; iMaxMobility = Max(iMaxMobility, 2); } if(!bIgnorePoison && IsPoisoned()) { iMaxMobility *= (1.0 - 0.250); iMaxMobility = Max(iMaxMobility, 2); } if(IsAffectedByAbility(15)) { iMaxMobility *= (1.0 - 0.50); iMaxMobility = Max(iMaxMobility, 2); } if(m_bWasJustStrangling && m_kCharacter.m_kChar.iType != 23) { iMaxMobility *= ((100.0 - float(75)) / 100.0); iMaxMobility = Max(iMaxMobility, 2); } return iMaxMobility; //return ReturnValue; } */ FIND_HEX=EB 38 00 00 51 60 00 00 00 00 00 00 E2 38 00 00 00 00 00 00 00 00 00 00 E5 38 00 00 00 00 00 00 BB 09 00 00 D5 91 01 00 A5 04 00 00 4D 03 00 00 49 02 00 28 15 0F 00 E3 38 00 00 92 19 01 60 3A 00 00 0A 00 1D B8 00 00 00 1B F0 37 00 00 00 00 00 00 16 1A 2C 03 01 62 3A 00 00 16 07 B9 00 77 1B 86 37 00 00 00 00 00 00 2C 1F 16 2A 16 A1 00 E3 38 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 02 00 46 32 00 00 00 2C 04 16 07 33 01 1B 4E 44 00 00 00 00 00 00 2C 48 16 A1 00 E3 38 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 02 00 46 32 00 00 00 2C 04 16 07 AD 01 1B 4E 44 00 00 00 00 00 00 2C 4A 16 A1 00 E3 38 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 02 00 46 32 00 00 00 2C 02 16 07 59 02 19 1B E5 37 00 00 00 00 00 00 16 0C 00 2F B8 00 00 00 1B B7 3D 00 00 00 00 00 00 2C 7A 16 07 59 02 84 1B 68 44 00 00 00 00 00 00 16 18 0B 00 1B 70 44 00 00 00 00 00 00 16 16 A1 00 E3 38 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 02 00 46 32 00 00 00 2C 03 16 07 F8 02 82 1B 70 44 00 00 00 00 00 00 16 18 23 00 19 1B 56 39 00 00 00 00 00 00 16 0C 00 C8 BB 00 00 00 1B 75 3D 00 00 00 00 00 00 24 16 16 16 A1 00 E3 38 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 02 00 46 32 00 00 00 2C 04 16 07 8C 03 1B 4E 44 00 00 00 00 00 00 2C 39 16 9F 00 E3 38 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 05 00 46 32 00 00 00 1E 00 00 00 3F 16 0F 00 E3 38 00 00 FA 00 E3 38 00 00 2C 02 16 07 D8 03 82 81 2D 00 E5 38 00 00 16 18 0B 00 1B DC 45 00 00 00 00 00 00 16 16 9F 00 E3 38 00 00 AF 1E 00 00 80 3F 1E 00 00 80 3E 16 16 0F 00 E3 38 00 00 FA 00 E3 38 00 00 2C 02 16 07 15 04 1B 4E 44 00 00 00 00 00 00 2C 0F 16 9F 00 E3 38 00 00 AF 1E 00 00 80 3F 1E 00 00 00 3F 16 16 0F 00 E3 38 00 00 FA 00 E3 38 00 00 2C 02 16 07 90 04 82 2D 01 4A 3A 00 00 18 36 00 9B 35 56 0F 00 00 58 0F 00 00 00 00 19 01 60 3A 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 2C 17 16 16 9F 00 E3 38 00 00 AC AF 1E 00 00 C8 42 38 3F 2C 4B 16 1E 00 00 C8 42 16 16 0F 00 E3 38 00 00 FA 00 E3 38 00 00 2C 02 16 04 00 E3 38 00 00 04 3A E4 38 00 00 53 00 00 00 02 49 02 00 CB 39 00 00 00 00 00 00 /* new code simulated event int GetMaxPathLength(optional bool bIgnorePoison) { local int iMaxMobility; bIgnorePoison = false; iMaxMobility = (m_kCharacter.GetCharMaxPathLength() + m_aInventoryStats[3]) - XGUnit(self).m_iBWMobPenalty; if((GetAppliedAbility(31)) != none) { iMaxMobility += 4; } if(IsAffectedByAbility(72)) { iMaxMobility += 4; } if(IsAffectedByAbility(74)) { iMaxMobility += 2; } if(GetCharacter().HasUpgrade(122)) { if((IsATank()) || IsAugmented()) { iMaxMobility += 3; } } if((IsAugmented()) && GetInventory().HasItemOfType(22)) { iMaxMobility += 4; } if(IsAffectedByAbility(57)) { iMaxMobility *= 0.50; } if(!bIgnorePoison && IsPoisoned()) { iMaxMobility *= 0.75000380; } if(IsAffectedByAbility(15)) { iMaxMobility *= 0.50; } if(m_bWasJustStrangling && m_kCharacter.m_kChar.iType != 23) { iMaxMobility *= 0.250; } iMaxMobility = Max(iMaxMobility, 2); return iMaxMobility; //return ReturnValue; } */ //replace whole function MODDED_HEX=EB 38 00 00 51 60 00 00 00 00 00 00 E2 38 00 00 00 00 00 00 00 00 00 00 E5 38 00 00 00 00 00 00 BB 09 00 00 D5 91 01 00 C1 03 00 00 4D 03 00 00 49 02 00 28 15 0F 00 E3 38 00 00 93 92 19 01 60 3A 00 00 0A 00 1D B8 00 00 00 1B F0 37 00 00 00 00 00 00 16 1A 2C 03 01 62 3A 00 00 16 19 2E 3F CE 00 00 17 09 00 C5 C4 00 00 00 01 C5 C4 00 00 16 07 7C 00 77 1B 86 37 00 00 00 00 00 00 2C 1F 16 2A 16 A1 00 E3 38 00 00 2C 04 16 07 98 00 1B 4E 44 00 00 00 00 00 00 2C 48 16 A1 00 E3 38 00 00 2C 04 16 07 B4 00 1B 4E 44 00 00 00 00 00 00 2C 4A 16 A1 00 E3 38 00 00 2C 02 16 07 02 01 19 1B E5 37 00 00 00 00 00 00 16 0C 00 2F B8 00 00 00 1B B7 3D 00 00 00 00 00 00 2C 7A 16 07 02 01 84 1B 68 44 00 00 00 00 00 00 16 18 0B 00 1B 70 44 00 00 00 00 00 00 16 16 A1 00 E3 38 00 00 2C 03 16 07 43 01 82 1B 70 44 00 00 00 00 00 00 16 18 23 00 19 1B 56 39 00 00 00 00 00 00 16 0C 00 C8 BB 00 00 00 1B 75 3D 00 00 00 00 00 00 24 16 16 16 A1 00 E3 38 00 00 2C 04 16 07 62 01 1B 4E 44 00 00 00 00 00 00 2C 39 16 9F 00 E3 38 00 00 1E 00 00 00 3F 16 07 90 01 82 81 2D 00 E5 38 00 00 16 18 0B 00 1B DC 45 00 00 00 00 00 00 16 16 9F 00 E3 38 00 00 1E 3F 00 40 3F 16 07 AF 01 1B 4E 44 00 00 00 00 00 00 2C 0F 16 9F 00 E3 38 00 00 1E 00 00 00 3F 16 07 06 02 82 2D 01 4A 3A 00 00 18 36 00 9B 35 56 0F 00 00 58 0F 00 00 00 00 19 01 60 3A 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 2C 17 16 16 9F 00 E3 38 00 00 1E 00 00 80 3E 16 0F 00 E3 38 00 00 FA 00 E3 38 00 00 2C 02 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 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 00 E3 38 00 00 04 3A E4 38 00 00 53 00 00 00 02 49 02 00 CB 39 00 00 00 00 00 00 OBJECT=XGUnit.AddStatModifiers:KEEP /* original code function AddStatModifiers(int aStatModifiers[ECharacterStat], optional XGAbility_Targeted kAbility) { local int iStat; kAbility = none; iStat = 0; LOOP: if(iStat < 19) { m_aCurrentStats[iStat] += aStatModifiers[iStat]; ++ iStat; goto LOOP; } if(kAbility != none) { switch(kAbility.GetType()) { case 61: XGCharacter_Soldier(kAbility.m_kUnit.GetCharacter()).AddPsiXP(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.CalcXP(kAbility.m_kUnit, 11, self)); 19 2E 0F B9 00 00 19 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 0A 00 D0 C9 00 00 00 1B E5 37 00 00 00 00 00 00 16 93 00 00 00 00 00 00 1B 90 02 00 00 00 00 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 2B 00 E8 85 00 00 00 1B 05 11 00 00 00 00 00 00 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 2C 0B 17 16 16 break; case 57: XGCharacter_Soldier(kAbility.m_kUnit.GetCharacter()).AddPsiXP(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.CalcXP(kAbility.m_kUnit, 10, self)); break; case 29: break; case 72: break; default: } } //return; } */ FIND_HEX=05 CD 00 00 51 60 00 00 00 00 00 00 EB CC 00 00 00 00 00 00 00 00 00 00 EE CC 00 00 00 00 00 00 8A 30 00 00 26 4C 06 00 6C 02 00 00 B0 01 00 00 49 02 00 2A 15 0F 00 EC CC 00 00 25 07 56 00 96 00 EC CC 00 00 2C 13 16 A1 1A 00 EC CC 00 00 01 63 3A 00 00 1A 00 EC CC 00 00 00 EE CC 00 00 16 A5 00 EC CC 00 00 16 06 10 00 07 69 02 77 00 ED CC 00 00 2A 16 05 7C 8B 00 00 00 19 00 ED CC 00 00 0A 00 7C 8B 00 00 00 1B F0 3B 00 00 00 00 00 00 16 0A 72 01 2C 3D 19 2E 0F B9 00 00 19 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 0A 00 D0 C9 00 00 00 1B E5 37 00 00 00 00 00 00 16 93 00 00 00 00 00 00 1B 90 02 00 00 00 00 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 2B 00 E8 85 00 00 00 1B 05 11 00 00 00 00 00 00 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 2C 0B 17 16 16 06 69 02 0A 56 02 2C 39 19 2E 0F B9 00 00 19 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 0A 00 D0 C9 00 00 00 1B E5 37 00 00 00 00 00 00 16 93 00 00 00 00 00 00 1B 90 02 00 00 00 00 00 00 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 2B 00 E8 85 00 00 00 1B 05 11 00 00 00 00 00 00 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 2C 0A 17 16 16 06 69 02 0A 5E 02 2C 1D 06 69 02 0A 66 02 2C 48 06 69 02 0A FF FF 04 0B 53 00 00 00 02 40 02 00 B0 02 00 00 00 00 00 00 /* new code function AddStatModifiers(int aStatModifiers[ECharacterStat], optional XGAbility_Targeted kAbility) { local int iStat; kAbility = none; iStat = 0; LOOP: if(iStat < 19) { m_aCurrentStats[iStat] += aStatModifiers[iStat]; ++ iStat; goto LOOP; } if(kAbility != none) { iStat = kAbility.GetType(); if((iStat == 57) || iStat == 61) { XGCharacter_Soldier(kAbility.m_kUnit.GetCharacter()).AddPsiXP(20 + ((iStat / 61) * 10)); } } ApplyHPStatPenalties(); //return; } */ //NOTE: (20 + ((61 / 61) * 10) = 30, and (20 + ((57 / 61) * 10) = 20; when using integer division //replace whole function MODDED_HEX=05 CD 00 00 51 60 00 00 00 00 00 00 EB CC 00 00 00 00 00 00 00 00 00 00 EE CC 00 00 00 00 00 00 8A 30 00 00 26 4C 06 00 00 02 00 00 B0 01 00 00 49 02 00 2A 15 0F 00 EC CC 00 00 25 07 56 00 96 00 EC CC 00 00 2C 13 16 A1 1A 00 EC CC 00 00 01 63 3A 00 00 1A 00 EC CC 00 00 00 EE CC 00 00 16 A5 00 EC CC 00 00 16 06 10 00 07 18 01 77 00 ED CC 00 00 2A 16 0F 00 EC CC 00 00 19 00 ED CC 00 00 0A 00 7C 8B 00 00 00 1B F0 3B 00 00 00 00 00 00 16 07 18 01 84 9A 00 EC CC 00 00 2C 39 16 18 0E 00 9A 00 EC CC 00 00 2C 3D 16 16 19 2E 0F B9 00 00 19 19 00 ED CC 00 00 09 00 42 8B 00 00 00 01 42 8B 00 00 0A 00 D0 C9 00 00 00 1B E5 37 00 00 00 00 00 00 16 93 00 00 00 00 00 00 1B 90 02 00 00 00 00 00 00 92 2C 14 AB AC 00 EC CC 00 00 2C 3D 16 2C 0A 16 16 16 1B 78 04 00 00 00 00 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 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 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 00 00 00 02 40 02 00 B0 02 00 00 00 00 00 00 OBJECT=UIUnitGermanMode.UpdateHeader:KEEP /* old code private final simulated function UpdateHeader() { local XGCharacter_Soldier kCharacterSoldier; local XGCharacter kChar; local bool bIsFriendly, bIsShiv; local int iRank; kChar = m_kUnit.GetCharacter(); if(WorldInfo.NetMode == NM_Standalone) { if(m_kUnit.isHuman() || m_kUnit.IsShiv()) { if(kChar.m_kChar.iType == 1) { if(m_kUnit.SafeGetCharacterFullName() != "") { AS_SetSoldierInformation(m_kUnit.SafeGetCharacterFullName(), m_kUnit.SafeGetCharacterNickname(), "", "", false); } else { AS_SetSoldierInformation(m_kUnit.SafeGetCharacterName(), m_strCivilianNickname, "", "", false); } AS_SetUnitAllegiance(false); } else { kCharacterSoldier = XGCharacter_Soldier(kChar); if(m_kUnit.IsATank()) { iRank = m_kUnit.GetSHIVRank(); bIsShiv = true; } else { iRank = kCharacterSoldier.m_kSoldier.iRank; bIsShiv = false; } AS_SetSoldierInformation(m_kUnit.SafeGetCharacterFullName(), m_kUnit.SafeGetCharacterNickname(), class'UIUtilities'.static.GetClassLabel(m_kUnit.GetSoldierClass(), kCharacterSoldier.m_kChar.bHasPsiGift, class'XComPerkManager'.static.HasAnyGeneMod(kCharacterSoldier.m_kChar.aUpgrades)), class'UIUtilities'.static.GetRankLabel(iRank, bIsShiv), kCharacterSoldier.LeveledUp()); } AS_SetUnitStats(m_strHealthLabel @ string(Max(m_kUnit.GetUnitMaxHP(), m_kUnit.m_aCurrentStats[0])), m_strWillLabel @ string(GetWillBonus(m_kUnit)), m_strOffenseLabel @ string(m_kUnit.GetOffense()), m_strDefenseLabel @ string(GetDefenseBonus(m_kUnit))); AS_SetUnitAllegiance(false); } else { AS_SetAlienInformation(class'UIUtilities'.static.GetHTMLColoredText(m_kUnit.SafeGetCharacterName(), 3), false, m_kUnit.IsExalt()); AS_SetUnitAllegiance(true); } } else { bIsFriendly = m_kUnit.IsMine(); AS_SetUnitAllegiance(!bIsFriendly); if(m_kUnit.isHuman() || m_kUnit.IsShiv()) { kCharacterSoldier = XGCharacter_Soldier(kChar); if(m_kUnit.IsATank()) { iRank = m_kUnit.GetSHIVRank(); bIsShiv = true; } else { iRank = kCharacterSoldier.m_kSoldier.iRank; bIsShiv = false; } AS_SetSoldierInformation(class'UIUtilities'.static.GetHTMLColoredText(m_kUnit.SafeGetCharacterFullName(), ((bIsFriendly) ? 0 : 3)), class'UIUtilities'.static.GetHTMLColoredText(m_kUnit.SafeGetCharacterNickname(), ((bIsFriendly) ? 0 : 3)), class'UIUtilities'.static.GetClassLabel(m_kUnit.GetSoldierClass(), kCharacterSoldier.m_kChar.bHasPsiGift, class'XComPerkManager'.static.HasAnyGeneMod(kCharacterSoldier.m_kChar.aUpgrades)), class'UIUtilities'.static.GetRankLabel(iRank, bIsShiv), kCharacterSoldier.LeveledUp()); } else { AS_SetAlienInformation(class'UIUtilities'.static.GetHTMLColoredText(m_kUnit.SafeGetCharacterName(), ((bIsFriendly) ? 0 : 3)), bIsFriendly, m_kUnit.IsExalt()); } AS_SetUnitStats(class'UIUtilities'.static.GetHTMLColoredText(m_strHealthLabel @ string(m_kUnit.GetUnitMaxHP()), ((bIsFriendly) ? 0 : 3)), class'UIUtilities'.static.GetHTMLColoredText(m_strWillLabel @ string(GetWillBonus(m_kUnit)), ((bIsFriendly) ? 0 : 3)), class'UIUtilities'.static.GetHTMLColoredText(m_strOffenseLabel @ string(m_kUnit.GetOffense()), ((bIsFriendly) ? 0 : 3)), class'UIUtilities'.static.GetHTMLColoredText(m_strDefenseLabel @ string(GetDefenseBonus(m_kUnit)), ((bIsFriendly) ? 0 : 3))); } //return; } */ FIND_HEX=13 2E 00 00 51 60 00 00 00 00 00 00 0E 2E 00 00 00 00 00 00 00 00 00 00 13 2E 00 00 00 00 00 00 9A 00 00 00 F8 15 00 00 E3 09 00 00 37 07 00 00 0F 00 12 2E 00 00 19 01 F2 2D 00 00 0A 00 D0 C9 00 00 00 1B E5 37 00 00 00 00 00 00 16 07 ED 04 9A 38 3A 19 01 A6 F9 FF FF 09 00 8F FE FF FF 00 01 8F FE FF FF 38 3A 24 00 16 07 74 04 84 19 01 F2 2D 00 00 0A 00 EC 37 00 00 00 1B 25 45 00 00 00 00 00 00 16 18 20 00 19 01 F2 2D 00 00 0A 00 EE 37 00 00 00 1B 12 46 00 00 00 00 00 00 16 16 07 8A 01 9A 35 56 0F 00 00 58 0F 00 00 00 00 19 00 12 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 26 16 07 45 01 7B 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 1F 00 16 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 19 01 F2 2D 00 00 0A 00 08 38 00 00 00 1B C1 6A 00 00 00 00 00 00 16 1F 00 1F 00 28 16 06 7C 01 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 00 38 00 00 00 1B C0 6A 00 00 00 00 00 00 16 01 F7 2D 00 00 1F 00 1F 00 28 16 1B 6F 06 00 00 00 00 00 00 28 16 06 A2 03 0F 00 13 2E 00 00 2E 0F B9 00 00 00 12 2E 00 00 07 00 02 19 01 F2 2D 00 00 0A 00 E7 38 00 00 00 1B 68 44 00 00 00 00 00 00 16 0F 00 0F 2E 00 00 19 01 F2 2D 00 00 0A 00 C8 C9 00 00 00 1B 66 3B 00 00 00 00 00 00 16 14 2D 00 10 2E 00 00 27 06 47 02 0F 00 0F 2E 00 00 35 94 0F 00 00 99 0F 00 00 00 00 19 00 13 2E 00 00 09 00 D4 B8 00 00 00 01 D4 B8 00 00 14 2D 00 10 2E 00 00 28 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 19 01 F2 2D 00 00 0A 00 08 38 00 00 00 1B C1 6A 00 00 00 00 00 00 16 12 20 EC 2F 00 00 AD 00 E4 2E 00 00 00 1B FE 37 00 00 00 00 00 00 38 3A 19 01 F2 2D 00 00 0A 00 D2 C9 00 00 00 1B 77 3B 00 00 00 00 00 00 16 2D 35 4E 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 12 20 A7 71 00 00 3B 00 8F 71 00 00 00 1B 45 3D 00 00 00 00 00 00 35 54 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 16 16 12 20 EC 2F 00 00 1D 00 DF 2E 00 00 00 1B 1A 3B 00 00 00 00 00 00 00 0F 2E 00 00 2D 00 10 2E 00 00 16 19 00 13 2E 00 00 0A 00 FD B8 00 00 00 1B 2C 4C 00 00 00 00 00 00 16 16 1B 70 06 00 00 00 00 00 00 A8 01 FB 2D 00 00 38 53 FA 19 01 F2 2D 00 00 0A 00 D3 3A 00 00 00 1B 04 3C 00 00 00 00 00 00 16 1A 25 19 01 F2 2D 00 00 09 00 63 3A 00 00 00 01 63 3A 00 00 16 16 A8 01 FA 2D 00 00 38 53 1B 44 3C 00 00 00 00 00 00 01 F2 2D 00 00 16 16 A8 01 F9 2D 00 00 38 53 19 01 F2 2D 00 00 0A 00 61 C8 00 00 00 1B 71 3A 00 00 00 00 00 00 16 16 A8 01 F8 2D 00 00 38 53 1B 8D 38 00 00 00 00 00 00 01 F2 2D 00 00 16 16 16 1B 6F 06 00 00 00 00 00 00 28 16 06 EA 04 1B 29 06 00 00 00 00 00 00 12 20 EC 2F 00 00 2C 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 00 38 00 00 00 1B C0 6A 00 00 00 00 00 00 16 2C 03 4A 16 28 19 01 F2 2D 00 00 0A 00 F5 37 00 00 00 1B EB 44 00 00 00 00 00 00 16 16 1B 6F 06 00 00 00 00 00 00 27 16 06 E0 09 14 2D 00 11 2E 00 00 19 01 F2 2D 00 00 0A 00 A8 37 00 00 00 1B 96 45 00 00 00 00 00 00 16 1B 6F 06 00 00 00 00 00 00 81 2D 00 11 2E 00 00 16 16 07 F2 07 84 19 01 F2 2D 00 00 0A 00 EC 37 00 00 00 1B 25 45 00 00 00 00 00 00 16 18 20 00 19 01 F2 2D 00 00 0A 00 EE 37 00 00 00 1B 12 46 00 00 00 00 00 00 16 16 0F 00 13 2E 00 00 2E 0F B9 00 00 00 12 2E 00 00 07 E9 05 19 01 F2 2D 00 00 0A 00 E7 38 00 00 00 1B 68 44 00 00 00 00 00 00 16 0F 00 0F 2E 00 00 19 01 F2 2D 00 00 0A 00 C8 C9 00 00 00 1B 66 3B 00 00 00 00 00 00 16 14 2D 00 10 2E 00 00 27 06 30 06 0F 00 0F 2E 00 00 35 94 0F 00 00 99 0F 00 00 00 00 19 00 13 2E 00 00 09 00 D4 B8 00 00 00 01 D4 B8 00 00 14 2D 00 10 2E 00 00 28 1B 5F 06 00 00 00 00 00 00 12 20 EC 2F 00 00 3C 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 12 20 EC 2F 00 00 3C 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 08 38 00 00 00 1B C1 6A 00 00 00 00 00 00 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 12 20 EC 2F 00 00 AD 00 E4 2E 00 00 00 1B FE 37 00 00 00 00 00 00 38 3A 19 01 F2 2D 00 00 0A 00 D2 C9 00 00 00 1B 77 3B 00 00 00 00 00 00 16 2D 35 4E 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 12 20 A7 71 00 00 3B 00 8F 71 00 00 00 1B 45 3D 00 00 00 00 00 00 35 54 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 16 16 12 20 EC 2F 00 00 1D 00 DF 2E 00 00 00 1B 1A 3B 00 00 00 00 00 00 00 0F 2E 00 00 2D 00 10 2E 00 00 16 19 00 13 2E 00 00 0A 00 FD B8 00 00 00 1B 2C 4C 00 00 00 00 00 00 16 16 06 76 08 1B 29 06 00 00 00 00 00 00 12 20 EC 2F 00 00 3C 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 00 38 00 00 00 1B C0 6A 00 00 00 00 00 00 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 2D 00 11 2E 00 00 19 01 F2 2D 00 00 0A 00 F5 37 00 00 00 1B EB 44 00 00 00 00 00 00 16 16 1B 70 06 00 00 00 00 00 00 12 20 EC 2F 00 00 49 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 A8 01 FB 2D 00 00 38 53 19 01 F2 2D 00 00 0A 00 D3 3A 00 00 00 1B 04 3C 00 00 00 00 00 00 16 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 12 20 EC 2F 00 00 3D 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 A8 01 FA 2D 00 00 38 53 1B 44 3C 00 00 00 00 00 00 01 F2 2D 00 00 16 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 12 20 EC 2F 00 00 49 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 A8 01 F9 2D 00 00 38 53 19 01 F2 2D 00 00 0A 00 61 C8 00 00 00 1B 71 3A 00 00 00 00 00 00 16 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 12 20 EC 2F 00 00 3D 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 A8 01 F8 2D 00 00 38 53 1B 8D 38 00 00 00 00 00 00 01 F2 2D 00 00 16 16 45 2D 00 11 2E 00 00 01 00 25 02 00 2C 03 4A 16 16 04 0B 53 00 00 00 03 01 04 00 AD 7B 00 00 00 00 00 00 /* new code private final simulated function UpdateHeader() { local XGCharacter_Soldier kCharacterSoldier; local XGCharacter kChar; local bool bIsFriendly, bIsShiv; local int iRank; kChar = m_kUnit.GetCharacter(); if(m_kUnit.isHuman() || m_kUnit.IsShiv()) { if(kChar.m_kChar.iType == 1) { if(m_kUnit.SafeGetCharacterFullName() != "") { AS_SetSoldierInformation(m_kUnit.SafeGetCharacterFullName(), m_kUnit.SafeGetCharacterNickname(), "", "", false); } else { AS_SetSoldierInformation(m_kUnit.SafeGetCharacterName(), m_strCivilianNickname, "", "", false); } AS_SetUnitAllegiance(false); } else { kCharacterSoldier = XGCharacter_Soldier(kChar); if(m_kUnit.IsATank()) { iRank = m_kUnit.GetSHIVRank(); bIsShiv = true; } else { iRank = kCharacterSoldier.m_kSoldier.iRank; bIsShiv = false; } if(kCharacterSoldier.m_kChar.bHasPsiGift) { AS_SetSoldierInformation(m_kUnit.SafeGetCharacterFullName(), (((("XP: " $ string(kCharacterSoldier.GetXP())) $ "/") $ string(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetXPRequired(kCharacterSoldier.m_kSoldier.iRank + 1))) $ " ") $ ((((("PsiXP: " $ string(kCharacterSoldier.GetPsiXP())) $ "/") $ string(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetPsiXPRequired(kCharacterSoldier.m_kSoldier.iPsiRank + 1))) $ " ") $ m_kUnit.SafeGetCharacterNickname()), class'UIUtilities'.static.GetClassLabel(m_kUnit.GetSoldierClass(), kCharacterSoldier.m_kChar.bHasPsiGift, class'XComPerkManager'.static.HasAnyGeneMod(kCharacterSoldier.m_kChar.aUpgrades)), class'UIUtilities'.static.GetRankLabel(iRank, bIsShiv), kCharacterSoldier.LeveledUp()); } else { AS_SetSoldierInformation(m_kUnit.SafeGetCharacterFullName(), (((("XP: " $ string(kCharacterSoldier.GetXP())) $ "/") $ string(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetXPRequired(kCharacterSoldier.m_kSoldier.iRank + 1))) $ " ") $ m_kUnit.SafeGetCharacterNickname(), class'UIUtilities'.static.GetClassLabel(m_kUnit.GetSoldierClass(), kCharacterSoldier.m_kChar.bHasPsiGift, class'XComPerkManager'.static.HasAnyGeneMod(kCharacterSoldier.m_kChar.aUpgrades)), class'UIUtilities'.static.GetRankLabel(iRank, bIsShiv), kCharacterSoldier.LeveledUp()); } } AS_SetUnitStats((("Mobility: " $ string(m_kUnit.GetMaxPathLength())) $ " ") $ (m_strHealthLabel @ string(m_kUnit.m_aCurrentStats[0])), m_strWillLabel @ string(GetWillBonus(m_kUnit)), m_strOffenseLabel @ string(m_kUnit.GetOffense()), m_strDefenseLabel @ string(GetDefenseBonus(m_kUnit))); AS_SetUnitAllegiance(false); } else { if(m_kUnit.m_iBWAimPenalty != 0) { AS_SetAlienInformation((("<font color='#EE1C25'>" @ m_kUnit.SafeGetCharacterName()) @ "</font>") @ "<font size='24' color='#FFD038'>(Fatigued)</font>", false, m_kUnit.IsExalt()); } else { AS_SetAlienInformation(class'UIUtilities'.static.GetHTMLColoredText(m_kUnit.SafeGetCharacterName(), 3), false, m_kUnit.IsExalt()); } AS_SetUnitAllegiance(true); } //return; } */ // Note: this change breaks multiplayer to some extent... who cares, right? If you cared about multiplayer, you wouldn't be using mods. // Note: this also begins integration of Wasteland Ghosts "Display Soldier XP, PsiXP and Mobility in Barracks and in Battle" mod //replace whole function MODDED_HEX=13 2E 00 00 51 60 00 00 00 00 00 00 0E 2E 00 00 00 00 00 00 00 00 00 00 13 2E 00 00 00 00 00 00 9A 00 00 00 F8 15 00 00 D7 09 00 00 37 07 00 00 0F 00 12 2E 00 00 19 01 F2 2D 00 00 0A 00 D0 C9 00 00 00 1B E5 37 00 00 00 00 00 00 16 07 7C 08 84 19 01 F2 2D 00 00 0A 00 EC 37 00 00 00 1B 25 45 00 00 00 00 00 00 16 18 20 00 19 01 F2 2D 00 00 0A 00 EE 37 00 00 00 1B 12 46 00 00 00 00 00 00 16 16 07 61 01 9A 35 56 0F 00 00 58 0F 00 00 00 00 19 00 12 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 26 16 07 1C 01 7B 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 1F 00 16 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 19 01 F2 2D 00 00 0A 00 08 38 00 00 00 1B C1 6A 00 00 00 00 00 00 16 1F 00 1F 00 28 16 06 53 01 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 00 38 00 00 00 1B C0 6A 00 00 00 00 00 00 16 01 F7 2D 00 00 1F 00 1F 00 28 16 1B 6F 06 00 00 00 00 00 00 28 16 06 93 07 0F 00 13 2E 00 00 2E 0F B9 00 00 00 12 2E 00 00 07 D7 01 19 01 F2 2D 00 00 0A 00 E7 38 00 00 00 1B 68 44 00 00 00 00 00 00 16 0F 00 0F 2E 00 00 19 01 F2 2D 00 00 0A 00 C8 C9 00 00 00 1B 66 3B 00 00 00 00 00 00 16 14 2D 00 10 2E 00 00 27 06 1E 02 0F 00 0F 2E 00 00 35 94 0F 00 00 99 0F 00 00 00 00 19 00 13 2E 00 00 09 00 D4 B8 00 00 00 01 D4 B8 00 00 14 2D 00 10 2E 00 00 28 07 61 05 35 4E 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 70 70 70 70 70 1F 58 50 3A 20 00 38 53 19 00 13 2E 00 00 0A 00 0B B9 00 00 00 1B 57 3C 00 00 00 00 00 00 16 16 1F 2F 00 16 38 53 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 3E 00 F3 85 00 00 00 1B 58 3C 00 00 00 00 00 00 92 35 94 0F 00 00 99 0F 00 00 00 00 19 00 13 2E 00 00 09 00 D4 B8 00 00 00 01 D4 B8 00 00 26 16 16 16 1F 20 20 20 00 16 70 70 70 70 70 1F 50 73 69 58 50 3A 20 00 38 53 19 00 13 2E 00 00 0A 00 05 B9 00 00 00 1B 0A 3B 00 00 00 00 00 00 16 16 1F 2F 00 16 38 53 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 3E 00 F6 85 00 00 00 1B 0B 3B 00 00 00 00 00 00 92 35 93 0F 00 00 99 0F 00 00 00 00 19 00 13 2E 00 00 09 00 D4 B8 00 00 00 01 D4 B8 00 00 26 16 16 16 1F 20 20 20 00 16 19 01 F2 2D 00 00 0A 00 08 38 00 00 00 1B C1 6A 00 00 00 00 00 00 16 16 16 12 20 EC 2F 00 00 AD 00 E4 2E 00 00 00 1B FE 37 00 00 00 00 00 00 38 3A 19 01 F2 2D 00 00 0A 00 D2 C9 00 00 00 1B 77 3B 00 00 00 00 00 00 16 2D 35 4E 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 12 20 A7 71 00 00 3B 00 8F 71 00 00 00 1B 45 3D 00 00 00 00 00 00 35 54 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 16 16 12 20 EC 2F 00 00 1D 00 DF 2E 00 00 00 1B 1A 3B 00 00 00 00 00 00 00 0F 2E 00 00 2D 00 10 2E 00 00 16 19 00 13 2E 00 00 0A 00 FD B8 00 00 00 1B 2C 4C 00 00 00 00 00 00 16 16 06 93 07 1B 5F 06 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 02 38 00 00 00 1B BE 6A 00 00 00 00 00 00 16 70 70 70 70 70 1F 58 50 3A 20 00 38 53 19 00 13 2E 00 00 0A 00 0B B9 00 00 00 1B 57 3C 00 00 00 00 00 00 16 16 1F 2F 00 16 38 53 19 19 2E 54 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 46 32 00 00 00 01 46 32 00 00 3E 00 F3 85 00 00 00 1B 58 3C 00 00 00 00 00 00 92 35 94 0F 00 00 99 0F 00 00 00 00 19 00 13 2E 00 00 09 00 D4 B8 00 00 00 01 D4 B8 00 00 26 16 16 16 1F 20 20 20 00 16 19 01 F2 2D 00 00 0A 00 08 38 00 00 00 1B C1 6A 00 00 00 00 00 00 16 16 12 20 EC 2F 00 00 AD 00 E4 2E 00 00 00 1B FE 37 00 00 00 00 00 00 38 3A 19 01 F2 2D 00 00 0A 00 D2 C9 00 00 00 1B 77 3B 00 00 00 00 00 00 16 2D 35 4E 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 12 20 A7 71 00 00 3B 00 8F 71 00 00 00 1B 45 3D 00 00 00 00 00 00 35 54 0F 00 00 58 0F 00 00 00 00 19 00 13 2E 00 00 09 00 03 B8 00 00 00 01 03 B8 00 00 16 16 12 20 EC 2F 00 00 1D 00 DF 2E 00 00 00 1B 1A 3B 00 00 00 00 00 00 00 0F 2E 00 00 2D 00 10 2E 00 00 16 19 00 13 2E 00 00 0A 00 FD B8 00 00 00 1B 2C 4C 00 00 00 00 00 00 16 16 1B 70 06 00 00 00 00 00 00 70 70 70 1F 4D 6F 62 69 6C 69 74 79 3A 20 00 38 53 19 01 F2 2D 00 00 0B 00 E4 38 00 00 00 1B CB 39 00 00 00 00 00 00 4A 16 16 1F 20 20 00 16 A8 01 FB 2D 00 00 38 53 1A 25 19 01 F2 2D 00 00 09 00 63 3A 00 00 00 01 63 3A 00 00 16 16 A8 01 FA 2D 00 00 38 53 1B 44 3C 00 00 00 00 00 00 01 F2 2D 00 00 16 16 A8 01 F9 2D 00 00 38 53 19 01 F2 2D 00 00 0A 00 61 C8 00 00 00 1B 71 3A 00 00 00 00 00 00 16 16 A8 01 F8 2D 00 00 38 53 1B 8D 38 00 00 00 00 00 00 01 F2 2D 00 00 16 16 16 1B 6F 06 00 00 00 00 00 00 28 16 06 D4 09 07 46 09 9B 19 01 F2 2D 00 00 09 00 C6 C4 00 00 00 01 C6 C4 00 00 25 16 1B 29 06 00 00 00 00 00 00 A8 A8 A8 1F 3C 66 6F 6E 74 20 63 6F 6C 6F 72 3D 27 23 45 45 31 43 32 35 27 3E 00 19 01 F2 2D 00 00 0A 00 00 38 00 00 00 1B C0 6A 00 00 00 00 00 00 16 16 1F 3C 2F 66 6F 6E 74 3E 00 16 1F 3C 66 6F 6E 74 20 73 69 7A 65 3D 27 32 34 27 20 63 6F 6C 6F 72 3D 27 23 46 46 44 30 33 38 27 3E 28 46 61 74 69 67 75 65 64 29 3C 2F 66 6F 6E 74 3E 00 16 28 19 01 F2 2D 00 00 0A 00 F5 37 00 00 00 1B EB 44 00 00 00 00 00 00 16 16 06 B1 09 1B 29 06 00 00 00 00 00 00 12 20 EC 2F 00 00 2C 00 D3 2E 00 00 00 1B 34 39 00 00 00 00 00 00 19 01 F2 2D 00 00 0A 00 00 38 00 00 00 1B C0 6A 00 00 00 00 00 00 16 2C 03 4A 16 28 19 01 F2 2D 00 00 0A 00 F5 37 00 00 00 1B EB 44 00 00 00 00 00 00 16 16 1B 6F 06 00 00 00 00 00 00 27 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 04 0B 53 00 00 00 03 01 04 00 AD 7B 00 00 00 00 00 00 // to help display everything in space provided... // m_iPsiXPLevels can be similarly adjusted in DefaultGameCore.ini OBJECT=XGTacticalGameCore.GetXPRequired:KEEP /* changes simulated function int GetXPRequired(int iRank) { local int iXPRequired; - iXPRequired = 10000000; + iXPRequired = 99999; // End:0x3C if(iRank < 8) { iXPRequired = m_iSoldierXPLevels[iRank]; } return iXPRequired; //return ReturnValue; } */ [BEFORE_CODE] 1D <%u 10000000> [AFTER_CODE] 1D <%u 99999> And here's a modified version of Wasteland Ghost's "Display Soldier XP, PsiXP and Mobility in Barracks and in Battle" to use with it: MOD_NAME=Display Soldier XP, PsiXP and Mobility in Barracks and in Battle AUTHOR=wghost81 aka Wasteland Ghost DESCRIPTION=Display soldier XP, PsiXP (for Gifted soldiers only) and Mobility in character card while in barracks, and in soldier info screen (F1) while in battle. Use PatcherGUI v.4.0 to install! Version: 2.0a (Modified slightly for compatibility to work with Daemonjax's Red Fog Rebalance) Compatible with XCOM Enemy Within versions: - all Notes: I (Daemonjax) simply commented out all the sections of code which modify XComGameCore.upk, and take zero credit for this sweet mod. To free up display space, you should modify m_iPsiXPLevels within your DefaultGameCore.ini... from: m_iPsiXPLevels=10000000 to: m_iPsiXPLevels=99999 UPK_FILE=XComStrategyGame.upk OBJECT = UIStrategyComponent_SoldierInfo.UpdateData : AUTO [BEFORE_CODE] // GetNumKills(), 0 1B <GetNumKills> 16 16 25 4A 16 //AS_SetSoldierInformation(theName 1C <@AS_SetSoldierInformation> 00 <.theName> [AFTER_CODE] // GetNumKills(), 0 1B <GetNumKills> 16 16 25 4A 16 //Status = m_kSoldier.GetStatus() != 0 ? Status : ((missionsText $ " ") $ (killsText $ " ") $ Status) 0F 00 <.Status> 45 9B 38 3A 19 01 <@m_kSoldier> 0A 00 <XGStrategySoldier.GetStatus.ReturnValue> 00 1B <GetStatus> 16 25 16 <%s 9> // skip 00 <.Status> <%s 43> // skip 70 70 00 <.missionsText> 1F <%t " "> 16 70 70 00 <.killsText> 1F <%t " "> 16 00 <.Status> 16 16 //Status = (missionsText $ " ") $ (killsText $ " ") $ Status /*0F 00 <.Status> 70 70 00 <.missionsText> 1F <%t " "> 16 70 70 00 <.killsText> 1F <%t " "> 16 00 <.Status> 16 16*/ //missionsText = "XP:" $ string(m_kSoldier.m_kSoldier.iXP) $ "/" $ string(m_kSoldier.TACTICAL().GetXPRequired(m_kSoldier.m_kSoldier.iRank + 1)); 0F 00 <.missionsText> 70 1F <%t "XP:"> 70 70 38 53 // int2string 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iXP> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 00 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kSoldier> 00 01 <XGStrategySoldier.m_kSoldier> 1F <%t "/"> 16 38 53 // int2string 19 19 01 <@m_kSoldier> 0A 00 <XGStrategyActorNativeBase.TACTICAL.ReturnValue> 00 1B <TACTICAL> 16 3E 00 <XComGame.XGTacticalGameCore.GetXPRequired.ReturnValue> 00 1B <GetXPRequired> 92 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iRank> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 00 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kSoldier> 00 01 <XGStrategySoldier.m_kSoldier> 26 16 16 16 16 //killsText = "PsiXP:" $ string(m_kSoldier.m_kSoldier.iPsiXP) $ "/" $ string(m_kSoldier.TACTICAL().GetPsiXPRequired(m_kSoldier.m_kSoldier.iPsiRank + 1)); 0F 00 <.killsText> 70 1F <%t "PsiXP:"> 70 70 38 53 // int2string 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iPsiXP> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 00 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kSoldier> 00 01 <XGStrategySoldier.m_kSoldier> 1F <%t "/"> 16 38 53 // int2string 19 19 01 <@m_kSoldier> 0A 00 <XGStrategyActorNativeBase.TACTICAL.ReturnValue> 00 1B <TACTICAL> 16 3E 00 <XComGame.XGTacticalGameCore.GetPsiXPRequired.ReturnValue> 00 1B <GetPsiXPRequired> 92 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iPsiRank> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 00 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kSoldier> 00 01 <XGStrategySoldier.m_kSoldier> 26 16 16 16 16 //killsText = m_kSoldier.HasPsiGift() ? killsText : " " 0F 00 <.killsText> 45 19 01 <@m_kSoldier> 0A 00 <XGStrategySoldier.HasPsiGift.ReturnValue> 00 1B <HasPsiGift> 16 <%s 9> // skip 00 <.killsText> <%s 3> // skip 1F <%t " "> //AS_SetSoldierInformation(theName 1C <@AS_SetSoldierInformation> 00 <.theName> OBJECT = XGSoldierUI.UpdateHeader : AUTO ALIAS = MECArmor : 35 <XComGame.XGTacticalGameCoreNativeBase.TInventory.iArmor> <XComGame.XGTacticalGameCoreNativeBase.TInventory> 00 00 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.kInventory> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> [REPLACEMENT_CODE] //bHasMindShield = class'XGTacticalGameCoreNativeBase'.static.TInventoryHasItemType(m_kSoldier.m_kChar.kInventory, 71) 14 2D 00 <.bHasMindShield> 12 20 <XComGame.XGTacticalGameCoreNativeBase> 3D 00 <XComGame.XGTacticalGameCoreNativeBase.TInventoryHasItemType.ReturnValue> 00 1C <XComGame.XGTacticalGameCoreNativeBase.TInventoryHasItemType> 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.kInventory> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 2C 47 16 //m_kHeader.txtName.StrValue = m_kSoldier.GetName(4) @ m_kSoldier.GetName(3) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtName> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> A8 19 01 <@m_kSoldier> 0C 00 <XGStrategySoldier.GetName.ReturnValue> 00 1B <GetName> 24 04 16 19 01 <@m_kSoldier> 0C 00 <XGStrategySoldier.GetName.ReturnValue> 00 1B <GetName> 24 03 16 16 //m_kHeader.txtName.iState = 0 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtName> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 25 //m_kHeader.txtNickname.StrValue = m_kSoldier.GetName(2) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtNickname> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 19 01 <@m_kSoldier> 0C 00 <XGStrategySoldier.GetName.ReturnValue> 00 1B <GetName> 24 02 16 //m_kHeader.txtNickname.iState = 9 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtNickname> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 09 //m_kHeader.txtStatus.strLabel = m_strLabelStatus 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtStatus> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 01 <@m_strLabelStatus> //m_kHeader.txtStatus.StrValue = m_kSoldier.GetStatusString() 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtStatus> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 19 01 <@m_kSoldier> 0A 00 <XGStrategySoldier.GetStatusString.ReturnValue> 00 1B <GetStatusString> 16 //m_kHeader.txtStatus.iState = m_kSoldier.GetStatusUIState() 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.iState> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtStatus> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 19 01 <@m_kSoldier> 0A 00 <XGStrategySoldier.GetStatusUIState.ReturnValue> 00 1B <GetStatusUIState> 16 //m_kHeader.txtOffense.strLabel = m_strLabelOffense 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 01 <@m_strLabelOffense> //m_kHeader.txtOffense.StrValue = string(m_kSoldier.GetCurrentStat(1)) 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 19 01 <@m_kSoldier> 0B 00 <XGStrategySoldier.GetCurrentStat.ReturnValue> 00 1B <GetCurrentStat> 26 16 //m_kHeader.txtOffense.iState = 0 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.iState> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 25 //m_kHeader.txtOffense.bNumber = true 14 2D 35 <XComGame.XGTacticalScreenMgr.TLabeledText.bNumber> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 27 //m_kHeader.txtDefense.strLabel = m_strLabelDefense 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 01 <@m_strLabelDefense> //m_kHeader.txtDefense.StrValue = string(m_kSoldier.GetCurrentStat(2)) 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 19 01 <@m_kSoldier> 0C 00 <XGStrategySoldier.GetCurrentStat.ReturnValue> 00 1B <GetCurrentStat> 2C 02 16 //m_kHeader.txtDefense.iState = 0 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.iState> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 25 //m_kHeader.txtDefense.bNumber = true 14 2D 35 <XComGame.XGTacticalScreenMgr.TLabeledText.bNumber> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefense> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 27 //m_kHeader.txtHP.strLabel = m_strLabelHPSPACED 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHP> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 01 <@m_strLabelHPSPACED> //m_kHeader.txtHP.StrValue = string(m_kSoldier.GetCurrentStat(0)) 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHP> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 19 01 <@m_kSoldier> 0B 00 <XGStrategySoldier.GetCurrentStat.ReturnValue> 00 1B <GetCurrentStat> 25 16 //if(m_kSoldier.IsInjured()) 07 [@NotInjured] 19 01 <@m_kSoldier> 0A 00 <XGStrategySoldier.IsInjured.ReturnValue> 00 1B <IsInjured> 16 //m_kHeader.txtHP.StrValue $= ("/" $ string(m_kSoldier.GetMaxStat(0))) 0E <Core.Object.ConcatEqual_StrStr.ReturnValue> 61 42 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHP> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 70 1F 2F 00 38 53 19 01 <@m_kSoldier> 0B 00 <XGStrategySoldier.GetMaxStat.ReturnValue> 00 1B <GetMaxStat> 25 16 16 16 //m_kHeader.txtHP.iState = 3 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.iState> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHP> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 03 [#NotInjured] //m_kHeader.txtHP.bNumber = true 14 2D 35 <XComGame.XGTacticalScreenMgr.TLabeledText.bNumber> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHP> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 27 //m_kHeader.txtWill.strLabel = m_strLabelWill 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWill> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 01 <@m_strLabelWill> //m_kHeader.txtWill.StrValue = string(m_kSoldier.GetMaxStat(7)) 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWill> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 19 01 <@m_kSoldier> 0C 00 <XGStrategySoldier.GetMaxStat.ReturnValue> 00 1B <GetMaxStat> 2C 07 16 //m_kHeader.txtWill.iState = ((bHasMindShield) ? 11 : 0) 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.iState> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWill> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 45 2D 00 <.bHasMindShield> 02 00 2C 0B 01 00 25 //m_kHeader.txtWill.bNumber = true 14 2D 35 <XComGame.XGTacticalScreenMgr.TLabeledText.bNumber> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWill> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 27 //TACTICAL().GetBackpackItemArray(m_kSoldier.m_kChar.kInventory, arrBackPackItems) 19 1B <TACTICAL> 16 44 00 <NullRef> 00 1B <GetBackpackItemArray> 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.kInventory> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 00 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 00 <.arrBackPackItems> 16 //TACTICAL().GetInventoryStatModifiers(aModifiers, m_kSoldier.m_kChar, TACTICAL().GetEquipWeapon(m_kSoldier.m_kChar.kInventory), arrBackPackItems) 19 1B <TACTICAL> 16 8B 00 <NullRef> 00 1B <GetInventoryStatModifiers> 00 <.aModifiers> 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 19 1B <TACTICAL> 16 3B 00 <XComGame.XGTacticalGameCore.GetEquipWeapon.ReturnValue> 00 1B <GetEquipWeapon> 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.kInventory> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 00 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 16 00 <.arrBackPackItems> 16 //m_kHeader.txtOffenseMod.StrValue = "" 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 1F 00 //if(aModifiers[1] != 0) 07 [@DefMod] 9B 1A 26 00 <.aModifiers> 25 16 //if(aModifiers[1] > 0) 07 [@OffModL1] 97 1A 26 00 <.aModifiers> 25 16 //m_kHeader.txtOffenseMod.StrValue = "+" $ string(aModifiers[1]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 70 1F 2B 00 38 53 1A 26 00 <.aModifiers> 16 //m_kHeader.txtOffenseMod.iState = 2 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 02 //goto DefMod 06 [@DefMod] [#OffModL1] //m_kHeader.txtOffenseMod.StrValue = string(aModifiers[1]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 1A 26 00 <.aModifiers> //m_kHeader.txtOffenseMod.iState = 3 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtOffenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 03 [#DefMod] //m_kHeader.txtDefenseMod.StrValue = "" 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 1F 00 //if(aModifiers[2] != 0) 07 [@HPMod] 9B 1A 2C 02 00 <.aModifiers> 25 16 //if(aModifiers[2] > 0) 07 [@DefModL1] 97 1A 2C 02 00 <.aModifiers> 25 16 //m_kHeader.txtDefenseMod.StrValue = "+" $ string(aModifiers[2]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 70 1F 2B 00 38 53 1A 2C 02 00 <.aModifiers> 16 //m_kHeader.txtDefenseMod.iState = 2 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 02 //goto HPMod 06 [@HPMod] [#DefModL1] //m_kHeader.txtDefenseMod.StrValue = string(aModifiers[2]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 1A 2C 02 00 <.aModifiers> //m_kHeader.txtDefenseMod.iState = 3 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtDefenseMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 03 [#HPMod] //m_kHeader.txtHPMod.StrValue = "" 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHPMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 1F 00 //if(aModifiers[0] != 0) 07 [@WillMod] 9B 1A 25 00 <.aModifiers> 25 16 //if(aModifiers[0] > 0) 07 [@HPModL1] 97 1A 25 00 <.aModifiers> 25 16 //m_kHeader.txtHPMod.StrValue = "+" $ string(aModifiers[0]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHPMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 70 1F 2B 00 38 53 1A 25 00 <.aModifiers> 16 //m_kHeader.txtHPMod.iState = 2 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHPMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 02 //goto WillMod 06 [@WillMod] [#HPModL1] //m_kHeader.txtHPMod.StrValue = string(aModifiers[0]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHPMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 1A 25 00 <.aModifiers> //m_kHeader.txtHPMod.iState = 3 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtHPMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 03 [#WillMod] //m_kHeader.txtWillMod.StrValue = "" 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWillMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 1F 00 //if(aModifiers[7] != 0) 07 [@SpeedMod] 9B 1A 2C 07 00 <.aModifiers> 25 16 //if(aModifiers[7] > 0) 07 [@WillModL1] 97 1A 2C 07 00 <.aModifiers> 25 16 //m_kHeader.txtWillMod.StrValue = "+" $ string(aModifiers[7]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWillMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 70 1F 2B 00 38 53 1A 2C 07 00 <.aModifiers> 16 //m_kHeader.txtWillMod.iState = 2 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWillMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 02 //goto SpeedMod 06 [@SpeedMod] [#WillModL1] //m_kHeader.txtWillMod.StrValue = string(aModifiers[7]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWillMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 1A 2C 07 00 <.aModifiers> //m_kHeader.txtWillMod.iState = 3 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtWillMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 03 [#SpeedMod] // ---- modded code begin ---- //m_kHeader.txtSpeed.strLabel = "Mobility: " 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeed> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 1F <%t "Mobility: "> //m_kHeader.txtSpeed.StrValue = string(m_kSoldier.GetMaxStat(3)); 0F 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeed> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 // int2string 19 01 <@m_kSoldier> 0C 00 <XGStrategySoldier.GetMaxStat.ReturnValue> 00 1B <GetMaxStat> 2C 03 16 // KSM armor-based speed modifier /*if (m_kSoldier.m_kChar.kInventory.iArmor == 196 || m_kSoldier.m_kChar.kInventory.iArmor == 198 || m_kSoldier.m_kChar.kInventory.iArmor == 199 || m_kSoldier.m_kChar.kInventory.iArmor == 202 || m_kSoldier.m_kChar.kInventory.iArmor == 203 || m_kSoldier.m_kChar.kInventory.iArmor == 204 || m_kSoldier.m_kChar.kInventory.iArmor == 205)*/ 07 [@NotMEC] 84 9A <!MECArmor> 2C <%b 196> 16 18 <%s 458> 84 9A <!MECArmor> 2C <%b 198> 16 18 <%s 381> 84 9A <!MECArmor> 2C <%b 199> 16 18 <%s 304> 84 9A <!MECArmor> 2C <%b 202> 16 18 <%s 227> 84 9A <!MECArmor> 2C <%b 203> 16 18 <%s 150> 84 9A <!MECArmor> 2C <%b 204> 16 18 <%s 73> 9A <!MECArmor> 2C <%b 205> 16 16 16 16 16 16 16 //aModifiers[3] += 4; A1 1A 2C 03 00 <.aModifiers> 2C 04 16 [#NotMEC] // Advanced servos speed modifier for SHIVs and MECs //if (((m_kSoldier.m_kChar.iType == 3) || m_kSoldier.m_kChar.eClass == 6) && (m_kSoldier.m_kChar.aUpgrades[122] > 0)) 07 [@NoServos] 82 84 9A 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.iType> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 2C 03 16 18 <%s 54> //skip 9A 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.eClass> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 2C 06 16 16 18 <%s 56> //skip 97 1A 2C <%b 122> 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aUpgrades> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 01 <@m_kSoldier> 09 00 <XGStrategySoldier.m_kChar> 00 01 <XGStrategySoldier.m_kChar> 25 16 16 //aModifiers[3] += 3; A1 1A 2C 03 00 <.aModifiers> 2C 03 16 [#NoServos] //m_kHeader.txtSpeedMod.StrValue = "" 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeedMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 1F 00 //if(aModifiers[3] != 0) 07 [@EndMod] 9B 1A 2C 03 00 <.aModifiers> 25 16 //if(aModifiers[3] > 0) 07 [@SpeedModL1] 97 1A 2C 03 00 <.aModifiers> 25 16 //m_kHeader.txtSpeedMod.StrValue = "+" $ string(aModifiers[3]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeedMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 70 1F 2B 00 38 53 1A 2C 03 00 <.aModifiers> 16 //m_kHeader.txtSpeedMod.iState = 2 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeedMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 02 //goto EndMod 06 [@EndMod] [#SpeedModL1] //m_kHeader.txtSpeedMod.StrValue = string(aModifiers[3]) 0F 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeedMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 38 53 1A 2C 03 00 <.aModifiers> //m_kHeader.txtSpeedMod.iState = 3 0F 35 <XComGame.XGTacticalScreenMgr.TText.iState> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeedMod> <XGSoldierUI.TSoldierHeader> 00 01 01 <@m_kHeader> 2C 03 [#EndMod] // ---- modded code end ---- //return 04 0B //EOS 53 OBJECT = UIStrategyComponent_SoldierStats.UpdateData : AUTO [BEFORE_CODE] //4, 20) 2C 04 2C 14 16 16 // AS_SetSoldierStats(Health, Will, Defense, Offense) 1C <@AS_SetSoldierStats> 00 <.Health> 00 <.Will> 00 <.Defense> 00 <.Offense> 16 [AFTER_CODE] //4, 20) 2C 04 2C 14 16 16 //Health = (m_kLocalMgr.m_kHeader.txtSpeed.strLabel $ m_kLocalMgr.m_kHeader.txtSpeed.StrValue $ class'UIUtilities'.static.GetHTMLColoredText(m_kLocalMgr.m_kHeader.txtSpeedMod.StrValue, 4, 20) $ " ") $ Health 0F 00 <.Health> 70 70 35 <XComGame.XGTacticalScreenMgr.TLabeledText.strLabel> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeed> <XGSoldierUI.TSoldierHeader> 00 00 19 01 <@m_kLocalMgr> 09 00 <XGSoldierUI.m_kHeader> 00 01 <XGSoldierUI.m_kHeader> 70 35 <XComGame.XGTacticalScreenMgr.TLabeledText.StrValue> <XComGame.XGTacticalScreenMgr.TLabeledText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeed> <XGSoldierUI.TSoldierHeader> 00 00 19 01 <@m_kLocalMgr> 09 00 <XGSoldierUI.m_kHeader> 00 01 <XGSoldierUI.m_kHeader> 70 12 20 <XComGame.UIUtilities> <%s 82> // skip <XComGame.UIUtilities.GetHTMLColoredText.ReturnValue> 00 1B <GetHTMLColoredText> 35 <XComGame.XGTacticalScreenMgr.TText.StrValue> <XComGame.XGTacticalScreenMgr.TText> 00 00 35 <XGSoldierUI.TSoldierHeader.txtSpeedMod> <XGSoldierUI.TSoldierHeader> 00 00 19 01 <@m_kLocalMgr> 09 00 <XGSoldierUI.m_kHeader> 00 01 <XGSoldierUI.m_kHeader> 2C 04 2C 14 16 1F <%t " "> 16 16 16 00 <.Health> 16 // AS_SetSoldierStats(Health, Will, Defense, Offense) 1C <@AS_SetSoldierStats> 00 <.Health> 00 <.Will> 00 <.Defense> 00 <.Offense> 16
-
Very Persistent and Pesky CTD...
Daemonjax replied to jessechisel126's topic in Morrowind's Troubleshooting
Never do an upgrade/downgrade of your OS. Microsoft barely tests that s***. Always do a full install from bare metal. I'd stick with Windows 7 until the sun burns out... or until you start thinking you need more than 192gb of ram... or hardware manufacturers just stop making drivers for it (unlikely to happen before we bump into the ram limit). It's the new XP.