Jump to content

R&D to Increase Squad Size


Beknatok

Recommended Posts

  • 4 weeks later...
  • Replies 429
  • Created
  • Last Reply

Top Posters In This Topic

I think the game creators have shown a lot of willingness to listen to fan input while they were making this game, so who knows? Maybe they'll introduce a patch that increases the maximum squad size, if they get enough requests for it.

 

To your emails, everyone!

Link to comment
Share on other sites

Unreal Pawn actors without a valid starting location are placed at world origin (0x, 0y, 0z) by default -- XComGame probably contains failsafe code that tracks the nearest valid placement location. This means, according to how the map is built relative to that translation value, the soldiers may or may not start in a useable location.
Link to comment
Share on other sites

I think the game creators have shown a lot of willingness to listen to fan input while they were making this game, so who knows?

I didn't know; so what fan input specifically was implemented in the final game?

Unless it's just the willingness to listen.

Link to comment
Share on other sites

I think the game creators have shown a lot of willingness to listen to fan input while they were making this game, so who knows? Maybe they'll introduce a patch that increases the maximum squad size, if they get enough requests for it.

 

To your emails, everyone!

 

Maybe... But only after the game will be so dead, that NO ONE will buy DLC #8374823904 with new hairstyles & pink clothes.

MAYBE... then, they will release SDK or at least an updated version, where changing configuration files actually does something, and active players won't have to be reverse-engineering hackers anymore to tune the game, like they want to play it.

 

What is going on with the game market today ?

If I wanted to be a passive consumer, I'd buy a console and play original, unchanged games only.

Why bother with PC version, if you are trying to make it console-like ?

Edited by Just6669
Link to comment
Share on other sites

Now that a way to activate the console has been found (see here), there is a much easier way to control the spawn point issue : use the TATC command (Teleport All To Cursor) at the beginning of a mission. No more separated teams or unusable teammates, everyone starts out at the same point. No more need for reloading either.

The interface issue stays though. I find that the method described by LeFire above does not work everytime - not matter how many times I go back from the squad selection screen, slot 6 stays garbled with multiple soldiers and I end up with only 6 on the map in a number of occasions. :confused:

 

