Jump to content

R&D XCOM Map Alterations


Amineri

Recommended Posts

I am not sure about that.. I think I read that prefabs are turned into actors when the map is cooked , when that is done the prefabs are useless leftovers. But I am new to the UE so I may be mistaken. Edit: By the way, is it a good idea to code like am doing at the moment? I mean using global offsets to patch the map.

Edited by LiQuiD911
Link to comment
Share on other sites

  • Replies 473
  • Created
  • Last Reply

Top Posters In This Topic

LiQuiD911, yes, you're right. Prefabs are converted to normal actors.

 

There are 10 archetypes inside SoldierSpawns_DrpshipVol prefab:

SoldierSpawns_DrpshipVol_Arc0

SoldierSpawns_DrpshipVol_Arc1

SoldierSpawns_DrpshipVol_Arc2

SoldierSpawns_DrpshipVol_Arc3

SoldierSpawns_DrpshipVol_Arc4

SoldierSpawns_DrpshipVol_Arc5

SoldierSpawns_DrpshipVol_2Arc0

SoldierSpawns_DrpshipVol_7Arc0

SoldierSpawns_DrpshipVol_12Arc0

SoldierSpawns_DrpshipVol_12Arc1

 

There also are 10 level objects:

PlayerStart_1 uses SoldierSpawns_DrpshipVol_2Arc0 archetype

PointInSpace_1 - SoldierSpawns_DrpshipVol_12Arc1

XComBuildingVolume_1 - SoldierSpawns_DrpshipVol_Arc0

XComLevelActor_1 - SoldierSpawns_DrpshipVol_12Arc0

XComSpawnPoint_10 - SoldierSpawns_DrpshipVol_Arc5

XComSpawnPoint_11 - SoldierSpawns_DrpshipVol_7Arc0

XComSpawnPoint_6 - SoldierSpawns_DrpshipVol_Arc1

XComSpawnPoint_7 - SoldierSpawns_DrpshipVol_Arc2

XComSpawnPoint_8 - SoldierSpawns_DrpshipVol_Arc3

XComSpawnPoint_9 - SoldierSpawns_DrpshipVol_Arc4

 

SoldierSpawns_DrpshipVol_12Arc0 is an archetype of archetype ARC_Drop_Zone, which can be found in FX_VH_Skyranger - a collection of meshes, materials and other things I know nothing about. :smile:

Edited by wghost81
Link to comment
Share on other sites

Seems, that assault Council mission streams are a good starting point for making our own "LZ stream packages", as they have minimum number of additional objects. Since LiQuiD911 is experimenting with URB_ResearchOutpost_Stream.upk, I took that map too and disabled all kismet objects by simply setting all the MainSequence references to null:

 

UPK_FILE=URB_ResearchOutpost_Stream.upk

OBJECT=TheWorld.PersistentLevel.Main_Sequence
REL_OFFSET=32
[MODDED_CODE]
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>
<NullRef>

 

 

Who knows what is the "asset" object for this map? Does it even exists for this particular mission? If so, we'll need to hide it as well.

Link to comment
Share on other sites

I can't remember if those objects are different in any way from those on regular maps. Anyway, with kismet disabled it probably won't show up.

 

I've also wrote a script to change Group0 tag to Group1 (copy-pasting code too, as I'm playing with maps instead of adding REPLACE_ALL key to patcher :smile: ):

 

UPK_FILE=URB_ResearchOutpost_Stream.upk

[ADD_NAME_ENTRY]
<%u 7>							// Length
<%t "Group1">					// Name
<%u 0x00000000>					// flags L
<%u 0x00070010>					// flags H

OBJECT=TheWorld.PersistentLevel.PlayerStart_1
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.PointInSpace_1
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.PrefabInstance_0
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComBuildingVolume_1
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComLevelActor_1
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComSpawnPoint_10
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComSpawnPoint_11
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComSpawnPoint_6
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComSpawnPoint_7
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComSpawnPoint_8
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

OBJECT=TheWorld.PersistentLevel.XComSpawnPoint_9
FIND_CODE=<Group0>
MODDED_CODE=<Group1>

 

 

This change has no effect, so, Spawn Group for maps with multiple spawn zones (as UFO maps) is probably selected by kismet. Kismet can also be used to hide unused groups. But I'll search XComGame code just to be sure.

 

If so and those are kismet scripts, we'll need to add our own code to randomly select a group and hide unused groups in XComGame.

Link to comment
Share on other sites

If we do the streaming map thing, we won't need more than 2 groups, 0 is the original, 1 is the new.We must stick to that unless we find a way to insert new objects to the stream. btw the offset/modded_code is acting strange.. only one of 6 locations is edited let me double check the offsets


