Показать сообщение отдельно
Старый 15.05.2012, 18:29   #1
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию [12007] Add CONDITION_REPUTATION_RANK_MAX

1. Rename CONDITION_REPUTATION_RANK->CONDITION_REPUTATION_RANK_MIN
2. Add CONDITION_REPUTATION_RANK_MAX

Зачем: Есть нпц с госсипами, у которых текст для каждого ранга репутации, пример - охрана Черного ворона, властитель Крыльев пустоты, по старой системе мы получаем так(type,value1,value2):
Цитата:
5 349 3
5 349 4
Если имеем 4 ранг - для ядра условия текста и 3 и 4 ранга подходят.))
С новой системой поточнее:
Цитата:
5 349 3 и 30 349 4
5 349 4
Патч:
Код:
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index 180142b..47e46fe 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -7507,7 +7507,7 @@ bool PlayerCondition::Meets(Player const * player) const
             player->GetZoneAndAreaId(zone,area);
             return (zone == m_value1 || area == m_value1) == (m_value2 == 0);
         }
-        case CONDITION_REPUTATION_RANK:
+        case CONDITION_REPUTATION_RANK_MIN:
         {
             FactionEntry const* faction = sFactionStore.LookupEntry(m_value1);
             return faction && player->GetReputationMgr().GetRank(faction) >= ReputationRank(m_value2);
@@ -7676,6 +7676,11 @@ bool PlayerCondition::Meets(Player const * player) const
                 return !player->HasSkill(m_value1);
             else
                 return player->HasSkill(m_value1) && player->GetBaseSkillValue(m_value1) < m_value2;
+        case CONDITION_REPUTATION_RANK_MAX:
+        {
+            FactionEntry const* faction = sFactionStore.LookupEntry(m_value1);
+            return faction && player->GetReputationMgr().GetRank(faction) < ReputationRank(m_value2);
+        }
         default:
             return false;
     }
@@ -7772,7 +7777,8 @@ bool PlayerCondition::IsValid(uint16 entry, ConditionType condition, uint32 valu
             }
             break;
         }
-        case CONDITION_REPUTATION_RANK:
+        case CONDITION_REPUTATION_RANK_MIN:
+        case CONDITION_REPUTATION_RANK_MAX:
         {
             FactionEntry const* factionEntry = sFactionStore.LookupEntry(value1);
             if (!factionEntry)
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index 229d9b2..81a7c26 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -345,7 +345,7 @@ enum ConditionType
     CONDITION_ITEM                  = 2,                    // item_id      count   check present req. amount items in inventory
     CONDITION_ITEM_EQUIPPED         = 3,                    // item_id      0
     CONDITION_AREAID                = 4,                    // area_id      0, 1 (0: in (sub)area, 1: not in (sub)area)
-    CONDITION_REPUTATION_RANK       = 5,                    // faction_id   min_rank
+    CONDITION_REPUTATION_RANK_MIN   = 5,                    // faction_id   min_rank
     CONDITION_TEAM                  = 6,                    // player_team  0,      (469 - Alliance 67 - Horde)
     CONDITION_SKILL                 = 7,                    // skill_id     skill_value
     CONDITION_QUESTREWARDED         = 8,                    // quest_id     0
@@ -375,6 +375,7 @@ enum ConditionType
     CONDITION_SKILL_BELOW           = 29,                   // skill_id     skill_value
                                                             // True if player has skill skill_id and skill less than (and not equal) skill_value (for skill_value > 1)
                                                             // If skill_value == 1, then true if player has not skill skill_id
+    CONDITION_REPUTATION_RANK_MAX   = 30,                   // faction_id   max_rank
 };
 
 class PlayerCondition
NeatElves вне форума