Browse Source

invalidate bonus cashe on effect actualization

AlexVinS 10 years ago
parent
commit
3a50afe1a3
1 changed files with 11 additions and 15 deletions
  1. 11 15
      lib/NetPacksLib.cpp

+ 11 - 15
lib/NetPacksLib.cpp

@@ -1342,21 +1342,6 @@ DLL_LINKAGE void BattleSpellCast::applyGs( CGameState *gs )
 	spell->applyBattle(gs->curB, this);
 	spell->applyBattle(gs->curB, this);
 }
 }
 
 
-void actualizeEffect(CStack * s, const std::vector<Bonus> & ef)
-{
-	//actualizing features vector
-
-	for(const Bonus &fromEffect : ef)
-	{
-		for(Bonus *stackBonus : s->getBonusList()) //TODO: optimize
-		{
-			if(stackBonus->source == Bonus::SPELL_EFFECT && stackBonus->type == fromEffect.type && stackBonus->subtype == fromEffect.subtype)
-			{
-				stackBonus->turnsRemain = std::max(stackBonus->turnsRemain, fromEffect.turnsRemain);
-			}
-		}
-	}
-}
 void actualizeEffect(CStack * s, const Bonus & ef)
 void actualizeEffect(CStack * s, const Bonus & ef)
 {
 {
 	for(Bonus *stackBonus : s->getBonusList()) //TODO: optimize
 	for(Bonus *stackBonus : s->getBonusList()) //TODO: optimize
@@ -1366,6 +1351,17 @@ void actualizeEffect(CStack * s, const Bonus & ef)
 			stackBonus->turnsRemain = std::max(stackBonus->turnsRemain, ef.turnsRemain);
 			stackBonus->turnsRemain = std::max(stackBonus->turnsRemain, ef.turnsRemain);
 		}
 		}
 	}
 	}
+	CBonusSystemNode::treeHasChanged();	
+}
+
+void actualizeEffect(CStack * s, const std::vector<Bonus> & ef)
+{
+	//actualizing features vector
+
+	for(const Bonus &fromEffect : ef)
+	{
+		actualizeEffect(s, fromEffect);
+	}
 }
 }
 
 
 DLL_LINKAGE void SetStackEffect::applyGs( CGameState *gs )
 DLL_LINKAGE void SetStackEffect::applyGs( CGameState *gs )