local assets =
{
Asset("ANIM", "anim/mushbrella.zip"),
Asset("ANIM", "anim/swap_mushbrella.zip"),
}
local function UpdateSound(inst)
local soundShouldPlay = GetSeasonManager():IsRaining() and inst.components.equippable:IsEquipped()
if soundShouldPlay ~= inst.SoundEmitter:PlayingSound("umbrellarainsound") then
if soundShouldPlay then
inst.SoundEmitter:PlaySound("dontstarve/rain/rain_on_umbrella", "umbrellarainsound")
else
inst.SoundEmitter:KillSound("umbrellarainsound")
end
end
end
local function onfinished(inst)
inst:Remove()
end
local function onequip(inst, owner)
owner.AnimState:OverrideSymbol("swap_object", "swap_mushbrella", "swap_umbrella")
owner.AnimState:Show("ARM_carry")
owner.AnimState:Hide("ARM_normal")
UpdateSound(inst)
owner.DynamicShadow:SetSize(2.2, 1.4)
inst.components.fueled:StartConsuming()
end
local function onunequip(inst, owner)
owner.AnimState:Hide("ARM_carry")
owner.AnimState:Show("ARM_normal")
UpdateSound(inst)
owner.DynamicShadow:SetSize(1.3, 0.6)
inst.components.fueled:StopConsuming()
end
local function onperish(inst)
if inst.components.inventoryitem and inst.components.inventoryitem:IsHeld() then
local owner = inst.components.inventoryitem.owner
inst:Remove()
if owner then
owner:PushEvent("umbrellaranout")
end
else
inst:Remove()
end
end
local function fn(Sim)
local inst = CreateEntity()
local trans = inst.entity:AddTransform()
local anim = inst.entity:AddAnimState()
inst.entity:AddSoundEmitter()
MakeInventoryPhysics(inst)
anim:SetBank("umbrella")
anim:SetBuild("mushbrella")
anim:PlayAnimation("idle")
if additionalequipmentDLC0001 == "enabled" then
inst:AddTag("nopunch")
inst:AddTag("umbrella")
end
if additionalequipmentDLC0001 == "enabled" then
inst:AddComponent("waterproofer")
inst.components.waterproofer:SetEffectiveness(TUNING.WATERPROOFNESS_ABSOLUTE)
else
inst:AddComponent("dapperness")
inst.components.dapperness.mitigates_rain = true
end
inst:AddComponent("inspectable")
inst:AddComponent("inventoryitem")
inst.components.inventoryitem.atlasname = "images/inventoryimages/mushbrella.xml"
inst:AddComponent("equippable")
inst.components.equippable.dapperness = TUNING.DAPPERNESS_SMALL
inst.components.equippable:SetOnEquip( onequip )
inst.components.equippable:SetOnUnequip( onunequip )
if additionalequipmentDLC0001 == "enabled" then
inst:AddComponent("insulator")
inst.components.insulator:SetInsulation(TUNING.INSULATION_MED)
inst.components.insulator:SetSummer()
end
inst:ListenForEvent("rainstop", function() UpdateSound(inst) end, GetWorld())
inst:ListenForEvent("rainstart", function() UpdateSound(inst) end, GetWorld())
inst:AddComponent("fueled")
inst.components.fueled.fueltype = "USAGE"
inst.components.fueled:InitializeFuelLevel(TUNING.UMBRELLA_PERISHTIME*1.5)
inst.components.fueled:SetDepletedFn(onperish)
inst:AddTag("no_sewing")
return inst
end
STRINGS.NAMES.MUSHBRELLA = "蘑菇伞"
STRINGS.RECIPE_DESC.MUSHBRELLA = "超大蘑菇啊"
STRINGS.CHARACTERS.GENERIC.DESCRIBE.MUSHBRELLA = "It feels like it is growing on my hand."
STRINGS.CHARACTERS.WILLOW.DESCRIBE.MUSHBRELLA = "Gross. Now I smell like a mushroom!"
STRINGS.CHARACTERS.WOLFGANG.DESCRIBE.MUSHBRELLA = "Mushtree now shelters me."
STRINGS.CHARACTERS.WENDY.DESCRIBE.MUSHBRELLA = "I feel like a gnome while under it."
STRINGS.CHARACTERS.WX78.DESCRIBE.MUSHBRELLA = "DULL YELLOW"
STRINGS.CHARACTERS.WICKERBOTTOM.DESCRIBE.MUSHBRELLA = "It provides excellent protection from the elements."
STRINGS.CHARACTERS.WOODIE.DESCRIBE.MUSHBRELLA = "That ain't right."
STRINGS.CHARACTERS.WAXWELL.DESCRIBE.MUSHBRELLA = "Ugh, it smells of must and disgust."
if IsDLCEnabled(REIGN_OF_GIANTS) then
STRINGS.CHARACTERS.WATHGRITHR.DESCRIBE.MUSHBRELLA = "The magic has been löst."
STRINGS.CHARACTERS.WEBBER.DESCRIBE.MUSHBRELLA = "Slightly bigger than a normal mushroom."
end
return Prefab( "common/inventory/mushbrella", fn, assets)
{
Asset("ANIM", "anim/mushbrella.zip"),
Asset("ANIM", "anim/swap_mushbrella.zip"),
}
local function UpdateSound(inst)
local soundShouldPlay = GetSeasonManager():IsRaining() and inst.components.equippable:IsEquipped()
if soundShouldPlay ~= inst.SoundEmitter:PlayingSound("umbrellarainsound") then
if soundShouldPlay then
inst.SoundEmitter:PlaySound("dontstarve/rain/rain_on_umbrella", "umbrellarainsound")
else
inst.SoundEmitter:KillSound("umbrellarainsound")
end
end
end
local function onfinished(inst)
inst:Remove()
end
local function onequip(inst, owner)
owner.AnimState:OverrideSymbol("swap_object", "swap_mushbrella", "swap_umbrella")
owner.AnimState:Show("ARM_carry")
owner.AnimState:Hide("ARM_normal")
UpdateSound(inst)
owner.DynamicShadow:SetSize(2.2, 1.4)
inst.components.fueled:StartConsuming()
end
local function onunequip(inst, owner)
owner.AnimState:Hide("ARM_carry")
owner.AnimState:Show("ARM_normal")
UpdateSound(inst)
owner.DynamicShadow:SetSize(1.3, 0.6)
inst.components.fueled:StopConsuming()
end
local function onperish(inst)
if inst.components.inventoryitem and inst.components.inventoryitem:IsHeld() then
local owner = inst.components.inventoryitem.owner
inst:Remove()
if owner then
owner:PushEvent("umbrellaranout")
end
else
inst:Remove()
end
end
local function fn(Sim)
local inst = CreateEntity()
local trans = inst.entity:AddTransform()
local anim = inst.entity:AddAnimState()
inst.entity:AddSoundEmitter()
MakeInventoryPhysics(inst)
anim:SetBank("umbrella")
anim:SetBuild("mushbrella")
anim:PlayAnimation("idle")
if additionalequipmentDLC0001 == "enabled" then
inst:AddTag("nopunch")
inst:AddTag("umbrella")
end
if additionalequipmentDLC0001 == "enabled" then
inst:AddComponent("waterproofer")
inst.components.waterproofer:SetEffectiveness(TUNING.WATERPROOFNESS_ABSOLUTE)
else
inst:AddComponent("dapperness")
inst.components.dapperness.mitigates_rain = true
end
inst:AddComponent("inspectable")
inst:AddComponent("inventoryitem")
inst.components.inventoryitem.atlasname = "images/inventoryimages/mushbrella.xml"
inst:AddComponent("equippable")
inst.components.equippable.dapperness = TUNING.DAPPERNESS_SMALL
inst.components.equippable:SetOnEquip( onequip )
inst.components.equippable:SetOnUnequip( onunequip )
if additionalequipmentDLC0001 == "enabled" then
inst:AddComponent("insulator")
inst.components.insulator:SetInsulation(TUNING.INSULATION_MED)
inst.components.insulator:SetSummer()
end
inst:ListenForEvent("rainstop", function() UpdateSound(inst) end, GetWorld())
inst:ListenForEvent("rainstart", function() UpdateSound(inst) end, GetWorld())
inst:AddComponent("fueled")
inst.components.fueled.fueltype = "USAGE"
inst.components.fueled:InitializeFuelLevel(TUNING.UMBRELLA_PERISHTIME*1.5)
inst.components.fueled:SetDepletedFn(onperish)
inst:AddTag("no_sewing")
return inst
end
STRINGS.NAMES.MUSHBRELLA = "蘑菇伞"
STRINGS.RECIPE_DESC.MUSHBRELLA = "超大蘑菇啊"
STRINGS.CHARACTERS.GENERIC.DESCRIBE.MUSHBRELLA = "It feels like it is growing on my hand."
STRINGS.CHARACTERS.WILLOW.DESCRIBE.MUSHBRELLA = "Gross. Now I smell like a mushroom!"
STRINGS.CHARACTERS.WOLFGANG.DESCRIBE.MUSHBRELLA = "Mushtree now shelters me."
STRINGS.CHARACTERS.WENDY.DESCRIBE.MUSHBRELLA = "I feel like a gnome while under it."
STRINGS.CHARACTERS.WX78.DESCRIBE.MUSHBRELLA = "DULL YELLOW"
STRINGS.CHARACTERS.WICKERBOTTOM.DESCRIBE.MUSHBRELLA = "It provides excellent protection from the elements."
STRINGS.CHARACTERS.WOODIE.DESCRIBE.MUSHBRELLA = "That ain't right."
STRINGS.CHARACTERS.WAXWELL.DESCRIBE.MUSHBRELLA = "Ugh, it smells of must and disgust."
if IsDLCEnabled(REIGN_OF_GIANTS) then
STRINGS.CHARACTERS.WATHGRITHR.DESCRIBE.MUSHBRELLA = "The magic has been löst."
STRINGS.CHARACTERS.WEBBER.DESCRIBE.MUSHBRELLA = "Slightly bigger than a normal mushroom."
end
return Prefab( "common/inventory/mushbrella", fn, assets)