Don't Starve Wiki
Register
Don't Starve Wiki
No edit summary
Line 27: Line 27:
   
   
Krampus will come and steal your virginity if you have been very naughty. It cannot steal Chester's eye bone and wooden things, but it can break containers and steal entire stacks of items, and then escape by paradoxically jumping into its own bag. One or two krampii can spawn at the same time after day 50, and two   or three after day 100.
+
Krampus will come and steal your itemsif you have been very naughty. It cannot steal Chester's eye bone and wooden things, but it can break containers and steal entire stacks of items, and then escape by paradoxically jumping into its own bag. One or two krampii can spawn at the same time after day 50, and two   or three after day 100.
   
 
Each minute of restrain reduces naughtiness by 1. Once you reach a random threshold, krampus will come and steal your items. The threshold is a random number between 31 and 50. After Krampus appears, the naughtiness level is 0. Murdering innocent animals makes you naughty, and each minute of restrain makes you less naughty.
 
Each minute of restrain reduces naughtiness by 1. Once you reach a random threshold, krampus will come and steal your items. The threshold is a random number between 31 and 50. After Krampus appears, the naughtiness level is 0. Murdering innocent animals makes you naughty, and each minute of restrain makes you less naughty.
Line 62: Line 62:
 
|}
 
|}
 
{{clear}}
 
{{clear}}
  +
 
==Scripting==
 
==Scripting==
   

Revision as of 18:09, 29 June 2013

Dickbutt is a mob that will spawn if the player kills too many "innocent" (non-aggressive) Animals, exceeding a certain naughtiness rating. As the player is getting close to Krampus spawning, there will be a hissing noise warning the player each time they kill an innocent non-aggressive creatures. The player will hear a unique piercing noise upon Krampus' spawn, no matter where he is. Not acting "naughty" for a while gradually decreases the naughtiness rating.

Krampus takes three blasts from the Ice Staff to be frozen.

Behavior

File:Krampus sleeping.png

At night Krampus will fall asleep even if you are chasing him.

Krampus will break chests, then proceed to steal everything before retreating. In order to get their items back the player must kill him, and pick up the items. Krampus will also pick up items lying on the ground prior to destroying chests. Eye Bone and Wooden Thing components (Ring Thing, Crank Thing, Box Thing, and Metal Potato Thing) are the only items that Krampus will not steal.

Krampus moves fairly fast, dealing 50 points of damage per hit to unarmored targets. Krampus has a 1% chance of dropping his Item Sack, which can be equipped like a Backpack. It yields 14 inventory slots rather than the Backpack's 8. He also behaves similarly to a Gobbler when being pursued. Krampus will disappear into his own sack if the player doesn't kill him fast enough.

Krampus seems to run to the player and

File:2013-06-04 00015.jpg

Krampus runing towards the players then runing away becuase no items are on screen.

run away when there are no more Items that exist on screen

Naughtiness

File:2 Krampii stealing player's items.jpg


Krampus will come and steal your itemsif you have been very naughty. It cannot steal Chester's eye bone and wooden things, but it can break containers and steal entire stacks of items, and then escape by paradoxically jumping into its own bag. One or two krampii can spawn at the same time after day 50, and two   or three after day 100.

Each minute of restrain reduces naughtiness by 1. Once you reach a random threshold, krampus will come and steal your items. The threshold is a random number between 31 and 50. After Krampus appears, the naughtiness level is 0. Murdering innocent animals makes you naughty, and each minute of restrain makes you less naughty.

It is worth to noting that setting creatures ablaze with the Fire Staff will not award you with naughtiness points. This is because the fire is considered to be the killing factor.

Creature Naughtiness
Smallbird 200
Beefalo 8
Pig 8
Robin (red and white birds) 4
Tallbird 200
Rabbit and Beardling 50
Butterfly 7
Crow 4

Scripting

To help keep track of your current naughtiness rating, you can create your own Naughtiness "Meter" through some file editing. Follow the steps below:

