From c901bc17657abf738bba8e956e87799ebe3549cb Mon Sep 17 00:00:00 2001 From: BlaMacfly <165155133+BlaMacfly@users.noreply.github.com> Date: Tue, 8 Sep 2026 23:33:27 +0200 Subject: [PATCH] Solocraft : ne pas compter les mercenaires comme des joueurs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signale en jeu : « quatre mercenaires contre un gangreseigneur elite, ils meurent tous, alors que seul j y arrive ». Solocraft divise la difficulte brute par le nombre de membres presents, pour compenser l absence de joueurs. CountPlayersInInstance comptait les playerbots comme des joueurs entiers : un employeur accompagne de quatre mercenaires passait de x5 a x1, c est-a-dire d un bonus de 400 % a aucun bonus du tout. Or un mercenaire ne remplace pas un joueur. Sa couche de combat est restee en identifiants de sorts WotLK -- mesure faite sur trois classes, entre cinq et six sorts reellement lancables sur une quarantaine cites par l IA. Il ne compensait donc rien de ce qu il faisait perdre, et l escorte etait strictement perdante : un piege pour le joueur plutot qu un arbitrage tactique. Les playerbots sont desormais ignores dans le compte. Un groupe entierement compose de bots retombe sur 1 et recoit le meme bonus qu un joueur seul, ce qui reste coherent : personne de reel n est la pour porter le contenu. Supprime au passage une oscillation du buff -- chaque mercenaire qui debarquait faisait recalculer et fondre le bonus d un cran, d ou les cycles de retrait/reapplication visibles dans le journal. Co-Authored-By: Claude Opus 5 --- src/server/scripts/Custom/solocraft.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Custom/solocraft.cpp b/src/server/scripts/Custom/solocraft.cpp index 772589e..dfc1b5f 100644 --- a/src/server/scripts/Custom/solocraft.cpp +++ b/src/server/scripts/Custom/solocraft.cpp @@ -102,14 +102,32 @@ namespace { if (!group) return 1; + // Les playerbots ne comptent pas. + // + // SIGNALE EN JEU : « quatre mercenaires contre un gangreseigneur elite, + // ils meurent tous, alors que seul j y arrive ». + // + // Solocraft existe pour compenser l absence de joueurs. Un mercenaire + // n en remplace pas un : sa couche de combat est restee en identifiants + // de sorts WotLK et il ne lance qu une poignee de ses capacites. Le + // compter comme un joueur entier divisait le bonus de l employeur par + // cinq sans rien apporter en face -- l escorte etait strictement + // perdante, un piege plutot qu un arbitrage. + // + // Cela supprime aussi une oscillation : chaque mercenaire qui debarquait + // faisait recalculer et fondre le buff d un cran, d ou les cycles de + // retrait/reapplication visibles dans le journal. uint32 count = 0; for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->GetSource(); - if (member && member->IsInWorld() && member->GetMap() == map) + if (member && !member->IsPlayerBot() && member->IsInWorld() && member->GetMap() == map) ++count; } + // Un groupe entierement compose de bots retombe sur 1 : ils recoivent + // alors le meme bonus qu un joueur seul, ce qui est coherent avec le + // principe -- personne de reel n est la pour porter le contenu. return std::max(count, 1); }