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

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


   1
   2.经营动物园(用黄油种动物园,买卖、繁殖小动物,赚门票钱)
   3
   4	MT管理器打开游戏目录/assets/scripts/prefabs/butter.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
   5
   6local slotpos = { Vector3(0,-100,0)}
   7local function itemtest(inst, item, slot)
   8	if item.prefab == "carrot" then
   9	   return true
  10	end
  11	return false
  12end
  13local widgetbuttoninfo = {
  14	text = "Sell",
  15	position = Vector3(0, -30, 0),
  16	fn = function(inst)
  17		local target = FindEntity(inst, 9, function(guy) 
  18			return guy:HasTag("zoobaby")
  19		end )
  20		if target then
  21		   for k = 1,20 do
  22			   local pt5 = target:GetPosition()
  23			   SpawnPrefab("goldnugget").Transform:SetPosition(pt5.x, 0, pt5.z)
  24			   GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
  25			   target:Remove()
  26		   end
  27		end
  28end }
  29local function OnDeploy (inst, pt)
  30	local brand = SpawnPrefab("butter")
  31	brand.Transform:SetPosition(pt.x, pt.y, pt.z)
  32	brand.AnimState:SetBank("sign_home")
  33	brand.AnimState:SetBuild("sign_home")
  34	brand.AnimState:PlayAnimation("idle")
  35	brand.Transform:SetScale(0.8, 0.8, 0.8)
  36	brand.AnimState:SetMultColour(0/255,255/255,0/255,1)
  37	brand:RemoveComponent("stackable")
  38	brand:RemoveComponent("inventoryitem")
  39	brand:RemoveComponent("edible")
  40	brand:RemoveComponent("perishable")
  41	brand:RemoveComponent("deployable")
  42	brand:RemoveComponent("container")
  43	brand:AddTag("brand")
  44	local slotpos1 = { Vector3(0,-75,0)}
  45	brand:AddComponent("container")
  46	brand.components.container:SetNumSlots(#slotpos1)
  47	brand.components.container.widgetslotpos = slotpos1
  48	brand.components.container.widgetpos = Vector3(0,180,0)
  49	brand.components.container.side_align_tip = 160
  50	brand.components.container.acceptsstacks = false
  51	brand.components.container.itemtestfn = function(brand, item, slot)
  52		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
  53		   return true
  54		end
  55		return false
  56	end
  57	brand.components.container.widgetbuttoninfo = {
  58		text = "Buy",
  59		position = Vector3(0, -145, 0),
  60		fn = function(brand)
  61			if GetPlayer().components.inventory:Has("goldnugget", 30) then
  62			   if brand.components.container:Has("charcoal", 1) then
  63				  brand.components.container:ConsumeByName("charcoal", 1)
  64				  local zoobaby = SpawnPrefab("butter")
  65				  local pt1 = brand:GetPosition()
  66				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
  67				  zoobaby.AnimState:SetBank("krampus")
  68				  zoobaby.AnimState:SetBuild("krampus_build")
  69				  zoobaby.AnimState:PlayAnimation("idle", true)
  70			  zoobaby.entity:AddSoundEmitter()
  71				  zoobaby.AnimState:Hide("SACK")
  72				  zoobaby.AnimState:Show("ARM")
  73				  zoobaby.Transform:SetScale(0.7,0.7,0.7)
  74				  zoobaby:AddComponent("locomotor")
  75				  zoobaby.components.locomotor.walkspeed = 3
  76				  zoobaby.components.locomotor.runspeed = 6
  77				  zoobaby:SetStateGraph("SGkrampus")
  78				  zoobaby:AddTag("zoobaby1")
  79				  local brain = require "brains/frogbrain"
  80				  zoobaby:SetBrain(brain)
  81				  zoobaby.Transform:SetFourFaced()
  82				  MakeCharacterPhysics(zoobaby, 15, .5)
  83				  zoobaby:AddComponent("knownlocations")
  84				  zoobaby:AddComponent("combat")
  85				  zoobaby:AddComponent("health")
  86				  zoobaby.components.health:SetMaxHealth(100)
  87				  zoobaby:RemoveComponent("stackable")
  88				  zoobaby:RemoveComponent("inventoryitem")
  89				  zoobaby:RemoveComponent("edible")
  90				  zoobaby:RemoveComponent("perishable")
  91				  zoobaby:RemoveComponent("deployable")
  92				  zoobaby:RemoveComponent("container")
  93				  local minimap = zoobaby.entity:AddMiniMapEntity()
  94				  minimap:SetIcon("monkey_barrel.png")
  95				  zoobaby:AddComponent("follower")
  96				  zoobaby.components.inspectable.getstatus = function(zoobaby)
  97					  if not zoobaby:HasTag("followme") then
  98						 local brain = require "brains/abigailbrain"
  99						 zoobaby:SetBrain(brain)
 100						 zoobaby:RestartBrain()
 101						 zoobaby.components.follower:SetLeader(GetPlayer())
 102						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 103						 zoobaby:AddTag("followme")
 104					  else
 105						 local brain = require "brains/frogbrain"
 106						 zoobaby:SetBrain(brain)
 107						 zoobaby:RestartBrain()
 108						 zoobaby.components.follower:SetLeader(nil)
 109						 zoobaby.AnimState:SetBloomEffectHandle("")
 110						 zoobaby:RemoveTag("followme")
 111					  end
 112				  end
 113				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 114					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 115				  end )
 116				  zoobaby:AddComponent("lootdropper")
 117				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 118				  zoobaby:AddTag("zoobaby")
 119				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 120				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 121			   end
 122			   if brand.components.container:Has("trunk_summer", 1) then
 123				  brand.components.container:ConsumeByName("trunk_summer", 1)
 124				  local zoobaby = SpawnPrefab("butter")
 125				  local pt1 = brand:GetPosition()
 126				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 127				  zoobaby.AnimState:SetBank("koalefant")
 128				  zoobaby.AnimState:SetBuild("koalefant_summer_build")
 129				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
 130			  zoobaby.entity:AddSoundEmitter()
 131				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
 132				  zoobaby:AddComponent("locomotor")
 133				  zoobaby.components.locomotor.walkspeed = 3
 134				  zoobaby.components.locomotor.runspeed = 6
 135				  zoobaby:SetStateGraph("SGkoalefant")
 136				  zoobaby:AddTag("zoobaby2")
 137				  local brain = require "brains/frogbrain"
 138				  zoobaby:SetBrain(brain)
 139				  zoobaby.Transform:SetFourFaced()
 140				  MakeCharacterPhysics(zoobaby, 15, .5)
 141				  zoobaby:AddComponent("knownlocations")
 142				  zoobaby:AddComponent("combat")
 143				  zoobaby:AddComponent("health")
 144				  zoobaby.components.health:SetMaxHealth(100)
 145				  zoobaby:RemoveComponent("stackable")
 146				  zoobaby:RemoveComponent("inventoryitem")
 147				  zoobaby:RemoveComponent("edible")
 148				  zoobaby:RemoveComponent("perishable")
 149				  zoobaby:RemoveComponent("deployable")
 150				  zoobaby:RemoveComponent("container")
 151				  local minimap = zoobaby.entity:AddMiniMapEntity()
 152				  minimap:SetIcon("monkey_barrel.png")
 153				  zoobaby:AddComponent("follower")
 154				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 155					  if not zoobaby:HasTag("followme") then
 156						 local brain = require "brains/abigailbrain"
 157						 zoobaby:SetBrain(brain)
 158						 zoobaby:RestartBrain()
 159						 zoobaby.components.follower:SetLeader(GetPlayer())
 160						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 161						 zoobaby:AddTag("followme")
 162					  else
 163						 local brain = require "brains/frogbrain"
 164						 zoobaby:SetBrain(brain)
 165						 zoobaby:RestartBrain()
 166						 zoobaby.components.follower:SetLeader(nil)
 167						 zoobaby.AnimState:SetBloomEffectHandle("")
 168						 zoobaby:RemoveTag("followme")
 169					  end
 170				  end
 171				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 172					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 173				  end )
 174				  zoobaby:AddComponent("lootdropper")
 175				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 176				  zoobaby:AddTag("zoobaby")
 177				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 178				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 179			   end
 180			   if brand.components.container:Has("trunk_winter", 1) then
 181				  brand.components.container:ConsumeByName("trunk_winter", 1)
 182				  local zoobaby = SpawnPrefab("butter")
 183				  local pt1 = brand:GetPosition()
 184				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 185				  zoobaby.AnimState:SetBank("koalefant")
 186				  zoobaby.AnimState:SetBuild("koalefant_winter_build")
 187				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
 188			  zoobaby.entity:AddSoundEmitter()
 189				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
 190				  zoobaby:AddComponent("locomotor")
 191				  zoobaby.components.locomotor.walkspeed = 3
 192				  zoobaby.components.locomotor.runspeed = 6
 193				  zoobaby:SetStateGraph("SGkoalefant")
 194				  zoobaby:AddTag("zoobaby3")
 195				  local brain = require "brains/frogbrain"
 196				  zoobaby:SetBrain(brain)
 197				  zoobaby.Transform:SetFourFaced()
 198				  MakeCharacterPhysics(zoobaby, 15, .5)
 199				  zoobaby:AddComponent("knownlocations")
 200				  zoobaby:AddComponent("combat")
 201				  zoobaby:AddComponent("health")
 202				  zoobaby.components.health:SetMaxHealth(100)
 203				  zoobaby:RemoveComponent("stackable")
 204				  zoobaby:RemoveComponent("inventoryitem")
 205				  zoobaby:RemoveComponent("edible")
 206				  zoobaby:RemoveComponent("perishable")
 207				  zoobaby:RemoveComponent("deployable")
 208				  zoobaby:RemoveComponent("container")
 209				  local minimap = zoobaby.entity:AddMiniMapEntity()
 210				  minimap:SetIcon("monkey_barrel.png")
 211				  zoobaby:AddComponent("follower")
 212				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 213					  if not zoobaby:HasTag("followme") then
 214						 local brain = require "brains/abigailbrain"
 215						 zoobaby:SetBrain(brain)
 216						 zoobaby:RestartBrain()
 217						 zoobaby.components.follower:SetLeader(GetPlayer())
 218						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 219						 zoobaby:AddTag("followme")
 220					  else
 221						 local brain = require "brains/frogbrain"
 222						 zoobaby:SetBrain(brain)
 223						 zoobaby:RestartBrain()
 224						 zoobaby.components.follower:SetLeader(nil)
 225						 zoobaby.AnimState:SetBloomEffectHandle("")
 226						 zoobaby:RemoveTag("followme")
 227					  end
 228				  end
 229				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 230					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 231				  end )
 232				  zoobaby:AddComponent("lootdropper")
 233				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 234				  zoobaby:AddTag("zoobaby")
 235				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 236				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 237			   end
 238			   if brand.components.container:Has("walrus_tusk", 1) then
 239				  brand.components.container:ConsumeByName("walrus_tusk", 1)
 240				  local zoobaby = SpawnPrefab("butter")
 241				  local pt1 = brand:GetPosition()
 242				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 243				  zoobaby.AnimState:SetBank("walrus")
 244				  zoobaby.AnimState:SetBuild("walrus_baby_build")
 245				  zoobaby.AnimState:PlayAnimation("idle_happy")
 246			  zoobaby.entity:AddSoundEmitter()
 247				  zoobaby.Transform:SetScale(0.8,0.8,0.8)
 248				  zoobaby:AddComponent("locomotor")
 249				  zoobaby.components.locomotor.walkspeed = 3
 250				  zoobaby.components.locomotor.runspeed = 6
 251				  zoobaby:SetStateGraph("SGwalrus")
 252				  zoobaby:AddTag("zoobaby4")
 253				  local brain = require "brains/frogbrain"
 254				  zoobaby:SetBrain(brain)
 255				  zoobaby.Transform:SetFourFaced()
 256				  MakeCharacterPhysics(zoobaby, 15, .5)
 257				  zoobaby:AddComponent("knownlocations")
 258				  zoobaby:AddComponent("combat")
 259				  zoobaby:AddComponent("health")
 260				  zoobaby.components.health:SetMaxHealth(100)
 261				  zoobaby:RemoveComponent("stackable")
 262				  zoobaby:RemoveComponent("inventoryitem")
 263				  zoobaby:RemoveComponent("edible")
 264				  zoobaby:RemoveComponent("perishable")
 265				  zoobaby:RemoveComponent("deployable")
 266				  zoobaby:RemoveComponent("container")
 267				  local minimap = zoobaby.entity:AddMiniMapEntity()
 268				  minimap:SetIcon("monkey_barrel.png")
 269				  zoobaby:AddComponent("follower")
 270				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 271					  if not zoobaby:HasTag("followme") then
 272						 local brain = require "brains/abigailbrain"
 273						 zoobaby:SetBrain(brain)
 274						 zoobaby:RestartBrain()
 275						 zoobaby.components.follower:SetLeader(GetPlayer())
 276						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 277						 zoobaby:AddTag("followme")
 278					  else
 279						 local brain = require "brains/frogbrain"
 280						 zoobaby:SetBrain(brain)
 281						 zoobaby:RestartBrain()
 282						 zoobaby.components.follower:SetLeader(nil)
 283						 zoobaby.AnimState:SetBloomEffectHandle("")
 284						 zoobaby:RemoveTag("followme")
 285					  end
 286				  end
 287				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 288					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 289				  end )
 290				  zoobaby:AddComponent("lootdropper")
 291				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 292				  zoobaby:AddTag("zoobaby")
 293				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 294				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 295			   end
 296			   if brand.components.container:Has("cave_banana", 1) then
 297				  brand.components.container:ConsumeByName("cave_banana", 1)
 298				  local zoobaby = SpawnPrefab("butter")
 299				  local pt1 = brand:GetPosition()
 300				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 301				  zoobaby.AnimState:SetBank("kiki")
 302				  zoobaby.AnimState:SetBuild("kiki_basic")
 303				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
 304			  zoobaby.entity:AddSoundEmitter()
 305			  zoobaby.soundtype = ""
 306				  zoobaby.Transform:SetScale(1.2,1.2,1.2)
 307				  zoobaby:AddComponent("locomotor")
 308				  zoobaby.components.locomotor.walkspeed = 3
 309				  zoobaby.components.locomotor.runspeed = 6
 310				  zoobaby:SetStateGraph("SGmonkey")
 311				  zoobaby:AddTag("zoobaby5")
 312				  local brain = require "brains/frogbrain"
 313				  zoobaby:SetBrain(brain)
 314				  zoobaby.Transform:SetFourFaced()
 315				  MakeCharacterPhysics(zoobaby, 15, .5)
 316				  zoobaby:AddComponent("knownlocations")
 317				  zoobaby:AddComponent("combat")
 318				  zoobaby:AddComponent("health")
 319				  zoobaby.components.health:SetMaxHealth(100)
 320				  zoobaby:RemoveComponent("stackable")
 321				  zoobaby:RemoveComponent("inventoryitem")
 322				  zoobaby:RemoveComponent("edible")
 323				  zoobaby:RemoveComponent("perishable")
 324				  zoobaby:RemoveComponent("deployable")
 325				  zoobaby:RemoveComponent("container")
 326				  local minimap = zoobaby.entity:AddMiniMapEntity()
 327				  minimap:SetIcon("monkey_barrel.png")
 328				  zoobaby:AddComponent("follower")
 329				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 330					  if not zoobaby:HasTag("followme") then
 331						 local brain = require "brains/abigailbrain"
 332						 zoobaby:SetBrain(brain)
 333						 zoobaby:RestartBrain()
 334						 zoobaby.components.follower:SetLeader(GetPlayer())
 335						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 336						 zoobaby:AddTag("followme")
 337					  else
 338						 local brain = require "brains/frogbrain"
 339						 zoobaby:SetBrain(brain)
 340						 zoobaby:RestartBrain()
 341						 zoobaby.components.follower:SetLeader(nil)
 342						 zoobaby.AnimState:SetBloomEffectHandle("")
 343						 zoobaby:RemoveTag("followme")
 344					  end
 345				  end
 346				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 347					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 348				  end )
 349				  zoobaby:AddComponent("lootdropper")
 350				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 351				  zoobaby:AddTag("zoobaby")
 352				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 353				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 354			   end
 355			end
 356	end }
 357	local zooroom = SpawnPrefab("butter")
 358	zooroom.Transform:SetPosition(pt.x-7, 0, pt.z-7)
 359	zooroom.AnimState:SetBank("rabbithouse")
 360	zooroom.AnimState:SetBuild("rabbit_house")
 361	zooroom.AnimState:PlayAnimation("idle", true)
 362	zooroom.Transform:SetScale(0.4, 0.4, 0.4)
 363	zooroom:RemoveComponent("stackable")
 364	zooroom:RemoveComponent("inventoryitem")
 365	zooroom:RemoveComponent("edible")
 366	zooroom:RemoveComponent("perishable")
 367	zooroom:RemoveComponent("deployable")
 368	zooroom.components.container.canbeopened = true
 369	zooroom.entity:AddLight()
 370	zooroom.Light:SetFalloff(1)
 371	zooroom.Light:SetIntensity(.8)
 372	zooroom.Light:SetRadius(15)
 373	zooroom.Light:SetColour(180/255, 195/255, 50/255)
 374	zooroom.Light:Enable(true)
 375	zooroom:AddTag("zooroom")
 376	zooroom:DoPeriodicTask(180, function(zooroom)
 377		local target = FindEntity(zooroom, 9, function(guy) 
 378			return guy:HasTag("zoobaby")
 379		end )
 380		if target then
 381		   local target1 = FindEntity(zooroom, 9, function(guy) 
 382			   return guy.prefab == "poop"
 383		   end )
 384		   if not target1 then
 385			  for k = 1,math.random(5,10) do
 386				  local pt2 = zooroom:GetPosition()
 387				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
 388			  end
 389		   else
 390			  for k = 1,math.random(1,3) do
 391				  local pt2 = zooroom:GetPosition()
 392				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
 393			  end
 394		   end
 395		   if zooroom.components.container:Has("carrot", 3) then
 396			  zooroom.components.container:ConsumeByName("carrot", 3)
 397			  if math.random()<0.1 then
 398				 if target:HasTag("zoobaby1") then
 399					local zoobaby = SpawnPrefab("butter")
 400					local pt4 = target:GetPosition()
 401					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
 402					zoobaby.AnimState:SetBank("krampus")
 403					zoobaby.AnimState:SetBuild("krampus_build")
 404					zoobaby.AnimState:PlayAnimation("idle", true)
 405					zoobaby.entity:AddSoundEmitter()
 406					zoobaby.AnimState:Hide("SACK")
 407					zoobaby.AnimState:Show("ARM")
 408					zoobaby.Transform:SetScale(0.7,0.7,0.7)
 409					zoobaby:AddComponent("locomotor")
 410					zoobaby.components.locomotor.walkspeed = 3
 411					zoobaby.components.locomotor.runspeed = 6
 412					zoobaby:SetStateGraph("SGkrampus")
 413					zoobaby:AddTag("zoobaby1")
 414					local brain = require "brains/frogbrain"
 415					zoobaby:SetBrain(brain)
 416					zoobaby.Transform:SetFourFaced()
 417					MakeCharacterPhysics(zoobaby, 15, .5)
 418					zoobaby:AddComponent("knownlocations")
 419					zoobaby:AddComponent("combat")
 420					zoobaby:AddComponent("health")
 421					zoobaby.components.health:SetMaxHealth(100)
 422					zoobaby:RemoveComponent("stackable")
 423					zoobaby:RemoveComponent("inventoryitem")
 424					zoobaby:RemoveComponent("edible")
 425					zoobaby:RemoveComponent("perishable")
 426					zoobaby:RemoveComponent("deployable")
 427					zoobaby:RemoveComponent("container")
 428					local minimap = zoobaby.entity:AddMiniMapEntity()
 429					minimap:SetIcon("monkey_barrel.png")
 430					zoobaby:AddComponent("follower")
 431					zoobaby.components.inspectable.getstatus = function(zoobaby)
 432						if not zoobaby:HasTag("followme") then
 433						   local brain = require "brains/abigailbrain"
 434						   zoobaby:SetBrain(brain)
 435						   zoobaby:RestartBrain()
 436						   zoobaby.components.follower:SetLeader(GetPlayer())
 437						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 438						   zoobaby:AddTag("followme")
 439						else
 440						   local brain = require "brains/frogbrain"
 441						   zoobaby:SetBrain(brain)
 442						   zoobaby:RestartBrain()
 443						   zoobaby.components.follower:SetLeader(nil)
 444						   zoobaby.AnimState:SetBloomEffectHandle("")
 445						   zoobaby:RemoveTag("followme")
 446						end
 447					end
 448					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 449						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 450					end )
 451					zoobaby:AddComponent("lootdropper")
 452					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 453					zoobaby:AddTag("zoobaby")
 454				 end
 455				 if target:HasTag("zoobaby2") then
 456					local zoobaby = SpawnPrefab("butter")
 457					local pt4 = target:GetPosition()
 458					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
 459					zoobaby.AnimState:SetBank("koalefant")
 460					zoobaby.AnimState:SetBuild("koalefant_summer_build")
 461					zoobaby.AnimState:PlayAnimation("idle_loop", true)
 462					zoobaby.entity:AddSoundEmitter()
 463					zoobaby.Transform:SetScale(0.5,0.5,0.5)
 464					zoobaby:AddComponent("locomotor")
 465					zoobaby.components.locomotor.walkspeed = 3
 466					zoobaby.components.locomotor.runspeed = 6
 467					zoobaby:SetStateGraph("SGkoalefant")
 468					zoobaby:AddTag("zoobaby2")
 469					local brain = require "brains/frogbrain"
 470					zoobaby:SetBrain(brain)
 471					zoobaby.Transform:SetFourFaced()
 472					MakeCharacterPhysics(zoobaby, 15, .5)
 473					zoobaby:AddComponent("knownlocations")
 474					zoobaby:AddComponent("combat")
 475					zoobaby:AddComponent("health")
 476					zoobaby.components.health:SetMaxHealth(100)
 477					zoobaby:RemoveComponent("stackable")
 478					zoobaby:RemoveComponent("inventoryitem")
 479					zoobaby:RemoveComponent("edible")
 480					zoobaby:RemoveComponent("perishable")
 481					zoobaby:RemoveComponent("deployable")
 482					zoobaby:RemoveComponent("container")
 483					local minimap = zoobaby.entity:AddMiniMapEntity()
 484					minimap:SetIcon("monkey_barrel.png")
 485					zoobaby:AddComponent("follower")
 486					zoobaby.components.inspectable.getstatus = function(zoobaby)
 487						if not zoobaby:HasTag("followme") then
 488						   local brain = require "brains/abigailbrain"
 489						   zoobaby:SetBrain(brain)
 490						   zoobaby:RestartBrain()
 491						   zoobaby.components.follower:SetLeader(GetPlayer())
 492						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 493						   zoobaby:AddTag("followme")
 494						else
 495						   local brain = require "brains/frogbrain"
 496						   zoobaby:SetBrain(brain)
 497						   zoobaby:RestartBrain()
 498						   zoobaby.components.follower:SetLeader(nil)
 499						   zoobaby.AnimState:SetBloomEffectHandle("")
 500						   zoobaby:RemoveTag("followme")
 501						end
 502					end
 503					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 504						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 505					end )
 506					zoobaby:AddComponent("lootdropper")
 507					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 508					zoobaby:AddTag("zoobaby")
 509				 end
 510				 if target:HasTag("zoobaby3") then
 511					local zoobaby = SpawnPrefab("butter")
 512					local pt4 = target:GetPosition()
 513					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
 514					zoobaby.AnimState:SetBank("koalefant")
 515					zoobaby.AnimState:SetBuild("koalefant_winter_build")
 516					zoobaby.AnimState:PlayAnimation("idle_loop", true)
 517					zoobaby.entity:AddSoundEmitter()
 518					zoobaby.Transform:SetScale(0.5,0.5,0.5)
 519					zoobaby:AddComponent("locomotor")
 520					zoobaby.components.locomotor.walkspeed = 3
 521					zoobaby.components.locomotor.runspeed = 6
 522					zoobaby:SetStateGraph("SGkoalefant")
 523					zoobaby:AddTag("zoobaby3")
 524					local brain = require "brains/frogbrain"
 525					zoobaby:SetBrain(brain)
 526					zoobaby.Transform:SetFourFaced()
 527					MakeCharacterPhysics(zoobaby, 15, .5)
 528					zoobaby:AddComponent("knownlocations")
 529					zoobaby:AddComponent("combat")
 530					zoobaby:AddComponent("health")
 531					zoobaby.components.health:SetMaxHealth(100)
 532					zoobaby:RemoveComponent("stackable")
 533					zoobaby:RemoveComponent("inventoryitem")
 534					zoobaby:RemoveComponent("edible")
 535					zoobaby:RemoveComponent("perishable")
 536					zoobaby:RemoveComponent("deployable")
 537					zoobaby:RemoveComponent("container")
 538					local minimap = zoobaby.entity:AddMiniMapEntity()
 539					minimap:SetIcon("monkey_barrel.png")
 540					zoobaby:AddComponent("follower")
 541					zoobaby.components.inspectable.getstatus = function(zoobaby)
 542						if not zoobaby:HasTag("followme") then
 543						   local brain = require "brains/abigailbrain"
 544						   zoobaby:SetBrain(brain)
 545						   zoobaby:RestartBrain()
 546						   zoobaby.components.follower:SetLeader(GetPlayer())
 547						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 548						   zoobaby:AddTag("followme")
 549						else
 550						   local brain = require "brains/frogbrain"
 551						   zoobaby:SetBrain(brain)
 552						   zoobaby:RestartBrain()
 553						   zoobaby.components.follower:SetLeader(nil)
 554						   zoobaby.AnimState:SetBloomEffectHandle("")
 555						   zoobaby:RemoveTag("followme")
 556						end
 557					end
 558					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 559						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 560					end )
 561					zoobaby:AddComponent("lootdropper")
 562					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 563					zoobaby:AddTag("zoobaby")
 564				 end
 565				 if target:HasTag("zoobaby4") then
 566					local zoobaby = SpawnPrefab("butter")
 567					local pt4 = target:GetPosition()
 568					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
 569					zoobaby.AnimState:SetBank("walrus")
 570					zoobaby.AnimState:SetBuild("walrus_baby_build")
 571					zoobaby.AnimState:PlayAnimation("idle_happy")
 572					zoobaby.entity:AddSoundEmitter()
 573					zoobaby.Transform:SetScale(0.8,0.8,0.8)
 574					zoobaby:AddComponent("locomotor")
 575					zoobaby.components.locomotor.walkspeed = 3
 576					zoobaby.components.locomotor.runspeed = 6
 577					zoobaby:SetStateGraph("SGwalrus")
 578					zoobaby:AddTag("zoobaby4")
 579					local brain = require "brains/frogbrain"
 580					zoobaby:SetBrain(brain)
 581					zoobaby.Transform:SetFourFaced()
 582					MakeCharacterPhysics(zoobaby, 15, .5)
 583					zoobaby:AddComponent("knownlocations")
 584					zoobaby:AddComponent("combat")
 585					zoobaby:AddComponent("health")
 586					zoobaby.components.health:SetMaxHealth(100)
 587					zoobaby:RemoveComponent("stackable")
 588					zoobaby:RemoveComponent("inventoryitem")
 589					zoobaby:RemoveComponent("edible")
 590					zoobaby:RemoveComponent("perishable")
 591					zoobaby:RemoveComponent("deployable")
 592					zoobaby:RemoveComponent("container")
 593					local minimap = zoobaby.entity:AddMiniMapEntity()
 594					minimap:SetIcon("monkey_barrel.png")
 595					zoobaby:AddComponent("follower")
 596					zoobaby.components.inspectable.getstatus = function(zoobaby)
 597						if not zoobaby:HasTag("followme") then
 598						   local brain = require "brains/abigailbrain"
 599						   zoobaby:SetBrain(brain)
 600						   zoobaby:RestartBrain()
 601						   zoobaby.components.follower:SetLeader(GetPlayer())
 602						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 603						   zoobaby:AddTag("followme")
 604						else
 605						   local brain = require "brains/frogbrain"
 606						   zoobaby:SetBrain(brain)
 607						   zoobaby:RestartBrain()
 608						   zoobaby.components.follower:SetLeader(nil)
 609						   zoobaby.AnimState:SetBloomEffectHandle("")
 610						   zoobaby:RemoveTag("followme")
 611						end
 612					end
 613					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 614						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 615					end )
 616					zoobaby:AddComponent("lootdropper")
 617					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 618					zoobaby:AddTag("zoobaby")
 619				 end
 620				 if target:HasTag("zoobaby5") then
 621					local zoobaby = SpawnPrefab("butter")
 622					local pt4 = target:GetPosition()
 623					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
 624					zoobaby.AnimState:SetBank("kiki")
 625					zoobaby.AnimState:SetBuild("kiki_basic")
 626					zoobaby.AnimState:PlayAnimation("idle_loop", true)
 627					zoobaby.entity:AddSoundEmitter()
 628				zoobaby.soundtype = ""
 629					zoobaby.Transform:SetScale(1.2,1.2,1.2)
 630					zoobaby:AddComponent("locomotor")
 631					zoobaby.components.locomotor.walkspeed = 3
 632					zoobaby.components.locomotor.runspeed = 6
 633					zoobaby:SetStateGraph("SGmonkey")
 634					zoobaby:AddTag("zoobaby5")
 635					local brain = require "brains/frogbrain"
 636					zoobaby:SetBrain(brain)
 637					zoobaby.Transform:SetFourFaced()
 638					MakeCharacterPhysics(zoobaby, 15, .5)
 639					zoobaby:AddComponent("knownlocations")
 640					zoobaby:AddComponent("combat")
 641					zoobaby:AddComponent("health")
 642					zoobaby.components.health:SetMaxHealth(100)
 643					zoobaby:RemoveComponent("stackable")
 644					zoobaby:RemoveComponent("inventoryitem")
 645					zoobaby:RemoveComponent("edible")
 646					zoobaby:RemoveComponent("perishable")
 647					zoobaby:RemoveComponent("deployable")
 648					zoobaby:RemoveComponent("container")
 649					local minimap = zoobaby.entity:AddMiniMapEntity()
 650					minimap:SetIcon("monkey_barrel.png")
 651					zoobaby:AddComponent("follower")
 652					zoobaby.components.inspectable.getstatus = function(zoobaby)
 653						if not zoobaby:HasTag("followme") then
 654						   local brain = require "brains/abigailbrain"
 655						   zoobaby:SetBrain(brain)
 656						   zoobaby:RestartBrain()
 657						   zoobaby.components.follower:SetLeader(GetPlayer())
 658						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 659						   zoobaby:AddTag("followme")
 660						else
 661						   local brain = require "brains/frogbrain"
 662						   zoobaby:SetBrain(brain)
 663						   zoobaby:RestartBrain()
 664						   zoobaby.components.follower:SetLeader(nil)
 665						   zoobaby.AnimState:SetBloomEffectHandle("")
 666						   zoobaby:RemoveTag("followme")
 667						end
 668					end
 669					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 670						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 671					end )
 672					zoobaby:AddComponent("lootdropper")
 673					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 674					zoobaby:AddTag("zoobaby")
 675				 end
 676			  end
 677		   else
 678			  target.components.health:Kill()
 679		   end
 680		end
 681	end )
 682	zooroom:AddComponent("workable")
 683	zooroom.components.workable:SetWorkAction(ACTIONS.HAMMER)
 684	zooroom.components.workable:SetWorkLeft(3)
 685	zooroom.components.workable:SetOnFinishCallback(function(zooroom)
 686		local pos = Vector3(zooroom.Transform:GetWorldPosition())
 687		local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10)
 688		for k,v in pairs(ents) do
 689			if v:HasTag("zoofence") or v:HasTag("brand") then
 690			   SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
 691			   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
 692			   v:Remove()
 693			end
 694		end
 695		zooroom:Remove()
 696	end )
 697	local pt0 = Vector3(zooroom.Transform:GetWorldPosition())
 698	for k = 1, 40 do
 699		local result_offset = FindValidPositionByFan(1 * 2 * PI, 8, 40, function(offset)
 700			local x,y,z = (pt0 + offset):Get()
 701			local ents = TheSim:FindEntities(x,y,z , 1)
 702			return not next(ents) 
 703		end)
 704		if result_offset then
 705		   local zoofence = SpawnPrefab("butter")
 706		   zoofence.AnimState:SetBank("wall")
 707		   zoofence.AnimState:SetBuild("wall_wood")
 708		   zoofence.AnimState:PlayAnimation("1_2", false)
 709		   MakeObstaclePhysics(zoofence, .5)
 710		   zoofence:RemoveComponent("stackable")
 711		   zoofence:RemoveComponent("inventoryitem")
 712		   zoofence:RemoveComponent("edible")
 713		   zoofence:RemoveComponent("perishable")
 714		   zoofence:RemoveComponent("deployable")
 715		   zoofence:RemoveComponent("container")
 716		   zoofence:AddTag("zoofence")
 717		   zoofence.Transform:SetPosition((pt0 + result_offset):Get())
 718		   zoofence.components.inspectable.getstatus = function(zoofence)
 719			   zoofence.Transform:SetScale(1, 0.1, 1)
 720			   zoofence.Physics:SetActive(false)
 721			   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
 722			   zoofence:DoTaskInTime(5, function(zoofence)
 723				   zoofence.Transform:SetScale(1, 1, 1)
 724				   zoofence.Physics:SetActive(true)
 725				   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
 726			   end )
 727		   end
 728		end
 729	end
 730	inst.components.stackable:Get():Remove()
 731end
 732	inst:AddComponent("deployable")
 733	inst.components.deployable.ondeploy = OnDeploy
 734	inst:AddComponent("container")
 735	inst.components.container:SetNumSlots(#slotpos)
 736	inst.components.container.widgetslotpos = slotpos
 737	inst.components.container.widgetpos = Vector3(0,180,0)
 738	inst.components.container.side_align_tip = 160
 739	inst.components.container.itemtestfn = itemtest
 740	inst.components.container.canbeopened = false
 741	inst.components.container.widgetbuttoninfo = widgetbuttoninfo
 742local function onsave(inst, data)
 743	if inst:HasTag("brand") then
 744		data.brand = true
 745	end
 746	if inst:HasTag("zooroom") then
 747		data.zooroom = true
 748	end
 749	if inst:HasTag("zoofence") then
 750		data.zoofence = true
 751	end
 752	if inst:HasTag("zoobaby1") then
 753		data.zoobaby1 = true
 754	end
 755	if inst:HasTag("zoobaby2") then
 756		data.zoobaby2 = true
 757	end
 758	if inst:HasTag("zoobaby3") then
 759		data.zoobaby3 = true
 760	end
 761	if inst:HasTag("zoobaby4") then
 762		data.zoobaby4 = true
 763	end
 764	if inst:HasTag("zoobaby5") then
 765		data.zoobaby5 = true
 766	end
 767	if inst:HasTag("followme") then
 768		data.followme = true
 769	end
 770end
 771local function onload(inst, data)
 772  if data and data.brand then
 773	inst.AnimState:SetBank("sign_home")
 774	inst.AnimState:SetBuild("sign_home")
 775	inst.AnimState:PlayAnimation("idle")
 776	inst.Transform:SetScale(0.8, 0.8, 0.8)
 777	inst.AnimState:SetMultColour(0/255,255/255,0/255,1)
 778	inst:RemoveComponent("stackable")
 779	inst:RemoveComponent("inventoryitem")
 780	inst:RemoveComponent("edible")
 781	inst:RemoveComponent("perishable")
 782	inst:RemoveComponent("deployable")
 783	inst:RemoveComponent("container")
 784	inst:AddTag("brand")
 785	local slotpos1 = { Vector3(0,-75,0)}
 786	inst:AddComponent("container")
 787	inst.components.container:SetNumSlots(#slotpos1)
 788	inst.components.container.widgetslotpos = slotpos1
 789	inst.components.container.widgetpos = Vector3(0,180,0)
 790	inst.components.container.side_align_tip = 160
 791	inst.components.container.acceptsstacks = false
 792	inst.components.container.itemtestfn = function(inst, item, slot)
 793		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
 794		   return true
 795		end
 796		return false
 797	end
 798	inst.components.container.widgetbuttoninfo = {
 799		text = "Buy",
 800		position = Vector3(0, -145, 0),
 801		fn = function(inst)
 802			if GetPlayer().components.inventory:Has("goldnugget", 30) then
 803			   if inst.components.container:Has("charcoal", 1) then
 804				  inst.components.container:ConsumeByName("charcoal", 1)
 805				  local zoobaby = SpawnPrefab("butter")
 806				  local pt1 = inst:GetPosition()
 807				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 808				  zoobaby.AnimState:SetBank("krampus")
 809				  zoobaby.AnimState:SetBuild("krampus_build")
 810				  zoobaby.AnimState:PlayAnimation("idle", true)
 811			  zoobaby.entity:AddSoundEmitter()
 812				  zoobaby.AnimState:Hide("SACK")
 813				  zoobaby.AnimState:Show("ARM")
 814				  zoobaby.Transform:SetScale(0.7,0.7,0.7)
 815				  zoobaby:AddComponent("locomotor")
 816				  zoobaby.components.locomotor.walkspeed = 3
 817				  zoobaby.components.locomotor.runspeed = 6
 818				  zoobaby:SetStateGraph("SGkrampus")
 819				  zoobaby:AddTag("zoobaby1")
 820				  local brain = require "brains/frogbrain"
 821				  zoobaby:SetBrain(brain)
 822				  zoobaby.Transform:SetFourFaced()
 823				  MakeCharacterPhysics(zoobaby, 15, .5)
 824				  zoobaby:AddComponent("knownlocations")
 825				  zoobaby:AddComponent("combat")
 826				  zoobaby:AddComponent("health")
 827				  zoobaby.components.health:SetMaxHealth(100)
 828				  zoobaby:RemoveComponent("stackable")
 829				  zoobaby:RemoveComponent("inventoryitem")
 830				  zoobaby:RemoveComponent("edible")
 831				  zoobaby:RemoveComponent("perishable")
 832				  zoobaby:RemoveComponent("deployable")
 833				  zoobaby:RemoveComponent("container")
 834				  local minimap = zoobaby.entity:AddMiniMapEntity()
 835				  minimap:SetIcon("monkey_barrel.png")
 836				  zoobaby:AddComponent("follower")
 837				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 838					  if not zoobaby:HasTag("followme") then
 839						 local brain = require "brains/abigailbrain"
 840						 zoobaby:SetBrain(brain)
 841						 zoobaby:RestartBrain()
 842						 zoobaby.components.follower:SetLeader(GetPlayer())
 843						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 844						 zoobaby:AddTag("followme")
 845					  else
 846						 local brain = require "brains/frogbrain"
 847						 zoobaby:SetBrain(brain)
 848						 zoobaby:RestartBrain()
 849						 zoobaby.components.follower:SetLeader(nil)
 850						 zoobaby.AnimState:SetBloomEffectHandle("")
 851						 zoobaby:RemoveTag("followme")
 852					  end
 853				  end
 854				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 855					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 856				  end )
 857				  zoobaby:AddComponent("lootdropper")
 858				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 859				  zoobaby:AddTag("zoobaby")
 860				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 861				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 862			   end
 863			   if inst.components.container:Has("trunk_summer", 1) then
 864				  inst.components.container:ConsumeByName("trunk_summer", 1)
 865				  local zoobaby = SpawnPrefab("butter")
 866				  local pt1 = inst:GetPosition()
 867				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 868				  zoobaby.AnimState:SetBank("koalefant")
 869				  zoobaby.AnimState:SetBuild("koalefant_summer_build")
 870				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
 871			  zoobaby.entity:AddSoundEmitter()
 872				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
 873				  zoobaby:AddComponent("locomotor")
 874				  zoobaby.components.locomotor.walkspeed = 3
 875				  zoobaby.components.locomotor.runspeed = 6
 876				  zoobaby:SetStateGraph("SGkoalefant")
 877				  zoobaby:AddTag("zoobaby2")
 878				  local brain = require "brains/frogbrain"
 879				  zoobaby:SetBrain(brain)
 880				  zoobaby.Transform:SetFourFaced()
 881				  MakeCharacterPhysics(zoobaby, 15, .5)
 882				  zoobaby:AddComponent("knownlocations")
 883				  zoobaby:AddComponent("combat")
 884				  zoobaby:AddComponent("health")
 885				  zoobaby.components.health:SetMaxHealth(100)
 886				  zoobaby:RemoveComponent("stackable")
 887				  zoobaby:RemoveComponent("inventoryitem")
 888				  zoobaby:RemoveComponent("edible")
 889				  zoobaby:RemoveComponent("perishable")
 890				  zoobaby:RemoveComponent("deployable")
 891				  zoobaby:RemoveComponent("container")
 892				  local minimap = zoobaby.entity:AddMiniMapEntity()
 893				  minimap:SetIcon("monkey_barrel.png")
 894				  zoobaby:AddComponent("follower")
 895				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 896					  if not zoobaby:HasTag("followme") then
 897						 local brain = require "brains/abigailbrain"
 898						 zoobaby:SetBrain(brain)
 899						 zoobaby:RestartBrain()
 900						 zoobaby.components.follower:SetLeader(GetPlayer())
 901						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 902						 zoobaby:AddTag("followme")
 903					  else
 904						 local brain = require "brains/frogbrain"
 905						 zoobaby:SetBrain(brain)
 906						 zoobaby:RestartBrain()
 907						 zoobaby.components.follower:SetLeader(nil)
 908						 zoobaby.AnimState:SetBloomEffectHandle("")
 909						 zoobaby:RemoveTag("followme")
 910					  end
 911				  end
 912				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 913					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 914				  end )
 915				  zoobaby:AddComponent("lootdropper")
 916				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 917				  zoobaby:AddTag("zoobaby")
 918				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 919				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 920			   end
 921			   if inst.components.container:Has("trunk_winter", 1) then
 922				  inst.components.container:ConsumeByName("trunk_winter", 1)
 923				  local zoobaby = SpawnPrefab("butter")
 924				  local pt1 = inst:GetPosition()
 925				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 926				  zoobaby.AnimState:SetBank("koalefant")
 927				  zoobaby.AnimState:SetBuild("koalefant_winter_build")
 928				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
 929			  zoobaby.entity:AddSoundEmitter()
 930				  zoobaby.Transform:SetScale(0.5,0.5,0.5)
 931				  zoobaby:AddComponent("locomotor")
 932				  zoobaby.components.locomotor.walkspeed = 3
 933				  zoobaby.components.locomotor.runspeed = 6
 934				  zoobaby:SetStateGraph("SGkoalefant")
 935				  zoobaby:AddTag("zoobaby3")
 936				  local brain = require "brains/frogbrain"
 937				  zoobaby:SetBrain(brain)
 938				  zoobaby.Transform:SetFourFaced()
 939				  MakeCharacterPhysics(zoobaby, 15, .5)
 940				  zoobaby:AddComponent("knownlocations")
 941				  zoobaby:AddComponent("combat")
 942				  zoobaby:AddComponent("health")
 943				  zoobaby.components.health:SetMaxHealth(100)
 944				  zoobaby:RemoveComponent("stackable")
 945				  zoobaby:RemoveComponent("inventoryitem")
 946				  zoobaby:RemoveComponent("edible")
 947				  zoobaby:RemoveComponent("perishable")
 948				  zoobaby:RemoveComponent("deployable")
 949				  zoobaby:RemoveComponent("container")
 950				  local minimap = zoobaby.entity:AddMiniMapEntity()
 951				  minimap:SetIcon("monkey_barrel.png")
 952				  zoobaby:AddComponent("follower")
 953				  zoobaby.components.inspectable.getstatus = function(zoobaby)
 954					  if not zoobaby:HasTag("followme") then
 955						 local brain = require "brains/abigailbrain"
 956						 zoobaby:SetBrain(brain)
 957						 zoobaby:RestartBrain()
 958						 zoobaby.components.follower:SetLeader(GetPlayer())
 959						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 960						 zoobaby:AddTag("followme")
 961					  else
 962						 local brain = require "brains/frogbrain"
 963						 zoobaby:SetBrain(brain)
 964						 zoobaby:RestartBrain()
 965						 zoobaby.components.follower:SetLeader(nil)
 966						 zoobaby.AnimState:SetBloomEffectHandle("")
 967						 zoobaby:RemoveTag("followme")
 968					  end
 969				  end
 970				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
 971					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
 972				  end )
 973				  zoobaby:AddComponent("lootdropper")
 974				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
 975				  zoobaby:AddTag("zoobaby")
 976				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 977				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
 978			   end
 979			   if inst.components.container:Has("walrus_tusk", 1) then
 980				  inst.components.container:ConsumeByName("walrus_tusk", 1)
 981				  local zoobaby = SpawnPrefab("butter")
 982				  local pt1 = inst:GetPosition()
 983				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
 984				  zoobaby.AnimState:SetBank("walrus")
 985				  zoobaby.AnimState:SetBuild("walrus_baby_build")
 986				  zoobaby.AnimState:PlayAnimation("idle_happy")
 987			  zoobaby.entity:AddSoundEmitter()
 988				  zoobaby.Transform:SetScale(0.8,0.8,0.8)
 989				  zoobaby:AddComponent("locomotor")
 990				  zoobaby.components.locomotor.walkspeed = 3
 991				  zoobaby.components.locomotor.runspeed = 6
 992				  zoobaby:SetStateGraph("SGwalrus")
 993				  zoobaby:AddTag("zoobaby4")
 994				  local brain = require "brains/frogbrain"
 995				  zoobaby:SetBrain(brain)
 996				  zoobaby.Transform:SetFourFaced()
 997				  MakeCharacterPhysics(zoobaby, 15, .5)
 998				  zoobaby:AddComponent("knownlocations")
 999				  zoobaby:AddComponent("combat")