1. Go to the game directory, find and backup the file "kramped.lua" ( \data\scripts\components\kramped.lua )

2. Open the original file

3a. Follow these exact steps below to edit the file, OR alternatively, jump to step 3b. for a pre-edited file

find this function: function Kramped:OnNaughtyAction(how_naughty)

within that function find this line: self.timetodecay = self.decayperiod

start a new line below and add: print("Naughtiness: ", self.actions)

find this function: function Kramped:OnUpdate(dt)

within that function find this line: self.actions = self.actions - 1

again start a new line below and add: print("Naughtiness: ", self.actions)

Save the file and exit.

3b. Press ctrl + a to select everything in the file and delete.

copy the text from the box below

local Kramped = Class(function(self, inst)
    self.inst = inst
    
    self.actions = 0
    self.threshold = 30
    
    self.inst:ListenForEvent( "killed", function(inst,data) self:onkilledother(data.victim) end )
    self.decayperiod = 60
    self.timetodecay = self.decayperiod
    self.inst:StartUpdatingComponent(self)
end)

local SPAWN_DIST = 30

function Kramped:OnSave()
	return 
	{
		threshold = self.threshold,
		actions = self.actions
	}
end

function Kramped:onkilledother(victim)
	if victim and victim.prefab then
		if victim.prefab == "pigman" then
			if not victim.components.werebeast or not victim.components.werebeast:IsInWereState() then
				self:OnNaughtyAction(3)
			end
		elseif victim.prefab == "beefalo" then
			self:OnNaughtyAction(4)
		elseif victim.prefab == "crow" then
			self:OnNaughtyAction(1)
		elseif victim.prefab == "robin" then
			self:OnNaughtyAction(2)
		elseif victim.prefab == "robin_winter" then
			self:OnNaughtyAction(2)
		elseif victim.prefab == "smallbird" then
			self:OnNaughtyAction(6)
		elseif victim.prefab == "butterfly" then
			self:OnNaughtyAction(1)
		elseif victim.prefab == "rabbit" then
			self:OnNaughtyAction(1)
		elseif victim.prefab == "tallbird" then
			self:OnNaughtyAction(2)
		end
	end
end

function Kramped:OnLoad(data)
	self.actions = data.actions or self.actions
	self.threshold = data.threshold or self.threshold
end

function Kramped:GetDebugString()
	return string.format("Actions: %d / %d, decay in %2.2f", self.actions, self.threshold, self.timetodecay)
end


function Kramped:OnUpdate(dt)
	
	if self.actions > 0 then
		self.timetodecay = self.timetodecay - dt
		
		if self.timetodecay < 0 then
			self.timetodecay = self.decayperiod
			self.actions = self.actions - 1
			print("Naughtiness: ", self.actions)
		end
	end
end



function Kramped:OnNaughtyAction(how_naughty)
	self.actions = self.actions + (how_naughty or 1)
	self.timetodecay = self.decayperiod
	print("Naughtiness: ", self.actions)
	
	if self.actions >= self.threshold  then
		
		local day = GetClock().numcycles
		
		local num_krampii = 1
		self.threshold = 30 + math.random(20)
		self.actions = 0
		
		if day > 50 then
			num_krampii = math.random(2)
		elseif day > 100 then
			num_krampii = 1 + math.random(2)
		end

		for k = 1, num_krampii do
			self:MakeAKrampus()
		end
		
	else
		self.inst:DoTaskInTime(1 + math.random()*2, function()

			local snd = CreateEntity()
			snd.entity:AddTransform()
			snd.entity:AddSoundEmitter()
			snd.persists = false
			local theta = math.random() * 2 * PI
			local radius = 15
			local offset = Vector3(self.inst.Transform:GetWorldPosition()) +  Vector3(radius * math.cos( theta ), 0, -radius * math.sin( theta ))
			snd.Transform:SetPosition(offset.x,offset.y,offset.z)
			
			local left = self.threshold - self.actions
			if left < 5 then
				snd.SoundEmitter:PlaySound("dontstarve/creatures/krampus/beenbad_lvl3")
			elseif left < 15 then
				snd.SoundEmitter:PlaySound("dontstarve/creatures/krampus/beenbad_lvl2")
			elseif left < 20 then
				snd.SoundEmitter:PlaySound("dontstarve/creatures/krampus/beenbad_lvl1")
			end
			snd:Remove()
		end)
	end
