Jump to content

Photo

R&D to Increase Squad Size


  • Please log in to reply
427 replies to this topic

#101
Bertilsson

Bertilsson

    Old hand

  • Members
  • PipPipPip
  • 616 posts

I will update the OrderedHigher-function tomorrow.

 

The plan is to simplify it to make space for ordering soldiers with * in name on top.

 

The original function sorts on the following criteras:

  1. Rank
  2. Number of missions
  3. Number of kills
  4. Soldier ID

The new sort order will be:

  1. * in LastName
  2. XP
  3. Soldier ID

Rank is a direct result of XP.

Number of missions and kills pretty much equals XP so it makes minimal difference if sorted on XP or those criteras.

 

If anyone thinks this would be counter intuitive, please let me know before I begin :)



#102
dubiousintent

dubiousintent

    Resident poster

  • Premium Member
  • 6,392 posts

Hmm.  Sort order determines initial position in the loading bay and in the LZ.  Any chance of using numbers instead of '*' to set load order as well?

 

-Dubious-



#103
Bertilsson

Bertilsson

    Old hand

  • Members
  • PipPipPip
  • 616 posts

I did consider that possibility but gave up on that idea due to the following reasons:

 

If you allow player to enter a number in the name and that number represents prefered slot in the skyranger...

 

And if you also sort on that critera so that for any soldier with a number in the name, the soldier with lowest number is placed on top...

 

How would conflicts be handled? If two soldiers with number 1 exists, would an arbitrary soldier 1 take slot 1 and the extra be left behind? or should the extra number one steal slot 2? I think that when soldies start dying/get wounded it would quickly get confusing or very tiresome to micromanage the name of the soldiers. Especially considering that the renaming itself does not trigger resort.

 

An alternative would be to make any number in the name the critera for being loaded and load the soldiers with lowest number first into any available slot.

 

That would basically be the same as using * but would allow the player to prioritize the soldiers, not having to remove * from all soldiers above rookies to bring one of those. But again it would allow players to confuse themselves, unlress resorting can be added as a result of renaming (I guess I will look into that in either case).

 

Hmm... But the more I think about it... Sorting soldiers with least experience on top is probably more user friendly since rookies are born without the matching critera, so giving * or number to a rookie would put him above the more experienced soldiers with number or * and he would be going before any of the more experienced soldiers are considered.

 

I will most like implement * and reversed XP-sorting since that is easiest and play testing is probably a good way to find out if it works well or needs refining.



#104
dubiousintent

dubiousintent

    Resident poster

  • Premium Member
  • 6,392 posts

How about resolving conflicts by reverse XP sorting, and only putting the first instance of each number in the appropriate slot until you have at least one of each number, and then repeat to build another team?  The basis would be that numbers are designating slots (and at least for me the position is based upon class rather than experience), so you wouldn't want to have a second instance 'bumping down' into a slot you want for another class.  And by default you are usually training up people rather than using your most experienced for every mission, at least after the first few but numbering them lets you override that in the beginning.  Names without numbers would be less generally desirable, and thus lower in the list.

 

That would give pre-slotted but least experienced at the top, then once as full pre-slotted a team as is available is sorted to the top, then your next least experienced team would be up, etc, then stray pre-slotteds, then unslotted.  That way you can keep team mixes relatively stable even when a member is in the hospital, automatically.

 

Though admittedly that is a complicated sort.  Hmm.  Also need to be able to sort upon demand to pickup changes to names/slots.  Keep forgetting that you only have limited bytes available.  Such a pain we can't add completely new functionality without regard to existing space.

 

-Dubious-


Edited by dubiousintent, 02 August 2013 - 10:13 AM.


#105
Bertilsson

Bertilsson

    Old hand

  • Members
  • PipPipPip
  • 616 posts

Maybe a better approach altogether would be to only auto-populate the very last slot using * ?

 

If you have no soldiers with * then you will get six empty slots which you populate normally.

 

If you want 2 soldiers in the last slot you name 2 soldiers with a *

If you want 3 soldiers in the last slot you name 3 soldiers with a *

 

That way you never have to rename more than 3 soldiers before a mission.

 

Edit: If I remember correctly twinj was able to get the extra slots showing off screen.

 

