diff --git a/build/te4core.lua b/build/te4core.lua
index 67a680d8ab1056820a8b49ed94b9b4a3bd67d403..b85cec8b0b5b60528276e30823a8c7289cf9b7e7 100644
--- a/build/te4core.lua
+++ b/build/te4core.lua
@@ -48,7 +48,7 @@ project "TEngine"
 		links { "IOKit" }
 
 	configuration "windows"
-		links { "mingw32", "SDLmain", "SDL", "SDL_ttf", "SDL_image", "openal32", "vorbisfile", "OPENGL32", "GLU32", "wsock32", "png12" }
+		links { "mingw32", "SDL2main", "SDL2", "SDL2_ttf", "SDL2_image", "openal32", "vorbisfile", "OPENGL32", "GLU32", "wsock32", "png" }
 		defines { [[TENGINE_HOME_PATH='"T-Engine"']], 'SELFEXE_WINDOWS'  }
 		prebuildcommands { "windres ../src/windows/icon.rc -O coff -o ../src/windows/icon.res" }
 		linkoptions { "../src/windows/icon.res" }
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 960ca459b09bf1a61e82b04f9ba77bfceb9ff11a..d19fb94f01cfda860aae21b98e42d6252da8c05a 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -546,7 +546,7 @@ function _M:act()
 			if act and self:reactionToward(act) < 0 and self:canSee(act) then nb_foes = nb_foes + 1 end
 		end
 		if nb_foes > 1 then
-			nb_foes = math.min(nb_foes, self:getTalentLevel(self.T_MILITANT_MIND))
+			nb_foes = math.min(nb_foes, 5)
 			self:setEffect(self.EFF_MILITANT_MIND, 4, {power=self:getTalentLevel(self.T_MILITANT_MIND) * nb_foes * 0.6})
 		end
 	end
@@ -1730,6 +1730,13 @@ function _M:onTakeHit(value, src)
 		self:setEffect(self.EFF_INVISIBILITY, 5, {power=self:attr("invis_on_hit_power")})
 		for tid, _ in pairs(self.invis_on_hit_disable) do self:forceUseTalent(tid, {ignore_energy=true}) end
 	end
+	
+	if self:knowTalent(self.T_DUCK_AND_DODGE) then
+		local t = self:getTalentFromId(self.T_DUCK_AND_DODGE)
+		if value >= self.max_life * t.getThreshold(self, t) then
+			self:setEffect(self.EFF_EVASION, t.getDuration(self, t), {chance=t.getEvasionChance(self, t)})
+		end
+	end
 
 	-- Damage shield on hit
 	if self:attr("contingency") and value >= self.max_life * self:attr("contingency") / 100 and not self:hasEffect(self.EFF_DAMAGE_SHIELD) then
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index ff25557565931f446265a8551d903b5c1c2f1c24..f7832d43ff1814a3132785f48c3cccaf67dde96b 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -325,11 +325,6 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 	local dam, apr, armor = force_dam or self:combatDamage(weapon), self:combatAPR(weapon), target:combatArmor()
 	print("[ATTACK] to ", target.name, " :: ", dam, apr, armor, def, "::", mult)
 
-	if target:knowTalent(target.T_DUCK_AND_DODGE) then
-		local diff = util.bound((self.size_category or 3) - (target.size_category or 2), 0, 5)
-		def = def + diff * target:getTalentLevelRaw(target.T_DUCK_AND_DODGE) * 1.2
-	end
-
 	-- check repel
 	local repelled = false
 	if target:isTalentActive(target.T_REPEL) then
