Amineri Posted May 14, 2013 Author Share Posted May 14, 2013 (edited) I found a third location where the Pod information was being used. The code scans through each pod and looks at each possible alien and loads the meshes and other animation details with : FindStreamingMap(kDesc.m_kAlienSquad.arrPods[iAlienPods].eMain, RequiredGlamCamMaps);FindStreamingMap(kDesc.m_kAlienSquad.arrPods[iAlienPods].eSupport1, RequiredGlamCamMaps);FindStreamingMap(kDesc.m_kAlienSquad.arrPods[iAlienPods].eSupport2, RequiredGlamCamMaps); Although it is loading them into an array called "RequiredGlamCamMaps", if this function is not called for a particular alien type, then there will be no mesh for that alien. I was able to create a pod with a Sectoid, a Floater and a Thin Man (makes me think of a joke ... "A Sectoid, a Floater, and a Thin Man walk in a bar..." :biggrin: ) However, if I attempted to create a pod with three Sectoids and two Thin Men (with the two Thin Men occupies the new #4 and #5 slots), then the Thin Men did not display and the camera got very glitchy when they Thin Men were revealed. There is other code that can dynamically create pods, and some other stuff that I don't completely understand sprinkled throughout the code. So. In order to maintain try and keep glitches and crashing bugs to a minimum, I think I'm going to go with the following formulation: kPod.eMain stores the TYPE of the main alien. Like the Highlander, there can be only one. kPod.eSupport1 stores the first support alien TYPEkPod.eSupport1AltWeapon stores the NUMBER of first support aliens kPod.eSupport2 stores the second support alien TYPEkPod.eSupport2AltWeapon stores the NUMBER of second support aliens This allows for up to 511 alien to be defined in a pod, far more than can be defined without crashing the game. (The dial goes far beyond 11). Up to three different alien types can be in a single pod (1 more than the current 2). The eSupport1 slot can be the same as eMain -- say you want 2 Cyberdiscs and 4 Drones. Put eMain =8, eSupport1 = 8, eSupport1AltWeapon = 1, eSupport2 = 17, eSupport2AltWeapon = 4. Not setting eMain may result in weird behavior... I don't know. Want a super Ethereal-led squad? Ethereal is Main, add in some Muton Elites for defense and firepower, and add in some advanced Thin Men for flankers and poison debuffs. So what about eMainAltWeapon? I'm going to use that to store the rank of the eMain alien. :smile: Stay tuned... ------------------------------- EDIT: I think this is the final version of the decompiled function that unpacks the TAlienPod structure into the dynamic array for later processing: simulated function array<XGGameData.ECharacter> GetPodCharArray(out TAlienPod kPod, out array<XGGameData.EItemType> arrAltWeapon){ local array<XGGameData.ECharacter> arrEnemies; if(kPod.eMain > 0) { arrEnemies.AddItem(kPod.eMain); } if(kPod.eSupport1 > 0) { SeqIdx = 0; if(SeqIdx <= kPod.eSupport1AltWeapon) { arrEnemies.AddItem(kPod.eSupport1); ++ SeqIdx; goto 0x00 // LOOP CONTINUE } } if(kPod.eSupport2 > 0) { SeqIdx = 0; if(SeqIdx <= kPod.eSupport2AltWeapon) { arrEnemies.AddItem(kPod.eSupport2); ++ SeqIdx; goto 0x90 // LOOP CONTINUE } } return arrEnemies; } This has the extra added bonus of being almost 100% backwards compatible with the way that the strategy game fills out the data structures now. If the AltWeapon field is zero, it creates ONE alien. If the eSupport1 or eSupport2 field is non-zero, then at least one alien is assumed, so it creates AltWeapon + 1 of that type of alien. The only way this is not backwards compatible is that if the AltWeapon field is filled out, the game will create an EXTREMELY large pod. The only time that the strategy game fills out AltWeapon is for early Mutons when it enters "14" (Light Plasma Rifle). This would create a pod of 15 or 29 Mutons .... Edited May 14, 2013 by Amineri Link to comment Share on other sites More sharing options...
Amineri Posted May 14, 2013 Author Share Posted May 14, 2013 (edited) I've put in the updated (and hopefully now final) code in the tactical side. To test I created a FirstMission pod consisting of 1 Thin Man leader, 4 Floaters and 4 Sectoids. There was also a second control pod of 3 Sectoids. One of the sectoids and one of the floaters are clipped together in the same space, and one of the floaters ended up snapping down a level, but it mostly worked. With a pod this large you'd likely need to increase the radius in which they are placed. I don't really expect people to use pods large, but wanted to see if I could get pods this large (since anUser asked :smile: ) http://wiki.tesnexus.com/images/2/2f/Pod_of_9_with_3_types.jpg The code to create this larger pod was quite simple: kSquad.arrPods[0].eMain = 6; // Thin Man leader kSquad.arrPods[0].eSupport1 = 4; // sectoid typekSquad.arrPods[0].eSupport1AltWeapon = 3; // 3+1 sectoids kSquad.arrPods[0].eSupport2 = 5; // floater typekSquad.arrPods[0].eSupport2AltWeapon = 3; //3+1 floaters Edited May 14, 2013 by Amineri Link to comment Share on other sites More sharing options...
Yzaxtol Posted May 14, 2013 Share Posted May 14, 2013 I'm thinking the only 'realistic' combos would be to hide one elite in the mobs of standard 1 Hvy Floater + 4 floaters. 1 Sectoid Commander + 6 sectoids, etc Link to comment Share on other sites More sharing options...
Yzaxtol Posted May 14, 2013 Share Posted May 14, 2013 My Pod Ideas: Sectoid+ and SectoidsCommander: Outsider and Sectoids Floater+ and FloatersThinman+ and Thinmen Light Muton+ and SectoidsLight Muton+ and FloatersCyberdisc and Drones Plasma Muton and Light MutonsHeavy Floater and FloatersSectoid Commander and SectoidsCommander: Sectoid Commander and Outsiders/Mutons Muton Elite and Plasma MutonsSectopod and Drones Muton Elite+ and Muton ElitesHeavy Floater+ and Heavy FloatersCommander: Ethereal and Muton Elites Link to comment Share on other sites More sharing options...
Amineri Posted May 14, 2013 Author Share Posted May 14, 2013 For those who wish to play around with the larger pods, I'm posting up the hex code that allows it on the tactical side. Known Issues:1) Large pods may result in alien occupying the same tile, or other aberrent behaviors2) If the strategy game tries to alternate loadout Mutons with Light Plasma rifles, this will result in brokenly large pods Otherwise this change should be compatible with existing strategy pod definitions -- pods should by default be created in the same manner as without this hex change. In order to actually get a larger pod, the functions in XGStrategyAI have to be modified. This should allow a modder to change only the pod generation instances that she wants to, without breaking the game. Here are the changes: XComGame.upk >> XGBattleDesc.InitAlienLoadoutInfoshex: original hex:25 A0 00 00 50 55 00 00 00 00 00 00 0E A0 00 00 00 00 00 00 00 00 00 00 10 A0 00 00 00 00 00 00 24 01 00 00 3F 2B 00 00 CC 04 00 00 18 03 00 00 0F 00 10 A0 00 00 25 07 C9 04 96 00 10 A0 00 00 2C 04 16 07 51 00 9A 38 3A 35 96 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 38 3A 24 10 16 04 0B 06 BB 04 07 BB 04 9A 38 3A 35 96 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 38 3A 24 00 16 0F 35 96 9F 00 00 98 9F 00 00 00 01 1A 00 10 A0 00 00 01 BF 9F 00 00 24 10 07 BF 03 81 2D 01 A3 9F 00 00 16 0F 00 0F A0 00 00 25 07 BC 03 96 00 0F A0 00 00 36 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 07 DA 01 9B 38 3A 35 36 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 38 3A 24 00 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 7D 00 1B 82 0D 00 00 00 00 00 00 35 36 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 35 33 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 16 07 C4 02 9B 38 3A 35 35 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 38 3A 24 00 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 7D 00 1B 82 0D 00 00 00 00 00 00 35 35 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 35 32 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 16 07 AE 03 9B 38 3A 35 34 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 38 3A 24 00 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 7D 00 1B 82 0D 00 00 00 00 00 00 35 34 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 35 31 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 16 A5 00 0F A0 00 00 16 06 C5 00 06 B8 04 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 2A 00 1B 82 0D 00 00 00 00 00 00 38 3D 35 8C 9F 00 00 93 9F 00 00 00 00 01 9E 9F 00 00 4A 16 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 2A 00 1B 82 0D 00 00 00 00 00 00 38 3D 35 8B 9F 00 00 93 9F 00 00 00 00 01 9E 9F 00 00 4A 16 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 2A 00 1B 82 0D 00 00 00 00 00 00 38 3D 35 88 9F 00 00 93 9F 00 00 00 00 01 9E 9F 00 00 4A 16 16 06 C9 04 A3 00 10 A0 00 00 16 06 0B 00 04 0B 53 new hex: (virtual 0x4A8)25 A0 00 00 50 55 00 00 00 00 00 00 0E A0 00 00 00 00 00 00 00 00 00 00 10 A0 00 00 00 00 00 00 24 01 00 00 3F 2B 00 00 A8 04 00 00 18 03 00 00 0F 00 10 A0 00 00 25 07 89 04 96 00 10 A0 00 00 2C 04 16 07 51 00 9A 38 3A 35 96 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 38 3A 24 10 16 04 0B 06 7B 04 07 7B 04 9A 38 3A 35 96 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 38 3A 24 00 16 0F 35 96 9F 00 00 98 9F 00 00 00 01 1A 00 10 A0 00 00 01 BF 9F 00 00 24 10 07 7F 03 81 2D 01 A3 9F 00 00 16 0F 00 0F A0 00 00 25 07 7C 03 96 00 0F A0 00 00 36 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 0F 01 B1 9F 00 00 38 3A 35 36 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 07 84 01 97 01 B1 9F 00 00 25 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 7D 00 1B 82 0D 00 00 00 00 00 00 38 3D 01 B1 9F 00 00 25 16 16 0F 01 B1 9F 00 00 38 3A 35 35 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 07 79 02 97 01 B1 9F 00 00 25 16 0F 00 68 A0 00 00 25 07 79 02 98 00 68 A0 00 00 35 32 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 7D 00 1B 82 0D 00 00 00 00 00 00 38 3D 01 B1 9F 00 00 24 00 16 16 A5 00 68 A0 00 00 16 06 E3 01 0F 01 B1 9F 00 00 38 3A 35 34 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 07 6E 03 97 01 B1 9F 00 00 25 16 0F 00 68 A0 00 00 25 07 6E 03 98 00 68 A0 00 00 35 31 00 00 00 38 00 00 00 00 00 10 00 0F A0 00 00 35 3B 00 00 00 3C 00 00 00 00 00 01 AE 9F 00 00 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 7D 00 1B 82 0D 00 00 00 00 00 00 38 3D 01 B1 9F 00 00 24 00 16 16 A5 00 68 A0 00 00 16 06 D8 02 A5 00 0F A0 00 00 16 06 C5 00 06 78 04 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 2A 00 1B 82 0D 00 00 00 00 00 00 38 3D 35 8C 9F 00 00 93 9F 00 00 00 00 01 9E 9F 00 00 4A 16 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 2A 00 1B 82 0D 00 00 00 00 00 00 38 3D 35 8B 9F 00 00 93 9F 00 00 00 00 01 9E 9F 00 00 4A 16 16 55 35 97 9F 00 00 98 9F 00 00 00 00 1A 00 10 A0 00 00 01 BF 9F 00 00 2A 00 1B 82 0D 00 00 00 00 00 00 38 3D 35 88 9F 00 00 93 9F 00 00 00 00 01 9E 9F 00 00 4A 16 16 06 89 04 A3 00 10 A0 00 00 16 06 0B 00 04 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 53 decompiled code: function InitAlienLoadoutInfos(){ local int PlayerIndex, iAlienPods; PlayerIndex = 0; J0x0B: // End:0x489 [Loop If] if(PlayerIndex < 4) { // End:0x51 if(m_arrTeamLoadoutInfos[PlayerIndex].m_eTeam == 16) { return; } // End:0x47B else { // End:0x47B if(m_arrTeamLoadoutInfos[PlayerIndex].m_eTeam == 0) { m_arrTeamLoadoutInfos[PlayerIndex].m_eTeam = 16; // End:0x37F if(!m_bUseAlienInfo) { iAlienPods = 0; J0xC5: // End:0x37C [Loop If] if(iAlienPods < m_kAlienSquad.arrPods.Length) { m_iLowestDifficulty = m_kAlienSquad.arrPods[iAlienPods].eMain; // End:0x184 if(m_iLowestDifficulty > 0) { m_arrTeamLoadoutInfos[PlayerIndex].m_arrUnits.AddItem(BuildAlienContent(byte(m_iLowestDifficulty), 0)); } m_iLowestDifficulty = m_kAlienSquad.arrPods[iAlienPods].eSupport1; // End:0x279 if(m_iLowestDifficulty > 0) { Index = 0; J0x1E3: // End:0x279 [Loop If] if(Index <= m_kAlienSquad.arrPods[iAlienPods].eSupport1AltWeapon) { m_arrTeamLoadoutInfos[PlayerIndex].m_arrUnits.AddItem(BuildAlienContent(byte(m_iLowestDifficulty), 0)); ++ Index; // [Loop Continue] goto J0x1E3; } } m_iLowestDifficulty = m_kAlienSquad.arrPods[iAlienPods].eSupport2; // End:0x36E if(m_iLowestDifficulty > 0) { Index = 0; J0x2D8: // End:0x36E [Loop If] if(Index <= m_kAlienSquad.arrPods[iAlienPods].eSupport2AltWeapon) { m_arrTeamLoadoutInfos[PlayerIndex].m_arrUnits.AddItem(BuildAlienContent(byte(m_iLowestDifficulty), 0)); ++ Index; // [Loop Continue] goto J0x2D8; } } ++ iAlienPods; // [Loop Continue] goto J0xC5; } } // End:0x478 else { m_arrTeamLoadoutInfos[PlayerIndex].m_arrUnits.AddItem(BuildAlienContent(byte(m_kAlienInfo.iPodLeaderType))); m_arrTeamLoadoutInfos[PlayerIndex].m_arrUnits.AddItem(BuildAlienContent(byte(m_kAlienInfo.iPodSupporterType))); m_arrTeamLoadoutInfos[PlayerIndex].m_arrUnits.AddItem(BuildAlienContent(byte(m_kAlienInfo.iRoamingType))); } // [Explicit Break] goto J0x489; } } ++ PlayerIndex; J0x489: // [Loop Continue] goto J0x0B; } return;} XComGame.upk >> XComAlienPodManager.GetPodCharArray hex:original hex:7C 3B 00 00 50 55 00 00 00 00 00 00 69 3B 00 00 00 00 00 00 00 00 00 00 70 3B 00 00 00 00 00 00 7E 03 00 00 8A 7A 00 00 80 01 00 00 F4 00 00 00 07 50 00 9B 38 3A 35 36 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 38 3A 24 00 16 55 00 6D 3B 00 00 1D 00 35 36 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 07 A0 00 9B 38 3A 35 35 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 38 3A 24 00 16 55 00 6D 3B 00 00 1D 00 35 35 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 07 F0 00 9B 38 3A 35 34 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 38 3A 24 00 16 55 00 6D 3B 00 00 1D 00 35 34 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 55 48 6F 3B 00 00 1D 00 35 33 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 55 48 6F 3B 00 00 1D 00 35 32 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 55 48 6F 3B 00 00 1D 00 35 31 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 04 00 6D 3B 00 00 04 3A 6E 3B 00 00 53 new hex: (virtual 0x17C)7C 3B 00 00 50 55 00 00 00 00 00 00 69 3B 00 00 00 00 00 00 00 00 00 00 70 3B 00 00 00 00 00 00 7E 03 00 00 8A 7A 00 00 7C 01 00 00 F4 00 00 00 07 4D 00 97 38 3A 35 36 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 25 16 55 00 6D 3B 00 00 1D 00 35 36 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 07 DF 00 97 38 3A 35 35 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 25 16 0F 00 A9 3B 00 00 25 07 DF 00 98 00 A9 3B 00 00 38 3A 35 32 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 55 00 6D 3B 00 00 1D 00 35 35 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 A3 00 A9 3B 00 00 16 06 7C 00 07 71 01 97 38 3A 35 34 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 25 16 0F 00 A9 3B 00 00 25 07 71 01 98 00 A9 3B 00 00 38 3A 35 31 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 55 00 6D 3B 00 00 1D 00 35 34 00 00 00 38 00 00 00 00 00 48 70 3B 00 00 16 A3 00 A9 3B 00 00 16 06 0E 01 04 00 6D 3B 00 00 53 decompiled code:simulated function array<XGGameData.ECharacter> GetPodCharArray(out TAlienPod kPod, out array<XGGameData.EItemType> arrAltWeapon){ local array<XGGameData.ECharacter> arrEnemies; // End:0x4D if(kPod.eMain > 0) { arrEnemies.AddItem(kPod.eMain); } // End:0xDF if(kPod.eSupport1 > 0) { SeqIdx = 0; J0x7C: // End:0xDF [Loop If] if(SeqIdx <= kPod.eSupport1AltWeapon) { arrEnemies.AddItem(kPod.eSupport1); ++ SeqIdx; // [Loop Continue] goto J0x7C; } } // End:0x171 if(kPod.eSupport2 > 0) { SeqIdx = 0; J0x10E: // End:0x171 [Loop If] if(SeqIdx <= kPod.eSupport2AltWeapon) { arrEnemies.AddItem(kPod.eSupport2); ++ SeqIdx; // [Loop Continue] goto J0x10E; } } return arrEnemies; } Link to comment Share on other sites More sharing options...
Amineri Posted May 14, 2013 Author Share Posted May 14, 2013 My Pod Ideas: Plasma Muton and Light Mutons I like the ideas! One issue with the current change is that there isn't a way to distinguish between Mutons with Plasma Rifles and Mutons with Light Plasma Rifles. That was what the AltWeapon fields were doing. On the strategy side they were being filled out with an actual weapon ID, but on the tactical side it just checked to see if the value was non-zero and then set a bUseAltWeapon flag. The call to that ends up creating the XGUnit data structure for the alien looks like: kAlien = m_kPlayer.SpawnAlien(eAlienType, kSpawnPt, bUseAltWeapon); Currently bUseAltWeapon will always be false with this mod. The AltWeapon info was also being used when loading the Alien Loadout info, via calls such as: BuildAlienContent(m_kAlienSquad.arrPods[iAlienPods].eSupport1, m_kAlienSquad.arrPods[iAlienPods].eSupport1AltWeapon) The hex changes above (effectively) change this to: BuildAlienContent(m_kAlienSquad.arrPods[iAlienPods].eSupport1, 0) ------------------------------- The cost of adding more units to pods was to give up the option to equip mutons with Light Plasma Rifles. I also have zero free bytes left in the GetPodCharArray that used to build both the ECharacter and AltWeapon dynamic arrays, so I can't do something clever like bit-packing or making LPR Mutons a different Character ID. I just don't see the room (unless I get rid of some of the error checking, like making sure eMain isn't 0). Link to comment Share on other sites More sharing options...
kara42 Posted May 14, 2013 Share Posted May 14, 2013 Having Mutons show up right off the bat with regular Plasma guns makes those guns earlier available for the player and thus for research via salvage. Of course this is partly balanced out by a slightly bigger jump in difficulty. But the effect is even stronger in favor of the player if there would be elite mutons with heavy plasma leading regular muton pods early on.Maybe this aspect could be adressed by changing the research tree in a way that the later plasma guns require both the earlier guns researched plus salvaged weapons instead of either of the two. Link to comment Share on other sites More sharing options...
Amineri Posted May 15, 2013 Author Share Posted May 15, 2013 Having Mutons show up right off the bat with regular Plasma guns makes those guns earlier available for the player and thus for research via salvage. Of course this is partly balanced out by a slightly bigger jump in difficulty. But the effect is even stronger in favor of the player if there would be elite mutons with heavy plasma leading regular muton pods early on.Maybe this aspect could be adressed by changing the research tree in a way that the later plasma guns require both the earlier guns researched plus salvaged weapons instead of either of the two. There are definitely a lot of balance issue surrounding larger pods and mixing together different aliens into the pods. In order to not have to use late-game aliens early in the game (as enhanced leaders of the pods), there are two options. 1) All units (of a particular alien type) can be upgraded to make the "base members" of the pod more dangerous. This is using the Dynamic Alien Stat Adjustment mod. By making all of the aliens more deadly, the initial release of later aliens can be delayed. Each alien type can be upgraded twice. 2) I've been working on ways to give extra stats and perks to the eMain pod member. See here: http://forums.nexusmods.com/index.php?/topic/965542-mod-dynamic-stat-adjustment/page-5&do=findComment&comment=8029524 . In this simple example I gave the lead sectoid +4 base HP compared to the other members of his squad. A similar mechanism can be used to grant extra aim, defense, regeneration, damage reduction, will, and perks. Essentially it would create a "high-level" leader based on the earlier type, thus avoiding issues with getting access to technology early (like being able to interrogate a Muton Elite early to get the weapon research credit). Link to comment Share on other sites More sharing options...
Yzaxtol Posted May 15, 2013 Share Posted May 15, 2013 (edited) But would it look super cool and awesome? Naaaah. To be honest, creating a believable hierachy and mixing up the squads for the aliens would probably be super awesome with only a few balance tweaks required to tone-down the exploitation the players could acheive. Edited May 15, 2013 by Yzaxtol Link to comment Share on other sites More sharing options...
Amineri Posted May 15, 2013 Author Share Posted May 15, 2013 It would look pretty awesome. It's too bad that there aren't additional overlay meshes for aliens in the same way that there are for the XCOM soldiers. There are no less than 15 XCOM overlay meshes based on class, weapon, and tech level. This gets overlayed on top of the basic armor mesh for each soldier to help make them look different. Assault has two different meshes, one for Assault Rifle and one for Shotgun. Other classes have a single overlay. Then there are ballistic, laser, and plasma type meshes. If there were such meshes for aliens they could be used to make "leader" units look distinct and interesting. Alas, I have found no such ways to tweak each alien. Alternatives I've thought of are:1) Applying an overall pallete shift or tint to an alien to make it look visually distinct2) Adjusting the relative size of the mesh, making the alien look bigger than the others Unforunately, both of these are getting into areas that I know very little about... Link to comment Share on other sites More sharing options...
Recommended Posts