Jump to content

R&D to Increase Squad Size


Beknatok

Recommended Posts

  • Replies 429
  • Created
  • Last Reply

Top Posters In This Topic

First off I love the fact that you guys are this dedicated to modding Xcom. Second I want to help you guys try to solve this but I have no real how to start. I have basic programming skills but not to much experience outside of the class, is there anything I could do to help even if it means sifting through individual lines of code to find anything in particular?

Link to comment
Share on other sites

First off I love the fact that you guys are this dedicated to modding Xcom. Second I want to help you guys try to solve this but I have no real how to start. I have basic programming skills but not to much experience outside of the class, is there anything I could do to help even if it means sifting through individual lines of code to find anything in particular?

 

I'm not 100% sure how XMarksTheSpot did the sprite re-sizing, but I'm guessing that he altered the transform matrix to include scaling information as well as translate info.

 

If you dig back a page or two there is a link to the wiki with some basic tutorial info about sprite editing. Unfortunately right now it's all about decoding it by hand, and the sprite matrix transform info is packed at the bit level, not the byte level (e.g. numbers can be 13 or 14 bits long, with no padding between), which makes decoding and re-encoding the info an interesting exercise :)

Link to comment
Share on other sites

News time, I've had another go at the squadselect flash file and this time I've expanded the squadlist sprite to hold 12 soldier slots. To actually get to see them I've hacked in some rudimentary mouse scrolling behavior into the main SquadSelect screen class - moving the mouse to either end of the screen will make the list of slots scroll to the left/right.

Flash hex changes in the following:

+ 'Squadlist MC' sprite
original data, 146 (0x92) bytes
FF 09 8C 00 00 00 3C 00 01 00 ...
new data, 280 (0x118) bytes
FF 09 12 01 00 00 3C 00 01 00 BF 06 11 00 00 00 26 01 00 3B 00 21 56 33 E3 66 75 6E 69 74 31 31 00 BF 06 11 00 00 00 26 1E 00 3B 00 21 72 7B E3 66 75 6E 69 74 31 30 00 BF 06 10 00 00 00 26 3B 00 3B 00 1F 1D 87 8D 98 75 6E 69 74 39 00 BF 06 10 00 00 00 26 58 00 3B 00 1F 56 17 8D 98 75 6E 69 74 38 00 BF 06 10 00 00 00 26 75 00 3B 00 1D 1D 4E 36 60 75 6E 69 74 37 00 BF 06 10 00 00 00 26 92 00 3B 00 1B 1C D8 D9 80 75 6E 69 74 36 00 BF 06 10 00 00 00 26 AF 00 3B 00 1B FF 18 D9 80 75 6E 69 74 35 00 BF 06 10 00 00 00 26 CC 00 3B 00 1A E1 58 D9 80 75 6E 69 74 34 00 BF 06 10 00 00 00 26 E9 00 3B 00 1C E1 CE 36 60 75 6E 69 74 33 00 BF 06 10 00 00 00 26 06 01 3B 00 1E A9 77 8D 98 75 6E 69 74 32 00 BF 06 10 00 00 00 26 23 01 3B 00 1E E2 07 8D 98 75 6E 69 74 31 00 BF 06 10 00 00 00 26 40 01 3B 00 20 8D 4B E3 66 75 6E 69 74 30 00 40 00 00 00