diff --git a/game/modules/tome/data/talents/misc/races.lua b/game/modules/tome/data/talents/misc/races.lua
index 239f06c82312f41f9d223fa5a231941299a5a780..8dba448edb95a57ad938f03a968694dfb7fc3920 100644
--- a/game/modules/tome/data/talents/misc/races.lua
+++ b/game/modules/tome/data/talents/misc/races.lua
@@ -497,11 +497,12 @@ newTalent{
 		self:setEffect(self.EFF_HALFLING_LUCK, 5, {
 			physical=10 + self:getCun() / 2,
 			spell=10 + self:getCun() / 2,
+			mind=10 + self:getCun() / 2,
 		})
 		return true
 	end,
 	info = function(self, t)
-		return ([[Call upon the luck and cunning of the Little Folk to increase your physical and spell critical strike chance by %d%% for 5 turns.
+		return ([[Call upon the luck and cunning of the Little Folk to increase your physical, mental, and spell critical strike chance by %d%% for 5 turns.
 		The bonus will increase with the Cunning stat.]]):format(10 + self:getCun() / 2, 10 + self:getCun() / 2)
 	end,
 }
@@ -512,10 +513,16 @@ newTalent{
 	require = racial_req2,
 	points = 5,
 	mode = "passive",
+	getThreshold = function(self, t) return math.max(10, (15 - self:getTalentLevelRaw(t))) / 100 end,
+	getEvasionChance = function(self, t) return self:getStat("lck") end,
+	getDuration = function(self, t) return 1 + math.ceil(self:getTalentLevel(t)/2) end,
 	info = function(self, t)
-		return ([[Halfling have long learnt to use their small stature as an advantage when fighting the other races.
-		Increases defense in melee based on the size difference between the attacker and you (+%d defence per size).]]):
-		format(self:getTalentLevelRaw(t) * 1.2)
+		local threshold = t.getThreshold(self, t)
+		local evasion = t.getEvasionChance(self, t)
+		local duration = t.getDuration(self, t)
+		return ([[Your incredible luck kicks in at just the right moment to save your skin.
+		Whenever you take %d%% or more of your life from a single attack you gain Evasion equal to your luck stat (currently %d%%) for the next %d turns.]]):
+		format(threshold * 100, evasion, duration)
 	end,
 }
 
@@ -527,8 +534,8 @@ newTalent{
 	mode = "passive",
 	info = function(self, t)
 		return ([[Halflings have always been a very organised and methodical race, the more foes they face the more organised they are.
-		If two or more foes are in sight your physical power, spellpower and mindpower are increased by %0.1f per foes (up to %d foes).]]):
-		format(self:getTalentLevel(t) * 0.6, self:getTalentLevel(t))
+		If two or more foes are in sight your physical power, physical save, spellpower, spell save, mental save, and mindpower are increased by %0.1f per foes (up to 5 foes).]]):
+		format(self:getTalentLevel(t) * 0.6)
 	end,
 }
 
@@ -539,14 +546,38 @@ newTalent{
 	points = 5,
 	no_energy = true,
 	cooldown = function(self, t) return 50 - self:getTalentLevel(t) * 5 end,
-	tactical = { DEFEND = 1 },
+	tactical = { DEFEND = 1,  CURE = 1 },
+	getRemoveCount = function(self, t) return 1 + self:getTalentLevel(t) end,
+	getDuration = function(self, t) return 1 + self:getTalentLevel(t) end,
 	action = function(self, t)
-		self:setEffect(self.EFF_FREE_ACTION, 3 + self:getTalentLevel(t), {})
+		local effs = {}
+
+		-- Go through all effects
+		for eff_id, p in pairs(self.tmp) do
+			local e = self.tempeffect_def[eff_id]
+			if e.subtype.stun or e.subtype.pin then -- Daze is stun subtype
+				effs[#effs+1] = {"effect", eff_id}
+			end
+		end
+
+		for i = 1, t.getRemoveCount(self, t) do
+			if #effs == 0 then break end
+			local eff = rng.tableRemove(effs)
+
+			if eff[1] == "effect" then
+				self:removeEffect(eff[2])
+			end
+		end
+	
+		self:setEffect(self.EFF_FREE_ACTION, t.getDuration(self, t), {})
 		return true
 	end,
 	info = function(self, t)
+		local duration = t.getDuration(self, t)
+		local count = t.getRemoveCount(self, t)
 		return ([[Halflings are one of the more powerful military force of the known world, they have been at war with most other races for thousand of years.
-		Instantly makes you immune to stuns, dazes and pinning effects for %d turns.]]):format(3 + self:getTalentLevel(t))
+		Removes %d stun, daze, or pin effects and makes you immune to stuns, dazes and pins for %d turns.
+		This talent takes no time to use.]]):format(duration, count)
 	end,
 }
 
