第254页:噩梦草
展开二五四.噩梦草(用鸟粪种噩梦草,可采噩梦燃料,有一定概率出现地下巨人)
用记事本打开游戏目录\data\DLC0001\scripts\prefabs\guano.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local items = { SWORD = "swap_ham_bat" }
local function EquipItem(inst, item)
if item then
inst.AnimState:OverrideSymbol("swap_object", item, item)
inst.AnimState:Show("ARM_carry")
inst.AnimState:Hide("ARM_normal")
end
end
inst.items = items
inst.equipfn = EquipItem
EquipItem(inst)
local function OnDeploy (inst, pt)
local darkgrass = SpawnPrefab("guano")
darkgrass.Transform:SetPosition(pt.x, pt.y, pt.z)
darkgrass.AnimState:SetBank("marsh_plant")
darkgrass.AnimState:SetBuild("marsh_plant")
darkgrass.AnimState:PlayAnimation("idle")
darkgrass.Transform:SetScale(1.8, 1.8, 1.8)
darkgrass.AnimState:SetMultColour(255/255,255/255,0/255,1)
darkgrass:RemoveComponent("stackable")
darkgrass:RemoveComponent("inventoryitem")
darkgrass:RemoveComponent("fertilizer")
darkgrass:RemoveComponent("smotherer")
darkgrass:RemoveComponent("fuel")
darkgrass:RemoveComponent("burnable")
darkgrass:RemoveComponent("propagator")
darkgrass:RemoveComponent("deployable")
MakeMediumBurnable(darkgrass)
MakeSmallPropagator(darkgrass)
if darkgrass.flies then darkgrass.flies:Remove() darkgrass.flies = nil end
darkgrass:AddComponent("workable")
darkgrass.components.workable:SetWorkAction(ACTIONS.DIG)
darkgrass.components.workable:SetWorkLeft(1)
darkgrass.components.workable:SetOnFinishCallback(function(darkgrass)
SpawnPrefab("nightmarefuel").Transform:SetPosition(darkgrass.Transform:GetWorldPosition())
darkgrass:Remove()
end )
darkgrass:AddComponent("pickable")
darkgrass.components.pickable:SetUp("nightmarefuel", 480)
darkgrass.components.pickable:SetOnRegenFn(function(darkgrass) darkgrass.AnimState:SetMultColour(255/255,255/255,0/255,1) end )
darkgrass.components.pickable:SetOnPickedFn(function(darkgrass)
darkgrass.AnimState:SetMultColour(255/255,255/255,255/255,1)
if math.random()<0.05 then
GetPlayer().components.playercontroller:ShakeCamera(darkgrass, "FULL", 1.5, 0.03, 2, 30)
GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
SpawnPrefab("collapse_big").Transform:SetPosition(darkgrass.Transform:GetWorldPosition())
local giant = SpawnPrefab("guano")
giant.Transform:SetPosition(darkgrass.Transform:GetWorldPosition())
giant.entity:AddSoundEmitter()
giant.AnimState:SetBank("wilson")
giant.AnimState:SetBuild("wolfgang")
giant.AnimState:PlayAnimation("idle")
giant.AnimState:OverrideSymbol("swap_object", "swap_ham_bat", "swap_ham_bat")
giant.AnimState:OverrideSymbol("swap_body", "armor_slurper", "swap_body")
giant.AnimState:Show("ARM_carry")
giant.AnimState:Hide("ARM_normal")
giant.Transform:SetFourFaced()
giant.Transform:SetScale(3.5,3.5,3.5)
local sound = giant.entity:AddSoundEmitter()
local shadow = giant.entity:AddDynamicShadow()
shadow:SetSize( 6, 3.5 )
MakeCharacterPhysics(giant, 200, 1)
local minimap = giant.entity:AddMiniMapEntity()
minimap:SetIcon("wolfgang.png")
local brain = require "brains/leifbrain"
giant:SetBrain(brain)
giant:AddComponent("locomotor")
giant.components.locomotor.walkspeed = 1
giant.components.locomotor.runspeed = 2
giant:SetStateGraph("SGshadowwaxwell")
giant:RemoveComponent("stackable")
giant:RemoveComponent("inventoryitem")
giant:RemoveComponent("fertilizer")
giant:RemoveComponent("smotherer")
giant:RemoveComponent("fuel")
giant:RemoveComponent("burnable")
giant:RemoveComponent("propagator")
giant:RemoveComponent("deployable")
if giant.flies then giant.flies:Remove() giant.flies = nil end
giant:AddComponent("follower")
giant:AddComponent("inventory")
giant:AddComponent("combat")
giant.components.combat.hiteffectsymbol = "torso"
giant.components.combat:SetDefaultDamage(70)
giant.components.combat:SetAttackPeriod(3)
giant.components.combat.onhitotherfn = function()
giant.SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
GetPlayer().components.playercontroller:ShakeCamera(giant, "FULL", 0.5, 0.05, 2, 40)
end
giant.components.combat:SetAreaDamage(5, 0.8)
giant.components.combat:SetRetargetFunction(3, function(giant)
if not giant.components.health:IsDead() then
return FindEntity(giant, 20, function(guy)
return giant.components.combat:CanTarget(guy) and not guy:HasTag("giant")
end )
end
end )
giant:ListenForEvent("attacked", function(giant, data)
giant.components.combat:SetTarget(data.attacker)
end )
giant.Physics:SetCollisionCallback(function(giant, other)
if other and other.components.workable and other.components.workable.workleft > 0 then
other.components.workable:Destroy(giant)
end
end )
giant:AddComponent("health")
giant.components.health:SetMaxHealth(8000)
giant.components.health.nofadeout = true
giant:AddComponent("sanityaura")
giant.components.sanityaura.aura = -TUNING.SANITYAURA_LARGE
giant:ListenForEvent("death", function()
local pt1 = giant:GetPosition()
for k = 1,math.random(20,35) do
local gold = SpawnPrefab("goldnugget")
gold.Transform:SetPosition(pt1.x+(math.random(3)-math.random(3)), 0, pt1.z+(math.random(3)-math.random(3)))
end
local rewards = {"walrus_tusk","trunk_summer","trunk_winter","deerclops_eyeball","minotaurhorn"}
local reward = rewards[math.random(#rewards)]
SpawnPrefab(reward).Transform:SetPosition(pt1.x, 0, pt1.z)
end )
giant:DoTaskInTime(480, function(giant)
giant:Remove()
end )
giant:AddTag("monster")
giant:AddTag("giant")
end
end )
darkgrass:AddTag("darkgrass")
inst.components.stackable:Get():Remove()
end
inst:AddComponent("deployable")
inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
if inst:HasTag("darkgrass") then
data.darkgrass = true
end
if inst:HasTag("giant") then
data.giant = true
end
end
local function onload(inst, data)
if data and data.darkgrass then
inst.AnimState:SetBank("marsh_plant")
inst.AnimState:SetBuild("marsh_plant")
inst.AnimState:PlayAnimation("idle")
inst.Transform:SetScale(1.8, 1.8, 1.8)
inst.AnimState:SetMultColour(255/255,255/255,0/255,1)
inst:RemoveComponent("stackable")
inst:RemoveComponent("inventoryitem")
inst:RemoveComponent("fertilizer")
inst:RemoveComponent("smotherer")
inst:RemoveComponent("fuel")
inst:RemoveComponent("burnable")
inst:RemoveComponent("propagator")
inst:RemoveComponent("deployable")
MakeMediumBurnable(inst)
MakeSmallPropagator(inst)
if inst.flies then inst.flies:Remove() inst.flies = nil end
inst:AddComponent("workable")
inst.components.workable:SetWorkAction(ACTIONS.DIG)
inst.components.workable:SetWorkLeft(1)
inst.components.workable:SetOnFinishCallback(function(inst)
SpawnPrefab("nightmarefuel").Transform:SetPosition(inst.Transform:GetWorldPosition())
inst:Remove()
end )
inst:AddComponent("pickable")
inst.components.pickable:SetUp("nightmarefuel", 480)
inst.components.pickable:SetOnRegenFn(function(inst) inst.AnimState:SetMultColour(255/255,255/255,0/255,1) end )
inst.components.pickable:SetOnPickedFn(function(inst)
inst.AnimState:SetMultColour(255/255,255/255,255/255,1)
if math.random()<0.05 then
GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 1.5, 0.03, 2, 30)
GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition())
local giant = SpawnPrefab("guano")
giant.Transform:SetPosition(inst.Transform:GetWorldPosition())
giant.entity:AddSoundEmitter()
giant.AnimState:SetBank("wilson")
giant.AnimState:SetBuild("wolfgang")
giant.AnimState:PlayAnimation("idle")
giant.AnimState:OverrideSymbol("swap_object", "swap_ham_bat", "swap_ham_bat")
giant.AnimState:OverrideSymbol("swap_body", "armor_slurper", "swap_body")
giant.AnimState:Show("ARM_carry")
giant.AnimState:Hide("ARM_normal")
giant.Transform:SetFourFaced()
giant.Transform:SetScale(3.5,3.5,3.5)
local sound = giant.entity:AddSoundEmitter()
local shadow = giant.entity:AddDynamicShadow()
shadow:SetSize( 6, 3.5 )
MakeCharacterPhysics(giant, 200, 1)
local minimap = giant.entity:AddMiniMapEntity()
minimap:SetIcon("wolfgang.png")
local brain = require "brains/leifbrain"
giant:SetBrain(brain)
giant:AddComponent("locomotor")
giant.components.locomotor.walkspeed = 1
giant.components.locomotor.runspeed = 2
giant:SetStateGraph("SGshadowwaxwell")
giant:RemoveComponent("stackable")
giant:RemoveComponent("inventoryitem")
giant:RemoveComponent("fertilizer")
giant:RemoveComponent("smotherer")
giant:RemoveComponent("fuel")
giant:RemoveComponent("burnable")
giant:RemoveComponent("propagator")
giant:RemoveComponent("deployable")
if giant.flies then giant.flies:Remove() giant.flies = nil end
giant:AddComponent("follower")
giant:AddComponent("inventory")
giant:AddComponent("combat")
giant.components.combat.hiteffectsymbol = "torso"
giant.components.combat:SetDefaultDamage(70)
giant.components.combat:SetAttackPeriod(3)
giant.components.combat.onhitotherfn = function()
giant.SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
GetPlayer().components.playercontroller:ShakeCamera(giant, "FULL", 0.5, 0.05, 2, 40)
end
giant.components.combat:SetAreaDamage(5, 0.8)
giant.components.combat:SetRetargetFunction(3, function(giant)
if not giant.components.health:IsDead() then
return FindEntity(giant, 20, function(guy)
return giant.components.combat:CanTarget(guy) and not guy:HasTag("giant")
end )
end
end )
giant:ListenForEvent("attacked", function(giant, data)
giant.components.combat:SetTarget(data.attacker)
end )
giant.Physics:SetCollisionCallback(function(giant, other)
if other and other.components.workable and other.components.workable.workleft > 0 then
other.components.workable:Destroy(giant)
end
end )
giant:AddComponent("health")
giant.components.health:SetMaxHealth(8000)
giant.components.health.nofadeout = true
giant:AddComponent("sanityaura")
giant.components.sanityaura.aura = -TUNING.SANITYAURA_LARGE
giant:ListenForEvent("death", function()
local pt1 = giant:GetPosition()
for k = 1,math.random(20,35) do
local gold = SpawnPrefab("goldnugget")
gold.Transform:SetPosition(pt1.x+(math.random(3)-math.random(3)), 0, pt1.z+(math.random(3)-math.random(3)))
end
local rewards = {"walrus_tusk","trunk_summer","trunk_winter","deerclops_eyeball","minotaurhorn"}
local reward = rewards[math.random(#rewards)]
SpawnPrefab(reward).Transform:SetPosition(pt1.x, 0, pt1.z)
end )
giant:DoTaskInTime(480, function(giant)
giant:Remove()
end )
giant:AddTag("monster")
giant:AddTag("giant")
end
end )
inst:AddTag("darkgrass")
end
if data and data.giant then
inst.entity:AddSoundEmitter()
inst.AnimState:SetBank("wilson")
inst.AnimState:SetBuild("wolfgang")
inst.AnimState:PlayAnimation("idle")
inst.AnimState:OverrideSymbol("swap_object", "swap_ham_bat", "swap_ham_bat")
inst.AnimState:OverrideSymbol("swap_body", "armor_slurper", "swap_body")
inst.AnimState:Show("ARM_carry")
inst.AnimState:Hide("ARM_normal")
inst.Transform:SetFourFaced()
inst.Transform:SetScale(3.5,3.5,3.5)
local sound = inst.entity:AddSoundEmitter()
local shadow = inst.entity:AddDynamicShadow()
shadow:SetSize( 6, 3.5 )
MakeCharacterPhysics(inst, 200, 1)
local minimap = inst.entity:AddMiniMapEntity()
minimap:SetIcon("wolfgang.png")
local brain = require "brains/leifbrain"
inst:SetBrain(brain)
inst:AddComponent("locomotor")
inst.components.locomotor.walkspeed = 1
inst.components.locomotor.runspeed = 2
inst:SetStateGraph("SGshadowwaxwell")
inst:RemoveComponent("stackable")
inst:RemoveComponent("inventoryitem")
inst:RemoveComponent("fertilizer")
inst:RemoveComponent("smotherer")
inst:RemoveComponent("fuel")
inst:RemoveComponent("burnable")
inst:RemoveComponent("propagator")
inst:RemoveComponent("deployable")
if inst.flies then inst.flies:Remove() inst.flies = nil end
inst:AddComponent("follower")
inst:AddComponent("inventory")
inst:AddComponent("combat")
inst.components.combat.hiteffectsymbol = "torso"
inst.components.combat:SetDefaultDamage(70)
inst.components.combat:SetAttackPeriod(3)
inst.components.combat.onhitotherfn = function()
inst.SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.5, 0.05, 2, 40)
end
inst.components.combat:SetAreaDamage(5, 0.8)
inst.components.combat:SetRetargetFunction(3, function(inst)
if not inst.components.health:IsDead() then
return FindEntity(inst, 20, function(guy)
return inst.components.combat:CanTarget(guy) and not guy:HasTag("giant")
end )
end
end )
inst:ListenForEvent("attacked", function(inst, data)
inst.components.combat:SetTarget(data.attacker)
end )
inst.Physics:SetCollisionCallback(function(inst, other)
if other and other.components.workable and other.components.workable.workleft > 0 then
other.components.workable:Destroy(inst)
end
end )
inst:AddComponent("health")
inst.components.health:SetMaxHealth(8000)
inst.components.health.nofadeout = true
inst:AddComponent("sanityaura")
inst.components.sanityaura.aura = -TUNING.SANITYAURA_LARGE
inst:ListenForEvent("death", function()
local pt1 = inst:GetPosition()
for k = 1,math.random(20,35) do
local gold = SpawnPrefab("goldnugget")
gold.Transform:SetPosition(pt1.x+(math.random(3)-math.random(3)), 0, pt1.z+(math.random(3)-math.random(3)))
end
local rewards = {"walrus_tusk","trunk_summer","trunk_winter","deerclops_eyeball","minotaurhorn"}
local reward = rewards[math.random(#rewards)]
SpawnPrefab(reward).Transform:SetPosition(pt1.x, 0, pt1.z)
end )
inst:DoTaskInTime(480, function(inst)
inst:Remove()
end )
inst:AddTag("monster")
inst:AddTag("giant")
end
end
inst.OnSave = onsave
inst.OnLoad = onload
即可用鸟粪(白色便便)种噩梦草(请远离基地种植),可采摘噩梦燃料,每天都能采一次。采摘时有一定概率出现地下巨人,将攻击你,消灭巨人可获得黄金、巨鹿眼球、远古守护者角、海象牙等宝物。巨人的血量及攻击力都很强,如果打不过,就先逃跑避避风头,一天后巨人将回到地下。巨人在小地图上显示为大力士的图标,绕着点走吧
更多相关内容请关注:饥荒专区
责任编辑:Shy夏夏