+ Block containing 'SquadList' and 'SquadSelect' classes (as well as an unrelated class in-between)
original data, 5324 (0x14CC) bytes
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 ...
new data, 5190 (0x1446) bytes
5F 5F 50 61 63 6B 61 67 65 73 2E 53 71 75 61 64 4C 69 73 74 00 FF 0E B1 0A 00 00 60 00 88 E3 02 3A 00 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 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 53 65 74 55 6E 69 74 48 65 6C 70 00 53 65 74 55 6E 69 74 49 6E 66 6F 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 01 1C 96 02 00 08 02 4E 12 12 9D 02 00 B4 07 96 02 00 08 01 1C 96 02 00 08 02 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 03 08 04 1C 96 02 00 08 05 4E 4F 87 01 00 01 4F 96 02 00 08 01 1C 96 02 00 08 02 4E 96 02 00 08 06 1C 69 96 04 00 04 01 08 07 4E 87 01 00 02 17 96 04 00 04 02 08 08 8E 08 00 00 00 00 04 19 00 F8 00 96 0F 00 04 01 08 09 06 00 00 00 00 00 00 00 00 08 0A 40 4F 96 02 00 04 01 1C 55 87 01 00 00 96 01 00 02 49 9D 02 00 50 00 96 05 00 00 69 00 04 00 3C 96 02 00 04 01 1C 96 03 00 00 69 00 1C 4E 96 0B 00 00 4D 6F 76 69 65 43 6C 69 70 00 1C 54 12 9D 02 00 1E 00 96 05 00 04 01 00 69 00 1C 4E 96 09 00 07 01 00 00 00 04 01 08 09 4E 96 02 00 08 0D 52 17 99 02 00 A2 FF 96 04 00 04 03 08 02 1C 96 06 00 08 0B 04 01 08 09 4E 96 08 00 00 6C 65 6E 67 74 68 00 4E 4F 96 09 00 07 00 00 00 00 04 02 08 08 52 17 96 09 00 07 00 00 00 00 04 01 08 0E 52 17 96 04 00 04 01 08 0E 4E 96 09 00 04 01 07 02 00 00 00 08 0F 1C 96 02 00 08 10 4E 96 02 00 08 11 4E 96 02 00 08 12 52 96 0C 00 07 01 00 00 00 07 00 00 00 00 08 04 1C 96 02 00 08 13 52 96 02 00 08 14 52 17 4F 96 04 00 04 02 08 15 8E 08 00 00 00 00 03 19 00 52 00 96 04 00 04 01 08 0E 4E 96 09 00 04 01 07 02 00 00 00 08 0F 1C 96 02 00 08 10 4E 96 02 00 08 11 4E 96 02 00 08 12 52 96 0C 00 07 01 00 00 00 07 00 00 00 00 08 04 1C 96 02 00 08 13 52 96 02 00 08 14 52 17 96 09 00 07 00 00 00 00 04 02 08 15 52 17 4F 96 04 00 04 02 08 0E 8E 08 00 00 00 00 02 29 00 2C 00 96 04 00 04 01 08 03 4E 96 09 00 07 01 00 00 00 04 01 08 16 52 17 96 08 00 04 01 08 17 04 01 08 17 4E 96 05 00 07 19 00 00 00 0B 4F 4F 96 04 00 04 02 08 18 8E 08 00 00 00 00 02 29 00 22 00 96 0D 00 04 01 08 19 06 00 00 00 00 00 00 00 00 4F 96 0D 00 04 01 08 1A 06 00 00 00 00 00 00 00 00 4F 4F 96 04 00 04 02 08 1E 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 1F 04 03 47 96 02 00 08 20 47 96 02 00 04 02 47 26 96 04 00 04 02 08 21 1C 96 02 00 08 22 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 23 07 04 00 00 00 08 24 1C 96 02 00 08 25 4E 96 02 00 08 26 4E 96 02 00 08 27 52 17 4F 96 04 00 04 02 08 28 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 29 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 21 1C 96 02 00 08 2A 4E 66 9D 02 00 19 00 96 04 00 04 00 08 21 1C 96 02 00 08 2B 4E 66 9D 02 00 46 00 99 02 00 8F 00 96 0C 00 04 01 08 1A 04 01 08 1A 04 01 08 1A 4E 50 87 01 00 00 4F 96 04 00 04 00 08 02 1C 96 02 00 08 0B 4E 3F 4F 96 04 00 04 01 08 1A 4E 96 09 00 07 01 00 00 00 04 01 08 2C 52 17 99 02 00 5D 00 96 0C 00 04 01 08 1A 04 01 08 1A 04 01 08 1A 4E 51 87 01 00 00 4F 96 04 00 04 00 08 02 1C 96 02 00 08 0B 4E 47 96 02 00 08 02 1C 96 02 00 08 0B 4E 3F 4F 96 04 00 04 01 08 1A 4E 96 09 00 07 01 00 00 00 04 01 08 2C 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 1C 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 09 4E 96 02 00 04 02 4E 96 02 00 08 2D 52 17 96 0B 00 04 01 07 01 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 2E 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 09 4E 96 02 00 04 02 4E 96 02 00 08 1C 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 2F 52 17 4F 96 04 00 04 02 08 1D 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 09 4E 96 02 00 04 02 4E 96 02 00 08 2D 52 17 96 0B 00 04 01 07 01 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 2E 52 17 96 0F 00 04 05 04 03 04 04 07 03 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 1D 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 30 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 2F 52 17 4F 96 04 00 04 02 08 2C 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 19 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 31 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 02 1C 96 02 00 08 0B 4E 48 12 9D 02 00 2E 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 09 4E 96 02 00 04 02 4E 96 02 00 08 32 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 02 1C 96 02 00 08 0B 4E 48 12 9D 02 00 67 00 96 06 00 04 01 08 19 04 03 4F 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 09 4E 96 02 00 04 03 4E 96 02 00 08 33 52 17 96 04 00 04 01 08 34 4E 96 04 00 04 01 08 35 4E 96 04 00 04 01 08 36 4E 96 04 00 04 01 08 37 4E 96 09 00 07 04 00 00 00 04 01 08 09 4E 96 02 00 04 03 4E 96 02 00 08 30 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 38 04 03 47 26 4F 96 04 00 04 02 08 1B 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 37 04 05 4F 96 06 00 04 01 08 35 04 04 4F 96 06 00 04 01 08 36 04 03 4F 96 06 00 04 01 08 34 04 02 4F 4F 96 09 00 04 01 08 0B 07 08 00 00 00 4F 96 09 00 04 02 08 19 07 FF FF FF FF 4F 96 09 00 04 02 08 1A 07 FF FF FF FF 4F 96 08 00 07 01 00 00 00 02 08 01 1C 96 02 00 08 02 4E 96 02 00 08 07 4E 96 07 00 07 03 00 00 00 08 39 3D 17 00 FF 09 06 00 00 00 61 00 00 00 00 00 3F 0E 22 00 00 00 01 00 61 00 5F 5F 50 61 63 6B 61 67 65 73 2E 44 65 6C 65 67 61 74 65 57 69 74 68 50 61 72 61 6D 73 00 FF 0E 32 01 00 00 61 00 88 5A 00 0B 00 5F 67 6C 6F 62 61 6C 00 44 65 6C 65 67 61 74 65 57 69 74 68 50 61 72 61 6D 73 00 70 72 6F 74 6F 74 79 70 65 00 63 72 65 61 74 65 00 5F 61 72 67 73 00 73 6C 69 63 65 00 63 6F 6E 63 61 74 00 74 00 66 00 61 70 70 6C 79 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 BE 00 96 02 00 08 00 1C 96 02 00 08 01 9B 05 00 00 00 00 00 00 87 01 00 01 4F 96 04 00 04 01 08 02 4E 87 01 00 02 17 96 04 00 04 01 08 03 8E 0E 00 00 02 00 04 26 00 00 74 00 00 66 00 5D 00 96 10 00 08 04 07 02 00 00 00 07 01 00 00 00 04 01 08 05 52 3C 8E 08 00 00 00 00 03 26 00 32 00 96 02 00 08 04 1C 96 09 00 07 01 00 00 00 04 01 08 06 52 87 01 00 02 17 96 04 00 04 02 08 07 1C 96 07 00 07 02 00 00 00 08 08 1C 96 02 00 08 09 52 17 87 01 00 03 17 96 02 00 04 03 3E 4F 96 08 00 07 01 00 00 00 02 08 00 1C 96 02 00 08 01 4E 96 02 00 08 02 4E 96 07 00 07 03 00 00 00 08 0A 3D 17 00 FF 09 06 00 00 00 62 00 00 00 00 00 3F 0E 1B 00 00 00 01 00 62 00 5F 5F 50 61 63 6B 61 67 65 73 2E 53 71 75 61 64 53 65 6C 65 63 74 00 FF 0E DE 07 00 00 62 00 88 46 02 38 00 73 63 72 6F 6C 6C 69 6E 67 4C 65 66 74 00 73 63 72 6F 6C 6C 69 6E 67 52 69 67 68 74 00 63 61 75 72 69 6E 61 00 74 72 61 6E 73 69 74 69 6F 6E 73 00 54 77 65 65 6E 65 72 00 61 64 64 54 77 65 65 6E 00 5F 67 6C 6F 62 61 6C 00 53 71 75 61 64 53 65 6C 65 63 74 00 64 65 62 75 67 67 69 6E 67 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 69 6E 73 74 61 6E 63 65 00 73 65 74 4D 6F 75 73 65 41 63 74 69 76 65 00 53 65 74 56 69 65 77 00 53 63 72 65 65 6E 00 70 72 6F 74 6F 74 79 70 65 00 49 44 69 73 70 6F 73 61 62 6C 65 00 6F 6E 4C 6F 61 64 00 68 65 6C 70 42 61 72 00 68 65 6C 70 42 61 72 4D 43 00 73 68 6F 75 6C 64 41 6E 63 68 6F 72 54 6F 42 6F 74 74 6F 6D 00 00 53 65 74 4F 62 6A 65 63 74 69 76 65 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 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 69 6E 70 75 74 00 6F 6E 50 6F 70 75 6C 61 74 65 44 65 62 75 67 44 61 74 61 00 49 6E 74 65 72 66 61 63 65 4D 67 72 00 49 6E 70 75 74 00 64 65 62 75 67 49 6E 70 75 74 00 49 63 6F 6E 5F 42 5F 43 49 52 43 4C 45 00 45 58 49 54 00 41 64 64 4C 65 66 74 42 75 74 74 6F 6E 48 65 6C 70 00 49 63 6F 6E 5F 59 5F 54 52 49 41 4E 47 4C 45 00 4C 41 55 4E 43 48 00 41 64 64 52 69 67 68 74 42 75 74 74 6F 6E 48 65 6C 70 00 41 4E 43 48 4F 52 5F 54 4F 50 5F 4C 45 46 54 00 67 65 74 41 6E 63 68 6F 72 00 6F 62 6A 65 63 74 69 76 65 4D 43 00 5F 78 00 78 00 5F 79 00 79 00 53 65 74 46 6F 63 75 73 00 73 65 6C 65 63 74 65 64 00 6F 6E 49 6E 70 75 74 00 74 68 65 53 71 75 61 64 4C 69 73 74 00 74 69 74 6C 65 54 65 78 74 00 62 6F 64 79 54 65 78 74 00 68 74 6D 6C 54 65 78 74 00 5F 76 69 73 69 62 6C 65 00 41 53 53 65 74 50 72 6F 70 46 6C 61 67 73 00 96 02 00 08 06 1C 96 02 00 08 07 4E 12 12 9D 02 00 7E 05 96 02 00 08 06 1C 96 02 00 08 07 8E 08 00 00 00 00 03 1A 01 76 00 96 0C 00 06 00 00 00 00 00 00 00 00 04 01 03 52 17 96 04 00 04 02 08 08 4E 12 9D 02 00 57 00 96 12 00 05 01 07 01 00 00 00 06 00 00 00 00 00 00 00 00 08 09 1C 96 02 00 08 0A 52 96 02 00 08 0B 52 17 96 23 00 06 33 33 C3 3F 33 33 33 33 07 D0 02 00 00 07 00 05 00 00 07 03 00 00 00 06 00 00 00 00 00 00 00 00 08 09 1C 96 02 00 08 0A 52 96 02 00 08 0C 52 17 87 01 00 01 4F 96 02 00 08 06 1C 96 02 00 08 07 4E 96 02 00 08 0D 1C 69 96 04 00 04 01 08 0E 4E 87 01 00 02 17 96 02 00 08 06 1C 96 02 00 08 0F 4E 96 07 00 07 01 00 00 00 08 06 1C 96 02 00 08 07 4E 2C 96 04 00 04 02 08 10 8E 08 00 00 00 00 03 19 00 D3 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 10 52 17 96 08 00 04 01 08 11 04 01 08 12 4E 4F 96 04 00 04 01 08 11 4E 96 04 00 08 13 05 01 4F 96 0D 00 08 14 08 14 07 02 00 00 00 04 01 08 15 52 17 96 04 00 04 01 08 16 4E 96 09 00 04 01 07 02 00 00 00 08 17 1C 96 02 00 08 18 4E 96 02 00 08 19 4E 96 02 00 08 1A 52 96 10 00 07 01 00 00 00 06 00 00 00 00 00 00 00 00 08 09 1C 96 02 00 08 0A 52 96 02 00 08 1B 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 16 52 17 96 06 00 04 01 08 00 05 00 4F 96 06 00 04 01 08 01 05 00 4F 96 0E 00 04 01 07 01 00 00 00 00 4D 6F 75 73 65 00 1C 96 0D 00 00 61 64 64 4C 69 73 74 65 6E 65 72 00 52 17 4F 96 0F 00 04 02 00 6F 6E 4D 6F 75 73 65 4D 6F 76 65 00 8E 08 00 00 00 00 02 29 00 A3 01 96 0B 00 04 01 00 5F 78 6D 6F 75 73 65 00 4E 96 05 00 07 50 00 00 00 48 12 9D 02 00 8F 00 96 04 00 04 01 08 00 4E 12 12 9D 02 00 7B 00 96 23 00 00 74 72 61 6E 73 69 74 69 6F 6E 00 00 6C 69 6E 65 61 72 00 00 74 69 6D 65 00 07 9F 04 00 00 04 01 08 32 4E 96 02 00 08 2B 4E 0B 96 09 00 06 00 00 69 40 00 00 00 00 0D 96 0C 00 08 2B 07 9F 04 00 00 07 03 00 00 00 43 96 04 00 04 01 08 32 4E 96 07 00 07 02 00 00 00 08 02 1C 96 02 00 08 03 4E 96 02 00 08 04 4E 96 02 00 08 05 52 17 96 06 00 04 01 08 00 05 01 4F 99 02 00 F6 00 96 0B 00 04 01 00 5F 78 6D 6F 75 73 65 00 4E 96 05 00 07 B0 04 00 00 67 12 9D 02 00 92 00 96 04 00 04 01 08 01 4E 12 12 9D 02 00 7E 00 96 1E 00 00 74 72 61 6E 73 69 74 69 6F 6E 00 00 6C 69 6E 65 61 72 00 00 74 69 6D 65 00 04 01 08 32 4E 96 02 00 08 2B 4E 96 05 00 07 61 00 00 00 0B 96 09 00 06 00 00 69 40 00 00 00 00 0D 96 0C 00 08 2B 07 61 00 00 00 07 03 00 00 00 43 96 04 00 04 01 08 32 4E 96 07 00 07 02 00 00 00 08 02 1C 96 02 00 08 03 4E 96 02 00 08 04 4E 96 02 00 08 05 52 17 96 06 00 04 01 08 01 05 01 4F 99 02 00 46 00 96 04 00 04 01 08 32 4E 96 07 00 07 01 00 00 00 08 02 1C 96 02 00 08 03 4E 96 02 00 08 04 4E 96 0E 00 00 72 65 6D 6F 76 65 54 77 65 65 6E 73 00 52 17 96 06 00 04 01 08 00 05 00 4F 96 06 00 04 01 08 01 05 00 4F 4F 96 04 00 04 02 08 1C 8E 08 00 00 00 00 03 19 00 63 00 96 05 00 04 01 08 1D 03 4F 96 04 00 04 01 08 16 4E 96 09 00 04 01 07 02 00 00 00 08 17 1C 96 02 00 08 18 4E 96 02 00 08 19 4E 96 02 00 08 1A 52 96 10 00 07 01 00 00 00 06 00 00 00 00 00 00 00 00 08 09 1C 96 02 00 08 0A 52 96 02 00 08 1B 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 1C 52 17 4F 96 04 00 04 02 08 16 8E 08 00 00 00 00 03 29 00 57 00 96 02 00 08 09 1C 96 02 00 08 28 4E 96 10 00 07 01 00 00 00 06 00 00 00 00 00 00 00 00 08 09 1C 96 02 00 08 0A 52 96 02 00 08 29 52 87 01 00 02 17 96 04 00 04 01 08 2A 4E 96 06 00 08 2B 04 02 08 2C 4E 4F 96 04 00 04 01 08 2A 4E 96 06 00 08 2D 04 02 08 2E 4E 4F 4F 96 04 00 04 02 08 2F 8E 0F 00 00 01 00 03 29 00 02 69 6E 64 65 78 00 1C 00 96 06 00 04 02 04 01 08 30 4E 49 12 12 9D 02 00 0A 00 96 06 00 04 01 08 30 04 02 4F 4F 96 04 00 04 02 08 31 8E 16 00 00 02 00 05 29 01 03 63 6F 64 65 00 04 61 63 74 69 6F 6E 00 33 00 96 04 00 04 02 08 08 4E 12 12 9D 02 00 06 00 96 02 00 05 00 3E 96 0D 00 04 04 04 03 07 02 00 00 00 04 01 08 32 4E 96 02 00 08 31 52 17 96 02 00 05 01 3E 4F 96 04 00 04 02 08 15 8E 15 00 00 02 00 06 29 00 05 74 69 74 6C 65 00 04 62 6F 64 79 00 4E 00 96 04 00 04 01 08 2A 4E 96 02 00 08 33 4E 87 01 00 03 17 96 04 00 04 01 08 2A 4E 96 02 00 08 34 4E 87 01 00 02 17 96 06 00 04 03 08 35 04 05 4F 96 06 00 04 02 08 35 04 04 4F 96 04 00 04 01 08 2A 4E 96 06 00 08 36 04 04 08 14 49 12 4F 4F 96 09 00 04 02 08 30 07 FF FF FF FF 4F 96 08 00 07 01 00 00 00 02 08 06 1C 96 02 00 08 07 4E 96 02 00 08 0E 4E 96 07 00 07 03 00 00 00 08 37

