Jump to content

Please help with the editing of the character


Recommended Posts

13 minutes ago, CarlZalph said:

I assume you're wanting the purple proposed line, then.


AddComponentPostInit(
    "sanityaura",
    function(self, inst)
        local GetAura_old = self.GetAura or function(...) return 0 end
        self.GetAura = function(self, observer)
            local retVal = GetAura_old(self, observer)
            if retVal<0 and observer and observer.prefab=="wilson"
            then
                local distsq = self.inst:GetDistanceSqToInst(observer)
                local dist = math.sqrt(distsq)
                local moddist = math.max(1, dist-2)
                retVal = retVal * math.max(1, distsq) / math.max(1, moddist*moddist)
            end
            return retVal
        end
    end
)

Change "wilson" to your character's prefab, and the "dist-2" to increase or decrease the cutoff threshold. (More negative = bigger inner radius and the 'purple' curve appears to start more right on the graph)

This code must be placed in master_postinit?

Link to comment
Share on other sites

45 minutes ago, CarlZalph said:

I assume you're wanting the purple proposed line, then.

Change "wilson" to your character's prefab, and the "dist-2" to increase or decrease the cutoff threshold. (More negative = bigger inner radius and the 'purple' curve appears to start more right on the graph)

It is great)
Now everything works as I wanted, thank you very much)

Edited by Tezumoto
Link to comment
Share on other sites

44 minutes ago, CarlZalph said:

I assume you're wanting the purple proposed line, then.

Change "wilson" to your character's prefab, and the "dist-2" to increase or decrease the cutoff threshold. (More negative = bigger inner radius and the 'purple' curve appears to start more right on the graph)

I would like to make one more difficult thing.
Chance of critical hit.
For example: the character x1 damage, but with a 25% chance it can strike x1.5
This can be done?

Link to comment
Share on other sites

16 minutes ago, Tezumoto said:

I would like to make one more difficult thing.
Chance of critical hit.
For example: the character x1 damage, but with a 25% chance it can strike x1.5
This can be done?

This could be done like this.

So, lets say your character normally deals "inst.components.combat.damagemultiplier = 1" & you want deal 50% more damage on a critical hit you would put this inside YOUCHARACTER.lua inside master_postinit

inst:ListenForEvent("onattackother", function(inst, data)
local criticalchance = math.random(1,4) -- 1 out of 4 should be like 25% chance

if criticalchance == 4 and inst.next_hit_critical == nil then -- The random 25% chance of getting a critical hit has occured, so make next hit a critical hit.
inst.next_hit_critical = true
inst.components.combat.damagemultiplier = 1.5 -- Boost damage for critical hit.
else
return
end

if inst.next_hit_critical == true then
inst.next_hit_critical = nil
ShakeAllCameras(CAMERASHAKE.VERTICAL,.5, .01, .05, inst, .01) -- Give a tiny camera shake for cooler effect?
inst.components.talker:Say("Critical hit, oh yeah!") -- Have a critical hit quote, if u want?
inst:DoTaskInTime(0.05, function(inst) inst.components.combat.damagemultiplier = 1 end) -- Reset damage after scoring a critical hit.
end

end)

I didn't test this code so it might not work, tell me if it do'n't work. But I hope it works for you ;)!

EDIT: Use the newer edited code.

Edited by SuperDavid
Link to comment
Share on other sites

6 minutes ago, SuperDavid said:

This could be done like this.

So, lets say your character normally deals "inst.components.combat.damagemultiplier = 1" & you want deal 50% more damage on a critical hit you would put this inside YOUCHARACTER.lua inside master_postinit


inst:ListenForEvent("onattackother", function(inst, data)
local criticalchance = math.random(1,4) -- 1 out of 4 should be like 25% chance

if criticalchance == 4 and inst.next_hit_critical == nil then -- The random 25% chance of getting a critical hit has occured, so make next hit a critical hit.
inst.next_hit_critical = true
inst.components.combat.damagemultiplier = 1.5 -- Boost damage for critical hit.
else
return
end

if inst.next_hit_critical == true then
inst.next_hit_critical = nil
ShakeAllCameras(CAMERASHAKE.VERTICAL,.5, .01, .05, inst, .01) -- Give a tiny camera shake for cooler effect?
inst.components.talker:Say("Critical hit, oh yeah!") -- Have a critical hit quote, if u want?
inst:DoTaskInTime(0.05, function(inst) inst.components.combat.damagemultiplier = 1 end) -- Reset damage after scoring a critical hit.
end

end)

