wghost81 Posted September 12, 2014 Share Posted September 12, 2014 Do you know all these maps? http://imgur.com/a/SA8go I certainly don't. :smile: LZ mod is almost ready. Zones are placed, camera is rotated, config looks like: LZArray=(MapName="URB_Bar",StartLoc=(X=1007,Y=1391,Z=64),StartDir=ELZD_South,LZObjects=(PlayerStartObj="PlayerStart_2",BuildingVolumeObj="XComBuildingVolume_6",LevelActorObj="XComLevelActor_6",PointObj="PointInSpace_22",SpawnPt1="XComSpawnPoint_18",SpawnPt2="XComSpawnPoint_19",SpawnPt3="XComSpawnPoint_20",SpawnPt4="XComSpawnPoint_21",SpawnPt5="XComSpawnPoint_22",SpawnPt6="XComSpawnPoint_23")) LZArray=(MapName="URB_Highway1",StartLoc=(X=-2065,Y=1295,Z=448),StartDir=ELZD_West,LZObjects=(PlayerStartObj="PlayerStart_6",BuildingVolumeObj="XComBuildingVolume_8",LevelActorObj="XComLevelActor_394",PointObj="PointInSpace_10",SpawnPt1="XComSpawnPoint_36",SpawnPt2="XComSpawnPoint_37",SpawnPt3="XComSpawnPoint_38",SpawnPt4="XComSpawnPoint_39",SpawnPt5="XComSpawnPoint_40",SpawnPt6="XComSpawnPoint_41")) LZArray=(MapName="URB_HighwayBridge",StartLoc=(X=-3697,Y=-433,Z=256),StartDir=ELZD_North,LZObjects=(PlayerStartObj="PlayerStart_0",BuildingVolumeObj="XComBuildingVolume_3",LevelActorObj="XComLevelActor_101",PointObj="PointInSpace_3",SpawnPt1="XComSpawnPoint_1",SpawnPt2="XComSpawnPoint_11",SpawnPt3="XComSpawnPoint_2",SpawnPt4="XComSpawnPoint_3",SpawnPt5="XComSpawnPoint_4",SpawnPt6="XComSpawnPoint_5")) I have one major problem and one minor to deal with. Major problem is, prefab objects are slightly different for some maps. In particular, default Extraction Volume rotation is off for HighwayBridge (and may be for other maps I haven't yet tested). This means that Extraction Volume is rotated in wrong direction. I'll try to solve the problem by extracting original rotation values and adjusting those rather than just set new rotation. Minor problem is: there's just not enough space on some maps to place new LZ. My idea is to add ESpawnLoc param to config file. ESpawnLoc == ESL_Normal will place soldiers as usual and ESpawnLoc == ESL_Inside will place soldiers inside LZ. Any thoughts? Link to comment Share on other sites More sharing options...
XMarksTheSpot Posted September 12, 2014 Share Posted September 12, 2014 Do you know all these maps? http://imgur.com/a/SA8go I certainly don't. :smile:This is looking great so far, keep up the awesome work :thumbsup: Minor problem is: there's just not enough space on some maps to place new LZ. My idea is to add ESpawnLoc param to config file. ESpawnLoc == ESL_Normal will place soldiers as usual and ESpawnLoc == ESL_Inside will place soldiers inside LZ. Any thoughts?Yeah, some maps are pretty compact, I think the rooftops construction one is one such offender. As for an additional spawn location parameter, how about making it configurable via an (x, y) offset vector instead of using pre-defined constants? Depending on whether the offset would be relative to the extraction volume or the default spawn locations, at (0, 0) you'd either place them inside the EV or at their default positions. In either case it might help to consider the offset in local space relative to the LZ's specified orientation instead of world space (i.e. making it easier to think in terms of 'in front of the EV and a bit to the right').By having some more control over the placement of the set of soldier spawns you could deliberately place them in interesting configurations, like next to the EV instead of in front of it, or at the other end of the map, if you wanted. Just my two cents :) Link to comment Share on other sites More sharing options...
johnnylump Posted September 12, 2014 Share Posted September 12, 2014 That's excellent, Ghost. Will each map have exactly one alternate start location, or can we code multiple ones (or zero, if the map just isn't friendly to it?) And does the engine allow starting inside the LZ? I seem to recall it bumping one of our (7th or 8th) soldiers out of it on rooftops. Link to comment Share on other sites More sharing options...
wghost81 Posted September 12, 2014 Share Posted September 12, 2014 johnnylump, I've already added 5 LZ locations for URB_Bar map. :smile: Idea is to have 2-4 locations for each map configured, and randomly select one after the map is loaded. Original locations can be preserved. XMarksTheSpot, I think I'll add third ESpawnLocation option: ESL_Alternate. And two new variables: vector AltSpawnLoc and ELZDirection AltSpawnDir. This will allow to set alternate player spawn location and desired facing/camera rotation. I could also add ESL_Random option for completely random units placement. This will be fun. :smile: I've also found and fixed bad Extraction Volume placement bug. On some maps, like Highway1 (my most hated map ever), Extraction Volume location is off by one tile, so LZ border and actual extraction zone coordinates don't match. When I replace original LZ with script-generated one, volume and border are aligned perfectly. :smile: Some current config file examples: LZArray=(MapName="URB_Highway1",StartLoc=(X=-2257,Y=1295,Z=448),StartDir=ELZD_West,LZObjects=(LevelActorObj="XComLevelActor_394",BuildingVolumeObj="XComBuildingVolume_8",PlayerStartObj="PlayerStart_6",PointObj="PointInSpace_10",SpawnPt1="XComSpawnPoint_36",SpawnPt2="XComSpawnPoint_37",SpawnPt3="XComSpawnPoint_38",SpawnPt4="XComSpawnPoint_39",SpawnPt5="XComSpawnPoint_40",SpawnPt6="XComSpawnPoint_41")) This LZ is set for all mission types on URB_Highway1 map. LZArray=(MapName="URB_Highway1",MissionType=eMission_Abduction,StartLoc=(X=1391,Y=-1681,Z=64),StartDir=ELZD_North,ESpawnLoc=ESL_Normal,LZObjects=(LevelActorObj="XComLevelActor_394",BuildingVolumeObj="XComBuildingVolume_8",PlayerStartObj="PlayerStart_6",PointObj="PointInSpace_10",SpawnPt1="XComSpawnPoint_36",SpawnPt2="XComSpawnPoint_37",SpawnPt3="XComSpawnPoint_38",SpawnPt4="XComSpawnPoint_39",SpawnPt5="XComSpawnPoint_40",SpawnPt6="XComSpawnPoint_41")) This is valid for abductions on URB_Highway1 only. LZArray=(MapName="URB_HighwayBridge",MissionType=eMission_Special,CouncilType=eFCMType_Bomb,StartLoc=(X=2255,Y=-529,Z=256),StartDir=ELZD_East,ESpawnLoc=ESL_Normal,LZObjects=(LevelActorObj="XComLevelActor_101",BuildingVolumeObj="XComBuildingVolume_3",PlayerStartObj="PlayerStart_0",PointObj="PointInSpace_3",SpawnPt1="XComSpawnPoint_1",SpawnPt2="XComSpawnPoint_11",SpawnPt3="XComSpawnPoint_2",SpawnPt4="XComSpawnPoint_3",SpawnPt5="XComSpawnPoint_4",SpawnPt6="XComSpawnPoint_5")) This is valid for bomb missions on URB_Highway1. And if you set CouncilType=eFCMType_None (or simply don't include it at all to use default eFCMType_None value), this entry will be valid for all types of Council missions on URB_Highway1 map. Empty entry with map name only will add default map LZ to list of available LZs: LZArray=(MapName="URB_Highway1") Link to comment Share on other sites More sharing options...
johnnylump Posted September 12, 2014 Share Posted September 12, 2014 I've also found and fixed bad Extraction Volume placement bug. On some maps, like Highway1 (my most hated map ever), Extraction Volume location is off by one tile, so LZ border and actual extraction zone coordinates don't match. When I replace original LZ with script-generated one, volume and border are aligned perfectly. :smile: Excellent! That explains some bug reports we've seen. In these cases are you eliminating the default version of this map entirely from the rotation in favor of the script-generated one? Link to comment Share on other sites More sharing options...
wghost81 Posted September 12, 2014 Share Posted September 12, 2014 Spawn points inside extraction volume: http://steamcommunity.com/sharedfiles/filedetails/?id=313000684 (bad location, btw, as it makes this map very easy to win). johnnylump, if no entry for this map is present in DefaultLZMutator.ini, default LZ is used. If you want to add some more entries, but preserve original entry, you can add LZArray=(MapName="URB_Highway1") line to config file. Or, you can re-configure default spawn location to eliminate extraction volume bug. I'm about to code alternate spawn location and then I'll consider coding part of this mod done. There is one boring thing left: unpack and deserialize all maps and catalog all the LZ objects. Link to comment Share on other sites More sharing options...
wghost81 Posted September 12, 2014 Share Posted September 12, 2014 Alternate spawn location: http://steamcommunity.com/sharedfiles/filedetails/?id=313082707 Link to comment Share on other sites More sharing options...
LiQuiD911 Posted September 12, 2014 Share Posted September 12, 2014 (edited) I could do part of the cataloging.. are there any plans for moving exalt missions stuff , bombs and vips? I made a small experiment of changing the CollisionComponent and StaticMeshComponent of an actor on CB_MP_blank , but there are no visible effects ( and exception is if I set the object id of the staticmesh to 0 , the pickup becomes white colored and the game crashes if you point it), there is a limited list of event triggers and actions for the vehicles, like when it is damaged, it plays a sound ,adds flame and sets a counter to 1, but I can force a mesh swap(that adds cover) when it catches fire instead of when it is destroyed. If only there was a trigger "on created" it would be possible to spawn a hull that provides cover. The existing events are DamagedEvents and DestroyedEvents, the actions are PlayEffectCue,PlaySoundCue,Turns,DamageOverTime,SwapStaticMesh,RadialDamage. I wasn't able to chenge the type of the spawned hull but I think it is possible to set the toughness of the actor (exalt com arrays have an action of set toughness to INVINCIBLE). Edited September 12, 2014 by LiQuiD911 Link to comment Share on other sites More sharing options...
wghost81 Posted September 12, 2014 Share Posted September 12, 2014 Mod alpha: http://www.nexusmods.com/xcom/download/1000004054 Might not work, if I forgot to put something in the archive. :smile: Test and report. I will make an instruction on how to properly calculate LZ location later. Short instruction: use ShowDebug to see cursor (UE player) location, use teleportToCursor to get better coordinates and view of potential LZ location, write down the coordinates, edit config file, restart the game. Link to comment Share on other sites More sharing options...
wghost81 Posted September 12, 2014 Share Posted September 12, 2014 I could do part of the cataloging.. are there any plans for moving exalt missions stuff , bombs and vips?Yes, but those need to be cataloged too. I'm thinking of creating duplicate stream packages with alternate coordinates for those missions. You can start cataloging map objects and post the results here. Example: LZArray=(MapName="URB_Highway1",LZObjects=(LevelActorObj="XComLevelActor_394",BuildingVolumeObj="XComBuildingVolume_8",PlayerStartObj="PlayerStart_6",PointObj="PointInSpace_10",SpawnPt1="XComSpawnPoint_36",SpawnPt2="XComSpawnPoint_37",SpawnPt3="XComSpawnPoint_38",SpawnPt4="XComSpawnPoint_39",SpawnPt5="XComSpawnPoint_40",SpawnPt6="XComSpawnPoint_41")) Link to comment Share on other sites More sharing options...
Recommended Posts