Перейти к содержимому

JSON della rotazione

Aggiornato il 18/10/2026

Il JSON è la descrizione completa di una rotazione avanzata: tutto ciò che contiene il testo KRC, più gli ID degli incantesimi, i flag degli slot e le impostazioni del profilo. L'editor lo mostra nella pagina Testo e JSON e KeyRota lo accetta come file (Nuovo — Da file…, Importa). Il formato si chiama keyrota-rotation, versione 1. Per verificarlo c'è uno schema JSON.

File di esempio#

La rotazione utile più breve: Perforazione con 5+ punti combo quando non è sul bersaglio, altrimenti Mutilazione.

minimal.json
{
  "format": "keyrota-rotation",
  "version": 1,
  "title": "Assassinio: minimo",
  "specID": 259,
  "resources": ["PlayerHP", "TargetHP", "Energy", "Combo_Points"],
  "auras": [{"n": 1, "alias": "Rupture_DoT", "label": "Perforazione sul bersaglio [1943]", "spell": 1943}],
  "slots": [
    {"n": 2, "alias": "Rupture", "label": "Perforazione", "spell": 1943},
    {"n": 4, "alias": "Mutilate", "label": "Mutilazione", "spell": 1329}
  ],
  "rules": [
    {
      "use": "Rupture",
      "name": "Perforazione",
      "when": [{"all": ["Combo_Points >= 70", "Rupture_DoT.down"], "comment": "5+ punti combo, nessun sanguinamento"}]
    },
    {"use": "Mutilate", "name": "Mutilazione"}
  ]
}

Tutto ciò che il file omette assume il valore predefinito: gli slot vengono mostrati Con bersaglio e non hanno flag, il contatore dei nemici è di 8 metri e conta solo i nemici in combattimento. Una regola senza when è sempre soddisfatta.

Campi di primo livello#

CampoTipoObbligatorioPredefinitoCos'è
formatstringasì—Sempre "keyrota-rotation".
versioninterosì—Sempre 1. Una versione più recente viene rifiutata: «aggiornala».
titlestringano""Nome della rotazione: la prima riga del testo, il nome nel registro. Senza virgolette doppie.
specIDintero 0–100000no0Specializzazione di WoW, 0 = qualsiasi. Serve per il profilo di Better Assistant.
ignoreMainIcontrue / falsenotrueAttivo: preme solo secondo le regole. Disattivo: quando nessuna regola è soddisfatta, preme il suggerimento del gioco.
enemiesoggettono{"range": 8, "combatOnly": true}Il contatore dei nemici per la condizione enemies.
notesstringa o elenco di stringheno[]Descrizione: le righe # all'inizio del testo.
resourceselenco di stringhe e nullno[]Nomi di resource1…N, in ordine.
auraselencono[]Aure buff1…12.
slotselencono[]Slot slot1…12.
ruleselencono[]Regole in ordine di priorità.
footerstringa o elenco di stringheno[]Commenti dopo l'ultima regola.

Qualsiasi altro campo è un errore, «campo superfluo»: gli errori di battitura non passano inosservati. Per questo non aggiungere "$schema" al file: collega lo schema nel tuo editor o validatore.

Quasi ovunque al posto di un valore puoi usare null, che equivale a omettere il campo.

format e version#

"format": "keyrota-rotation" e "version": 1 sono obbligatori. Se version è maggiore di 1, KeyRota rifiuta il file: «la versione 2 è più recente di quanto supporti questa KeyRota: aggiornala». Senza version: «serve la versione 1».

title#

Una stringa senza virgolette doppie ". Gli a capo diventano spazi. Nel testo KRC è rotation "…". È un buon posto per la versione: "Assassinio v1.3".

specID#

L'ID della specializzazione nel gioco. Determina le risorse della rotazione (quando viene creata nell'editor) e la classe e la specializzazione nel profilo di Better Assistant. 0 significa qualsiasi specializzazione: la rotazione funziona, ma il profilo di Better Assistant non viene creato («Scegli una specializzazione: serve al profilo di Better Assistant»).

