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); }