text: import Conditions from '../../../../../resources/conditions.js';
  import NetRegexes from '../../../../../resources/netregexes.js';
  import { Responses } from '../../../../../resources/responses.js';
  import ZoneId from '../../../../../resources/zone_id.js';
  
  // The Copied Factory
  // TODO: Tell people where to stand for Engels wall saws
  // TODO: Tell people where to stand for 9S overhead saws
  // TODO: Tell people where to go for 9S divebombs
  // TODO: Tell people where to go for 9S tethered tank
  
  export default {
    zoneId: ZoneId.TheCopiedFactory,
    timelineFile: 'the_copied_factory.txt',
    timelineTriggers: [
      {
        id: 'Copied Flight Unit Lightfast',
        regex: /Lightfast Blade/,
        beforeSeconds: 15,
        infoText: function(data, _, output) {
          // The third lightfast blade comes very close to second,
          // so suppress its message.
          data.lightfastCount = (data.lightfastCount || 0) + 1;
          if (data.lightfastCount !== 3)
            return;
          return output.text();
        },
        outputStrings: {
          text: {
            en: 'Be Near Boss',
            de: 'sei in der Nähe des Bosses',
            fr: 'Près du boss',
            ja: 'ボスと貼りつく',
            cn: '靠近Boss',
            ko: '보스 근처로',
          },
        },
      },
      {
        id: 'Copied Engels Demolish Structure',
        regex: /Demolish Structure/,
        beforeSeconds: 15,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Move to South Edge',
            de: 'zur südlichen Kante',
            fr: 'Allez au Sud',
            ja: '南へ',
            cn: '前往南侧边缘',
            ko: '남쪽으로',
          },
        },
      },
    ],
    triggers: [
      {
        id: 'Copied Serial Forceful Impact',
        netRegex: NetRegexes.startsUsing({ id: '48CF', source: 'Serial-Jointed Command Model', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48CF', source: '多关节型：司令机', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48CF', source: 'Befehlsmodell Mit Omnigelenk', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48CF', source: 'Modèle Multiarticulé : Commandant', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48CF', source: '多関節型：司令機', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48CF', source: '다관절형: 사령기', capture: false }),
        condition: Conditions.caresAboutAOE(),
        response: Responses.aoe(),
      },
      {
        id: 'Copied Serial Energy Assault',
        netRegex: NetRegexes.startsUsing({ id: '48B5', source: 'Serial-Jointed Command Model', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48B5', source: '多关节型：司令机', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48B5', source: 'Befehlsmodell Mit Omnigelenk', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48B5', source: 'Modèle Multiarticulé : Commandant', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48B5', source: '多関節型：司令機', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48B5', source: '다관절형: 사령기', capture: false }),
        response: Responses.getBehind(),
      },
      {
        id: 'Copied Serial High-Caliber Laser',
        netRegex: NetRegexes.startsUsing({ id: '48FA', source: 'Serial-Jointed Service Model', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48FA', source: '多关节型：士兵机', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48FA', source: 'Modell Mit Omnigelenk', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48FA', source: 'Modèle Multiarticulé : Soldat', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48FA', source: '多関節型：兵隊機', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48FA', source: '다관절형: 병정기', capture: false }),
        suppressSeconds: 15,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Look for Lasers',
            de: 'Pass auf die Laser auf',
            fr: 'Attention aux lasers',
            ja: 'レザーを避け',
            cn: '小心激光',
            ko: '레이저 확인',
          },
        },
      },
      {
        id: 'Copied Serial Clanging Blow',
        netRegex: NetRegexes.startsUsing({ id: '48CE', source: 'Serial-Jointed Command Model' }),
        netRegexCn: NetRegexes.startsUsing({ id: '48CE', source: '多关节型：司令机' }),
        netRegexDe: NetRegexes.startsUsing({ id: '48CE', source: 'Befehlsmodell Mit Omnigelenk' }),
        netRegexFr: NetRegexes.startsUsing({ id: '48CE', source: 'Modèle Multiarticulé : Commandant' }),
        netRegexJa: NetRegexes.startsUsing({ id: '48CE', source: '多関節型：司令機' }),
        netRegexKo: NetRegexes.startsUsing({ id: '48CE', source: '다관절형: 사령기' }),
        response: Responses.tankBuster(),
      },
      {
        id: 'Copied Serial Centrifugal Spin',
        netRegex: NetRegexes.startsUsing({ id: '48C8', source: 'Serial-Jointed Command Model', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48C8', source: '多关节型：司令机', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48C8', source: 'Befehlsmodell Mit Omnigelenk', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48C8', source: 'Modèle Multiarticulé : Commandant', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48C8', source: '多関節型：司令機', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48C8', source: '다관절형: 사령기', capture: false }),
        response: Responses.goSides(),
      },
      {
        id: 'Copied Serial Sidestriking Spin',
        netRegex: NetRegexes.startsUsing({ id: '48CA', source: 'Serial-Jointed Command Model', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48CA', source: '多关节型：司令机', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48CA', source: 'Befehlsmodell Mit Omnigelenk', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48CA', source: 'Modèle Multiarticulé : Commandant', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48CA', source: '多関節型：司令機', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48CA', source: '다관절형: 사령기', capture: false }),
        response: Responses.goFrontBack(),
      },
      {
        id: 'Copied Serial Shockwave',
        netRegex: NetRegexes.startsUsing({ id: '48C3', source: 'Serial-Jointed Command Model', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48C3', source: '多关节型：司令机', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48C3', source: 'Befehlsmodell Mit Omnigelenk', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48C3', source: 'Modèle Multiarticulé : Commandant', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48C3', source: '多関節型：司令機', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48C3', source: '다관절형: 사령기', capture: false }),
        response: Responses.knockback('info'),
      },
      {
        id: 'Copied Hobbes Laser-Resistance Test',
        netRegex: NetRegexes.startsUsing({ id: '4805', source: 'Hobbes', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4805', source: '霍布斯', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4805', source: 'Hobbes', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4805', source: 'Hobbes', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4805', source: 'ホッブス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4805', source: '홉스', capture: false }),
        condition: Conditions.caresAboutAOE(),
        response: Responses.aoe(),
      },
      {
        id: 'Copied Hobbes Right Arm',
        netRegex: NetRegexes.message({ line: 'The wall-mounted right arm begins to move.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '墙面的右臂开始运作…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Der wandmontierte rechte Arm ist aktiv!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le bras mural droit s\'active!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '壁面のライトアームが稼働を始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '벽면의 오른팔이 움직이기 시작합니다……!.*?', capture: false }),
        infoText: (data, _, output) => output.text(),
        run: function(data) {
          data.alliance = data.alliance || 'A';
        },
        outputStrings: {
          text: {
            en: 'Dodge Moving Circle',
            de: 'Bewegenden Kreisen ausweichen',
            fr: 'Evitez les cercles mouvants',
            ja: '動いてるサークルを避け',
            cn: '躲避移动圆圈',
            ko: '시계방향 회전하면서 나오는 장판 피하기',
          },
        },
      },
      {
        id: 'Copied Hobbes Flamethrowers',
        netRegex: NetRegexes.message({ line: 'The wall-mounted flamethrowers activate\..*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '墙面的火炎放射器开始运作…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Die wandmontierten Flammenwerfer sind aktiv!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Les lance-flammes muraux s\'activent!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '壁面の火炎放射器が稼働を始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '벽면의 화염 방사기가 가동되었습니다……!.*?', capture: false }),
        alertText: (data, _, output) => output.text(),
        run: function(data) {
          data.alliance = data.alliance || 'B';
        },
        outputStrings: {
          text: {
            en: 'Look Behind For Flamethrowers',
            de: 'Flammenwerfer hinter dir',
            fr: 'Regardez derrière (lance-flammes)',
            ja: '後ろに火炎放射器',
            cn: '观察后方放火',
            ko: '뒤에서 불 나오는 곳 확인',
          },
        },
      },
      {
        id: 'Copied Hobbes Left Arm 1',
        netRegex: NetRegexes.message({ line: 'The wall-mounted left arm begins to move.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '墙面的左臂开始运作…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Der wandmontierte linke Arm ist aktiv!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le bras mural gauche s\'active!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '壁面のレフトアームが稼働を始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '벽면의 왼팔이 움직이기 시작합니다……!.*?', capture: false }),
        durationSeconds: 6,
        response: Responses.getOut('info'),
        run: function(data) {
          data.alliance = data.alliance || 'C';
        },
      },
      {
        id: 'Copied Hobbes Left Arm 2',
        netRegex: NetRegexes.message({ line: 'The wall-mounted left arm begins to move.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '墙面的左臂开始运作…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Der wandmontierte linke Arm ist aktiv!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le bras mural gauche s\'active!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '壁面のレフトアームが稼働を始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '벽면의 왼팔이 움직이기 시작합니다……!.*?', capture: false }),
        delaySeconds: 8,
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Dodge Falling Walls',
            de: 'Den fallenden Wände asuweichen',
            fr: 'Eviter les murs tombants',
            ja: '倒れた壁を避け',
            cn: '躲避倒塌墙壁',
            ko: '넘어지는 벽 피하기',
          },
        },
      },
      {
        id: 'Copied Hobbes Left Arm 3',
        netRegex: NetRegexes.message({ line: 'The wall-mounted left arm begins to move.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '墙面的左臂开始运作…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Der wandmontierte linke Arm ist aktiv!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le bras mural gauche s\'active!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '壁面のレフトアームが稼働を始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '벽면의 왼팔이 움직이기 시작합니다……!.*?', capture: false }),
        delaySeconds: 10,
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Spread Tethers',
            de: 'Verbindungen Verteilen',
            fr: 'Ecartez les liens',
            ja: '散開、線を断つ',
            cn: '散开扯断连线',
            ko: '산개 선 (탱 혼자도 가능)',
          },
        },
      },
      {
        id: 'Copied Hobbes Short Missile',
        netRegex: NetRegexes.headMarker({ id: '00C4' }),
        condition: Conditions.targetIsYou(),
        response: Responses.spread('alert'),
      },
      {
        id: 'Copied Hobbes Laser Sight',
        netRegex: NetRegexes.startsUsing({ id: '4807', source: 'Hobbes', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4807', source: '霍布斯', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4807', source: 'Hobbes', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4807', source: 'Hobbes', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4807', source: 'ホッブス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4807', source: '홉스', capture: false }),
        response: Responses.stackMarker(),
      },
      {
        id: 'Copied Hobbes Electric Floor',
        netRegex: NetRegexes.message({ line: 'You hear frenzied movement from machines beneath.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '地板下的机械生物动作很可疑…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Die Maschinenwesen zu deinen Füßen bewegen sich!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Les formes de vie mécaniques sous vos pieds s\'activent!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '床下の機械生命体が怪しく動き始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '바닥 아래의 기계생명체가 수상한 움직임을 보입니다……!.*?', capture: false }),
        durationSeconds: 10,
        suppressSeconds: 15,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Dodge Electric Floor',
            de: 'Elektrischem Boden ausweichen',
            fr: 'Evitez le sol électrifié',
            ja: '電気床を避け',
            cn: '躲避带电地板',
            ko: '바닥 장판 피하기',
          },
        },
      },
      {
        id: 'Copied Hobbes Conveyer Belts',
        netRegex: NetRegexes.message({ line: 'The conveyer belts whirr to life!.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '地面上的滚轴开始运作…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Die Fließbänder sind aktiv!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le tapis roulant s\'est mis en branle!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '床面のローラーコンベアが稼働を始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '바닥의 컨베이어가 움직이기 시작합니다……!.*?', capture: false }),
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Conveyor Belts',
            de: 'Förderbänder',
            fr: 'Tapis roulant',
            ja: 'ローラーコンベア',
            cn: '输送带',
            ko: '컨베이어 벨트',
          },
        },
      },
      {
        id: 'Copied Hobbes Oil 1',
        netRegex: NetRegexes.message({ line: 'Flammable oil is leaking from the floor.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '地板下开始充满可燃性液体…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Zu deinen Füßen wird brennbare Flüssigkeit eingelassen!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le sol s\'imbibe de liquide inflammable!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '床下に可燃性の液体が満ち始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '바닥 밑에 가연성 액체가 차오릅니다……!.*?', capture: false }),
        durationSeconds: 3,
        suppressSeconds: 15,
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Oil Vats',
            de: 'Ölbehälter',
            fr: 'Cuves à huile',
            ja: 'オイル沸け',
            cn: '油桶',
            ko: '뚫린 바닥 피하기',
          },
        },
      },
      {
        id: 'Copied Hobbes Oil 2',
        netRegex: NetRegexes.message({ line: 'Flammable oil is leaking from the floor.*?', capture: false }),
        netRegexCn: NetRegexes.message({ line: '地板下开始充满可燃性液体…….*?', capture: false }),
        netRegexDe: NetRegexes.message({ line: 'Zu deinen Füßen wird brennbare Flüssigkeit eingelassen!.*?', capture: false }),
        netRegexFr: NetRegexes.message({ line: 'Le sol s\'imbibe de liquide inflammable!.*?', capture: false }),
        netRegexJa: NetRegexes.message({ line: '床下に可燃性の液体が満ち始めた……！.*?', capture: false }),
        netRegexKo: NetRegexes.message({ line: '바닥 밑에 가연성 액체가 차오릅니다……!.*?', capture: false }),
        delaySeconds: 6,
        durationSeconds: 3,
        suppressSeconds: 15,
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Oil Vats',
            de: 'Ölbehälter',
            fr: 'Cuves à huile',
            ja: 'オイル沸け',
            cn: '油桶',
            ko: '뚫린 바닥 피하기',
          },
        },
      },
      {
        id: 'Copied Goliath Tank Exploder',
        netRegex: NetRegexes.tether({ id: '0011', source: 'Medium Exploder' }),
        netRegexCn: NetRegexes.tether({ id: '0011', source: '中型自爆' }),
        netRegexDe: NetRegexes.tether({ id: '0011', source: 'Mittelgroß(?:e|er|es|en) Selbstzerstörung' }),
        netRegexFr: NetRegexes.tether({ id: '0011', source: 'Unité Kamikaze Moyenne' }),
        netRegexJa: NetRegexes.tether({ id: '0011', source: '中型自爆' }),
        netRegexKo: NetRegexes.tether({ id: '0011', source: '중형 자폭' }),
        condition: Conditions.targetIsYou(),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Exploder on YOU',
            de: 'Explosion auf DIR',
            fr: 'Explosion sur VOUS',
            ja: '自分に自爆',
            cn: '自爆点名',
            ko: '폭발 징',
          },
        },
      },
      {
        id: 'Copied Flight Unit 360 Bombing Manuever',
        netRegex: NetRegexes.startsUsing({ id: '4941', source: 'Flight Unit', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4941', source: '飞行装置', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4941', source: 'Flugeinheit', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4941', source: 'Module De Vol', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4941', source: '飛行ユニット', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4941', source: '비행 유닛', capture: false }),
        condition: Conditions.caresAboutAOE(),
        response: Responses.aoe(),
      },
      {
        id: 'Copied Flight Unit Ballistic Impact',
        netRegex: NetRegexes.headMarker({ id: '0017' }),
        condition: Conditions.targetIsYou(),
        response: Responses.spread('alert'),
      },
      {
        id: 'Copied Engels Marx Smash Right',
        netRegex: NetRegexes.startsUsing({ id: '4727', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4727', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4727', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4727', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4727', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4727', source: '엥겔스', capture: false }),
        response: Responses.goRight(),
      },
      {
        id: 'Copied Engels Marx Smash Left',
        netRegex: NetRegexes.startsUsing({ id: '4726', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4726', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4726', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4726', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4726', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4726', source: '엥겔스', capture: false }),
        response: Responses.goLeft(),
      },
      {
        id: 'Copied Engels Marx Smash Forward',
        netRegex: NetRegexes.startsUsing({ id: '472E', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '472E', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '472E', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '472E', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '472E', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '472E', source: '엥겔스', capture: false }),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Front and Center',
            de: 'Vorne und Mitte',
            fr: 'Devant et au centre',
            ja: '前方の中へ',
            cn: '前方中间',
            ko: '앞으로 => 중앙으로',
          },
        },
      },
      {
        id: 'Copied Engels Marx Smash Back',
        netRegex: NetRegexes.startsUsing({ id: '472A', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '472A', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '472A', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '472A', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '472A', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '472A', source: '엥겔스', capture: false }),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Back and Sides',
            de: 'Hinten und Seiten',
            fr: 'Arrière et côtés',
            ja: '後方の横へ',
            cn: '后方两侧',
            ko: '뒤로 => 양옆으로',
          },
        },
      },
      {
        id: 'Copied Engels Marx Crush',
        netRegex: NetRegexes.startsUsing({ id: '4746', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4746', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4746', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4746', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4746', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4746', source: '엥겔스', capture: false }),
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Kill Claws',
            de: 'Klauen töten',
            fr: 'Tuez les pinces',
            ja: 'マルクスを倒す',
            cn: '杀掉爪子',
            ko: '양옆 톱 처리',
          },
        },
      },
      {
        id: 'Copied Engels Precision Guided Missile',
        netRegex: NetRegexes.headMarker({ id: '00C6' }),
        condition: Conditions.targetIsYou(),
        response: Responses.tankBuster('info'),
      },
      {
        id: 'Copied Engels Diffuse Laser',
        netRegex: NetRegexes.startsUsing({ id: '4755', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4755', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4755', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4755', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4755', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4755', source: '엥겔스', capture: false }),
        condition: Conditions.caresAboutAOE(),
        response: Responses.aoe(),
      },
      {
        // Technicallly this is Laser Sight 473A, but energy barrage
        // always precedes it and is an earlier warning.
        // Also suggest going to the front for towers.
        id: 'Copied Engels Energy Barrage 1',
        netRegex: NetRegexes.startsUsing({ id: '473C', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '473C', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '473C', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '473C', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '473C', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '473C', source: '엥겔스', capture: false }),
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Go Sides (Near Front)',
            de: 'Zu den Seiten (Nahe der Front)',
            fr: 'Allez sur les côtés (vers l\'avant)',
            ja: '横へ (前に近づく)',
            cn: '两侧（靠近前方）',
            ko: '양옆으로 (앞 근처)',
          },
        },
      },
      {
        id: 'Copied Engels Energy Barrage',
        netRegex: NetRegexes.startsUsing({ id: '473C', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '473C', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '473C', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '473C', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '473C', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '473C', source: '엥겔스', capture: false }),
        delaySeconds: 8,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Get Towers',
            de: 'Türme nehmen',
            fr: 'Prenez les tours',
            ja: '塔を踏む',
            cn: '踩塔',
            ko: '장판 하나씩 들어가기',
          },
        },
      },
      {
        id: 'Copied Engels Incendiary Bombing',
        netRegex: NetRegexes.headMarker({ id: '0017' }),
        condition: Conditions.targetIsYou(),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Puddle on YOU',
            de: 'Fläche auf dir',
            fr: 'Flaques sur VOUS',
            ja: '自分に水溜り',
            cn: '水圈点名',
            ko: '징 대상자',
          },
        },
      },
      {
        id: 'Copied Engels Guided Missile',
        netRegex: NetRegexes.headMarker({ id: '00C5' }),
        condition: Conditions.targetIsYou(),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Get Out + Dodge Homing AoE',
            de: 'Geh Raus + Zielsuch-AoE ausweichen',
            fr: 'Dehors + Evitez l\'AoE',
            ja: '外 + AoE',
            cn: '远离 + 躲避弹幕',
            ko: '바깥으로 빠지고 따라오는 장판 피하기',
          },
        },
      },
      {
        id: 'Copied Engels Reverse-Jointed Goliaths',
        netRegex: NetRegexes.ability({ id: '473F', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.ability({ id: '473F', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.ability({ id: '473F', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.ability({ id: '473F', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.ability({ id: '473F', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.ability({ id: '473F', source: '엥겔스', capture: false }),
        durationSeconds: 4,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Adds (Ignore Small)',
            de: 'Adds (kleine ignorieren)',
            fr: 'Adds (ignorez les petits)',
            ja: '雑魚 (小さいのは無視)',
            cn: '小怪（忽略小的）',
            ko: '쫄 나옴 (작은건 무시)',
          },
        },
      },
      {
        id: 'Copied Engels Incendiary Saturation Bombing',
        netRegex: NetRegexes.startsUsing({ id: '474E', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '474E', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '474E', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '474E', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '474E', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '474E', source: '엥겔스', capture: false }),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Front and Center',
            de: 'Vorne und Mitte',
            fr: 'Devant et au centre',
            ja: '前方の中へ',
            cn: '前方中间',
            ko: '앞 중앙',
          },
        },
      },
      {
        id: 'Copied Engels Marx Thrust',
        netRegex: NetRegexes.startsUsing({ id: '48A8', source: 'Engels', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48A8', source: '昂格士', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48A8', source: 'Engels', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48A8', source: 'Engels', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48A8', source: 'エンゲルス', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48A8', source: '엥겔스', capture: false }),
        delaySeconds: 9,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Look For Wall Saws',
            de: 'Halt nach den kleinen Sägen ausschau',
            fr: 'Repérez les scies',
            ja: 'マルクス突撃',
            cn: '观察墙壁',
            ko: '양옆 톱 확인',
          },
        },
      },
      {
        id: 'Copied 9S Neutralization',
        netRegex: NetRegexes.startsUsing({ id: '48F5', source: '9S-Operated Walking Fortress' }),
        netRegexCn: NetRegexes.startsUsing({ id: '48F5', source: '9S：接入多脚战车' }),
        netRegexDe: NetRegexes.startsUsing({ id: '48F5', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer' }),
        netRegexFr: NetRegexes.startsUsing({ id: '48F5', source: '9S : Avec Multipède Esclave' }),
        netRegexJa: NetRegexes.startsUsing({ id: '48F5', source: '９Ｓ：多脚戦車従属' }),
        netRegexKo: NetRegexes.startsUsing({ id: '48F5', source: '9S: 다각전차 종속' }),
        condition: function(data, matches) {
          return data.me === matches.target || data.role === 'healer';
        },
        response: Responses.tankBuster(),
      },
      {
        id: 'Copied 9S Laser Saturation',
        netRegex: NetRegexes.startsUsing({ id: '48F6', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48F6', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48F6', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48F6', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48F6', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48F6', source: '9S: 다각전차 종속', capture: false }),
        condition: Conditions.caresAboutAOE(),
        response: Responses.aoe(),
      },
      {
        id: 'Copied 9S Laser Turret',
        netRegex: NetRegexes.startsUsing({ id: '4A74', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '4A74', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '4A74', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '4A74', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '4A74', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '4A74', source: '9S: 다각전차 종속', capture: false }),
        response: Responses.awayFromFront(),
      },
      {
        id: 'Copied 9S Ballistic Impact',
        netRegex: NetRegexes.headMarker({ id: '008B' }),
        condition: Conditions.targetIsYou(),
        response: Responses.spread('alert'),
      },
      {
        id: 'Copied 9S Goliath Laser Turret',
        netRegex: NetRegexes.headMarker({ id: '00A4' }),
        condition: Conditions.targetIsYou(),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Laser Buster on YOU',
            de: 'Laser Tankbuster auf DIR',
            fr: 'Laser Tankbuster sur VOUS',
            ja: '自分にレザー',
            cn: '激光点名',
            ko: '레이저 대상자',
          },
        },
      },
      {
        id: 'Copied 9S Fore-Hind Cannons',
        netRegex: NetRegexes.startsUsing({ id: '48DF', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48DF', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48DF', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48DF', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48DF', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48DF', source: '9S: 다각전차 종속', capture: false }),
        response: Responses.goSides('info'),
      },
      {
        id: 'Copied 9S Dual-Flank Cannons',
        netRegex: NetRegexes.startsUsing({ id: '48DE', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48DE', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48DE', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48DE', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48DE', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48DE', source: '9S: 다각전차 종속', capture: false }),
        response: Responses.goFrontBack('info'),
      },
      {
        id: 'Copied 9S Engage Marx Support',
        netRegex: NetRegexes.startsUsing({ id: '48D3', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48D3', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48D3', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48D3', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48D3', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48D3', source: '9S: 다각전차 종속', capture: false }),
        delaySeconds: 4,
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Dodge Overhead Saws',
            de: 'Sägen über dem Kopf ausweichen',
            fr: 'Evitez la scie au-dessus de vous',
            ja: 'マルクス支援',
            cn: '躲避头顶锯',
            ko: '톱 없는 쪽으로 피하기',
          },
        },
      },
      {
        // Use the ability before the adds show up, as looking for the added combatant
        // also triggers on the first boss.
        id: 'Copied 9S Serial-Jointed Service Models',
        netRegex: NetRegexes.ability({ id: '48EA', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.ability({ id: '48EA', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.ability({ id: '48EA', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.ability({ id: '48EA', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.ability({ id: '48EA', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.ability({ id: '48EA', source: '9S: 다각전차 종속', capture: false }),
        response: Responses.killAdds(),
      },
      {
        id: 'Copied 9S Engage Goliath Tank Support',
        netRegex: NetRegexes.startsUsing({ id: '48E5', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48E5', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48E5', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48E5', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48E5', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48E5', source: '9S: 다각전차 종속', capture: false }),
        response: Responses.killAdds(),
      },
      {
        id: 'Copied 9S Hack Goliath Tank',
        netRegex: NetRegexes.startsUsing({ id: '48E7', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48E7', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48E7', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48E7', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48E7', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48E7', source: '9S: 다각전차 종속', capture: false }),
        alertText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Go Behind Untethered Tank',
            de: 'Hinter den nicht verbundenen Panzer gehen',
            fr: 'Derrière le tank non-lié',
            ja: '線のない戦車の後ろへ',
            cn: '没连线的坦克后躲避',
            ko: '연결되지 않은 탱크 뒤로 숨기',
          },
        },
      },
      {
        id: 'Copied 9S Shrapnel Impact',
        netRegex: NetRegexes.startsUsing({ id: '48F3', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48F3', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48F3', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48F3', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48F3', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48F3', source: '9S: 다각전차 종속', capture: false }),
        suppressSeconds: 2,
        response: Responses.stackMarker('info'),
      },
      {
        id: 'Copied 9S Bubble',
        netRegex: NetRegexes.startsUsing({ id: '48EB', source: '9S-Operated Walking Fortress', capture: false }),
        netRegexCn: NetRegexes.startsUsing({ id: '48EB', source: '9S：接入多脚战车', capture: false }),
        netRegexDe: NetRegexes.startsUsing({ id: '48EB', source: '9S\' Mehrbeinig(?:e|er|es|en) Panzer', capture: false }),
        netRegexFr: NetRegexes.startsUsing({ id: '48EB', source: '9S : Avec Multipède Esclave', capture: false }),
        netRegexJa: NetRegexes.startsUsing({ id: '48EB', source: '９Ｓ：多脚戦車従属', capture: false }),
        netRegexKo: NetRegexes.startsUsing({ id: '48EB', source: '9S: 다각전차 종속', capture: false }),
        delaySeconds: 5,
        infoText: (data, _, output) => output.text(),
        outputStrings: {
          text: {
            en: 'Get in the bubble',
            de: 'Geh in die Kuppel',
            fr: 'Allez dans les bulles',
            ja: '泡に入る',
            cn: '进入圈圈',
            ko: '안전지대 안으로 들어가기',
          },
        },
      },
    ],
    timelineReplace: [
      {
        'locale': 'de',
        'replaceSync': {
          '9S-Operated Flight Unit': '9S\' Flugeinheit',
          '9S-Operated Walking Fortress': '9S\' mehrbeinig(?:e|er|es|en) Panzer',
          'Engels': 'Engels',
          '(?<! )Flight Unit': 'Flugeinheit',
          'Goliath Tank': 'Goliath-Panzer',
          'Hobbes': 'Hobbes',
          'Marx': 'Marx',
          'Medium Exploder': 'mittelgroß(?:e|er|es|en) Selbstzerstörung',
          'Multi-leg Medium Model': 'mittelgroßes mehrbeiniges Modell',
          'Quality assurance': 'Warenkontrollhalle',
          'Reverse-jointed Goliath': 'Goliath mit Inversgelenk',
          'Serial-jointed Command Model': 'Befehlsmodell mit Omnigelenk',
          'Serial-jointed Service Model': 'Modell mit Omnigelenk',
          'Small Biped': 'kleiner Zweibeiner',
          'Small Flyer': 'kleine Flugeinheit',
          'The forward deck': 'vordere Deck',
          'The rear deck': 'hintere Deck',
          'Warehouse A': 'Warenlager A',
          'Warehouse B': 'Warenlager B',
          'Warehouse C': 'Warenlager C',
          'The wall-mounted right arm begins to move': 'Der wandmontierte rechte Arm ist aktiv!',
          'The wall-mounted flamethrowers activate': 'Die wandmontierten Flammenwerfer sind aktiv!',
          'The wall-mounted left arm begins to move': 'Der wandmontierte linke Arm ist aktiv!',
          'You hear frenzied movement from machines beneath': 'Die Maschinenwesen zu deinen Füßen bewegen sich!',
          'The conveyer belts whirr to life!': 'Die Fließbänder sind aktiv!',
          'Flammable oil is leaking from the floor': 'Zu deinen Füßen wird brennbare Flüssigkeit eingelassen!',
        },
        'replaceText': {
          '360-Degree Bombing Maneuver': 'Offensive: Raketenring',
          'Adds': 'Adds',
          'Anti-Personnel Missile': 'Antipersonenrakete',
          'Area Bombardment': 'Blindraketen',
          'Area Bombing Maneuver': 'Offensive: Raketensalve',
          'Arm Laser': 'Armlaser',
          'Cannons': 'Kanonen',
          'Clanging Blow': 'Schwerer Angriff',
          'Convenient Self-Destruction': 'Selbstsprengung',
          'Crusher Adds': 'Zangenrad Adds',
          'Crushing Wheel': 'Zangenradoffensive',
          'Demolish Structure': 'Terraintilgung',
          'Diffuse Laser': 'Diffusionslaser',
          'Energy Assault': 'Energieschauer',
          'Energy Barrage': 'Energetisches Sperrfeuer',
          'Energy Blast': 'Energetische Explosion',
          'Energy Bombardment': 'Energiemörser',
          'Energy Ring': 'Omnidirektionalenergie',
          'Engage Goliath Tank Support': 'Verstärkung: Goliath-Panzer',
          'Engage Marx Support': 'Verstärkung: Marx',
          'Exploding Tethers': 'Explodierende Verbindungen',
          'Floor': 'Boden',
          'Forceful Impact': 'Heftiges Beben',
          'Frontal Somersault': 'Sprungoffensive',
          'Ground-To-Ground Missile': 'Boden-Boden-Rakete',
          '(?<! )Guided Missile': 'Lenkraketen',
          'Hack Goliath Tank': 'Hacken: Goliath-Panzer',
          'High-Caliber Laser': 'Großkaliberlaser',
          'High-Frequency Laser': 'Hochfrequenzlaser',
          'High-Powered Laser': 'Hochleistungslaser',
          'Incendiary Bombing': 'Brandraketen',
          'Incendiary Saturation Bombing': 'Streubrandraketen',
          'Laser Saturation': 'Omnidirektionallaser',
          'Laser Sight': 'Laserbestrahlung',
          'Laser Turret': 'Hauptgeschützlaser',
          'Laser-Resistance Test': 'Laserresistenztest',
          'Lightfast Blade': 'Lichtklingenschnitt',
          'Marx Activation': 'Marx-Aktivierung',
          'Marx Crush': 'Marxsche Offensive',
          'Marx Impact': 'Marxscher Sturz',
          'Marx Smash': 'Marxscher Schlag',
          'Marx Thrust': 'Marxscher Ansturm',
          'Neutralization': 'Unterwerfung',
          'Precision Guided Missile': 'Schwere Lenkrakete',
          'Radiate Heat': 'Thermaloffensive',
          'Ring Laser': 'Ringlaser',
          'Shockwave': 'Schockwelle',
          'Short-Range Missile': 'Kurzstreckenrakete',
          'Shrapnel Impact': 'Wrackteilregen',
          'Spin': 'Rotation',
          'Surface Missile': 'Raketenschlag',
          'Systematic Airstrike': 'Luftformation',
          'Systematic Siege': 'Kesselformation',
          'Systematic Suppression': 'Artillerieformation',
          'Systematic Targeting': 'Jagdformation',
          'Total Annihilation Maneuver': 'Offensive: Totale Vernichtung',
          'Undock': 'Abdocken',
          'Wall Mechanic': 'Wand Mechanik',
        },
      },
      {
        'locale': 'fr',
        'replaceSync': {
          '9S-operated Flight Unit': '9S : module de vol équipé',
          '9S-Operated Walking Fortress': '9S : avec multipède esclave',
          'Engels': 'Engels',
          '(?<! )Flight Unit': 'Module de vol',
          'Goliath Tank': 'Char Goliath',
          'Hobbes': 'Hobbes',
          'Marx': 'Marx',
          'Medium Exploder': 'Unité kamikaze moyenne',
          'Multi-leg Medium Model': 'Multipède moyen',
          'Quality assurance': 'la salle de test',
          'Reverse-jointed Goliath': 'Goliath articulations inversées',
          'Serial-jointed Command Model': 'Modèle multiarticulé : commandant',
          'Serial-jointed Service Model': 'Modèle multiarticulé : soldat',
          'Small Biped': 'Petit bipède',
          'Small Flyer': 'Petite unité volante',
          'The forward deck': 'la plate-forme avant',
          'The rear deck': 'la plate-forme arrière',
          'Warehouse A': 'l\'entrepôt A',
          'Warehouse B': 'l\'entrepôt B',
          'Warehouse C': 'l\'entrepôt C',
        },
        'replaceText': {
          '360-Degree Bombing Maneuver': 'Attaque : tir de missiles circulaire',
          'Adds': 'Adds',
          'Anti-Personnel Missile': 'Pluie de missiles antipersonnel',
          'Area Bombardment': 'Déluge de missiles',
          'Area Bombing Maneuver': 'Attaque : salve de missiles',
          'Arm Laser': 'Lasers brachiaux',
          'Cannons': 'Canons',
          'Clanging Blow': 'Attaque puissante',
          'Convenient Self-Destruction': 'Autodestruction',
          'Crusher Adds': 'Broyeurs',
          'Crushing Wheel': 'Scie circulaire',
          'Demolish Structure': 'Démolition de plate-forme',
          'Diffuse Laser': 'Laser diffractif',
          'Energy Assault': 'Tirs en éventail',
          'Energy Barrage': 'Rideau de balles',
          'Energy Blast': 'Fission de balle',
          'Energy Bombardment': 'Tirs courbes',
          'Energy Ring': 'Tirs multidirectionnels',
          'Engage Goliath Tank Support': 'Appel de renfort : char Goliath',
          'Engage Marx Support': 'Appel de renforts : Marx',
          'Exploding Tethers': 'Liens explosifs',
          'Floor': 'Sol',
          'Forceful Impact': 'Forte secousse',
          'Frontal Somersault': 'Attaque sautée',
          'Ground-To-Ground Missile': 'Missile sol-sol',
          '(?<! )Guided Missile': 'Missile à tête chercheuse',
          'Hack Goliath Tank': 'Piratage : char Goliath',
          'High-Caliber Laser': 'Laser à large faisceau',
          'High-Frequency Laser': 'Laser à haute fréquence',
          'High-Powered Laser': 'Laser surpuissant',
          'Incendiary Bombing': 'Missiles incendiaires',
          'Incendiary Saturation Bombing': 'Salve incendiaire',
          'Laser Saturation': 'Laser multidirectionnel',
          'Laser Sight': 'Rayon laser',
          'Laser Turret': 'Canon laser',
          'Laser-Resistance Test': 'Test de résistance au laser',
          'Lightfast Blade': 'Lame éclair',
          'Marx Activation': 'Activation de Marx',
          'Marx Crush': 'Pinçage de Marx',
          'Marx Impact': 'Chute de Marx',
          'Marx Smash': 'Coup de Marx',
          'Marx Thrust': 'Charge de Marx',
          'Neutralization': 'Tir de suppression',
          'Precision Guided Missile': 'Missile à tête chercheuse ultraprécise',
          'Radiate Heat': 'Relâchement de chaleur',
          'Ring Laser': 'Anneau laser',
          'Shockwave': 'Onde de choc',
          'Short-Range Missile': 'Missiles à courte portée',
          'Shrapnel Impact': 'Chute de débris',
          'Spin': 'Gyrocoup',
          'Surface Missile': 'Missiles sol-sol',
          'Systematic Airstrike': 'Formation de bombardement',
          'Systematic Siege': 'Formation d\'encerclement',
          'Systematic Suppression': 'Formation de balayage',
          'Systematic Targeting': 'Formation de tir',
          'Total Annihilation Maneuver': 'Attaque : bombardement dévastateur',
          'Undock': 'Désamarrage',
          'Wall Mechanic': 'Mécanique du mur',
        },
      },
      {
        'locale': 'ja',
        'replaceSync': {
          '9S-operated Flight Unit': '９Ｓ：飛行ユニット装備',
          '9S-Operated Walking Fortress': '９Ｓ：多脚戦車従属',
          'Engels': 'エンゲルス',
          '(?<! )Flight Unit': '飛行ユニット',
          'Goliath Tank': '大型戦車',
          'Hobbes': 'ホッブス',
          'Marx': 'マルクス',
          'Medium Exploder': '中型自爆',
          'Multi-leg Medium Model': '中型多脚',
          'Quality assurance': '検品場',
          'Reverse-jointed Goliath': '大型逆関節',
          'Serial-jointed Command Model': '多関節型：司令機',
          'Serial-jointed Service Model': '多関節型：兵隊機',
          'Small Biped': '小型二足',
          'Small Flyer': '小型飛行体',
          'The forward deck': '前部甲板',
          'The rear deck': '後部甲板',
          'Warehouse A': '倉庫A',
          'Warehouse B': '倉庫B',
          'Warehouse C': '倉庫C',
        },
        'replaceText': {
          '360-Degree Bombing Maneuver': '攻撃：ミサイル円射',
          '(?<! )Adds': '雑魚',
          'Anti-Personnel Missile': '対人ミサイル乱射',
          'Area Bombardment': 'ミサイル乱射',
          'Area Bombing Maneuver': '攻撃：ミサイル斉射',
          'Arm Laser': '腕部レーザー',
          'Cannons': 'カノン',
          'Clanging Blow': '強攻撃',
          'Convenient Self-Destruction': '自爆攻撃',
          'Crusher Adds': 'マルクス挟撃',
          'Crushing Wheel': '挟撃ホイール',
          'Demolish Structure': '地形破壊攻撃',
          'Diffuse Laser': '拡散レーザー',
          'Energy Assault': '連続エネルギー弾',
          'Energy Barrage': 'エネルギー弾幕',
          'Energy Blast': 'エネルギー炸裂',
          'Energy Bombardment': '迫撃エネルギー弾',
          'Energy Ring': '全方位エネルギー弾',
          'Engage Goliath Tank Support': '支援要請：大型戦車',
          'Engage Marx Support': '支援要請：マルクス',
          'Exploding Tethers': '爆発',
          'Floor': '床',
          'Forceful Impact': '大震動',
          'Frontal Somersault': 'ジャンプ攻撃',
          'Ground-To-Ground Missile': '地対地ミサイル',
          '(?<! )Guided Missile': '誘導ミサイル',
          'Hack Goliath Tank': 'ハッキング：大型戦車',
          'High-Caliber Laser': '大口径レーザー',
          'High-Frequency Laser': '高周波レーザー',
          'High-Powered Laser': '高出力レーザー',
          'Incendiary Bombing': '焼尽ミサイル',
          'Incendiary Saturation Bombing': '拡散焼尽ミサイル',
          'Laser Saturation': '全方位レーザー',
          'Laser Sight': 'レーザー照射',
          'Laser Turret': '主砲レーザー',
          'Laser-Resistance Test': '耐レーザー検証',
          'Lightfast Blade': '光刃斬機',
          'Marx Activation': 'マルクス起動',
          'Marx Crush': 'マルクス挟撃',
          'Marx Impact': 'マルクス落下',
          'Marx Smash': 'マルクス打撃',
          'Marx Thrust': 'マルクス突撃',
          'Neutralization': '制圧射撃',
          'Precision Guided Missile': '高性能誘導ミサイル',
          'Radiate Heat': '放熱攻撃',
          'Ring Laser': 'リングレーザー',
          'Serial-Jointed Adds': '多関節型雑魚',
          'Shockwave': '衝撃波',
          'Short-Range Missile': '短距離ミサイル',
          'Shrapnel Impact': '残骸落下',
          'Spin': 'ぶん回す',
          'Surface Missile': '対地ミサイル',
          'Systematic Airstrike': '空爆陣形',
          'Systematic Siege': '包囲陣形',
          'Systematic Suppression': '掃射陣形',
          'Systematic Targeting': '照準陣形',
          'Tank Adds': '戦車',
          'Total Annihilation Maneuver': '攻撃：殲滅爆撃',
          'Undock': 'ドッキング解除',
          'Wall Mechanic': '壁のギミック',
        },
      },
      {
        'locale': 'cn',
        'replaceSync': {
          '9S-operated Flight Unit': '9S：装备飞行装置',
          '9S-Operated Walking Fortress': '9S：接入多脚战车',
          'Engels': '昂格士',
          '(?<! )Flight Unit': '飞行装置',
          'Goliath Tank': '大型战车',
          'Hobbes': '霍布斯',
          'Marx': '麦喀士',
          'Medium Exploder': '中型自爆',
          'Multi-leg Medium Model': '中型多脚',
          'Quality assurance': '质检场',
          'Reverse-jointed Goliath': '大型逆关节',
          'Serial-Jointed Command Model': '多关节型：司令机',
          'Serial-Jointed Service Model': '多关节型：士兵机',
          'Small Biped': '小型二足',
          'Small Flyer': '小型飞行体',
          'The forward deck': '前部甲板',
          'The rear deck': '后部甲板',
          'Warehouse A': '仓库A',
          'Warehouse B': '仓库B',
          'Warehouse C': '仓库C',
        },
        'replaceText': {
          '360-Degree Bombing Maneuver': '攻击：周边导弹轰炸',
          'Anti-Personnel Missile': '对人导弹乱射',
          'Area Bombardment': '导弹乱射',
          'Area Bombing Maneuver': '攻击：追踪导弹轰炸',
          'Arm Laser': '腕部激光',
          'Cannons': '加农',
          'Clanging Blow': '强攻击',
          'Convenient Self-Destruction': '自爆攻击',
          'Crusher Adds': '粉碎机小怪',
          'Tank Adds': '坦克小怪',
          'Serial-Jointed Adds': '多关节型小怪',
          '(?<! )Adds': '小怪',
          'Crushing Wheel': '碾轮夹击',
          'Demolish Structure': '地形破坏攻击',
          'Wide-Angle Diffuse Laser': '广角扩散射线',
          '(?<! )Diffuse Laser': '扩散射线',
          'Energy Assault': '连续能量弹',
          'Energy Barrage': '能量弹幕',
          'Energy Blast': '能量炸裂',
          'Energy Bombardment': '迫击能量弹',
          'Energy Ring': '全方位能量弹',
          'Engage Goliath Tank Support': '请求支援：大型战车',
          'Engage Marx Support': '请求支援：麦喀士',
          'Exploding Tethers': '爆炸连线',
          'Floor': '地板',
          'Forceful Impact': '大震动',
          'Frontal Somersault': '跳跃攻击',
          'Ground-To-Ground Missile': '地对地导弹',
          'Precision Guided Missile': '高性能追踪导弹',
          '(?<! )Guided Missile': '追踪导弹',
          'Hack Goliath Tank': '骇入：大型战车',
          'High-Caliber Laser': '大口径激光',
          'High-Frequency Laser': '高周波激光',
          'High-Powered Laser': '高功率激光',
          'Incendiary Bombing': '燃烧导弹',
          'Incendiary Saturation Bombing': '扩散燃烧导弹',
          'Laser Saturation': '全方位激光',
          'Laser Sight': '激光照射',
          'Laser Turret': '主炮激光',
          'Laser-Resistance Test': '耐激光检测',
          'Lightfast Blade': '光刃斩机',
          'Marx Activation': '麦喀士启动',
          'Marx Crush': '麦喀士夹击',
          'Marx Impact': '麦喀士冲击',
          'Marx Smash L/R': '麦喀士打击左/右',
          'Marx Smash R/L': '麦喀士打击右/左',
          'Marx Smash F/B': '麦喀士打击前/后',
          'Marx Smash B/F': '麦喀士打击后/前',
          'Marx Smash(?! )': '麦喀士打击',
          'Marx Thrust': '麦喀士突击',
          'Neutralization': '压制射击',
          'Radiate Heat': '放热攻击',
          'Ring Laser': '环形激光',
          'Shockwave': '冲击波',
          'Short-Range Missile': '短途导弹',
          'Shrapnel Impact': '残骸坠落',
          'Spin': '回转',
          'Surface Missile': '对地导弹',
          'Systematic Airstrike': '空袭阵型',
          'Systematic Siege': '包围阵型',
          'Systematic Suppression': '扫射阵型',
          'Systematic Targeting': '瞄准阵型',
          'Total Annihilation Maneuver': '攻击：歼灭轰炸',
          'Undock': '对接解除',
          'Wall Mechanic': '墙机制',
        },
      },
      {
        'locale': 'ko',
        'replaceSync': {
          '9S-operated Flight Unit': '9S: 비행 유닛 장비',
          '9S-Operated Walking Fortress': '9S: 다각전차 종속',
          'Engels': '엥겔스',
          '(?<! )Flight Unit': '비행 유닛',
          '(?<! )Goliath Tank': '대형 전차',
          'Hobbes': '홉스',
          'Marx': '마르크스',
          'Medium Exploder': '중형 자폭',
          'Multi-leg Medium Model': '중형 다각',
          'Quality assurance': '검품장',
          'Reverse-jointed Goliath': '대형 역관절',
          'Serial-jointed Command Model': '다관절형: 사령기',
          'Serial-jointed Service Model': '다관절형: 병정기',
          'Small Biped': '소형 이족',
          'Small Flyer': '소형 비행체',
          'The forward deck': '전방 갑판',
          'The rear deck': '후방 갑판',
          'Warehouse A': '창고 A',
          'Warehouse B': '창고 B',
          'Warehouse C': '창고 C',
        },
        'replaceText': {
          'F/B': '앞/뒤',
          'B/F': '뒤/앞',
          'L/R': '좌/우',
          'R/L': '우/좌',
          '360-Degree Bombing Maneuver': '공격: 미사일 원형 사격',
          'Tank Adds': '대형 전차 쫄',
          'Serial-Jointed Adds': ' 다관절형 쫄',
          '(?<! )Adds': '쫄',
          'Anti-Personnel Missile': '대인 미사일 난사',
          'Area Bombardment': '미사일 난사',
          'Area Bombing Maneuver': '공격: 미사일 일제 사격',
          'Arm Laser': '팔 레이저',
          'Cannons': '일제 사격',
          'Clanging Blow': '강공격',
          'Convenient Self-Destruction': '자폭 공격',
          'Crusher Adds': '분쇄',
          'Crushing Wheel': '협공 차륜',
          'Demolish Structure': '지형 파괴 공격',
          '(?<! )Diffuse Laser': '확산 레이저', // 같은 영어에 다른 번역 - 광확산 레이저, 확산 레이저 번역 두 개
          'Energy Assault': '연속 에너지탄',
          'Energy Barrage': '에너지 탄막',
          'Energy Blast': '에너지 작렬',
          'Energy Bombardment': '박격 에너지탄',
          'Energy Ring': '전방위 에너지탄',
          'Engage Goliath Tank Support': '지원 요청: 대형 전차',
          'Engage Marx Support': '지원 요청: 마르크스',
          'Exploding Tethers': '선: 폭발',
          'Floor': '바닥 장판',
          'Forceful Impact': '대진동',
          'Frontal Somersault': '점프 공격',
          'Ground-To-Ground Missile': '지대지 미사일',
          '(?<! )Guided Missile': '유도 미사일',
          'Hack Goliath Tank': '해킹: 대형 전차',
          'High-Caliber Laser': '대구경 레이저',
          'High-Frequency Laser': '고주파 레이저',
          'High-Powered Laser': '고출력 레이저',
          'Incendiary Bombing': '소진 미사일',
          'Incendiary Saturation Bombing': '확산 소진 미사일',
          'Laser Saturation': '전방위 레이저',
          'Laser Sight': '레이저 광선',
          'Laser Turret': '주포 레이저',
          'Laser-Resistance Test': '레이저 저항 검증',
          'Lightfast Blade': '빛의 칼날 베기',
          'Marx Activation': '마르크스 기동',
          'Marx Crush': '마르크스 협공',
          'Marx Impact': '마르크스 낙하',
          'Marx Smash': '마르크스 타격',
          'Marx Thrust': '마르크스 돌격',
          'Neutralization': '제압 사격',
          'Precision Guided Missile': '고성능 유도 미사일',
          'Radiate Heat': '열 방출 공격',
          'Ring Laser': '고리 레이저',
          'Shockwave': '충격파',
          'Short-Range Missile': '단거리 미사일',
          'Shrapnel Impact': '잔해 낙하',
          'Spin': '회전 공격',
          'Surface Missile': '대지 미사일',
          'Systematic Airstrike': '공폭 진형',
          'Systematic Siege': '포위 진형',
          'Systematic Suppression': '소사 진형',
          'Systematic Targeting': '조준 진형',
          'Total Annihilation Maneuver': '공격: 섬멸 폭격',
          'Undock': '도킹 해제',
          'Wall Mechanic': '벽 기믹',
          'Wide-Angle Diffuse Laser': '광확산 레이저',
        },
      },
    ],
  };
  