第298页:迷你花坛
展开二四八.迷你花坛(用燧石种花坛,给种子长出花朵,每晚招来萤火虫)
用记事本打开游戏目录\data\DLC0001\scripts\prefabs\flint.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local names = {"f1","f2","f3","f4","f5","f6","f7","f8","f9","f10"}
local function OnDeploy (inst, pt)
local flowerpot = SpawnPrefab("flint")
flowerpot.Transform:SetPosition(pt.x, pt.y, pt.z)
flowerpot.AnimState:SetBank("firepit")
flowerpot.AnimState:SetBuild("firepit")
flowerpot.AnimState:PlayAnimation("idle",false)
flowerpot.Transform:SetScale(0.5, 0.8, 0.5)
flowerpot:RemoveComponent("edible")
flowerpot:RemoveComponent("tradable")
flowerpot:RemoveComponent("stackable")
flowerpot:RemoveComponent("inventoryitem")
flowerpot:RemoveComponent("bait")
flowerpot:RemoveTag("molebait")
flowerpot:AddTag("flowerpot")
flowerpot:AddComponent("workable")
flowerpot.components.workable:SetWorkAction(ACTIONS.HAMMER)
flowerpot.components.workable:SetWorkLeft(3)
flowerpot.components.workable:SetOnFinishCallback(function(flowerpot)
SpawnPrefab("collapse_big").Transform:SetPosition(flowerpot.Transform:GetWorldPosition())
GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
local pos1 = Vector3(flowerpot.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos1.x,pos1.y,pos1.z, 0.5)
for k,v in pairs(ents) do
if v:HasTag("newflower") then
v:Remove()
end
end
flowerpot:Remove()
end )
flowerpot:ListenForEvent( "dusktime", function()
if flowerpot:HasTag("flowering") then
for k = 1,math.random(2,5) do
local pt1 = flowerpot:GetPosition()
local fireflies = SpawnPrefab("fireflies")
fireflies.Transform:SetPosition(pt1.x+(math.random(3)-math.random(3)), 0, pt1.z+(math.random(3)-math.random(3)))
end
end
end , GetWorld() )
flowerpot:ListenForEvent( "daytime", function()
local pos = Vector3(flowerpot.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 5)
for k,v in pairs(ents) do
if v.prefab == "fireflies" and not v.components.inventoryitem:IsHeld() then
v:Remove()
end
end
end , GetWorld() )
flowerpot:AddComponent("trader")
flowerpot.components.trader:SetAcceptTest(function(flowerpot, item)
if not flowerpot:HasTag("flowering") then
if item.prefab == "seeds" then
return true
end
end
return false
end )
flowerpot.components.trader.onaccept = function(flowerpot, giver, item)
local flower = SpawnPrefab("flint")
flower.AnimState:SetBank("flowers")
flower.AnimState:SetBuild("flowers")
flower.animname = names[math.random(#names)]
flower.AnimState:PlayAnimation(flower.animname)
flower.AnimState:SetRayTestOnBB(true)
flower.Transform:SetScale(1.5, 1.5, 1.5)
flower.Physics:SetActive(false)
local follower = flower.entity:AddFollower()
follower:FollowSymbol( flowerpot.GUID, "swap_object", 0, -50, 0 )
flower:RemoveComponent("edible")
flower:RemoveComponent("tradable")
flower:RemoveComponent("stackable")
flower:RemoveComponent("inventoryitem")
flower:RemoveComponent("bait")
flower:RemoveTag("molebait")
flower:AddComponent("sanityaura")
flower.components.sanityaura.aura = TUNING.SANITYAURA_SMALL
flower:AddComponent("pickable")
flower.components.pickable.picksound = "dontstarve/wilson/pickup_plants"
flower.components.pickable:SetUp("petals", 0.1)
flower.components.pickable.onpickedfn = function(flower)
flower:Remove()
flower = nil
flowerpot:RemoveTag("flowering")
end
flower:AddTag("newflower")
flower:AddTag("goodbye")
flowerpot:AddTag("flowering")
end
inst.components.stackable:Get():Remove()
end
inst:AddComponent("deployable")
inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
if inst:HasTag("goodbye") then
data.goodbye = true
end
if inst:HasTag("flowerpot") then
data.flowerpot = true
end
if inst:HasTag("flowering") then
data.flowering = true
end
end
local function onload(inst, data)
if data and data.goodbye then
inst:Remove()
end
if data and data.flowerpot then
inst.AnimState:SetBank("firepit")
inst.AnimState:SetBuild("firepit")
inst.AnimState:PlayAnimation("idle",false)
inst.Transform:SetScale(0.5, 0.8, 0.5)
inst:RemoveComponent("edible")
inst:RemoveComponent("tradable")
inst:RemoveComponent("stackable")
inst:RemoveComponent("inventoryitem")
inst:RemoveComponent("bait")
inst:RemoveTag("molebait")
inst:AddTag("flowerpot")
inst:AddComponent("workable")
inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
inst.components.workable:SetWorkLeft(3)
inst.components.workable:SetOnFinishCallback(function(inst)
SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition())
GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
local pos1 = Vector3(inst.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos1.x,pos1.y,pos1.z, 0.5)
for k,v in pairs(ents) do
if v:HasTag("newflower") then
v:Remove()
end
end
inst:Remove()
end )
inst:ListenForEvent( "dusktime", function()
if inst:HasTag("flowering") then
for k = 1,math.random(2,5) do
local pt1 = inst:GetPosition()
local fireflies = SpawnPrefab("fireflies")
fireflies.Transform:SetPosition(pt1.x+(math.random(3)-math.random(3)), 0, pt1.z+(math.random(3)-math.random(3)))
end
end
end , GetWorld() )
inst:ListenForEvent( "daytime", function()
local pos = Vector3(inst.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 5)
for k,v in pairs(ents) do
if v.prefab == "fireflies" and not v.components.inventoryitem:IsHeld() then
v:Remove()
end
end
end , GetWorld() )
inst:AddComponent("trader")
inst.components.trader:SetAcceptTest(function(inst, item)
if not inst:HasTag("flowering") then
if item.prefab == "seeds" then
return true
end
end
return false
end )
inst.components.trader.onaccept = function(inst, giver, item)
local flower = SpawnPrefab("flint")
flower.AnimState:SetBank("flowers")
flower.AnimState:SetBuild("flowers")
flower.animname = names[math.random(#names)]
flower.AnimState:PlayAnimation(flower.animname)
flower.AnimState:SetRayTestOnBB(true)
flower.Transform:SetScale(1.5, 1.5, 1.5)
flower.Physics:SetActive(false)
local follower = flower.entity:AddFollower()
follower:FollowSymbol( inst.GUID, "swap_object", 0, -50, 0 )
flower:RemoveComponent("edible")
flower:RemoveComponent("tradable")
flower:RemoveComponent("stackable")
flower:RemoveComponent("inventoryitem")
flower:RemoveComponent("bait")
flower:RemoveTag("molebait")
flower:AddComponent("sanityaura")
flower.components.sanityaura.aura = TUNING.SANITYAURA_SMALL
flower:AddComponent("pickable")
flower.components.pickable.picksound = "dontstarve/wilson/pickup_plants"
flower.components.pickable:SetUp("petals", 0.1)
flower.components.pickable.onpickedfn = function(flower)
flower:Remove()
flower = nil
inst:RemoveTag("flowering")
end
flower:AddTag("newflower")
flower:AddTag("goodbye")
inst:AddTag("flowering")
end
end
if data and data.flowering then
local flower = SpawnPrefab("flint")
flower.AnimState:SetBank("flowers")
flower.AnimState:SetBuild("flowers")
flower.animname = names[math.random(#names)]
flower.AnimState:PlayAnimation(flower.animname)
flower.AnimState:SetRayTestOnBB(true)
flower.Transform:SetScale(1.5, 1.5, 1.5)
flower.Physics:SetActive(false)
local follower = flower.entity:AddFollower()
follower:FollowSymbol( inst.GUID, "swap_object", 0, -50, 0 )
flower:RemoveComponent("edible")
flower:RemoveComponent("tradable")
flower:RemoveComponent("stackable")
flower:RemoveComponent("inventoryitem")
flower:RemoveComponent("bait")
flower:RemoveTag("molebait")
flower:AddComponent("sanityaura")
flower.components.sanityaura.aura = TUNING.SANITYAURA_SMALL
flower:AddComponent("pickable")
flower.components.pickable.picksound = "dontstarve/wilson/pickup_plants"
flower.components.pickable:SetUp("petals", 0.1)
flower.components.pickable.onpickedfn = function(flower)
flower:Remove()
flower = nil
inst:RemoveTag("flowering")
end
flower:AddTag("newflower")
flower:AddTag("goodbye")
inst:AddTag("flowering")
end
end
inst.OnSave = onsave
inst.OnLoad = onload
即可用燧石种迷你花坛,在花坛中放入1个种子(拿着种子对花坛点鼠标左键),可开一朵花,品种随机。鼠标左键点花朵,可摘花(获得花瓣)。当花坛中有花时,靠近可以补脑,并且每晚都会招来萤火虫(天亮时消失),尽情捕捉吧。如果同时修改了“网上宠宠店”,就可以将抓到的萤火虫在线卖掉换黄金。不想要迷你花坛时,用锤子砸掉即可
更多相关内容请关注:饥荒专区
责任编辑:Shy夏夏