bobyjoe Posted November 26, 2016 Share Posted November 26, 2016 I'm making my first mod and i was wondering how to make powdercake heal a character for 10 health. can you help? Link to comment Share on other sites More sharing options...
amethystMushroom Posted November 26, 2016 Share Posted November 26, 2016 For just a specific character, or for everyone? Here's some code that I use for my character that gets bonuses from eating rotten stuff: local function foodbonus(inst, food) if inst.components.eater and food.prefab == "rottenegg" then inst.components.sanity:DoDelta(1) inst.components.health:DoDelta(2) inst.components.hunger:DoDelta(20) end if inst.components.eater and food.prefab == "spoiled_food" then inst.components.sanity:DoDelta(1) inst.components.health:DoDelta(2) inst.components.hunger:DoDelta(20) end if inst.components.eater and food.prefab == "wetgoop" then inst.components.sanity:DoDelta(0) inst.components.health:DoDelta(0) inst.components.hunger:DoDelta(10) end end this part is in master_postinit: inst.components.eater:SetOnEatFn(foodbonus) If you want to just change it for everyone, you should be able to use this: AddPrefabPostInit("powcake", function(inst) inst.components.edible.healthvalue = 10 inst.components.edible.sanityvalue = 0 inst.components.edible.hungervalue = 0 end) Link to comment Share on other sites More sharing options...
bobyjoe Posted November 27, 2016 Author Share Posted November 27, 2016 this is for gust the one character. 2 hours ago, amethystMushroom said: Link to comment Share on other sites More sharing options...
bobyjoe Posted November 27, 2016 Author Share Posted November 27, 2016 I'm sorry I,m kinda new to this. could you pleas tell me where this is? 2 hours ago, amethystMushroom said: this part is in master_postinit: inst.components.eater:SetOnEatFn(foodbonus) PS:I don't know why it quoted you before. Link to comment Share on other sites More sharing options...
amethystMushroom Posted November 27, 2016 Share Posted November 27, 2016 both of them are in the [character].lua. That line is under "local master_postinit = function(inst)". so, here is what mine looks like, with the relevant bits in bold: local MakePlayerCharacter = require "prefabs/player_common" local assets = { Asset("SCRIPT", "scripts/prefabs/player_common.lua"), } local prefabs = {} -- Custom starting items local start_inv = { "carrot" } -- When the character is revived from human local function onbecamehuman(inst) -- Set speed when reviving from ghost (optional) inst.components.locomotor:SetExternalSpeedMultiplier(inst, "wroach_speed_mod", 1) end local function onbecameghost(inst) -- Remove speed modifier when becoming a ghost inst.components.locomotor:RemoveExternalSpeedMultiplier(inst, "wroach_speed_mod") end -- When loading or spawning the character local function onload(inst) inst:ListenForEvent("ms_respawnedfromghost", onbecamehuman) inst:ListenForEvent("ms_becameghost", onbecameghost) if inst:HasTag("playerghost") then onbecameghost(inst) else onbecamehuman(inst) end end -- This initializes for both the server and client. Tags can be added here. local common_postinit = function(inst) -- Minimap icon inst.MiniMapEntity:SetIcon( "wroach.tex" ) end -- misc food bonuseslocal function foodbonus(inst, food) if inst.components.eater and food.prefab == "rottenegg" then inst.components.sanity:DoDelta(1) inst.components.health:DoDelta(2) inst.components.hunger:DoDelta(20) end if inst.components.eater and food.prefab == "spoiled_food" then inst.components.sanity:DoDelta(1) inst.components.health:DoDelta(2) inst.components.hunger:DoDelta(20) end if inst.components.eater and food.prefab == "wetgoop" then inst.components.sanity:DoDelta(0) inst.components.health:DoDelta(0) inst.components.hunger:DoDelta(10) end end -- This initializes for the server only. Components are added here. local master_postinit = function(inst) --Diet local everything = { FOODTYPE.GENERIC, FOODTYPE.MEAT, FOODTYPE.WOOD, FOODTYPE.VEGGIE, --FOODTYPE.ELEMENTAL, --FOODTYPE.GEARS, FOODTYPE.HORRIBLE, FOODTYPE.INSECT, FOODTYPE.SEEDS, FOODTYPE.RAW, --FOODTYPE.BURNT, FOODTYPE.ROUGHAGE, FOODTYPE.TRASH, --custom foodtype } inst.components.eater:SetDiet(everything) inst.components.eater.ignoresspoilage = true inst.components.eater:SetOnEatFn(foodbonus) -- for misc food bonuses inst.components.sanity.custom_rate_fn = function(inst) local light_delta = 0 if TheWorld.state.isday then light_delta = TUNING.SANITY_NIGHT_MID end return light_delta end inst.components.sanity.night_drain_mult = 0 -- choose which sounds this character will play inst.soundsname = "wroach" -- Uncomment if "wathgrithr"(Wigfrid) or "webber" voice is used -- inst.talker_path_override = "dontstarve_DLC001/characters/" -- Stats inst.components.health:SetMaxHealth(140) inst.components.hunger:SetMax(300) inst.components.sanity:SetMax(150) inst:WatchWorldState("temperature", function() inst.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED * math.min(math.max(0.75 + 0.5 * inst.components.temperature.current / 70, 0.75), 1.25)end, TheWorld) -- Damage multiplier (optional) inst.components.combat.damagemultiplier = 1 -- Hunger rate (optional) --inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE -- Speed and hunger rate adjust with temperature inst:WatchWorldState("temperature", function() inst.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED * math.min(math.max(0.75 + 0.5 * inst.components.temperature.current / 70, 0.75), 1.25) inst.components.hunger.hungerrate = TUNING.WILSON_HUNGER_RATE * math.min(math.max(0.75 + 0.5 * inst.components.temperature.current / 70, 0.75), 1.25) end, TheWorld) inst.OnLoad = onload inst.OnNewSpawn = onload -- Extra damage from spiders inst:ListenForEvent("attacked", function(inst, data) if data.attacker.prefab == "spider" then local extradamage = data.damage * 2 inst.components.health:DoDelta(-extradamage) end end) end return MakePlayerCharacter("wroach", prefabs, assets, common_postinit, master_postinit, start_inv) Link to comment Share on other sites More sharing options...
amethystMushroom Posted November 27, 2016 Share Posted November 27, 2016 oh, shoot, it just occurred to me that that's for DST and not DS. it might be different in singleplayer. Link to comment Share on other sites More sharing options...
bobyjoe Posted November 27, 2016 Author Share Posted November 27, 2016 ya, it seams to not be working when turn it on everything goes silent and I'm unable to pres button. but thank any whys. 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.