Zaran Posted September 18, 2013 Share Posted September 18, 2013 I am creating a sword to go along with my custom character, got most effects working. Basically its a darkness sword that gains power from the wielder's life force and slowly turn them insane. (Thanks tehMugWump for OPCane and theDanaAddams for Dark Link's Dark Sword) Details;--------- Pro's -- add speed, chop trees, lit things on fire, Night vision(glows faint red in the dark), hits like a spear Con's -- Sanity drain, Hunger drain (need help on this) Manage to add cons of sanity drain, but working to add hunger drain as well. I check armor_slurper and slurper's prefabs but not able to get them to work. I'm new to Lua so i might add them wrongly. if i remove the hunger codes it works fine. Some help checking my codes would be appeciated Edit;I should have put [Help] instead of [Request] for the Thread Title... silly me This is the codes;local assets={ Asset("ANIM", "anim/darksword.zip"), Asset("ANIM", "anim/swap_darksword.zip"), Asset("ATLAS", "images/inventoryimages/darksword.xml")}local function onfinished(inst) inst:Remove()endlocal function onequip(inst, owner) owner.AnimState:OverrideSymbol("swap_object", "swap_darksword", "swap_nightmaresword") owner.AnimState:Show("ARM_carry") owner.AnimState:Hide("ARM_normal") inst.task = inst:DoPeriodicTask(2, function() swordhunger(inst, owner) end) local light = inst.entity:AddLight() light:SetFalloff(0.7) light:SetIntensity(.3) light:SetRadius(2) light:SetColour(235/255,12/255,12/255) light:Enable(true) inst.AnimState:SetBloomEffectHandle( "shaders/anim.ksh" )endlocal function onunequip(inst, owner) owner.AnimState:Hide("ARM_carry") owner.AnimState:Show("ARM_normal") endlocal function swordhunger(inst, owner) if (owner.components.hunger and owner.components.hunger.current > 0 )then owner.components.hunger:DoDelta(-3) endend local function fn(Sim, target, inst) --MOD local inst = CreateEntity() local trans = inst.entity:AddTransform() local anim = inst.entity:AddAnimState() inst.entity:AddSoundEmitter() MakeInventoryPhysics(inst) anim:SetBank("nightmaresword") anim:SetBuild("darksword") anim:PlayAnimation("idle") -------------------------------------- local light = inst.entity:AddLight() light:SetFalloff(0.7) light:SetIntensity(.5) light:SetRadius(.5) light:SetColour(235/255,12/255,12/255) light:Enable(true) inst.AnimState:SetBloomEffectHandle( "shaders/anim.ksh" ) --------------------------------- inst:AddComponent("weapon") inst.components.weapon:SetDamage(TUNING.SPEAR_DAMAGE) inst:AddComponent("inspectable") inst:AddComponent("inventoryitem") inst:AddComponent("equippable") inst:AddComponent("lighter") inst:AddComponent("dapperness") inst.components.dapperness.dapperness = -0.2 inst.components.equippable:SetOnEquip( onequip ) inst.components.equippable:SetOnUnequip( onunequip ) inst.components.equippable.walkspeedmult = TUNING.CANE_SPEED_MULT inst.components.inventoryitem.atlasname = "images/inventoryimages/darksword.xml" inst:AddTag("sharp") inst:AddComponent("tool") -- doesn't work with "Target" --inst:AddComponent("key") -- works with "Target" inst:AddComponent("workable") inst.components.tool:SetAction(ACTIONS.CHOP, 2)----------- return instend-------------------------return Prefab( "common/inventory/darksword", fn, assets) Link to comment Share on other sites More sharing options...
Heavenfall Posted September 18, 2013 Share Posted September 18, 2013 Put this in your modmain.luafunction newhungerdelta(inst) local oldDoDelta = inst.DoDelta inst.DoDelta = function (self, delta, overtime, ignore_invincible) local ourmodtohungerrate = 1 for k,v in pairs (self.inst.components.inventory.equipslots) do if v.itemchangeshungerrateby then ourmodtohungerrate = ourmodtohungerrate + v.itemchangeshungerrateby end end delta = delta * ourmodtohungerrate oldDoDelta(self, delta, overtime, ignore_invincible) endendAddComponentPostInit("hunger", newhungerdelta)then add to your prefab functioninst.itemchangeshungerrateby = 1A value of 1 would increase the hunger rate by 100% while the item is equipped. You can use different values on different items you have equipped at the same time, and they will stack additively (1+1 = 2 = 200% increase in hunger rate). If you set negative numbers the game will treat them the same way: -0.2 and you'll be getting 80% of normal hungerrate. If you go below -1.0 in total you'll gain hunger while the items are equipped. Link to comment Share on other sites More sharing options...
Zaran Posted September 18, 2013 Author Share Posted September 18, 2013 Thanks for the fast reply Heavenfall! I'll test it and inform shortly Link to comment Share on other sites More sharing options...
Heavenfall Posted September 18, 2013 Share Posted September 18, 2013 Sorry, you'll get some crashes. Put this in modmain.lua insteadfunction newhungerdelta(inst) local oldDoDelta = inst.DoDelta inst.DoDelta = function (self, delta, overtime, ignore_invincible) local ourmodtohungerrate = 1 if self.inst.components.inventory then for k,v in pairs (self.inst.components.inventory.equipslots) do if v.itemchangeshungerrateby then ourmodtohungerrate = ourmodtohungerrate + v.itemchangeshungerrateby end end end delta = delta * ourmodtohungerrate oldDoDelta(self, delta, overtime, ignore_invincible) endendAddComponentPostInit("hunger", newhungerdelta) Link to comment Share on other sites More sharing options...
Zaran Posted September 18, 2013 Author Share Posted September 18, 2013 Tested and it works great! My sword is now complete, just need more test drive to make it balance my character The code that you post is a little advance for me, still much to learn This issue is SOLVED Now... finding new stuff to tinker with! Edit; Ok i'll try the new codes pronto,I'll inform if i have any crashes,works great so far 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.