Config Guide
The simple mental model
Every config has 4 jobs:
- Tell the sim how long to run
- Tell it who is on the team
- Tell it who the target is
- Tell it what actions to execute
If you remember only that, you are already ahead of the average wall of tables.
Starter template
Copy this when you want to start a config from zero.
Replace:
personajewith the character key, for examplexianyun,bennett,nefer,zibaiarmawith the weapon key, for examplefavoniusswordsetwith the artifact set key, for exampleviridescentvenerer- the actions inside the
forblock with your real rotation
# Character setup
personaje char lvl=90/90 cons=0 talent=9,9,9;
personaje add weapon="arma" refine=5 lvl=90/90;
personaje add set="set" count=4;
# Main stats from artifacts.
personaje add stats hp=4780 atk=311 er=0.518 atk%=0.466 cr=0.311 cd=0.622;
# Substats from artifacts.
personaje add stats def%=0.124 def=39.36 hp=507.88 hp%=0.0992 atk=165.4 atk%=0.3968 er=0.4408 em=39.64 cr=0.0662 cd=0.1324;
# Options
options iteration=1000 duration=90 swap_delay=12;
# Energy drops: one clear particle every 480 to 720 frames.
energy every interval=480,720 amount=1;
# Target: level 100 enemy, 10% resistance, simple hitbox, very high HP.
target lvl=100 resist=0.1 radius=2 pos=0,2.4 hp=100000000;
# Starting character.
active personaje;
# Rotation loop.
# i < 4 means "repeat this block 4 times".
for let i = 0; i < 4; i = i + 1 {
personaje skill;
personaje burst;
personaje attack:3;
}
What each starter line means
char lvl=90/90sets the character level and ascension.cons=0means constellation 0. Change it tocons=6for C6.talent=9,9,9means normal attack, skill, burst talent levels.weapon="arma"must be replaced with a real weapon key.refine=5means weapon refinement 5.set="set" count=4means a 4-piece artifact set.- The first
add statsline is usually for main stats. - The second
add statsline is usually for substats. iteration=1000means Evilsim averages 1000 runs.duration=90means each run lasts 90 seconds unless the target dies first.swap_delay=12means swaps take 12 frames.energy every interval=480,720 amount=1gives a normal external particle drop.target resist=0.1means the enemy has 10% resistance.active personajedecides who starts on field.for let i = 0; i < 4; i = i + 1repeats the rotation 4 times.
Same template with a real character
This version is easier to test because it uses real keys.
xianyun char lvl=90/90 cons=0 talent=9,9,9;
xianyun add weapon="favoniuscodex" refine=5 lvl=90/90;
xianyun add set="viridescentvenerer" count=4;
xianyun add stats hp=4780 atk=311 er=0.518 atk%=0.466 cr=0.311 cd=0.622;
xianyun add stats def%=0.124 def=39.36 hp=507.88 hp%=0.0992 atk=165.4 atk%=0.3968 er=0.4408 em=39.64 cr=0.0662 cd=0.1324;
options iteration=1000 duration=90 swap_delay=12;
energy every interval=480,720 amount=1;
target lvl=100 resist=0.1 radius=2 pos=0,2.4 hp=100000000;
active xianyun;
for let i = 0; i < 4; i = i + 1 {
xianyun skill;
xianyun burst;
xianyun attack:3;
}
The basic shape
options iteration=1000 duration=90 swap_delay=12;
target lvl=100 resist=0.1 pos=0,2.4 radius=2 hp=999999999;
active raiden;
raiden char lvl=90/90 cons=0 talent=1,9,9;
raiden add weapon="thecatch" refine=5 lvl=90/90;
raiden add set="emblemofseveredfate" count=4;
raiden add stats hp=4780 atk=311 er=0.518 cr=0.311 cd=0.622;
raiden skill;
raiden burst;
raiden attack:5;
What each block means
options
This controls global sim behavior.
Common values:
iteration= how many runs to averageduration= how long each run lastsswap_delay= how many frames swaps take
Example:
options iteration=1000 duration=90 swap_delay=12;
target
This defines the enemy.
You must always have at least one target.
Useful fields:
lvlresistposradiushp
If you want a simple dummy target, keep it plain.
If you want multi-target logic, write several target lines.
For particle drops, real enemy data, and multi-target examples, use Enemy setup.
active
This sets the starting character.
active raiden;
Character setup
This is the static part of the team.
raiden char lvl=90/90 cons=0 talent=1,9,9;
raiden add weapon="thecatch" refine=5 lvl=90/90;
raiden add set="emblemofseveredfate" count=4;
raiden add stats hp=4780 atk=311 er=0.518 cr=0.311 cd=0.622;
Rule of thumb:
char= base character dataweapon= equipped weaponset= artifact setstats= artifact stats only
Do not double count base stats.
Setup recipes
These are the small setup commands people usually need before writing the actual rotation.
Start at 1 HP
Use start_hp on the char line.
bennett char lvl=90/90 cons=0 talent=9,9,9 +params=[start_hp=1];
If you want to start from an HP percentage, use start_hp%.
hutao char lvl=90/90 cons=1 talent=9,9,9 +params=[start_hp%=49];
Do not combine start_hp and start_hp% unless you intentionally want both
effects to add up. For clean tests, use only one.
Start with specific energy
Use start_energy when you want to test whether Favonius, particles, or a
rotation fill the burst.
xiangling char lvl=90/90 cons=4 talent=9,9,9 +params=[start_energy=20];
xiangling add weapon="favoniuslance" refine=5 lvl=90/90;
xiangling add stats cr=0.80 er=0.518 atk=311;
This avoids the classic mistake: starting full energy and then not knowing whether Favonius worked because the energy bar could not increase.
Lunar resource: Verdant Dew
When someone asks how to start with 3 moons for Nefer, Lauma, or Columbina, they
usually mean the resource the sim calls Verdant Dew.
This is not the same thing as Moonsign.
Verdant Dew= resource spent by special actions.Moonsign= count of lunar characters on the team.
For tests, you can start the sim with 0, 1, 2, or 3 Verdant Dew. Put this command at the beginning of the rotation, before spending frames.
set_starting_verdant_dew(3);
Basic Nefer test with 3 Verdant Dew:
set_starting_verdant_dew(3);
nefer skill;
nefer charge;
Practical read:
- Nefer uses
Verdant Dewfor her special charged attack path (Phantasm Performance) when she also hasShadow Danceand Phantasm charge. - Lauma uses
Verdant Dewwithskill[hold=1]; she consumes up to 3 and turns it intoMoon Song/Pale Hymndepending on her state. - Columbina uses
Verdant Dewwithcharge; if the resource exists, she switches toMoondew Ablutioninstead of a normal charged attack.
Copyable examples:
# Nefer: open the route with skill, then try the special charged attack.
set_starting_verdant_dew(3);
nefer skill;
nefer charge;
# Lauma: hold skill consumes Verdant Dew. Without Dew, this action fails.
set_starting_verdant_dew(3);
lauma skill[hold=1];
# Columbina: charge consumes 1 Verdant Dew and uses Moondew Ablution.
set_starting_verdant_dew(3);
columbina charge;
columbina charge;
columbina charge;
Lunar resonance: Moonsign and Lunar Bloom
When someone talks about having 2 or 3 lunar characters on the team, that is
Moonsign. This does not spend Verdant Dew; it only counts how many team
members have the lunar tag.
Example with three lunar characters:
aino char lvl=90/90 cons=0 talent=9,9,9;
columbina char lvl=90/90 cons=0 talent=9,9,9;
nefer char lvl=90/90 cons=0 talent=9,9,9;
bennett char lvl=90/90 cons=6 talent=9,9,9;
active nefer;
Practical read:
- 1 lunar character = Moonsign level 1 on the team.
- 2 or more lunar characters = enables the
Ascendant Gleamroute. - 3 lunar characters = Moonsign level 3 for effects that scale with that count.
Magic resonance: Hexerei
The magic resonance is called Hexerei inside the sim. It works like a team
count: if you have 2 or more magic characters, some routes, buffs, or sets
unlock their special branch.
Simple example with 2 magic characters:
albedo char lvl=90/90 cons=0 talent=9,9,9;
klee char lvl=90/90 cons=0 talent=9,9,9;
bennett char lvl=90/90 cons=6 talent=9,9,9;
xianyun char lvl=90/90 cons=0 talent=9,9,9;
active klee;
Practical read:
- 1 Hexerei character = the character has the magic tag, but many effects do not unlock the stronger path yet.
- 2 or more Hexerei characters = enables magic resonance for effects that check
GetHexereiCount() >= 2. - Some test characters have Hexerei enabled by default.
To test a character without counting as magic, disable the param:
klee char lvl=90/90 cons=0 talent=9,9,9 +params=[hexerei=0];
To compare a rotation with and without magic resonance:
# With magic resonance.
klee char lvl=90/90 cons=0 talent=9,9,9;
albedo char lvl=90/90 cons=0 talent=9,9,9;
# Without magic resonance on Klee.
# klee char lvl=90/90 cons=0 talent=9,9,9 +params=[hexerei=0];
Use skill when it is available
The safe way is to ask the simulator whether the ability is ready before pressing it.
if .bennett.skill.ready {
bennett skill;
}
For burst, .burst.ready is usually the right check: it tells you whether the
burst can be used right now.
if .xiangling.burst.ready {
xiangling burst;
}
Avoid infinite loops
Every while waiting for an uncertain condition should have a timeout. This
protects the sim when the aura, proc, or cooldown never arrives.
let start = f();
while !.element.t0.cryo && f() - start < 120 {
wait(1);
}
GCSL: the action script
This is the part that actually makes the team move.
raiden skill;
xingqiu skill, burst;
bennett skill, burst;
xiangling burst, skill;
raiden burst;
raiden attack:5, jump;
Short actions
You can repeat actions with shorthand:
raiden attack:5;
This means attack five times in a row.
Conditions
Use if when the action should only happen in one case.
if .raiden.energy < .raiden.energymax {
raiden skill;
}
Loops
Use while or for when you want to repeat a rotation.
while 1 {
raiden skill;
xingqiu skill, burst;
}
Wait and delay
Use these when you need timing control:
sleep/wait= pause during the current action flowdelay= delay the next action
What Evilsim docs should explain
This is the part our docs should focus on:
- what line goes where
- which block is optional
- how to spot a bad import
- how to test one weapon condition at a time
- how to keep one complete page per character, weapon, or artifact special case
Good rule for special cases
If a character or weapon has a special rule, document it like this:
- What triggers it
- What the simulator expects
- One minimal example
- One common mistake
That works for Clorinde, Iansan, Favonius, and any future custom unit.
English quick read
The config is just:
- options
- target
- team setup
- rotation script
If something is unclear, document the exact line pattern, not just the raw data table.