Sfoglia il codice sorgente

made diplomacy join chance bonus-based

Henning Koehler 8 anni fa
parent
commit
9b3c61616f
3 ha cambiato i file con 23 aggiunte e 3 eliminazioni
  1. 18 0
      config/skills.json
  2. 1 0
      lib/CSkillHandler.cpp
  3. 4 3
      lib/mapObjects/MiscObjects.cpp

+ 18 - 0
config/skills.json

@@ -140,6 +140,12 @@
         "basic" : {
             "description" : "",
             "effects" : [
+                {
+                    "subtype" : "skill.diplomacy",
+                    "type" : "SECONDARY_SKILL_PREMY",
+                    "val" : 1,
+                    "valueType" : "BASE_NUMBER"
+                },
                 {
                     "type" : "SURRENDER_DISCOUNT",
                     "val" : 20,
@@ -150,6 +156,12 @@
         "advanced" : {
             "description" : "",
             "effects" : [
+                {
+                    "subtype" : "skill.diplomacy",
+                    "type" : "SECONDARY_SKILL_PREMY",
+                    "val" : 2,
+                    "valueType" : "BASE_NUMBER"
+                },
                 {
                     "type" : "SURRENDER_DISCOUNT",
                     "val" : 40,
@@ -160,6 +172,12 @@
         "expert" : {
             "description" : "",
             "effects" : [
+                {
+                    "subtype" : "skill.diplomacy",
+                    "type" : "SECONDARY_SKILL_PREMY",
+                    "val" : 3,
+                    "valueType" : "BASE_NUMBER"
+                },
                 {
                     "type" : "SURRENDER_DISCOUNT",
                     "val" : 60,

+ 1 - 0
lib/CSkillHandler.cpp

@@ -234,6 +234,7 @@ std::vector<std::shared_ptr<Bonus>> CSkillHandler::defaultBonus(SecondarySkill s
 	case SecondarySkill::SCOUTING:
 		addBonus(level, Bonus::SIGHT_RADIOUS); break;
 	case SecondarySkill::DIPLOMACY:
+		addBonus(level);
 		addBonus(20 * level, Bonus::SURRENDER_DISCOUNT); break;
 	case SecondarySkill::NAVIGATION:
 		addBonus(50 * level); break;

+ 4 - 3
lib/mapObjects/MiscObjects.cpp

@@ -323,17 +323,18 @@ int CGCreature::takenAction(const CGHeroInstance *h, bool allowJoin) const
 	if(count*2 > totalCount)
 		sympathy++; // 2 - hero have similar creatures more that 50%
 
-	int charisma = powerFactor + h->getSecSkillLevel(SecondarySkill::DIPLOMACY) + sympathy;
+	int diplomacy = h->valOfBonuses(Bonus::SECONDARY_SKILL_PREMY, SecondarySkill::DIPLOMACY);
+	int charisma = powerFactor + diplomacy + sympathy;
 
 	if(charisma < character)
 		return FIGHT;
 
 	if (allowJoin)
 	{
-		if(h->getSecSkillLevel(SecondarySkill::DIPLOMACY) + sympathy + 1 >= character)
+		if(diplomacy + sympathy + 1 >= character)
 			return JOIN_FOR_FREE;
 
-		else if(h->getSecSkillLevel(SecondarySkill::DIPLOMACY) * 2  +  sympathy  +  1 >= character)
+		else if(diplomacy * 2  +  sympathy  +  1 >= character)
 			return VLC->creh->creatures[subID]->cost[6] * getStackCount(SlotID(0)); //join for gold
 	}