Jump to content

Modding EXALT


wghost81

Recommended Posts

Number of EXALT depends on current month:

    switch(GetMonth())
    {
        // End:0x18
        case 0:
        // End:0x37
        case 1:
            iNumPods = 2;
            iNumAliens = 6;
            // End:0x9F
            break;
        // End:0x3C
        case 2:
        // End:0x5C
        case 3:
            iNumPods = 3;
            iNumAliens = 9;
            // End:0x9F
            break;
        // End:0x61
        case 4:
        // End:0x81
        case 5:
            iNumPods = 4;
            iNumAliens = 12;
            // End:0x9F
            break;
        // End:0xFFFF
        default:
            iNumPods = 4;
            iNumAliens = 12;
            // End:0x9F
            break;
    }
    // End:0xDF
    if(Game().GetDifficulty() == 3)
    {
        iNumPods += 1;
        iNumAliens += 3;
    }
Months 0-5 are set specifically and default used for all others (6+). Note that GetMonth() takes Marathon setting into account and halves the return value, resulting in slower progression.

 

 

Yeah, I noticed that but since EXALT appears in May (case 2) that started me thinking if this code was used at all. And during an Impossible game, I've never seen less than 12 units which means that some other code is building those pods, or changing the iNumPods/TotalAliens values.

Link to comment
Share on other sites

  • Replies 114
  • Created
  • Last Reply

Top Posters In This Topic

This code is used. But EXALT missions use the same abduction maps and there are only 4 alien spawn points on most of them. I think, this might be the case: for months 2-3 you get +1 pod for Impossible, resulting in total 4 pods, and for 4+ you still get 4, because most maps have 4 spawn points only. Edited by wghost81
Link to comment
Share on other sites

Just played EXALT mission in June and had 12 units total, including dynamic units. That's interesting. There is no explicit dynamic units definition for EXALT missions as opposed to other Council Missions. Well, seems my memory plays tricks on me, as I can't remember I ever had only 2 stationary pods before. Will have to check this carefully.

 

I changed EXALT weapons to standard XCOM weapons via DefaultLoadouts.ini

 

LoadoutTemplates=(eLoadoutType=eLoadout_ExaltOperative,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_LaserAssaultRifle,iNumLargeItems=1,arrSmallItems[0]=eItem_FragGrenade,iNumSmallItems=1))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltSniper,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_LaserSniperRifle,iNumLargeItems=1,iNumSmallItems=0))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltHeavy,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_HeavyLaser,arrLargeItems[1]=eItem_RocketLauncher,iNumLargeItems=2,iNumSmallItems=0))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltMedic,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_LaserAssaultRifle,iNumLargeItems=1,arrSmallItems[0]=eItem_Medikit,arrSmallItems[1]=eItem_SmokeGrenade,iNumSmallItems=2))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltEliteOperative,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_PlasmaAssaultRifle,iNumLargeItems=1,arrSmallItems[0]=eItem_AlienGrenade,iNumSmallItems=1))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltEliteSniper,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_PlasmaSniperRifle,iNumLargeItems=1,iNumSmallItems=0))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltEliteHeavy,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_HeavyPlasma,arrLargeItems[1]=eItem_RocketLauncher,iNumLargeItems=2,arrSmallItems[0]=eItem_AlienGrenade,iNumSmallItems=1 ))
LoadoutTemplates=(eLoadoutType=eLoadout_ExaltEliteMedic,Inventory=(iArmor=eItem_None,iPistol=eItem_None,arrLargeItems[0]=eItem_PlasmaAssaultRifle,iNumLargeItems=1,arrSmallItems[0]=eItem_Medikit,arrSmallItems[1]=eItem_SmokeGrenade,iNumSmallItems=2))

 

Everything works fine and weapons don't get collected (as expected), so still compatible with other mods (like Meld Reworked). I could even add some fragments via XGTacticalGameCore.GenerateWeaponFragments, but I'm still thinking if I should.

Link to comment
Share on other sites

This code is used. But EXALT missions use the same abduction maps and there are only 4 alien spawn points on most of them. I think, this might be the case: for months 2-3 you get +1 pod for Impossible, resulting in total 4 pods, and for 4+ you still get 4, because most maps have 4 spawn points only.

 