ClasseSpecializzazionespecIDRisorse della specializzazione (resource3…)
GuerrieroArmi71Rage
GuerrieroFuria72Rage
GuerrieroProtezione73Rage
PaladinoSacro65Mana, Holy_Power
PaladinoProtezione66Mana, Holy_Power
PaladinoCastigo70Mana, Holy_Power
CacciatoreAffinità Animale253Focus
CacciatorePrecisione di Tiro254Focus
CacciatoreSopravvivenza255Focus
LadroAssassinio259Energy, Combo_Points
LadroFuorilegge260Energy, Combo_Points
LadroScaltrezza261Energy, Combo_Points
SacerdoteDisciplina256Mana, Insanity
SacerdoteSacro257Mana, Insanity
SacerdoteOmbra258Mana, Insanity
Cavaliere della MorteSangue250Runes, Runic_Power
Cavaliere della MorteGelo251Runes, Runic_Power
Cavaliere della MorteEmpietà252Runes, Runic_Power
SciamanoElementale262Mana, Maelstrom
SciamanoPotenziamento263Mana, Maelstrom
SciamanoRigenerazione264Mana, Maelstrom
MagoArcano62Mana, Arcane_Charges
MagoFuoco63Mana, Arcane_Charges
MagoGelo64Mana, Arcane_Charges
StregoneAfflizione265Mana, Soul_Shards
StregoneDemonologia266Mana, Soul_Shards
StregoneDistruzione267Mana, Soul_Shards
MonacoMastro Birraio268Energy, Stagger
MonacoMisticismo270Mana
MonacoImpeto269Energy, Chi
DruidoEquilibrio102Mana, Astral_Power
DruidoAggressore Ferino103Energy, Combo_Points
DruidoGuardiano Ferino104Rage
DruidoRigenerazione105Mana, Astral_Power
Cacciatore di DemoniRovina577Fury
Cacciatore di DemoniVendetta581Fury
Cacciatore di DemoniDivoratore1480Fury
EvocatoreDevastazione1467Mana, Essence
EvocatoreConservazione1468Mana, Essence
EvocatoreFortificazione1473Mana, Essence

ignoreMainIcon#

true (predefinito): KeyRota preme solo secondo le regole; quando nessuna è soddisfatta, attende. false: in quel caso preme il suggerimento del gioco, come il profilo Blizzard. Il suggerimento è l'ultima risorsa dopo tutte le regole: non scavalca mai una regola.

enemies#

JSON
"enemies": {"range": 8, "combatOnly": true}
CampoTipoPredefinitoCos'è
rangeintero 1–1008Il raggio del contatore dei nemici, in metri.
combatOnlytrue / falsetrueConta solo i nemici già in combattimento.

La condizione enemies legge questo contatore (vedi Nemici vicini). Nell'editor corrispondono a «Raggio del contatore dei nemici, metri» e «Solo nemici in combattimento» nella pagina Generale. I valori finiscono anche nel profilo di Better Assistant.

notes e footer#

La descrizione della rotazione (notes) e i commenti dopo l'ultima regola (footer). Un elenco di stringhe oppure una sola stringa con \n. Una stringa vuota "" è una riga vuota nel testo. Le righe vuote all'inizio e alla fine vengono eliminate.

JSON
"notes": ["Basata su una guida e sui migliori log, patch 12.1", "", "v1.1: Affondo Venefico prima con 4+ bersagli"]

Nel testo KRC sono le righe # … prima delle dichiarazioni. Non influiscono sul funzionamento della rotazione.

resources#

I nomi delle risorse in ordine: il primo elemento è resource1, il secondo resource2 e così via. È il numero a determinare la risorsa; il nome è solo il modo in cui la scrivi nelle condizioni:

  • resource1 è la salute del giocatore, resource2 la salute del bersaglio;
  • da resource3 in poi ci sono le risorse della specializzazione, nell'ordine della tabella degli specID: per un ladro resource3 è l'energia, resource4 i punti combo.
JSON
"resources": ["PlayerHP", "TargetHP", "Energy", "Combo_Points"]

Usa i nomi standard della tabella: l'editor li mostra a parole («Salute del giocatore», «Energia») e altre persone e agenti IA capiscono subito le condizioni. null salta un numero: ["PlayerHP", null, "Energy"] dichiara solo resource1 e resource3. Una risorsa non dichiarata non si può leggere: «resource2 non dichiarato».

Tutte le risorse sono percentuali del massimo, da 0 a 100. Come convertire in percentuale punti combo, energia e rune: Risorse nella pagina Condizioni.

auras#

Le aure sono i tuoi benefici e le tue penalità sul bersaglio. L'aura n della rotazione è l'aura n dell'elenco di Better Assistant.

