瀏覽代碼

Tweaks for creature bonuses.

DjWarmonger 13 年之前
父節點
當前提交
906fa04a60
共有 2 個文件被更改,包括 9 次插入1 次删除
  1. 3 1
      lib/CCreatureHandler.cpp
  2. 6 0
      lib/CModHandler.cpp

+ 3 - 1
lib/CCreatureHandler.cpp

@@ -694,7 +694,9 @@ void CCreatureHandler::loadStackExp(Bonus & b, BonusList & bl, CLegacyConfigPars
 	case 'd':
 		b.type = Bonus::DEFENSIVE_STANCE; break;
 	case 'e':
-		b.type = Bonus::DOUBLE_DAMAGE_CHANCE; break;
+		b.type = Bonus::DOUBLE_DAMAGE_CHANCE;
+		b.subtype = 0;
+		break;
 	case 'E':
 		b.type = Bonus::DEATH_STARE;
 		b.subtype = 0; //Gorgon

+ 6 - 0
lib/CModHandler.cpp

@@ -160,12 +160,14 @@ CCreature * CModHandler::loadCreature (const JsonNode &node)
 	BOOST_FOREACH (const JsonNode &bonus, node["abilities"].Vector())
 	{
 		auto b = ParseBonus(bonus);
+		b->source = Bonus::CREATURE_ABILITY;
 		b->duration = Bonus::PERMANENT;
 		cre->addNewBonus(b);
 	}
 	BOOST_FOREACH (const JsonNode &exp, node["stackExperience"].Vector())
 	{
 		auto bonus = ParseBonus (exp["bonus"]);
+		bonus->source = Bonus::STACK_EXPERIENCE;
 		bonus->duration = Bonus::PERMANENT;
 		const JsonVector &values = exp["values"].Vector();
 		int lowerLimit = 1;//, upperLimit = 255;
@@ -281,6 +283,10 @@ void CModHandler::recreateHandlers()
 	BOOST_FOREACH (auto creature, creatures)
 	{
 		creature->idNumber = VLC->creh->creatures.size(); //calculate next index for every used creature
+		BOOST_FOREACH (auto bonus, creature->getBonusList())
+		{
+			bonus->sid = creature->idNumber;
+		}
 		VLC->creh->creatures.push_back (creature);
 		//TODO: use refName?
 		//if (creature->nameRef.size())