diff --git a/game/modules/tome/class/Trap.lua b/game/modules/tome/class/Trap.lua
index 07290f55e1d493d61eb52b3d096f7260b677e6e2..e4e65b3c757c729a98c5246f9be6bcdee3b680d5 100644
--- a/game/modules/tome/class/Trap.lua
+++ b/game/modules/tome/class/Trap.lua
@@ -36,8 +36,17 @@ function _M:init(t, no_default)
 	engine.Trap.init(self, t, no_default)
 	engine.interface.ObjectIdentify.init(self, t)
 	engine.interface.ActorProject.init(self, t)
+	self.str = self.str or 10
+	self.mag = self.mag or 10
+	self.dex = self.dex or 10
+	self.wil = self.wil or 10
 end
 
+function _M:combatPhysicalpower() return mod.class.interface.Combat:rescaleCombatStats(self.str) end
+function _M:combatSpellpower() return mod.class.interface.Combat:rescaleCombatStats(self.mag) end
+function _M:combatMindpower() return mod.class.interface.Combat:rescaleCombatStats(self.wil) end
+function _M:combatAttack() return mod.class.interface.Combat:rescaleCombatStats(self.dex) end
+
 --- Gets the full name of the object
 function _M:getName()
 	local name = self.name
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 29aa8b0ddebf9d9ad970bbc336383e8d4d23ee9b..e2727402285f01c24db77504c1387b3b7a320687 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -1073,6 +1073,7 @@ newDamageType{
 	name = "lightning daze", type = "LIGHTNING_DAZE", text_color = "#ROYAL_BLUE#",
 	projector = function(src, x, y, type, dam)
 		if _G.type(dam) == "number" then dam = {dam=dam, daze=25} end
+		dam.daze = dam.daze or 25
 		local realdam = DamageType:get(DamageType.LIGHTNING).projector(src, x, y, DamageType.LIGHTNING, dam.dam)
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target and dam.daze > 0 and rng.percent(dam.daze) then
diff --git a/game/modules/tome/data/general/traps/complex.lua b/game/modules/tome/data/general/traps/complex.lua
index 33e77f698b21480b67cefc14ce474f2730c0d84a..3dc9fbb80e5ced4e8cf0a5e2ca3349d14c240b03 100644
--- a/game/modules/tome/data/general/traps/complex.lua
+++ b/game/modules/tome/data/general/traps/complex.lua
@@ -60,7 +60,6 @@ newEntity{ base = "TRAP_COMPLEX",
 	end,
 	str = resolvers.mbonus(200, 30),
 	dam = resolvers.mbonus_level(300, 5),
-	combatPhysicalpower = function(self) return mod.class.interface.Combat:rescaleCombatStats(self.str) end,
 	triggered = function(self, x, y, who)
 		if not self.spawn_x then return end
 		local tg = {name="huge boulder", type="bolt", range=core.fov.distance(x, y, self.spawn_x, self.spawn_y), x=self.spawn_x, y=self.spawn_y, speed=2, display={image="trap/trap_big_boulder_01.png"}, blur_move=4}
@@ -97,7 +96,6 @@ newEntity{ base = "TRAP_COMPLEX",
 	dammode = rng.table{engine.DamageType.ARCANE_SILENCE, engine.DamageType.DARKSTUN, engine.DamageType.COLDNEVERMOVE},
 	dam = resolvers.mbonus_level(300, 5),
 	mag = resolvers.mbonus(200, 30),
-	combatSpellpower = function(self) return mod.class.interface.Combat:rescaleCombatStats(self.mag) end,
 	triggered = function(self, x, y, who)
 		if self:reactionToward(who) < 0 then
 			local dammode = self.dammode