From 54693334656ef8ce339ead623623b74028cbb302 Mon Sep 17 00:00:00 2001 From: kadeshar Date: Tue, 26 Aug 2025 15:39:34 +0200 Subject: [PATCH 1/7] - Fixed bug with RTSC despawning objects --- data/sql/world/world_aedm_rtsc_override.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/world/world_aedm_rtsc_override.sql diff --git a/data/sql/world/world_aedm_rtsc_override.sql b/data/sql/world/world_aedm_rtsc_override.sql new file mode 100644 index 00000000..066894c8 --- /dev/null +++ b/data/sql/world/world_aedm_rtsc_override.sql @@ -0,0 +1,3 @@ +DELETE FROM spell_dbc WHERE ID = 30758; +INSERT INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`EffectBonusMultiplier_1`,`EffectBonusMultiplier_2`,`EffectBonusMultiplier_3`,`SpellDescriptionVariableID`,`SpellDifficultyID`) + VALUES (30758,0,0,0,696254720,132128,268976133,269680640,8388736,393224,4100,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,52,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,'aedm','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0); \ No newline at end of file From 37458f0dc59717413e8e3be4e3074ea37972fc58 Mon Sep 17 00:00:00 2001 From: kadeshar Date: Wed, 27 Aug 2025 19:04:01 +0200 Subject: [PATCH 2/7] -Fixed module sql structure --- data/sql/characters/{ => base}/playerbots_arena_team_names.sql | 0 data/sql/characters/{ => base}/playerbots_guild_names.sql | 0 data/sql/characters/{ => base}/playerbots_names.sql | 0 data/sql/characters/updates/.gitkeep | 0 data/sql/world/{ => base}/world_charsections_dbc.sql | 0 data/sql/world/{ => base}/world_emotetextsound_dbc.sql | 0 data/sql/world/{ => base}/world_playerbots_rpg_races.sql | 0 .../{world_aedm_rtsc_override.sql => updates/2025_08_27_00.sql} | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename data/sql/characters/{ => base}/playerbots_arena_team_names.sql (100%) rename data/sql/characters/{ => base}/playerbots_guild_names.sql (100%) rename data/sql/characters/{ => base}/playerbots_names.sql (100%) create mode 100644 data/sql/characters/updates/.gitkeep rename data/sql/world/{ => base}/world_charsections_dbc.sql (100%) rename data/sql/world/{ => base}/world_emotetextsound_dbc.sql (100%) rename data/sql/world/{ => base}/world_playerbots_rpg_races.sql (100%) rename data/sql/world/{world_aedm_rtsc_override.sql => updates/2025_08_27_00.sql} (100%) diff --git a/data/sql/characters/playerbots_arena_team_names.sql b/data/sql/characters/base/playerbots_arena_team_names.sql similarity index 100% rename from data/sql/characters/playerbots_arena_team_names.sql rename to data/sql/characters/base/playerbots_arena_team_names.sql diff --git a/data/sql/characters/playerbots_guild_names.sql b/data/sql/characters/base/playerbots_guild_names.sql similarity index 100% rename from data/sql/characters/playerbots_guild_names.sql rename to data/sql/characters/base/playerbots_guild_names.sql diff --git a/data/sql/characters/playerbots_names.sql b/data/sql/characters/base/playerbots_names.sql similarity index 100% rename from data/sql/characters/playerbots_names.sql rename to data/sql/characters/base/playerbots_names.sql diff --git a/data/sql/characters/updates/.gitkeep b/data/sql/characters/updates/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/data/sql/world/world_charsections_dbc.sql b/data/sql/world/base/world_charsections_dbc.sql similarity index 100% rename from data/sql/world/world_charsections_dbc.sql rename to data/sql/world/base/world_charsections_dbc.sql diff --git a/data/sql/world/world_emotetextsound_dbc.sql b/data/sql/world/base/world_emotetextsound_dbc.sql similarity index 100% rename from data/sql/world/world_emotetextsound_dbc.sql rename to data/sql/world/base/world_emotetextsound_dbc.sql diff --git a/data/sql/world/world_playerbots_rpg_races.sql b/data/sql/world/base/world_playerbots_rpg_races.sql similarity index 100% rename from data/sql/world/world_playerbots_rpg_races.sql rename to data/sql/world/base/world_playerbots_rpg_races.sql diff --git a/data/sql/world/world_aedm_rtsc_override.sql b/data/sql/world/updates/2025_08_27_00.sql similarity index 100% rename from data/sql/world/world_aedm_rtsc_override.sql rename to data/sql/world/updates/2025_08_27_00.sql From 31f2c6a20d8e9f66f9736ad1566110dee50a5153 Mon Sep 17 00:00:00 2001 From: kadeshar Date: Wed, 27 Aug 2025 19:09:51 +0200 Subject: [PATCH 3/7] - Fixed sql structure --- data/sql/playerbots/updates/{db_playerbots => }/2024_08_07_00.sql | 0 data/sql/playerbots/updates/{db_playerbots => }/2024_11_25_00.sql | 0 data/sql/playerbots/updates/{db_playerbots => }/2025_02_24_00.sql | 0 data/sql/playerbots/updates/{db_playerbots => }/2025_03_03_00.sql | 0 data/sql/playerbots/updates/{db_playerbots => }/2025_04_26_00.sql | 0 .../updates/{db_playerbots => }/2025_05_05_00_accountlinking.sql | 0 data/sql/playerbots/updates/{db_playerbots => }/2025_05_09_00.sql | 0 .../updates/{db_playerbots => }/2025_07_01_00_account_type.sql | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename data/sql/playerbots/updates/{db_playerbots => }/2024_08_07_00.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2024_11_25_00.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2025_02_24_00.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2025_03_03_00.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2025_04_26_00.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2025_05_05_00_accountlinking.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2025_05_09_00.sql (100%) rename data/sql/playerbots/updates/{db_playerbots => }/2025_07_01_00_account_type.sql (100%) diff --git a/data/sql/playerbots/updates/db_playerbots/2024_08_07_00.sql b/data/sql/playerbots/updates/2024_08_07_00.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2024_08_07_00.sql rename to data/sql/playerbots/updates/2024_08_07_00.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2024_11_25_00.sql b/data/sql/playerbots/updates/2024_11_25_00.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2024_11_25_00.sql rename to data/sql/playerbots/updates/2024_11_25_00.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2025_02_24_00.sql b/data/sql/playerbots/updates/2025_02_24_00.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2025_02_24_00.sql rename to data/sql/playerbots/updates/2025_02_24_00.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2025_03_03_00.sql b/data/sql/playerbots/updates/2025_03_03_00.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2025_03_03_00.sql rename to data/sql/playerbots/updates/2025_03_03_00.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2025_04_26_00.sql b/data/sql/playerbots/updates/2025_04_26_00.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2025_04_26_00.sql rename to data/sql/playerbots/updates/2025_04_26_00.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2025_05_05_00_accountlinking.sql b/data/sql/playerbots/updates/2025_05_05_00_accountlinking.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2025_05_05_00_accountlinking.sql rename to data/sql/playerbots/updates/2025_05_05_00_accountlinking.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2025_05_09_00.sql b/data/sql/playerbots/updates/2025_05_09_00.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2025_05_09_00.sql rename to data/sql/playerbots/updates/2025_05_09_00.sql diff --git a/data/sql/playerbots/updates/db_playerbots/2025_07_01_00_account_type.sql b/data/sql/playerbots/updates/2025_07_01_00_account_type.sql similarity index 100% rename from data/sql/playerbots/updates/db_playerbots/2025_07_01_00_account_type.sql rename to data/sql/playerbots/updates/2025_07_01_00_account_type.sql From df6b1490b150008ebca82c8c6158e27731fc65c1 Mon Sep 17 00:00:00 2001 From: kadeshar Date: Thu, 28 Aug 2025 18:41:08 +0200 Subject: [PATCH 4/7] - Fixed world sql scripts naming --- .../base/{world_charsections_dbc.sql => charsections_dbc.sql} | 0 .../base/{world_emotetextsound_dbc.sql => emotetextsound_dbc.sql} | 0 .../{world_playerbots_rpg_races.sql => playerbots_rpg_races.sql} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename data/sql/world/base/{world_charsections_dbc.sql => charsections_dbc.sql} (100%) rename data/sql/world/base/{world_emotetextsound_dbc.sql => emotetextsound_dbc.sql} (100%) rename data/sql/world/base/{world_playerbots_rpg_races.sql => playerbots_rpg_races.sql} (100%) diff --git a/data/sql/world/base/world_charsections_dbc.sql b/data/sql/world/base/charsections_dbc.sql similarity index 100% rename from data/sql/world/base/world_charsections_dbc.sql rename to data/sql/world/base/charsections_dbc.sql diff --git a/data/sql/world/base/world_emotetextsound_dbc.sql b/data/sql/world/base/emotetextsound_dbc.sql similarity index 100% rename from data/sql/world/base/world_emotetextsound_dbc.sql rename to data/sql/world/base/emotetextsound_dbc.sql diff --git a/data/sql/world/base/world_playerbots_rpg_races.sql b/data/sql/world/base/playerbots_rpg_races.sql similarity index 100% rename from data/sql/world/base/world_playerbots_rpg_races.sql rename to data/sql/world/base/playerbots_rpg_races.sql From 6588ca587816dbbe866aef0e93736b3c5685900b Mon Sep 17 00:00:00 2001 From: kadeshar Date: Sat, 30 Aug 2025 15:25:47 +0200 Subject: [PATCH 5/7] - Added automatic resistance switch on Emalon and Koralon --- .../raids/vaultofarchavon/RaidVoAActionContext.h | 4 ++++ .../raids/vaultofarchavon/RaidVoAStrategy.cpp | 12 ++++++++++++ .../raids/vaultofarchavon/RaidVoATriggerContext.h | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/src/strategy/raids/vaultofarchavon/RaidVoAActionContext.h b/src/strategy/raids/vaultofarchavon/RaidVoAActionContext.h index b2ac1fbd..42b0ae9e 100644 --- a/src/strategy/raids/vaultofarchavon/RaidVoAActionContext.h +++ b/src/strategy/raids/vaultofarchavon/RaidVoAActionContext.h @@ -20,6 +20,8 @@ public: creators["emalon lighting nova action"] = &RaidVoAActionContext::emalon_lighting_nova_action; creators["emalon overcharge action"] = &RaidVoAActionContext::emalon_overcharge_action; creators["emalon fall from floor action"] = &RaidVoAActionContext::emalon_fall_from_floor_action; + creators["emalon nature resistance action"] = &RaidVoAActionContext::emalon_nature_resistance_action; + creators["koralon fire resistance action"] = &RaidVoAActionContext::koralon_fire_resistance_action; } private: @@ -27,6 +29,8 @@ private: static Action* emalon_lighting_nova_action(PlayerbotAI* ai) { return new EmalonLightingNovaAction(ai); } static Action* emalon_overcharge_action(PlayerbotAI* ai) { return new EmalonOverchargeAction(ai); } static Action* emalon_fall_from_floor_action(PlayerbotAI* ai) { return new EmalonFallFromFloorAction(ai); } + static Action* emalon_nature_resistance_action(PlayerbotAI* ai) { return new BossNatureResistanceAction(ai, "emalon the storm watcher"); } + static Action* koralon_fire_resistance_action(PlayerbotAI* ai) { return new BossFireResistanceAction(ai, "koralon the flame watcher"); } }; #endif diff --git a/src/strategy/raids/vaultofarchavon/RaidVoAStrategy.cpp b/src/strategy/raids/vaultofarchavon/RaidVoAStrategy.cpp index 36469698..505cac1b 100644 --- a/src/strategy/raids/vaultofarchavon/RaidVoAStrategy.cpp +++ b/src/strategy/raids/vaultofarchavon/RaidVoAStrategy.cpp @@ -24,4 +24,16 @@ void RaidVoAStrategy::InitTriggers(std::vector& triggers) triggers.push_back(new TriggerNode( "emalon fall from floor trigger", NextAction::array(0, new NextAction("emalon fall from floor action", ACTION_RAID), nullptr))); + + triggers.push_back(new TriggerNode( + "emalon nature resistance trigger", + NextAction::array(0, new NextAction("emalon nature resistance action", ACTION_RAID), nullptr))); + + // + // Koralon the Flame Watcher + // + + triggers.push_back(new TriggerNode( + "koralon fire resistance trigger", + NextAction::array(0, new NextAction("koralon fire resistance action", ACTION_RAID), nullptr))); } diff --git a/src/strategy/raids/vaultofarchavon/RaidVoATriggerContext.h b/src/strategy/raids/vaultofarchavon/RaidVoATriggerContext.h index ee32c7fb..16ae0caf 100644 --- a/src/strategy/raids/vaultofarchavon/RaidVoATriggerContext.h +++ b/src/strategy/raids/vaultofarchavon/RaidVoATriggerContext.h @@ -19,6 +19,8 @@ public: creators["emalon lighting nova trigger"] = &RaidVoATriggerContext::emalon_lighting_nova_trigger; creators["emalon overcharge trigger"] = &RaidVoATriggerContext::emalon_overcharge_trigger; creators["emalon fall from floor trigger"] = &RaidVoATriggerContext::emalon_fall_from_floor_trigger; + creators["emalon nature resistance trigger"] = &RaidVoATriggerContext::emalon_nature_resistance_trigger; + creators["koralon fire resistance trigger"] = &RaidVoATriggerContext::koralon_fire_resistance_trigger; } private: @@ -26,6 +28,8 @@ private: static Trigger* emalon_lighting_nova_trigger(PlayerbotAI* ai) { return new EmalonLightingNovaTrigger(ai); } static Trigger* emalon_overcharge_trigger(PlayerbotAI* ai) { return new EmalonOverchargeTrigger(ai); } static Trigger* emalon_fall_from_floor_trigger(PlayerbotAI* ai) { return new EmalonFallFromFloorTrigger(ai); } + static Trigger* emalon_nature_resistance_trigger(PlayerbotAI* ai) { return new BossNatureResistanceTrigger(ai, "emalon the storm watcher"); } + static Trigger* koralon_fire_resistance_trigger(PlayerbotAI* ai) { return new BossFireResistanceTrigger(ai, "koralon the flame watcher"); } }; #endif From c218dbe6535c845c065a583172647f5c444e9aa3 Mon Sep 17 00:00:00 2001 From: Spargel <130187934+Tierisch@users.noreply.github.com> Date: Mon, 1 Sep 2025 12:05:07 -0500 Subject: [PATCH 6/7] Fix uses of restrictHealerDPS and randomBotCombatStrategies. (#1570) --- conf/playerbots.conf.dist | 7 ++++--- src/AiFactory.cpp | 4 ++++ src/PlayerbotAI.cpp | 3 ++- src/PlayerbotAIConfig.cpp | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/conf/playerbots.conf.dist b/conf/playerbots.conf.dist index 96161f5c..47501b29 100644 --- a/conf/playerbots.conf.dist +++ b/conf/playerbots.conf.dist @@ -811,12 +811,13 @@ AiPlayerbot.OpenGoSpell = 6477 # # Additional randombot strategies -# Strategies added here are applied to all randombots, in addition (or subtraction) to spec-based default strategies. These rules are processed after the defaults. -AiPlayerbot.RandomBotCombatStrategies = "+dps,+dps assist,-threat" +# Strategies added here are applied to all randombots, in addition (or subtraction) to spec/role-based default strategies. These rules are processed after the defaults. +# Example: "+threat,-potions" +AiPlayerbot.RandomBotCombatStrategies = "" AiPlayerbot.RandomBotNonCombatStrategies = "" # Additional altbot strategies -# Strategies added here are applied to all altbots, in addition (or subtraction) to spec-based default strategies. These rules are processed after the defaults. +# Strategies added here are applied to all altbots, in addition (or subtraction) to spec/role-based default strategies. These rules are processed after the defaults. AiPlayerbot.CombatStrategies = "" AiPlayerbot.NonCombatStrategies = "" diff --git a/src/AiFactory.cpp b/src/AiFactory.cpp index 643899e9..c9202a71 100644 --- a/src/AiFactory.cpp +++ b/src/AiFactory.cpp @@ -472,6 +472,10 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa } } } + if (sRandomPlayerbotMgr->IsRandomBot(player)) + { + engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies); + } else { engine->ChangeStrategy(sPlayerbotAIConfig->combatStrategies); diff --git a/src/PlayerbotAI.cpp b/src/PlayerbotAI.cpp index 5dbe5cb9..d0a776b3 100644 --- a/src/PlayerbotAI.cpp +++ b/src/PlayerbotAI.cpp @@ -722,7 +722,8 @@ void PlayerbotAI::HandleTeleportAck() // SetNextCheckDelay(urand(2000, 5000)); if (sPlayerbotAIConfig->applyInstanceStrategies) ApplyInstanceStrategies(bot->GetMapId(), true); - EvaluateHealerDpsStrategy(); + if (sPlayerbotAIConfig->restrictHealerDPS) + EvaluateHealerDpsStrategy(); Reset(true); } diff --git a/src/PlayerbotAIConfig.cpp b/src/PlayerbotAIConfig.cpp index f69cbf19..7a6fa429 100644 --- a/src/PlayerbotAIConfig.cpp +++ b/src/PlayerbotAIConfig.cpp @@ -375,7 +375,7 @@ bool PlayerbotAIConfig::Initialize() randomChangeMultiplier = sConfigMgr->GetOption("AiPlayerbot.RandomChangeMultiplier", 1.0); - randomBotCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.RandomBotCombatStrategies", "-threat"); + randomBotCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.RandomBotCombatStrategies", ""); randomBotNonCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.RandomBotNonCombatStrategies", ""); combatStrategies = sConfigMgr->GetOption("AiPlayerbot.CombatStrategies", "+custom::say"); nonCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.NonCombatStrategies", "+custom::say,+return"); From 3c442a6b71c1d2e42a730d1cbfde04a55984e025 Mon Sep 17 00:00:00 2001 From: kadeshar Date: Tue, 2 Sep 2025 19:24:55 +0200 Subject: [PATCH 7/7] - Excluded additional Legendary Arcane Amalgamation from obtainable for bot enchantments (#1600) --- src/factory/PlayerbotFactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/factory/PlayerbotFactory.cpp b/src/factory/PlayerbotFactory.cpp index 23d956cd..6081443d 100644 --- a/src/factory/PlayerbotFactory.cpp +++ b/src/factory/PlayerbotFactory.cpp @@ -123,7 +123,7 @@ void PlayerbotFactory::Init() if (id == 47181 || id == 50358 || id == 47242 || id == 52639 || id == 47147 || id == 7218) // Test Enchant continue; - if (id == 15463) // Legendary Arcane Amalgamation + if (id == 15463 || id == 15490) // Legendary Arcane Amalgamation continue; SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id);