165 lines
5.9 KiB
Lua
165 lines
5.9 KiB
Lua
|
-- seg_time = 30
|
||
|
-- total_day_time = seg_time*16
|
||
|
-- PERISH_FRESH = 0.5,
|
||
|
-- PERISH_STALE = 0.2,
|
||
|
-- local perish_warp = 1--/200
|
||
|
-- PERISH_ONE_DAY = 1*total_day_time*perish_warp,
|
||
|
-- PERISH_TWO_DAY = 2*total_day_time*perish_warp,
|
||
|
-- PERISH_SUPERFAST = 3*total_day_time*perish_warp,
|
||
|
-- PERISH_FAST = 6*total_day_time*perish_warp,
|
||
|
-- PERISH_FASTISH = 8*total_day_time*perish_warp,
|
||
|
-- PERISH_MED = 10*total_day_time*perish_warp,
|
||
|
-- PERISH_SLOW = 15*total_day_time*perish_warp,
|
||
|
-- PERISH_PRESERVED = 20*total_day_time*perish_warp,
|
||
|
-- PERISH_SUPERSLOW = 40*total_day_time*perish_warp,
|
||
|
|
||
|
-- long spring (31), short summer (+10 = 41), long autumn (+30 = 71), short winter (+10 = 81)
|
||
|
local PERISH_YEAR = 81*GLOBAL.TUNING.TOTAL_DAY_TIME --*perish_warp
|
||
|
|
||
|
local honey_spoilage = GetModConfigData("honey_spoilage")
|
||
|
local meat_dried_spoilage = GetModConfigData("meat_dried_spoilage")
|
||
|
local smallmeat_dried_spoilage = GetModConfigData("smallmeat_dried_spoilage")
|
||
|
local monstermeat_dried_spoilage = GetModConfigData("monstermeat_dried_spoilage")
|
||
|
local kelp_dried_spoilage = GetModConfigData("kelp_dried_spoilage")
|
||
|
local seed_spoilage = GetModConfigData("seed_spoilage")
|
||
|
local crop_seed_adjustment = GetModConfigData("crop_seed_spoilage")
|
||
|
local birchnut_spoilage = GetModConfigData("birchnut_spoilage")
|
||
|
local cropseeds = {"carrot_seeds", "corn_seeds", "dragonfruit_seeds", "durian_seeds", "eggplant_seeds", "pomegranate_seeds", "pumpkin_seeds", "watermelon_seeds", "sweet_potato_seeds", "aloe_seeds", "asparagus_seeds", "radish_seeds", "tomato_seeds", "potato_seeds", "onion_seeds", "pepper_seeds", "garlic_seeds", "pineananas_seeds", }
|
||
|
local trailmix_spoilage = GetModConfigData("trailmix_spoilage")
|
||
|
local jammypreserves_spoilage = GetModConfigData("jammypreserves_spoilage")
|
||
|
local garlic_spoilage = GetModConfigData("garlic_spoilage")
|
||
|
local onion_spoilage = GetModConfigData("onion_spoilage")
|
||
|
local taffy_spoilage = GetModConfigData("taffy_spoilage")
|
||
|
|
||
|
|
||
|
function noSpoil(inst)
|
||
|
if inst.components.perishable then
|
||
|
inst:RemoveComponent("perishable")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function yearSpoil(inst)
|
||
|
if inst.components.perishable then
|
||
|
inst.components.perishable.perishtime = PERISH_YEAR*2 -- 1 year fresh, 1 year stale/spoiled
|
||
|
inst.components.perishable:SetPercent(1)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function halfYearSpoil(inst)
|
||
|
if inst.components.perishable then
|
||
|
inst.components.perishable.perishtime = PERISH_YEAR -- half a year fresh, half a year stale/spoiled
|
||
|
inst.components.perishable:SetPercent(1)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if honey_spoilage == 0 then AddPrefabPostInit("honey",noSpoil)
|
||
|
end
|
||
|
|
||
|
if meat_dried_spoilage == 0 then AddPrefabPostInit("meat_dried",yearSpoil)
|
||
|
elseif meat_dried_spoilage == 1 then AddPrefabPostInit("meat_dried",noSpoil)
|
||
|
end
|
||
|
|
||
|
if smallmeat_dried_spoilage == 0 then AddPrefabPostInit("smallmeat_dried",yearSpoil)
|
||
|
elseif smallmeat_dried_spoilage == 1 then AddPrefabPostInit("smallmeat_dried",noSpoil)
|
||
|
end
|
||
|
|
||
|
if monstermeat_dried_spoilage == 0 then AddPrefabPostInit("monstermeat_dried",yearSpoil)
|
||
|
elseif monstermeat_dried_spoilage == 1 then AddPrefabPostInit("monstermeat_dried",noSpoil)
|
||
|
end
|
||
|
|
||
|
if kelp_dried_spoilage == 0 then AddPrefabPostInit("kelp_dried",yearSpoil)
|
||
|
elseif kelp_dried_spoilage == 1 then AddPrefabPostInit("kelp_dried",noSpoil)
|
||
|
end
|
||
|
|
||
|
if seed_spoilage == 0 then AddPrefabPostInit("seeds",noSpoil)
|
||
|
end
|
||
|
|
||
|
for key, value in pairs(cropseeds) do
|
||
|
if crop_seed_spoilage == 0 then AddPrefabPostInit(value,noSpoil)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if birchnut_spoilage == 0 then AddPrefabPostInit("acorn",noSpoil)
|
||
|
end
|
||
|
|
||
|
if trailmix_spoilage == 0 then AddPrefabPostInit("trailmix",yearSpoil)
|
||
|
elseif trailmix_spoilage == 1 then AddPrefabPostInit("trailmix",noSpoil)
|
||
|
end
|
||
|
|
||
|
if jammypreserves_spoilage == 0 then AddPrefabPostInit("jammypreserves",yearSpoil)
|
||
|
elseif jammypreserves_spoilage == 1 then AddPrefabPostInit("jammypreserves",noSpoil)
|
||
|
end
|
||
|
|
||
|
if garlic_spoilage == 0 then AddPrefabPostInit("garlic",halfYearSpoil)
|
||
|
elseif garlic_spoilage == 1 then AddPrefabPostInit("garlic",noSpoil)
|
||
|
end
|
||
|
|
||
|
if onion_spoilage == 0 then AddPrefabPostInit("onion",halfYearSpoil)
|
||
|
elseif onion_spoilage == 1 then AddPrefabPostInit("onion",noSpoil)
|
||
|
end
|
||
|
|
||
|
if taffy_spoilage == 0 then AddPrefabPostInit("taffy",yearSpoil)
|
||
|
elseif taffy_spoilage == 1 then AddPrefabPostInit("taffy",noSpoil)
|
||
|
end
|
||
|
|
||
|
--------- BIRD SEED CHANGES ---------
|
||
|
local SpawnPrefab = GLOBAL.SpawnPrefab
|
||
|
local Prefab = GLOBAL.Prefab
|
||
|
local Prefabs = GLOBAL.Prefabs
|
||
|
local FRAMES = GLOBAL.FRAMES
|
||
|
local FOODTYPE = GLOBAL.FOODTYPE
|
||
|
|
||
|
local minseeds = GetModConfigData("min_bird_seeds")
|
||
|
local maxseeds = GetModConfigData("max_bird_seeds")
|
||
|
|
||
|
local function OnDigestMOD(inst, item)
|
||
|
if item.components.edible.foodtype == FOODTYPE.MEAT then
|
||
|
inst.components.lootdropper:SpawnLootPrefab("bird_egg")
|
||
|
else
|
||
|
local seed_name = string.lower(item.prefab .. "_seeds")
|
||
|
if Prefabs[seed_name] ~= nil then
|
||
|
local num_seeds = math.random(minseeds, maxseeds)
|
||
|
for k = 1, num_seeds do
|
||
|
inst.components.lootdropper:SpawnLootPrefab(seed_name)
|
||
|
end
|
||
|
else
|
||
|
inst.components.lootdropper:SpawnLootPrefab("seeds")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function OnGetItemFromPlayer(inst, giver, item)
|
||
|
|
||
|
if inst.components.sleeper and inst.components.sleeper:IsAsleep() then
|
||
|
inst.components.sleeper:WakeUp()
|
||
|
end
|
||
|
|
||
|
if item.components.edible ~= nil and
|
||
|
( item.components.edible.foodtype == FOODTYPE.MEAT or
|
||
|
item.prefab == "seeds" or
|
||
|
Prefabs[string.lower(item.prefab.."_seeds")] ~= nil
|
||
|
) then
|
||
|
inst.AnimState:PlayAnimation("peck")
|
||
|
inst.AnimState:PushAnimation("peck")
|
||
|
inst.AnimState:PushAnimation("peck")
|
||
|
inst.AnimState:PushAnimation("hop")
|
||
|
|
||
|
inst.AnimState:PushAnimation("idle_bird", true)
|
||
|
inst:DoTaskInTime(60 * FRAMES, OnDigestMOD, item)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function modded_birdcage(inst)
|
||
|
if inst and inst.components.trader then
|
||
|
inst.components.trader.onaccept = OnGetItemFromPlayer
|
||
|
end
|
||
|
end
|
||
|
|
||
|
AddPrefabPostInit("birdcage", modded_birdcage)
|
||
|
|
||
|
---------------- Damage Modifier --------------
|
||
|
local pc_dmg_taken_mod = GetModConfigData("pc_dmg_taken_mod");
|
||
|
if (pc_dmg_taken_mod > 1.0) then
|
||
|
pc_dmg_taken_mod = 1.0-pc_dmg_taken_mod
|
||
|
end
|
||
|
GLOBAL.TUNING.PLAYER_DAMAGE_TAKEN_MOD = pc_dmg_taken_mod
|