I've also modified the variant of the UISquadSelect_SquadList.Init() method posted by Bertilsson adjusting the fill order array for the first 8 slots, any more would require a re-write using some loop construct, I suppose - not sure if I'm up for that considering my humble re-scripting abilities :sweat:

Here's the hex data anyway, at least it's a start:

0x2440EB:	D4 16 00 00 AB 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 1B 57 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 53 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 E7 3D 00 00 00 1B AF 0E 00 00 00 00 00 00 16 55 01 C7 16 00 00 03 00 2C 06 16 55 01 C7 16 00 00 03 00 2C 05 16 55 01 C7 16 00 00 03 00 2C 07 16 55 01 C7 16 00 00 02 00 2C 04 16 55 01 C7 16 00 00 03 00 2C 08 16 55 01 C7 16 00 00 02 00 2C 03 16 55 01 C7 16 00 00 03 00 2C 09 16 55 01 C7 16 00 00 03 00 2C 02 16 54 01 C8 16 00 00 2C 0C 16 04 0B 53 00 00 00 02 01 02 00 FC 12 00 00 00 00 00 00

On a related note, I was able to change the squad selection camera to the default free-movement base view one:

 

(note: I used the CameraZoom console command to zoom out a bit)

With this I could confirm that the 'off-duty' soldier pawns get removed once they are added to the mission's unit roster and re-appear on a random position in the barracks on removal. However, I couldn't make out any additional 'geared-up' pawns placed somewhere in the base beyond the usual six.

 

