1. Rename CONDITION_REPUTATION_RANK->CONDITION_REPUTATION_RANK_MIN
2. Add CONDITION_REPUTATION_RANK_MAX
Зачем: Есть нпц с госсипами, у которых текст для каждого ранга репутации, пример - охрана Черного ворона, властитель Крыльев пустоты, по старой системе мы получаем так(type,value1,value2):
Если имеем 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