TookYoCookies Posted August 6, 2018 Share Posted August 6, 2018 As the title says, i need to know more about loot lists. For the past 2 days ive been unsuccessfully attempting to generate loot into the Soul Collector . While i can do it in game via GiveItemsToObject(Guid, Guid, Int32) as well as with the GenerateLootListInto(Guid, Guid) i can not for the life of me get either of these scripts to trigger by themselves from a mod file. I'd really love some understanding not only how lootlists at large work, and how i can get them to trigger into existing instanced objects like say the Soul Collector, or a hidden container like here. If any one can help, or point me in the right direction I'd be super grateful Link to comment Share on other sites More sharing options...
kilay Posted August 6, 2018 Share Posted August 6, 2018 (edited) As the title says, i need to know more about loot lists. For the past 2 days ive been unsuccessfully attempting to generate loot into the Soul Collector . While i can do it in game via GiveItemsToObject(Guid, Guid, Int32) as well as with the GenerateLootListInto(Guid, Guid) i can not for the life of me get either of these scripts to trigger by themselves from a mod file. I'd really love some understanding not only how lootlists at large work, and how i can get them to trigger into existing instanced objects like say the Soul Collector, or a hidden container like here. If any one can help, or point me in the right direction I'd be super grateful I guess they are inside the level self, that's why you don't found them. Edited August 7, 2018 by kilay Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request Link to comment Share on other sites More sharing options...
Zap Gun For Hire Posted August 6, 2018 Share Posted August 6, 2018 (edited) As the title says, i need to know more about loot lists. For the past 2 days ive been unsuccessfully attempting to generate loot into the Soul Collector . While i can do it in game via GiveItemsToObject(Guid, Guid, Int32) as well as with the GenerateLootListInto(Guid, Guid) i can not for the life of me get either of these scripts to trigger by themselves from a mod file. I'd really love some understanding not only how lootlists at large work, and how i can get them to trigger into existing instanced objects like say the Soul Collector, or a hidden container like here. If any one can help, or point me in the right direction I'd be super grateful Are you trying to modify the Soul Collectors found in the DLC or the one found in the base game? edited I wiped my answer about the DLC after looking into your screenshot. Yeah, there doesn't appear to be a LootList for the base game Soul Collecter in items.gamedatabundle. Many of the LootLists for containers and critters are gated into the code via level design and not available for us peons. Edited August 6, 2018 by Zap Gun For Hire Link to comment Share on other sites More sharing options...
TookYoCookies Posted August 6, 2018 Author Share Posted August 6, 2018 I was able to rig a work around for the moment but its real ghetto. As you can see here: { "$type": "Game.GameData.ItemGameData, Assembly-CSharp", "DebugName": "Part_Spirit_residue", "ID": "e474463c-1c74-44c5-945c-385d864b6974", "Components": [{ "$type": "Game.GameData.ItemComponent, Assembly-CSharp", "DisplayName": 850, "DescriptionText": 1458, "FilterType": "Ingredients", "InventoryAudioEventListID": "705deb97-3f84-48c8-a84b-e3c34e2d0e3a", "IsQuestItem": "false", "IsIngredient": "true", "IsCurrency": "false", "IsAdventuringItem": "false", "CanSellForFullValue": "false", "MaxStackSize": 999, "NeverDropAsLoot": "false", "CanBePickpocketed": "false", "IsUnique": "false", "Value": 95, "IconTextureSmall": "gui/icons/items/ingredients/spirit_residue_s.png", "IconTextureLarge": "gui/icons/items/ingredients/spirit_residue_l.png", "PencilSketchTexture": "", "InspectOnUseButton": [], "IsPlaceholder": "false" }, { "$type": "Game.GameData.DataScriptEventComponent, Assembly-CSharp", "Scripts": [{ "Event": "OnItemCollected", "Script": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [{ "Data": { "FullName": "Void GenerateLootListInto(Guid, Guid)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "6897484c-1502-4300-bd2b-bc68be30d263"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ] } ] My God i dont know how to format on here.. But as you can see i was able to get the script to hook, only problem is the script fires EVERY time i loot a spirit residue. Any chance you guys know of a way i can kill the script once its fired once? Link to comment Share on other sites More sharing options...
TookYoCookies Posted August 7, 2018 Author Share Posted August 7, 2018 Here were two work arounds i was able to come up with that, while not perfect, they are capable of getting the job done. Just gotta make sure to loot the Spirit Residue before the unique boots. This work around hooks into the "OnItemCollected" Event: "$type": "Game.GameData.DataScriptEventComponent, Assembly-CSharp", "Scripts": [{ "Event": "OnItemCollected", "Script": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [{ "Data": { "FullName": "Void GenerateLootListInto(Guid, Guid)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "6897484c-1502-4300-bd2b-bc68be30d263"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Conditional": { "Operator": 0, "Components": [{ "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean ObjectHasItemCount(Guid, Guid, Operator, Int32)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "77c22eeb-0d74-4fbf-a229-910271711608", "EqualTo", "0"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": false, "Operator": 0 again sorry for my poor formatting. You can see the the extra conditional i added here : "FullName": "Boolean ObjectHasItemCount(Guid, Guid, Operator, Int32)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "77c22eeb-0d74-4fbf-a229-910271711608", "EqualTo", "0"], what this did is made it so the GenerateLootList only fired when my custom item, represented by GUID: "77c22eeb-0d74-4fbf-a229-910271711608" was only at '0' instances. Here is a 2nd version of the work around but its scripted as a conditional from the LootListDataComponet, instead of as a Data Script Event. : "$type": "Game.GameData.LootListComponent, Assembly-CSharp", "Conditional": { "Operator": 0, "Components": [] }, "OutputChance": 1, "OutputMode": "All", "Items": [{ "Conditional": { "Operator": 0, "Components": [{ "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean ObjectHasItemCount(Guid, Guid, Operator, Int32)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "77c22eeb-0d74-4fbf-a229-910271711608", "EqualTo", "0"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": false, "Operator": 0 } ] }, "OutputChance": 1, "MinCount": 1, "MaxCount": 1, "Weight": 1, "ItemID": "77c22eeb-0d74-4fbf-a229-910271711608", "LootListID": "00000000-0000-0000-0000-000000000000", "LockedVisible": "false" again poor formatting, my apologies butr as you can see, same thing just triggers from the lootlistcomponent. So its not nearly as clean as a true LootList to an instanced creature would be, but it does get the job done for he time being. If any one wants me to put up the whole file let me know. 1 Link to comment Share on other sites More sharing options...
BMac Posted August 7, 2018 Share Posted August 7, 2018 For what it's worth, the base game Soul Collector appears to be using the 'LL_Lurker_Bog' loot list. Link to comment Share on other sites More sharing options...
TookYoCookies Posted August 8, 2018 Author Share Posted August 8, 2018 Hey I appreciate any help i could get. I actually tried using the LL_Lurker_Bog loot list earlier but i couldnt get it to work, either way though its all good and i appreciate the help. I was always hoping to have specific enough conditions to guarantee that it was one unique drop, so i was always gonna be looking for something to point to that one specific instance of that Soul Collector. I Do think i have something thats as close to a loot list pointing to that specific Soul Collector as i can get. heres my finished work around: { "$type": "Game.GameData.ItemGameData, Assembly-CSharp", "DebugName": "Part_Spirit_residue", "ID": "e474463c-1c74-44c5-945c-385d864b6974", "Components": [{ "$type": "Game.GameData.ItemComponent, Assembly-CSharp", "DisplayName": 850, "DescriptionText": 1458, "FilterType": "Ingredients", "InventoryAudioEventListID": "705deb97-3f84-48c8-a84b-e3c34e2d0e3a", "IsQuestItem": "false", "IsIngredient": "true", "IsCurrency": "false", "IsAdventuringItem": "false", "CanSellForFullValue": "false", "MaxStackSize": 999, "NeverDropAsLoot": "false", "CanBePickpocketed": "false", "IsUnique": "false", "Value": 95, "IconTextureSmall": "gui/icons/items/ingredients/spirit_residue_s.png", "IconTextureLarge": "gui/icons/items/ingredients/spirit_residue_l.png", "PencilSketchTexture": "", "InspectOnUseButton": [], "IsPlaceholder": "false" }, { "$type": "Game.GameData.DataScriptEventComponent, Assembly-CSharp", "Scripts": [{ "Event": "OnItemDroppedAsLoot", "Script": { "Conditional": { "Operator": 0, "Components": [{ "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsInScene(Guid, Guid)", "Parameters": ["b1a8e901-0000-0000-0000-000000000000", "0159a190-8857-480f-bfd5-0f43b61d6424"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": false, "Operator": 0 } ] }, "Scripts": [{ "Data": { "FullName": "Void GenerateLootListInto(Guid, Guid)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "6897484c-1502-4300-bd2b-bc68be30d263"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Conditional": { "Operator": 0, "Components": [{ "$type" "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean ObjectHasItemCount(Guid, Guid, Operator, Int32)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "77c22eeb-0d74-4fbf-a229-910271711608", "EqualTo", "0"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": false, "Operator": 0 } ] } } ] } } ] } ] } Hopefully my formatting is better this time too.. Anyways i changed the event call from "Event": "OnItemCollected", to "Event": "OnItemDroppedAsLoot", . I also added a condition to that originating script event, one problem i didnt want to have was having this script fire every ****ing time i picked up spirit residue, or every time one dropped. so i added: "FullName": "Boolean IsInScene(Guid, Guid)", "Parameters": ["b1a8e901-0000-0000-0000-000000000000", "0159a190-8857-480f-bfd5-0f43b61d6424"], If Im not mistaken, the way its set up is that unless those conditions(read: "Parameters", the first GUID being the Player and the Second GUID represents the zone's GUID) are met then the "OnItemDroppedAsLoot" event script doesnt even fire. so it solves the problem of going off every time a ghost/spirit etc. drops loot basically. And the Bottom condition call: "FullName": "Boolean ObjectHasItemCount(Guid, Guid, Operator, Int32)", "Parameters": ["9bef9fbc-eec8-4aeb-996c-b22da1f2ff4c", "77c22eeb-0d74-4fbf-a229-910271711608", "EqualTo", "0"], Ensures that once the Soul Collector has the one unique pair of boots in his inventory it stops spamming him with more supposedly super rare unique boots spawns. So I think the work around is finished, its worked out so far and nothing scary came up in the output_log so i think its good to go. Im gonna attach a screenshot incase any one wants to take a look at it all properly formatted. 1 Link to comment Share on other sites More sharing options...
kilay Posted August 10, 2018 Share Posted August 10, 2018 (edited) This should be sticky, cuz it works like a charm and might be a useful template . Great job. Edited August 10, 2018 by kilay Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now