DontStarve/Dominik/modmain.lua

165 lines
5.9 KiB
Lua
Raw Normal View History

2023-06-18 12:44:26 +02:00
-- 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