Core/Conditions: Implemented new condition type CONDITION_BATTLE_PET_COUNT to check how many copies of a battle pet are collected
Port From (https://github.com/TrinityCore/TrinityCore/commit/b5a67cf17dbf18369a2a3370d9d45ca6c56e8cc7)
This commit is contained in:
@@ -72,6 +72,7 @@ namespace Framework.Constants
|
|||||||
Gamemaster = 50, // canBeGM 0 0 true if player is gamemaster (or can be gamemaster)
|
Gamemaster = 50, // canBeGM 0 0 true if player is gamemaster (or can be gamemaster)
|
||||||
ObjectEntryGuid = 51, // TypeID entry guid true if object is type TypeID and the entry is 0 or matches entry of the object or matches guid of the object
|
ObjectEntryGuid = 51, // TypeID entry guid true if object is type TypeID and the entry is 0 or matches entry of the object or matches guid of the object
|
||||||
TypeMask = 52, // TypeMask 0 0 true if object is type object's TypeMask matches provided TypeMask
|
TypeMask = 52, // TypeMask 0 0 true if object is type object's TypeMask matches provided TypeMask
|
||||||
|
BattlePetCount = 53, // SpecieId count ComparisonType true if player has `count` of battle pet species
|
||||||
Max
|
Max
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -393,6 +393,12 @@ namespace Game.Conditions
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ConditionTypes.BattlePetCount:
|
||||||
|
{
|
||||||
|
if (player != null)
|
||||||
|
condMeets = MathFunctions.CompareValues((ComparisionType)ConditionValue3, player.GetSession().GetBattlePetMgr().GetPetCount(CliDB.BattlePetSpeciesStorage.LookupByKey(ConditionValue1), player.GetGUID()), ConditionValue2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
condMeets = false;
|
condMeets = false;
|
||||||
break;
|
break;
|
||||||
@@ -503,6 +509,7 @@ namespace Game.Conditions
|
|||||||
break;
|
break;
|
||||||
case ConditionTypes.DailyQuestDone:
|
case ConditionTypes.DailyQuestDone:
|
||||||
case ConditionTypes.ObjectiveProgress:
|
case ConditionTypes.ObjectiveProgress:
|
||||||
|
case ConditionTypes.BattlePetCount:
|
||||||
mask |= GridMapTypeMask.Player;
|
mask |= GridMapTypeMask.Player;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -1724,6 +1724,23 @@ namespace Game
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ConditionTypes.BattlePetCount:
|
||||||
|
if (!CliDB.BattlePetSpeciesStorage.ContainsKey(cond.ConditionValue1))
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has non existing BattlePet SpeciesId in value1 ({cond.ConditionValue1}), skipped.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (cond.ConditionValue2 > SharedConst.DefaultMaxBattlePetsPerSpecies)
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has invalid (greater than {SharedConst.DefaultMaxBattlePetsPerSpecies}) value2 ({cond.ConditionValue2}), skipped.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (cond.ConditionValue3 >= (uint)ComparisionType.Max)
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has invalid ComparisionType ({cond.ConditionValue3}), skipped.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Log.outError(LogFilter.Sql, $"{cond.ToString()} Invalid ConditionType in `condition` table, ignoring.");
|
Log.outError(LogFilter.Sql, $"{cond.ToString()} Invalid ConditionType in `condition` table, ignoring.");
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user