diff --git a/game/modules/tome/data/timed_effects/mental.lua b/game/modules/tome/data/timed_effects/mental.lua
index 91c6c835dc9aa39092e7720faa4845f8681c69fc..8c507642557c50261bc80fddf42f5f21d8ba3976 100644
--- a/game/modules/tome/data/timed_effects/mental.lua
+++ b/game/modules/tome/data/timed_effects/mental.lua
@@ -1593,7 +1593,7 @@ newEffect{
 newEffect{
 	name = "HALFLING_LUCK", image = "talents/halfling_luck.png",
 	desc = "Halflings's Luck",
-	long_desc = function(self, eff) return ("The target's luck and cunning combine to grant it %d%% higher combat critical chance and %d%% higher spell critical chance."):format(eff.physical, eff.spell) end,
+	long_desc = function(self, eff) return ("The target's luck and cunning combine to grant it %d%% higher combat critical chance, %d%% higher mental critical chance, and %d%% higher spell critical chance."):format(eff.physical, eff.mind, eff.spell) end,
 	type = "mental",
 	subtype = { focus=true },
 	status = "beneficial",
@@ -1603,10 +1603,12 @@ newEffect{
 	activate = function(self, eff)
 		eff.pid = self:addTemporaryValue("combat_physcrit", eff.physical)
 		eff.sid = self:addTemporaryValue("combat_spellcrit", eff.spell)
+		eff.mid = self:addTemporaryValue("combat_mindcrit", eff.mind)
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("combat_physcrit", eff.pid)
 		self:removeTemporaryValue("combat_spellcrit", eff.sid)
+		self:removeTemporaryValue("combat_mindcrit", eff.mid)
 	end,
 }
 
diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua
index 51bd8969f70ca11a50ec46e9ef506c7e2c5c4552..803550c91e7fdeae0d5c9a42e8258abfc7edc670 100644
--- a/game/modules/tome/data/timed_effects/other.lua
+++ b/game/modules/tome/data/timed_effects/other.lua
@@ -496,7 +496,7 @@ newEffect{
 newEffect{
 	name = "MILITANT_MIND", image = "talents/militant_mind.png",
 	desc = "Militant Mind",
-	long_desc = function(self, eff) return ("Increases physical power, spellpower and mindpower by %d."):format(eff.power) end,
+	long_desc = function(self, eff) return ("Increases physical power, physical save, spellpower, spell save, mindpower, and mental save by %d."):format(eff.power) end,
 	type = "other",
 	subtype = { miscellaneous=true },
 	status = "beneficial",
@@ -505,11 +505,17 @@ newEffect{
 		eff.damid = self:addTemporaryValue("combat_dam", eff.power)
 		eff.spellid = self:addTemporaryValue("combat_spellpower", eff.power)
 		eff.mindid = self:addTemporaryValue("combat_mindpower", eff.power)
+		eff.presid = self:addTemporaryValue("combat_physresist", eff.power)
+		eff.sresid = self:addTemporaryValue("combat_spellresist", eff.power)
+		eff.mresid = self:addTemporaryValue("combat_mentalresist", eff.power)
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("combat_dam", eff.damid)
 		self:removeTemporaryValue("combat_spellpower", eff.spellid)
 		self:removeTemporaryValue("combat_mindpower", eff.mindid)
+		self:removeTemporaryValue("combat_physresist", eff.presid)
+		self:removeTemporaryValue("combat_spellresist", eff.sresid)
+		self:removeTemporaryValue("combat_mentalresist", eff.mresid)
 	end,
 }
 
diff --git a/premake4.lua b/premake4.lua
index 08980cafd3defc90863fab661c0b87e79038d947..84485c2c115638e5da5bd6516832449f4aee1ec7 100644
--- a/premake4.lua
+++ b/premake4.lua
@@ -28,10 +28,11 @@ solution "TEngine"
 
 configuration "windows"
 	libdirs {
-		"/c/mingw2/lib",
+		"/c/code/SDL/lib",
 	}
 	includedirs {
-		"/c/mingw2/include/SDL",
+		"/c/code/SDL/include/SDL2",
+		"/c/code/SDL/include",
 		"/c/mingw2/include/GL",
 	}