-    - 
        
  `~]~`  
  y  y    
    ԩ
שש ZOEμӹ
    ǩ
ީߩߩߩݩ ƷΪƷ




ҿţ 


   ţҿţţɽƷʾΪţ׵ͼ꣩ڿտĵϷҿţΪ㿱̽µʯʯͷӴ˳ΪԴҿţֻרעҿ󣬲㣬ŪˣҲˣ浵˳ٶߡҪҿţʱƷж䰴Ҽɡţ׿ڵһţʱã޸ˡͳСҲԻ9-11ƽ






 


FromƷ
BYZOE






XTTTTTTTTTTTT[
U     װļMOD    U
^TTTTTTTTTTTTa

ѹMODļֱӷϷĿ¼modsļڡ

MODļ磺Ұȭĳļ

ϷĿ¼ CDF:\Program Files\dont_starve\mods

װĸĸ̾ϷĿ¼



XTTTTTTTTTTTT[
UڣбԭU
^TTTTTTTTTTTTa



һһ.ҿţţҿţΪ㿱̽ʯ

    ü±ϷĿ¼\data\scripts\prefabs\armor_snurtleshell.luaļinst:AddComponent("inspectable")һвݣ

local function OnDeploy (inst, pt)
    local snail = SpawnPrefab("armorsnurtleshell")
    snail.Transform:SetPosition(pt.x, pt.y, pt.z)
    snail.AnimState:SetBank("slurtle")
    snail.AnimState:SetBuild("slurtle")
    snail.AnimState:PlayAnimation("idle", true)
    snail.Transform:SetFourFaced()
    local sound = snail.entity:AddSoundEmitter()
    local brain = require "brains/leifbrain"
    snail:SetBrain(brain)
    snail:AddComponent("locomotor")
    snail.components.locomotor.walkspeed = 7
    snail:SetStateGraph("SGslurtle")
    local minimap = snail.entity:AddMiniMapEntity()
    minimap:SetIcon( "slurtle_den.png" )
    snail.components.inventoryitem:ChangeImageName("armorsnurtleshell")
    snail:RemoveComponent("armor")
    snail:RemoveComponent("equippable")
    snail:RemoveComponent("useableitem")
    snail:RemoveComponent("deployable")
    snail:RemoveTag("shell")
    snail:RemoveComponent("inventoryitem")
    snail:AddComponent("combat")
    snail:AddComponent("health")
    snail.components.health:SetMaxHealth(1000)
    snail.components.health:SetInvincible(true)
    snail.components.health.nofadeout = true
    snail.task = snail:DoPeriodicTask(math.random(8,12), function(snail)
        local pt1 = snail:GetPosition()
        local rocks = {"rock1","rock2","rock_flintless"}
        local rock = rocks[math.random(#rocks)]
        local newrock = SpawnPrefab(rock)
        newrock.Transform:SetPosition(pt1.x, 0, pt1.z)
        newrock.Physics:SetActive(false)
        newrock:DoTaskInTime(3, function(newrock) newrock.Physics:SetActive(true) end )
        SpawnPrefab("splash_ocean").Transform:SetPosition(pt1.x, 0, pt1.z)
        snail.SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
        GetPlayer().components.playercontroller:ShakeCamera(snail, "FULL", 0.2, 0.02, .25, 40)
    end )
    snail:AddComponent("inventoryitem")
    snail.components.inventoryitem:SetOnPutInInventoryFn(function(bull)
        snail:RemoveTag("sports")
        snail.components.locomotor:Stop()
        snail:SetBrain(nil)
        if snail.task then snail.task:Cancel() snail.task = nil end
    end )
    snail.components.inventoryitem:SetOnDroppedFn(function(snail)
        snail:AddTag("sports")
        local brain = require "brains/leifbrain"
        snail:SetBrain(brain)
        snail:RestartBrain()
        snail.task = snail:DoPeriodicTask(math.random(8,12), function(snail)
            local pt1 = snail:GetPosition()
            local rocks = {"rock1","rock2","rock_flintless"}
            local rock = rocks[math.random(#rocks)]
            local newrock = SpawnPrefab(rock)
            newrock.Transform:SetPosition(pt1.x, 0, pt1.z)
            newrock.Physics:SetActive(false)
            newrock:DoTaskInTime(3, function(newrock) newrock.Physics:SetActive(true) end )
            SpawnPrefab("splash_ocean").Transform:SetPosition(pt1.x, 0, pt1.z)
            snail.SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
            GetPlayer().components.playercontroller:ShakeCamera(snail, "FULL", 0.2, 0.02, .25, 40)
        end )
    end )
    snail:AddTag("sports")
    snail:AddTag("companion")
    snail:AddTag("snails")
    inst:Remove()
end
    inst:AddComponent("deployable")
    inst.components.deployable.ondeploy = OnDeploy

local function onsave(inst, data)
    if inst:HasTag("snails") then
        data.snails = true
    end
    if inst:HasTag("sports") then
        data.sports = true
    end
end
local function onload(inst, data)
  if data and data.snails then
    inst.AnimState:SetBank("slurtle")
    inst.AnimState:SetBuild("slurtle")
    inst.AnimState:PlayAnimation("idle", true)
    inst.Transform:SetFourFaced()
    local sound = inst.entity:AddSoundEmitter()
    inst:AddComponent("locomotor")
    inst.components.locomotor.walkspeed = 7
    inst:SetStateGraph("SGslurtle")
    local minimap = inst.entity:AddMiniMapEntity()
    minimap:SetIcon( "slurtle_den.png" )
    inst.components.inventoryitem:ChangeImageName("armorsnurtleshell")
    inst:RemoveComponent("armor")
    inst:RemoveComponent("equippable")
    inst:RemoveComponent("useableitem")
    inst:RemoveComponent("deployable")
    inst:RemoveTag("shell")
    inst:RemoveComponent("inventoryitem")
    inst:AddComponent("combat")
    inst:AddComponent("health")
    inst.components.health:SetMaxHealth(1000)
    inst.components.health:SetInvincible(true)
    inst.components.health.nofadeout = true
    inst:AddComponent("inventoryitem")
    inst.components.inventoryitem:SetOnPutInInventoryFn(function(bull)
        inst:RemoveTag("sports")
        inst.components.locomotor:Stop()
        inst:SetBrain(nil)
        if inst.task then inst.task:Cancel() inst.task = nil end
    end )
    inst.components.inventoryitem:SetOnDroppedFn(function(inst)
        inst:AddTag("sports")
        local brain = require "brains/leifbrain"
        inst:SetBrain(brain)
        inst:RestartBrain()
        inst.task = inst:DoPeriodicTask(math.random(8,12), function(inst)
            local pt1 = inst:GetPosition()
            local rocks = {"rock1","rock2","rock_flintless"}
            local rock = rocks[math.random(#rocks)]
            local newrock = SpawnPrefab(rock)
            newrock.Transform:SetPosition(pt1.x, 0, pt1.z)
            newrock.Physics:SetActive(false)
            newrock:DoTaskInTime(3, function(newrock) newrock.Physics:SetActive(true) end )
            SpawnPrefab("splash_ocean").Transform:SetPosition(pt1.x, 0, pt1.z)
            inst.SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
            GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
        end )
    end )
    inst:AddTag("companion")
    inst:AddTag("snails")
  end
  if data and data.sports then
    local brain = require "brains/leifbrain"
    inst:SetBrain(brain)
    inst:RestartBrain()
    inst.task = inst:DoPeriodicTask(math.random(8,12), function(inst)
        local pt1 = inst:GetPosition()
        local rocks = {"rock1","rock2","rock_flintless"}
        local rock = rocks[math.random(#rocks)]
        local newrock = SpawnPrefab(rock)
        newrock.Transform:SetPosition(pt1.x, 0, pt1.z)
        newrock.Physics:SetActive(false)
        newrock:DoTaskInTime(3, function(newrock) newrock.Physics:SetActive(true) end )
        SpawnPrefab("splash_ocean").Transform:SetPosition(pt1.x, 0, pt1.z)
        inst.SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
        GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
    end )
    inst:AddTag("sports")
    local pt2 = GetPlayer():GetPosition()
    inst.Transform:SetPosition(pt2.x+1, 0, pt2.z+1)
  end
end
    inst.OnSave = onsave
    inst.OnLoad = onload

    