Solocraft : ne pas compter les mercenaires comme des joueurs
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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<uint32>(count, 1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user