I didn't test this code so it might not work, tell me if it do'n't work. But I hope it works for you ;)!

EDIT: Use the newer edited code.

This inst.components.sanity.night_drain_mult changes the speed of emptying of mind in the evening and at night.

It is possible to divide?
I want to mind in the evening emptied at a rate x1.5 and night x2

Link to comment
Share on other sites

7 minutes ago, Tezumoto said:

I want to mind in the evening emptied at a rate x1.5 and night x2

So, lose 50% more mind in evening & 100% more mind in nighttime? Replace the "drain_sanity_at_day" thing I gave you before with these.

It'll make your character lose sanity at day & lose more sanity at nighttime/evening just like yiu want?

Above master_postinit

local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * -TUNING.DAPPERNESS_SMALL

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

end
end

Under master_postinit

inst:WatchWorldState("phase", drain_sanity)

 

Link to comment
Share on other sites

12 minutes ago, SuperDavid said:

So, lose 50% more mind in evening & 100% more mind in nighttime? Replace the "drain_sanity_at_day" thing I gave you before with these.

It'll make your character lose sanity at day & lose more sanity at nighttime/evening just like yiu want?

Above master_postinit


local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * -TUNING.DAPPERNESS_SMALL

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

end
end

Under master_postinit


inst:WatchWorldState("phase", drain_sanity)

 

Can I remove the negative effect of the day?

Link to comment
Share on other sites

Just now, Tezumoto said:

Can I remove the negative effect of the day?

Yes, just use this instead

master_postinitt

local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5

end
end

 

Link to comment
Share on other sites

2 minutes ago, SuperDavid said:

Yes, just use this instead

master_postinitt


local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5

end
end

 

I can enhance the positive impact of the day?)

Link to comment
Share on other sites

20 minutes ago, Tezumoto said:

I can enhance the positive impact of the day?)

You want to heal mind in day & 50% more mind lost in evening & 100% more mind lost in night then use this code instead all of the other ones

outside master_postinit

Spoiler

local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * -TUNING.DAPPERNESS_MED

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

end
end

 

inside master_postinit

inst:WatchWorldState("phase", drain_sanity)

 

Link to comment
Share on other sites

17 minutes ago, SuperDavid said:

You want to heal mind in day & 50% more mind lost in evening & 100% more mind lost in night then use this code instead all of the other ones

 

 

I have a conflict between the two settings

	inst:WatchWorldState("phase", drain_sanity)

adn

	inst:WatchWorldState("phase",updatestats)
	updatestats(inst)

local function code:
 

local function updatestats(inst)

	if TheWorld.state.isfullmoon then
		
	        inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
	        inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
	        inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE
			inst.components.talker:Say("Moon~")
		
		
	elseif TheWorld.state.phase == "day" then
	
	     inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
	     inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
	     inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE
	
	
	elseif TheWorld.state.phase == "dusk" then
	
	     inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
	     inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
	     inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE
	
	
	elseif TheWorld.state.phase == "night" then
		
	     inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
	     inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
	     inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE
	

	end
	
end

local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * -TUNING.DAPPERNESS_MED

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

end
end

The error appears when the evening comes.

Edited by Tezumoto
Link to comment
Share on other sites

14 minutes ago, Tezumoto said:

The error appears when the evening comes.

That's because you have to merge them :). Get rid of the code I gave you & replace your "updatestats" fucntion with this code it should be both codes combined into 1

I think this should work

edit: just incase maybe can you tell me the error too?