Very useful tip! Will test this once I clear my Impossible Ironman (don't want to mess something like that up). I'm just about to hit the final mission.

 

As for the equipping problem, slot 6 is meant to stay garbled upon hitting the mission. You only ungarble it the first visit at the squad screen, to select your 6-man main team. Your 2nd visit will garble it again, but the 6-man team will stay.

 

Here is a visual explanation. Imagine that your 4 preferred deepstrikers (soldiers D1 to D4) are on top of the soldier roster, and your 6 preferred mainteam troops are after these 4 (M1 to M6).

 

Step 1:

Ensure all 10 troopers have been equipped, via the soldier roster (NOT the squad selection screen).

 

Step 2:

(Select the mission. On 1st visit to squad screen)

Slot 1: D1

Slot 2: D2

Slot 3: D3

Slot 4: D4

Slot 5: M1

Slot 6: M2, M3, M4, M5, M6

 

(Slot 6 will look "garbled", with names of 5 troops mixed up in it.)

 

Step 3:

(Upon degarbling Slot 6, deselecting D1 to D4 troopers, and selecting M1 to M6)

Slot 1: M1

Slot 2: M2

Slot 3: M3

Slot 4: M4

Slot 5: M5

Slot 6: M6

 

Step 4:

(Upon backing out of squad select, then selecting mission again, thus 2nd visit to squad screen)

Slot 1: M1

Slot 2: M2

Slot 3: M3

Slot 4: M4

Slot 5: M5

Slot 6: M6, D1, D2, D3, D4

 

(Slot 6 will look garbled. This is normal. Ungarbling it will release the D1 to D4 troopers, and leave you with just M1 to M6 in the mission. Start the mission)

 

Step 5:

Use the activated console mod by hitting backslash, select a position near spawn, hit "TATC" (teleport all to cursor), and it should work.

 

Now if only we manage to find a way to automate all that.

Edited by LeFire
Link to comment
Share on other sites

  • 3 weeks later...

I have been having another go at this one myself. Been getting right into the byte code. I have managed to rewrite the init function but am unsure if I can get it working.

 


  1.  
  2. Issues of note:
  3. Unknown headers (while the first 48 bytes are the header: I do not know if I need to change it to suit my changes.
  4. Strange jump offset and goto offsets: I can get the goto for a while loop but the jump if not and jump seems to always be 12 bytes or similar behind actual locations. This is probably something to do with how scripts are loaded.
  5. Other code may need to be changed.
  6. I have edited the code in a awy to keep it the same size! Tricky but can still get those bytes if we need them and vice versa!
  7. I do not know how the function type has changed to dllimport... this is probably the reason for the crash.

 

Function live in XComStrategyGame.UISquadSelect_SquadList

 

dllimport function Init(XComPlayerController _controller, UIFxsMovie _manager, UI_FxsScreen _screen, XGMission kMission, bool bNav)
{
   local XGShip_Dropship kSkyranger;

   m_iMaxSlots = 0;
   J0x0b:
   // End:0x44 [While If]
   if(7 > m_iMaxSlots)
   {
       m_arrFillOrderIndex.AddItem(m_iMaxSlots);
       ++ m_iMaxSlots;
       // This is an implied JumpToken; Continue!
       goto J0x0b;
       m_arrFillOrderIndex.AddItem(0);
   }
   m_arrFillOrderIndex.AddItem(7);
   PanelInit(_controller, _manager, _screen);
   bCanNavigate = bNav;
   kSkyranger = kMission.GetAssignedSkyranger();
   m_iMaxSlots = kSkyranger.GetCapacity();
   m_iCurrentSelection = ((m_iMaxSlots == 7) ? 5 : 4);
   m_arrUIOptions.Add(7);
}

 

D4 16 00 00 A9 1F 00 00 00 00 00 00 CE 16 00 00
00 00 00 00 00 00 00 00 D4 16 00 00 00 00 00 00
39 00 00 00 24 07 00 00 15 01 00 00 C5 00 00 00
0F 01 C4 16 00 00 25 07 44 00 97 2C 07 01 C4 16
00 00 16 55 01 C7 16 00 00 04 00 01 C4 16 00 00
16 A5 01 C4 16 00 00 16 06 0B 00 55 01 C7 16 00
00 02 00 25 16 55 01 C7 16 00 00 03 00 2C 07 16
1B 55 21 00 00 00 00 00 00 00 D4 16 00 00 00 D3
16 00 00 00 D2 16 00 00 4A 16 14 2D 01 C6 16 00
00 2D 00 D0 16 00 00 0F 00 CF 16 00 00 19 00 D1
16 00 00 0A 00 50 37 00 00 00 1B 8B 0E 00 00 00
00 00 00 16 0F 01 C4 16 00 00 19 00 CF 16 00 00
0A 00 E2 3D 00 00 00 1B AF 0E 00 00 00 00 00 00
16 0F 01 C9 16 00 00 45 9A 01 C4 16 00 00 2C 07
16 02 00 2C 05 02 00 2C 04 54 01 C8 16 00 00 2C
07 16 04 0B 53 00 00 00 02 01 02 00 FA 12 00 00
00 00 00 00

 

Crashes the game... I still want to find more about the jumps in offsets and the script header bytes.. does anyone know of any good links to find out more information about that damn header and those damn jumps? :wallbash:

 

simulated function Init(XComPlayerController _controller, UIFxsMovie _manager, UI_FxsScreen _screen, XGMission kMission, bool bNav)
{
   local XGShip_Dropship kSkyranger;

   PanelInit(_controller, _manager, _screen);
   bCanNavigate = bNav;
   kSkyranger = kMission.GetAssignedSkyranger();
   m_iMaxSlots = kSkyranger.GetCapacity();
   m_arrFillOrderIndex.AddItem(3);
   m_arrFillOrderIndex.AddItem(2);
   m_arrFillOrderIndex.AddItem(4);
   m_arrFillOrderIndex.AddItem(1);
   m_arrFillOrderIndex.AddItem(5);
   m_arrFillOrderIndex.AddItem(0);
   m_iCurrentSelection = ((m_iMaxSlots == 6) ? 5 : 4);
   m_arrUIOptions.Add(6);
}

Link to comment
Share on other sites

Ok I now understand why the code was not working. I can now create the UI using my code!!!

 

I get only 5 selection ports showing with 6 soldiers at start of game though.. working out the kinks. Difficult.

 

simulated function Init(XComPlayerController _controller, UIFxsMovie _manager, UI_FxsScreen _screen, XGMission kMission, bool bNav)
{
   local XGShip_Dropship kSkyranger;

   m_iMaxSlots = 1;
   J0x0b:
   // End:0x3f [While If]
   if(8 > m_iMaxSlots)
   {
       m_arrFillOrderIndex.AddItem(m_iMaxSlots);
       ++ m_iMaxSlots;
       // This is an implied JumpToken; Continue!
       goto J0x0b;
   }
   m_arrFillOrderIndex.AddItem(0);                                            
   PanelInit(_controller, _manager, _screen);
   bCanNavigate = bNav;
   kSkyranger = kMission.GetAssignedSkyranger();
   m_iMaxSlots = kSkyranger.GetCapacity();
   m_iCurrentSelection = ((m_iMaxSlots != 8) ? 6 : 7);
   m_arrUIOptions.Add(8);
}

 

D4 16 00 00 A9 1F 00 00 00 00 00 00 CE 16 00 00
00 00 00 00 00 00 00 00 D4 16 00 00 00 00 00 00
39 00 00 00 24 07 00 00 15 01 00 00 C5 00 00 00
0F 01 C4 16 00 00 26 07 3F 00 97 2C 08 01 C4 16
00 00 16 55 01 C7 16 00 00 0A 00 01 C4 16 00 00
16 A5 01 C4 16 00 00 16 06 0B 00 55 01 C7 16 00
00 02 00 25 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B
1B 55 21 00 00 00 00 00 00 00 D4 16 00 00 00 D3
16 00 00 00 D2 16 00 00 4A 16 14 2D 01 C6 16 00
00 2D 00 D0 16 00 00 0F 00 CF 16 00 00 19 00 D1
16 00 00 0A 00 50 37 00 00 00 1B 8B 0E 00 00 00
00 00 00 16 0F 01 C4 16 00 00 19 00 CF 16 00 00
0A 00 E2 3D 00 00 00 1B AF 0E 00 00 00 00 00 00
16 0F 01 C9 16 00 00 45 9B 01 C4 16 00 00 2C 08
16 02 00 2C 06 02 00 2C 07 54 01 C8 16 00 00 2C
08 16 04 0B 53 00 00 00 02 01 02 00 FA 12 00 00
00 00 00 00

 

Might need help figuring out just which code needs to be fixed for UI changes on the HQ OTS (Officer Training).

 

I also updated the UpdateView code with the relevant OTS index's. I now get 6 boxes with another off screen but it can be selected by a keyboard. So you can choose you soldiers! So this so far has the same problems as the Controlling abductions mod! I doubt more than 6 soldiers will show on scree. Also note with the change in code the box view for each soldier is in a different order.

 

Progress.

Edited by twinj
Link to comment
Share on other sites

Great job! Do you have SKYRANGER_CAPACITY = 6 in DGC.ini? I got to the same state (2 menus offscreen), but went searching for something like UI scale or Scene size instead of rewriting m_arrFillOrderIndex. No luck.

 

// All in XGShip_Dropship

function Init(TShip kTShip)
{
   super.Init(kTShip);
   CargoInfo = Spawn(class'XGDropshipCargoInfo');
   CargoInfo.m_arrArtifacts.Add(195);
   m_arrUpgrades.Add(3);
   m_iCapacity = class'XGTacticalGameCore'.default.SKYRANGER_CAPACITY;
   InitSound();
}

function int GetCapacity()
{
   local int iCapacity;

   iCapacity = m_iCapacity;
   // End:0x43
   if(BARRACKS().HasOTSUpgrade(1))
   {
       ++ iCapacity;
   }
   // End:0x73
   if(BARRACKS().HasOTSUpgrade(2))
   {
       ++ iCapacity;
   }
   return iCapacity;
}

function bool IsFull()
{
   return m_arrSoldiers.Length >= GetCapacity();
}

Edit: Deleted UpdateData() as I overlooked it is already done.

Edited by Drakous79
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...