If that can be done, it would only be required to rename 2 soldiers at most... And in that case I'm starting to think JL's (or was it amineris?) plan to use a "ticket" object would start to become a very good alternative as player would only need to keep track of 2 extra soldiers.


Edited by Bertilsson, 02 August 2013 - 12:25 PM.


#106
XMarksTheSpot

XMarksTheSpot

    Fan

  • Members
  • PipPipPip
  • 271 posts
Edit: If I remember correctly twinj was able to get the extra slots showing off screen.

It's quite possible to add more soldier slots to the selection screen, indeed:

VV3k6hj.jpg

Note that the slots are defined and referenced from right to left (unit0, unit1, and so forth) and that I modified the UISquadSelect_SquadList#Init() method to fill the slots in that same order. I had set the skyranger's capacity to 8 via DGC edit and inside the Add Unit dialog two more soldiers showed up marked as 'On Mission'. Trying to add more units by clicking the empty slots also marked them as 'On Mission' but neither did they fill the slot in the selection screen nor did they appear in the tactical game.

 

So basically there's a bit of UPK re-coding necessary to make any new slots actually functional :geek:

 

On a related note, has anyone been looking into displaying additional soldier pawns in the hangar? In the XGFacility_Barracks#OnLoadSoldier() method I can see

Soldier.SetHQLocation(1, false, false, SlotIdx);

being called which points to XGStrategySoldier#SetHQLocation() then further to XGStrategySoldier#AddToLocation() which, oddly enough, references SeqEvent_HQUnits.AddUnitToRoomSequence() and finally the SeqEvent_HQUnits#AddUnit() methods inside XComGame.upk at which point I don't quite understand what's going on anymore (or if I've taken a wrong turn somewhere) :confused:

Though in there I do see various conditionals referencing slot ids going up to 11 which might be interpreted as some rooms being able to support up to 12 pawns. Or maybe all 12 slots are spread out throughout the whole base (hangar, infirmary, gym, recreation area)?



#107
Bertilsson

Bertilsson

    Old hand

  • Members
  • PipPipPip
  • 616 posts

Nice! :smile:

 

Did you also change static var MAX_UNITS = 6; to 8?

 

Any chance you could share the edits done in command1.upk so that someone else could poke on it in the XComStrategyGame.upk to see what happens?

 

Edit: Also, did you tab around the entire team to make sure the soldiers marked as on mission were not spawned in one of the aliens spawn locations?


Edited by Bertilsson, 02 August 2013 - 06:42 PM.


#108
johnnylump

johnnylump

    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,424 posts

Gah! Yes! Code, please!

 

EDIT: Any way to make the text boxes smaller so they fit on the screen?


Edited by johnnylump, 02 August 2013 - 06:42 PM.


#109
Amineri

Amineri

    Resident poster

  • Premium Member
  • 3,927 posts

 

So basically there's a bit of UPK re-coding necessary to make any new slots actually functional :geek:

 

 

I definitely felt like I spent more time with the perk tree mod making the required upk changes than I did the sprite changes (although I ended up with more ambitious plans than simple displaying more perks).

 

On the other hand, the launch window sprite only really needed 4 changed to 6 in a bunch of places in the upk code to get working UPK-side (they didn't reference a variable or even a constant but instead had hard-coded the maximum of 4 launch interceptors in many places).

 

For those not familiar with the upk-side UI coding conventions that Firaxis used (and maybe are standard for Unreal Engine games??), each UI functionality is typically broken into two parts. The first part is named UI<name> and the second is named XG<name>UI. The XG<name>UI class is referenced in the code as the "manager". Typically each UI<name> class has a functin called GetMgr() that returns the appropriate manager class associated with the UI. The UI<name> class is always the one that contains the actionscript calls, and is also where any callbacks from the UI are first handled. Typically there is no or very little data handling in the UI class. Most data manipulation is handled within the XG<name>UI manager class.

 

For the squad select UI, there are two UI "driver" classes :UISquadSelect and UISquadSelect_Squadlist, while the "driver" class is XGChooseSquadUI. They appear to have slightly bent their naming convention here by not using the same core name. The UISquadSelect_SquadList appears to the the driver that handles individual soldier display info, call the actionscript functions SetAddUnitText, SetSelected, SetUnitHelp, and SetUnitInfo (all of which are defined in the actionscript package Squadlist).

 

Note that the barracks situation is a bit mixed up as there is one common "manager" XGSoldierUI that handles data for all of the various barracks-related UI "driver" classes

 

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

 

Went trawling through the code and didn't initially see any hard-coded references limiting display of soldiers to only 6 in either the driver or manager classes. However in the actionscript package Squadlist there is the const definition :    static var MAX_UNITS = 6;  I'm not sure if you already updated this or not to even get more than 6 boxes displaying on screen.

 

The actionscript package Squadlist has the following bit of code for SetSelected boundary checks against MAX_UNITS.

 

Another place that likely needs to be updated is the 

 

UISquadSelect_SquadList.Init function:

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);
    //return;    
}

