PepprmintButler Posted December 20, 2012 Author Share Posted December 20, 2012 Restricted customization... doneNew soldiers with helmet and armor tint ... almost done, testingArmor deco for new soldiers ... not working so far Awesome !I'd love to test the first two out, let me know when it's feasible. In other news, I just finished swapping all the abilities around. Link to comment Share on other sites More sharing options...
PepprmintButler Posted December 20, 2012 Author Share Posted December 20, 2012 As BlackAlpha rightfully predicted, many of the logos are way too small for the back "patches". I'll have to find or make simpler versions of the logos for most of them. Oh well...I need to concentrate on gameplay right now so I'll leave that on the backburner. Going to resume work on abilities right now. Link to comment Share on other sites More sharing options...
Roninberg Posted December 20, 2012 Share Posted December 20, 2012 It won't be in Alpha though, it will come later on (because mechanics must come first, and also because I'm terrible at art/design so I'll probably need to get some help on the matter) Yeah I figured that as well. Hopefully we could get a good tex modder to help out till then you're right about the gameplay > models thing hehe. An update from me. I would love to script the first mission team to Power rangers - violet, pink, red, yellow and black armor tint But as we cannot script, I'm going to make them all pink! Restricted customization... doneNew soldiers with helmet and armor tint ... almost done, testingArmor deco for new soldiers ... not working so far Cool, at least that's one step up. Go modders! Link to comment Share on other sites More sharing options...
Drakous79 Posted December 23, 2012 Share Posted December 23, 2012 (edited) Okay, I'm done. Merry Christmas! Wall of text inc! Maybe my longest one so far :smile:http://i.imgur.com/8pShV.jpgStorm troopers squad flying to the first mission.1. Customization - helmets only, nicknames and some options turned offThis works with all Hair Packages enabled and is tuned for Slingshot with Elite Soldier Pack. As it rely on indexes of prebuilt arrays, any missing DLC or hair package will screw it. And possibly new DLC as well. Good is it can be fine tuned to any version, just need to know new numbers. And in the end there can be more installation options provided.I wish I could build my own array of hair with bIsHelmet=true or reverse bAllowHelmets when calling GetContentIds, but it's not easy atm, so I stick with indexes.http://i.imgur.com/VLjtO.jpgRestricting helmets for hair spinner in XComStrategyGame.upk, class XGCustomizeUI. I've used some dirty tricks to get the same size. Added + 0 as 2C 00 to keep it off NewIdx = NewIdx. Note numbers used are -2 of what we normally see on customization screen.ORIGINALfunction AdvanceHair(int Dir) { local int CurIdx, NewIdx, NumHairs, NewHair; NumHairs = m_kPawn.PossibleHairs.Length; CurIdx = GetHairIndex(); NewIdx = CurIdx + Dir; // End:0x84 if(NewIdx < -1) { NewIdx = NumHairs - 1; } // End:0xaa if(NewIdx >= NumHairs) { NewIdx = -1; } NewHair = ((NewIdx > -1) ? m_kPawn.PossibleHairs[NewIdx] : -1); m_kPawn.SetHair(NewHair); m_kSoldier.m_kSoldier.kAppearance.iHaircut = NewHair; m_kSoldier.m_kSoldier.kAppearance.iHairColor = m_kPawn.m_kAppearance.iHairColor; UpdateView(); }ALTERED partNumHairs = m_kPawn.PossibleHairs.Length + 0; // space filler 2C 00 CurIdx = GetHairIndex(); NewIdx = CurIdx + Dir; // End:0x7b if(NewIdx < 17) // helmet 19 { NewIdx = 25; } // End:0x97 if(NewIdx > 25) // helmet 27 { NewIdx = 17; } NewIdx = NewIdx; // space fillerSF: 0F 00 16 25 00 00 36 19 01 BD 24 00 00 09 00 F1 FF FF FF 00 01 F1 FF FF FF 0F 00 18 25 00 00 1B 3E 0F 00 00 00 00 00 00 16 0F 00 17 25 00 00 92 00 18 25 00 00 00 19 25 00 00 16 07 84 00 96 00 17 25 00 00 1D FF FF FF FF 16 0F 00 17 25 00 00 93 00 16 25 00 00 26 16 07 AA 00 99 00 17 25 00 00 00 16 25 00 00 16 0F 00 17 25 00 00 1D FF FF FF FF 0F 00 15 25 00 00 45 97 00 17 25 00 00 1D FF FF FF FF 16 28 00 10 00 17 25 00 00 19 01 BD 24 00 00 09 00 F1 FF FF FF 00 01 F1 FF FF FF 05 00 1D FF FF FF FF 19 01 BD 24 00 00 13 00 00 00 00 00 00 1B C9 23 00 00 00 00 00 00 00 15 25 00 00 16 RW: 0F 00 16 25 00 00 92 36 19 01 BD 24 00 00 09 00 F1 FF FF FF 00 01 F1 FF FF FF 2C 00 16 0F 00 18 25 00 00 1B 3E 0F 00 00 00 00 00 00 16 0F 00 17 25 00 00 92 00 18 25 00 00 00 19 25 00 00 16 07 7B 00 96 00 17 25 00 00 2C 11 16 0F 00 17 25 00 00 2C 19 07 97 00 97 00 17 25 00 00 2C 19 16 0F 00 17 25 00 00 2C 11 0F 00 17 25 00 00 00 17 25 00 00 0F 00 15 25 00 00 45 97 00 17 25 00 00 1D FF FF FF FF 16 28 00 10 00 17 25 00 00 19 01 BD 24 00 00 09 00 F1 FF FF FF 00 01 F1 FF FF FF 05 00 1D FF FF FF FF 19 01 BD 24 00 00 13 00 00 00 00 00 00 1B C9 23 00 00 00 00 00 00 00 15 25 00 00 16Turning options off and enabling nicknames for ranks below Sergeant in XComStrategyGame.upk, class XGCustomizeUI. It is pretty simple, kOption.iState = 0 means enabled, 1 disabled. Nickname was bugged (grey / disabled ), if I changed from rookie to sergeant and up. Noticed it before modding in retail game. To repair it, exit the customization and enter it again. And even the code looks ok, I've enabled nicknames for all ranks. If is the nickname left empty, it will be earned upon promotion to sarge.ORIGINAL parts that got altered - swapping 25 with 26 and vice versafunction UpdateMainMenu() { ... kOption.strText = m_strNickNameButton; kOption.iState = ((m_kSoldier.GetRank() >= 3) ? 0 : 1); // changed to 0:0 ... kOption.strText = m_strRaceSpinner; kOption.strText = m_strHeadSpinner; kOption.strText = m_strSkinColorSpinner; kOption.strText = m_strHairColorSpinner; kOption.iState = 0; // changed to 1 ... kOption.strText = m_strFacialHairSpinner; kOption.iState = ((m_kPawn.m_kAppearance.iGender == 1) ? 0 : 1); // changed to 1:1 ... }SF: 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 45 99 19 01 BE 24 00 00 0A 00 FB 44 00 00 00 1B 10 10 00 00 00 00 00 00 16 2C 03 16 01 00 25 01 00 26 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 50 25 00 00 0A 00 00 51 25 00 00 16 0F 35 A8 24 00 00 A9 24 00 00 00 01 01 C1 24 00 00 00 50 25 00 00 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E5 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 07 10 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E4 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 8D 10 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E2 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 43 0F 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E0 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 48 10 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 07 2E 04 7A 35 D9 F9 FF FF 68 FA FF FF 00 00 00 51 25 00 00 1F 30 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E1 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 3E 0F 00 00 00 00 00 00 16 2C 02 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 DF 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 3D 0F 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 DE 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 45 9A 35 B0 FB FF FF 7E FA FF FF 00 00 19 01 BD 24 00 00 09 00 C5 F9 FF FF 00 01 C5 F9 FF FF 26 16 01 00 25 01 00 26 RW: 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 45 99 19 01 BE 24 00 00 0A 00 FB 44 00 00 00 1B 10 10 00 00 00 00 00 00 16 2C 03 16 01 00 25 01 00 25 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 50 25 00 00 0A 00 00 51 25 00 00 16 0F 35 A8 24 00 00 A9 24 00 00 00 01 01 C1 24 00 00 00 50 25 00 00 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E5 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 26 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 07 10 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E4 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 8D 10 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E2 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 26 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 43 0F 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E0 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 26 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 48 10 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 07 2E 04 7A 35 D9 F9 FF FF 68 FA FF FF 00 00 00 51 25 00 00 1F 30 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 E1 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 25 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 3E 0F 00 00 00 00 00 00 16 2C 02 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 DF 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 26 0F 35 D9 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 70 1F 00 38 53 92 1B 3D 0F 00 00 00 00 00 00 16 26 16 16 55 35 C4 FF FF FF 69 FA FF FF 00 00 00 4F 25 00 00 0A 00 00 51 25 00 00 16 0F 35 D8 F9 FF FF 68 FA FF FF 00 01 00 51 25 00 00 01 DE 24 00 00 0F 35 54 FB FF FF 68 FA FF FF 00 01 00 51 25 00 00 45 9A 35 B0 FB FF FF 7E FA FF FF 00 00 19 01 BD 24 00 00 09 00 C5 F9 FF FF 00 01 C5 F9 FF FF 26 16 01 00 26 01 00 26This one is obsolete and I haven't used it after disabling race spinner. But it always annoyed me, when I changed race and got helmet instead of hair, because of random hair selection. Can be tweaked in XComGame.upk, class XComHumanPawn by changing iHaircut line.simulated function SetRace(XGTacticalGameCoreNativeBase.ECharacterRace Race) { m_kAppearance.iRace = Race; FindPossibleCustomParts(Character); m_kAppearance.iHead = PossibleHeads[Rand(PossibleHeads.Length)]; m_kAppearance.iHaircut = PossibleHairs[Rand(PossibleHairs.Length)]; // changed to m_kAppearance.iHead = PossibleHeads[Rand(PossibleHeads.Length)] m_kAppearance.iSkinColor = -1; SetAppearance(m_kAppearance); }SF: 0F 35 26 0E 00 00 27 0E 00 00 00 01 01 52 46 00 00 10 A7 36 01 42 46 00 00 16 01 42 46 00 00 0F 35 23 0E 00 00 27 0E 00 00 00 01 01 52 46 00 00 10 A7 36 01 41 46 00 00 16 01 41 46 00 00 RW: 0F 35 26 0E 00 00 27 0E 00 00 00 01 01 52 46 00 00 10 A7 36 01 42 46 00 00 16 01 42 46 00 00 0F 35 26 0E 00 00 27 0E 00 00 00 01 01 52 46 00 00 10 A7 36 01 42 46 00 00 16 01 42 46 00 002. Helmets for everybody! Especially for starting and hired soldiers. With new shiny armor tint!This one is tricky. Helmets need to be added into an array and conditional loop clearing them off the array has to be disabled :smile: Lets start with adding helmets. Add true to all three GetContentIds calls. It's in XComGame.upk, class XGCharacterGenerator.ORIGINAL partnoexport function TSoldier CreateTSoldier(optional XGTacticalGameCoreNativeBase.EGender eForceGender, optional int iCountry, optional int iRace) { XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetContentIdsForRace(6, byte(kSoldier.kAppearance.iRace), RaceHairs); XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetContentIdsForGender(6, byte(kSoldier.kAppearance.iGender), GenderHairs); XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetContentIdsForCharacter(6, 2, CharacterHairs);ALTERED part - filling helmets to arrays. Last 4A to 27 means bAllowHelmets=true.XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetContentIdsForRace(6, byte(kSoldier.kAppearance.iRace), RaceHairs, true);SF: 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 48 00 00 00 00 00 00 1B B7 31 00 00 00 00 00 00 24 06 38 3D 35 24 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 00 59 A4 00 00 4A 4A 16 RW: 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 48 00 00 00 00 00 00 1B B7 31 00 00 00 00 00 00 24 06 38 3D 35 24 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 00 59 A4 00 00 4A 27 16XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetContentIdsForGender(6, byte(kSoldier.kAppearance.iGender), GenderHairs, true);SF: 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 48 00 00 00 00 00 00 1B B5 31 00 00 00 00 00 00 24 06 38 3D 35 25 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 00 5A A4 00 00 4A 4A 16 RW: 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 48 00 00 00 00 00 00 1B B5 31 00 00 00 00 00 00 24 06 38 3D 35 25 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 00 5A A4 00 00 4A 27 16XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetContentIdsForCharacter(6, 2, CharacterHairs, true);SF: 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 19 00 00 00 00 00 00 1B B4 31 00 00 00 00 00 00 24 06 24 02 00 57 A4 00 00 4A 4A 16 RW: 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 19 00 00 00 00 00 00 1B B4 31 00 00 00 00 00 00 24 06 24 02 00 57 A4 00 00 4A 27 16Jumping over restricting loop - changed 07 to 06noexport function TSoldier CreateTSoldier(optional XGTacticalGameCoreNativeBase.EGender eForceGender, optional int iCountry, optional int iRace) { Idx = Hairs.Length - 1; J0x745: // End:0x791 [While If] // changed 07 to 06 if(Idx >= 0) { // End:0x783 if(Hairs[Idx] >= 200) { Hairs.Remove(Idx, 1); } -- Idx; // This is an implied JumpToken; Continue! goto J0x745; }SF: 07 91 07 99 00 54 A4 00 00 25 16 07 83 07 99 10 00 54 A4 00 00 00 56 A4 00 00 2C C8 16 40 00 56 A4 00 00 00 54 A4 00 00 26 16 A4 00 54 A4 00 00 16 06 45 07 RW: 06 91 07 99 00 54 A4 00 00 25 16 07 83 07 99 10 00 54 A4 00 00 00 56 A4 00 00 2C C8 16 40 00 56 A4 00 00 00 54 A4 00 00 26 16 A4 00 54 A4 00 00 16 06 45 07Now we have hair(s) array filled with helmets. Lets specify the one for new guys and armor tint on top of it. I am using iArmorTint instead of iSkinColor. iRace = 2 is used as space filler. Note helmet is -2 and armor tint is -1 of what we normally see on customization screen.ORIGINAL partnoexport function TSoldier CreateTSoldier(optional XGTacticalGameCoreNativeBase.EGender eForceGender, optional int iCountry, optional int iRace) { kSoldier.kAppearance.iHaircut = Hairs[Rand(Hairs.Length)]; HairPalette = XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetColorPalette(0); kSoldier.kAppearance.iHairColor = ChooseHairColor(kSoldier.kAppearance, HairPalette.BaseOptions); kSoldier.kAppearance.iFacialHair = ((kSoldier.kAppearance.iGender == 1) ? ChooseFacialHair(kSoldier.kAppearance, kSoldier.iCountry, XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).FacialHairPresets.Length) : 0); kSoldier.kAppearance.iSkinColor = Rand(5);ALTERED part// Set helmet to 2 + number you see on customization screen. // Helmet is currently 23 (2 + 21). kSoldier.kAppearance.iHaircut = Hairs[21]; HairPalette = XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).GetColorPalette(0); kSoldier.kAppearance.iHairColor = ChooseHairColor(kSoldier.kAppearance, HairPalette.BaseOptions); kSoldier.kAppearance.iFacialHair = ((kSoldier.kAppearance.iGender == 1) ? ChooseFacialHair(kSoldier.kAppearance, kSoldier.iCountry, XComContentManager(class'Engine'.static.GetEngine().GetContentManager()).FacialHairPresets.Length) : 0); // Set armor tint to 1 + number you see on customization screen. // Armor tint is currently 30 (1 + 29) to match starting weapons color scheme. kSoldier.kAppearance.iArmorTint = 29; iRace = 2; // space filler// 17 0E 00 00 iArmorTint // 18 0E 00 00 iArmorDeco SF: 0F 35 23 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 10 A7 36 00 56 A4 00 00 16 00 56 A4 00 00 0F 00 55 A4 00 00 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 0C 00 3D 49 00 00 00 1B A3 31 00 00 00 00 00 00 24 00 16 0F 35 22 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 1B B0 10 00 00 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 19 00 55 A4 00 00 09 00 53 55 00 00 00 01 53 55 00 00 16 0F 35 21 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 45 9A 35 25 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 26 16 96 00 1B AE 10 00 00 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 35 34 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 36 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 09 00 99 45 00 00 00 01 99 45 00 00 16 01 00 25 0F 35 1E 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 A7 2C 05 16 RW: 0F 35 23 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 10 2C 15 00 56 A4 00 00 0F 00 55 A4 00 00 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 0C 00 3D 49 00 00 00 1B A3 31 00 00 00 00 00 00 24 00 16 0F 35 22 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 1B B0 10 00 00 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 19 00 55 A4 00 00 09 00 53 55 00 00 00 01 53 55 00 00 16 0F 35 21 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 45 9A 35 25 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 26 16 96 00 1B AE 10 00 00 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 35 34 0E 00 00 3B 0E 00 00 00 00 00 60 A4 00 00 36 19 2E 65 49 00 00 19 12 20 4F FE FF FF 0A 00 D7 F9 FF FF 00 1C F5 FB FF FF 16 0A 00 D9 F9 FF FF 00 1B BE 31 00 00 00 00 00 00 16 09 00 99 45 00 00 00 01 99 45 00 00 16 01 00 25 0F 35 17 0E 00 00 27 0E 00 00 00 00 35 30 0E 00 00 3B 0E 00 00 00 01 00 60 A4 00 00 2C 1D 0F 00 62 A4 00 00 2C 023. Getting cyborg bodies!It's easy if done properly. But one mistake and soldiers won't spawn! In short, I am giving Ghost armor look to Kevlar! Lets repair spawns first in XComGame.upk, class XGCharacter_Soldier.ORIGINAL partsfunction class<XComUnitPawn> GetPawnClass() { switch(m_eType) { case 14: m_kUnitPawnClassToSpawn = class'XComMaleLevelIIILight'; // End:0x1e4 break; // End:0x64 case 15: m_kUnitPawnClassToSpawn = class'XComMaleLevelIMedium'; // male - changed this to be the same as case 14 // End:0x1e4 break; case 4: m_kUnitPawnClassToSpawn = class'XComFemaleLevelIIILight'; // End:0x1e4 break; // End:0x121 case 5: m_kUnitPawnClassToSpawn = class'XComFemaleLevelIMedium'; // female - changed this to be the same as case 4 // End:0x1e4 break; } return m_kUnitPawnClassToSpawn; }// Male Kelvar C8 56 00 00 XComMaleLevelIMedium // Male Ghost BC 56 00 00 XComMaleLevelIIILight SF: 0A 64 00 24 0F 0F 01 8B A2 00 00 20 C8 56 00 00 06 E4 01 RW: 0A 64 00 24 0F 0F 01 8B A2 00 00 20 BC 56 00 00 06 E4 01// Female Kelvar D4 4D 00 00 XComFemaleLevelIMedium // Female Ghost C8 4D 00 00 XComFemaleLevelIIILight SF: 0A 21 01 24 05 0F 01 8B A2 00 00 20 D4 4D 00 00 06 E4 01 RW: 0A 21 01 24 05 0F 01 8B A2 00 00 20 C8 4D 00 00 06 E4 01Next change Kevlar to Ghost in DefaultContent.ini / UnitPackageInfo / ArmorDeco / ArmorKits for every weapon.// change to UnitPackageInfo=(PawnType=ePawnType_Male_1_Kevlar,ArchetypeName="MaleGhost.ARC_MaleGhost") UnitPackageInfo=(PawnType=ePawnType_Male_1_Kevlar,ArchetypeName="Soldier_MaleKevlar.ARC_MaleKevlar") // change to UnitPackageInfo=(PawnType=ePawnType_Female_1_Kevlar,ArchetypeName="Soldier_FemaleGhost.ARC_FemaleGhost") UnitPackageInfo=(PawnType=ePawnType_Female_1_Kevlar,ArchetypeName="Soldier_FemaleKevlar.ARC_FemaleKevlar") // change to ArmorDeco=(Armor=eItem_ArmorKevlar,ArmorKit=eKit_Deco_Ghost0) ArmorDeco=(Armor=eItem_ArmorKevlar,ArmorKit=eKit_Deco_Kevlar0) // change to ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_AssaultRifle,ArmorKit=eKit_AssaultRifle_Ghost) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_AssaultRifle,ArmorKit=eKit_AssaultRifle_Kevlar) // and the same for all weapons hurray, Kevlar at the end to Ghost ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_Shotgun,ArmorKit=eKit_Shotgun_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_LMG,ArmorKit=eKit_LMG_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_SniperRifle,ArmorKit=eKit_SniperRifle_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_LaserAssaultRifle,ArmorKit=eKit_LaserAssaultRifle_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_HeavyLaser,ArmorKit=eKit_HeavyLaser_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_LaserSniperRifle,ArmorKit=eKit_LaserSniperRifle_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_PlasmaLightRifle,ArmorKit=eKit_PlasmaLightRifle_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_PlasmaAssaultRifle,ArmorKit=eKit_PlasmaAssaultRifle_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_AlloyCannon,ArmorKit=eKit_AlloyCannon_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_HeavyPlasma,ArmorKit=eKit_HeavyPlasma_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_PlasmaSniperRifle,ArmorKit=eKit_PlasmaSniperRifle_Kevlar) ArmorKits=(Armor=eItem_ArmorKevlar,Weapon=eItem_LaserAssaultGun,ArmorKit=eKit_LaserAssaultGun_Kevlar)This can be done for other armors too, but it requires fixing it in function GetPawnClass(), otherwise soldier's won't spawn. So have the change on both places or don't use it, that is it :smile: GetPawnClass() + UnitPackageInfos have to match in terms of armor. Edited March 1, 2016 by Drakous79 Link to comment Share on other sites More sharing options...
PepprmintButler Posted December 23, 2012 Author Share Posted December 23, 2012 Awesome, awesome work. A merry Christmas indeed ! Thank you.Will try and implement ASAP.Replacing kelvar model with ghost is a good idea too. I was planning to reskin it, but yours is probably a better solution IMO (and the work has already been done too !) On my own front :I'm failing miserably at modding the Repair ability for the SHIV. I can't get ShotOverload to work either. :wallbash: The good Drakous79 is doing significantly more for "my" mod these days than I am... :wacko: Link to comment Share on other sites More sharing options...
twinj Posted December 23, 2012 Share Posted December 23, 2012 Coz he knows things! :thumbsup: Link to comment Share on other sites More sharing options...
twinj Posted December 23, 2012 Share Posted December 23, 2012 You guys want help? Link to comment Share on other sites More sharing options...
Drakous79 Posted December 23, 2012 Share Posted December 23, 2012 (edited) Cheers :) PepprmintButler no worries, there's still work to be done :) I initially wanted to set armor deco of Kevlar to 3, but nothing I tried worked. So Kevlar Ghost is a workaround which turned to be very nice cyborg like look. Helmet and armor tint I've chosen are not hardcoded and if you feel, there's better color or helmet, just swap numbers in the code. Helmet is 2C 15 (21 ... 21+2=23 on customization screen) and armor tint is 2C 1D (29 ... 29+1=30 on customization screen). Updated the post - added SF RW code for giving helmet and armor tint to new / hired soldiers. twinj that would be nice, see the boss for an assignment :) I will focus on packing christmas presents now. Edited December 23, 2012 by Drakous79 Link to comment Share on other sites More sharing options...
PepprmintButler Posted December 23, 2012 Author Share Posted December 23, 2012 You guys want help? Thanks for the offer !I see you're busy already with breaking new ground in script length fixing, which is utterly inportant. At least that's what I got out of your post, I could be wrong, most of it goes way over my head TBH.If you still have some time to spare after that, I could really use some insight on how to implement the changes I want for the SHIV, namely :- Give a Repair ability with limited charges to the SHIV (tried the drone's repair but failed to limit charges ; tried RepairSHIV but it cannot be activated without some sort of marker attached to the arc thrower apparently)- Give ShotOverload (self-destruct) to SHIVs. Plain ini modding gives the ability and makes it useable, but it has no effect (just endturn, no sploding)... Link to comment Share on other sites More sharing options...
Drakous79 Posted December 25, 2012 Share Posted December 25, 2012 (edited) Made some pictures for promotion as an exercise :) All photoshopped screenshots. Armor tint 5 to match laser weapons. http://i.imgur.com/OakfT.jpg http://i.imgur.com/2zAqz.jpg http://i.imgur.com/AvdvI.jpg http://i.imgur.com/vjH7z.jpg Edited December 25, 2012 by Drakous79 Link to comment Share on other sites More sharing options...
Recommended Posts