Pianobeats Posted January 30, 2015 Share Posted January 30, 2015 Ok. So I'm trying to change the loot drops for beardlings, but I'm not sure how. How do I distinguish between a rabbit and a beardling? Both are under the same prefab. Link to comment Share on other sites More sharing options...
Blueberrys Posted January 30, 2015 Share Posted January 30, 2015 @PianobeatsRabbits become beardlings through the local BecomeBeardling function.It's called by the local CheckTransformState function, which is then called by two other instance-children functions (ondropfn and OnWake). They can be modified through the inst variable.-- To access global variables_G = GLOBALGetPlayer = _G.GetPlayerTUNING = _G.TUNINGlocal function rabbit_postinit(inst) local function beardling_loot(inst) -- Modify the loot of beardlings here -- inst refers to the instance of the beardling inst.components.lootdropper:SetLoot{} inst.components.lootdropper:AddRandomLoot("beardhair", .5) inst.components.lootdropper:AddRandomLoot("monstermeat", 1) inst.components.lootdropper:AddRandomLoot("nightmarefuel", 1) inst.components.lootdropper.numrandomloot = 1 end -- Check if the rabbit became a beardling -- Partially copied from rabbit.lua CheckTransformState fn local function check_beardling(inst) if not inst.components.health:IsDead() then if GetPlayer().components.sanity:GetPercent() > TUNING.BEARDLING_SANITY then -- Not beardling else -- Beardling -- Run the function to modify loot beardling_loot(inst) end end end -- Save old drop fn local old_ondropfn = inst.components.inventoryitem.ondropfn -- Then replace it with a new one inst.components.inventoryitem.ondropfn = function(inst) old_ondropfn(inst) -- Run the old one first -- Then run our own check -- Needs to execute AFTER old_ondropfn to replace values set by original function check_beardling(inst) end -- Same idea as drop fn above local old_OnWake = inst.OnEntityWake inst.OnEntityWake = function(inst) old_OnWake(inst) check_beardling(inst) endend-- Runs the above function after rabbit is initializedAddPrefabPostInit("rabbit", rabbit_postinit) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.