local function updatestats(inst)

	if TheWorld.state.isfullmoon then
    if inst:HasTag("playerghost") then -- Don't do anything if you're dead, to prevent crashes.
    return
    end

            inst.components.sanity.night_drain_mult = 2
            inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0
		
	        inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
	        inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
	        inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE
			inst.components.talker:Say("Moon~")
		
		
	elseif TheWorld.state.phase == "day" then
    if inst:HasTag("playerghost") then -- Don't do anything if you're dead, to prevent crashes.
    return
    end
	
         inst.components.sanity.night_drain_mult = 2
         inst.component.sanity.dapperness = inst.component.sanity.dapperness * -TUNING.DAPPERNESS_MED

	     inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
	     inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
	     inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE
	
	
	elseif TheWorld.state.phase == "dusk" then
    if inst:HasTag("playerghost") then -- Don't do anything if you're dead, to prevent crashes.
    return
    end

         inst.components.sanity.night_drain_mult = 1.5
         inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0
	
	     inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
	     inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
	     inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE
	
	
	elseif TheWorld.state.phase == "night" then
    if inst:HasTag("playerghost") then -- Don't do anything if you're dead, to prevent crashes.
    return
    end
		
         inst.components.sanity.night_drain_mult = 2
         inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

	     inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
	     inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
	     inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE
	

	end
	
end

 

Edited by SuperDavid
Link to comment
Share on other sites

16 minutes ago, SuperDavid said:

That's because you have to merge them :). Get rid of the code I gave you & replace your "updatestats" fucntion with this code it should be both codes combined into 1

I think this should work

edit: just incase maybe can you tell me the error too?

 

And what to do with it?

 

30 minutes ago, Tezumoto said:

I have a conflict between the two settings


	inst:WatchWorldState("phase", drain_sanity)

and


	inst:WatchWorldState("phase",updatestats)
	updatestats(inst)

 

 

 

Link to comment
Share on other sites

Just now, Tezumoto said:

And what to do with it?

 

31 minutes ago, Tezumoto said:

I have a conflict between the two settings



	inst:WatchWorldState("phase", drain_sanity)

and



	inst:WatchWorldState("phase",updatestats)
	updatestats(inst)

Delete

