Ningguang / Gorou / Fischl / Chiori

54,423 DPS

Calculated like your results, against the same enemy with the rotation looped, using the build from the community gcsim config the rotation comes from. Your own build will score differently.

The source reports 56,514 DPS for one rotation under its own conditions.

Score your own build

Only characters in the Character Showcase of your in-game profile can be loaded. Turn on "Show Character Details".

Sources

Rotation script (gcsim)
let normal_attack_state = 1;
let c_left = 0;
let c_twirl = 2;
let _execute_action = execute_action;
fn execute_action(char_id number, action_id number, p map) {
  if action_id == .action.dash {
  	pick_up_crystallize("any"); 
  }
  return _execute_action(char_id, action_id, p);
}
active fischl;
for {
  switch {
    case .fischl.skill.ready && .fischl.swap.ready:
      fischl attack, skill;
    case .fischl.burst.ready && !.fischl.oz:
      fischl attack:2, burst;
    case .gorou.burst.ready && .gorou.swap.ready:
      gorou burst;
    case .gorou.skill.ready && .gorou.swap.ready && (!.ning.onfield || !.status.gorou-e-debuff && .gorou.burst.cd < 8):
      gorou skill, attack;
    case .chiori.skill.ready && .chiori.swap.ready:
      chiori skill:2;
    case .ningguang.skill.ready && .ningguang.swap.ready:
      ningguang skill, dash;
    case .ningguang.burst.ready && .ningguang.swap.ready:
      ningguang burst, walk;
    case .ningguang.jadeCount == 7 && .ningguang.swap.ready:
      ningguang charge;
    case .ningguang.onfield && .state == normal_attack_state:
      if .ningguang.prevAttack == c_left || .ningguang.prevAttack == c_twirl {
        ningguang charge;
      } else {
        ningguang walk;
      }
    case .chiori.burst.ready && .chiori.swap.ready:
      chiori burst;
    default:
      ningguang attack;
  }
}
Calculating… This can take up to a minute.