代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。

原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html



二.经营动物园(用黄油种动物园,买卖、繁殖小动物,赚门票钱)

	用MT管理器打开游戏目录/assets/scripts/prefabs/butter.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:

local slotpos = { Vector3(0,-100,0)}
local function itemtest(inst, item, slot)
	if item.prefab == "carrot" then
	   return true
	end
	return false
end
local widgetbuttoninfo = {
	text = "Sell",
	position = Vector3(0, -30, 0),
	fn = function(inst)
		local target = FindEntity(inst, 9, function(guy) 
			return guy:HasTag("zoobaby")
		end )
		if target then
		   for k = 1,20 do
			   local pt5 = target:GetPosition()
			   SpawnPrefab("goldnugget").Transform:SetPosition(pt5.x, 0, pt5.z)
			   GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
			   target:Remove()
		   end
		end
end }
local function OnDeploy (inst, pt)
	local brand = SpawnPrefab("butter")
	brand.Transform:SetPosition(pt.x, pt.y, pt.z)
	brand.AnimState:SetBank("sign_home")
	brand.AnimState:SetBuild("sign_home")
	brand.AnimState:PlayAnimation("idle")
	brand.Transform:SetScale(0.8, 0.8, 0.8)
	brand.AnimState:SetMultColour(0/255,255/255,0/255,1)
	brand:RemoveComponent("stackable")
	brand:RemoveComponent("inventoryitem")
	brand:RemoveComponent("edible")
	brand:RemoveComponent("perishable")
	brand:RemoveComponent("deployable")
	brand:RemoveComponent("container")
	brand:AddTag("brand")
	local slotpos1 = { Vector3(0,-75,0)}
	brand:AddComponent("container")
	brand.components.container:SetNumSlots(#slotpos1)
	brand.components.container.widgetslotpos = slotpos1
	brand.components.container.widgetpos = Vector3(0,180,0)
	brand.components.container.side_align_tip = 160
	brand.components.container.acceptsstacks = false
	brand.components.container.itemtestfn = function(brand, item, slot)
		if item.prefab == "charcoal" or item.prefab == "trunk_summer" or item.prefab == "trunk_winter" or item.prefab == "walrus_tusk" or item.prefab == "cave_banana" then
		   return true
		end
		return false
	end
	brand.components.container.widgetbuttoninfo = {
		text = "Buy",
		position = Vector3(0, -145, 0),
		fn = function(brand)
			if GetPlayer().components.inventory:Has("goldnugget", 30) then
			   if brand.components.container:Has("charcoal", 1) then
				  brand.components.container:ConsumeByName("charcoal", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = brand:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("krampus")
				  zoobaby.AnimState:SetBuild("krampus_build")
				  zoobaby.AnimState:PlayAnimation("idle", true)
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.AnimState:Hide("SACK")
				  zoobaby.AnimState:Show("ARM")
				  zoobaby.Transform:SetScale(0.7,0.7,0.7)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGkrampus")
				  zoobaby:AddTag("zoobaby1")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if brand.components.container:Has("trunk_summer", 1) then
				  brand.components.container:ConsumeByName("trunk_summer", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = brand:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("koalefant")
				  zoobaby.AnimState:SetBuild("koalefant_summer_build")
				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGkoalefant")
				  zoobaby:AddTag("zoobaby2")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if brand.components.container:Has("trunk_winter", 1) then
				  brand.components.container:ConsumeByName("trunk_winter", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = brand:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("koalefant")
				  zoobaby.AnimState:SetBuild("koalefant_winter_build")
				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGkoalefant")
				  zoobaby:AddTag("zoobaby3")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if brand.components.container:Has("walrus_tusk", 1) then
				  brand.components.container:ConsumeByName("walrus_tusk", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = brand:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("walrus")
				  zoobaby.AnimState:SetBuild("walrus_baby_build")
				  zoobaby.AnimState:PlayAnimation("idle_happy")
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.Transform:SetScale(0.8,0.8,0.8)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGwalrus")
				  zoobaby:AddTag("zoobaby4")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if brand.components.container:Has("cave_banana", 1) then
				  brand.components.container:ConsumeByName("cave_banana", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = brand:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("kiki")
				  zoobaby.AnimState:SetBuild("kiki_basic")
				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
			  zoobaby.entity:AddSoundEmitter()
			  zoobaby.soundtype = ""
				  zoobaby.Transform:SetScale(1.2,1.2,1.2)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGmonkey")
				  zoobaby:AddTag("zoobaby5")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			end
	end }
	local zooroom = SpawnPrefab("butter")
	zooroom.Transform:SetPosition(pt.x-7, 0, pt.z-7)
	zooroom.AnimState:SetBank("rabbithouse")
	zooroom.AnimState:SetBuild("rabbit_house")
	zooroom.AnimState:PlayAnimation("idle", true)
	zooroom.Transform:SetScale(0.4, 0.4, 0.4)
	zooroom:RemoveComponent("stackable")
	zooroom:RemoveComponent("inventoryitem")
	zooroom:RemoveComponent("edible")
	zooroom:RemoveComponent("perishable")
	zooroom:RemoveComponent("deployable")
	zooroom.components.container.canbeopened = true
	zooroom.entity:AddLight()
	zooroom.Light:SetFalloff(1)
	zooroom.Light:SetIntensity(.8)
	zooroom.Light:SetRadius(15)
	zooroom.Light:SetColour(180/255, 195/255, 50/255)
	zooroom.Light:Enable(true)
	zooroom:AddTag("zooroom")
	zooroom:DoPeriodicTask(180, function(zooroom)
		local target = FindEntity(zooroom, 9, function(guy) 
			return guy:HasTag("zoobaby")
		end )
		if target then
		   local target1 = FindEntity(zooroom, 9, function(guy) 
			   return guy.prefab == "poop"
		   end )
		   if not target1 then
			  for k = 1,math.random(5,10) do
				  local pt2 = zooroom:GetPosition()
				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
			  end
		   else
			  for k = 1,math.random(1,3) do
				  local pt2 = zooroom:GetPosition()
				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
			  end
		   end
		   if zooroom.components.container:Has("carrot", 3) then
			  zooroom.components.container:ConsumeByName("carrot", 3)
			  if math.random()<0.1 then
				 if target:HasTag("zoobaby1") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("krampus")
					zoobaby.AnimState:SetBuild("krampus_build")
					zoobaby.AnimState:PlayAnimation("idle", true)
					zoobaby.entity:AddSoundEmitter()
					zoobaby.AnimState:Hide("SACK")
					zoobaby.AnimState:Show("ARM")
					zoobaby.Transform:SetScale(0.7,0.7,0.7)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGkrampus")
					zoobaby:AddTag("zoobaby1")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby2") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("koalefant")
					zoobaby.AnimState:SetBuild("koalefant_summer_build")
					zoobaby.AnimState:PlayAnimation("idle_loop", true)
					zoobaby.entity:AddSoundEmitter()
					zoobaby.Transform:SetScale(0.5,0.5,0.5)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGkoalefant")
					zoobaby:AddTag("zoobaby2")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby3") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("koalefant")
					zoobaby.AnimState:SetBuild("koalefant_winter_build")
					zoobaby.AnimState:PlayAnimation("idle_loop", true)
					zoobaby.entity:AddSoundEmitter()
					zoobaby.Transform:SetScale(0.5,0.5,0.5)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGkoalefant")
					zoobaby:AddTag("zoobaby3")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby4") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("walrus")
					zoobaby.AnimState:SetBuild("walrus_baby_build")
					zoobaby.AnimState:PlayAnimation("idle_happy")
					zoobaby.entity:AddSoundEmitter()
					zoobaby.Transform:SetScale(0.8,0.8,0.8)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGwalrus")
					zoobaby:AddTag("zoobaby4")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby5") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("kiki")
					zoobaby.AnimState:SetBuild("kiki_basic")
					zoobaby.AnimState:PlayAnimation("idle_loop", true)
					zoobaby.entity:AddSoundEmitter()
				zoobaby.soundtype = ""
					zoobaby.Transform:SetScale(1.2,1.2,1.2)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGmonkey")
					zoobaby:AddTag("zoobaby5")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
			  end
		   else
			  target.components.health:Kill()
		   end
		end
	end )
	zooroom:AddComponent("workable")
	zooroom.components.workable:SetWorkAction(ACTIONS.HAMMER)
	zooroom.components.workable:SetWorkLeft(3)
	zooroom.components.workable:SetOnFinishCallback(function(zooroom)
		local pos = Vector3(zooroom.Transform:GetWorldPosition())
		local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10)
		for k,v in pairs(ents) do
			if v:HasTag("zoofence") or v:HasTag("brand") then
			   SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
			   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
			   v:Remove()
			end
		end
		zooroom:Remove()
	end )
	local pt0 = Vector3(zooroom.Transform:GetWorldPosition())
	for k = 1, 40 do
		local result_offset = FindValidPositionByFan(1 * 2 * PI, 8, 40, function(offset)
			local x,y,z = (pt0 + offset):Get()
			local ents = TheSim:FindEntities(x,y,z , 1)
			return not next(ents) 
		end)
		if result_offset then
		   local zoofence = SpawnPrefab("butter")
		   zoofence.AnimState:SetBank("wall")
		   zoofence.AnimState:SetBuild("wall_wood")
		   zoofence.AnimState:PlayAnimation("1_2", false)
		   MakeObstaclePhysics(zoofence, .5)
		   zoofence:RemoveComponent("stackable")
		   zoofence:RemoveComponent("inventoryitem")
		   zoofence:RemoveComponent("edible")
		   zoofence:RemoveComponent("perishable")
		   zoofence:RemoveComponent("deployable")
		   zoofence:RemoveComponent("container")
		   zoofence:AddTag("zoofence")
		   zoofence.Transform:SetPosition((pt0 + result_offset):Get())
		   zoofence.components.inspectable.getstatus = function(zoofence)
			   zoofence.Transform:SetScale(1, 0.1, 1)
			   zoofence.Physics:SetActive(false)
			   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
			   zoofence:DoTaskInTime(5, function(zoofence)
				   zoofence.Transform:SetScale(1, 1, 1)
				   zoofence.Physics:SetActive(true)
				   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
			   end )
		   end
		end
	end
	inst.components.stackable:Get():Remove()
end
	inst:AddComponent("deployable")
	inst.components.deployable.ondeploy = OnDeploy
	inst:AddComponent("container")
	inst.components.container:SetNumSlots(#slotpos)
	inst.components.container.widgetslotpos = slotpos
	inst.components.container.widgetpos = Vector3(0,180,0)
	inst.components.container.side_align_tip = 160
	inst.components.container.itemtestfn = itemtest
	inst.components.container.canbeopened = false
	inst.components.container.widgetbuttoninfo = widgetbuttoninfo
local function onsave(inst, data)
	if inst:HasTag("brand") then
		data.brand = true
	end
	if inst:HasTag("zooroom") then
		data.zooroom = true
	end
	if inst:HasTag("zoofence") then
		data.zoofence = true
	end
	if inst:HasTag("zoobaby1") then
		data.zoobaby1 = true
	end
	if inst:HasTag("zoobaby2") then
		data.zoobaby2 = true
	end
	if inst:HasTag("zoobaby3") then
		data.zoobaby3 = true
	end
	if inst:HasTag("zoobaby4") then
		data.zoobaby4 = true
	end
	if inst:HasTag("zoobaby5") then
		data.zoobaby5 = true
	end
	if inst:HasTag("followme") then
		data.followme = true
	end
end
local function onload(inst, data)
  if data and data.brand then
	inst.AnimState:SetBank("sign_home")
	inst.AnimState:SetBuild("sign_home")
	inst.AnimState:PlayAnimation("idle")
	inst.Transform:SetScale(0.8, 0.8, 0.8)
	inst.AnimState:SetMultColour(0/255,255/255,0/255,1)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	inst:AddTag("brand")
	local slotpos1 = { Vector3(0,-75,0)}
	inst:AddComponent("container")
	inst.components.container:SetNumSlots(#slotpos1)
	inst.components.container.widgetslotpos = slotpos1
	inst.components.container.widgetpos = Vector3(0,180,0)
	inst.components.container.side_align_tip = 160
	inst.components.container.acceptsstacks = false
	inst.components.container.itemtestfn = function(inst, item, slot)
		if item.prefab == "charcoal" or item.prefab == "trunk_summer" or item.prefab == "trunk_winter" or item.prefab == "walrus_tusk" or item.prefab == "cave_banana" then
		   return true
		end
		return false
	end
	inst.components.container.widgetbuttoninfo = {
		text = "Buy",
		position = Vector3(0, -145, 0),
		fn = function(inst)
			if GetPlayer().components.inventory:Has("goldnugget", 30) then
			   if inst.components.container:Has("charcoal", 1) then
				  inst.components.container:ConsumeByName("charcoal", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = inst:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("krampus")
				  zoobaby.AnimState:SetBuild("krampus_build")
				  zoobaby.AnimState:PlayAnimation("idle", true)
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.AnimState:Hide("SACK")
				  zoobaby.AnimState:Show("ARM")
				  zoobaby.Transform:SetScale(0.7,0.7,0.7)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGkrampus")
				  zoobaby:AddTag("zoobaby1")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if inst.components.container:Has("trunk_summer", 1) then
				  inst.components.container:ConsumeByName("trunk_summer", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = inst:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("koalefant")
				  zoobaby.AnimState:SetBuild("koalefant_summer_build")
				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGkoalefant")
				  zoobaby:AddTag("zoobaby2")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if inst.components.container:Has("trunk_winter", 1) then
				  inst.components.container:ConsumeByName("trunk_winter", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = inst:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("koalefant")
				  zoobaby.AnimState:SetBuild("koalefant_winter_build")
				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGkoalefant")
				  zoobaby:AddTag("zoobaby3")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if inst.components.container:Has("walrus_tusk", 1) then
				  inst.components.container:ConsumeByName("walrus_tusk", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = inst:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("walrus")
				  zoobaby.AnimState:SetBuild("walrus_baby_build")
				  zoobaby.AnimState:PlayAnimation("idle_happy")
			  zoobaby.entity:AddSoundEmitter()
				  zoobaby.Transform:SetScale(0.8,0.8,0.8)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGwalrus")
				  zoobaby:AddTag("zoobaby4")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			   if inst.components.container:Has("cave_banana", 1) then
				  inst.components.container:ConsumeByName("cave_banana", 1)
				  local zoobaby = SpawnPrefab("butter")
				  local pt1 = inst:GetPosition()
				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
				  zoobaby.AnimState:SetBank("kiki")
				  zoobaby.AnimState:SetBuild("kiki_basic")
				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
			  zoobaby.entity:AddSoundEmitter()
			  zoobaby.soundtype = ""
				  zoobaby.Transform:SetScale(1.2,1.2,1.2)
				  zoobaby:AddComponent("locomotor")
				  zoobaby.components.locomotor.walkspeed = 3
				  zoobaby.components.locomotor.runspeed = 6
				  zoobaby:SetStateGraph("SGmonkey")
				  zoobaby:AddTag("zoobaby5")
				  local brain = require "brains/frogbrain"
				  zoobaby:SetBrain(brain)
				  zoobaby.Transform:SetFourFaced()
				  MakeCharacterPhysics(zoobaby, 15, .5)
				  zoobaby:AddComponent("knownlocations")
				  zoobaby:AddComponent("combat")
				  zoobaby:AddComponent("health")
				  zoobaby.components.health:SetMaxHealth(100)
				  zoobaby:RemoveComponent("stackable")
				  zoobaby:RemoveComponent("inventoryitem")
				  zoobaby:RemoveComponent("edible")
				  zoobaby:RemoveComponent("perishable")
				  zoobaby:RemoveComponent("deployable")
				  zoobaby:RemoveComponent("container")
				  local minimap = zoobaby.entity:AddMiniMapEntity()
				  minimap:SetIcon("monkey_barrel.png")
				  zoobaby:AddComponent("follower")
				  zoobaby.components.inspectable.getstatus = function(zoobaby)
					  if not zoobaby:HasTag("followme") then
						 local brain = require "brains/abigailbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(GetPlayer())
						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						 zoobaby:AddTag("followme")
					  else
						 local brain = require "brains/frogbrain"
						 zoobaby:SetBrain(brain)
						 zoobaby:RestartBrain()
						 zoobaby.components.follower:SetLeader(nil)
						 zoobaby.AnimState:SetBloomEffectHandle("")
						 zoobaby:RemoveTag("followme")
					  end
				  end
				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
				  end )
				  zoobaby:AddComponent("lootdropper")
				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
				  zoobaby:AddTag("zoobaby")
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
			   end
			end
	end }
  end
  if data and data.zooroom then
	inst.AnimState:SetBank("rabbithouse")
	inst.AnimState:SetBuild("rabbit_house")
	inst.AnimState:PlayAnimation("idle", true)
	inst.Transform:SetScale(0.4, 0.4, 0.4)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst.components.container.canbeopened = true
	inst.entity:AddLight()
	inst.Light:SetFalloff(1)
	inst.Light:SetIntensity(.8)
	inst.Light:SetRadius(15)
	inst.Light:SetColour(180/255, 195/255, 50/255)
	inst.Light:Enable(true)
	inst:AddTag("zooroom")
	inst:DoPeriodicTask(180, function(inst)
		local target = FindEntity(inst, 9, function(guy) 
			return guy:HasTag("zoobaby")
		end )
		if target then
		   local target1 = FindEntity(inst, 9, function(guy) 
			   return guy.prefab == "poop"
		   end )
		   if not target1 then
			  for k = 1,math.random(5,10) do
				  local pt2 = inst:GetPosition()
				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
			  end
		   else
			  for k = 1,math.random(1,3) do
				  local pt2 = inst:GetPosition()
				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
			  end
		   end
		   if inst.components.container:Has("carrot", 3) then
			  inst.components.container:ConsumeByName("carrot", 3)
			  if math.random()<0.1 then
				 if target:HasTag("zoobaby1") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("krampus")
					zoobaby.AnimState:SetBuild("krampus_build")
					zoobaby.AnimState:PlayAnimation("idle", true)
					zoobaby.entity:AddSoundEmitter()
					zoobaby.AnimState:Hide("SACK")
					zoobaby.AnimState:Show("ARM")
					zoobaby.Transform:SetScale(0.7,0.7,0.7)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGkrampus")
					zoobaby:AddTag("zoobaby1")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby2") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("koalefant")
					zoobaby.AnimState:SetBuild("koalefant_summer_build")
					zoobaby.AnimState:PlayAnimation("idle_loop", true)
					zoobaby.entity:AddSoundEmitter()
					zoobaby.Transform:SetScale(0.5,0.5,0.5)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGkoalefant")
					zoobaby:AddTag("zoobaby2")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby3") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("koalefant")
					zoobaby.AnimState:SetBuild("koalefant_winter_build")
					zoobaby.AnimState:PlayAnimation("idle_loop", true)
					zoobaby.entity:AddSoundEmitter()
					zoobaby.Transform:SetScale(0.5,0.5,0.5)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGkoalefant")
					zoobaby:AddTag("zoobaby3")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby4") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("walrus")
					zoobaby.AnimState:SetBuild("walrus_baby_build")
					zoobaby.AnimState:PlayAnimation("idle_happy")
					zoobaby.entity:AddSoundEmitter()
					zoobaby.Transform:SetScale(0.8,0.8,0.8)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGwalrus")
					zoobaby:AddTag("zoobaby4")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
				 if target:HasTag("zoobaby5") then
					local zoobaby = SpawnPrefab("butter")
					local pt4 = target:GetPosition()
					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
					zoobaby.AnimState:SetBank("kiki")
					zoobaby.AnimState:SetBuild("kiki_basic")
					zoobaby.AnimState:PlayAnimation("idle_loop", true)
					zoobaby.entity:AddSoundEmitter()
				zoobaby.soundtype = ""
					zoobaby.Transform:SetScale(1.2,1.2,1.2)
					zoobaby:AddComponent("locomotor")
					zoobaby.components.locomotor.walkspeed = 3
					zoobaby.components.locomotor.runspeed = 6
					zoobaby:SetStateGraph("SGmonkey")
					zoobaby:AddTag("zoobaby5")
					local brain = require "brains/frogbrain"
					zoobaby:SetBrain(brain)
					zoobaby.Transform:SetFourFaced()
					MakeCharacterPhysics(zoobaby, 15, .5)
					zoobaby:AddComponent("knownlocations")
					zoobaby:AddComponent("combat")
					zoobaby:AddComponent("health")
					zoobaby.components.health:SetMaxHealth(100)
					zoobaby:RemoveComponent("stackable")
					zoobaby:RemoveComponent("inventoryitem")
					zoobaby:RemoveComponent("edible")
					zoobaby:RemoveComponent("perishable")
					zoobaby:RemoveComponent("deployable")
					zoobaby:RemoveComponent("container")
					local minimap = zoobaby.entity:AddMiniMapEntity()
					minimap:SetIcon("monkey_barrel.png")
					zoobaby:AddComponent("follower")
					zoobaby.components.inspectable.getstatus = function(zoobaby)
						if not zoobaby:HasTag("followme") then
						   local brain = require "brains/abigailbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(GetPlayer())
						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
						   zoobaby:AddTag("followme")
						else
						   local brain = require "brains/frogbrain"
						   zoobaby:SetBrain(brain)
						   zoobaby:RestartBrain()
						   zoobaby.components.follower:SetLeader(nil)
						   zoobaby.AnimState:SetBloomEffectHandle("")
						   zoobaby:RemoveTag("followme")
						end
					end
					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
					end )
					zoobaby:AddComponent("lootdropper")
					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
					zoobaby:AddTag("zoobaby")
				 end
			  end
		   else
			  target.components.health:Kill()
		   end
		end
	end )
	inst:AddComponent("workable")
	inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
	inst.components.workable:SetWorkLeft(3)
	inst.components.workable:SetOnFinishCallback(function(inst)
		local pos = Vector3(inst.Transform:GetWorldPosition())
		local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10)
		for k,v in pairs(ents) do
			if v:HasTag("zoofence") or v:HasTag("brand") then
			   SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
			   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
			   v:Remove()
			end
		end
		inst:Remove()
	end )
  end
  if data and data.zoofence then
	inst.AnimState:SetBank("wall")
	inst.AnimState:SetBuild("wall_wood")
	inst.AnimState:PlayAnimation("1_2", false)
	MakeObstaclePhysics(inst, .5)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	inst:AddTag("zoofence")
	inst.components.inspectable.getstatus = function(inst)
		inst.Transform:SetScale(1, 0.1, 1)
		inst.Physics:SetActive(false)
		GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
		inst:DoTaskInTime(5, function(inst)
			inst.Transform:SetScale(1, 1, 1)
			inst.Physics:SetActive(true)
			GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
		end )
	end
  end
  if data and data.zoobaby1 then
	inst.AnimState:SetBank("krampus")
	inst.AnimState:SetBuild("krampus_build")
	inst.AnimState:PlayAnimation("idle", true)
	inst.entity:AddSoundEmitter()
	inst.AnimState:Hide("SACK")
	inst.AnimState:Show("ARM")
	inst.Transform:SetScale(0.7,0.7,0.7)
	inst:AddComponent("locomotor")
	inst.components.locomotor.walkspeed = 3
	inst.components.locomotor.runspeed = 6
	inst:SetStateGraph("SGkrampus")
	inst:AddTag("zoobaby1")
	local brain = require "brains/frogbrain"
	inst:SetBrain(brain)
	inst.Transform:SetFourFaced()
	MakeCharacterPhysics(inst, 15, .5)
	inst:AddComponent("knownlocations")
	inst:AddComponent("combat")
	inst:AddComponent("health")
	inst.components.health:SetMaxHealth(100)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	local minimap = inst.entity:AddMiniMapEntity()
	minimap:SetIcon("monkey_barrel.png")
	inst:AddComponent("follower")
	inst.components.inspectable.getstatus = function(inst)
		if not inst:HasTag("followme") then
		   local brain = require "brains/abigailbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(GetPlayer())
		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		   inst:AddTag("followme")
		else
		   local brain = require "brains/frogbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(nil)
		   inst.AnimState:SetBloomEffectHandle("")
		   inst:RemoveTag("followme")
		end
	end
	inst:DoPeriodicTask(math.random(360, 480), function(inst)
		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
	end )
	inst:AddComponent("lootdropper")
	inst.components.lootdropper:SetLoot({"smallmeat"})
	inst:AddTag("zoobaby")
  end
  if data and data.zoobaby2 then
	inst.AnimState:SetBank("koalefant")
	inst.AnimState:SetBuild("koalefant_summer_build")
	inst.AnimState:PlayAnimation("idle_loop", true)
	inst.entity:AddSoundEmitter()
	inst.Transform:SetScale(0.5,0.5,0.5)
	inst:AddComponent("locomotor")
	inst.components.locomotor.walkspeed = 3
	inst.components.locomotor.runspeed = 6
	inst:SetStateGraph("SGkoalefant")
	inst:AddTag("zoobaby2")
	local brain = require "brains/frogbrain"
	inst:SetBrain(brain)
	inst.Transform:SetFourFaced()
	MakeCharacterPhysics(inst, 15, .5)
	inst:AddComponent("knownlocations")
	inst:AddComponent("combat")
	inst:AddComponent("health")
	inst.components.health:SetMaxHealth(100)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	local minimap = inst.entity:AddMiniMapEntity()
	minimap:SetIcon("monkey_barrel.png")
	inst:AddComponent("follower")
	inst.components.inspectable.getstatus = function(inst)
		if not inst:HasTag("followme") then
		   local brain = require "brains/abigailbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(GetPlayer())
		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		   inst:AddTag("followme")
		else
		   local brain = require "brains/frogbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(nil)
		   inst.AnimState:SetBloomEffectHandle("")
		   inst:RemoveTag("followme")
		end
	end
	inst:DoPeriodicTask(math.random(360, 480), function(inst)
		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
	end )
	inst:AddComponent("lootdropper")
	inst.components.lootdropper:SetLoot({"smallmeat"})
	inst:AddTag("zoobaby")
  end
  if data and data.zoobaby3 then
	inst.AnimState:SetBank("koalefant")
	inst.AnimState:SetBuild("koalefant_winter_build")
	inst.AnimState:PlayAnimation("idle_loop", true)
	inst.entity:AddSoundEmitter()
	inst.Transform:SetScale(0.5,0.5,0.5)
	inst:AddComponent("locomotor")
	inst.components.locomotor.walkspeed = 3
	inst.components.locomotor.runspeed = 6
	inst:SetStateGraph("SGkoalefant")
	inst:AddTag("zoobaby3")
	local brain = require "brains/frogbrain"
	inst:SetBrain(brain)
	inst.Transform:SetFourFaced()
	MakeCharacterPhysics(inst, 15, .5)
	inst:AddComponent("knownlocations")
	inst:AddComponent("combat")
	inst:AddComponent("health")
	inst.components.health:SetMaxHealth(100)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	local minimap = inst.entity:AddMiniMapEntity()
	minimap:SetIcon("monkey_barrel.png")
	inst:AddComponent("follower")
	inst.components.inspectable.getstatus = function(inst)
		if not inst:HasTag("followme") then
		   local brain = require "brains/abigailbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(GetPlayer())
		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		   inst:AddTag("followme")
		else
		   local brain = require "brains/frogbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(nil)
		   inst.AnimState:SetBloomEffectHandle("")
		   inst:RemoveTag("followme")
		end
	end
	inst:DoPeriodicTask(math.random(360, 480), function(inst)
		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
	end )
	inst:AddComponent("lootdropper")
	inst.components.lootdropper:SetLoot({"smallmeat"})
	inst:AddTag("zoobaby")
  end
  if data and data.zoobaby4 then
	inst.AnimState:SetBank("walrus")
	inst.AnimState:SetBuild("walrus_baby_build")
	inst.AnimState:PlayAnimation("idle_happy")
	inst.entity:AddSoundEmitter()
	inst.Transform:SetScale(0.8,0.8,0.8)
	inst:AddComponent("locomotor")
	inst.components.locomotor.walkspeed = 3
	inst.components.locomotor.runspeed = 6
	inst:SetStateGraph("SGwalrus")
	inst:AddTag("zoobaby4")
	local brain = require "brains/frogbrain"
	inst:SetBrain(brain)
	inst.Transform:SetFourFaced()
	MakeCharacterPhysics(inst, 15, .5)
	inst:AddComponent("knownlocations")
	inst:AddComponent("combat")
	inst:AddComponent("health")
	inst.components.health:SetMaxHealth(100)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	local minimap = inst.entity:AddMiniMapEntity()
	minimap:SetIcon("monkey_barrel.png")
	inst:AddComponent("follower")
	inst.components.inspectable.getstatus = function(inst)
		if not inst:HasTag("followme") then
		   local brain = require "brains/abigailbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(GetPlayer())
		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		   inst:AddTag("followme")
		else
		   local brain = require "brains/frogbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(nil)
		   inst.AnimState:SetBloomEffectHandle("")
		   inst:RemoveTag("followme")
		end
	end
	inst:DoPeriodicTask(math.random(360, 480), function(inst)
		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
	end )
	inst:AddComponent("lootdropper")
	inst.components.lootdropper:SetLoot({"smallmeat"})
	inst:AddTag("zoobaby")
  end
  if data and data.zoobaby5 then
	inst.AnimState:SetBank("kiki")
	inst.AnimState:SetBuild("kiki_basic")
	inst.AnimState:PlayAnimation("idle_loop", true)
	inst.entity:AddSoundEmitter()
	inst.soundtype = ""
	inst.Transform:SetScale(1.2,1.2,1.2)
	inst:AddComponent("locomotor")
	inst.components.locomotor.walkspeed = 3
	inst.components.locomotor.runspeed = 6
	inst:SetStateGraph("SGmonkey")
	inst:AddTag("zoobaby5")
	local brain = require "brains/frogbrain"
	inst:SetBrain(brain)
	inst.Transform:SetFourFaced()
	MakeCharacterPhysics(inst, 15, .5)
	inst:AddComponent("knownlocations")
	inst:AddComponent("combat")
	inst:AddComponent("health")
	inst.components.health:SetMaxHealth(100)
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("perishable")
	inst:RemoveComponent("deployable")
	inst:RemoveComponent("container")
	local minimap = inst.entity:AddMiniMapEntity()
	minimap:SetIcon("monkey_barrel.png")
	inst:AddComponent("follower")
	inst.components.inspectable.getstatus = function(inst)
		if not inst:HasTag("followme") then
		   local brain = require "brains/abigailbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(GetPlayer())
		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		   inst:AddTag("followme")
		else
		   local brain = require "brains/frogbrain"
		   inst:SetBrain(brain)
		   inst:RestartBrain()
		   inst.components.follower:SetLeader(nil)
		   inst.AnimState:SetBloomEffectHandle("")
		   inst:RemoveTag("followme")
		end
	end
	inst:DoPeriodicTask(math.random(360, 480), function(inst)
		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
	end )
	inst:AddComponent("lootdropper")
	inst.components.lootdropper:SetLoot({"smallmeat"})
	inst:AddTag("zoobaby")
  end
  if data and data.followme then
	 local brain = require "brains/abigailbrain"
	 inst:SetBrain(brain)
	 inst:RestartBrain()
	 inst.components.follower:SetLeader(GetPlayer())
	 inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
	 inst:AddTag("followme")
  end
end
	inst.OnSave = onsave
	inst.OnLoad = onload

	即可在开阔的空地上,用黄油种动物园,在身上有30个黄金时,用鼠标左键点牌子,可打开格子,放入木炭点Buy按钮,可买一只小龙,花费30个黄金;放入夏象鼻点Buy按钮,可买小红象;放入冬象鼻点Buy按钮,可买小蓝象;放入海象牙点Buy按钮,可买小海象;放入香蕉点Buy按钮,可买猴子。鼠标左键点木栅栏,可开门,5秒后自动关门。鼠标左键点中间的胡萝卜房可打开格子,放入小动物爱吃的胡萝卜(每天消耗9个),当格子里的胡萝卜不足3个时,圈里的动物将陆续饿死。当动物园里有动物时,每天都能收到15-30个黄金的门票钱(放在牌子前面),动物会产便便,如果不及时清扫,门票钱将下降为正常的1/3。如果食物充足,小动物还有一定概率会繁殖,点胡萝卜房格子上方的Sell按钮,可卖掉圈舍中的动物,每只20个黄金。如果动物跑出圈舍,或想带领动物转场,就用鼠标左键点动物(手里不要拿武器),它会跟随你,再次用鼠标左键点动物,可以取消跟随。动物在小地图上显示为猴子的图标。不想要动物园时,用锤子砸掉胡萝卜房即可。黄油可以打蝴蝶获得,如果修改了“巨型超市”,也可花1-3个黄金购得