To change the camera I basically copy-pasted the line XComHeadquartersController(Owner).SetInputState('HQ_FreeMovement'); into the DisplayChooseSquadLight method of the XComPresentationLayer.State_ChooseSquad state (in XComStrategyGame.upk) overwriting the SpotActor.LightComponent.SetEnabled(bEnable); function call in the process. This is the reason the soldier pawns look a bit plain in the screenshot, they are missing their dramatic spotlights :smile:

For those interested to play around with this, here's the hex change:

replace
34 20 00 00 AB 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 34 20 00 00 00 00 00 00 F7 06 00 00 7C E9 00 00 8B 00 00 00 5F 00 00 00 2F 61 30 20 CF FE FF FF 00 33 20 00 00 4A 16 87 00 07 86 00 FE 19 00 33 20 00 00 09 00 50 FB FF FF 00 01 50 FB FF FF 21 92 05 00 00 00 00 00 00 16 19 19 00 33 20 00 00 09 00 65 FE FF FF 00 01 65 FE FF FF 14 00 00 00 00 00 00 1C 89 FD FF FF 2D 00 34 20 00 00 16 06 87 00 31 30 04 0B 53 00 00 00 02 00 02 00 00 08 00 00 00 00 00 00
with
34 20 00 00 AB 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 34 20 00 00 00 00 00 00 F7 06 00 00 7C E9 00 00 7F 00 00 00 5F 00 00 00 2F 61 30 20 CF FE FF FF 00 33 20 00 00 4A 16 7B 00 07 7A 00 FE 19 00 33 20 00 00 09 00 50 FB FF FF 00 01 50 FB FF FF 21 92 05 00 00 00 00 00 00 16 0B 19 2E 39 1D 00 00 01 44 FB FF FF 13 00 00 00 00 00 00 1B D5 23 00 00 00 00 00 00 21 5E 11 00 00 00 00 00 00 16 06 7B 00 31 30 04 0B 53 00 00 00 02 00 02 00 00 08 00 00 00 00 00 00

