Mise à jour : Après avoir vérifié le fonctionnement de la mécanique de succès dans "Heart : The City Beneath", il semble que le mécanisme de réussite de Réponse de Dale M est la bonne.
Ma réponse ci-dessous, et Réponse de Groody Les deux montrent comment faire fonctionner le code de l'OP comme on peut le supposer : compter le nombre de jets de 8 ou plus après avoir enlevé un certain nombre de jets les plus élevés. Mais ce n'est pas ainsi que fonctionne le mécanisme de réussite dans Heart.
Par souci d'exhaustivité, je laisse ma réponse originale ci-dessous, mais sachez qu'il s'agit de la bonne réponse à la mauvaise question. Et s'il vous plaît, allez voter pour la réponse de Dale.
Oui, cela ne marchera pas.
Le premier problème est que la fonction lowest NUMBER of DICE
renvoie le somme de la plus basse NUMBER
et non une séquence contenant ces valeurs. Le deuxième problème est que, même s'il a fait retourner une séquence, en essayant de l'appliquer à un groupe de dés comme Nd10
ferait en sorte qu'AnyDice additionne la séquence retournée de toute façon (pour la transformer en un seul nombre, et ensuite rassembler tous ces nombres dans un dé pondéré).
Mais vous pouvez écrire votre propre count VALUES in lowest NUMBER of DICE
qui fait ce que vous voulez. De manière pratique, la bibliothèque de fonctions d'AnyDice contient des exemples "à faire soi-même" des deux types de fonctions suivantes count VALUES in SEQUENCE
y lowest NUMBER of DICE
et il n'est pas difficile de combiner les deux :
\ "Do it yourself" examples from AnyDice's function library: \
function: count VALUES:s in SEQUENCE:s {
COUNT: 0
loop P over {1..#VALUES} {
COUNT: COUNT + (P@VALUES = SEQUENCE)
}
result: COUNT
}
function: lowest NUMBER:n of DICE:d {
result: {(#DICE - NUMBER + 1)..#DICE}@DICE
}
\ Combined custom function: \
function: count VALUES:s in lowest NUMBER:n of DICE:s {
COUNT: 0
loop P over {(#DICE - NUMBER + 1) .. #DICE} {
COUNT: COUNT + (P@DICE = VALUES)
}
result: COUNT
}
Un changement pratique que j'ai dû apporter est que je boucle sur les dés et compare chacun d'entre eux aux valeurs recherchées, plutôt que l'inverse comme dans l'exemple de mise en œuvre AnyDice de count VALUES in SEQUENCE
ne. De plus, j'ai dû faire en sorte que le DICE
une séquence, puisque je ne peux pas faire de boucle avec elle autrement. Cela signifie que, lorsque vous passez un groupe de dés, AnyDice appellera la fonction avec tous les résultats possibles (triés) du lancer de dés comme une séquence et additionnera automatiquement les résultats (ce qui est exactement ce que vous voulez).
En programme terminé se présente donc comme suit :
function: count VALUES:s in lowest NUMBER:n of DICE:s {
COUNT: 0
loop P over {(#DICE - NUMBER + 1) .. #DICE} {
COUNT: COUNT + (P@DICE = VALUES)
}
result: COUNT
}
output [count {8, 9, 10} in lowest 1 of 2d10] named "Domain or Skill"
output [count {8, 9, 10} in lowest 2 of 3d10] named "Domain and Skill"
output [count {8, 9, 10} in lowest 3 of 4d10] named "All and Mastery"