end

function Kramped:GetSpawnPoint(pt)

    local theta = math.random() * 2 * PI
    local radius = SPAWN_DIST
    
	local offset = FindWalkableOffset(pt, theta, radius, 12, true)
	if offset then
		return pt+offset
	end
end

function Kramped:MakeAKrampus()
	local pt = Vector3(self.inst.Transform:GetWorldPosition())
		
	local spawn_pt = self:GetSpawnPoint(pt)
	
	if spawn_pt then
	
		local kramp = SpawnPrefab("krampus")
		if kramp then
			kramp.Physics:Teleport(spawn_pt:Get())
			kramp:FacePoint(pt)
		end
	end
end


return Kramped

 

paste it into your empty script

Save the file and exit

4. Now whenever in game, you can press ctrl + L to enable the log. Each time the naughtiness level changes the log will print the current value on screen. Additionally, you can also find a text file record of the the log under the current user's My Documents\Klei\DoNotStarve\ folder.

Killing Strategies

  • By far the easiest method to kill Krampus is to simply put it to sleep (Sleep DartPan Flute). Then kill the Krampus with a Spear or Tentacle Spike .
  • Alternately, the player may kill Krampus in direct combat. This can be done by first using ranged weapons such as a Boomerang or a Blow Dart to strike Krampus, this will cause Krampus to engage the player. You may then lure Krampus into hazards such as Tooth Traps.
  • If the player keeps track of their "naughtiness" they can set a trap for the Krampus. The player should place a Chest with a few dummy items between where they will do the final act and their other Chests. Then the player should surround it with Bee Mines. The Krampus should go to the Chest, trigger the mines, and die.
  • Another way to farm Krampus is to kill Rabbits with traps and when the loud hissing sound is played, get a Rabbit, go away from the camp, place a random item on the ground and kill the Rabbit. As Krampus spawns, it will take away the item. If the player fails to kill Krampus when he is taking the item, drop another one (but he may have disappeared already)
  • One of the funniest ways to kill Krampus is by putting a small stack of killer bees into a remote chest, and then letting him destroy it.
  • If you do not have access to Tooth Traps or Bee Mines, you can use the decoy chest listed above. Krampus will stop running to steal from the chest. You can then run for him and hit him. Once he is hit, he will focus entirely on you and ignore the other items or chests you might have until he dies.
  • A good way to get items back is to make Krampus run into some Frogs, thier tongues will make Krampus drop items he has stolen and then can be picked up at will.

Trivia

  • In folklore, "Krampus" is a beast-like creature from the folklore of Alpine countries, thought to punish bad children during the Yule season, in contrast with Saint Nicholas, who rewards nice ones with gifts. Krampus is said to capture particularly naughty children in his sack and carry them to his lair.[1]
  • Krampus might also have some references to the Scandinavian Yule goat, an old pagan tradition originating from Norse mythology. Note that Krampus's horns resemble ones of an ornamental straw goat and in Finnish tradition, young men used to wear goat heads made out of straw (notice the Krampus's figure) in the Yule season, while going house to house demanding food and alcohol. The Finnish version of Santa Claus still has the name of the Yule goat.
  • Krampus' contrast to Saint Nicholas is reinforced by the Charcoal he carries; traditionally, naughty children are punished with coal in their stockings.
  • If you look closely Krampus wears chains around the waist (which create an X across the Krampus Sack once it's dropped) as well as cuff-locks with links by the wrists.