m_arrUIOptions is a dynamic array but only initialized to contain 6 elements, so would have to be increased to hold more.

 

 

m_arrUIOptions is a dynamic array of structs defined as:

struct UISquadList_UnitBox
{
    var int iIndex;
    var string strName;
    var string strNickName;
    var string classDesc;
    var string classLabel;
    var string item1;
    var string item2;
    var int iStatus;
    var bool bPromote;
    var bool bEmpty;
    var bool bUnavailable;
    var bool bHint;

So, it basically contains pretty much all of the info displayed in each unit box (also note that it is hard-coded to only have two item strings, thus making display of a third or subsequent small item really challenging).

 

The other thing of note is the dynamic array m_arrFillOrderIndex. This appears to be what controls how the squadselect boxes are filled out "from the middle out", while the sprite is defined (as pretty much all the sprites are) from right to left.

 

The sprite box order should be :

5   4   3   2   1   0

 

The m_arrFillOrderIndex array basically remaps the fill order to:

4   2   0   1   3   5

 

Since the element of m_arrUIOptions is always referenced via code such as:

        iDropShipIdx = m_arrFillOrderIndex.Find(iOption);
        m_arrUIOptions[iOption].bUnavailable = iDropShipIdx >= m_iMaxSlots;

the m_arrFillOrder has to be taken into account in order to properly access the new sprites at positions 6 and 7.



#110
XMarksTheSpot

XMarksTheSpot

    Fan

