Aller au contenu
Amakya

Formules du jeu

Les calculs du serveur, expliqués, avec un exemple chiffré et la référence du code.

Sommaire

Dégâts et soins

Dégâts avant résistances

Ce que ton sort ou ton arme inflige avant que la cible ne résiste.

dégâts bruts = jet × (100 + caractéristique + % dommages) / 100 + dommages fixes

Variables

jet
valeur tirée entre le minimum et le maximum de l'effet du sort ou de l'arme
caractéristique
Force (neutre, terre), Intelligence (feu), Chance (eau) ou Agilité (air) ; une valeur négative compte 0
% dommages
bonus « % de dommages » (jamais négatif)
dommages fixes
bonus « dommages » ; pour la terre et le neutre, les dommages physiques s’y ajoutent

Exemple

Jet de 30, 200 de Force, 20 % de dommages, 15 de dommages fixes.

30 × (100 + 200 + 20) / 100 + 15 = 30 × 3,2 + 15

111 dégâts bruts

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:768, Game/src/main/java/sixmeth/game/common/Formulas.java:502-512

Dégâts réellement subis

Résistances de la cible appliquées dans cet ordre.

après résistance % = dégâts bruts − ⌊dégâts bruts / 100 × résistance %⌋

après armure et résistance fixe = après résistance % − armure − résistance fixe (0 s’il reste moins de 1)

dégâts subis = ⌊après armure × (100 + dommages finaux) / 100⌋

Variables

résistance %
résistance de l'élément touché ; plafonnée à 50 % pour un joueur, non plafonnée pour un monstre
résistance fixe
résistance fixe de l'élément, plus la résistance physique (neutre, terre) ou magique (eau, feu, air)
armure
réduction apportée par les armures et boucliers actifs sur la cible
dommages finaux
bonus de dommages finaux de l'attaquant moins la réduction de la cible, en %

Exemple

Les 111 dégâts bruts ci-dessus contre un monstre à 30 % de résistance et 10 de résistance fixe.

111 − ⌊111 / 100 × 30⌋ − 10 = 111 − 33 − 10

68 dégâts subis

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:885-894, Game/src/main/java/sixmeth/game/common/Formulas.java:916-921, Game/src/main/java/sixmeth/game/common/Formulas.java:710

Soins

Points de vie rendus par un sort de soin.

soin = ⌊jet × (100 + intelligence) / 100 + soins⌋

Variables

jet
valeur tirée entre le minimum et le maximum de l'effet
intelligence
Intelligence totale (une valeur négative compte 0)
soins
bonus « soins »

Exemple

Jet de 20, 150 d’Intelligence, 10 de soins.

⌊20 × (100 + 150) / 100 + 10⌋ = ⌊20 × 2,5 + 10⌋

60 PV rendus

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:253-285

Coups critiques

Chance de coup critique

Le sort ou l’arme a « 1 chance sur N » de faire un coup critique.

N = ⌊(base − bonus critique + malus critique) × 2,9901 / ln(agilité + 12)⌋

N est au minimum 2 ; une base inférieure à 2 ne fait jamais de coup critique

chance = 1 / N

Variables

base
le « 1 chance sur … » du sort ou de l'arme (voir l'encyclopédie)
bonus critique
bonus « coups critiques » (équipement, effets)
malus critique
malus de coups critiques subis
agilité
Agilité totale (une valeur négative compte 0)

Exemple

Sort à 1 chance sur 50, 5 de bonus critique, 100 d’Agilité.

⌊(50 − 5 + 0) × 2,9901 / ln(112)⌋ = ⌊134,55 / 4,72⌋

1 chance sur 28 (environ 3,57 %)

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:2333-2337, Game/src/main/java/sixmeth/game/fight/Fighter.java:1079-1088

Tacle, esquive et poussée

Esquive d’un tacle

Chance d'échapper à un ennemi adjacent quand tu te déplaces.

esquive % = ⌊300 × (A + 25) / (A + B + 50)⌋ − 100

un jet de 0 à 99 supérieur à l’esquive te fait tacler

Variables

A
Agilité de celui qui se déplace
B
Agilité de celui qui tacle

Exemple

Tu as 100 d’Agilité, le tacleur 50.

⌊300 × 125 / 200⌋ − 100 = 187 − 100

87 % de chances d’esquiver

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:243-250, Game/src/main/java/sixmeth/game/fight/Fight.java:3739-3742

Retrait de PA et de PM

Pour chaque point que le sort tente de retirer, un jet indépendant.

chance % = ⌈ (points restants / points max) × (sagesse / 4) / esquive × 50 ⌉

bornée entre 0 et 100

Variables

points restants
PA (ou PM) de la cible, moins ceux déjà retirés par ce sort
points max
PA (ou PM) de départ de la cible (1 minimum)
sagesse
Sagesse totale du lanceur
esquive
Esquive PA (ou PM) de la cible, 1 minimum

Exemple

Lanceur à 200 de Sagesse, cible à 100 d’esquive PA et 6 PA sur 6.

⌈ (6 / 6) × (200 / 4) / 100 × 50 ⌉ = ⌈ 1 × 50 / 100 × 50 ⌉

