Don't Starve Wiki
Advertisement
Don't Starve Wiki

Hello, foul creature of the underworld.

Wendy

Krampus 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 more innocent creatures are killed. The player will hear a unique piercing noise upon Krampus' spawn. Not acting "naughty" for a while gradually decreases the naughtiness rating by one per minute.

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

Behavior

File:Krampus sleeping.png

At night, Krampus will fall asleep even if it's being pursued.

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

Krampus moves fairly fast, dealing 50 points of damage per hit to unarmored targets, which can kill most characters in three hits. Krampus has a 1% chance of dropping its item sack upon death, which can be equipped like a Backpack. It yields 14 inventory slots rather than the Backpack's 8, and it doesn't slow the character like the Piggyback.

When killed, Krampus will drop all the goods it stole. Krampus also behaves similarly to a Gobbler when being pursued. It will disappear into its own sack if the player doesn't kill it fast enough.

Krampus will keep running around the player until no more items exist on-screen.

Naughtiness

File:2 Krampii stealing player's items.jpg

Krampus will come and steal a very naughty player's items. It can break containers and steal entire stacks of items, 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 restraint reduces naughtiness by 1. Once the player reaches a threshold of naughtiness, a random number between 31 and 50, Krampus will come and steal the player's items. After Krampus appears, the naughtiness level is reset to 0.

It is worth noting that setting creatures ablaze will not award the player with naughtiness points. This is because the fire is considered to be the killing factor. The same goes for Tooth Traps and Bee Mines.

Creature

Naughtiness
Baby Beefalo 6

Smallbird and Smallish Tallbird

6

Beefalo

4
Pig 3
Redbird and Snowbird 2
Tallbird 2

Rabbit and Beardling

1
Bee 1
Butterfly 1
Crow 1

Scripting

To help keep track of your current naughtiness rating, you can use the excellent Always On Status mod , or 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, which will cause Krampus to engage the player. Then the player may lure Krampus into hazards such as Tooth Traps.
  • If the player keeps track of their "naughtiness", they can set a trap for the Krampus before its arrival. The player should place a Chest with a few dummy items between where they will do the final act. Then the player should surround it with Bee Mines. The Krampus should go to the Chest, trigger the mines, and die from the bees. A player without traps or mines can directly engage Krampus while it's busy with the chest.
  • 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 or two on the ground and kill the Rabbit. As Krampus spawns, it will take away the items. If the player fails to kill Krampus when it is taking the item, drop another one, though Krampus 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 it destroy the chest, setting off the bees.
  • A good way to get items back is to make Krampus run into some Frogs: their tongues will make Krampus drop its stolen items, which can be picked up at will.
  • If the player is aiming to get Krampus' Sack, try using the Fire Staff since the sack doesn't burn. Krampus' other drops will be turned to ash, but since they are common drops, this isn't a big deal.
  • Another strategy to find the Sack is to save the game right before killing him; if he doesn't drop the Sack, close the game with the alt+f4 command, and repeat the process until you got the bag. But be mindful of the auto-save.

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. Krampus' contrast to Saint Nicholas is reinforced by the Charcoal he carries; traditionally, naughty children are punished with coal in their stockings.
  • Krampus might also have some references to the Scandinavian Yule goat, an old pagan tradition originating from Norse mythology. Note that Krampus' 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' 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 also appears similar to reports of the Jersey Devil, a winged red horse with horns. However, Krampus has no wings and has a much thicker tail than a horse, more like that of a kangaroo or lizard.

Bugs

  • Hitting Krampus as it jumps into its bag will cause it to reappear and become invincible. In this state, Krampus cannot move and cannot be killed, but it can still be frozen and put to sleep just like normal.

Gallery

Advertisement