1000				  zoobaby:AddComponent("health")
1001				  zoobaby.components.health:SetMaxHealth(100)
1002				  zoobaby:RemoveComponent("stackable")
1003				  zoobaby:RemoveComponent("inventoryitem")
1004				  zoobaby:RemoveComponent("edible")
1005				  zoobaby:RemoveComponent("perishable")
1006				  zoobaby:RemoveComponent("deployable")
1007				  zoobaby:RemoveComponent("container")
1008				  local minimap = zoobaby.entity:AddMiniMapEntity()
1009				  minimap:SetIcon("monkey_barrel.png")
1010				  zoobaby:AddComponent("follower")
1011				  zoobaby.components.inspectable.getstatus = function(zoobaby)
1012					  if not zoobaby:HasTag("followme") then
1013						 local brain = require "brains/abigailbrain"
1014						 zoobaby:SetBrain(brain)
1015						 zoobaby:RestartBrain()
1016						 zoobaby.components.follower:SetLeader(GetPlayer())
1017						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1018						 zoobaby:AddTag("followme")
1019					  else
1020						 local brain = require "brains/frogbrain"
1021						 zoobaby:SetBrain(brain)
1022						 zoobaby:RestartBrain()
1023						 zoobaby.components.follower:SetLeader(nil)
1024						 zoobaby.AnimState:SetBloomEffectHandle("")
1025						 zoobaby:RemoveTag("followme")
1026					  end
1027				  end
1028				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1029					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1030				  end )
1031				  zoobaby:AddComponent("lootdropper")
1032				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1033				  zoobaby:AddTag("zoobaby")
1034				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
1035				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
1036			   end
1037			   if inst.components.container:Has("cave_banana", 1) then
1038				  inst.components.container:ConsumeByName("cave_banana", 1)
1039				  local zoobaby = SpawnPrefab("butter")
1040				  local pt1 = inst:GetPosition()
1041				  zoobaby.Transform:SetPosition(pt1.x-6, 0, pt1.z-6)
1042				  zoobaby.AnimState:SetBank("kiki")
1043				  zoobaby.AnimState:SetBuild("kiki_basic")
1044				  zoobaby.AnimState:PlayAnimation("idle_loop", true)
1045			  zoobaby.entity:AddSoundEmitter()
1046			  zoobaby.soundtype = ""
1047				  zoobaby.Transform:SetScale(1.2,1.2,1.2)
1048				  zoobaby:AddComponent("locomotor")
1049				  zoobaby.components.locomotor.walkspeed = 3
1050				  zoobaby.components.locomotor.runspeed = 6
1051				  zoobaby:SetStateGraph("SGmonkey")
1052				  zoobaby:AddTag("zoobaby5")
1053				  local brain = require "brains/frogbrain"
1054				  zoobaby:SetBrain(brain)
1055				  zoobaby.Transform:SetFourFaced()
1056				  MakeCharacterPhysics(zoobaby, 15, .5)
1057				  zoobaby:AddComponent("knownlocations")
1058				  zoobaby:AddComponent("combat")
1059				  zoobaby:AddComponent("health")
1060				  zoobaby.components.health:SetMaxHealth(100)
1061				  zoobaby:RemoveComponent("stackable")
1062				  zoobaby:RemoveComponent("inventoryitem")
1063				  zoobaby:RemoveComponent("edible")
1064				  zoobaby:RemoveComponent("perishable")
1065				  zoobaby:RemoveComponent("deployable")
1066				  zoobaby:RemoveComponent("container")
1067				  local minimap = zoobaby.entity:AddMiniMapEntity()
1068				  minimap:SetIcon("monkey_barrel.png")
1069				  zoobaby:AddComponent("follower")
1070				  zoobaby.components.inspectable.getstatus = function(zoobaby)
1071					  if not zoobaby:HasTag("followme") then
1072						 local brain = require "brains/abigailbrain"
1073						 zoobaby:SetBrain(brain)
1074						 zoobaby:RestartBrain()
1075						 zoobaby.components.follower:SetLeader(GetPlayer())
1076						 zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1077						 zoobaby:AddTag("followme")
1078					  else
1079						 local brain = require "brains/frogbrain"
1080						 zoobaby:SetBrain(brain)
1081						 zoobaby:RestartBrain()
1082						 zoobaby.components.follower:SetLeader(nil)
1083						 zoobaby.AnimState:SetBloomEffectHandle("")
1084						 zoobaby:RemoveTag("followme")
1085					  end
1086				  end
1087				  zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1088					  SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1089				  end )
1090				  zoobaby:AddComponent("lootdropper")
1091				  zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1092				  zoobaby:AddTag("zoobaby")
1093				  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
1094				  GetPlayer().components.inventory:ConsumeByName("goldnugget", 30)
1095			   end
1096			end
1097	end }
1098  end
1099  if data and data.zooroom then
1100	inst.AnimState:SetBank("rabbithouse")
1101	inst.AnimState:SetBuild("rabbit_house")
1102	inst.AnimState:PlayAnimation("idle", true)
1103	inst.Transform:SetScale(0.4, 0.4, 0.4)
1104	inst:RemoveComponent("stackable")
1105	inst:RemoveComponent("inventoryitem")
1106	inst:RemoveComponent("edible")
1107	inst:RemoveComponent("perishable")
1108	inst:RemoveComponent("deployable")
1109	inst.components.container.canbeopened = true
1110	inst.entity:AddLight()
1111	inst.Light:SetFalloff(1)
1112	inst.Light:SetIntensity(.8)
1113	inst.Light:SetRadius(15)
1114	inst.Light:SetColour(180/255, 195/255, 50/255)
1115	inst.Light:Enable(true)
1116	inst:AddTag("zooroom")
1117	inst:DoPeriodicTask(180, function(inst)
1118		local target = FindEntity(inst, 9, function(guy) 
1119			return guy:HasTag("zoobaby")
1120		end )
1121		if target then
1122		   local target1 = FindEntity(inst, 9, function(guy) 
1123			   return guy.prefab == "poop"
1124		   end )
1125		   if not target1 then
1126			  for k = 1,math.random(5,10) do
1127				  local pt2 = inst:GetPosition()
1128				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
1129			  end
1130		   else
1131			  for k = 1,math.random(1,3) do
1132				  local pt2 = inst:GetPosition()
1133				  SpawnPrefab("goldnugget").Transform:SetPosition(pt2.x+7.5, 0, pt2.z+7.5)
1134			  end
1135		   end
1136		   if inst.components.container:Has("carrot", 3) then
1137			  inst.components.container:ConsumeByName("carrot", 3)
1138			  if math.random()<0.1 then
1139				 if target:HasTag("zoobaby1") then
1140					local zoobaby = SpawnPrefab("butter")
1141					local pt4 = target:GetPosition()
1142					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
1143					zoobaby.AnimState:SetBank("krampus")
1144					zoobaby.AnimState:SetBuild("krampus_build")
1145					zoobaby.AnimState:PlayAnimation("idle", true)
1146					zoobaby.entity:AddSoundEmitter()
1147					zoobaby.AnimState:Hide("SACK")
1148					zoobaby.AnimState:Show("ARM")
1149					zoobaby.Transform:SetScale(0.7,0.7,0.7)
1150					zoobaby:AddComponent("locomotor")
1151					zoobaby.components.locomotor.walkspeed = 3
1152					zoobaby.components.locomotor.runspeed = 6
1153					zoobaby:SetStateGraph("SGkrampus")
1154					zoobaby:AddTag("zoobaby1")
1155					local brain = require "brains/frogbrain"
1156					zoobaby:SetBrain(brain)
1157					zoobaby.Transform:SetFourFaced()
1158					MakeCharacterPhysics(zoobaby, 15, .5)
1159					zoobaby:AddComponent("knownlocations")
1160					zoobaby:AddComponent("combat")
1161					zoobaby:AddComponent("health")
1162					zoobaby.components.health:SetMaxHealth(100)
1163					zoobaby:RemoveComponent("stackable")
1164					zoobaby:RemoveComponent("inventoryitem")
1165					zoobaby:RemoveComponent("edible")
1166					zoobaby:RemoveComponent("perishable")
1167					zoobaby:RemoveComponent("deployable")
1168					zoobaby:RemoveComponent("container")
1169					local minimap = zoobaby.entity:AddMiniMapEntity()
1170					minimap:SetIcon("monkey_barrel.png")
1171					zoobaby:AddComponent("follower")
1172					zoobaby.components.inspectable.getstatus = function(zoobaby)
1173						if not zoobaby:HasTag("followme") then
1174						   local brain = require "brains/abigailbrain"
1175						   zoobaby:SetBrain(brain)
1176						   zoobaby:RestartBrain()
1177						   zoobaby.components.follower:SetLeader(GetPlayer())
1178						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1179						   zoobaby:AddTag("followme")
1180						else
1181						   local brain = require "brains/frogbrain"
1182						   zoobaby:SetBrain(brain)
1183						   zoobaby:RestartBrain()
1184						   zoobaby.components.follower:SetLeader(nil)
1185						   zoobaby.AnimState:SetBloomEffectHandle("")
1186						   zoobaby:RemoveTag("followme")
1187						end
1188					end
1189					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1190						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1191					end )
1192					zoobaby:AddComponent("lootdropper")
1193					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1194					zoobaby:AddTag("zoobaby")
1195				 end
1196				 if target:HasTag("zoobaby2") then
1197					local zoobaby = SpawnPrefab("butter")
1198					local pt4 = target:GetPosition()
1199					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
1200					zoobaby.AnimState:SetBank("koalefant")
1201					zoobaby.AnimState:SetBuild("koalefant_summer_build")
1202					zoobaby.AnimState:PlayAnimation("idle_loop", true)
1203					zoobaby.entity:AddSoundEmitter()
1204					zoobaby.Transform:SetScale(0.5,0.5,0.5)
1205					zoobaby:AddComponent("locomotor")
1206					zoobaby.components.locomotor.walkspeed = 3
1207					zoobaby.components.locomotor.runspeed = 6
1208					zoobaby:SetStateGraph("SGkoalefant")
1209					zoobaby:AddTag("zoobaby2")
1210					local brain = require "brains/frogbrain"
1211					zoobaby:SetBrain(brain)
1212					zoobaby.Transform:SetFourFaced()
1213					MakeCharacterPhysics(zoobaby, 15, .5)
1214					zoobaby:AddComponent("knownlocations")
1215					zoobaby:AddComponent("combat")
1216					zoobaby:AddComponent("health")
1217					zoobaby.components.health:SetMaxHealth(100)
1218					zoobaby:RemoveComponent("stackable")
1219					zoobaby:RemoveComponent("inventoryitem")
1220					zoobaby:RemoveComponent("edible")
1221					zoobaby:RemoveComponent("perishable")
1222					zoobaby:RemoveComponent("deployable")
1223					zoobaby:RemoveComponent("container")
1224					local minimap = zoobaby.entity:AddMiniMapEntity()
1225					minimap:SetIcon("monkey_barrel.png")
1226					zoobaby:AddComponent("follower")
1227					zoobaby.components.inspectable.getstatus = function(zoobaby)
1228						if not zoobaby:HasTag("followme") then
1229						   local brain = require "brains/abigailbrain"
1230						   zoobaby:SetBrain(brain)
1231						   zoobaby:RestartBrain()
1232						   zoobaby.components.follower:SetLeader(GetPlayer())
1233						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1234						   zoobaby:AddTag("followme")
1235						else
1236						   local brain = require "brains/frogbrain"
1237						   zoobaby:SetBrain(brain)
1238						   zoobaby:RestartBrain()
1239						   zoobaby.components.follower:SetLeader(nil)
1240						   zoobaby.AnimState:SetBloomEffectHandle("")
1241						   zoobaby:RemoveTag("followme")
1242						end
1243					end
1244					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1245						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1246					end )
1247					zoobaby:AddComponent("lootdropper")
1248					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1249					zoobaby:AddTag("zoobaby")
1250				 end
1251				 if target:HasTag("zoobaby3") then
1252					local zoobaby = SpawnPrefab("butter")
1253					local pt4 = target:GetPosition()
1254					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
1255					zoobaby.AnimState:SetBank("koalefant")
1256					zoobaby.AnimState:SetBuild("koalefant_winter_build")
1257					zoobaby.AnimState:PlayAnimation("idle_loop", true)
1258					zoobaby.entity:AddSoundEmitter()
1259					zoobaby.Transform:SetScale(0.5,0.5,0.5)
1260					zoobaby:AddComponent("locomotor")
1261					zoobaby.components.locomotor.walkspeed = 3
1262					zoobaby.components.locomotor.runspeed = 6
1263					zoobaby:SetStateGraph("SGkoalefant")
1264					zoobaby:AddTag("zoobaby3")
1265					local brain = require "brains/frogbrain"
1266					zoobaby:SetBrain(brain)
1267					zoobaby.Transform:SetFourFaced()
1268					MakeCharacterPhysics(zoobaby, 15, .5)
1269					zoobaby:AddComponent("knownlocations")
1270					zoobaby:AddComponent("combat")
1271					zoobaby:AddComponent("health")
1272					zoobaby.components.health:SetMaxHealth(100)
1273					zoobaby:RemoveComponent("stackable")
1274					zoobaby:RemoveComponent("inventoryitem")
1275					zoobaby:RemoveComponent("edible")
1276					zoobaby:RemoveComponent("perishable")
1277					zoobaby:RemoveComponent("deployable")
1278					zoobaby:RemoveComponent("container")
1279					local minimap = zoobaby.entity:AddMiniMapEntity()
1280					minimap:SetIcon("monkey_barrel.png")
1281					zoobaby:AddComponent("follower")
1282					zoobaby.components.inspectable.getstatus = function(zoobaby)
1283						if not zoobaby:HasTag("followme") then
1284						   local brain = require "brains/abigailbrain"
1285						   zoobaby:SetBrain(brain)
1286						   zoobaby:RestartBrain()
1287						   zoobaby.components.follower:SetLeader(GetPlayer())
1288						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1289						   zoobaby:AddTag("followme")
1290						else
1291						   local brain = require "brains/frogbrain"
1292						   zoobaby:SetBrain(brain)
1293						   zoobaby:RestartBrain()
1294						   zoobaby.components.follower:SetLeader(nil)
1295						   zoobaby.AnimState:SetBloomEffectHandle("")
1296						   zoobaby:RemoveTag("followme")
1297						end
1298					end
1299					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1300						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1301					end )
1302					zoobaby:AddComponent("lootdropper")
1303					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1304					zoobaby:AddTag("zoobaby")
1305				 end
1306				 if target:HasTag("zoobaby4") then
1307					local zoobaby = SpawnPrefab("butter")
1308					local pt4 = target:GetPosition()
1309					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
1310					zoobaby.AnimState:SetBank("walrus")
1311					zoobaby.AnimState:SetBuild("walrus_baby_build")
1312					zoobaby.AnimState:PlayAnimation("idle_happy")
1313					zoobaby.entity:AddSoundEmitter()
1314					zoobaby.Transform:SetScale(0.8,0.8,0.8)
1315					zoobaby:AddComponent("locomotor")
1316					zoobaby.components.locomotor.walkspeed = 3
1317					zoobaby.components.locomotor.runspeed = 6
1318					zoobaby:SetStateGraph("SGwalrus")
1319					zoobaby:AddTag("zoobaby4")
1320					local brain = require "brains/frogbrain"
1321					zoobaby:SetBrain(brain)
1322					zoobaby.Transform:SetFourFaced()
1323					MakeCharacterPhysics(zoobaby, 15, .5)
1324					zoobaby:AddComponent("knownlocations")
1325					zoobaby:AddComponent("combat")
1326					zoobaby:AddComponent("health")
1327					zoobaby.components.health:SetMaxHealth(100)
1328					zoobaby:RemoveComponent("stackable")
1329					zoobaby:RemoveComponent("inventoryitem")
1330					zoobaby:RemoveComponent("edible")
1331					zoobaby:RemoveComponent("perishable")
1332					zoobaby:RemoveComponent("deployable")
1333					zoobaby:RemoveComponent("container")
1334					local minimap = zoobaby.entity:AddMiniMapEntity()
1335					minimap:SetIcon("monkey_barrel.png")
1336					zoobaby:AddComponent("follower")
1337					zoobaby.components.inspectable.getstatus = function(zoobaby)
1338						if not zoobaby:HasTag("followme") then
1339						   local brain = require "brains/abigailbrain"
1340						   zoobaby:SetBrain(brain)
1341						   zoobaby:RestartBrain()
1342						   zoobaby.components.follower:SetLeader(GetPlayer())
1343						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1344						   zoobaby:AddTag("followme")
1345						else
1346						   local brain = require "brains/frogbrain"
1347						   zoobaby:SetBrain(brain)
1348						   zoobaby:RestartBrain()
1349						   zoobaby.components.follower:SetLeader(nil)
1350						   zoobaby.AnimState:SetBloomEffectHandle("")
1351						   zoobaby:RemoveTag("followme")
1352						end
1353					end
1354					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1355						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1356					end )
1357					zoobaby:AddComponent("lootdropper")
1358					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1359					zoobaby:AddTag("zoobaby")
1360				 end
1361				 if target:HasTag("zoobaby5") then
1362					local zoobaby = SpawnPrefab("butter")
1363					local pt4 = target:GetPosition()
1364					zoobaby.Transform:SetPosition(pt4.x, 0, pt4.z)
1365					zoobaby.AnimState:SetBank("kiki")
1366					zoobaby.AnimState:SetBuild("kiki_basic")
1367					zoobaby.AnimState:PlayAnimation("idle_loop", true)
1368					zoobaby.entity:AddSoundEmitter()
1369				zoobaby.soundtype = ""
1370					zoobaby.Transform:SetScale(1.2,1.2,1.2)
1371					zoobaby:AddComponent("locomotor")
1372					zoobaby.components.locomotor.walkspeed = 3
1373					zoobaby.components.locomotor.runspeed = 6
1374					zoobaby:SetStateGraph("SGmonkey")
1375					zoobaby:AddTag("zoobaby5")
1376					local brain = require "brains/frogbrain"
1377					zoobaby:SetBrain(brain)
1378					zoobaby.Transform:SetFourFaced()
1379					MakeCharacterPhysics(zoobaby, 15, .5)
1380					zoobaby:AddComponent("knownlocations")
1381					zoobaby:AddComponent("combat")
1382					zoobaby:AddComponent("health")
1383					zoobaby.components.health:SetMaxHealth(100)
1384					zoobaby:RemoveComponent("stackable")
1385					zoobaby:RemoveComponent("inventoryitem")
1386					zoobaby:RemoveComponent("edible")
1387					zoobaby:RemoveComponent("perishable")
1388					zoobaby:RemoveComponent("deployable")
1389					zoobaby:RemoveComponent("container")
1390					local minimap = zoobaby.entity:AddMiniMapEntity()
1391					minimap:SetIcon("monkey_barrel.png")
1392					zoobaby:AddComponent("follower")
1393					zoobaby.components.inspectable.getstatus = function(zoobaby)
1394						if not zoobaby:HasTag("followme") then
1395						   local brain = require "brains/abigailbrain"
1396						   zoobaby:SetBrain(brain)
1397						   zoobaby:RestartBrain()
1398						   zoobaby.components.follower:SetLeader(GetPlayer())
1399						   zoobaby.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1400						   zoobaby:AddTag("followme")
1401						else
1402						   local brain = require "brains/frogbrain"
1403						   zoobaby:SetBrain(brain)
1404						   zoobaby:RestartBrain()
1405						   zoobaby.components.follower:SetLeader(nil)
1406						   zoobaby.AnimState:SetBloomEffectHandle("")
1407						   zoobaby:RemoveTag("followme")
1408						end
1409					end
1410					zoobaby:DoPeriodicTask(math.random(360, 480), function(zoobaby)
1411						SpawnPrefab("poop").Transform:SetPosition(zoobaby.Transform:GetWorldPosition())
1412					end )
1413					zoobaby:AddComponent("lootdropper")
1414					zoobaby.components.lootdropper:SetLoot({"smallmeat"})
1415					zoobaby:AddTag("zoobaby")
1416				 end
1417			  end
1418		   else
1419			  target.components.health:Kill()
1420		   end
1421		end
1422	end )
1423	inst:AddComponent("workable")
1424	inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
1425	inst.components.workable:SetWorkLeft(3)
1426	inst.components.workable:SetOnFinishCallback(function(inst)
1427		local pos = Vector3(inst.Transform:GetWorldPosition())
1428		local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10)
1429		for k,v in pairs(ents) do
1430			if v:HasTag("zoofence") or v:HasTag("brand") then
1431			   SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
1432			   GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
1433			   v:Remove()
1434			end
1435		end
1436		inst:Remove()
1437	end )
1438  end
1439  if data and data.zoofence then
1440	inst.AnimState:SetBank("wall")
1441	inst.AnimState:SetBuild("wall_wood")
1442	inst.AnimState:PlayAnimation("1_2", false)
1443	MakeObstaclePhysics(inst, .5)
1444	inst:RemoveComponent("stackable")
1445	inst:RemoveComponent("inventoryitem")
1446	inst:RemoveComponent("edible")
1447	inst:RemoveComponent("perishable")
1448	inst:RemoveComponent("deployable")
1449	inst:RemoveComponent("container")
1450	inst:AddTag("zoofence")
1451	inst.components.inspectable.getstatus = function(inst)
1452		inst.Transform:SetScale(1, 0.1, 1)
1453		inst.Physics:SetActive(false)
1454		GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
1455		inst:DoTaskInTime(5, function(inst)
1456			inst.Transform:SetScale(1, 1, 1)
1457			inst.Physics:SetActive(true)
1458			GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
1459		end )
1460	end
1461  end
1462  if data and data.zoobaby1 then
1463	inst.AnimState:SetBank("krampus")
1464	inst.AnimState:SetBuild("krampus_build")
1465	inst.AnimState:PlayAnimation("idle", true)
1466	inst.entity:AddSoundEmitter()
1467	inst.AnimState:Hide("SACK")
1468	inst.AnimState:Show("ARM")
1469	inst.Transform:SetScale(0.7,0.7,0.7)
1470	inst:AddComponent("locomotor")
1471	inst.components.locomotor.walkspeed = 3
1472	inst.components.locomotor.runspeed = 6
1473	inst:SetStateGraph("SGkrampus")
1474	inst:AddTag("zoobaby1")
1475	local brain = require "brains/frogbrain"
1476	inst:SetBrain(brain)
1477	inst.Transform:SetFourFaced()
1478	MakeCharacterPhysics(inst, 15, .5)
1479	inst:AddComponent("knownlocations")
1480	inst:AddComponent("combat")
1481	inst:AddComponent("health")
1482	inst.components.health:SetMaxHealth(100)
1483	inst:RemoveComponent("stackable")
1484	inst:RemoveComponent("inventoryitem")
1485	inst:RemoveComponent("edible")
1486	inst:RemoveComponent("perishable")
1487	inst:RemoveComponent("deployable")
1488	inst:RemoveComponent("container")
1489	local minimap = inst.entity:AddMiniMapEntity()
1490	minimap:SetIcon("monkey_barrel.png")
1491	inst:AddComponent("follower")
1492	inst.components.inspectable.getstatus = function(inst)
1493		if not inst:HasTag("followme") then
1494		   local brain = require "brains/abigailbrain"
1495		   inst:SetBrain(brain)
1496		   inst:RestartBrain()
1497		   inst.components.follower:SetLeader(GetPlayer())
1498		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1499		   inst:AddTag("followme")
1500		else
1501		   local brain = require "brains/frogbrain"
1502		   inst:SetBrain(brain)
1503		   inst:RestartBrain()
1504		   inst.components.follower:SetLeader(nil)
1505		   inst.AnimState:SetBloomEffectHandle("")
1506		   inst:RemoveTag("followme")
1507		end
1508	end
1509	inst:DoPeriodicTask(math.random(360, 480), function(inst)
1510		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
1511	end )
1512	inst:AddComponent("lootdropper")
1513	inst.components.lootdropper:SetLoot({"smallmeat"})
1514	inst:AddTag("zoobaby")
1515  end
1516  if data and data.zoobaby2 then
1517	inst.AnimState:SetBank("koalefant")
1518	inst.AnimState:SetBuild("koalefant_summer_build")
1519	inst.AnimState:PlayAnimation("idle_loop", true)
1520	inst.entity:AddSoundEmitter()
1521	inst.Transform:SetScale(0.5,0.5,0.5)
1522	inst:AddComponent("locomotor")
1523	inst.components.locomotor.walkspeed = 3
1524	inst.components.locomotor.runspeed = 6
1525	inst:SetStateGraph("SGkoalefant")
1526	inst:AddTag("zoobaby2")
1527	local brain = require "brains/frogbrain"
1528	inst:SetBrain(brain)
1529	inst.Transform:SetFourFaced()
1530	MakeCharacterPhysics(inst, 15, .5)
1531	inst:AddComponent("knownlocations")
1532	inst:AddComponent("combat")
1533	inst:AddComponent("health")
1534	inst.components.health:SetMaxHealth(100)
1535	inst:RemoveComponent("stackable")
1536	inst:RemoveComponent("inventoryitem")
1537	inst:RemoveComponent("edible")
1538	inst:RemoveComponent("perishable")
1539	inst:RemoveComponent("deployable")
1540	inst:RemoveComponent("container")
1541	local minimap = inst.entity:AddMiniMapEntity()
1542	minimap:SetIcon("monkey_barrel.png")
1543	inst:AddComponent("follower")
1544	inst.components.inspectable.getstatus = function(inst)
1545		if not inst:HasTag("followme") then
1546		   local brain = require "brains/abigailbrain"
1547		   inst:SetBrain(brain)
1548		   inst:RestartBrain()
1549		   inst.components.follower:SetLeader(GetPlayer())
1550		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1551		   inst:AddTag("followme")
1552		else
1553		   local brain = require "brains/frogbrain"
1554		   inst:SetBrain(brain)
1555		   inst:RestartBrain()
1556		   inst.components.follower:SetLeader(nil)
1557		   inst.AnimState:SetBloomEffectHandle("")
1558		   inst:RemoveTag("followme")
1559		end
1560	end
1561	inst:DoPeriodicTask(math.random(360, 480), function(inst)
1562		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
1563	end )
1564	inst:AddComponent("lootdropper")
1565	inst.components.lootdropper:SetLoot({"smallmeat"})
1566	inst:AddTag("zoobaby")
1567  end
1568  if data and data.zoobaby3 then
1569	inst.AnimState:SetBank("koalefant")
1570	inst.AnimState:SetBuild("koalefant_winter_build")
1571	inst.AnimState:PlayAnimation("idle_loop", true)
1572	inst.entity:AddSoundEmitter()
1573	inst.Transform:SetScale(0.5,0.5,0.5)
1574	inst:AddComponent("locomotor")
1575	inst.components.locomotor.walkspeed = 3
1576	inst.components.locomotor.runspeed = 6
1577	inst:SetStateGraph("SGkoalefant")
1578	inst:AddTag("zoobaby3")
1579	local brain = require "brains/frogbrain"
1580	inst:SetBrain(brain)
1581	inst.Transform:SetFourFaced()
1582	MakeCharacterPhysics(inst, 15, .5)
1583	inst:AddComponent("knownlocations")
1584	inst:AddComponent("combat")
1585	inst:AddComponent("health")
1586	inst.components.health:SetMaxHealth(100)
1587	inst:RemoveComponent("stackable")
1588	inst:RemoveComponent("inventoryitem")
1589	inst:RemoveComponent("edible")
1590	inst:RemoveComponent("perishable")
1591	inst:RemoveComponent("deployable")
1592	inst:RemoveComponent("container")
1593	local minimap = inst.entity:AddMiniMapEntity()
1594	minimap:SetIcon("monkey_barrel.png")
1595	inst:AddComponent("follower")
1596	inst.components.inspectable.getstatus = function(inst)
1597		if not inst:HasTag("followme") then
1598		   local brain = require "brains/abigailbrain"
1599		   inst:SetBrain(brain)
1600		   inst:RestartBrain()
1601		   inst.components.follower:SetLeader(GetPlayer())
1602		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1603		   inst:AddTag("followme")
1604		else
1605		   local brain = require "brains/frogbrain"
1606		   inst:SetBrain(brain)
1607		   inst:RestartBrain()
1608		   inst.components.follower:SetLeader(nil)
1609		   inst.AnimState:SetBloomEffectHandle("")
1610		   inst:RemoveTag("followme")
1611		end
1612	end
1613	inst:DoPeriodicTask(math.random(360, 480), function(inst)
1614		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
1615	end )
1616	inst:AddComponent("lootdropper")
1617	inst.components.lootdropper:SetLoot({"smallmeat"})
1618	inst:AddTag("zoobaby")
1619  end
1620  if data and data.zoobaby4 then
1621	inst.AnimState:SetBank("walrus")
1622	inst.AnimState:SetBuild("walrus_baby_build")
1623	inst.AnimState:PlayAnimation("idle_happy")
1624	inst.entity:AddSoundEmitter()
1625	inst.Transform:SetScale(0.8,0.8,0.8)
1626	inst:AddComponent("locomotor")
1627	inst.components.locomotor.walkspeed = 3
1628	inst.components.locomotor.runspeed = 6
1629	inst:SetStateGraph("SGwalrus")
1630	inst:AddTag("zoobaby4")
1631	local brain = require "brains/frogbrain"
1632	inst:SetBrain(brain)
1633	inst.Transform:SetFourFaced()
1634	MakeCharacterPhysics(inst, 15, .5)
1635	inst:AddComponent("knownlocations")
1636	inst:AddComponent("combat")
1637	inst:AddComponent("health")
1638	inst.components.health:SetMaxHealth(100)
1639	inst:RemoveComponent("stackable")
1640	inst:RemoveComponent("inventoryitem")
1641	inst:RemoveComponent("edible")
1642	inst:RemoveComponent("perishable")
1643	inst:RemoveComponent("deployable")
1644	inst:RemoveComponent("container")
1645	local minimap = inst.entity:AddMiniMapEntity()
1646	minimap:SetIcon("monkey_barrel.png")
1647	inst:AddComponent("follower")
1648	inst.components.inspectable.getstatus = function(inst)
1649		if not inst:HasTag("followme") then
1650		   local brain = require "brains/abigailbrain"
1651		   inst:SetBrain(brain)
1652		   inst:RestartBrain()
1653		   inst.components.follower:SetLeader(GetPlayer())
1654		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1655		   inst:AddTag("followme")
1656		else
1657		   local brain = require "brains/frogbrain"
1658		   inst:SetBrain(brain)
1659		   inst:RestartBrain()
1660		   inst.components.follower:SetLeader(nil)
1661		   inst.AnimState:SetBloomEffectHandle("")
1662		   inst:RemoveTag("followme")
1663		end
1664	end
1665	inst:DoPeriodicTask(math.random(360, 480), function(inst)
1666		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
1667	end )
1668	inst:AddComponent("lootdropper")
1669	inst.components.lootdropper:SetLoot({"smallmeat"})
1670	inst:AddTag("zoobaby")
1671  end
1672  if data and data.zoobaby5 then
1673	inst.AnimState:SetBank("kiki")
1674	inst.AnimState:SetBuild("kiki_basic")
1675	inst.AnimState:PlayAnimation("idle_loop", true)
1676	inst.entity:AddSoundEmitter()
1677	inst.soundtype = ""
1678	inst.Transform:SetScale(1.2,1.2,1.2)
1679	inst:AddComponent("locomotor")
1680	inst.components.locomotor.walkspeed = 3
1681	inst.components.locomotor.runspeed = 6
1682	inst:SetStateGraph("SGmonkey")
1683	inst:AddTag("zoobaby5")
1684	local brain = require "brains/frogbrain"
1685	inst:SetBrain(brain)
1686	inst.Transform:SetFourFaced()
1687	MakeCharacterPhysics(inst, 15, .5)
1688	inst:AddComponent("knownlocations")
1689	inst:AddComponent("combat")
1690	inst:AddComponent("health")
1691	inst.components.health:SetMaxHealth(100)
1692	inst:RemoveComponent("stackable")
1693	inst:RemoveComponent("inventoryitem")
1694	inst:RemoveComponent("edible")
1695	inst:RemoveComponent("perishable")
1696	inst:RemoveComponent("deployable")
1697	inst:RemoveComponent("container")
1698	local minimap = inst.entity:AddMiniMapEntity()
1699	minimap:SetIcon("monkey_barrel.png")
1700	inst:AddComponent("follower")
1701	inst.components.inspectable.getstatus = function(inst)
1702		if not inst:HasTag("followme") then
1703		   local brain = require "brains/abigailbrain"
1704		   inst:SetBrain(brain)
1705		   inst:RestartBrain()
1706		   inst.components.follower:SetLeader(GetPlayer())
1707		   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1708		   inst:AddTag("followme")
1709		else
1710		   local brain = require "brains/frogbrain"
1711		   inst:SetBrain(brain)
1712		   inst:RestartBrain()
1713		   inst.components.follower:SetLeader(nil)
1714		   inst.AnimState:SetBloomEffectHandle("")
1715		   inst:RemoveTag("followme")
1716		end
1717	end
1718	inst:DoPeriodicTask(math.random(360, 480), function(inst)
1719		SpawnPrefab("poop").Transform:SetPosition(inst.Transform:GetWorldPosition())
1720	end )
1721	inst:AddComponent("lootdropper")
1722	inst.components.lootdropper:SetLoot({"smallmeat"})
1723	inst:AddTag("zoobaby")
1724  end
1725  if data and data.followme then
1726	 local brain = require "brains/abigailbrain"
1727	 inst:SetBrain(brain)
1728	 inst:RestartBrain()
1729	 inst.components.follower:SetLeader(GetPlayer())
1730	 inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
1731	 inst:AddTag("followme")
1732  end
1733end
1734	inst.OnSave = onsave
1735	inst.OnLoad = onload
1736
1737	即可在开阔的空地上,用黄油种动物园,在身上有30个黄金时,用鼠标左键点牌子,可打开格子,放入木炭点Buy按钮,可买一只小龙,花费30个黄金;放入夏象鼻点Buy按钮,可买小红象;放入冬象鼻点Buy按钮,可买小蓝象;放入海象牙点Buy按钮,可买小海象;放入香蕉点Buy按钮,可买猴子。鼠标左键点木栅栏,可开门,5秒后自动关门。鼠标左键点中间的胡萝卜房可打开格子,放入小动物爱吃的胡萝卜(每天消耗9个),当格子里的胡萝卜不足3个时,圈里的动物将陆续饿死。当动物园里有动物时,每天都能收到15-30个黄金的门票钱(放在牌子前面),动物会产便便,如果不及时清扫,门票钱将下降为正常的1/3。如果食物充足,小动物还有一定概率会繁殖,点胡萝卜房格子上方的Sell按钮,可卖掉圈舍中的动物,每只20个黄金。如果动物跑出圈舍,或想带领动物转场,就用鼠标左键点动物(手里不要拿武器),它会跟随你,再次用鼠标左键点动物,可以取消跟随。动物在小地图上显示为猴子的图标。不想要动物园时,用锤子砸掉胡萝卜房即可。黄油可以打蝴蝶获得,如果修改了“巨型超市”,也可花1-3个黄金购得