CampoTipoObbligatorioPredefinitoCos'è
nintero 1–12sì—Numero dell'aura (buffN). Ogni numero una sola volta.
aliasstringanoda labelIl nome nelle condizioni. Vedi Nomi.
labelstringano""Nome visualizzato. Senza virgolette doppie ". Comodo con l'ID tra parentesi: "Garrota sul bersaglio [703]".
spellintero 0–100000000no0L'ID dell'aura su Wowhead. 0 = non impostato: l'aura non sarà nel profilo di Better Assistant e sarà sconosciuta.
notestringano""Un commento alla fine della riga di dichiarazione.
JSON
"auras": [
  {"n": 1, "alias": "Garrote_DoT", "label": "Garrota sul bersaglio [703]", "spell": 703},
  {"n": 2, "alias": "Rupture_DoT", "label": "Perforazione sul bersaglio [1943]", "spell": 1943}
]

Conta n, non l'ordine nell'elenco. I numeri possono avere dei buchi, ma per il profilo di Better Assistant le aure con ID devono andare in fila a partire dalla prima.

slots#

Gli slot sono i pulsanti della rotazione. Lo slot n della rotazione è lo slot n di Better Assistant.

CampoTipoObbligatorioPredefinitoCos'è
nintero 1–12sì—Numero dello slot (slotN).
aliasstringanoda labelIl nome nelle regole e nelle condizioni.
labelstringano""Il nome dell'incantesimo. Senza virgolette doppie ".
spellintero 0–100000000no0L'ID dell'incantesimo su Wowhead. Better Assistant lo usa per mettere l'incantesimo nello slot.
notestringano""Un commento alla fine della riga di dichiarazione.
show"target" / "combat"no"target"Quando Better Assistant mostra lo slot.
manualtrue / falsenofalseFlag M.
channeltrue / falsenofalseFlag C.
offGcdtrue / falsenofalseFlag O.
queuetrue / falsenofalseFlag Q, solo con offGcd.

show#

  • "target": lo slot viene mostrato quando hai un bersaglio. Vale per quasi tutti gli attacchi.
  • "combat": lo slot viene mostrato in combattimento anche senza bersaglio. Per cure e difese: Fiala Cremisi deve funzionare anche quando non c'è un bersaglio.

Uno slot è pronto solo quando Better Assistant lo mostra. Uno slot "target" senza bersaglio non è pronto e le sue regole vengono saltate.

Flag degli slot#

I flag indicano come premere uno slot una volta scelta la sua regola. Nell'editor corrispondono agli interruttori Come premere.

FlagNel JSONCome viene premutoEsempio
nessunotutti falseNella finestra di coda alla fine del GCD: l'incantesimo parte non appena il GCD termina.Mutilazione, Affondo Venefico
M"manual": trueMai. Le regole dello slot vengono saltate. Se premi tu il suo tasto, la rotazione va in pausa.Un'abilità che premi tu
C"channel": trueCome un incantesimo normale; mentre la canalizzazione è in corso, non viene premuto nulla. Dopo la pressione lo slot non viene premuto di nuovo finché la canalizzazione non inizia.Furia Omicida (51690)
O"offGcd": trueSubito, anche a metà del GCD.Roulette Eterna (381989)
O + Q"offGcd": true, "queue": trueFuori GCD, ma solo nella finestra di coda alla fine del GCD.La macro Scarica d'Adrenalina + Furia Omicida (13750); Sparizione (1856) dopo Rovina dei Re
C + O"channel": true, "offGcd": trueUna canalizzazione che parte fuori GCD: subito, poi nulla finché la canalizzazione non termina.Raro
C + O + Qtutti e treCome sopra, nella finestra di coda.Raro
Q senza O"queue": trueErrore: «queue va solo insieme a offGcd».—
M + altri"manual": true, …Prevale M: lo slot non viene premuto, gli altri flag non contano.—

Perché O + Q e non solo O: un pulsante con il solo flag O viene premuto subito, a metà del GCD, prima che il colpo precedente sia andato a segno. Con il solo flag O, Sparizione dopo Rovina dei Re verrebbe premuta prima che arrivino i punti combo di Rovina dei Re, e la regola di Sparizione (Combo_Points < 65) controllerebbe il valore vecchio. Con Q il pulsante attende la fine del GCD.

Priorità rigorosa: una regola fuori GCD più in basso nell'elenco non scavalca una regola più in alto che attende il GCD.

