Ver código fonte

-Fixed abilities for new creatures not being displayed in creature window
-Fixed crash with rank-range limiter used with stack experience disabled

DjWarmonger 13 anos atrás
pai
commit
7759ed017e
2 arquivos alterados com 7 adições e 2 exclusões
  1. 2 0
      lib/CCreatureSet.cpp
  2. 5 2
      lib/CModHandler.cpp

+ 2 - 0
lib/CCreatureSet.cpp

@@ -486,6 +486,8 @@ int CStackInstance::getQuantityID() const
 
 int CStackInstance::getExpRank() const
 {
+	if (!VLC->modh->modules.STACK_EXP)
+		return 0;
 	int tier = type->level;
 	if (vstd::iswithin(tier, 1, 7))
 	{

+ 5 - 2
lib/CModHandler.cpp

@@ -159,11 +159,14 @@ CCreature * CModHandler::loadCreature (const JsonNode &node)
 
 	BOOST_FOREACH (const JsonNode &bonus, node["abilities"].Vector())
 	{
-		cre->addNewBonus(ParseBonus(bonus));
+		auto b = ParseBonus(bonus);
+		b->duration = Bonus::PERMANENT;
+		cre->addNewBonus(b);
 	}
 	BOOST_FOREACH (const JsonNode &exp, node["stackExperience"].Vector())
 	{
 		auto bonus = ParseBonus (exp["bonus"]);
+		bonus->duration = Bonus::PERMANENT;
 		const JsonVector &values = exp["values"].Vector();
 		int lowerLimit = 1, upperLimit = 255;
 		if (values[0].getType() == JsonNode::JsonType::DATA_BOOL)
@@ -172,7 +175,7 @@ CCreature * CModHandler::loadCreature (const JsonNode &node)
 			{
 				if (val.Bool() == true)
 				{
-					bonus->limiter.reset (new RankRangeLimiter(lowerLimit));
+					bonus->limiter = make_shared<RankRangeLimiter>(RankRangeLimiter(lowerLimit));
 					cre->addNewBonus (new Bonus(*bonus)); //bonuses must be unique objects
 					break; //TODO: allow bonuses to turn off?
 				}