inst:watchworldstate(;phase", drain_sanity"

& keep the 

inst:watchworldstate(;phase", updatestats"

 

I don't really know if you need "updatestats(inst)" so just keep that or delete it, test it.

Link to comment
Share on other sites

35 minutes ago, SuperDavid said:

Delete

inst:watchworldstate(;phase", drain_sanity"

& keep the 

inst:watchworldstate(;phase", updatestats"

 

I don't really know if you need "updatestats(inst)" so just keep that or delete it, test it.

It throws an error probably something wrong.

Link to comment
Share on other sites

15 minutes ago, SuperDavid said:

Can you post your mod on this site https://dropfile.to/ & then send me a link then I can personally see what's wrong? Or tell me exactly what the crash is saying or else I won't have any idea of how to help :)...

 

20161101030253_1.jpg

And this code I use

local MakePlayerCharacter = require "prefabs/player_common"

local assets = {Asset("SCRIPT", "scripts/prefabs/player_common.lua"),}

local prefabs = {}

local start_inv = {"bedroll_furry"}

local function onbecamehuman(inst)

	inst.components.locomotor:SetExternalSpeedMultiplier(inst, "reisen_speed_mod", 1)
	
end

local function onbecameghost(inst)

   inst.components.locomotor:RemoveExternalSpeedMultiplier(inst, "reisen_speed_mod")
   
end

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

local function drain_sanity(inst, phase)
if phase == "day" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * -TUNING.DAPPERNESS_MED

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end

inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = inst.component.sanity.dapperness * 0

end
end

local common_postinit = function(inst)

	inst.MiniMapEntity:SetIcon( "reisen.tex" )
	
end

local master_postinit = function(inst)

	inst.soundsname = "willow"
	
	inst.components.health:SetMaxHealth(200)
	inst.components.hunger:SetMax(150)
	inst.components.sanity:SetMax(150)
	
	inst.components.temperature.inherentinsulation = ( TUNING.INSULATION_PER_BEARD_BIT * 2.5 )
	
	inst.components.locomotor.walkspeed = ( TUNING.WILSON_WALK_SPEED * 0.9 )
	inst.components.locomotor.runspeed = ( TUNING.WILSON_RUN_SPEED * 0.9 )
	
	inst.components.combat.damagemultiplier = 1
	
	inst:ListenForEvent("onattackother", function(inst, data)
local criticalchance = math.random(1,4) -- 1 out of 4 should be like 25% chance

if criticalchance == 4 and inst.next_hit_critical == nil then -- The random 25% chance of getting a critical hit has occured, so make next hit a critical hit.
inst.next_hit_critical = true
inst.components.combat.damagemultiplier = 1.5 -- Boost damage for critical hit.
else
return
end

if inst.next_hit_critical == true then
inst.next_hit_critical = nil
ShakeAllCameras(CAMERASHAKE.VERTICAL,.5, .01, .05, inst, .01) -- Give a tiny camera shake for cooler effect?
inst.components.talker:Say("Э да, критический удар!") -- Have a critical hit quote, if u want?
inst:DoTaskInTime(0.05, function(inst) inst.components.combat.damagemultiplier = 1 end) -- Reset damage after scoring a critical hit.
end

end)
	
	inst.components.hunger.hungerrate = ( 1 * TUNING.WILSON_HUNGER_RATE )
	
	inst.components.eater:SetCanEatRaw()
	inst.components.eater.strongstomach = true
	
	inst.OnLoad = onload
    inst.OnNewSpawn = onload
	
	inst:WatchWorldState("phase", drain_sanity)
	
end

return MakePlayerCharacter("reisen", prefabs, assets, common_postinit, master_postinit, start_inv)

 

Edited by Tezumoto
Link to comment
Share on other sites

@Tezumoto

Replace all of your character's code in reisen.lua with this new code, it should work.

Spoiler

local MakePlayerCharacter = require "prefabs/player_common"

local assets = {Asset("SCRIPT", "scripts/prefabs/player_common.lua"),}

local prefabs = {}

local start_inv = {"bedroll_furry"}

local function onbecamehuman(inst)

	inst.components.locomotor:SetExternalSpeedMultiplier(inst, "reisen_speed_mod", 1)
	
end

local function onbecameghost(inst)

   inst.components.locomotor:RemoveExternalSpeedMultiplier(inst, "reisen_speed_mod")
   
end

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


local function update_all_stats(inst, phase)

if TheWorld.state.isfullmoon then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = 0
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE
inst.components.talker:Say("Moon~")

elseif phase == "day" then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = TUNING.DAPPERNESS_MED
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = 0
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = 0
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE
end
end


local common_postinit = function(inst)

	inst.MiniMapEntity:SetIcon( "reisen.tex" )
	
end

local master_postinit = function(inst)

	inst.soundsname = "willow"
	
	inst.components.health:SetMaxHealth(200)
	inst.components.hunger:SetMax(150)
	inst.components.sanity:SetMax(150)
	
	inst.components.temperature.inherentinsulation = ( TUNING.INSULATION_PER_BEARD_BIT * 2.5 )
	
	inst.components.locomotor.walkspeed = ( TUNING.WILSON_WALK_SPEED * 0.9 )
	inst.components.locomotor.runspeed = ( TUNING.WILSON_RUN_SPEED * 0.9 )
	
	inst.components.combat.damagemultiplier = 1
	
inst:ListenForEvent("onattackother", function(inst, data)
local criticalchance = math.random(1,4) -- 1 out of 4 should be like 25% chance

if criticalchance == 4 and inst.next_hit_critical == nil then -- The random 25% chance of getting a critical hit has occured, so make next hit a critical hit.
inst.next_hit_critical = true
inst.components.combat.damagemultiplier = 1.5 -- Boost damage for critical hit.
else
return
end

if inst.next_hit_critical == true then
inst.next_hit_critical = nil
ShakeAllCameras(CAMERASHAKE.VERTICAL,.5, .01, .05, inst, .01) -- Give a tiny camera shake for cooler effect?
inst.components.talker:Say("Э да, критический удар!") -- Have a critical hit quote, if u want?
inst:DoTaskInTime(0.05, function(inst) inst.components.combat.damagemultiplier = 1 end) -- Reset damage after scoring a critical hit.
end

end)
	
	inst.components.hunger.hungerrate = ( 1 * TUNING.WILSON_HUNGER_RATE )
	
	inst.components.eater:SetCanEatRaw()
	inst.components.eater.strongstomach = true
	
	inst.OnLoad = onload
    inst.OnNewSpawn = onload
	
	inst:WatchWorldState("phase", update_all_stats)
	
end

return MakePlayerCharacter("reisen", prefabs, assets, common_postinit, master_postinit, start_inv)

 

Link to comment
Share on other sites

7 minutes ago, SuperDavid said:

@Tezumoto

Replace all of your character's code in reisen.lua with this new code, it should work.

  Hide contents


local MakePlayerCharacter = require "prefabs/player_common"

local assets = {Asset("SCRIPT", "scripts/prefabs/player_common.lua"),}

local prefabs = {}

local start_inv = {"bedroll_furry"}

local function onbecamehuman(inst)

	inst.components.locomotor:SetExternalSpeedMultiplier(inst, "reisen_speed_mod", 1)
	
end

local function onbecameghost(inst)

   inst.components.locomotor:RemoveExternalSpeedMultiplier(inst, "reisen_speed_mod")
   
end

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


local function update_all_stats(inst, phase)

if TheWorld.state.isfullmoon then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = 0
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE
inst.components.talker:Say("Moon~")

elseif phase == "day" then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = TUNING.DAPPERNESS_MED
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE

elseif phase == "night" then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 2
inst.component.sanity.dapperness = 0
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 1)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 1)
inst.components.hunger.hungerrate = 1.1 * TUNING.WILSON_HUNGER_RATE

elseif phase == "dusk" then
if inst:HasTag("playerghost") then
return
end
inst.components.sanity.night_drain_mult = 1.5
inst.component.sanity.dapperness = 0
inst.components.locomotor.runspeed = (TUNING.WILSON_RUN_SPEED * 0.9)
inst.components.locomotor.walkspeed = (TUNING.WILSON_WALK_SPEED * 0.9)
inst.components.hunger.hungerrate = 1 * TUNING.WILSON_HUNGER_RATE
end
end


local common_postinit = function(inst)

	inst.MiniMapEntity:SetIcon( "reisen.tex" )
	
end

local master_postinit = function(inst)

	inst.soundsname = "willow"
	
	inst.components.health:SetMaxHealth(200)
	inst.components.hunger:SetMax(150)
	inst.components.sanity:SetMax(150)
	
	inst.components.temperature.inherentinsulation = ( TUNING.INSULATION_PER_BEARD_BIT * 2.5 )
	
	inst.components.locomotor.walkspeed = ( TUNING.WILSON_WALK_SPEED * 0.9 )
	inst.components.locomotor.runspeed = ( TUNING.WILSON_RUN_SPEED * 0.9 )
	
	inst.components.combat.damagemultiplier = 1
	
inst:ListenForEvent("onattackother", function(inst, data)
local criticalchance = math.random(1,4) -- 1 out of 4 should be like 25% chance

if criticalchance == 4 and inst.next_hit_critical == nil then -- The random 25% chance of getting a critical hit has occured, so make next hit a critical hit.
inst.next_hit_critical = true
inst.components.combat.damagemultiplier = 1.5 -- Boost damage for critical hit.
else
return
end

if inst.next_hit_critical == true then
inst.next_hit_critical = nil
ShakeAllCameras(CAMERASHAKE.VERTICAL,.5, .01, .05, inst, .01) -- Give a tiny camera shake for cooler effect?
inst.components.talker:Say("Э да, критический удар!") -- Have a critical hit quote, if u want?
inst:DoTaskInTime(0.05, function(inst) inst.components.combat.damagemultiplier = 1 end) -- Reset damage after scoring a critical hit.
end

end)
	
	inst.components.hunger.hungerrate = ( 1 * TUNING.WILSON_HUNGER_RATE )
	
	inst.components.eater:SetCanEatRaw()
	inst.components.eater.strongstomach = true
	
	inst.OnLoad = onload
    inst.OnNewSpawn = onload
	
	inst:WatchWorldState("phase", update_all_stats)
	
end

return MakePlayerCharacter("reisen", prefabs, assets, common_postinit, master_postinit, start_inv)

 

Don't work =(

20161101040156_1.jpg

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...