diff --git a/game/engines/default/engine/interface/ActorTalents.lua b/game/engines/default/engine/interface/ActorTalents.lua
index 931ac6f8df3d0c4f8632c938d876b3413937302f..07df45bd14b8b890c69b79fe287165bf1656adc1 100644
--- a/game/engines/default/engine/interface/ActorTalents.lua
+++ b/game/engines/default/engine/interface/ActorTalents.lua
@@ -447,6 +447,24 @@ function _M:unlearnTalent(t_id, nb)
 	return true
 end
 
+--- Force passives update
+function _M:updateTalentPassives(tid)
+	if not self:knowTalent(tid) then return end
+
+	local t = self:getTalentFromId(tid)	
+	if not t.passives then return end
+
+	self.talents_learn_vals[t.id] = self.talents_learn_vals[t.id] or {}
+	local p = self.talents_learn_vals[t.id]
+
+	if p.__tmpvals then for i = 1, #p.__tmpvals do
+		self:removeTemporaryValue(p.__tmpvals[i][1], p.__tmpvals[i][2])
+	end end
+
+	self.talents_learn_vals[t.id] = {}
+	t.passives(self, t, self.talents_learn_vals[t.id])
+end
+
 --- Checks the talent if learnable
 -- @param t the talent to check
 -- @param offset the level offset to check, defaults to 1