Jump to content

Character Prefab Help


Recommended Posts

Heya! I'm back! Our mods me and my friends make with this forums help were super successful and I want to thank you all!

 

We do have new characters in the works right now, and we really need help with all of the prefabs we've come up with~

 

Okay, so we'll need...

 

How to make a custom item and how to make a character start out with said item

Sanity increase around certain characters and decrease around certain other characters (If this isn't possible it's not 100% necessary!)

How to make certain custom items craftable for only one character (And can you make food craftable? Because these items are food. I would just use the Crock Pot but im not sure how only a specific character being able to make the item would work with DST.

 

That's all for now, if other problems or needs arise I'll be back ;-;

Link to comment
Share on other sites

ow to make a custom item and how to make a character start out with said item
 This guide will help a lot with that, although there are a few more details on the animation pipeline here, and a few things to update to DST.

 

Sanity increase around certain characters and decrease around certain other characters (If this isn't possible it's not 100% necessary!)
Add this to the character's master_postinit:
sanityrates ={    wilson = 1,    willow = -1,-- add whoever you want, 1 for giving sanity, -1 for decreasing}inst.components.sanity.custom_rate_fn = function(inst)    local rate = 0    for k,v in pairs(AllPlayers) do        if v ~= inst and sanityrates[v.prefab] then            local max_radius_sq = 100            local distmult = 1 - math.max(1, inst:GetDistanceSqToInst(v)/max_radius_sq)            rate = rate + sanityrates[v.prefab]*TUNING.SANITYAURA_TINY*distmult        end    end    return rateend

You can play with the TUNING.SANITYAURA part to change how much it is, or just add another multiplier (other options for the SANITYAURA are _SMALL, _MED, _LARGE, _HUGE).

 

How to make certain custom items craftable for only one character
This is really easy now

 

(And can you make food craftable? Because these items are food. I would just use the Crock Pot but im not sure how only a specific character being able to make the item would work with DST.
You can definitely make food craftable normally. Making recipes in a crockpot specific to a character is probably pretty hard, though. 
Link to comment
Share on other sites

This guide will help a lot with that, although there are a few more details on the animation pipeline here, and a few things to update to DST.

 

 

 

Add this to the character's master_postinit:

sanityrates ={    wilson = 1,    willow = -1,-- add whoever you want, 1 for giving sanity, -1 for decreasing}inst.components.sanity.custom_rate_fn = function(inst)    local rate = 0    for k,v in pairs(AllPlayers) do        if v ~= inst and sanityrates[v.prefab] then            local max_radius_sq = 100            local distmult = 1 - math.max(1, inst:GetDistanceSqToInst(v)/max_radius_sq)            rate = rate + sanityrates[v.prefab]*TUNING.SANITYAURA_TINY*distmult        end    end    return rateend
You can play with the TUNING.SANITYAURA part to change how much it is, or just add another multiplier (other options for the SANITYAURA are _SMALL, _MED, _LARGE, _HUGE).

 

 

 

This is really easy now

 

 

 

You can definitely make food craftable normally. Making recipes in a crockpot specific to a character is probably pretty hard, though.

 

Okay, thank you so much!

...but

Because i'm a total noob, i'm not sure I put the sanity raising/lowering thing in the right place. I found where to put it, i'm just not 100% it's in the right spot. I'd test it, but im not sure that'd work and that would make test results inaccurate.

Here's the master_postinit.

local master_postinit = function(inst)sanityrates ={    willow = -1,	dante = -1, 	white = 1,	lilum = 1,	winston = 1,	-- add whoever you want, 1 for giving sanity, -1 for decreasing}inst.components.sanity.custom_rate_fn = function(inst)    local rate = 0    for k,v in pairs(AllPlayers) do        if v ~= inst and sanityrates[v.prefab] then            local max_radius_sq = 100            local distmult = 1 - math.max(1, inst:GetDistanceSqToInst(v)/max_radius_sq)            rate = rate + sanityrates[v.prefab]*TUNING.SANITYAURA_TINY*distmult        end    end    return rateend	-- choose which sounds this character will play	inst.soundsname = "wendy"	-- Stats		inst.components.combat.damagemultiplier = .8	inst.components.temperature.mintemp = 20.		inst.components.health:SetMaxHealth(150)	inst.components.hunger:SetMax(150)	inst.components.sanity:SetMax(175)	end

I don't know... <.>

Edited by Lukasai
Link to comment
Share on other sites

@Lukasai, That looks right. Add a *100 or something to the "rate =" part to make the effect really noticeable, then you can tune it from there. I think the way I wrote it the effect may be too small to notice.

http://prntscr.com/6i65au

That's what happened when I implemented it ;-;

The part in question is:

local master_postinit = function(inst)sanityrates ={    lilum = -1,    luka = 1,     -- add whoever you want, 1 for giving sanity, -1 for decreasing}inst.components.sanity.custom_rate_fn = function(inst)    local rate = 0    for k,v in pairs(AllPlayers) do        if v ~= inst and sanityrates[v.prefab] then            local max_radius_sq = 100            local distmult = 1 - math.max(1, inst:GetDistanceSqToInst(v)/max_radius_sq)            rate = rate + sanityrates[v.prefab]*TUNING.SANITYAURA_SMALL*distmult        end    end    return rateend	-- choose which sounds this character will play	inst.soundsname = "wilson"	-- Stats		inst.components.health:SetMaxHealth(100)	inst.components.hunger:SetMax(150)	inst.components.sanity:SetMax(150)endreturn MakePlayerCharacter("winston", prefabs, assets, common_postinit, master_postinit, start_inv)

Which is the master_postinit all the way to the end.

And yes, im leaking this character to the world. Consider it a sneak peek. ;-;

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...