I take it that you're using the info on http://wiki.tesnexus.com/index.php/Game_maps_by_number_of_spawn_points_-_XCOM:EU_2012 to say that most Abduction maps only have 4 alien spawn points. However, I don't think that info is totally correct since it seems based on empirical observation by the poster rather cracking the map files and from my experience I'd say that some maps listed have more than the 4 points claimed.

 

One example is the old Demolition map, which is listed as only having 4 points, which would mean that there would always be a pod of aliens behind the container on the right of the starting area, which in my experience isn't true since I played several abductions where there was no starting pod on that location. Another examples are PierA, SmallCemetary or StreetOverpass maps, where I can remember at least 5 spawn points for abductions but the page claims that there are only 4.

 

And from a map design perspective, having only 4 spawn points makes no sense if you're trying to give maps some variety: the spawn locations would be quickly learned.

Edited by Hobbes77
Link to comment
Share on other sites

That data was collected for EU, and the maps were all re-worked for the expansion (with at least the addition of the meld containers). So it's quite possible that many of the maps that had only 4 alien spawn locations had additional spawn points added, which would help a bit with the variety.

Link to comment
Share on other sites

That data was collected for EU, and the maps were all re-worked for the expansion (with at least the addition of the meld containers). So it's quite possible that many of the maps that had only 4 alien spawn locations had additional spawn points added, which would help a bit with the variety.

 

EDIT: well, just made a few tests on EU and it does seem that PierA and Demolition have only 4 spawn points during Abductions, so I stand corrected.

Edited by Hobbes77
Link to comment
Share on other sites

I decompiled some of the maps myself while working on Larger Pods - there are 4 spawn points on most of the maps. Yes, it makes little sense, but... well it's how it is. :smile:

 

DetermineCovertOpsSquad is definitely used, other way larger pods changes wouldn't work. But something interferes with it later. I'm trying to find it, but with no luck so far.

Link to comment
Share on other sites

Wave system from PierA:

 

 

FindObjectEntry
Name to find: TheWorld.PersistentLevel.XComWaveSystem_0
Found Export Object:
0x000001E5 (485): XComWaveSystem'TheWorld.PersistentLevel.XComWaveSystem_0'
	TypeRef: 0xFFFFFFAF -> XComWaveSystem
	ParentClassRef: 0x00000000 -> 
	OwnerRef: 0x0000000C -> PersistentLevel
	NameIdx: 0x000001EE (Index) 0x00000001 (Numeric) -> XComWaveSystem_0
	ArchetypeRef: 0x00000000 -> 
	ObjectFlagsH: 0x00000000
	ObjectFlagsL: 0x02070001
		0x00000001: Transactional
		0x00010000: LoadForClient
		0x00020000: LoadForServer
		0x00040000: LoadForEdit
		0x02000000: HasStack
	SerialSize: 0x00000AAC (2732)
	SerialOffset: 0x0005A51A
	ExportFlags: 0x00000000
	NetObjectCount: 0
	GUID: 00000000000000000000000000000000
	Unknown1: 0x00000000
