Caiman Posted February 6, 2016 Share Posted February 6, 2016 Hi Amineri!First of all thanks for being so supportive! :) To kick things of I want to bring some custom face paints into the game.The current ones are only in the ResWarrior pack and thus not in the SDK (would be too easy to mod them in without paying I guess). So I have a .tga-file ready but can't figure out how to set it up that it properly displays inside the game (and how to distribute it as a Modpack later containing more face paints). Link to comment Share on other sites More sharing options...
Amineri Posted February 6, 2016 Author Share Posted February 6, 2016 Alright, so I was looking around in the files and I can't quite find anything that I believe matches up. Maybe you could help me out here. I'm looking for the soldier abilities involved in completing objectives like "hack console", "place X4 charge", etc, so that I can disconnect the effect that reveals your squad. I'm trying to do this so that I can create a mod that tries to conserve the feeling of a small outfit of covert fighters. And you can't tell me that ADVENT's forces managed to gene-mod better hearing into their forces between the intro cinematic and the first mission so as to catch a soldier placing the charge. I'm also trying to find where the "Eliminate all hostiles" objective is generated from so that I can make it optional and enable the "Call Skyranger" ability in cases where it might not be active, but I figure I'll find those on my own. Any idea where I might find those actions so as to disconnect the "Psychic Guards of Oblivion" effect it has? I get that the developers didn't intend for the game to be completed by stealth alone, but I figure it makes more sense than needlessly shooting up a city block and risking your soldiers if XCOM truly is as small as it seems. Off the top of my head I'm not sure where the "breaking concealment" part of those abilities is. I suspect that it's actually in the Kismet control script that handles the mission objectives, and it's actually tied to the abilities themselves. That is, it's not using the ability that breaks concealment, but completing the objective that does so. To get at the Kismet, open up UnrealEd and open (for example) the umap file at : Steam/steamapps/common/XCOM 2 SDK/XComGame/Content/XCOM_2/Maps/Mission/Obj_DestroyObject.umap There's no actual Actors in this map -- it's just Kismet. Open the Kismet viewer from either View / UnrealKismet or click on the toolbar icon that is a "Green K". Kismet is a visual scripting language that is described in more detail here : https://udn.epicgames.com/Three/KismetUserGuide.html If you save a copy of the .umap into your mod's content folder, and add it as an existing item to your mod project (but keep the same name), then your mod version will override the base-game .umap when the made is activated. Link to comment Share on other sites More sharing options...
Amineri Posted February 6, 2016 Author Share Posted February 6, 2016 Is there a way for someone without the dev tools to edit the random character name generation list? I would like to also have a custom namelist on top of having custom-made characters imported from the pool. I just can't seem to find any file that holds the relevant fields I could play around with. I think the namelists are all in the localization files, which you can directly edit without using the SDK. However, if Firaxis pushes any updates, your localization file changes may get overwritten. There are entries for them, but editing them does nothing when I try to generate a random character from either the create function in the pool or having them just as appear at random, even when starting a new game. I've been trying control tests where I whittle down every nationality and gender to one first and one last name as possibilities but I still get the full array of names regardless when characters are generated. Hmm, I haven't actually tried to edit the game's default localization files. You might try creating a mod and then adding a localization file that removes/adds lines to the base-game's localizations. I know for sure that works, because all three of our release mods do that. There's more information on the text localization files here : https://udn.epicgames.com/Three/LocalizedTextFiles.html. On that page there's a link to config files, which is good because lines are added and removed in basically the same way. Link to comment Share on other sites More sharing options...
Amineri Posted February 6, 2016 Author Share Posted February 6, 2016 Hi Amineri!First of all thanks for being so supportive! :smile: To kick things of I want to bring some custom face paints into the game.The current ones are only in the ResWarrior pack and thus not in the SDK (would be too easy to mod them in without paying I guess). So I have a .tga-file ready but can't figure out how to set it up that it properly displays inside the game (and how to distribute it as a Modpack later containing more face paints). It looks like those are probably set up via the XComBodyPartContent archetype. An Archetype is a special type of UnrealScript class that is used as a template within UnrealEd to control access to art content. If you look in DefaultContent.ini, there is a massive array called 'BodyPartTemplateConfig' that is used to specify all the stuff that can attach to a soldier body. "FacePropsLower" and "FacePropsUpper" are there, as well as "Scars" and "Tatoos", so I suspect that face paints should be there as well. You'll note that the Config specifies an Archetype, which you should be able to find within UnrealEd Content Browser. E.g. "X2_UnitScars.Scars_01_Burn" refers to the package X2_UnitScars, and the archetype names Scars_01_Burn within that package. The Scars archetype package is in the GameData folder. Hope this points you in the right direction! Link to comment Share on other sites More sharing options...
ZenLOSER Posted February 6, 2016 Share Posted February 6, 2016 So I feel like I must be doing something wrong but that it may be something simple...I'm new to modding but not new to programming. I tried to follow what was in the "Example Class Override" though it didn't seem to have as many comments as the other examples. Goal - Make hack rewards easier to get. Here is what I have done: - New->default mod- Added to Engine ini:[Engine.Engine]+ModClassOverrides=(BaseGameClass="X2AbilityToHitCalc_Hacking", ModClass="X2AbilityToHitCalc_Hacking_HS")- Removed the XComGame ini as I dont think I need it (I dont think this needs a first time load thing?)- Created a uc file: X2AbilityToHitCalc_Hacking_HS.ucclass X2AbilityToHitCalc_Hacking_HS extends X2AbilityToHitCalc_Hacking config(GameCore); I then copied the whole function GetHackAttackForUnit from the X2AbilityToHitCalc_Hacking source file and added a simple line:HackAttack += 100;after the lineHackAttack = Hacker.GetCurrentStat(eStat_Hacking); The 100 isn't likely the final number I would stick with but I wanted something large so that I knew it worked. Ok so, build solution, start game, I see my mod there, check it on. I loaded up a game where I was right next to a hacking object and pressed hack...but nothing seemed to have changed. From what I can tell the UI code calls this function to determine HackOffense which then determines chances...but everything was exactly the same even though it should have added 100. Any clue what I am doing wrong? Link to comment Share on other sites More sharing options...
Amineri Posted February 6, 2016 Author Share Posted February 6, 2016 Ok so, build solution, start game, I see my mod there, check it on. I loaded up a game where I was right next to a hacking object and pressed hack...but nothing seemed to have changed. From what I can tell the UI code calls this function to determine HackOffense which then determines chances...but everything was exactly the same even though it should have added 100. Any clue what I am doing wrong? This is as good a time as any to bring up that the class-override system does have some limitations. In particular, it only works for classes that are instantiated at run-time. And, of course, if the object you're working with had already been instanced and is in the savefile, it won't work then, either. There are two big types of classes that can't be overridden :1) Archetype classes -- these are instantiated when the artist creates the art package containing the archetype, during development. To override this you need to create a child class and then use that child class to create a new archetype in a new art asset and then override the old. 2) Gamestate classes -- these are instantiated directly by name and in general are what gets serialized into the savefile, so overriding them could cause stability issues with loading games. However none of these seem to apply in your case. I suspect that you might be missing some of the necessary config files used when building. In XComEngine.ini there should be a section : [Engine.ScriptPackages] +NonNativePackages=<modname> The <modname> above should match your folder name. The above is a directive to the XComGame.exe make function to compile the folder specified. After you run the ModBuddy Build, if you go to your SDK folder and /Development/Src/ you should see the source folder as copied from your project Src. E.g. 'LW_SMGPack'. This just means that your source is getting copied. To check that it is being compiled, look in SDK folder in /XComGame/Script/ . You should see a bunch of .u files. If your build worked, you'd see one for your script, e.g. LW_SMGPack.u. If you don't see it, then the build failed, which is a good thing to know! Link to comment Share on other sites More sharing options...
ZenLOSER Posted February 6, 2016 Share Posted February 6, 2016 However none of these seem to apply in your case. I suspect that you might be missing some of the necessary config files used when building. In XComEngine.ini there should be a section : [Engine.ScriptPackages] +NonNativePackages=<modname> The <modname> above should match your folder name. The above is a directive to the XComGame.exe make function to compile the folder specified. After you run the ModBuddy Build, if you go to your SDK folder and /Development/Src/ you should see the source folder as copied from your project Src. E.g. 'LW_SMGPack'. This just means that your source is getting copied. To check that it is being compiled, look in SDK folder in /XComGame/Script/ . You should see a bunch of .u files. If your build worked, you'd see one for your script, e.g. LW_SMGPack.u. If you don't see it, then the build failed, which is a good thing to know! Thanks for the reply! Sadly I have that in there as it was created by default:[Engine.ScriptPackages]+NonNativePackages=SimpleHack As well in the editor ini:[ModPackages]+ModPackages=SimpleHack And that is the name of the folder. I also see in the SDK script directory:SimpleHack.u The mystery continues :(. Link to comment Share on other sites More sharing options...
TeamDragonpunk Posted February 6, 2016 Share Posted February 6, 2016 Amineri, Ok, I've gone through almost all of the ModBuddy files and think I have a pertty good handle on the Visualization Manager, but I wanted to run this by you first. 1. There is an "invite friend" button in Multiplayer. What file is that, because I can't seem to find where it is called? I'm used to IDE like Eclipse. I'd like to call that in the Squad Screen right before a mission. 2. Once added to the squad screen UI, I'll use the override it for inclusion of the other players. Link to comment Share on other sites More sharing options...
GamingVirtue Posted February 6, 2016 Share Posted February 6, 2016 -snip- Off the top of my head I'm not sure where the "breaking concealment" part of those abilities is. I suspect that it's actually in the Kismet control script that handles the mission objectives, and it's actually tied to the abilities themselves. That is, it's not using the ability that breaks concealment, but completing the objective that does so. To get at the Kismet, open up UnrealEd and open (for example) the umap file at : Steam/steamapps/common/XCOM 2 SDK/XComGame/Content/XCOM_2/Maps/Mission/Obj_DestroyObject.umap There's no actual Actors in this map -- it's just Kismet. Open the Kismet viewer from either View / UnrealKismet or click on the toolbar icon that is a "Green K". Kismet is a visual scripting language that is described in more detail here : https://udn.epicgames.com/Three/KismetUserGuide.html If you save a copy of the .umap into your mod's content folder, and add it as an existing item to your mod project (but keep the same name), then your mod version will override the base-game .umap when the made is activated. Beautiful. I'll take a look at it and see what I can do with that information. I'll post here again tomorrow when I figure out whether or not that solved the problem! Link to comment Share on other sites More sharing options...
Amineri Posted February 6, 2016 Author Share Posted February 6, 2016 Amineri, Ok, I've gone through almost all of the ModBuddy files and think I have a pertty good handle on the Visualization Manager, but I wanted to run this by you first. 1. There is an "invite friend" button in Multiplayer. What file is that, because I can't seem to find where it is called? I'm used to IDE like Eclipse. I'd like to call that in the Squad Screen right before a mission. 2. Once added to the squad screen UI, I'll use the override it for inclusion of the other players. That particular button is generated in UIMPShell_Lobby.UpdateButtons, with the line : NavHelp.AddCenterHelp(m_strInviteFriendButtonText, "", InviteFriendButtonCallback); The first argument is the string displayed in the button (from localization), the second is the tooltip string, and the last is a delegate to the callback function invoked when the button is pressed. Link to comment Share on other sites More sharing options...
Recommended Posts