第357页:炸弹客
展开三零七.炸弹客(用红色护身符种炸弹客,购买遥控炸弹,放在地上按键盘Delete键引爆)
1.用记事本打开游戏目录\data\DLC0001\scripts\prefabs\player_common.lua文件,在inst:AddComponent("playeractionpicker")的下一行插入以下内容:
TheInput:AddKeyUpHandler(KEY_DELETE, function()
GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold")
inst:DoTaskInTime(0.1, function()
local pos = Vector3(inst.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 100)
for k,v in pairs(ents) do
if v:HasTag("bomballright") and v.components.inventoryitem and not v.components.inventoryitem:IsHeld() then
local pos1 = Vector3(v.Transform:GetWorldPosition())
local ents1 = TheSim:FindEntities(pos1.x,pos1.y,pos1.z, 15)
for k,i in pairs(ents1) do
if i.components.combat and i.components.health and not i.components.health:IsDead() and not i:HasTag("player") then
SpawnPrefab("ground_chunks_breaking").Transform:SetPosition(i.Transform:GetWorldPosition())
i.components.health:Kill()
end
if i.components.workable and i.components.workable.workleft > 0 and not i.components.inventoryitem then
SpawnPrefab("ground_chunks_breaking").Transform:SetPosition(i.Transform:GetWorldPosition())
i.components.workable:Destroy(v)
end
end
GetPlayer().SoundEmitter:PlaySound("dontstarve_DLC001/creatures/glommer/foot_ground")
SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
SpawnPrefab("explode_small").Transform:SetPosition(v.Transform:GetWorldPosition())
SpawnPrefab("groundpoundring_fx").Transform:SetPosition(v.Transform:GetWorldPosition())
GetClock():DoLightningLighting()
GetPlayer().components.playercontroller:ShakeCamera(v, "FULL", 0.7, 0.02, .5, 40)
v:Remove()
end
end
end )
end )
2.用记事本打开游戏目录\data\DLC0001\scripts\prefabs\amulet.lua文件,在inst.AnimState:PlayAnimation("redamulet")的下一行插入以下内容:
local function makebomber(inst)
local pt = inst:GetPosition()
local bomber = SpawnPrefab("amulet")
bomber.Transform:SetPosition(pt.x, pt.y, pt.z)
bomber.AnimState:SetBank("wilson")
bomber.AnimState:SetBuild("wx78")
bomber.AnimState:OverrideSymbol("swap_hat", "hat_catcoon", "swap_hat")
bomber.AnimState:OverrideSymbol("swap_body", "swap_krampus_sack", "backpack")
bomber.AnimState:OverrideSymbol("swap_body", "swap_krampus_sack", "swap_body")
bomber.AnimState:Show("HAT")
bomber.AnimState:Show("HAT_HAIR")
bomber.AnimState:Hide("HAIR_NOHAT")
bomber.AnimState:Hide("HAIR")
bomber.AnimState:Hide("ARM_carry")
bomber.AnimState:Show("ARM_normal")
bomber.Transform:SetFourFaced()
bomber.AnimState:PlayAnimation("idle")
bomber:RemoveComponent("equippable")
bomber:RemoveComponent("inventoryitem")
bomber:RemoveComponent("finiteuses")
bomber:RemoveComponent("deployable")
MakeLargeBurnable(bomber)
MakeLargePropagator(bomber)
bomber:AddComponent("trader")
bomber.components.trader:SetAcceptTest(function(bomber, item)
if GetPlayer().components.inventory:Has("goldnugget", 10) then
if item.prefab == "goldnugget" then
return true
end
end
return false
end )
bomber.components.trader.onaccept = function(bomber, giver, item)
GetPlayer().components.inventory:ConsumeByName("goldnugget", 9)
GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
bomber.AnimState:PlayAnimation("give")
local bomb = SpawnPrefab("amulet")
bomb.AnimState:SetBank("bee_mine_maxwell")
bomb.AnimState:SetBuild("bee_mine_maxwell")
bomb.AnimState:PlayAnimation("idle")
bomb.Transform:SetScale(0.8, 0.8, 0.8)
bomb.AnimState:SetMultColour(255/255,255/255,0/255,1)
bomb.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
bomb:AddComponent("named")
bomb.components.named:SetName("Bomb")
local minimap = bomb.entity:AddMiniMapEntity()
minimap:SetIcon( "beemine.png" )
bomb:RemoveComponent("equippable")
bomb:RemoveComponent("inventoryitem")
bomb:RemoveComponent("finiteuses")
bomb:RemoveComponent("deployable")
bomb:AddComponent("inventoryitem")
bomb.components.inventoryitem:ChangeImageName("beemine")
bomb.components.inventoryitem:SetOnDroppedFn(function()
bomb:AddTag("bomballright")
end )
bomb.components.inventoryitem:SetOnPickupFn(function()
bomb:RemoveTag("bomballright")
end )
bomb.components.inventoryitem:SetOnPutInInventoryFn(function()
bomb:RemoveTag("bomballright")
end )
bomb:AddTag("bomb")
GetPlayer().components.inventory:GiveItem(bomb)
end
bomber:AddTag("bomber")
for k = 1, 11 do
local result_offset = FindValidPositionByFan(1 * 2 * PI, 2, 11, function(offset)
local x,y,z = (pt + offset):Get()
local ents = TheSim:FindEntities(x,y,z , 1)
return not next(ents)
end)
if result_offset then
local bombbye = SpawnPrefab("amulet")
bombbye.Transform:SetPosition((pt + result_offset):Get())
bombbye.AnimState:SetBank("bee_mine_maxwell")
bombbye.AnimState:SetBuild("bee_mine_maxwell")
bombbye.AnimState:PlayAnimation("idle")
bombbye.Transform:SetScale(0.8, 0.8, 0.8)
bombbye.AnimState:SetMultColour(255/255,255/255,0/255,1)
bombbye.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
bombbye:RemoveComponent("equippable")
bombbye:RemoveComponent("inventoryitem")
bombbye:RemoveComponent("finiteuses")
bombbye:RemoveComponent("deployable")
MakeLargeBurnable(bombbye)
MakeLargePropagator(bombbye)
bombbye:AddTag("NOCLICK")
bombbye:AddTag("bombbye")
end
end
end
local function OnDeploy (inst, pt)
makebomber(inst)
inst:Remove()
end
inst:AddComponent("deployable")
inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
if inst:HasTag("bomber") then
data.bomber = true
end
if inst:HasTag("bombbye") then
data.bombbye = true
end
if inst:HasTag("bomb") then
data.bomb = true
end
if inst:HasTag("bomballright") then
data.bomballright = true
end
end
local function onload(inst, data)
if data and data.bomber then
makebomber(inst)
inst:Remove()
end
if data and data.bombbye then
inst:Remove()
end
if data and data.bomb then
inst.AnimState:SetBank("bee_mine_maxwell")
inst.AnimState:SetBuild("bee_mine_maxwell")
inst.AnimState:PlayAnimation("idle")
inst.Transform:SetScale(0.8, 0.8, 0.8)
inst.AnimState:SetMultColour(255/255,255/255,0/255,1)
inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
inst:AddComponent("named")
inst.components.named:SetName("Bomb")
local minimap = inst.entity:AddMiniMapEntity()
minimap:SetIcon( "beemine.png" )
inst:RemoveComponent("equippable")
inst:RemoveComponent("inventoryitem")
inst:RemoveComponent("finiteuses")
inst:RemoveComponent("deployable")
inst:AddComponent("inventoryitem")
inst.components.inventoryitem:ChangeImageName("beemine")
inst.components.inventoryitem:SetOnDroppedFn(function()
inst:AddTag("bomballright")
end )
inst.components.inventoryitem:SetOnPickupFn(function()
inst:RemoveTag("bomballright")
end )
inst.components.inventoryitem:SetOnPutInInventoryFn(function()
inst:RemoveTag("bomballright")
end )
inst:AddTag("bomb")
end
if data and data.bomballright then
inst:AddTag("bomballright")
end
end
inst.OnSave = onsave
inst.OnLoad = onload
即可用红色护身符种炸弹客,给炸弹客10个黄金(拿着黄金对炸弹客点鼠标左键),可购买遥控炸弹,将炸弹放在地上,按键盘Delete键可遥控引爆,能炸死除主角外的任何生物,炸毁建筑、树木等。遥控炸弹在小地图上显示为炸弹图标,引爆时不要让同伴靠近。不想要炸弹客了,烧掉即可(拿着火炬对其点鼠标右键)。红色护身符在魔法选项(画着红骷髅)下,用3个黄金、2个噩梦燃料、1个红宝石制造
更多相关内容请关注:饥荒专区
责任编辑:Shy夏夏