diff --git a/game/modules/tome/class/GameState.lua b/game/modules/tome/class/GameState.lua
index 0ebf05a7f104cb532d96e3bdd76fdfb87d281623..d65b1e1fe9aca78a4be7bcde74610fb3eaf0e158 100644
--- a/game/modules/tome/class/GameState.lua
+++ b/game/modules/tome/class/GameState.lua
@@ -333,7 +333,7 @@ function _M:update_power_source(forbid_ps, allow_ps, randthemes, force_themes)
 	local theme_count = (randthemes or 0) + #force_themes
 	for n = 1, theme_count do
 		local v = nil
-		if #force_themes > 0 then -- always add forced_themes
+		if #force_themes > 0 then -- always add forced_themes if possible
 			v = rng.tableRemove(force_themes)
 			table.removeFromList(allthemes, v)
 		end
diff --git a/game/modules/tome/data/general/npcs/construct.lua b/game/modules/tome/data/general/npcs/construct.lua
index 3e55d8510559420c39d50242351daa3fc896406f..5da7e28625c129b26257b30ef341948c94e274b2 100644
--- a/game/modules/tome/data/general/npcs/construct.lua
+++ b/game/modules/tome/data/general/npcs/construct.lua
@@ -52,6 +52,7 @@ newEntity{
 		[Talents.T_ARMOUR_TRAINING]={base=2, every=10, max=5},
 	},
 	not_power_source = {nature=true},
+	power_source = {arcane=true},
 }
 
 newEntity{ base = "BASE_NPC_CONSTRUCT",
diff --git a/game/modules/tome/data/talents/spells/golemancy.lua b/game/modules/tome/data/talents/spells/golemancy.lua
index 20ba93e482ec10c0d3ce367f8e7ff4cb28110780..653465d8c997963817ee0ec22543044d898e534a 100644
--- a/game/modules/tome/data/talents/spells/golemancy.lua
+++ b/game/modules/tome/data/talents/spells/golemancy.lua
@@ -80,6 +80,7 @@ local function makeGolem(self)
 			["golem/arcane"] = 0.3,
 		},
 		forbid_nature = 1,
+		power_source = {arcane = true},
 		inscription_restrictions = { ["inscriptions/runes"] = true, },
 		resolvers.inscription("RUNE:_SHIELDING", {cooldown=14, dur=5, power=100}),