//--------------------------------------SPAWN POINT 6 -----------------------------------------------//


OFFSET=0x00024798

// Vector (X, Y, Z) = (0x4500FFFF, 0xC41BFFFE, 0x423FFFFF) = (2064, -624, 48)
MODDED_CODE= <%f  -3217><%f  300><%f  64> // Vector(x,y,z)

//REL_OFFSET=32

//Rotator (Pitch, Yaw, Roll) = (0x00000000, 0xFFFF8200, 0x00000000) = (0, 4294935040, 0)
//MODDED_CODE= <%i  0><%i  4294935040><%i  0> // Rotator (Pitch, Yaw, Roll)

//--------------------------------------SPAWN POINT 6 -----------------------------------------------//


//--------------------------------------SPAWN POINT 7 -----------------------------------------------//


OFFSET=0x0002484e

// Vector (X, Y, Z) = (0x44F5FFFE, 0xC44BFFFE, 0x423FFFFF) = (1968, -816, 48)
MODDED_CODE= <%f  -3217><%f  300><%f  64> // Vector(x,y,z)

//REL_OFFSET=32

//Rotator (Pitch, Yaw, Roll) = (0x00000000, 0xFFFF8200, 0x00000000) = (0, 4294935040, 0)
//MODDED_CODE= <%i  0><%i  4294935040><%i  0> // Rotator (Pitch, Yaw, Roll)

//--------------------------------------SPAWN POINT 7 -----------------------------------------------//


//--------------------------------------SPAWN POINT 8 -----------------------------------------------//


OFFSET=0x00024904

// Vector (X, Y, Z) = (0x450CFFFF, 0xC41BFFFE, 0x423FFFFF) = (2256, -624, 48)
MODDED_CODE= <%f  -3217><%f  300><%f  64> // Vector(x,y,z)

//REL_OFFSET=32

//Rotator (Pitch, Yaw, Roll) = (0x00000000, 0x00007EA0, 0x00000000) = (0, 32416, 0)
//MODDED_CODE= <%i  0><%i  4294935040><%i  0> // Rotator (Pitch, Yaw, Roll)

//--------------------------------------SPAWN POINT 8 -----------------------------------------------//

//--------------------------------------SPAWN POINT 9 -----------------------------------------------//


OFFSET=0x000249ba

// Vector (X, Y, Z) = (0x4506FFFF, 0xC44BFFFE, 0x423FFFFF) = (2160, -816, 48)
MODDED_CODE= <%f  -3217><%f  300><%f  64> // Vector(x,y,z)

//REL_OFFSET=32

//Rotator (Pitch, Yaw, Roll) = (0x00000000, 0x00007EA0, 0x00000000) = (0, 32064, , 0)
//MODDED_CODE= <%i  0><%i  4294935040><%i  0> // Rotator (Pitch, Yaw, Roll)

//--------------------------------------SPAWN POINT 9 -----------------------------------------------//


//--------------------------------------SPAWN POINT 10 -----------------------------------------------//


OFFSET=0x0002462c

//Vector (X, Y, Z) = (0x4500FFFF, 0xC47BFFFE, 0x423FFFFF) = (2064, -1008, 48)
MODDED_CODE= <%f  -3217><%f  300><%f  64> // Vector(x,y,z)

//REL_OFFSET=32

//Rotator (Pitch, Yaw, Roll) = (0x00000000, 0x00007EA0, 0x00000000) = (0, 31872, , , 0)
//MODDED_CODE= <%i  0><%i  4294935040><%i  0> // Rotator (Pitch, Yaw, Roll)

//--------------------------------------SPAWN POINT 10 -----------------------------------------------//

//--------------------------------------SPAWN POINT 11 -----------------------------------------------//


OFFSET=0x000246e2

//Vector (X, Y, Z) = (0x450CFFFF, 0xC47BFFFE, 0x423FFFFF) = (2256, -1008, 48)
MODDED_CODE= <%f  -3217><%f  300><%f  64> // Vector(x,y,z)

//REL_OFFSET=32

//Rotator (Pitch, Yaw, Roll) = (0x00000000, 0x00007EA0, 0x00000000) = (0, 32128 , 0)
//MODDED_CODE= <%i  0><%i  4294935040><%i  0> // Rotator (Pitch, Yaw, Roll)

//--------------------------------------SPAWN POINT 11 -----------------------------------------------//

Edited by LiQuiD911
Link to comment
Share on other sites

LiQuiD911, tokens must be separated with white-space:

<%f 1>  /* any number of spaces here */  <%f 2>
I'm a biggest idiot there is: stream map kismet already has actor removal event. I just need to leave it and delete all the others. In this case we won't need to change spawn group and original spawn zone will be removed from map by kismet.
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...