From 5fd5411bc4d5e2513d569f1b95321d0785ec243a Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Thu, 5 Jan 2023 20:47:48 -0800 Subject: [PATCH] Create elementalizeAetherialMastery.tsx This method elementalizes aetherial mastery strings based on a GridCharacter. Also add the opposite element's ID to TeamElement. --- data/elements.tsx | 8 ++++ types/TeamElement.d.ts | 1 + utils/elementalizeAetherialMastery.tsx | 54 ++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 utils/elementalizeAetherialMastery.tsx diff --git a/data/elements.tsx b/data/elements.tsx index 8c82ec17..133552f8 100644 --- a/data/elements.tsx +++ b/data/elements.tsx @@ -1,5 +1,6 @@ export const allElement: TeamElement = { id: -1, + opposite_id: -1, name: { en: 'All', ja: '全s', @@ -9,6 +10,7 @@ export const allElement: TeamElement = { export const elements: TeamElement[] = [ { id: 0, + opposite_id: 0, name: { en: 'Null', ja: '無', @@ -16,6 +18,7 @@ export const elements: TeamElement[] = [ }, { id: 1, + opposite_id: 4, name: { en: 'Wind', ja: '風', @@ -23,6 +26,7 @@ export const elements: TeamElement[] = [ }, { id: 2, + opposite_id: 1, name: { en: 'Fire', ja: '火', @@ -30,6 +34,7 @@ export const elements: TeamElement[] = [ }, { id: 3, + opposite_id: 2, name: { en: 'Water', ja: '水', @@ -37,6 +42,7 @@ export const elements: TeamElement[] = [ }, { id: 4, + opposite_id: 3, name: { en: 'Earth', ja: '土', @@ -44,6 +50,7 @@ export const elements: TeamElement[] = [ }, { id: 5, + opposite_id: 6, name: { en: 'Dark', ja: '闇', @@ -51,6 +58,7 @@ export const elements: TeamElement[] = [ }, { id: 6, + opposite_id: 5, name: { en: 'Light', ja: '光', diff --git a/types/TeamElement.d.ts b/types/TeamElement.d.ts index a8275831..43289f6f 100644 --- a/types/TeamElement.d.ts +++ b/types/TeamElement.d.ts @@ -1,5 +1,6 @@ interface TeamElement { id: number + opposite_id: number name: { en: string ja: string diff --git a/utils/elementalizeAetherialMastery.tsx b/utils/elementalizeAetherialMastery.tsx new file mode 100644 index 00000000..e859bf77 --- /dev/null +++ b/utils/elementalizeAetherialMastery.tsx @@ -0,0 +1,54 @@ +import { elements } from '~data/elements' +import { aetherialMastery } from '~data/overMastery' + +export default function elementalizeAetherialMastery( + gridCharacter: GridCharacter +) { + const elementalized = aetherialMastery.map((modifier) => { + const element = elements.find( + (element) => element.id === gridCharacter.object.element + ) + const oppositeElement = elements.find( + (element) => element.id === element.opposite_id + ) + const newModifier = modifier + + if (element && oppositeElement && modifier.name.en.includes('{Element}')) { + if (modifier.id === 3) { + newModifier.name.en = newModifier.name.en.replace( + '{Element}', + element.name.en + ) + newModifier.name.ja = newModifier.name.ja.replace( + '{Element}', + element.name.ja + ) + } else if (modifier.id === 4) { + newModifier.name.en = newModifier.name.en.replace( + '{Element}', + oppositeElement.name.en + ) + newModifier.name.ja = newModifier.name.ja.replace( + '{Element}', + oppositeElement.name.ja + ) + } + } + + return newModifier + }) + + elementalized.unshift({ + id: 0, + name: { + en: 'No aetherial mastery', + ja: 'エーテリアルプラス', + }, + slug: 'no-mastery', + minValue: 0, + maxValue: 0, + fractional: false, + }) + + return elementalized +}