# SPDX-License-Identifier: GPL-3.0-or-later
#
#
# Copyright (C) 2005-2026 MaNGOS <https://www.getmangos.eu/>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#

set(BOT_SRCS
    playerbot/AiFactory.cpp
    playerbot/AiFactory.h
    playerbot/ChatFilter.cpp
    playerbot/ChatFilter.h
    playerbot/ChatHelper.cpp
    playerbot/ChatHelper.h
    playerbot/FleeManager.cpp
    playerbot/FleeManager.h
    playerbot/GuildTaskMgr.cpp
    playerbot/GuildTaskMgr.h
    playerbot/Helpers.cpp
    playerbot/Helpers.h
    playerbot/LazyCalculatedValue.h
    playerbot/LootObjectStack.cpp
    playerbot/LootObjectStack.h
    playerbot/playerbot.h
    playerbot/PlayerbotAI.cpp
    playerbot/PlayerbotAI.h
    playerbot/PlayerbotAIAware.h
    playerbot/PlayerbotAIBase.cpp
    playerbot/PlayerbotAIBase.h
    playerbot/PlayerbotAIConfig.cpp
    playerbot/PlayerbotAIConfig.h
    playerbot/PlayerbotCommandServer.cpp
    playerbot/PlayerbotCommandServer.h
    playerbot/PlayerbotDbStore.cpp
    playerbot/PlayerbotDbStore.h
    playerbot/playerbotDefs.h
    playerbot/PlayerbotFactory.cpp
    playerbot/PlayerbotFactory.h
    playerbot/PlayerbotMgr.cpp
    playerbot/PlayerbotMgr.h
    playerbot/PlayerbotSecurity.cpp
    playerbot/PlayerbotSecurity.h
    playerbot/RandomItemMgr.cpp
    playerbot/RandomItemMgr.h
    playerbot/RandomPlayerbotFactory.cpp
    playerbot/RandomPlayerbotFactory.h
    playerbot/RandomPlayerbotMgr.cpp
    playerbot/RandomPlayerbotMgr.h
    playerbot/strategy/Action.cpp
    playerbot/strategy/Action.h
    playerbot/strategy/ActionBasket.cpp
    playerbot/strategy/ActionBasket.h
    playerbot/strategy/actions
    playerbot/strategy/AiObject.cpp
    playerbot/strategy/AiObject.h
    playerbot/strategy/AiObjectContext.cpp
    playerbot/strategy/AiObjectContext.h
    playerbot/strategy/CustomStrategy.cpp
    playerbot/strategy/CustomStrategy.h
    playerbot/strategy/Engine.cpp
    playerbot/strategy/Engine.h
    playerbot/strategy/Event.cpp
    playerbot/strategy/Event.h
    playerbot/strategy/ExternalEventHelper.h
    playerbot/strategy/ItemVisitors.h
    playerbot/strategy/Multiplier.cpp
    playerbot/strategy/Multiplier.h
    playerbot/strategy/NamedObjectContext.h
    playerbot/strategy/PassiveMultiplier.cpp
    playerbot/strategy/PassiveMultiplier.h
    playerbot/strategy/Queue.cpp
    playerbot/strategy/Queue.h
    playerbot/strategy/Strategy.cpp
    playerbot/strategy/Strategy.h
    playerbot/strategy/StrategyContext.h
    playerbot/strategy/Trigger.cpp
    playerbot/strategy/Trigger.h
    playerbot/strategy/Value.cpp
    playerbot/strategy/Value.h
    playerbot/strategy/actions/AcceptDuelAction.h
    playerbot/strategy/actions/AcceptInvitationAction.h
    playerbot/strategy/actions/AcceptQuestAction.cpp
    playerbot/strategy/actions/AcceptQuestAction.h
    playerbot/strategy/actions/AcceptResurrectAction.h
    playerbot/strategy/actions/ActionContext.h
    playerbot/strategy/actions/AddLootAction.cpp
    playerbot/strategy/actions/AddLootAction.h
    playerbot/strategy/actions/AreaTriggerAction.cpp
    playerbot/strategy/actions/AreaTriggerAction.h
    playerbot/strategy/actions/AttackAction.cpp
    playerbot/strategy/actions/AttackAction.h
    playerbot/strategy/actions/BankAction.cpp
    playerbot/strategy/actions/BankAction.h
    playerbot/strategy/actions/BuffAction.cpp
    playerbot/strategy/actions/BuffAction.h
    playerbot/strategy/actions/BuyAction.cpp
    playerbot/strategy/actions/BuyAction.h
    playerbot/strategy/actions/CastCustomSpellAction.cpp
    playerbot/strategy/actions/CastCustomSpellAction.h
    playerbot/strategy/actions/ChangeChatAction.cpp
    playerbot/strategy/actions/ChangeChatAction.h
    playerbot/strategy/actions/ChangeStrategyAction.cpp
    playerbot/strategy/actions/ChangeStrategyAction.h
    playerbot/strategy/actions/ChangeTalentsAction.cpp
    playerbot/strategy/actions/ChangeTalentsAction.h
    playerbot/strategy/actions/ChatActionContext.h
    playerbot/strategy/actions/ChatShortcutActions.cpp
    playerbot/strategy/actions/ChatShortcutActions.h
    playerbot/strategy/actions/CheckMailAction.cpp
    playerbot/strategy/actions/CheckMailAction.h
    playerbot/strategy/actions/CheckMountStateAction.cpp
    playerbot/strategy/actions/CheckMountStateAction.h
    playerbot/strategy/actions/ChooseTargetActions.h
    playerbot/strategy/actions/CustomStrategyEditAction.cpp
    playerbot/strategy/actions/CustomStrategyEditAction.h
    playerbot/strategy/actions/DebugAction.cpp
    playerbot/strategy/actions/DebugAction.h
    playerbot/strategy/actions/DelayAction.h
    playerbot/strategy/actions/DestroyItemAction.cpp
    playerbot/strategy/actions/DestroyItemAction.h
    playerbot/strategy/actions/DropQuestAction.cpp
    playerbot/strategy/actions/DropQuestAction.h
    playerbot/strategy/actions/EmoteAction.cpp
    playerbot/strategy/actions/EmoteAction.h
    playerbot/strategy/actions/EquipAction.cpp
    playerbot/strategy/actions/EquipAction.h
    playerbot/strategy/actions/FollowActions.cpp
    playerbot/strategy/actions/FollowActions.h
    playerbot/strategy/actions/GenericActions.cpp
    playerbot/strategy/actions/GenericActions.h
    playerbot/strategy/actions/GenericSpellActions.cpp
    playerbot/strategy/actions/GenericSpellActions.h
    playerbot/strategy/actions/GoAction.cpp
    playerbot/strategy/actions/GoAction.h
    playerbot/strategy/actions/GossipHelloAction.cpp
    playerbot/strategy/actions/GossipHelloAction.h
    playerbot/strategy/actions/GreetAction.cpp
    playerbot/strategy/actions/GreetAction.h
    playerbot/strategy/actions/GuildAcceptAction.cpp
    playerbot/strategy/actions/GuildAcceptAction.h
    playerbot/strategy/actions/GuildBankAction.cpp
    playerbot/strategy/actions/GuildBankAction.h
    playerbot/strategy/actions/HelpAction.cpp
    playerbot/strategy/actions/HelpAction.h
    playerbot/strategy/actions/InventoryAction.cpp
    playerbot/strategy/actions/InventoryAction.h
    playerbot/strategy/actions/InventoryChangeFailureAction.cpp
    playerbot/strategy/actions/InventoryChangeFailureAction.h
    playerbot/strategy/actions/InviteToGroupAction.h
    playerbot/strategy/actions/LeaveGroupAction.h
    playerbot/strategy/actions/LfgActions.cpp
    playerbot/strategy/actions/LfgActions.h
    playerbot/strategy/actions/ListQuestsActions.cpp
    playerbot/strategy/actions/ListQuestsActions.h
    playerbot/strategy/actions/ListSpellsAction.cpp
    playerbot/strategy/actions/ListSpellsAction.h
    playerbot/strategy/actions/LogLevelAction.cpp
    playerbot/strategy/actions/LogLevelAction.h
    playerbot/strategy/actions/LootAction.cpp
    playerbot/strategy/actions/LootAction.h
    playerbot/strategy/actions/LootRollAction.cpp
    playerbot/strategy/actions/LootRollAction.h
    playerbot/strategy/actions/LootStrategyAction.cpp
    playerbot/strategy/actions/LootStrategyAction.h
    playerbot/strategy/actions/MailAction.cpp
    playerbot/strategy/actions/MailAction.h
    playerbot/strategy/actions/MovementActions.cpp
    playerbot/strategy/actions/MovementActions.h
    playerbot/strategy/actions/NonCombatActions.cpp
    playerbot/strategy/actions/NonCombatActions.h
    playerbot/strategy/actions/OutfitAction.cpp
    playerbot/strategy/actions/OutfitAction.h
    playerbot/strategy/actions/PassLeadershipToMasterAction.h
    playerbot/strategy/actions/PositionAction.cpp
    playerbot/strategy/actions/PositionAction.h
    playerbot/strategy/actions/QueryItemUsageAction.cpp
    playerbot/strategy/actions/QueryItemUsageAction.h
    playerbot/strategy/actions/QueryQuestAction.cpp
    playerbot/strategy/actions/QueryQuestAction.h
    playerbot/strategy/actions/QuestAction.cpp
    playerbot/strategy/actions/QuestAction.h
    playerbot/strategy/actions/RandomBotUpdateAction.h
    playerbot/strategy/actions/ReachTargetActions.h
    playerbot/strategy/actions/ReadyCheckAction.cpp
    playerbot/strategy/actions/ReadyCheckAction.h
    playerbot/strategy/actions/ReleaseSpiritAction.h
    playerbot/strategy/actions/RememberTaxiAction.cpp
    playerbot/strategy/actions/RememberTaxiAction.h
    playerbot/strategy/actions/RepairAllAction.cpp
    playerbot/strategy/actions/RepairAllAction.h
    playerbot/strategy/actions/ResetAiAction.cpp
    playerbot/strategy/actions/ResetAiAction.h
    playerbot/strategy/actions/RevealGatheringItemAction.cpp
    playerbot/strategy/actions/RevealGatheringItemAction.h
    playerbot/strategy/actions/ReviveFromCorpseAction.cpp
    playerbot/strategy/actions/ReviveFromCorpseAction.h
    playerbot/strategy/actions/RewardAction.cpp
    playerbot/strategy/actions/RewardAction.h
    playerbot/strategy/actions/RtiAction.h
    playerbot/strategy/actions/SaveManaAction.cpp
    playerbot/strategy/actions/SaveManaAction.h
    playerbot/strategy/actions/SayAction.cpp
    playerbot/strategy/actions/SayAction.h
    playerbot/strategy/actions/SecurityCheckAction.cpp
    playerbot/strategy/actions/SecurityCheckAction.h
    playerbot/strategy/actions/SellAction.cpp
    playerbot/strategy/actions/SellAction.h
    playerbot/strategy/actions/SendMailAction.cpp
    playerbot/strategy/actions/SendMailAction.h
    playerbot/strategy/actions/SetHomeAction.cpp
    playerbot/strategy/actions/SetHomeAction.h
    playerbot/strategy/actions/ShareQuestAction.cpp
    playerbot/strategy/actions/ShareQuestAction.h
    playerbot/strategy/actions/SkipSpellsListAction.cpp
    playerbot/strategy/actions/SkipSpellsListAction.h
    playerbot/strategy/actions/StatsAction.cpp
    playerbot/strategy/actions/StatsAction.h
    playerbot/strategy/actions/StayActions.cpp
    playerbot/strategy/actions/StayActions.h
    playerbot/strategy/actions/SuggestWhatToDoAction.cpp
    playerbot/strategy/actions/SuggestWhatToDoAction.h
    playerbot/strategy/actions/TalkToQuestGiverAction.cpp
    playerbot/strategy/actions/TalkToQuestGiverAction.h
    playerbot/strategy/actions/TaxiAction.cpp
    playerbot/strategy/actions/TaxiAction.h
    playerbot/strategy/actions/TeleportAction.cpp
    playerbot/strategy/actions/TeleportAction.h
    playerbot/strategy/actions/TellCastFailedAction.cpp
    playerbot/strategy/actions/TellCastFailedAction.h
    playerbot/strategy/actions/TellItemCountAction.cpp
    playerbot/strategy/actions/TellItemCountAction.h
    playerbot/strategy/actions/TellLosAction.cpp
    playerbot/strategy/actions/TellLosAction.h
    playerbot/strategy/actions/TellMasterAction.h
    playerbot/strategy/actions/TellReputationAction.cpp
    playerbot/strategy/actions/TellReputationAction.h
    playerbot/strategy/actions/TellTargetAction.cpp
    playerbot/strategy/actions/TellTargetAction.h
    playerbot/strategy/actions/TradeAction.cpp
    playerbot/strategy/actions/TradeAction.h
    playerbot/strategy/actions/TradeStatusAction.cpp
    playerbot/strategy/actions/TradeStatusAction.h
    playerbot/strategy/actions/TrainerAction.cpp
    playerbot/strategy/actions/TrainerAction.h
    playerbot/strategy/actions/UnequipAction.cpp
    playerbot/strategy/actions/UnequipAction.h
    playerbot/strategy/actions/UseItemAction.cpp
    playerbot/strategy/actions/UseItemAction.h
    playerbot/strategy/actions/UseMeetingStoneAction.cpp
    playerbot/strategy/actions/UseMeetingStoneAction.h
    playerbot/strategy/actions/WhoAction.cpp
    playerbot/strategy/actions/WhoAction.h
    playerbot/strategy/actions/WorldPacketActionContext.h
    playerbot/strategy/druid/BearTankDruidStrategy.cpp
    playerbot/strategy/druid/BearTankDruidStrategy.h
    playerbot/strategy/druid/CasterDruidStrategy.cpp
    playerbot/strategy/druid/CasterDruidStrategy.h
    playerbot/strategy/druid/CatDpsDruidStrategy.cpp
    playerbot/strategy/druid/CatDpsDruidStrategy.h
    playerbot/strategy/druid/DruidActions.cpp
    playerbot/strategy/druid/DruidActions.h
    playerbot/strategy/druid/DruidAiObjectContext.cpp
    playerbot/strategy/druid/DruidAiObjectContext.h
    playerbot/strategy/druid/DruidBearActions.h
    playerbot/strategy/druid/DruidCatActions.h
    playerbot/strategy/druid/DruidMultipliers.cpp
    playerbot/strategy/druid/DruidMultipliers.h
    playerbot/strategy/druid/DruidShapeshiftActions.h
    playerbot/strategy/druid/DruidTriggers.cpp
    playerbot/strategy/druid/DruidTriggers.h
    playerbot/strategy/druid/FeralDruidStrategy.cpp
    playerbot/strategy/druid/FeralDruidStrategy.h
    playerbot/strategy/druid/GenericDruidNonCombatStrategy.cpp
    playerbot/strategy/druid/GenericDruidNonCombatStrategy.h
    playerbot/strategy/druid/GenericDruidStrategy.cpp
    playerbot/strategy/druid/GenericDruidStrategy.h
    playerbot/strategy/druid/HealDruidStrategy.cpp
    playerbot/strategy/druid/HealDruidStrategy.h
    playerbot/strategy/generic/AttackEnemyPlayersStrategy.cpp
    playerbot/strategy/generic/AttackEnemyPlayersStrategy.h
    playerbot/strategy/generic/CastTimeStrategy.cpp
    playerbot/strategy/generic/CastTimeStrategy.h
    playerbot/strategy/generic/ChatCommandHandlerStrategy.cpp
    playerbot/strategy/generic/ChatCommandHandlerStrategy.h
    playerbot/strategy/generic/CombatStrategy.cpp
    playerbot/strategy/generic/CombatStrategy.h
    playerbot/strategy/generic/ConserveManaStrategy.cpp
    playerbot/strategy/generic/ConserveManaStrategy.h
    playerbot/strategy/generic/DeadStrategy.cpp
    playerbot/strategy/generic/DeadStrategy.h
    playerbot/strategy/generic/DpsAssistStrategy.cpp
    playerbot/strategy/generic/DpsAssistStrategy.h
    playerbot/strategy/generic/DuelStrategy.cpp
    playerbot/strategy/generic/DuelStrategy.h
    playerbot/strategy/generic/EmoteStrategy.cpp
    playerbot/strategy/generic/EmoteStrategy.h
    playerbot/strategy/generic/FleeStrategy.cpp
    playerbot/strategy/generic/FleeStrategy.h
    playerbot/strategy/generic/FollowMasterStrategy.cpp
    playerbot/strategy/generic/FollowMasterStrategy.h
    playerbot/strategy/generic/GrindingStrategy.cpp
    playerbot/strategy/generic/GrindingStrategy.h
    playerbot/strategy/generic/GuardStrategy.cpp
    playerbot/strategy/generic/GuardStrategy.h
    playerbot/strategy/generic/KiteStrategy.cpp
    playerbot/strategy/generic/KiteStrategy.h
    playerbot/strategy/generic/LootNonCombatStrategy.cpp
    playerbot/strategy/generic/LootNonCombatStrategy.h
    playerbot/strategy/generic/MeleeCombatStrategy.cpp
    playerbot/strategy/generic/MeleeCombatStrategy.h
    playerbot/strategy/generic/MoveRandomStrategy.cpp
    playerbot/strategy/generic/MoveRandomStrategy.h
    playerbot/strategy/generic/NonCombatStrategy.cpp
    playerbot/strategy/generic/NonCombatStrategy.h
    playerbot/strategy/generic/PassiveStrategy.cpp
    playerbot/strategy/generic/PassiveStrategy.h
    playerbot/strategy/generic/PassTroughStrategy.h
    playerbot/strategy/generic/PullStrategy.cpp
    playerbot/strategy/generic/PullStrategy.h
    playerbot/strategy/generic/QuestStrategies.cpp
    playerbot/strategy/generic/QuestStrategies.h
    playerbot/strategy/generic/RacialsStrategy.cpp
    playerbot/strategy/generic/RacialsStrategy.h
    playerbot/strategy/generic/RangedCombatStrategy.cpp
    playerbot/strategy/generic/RangedCombatStrategy.h
    playerbot/strategy/generic/RunawayStrategy.cpp
    playerbot/strategy/generic/RunawayStrategy.h
    playerbot/strategy/generic/SayStrategy.cpp
    playerbot/strategy/generic/SayStrategy.h
    playerbot/strategy/generic/StayStrategy.cpp
    playerbot/strategy/generic/StayStrategy.h
    playerbot/strategy/generic/TankAoeStrategy.cpp
    playerbot/strategy/generic/TankAoeStrategy.h
    playerbot/strategy/generic/TellTargetStrategy.cpp
    playerbot/strategy/generic/TellTargetStrategy.h
    playerbot/strategy/generic/ThreatStrategy.cpp
    playerbot/strategy/generic/ThreatStrategy.h
    playerbot/strategy/generic/UseFoodStrategy.cpp
    playerbot/strategy/generic/UseFoodStrategy.h
    playerbot/strategy/generic/UsePotionsStrategy.cpp
    playerbot/strategy/generic/UsePotionsStrategy.h
    playerbot/strategy/generic/WorldPacketHandlerStrategy.cpp
    playerbot/strategy/generic/WorldPacketHandlerStrategy.h
    playerbot/strategy/hunter/DpsHunterStrategy.cpp
    playerbot/strategy/hunter/DpsHunterStrategy.h
    playerbot/strategy/hunter/GenericHunterNonCombatStrategy.cpp
    playerbot/strategy/hunter/GenericHunterNonCombatStrategy.h
    playerbot/strategy/hunter/GenericHunterStrategy.cpp
    playerbot/strategy/hunter/GenericHunterStrategy.h
    playerbot/strategy/hunter/HunterActions.cpp
    playerbot/strategy/hunter/HunterActions.h
    playerbot/strategy/hunter/HunterAiObjectContext.cpp
    playerbot/strategy/hunter/HunterAiObjectContext.h
    playerbot/strategy/hunter/HunterBuffStrategies.cpp
    playerbot/strategy/hunter/HunterBuffStrategies.h
    playerbot/strategy/hunter/HunterMultipliers.cpp
    playerbot/strategy/hunter/HunterMultipliers.h
    playerbot/strategy/hunter/HunterTriggers.cpp
    playerbot/strategy/hunter/HunterTriggers.h
    playerbot/strategy/mage/ArcaneMageStrategy.cpp
    playerbot/strategy/mage/ArcaneMageStrategy.h
    playerbot/strategy/mage/FireMageStrategy.cpp
    playerbot/strategy/mage/FireMageStrategy.h
    playerbot/strategy/mage/FrostMageStrategy.cpp
    playerbot/strategy/mage/FrostMageStrategy.h
    playerbot/strategy/mage/GenericMageNonCombatStrategy.cpp
    playerbot/strategy/mage/GenericMageNonCombatStrategy.h
    playerbot/strategy/mage/GenericMageStrategy.cpp
    playerbot/strategy/mage/GenericMageStrategy.h
    playerbot/strategy/mage/MageActions.cpp
    playerbot/strategy/mage/MageActions.h
    playerbot/strategy/mage/MageAiObjectContext.cpp
    playerbot/strategy/mage/MageAiObjectContext.h
    playerbot/strategy/mage/MageMultipliers.cpp
    playerbot/strategy/mage/MageMultipliers.h
    playerbot/strategy/mage/MageTriggers.cpp
    playerbot/strategy/mage/MageTriggers.h
    playerbot/strategy/paladin/DpsPaladinStrategy.cpp
    playerbot/strategy/paladin/DpsPaladinStrategy.h
    playerbot/strategy/paladin/GenericPaladinNonCombatStrategy.cpp
    playerbot/strategy/paladin/GenericPaladinNonCombatStrategy.h
    playerbot/strategy/paladin/GenericPaladinStrategy.cpp
    playerbot/strategy/paladin/GenericPaladinStrategy.h
    playerbot/strategy/paladin/GenericPaladinStrategyActionNodeFactory.h
    playerbot/strategy/paladin/HealPaladinStrategy.cpp
    playerbot/strategy/paladin/HealPaladinStrategy.h
    playerbot/strategy/paladin/PaladinActions.cpp
    playerbot/strategy/paladin/PaladinActions.h
    playerbot/strategy/paladin/PaladinAiObjectContext.cpp
    playerbot/strategy/paladin/PaladinAiObjectContext.h
    playerbot/strategy/paladin/PaladinBuffStrategies.cpp
    playerbot/strategy/paladin/PaladinBuffStrategies.h
    playerbot/strategy/paladin/PaladinMultipliers.cpp
    playerbot/strategy/paladin/PaladinMultipliers.h
    playerbot/strategy/paladin/PaladinTriggers.cpp
    playerbot/strategy/paladin/PaladinTriggers.h
    playerbot/strategy/paladin/TankPaladinStrategy.cpp
    playerbot/strategy/paladin/TankPaladinStrategy.h
    playerbot/strategy/priest/GenericPriestStrategy.cpp
    playerbot/strategy/priest/GenericPriestStrategy.h
    playerbot/strategy/priest/GenericPriestStrategyActionNodeFactory.h
    playerbot/strategy/priest/HealPriestStrategy.cpp
    playerbot/strategy/priest/HealPriestStrategy.h
    playerbot/strategy/priest/HolyPriestStrategy.cpp
    playerbot/strategy/priest/HolyPriestStrategy.h
    playerbot/strategy/priest/PriestActions.cpp
    playerbot/strategy/priest/PriestActions.h
    playerbot/strategy/priest/PriestAiObjectContext.cpp
    playerbot/strategy/priest/PriestAiObjectContext.h
    playerbot/strategy/priest/PriestMultipliers.cpp
    playerbot/strategy/priest/PriestMultipliers.h
    playerbot/strategy/priest/PriestNonCombatStrategy.cpp
    playerbot/strategy/priest/PriestNonCombatStrategy.h
    playerbot/strategy/priest/PriestNonCombatStrategyActionNodeFactory.h
    playerbot/strategy/priest/PriestTriggers.cpp
    playerbot/strategy/priest/PriestTriggers.h
    playerbot/strategy/priest/ShadowPriestStrategy.cpp
    playerbot/strategy/priest/ShadowPriestStrategy.h
    playerbot/strategy/priest/ShadowPriestStrategyActionNodeFactory.h
    playerbot/strategy/rogue/DpsRogueStrategy.cpp
    playerbot/strategy/rogue/DpsRogueStrategy.h
    playerbot/strategy/rogue/GenericRogueNonCombatStrategy.cpp
    playerbot/strategy/rogue/GenericRogueNonCombatStrategy.h
    playerbot/strategy/rogue/RogueActions.cpp
    playerbot/strategy/rogue/RogueActions.h
    playerbot/strategy/rogue/RogueAiObjectContext.cpp
    playerbot/strategy/rogue/RogueAiObjectContext.h
    playerbot/strategy/rogue/RogueComboActions.h
    playerbot/strategy/rogue/RogueFinishingActions.h
    playerbot/strategy/rogue/RogueMultipliers.cpp
    playerbot/strategy/rogue/RogueMultipliers.h
    playerbot/strategy/rogue/RogueOpeningActions.h
    playerbot/strategy/rogue/RogueTriggers.cpp
    playerbot/strategy/rogue/RogueTriggers.h
    playerbot/strategy/shaman/CasterShamanStrategy.cpp
    playerbot/strategy/shaman/CasterShamanStrategy.h
    playerbot/strategy/shaman/GenericShamanStrategy.cpp
    playerbot/strategy/shaman/GenericShamanStrategy.h
    playerbot/strategy/shaman/HealShamanStrategy.cpp
    playerbot/strategy/shaman/HealShamanStrategy.h
    playerbot/strategy/shaman/MeleeShamanStrategy.cpp
    playerbot/strategy/shaman/MeleeShamanStrategy.h
    playerbot/strategy/shaman/ShamanActions.cpp
    playerbot/strategy/shaman/ShamanActions.h
    playerbot/strategy/shaman/ShamanAiObjectContext.cpp
    playerbot/strategy/shaman/ShamanAiObjectContext.h
    playerbot/strategy/shaman/ShamanMultipliers.cpp
    playerbot/strategy/shaman/ShamanMultipliers.h
    playerbot/strategy/shaman/ShamanNonCombatStrategy.cpp
    playerbot/strategy/shaman/ShamanNonCombatStrategy.h
    playerbot/strategy/shaman/ShamanTriggers.cpp
    playerbot/strategy/shaman/ShamanTriggers.h
    playerbot/strategy/shaman/TotemsShamanStrategy.cpp
    playerbot/strategy/shaman/TotemsShamanStrategy.h
    playerbot/strategy/triggers/ChatCommandTrigger.h
    playerbot/strategy/triggers/ChatTriggerContext.h
    playerbot/strategy/triggers/CureTriggers.cpp
    playerbot/strategy/triggers/CureTriggers.h
    playerbot/strategy/triggers/GenericTriggers.cpp
    playerbot/strategy/triggers/GenericTriggers.h
    playerbot/strategy/triggers/HealthTriggers.cpp
    playerbot/strategy/triggers/HealthTriggers.h
    playerbot/strategy/triggers/LfgTriggers.h
    playerbot/strategy/triggers/LootTriggers.cpp
    playerbot/strategy/triggers/LootTriggers.h
    playerbot/strategy/triggers/RangeTriggers.h
    playerbot/strategy/triggers/TriggerContext.h
    playerbot/strategy/triggers/WithinAreaTrigger.h
    playerbot/strategy/triggers/WorldPacketTrigger.h
    playerbot/strategy/triggers/WorldPacketTriggerContext.h
    playerbot/strategy/values/AlwaysLootListValue.h
    playerbot/strategy/values/AoeHealValues.cpp
    playerbot/strategy/values/AoeHealValues.h
    playerbot/strategy/values/AoeValues.cpp
    playerbot/strategy/values/AoeValues.h
    playerbot/strategy/values/Arrow.cpp
    playerbot/strategy/values/Arrow.h
    playerbot/strategy/values/AttackerCountValues.cpp
    playerbot/strategy/values/AttackerCountValues.h
    playerbot/strategy/values/AttackersValue.cpp
    playerbot/strategy/values/AttackersValue.h
    playerbot/strategy/values/AttackerWithoutAuraTargetValue.cpp
    playerbot/strategy/values/AttackerWithoutAuraTargetValue.h
    playerbot/strategy/values/AvailableLootValue.h
    playerbot/strategy/values/CcTargetValue.cpp
    playerbot/strategy/values/CcTargetValue.h
    playerbot/strategy/values/ChatValue.h
    playerbot/strategy/values/CurrentCcTargetValue.cpp
    playerbot/strategy/values/CurrentCcTargetValue.h
    playerbot/strategy/values/CurrentTargetValue.cpp
    playerbot/strategy/values/CurrentTargetValue.h
    playerbot/strategy/values/DistanceValue.h
    playerbot/strategy/values/DpsTargetValue.cpp
    playerbot/strategy/values/DpsTargetValue.h
    playerbot/strategy/values/DuelTargetValue.cpp
    playerbot/strategy/values/DuelTargetValue.h
    playerbot/strategy/values/EnemyHealerTargetValue.cpp
    playerbot/strategy/values/EnemyHealerTargetValue.h
    playerbot/strategy/values/EnemyPlayerValue.cpp
    playerbot/strategy/values/EnemyPlayerValue.h
    playerbot/strategy/values/Formations.cpp
    playerbot/strategy/values/Formations.h
    playerbot/strategy/values/GrindTargetValue.cpp
    playerbot/strategy/values/GrindTargetValue.h
    playerbot/strategy/values/HasAvailableLootValue.h
    playerbot/strategy/values/HasTotemValue.h
    playerbot/strategy/values/InvalidTargetValue.cpp
    playerbot/strategy/values/InvalidTargetValue.h
    playerbot/strategy/values/IsBehindValue.h
    playerbot/strategy/values/IsFacingValue.h
    playerbot/strategy/values/IsMovingValue.h
    playerbot/strategy/values/ItemCountValue.cpp
    playerbot/strategy/values/ItemCountValue.h
    playerbot/strategy/values/ItemForSpellValue.cpp
    playerbot/strategy/values/ItemForSpellValue.h
    playerbot/strategy/values/ItemUsageValue.cpp
    playerbot/strategy/values/ItemUsageValue.h
    playerbot/strategy/values/LastMovementValue.h
    playerbot/strategy/values/LastSaidValue.h
    playerbot/strategy/values/LastSpellCastTimeValue.h
    playerbot/strategy/values/LastSpellCastValue.h
    playerbot/strategy/values/LeastHpTargetValue.cpp
    playerbot/strategy/values/LeastHpTargetValue.h
    playerbot/strategy/values/LfgValues.h
    playerbot/strategy/values/LineTargetValue.cpp
    playerbot/strategy/values/LineTargetValue.h
    playerbot/strategy/values/LogLevelValue.h
    playerbot/strategy/values/LootStrategyValue.cpp
    playerbot/strategy/values/LootStrategyValue.h
    playerbot/strategy/values/ManaSaveLevelValue.h
    playerbot/strategy/values/MasterTargetValue.h
    playerbot/strategy/values/NearestAdsValue.cpp
    playerbot/strategy/values/NearestAdsValue.h
    playerbot/strategy/values/NearestCorpsesValue.cpp
    playerbot/strategy/values/NearestCorpsesValue.h
    playerbot/strategy/values/NearestFriendlyPlayersValue.cpp
    playerbot/strategy/values/NearestFriendlyPlayersValue.h
    playerbot/strategy/values/NearestGameObjects.cpp
    playerbot/strategy/values/NearestGameObjects.h
    playerbot/strategy/values/NearestNonBotPlayersValue.cpp
    playerbot/strategy/values/NearestNonBotPlayersValue.h
    playerbot/strategy/values/NearestNpcsValue.cpp
    playerbot/strategy/values/NearestNpcsValue.h
    playerbot/strategy/values/NearestUnitsValue.h
    playerbot/strategy/values/NewPlayerNearbyValue.cpp
    playerbot/strategy/values/NewPlayerNearbyValue.h
    playerbot/strategy/values/OutfitListValue.h
    playerbot/strategy/values/PartyMemberToDispel.cpp
    playerbot/strategy/values/PartyMemberToDispel.h
    playerbot/strategy/values/PartyMemberToHeal.cpp
    playerbot/strategy/values/PartyMemberToHeal.h
    playerbot/strategy/values/PartyMemberToResurrect.cpp
    playerbot/strategy/values/PartyMemberToResurrect.h
    playerbot/strategy/values/PartyMemberValue.cpp
    playerbot/strategy/values/PartyMemberValue.h
    playerbot/strategy/values/PartyMemberWithoutAuraValue.cpp
    playerbot/strategy/values/PartyMemberWithoutAuraValue.h
    playerbot/strategy/values/PetTargetValue.h
    playerbot/strategy/values/PositionValue.cpp
    playerbot/strategy/values/PositionValue.h
    playerbot/strategy/values/PossibleTargetsValue.cpp
    playerbot/strategy/values/PossibleTargetsValue.h
    playerbot/strategy/values/RandomBotUpdateValue.h
    playerbot/strategy/values/RtiTargetValue.h
    playerbot/strategy/values/RtiValue.cpp
    playerbot/strategy/values/RtiValue.h
    playerbot/strategy/values/SelfTargetValue.h
    playerbot/strategy/values/SkipSpellsListValue.h
    playerbot/strategy/values/SnareTargetValue.cpp
    playerbot/strategy/values/SnareTargetValue.h
    playerbot/strategy/values/SpellCastUsefulValue.cpp
    playerbot/strategy/values/SpellCastUsefulValue.h
    playerbot/strategy/values/SpellIdValue.cpp
    playerbot/strategy/values/SpellIdValue.h
    playerbot/strategy/values/StatsValues.cpp
    playerbot/strategy/values/StatsValues.h
    playerbot/strategy/values/TankTargetValue.cpp
    playerbot/strategy/values/TankTargetValue.h
    playerbot/strategy/values/TargetValue.cpp
    playerbot/strategy/values/TargetValue.h
    playerbot/strategy/values/ThreatValues.cpp
    playerbot/strategy/values/ThreatValues.h
    playerbot/strategy/values/ValueContext.h
    playerbot/strategy/warlock/DpsWarlockStrategy.cpp
    playerbot/strategy/warlock/DpsWarlockStrategy.h
    playerbot/strategy/warlock/GenericWarlockNonCombatStrategy.cpp
    playerbot/strategy/warlock/GenericWarlockNonCombatStrategy.h
    playerbot/strategy/warlock/GenericWarlockStrategy.cpp
    playerbot/strategy/warlock/GenericWarlockStrategy.h
    playerbot/strategy/warlock/TankWarlockStrategy.cpp
    playerbot/strategy/warlock/TankWarlockStrategy.h
    playerbot/strategy/warlock/WarlockActions.cpp
    playerbot/strategy/warlock/WarlockActions.h
    playerbot/strategy/warlock/WarlockAiObjectContext.cpp
    playerbot/strategy/warlock/WarlockAiObjectContext.h
    playerbot/strategy/warlock/WarlockMultipliers.cpp
    playerbot/strategy/warlock/WarlockMultipliers.h
    playerbot/strategy/warlock/WarlockTriggers.cpp
    playerbot/strategy/warlock/WarlockTriggers.h
    playerbot/strategy/warrior/DpsWarriorStrategy.cpp
    playerbot/strategy/warrior/DpsWarriorStrategy.h
    playerbot/strategy/warrior/GenericWarriorNonCombatStrategy.cpp
    playerbot/strategy/warrior/GenericWarriorNonCombatStrategy.h
    playerbot/strategy/warrior/GenericWarriorStrategy.cpp
    playerbot/strategy/warrior/GenericWarriorStrategy.h
    playerbot/strategy/warrior/TankWarriorStrategy.cpp
    playerbot/strategy/warrior/TankWarriorStrategy.h
    playerbot/strategy/warrior/WarriorActions.cpp
    playerbot/strategy/warrior/WarriorActions.h
    playerbot/strategy/warrior/WarriorAiObjectContext.cpp
    playerbot/strategy/warrior/WarriorAiObjectContext.h
    playerbot/strategy/warrior/WarriorMultipliers.cpp
    playerbot/strategy/warrior/WarriorMultipliers.h
    playerbot/strategy/warrior/WarriorTriggers.cpp
    playerbot/strategy/warrior/WarriorTriggers.h
)

source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/playerbot FILES ${BOT_SRCS})

add_library(BotsIntf INTERFACE)
add_library(Bots STATIC ${BOT_SRCS})

target_include_directories(BotsIntf
    INTERFACE
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}/playerbot
)

target_link_libraries(Bots
    PUBLIC
        game
)

# Install config files
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/playerbot/aiplayerbot.conf.dist.in ${CMAKE_CURRENT_BINARY_DIR}/aiplayerbot.conf.dist)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/aiplayerbot.conf.dist DESTINATION ${CONF_INSTALL_DIR})

# Generate PCH
#
# This used to read ADD_CXX_PCH(Bots ${bots_PCH}) -- and bots_PCH was never set anywhere, so it
# collapsed to ADD_CXX_PCH(Bots) and precompiled nothing at all, silently. Meanwhile 275 of
# these 277 sources open botpch.h by hand on their first line, so every one of them was parsing
# ObjectMgr.h and playerbot.h from scratch. Name the header.
if(PCH)
    ADD_CXX_PCH(Bots botpch.h)
endif()