Attempting deserialization:
UObject:
	PrevObjRef = 0xFFFFFFAF -> XComWaveSystem
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000000D8 (Index) 0x00000000 (Numeric) -> m_arrAlienSets
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x00000A0D
	ArrayIdx: 0x00000000
	NumElements = 0x00000005 = 5
	ArrayInnerType = None
	m_arrAlienSets[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000092 (Index) 0x00000000 (Numeric) -> EventName
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x0000019E (Index) 0x00000000 (Numeric) = StartWaveSpawner
UDefaultProperty:
	NameIdx: 0x00000071 (Index) 0x00000000 (Numeric) -> DisableEvent
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x000001A4 (Index) 0x00000000 (Numeric) = StopWaveSpawner
UDefaultProperty:
	NameIdx: 0x000001DA (Index) 0x00000000 (Numeric) -> Waves
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x000002B5
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Waves[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001BD (Index) 0x00000000 (Numeric) -> TurnAppearance
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000000 = 0
UDefaultProperty:
	NameIdx: 0x000000AC (Index) 0x00000000 (Numeric) -> Groups
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x00000275
	ArrayIdx: 0x00000000
	NumElements = 0x00000002 = 2
	ArrayInnerType = None
	Groups[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x0000015A (Index) 0x00000000 (Numeric) -> Scalable
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FF (Index) 0x00000000 (Numeric) -> NumAliens
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000001 = 1
UDefaultProperty:
	NameIdx: 0x00000196 (Index) 0x00000000 (Numeric) -> SpawnPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	SpawnPoints[0]:
	Unsafe guess: It's an Integer: 0x000001D6 = 470 or a Reference: 0x000001D6 -> XComSpawnPoint_Alien_40
	SpawnPoints[1]:
	Unsafe guess: It's an Integer: 0x000001D2 = 466 or a Reference: 0x000001D2 -> XComSpawnPoint_Alien_37
	SpawnPoints[2]:
	Unsafe guess: It's an Integer: 0x000001D3 = 467 or a Reference: 0x000001D3 -> XComSpawnPoint_Alien_38
	SpawnPoints[3]:
	Unsafe guess: It's an Integer: 0x000001D4 = 468 or a Reference: 0x000001D4 -> XComSpawnPoint_Alien_39
	SpawnPoints[4]:
	Unsafe guess: It's an Integer: 0x000001D7 = 471 or a Reference: 0x000001D7 -> XComSpawnPoint_Alien_41
	SpawnPoints[5]:
	Unsafe guess: It's an Integer: 0x000001D8 = 472 or a Reference: 0x000001D8 -> XComSpawnPoint_Alien_42
UDefaultProperty:
	NameIdx: 0x00000119 (Index) 0x00000000 (Numeric) -> OriginationPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	OriginationPoints[0]:
	Unsafe guess: It's an Integer: 0x000001CD = 461 or a Reference: 0x000001CD -> XComSpawnPoint_Alien_32
	OriginationPoints[1]:
	Unsafe guess: It's an Integer: 0x000001CC = 460 or a Reference: 0x000001CC -> XComSpawnPoint_Alien_31
	OriginationPoints[2]:
	Unsafe guess: It's an Integer: 0x000001CE = 462 or a Reference: 0x000001CE -> XComSpawnPoint_Alien_33
	OriginationPoints[3]:
	Unsafe guess: It's an Integer: 0x000001D1 = 465 or a Reference: 0x000001D1 -> XComSpawnPoint_Alien_36
	OriginationPoints[4]:
	Unsafe guess: It's an Integer: 0x000001D0 = 464 or a Reference: 0x000001D0 -> XComSpawnPoint_Alien_35
	OriginationPoints[5]:
	Unsafe guess: It's an Integer: 0x000001CF = 463 or a Reference: 0x000001CF -> XComSpawnPoint_Alien_34
UDefaultProperty:
	NameIdx: 0x00000193 (Index) 0x00000000 (Numeric) -> SpawnMethod
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x00000062
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x00000194 (Index) 0x00000000 (Numeric) -> SpawnMethodData
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000198 (Index) 0x00000000 (Numeric) -> SpawnType
	TypeIdx: 0x0000004A (Index) 0x00000000 (Numeric) -> ByteProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x0000008E (Index) 0x00000000 (Numeric) -> ESpawnMethod
	Name: 0x0000008F (Index) 0x00000000 (Numeric) = eSpawnMethod_WalkIn
UDefaultProperty:
	NameIdx: 0x0000013E (Index) 0x00000000 (Numeric) -> PlaySound
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000154 (Index) 0x00000000 (Numeric) -> RevealSpawn
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000DE (Index) 0x00000000 (Numeric) -> m_strOnGroupActivated
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x000001D8 (Index) 0x00000000 (Numeric) = Wave1Spawned
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
	Groups[1]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x0000015A (Index) 0x00000000 (Numeric) -> Scalable
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FF (Index) 0x00000000 (Numeric) -> NumAliens
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000001 = 1
UDefaultProperty:
	NameIdx: 0x00000196 (Index) 0x00000000 (Numeric) -> SpawnPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	SpawnPoints[0]:
	Unsafe guess: It's an Integer: 0x000001BE = 446 or a Reference: 0x000001BE -> XComSpawnPoint_Alien_19
	SpawnPoints[1]:
	Unsafe guess: It's an Integer: 0x000001C1 = 449 or a Reference: 0x000001C1 -> XComSpawnPoint_Alien_21
	SpawnPoints[2]:
	Unsafe guess: It's an Integer: 0x000001C3 = 451 or a Reference: 0x000001C3 -> XComSpawnPoint_Alien_23
	SpawnPoints[3]:
	Unsafe guess: It's an Integer: 0x000001C5 = 453 or a Reference: 0x000001C5 -> XComSpawnPoint_Alien_25
	SpawnPoints[4]:
	Unsafe guess: It's an Integer: 0x000001C7 = 455 or a Reference: 0x000001C7 -> XComSpawnPoint_Alien_27
	SpawnPoints[5]:
	Unsafe guess: It's an Integer: 0x000001C9 = 457 or a Reference: 0x000001C9 -> XComSpawnPoint_Alien_29
UDefaultProperty:
	NameIdx: 0x00000119 (Index) 0x00000000 (Numeric) -> OriginationPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	OriginationPoints[0]:
	Unsafe guess: It's an Integer: 0x000001C0 = 448 or a Reference: 0x000001C0 -> XComSpawnPoint_Alien_20
	OriginationPoints[1]:
	Unsafe guess: It's an Integer: 0x000001C2 = 450 or a Reference: 0x000001C2 -> XComSpawnPoint_Alien_22
	OriginationPoints[2]:
	Unsafe guess: It's an Integer: 0x000001C4 = 452 or a Reference: 0x000001C4 -> XComSpawnPoint_Alien_24
	OriginationPoints[3]:
	Unsafe guess: It's an Integer: 0x000001C6 = 454 or a Reference: 0x000001C6 -> XComSpawnPoint_Alien_26
	OriginationPoints[4]:
	Unsafe guess: It's an Integer: 0x000001C8 = 456 or a Reference: 0x000001C8 -> XComSpawnPoint_Alien_28
	OriginationPoints[5]:
	Unsafe guess: It's an Integer: 0x000001CB = 459 or a Reference: 0x000001CB -> XComSpawnPoint_Alien_30
UDefaultProperty:
	NameIdx: 0x00000193 (Index) 0x00000000 (Numeric) -> SpawnMethod
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x00000065
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x00000194 (Index) 0x00000000 (Numeric) -> SpawnMethodData
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000198 (Index) 0x00000000 (Numeric) -> SpawnType
	TypeIdx: 0x0000004A (Index) 0x00000000 (Numeric) -> ByteProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x0000008E (Index) 0x00000000 (Numeric) -> ESpawnMethod
	Name: 0x0000008F (Index) 0x00000000 (Numeric) = eSpawnMethod_WalkIn
UDefaultProperty:
	NameIdx: 0x00000154 (Index) 0x00000000 (Numeric) -> RevealSpawn
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000079 (Index) 0x00000000 (Numeric) -> DropHeight
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000100 = 256
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
	m_arrAlienSets[1]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000092 (Index) 0x00000000 (Numeric) -> EventName
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x0000018F (Index) 0x00000000 (Numeric) = SpawnArray1Reinforcements
UDefaultProperty:
	NameIdx: 0x000001DA (Index) 0x00000000 (Numeric) -> Waves
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000017D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Waves[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001BD (Index) 0x00000000 (Numeric) -> TurnAppearance
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000000 = 0
UDefaultProperty:
	NameIdx: 0x000000AC (Index) 0x00000000 (Numeric) -> Groups
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000013D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Groups[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x0000015A (Index) 0x00000000 (Numeric) -> Scalable
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FF (Index) 0x00000000 (Numeric) -> NumAliens
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000002 = 2
UDefaultProperty:
	NameIdx: 0x00000196 (Index) 0x00000000 (Numeric) -> SpawnPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	SpawnPoints[0]:
	Unsafe guess: It's an Integer: 0x000001B7 = 439 or a Reference: 0x000001B7 -> XComSpawnPoint_Alien_12
	SpawnPoints[1]:
	Unsafe guess: It's an Integer: 0x000001B6 = 438 or a Reference: 0x000001B6 -> XComSpawnPoint_Alien_11
	SpawnPoints[2]:
	Unsafe guess: It's an Integer: 0x000001B5 = 437 or a Reference: 0x000001B5 -> XComSpawnPoint_Alien_10
	SpawnPoints[3]:
	Unsafe guess: It's an Integer: 0x000001E3 = 483 or a Reference: 0x000001E3 -> XComSpawnPoint_Alien_9
	SpawnPoints[4]:
	Unsafe guess: It's an Integer: 0x000001E2 = 482 or a Reference: 0x000001E2 -> XComSpawnPoint_Alien_8
	SpawnPoints[5]:
	Unsafe guess: It's an Integer: 0x000001E1 = 481 or a Reference: 0x000001E1 -> XComSpawnPoint_Alien_7
UDefaultProperty:
	NameIdx: 0x00000193 (Index) 0x00000000 (Numeric) -> SpawnMethod
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x00000088
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x00000194 (Index) 0x00000000 (Numeric) -> SpawnMethodData
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000000 (Index) 0x00000000 (Numeric) -> AdditionalSoundCue
	TypeIdx: 0x0000010D (Index) 0x00000000 (Numeric) -> ObjectProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Object: 0x00000190 = HelicopterFlyByCue
UDefaultProperty:
	NameIdx: 0x000001CB (Index) 0x00000000 (Numeric) -> UseOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000001BB (Index) 0x00000000 (Numeric) -> TriggerOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x0000013E (Index) 0x00000000 (Numeric) -> PlaySound
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000154 (Index) 0x00000000 (Numeric) -> RevealSpawn
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000DE (Index) 0x00000000 (Numeric) -> m_strOnGroupActivated
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x0000010C (Index) 0x00000000 (Numeric) = ObjectiveWaveSpawned
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
	m_arrAlienSets[2]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000092 (Index) 0x00000000 (Numeric) -> EventName
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x00000190 (Index) 0x00000000 (Numeric) = SpawnArray2Reinforcements
UDefaultProperty:
	NameIdx: 0x000001DA (Index) 0x00000000 (Numeric) -> Waves
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000017D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Waves[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001BD (Index) 0x00000000 (Numeric) -> TurnAppearance
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000000 = 0
UDefaultProperty:
	NameIdx: 0x000000AC (Index) 0x00000000 (Numeric) -> Groups
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000013D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Groups[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x0000015A (Index) 0x00000000 (Numeric) -> Scalable
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FF (Index) 0x00000000 (Numeric) -> NumAliens
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000002 = 2
UDefaultProperty:
	NameIdx: 0x00000196 (Index) 0x00000000 (Numeric) -> SpawnPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	SpawnPoints[0]:
	Unsafe guess: It's an Integer: 0x000001B4 = 436 or a Reference: 0x000001B4 -> XComSpawnPoint_Alien_0
	SpawnPoints[1]:
	Unsafe guess: It's an Integer: 0x000001BF = 447 or a Reference: 0x000001BF -> XComSpawnPoint_Alien_2
	SpawnPoints[2]:
	Unsafe guess: It's an Integer: 0x000001CA = 458 or a Reference: 0x000001CA -> XComSpawnPoint_Alien_3
	SpawnPoints[3]:
	Unsafe guess: It's an Integer: 0x000001D5 = 469 or a Reference: 0x000001D5 -> XComSpawnPoint_Alien_4
	SpawnPoints[4]:
	Unsafe guess: It's an Integer: 0x000001DF = 479 or a Reference: 0x000001DF -> XComSpawnPoint_Alien_5
	SpawnPoints[5]:
	Unsafe guess: It's an Integer: 0x000001E0 = 480 or a Reference: 0x000001E0 -> XComSpawnPoint_Alien_6
UDefaultProperty:
	NameIdx: 0x00000193 (Index) 0x00000000 (Numeric) -> SpawnMethod
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x00000088
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x00000194 (Index) 0x00000000 (Numeric) -> SpawnMethodData
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001CB (Index) 0x00000000 (Numeric) -> UseOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000001BB (Index) 0x00000000 (Numeric) -> TriggerOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x0000013E (Index) 0x00000000 (Numeric) -> PlaySound
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000154 (Index) 0x00000000 (Numeric) -> RevealSpawn
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000079 (Index) 0x00000000 (Numeric) -> DropHeight
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x000000C0 = 192
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000DE (Index) 0x00000000 (Numeric) -> m_strOnGroupActivated
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x0000010C (Index) 0x00000000 (Numeric) = ObjectiveWaveSpawned
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
	m_arrAlienSets[3]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000092 (Index) 0x00000000 (Numeric) -> EventName
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x00000191 (Index) 0x00000000 (Numeric) = SpawnArray3Reinforcements
UDefaultProperty:
	NameIdx: 0x000001DA (Index) 0x00000000 (Numeric) -> Waves
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000017D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Waves[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001BD (Index) 0x00000000 (Numeric) -> TurnAppearance
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000000 = 0
UDefaultProperty:
	NameIdx: 0x000000AC (Index) 0x00000000 (Numeric) -> Groups
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000013D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Groups[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x0000015A (Index) 0x00000000 (Numeric) -> Scalable
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FF (Index) 0x00000000 (Numeric) -> NumAliens
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000002 = 2
UDefaultProperty:
	NameIdx: 0x00000196 (Index) 0x00000000 (Numeric) -> SpawnPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	SpawnPoints[0]:
	Unsafe guess: It's an Integer: 0x000001B8 = 440 or a Reference: 0x000001B8 -> XComSpawnPoint_Alien_13
	SpawnPoints[1]:
	Unsafe guess: It's an Integer: 0x000001B9 = 441 or a Reference: 0x000001B9 -> XComSpawnPoint_Alien_14
	SpawnPoints[2]:
	Unsafe guess: It's an Integer: 0x000001BA = 442 or a Reference: 0x000001BA -> XComSpawnPoint_Alien_15
	SpawnPoints[3]:
	Unsafe guess: It's an Integer: 0x000001BB = 443 or a Reference: 0x000001BB -> XComSpawnPoint_Alien_16
	SpawnPoints[4]:
	Unsafe guess: It's an Integer: 0x000001BC = 444 or a Reference: 0x000001BC -> XComSpawnPoint_Alien_17
	SpawnPoints[5]:
	Unsafe guess: It's an Integer: 0x000001BD = 445 or a Reference: 0x000001BD -> XComSpawnPoint_Alien_18
UDefaultProperty:
	NameIdx: 0x00000193 (Index) 0x00000000 (Numeric) -> SpawnMethod
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x00000088
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x00000194 (Index) 0x00000000 (Numeric) -> SpawnMethodData
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001CB (Index) 0x00000000 (Numeric) -> UseOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000001BB (Index) 0x00000000 (Numeric) -> TriggerOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x0000013E (Index) 0x00000000 (Numeric) -> PlaySound
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000154 (Index) 0x00000000 (Numeric) -> RevealSpawn
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000079 (Index) 0x00000000 (Numeric) -> DropHeight
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x000000C0 = 192
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000DE (Index) 0x00000000 (Numeric) -> m_strOnGroupActivated
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x0000010C (Index) 0x00000000 (Numeric) = ObjectiveWaveSpawned
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
	m_arrAlienSets[4]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000092 (Index) 0x00000000 (Numeric) -> EventName
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x00000192 (Index) 0x00000000 (Numeric) = SpawnArray4Reinforcements
UDefaultProperty:
	NameIdx: 0x000001DA (Index) 0x00000000 (Numeric) -> Waves
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000017D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Waves[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x000001BD (Index) 0x00000000 (Numeric) -> TurnAppearance
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000000 = 0
UDefaultProperty:
	NameIdx: 0x000000AC (Index) 0x00000000 (Numeric) -> Groups
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000013D
	ArrayIdx: 0x00000000
	NumElements = 0x00000001 = 1
	ArrayInnerType = None
	Groups[0]:
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x0000015A (Index) 0x00000000 (Numeric) -> Scalable
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FF (Index) 0x00000000 (Numeric) -> NumAliens
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000002 = 2
UDefaultProperty:
	NameIdx: 0x00000196 (Index) 0x00000000 (Numeric) -> SpawnPoints
	TypeIdx: 0x0000000D (Index) 0x00000000 (Numeric) -> ArrayProperty
	PropertySize: 0x0000001C
	ArrayIdx: 0x00000000
	NumElements = 0x00000006 = 6
	ArrayInnerType = None
	SpawnPoints[0]:
	Unsafe guess: It's an Integer: 0x000001D9 = 473 or a Reference: 0x000001D9 -> XComSpawnPoint_Alien_43
	SpawnPoints[1]:
	Unsafe guess: It's an Integer: 0x000001DA = 474 or a Reference: 0x000001DA -> XComSpawnPoint_Alien_44
	SpawnPoints[2]:
	Unsafe guess: It's an Integer: 0x000001DB = 475 or a Reference: 0x000001DB -> XComSpawnPoint_Alien_45
	SpawnPoints[3]:
	Unsafe guess: It's an Integer: 0x000001DC = 476 or a Reference: 0x000001DC -> XComSpawnPoint_Alien_46
	SpawnPoints[4]:
	Unsafe guess: It's an Integer: 0x000001DD = 477 or a Reference: 0x000001DD -> XComSpawnPoint_Alien_47
	SpawnPoints[5]:
	Unsafe guess: It's an Integer: 0x000001DE = 478 or a Reference: 0x000001DE -> XComSpawnPoint_Alien_48
UDefaultProperty:
	NameIdx: 0x00000193 (Index) 0x00000000 (Numeric) -> SpawnMethod
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x00000088
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x00000194 (Index) 0x00000000 (Numeric) -> SpawnMethodData
Unsafe guess (it's a Property List):
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000000 (Index) 0x00000000 (Numeric) -> AdditionalSoundCue
	TypeIdx: 0x0000010D (Index) 0x00000000 (Numeric) -> ObjectProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Object: 0x00000190 = HelicopterFlyByCue
UDefaultProperty:
	NameIdx: 0x000001CB (Index) 0x00000000 (Numeric) -> UseOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000001BB (Index) 0x00000000 (Numeric) -> TriggerOverwatch
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x0000013E (Index) 0x00000000 (Numeric) -> PlaySound
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x00000154 (Index) 0x00000000 (Numeric) -> RevealSpawn
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x01 = true
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000DE (Index) 0x00000000 (Numeric) -> m_strOnGroupActivated
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x0000010C (Index) 0x00000000 (Numeric) = ObjectiveWaveSpawned
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
UDefaultProperty:
	NameIdx: 0x000000D1 (Index) 0x00000000 (Numeric) -> Location
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x0000000C
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x000001D0 (Index) 0x00000000 (Numeric) -> Vector
	Vector (X, Y, Z) = (0xC33C3ABA, 0x451F3FC9, 0x43044844) = (-188.229, 2547.99, 132.282)
UDefaultProperty:
	NameIdx: 0x00000018 (Index) 0x00000000 (Numeric) -> bDirtyComponents
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x00 = false
UDefaultProperty:
	NameIdx: 0x000001AA (Index) 0x00000000 (Numeric) -> Tag
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x000001EE (Index) 0x00000000 (Numeric) = XComWaveSystem
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
Stream relative position: 0x00000AAC (2732)
UObjectUnknown:
	Object unknown, can't deserialize!

 

You can extract this from map files by decompressing them and running

FindObjectEntry.exe URB_PierA_Terror_CovExt.upk TheWorld.PersistentLevel.XComWaveSystem_0 > TheWorld.PersistentLevel.XComWaveSystem_0.txt
This will place info in TheWorld.PersistentLevel.XComWaveSystem_0.txt.

 

Now I need to understand, either initial spawn is a part of wave system too, or it's handled somewhere else.

Edited by wghost81
Link to comment
Share on other sites

OK, I got it. But you won't gonna like it: it's in the maps.

 

Alien pods deployment is handled via XGDeployAI in XComGame. GetPossibleSpawns function requests WorldInfo on AllActors of class XComAlienPod. XComAlienPod_X objects are defined in TheWorld.PersistentLevel of each map. EXALT maps have only two XComAlienPod objects, hence only two pods will be spawned on map during deployment.

 

TheWorld.PersistentLevel.XComAlienPod_X objects contain default properties for XComAlienPod class instance variable. For example, URB_PierA_Terror_CovExt has two such objects: TheWorld.PersistentLevel.XComAlienPod_1 and TheWorld.PersistentLevel.XComAlienPod_3. Their properties are almost identical, only Location property is different and sets pod spawn location:

 

 

FindObjectEntry
Name to find: TheWorld.PersistentLevel.XComAlienPod_1
Found Export Object:
0x000001AA (426): XComAlienPod'TheWorld.PersistentLevel.XComAlienPod_1'
	TypeRef: 0xFFFFFFB7 -> XComAlienPod
	ParentClassRef: 0x00000000 -> 
	OwnerRef: 0x0000000C -> PersistentLevel
	NameIdx: 0x000001E3 (Index) 0x00000002 (Numeric) -> XComAlienPod_1
	ArchetypeRef: 0x00000000 -> 
	ObjectFlagsH: 0x00000000
	ObjectFlagsL: 0x02070001
		0x00000001: Transactional
		0x00010000: LoadForClient
		0x00020000: LoadForServer
		0x00040000: LoadForEdit
		0x02000000: HasStack
	SerialSize: 0x0000012F (303)
	SerialOffset: 0x00057958
	ExportFlags: 0x00000000
	NetObjectCount: 0
	GUID: 00000000000000000000000000000000
	Unknown1: 0x00000000
Attempting deserialization:
UObject:
	PrevObjRef = 0xFFFFFFB7 -> XComAlienPod
UDefaultPropertiesList:
UDefaultProperty:
	NameIdx: 0x00000140 (Index) 0x00000000 (Numeric) -> PodIndex
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000000 = 0
UDefaultProperty:
	NameIdx: 0x000000C5 (Index) 0x00000000 (Numeric) -> LightEnvironment
	TypeIdx: 0x0000010D (Index) 0x00000000 (Numeric) -> ObjectProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Object: 0x00000004 = DynamicLightEnvironmentComponent_1387
UDefaultProperty:
	NameIdx: 0x00000101 (Index) 0x00000000 (Numeric) -> NumAliens_Min
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000001 = 1
UDefaultProperty:
	NameIdx: 0x00000100 (Index) 0x00000000 (Numeric) -> NumAliens_Max
	TypeIdx: 0x000000B9 (Index) 0x00000000 (Numeric) -> IntProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Integer: 0x00000003 = 3
UDefaultProperty:
	NameIdx: 0x00000141 (Index) 0x00000000 (Numeric) -> PodMesh
	TypeIdx: 0x0000010D (Index) 0x00000000 (Numeric) -> ObjectProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Object: 0x00000196 = StaticMeshComponent_272
UDefaultProperty:
	NameIdx: 0x0000004C (Index) 0x00000000 (Numeric) -> CenterpieceMesh
	TypeIdx: 0x0000010D (Index) 0x00000000 (Numeric) -> ObjectProperty
	PropertySize: 0x00000004
	ArrayIdx: 0x00000000
	Object: 0x00000197 = StaticMeshComponent_273
UDefaultProperty:
	NameIdx: 0x000000D1 (Index) 0x00000000 (Numeric) -> Location
	TypeIdx: 0x000001A8 (Index) 0x00000000 (Numeric) -> StructProperty
	PropertySize: 0x0000000C
	ArrayIdx: 0x00000000
	InnerNameIdx: 0x000001D0 (Index) 0x00000000 (Numeric) -> Vector
	Vector (X, Y, Z) = (0x44341EF0, 0x43D73EFE, 0x3A8FFFFA) = (720.483, 430.492, 0.00109863)
UDefaultProperty:
	NameIdx: 0x00000018 (Index) 0x00000000 (Numeric) -> bDirtyComponents
	TypeIdx: 0x0000002B (Index) 0x00000000 (Numeric) -> BoolProperty
	PropertySize: 0x00000000
	ArrayIdx: 0x00000000
	Boolean value: 0x00 = false
UDefaultProperty:
	NameIdx: 0x000001AA (Index) 0x00000000 (Numeric) -> Tag
	TypeIdx: 0x000000F8 (Index) 0x00000000 (Numeric) -> NameProperty
	PropertySize: 0x00000008
	ArrayIdx: 0x00000000
	Name: 0x000001E3 (Index) 0x00000000 (Numeric) = XComAlienPod
UDefaultProperty:
	NameIdx: 0x000000FD (Index) 0x00000000 (Numeric) -> None
Stream relative position: 0x0000012F (303)
UObjectUnknown:
	Object unknown, can't deserialize!

 

 

XComSpawnPoint_Alien_X objects are used by TheWorld.PersistentLevel.XComWaveSystem_0 to define SpawnPoints and OriginationPoints for dynamic alien spawns.

 

Another example is CSmallScout_Badlands, which has four XComAlienPod objects. One of those contains bCommanderPod property set to 1 and stands for commander pod spawn point. XGDeployAI contains GetPossibleCommanderSpawns, GetPossibleSecondarySpawns and GetPossibleSoldierSpawns functions to determine spawn points for corresponding pod types. During deployment only pods of types defined via XComAlienPod map objects are spawned.

 

I'm yet to find out how dynamic aliens are deployed and how it all works with the Wave System.

Edited by wghost81
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...