Ziro2k Posted October 25, 2017 Share Posted October 25, 2017 (edited) I'm trying to figure out how to edit the criteria that determines whether or not an action is displayed. For example, in my mod firepits and campfires can be fueled, but must have a spark before they will start burning. The COOK action only checks to determine if a firepit is fueled, not if it's on fire/burning, so this means that food can be cooked on a fueled, but not burning, firepit. I know how to edit the ACTIONS.COOK.fn in order to prevent this, but this causes the animation to be carried out, after which the characters says "I can't do that." I'm looking for a way to prevent the action from being displayed at all, like when you try to cook something on an empty firepit and you only have the option to examine it. I know that this is in the componentactions.lua file, but they are all local and I can't figure out how to edit them from modmain. I'm fairly certain that all I need to do is add the condition: and not ((target.prefab == "campfire" or target.prefab == "firepit") and target.components.burnable:IsBurning() == false) to the "cookable" component action, somehow.. Edited October 25, 2017 by Ziro2k Link to comment Share on other sites More sharing options...
CensedPie Posted October 27, 2017 Share Posted October 27, 2017 From modmain you can edit cookable.lua functions with AddComponentPostInit("cookable", yourfunction) where yourfunction is a function written by you in the modmain. Use this to replace the function you need. For example for cookable.lua function OnCookedPostInit(inst) local old_oncooked = inst.components.cookable and inst.components.cookable.oncooked local function new_oncooked(inst, cooker, chef) --add if conditions then call old_oncooked --like this assuming you have a check for if the campfire is burning if campfire_isburning then old_oncooked(inst, cooker, chef) else --call the inspect here end end end AddComponentPostInit("cookable", OnCookedPostInit) This should replace the cookable.lua oncooked which won't be called unless the campfire is burning. If the campfire isn't burning then you should call the inspect function. Hope this helps or at least points you in the right direction. Remember you can use AddComponentPostInit or if you need to modify a prefab with functions then AddPrefabPostInit("prefab name", yourfunction) will work. 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