mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 13:16:23 +00:00
feat(Core/SAI): Add pet variable to SMART_TARGET_INVOKER_PARTY (#20804)
* feat(Core/SAI): Add pet variable to SMART_TARGET_INVOKER_PARTY * closes https://github.com/azerothcore/azerothcore-wotlk/issues/15755 * mb
This commit is contained in:
@@ -3511,8 +3511,15 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e,
|
||||
{
|
||||
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
|
||||
if (Player* member = groupRef->GetSource())
|
||||
{
|
||||
if (member->IsInMap(player))
|
||||
targets.push_back(member);
|
||||
|
||||
if (e.target.invokerParty.includePets)
|
||||
if (Creature* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*member, member->GetPetGUID()))
|
||||
if (pet->IsPet() && pet->IsInMap(player))
|
||||
targets.push_back(pet);
|
||||
}
|
||||
}
|
||||
// We still add the player to the list if there is no group. If we do
|
||||
// this even if there is a group (thus the else-check), it will add the
|
||||
|
||||
@@ -908,7 +908,7 @@ bool SmartAIMgr::CheckUnusedTargetParams(SmartScriptHolder const& e)
|
||||
case SMART_TARGET_GAMEOBJECT_RANGE: return sizeof(SmartTarget::goRange);
|
||||
case SMART_TARGET_GAMEOBJECT_GUID: return sizeof(SmartTarget::goGUID);
|
||||
case SMART_TARGET_GAMEOBJECT_DISTANCE: return sizeof(SmartTarget::goDistance);
|
||||
case SMART_TARGET_INVOKER_PARTY: return NO_PARAMS;
|
||||
case SMART_TARGET_INVOKER_PARTY: return sizeof(SmartTarget::invokerParty);
|
||||
case SMART_TARGET_PLAYER_RANGE: return sizeof(SmartTarget::playerRange);
|
||||
case SMART_TARGET_PLAYER_DISTANCE: return sizeof(SmartTarget::playerDistance);
|
||||
case SMART_TARGET_CLOSEST_CREATURE: return sizeof(SmartTarget::unitClosest);
|
||||
|
||||
@@ -1533,7 +1533,7 @@ enum SMARTAI_TARGETS
|
||||
SMART_TARGET_GAMEOBJECT_RANGE = 13, // entry(0any), min, max
|
||||
SMART_TARGET_GAMEOBJECT_GUID = 14, // guid, entry
|
||||
SMART_TARGET_GAMEOBJECT_DISTANCE = 15, // entry(0any), maxDist
|
||||
SMART_TARGET_INVOKER_PARTY = 16, // invoker's party members
|
||||
SMART_TARGET_INVOKER_PARTY = 16, // includePets(0 - false, 1 - true)
|
||||
SMART_TARGET_PLAYER_RANGE = 17, // min, max, maxCount (maxCount by pussywizard), set target.o to 1 if u want to search for all in range if min, max fails
|
||||
SMART_TARGET_PLAYER_DISTANCE = 18, // maxDist
|
||||
SMART_TARGET_CLOSEST_CREATURE = 19, // CreatureEntry(0any), maxDist, dead?
|
||||
@@ -1736,6 +1736,11 @@ struct SmartTarget
|
||||
uint32 index;
|
||||
uint32 type;
|
||||
} instanceStorage;
|
||||
|
||||
struct
|
||||
{
|
||||
SAIBool includePets;
|
||||
} invokerParty;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user