Also props to Bertilsson for his JumpAssistant tool, without it I couldn't have made that seemingly simple change as I couldn't wrap my head around that whole virtual size lark yet :sweat:

 

To go full circle, I'd like to investigate whether it is possible to modify the squad selection camera to allow limited horizontal movement and ideally to feed camera position updates back into the flash UI to synchronize the squad list sprite position with the camera location. If the game can also be tricked into displaying additional soldier pawns that would be perfect :cool:

 

First off I love the fact that you guys are this dedicated to modding Xcom. Second I want to help you guys try to solve this but I have no real how to start. I have basic programming skills but not to much experience outside of the class, is there anything I could do to help even if it means sifting through individual lines of code to find anything in particular?

I suppose the best way to figure out how to help is to familiarize yourself with the code or the engine in general, maybe make some simple changes, note down their effects and report any promising findings - every little bit helps :smile:

Link to comment
Share on other sites

That is great and with the updated code comes an updated toolboks mod note I have not had a chance to test this one.

 

Let me make sure I understand. The sprite has been updated to support 12 but the UISquadSelect_SquadList.Init() still only supports 8 so the last 4 on the sprite won't work.

Link to comment
Share on other sites

index = m_iMaxSlots / 2;
for(i = 0; i < m_iMaxSlots; i++)
{
	m_arrFillOrderIndex.AddItem(index);
	index += ((i%2)*2-1)*(i+1);
}

