I calcolatori di danno sono strumenti estremamente utili per i giocatori di Pokémon competitivo. Essere capaci di ottimizzare le EV spreads permette ai giocatori di affinare le proprie strategie in battaglia, utilizzando a proprio vantaggio la matematica manipolando le EVs di un Pokémon per massimizzare le chance di sopravvivere alle mosse avversarie, ottenere KOs rilevanti e outspeedando le threats giuste. Ma come funzionano questi calcolatori? Utilizzano davvero la stessa formula che il gioco utilizza? E qual è questa formula?
In passato, ai tempi della IV Generazione, la formula del danno fu derivata empiricamente grazie al duro lavoro di X-Act e peterko. Il calcolo del danno è incredibilmente complesso: basti pensare a tutte le variabili di base di cui si tiene conto (attacco, difesa, potenza base delle mosse, livello, ecc). Non solo bisogna concepire una formula che tenesse in considerazione tutti questi fattori e le altre variabili, ma anche il fattore random dei damage roll. In Pokémon infatti il danno non è lo stesso ogni volta: ogni numero computato nella prima parte della formula e arriva alla sezione del "danno random" può dare un output di 16 valori potenzialmente differenti. Ottenere la formula del danno empiricamente poteva essere noioso e soggetto ad errore umano, non solo perché ci sono decine di variabili da testare, ma anche a causa del fattore random!
In V Generazione, la comprensione della formula del danno fu approcciata in modo differente: guardando al codice del gioco. xfr, Bond697, Kaphotics e V4Victini hanno dataminato e documentato la struttura della formula del danno sulle versioni Bianco e Nero, rivelando esattamente in che ordine i differenti modificatori venivano applicati e esattamente in che modo venivano applicati. Questo fu un grandissimo passo in avanti! Armati di queste nuove informazioni, utenti come Honko e Sopan svilupparono l'Honkcalculator e il Poketron Damage Calculator. Sebbene non fossero carini o versatili come i moderni calcolatori cui siamo abituati, avevano un'importante caratteristica che li distingueva dagli altri calcolatori dell'epoca: erano accurati. Questo era particolarmente importante per il VGC, perché giocare su cartuccia era richiesto per gli eventi dal vivo ed era la norma anche per le prime competizioni di VGC online. Avere un calcolatore di danni accurato significava che, se il calcolatore avesse indicato la capacità di un Pokémon di resistere ad un attacco, quel Pokémon sarebbe resistito anche nel gioco, senza troppe domande.
Quando la conoscenza generale dei giocatori di VGC su come utilizzare i calcolatori di danno è aumentata, anche la richiesta di creare calcolatori ottimizzati per il VGC è cresciuta. Il calcolatore di Honko diventò quello di riferimento per i giocatori di VGC, offrendo nuove funzionalità e drasticamente migliorando l'aspetto grafico e la percezione del calcolo dei danni. Ciononostante, questo si concentrava principalmente sui formati di Smogon e offriva un supporto minimo al VGC. Nel 2015 Tapin, con l'aiuto di Firestorm, creò il primo calcolatore di danno del VGC, introducendo funzionalità di default tipiche del VGC e i set dei Pokémon più comuni, favorendo come mai prima un'accessibilità ai calcolatori per la scena del VGC. squirrelboy1225 continuò il progetto di Tapin quando quest'ultimo scelse di ritirarsi, e ancora oggi lo porta avanti. Tuttavia, con l'aggiunta delle ultime generazioni è arrivato un carico enorme di modificatori, quali i campi, le Abilità -ate, le Aure, oltre a decine di nuove Abilità, strumenti e mosse uniche. Questi modificatori dove vanno ad inserirsi nella formula del danno? Davvero importa dove siano questi modificatori? Non sono semplicemente tutte moltiplicazioni?
Sfortunatamente, non solo è importante dove nella formula siano questi modificatori, ma è MOLTO importante. Un modificatore è qualsiasi cosa che può avere un effetto sul calcolo del danno. Ci sono cinque "gruppi" maggiori di modificatori: modificatori di Attacco/Attacco Speciale, modificatori di Difesa/Difesa Speciale, modificatori della potenza base di una mossa, modificatori generici del danno, modificatori finali. In più, nelle varie parti della formula, i decimali sono in larga parte affetti da arrotondamenti... ma esistono tre tipi di "arrotondamento"!
Questi diversi tipi di arrotondamenti potrebbero sembrare poco influenti sul risultato ma, poiché il gioco userà NormalRound, pokeRound e Floor in step differenti, l'errore degli arrotondamenti si amplificherebbe molto velocemente nella formula. Anche qualcosa di semplice come una Dazzling Gleam potenziata da Life Orb in una lotta in doppio con Light Screen include tutte e tre le funzioni di arrotondamento, quindi moltiplicare tutto a casaccio durante il calcolo del danno risulterebbe in un calcolo del tutto differente rispetto a quello che accade realmente su cartuccia.
Questo fa sorgere un problema! La formula del danno non è stata ancora dataminata nei giochi successivi alla V Generazione. Quindi dove vanno applicati i nuovi modificatori? Beh, all'inizio di una nuova generazione uno può solo provare ad indovinare dove essi debbano andare! Ad esempio, i campi sono modificatori della potenza base o sono modificatori generici del danno? O forse nessuna delle due e sono modificatori finali! Come si fa a distinguere? Sfortunatamente, se nessun dataminer si fa avanti e fa un po' di ingegneria a ritroso per ricavare la nuova formula del danno bisogna ritornare a testare manualmente ogni meccanica. Il team che ha avuto più successo nel testare manualmente tutte le novità è un gruppo Giapponese guidato dal ricercatore OZY, i quali sono stati capaci di documentare tutte le novità della VII Generazione, e un gruppo indipendente su Smogon che ha raccolto tutte le informazioni sull'VIII Generazione. I loro sforzi combinati sono attualmente le migliori risorse da consultare come riferimento per comprendere la formula del danno e dovrebbero essere la fonte primaria per tutti i calcolatori di danno moderni e per i simulatori di battaglia come Pokémon Showdown.
L'VIII Generazione tra le altre cose ha introdotto una novità che non era mai stata presa in considerazione nei giochi precedenti in misura così larga: l'eliminazione di decine di mosse che esistevano in Generazioni precedenti. Essendo questa guida stata scritta da DaWoblefet nel corso della VII Generazione, alcuni degli argomenti trattati riguardano proprio delle mosse che non esistono più nei giochi di VIII Generazione e che forse non vedremo mai più nei giochi futuri. Per una questione di completezza, nostalgia e fedeltà all'originale, troverete paragrafi interi su questi argomenti, segnati con un asterisco (*).
In questo articolo, utilizzerò anche altra terminologia con la quale dovreste familiarizzare:
Questo dipenda da... Game Freak. Prendiamo ad esempio il meteo. Se volessi applicare un boost da meteo come quello della pioggia battente su una mossa di tipo Water, ci si potrebbe aspettare che dovremmo moltiplicare la potenza per 1.5x e che poi arrotonderemmo in uno dei metodi sopra citati. Magari moltiplicare per 3 e dividere per 2 funzionerebbe altrettanto bene, oppure forse basterebbe dividere per 2 il numero originale e aggiungerlo al numero originale. Game Freak invece ha scelto di fare questo invece: si moltiplica per 6144 e si divide per 4096. Quindi invece di fare una moltiplicazione per 1.5x, in realtà il gioco sta moltiplicando per 6144/4096. Ora, se tu prendessi una calcolatrice e digitassi questa divisione, ti accorgeresti che questa è esattamente uguale ad 1.5x; infatti per il grosso del calcolo, si comporterà esattamente come se avessi moltiplicato per 1.5x. Game Freak ha fatto questa scelta per una questione di consistenza per tutti i tipi di modificatori che esistono nel gioco. Le divisioni sono molto più semplici per un computer se il divisore (il numero nella parte inferiore di una frazione) è una potenza di 2, e Game Freak ha scelto 4096 e ha usato questo numero come divisore in tutti i modificatori nella formula del danno.
Questo significa però che alcuni modificatori non possono essere precisamente rappresentati in forma di decimali secondo questo sistema. Un buon esempio è Life Orb, che moltiplica il danno di circa l'1.3x. Internamente quest'incremento è rappresentato dalla frazione 5324/4096, che è uguale a 1.2998046875, poco meno di 1.3. Propriamente parlando, soltanto il numero 5324 viene conservato durante il calcolo; in qualsiasi momento viene applicato un modificatore, nella formula avviene sempre lo stesso passaggio di dividere per 4096, e poi di arrotondare il risultato con pokeRound, come spiegato dalla formula:
Per rendere questo articolo più leggibile, invece di dire "si applica un modificatore di valore 6144", dirò "si moltiplica il danno per 6144/4096 (1.5x), e si usa pokeRound sul risultato".
A differenza dei modificatori generici del danno, che grossomodo vengono applicati in sequenza, uno dopo l'altro i modificatori di attacco, difesa, potenza base e finali sono sottoposti ad un processo di "concatenamento", in cui più modificatori vengono "combinati" insieme prima di essere applicati, come abbiamo visto nella sezione "Come sono "conservati" i modificatori". Se ci sono più Abilità che impattano sul calcolo del danno che possono essere concatenate, l'ordine col quale sono concatenate dipende dalla di Velocità di partenza (quella della schermata delle statistiche). Se ci sono più strumenti che impattano sul calcolo del danno che possono essere concatenati, l'ordine col quale sono concatenati dipende dalla di Velocità di partenza (quella della schermata delle statistiche).
Per ogni modificatore che bisogna concatenare, segui la formula:
Dove:
Questa è stata una delle parte più confusionarie e difficili da capire per me personalmente, e vi incoraggio a controllare gli esempi quando arriverete a quella parte della guida per aiutarvi a capire esattamente come funziona il concatenamento dei modificatori. Nuovamente, per rendere questo articolo più leggibile, invece di dire "si aggiunge 5324 alla lista di modificatori da concatenare", verrà detto "si moltiplica per 5324/4096". Si consiglia di guardare questa prova video come dimostrazione che nel concatenamento viene utilizzata la funzione NormalRound, e non il pokeRound o il troncamento.
In un senso molto generale, il calcolo può essere diviso nelle seguenti sezioni:
Nella lettura di questo articolo, queste sezioni possono essere lette in qualsiasi ordine. Se sei alle prime armi con il calcolo dei danni, ti conviene leggere prima la parte sul calcolo del danno di base, poi la sezione sui modificatori finali e poi le altre sezioni.
Oltre agli argomenti già citati, in questo articolo verranno trattati anche i seguenti:
La parte più importante della formula del danno è quella che viene comunemente detta "danno di base". Questa è la formula per calcolare il danno di base:
Where:
Se a questo punto sei già scoraggiato, preparati! La formula del danno da questo punto in poi diventa solo più complessa. Per aiutarti a capire ciò che accade punto per punto, ci saranno degli esempi man mano.
Calcoliamo il danno di base di U-turn di un Incineroar con 4 EVs in Attacco (136 nella statistica di Attacco) contro un Amoonguss
con 76 EVs in Def (100 nella statistica di Difesa). Per iniziare, inseriamo i nostri valori per livello, potenza base, Attacco e Difesa:
Per affrontare questo calcolo, bisogna risolvere prima le operazioni all'interno delle parentesi e man mano quelle più esterne. Parlando genericamente, poiché tutte le battaglie in VGC si tengono al livello 50, quella porzione della formula ci darà sempre un risultato di 22. Floor[(2*50 / 5) + 2] = Floor[(100 / 5) + 2] = Floor(20+2) = 22. Il primo troncamento quindi è stato sistemato.
Floor(22*70*136/100) = Floor(2094.4). Ricordiamoci che la funzione floor azzera i decimali, quindi il risultato qui diventa 2094.
Floor(2094/50) = Floor(41.88). Come prima, il floor tronca i decimali, quindi Floor(41.88) = 41. 41+2 = 43. Questo significa che abbiamo trovato il danno di base per la U-turn di questo Incineroar contro questo Amoonguss. 43!
Precedentemente abbiamo calcolato il danno di base. D'ora in poi quando parlerò di danno nelle prossime sezioni, mi riferirò a questo danno di base iniziale. I prossimi passaggi dei modificatori generici del danno sono applicati in quest'ordine nel gioco, uno dopo l'altro.
Se la mossa ha come bersaglio più di un Pokémon sul campo, si moltiplica il danno per 3072/4096 (0.75x), e si applica la funzione pokeRound sul risultato. Avere più di un bersaglio è indipendente dal check sulla precisione, dal fatto che il Pokémon difensore abbia usato o meno Protect, o se questo può evitare la mossa grazie ad altri effetti (come ad esempio Levitate, Telepathy, Fly). Un Pokémon esausto NON è un bersaglio.
Esempi:
Se la lotta è una Battle Royale (formato introdotto e concluso nei giochi di VII Generazione) e la mossa ha come bersaglio più di un Pokémon sul campo, il moltiplicatore è invece 2048/4096 (0.5x), usando poi pokeRound sul risultato.
Se il danno da calcolare è il secondo colpo di una mossa per effetto dell'Abilità Parental Bond (tipica di Mega-Kangaskhan), si moltiplica il danno per 1024/4096 (0.25x), usando poi pokeRound sul risultato.
Se il meteo è luce solare intensa (a causa di Sunny Day o Drought):
Se il meteo è pioggia battente (a causa di Rain Dance o Drizzle):
Se il Pokémon difensore ha lo strumento assegnato Utility Umbrella, vengono ignorati i moldificatori da condizioni meteo.
La corrente d'aria misteriosa (dall'Abilità di Mega Rayquaza Delta Stream) non applica un modificatore da condizione meteo. Piuttosto, la corrente d'aria misteriosa cambia direttamente i matchup dei tipi, ad esempio una mossa Electric che ha come bersaglio Mega Rayquaza (Dragon/Flying) sarà "non molto efficace".
L'esatto moltiplicatore per i brutti colpi è tuttora sconosciuto. I brutti colpi di sicuro non sfruttano il moltiplicatore 6144/4096, ma è difficile provare matematicamente quale sia con esattezza quello corretto. Il calcolo più accurato per ora è la moltiplicazione del danno per 3/2, usando poi pokeRound sul risultato. Le probabilità di ottenere un brutto colpo sono descritte dalla seguente tabella:
Livello | Probabilità | Frazione equivalente |
+0 | ~4.1667% | 1/24 |
+1 | 12.5% | 1/8 |
+2 | 50% | 1/2 |
+3 | 100% | 1/1 (Sempre) |
I fattori seguenti possono aumentare il livello di probabilità dei brutti colpi:
Se il Pokémon difensore ha l'Abilità Battle Armor o Shell Armor, o se il team del Pokémon difensore è protetto da Lucky Chant*, la mossa del Pokémon attaccante non può risultare in un brutto colpo. Se la mossa usata è una tra Surging Strikes, Wicked Blow, Storm Throw o Frost Breath, se il Pokémon attaccante nel turno precedente ha utilizzato la mossa Laser Focus, o se l'Abilità del Pokémon attaccante è Merciless e il difensore è avvelenato o iperavvelenato, la mossa sarà sempre un colpo critico, a meno che il difensore non sia protetto da uno degli effetti menzionati prima. Il bonus di Sniper (1.5x) viene applicato dopo, tra i modificatori di danno finali.
Contrary, Simple, Clear Smog, Haze e Topsy-Turvy non hanno effetto sui livelli di probabilità dei brutti colpi.
Il danno calcolato finora viene moltiplicato per un numero generato randomicamente compreso tra 85 e 100, e poi diviso per 100, e infine troncato dei decimali, secondo la seguente formula:
Dove:
Questo calcolo ci restituisce 16 differenti possibili "damage rolls". Il fattore random è, come implica il nome, generato grazie all'RNG del gioco. Utilizzerai solamente 1 Fattore Random per mossa, e ogni colpo di una mossa che colpisce l'avversario più di una volta (come Dragon Darts o Surging Strikes) ha un nuovo Fattore Random generato indipendentemente dagli altri Fattori Random dei colpi precedenti. Ecco spiegato perché il secondo colpo di Mega Kangaskhan non faceva esattamente un quarto del danno del primo colpo, o perché Icicle Spear non fa lo stesso danno in tutti e cinque i colpi.
A questo punto il gioco semplicemente sceglie uno di questi 16 valori da utilizzare. Per i propositi del calcolo del danno, tutti i 16 possibili damage rolls vengono considerati, e a ognuno di loro individualmente bisognerà applicare i modificatori rimasti nella formula. Calcolando a mano, di solito si sceglie di guardare semplicemente al valore più basso e a quello più alto per ottenere un range di danno.
Se la mossa utilizzata è dello stesso tipo del Pokémon attaccante, si moltiplica il danno per 6144/4096 (1.5x), usando poi pokeRound sul risultato. Se il Pokémon che usa una mossa con STAB ha l'Abilità Adaptability, si moltiplica invece il danno per 8192/4096 (2x) e si usa poi pokeRound sul risultato.
Si determina l'efficacia del tipo di una mossa in base alla tabella di debolezze e resistenze. Un esempio è la tabella di Bulbapedia. In termini propri, questo modificatore è semplicemente un "bitshift" (un operatore bit a bit) di 1, 2, o 3 a sinistra o destra, cioè equivalente ad una moltiplicazione o divisione per 2, 4 o 8 in funzione dell'efficacia o meno di una mossa, troncando poi i decimali. Questa operazione non è infatti scalata dividendo per /4096. Grazie a Forest's Curse e Trick-or-Treat, è possibile che il moltiplicatore di debolezze/resistenze sia compreso tra 0.125x e 8x invece dei normali 0.25x-4x come nelle generazioni precedenti.
L'interazione tra due tipi è detta "matchup dei tipi" (ad esempio Electric è superefficace su Water), mentre il modificatore da debolezze/resistenze è il risultato finale (Electric ha un modificatore di 4x contro un Pokémon di tipo Water/Flying). Le seguenti cose possono avere un effetto sia sul matchup dei tipi che sul modificatore da debolezze/resistenze, generalmente mantenendo quest'ordine:
Se il Pokémon attaccante è scottato e la mossa usa l'Attacco fisico, si moltiplica il danno per 2048/4096 (0.5x), usando poi pokeRound sul risultato. Se l'Abilità dell'attaccante è Guts o la mossa dell'attaccante è Facade, non si applica il modificatore da scottatura (ma non si fa nient'altro; Guts è un modificatore di attacco e Facade è un modificatore di potenza base).
Dopo aver concatenato i modificatori finali, si moltiplica il danno per il modificatore risultante /4096, usando poi pokeRound sul risultato. Se non ci sono modificatori finali, si moltiplica per 4096/4096 (1x), usando poi pokeRound sul risultato. Guarda la sezione sui modificatori finali per maggiori informazioni.
Se il Pokémon attaccante usa una mossa Dynamax/Gigamax/Z e il Pokémon difensore è protetto da Protect, Detect, King's Shield, Spiky Shield, Baneful Bunker, Obstruct o Mat Block, se la mossa in questione ha una priorità maggiore o uguale a +1 e il difensore è protetto da Quick Guard, o se la mossa è Clangorous Soulblaze e il difensore è protetto da Wide Guard, si moltiplica il danno per 1024/4096 (0.25x) usando poi pokeRound sul risultato. Per le mosse G-Max One Blow e G-Max Rapid Flow questo modificatore è uguale a 4096/4096 (1x).
Se il danno è uguale a 0, adesso è 1.
Se il danno è maggiore di 65535, si applica il modulo 65536 (danno % 65536). Ad esempio, una mossa che farebbe 65638 di danno prima di questo check, ne farebbe solo 102 dopo il check (65638 % 65536 = 102), e una mossa che farebbe 131085 prima di questo check ne farebbe solo 13 dopo il check (131085 % 65536 = 13). Poiché questo check è posizionato dopo il check di danno a zero, significa che è comunque possibile far andare la formula in overflow e risultare in un danno pari a 0, se si utilizza una mossa che farebbe un danno multiplo di 65536. Guarda questo video in cui si prova che è possibile fare 0 danno in VIII Generazione (nell'ultima sezione della guida seguiremo passo passo perché ciò avviene).
Una volta finito con il punto 12, questo è proprio il danno che verrà inferto al difensore. Tuttavia, se il danno inferto è maggiore del suo numero di HP in quel momento, il danno sarà il necessario per ridurre il numero di HP a 0. Per esempio, se il danno calcolato col la formula del danno è 300, ma il difensore ha 200 HP, la mossa farà solamente 200 di danno.
Calcoliamo il danno minimo e massimo di un Primal Kyogre con 252+ EVs in Attacco Speciale che usa una Water Spout a piena potenza su un Amoonguss
con 252+ EVs in Difesa Speciale, in condizioni meteo di pioggia battente (o acquazzone), come mossa ad area in una lotta in Doppio.
Controlliamo la lista dei modificatori e dei passaggi che abbiamo visto poco prima:
Prima di iniziare con i modificatori generici del danno bisogna però determinare il danno di base. L'Attacco Speciale di Primal Kyogre in questo calcolo è 255, la potenza base di Water Spout è 150, e Amoonguss ha 145 nella statistica di Difesa Speciale. Questo esempio non ha modificatori di attacco, di potenza base o di difesa nella formula. Ricordiamoci, poiché stiamo calcolando con Pokémon al livello 50 in VGC, il calcolo che tiene in considerazione questo fattore fa sempre 22. Adesso inseriamo i nostri numeri nella formula per calcolare il danno di base.
Floor(5803/50) + 2 = Floor(116.06) +2. Troncando i decimali, Floor(116.06) + 2 = 116 + 2 = 118. Quindi 118 è il danno di base per questo calcolo. Adesso si applicano i modificatori, in ordine:
Per i nostri scopi, piuttosto che calcolare il danno con tutti e 16 i rolls, calcoleremo solo il roll di Water Spout di danno minimo e quello di danno massimo. Iniziando da quello minimo, ricordiamoci che il roll di danno minimo accade quando il suo fattore random ha un valore di 15.
Quindi 112 è il nostro danno minimo. Il roll di danno massimo invece è molto più facile da trovare: è infatti uguale a Current Damage, perché il Fattore Random è uguale a 0, e qualsiasi cosa moltiplicata e poi divisa per 100 non cambierà valore. In questo caso il nostro danno massimo è 132, dandoci un range di danno di 112-132.
Non essendoci altri modificatori rimasti da applicare, questo è il danno che Water Spout farà ad Amoonguss: 84-99. Se controllassimo questo risultato su un calcolatore per effettivamente valutare se abbiamo utilizzato l'ordine giusto dei modificatori, vedremmo che il calcolatore ci restituisce questo calcolo:
I modificatori finali sono concatenati insieme in quest'ordine e il risultato poi applicato al punto 9 dei modificatori generici del danno.
Se la lotta è in Doppio (o una Battle Royale), il modificatore è 2732/4096 (0.6669921875x); se la lotta è in Singolo, il modificatore è 2048/4096 (0.5x). Il gioco non controlla se la mossa abbia o meno più di un bersaglio, piuttosto solo il formato della lotta. Ciò significa che una mossa ad area con un solo bersaglio è comunque affetta dal modificatore degli Schermi in una partita in Doppio. Se la mossa è un brutto colpo o se l'Abilità dell'attaccante è Infiltrator, questo modificatore non si applica.
Quindi Psychock, Psystrike e Secret Sword sono tutte affette dal modificatore di Light Screen e non da quello di Reflect. Aurora Veil e uno degli altri due schermi possono essere attivi contemporaneamente in gioco, ma i loro effetti non sono cumulabili (cioè non ci sarà una doppia riduzione di danno se sono attivi nello stesso momento nello stesso lato del campo sia Reflect che Aurora Veil; la riduzione si applica una sola volta).
n | Modificatore | Equivalente in decimali |
1 | 4915/4096 | 1.199951171875 |
2 | 5734/4096 | 1.39990234375 |
3 | 6553/4096 | 1.599853515625 |
4 | 7372/4096 | 1.7998046875 |
5 o più | 8192/4096 | 2 |
Calcoliamo il valore dei modificatori finali di Dynamax Cannon di Life Orb Eternatus contro un Dynamax Dragonite
con Multiscale intatta, Light Screen e Friend Guard attivi in una lotta in Doppio.
Controlliamo quindi come vengono concatenati i modificatori finali, in questo caso ne avremo cinque: Light Screen, Multiscale, Friend Guard, Dynamax Cannon e Life Orb. Nota bene che i modificatori da STAB e debolezza NON sono modificatori finali.
Il primo OldCombinedModifier quando si concatenano i modificatori finali è sempre 4096. Seguendo l'ordine, il primo modificatore finale che avremo sarà Light Screen (2732).
Che è uguale a 2732. Successivamente, il nostro nuovo OldCombinedModifier è 2732, e si concatena col secondo modificatore finale della lista, Multiscale (2048).
Il risultato è 1366. Continuando, applichiamo Friend Guard (3072).
Finalmente, abbiamo qualcosa di significativo! (1366 * 3072) / 4096 = 1024.5, che può essere arrotondato normalmente. Quindi piuttosto che arrotondare per difetto come faremmo con pokeRound, si arrotonda per eccesso su 0.5, dandoci 1025. Procediamo quindi sul prossimo modificatore finale: Life Orb (5324).
Che può essere arrotondato normalmente: NormalRound(1332.299...) = 1332. Applichiamo infine l'ultimo modificatore finale, Dynamax Cannon (8192).
Che è uguale a 2664. Questo sarà il nostro modificatore finale che utilizzeremo allo step 9 del calcolo del danno.
Dato un Eternatus con 252 EVs in Attacco Speciale che utilizza una Dynamax Cannon da potenza base 100 contro un Dragonite a piena vita con 4 EVs in Difesa Speciale, il nostro danno di base sarà 73. I roll di danno minimi e massimi saranno rispettivamente 62-73. Applicando il modificatore da STAB, il danno diventa 93-109. Il modificatore da debolezza porta infine il danno a 186-218. Ora possiamo applicare i modificatori finali (step 9 dei modificatori generici del danno):
Come puoi vedere, 121-142 è il range di danno che otteniamo dal calcolatore di danni.
Non c'è un ordine particolare da seguire in questa sezione, perché tratteremo le mosse singolarmente. Di conseguenza, troverete raggruppate mosse che si comportano in modo simile per differenziare un po' le prossime sezioni. Tutte queste mosse hanno una potenza base interna di default, che generalmente non viene utilizzata; tuttavia, la potenza base viene considerata quella di default quando la mossa è affetta dal glitch della Conservazione di Rollout (troverete più avanti spiegato come funziona). Se alla fine del calcolo una di queste mosse si ritrovasse con una potenza base inferiore a 1, il gioco considera 1 come potenza base di quella mossa in quel turno.
Per i calcoli sulla Velocità, i valori considerati nel calcolo per l'attaccante e il difensore sono quelli ottenuti dopo aver applicato tutti i modificatori di Velocità.
Se la potenza base calcolata di Gyro Ball è maggiore di 150, la potenza base utilizzata nel calcolo sarà 150.
Una volta definita S, si utilizza questa tabella per determinare la potenza base.
S | Potenza base |
4 o più | 150 |
3 | 120 |
2 | 80 |
1 | 60 |
0 | 40 |
Per i calcoli sul peso, i valori considerati nel calcolo per l'attaccante e il difensore sono quelli ottenuti dopo aver applicato tutti i modificatori del peso. Se il difensore è Dynamax o Gigamax, le mosse basate sul peso falliscono. I calcoli sul peso vengono effettuati in chilogrammi.
Peso (kg) | Potenza base |
x ≥ 200 | 120 |
100 ≤ x < 200 | 100 |
50 ≤ x < 100 | 80 |
25 ≤ x < 50 | 60 |
10 ≤ x < 25 | 40 |
x < 10 | 20 |
Una volta definito W, si utilizza questa tabella per determinare la potenza base.
W | Potenza base |
5 | 120 |
4 | 100 |
3 | 80 |
2 | 60 |
Meno di 2 | 40 |
Una volta definito P, si utilizza questa tabella per determinare la potenza base.
P | Potenza base |
P > 32 | 20 |
17 ≤ P ≤ 32 | 40 |
10 ≤ P ≤ 16 | 80 |
5 ≤ P ≤ 9 | 100 |
2 ≤ P ≤ 4 | 150 |
P ≤ 1 | 200 |
Il motivo per il quale questa formula sia così tanto particolare è perché il gioco computa la percentuale di HP del difensore usando una divisione percentuale scalata a 4096. Se per te non ha senso, tranquillo che lo pensano tutti e sei in buona compagnia.
L'affetto è un valore che ha un valore compreso nell'intervallo 0-255. Maggiori dettagli sull'affetto possono essere trovati sull'apposita pagina di Bulbapedia. Nota che Ditto / Smeargle che usano la mossa Transform non copiano il valore di affetto, quindi è importante tenerne conto se si vuole sfruttare al meglio le meccaniche di Return / Frustration.
Uno Smeargle o un Ditto con affetto base (ad esempio scambiati e messi direttamente nel box) avranno una potenza base di Return di 28.
Uno Smeargle o un Ditto con affetto base (ad esempio scambiati e messi direttamente nel box) avranno una potenza base di Frustration di 74.
Dove Counter è il numero di volte che Fury Cutter è stata usata con successo consecutivamente, con un massimo di 2.
Dove DefaultBP è la potenza base di default della mossa (30 nel caso di Rollout / Ice Ball), Counter è il numero di volte che Rollout / Ice Ball è stata usata con successo consecutivamente, con un massimo di 4, e Defense Curl è uguale a 1 se l'attaccante ha usato Defense Curl in qualsiasi momento prima di usare Rollout / Ice Ball, ed uguale a 0 se non l'ha fatto. Il moltiplicatore massimo senza Defense Curl è 16x, mentre quello massimo con Defense Curl è 32x.
La Conservazione di Rollout è un glitch che permette la conservazione del moltiplicatore di Rollout / Ice Ball e la sua applicazione a qualsiasi mossa (quando ci riferiremo a "Rollout" da qui in poi sappiate che le stesse cose si potrebbero applicare anche con Ice Ball, mossa ormai non più disponibile sui giochi di VIII Gen). Quando Rollout si infrange sul Disguise di Mimikyu, il contatore di Rollout aumenta di 1 ai fini del blocco su Rollout dell'attaccante, ma Counter non aumenta. Se Rollout si infrange su più Disguise di più di un Mimikyu, il moltiplicatore sarà ritardato per ogni Disguise colpito. La Conservazione di Rollout è stata patchata nella versione di Pokémon Spada e Scudo 1.3.1, rilasciata a Dicembre 2020.
Esempio di applicazione del glitch di Conservazione di Rollout, senza Defense Curl, usando Thunderbolt subito dopo:
Rollout 1: 30 * 2^(0+0) = 30 potenza base
Rollout 2: 30 * 2^(1+0) = 60 potenza base
Rollout 3: Disguise
Rollout 4: 30 * 2^(2+0) = 120 potenza base
Rollout 5: 30 * 2^(3+0) = 240 potenza base (il blocco di Rollout dura 5 turni, a questo punto si può scegliere una nuova mossa)
Thunderbolt: 90 * 2^(4+0) = 1440 potenza base
La Conservazione del moltiplicatore di Rollout resterà attiva finché non verrà usata una mossa che usa la formula del danno (mosse come Seismic Toss, Swords Dance, Protect o Super Fang non "useranno" la Conservazione del moltiplicatore di Rollout). Se la mossa con potenza base incrementata tramite il glitch della Conservazione di Rollout è una mossa con potenza base custom, si moltiplica il modificatore della Conservazione di Rollout per la potenza base di default, senza poi applicare i suoi calcoli normali (ad esempio, Grass Knot potenziata dalla Conservazione di Rollout dopo aver usato Defense Curl avrà sempre 1 * 32 = 32 potenza base). Se la mossa successiva è una mossa che colpisce l'avversario più di una volta, la Conservazione di Rollout si applicherà solo al primo colpo. Analogamente, se la mossa è ad area, la Conservazione di Rollout si applicherà solo al primo bersaglio che la mossa ad area colpirà (per primo l'alleato, poi lo slot sinistro dell'avversario, poi lo slot destro dell'avversario). Counter non viene copiato tramite Transform.
Gli incrementi alle statistiche che influenzano la potenza base di queste mosse includono tutti i boost tra +1 e +6 ad Attacco, Difesa, Attacco Speciale, Difesa Speciale, Velocità, elusione e precisione. I cali nelle statistiche non avranno effetto su queste mosse (ad esempio, un Pokémon con +6 in Attacco Speciale e -6 in Attacco avrà una Stored Power con potenza base 120).
Dove AttackerStatBoosts è la somma di tutti gli incrementi alle statistiche dell'attaccante. Intenzionalmente non c'è un tetto massimo di potenza base, ma la potenza base massima sarà (20 + 20 * (6 * 7 statistiche)) = 860 potenza base.
Dove DefenderStatBoosts è la somma di tutti gli incrementi alle statistiche del difensore. Se la potenza base calcolata è maggiore di 200, la potenza base utilizzata nel calcolo sarà 200.
Dove BaseAttack è letteralmente l'Attacco base del Pokémon, non la sua statistica di Attacco dopo i modificatori. Ad esempio, BaseAttack di un Garchomp Jolly con 252 EVs in Attacco è 130, non 182, ai fini del calcolo della potenza base di Beat Up.
Numero di volte | Potenza base |
1 | 40 |
2 | 80 |
3 | 120 |
4 | 160 |
5 o più | 200 |
n | Forza di Magnitude | Factor |
n < 5 | 4 | 0 |
5 ≤ n < 15 | 5 | 1 |
15 ≤ n < 35 | 6 | 2 |
35 ≤ n < 65 | 7 | 3 |
65 ≤ n < 85 | 8 | 4 |
85 ≤ n < 95 | 9 | 5 |
n ≥ 95 | 10 | 6 |
Una volta ottenuto il Factor, la potenza base di Magnitude è determinata dalla formula:
PP Rimanenti | Potenza base |
4 o più | 40 |
3 | 50 |
2 | 60 |
1 | 80 |
0 | 200 |
Se Trump Card viene utilizzata attraverso l'effetto di un'altra mossa (ad esempio Metronome o Sleep Talk), la potenza base sarà determinata da quanti PP avrà quella mossa dopo l'utilizzo.
Se la mossa ha una potenza base custom, come prima cosa viene calcolata la sua potenza base; altrimenti, si usa la potenza base regolare (quella che si trova listata nella schermata di gioco). I modificatori di potenza base vengono concatenati insieme in quest'ordine e il risultato poi applicato alla potenza base di partenza prima di essere utilizzato nella formula del danno di base.
Per calcolare la potenza base finale si applica il modificatore concatenato alla potenza base di partenza. Più espressamente, si calcola il modificatore concatenandolo, poi si moltiplica la potenza base di partenza per il modificatore concatenato, si divide per 4096 e infine si utilizza pokeRound sul risultato. Se alla fine del calcolo una di queste mosse si ritrovasse con una potenza base inferiore a 1, il gioco considera 1 come potenza base di quella mossa in quel turno. Infine se la potenza base risultasse maggiore di 65535, si applica il modulo 65536 (potenza base % 65536).
Calcoliamo la potenza base finale di Bolt Beak di Dracozolt in Electric Terrain. Dracozolt è affiancato da un Pokémon con Abilità Power Spot che utilizza Helping Hand, ha usato Charge il turno precedente e ha Magnet assegnato. E ipotizziamo abbia Sand Rush, perché una mossa con così tanta potenza base non merita di fallire a causa di Hustle. Nota anche che se anche Dracozolt avesse Hustle, questo non sarebbe comunque un modificatore di potenza base.
Innanzitutto Bolt Beak è una mossa con una potenza base custom, nella lista di quelle dicotomiche. Ipotizziamo attacchi prima dell'avversario e che abbia quindi una potenza base di partenza pari a 170. Ecco una lista di tutti i modificatori di potenza base che verranno applicati, nell'ordine in cui verranno applicati:
Il primo OldCombinedModifier quando si concatenano i modificatori di potenza base è sempre 4096. Il primo modificatore che applicheremo sarà Power Spot (5325).
Che è uguale a 5325. Poi, si mette 5325 come OldCombinedModifier, e Magnet (4915) come prossimo modificatore.
Questo è uguale a 6389.739990234, che arrotondato per eccesso diventa 6390. Il nostro prossimo modificatore è Helping Hand (6144).
Il risultato di questo calcolo è 9585. Il prossimo modificatore è Charge (8192).
Ancora, il risultato è 19170. Il nostro ultimo modificatore da concatenare è Electric Terrain (5325)
Questo calcolo finale ci dà 24921.936035156, che viene arrotondato per eccesso a 24922. Il moltiplicatore così calcolato viene infine moltiplicato per la potenza base di partenza (170).
Avremo quindi pokeRound(1034.3603515625), arrotondato per difetto a 1034, che sarà la potenza base finale di questa mossa. Mica male, speriamo solo non si infranga su un Pokémon di tipo Ground!
In questa sezione mi riferirò all'attacco di partenza (Attacco o Attacco Speciale) di un Pokémon. Non mi riferirò letteralmente alla statistica base in questo caso, ma al numero che vedresti nel sommario del Pokémon. Ad esempio, Hydreigon con 31 EVs, 252 EVs in Attacco Speciale e natura Modest avrebbe un attacco di partenza di 194, non 125.
Ci sono alcuni passaggi da applicare prima che si possano concatenare i modificatori. Si applicano questi effetti nell'ordine:
Ad esempio, un brutto colpo con Leaf Blade di un attaccante a +1 in Attacco su un difensore con Unaware fa lo stesso danno di un brutto colpo di Leaf Blade di un attaccante a +0 in Attacco.
Livello | Frazione | Decimale |
-6 | 2/8 | 0.25 |
-5 | 2/7 | ~0.2857 |
-4 | 2/6 | ~0.3333 |
-3 | 2/5 | 0.4 |
-2 | 2/4 | 0.5 |
-1 | 2/3 | ~0.6667 |
0 | 2/2 | 1 |
1 | 3/2 | 1.5 |
2 | 4/2 | 2 |
3 | 5/2 | 2.5 |
4 | 6/2 | 3 |
5 | 7/2 | 3.5 |
6 | 8/2 | 4 |
Se la statistica di attacco di partenza moltiplicata per il numeratore della frazione di calo/aumento di attacco risultasse maggiore di 65535, si applica il modulo 65536 (attacco % 65536). (Nota: è possibile arrivare ad una statistica di attacco così alta solamente tramite hacking.)
Quindi, i modificatori di attacco rimasti sono concatenati insieme in questo ordine e il risultato finale viene applicato all'attacco di partenza prima di essere usato nella formula del danno di base.
Per calcolare l'attacco finale si applica il modificatore concatenato all'attacco attuale. Più espressamente, si calcola il modificatore concatenandolo, poi si moltiplica l'attacco attuale per il modificatore concatenato, si divide per 4096 e infine si utilizza pokeRound sul risultato. Se alla fine del calcolo l'attaccante si ritrovasse con attacco inferiore a 1, il gioco considera 1 come attacco in quel turno. Infine se l'attacco risultasse maggiore di 65535, si applica il modulo 65536 (attacco % 65536).
Calcoliamo l'Attacco Speciale finale di un Chandelure investito al massimo in Attacco Speciale che usa Overheat contro un Mamoswine
con Abilità Thick Fat. Chandelure è attualmente a -2 in Attacco Speciale, ha Flash Fire attivo perché è stato colpito da una mossa Fire in un turno precedente e una statistica di Attacco Speciale di partenza pari a 216.
Iniziando dai cali/aumenti di statistica, si moltiplica 216 per 2/4. Floor(216*2/4) = 108. Poi si applicheranno i nostri due modificatori di attacco: Flash Fire, poi Thick Fat.
Iniziamo sempre con 4096 come nostro primo OldCombinedModifier. Il primo modificatore da applicare è Flash Fire (6144).
Che è uguale a 6144. Il prossimo modificatore è Thick Fat (2048).
Che è uguale a 3072. Infine viene applicato il modificatore concatenato all'Attacco Speciale attuale di 108.
Questo diventa quindi un Attacco Speciale finale di 81.
Calcolare la difesa è molto simile a calcolare l'attacco, fatta eccezione per il fatto che ci sono molti modificatori di difesa in meno rispetto a quelli di attacco.
Ad esempio, un brutto colpo con Sacred Sword su un difensore a -1 in Difesa fa lo stesso danno di un brutto colpo di Leaf Blade su un difensore a +0 in Difesa.
Livello | Frazione | Decimale |
-6 | 2/8 | 0.25 |
-5 | 2/7 | ~0.2857 |
-4 | 2/6 | ~0.3333 |
-3 | 2/5 | 0.4 |
-2 | 2/4 | 0.5 |
-1 | 2/3 | ~0.6667 |
0 | 2/2 | 1 |
1 | 3/2 | 1.5 |
2 | 4/2 | 2 |
3 | 5/2 | 2.5 |
4 | 6/2 | 3 |
5 | 7/2 | 3.5 |
6 | 8/2 | 4 |
Se la statistica di difesa di partenza moltiplicata per il numeratore della frazione di calo/aumento in difesa risultasse maggiore di 65535, si applica il modulo 65536 (difesa % 65536). (Nota: è possibile arrivare ad una statistica di difesa così alta solamente tramite hacking.)
Quindi, i modificatori di difesa rimasti sono concatenati insieme in questo ordine e il risultato finale viene applicato alla difesa di partenza prima di essere usato nella formula del danno di base.
Per calcolare la difesa finale si applica il modificatore concatenato alla difesa attuale. Più espressamente, si calcola il modificatore concatenandolo, poi si moltiplica la difesa attuale per il modificatore concatenato, si divide per 4096 e infine si utilizza pokeRound sul risultato. Se alla fine del calcolo il difensore si ritrovasse con difesa inferiore a 1, il gioco considera 1 come difesa in quel turno. Infine se la difesa risultasse maggiore di 65535, si applica il modulo 65536 (difesa % 65536). Se la statistica di difesa risultasse 0 a causa di quest'ultimo modulo, il risultato del danno di base sarà sempre 2.
Calcoliamo la Difesa Speciale finale di un Tyranitar in tempesta di sabbia, che ha una Assault Vest assegnata e attualmente a +1 in Difesa Speciale, con una statistica di Difesa Speciale iniziale di 121.
Si inizia applicando il +1 in Difesa Speciale: Floor(121*3/2) = Floor(181.5) = 181. Poi viene applicato il bonus della tempesta di sabbia, essendo Tyranitar di tipo Rock: pokeRound(181*6144/4096) = pokeRound(271.5) = 271.
Anche se Assault Vest tecnicamente è un moltiplicatore di difesa che andrebbe concatenato, poiché è l'unico modificatore che stiamo considerando in questo calcolo, è matematicamente equivalente alla sua applicazione diretta. pokeRound(271*6144/4096) = pokeRound(406.5) = 406.
Quindi questo Tyranitar ha una statistica di Difesa Speciale di partenza pari a 406. Se avessimo semplicemente moltiplicato tutte queste variabili contemporaneamente, avremmo avuto erroneamente una statistica di (121*1.5*1.5*1.5) = 408.375, cioè di 408. Ma 406 e 408 sono valori significativamente differenti! Questo esempio mette in luce i punti in cui bisogna stare attenti a come e dove arrotondare nello stesso modo in cui viene fatto nel gioco, o errori simili spunterebbero fuori.
I modificatori di Velocità vengono applicati non sono per i propositi dell'ordine del turno, ma anche per i calcoli con mosse come Gyro Ball e Electro Ball. Attualmente la nostra conoscenza su come funzionino i modificatori di Velocità è basata in larga parte sulla ricerca di DaWoblefet sull'argomento. Da notare come alcune cose potrebbero essere cambiate col passaggio dalla VII all'VIII Generazione.
I modificatori di Velocità non sono mai stati dataminati, infatti sono solo derivati empiricamente. È impossibile dimostrare se siano realmente concatenati come i modificatori di attacco e difesa. Ciononostante è davvero improbabile che non seguano le stesse convenzioni sul concatenamento dei modificatori cui ci siamo abituati in quest'articolo, quindi assumeremo che vengano concatenati.
Si inizia con la Velocità iniziale del Pokémon, poi si applicano questi effetti nell'ordine:
Livello | Frazione | Decimale |
-6 | 2/8 | 0.25 |
-5 | 2/7 | ~0.2857 |
-4 | 2/6 | ~0.3333 |
-3 | 2/5 | 0.4 |
-2 | 2/4 | 0.5 |
-1 | 2/3 | ~0.6667 |
0 | 2/2 | 1 |
1 | 3/2 | 1.5 |
2 | 4/2 | 2 |
3 | 5/2 | 2.5 |
4 | 6/2 | 3 |
5 | 7/2 | 3.5 |
6 | 8/2 | 4 |
Se la Velocità moltiplicata per il numeratore della frazione di calo/aumento in Velocità risultasse maggiore di 65535, si applica il modulo 65536 (Velocità % 65536). (Nota: è possibile arrivare ad una Velocità così alta solamente tramite hacking.)
Nota che Unaware non ignora i cali/aumenti in Velocità ai fini del calcolo di Gyro Ball / Electro Ball. Quindi, i modificatori di Velocità rimasti sono concatenati insieme in questo ordine e il risultato finale viene applicato alla Velocità difesa di partenza prima di essere usato nel calcolo di Gyro Ball / Electro Ball e nell'ordine del turno.
Per calcolare la Velocità finale si applica il modificatore concatenato alla Velocità attuale. Più espressamente, si calcola il modificatore concatenandolo, poi si moltiplica la Velocità attuale per il modificatore concatenato, si divide per 4096 e infine si utilizza pokeRound sul risultato. I modificatori di Velocità concatenati hanno un limite inferiore di 410/4096, guarda questo video per capire meglio come è possibile arrivare a questo valore. Poi:
Non c'è alcun check di Velocità a zero. Se la Velocità risultasse maggiore di 65535, si applica il modulo 65536 (Velocità % 65536). Poi ancora, se il Pokémon si ritrovasse con Velocità maggiore di 10000, il gioco considera 10000 come Velocità in quel turno. I calcoli della Velocità si fermano qui ai fini del calcolo del danno di Gyro Ball / Electro Ball.
Ai fini dell'ordine di attacco nel turno (che non è rilevante per il danno del calcolo, ma comunque interessante), si applicano ancora i seguenti passaggi:
La Velocità ottenuta alla fine di questi ultimi passaggi sarà la statistica di Velocità utilizzata ai fini dell'ordine di attacco nel turno. Guarda questo video per avere un'idea di come è possibile eludere il secondo passaggio in Trick Room. Nota che a causa delle velocità dinamiche introdotte in VIII Generazione, qualsiasi modifica alla priorità delle mosse (fatta eccezione per l'effetto di Stall, Quick Claw, Lagging Tail e Full Incense) o modificatore alle velocità dei Pokémon viene applicata istantaneamente, potenzialmente modificando l'ordine di attacco.
Calcoliamo la Velocità di un Landorus-T che ha una Choice Scarf assegnata, attualmente a -1 in Velocità e con una statistica di Velocità iniziale di 143.
Si inizia applicando il -1 in Velocità: Floor(143 * 2/3) = Floor(95.3333) = 95.
Poi si applicano i modificatori di Velocità. Nel nostro caso abbiamo solamente Choice Scarf. pokeRound(95 * 6144/4096) = pokeRound(142.5) = 142. Quindi un Landorus-T a -1 con Choice Scarf ha una statistica di Velocità di 142. Come puoi ben vedere, Choice Scarf e il calo a -1 non si "cancellano a vicenda", a causa dei differenti tipi di arrotondamento usati in ogni passaggio.
I modificatori del peso si applicano quando si calcola la potenza base di Low Kick / Grass Knot o di Heavy Slam / Heat Crash, o per determinare se un bersaglio può essere preso per effetto di Sky Drop*. La polvere e l'effetto sonoro che si sente quando un Pokémon entra in campo sono determinate dal peso, ma i modificatori non si applicano nella determinazione della dimensione della nuvola di polvere o del pitch dell'effetto sonoro. Il gioco tratta il peso internamente in chilogrammi. SadisticMystic si è occupato della ricerca sui modificatori del peso.
Iniziando dal peso di base, si applicano questi effetti in ordine:
Questo sarà il peso finale utilizzato nel calcolo della potenza base di Low Kick / Grass Knot o Heavy Slam / Heat Crash. Se il peso è minore di 200 kg, il difensore può essere preso per effetto di Sky Drop*.
I seguenti casi non determinano il loro danno richiamando la formula del danno, invece utilizzano altri metodi. Rispetteranno comunque le immunità di tipo (Super Fang non colpirà i tipi Ghost e Mirror Coat non colpirà i tipi Dark). Non c'è un ordine particolare da seguire in questa sezione, perché tratteremo le mosse singolarmente. Di conseguenza, troverete raggruppate mosse che si comportano in modo simile per differenziare un po' le prossime sezioni. Gli effetti che infliggono danno (o curano) in frazioni di HP massimi o che si basano sul calcolo degli HP, lo faranno calcolando gli HP originali di un Pokémon anche se questo è Dynamax o Gigamax secondo la formula: HP originali = floor(HP Dynamax / 2).
Contrattacchi - Se più mosse colpiscono l'utilizzatore di un contrattacco questo turno, il contrattacco avrà come bersaglio il Pokémon che ha colpito per ultimo l'utilizzatore del contrattacco (inclusi gli alleati).
Mosse che dipendono dagli HP del difensore - Se il difensore ha un Substitute, si utilizzano gli HP del Pokémon stesso per determinare il danno di queste mosse, non quelli del Substitute. Se il danno è uguale a 0, adesso è 1.
Mosse che dipendono dagli HP dell'attaccante
Pain Split: tecnicamente è una mossa di stato. Gli HP del difensore e dell'attaccante diventano uguali a floor((HP del difensore + HP dell'attaccante) / 2). Se il difensore è Dynamax o Gigamax, vengono considerati gli HP originali.
Mosse che dipendono da fattori misti - Queste mosse richiamano la formula del danno, ma non possono essere raggruppate in nessuna delle sezioni precedenti per via della peculiarità del loro funzionamento.
Mosse a danno fisso
Abilità che infliggono danno
Altro
Al livello 50, il danno di Psywave sarà sempre 25-75. Al livello 100, il danno di Psywave sarà sempre 50-150. Il danno minimo di Psywave è 1.
Finora abbiamo visto solo un tipo di overflow del danno: il check di danno a 65535 nei modificatori generici del danno. Abbiamo anche visto che potenza base, attacco e difesa si conformano a questo massimo di 65535, o rischiano di andare in overflow in numeri molto più piccoli. Ripetiamo, se una mossa farebbe più di 65535 di danno, il gioco applicherà il modulo 65536 (danno % 65536). Quindi per esempio, se una dovrebbe fare 65539 di danno, farebbe invece solamente (65539 % 65536) = 3 di danno. E ancora, se una mossa dovrebbe fare 196621 damage, farebbe invece solamente (196622 % 65536) = 14 di danno. Questa sorta di overflow del danno è in realtà esplicitamente definita dal gioco: "sta facendo questo tipo di overflow coscientemente". Tuttavia, esiste un altro tipo di overflow che non è definito nel gioco, ed è insito nelle limitazioni hardware di sistema. I prossimi paragrafi tratteranno di un esempio di overflow possibile fino alla VII Generazione. A partire dall'VIII Generazione, con l'implementazione del nuovo processore Nvidia Tegra X1 montato su Nintendo Switch, ancora non è stato possibile "bucare" la formula del danno con un overflow da 64-bit. Ma teoricamente è possibile farlo.
Il 3DS faceva i suoi calcoli matematici usando un processore ARM11, uscito nel 2005. Leggendo le sue specifiche, utilizzava esclusivamente registri a 32-bit. In computazione, i numeri sono rappresentati internamente come "1" e "0"; questi vengono chiamati "bit". Avere registri a 32-bit significa che puoi gestire 32 "1" e "0" per ogni calcolo. Poiché ci sono due possibili combinazioni per ogni numero, il numero più grande che è possibile computare a 32-bit è 2^32 - 1 (4294967295). 2^32 perché ci sono due possibilità e 32 bits; -1 perché bisogna includere 0 come numero da rappresentare.
Normalmente, sarebbe astronomicamente difficile raggiungere un ammontare di danni così alto. Prima della scoperta della Conservazione di Rollout, la speculazione sul danno massimo in Pokémon non poteva raggiungere nemmeno 1.5 miliardi (anche tralasciando il fatto che avevano sbagliato le meccaniche della formula, quindi in realtà il loro calcolo ammontava ad ancora meno di quanto speculato in questo post di Reddit). Ad ogni modo, la scoperta del glitch della Conservazione di Rollout ha aggiunto un ulteriore moltiplicatore di 32x da applicare a qualsiasi mossa si volesse, e le stime sul danno massimo sono schizzate a 20.6 miliardi. La scoperta della Conservazione di Rollout è arrivata prima della scoperta dell'overflow a 32-bit o di quello a 16-bit (65535), ma questo ha permesso al ricercatore SadisticMystic di effettuare una serie di test per documentarlo.
Ricordi che, nel corso di questa guida, i modificatori listati sono tutti scalati a 4096? Questo è uno dei motivi per cui l'overflow del danno a 32-bit può essere messo in atto. Prendiamo ad esempio il meteo: se il meteo è pioggia battente e la mossa è di tipo Water, si moltiplica per 6144 e poi divide per 4096. 6144 è molto più grande di qualcosa come 3/2! Significa che abbiamo "solo" bisogno di un danno uguale o maggiore di 699051 per raggiungere l'overflow di danno a 32-bit. 699051 è ancora piuttosto alto, ma non è nemmeno nel range del milione, quindi è decisamente ragionevole da raggiungere col giusto setup.
Per chiarificare, ecco un esempio di danno calcolato uguale a 699080 prima di applicare il meteo:
Quindi, a causa dell'overflow e di come sono rappresentati i modificatori, possiamo dire che 699080*"1.5" è uguale a 44.
Secondo il ricercatore SadisticMystic, questi sono i posti noti nella formula del danno in cui l'overflow a 32-bit è possibile (dovrebbe applicarsi a qualsiasi calcolo, in generale, ma questi in particolare sono stati dimostrati):
Per una dimostrazione con tanto di calcoli matematici utilizzati per arrivare all'overflow del danno a 32-bit (valido per i giochi fino alla VII Generazione), guarda i video di SadisticMystic o quello della collaborazione tra Wolfey e DaWoblefet.
Poiché il danno massimo è 65535, è molto più facile architettare i setup per ottenere il danno massimo. Consideriamo questo setup di un turno:
Con questi 4 Pokémon è possibile ottenere il danno massimo in un solo turno:
Controlliamo perché funziona! Iniziamo con le nostre variabili del danno di base. Abbiamo livello, potenza base, Attacco e Difesa:
Inserendo le nostre variabili nella formula del danno di base otteniamo questo:
E 65533 + 2 = 65535. Detto ciò, non ci sono altri modificatori da applicare a questo setup eccetto il roll random del danno. Tuttavia, ricordiamo che se la mossa colpisce il roll del danno più alto, il suo valore non cambierà (perché moltiplicare e poi dividere per 100 non cambierà il suo valore, e non siamo minimamente vicini al cutoff dei 32-bit per ottenere quel troncamento).
Colpire esattamente quel particolare roll del danno accadrà solo 1/16 delle volte, ma consideriamo che abbiamo appena raggiunto il massimo danno in Pokémon senza nemmeno utilizzare la statistica di attacco più alta del gioco e con una potenza base di appena 92! Molto peculiare. Sicuramente esisteranno setup in un turno per il danno massimo anche per le lotte in Singolo. Se siete a conoscenza di uno che funzioni 1/16 delle volte o più, contattate direttamente DaWoblefet, sarà felice di conoscerlo e darvi credito.
Abbiamo visto come ottenere il danno massimo usando un Pokémon al livello 100 e uno al livello 1. Troppo facile così, no? E poi stavamo usando una mossa con una potenza base davvero particolare che in VIII Generazione nemmeno esiste più. Così son bravi tutti eh!
Io e ToonGamer ci siamo messi di impegno e in 20 minuti netti abbiamo trovato una combinazione che è ricreabile anche nello Stadio Lotta di Pokémon Spada e Scudo. Nello specifico noi volevamo ricreare il danno "minimo" facendo andare la formula del danno in overflow da 16-bit (applicando quindi il modulo 65536). L'esempio qui riportato è uno dei tanti possibili: prima e dopo di trovare questo calcolo, molto facile da ricreare, ne abbiamo trovati altri con Charizard e Kartana/Durant. Provateci anche voi col calcolatore di Pokémon Showdown: se uno dei roll di un danno è uguale a 65536 o multipli, allora l'overflow troncherà il danno, portandolo a 0.
Il setup in questo caso richiede 4 turni: i due Crobat utilizzano Screech su Wingull e Swagger su Dracozolt finché Wingull non è a -6 in Difesa e Dracozolt a +6 in Attacco. Poi Dracozolt utilizza Bolt Beak su Wingull.
Anche qui, controlliamo perché funziona! Iniziamo con le nostre variabili del danno di base. Abbiamo livello, potenza base, Attacco e Difesa:
Inserendo le nostre variabili nella formula del danno di base otteniamo questo:
Il nostro danno di base è dunque 12004. Passiamo al calcolo dei roll applicando la formula che abbiamo imparato al punto 4 dei modificatori generici del danno. Verranno generati 16 roll: 10203, 10323, 10443, 10563, 10683, 10803, 10923, 11043, 11163, 11283, 11403, 11523, 11643, 11763, 11883, 12004.
Applichiamo lo STAB ad ogni roll: pokeRound(roll*6144/4096) = 15304, 15484, 15664, 15844, 16024, 16204, 16384, 16564, 16744, 16924, 17104, 17284, 17464, 17644, 17824, 18006.
Ora anche il moltiplicatore da debolezza: roll*4 = 61216, 61936, 62656, 63376, 64096, 64816, 65536, 66256, 66976, 67696, 68416, 69136, 69856, 70576, 71296, 72024.
Bingo!!! Uno di questi sedici roll (quello con Fattore Random = 9) ci dà proprio il risultato che stiamo cercando! Colpire esattamente quel particolare roll del danno accadrà solo 1/16 delle volte... Ma questo significa comunque che abbiamo raggiunto il nostro obiettivo: è possibile ottenere esattamente quel numero magico al livello 50 anche in questa Generazione! Cosa significa questo informaticamente? Che il gioco applicando il check del danno massimo si ritroverà con un numero a 17 bits (65536 in binario è uguale a 1 0000 0000 0000 0000) e troncherà il bit più a sinistra, ritrovandosi solamente con 16 zeri. Matematicamente parlando questo è uguale a fare il modulo: (65536 % 65536) = 0. Guarda questo video sul canale Orpo Team o su quello di ToonGamer per una visuale da entrambe le prospettive.
Anche se non è pratica da capire per un match di VGC medio, una conoscenza generale della formula del danno può essere utile per capire e spiegare alcuni fenomeni e per analizzare dei trend nei calcoli del danno. Essere familiari su come funziona il calcolo significa che tu possa verificare se un calcolatore stia funzionando come dovrebbe funzionare, e tu possa aiutare a contribuire nel caso sorgano delle inconsistenze tra ciò che accade su cartuccia e ciò che accade sul calcolatore o sul simulatore. Infine, credo che sia divertente esplorare come funzionino tutti gli aspetti interni del gioco; capire la matematica dietro la formula del danno può essere una sfida, ma è interessante e figo saper scrivere su carta il danno esatto che una mossa può fare. Ringraziamenti speciali a SadisticMystic, che è stato un pozzo di risorse e ha risposto a domande tecniche sulla formula del danno. Un ringraziamento particolare va a ToonGamer per la disponibilità nel fare calcoli e video nell'ultima fase della stesura di questo articolo, e a GaspVGC per aver aiutato con le grafiche del video. Infine, un GRAZIE grande come una casa a DaWoblefet per avermi permesso di usare il suo compendio. Se avete letto fin qui, grazie anche a voi! Spero vi sia piaciuto!
Quest'articolo è stato tradotto nella sua interezza dall'originale di DaWoblefet (in inglese) con il permesso dell'autore da Morbuen, pertanto potrebbero esserci alcuni errori dovuti alla barriera linguistica. Il testo, originariamente stilato tenendo in mente le meccaniche fino alla VII Generazione, è stato arricchito con le novità introdotte coi giochi di VIII Generazione.