feat(Core/AI): CU_SAI - Custom Target Options (#2879)

NEW:
* SMART_TARGET_PLAYER_WITH_AURA (spellid, negation?, distMax, distMin) - if target.O is set it will resize the list of targets to target.o
* SMART_TARGET_RANDOM_POINT (range, amount (for summon creature), self (creature is middle else use xyz) (ONLY USED FOR SUMMON CREATURE OR MOVE/JUMP TO POS ACTIONS FOR NOW)

MODIFIED:
* SMART_ACTION_SUMMON_CREATURE now possible to spawn multiple creatures with SMART_TARGET_RANDOM_POINT
* SMART_ACTION_MOVE_TO_POS/JUMP_TO_POS now possible to move to a random point with SMART_TARGET_RANDOM_POINT
* SMART_TARGET_PLAYER_RANGE no longer targets GMs or dead targets and when target.o is >0 it will try all possible targets in max instead of min-maxing


Co-authored-by: Francesco Borzì <borzifrancesco@gmail.com>
This commit is contained in:
P-Kito
2020-04-18 16:59:52 +02:00
committed by GitHub
parent 63c86a9a14
commit 2514f8fc9a
7 changed files with 1033 additions and 677 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -104,6 +104,40 @@ struct PlayerTalent
bool IsInSpec(uint8 spec) { return (specMask & (1<<spec)); }
};
enum TalentTree // talent tabs
{
TALENT_TREE_WARRIOR_ARMS = 161,
TALENT_TREE_WARRIOR_FURY = 164,
TALENT_TREE_WARRIOR_PROTECTION = 163,
TALENT_TREE_PALADIN_HOLY = 382,
TALENT_TREE_PALADIN_PROTECTION = 383,
TALENT_TREE_PALADIN_RETRIBUTION = 381,
TALENT_TREE_HUNTER_BEAST_MASTERY = 361,
TALENT_TREE_HUNTER_MARKSMANSHIP = 363,
TALENT_TREE_HUNTER_SURVIVAL = 362,
TALENT_TREE_ROGUE_ASSASSINATION = 182,
TALENT_TREE_ROGUE_COMBAT = 181,
TALENT_TREE_ROGUE_SUBTLETY = 183,
TALENT_TREE_PRIEST_DISCIPLINE = 201,
TALENT_TREE_PRIEST_HOLY = 202,
TALENT_TREE_PRIEST_SHADOW = 203,
TALENT_TREE_DEATH_KNIGHT_BLOOD = 398,
TALENT_TREE_DEATH_KNIGHT_FROST = 399,
TALENT_TREE_DEATH_KNIGHT_UNHOLY = 400,
TALENT_TREE_SHAMAN_ELEMENTAL = 261,
TALENT_TREE_SHAMAN_ENHANCEMENT = 263,
TALENT_TREE_SHAMAN_RESTORATION = 262,
TALENT_TREE_MAGE_ARCANE = 81,
TALENT_TREE_MAGE_FIRE = 41,
TALENT_TREE_MAGE_FROST = 61,
TALENT_TREE_WARLOCK_AFFLICTION = 302,
TALENT_TREE_WARLOCK_DEMONOLOGY = 303,
TALENT_TREE_WARLOCK_DESTRUCTION = 301,
TALENT_TREE_DRUID_BALANCE = 283,
TALENT_TREE_DRUID_FERAL_COMBAT = 281,
TALENT_TREE_DRUID_RESTORATION = 282
};
#define SPEC_MASK_ALL 255
// Spell modifier (used for modify other spells)
@@ -1729,8 +1763,11 @@ class Player : public Unit, public GridObject<Player>
void ActivateSpec(uint8 spec);
void GetTalentTreePoints(uint8 (&specPoints)[3]) const;
uint8 GetMostPointsTalentTree() const;
bool IsHealerTalentSpec() const;
bool IsTankTalentSpec() const;
bool HasTankSpec();
bool HasMeleeSpec();
bool HasCasterSpec();
bool HasHealSpec();
uint32 GetSpec(int8 spec = -1);
void InitGlyphsForLevel();
void SetGlyphSlot(uint8 slot, uint32 slottype) { SetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot, slottype); }
@@ -2986,7 +3023,7 @@ void RemoveItemsSetItem(Player* player, ItemTemplate const* proto);
// "the bodies of template functions must be made available in a header file"
template <class T> T Player::ApplySpellMod(uint32 spellId, SpellModOp op, T &basevalue, Spell* spell, bool temporaryPet)
{
{
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId);
if (!spellInfo)
return 0;