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.
{
"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#
| Campo | Tipo | Obbligatorio | Predefinito | Cos'è |
|---|---|---|---|---|
format | stringa | sì | — | Sempre "keyrota-rotation". |
version | intero | sì | — | Sempre 1. Una versione più recente viene rifiutata: «aggiornala». |
title | stringa | no | "" | Nome della rotazione: la prima riga del testo, il nome nel registro. Senza virgolette doppie. |
specID | intero 0–100000 | no | 0 | Specializzazione di WoW, 0 = qualsiasi. Serve per il profilo di Better Assistant. |
ignoreMainIcon | true / false | no | true | Attivo: preme solo secondo le regole. Disattivo: quando nessuna regola è soddisfatta, preme il suggerimento del gioco. |
enemies | oggetto | no | {"range": 8, "combatOnly": true} | Il contatore dei nemici per la condizione enemies. |
notes | stringa o elenco di stringhe | no | [] | Descrizione: le righe # all'inizio del testo. |
resources | elenco di stringhe e null | no | [] | Nomi di resource1…N, in ordine. |
auras | elenco | no | [] | Aure buff1…12. |
slots | elenco | no | [] | Slot slot1…12. |
rules | elenco | no | [] | Regole in ordine di priorità. |
footer | stringa o elenco di stringhe | no | [] | 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»).
| Classe | Specializzazione | specID | Risorse della specializzazione (resource3…) |
|---|---|---|---|
| Guerriero | Armi | 71 | Rage |
| Guerriero | Furia | 72 | Rage |
| Guerriero | Protezione | 73 | Rage |
| Paladino | Sacro | 65 | Mana, Holy_Power |
| Paladino | Protezione | 66 | Mana, Holy_Power |
| Paladino | Castigo | 70 | Mana, Holy_Power |
| Cacciatore | Affinità Animale | 253 | Focus |
| Cacciatore | Precisione di Tiro | 254 | Focus |
| Cacciatore | Sopravvivenza | 255 | Focus |
| Ladro | Assassinio | 259 | Energy, Combo_Points |
| Ladro | Fuorilegge | 260 | Energy, Combo_Points |
| Ladro | Scaltrezza | 261 | Energy, Combo_Points |
| Sacerdote | Disciplina | 256 | Mana, Insanity |
| Sacerdote | Sacro | 257 | Mana, Insanity |
| Sacerdote | Ombra | 258 | Mana, Insanity |
| Cavaliere della Morte | Sangue | 250 | Runes, Runic_Power |
| Cavaliere della Morte | Gelo | 251 | Runes, Runic_Power |
| Cavaliere della Morte | Empietà | 252 | Runes, Runic_Power |
| Sciamano | Elementale | 262 | Mana, Maelstrom |
| Sciamano | Potenziamento | 263 | Mana, Maelstrom |
| Sciamano | Rigenerazione | 264 | Mana, Maelstrom |
| Mago | Arcano | 62 | Mana, Arcane_Charges |
| Mago | Fuoco | 63 | Mana, Arcane_Charges |
| Mago | Gelo | 64 | Mana, Arcane_Charges |
| Stregone | Afflizione | 265 | Mana, Soul_Shards |
| Stregone | Demonologia | 266 | Mana, Soul_Shards |
| Stregone | Distruzione | 267 | Mana, Soul_Shards |
| Monaco | Mastro Birraio | 268 | Energy, Stagger |
| Monaco | Misticismo | 270 | Mana |
| Monaco | Impeto | 269 | Energy, Chi |
| Druido | Equilibrio | 102 | Mana, Astral_Power |
| Druido | Aggressore Ferino | 103 | Energy, Combo_Points |
| Druido | Guardiano Ferino | 104 | Rage |
| Druido | Rigenerazione | 105 | Mana, Astral_Power |
| Cacciatore di Demoni | Rovina | 577 | Fury |
| Cacciatore di Demoni | Vendetta | 581 | Fury |
| Cacciatore di Demoni | Divoratore | 1480 | Fury |
| Evocatore | Devastazione | 1467 | Mana, Essence |
| Evocatore | Conservazione | 1468 | Mana, Essence |
| Evocatore | Fortificazione | 1473 | Mana, 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#
"enemies": {"range": 8, "combatOnly": true}
| Campo | Tipo | Predefinito | Cos'è |
|---|---|---|---|
range | intero 1–100 | 8 | Il raggio del contatore dei nemici, in metri. |
combatOnly | true / false | true | Conta 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.
"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,resource2la salute del bersaglio;- da
resource3in poi ci sono le risorse della specializzazione, nell'ordine della tabella degli specID: per un ladroresource3è l'energia,resource4i punti combo.
"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.
| Campo | Tipo | Obbligatorio | Predefinito | Cos'è |
|---|---|---|---|---|
n | intero 1–12 | sì | — | Numero dell'aura (buffN). Ogni numero una sola volta. |
alias | stringa | no | da label | Il nome nelle condizioni. Vedi Nomi. |
label | stringa | no | "" | Nome visualizzato. Senza virgolette doppie ". Comodo con l'ID tra parentesi: "Garrota sul bersaglio [703]". |
spell | intero 0–100000000 | no | 0 | L'ID dell'aura su Wowhead. 0 = non impostato: l'aura non sarà nel profilo di Better Assistant e sarà sconosciuta. |
note | stringa | no | "" | Un commento alla fine della riga di dichiarazione. |
"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.
| Campo | Tipo | Obbligatorio | Predefinito | Cos'è |
|---|---|---|---|---|
n | intero 1–12 | sì | — | Numero dello slot (slotN). |
alias | stringa | no | da label | Il nome nelle regole e nelle condizioni. |
label | stringa | no | "" | Il nome dell'incantesimo. Senza virgolette doppie ". |
spell | intero 0–100000000 | no | 0 | L'ID dell'incantesimo su Wowhead. Better Assistant lo usa per mettere l'incantesimo nello slot. |
note | stringa | no | "" | Un commento alla fine della riga di dichiarazione. |
show | "target" / "combat" | no | "target" | Quando Better Assistant mostra lo slot. |
manual | true / false | no | false | Flag M. |
channel | true / false | no | false | Flag C. |
offGcd | true / false | no | false | Flag O. |
queue | true / false | no | false | Flag 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.
| Flag | Nel JSON | Come viene premuto | Esempio |
|---|---|---|---|
| nessuno | tutti false | Nella finestra di coda alla fine del GCD: l'incantesimo parte non appena il GCD termina. | Mutilazione, Affondo Venefico |
| M | "manual": true | Mai. Le regole dello slot vengono saltate. Se premi tu il suo tasto, la rotazione va in pausa. | Un'abilità che premi tu |
| C | "channel": true | Come 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": true | Subito, anche a metà del GCD. | Roulette Eterna (381989) |
| O + Q | "offGcd": true, "queue": true | Fuori 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": true | Una canalizzazione che parte fuori GCD: subito, poi nulla finché la canalizzazione non termina. | Raro |
| C + O + Q | tutti e tre | Come sopra, nella finestra di coda. | Raro |
| Q senza O | "queue": true | Errore: «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.
"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.
| Campo | Tipo | Obbligatorio | Predefinito | Cos'è |
|---|---|---|---|---|
use | stringa | sì | — | Lo slot da premere: il suo alias o slotN. |
name | stringa | no | "" | Il nome dell'azione, mostrato nel registro. Nel testo è il commento sulla riga use. |
note | stringa o elenco di stringhe | no | [] | Note sopra la regola (righe # prima di use). |
when | elenco di gruppi | no | [] | Gruppi OR. Vuoto o assente: una regola senza condizioni, premuta ogni volta che l'incantesimo si può usare. |
when: gruppi e condizioni#
| Campo | Tipo | Obbligatorio | Cos'è |
|---|---|---|---|
all | elenco non vuoto di stringhe | sì | Le condizioni del gruppo: devono essere tutte vere (AND). |
comment | stringa | no | Il commento del gruppo (nel testo, alla fine della sua riga). |
{
"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. andall'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, cifre0–9e_. Le lettere accentate e di altri alfabeti vanno bene; spazi, trattini e punti no:Fan_of_Knives, nonFan-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,movemente i nomi comebuffN,slotN,resourceN. - Le parole chiave vanno solo in minuscolo:
use,or,.up.Use,ORe.UPsono 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#
| Dove | Obbligatori | Valori predefiniti |
|---|---|---|
| File | format, version | title "", specID 0, ignoreMainIcon true, enemies {"range": 8, "combatOnly": true}, elenchi vuoti |
| Aura | n | alias da label, label "", spell 0 |
| Slot | n | show "target", tutti i flag false, spell 0 |
| Regola | use | name "", note [], when [] (nessuna condizione) |
| Gruppo | all (non vuoto) | comment "" |
Limiti#
| Cosa | Limite |
|---|---|
| Aure | 12 (n 1–12) |
| Slot | 12 (n 1–12) |
| Gruppi OR in una regola | 16 |
| Condizioni AND in un gruppo | 16 |
| Regole | illimitate |
| Numero in una condizione | intero 0–100 |
enemies.range | 1–100 |
spell | 0–100000000 |
specID | 0–100000 |
| Risorse | fino 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:
| Messaggio | Causa |
|---|---|
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 1 | Manca 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..12 | n fuori intervallo. |
slots[3]: il numero 4 è già occupato | Due 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 offGcd | queue: 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 vuoto | Un gruppo vuoto o senza all. |
rules[0].when[0].all[2]: condizione vuota o con # o a capo | Una stringa di condizione vuota, o con #. |
….spell: atteso un numero intero | Tipo sbagliato: una stringa invece di un numero, true invece di un numero e così via. |
Condizioni e dichiarazioni (come nel testo KRC):
| Codice | Esempio di messaggio | Causa |
|---|---|---|
unknown_ref | nome sconosciuto Foo | Nessuna aura, slot o risorsa con quel nome. |
unknown_ref | resource5 non dichiarato | La risorsa non è dichiarata in resources. |
wrong_kind | Garrote è di tipo slot, ma serve buff | Una proprietà da aura su uno slot (Garrote.up) o viceversa. |
bad_condition | condizione non interpretabile "Energy => 50" | Un errore di battitura nella condizione o nell'operatore. |
bad_condition | "Garrote.distance <= 8": distance esiste solo per target | Solo il bersaglio ha una distanza. |
value_range | il valore 120 è fuori da 0..100 | Un numero maggiore di 100. Non esistono numeri negativi o decimali. |
toggle_value | "cd >= 1": un interruttore accetta solo == 0 o == 1 | Un interruttore si confronta solo con == e 0 o 1. |
bad_alias | nome non consentito Fan-of-Knives | Caratteri non validi in un nome. |
reserved_alias | il nome cd è riservato | Un nome riservato. |
duplicate_alias | il nome Garrote è già dichiarato | Due aure, slot o risorse con lo stesso nome. |
index_range | buff13: numero fuori da 1..12 | Un riferimento a un numero maggiore di 12. |
too_many_groups | più di 16 gruppi OR | Più di 16 gruppi in una regola. |
too_many_conditions | 17 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.
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,oro una riga di condizioni. Altrimenti è un errorestray_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/slotNe all'inizio delle righe di condizioni.
Dichiarazioni#
Solo prima del primo use:
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#
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 whenapre 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 parolaor. - Una regola senza righe di condizioni non ha condizioni.
- Due righe di condizioni di fila senza
orsono un erroresplit_group;orall'inizio, alla fine o due volte di fila èempty_group.
Testo e JSON: le corrispondenze#
| Nel testo | Nel JSON |
|---|---|
rotation "…" | title |
Righe # … prima del primo use | notes |
Un commento alla fine di una riga buffN / slotN | Il note dell'aura / dello slot |
Righe # … subito prima di use (e tra i gruppi della regola) | Il note della regola |
Un commento sulla riga use | Il name della regola |
| Un commento alla fine di una riga di condizioni | Il comment del gruppo |
Righe # … dopo l'ultima regola | footer |
| — (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
.txtcon 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 secondoshow. 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.rangeeenemies.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:
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.