If the above code is still relevant then I'm fairly confident I could implement it later today or tomorrow...

 

Edit: I guess we also need to figure out how to hide/disable the extra selectionboxes when skyranger limit is less than 10 (+2 OTS upgrades=12)...

Edited by Bertilsson
Link to comment
Share on other sites

From a usability perspective, if the camera zoom level could be modded to adust based on number of squad members, that would allow for easier displaying of a larger squad.

 

Hmmm... at one point when I was working on adding the new classes I had introduced a bug that affected the soldier display in the hangar. When you selected a soldier to edit in the armory the soldier would no longer properly re-appear in the Hanger after leaving the view with the soldier on the armory plinth.

 

However, after a period of time the soldier would "zoom by" the position in the hangar. This was the result of a bug with not properly updating the soldier location properly. When the edit loadout button is selected from Squad Select, the camera view is switched to the Armory as well as the soldier pawn (presumably it is removed from the hangar view). After leaving the loadout both the camera and soldier pawn are switched back to the hangar.

 

So definitely somehow it seems possible to more smoothly vary the position of soldier pawns within the base, if the hook can be found...

 

P.S. Great work on all of this! It fills me with indescribable joy to have other excellent coders working at prying apart the game code :)

Link to comment
Share on other sites

And while you're in there, a nice small enhancement in the loadout text would be to replace the word "backpack" with space for a soldier's third small item. (Might take an adjustment on the upk side, as well, to get the string across.)

