mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
[10105] Condition CONDITION_ZONEID (4) extanded way work.
* Condition CONDITION_ZONEID renamed CONDITION_AREAID and now work also with subzone area ids * Second arg of condition cna be 0 or 1 now in in case 1 check "not in area" case * Also all condition related error output include condition id.
This commit is contained in:
parent
11372496e5
commit
e203a235ba
3 changed files with 56 additions and 49 deletions
|
|
@ -7383,8 +7383,12 @@ bool PlayerCondition::Meets(Player const * player) const
|
|||
return player->HasItemCount(value1, value2);
|
||||
case CONDITION_ITEM_EQUIPPED:
|
||||
return player->HasItemOrGemWithIdEquipped(value1,1);
|
||||
case CONDITION_ZONEID:
|
||||
return player->GetZoneId() == value1;
|
||||
case CONDITION_AREAID:
|
||||
{
|
||||
uint32 zone, area;
|
||||
player->GetZoneAndAreaId(zone,area);
|
||||
return (zone == value1 || area == value1) == (value2 == 0);
|
||||
}
|
||||
case CONDITION_REPUTATION_RANK:
|
||||
{
|
||||
FactionEntry const* faction = sFactionStore.LookupEntry(value1);
|
||||
|
|
@ -7482,12 +7486,13 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
{
|
||||
if (!sSpellStore.LookupEntry(value1))
|
||||
{
|
||||
sLog.outErrorDb("Aura condition requires to have non existing spell (Id: %d), skipped", value1);
|
||||
sLog.outErrorDb("Aura condition (%u) requires to have non existing spell (Id: %d), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
if (value2 >= MAX_EFFECT_INDEX)
|
||||
{
|
||||
sLog.outErrorDb("Aura condition requires to have non existing effect index (%u) (must be 0..%u), skipped", value2, MAX_EFFECT_INDEX-1);
|
||||
sLog.outErrorDb("Aura condition (%u) requires to have non existing effect index (%u) (must be 0..%u), skipped",
|
||||
condition, value2, MAX_EFFECT_INDEX-1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7498,13 +7503,13 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
ItemPrototype const *proto = ObjectMgr::GetItemPrototype(value1);
|
||||
if (!proto)
|
||||
{
|
||||
sLog.outErrorDb("Item condition requires to have non existing item (%u), skipped", value1);
|
||||
sLog.outErrorDb("Item condition (%u) requires to have non existing item (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (value2 < 1)
|
||||
{
|
||||
sLog.outErrorDb("Item condition useless with count < 1, skipped");
|
||||
sLog.outErrorDb("Item condition (%u) useless with count < 1, skipped", condition);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7514,22 +7519,23 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
ItemPrototype const *proto = ObjectMgr::GetItemPrototype(value1);
|
||||
if (!proto)
|
||||
{
|
||||
sLog.outErrorDb("ItemEquipped condition requires to have non existing item (%u) equipped, skipped", value1);
|
||||
sLog.outErrorDb("ItemEquipped condition (%u) requires to have non existing item (%u) equipped, skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONDITION_ZONEID:
|
||||
case CONDITION_AREAID:
|
||||
{
|
||||
AreaTableEntry const* areaEntry = GetAreaEntryByAreaID(value1);
|
||||
if (!areaEntry)
|
||||
{
|
||||
sLog.outErrorDb("Zone condition requires to be in non existing area (%u), skipped", value1);
|
||||
sLog.outErrorDb("Zone condition (%u) requires to be in non existing area (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
if(areaEntry->zone != 0)
|
||||
|
||||
if (value2 > 1)
|
||||
{
|
||||
sLog.outErrorDb("Zone condition requires to be in area (%u) which is a subzone but zone expected, skipped", value1);
|
||||
sLog.outErrorDb("Zone condition (%u) has invalid argument %u (must be 0..1), skipped", condition, value2);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7539,7 +7545,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
FactionEntry const* factionEntry = sFactionStore.LookupEntry(value1);
|
||||
if (!factionEntry)
|
||||
{
|
||||
sLog.outErrorDb("Reputation condition requires to have reputation non existing faction (%u), skipped", value1);
|
||||
sLog.outErrorDb("Reputation condition (%u) requires to have reputation non existing faction (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7548,7 +7554,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
{
|
||||
if (value1 != ALLIANCE && value1 != HORDE)
|
||||
{
|
||||
sLog.outErrorDb("Team condition specifies unknown team (%u), skipped", value1);
|
||||
sLog.outErrorDb("Team condition (%u) specifies unknown team (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7558,12 +7564,12 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
SkillLineEntry const *pSkill = sSkillLineStore.LookupEntry(value1);
|
||||
if (!pSkill)
|
||||
{
|
||||
sLog.outErrorDb("Skill condition specifies non-existing skill (%u), skipped", value1);
|
||||
sLog.outErrorDb("Skill condition (%u) specifies non-existing skill (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
if (value2 < 1 || value2 > sWorld.GetConfigMaxSkillValue() )
|
||||
{
|
||||
sLog.outErrorDb("Skill condition specifies invalid skill value (%u), skipped", value2);
|
||||
sLog.outErrorDb("Skill condition (%u) specifies invalid skill value (%u), skipped", condition, value2);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7575,31 +7581,32 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
Quest const *Quest = sObjectMgr.GetQuestTemplate(value1);
|
||||
if (!Quest)
|
||||
{
|
||||
sLog.outErrorDb("Quest condition specifies non-existing quest (%u), skipped", value1);
|
||||
sLog.outErrorDb("Quest condition (%u) specifies non-existing quest (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (value2)
|
||||
sLog.outErrorDb("Quest condition has useless data in value2 (%u)!", value2);
|
||||
sLog.outErrorDb("Quest condition (%u) has useless data in value2 (%u)!", condition, value2);
|
||||
break;
|
||||
}
|
||||
case CONDITION_AD_COMMISSION_AURA:
|
||||
{
|
||||
if (value1)
|
||||
sLog.outErrorDb("Quest condition has useless data in value1 (%u)!", value1);
|
||||
sLog.outErrorDb("Quest condition (%u) has useless data in value1 (%u)!", condition, value1);
|
||||
if (value2)
|
||||
sLog.outErrorDb("Quest condition has useless data in value2 (%u)!", value2);
|
||||
sLog.outErrorDb("Quest condition (%u) has useless data in value2 (%u)!", condition, value2);
|
||||
break;
|
||||
}
|
||||
case CONDITION_NO_AURA:
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(value1))
|
||||
{
|
||||
sLog.outErrorDb("Aura condition requires to have non existing spell (Id: %d), skipped", value1);
|
||||
sLog.outErrorDb("Aura condition (%u) requires to have non existing spell (Id: %d), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
if (value2 > MAX_EFFECT_INDEX)
|
||||
{
|
||||
sLog.outErrorDb("Aura condition requires to have non existing effect index (%u) (must be 0..%u), skipped", value2, MAX_EFFECT_INDEX-1);
|
||||
sLog.outErrorDb("Aura condition (%u) requires to have non existing effect index (%u) (must be 0..%u), skipped", condition, value2, MAX_EFFECT_INDEX-1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7609,7 +7616,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
GameEventMgr::GameEventDataMap const& events = sGameEventMgr.GetEventMap();
|
||||
if (value1 >=events.size() || !events[value1].isValid())
|
||||
{
|
||||
sLog.outErrorDb("Active event condition requires existed event id (%u), skipped", value1);
|
||||
sLog.outErrorDb("Active event (%u) condition requires existed event id (%u), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7618,7 +7625,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
{
|
||||
if (!value1 && !value2)
|
||||
{
|
||||
sLog.outErrorDb("Area flag condition has both values like 0, skipped");
|
||||
sLog.outErrorDb("Area flag (%u) condition has both values like 0, skipped", condition);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7627,19 +7634,19 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
{
|
||||
if (!value1 && !value2)
|
||||
{
|
||||
sLog.outErrorDb("Race_class condition has both values like 0, skipped");
|
||||
sLog.outErrorDb("Race_class condition (%u) has both values like 0, skipped", condition);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (value1 && !(value1 & RACEMASK_ALL_PLAYABLE))
|
||||
{
|
||||
sLog.outErrorDb("Race_class condition has invalid player class %u, skipped", value1);
|
||||
sLog.outErrorDb("Race_class condition (%u) has invalid player class %u, skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (value2 && !(value2 & CLASSMASK_ALL_PLAYABLE))
|
||||
{
|
||||
sLog.outErrorDb("Race_class condition has invalid race mask %u, skipped", value2);
|
||||
sLog.outErrorDb("Race_class condition (%u) has invalid race mask %u, skipped", condition, value2);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7648,13 +7655,13 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
{
|
||||
if (!value1 || value1 > sWorld.getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
sLog.outErrorDb("Level condition has invalid level %u, skipped", value1);
|
||||
sLog.outErrorDb("Level condition (%u) has invalid level %u, skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (value2 > 2)
|
||||
{
|
||||
sLog.outErrorDb("Level condition has invalid argument %u (must be 0..2), skipped", value2);
|
||||
sLog.outErrorDb("Level condition (%u) has invalid argument %u (must be 0..2), skipped", condition, value2);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -7664,13 +7671,13 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
{
|
||||
if (!sSpellStore.LookupEntry(value1))
|
||||
{
|
||||
sLog.outErrorDb("Spell condition requires to have non existing spell (Id: %d), skipped", value1);
|
||||
sLog.outErrorDb("Spell condition (%u) requires to have non existing spell (Id: %d), skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (value2 > 1)
|
||||
{
|
||||
sLog.outErrorDb("Spell condition has invalid argument %u (must be 0..1), skipped", value2);
|
||||
sLog.outErrorDb("Spell condition (%u) has invalid argument %u (must be 0..1), skipped", condition, value2);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -7681,7 +7688,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
|||
MapEntry const* mapEntry = sMapStore.LookupEntry(value1);
|
||||
if (!mapEntry || !mapEntry->IsDungeon())
|
||||
{
|
||||
sLog.outErrorDb("Instance script condition has not existed map id %u as first arg, skipped", value1);
|
||||
sLog.outErrorDb("Instance script condition (%u) has not existed map id %u as first arg, skipped", condition, value1);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -302,7 +302,7 @@ enum ConditionType
|
|||
CONDITION_AURA = 1, // spell_id effindex
|
||||
CONDITION_ITEM = 2, // item_id count
|
||||
CONDITION_ITEM_EQUIPPED = 3, // item_id 0
|
||||
CONDITION_ZONEID = 4, // zone_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_TEAM = 6, // player_team 0, (469 - Alliance 67 - Horde)
|
||||
CONDITION_SKILL = 7, // skill_id skill_value
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "10104"
|
||||
#define REVISION_NR "10105"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue