Skip to main content

Config Guide

The simple mental model

Every config has 4 jobs:

  1. Tell the sim how long to run
  2. Tell it who is on the team
  3. Tell it who the target is
  4. 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:

  • personaje with the character key, for example xianyun, bennett, nefer, zibai
  • arma with the weapon key, for example favoniussword
  • set with the artifact set key, for example viridescentvenerer
  • the actions inside the for block 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/90 sets the character level and ascension.
  • cons=0 means constellation 0. Change it to cons=6 for C6.
  • talent=9,9,9 means normal attack, skill, burst talent levels.
  • weapon="arma" must be replaced with a real weapon key.
  • refine=5 means weapon refinement 5.
  • set="set" count=4 means a 4-piece artifact set.
  • The first add stats line is usually for main stats.
  • The second add stats line is usually for substats.
  • iteration=1000 means Evilsim averages 1000 runs.
  • duration=90 means each run lasts 90 seconds unless the target dies first.
  • swap_delay=12 means swaps take 12 frames.
  • energy every interval=480,720 amount=1 gives a normal external particle drop.
  • target resist=0.1 means the enemy has 10% resistance.
  • active personaje decides who starts on field.
  • for let i = 0; i < 4; i = i + 1 repeats 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 average
  • duration = how long each run lasts
  • swap_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:

  • lvl
  • resist
  • pos
  • radius
  • hp

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 data
  • weapon = equipped weapon
  • set = artifact set
  • stats = 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 Dew for her special charged attack path (Phantasm Performance) when she also has Shadow Dance and Phantasm charge.
  • Lauma uses Verdant Dew with skill[hold=1]; she consumes up to 3 and turns it into Moon Song / Pale Hymn depending on her state.
  • Columbina uses Verdant Dew with charge; if the resource exists, she switches to Moondew Ablution instead 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 Gleam route.
  • 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 flow
  • delay = 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:

  1. What triggers it
  2. What the simulator expects
  3. One minimal example
  4. 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.