Преглед изворни кода

Fix formatting of luck/morale bonuses

Ivan Savenko пре 1 година
родитељ
комит
7a42e21e4d
3 измењених фајлова са 9 додато и 2 уклоњено
  1. 2 1
      lib/CArtHandler.cpp
  2. 1 0
      lib/CSkillHandler.cpp
  3. 6 1
      lib/MetaString.cpp

+ 2 - 1
lib/CArtHandler.cpp

@@ -294,7 +294,8 @@ void CArtifact::addNewBonus(const std::shared_ptr<Bonus>& b)
 {
 	b->source = BonusSource::ARTIFACT;
 	b->duration = BonusDuration::PERMANENT;
-	b->description.appendName(id);
+	b->description.appendTextID(getNameTextID());
+	b->description.appendRawString(" %+d");
 	CBonusSystemNode::addNewBonus(b);
 }
 

+ 1 - 0
lib/CSkillHandler.cpp

@@ -95,6 +95,7 @@ void CSkill::addNewBonus(const std::shared_ptr<Bonus> & b, int level)
 	b->sid = BonusSourceID(id);
 	b->duration = BonusDuration::PERMANENT;
 	b->description.appendTextID(getNameTextID());
+	b->description.appendRawString(" %+d");
 	levels[level-1].effects.push_back(b);
 }
 

+ 6 - 1
lib/MetaString.cpp

@@ -169,7 +169,12 @@ DLL_LINKAGE std::string MetaString::toString() const
 				break;
 			case EMessage::REPLACE_POSITIVE_NUMBER:
 				if (dst.find("%+d") != std::string::npos)
-					boost::replace_first(dst, "%+d", '+' + std::to_string(numbers[nums++]));
+				{
+					if (numbers[nums] > 0)
+						boost::replace_first(dst, "%+d", '+' + std::to_string(numbers[nums++]));
+					else
+						boost::replace_first(dst, "%+d", std::to_string(numbers[nums++]));
+				}
 				else
 					boost::replace_first(dst, "%d", std::to_string(numbers[nums++]));
 				break;