I think you may want to poke a little on the following line in UISquadSelect_SquadList.UpdateDisplay():

AS_SetUnitInfo(iSlot, m_arrUIOptions[iSlot].iStatus, m_arrUIOptions[iSlot].strName, m_arrUIOptions[iSlot].strNickName, m_arrUIOptions[iSlot].classDesc, m_arrUIOptions[iSlot].classLabel, m_strBackpackLabel, m_arrUIOptions[iSlot].item1, m_arrUIOptions[iSlot].item2, ((m_arrUIOptions[iSlot].bPromote) ? m_strPromote : ""));

I wouldn't be too surprised if replacing m_strBackpackLabel with m_arrUIOptions[iSlot].item3 would have desired effect (but making it item1 followed by 2 and 3 would have course make more sense) :smile:

 

Edit: for some reason "of course" turns in to "have course" in above sentence... I didn't type it that way and it won't edit...

Edited by Bertilsson
Link to comment
Share on other sites

I just started looking into fillorder via loop now...

But I'm starting to think it would make more sense to unscramble it while I'm at it...

 

Puting soldier 0 in slot 0, soldier 1 in slot 1...

 

By doing that I think we can make the number of slots available dynamic as simple as this:

m_arrUIOptions.Add(m_iMaxSlots);

 

Which should also permanently save us the trouble of adapting the you must buy OTS upgrade nagger...

 