JSON
"slots": [
  {"n": 1, "alias": "Adrenaline_Rush", "label": "Scarica d'Adrenalina (macro con Furia Omicida)", "spell": 13750, "offGcd": true, "queue": true},
  {"n": 4, "alias": "Keep_It_Rolling", "label": "Roulette Eterna", "spell": 381989, "offGcd": true},
  {"n": 8, "alias": "Killing_Spree", "label": "Furia Omicida", "spell": 51690, "channel": true},
  {"n": 11, "alias": "Crimson_Vial", "label": "Fiala Cremisi", "spell": 185311, "show": "combat"}
]

rules#

Le regole in ordine di priorità: la prima dell'elenco viene controllata per prima.

CampoTipoObbligatorioPredefinitoCos'è
usestringasì—Lo slot da premere: il suo alias o slotN.
namestringano""Il nome dell'azione, mostrato nel registro. Nel testo è il commento sulla riga use.
notestringa o elenco di stringheno[]Note sopra la regola (righe # prima di use).
whenelenco di gruppino[]Gruppi OR. Vuoto o assente: una regola senza condizioni, premuta ogni volta che l'incantesimo si può usare.

when: gruppi e condizioni#

CampoTipoObbligatorioCos'è
allelenco non vuoto di stringhesìLe condizioni del gruppo: devono essere tutte vere (AND).
commentstringanoIl commento del gruppo (nel testo, alla fine della sua riga).
JSON
{
  "use": "Garrote",
  "name": "Garrota",
  "note": ["Rinnovo nella finestra di pandemia"],
  "when": [
    {"all": ["Garrote_DoT.down"], "comment": "nessun DoT"},
    {"all": ["Garrote_DoT.up", "Garrote_DoT.duration <= 30"], "comment": "resta il 30% o meno"}
  ]
}

Uno slot può comparire in più regole: per esempio Garrota dalla furtività in alto nell'elenco e il normale mantenimento di Garrota più in basso.

Condizioni nel JSON#

Ogni condizione è una stringa con la sintassi KRC: Garrote_DoT.down, Rupture_DoT.duration <= 25, Kingsbane.cd <= 3, Combo_Points >= 70, enemies >= 2, target.distance <= 8, cd == 1. L'elenco completo è in Condizioni.

  • Fai riferimento per nome (Garrote_DoT) o per numero: buff1, slot3, resource4.
  • and all'interno di una stringa la divide in due condizioni: "Combo_Points >= 70 and Energy >= 70" sono due condizioni, ed entrambe contano per il limite di 16.
  • Niente # né a capo in una stringa.
  • Le condizioni vengono lette dal motore di KeyRota stesso, quindi il JSON e il testo hanno sempre lo stesso significato.

Nomi#

Un nome (alias) è il modo in cui aure, slot e risorse vengono chiamati nelle condizioni e in use.

  • Il primo carattere è una lettera (di qualsiasi alfabeto) o _; poi lettere, cifre 0–9 e _. Le lettere accentate e di altri alfabeti vanno bene; spazi, trattini e punti no: Fan_of_Knives, non Fan-of-Knives.
  • Un nome è unico tra tutte le aure, gli slot e le risorse.
  • Riservati: use, when, and, or, rotation, gcd, enemies, target, aoe, st, cd, defensives, ground_spells, movement e i nomi come buffN, slotN, resourceN.
  • Le parole chiave vanno solo in minuscolo: use, or, .up. Use, OR e .UP sono errori.

Un nome dall'etichetta. Senza alias, KeyRota ne crea uno da label: le parentesi quadre e il loro contenuto vengono eliminati, lettere e cifre restano, tutto il resto diventa _. Per esempio, "Garrota sul bersaglio [703]" diventa Garrota_sul_bersaglio. Un nome vuoto o inutilizzabile diventa Aura_N o Slot_N; un nome già usato riceve _2, _3. Se una regola fa riferimento a buffN o slotN assenti dagli elenchi, vengono dichiarati automaticamente come Aura_N e Slot_N.

Campi obbligatori e valori predefiniti#

DoveObbligatoriValori predefiniti
Fileformat, versiontitle "", specID 0, ignoreMainIcon true, enemies {"range": 8, "combatOnly": true}, elenchi vuoti
Auranalias da label, label "", spell 0
Slotnshow "target", tutti i flag false, spell 0
Regolausename "", note [], when [] (nessuna condizione)
Gruppoall (non vuoto)comment ""

Limiti#

CosaLimite
Aure12 (n 1–12)
Slot12 (n 1–12)
Gruppi OR in una regola16
Condizioni AND in un gruppo16
Regoleillimitate
Numero in una condizioneintero 0–100
enemies.range1–100
spell0–100000000
specID0–100000
Risorsefino a 99

Esattamente 16 gruppi da 16 condizioni va bene; 17 è un errore.

Errori#

Una rotazione con un errore non viene caricata affatto: non esiste un'esecuzione parziale. Un errore indica sempre il punto. Nel JSON è un percorso: rules[3].when[1]: nome sconosciuto Foo (numerazione da zero). Nell'editor: «Regola 4, gruppo 2: nome sconosciuto Foo» (numerazione da uno). Nel testo KRC, un numero di riga.

Struttura del JSON:

MessaggioCausa
campo superfluo «offgcd»Un campo scritto male o sconosciuto (le maiuscole contano: offGcd).
manca il campo «format»Manca un campo obbligatorio.
format: atteso «keyrota-rotation»Un altro valore di format.
version: serve la versione 1Manca version oppure è minore di 1.
slots[0]: manca il numero n (1–12)Uno slot o un'aura senza n.
slots[2].n: numero fuori da 1..12n fuori intervallo.
slots[3]: il numero 4 è già occupatoDue slot (o due aure) con lo stesso n.
slots[1].show: atteso «target» o «combat»Un altro valore di show.
slots[0]: queue va solo insieme a offGcdqueue: true senza offGcd: true.
rules[2].use: non esiste lo slot «Garotte»use fa riferimento a uno slot che non esiste.
rules[0].when[1].all: serve un elenco di condizioni non vuotoUn gruppo vuoto o senza all.
rules[0].when[0].all[2]: condizione vuota o con # o a capoUna stringa di condizione vuota, o con #.
….spell: atteso un numero interoTipo sbagliato: una stringa invece di un numero, true invece di un numero e così via.

Condizioni e dichiarazioni (come nel testo KRC):

CodiceEsempio di messaggioCausa
unknown_refnome sconosciuto FooNessuna aura, slot o risorsa con quel nome.
unknown_refresource5 non dichiaratoLa risorsa non è dichiarata in resources.
wrong_kindGarrote è di tipo slot, ma serve buffUna proprietà da aura su uno slot (Garrote.up) o viceversa.
bad_conditioncondizione non interpretabile "Energy => 50"Un errore di battitura nella condizione o nell'operatore.
bad_condition"Garrote.distance <= 8": distance esiste solo per targetSolo il bersaglio ha una distanza.
value_rangeil valore 120 è fuori da 0..100Un numero maggiore di 100. Non esistono numeri negativi o decimali.
toggle_value"cd >= 1": un interruttore accetta solo == 0 o == 1Un interruttore si confronta solo con == e 0 o 1.
bad_aliasnome non consentito Fan-of-KnivesCaratteri non validi in un nome.
reserved_aliasil nome cd è riservatoUn nome riservato.
duplicate_aliasil nome Garrote è già dichiaratoDue aure, slot o risorse con lo stesso nome.
index_rangebuff13: numero fuori da 1..12Un riferimento a un numero maggiore di 12.
too_many_groupspiù di 16 gruppi ORPiù di 16 gruppi in una regola.
too_many_conditions17 condizioni nel gruppo (massimo 16)Più di 16 condizioni in un gruppo.

L'editor segnala anche «il gruppo non ha condizioni» (un gruppo vuoto), «nessuno slot selezionato» e «il nome non può contenere virgolette».

Testo KRC#

Il testo KRC è la stessa rotazione scritta in righe. La pagina Testo e JSON lo mostra e puoi conservarlo in un file .txt. Testo e JSON si convertono l'uno nell'altro senza perdere significato.

Testo KRC
rotation "Assassinio: minimo"

buff1	Rupture_DoT = "Perforazione sul bersaglio [1943]"
slot2	Rupture = "Perforazione"
slot4	Mutilate = "Mutilazione"
resource1	PlayerHP
resource2	TargetHP
resource3	Energy
resource4	Combo_Points

use Rupture when  # Perforazione
	Combo_Points >= 70 and Rupture_DoT.down  # 5+ punti combo, nessun sanguinamento

use Mutilate when  # Mutilazione

Righe#

  • # fuori dalle virgolette doppie inizia un commento che arriva fino alla fine della riga. All'interno di un "label", # è un carattere normale.
  • Le righe vuote e quelle con solo un commento vengono saltate: è così che si scrivono descrizioni e separatori.
  • Ogni altra riga è una dichiarazione, use, or o una riga di condizioni. Altrimenti è un errore stray_line: «riga fuori da una regola: "…" (il testo libero deve iniziare con #)».
  • Tra le parti puoi mettere spazi e tabulazioni a piacere. La forma canonica usa una tabulazione dopo buffN/slotN e all'inizio delle righe di condizioni.

Dichiarazioni#

Solo prima del primo use:

Testo KRC
rotation "Nome"                    # facoltativo, al massimo una volta
buff1	Garrote_DoT = "Garrota sul bersaglio [703]"   # aura 1
slot1	Garrote = "Garrota"                         # slot 1
resource1	PlayerHP                               # risorsa 1

buffN e slotN vanno da 1 a 12, resourceN da 1 a 99. L'etichetta tra virgolette può essere vuota: slot5 Filler = "". Una dichiarazione dopo il primo use è un errore late_declaration.

Regole#

Testo KRC
use Rupture when  # Perforazione
	Combo_Points >= 70 and Rupture_DoT.down  # nessun DoT
	or
	Combo_Points >= 70 and Rupture_DoT.up and Rupture_DoT.duration <= 30  # pandemia
  • use Slot when apre una regola; un commento su questa riga è il nome dell'azione.
  • Ogni riga di condizioni è un gruppo (condizioni unite con and). I gruppi sono separati da una riga con la sola parola or.
  • Una regola senza righe di condizioni non ha condizioni.
  • Due righe di condizioni di fila senza or sono un errore split_group; or all'inizio, alla fine o due volte di fila è empty_group.

Testo e JSON: le corrispondenze#

Nel testoNel JSON
rotation "…"title
Righe # … prima del primo usenotes
Un commento alla fine di una riga buffN / slotNIl note dell'aura / dello slot
Righe # … subito prima di use (e tra i gruppi della regola)Il note della regola
Un commento sulla riga useIl name della regola
Un commento alla fine di una riga di condizioniIl comment del gruppo
Righe # … dopo l'ultima regolafooter
— (non presente nel testo)specID, ignoreMainIcon, enemies, spell, show, flag

Le righe vuote all'inizio e alla fine dei blocchi di commento vengono eliminate; quelle interne restano come "".

Importazione e archiviazione#

  • KeyRota conserva la rotazione all'interno del profilo. Esporta, nella finestra principale, salva il profilo di KeyRota (JSON) con la sua rotazione; Importa accetta un profilo di KeyRota e il solo JSON di una rotazione.
  • Nuovo — Da file… accetta un .txt con testo KRC, il JSON di una rotazione e un profilo di KeyRota; Nuovo — Dagli appunti, gli stessi contenuti dagli appunti.
  • Nell'editor: Testo e JSON — Incolla o Apri… sostituiscono la rotazione; gli slot e le aure con lo stesso numero mantengono ID, Con bersaglio / In combattimento e flag se la nuova versione non li specifica.
  • Una rotazione in formato testo (senza JSON) prende gli ID e la visibilità degli slot dal profilo di Better Assistant già salvato nel profilo di KeyRota, e gli ID delle aure anche dai contrassegni come [703] nelle loro etichette.

Il profilo di Better Assistant dal JSON#

«Crea da slot e aure» nell'editor genera la stringa del profilo di Better Assistant dal JSON della rotazione:

  • 12 slot: lo slot N è slots[n = N].spell, mostrato secondo show. Uno slot senza ID resta vuoto.
  • Aure in ordine a partire dalla prima: auras[n = 1].spell, auras[n = 2].spell… Un'aura senza ID nel mezzo è un errore.
  • Classe e specializzazione da specID.
  • Contatore dei nemici da enemies.range e enemies.combatOnly.
  • Se il profilo di KeyRota contiene già un profilo di Better Assistant della stessa specializzazione, le sue altre impostazioni e gli slot e le aure corrispondenti vengono mantenuti.

Nel gioco: /ba — Profile — incolla — Apply.

Schema JSON#

Lo schema del formato: keyrota-rotation.schema.json (draft 2020-12). Verifica campi, tipi, intervalli, queue senza offGcd e la forma delle stringhe di condizione. Non verifica che n e i nomi siano unici, che i nomi usati nelle condizioni esistano, né il limite di 16 dopo la divisione delle stringhe in corrispondenza di and : lo fa KeyRota al caricamento.

Per verificare un file:

Testo
npx ajv-cli validate --spec=draft2020 -s keyrota-rotation.schema.json -d my-rotation.json

Non inserire un campo "$schema" in un file di rotazione: KeyRota lo considera un campo superfluo.