Explorar o código

Tweaks for creature bonuses.

DjWarmonger %!s(int64=13) %!d(string=hai) anos
pai
achega
906fa04a60
Modificáronse 2 ficheiros con 9 adicións e 1 borrados
  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())