25 % pour le premier point, puis 13 % s’il ne reste que 3 PA

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:1492-1527

Dégâts de poussée

Dégâts quand une poussée envoie une cible contre un obstacle.

dégâts = (8 + ⌊jet 1d8 × niveau du pousseur / 50⌋) × cases restantes

au minimum 1, et jamais plus que les PV de la cible

Variables

jet 1d8
tirage entre 1 et 8
niveau du pousseur
niveau du lanceur (celui de l'invocateur pour une invocation)
cases restantes
cases de poussée qui n’ont pas pu être parcourues

Exemple

Pousseur niveau 100, jet de 4, 3 cases restantes.

(8 + ⌊4 × 100 / 50⌋) × 3 = (8 + 8) × 3

48 dégâts

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:2127-2129, Game/src/main/java/sixmeth/game/fight/spell/SpellEffect.java:2075-2081

Expérience, butin et déplacements

Expérience de combat

Expérience gagnée par chaque personnage vainqueur d'un combat contre des monstres.

XP = ⌊ (1 + (sagesse + étoiles + défis + conquête) / 100) × (bonus de groupe + rapport) × facteur de niveau × ⌊XP des monstres / joueurs⌋ × taux du serveur ⌋

sagesse = niveau / 2 + Sagesse totale

rapport = 0,6 si un seul vainqueur ; sinon niveaux des monstres / niveaux des vainqueurs, ramené à 1 entre 0,9 et 1,1, inversé s’il dépasse 1, 0,01 au minimum

facteur de niveau = 1, ou 1 / écart si le plus grand total de niveaux dépasse 3 fois le plus petit

bonus de groupe = 0 : 0,5 ; 1 : 0,5 ; 2 : 2,1 ; 3 : 3,2 ; 4 : 4,3 ; 5 : 5,4 ; 6 : 6,5 ; 7 : 7,8 ; 8 : 9 (8 au plus)

Variables

XP des monstres
somme de l'expérience de base des monstres du combat
joueurs
joueurs vainqueurs (invocations, percepteurs et doubles exclus), 8 au plus
nombre de bonus
vainqueurs dont le niveau dépasse le tiers du plus haut niveau parmi les vainqueurs
étoiles, défis, conquête
bonus en % des étoiles du groupe de monstres, des défis réussis et de la conquête

Exemple

Niveau 100 seul, 100 de Sagesse, monstres valant 1 000 XP et 60 niveaux au total, taux du serveur 1.

(1 + (50 + 100) / 100) × (0,5 + 0,6) × 1 × 1 000

2 750 points d’expérience

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:2145-2234, Game/src/main/java/sixmeth/game/fight/result/FightPacketPvm.java:94-124

Prospection

Elle multiplie la chance de recevoir un butin.

prospection = base + prospection directe + ⌊Chance / 10⌋ (jamais négative)

Variables

base
120 pour un Enutrof, 100 pour les autres classes
prospection directe
bonus « prospection » de l'équipement et des effets
Chance
Chance totale

Exemple

Enutrof, 90 de prospection d’équipement, 300 de Chance.

120 + 90 + ⌊300 / 10⌋

240 de prospection

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:100-108, Game/src/main/java/sixmeth/game/player/Player.java:3439-3441

Chance de butin

Chance qu’un objet précis tombe quand tu tues un monstre.

chance = min(taux, 100) × (1 + (étoiles + défis + conquête) / 100) × prospection / 100 × taux du serveur

plafonnée à 100 %, puis divisée par le diviseur de l’objet s’il dépasse 1

Variables

taux
taux de butin du monstre pour cet objet (voir l'encyclopédie)
prospection
ta prospection au moment de la mort du monstre
taux du serveur
réglage du serveur pour le butin

Exemple

Taux de 10 %, aucun bonus, 150 de prospection, taux du serveur 1.

10 × 1 × 150 / 100 × 1

15 % de chances

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:2091-2121

Coût d’un trajet en zaap

Kamas demandés pour se téléporter d’un zaap à un autre.

coût = 10 × (|Δx| + |Δy| − 1)

jamais négatif

Variables

Δx, Δy
écarts de coordonnées entre la carte où tu es et la carte de destination

Exemple

Départ en [0, 0], arrivée en [5, −3].

10 × (5 + 3 − 1)

70 kamas

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:1404-1406, Game/src/main/java/sixmeth/game/player/Player.java:6144

Points de sort rendus

Points récupérés quand tu ramènes un sort au niveau 1.

rendus = 1 + 2 + … + (niveau − 1) = niveau × (niveau − 1) / 2

Variables

niveau
niveau du sort avant la remise à 1

Exemple

Sort de niveau 5.

1 + 2 + 3 + 4

10 points de sort

Source : Game/src/main/java/sixmeth/game/common/Formulas.java:1722-1729, Game/src/main/java/sixmeth/game/player/Player.java:2491

Un écart avec le jeu officiel ? Signale-le

Si un résultat en jeu ne correspond pas à ces formules, ou si tu penses que le serveur s'écarte du jeu officiel, dis-le-nous : décris ce que tu as constaté (valeurs, sort utilisé, résultat attendu).

Signaler un écart Choisis la catégorie « Combats ».