Pawns would also have to be remaped to the new slot maping but I think that is very simple.

 

Edit: New fillorder from right to left with dynamic number of slots

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 = 0;
  J0x6F:
  // End:0xC0 [Loop If]
  if(m_iMaxSlots < kSkyranger.GetCapacity())
  {
    m_arrFillOrderIndex.AddItem(m_iMaxSlots);
    ++ m_iMaxSlots;
    // [Loop Continue]
    goto J0x6F;
  }
  m_arrUIOptions.Add(m_iMaxSlots);
  //return;  
}

Hex change: XComStrategyGame.upk, Decimal offset 2375915

D4 16 00 00 AB 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 D7 00 00 00 C5 00 00 00 1B 57 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 53 37 00 00 00 1B 8B 0E 00 00 00 00 00 00 16 0F 01 C4 16 00 00 25 07 C0 00 96 01 C4 16 00 00 19 00 CF 16 00 00 0A 00 E7 3D 00 00 00 1B AF 0E 00 00 00 00 00 00 16 16 55 01 C7 16 00 00 03 00 01 C4 16 00 00 16 A5 01 C4 16 00 00 16 06 6F 00 54 01 C8 16 00 00 01 C4 16 00 00 16 04 0B 53 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 00 00 00 02 01 02 00 FC 12 00 00 00 00 00 00

There are still 50 unused bytes which could be used in case I am alone in thinking that linear fillorder is good.

 

Please note that I have not yet remaped the new fillorder to match the pawns.

Edited by Bertilsson
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...