diff --git a/00-misc/test.js b/00-misc/test.js index 4b778e9544..51463b430e 100644 --- a/00-misc/test.js +++ b/00-misc/test.js @@ -376,7 +376,6 @@ Options.Triggers.push({ timelineReplace: [ { locale: 'de', - missingTranslations: true, replaceSync: { 'You bid farewell to the striking dummy': 'Du winkst der Trainingspuppe zum Abschied zu', 'You bow courteously to the striking dummy': @@ -389,6 +388,7 @@ Options.Triggers.push({ 'cactbot test config': 'cactbot test konfig', 'cactbot test outputStrings': 'cactbot test outputStrings', 'cactbot test combatant cast': 'cactbot test gegner wirken', + 'testNetRegexTimeline': 'testNetRegexTimeline', 'You clap for the striking dummy': 'Du klatschst begeistert Beifall für die Trainingspuppe', 'You psych yourself up alongside the striking dummy': 'Du willst wahren Kampfgeist in der Trainingspuppe entfachen', diff --git a/04-sb/ultimate/ultima_weapon_ultimate.js b/04-sb/ultimate/ultima_weapon_ultimate.js index 2ee0f0ec8e..252b658e00 100644 --- a/04-sb/ultimate/ultima_weapon_ultimate.js +++ b/04-sb/ultimate/ultima_weapon_ultimate.js @@ -746,6 +746,10 @@ Options.Triggers.push({ en: `If the first nail is SE, this will call SE/NW for both reverse-Z and normal-Z. If the first nail is S, this will call SE/NW for reverse-Z and SW/NE for normal-Z. Other nail orders are also supported, these are just examples.`, + de: + `Wenn der erste Nagel SO ist, wird dies SO/NW sowohl für Umgekehrtes-Z als auch für Normal-Z aufgerufen. + Wenn der erste Nagel S ist, wird dies SO/NW für Umgekehrtes-Z und SW/NO für Normal-Z aufgerufen. + Andere Nagelreihenfolgen werden ebenfalls unterstützt, dies sind nur Beispiele.`, cn: `如果第一个火神柱在东南,则反向 Z 和正常 Z 都会提示东南/西北 如果第一个火神柱在南, 则反向 Z 将提示东南/西北,正常 Z 将提示西南/东北。 这些只是示例, 还支持其他火神柱顺序。`, @@ -792,6 +796,10 @@ Options.Triggers.push({ en: `If the first nail was on an intercard, then the first Ifrit dash is on an intercard and this optional call is to move to be adjacent to that first dash. If you are already safe, this will not be called.`, + de: + `Wenn der erste Nagel Interkardinal war, dann ist der erste Ifrit-Ansturm auf einer Interkardinalen + und dieser optionale Aufruf besteht darin, sich in die Nähe dieses ersten Ansturms zu bewegen. + Wenn man bereits in Sicherheit ist, wird dies nicht aufgerufen.`, cn: `如果第一个火神柱在对角线上,那么第一次火神冲也在对角线上。 这个可选提示会提示你移动到第一次火神冲附近的位置。 如果你已在安全区,则不会输出此提示。`, @@ -836,6 +844,11 @@ Options.Triggers.push({ Both the party and the healer will move either 45 or 90 degrees. It is a "fast" movement if you need to move fast to avoid the Ifrit follow-up dash. It is a "slow" movement if you have extra time to do this.`, + de: + `Dies ist die Hauptbewegung für die Ifrit-Anstürme, die in der Nähe des ersten Ansturms beginnt. + Sowohl die Gruppe als auch der Heiler bewegen sich entweder um 45 oder 90 Grad. + Es ist eine "schnelle" Bewegung, wenn man sich schnell bewegen muss, um dem Ifrit-Folgeschlag auszuweichen. + Es ist eine "langsame" Bewegung, wenn man mehr Zeit hat, dies zu tun.`, cn: `这是从第一次火神冲附近开始的火神冲主要移动。 人群和奶妈都将移动 45 度或 90 度。 "快" 可以让你快速移动,躲避第二次火神冲。 diff --git a/05-shb/raid/e12s.js b/05-shb/raid/e12s.js index bf4385ac57..e077d4bf6e 100644 --- a/05-shb/raid/e12s.js +++ b/05-shb/raid/e12s.js @@ -259,6 +259,7 @@ Options.Triggers.push({ }, formlessBusterBLU: { en: 'Buster on YOU (w/${player})', + de: 'Tankbuster auf DIR (mit ${player})', fr: 'Tankbuster sur VOUS (avec ${player})', cn: '死刑点名 (与${player})', ko: '탱버 대상자 (+${player})', @@ -381,12 +382,14 @@ Options.Triggers.push({ output.responseOutputStrings = { stackOnYou: { en: 'Stack on YOU (w/${player})', + de: 'Auf DIR sammeln (mit ${player})', fr: 'Package sur VOUS (avec ${player})', cn: '分摊点名 (与${player})', ko: '쉐어 대상자 (+${player})', }, stacks: { en: 'Stacks: ${players}', + de: 'Sammeln: ${players}', fr: 'Package: ${players}', cn: '分摊: ${players}', ko: '쉐어: ${players}', @@ -1197,7 +1200,7 @@ Options.Triggers.push({ output.responseOutputStrings = { shadoweye: { en: 'Eye (w/${player})', - de: 'Auge auf DIR (w/${player})', + de: 'Auge (mit ${player})', fr: 'Œil (avec ${player})', ja: '自分に目 (w/${player})', cn: '石化眼点名 (与${player})', @@ -1205,6 +1208,7 @@ Options.Triggers.push({ }, water: { en: 'Stack (w/${player})', + de: 'Sammeln (mit ${player})', fr: 'Pack (avec ${player})', cn: '分摊 (与${player})', ko: '쉐어징 (+${player})', @@ -1537,6 +1541,7 @@ Options.Triggers.push({ }, stacksOn: { en: 'Stacks (${player1}, ${player2})', + de: 'Sammeln (${player1}, ${player2})', fr: 'Packages (${player1}, ${player2})', cn: '分摊 (${player1}, ${player2})', ko: '쉐어 (${player1}, ${player2})', @@ -1551,6 +1556,7 @@ Options.Triggers.push({ }, knockbackIntoStacksOn: { en: 'Knockback => Stacks (${player1}, ${player2})', + de: 'Rückstoß => Sammeln (${player1}, ${player2})', fr: 'Poussée => Package (${player1}, ${player2})', cn: '击退 => 分摊 (${player1}, ${player2})', ko: '넉백 => 쉐어 (${player1}, ${player2})', @@ -1618,6 +1624,7 @@ Options.Triggers.push({ }, stacksOn: { en: 'Stacks (${player1}, ${player2})', + de: 'Sammeln (${player1}, ${player2})', fr: 'Packages (${player1}, ${player2})', cn: '分摊 (${player1}, ${player2})', ko: '쉐어 (${player1}, ${player2})', @@ -1644,7 +1651,7 @@ Options.Triggers.push({ output.responseOutputStrings = { shadoweye: { en: 'Eye (w/${player})', - de: 'Auge auf DIR (w/${player})', + de: 'Auge (mit ${player})', fr: 'Œil(avec ${player})', ja: '自分に目 (w/${player})', cn: '石化眼点名 (与${player})', @@ -1652,7 +1659,7 @@ Options.Triggers.push({ }, doubleAero: { en: 'Double Aero (w/${player})', - de: 'Doppel Windga auf DIR (w/${player})', + de: 'Doppel Windga (mit ${player})', fr: 'Double Vent(avec ${player})', ja: '自分にエアロガ×2 (w/${player})', cn: '双风点名 (与${player})', @@ -1660,7 +1667,7 @@ Options.Triggers.push({ }, spread: { en: 'Spread (w/${player1}, ${player2}, ${player3})', - de: 'Verteilen auf DIR (w/${player1}, ${player2}, ${player3})', + de: 'Verteilen (mit ${player1}, ${player2}, ${player3})', fr: 'Dispersion (avec ${player1}, ${player2}, ${player3})', ja: '自分に散開 (w/${player1}, ${player2}, ${player3})', cn: '分散点名 (与${player1}, ${player2}, ${player3})', diff --git a/05-shb/raid/e4s.js b/05-shb/raid/e4s.js index 250a069838..f4e5039310 100644 --- a/05-shb/raid/e4s.js +++ b/05-shb/raid/e4s.js @@ -56,6 +56,7 @@ Options.Triggers.push({ outputStrings: { text: { en: 'Yellow Spread', + de: 'Gelb Verteilen', fr: 'Dispersion des jaunes', cn: '黄标分散', ko: '노란색 산개', @@ -88,6 +89,7 @@ Options.Triggers.push({ outputStrings: { text: { en: 'Orange Stack', + de: 'Orange Sammeln', fr: 'Package des oranges', cn: '橙标分摊', ko: '주황색 쉐어', @@ -349,6 +351,7 @@ Options.Triggers.push({ outputStrings: { text: { en: 'Blue Weight', + de: 'Blau Gewicht', fr: 'Poids bleu', cn: '蓝标大陆之重', ko: '파란징 대륙의 무게', @@ -398,6 +401,7 @@ Options.Triggers.push({ outputStrings: { text: { en: 'Gaol on YOU (w/${player})', + de: 'Gefängnis auf DIR (mit ${player})', fr: 'Geôle sur VOUS (avec ${player})', cn: '石牢点名 (与${player})', ko: '돌감옥 대상자 (+${player})', @@ -421,7 +425,7 @@ Options.Triggers.push({ outputStrings: { leftOrBack: { en: 'Left (or Back)', - de: 'VON VORNE RECHTS RUNTER', + de: 'Links (oder Hinten)', fr: 'Gauche (ou Arrière)', ja: '右前壊れるよ', cn: '左 (或 后)', @@ -448,7 +452,7 @@ Options.Triggers.push({ outputStrings: { leftOrFront: { en: 'Left (or Front)', - de: 'VON HINTEN RECHTS RUNTER', + de: 'Links (oder Vorne)', fr: 'Gauche (ou Devant)', ja: '右後ろ壊れるよ', cn: '左 (或 前)', @@ -475,7 +479,7 @@ Options.Triggers.push({ outputStrings: { frontOrRight: { en: 'Right (or Front)', - de: 'VON HINTEN LINKS RUNTER', + de: 'Rechts (oder Vorne)', fr: 'Droite (ou Devant)', ja: '左後ろ壊れるよ', cn: '右 (或 前)', @@ -502,7 +506,7 @@ Options.Triggers.push({ outputStrings: { backOrRight: { en: 'Right (or Back)', - de: 'VON VORNE LINKS RUNTER', + de: 'Rechts (oder Hinten)', fr: 'Droite (ou Arrière)', ja: '左前壊れるよ', cn: '右 (或 后)', diff --git a/05-shb/raid/e8s.js b/05-shb/raid/e8s.js index f74a8a3fdb..af7de9cbe7 100644 --- a/05-shb/raid/e8s.js +++ b/05-shb/raid/e8s.js @@ -48,6 +48,15 @@ Options.Triggers.push({ Tanks adjust to where the Red and Green Mirror are located. One tank must be inbetween the party, the other closest to Greem Mirror. Once Green Mirror goes off, the tanks adjust for Red Mirror.`, + de: + `Wenn du möchten, dass Cactbot den doppelten Knockback von Spiegelland 4 auslöst, aktivieren Sie diese Option. + Die Anzeige erfolgt während/nach den Drehungen des Bosses und erfordert <1,4s Reaktionszeit + um sowohl den grünen als auch den roten Spiegel-Rückstoß zu vermeiden. + Beispiel: https://clips.twitch.tv/CreativeDreamyAsparagusKlappa + Die Gruppe teilt sich nach dem Sprung hinter dem Boss in zwei Gruppen auf. + Die Tanks passen sich danach an, wo sich der rote und der grüne Spiegel befinden. + Ein Tank muss sich in der Mitte der Gruppe befinden, der andere in der Nähe des grünen Spiegels. + Sobald der grüne Spiegel ausgelöst wird, passen sich die Tanks auf den roten Spiegel an.`, fr: `Si vous voulez que cactbot signale le double knockback de Mirror Mirror 4, activez cette option. L'annonce se fait pendant/après les tours du boss et nécessite un temps de réaction < à 1.4s @@ -183,12 +192,14 @@ Options.Triggers.push({ outputStrings: { scytheNext: { en: '(under boss => under mirrors soon)', + de: '(unter den Boss => gleich unter den Spiegel)', fr: '(sous le boss => sous les miroirs bientôt', cn: '(BOSS 下方 => 即将去镜子下方)', ko: '(보스 밑 => 이후 거울 밑)', }, axeNext: { en: '(out => middle soon)', + de: '(raus => gleich Mitte)', cn: '(外 => 即将去中间)', ko: '(밖 => 이후 중앙)', }, @@ -222,12 +233,14 @@ Options.Triggers.push({ outputStrings: { redMirrorWest: { en: 'Behind => SW', + de: 'Hinten => SW', fr: 'Derrière => SO', cn: '后 => 左下 (西南)', ko: '뒤 => 남서', }, redMirrorEast: { en: 'Behind => SE', + de: 'Hinten => SO', fr: 'Derrière => SE', cn: '后 => 右下 (东南)', ko: '뒤 => 남동', @@ -250,12 +263,14 @@ Options.Triggers.push({ outputStrings: { redMirrorEast: { en: 'Front => NW', + de: 'Vorne => NW', fr: 'Devant => NO', cn: '前 => 左上 (西北)', ko: '앞 => 북서', }, redMirrorWest: { en: 'Front => NE', + de: 'Vorne => NO', fr: 'Devant => NE', cn: '前 => 右上 (东北)', ko: '앞 => 북동', @@ -323,7 +338,7 @@ Options.Triggers.push({ outputStrings: { bitingFrostNext: { en: 'Biting Next (face outward)', - de: 'Frosthieb als nächstes', + de: 'Frosthieb als nächstes (nach außen drehen)', fr: 'Taillade de givre (pointez vers l\'extérieur)', ja: '次はフロストスラッシュ', cn: '冰霜斩 (去背后)', @@ -331,7 +346,7 @@ Options.Triggers.push({ }, drivingFrostNext: { en: 'Driving Next (face inward)', - de: 'Froststoß als nächstes', + de: 'Froststoß als nächstes (nach innen drehen)', fr: 'Percée de givre (pointez vers l\'intérieur)', ja: '次はフロストスラスト', cn: '冰霜刺 (去前面)', @@ -365,6 +380,7 @@ Options.Triggers.push({ outputStrings: { cleanse: { en: 'Cleanse: ${players}', + de: 'Reinige: ${players}', fr: 'Guérison : ${players}', cn: '驱散: ${players}', ko: '에스나: ${players}', @@ -380,6 +396,7 @@ Options.Triggers.push({ outputStrings: { text: { en: 'Star on YOU', + de: 'Stern auf DIR', fr: 'Étoile sur VOUS', cn: '冰针点名', ko: '별 징 대상자', @@ -473,6 +490,7 @@ Options.Triggers.push({ outputStrings: { outThenMiddle: { en: 'Out => Middle', + de: 'Raus => Mitte', fr: 'Extérieur => Milieu', cn: '远离 => 中间', ko: '밖 => 중앙', @@ -498,18 +516,21 @@ Options.Triggers.push({ outputStrings: { getUnderCards: { en: 'Under => Under Cardinal Mirrors', + de: 'Unter den Boss => Unter Kardinal-Spiegel', fr: 'Dessous => Sous les miroirs cardinaux', cn: '下方 => 正点镜下方', ko: '보스 밑 => 십자 방향 거울 밑', }, getUnderIntercards: { en: 'Under => Under Intercard Mirrors', + de: 'Unter den Boss => Unter Interkardinal-Spiegel', fr: 'Dessous => Sous les miroirs intercardinaux', cn: '下方 => 斜点镜下方', ko: '보스 밑 => 대각선 방향 거울 밑', }, getUnderUnknown: { en: 'Under Boss => Under Mirrors', + de: 'Unter den Boss => Unter Spiegel', fr: 'Sous le boss => Sous les miroirs', cn: 'BOSS 下方 => 镜下方', ko: '보스 밑 => 거울 밑', @@ -578,12 +599,14 @@ Options.Triggers.push({ output.responseOutputStrings = { getFinalTower: { en: 'Get Final Tower', + de: 'Nimm letzten Turm', fr: 'Prenez la tour finale', cn: '踩最后塔', ko: '마지막 기둥 들어가기', }, avoidFinalTower: { en: 'Avoid Final Tower', + de: 'Vermeide letzten Turm', fr: 'Évitez la tour finale', cn: '躲最后塔', ko: '마지막 기둥 피하기', @@ -635,6 +658,7 @@ Options.Triggers.push({ outputStrings: { text: { en: 'Stun Aqueous Aether', + de: 'Wasseräther unterbrechen', fr: 'Étourdissez l\'ether aqueux', cn: '眩晕水以太', ko: '물 에테르 기절', @@ -735,6 +759,9 @@ Options.Triggers.push({ en: `Fast means you can go from the 1st to the 3rd safe spot directly. Slow means you need to go 1 => 2 => 3 without skipping 2. This is for casters who may not want to move as much.`, + de: `Schnell bedeutet, dass man direkt vom 1. zum 3. sicheren Punkt gehen kann. + Langsam bedeutet, dass man 1 => 2 => 3 gehen muss, ohne 2 zu überspringen. + Dies ist für Magier, die sich vielleicht nicht so viel bewegen wollen.`, fr: `Rapide signifie que vous pouvez passer directement du premier au troisième point sûr. Lent signifie que vous devez aller de 1 => 2 => 3 sans omettre 2. C'est pour les lanceurs de sorts qui ne veulent pas se déplacer autant.`, @@ -795,12 +822,14 @@ Options.Triggers.push({ outputStrings: { slowText: { en: '${dir1} => ${dir2} => ${dir3} (slow)', + de: '${dir1} => ${dir2} => ${dir3} (langsam)', fr: '${dir1} => ${dir2} => ${dir3} (lent)', cn: '${dir1} => ${dir2} => ${dir3} (慢)', ko: '${dir1} => ${dir2} => ${dir3} (느림)', }, fastText: { en: '${dir1} => ${dir2} => ${dir3} (fast)', + de: '${dir1} => ${dir2} => ${dir3} (schnell)', fr: '${dir1} => ${dir2} => ${dir3} (rapide)', cn: '${dir1} => ${dir2} => ${dir3} (快)', ko: '${dir1} => ${dir2} => ${dir3} (빠름)', @@ -996,12 +1025,14 @@ Options.Triggers.push({ outputStrings: { redDragonHead: { en: 'Pop Head #${num}', + de: 'Nimm Kopf #${num}', fr: 'Tête #${num}', cn: '撞头 #${num}', ko: '${num}번 머리 부딪히기', }, bluePuddle: { en: 'Get Puddle #${num}', + de: 'Nimm Fläche #${num}', fr: 'Prenez le puddle #${num}', cn: '踩圈 #${num}', ko: '${num}번 장판 밟기', @@ -1078,6 +1109,7 @@ Options.Triggers.push({ }, bluCleanse: { en: 'Exuviation', + de: 'Exuviation', fr: 'Exuviation', cn: '蜕皮', ko: '허물 벗기', @@ -1131,12 +1163,14 @@ Options.Triggers.push({ outputStrings: { proteanGetFinalTower: { en: 'Protean => Get Final Tower', + de: 'Himmelsrichtung => Nimm letzten Turm', fr: 'Positions => Prenez la tour finale', cn: '八方分散 => 踩最后塔', ko: '8방향 산개 => 마지막 기둥 들어가기', }, proteanAvoidFinalTower: { en: 'Protean => Avoid Final Tower', + de: 'Himmelsrichtung => Vermeide letzten Turm', fr: 'Position => Évitez la tour finale', cn: '八方分散 => 躲最后塔', ko: '8방향 산개 => 마지막 기둥 피하기', diff --git a/05-shb/trial/titania-ex.js b/05-shb/trial/titania-ex.js index e981e0d219..6e9a4b90d1 100644 --- a/05-shb/trial/titania-ex.js +++ b/05-shb/trial/titania-ex.js @@ -121,6 +121,7 @@ Options.Triggers.push({ outputStrings: { breakTether: { en: 'Break Tether (w/${player})', + de: 'Verbindungen brechen (mit ${player})', cn: '拉断连线 (与${player})', ko: '선 끊기 (+${player})', },