  • Members
  • PipPipPip
  • 271 posts

m_arrUIOptions is a dynamic array but only initialized to contain 6 elements, so would have to be increased to hold more.

However in the actionscript package Squadlist there is the const definition :    static var MAX_UNITS = 6;  I'm not sure if you already updated this or not to even get more than 6 boxes displaying on screen.
Did you also change static var MAX_UNITS = 6; to 8?

Yes to both, I didn't go into much detail regarding those minor edits, did I? Sorry about that.

I did change the m_arrUIOptions array to hold 8 elements

m_arrUIOptions.Add(8);

as well as increasing the MAX_UNITS var to 8 (as can be seen in the flash edits below).

 

Any chance you could share the edits done in command1.upk so that someone else could poke on it in the XComStrategyGame.upk to see what happens?

Gah! Yes! Code, please!

Alright, alright, no need to be so pushy :laugh:

Needs two replacements, the first is an updated "Squadlist MC" sprite definition placing two extra soldier slot boxes to the right and the left:

original header
FF 09 8C 00 00 00 3C 00 01 00
new data, 44 (0x2C) extra bytes
FF 09 B8 00 00 00 3C 00 01 00 BF 06 10 00 00 00 26 01 00 3B 00 1F 1D 87 8D 98 75 6E 69 74 37 00 BF 06 10 00 00 00 26 01 00 3B 00 1F 56 17 8D 98 75 6E 69 74 36 00 BF 06 10 00 00 00 26 1E 00 3B 00 1D 1D 4E 36 60 75 6E 69 74 35 00 BF 06 10 00 00 00 26 3B 00 3B 00 1B 1C D8 D9 80 75 6E 69 74 34 00 BF 06 10 00 00 00 26 58 00 3B 00 1B FF 18 D9 80 75 6E 69 74 33 00 BF 06 10 00 00 00 26 75 00 3B 00 1A E1 58 D9 80 75 6E 69 74 32 00 BF 06 10 00 00 00 26 92 00 3B 00 1C E1 CE 36 60 75 6E 69 74 31 00 BF 06 10 00 00 00 26 92 00 3B 00 1E A9 77 8D 98 75 6E 69 74 30 00

The second one contains edits to the SquadList ActionScript class to free up space needed by the first change (removing debug stuff) and to increase MAX_UNITS to 8:

original header
5F 5F 50 61 63 6B 61 67 65 73 2E 53 71 75 61 64 4C 69 73 74 00 FF 0E 78 0C 00 00 60 00 88 D5 03 54 00
(alternatively search for '__Packages.SquadList' string, without quotes)
new data, 44 (0x2C) bytes less
5F 5F 50 61 63 6B 61 67 65 73 2E 53 71 75 61 64 4C 69 73 74 00 FF 0E 4C 0C 00 00 60 00 88 D1 03 54 00 5F 67 6C 6F 62 61 6C 00 53 71 75 61 64 4C 69 73 74 00 61 6E 63 68 6F 72 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 41 4E 43 48 4F 52 5F 42 4F 54 54 4F 4D 5F 43 45 4E 54 45 52 00 50 61 6E 65 6C 00 70 72 6F 74 6F 74 79 70 65 00 6F 6E 4C 6F 61 64 00 75 6E 69 74 42 6F 78 65 73 00 41 72 72 61 79 00 4D 41 58 5F 55 4E 49 54 53 00 75 6E 69 74 00 70 75 73 68 00 55 70 64 61 74 65 41 6E 63 68 6F 72 69 6E 67 00 6D 78 00 75 74 69 6C 73 00 44 65 6C 65 67 61 74 65 00 63 72 65 61 74 65 00 69 6E 73 74 61 6E 63 65 00 53 75 62 73 63 72 69 62 65 54 6F 52 65 73 6F 6C 75 74 69 6F 6E 55 70 64 61 74 65 00 64 69 73 70 6F 73 65 00 73 65 74 41 6E 63 68 6F 72 00 5F 79 00 6F 6E 50 6F 70 75 6C 61 74 65 44 65 62 75 67 44 61 74 61 00 63 75 72 72 65 6E 74 53 65 6C 65 63 74 69 6F 6E 00 64 65 62 75 67 5F 63 75 72 72 65 6E 74 53 65 6C 65 63 74 69 6F 6E 00 43 6C 65 61 72 00 49 63 6F 6E 5F 58 5F 53 51 55 41 52 45 00 45 64 69 74 00 49 63 6F 6E 5F 41 5F 58 00 53 65 74 55 6E 69 74 48 65 6C 70 00 50 52 4F 4D 4F 54 45 00 00 4D 65 64 6B 69 74 00 42 41 43 4B 50 41 43 4B 3A 00 73 75 70 70 6F 72 74 00 53 75 70 70 6F 72 74 00 22 43 72 75 73 68 65 72 22 00 52 4B 2E 20 48 41 52 52 49 45 53 00 53 65 74 55 6E 69 74 49 6E 66 6F 00 46 72 61 67 20 47 72 65 6E 61 64 65 00 61 73 73 61 75 6C 74 00 41 73 73 61 75 6C 74 00 22 54 68 65 20 42 65 61 73 74 22 00 52 4B 2E 20 54 75 72 62 6F 20 44 77 61 72 66 20 4B 6F 6D 62 61 74 00 41 6C 69 65 6E 20 47 72 65 6E 61 64 65 00 73 6E 69 70 65 72 00 53 6E 69 70 65 72 00 52 4B 2E 20 53 61 76 61 67 65 20 53 75 73 68 69 20 43 68 6F 72 65 6F 67 72 61 70 68 65 72 00 47 72 61 6E 61 64 61 20 64 65 20 66 72 61 67 6D 65 6E 74 61 63 69 C3 83 C2 B3 6E 00 68 65 61 76 79 00 48 65 61 76 79 00 52 4B 2E 20 54 68 65 20 49 6E 66 65 72 6E 61 6C 20 53 6F 66 74 77 61 72 65 20 54 72 69 00 2B 00 41 44 44 20 55 4E 49 54 00 53 65 74 41 64 64 55 6E 69 74 54 65 78 74 00 4F 6E 43 68 69 6C 64 4D 6F 75 73 65 45 76 65 6E 74 00 4F 6E 43 68 69 6C 64 4D 6F 75 73 65 45 76 65 6E 74 3A 20 00 2C 20 00 49 6E 70 75 74 00 4D 4F 55 53 45 5F 55 50 00 46 6C 61 73 68 52 61 69 73 65 4D 6F 75 73 65 45 76 65 6E 74 00 66 6C 61 73 68 00 65 78 74 65 72 6E 61 6C 00 45 78 74 65 72 6E 61 6C 49 6E 74 65 72 66 61 63 65 00 63 61 6C 6C 00 6F 6E 49 6E 70 75 74 00 64 65 62 75 67 67 69 6E 67 00 44 50 41 44 5F 4C 45 46 54 00 44 50 41 44 5F 52 49 47 48 54 00 53 65 74 53 65 6C 65 63 74 65 64 00 73 65 74 49 6E 64 65 78 00 73 65 74 43 6F 6E 74 61 69 6E 65 72 00 72 65 61 6C 69 7A 65 00 53 65 74 48 65 6C 70 00 53 71 75 61 64 4C 69 73 74 20 2D 20 53 65 74 53 65 6C 65 63 74 65 64 3A 20 69 6E 64 65 78 3D 00 6F 6E 4C 6F 73 65 46 6F 63 75 73 00 6F 6E 52 65 63 65 69 76 65 46 6F 63 75 73 00 68 65 6C 70 5F 64 69 73 70 6C 61 79 31 00 68 65 6C 70 5F 69 63 6F 6E 31 00 68 65 6C 70 5F 64 69 73 70 6C 61 79 30 00 68 65 6C 70 5F 69 63 6F 6E 30 00 45 72 72 6F 72 3A 20 53 65 74 53 65 6C 65 63 74 65 64 49 74 65 6D 20 62 61 64 20 3A 20 00 41 53 53 65 74 50 72 6F 70 46 6C 61 67 73 00 96 02 00 08 00 1C 96 02 00 08 01 4E 12 12 9D 02 00 61 08 96 02 00 08 00 1C 96 02 00 08 01 8E 08 00 00 00 00 03 19 00 22 00 96 0C 00 06 00 00 00 00 00 00 00 00 04 02 03 52 17 96 06 00 04 01 08 02 08 03 1C 96 02 00 08 04 4E 4F 87 01 00 01 4F 96 02 00 08 00 1C 96 02 00 08 01 4E 96 02 00 08 05 1C 69 96 04 00 04 01 08 06 4E 87 01 00 02 17 96 04 00 04 02 08 07 8E 08 00 00 00 00 04 19 00 D5 00 96 0F 00 04 01 08 08 06 00 00 00 00 00 00 00 00 08 09 40 4F 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 03 17 96 04 00 04 03 08 01 1C 96 02 00 08 0A 4E 48 12 9D 02 00 2F 00 96 06 00 04 01 08 0B 04 03 47 4E 96 09 00 07 01 00 00 00 04 01 08 08 4E 96 02 00 08 0C 52 17 96 02 00 04 03 50 87 01 00 03 17 99 02 00 BC FF 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 07 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 0D 52 17 96 04 00 04 01 08 0D 4E 96 09 00 04 01 07 02 00 00 00 08 0E 1C 96 02 00 08 0F 4E 96 02 00 08 10 4E 96 02 00 08 11 52 96 10 00 07 01 00 00 00 06 00 00 00 00 00 00 00 00 08 03 1C 96 02 00 08 12 52 96 02 00 08 13 52 17 4F 96 04 00 04 02 08 14 8E 08 00 00 00 00 03 19 00 5A 00 96 04 00 04 01 08 0D 4E 96 09 00 04 01 07 02 00 00 00 08 0E 1C 96 02 00 08 0F 4E 96 02 00 08 10 4E 96 02 00 08 11 52 96 10 00 07 01 00 00 00 06 00 00 00 00 00 00 00 00 08 03 1C 96 02 00 08 12 52 96 02 00 08 13 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 14 52 17 4F 96 04 00 04 02 08 0D 8E 08 00 00 00 00 02 29 00 2C 00 96 04 00 04 01 08 02 4E 96 09 00 07 01 00 00 00 04 01 08 15 52 17 96 08 00 04 01 08 16 04 01 08 16 4E 96 05 00 07 19 00 00 00 0B 4F 4F 96 04 00 04 02 08 17 8E 08 00 00 00 00 02 29 00 EA 00 96 0D 00 04 01 08 18 06 00 00 00 00 00 00 00 00 4F 96 0D 00 04 01 08 19 06 00 00 00 00 00 00 00 00 4F 96 11 00 08 1A 08 1B 08 1C 08 1D 07 04 00 00 00 04 01 08 1E 52 17 96 27 00 08 1F 08 20 08 21 08 22 08 23 08 24 08 25 08 26 07 03 00 00 00 06 00 00 00 00 00 00 00 00 07 0A 00 00 00 04 01 08 27 52 17 96 27 00 08 20 08 28 08 21 08 22 08 29 08 2A 08 2B 08 2C 06 00 00 00 00 00 00 00 00 07 01 00 00 00 07 0A 00 00 00 04 01 08 27 52 17 96 23 00 08 20 08 20 08 2D 08 22 08 2E 08 2F 08 2B 08 30 07 01 00 00 00 07 02 00 00 00 07 0A 00 00 00 04 01 08 27 52 17 96 14 00 08 1D 08 35 08 36 07 04 00 00 00 07 04 00 00 00 04 01 08 37 52 17 96 14 00 08 1D 08 35 08 36 07 05 00 00 00 07 04 00 00 00 04 01 08 37 52 17 4F 96 04 00 04 02 08 38 8E 17 00 00 02 00 04 29 00 03 74 61 72 67 65 74 00 02 65 76 65 6E 74 00 58 00 96 04 00 08 39 04 03 47 96 02 00 08 3A 47 96 02 00 04 02 47 26 96 04 00 04 02 08 3B 1C 96 02 00 08 3C 4E 49 12 9D 02 00 2E 00 96 02 00 04 03 4B 96 04 00 04 02 04 01 4B 96 09 00 08 3D 07 04 00 00 00 08 3E 1C 96 02 00 08 3F 4E 96 02 00 08 40 4E 96 02 00 08 41 52 17 4F 96 04 00 04 02 08 42 8E 16 00 00 02 00 05 29 01 04 63 6F 64 65 00 00 61 63 74 69 6F 6E 00 F7 00 96 04 00 04 02 08 43 4E 12 12 9D 02 00 06 00 96 02 00 05 00 3E 96 02 00 05 01 87 01 00 03 17 96 02 00 04 04 87 01 00 00 96 02 00 08 3B 1C 96 02 00 08 44 4E 66 9D 02 00 19 00 96 04 00 04 00 08 3B 1C 96 02 00 08 45 4E 66 9D 02 00 46 00 99 02 00 8F 00 96 0C 00 04 01 08 19 04 01 08 19 04 01 08 19 4E 50 87 01 00 00 4F 96 04 00 04 00 08 01 1C 96 02 00 08 0A 4E 3F 4F 96 04 00 04 01 08 19 4E 96 09 00 07 01 00 00 00 04 01 08 46 52 17 99 02 00 5D 00 96 0C 00 04 01 08 19 04 01 08 19 04 01 08 19 4E 51 87 01 00 00 4F 96 04 00 04 00 08 01 1C 96 02 00 08 0A 4E 47 96 02 00 08 01 1C 96 02 00 08 0A 4E 3F 4F 96 04 00 04 01 08 19 4E 96 09 00 07 01 00 00 00 04 01 08 46 52 17 99 02 00 0F 00 96 02 00 05 00 87 01 00 03 17 99 02 00 00 00 96 02 00 04 03 3E 4F 96 04 00 04 02 08 27 8E 61 00 00 0A 00 0C 29 00 02 69 6E 64 65 78 00 09 73 74 61 74 75 73 00 03 75 6E 69 74 4E 61 6D 65 00 08 6E 69 63 6B 6E 61 6D 65 00 07 63 6C 61 73 73 54 65 78 74 00 0B 63 6C 61 73 73 4C 61 62 65 6C 00 0A 62 61 63 6B 70 61 63 6B 00 05 69 74 65 6D 31 00 04 69 74 65 6D 32 00 06 70 72 6F 6D 6F 00 82 00 96 0B 00 04 02 07 01 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 47 52 17 96 0B 00 04 01 07 01 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 48 52 17 96 1B 00 04 06 04 04 04 05 04 0A 04 0B 04 07 04 08 04 03 04 09 07 09 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 27 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 49 52 17 4F 96 04 00 04 02 08 37 8E 2C 00 00 04 00 06 29 00 02 69 6E 64 65 78 00 04 64 69 73 70 6C 61 79 53 74 72 69 6E 67 00 03 70 72 65 66 69 78 00 05 69 63 6F 6E 00 94 00 96 0B 00 04 02 07 01 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 47 52 17 96 0B 00 04 01 07 01 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 48 52 17 96 0F 00 04 05 04 03 04 04 07 03 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 37 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 4A 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 49 52 17 4F 96 04 00 04 02 08 46 8E 36 00 00 02 00 05 29 00 03 74 61 72 67 65 74 49 6E 64 65 78 00 04 66 6F 72 63 65 52 65 64 72 61 77 49 66 50 72 65 76 69 6F 75 73 6C 79 53 65 6C 65 63 74 65 64 00 40 01 96 03 00 04 03 03 49 4C 9D 02 00 0F 00 17 96 04 00 04 01 08 18 4E 96 02 00 04 03 49 4C 12 9D 02 00 07 00 17 96 02 00 04 04 12 12 9D 02 00 05 00 96 01 00 03 3E 96 04 00 08 4B 04 03 47 26 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 02 17 96 04 00 04 02 08 01 1C 96 02 00 08 0A 4E 48 12 9D 02 00 2E 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 08 4E 96 02 00 04 02 4E 96 02 00 08 4C 52 17 96 02 00 04 02 50 87 01 00 02 17 99 02 00 BD FF 96 07 00 04 03 07 FF FF FF FF 67 4C 12 9D 02 00 10 00 17 96 04 00 04 03 08 01 1C 96 02 00 08 0A 4E 48 12 9D 02 00 67 00 96 06 00 04 01 08 18 04 03 4F 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 08 4E 96 02 00 04 03 4E 96 02 00 08 4D 52 17 96 04 00 04 01 08 4E 4E 96 04 00 04 01 08 4F 4E 96 04 00 04 01 08 50 4E 96 04 00 04 01 08 51 4E 96 09 00 07 04 00 00 00 04 01 08 08 4E 96 02 00 04 03 4E 96 02 00 08 4A 52 17 99 02 00 1F 00 96 07 00 04 03 07 FF FF FF FF 49 12 9D 02 00 05 00 99 02 00 09 00 96 04 00 08 52 04 03 47 26 4F 96 04 00 04 02 08 1E 8E 2A 00 00 04 00 06 29 00 05 69 63 6F 6E 30 00 03 64 69 73 70 6C 61 79 30 00 04 69 63 6F 6E 31 00 02 64 69 73 70 6C 61 79 31 00 28 00 96 06 00 04 01 08 51 04 05 4F 96 06 00 04 01 08 4F 04 04 4F 96 06 00 04 01 08 50 04 03 4F 96 06 00 04 01 08 4E 04 02 4F 4F 96 09 00 04 01 08 0A 07 08 00 00 00 4F 96 09 00 04 02 08 18 07 FF FF FF FF 4F 96 09 00 04 02 08 19 07 FF FF FF FF 4F 96 08 00 07 01 00 00 00 02 08 00 1C 96 02 00 08 01 4E 96 02 00 08 06 4E 96 07 00 07 03 00 00 00 08 53

Enjoy! :happy:

 

EDIT: Any way to make the text boxes smaller so they fit on the screen?

Yes, I suppose there are a few ways to achieve this, e.g. by editing some sprite definitions directly or adding a bit of ActionScript code, which is less of a pain in the rear as you don't need to bother decoding the sprite stuff. Most of the PlaceObject tags in the sprite definitions usually don't feature scaling information, so you'd need to free up space for that by editing some ActionScript class anyway.

 

Edit: Also, did you tab around the entire team to make sure the soldiers marked as on mission were not spawned in one of the aliens spawn locations?

Yes, I did that. Since I haven't added any fixes related to soldier placement I got the usual 6 units near the LZ and two more stacked on top of each other at an alien spawn point, no more.






Page loaded in: 0.796 seconds