Add recommended equipments for battlesuits

This commit is contained in:
Sakura Knoll
2022-03-06 20:33:03 +09:00 Unverified
parent a647beace1
commit e73803e11f
31 changed files with 347 additions and 5 deletions
@@ -5,6 +5,15 @@
"type": "psychic",
"valkyrie": "fuhua",
"features": ["fire-dmg", "time mastery", "gather", "ignite"],
"equipment": [
{
"type": "recommended",
"weapon": "cosmic-duality",
"stigmataTop": "fu-hua-margrave-top",
"stigmataMid": "fu-hua-margrave-mid",
"stigmataBot": "fu-hua-margrave-bot"
}
],
"leader": {
"core": {
"name": "Hex of Exposure",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "rita",
"features": ["ice-dmg", "burst", "freeze"],
"equipment": [
{
"type": "recommended",
"weapon": "skadi-of-thrymheim",
"stigmataTop": "ana-schariac-top",
"stigmataMid": "ana-schariac-mid",
"stigmataBot": "ana-schariac-bot"
}
],
"leader": {
"core": {
"name": "Herald of Dawn",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "asuka",
"features": ["physical", "time mastery"],
"equipment": [
{
"type": "recommended",
"weapon": "lance-of-longinus",
"stigmataTop": "columbus-top",
"stigmataMid": "columbus-mid",
"stigmataBot": "columbus-bot"
}
],
"leader": {
"core": {
"name": "Heart: Pure Again",
@@ -5,6 +5,15 @@
"type": "mecha",
"valkyrie": "durandal",
"features": ["physical", "burst", "time mastery", "heavy-atk"],
"equipment": [
{
"type": "recommended",
"weapon": "abyss-flower-liminal-spiral",
"stigmataTop": "dante-top",
"stigmataMid": "dante-mid",
"stigmataBot": "dante-bot"
}
],
"leader": {
"core": {
"name": "Horns of Jericho",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "durandal",
"features": ["fire-dmg", "time mastery", "gather", "ignite"],
"equipment": [
{
"type": "recommended",
"weapon": "sagittarius-astra",
"stigmataTop": "shakespeare-adrift-top",
"stigmataMid": "shakespeare-adrift-mid",
"stigmataBot": "shakespeare-adrift-bot"
}
],
"leader": {
"core": {
"name": "Crux Galactica",
@@ -5,6 +5,15 @@
"type": "quantum",
"valkyrie": "rita",
"features": ["lightning-dmg", "time mastery", "gather", "paralyze"],
"equipment": [
{
"type": "recommended",
"weapon": "iris-of-helheim",
"stigmataTop": "irene-adler-top",
"stigmataMid": "irene-adler-mid",
"stigmataBot": "irene-adler-bot"
}
],
"leader": {
"core": {
"name": "Tonight or Never",
@@ -5,6 +5,15 @@
"type": "psychic",
"valkyrie": "olenyevas",
"features": ["physical", "gather", "time mastery"],
"equipment": [
{
"type": "recommended",
"weapon": "sleeper-s-dream",
"stigmataTop": "dickens-top",
"stigmataMid": "dickens-mid",
"stigmataBot": "dickens-bot"
}
],
"leader": {
"core": {
"name": "SHOWTIME!",
@@ -5,6 +5,15 @@
"type": "psychic",
"valkyrie": "bronya",
"features": ["ice-dmg", "time mastery", "fast atk"],
"equipment": [
{
"type": "recommended",
"weapon": "crusher-bunny-19c",
"stigmataTop": "turgenev-top",
"stigmataMid": "turgenev-mid",
"stigmataBot": "turgenev-bot"
}
],
"leader": {
"core": {
"name": "H-T-T-P-S",
@@ -5,6 +5,15 @@
"type": "psychic",
"valkyrie": "kiana",
"features": ["fire-dmg", "heal", "time mastery", "gather", "aerial"],
"equipment": [
{
"type": "recommended",
"weapon": "key-of-radiance",
"stigmataTop": "murata-himeko-top",
"stigmataMid": "murata-himeko-mid",
"stigmataBot": "murata-himeko-bot"
}
],
"leader": {
"core": {
"name": "Nameless Knight-Errant's Path",
@@ -5,6 +5,15 @@
"type": "mecha",
"valkyrie": "bronya",
"features": ["ice-dmg", "burst", "time mastery", "freeze"],
"equipment": [
{
"type": "recommended",
"weapon": "domain-of-revelation",
"stigmataTop": "welt-yang-top",
"stigmataMid": "welt-yang-mid",
"stigmataBot": "welt-yang-bot"
}
],
"leader": {
"core": {
"name": "Source Protocol",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "fuhua",
"features": ["physical", "impair", "burst", "time mastery", "gather"],
"equipment": [
{
"type": "recommended",
"weapon": "domain-of-sentience",
"stigmataTop": "shattered-swords-top",
"stigmataMid": "shattered-swords-mid",
"stigmataBot": "shattered-swords-bot"
}
],
"leader": {
"core": {
"name": "Alliteration is an Agony",
@@ -11,6 +11,15 @@
"fast atk",
"paralyze"
],
"equipment": [
{
"type": "recommended",
"weapon": "domain-of-sanction",
"stigmataTop": "benares-awakening-top",
"stigmataMid": "benares-awakening-mid",
"stigmataBot": "benares-awakening-bot"
}
],
"leader": {
"core": {
"name": "Yaoyorozu",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "kiana",
"features": ["physical", "time mastery", "fast atk", "aerial"],
"equipment": [
{
"type": "recommended",
"weapon": "domain-of-the-void",
"stigmataTop": "sirin-ascendant-top",
"stigmataMid": "sirin-ascendant-mid",
"stigmataBot": "sirin-ascendant-bot"
}
],
"leader": {
"core": {
"name": "Void Throne",
@@ -5,6 +5,15 @@
"type": "mecha",
"valkyrie": "mobius",
"features": ["lightning-dmg", "time mastery", "aerial"],
"equipment": [
{
"type": "recommended",
"weapon": "basilisk-s-image-deathshroud",
"stigmataTop": "linnaeus-top",
"stigmataMid": "linnaeus-mid",
"stigmataBot": "linnaeus-bot"
}
],
"leader": {
"core": {
"name": "Infinite Fate",
@@ -5,6 +5,15 @@
"type": "imaginary",
"valkyrie": "raven",
"features": ["fire-dmg", "time mastery"],
"equipment": [
{
"type": "recommended",
"weapon": "obscuring-wing",
"stigmataTop": "aslaug-top",
"stigmataMid": "aslaug-mid",
"stigmataBot": "aslaug-bot"
}
],
"leader": {
"core": {
"name": "Midnight Gathering",
@@ -2,6 +2,15 @@
"id": "mpe",
"version": "5.1",
"name": "Miss Pink Elf♪",
"equipment": [
{
"type": "recommended",
"weapon": "whisper-of-the-past-sonnet",
"stigmataTop": "elysia-top",
"stigmataMid": "elysia-mid",
"stigmataBot": "elysia-bot"
}
],
"type": "psychic",
"valkyrie": "elysia",
"features": ["physical", "time mastery", "fast atk", "aerial"],
@@ -5,6 +5,15 @@
"type": "quantum",
"valkyrie": "seele",
"features": ["ice-dmg", "burst", "time mastery", "freeze"],
"equipment": [
{
"type": "recommended",
"weapon": "sanguine-gaze-union",
"stigmataTop": "verne-top",
"stigmataMid": "verne-mid",
"stigmataBot": "verne-bot"
}
],
"leader": {
"core": {
"name": "A Torn Heart",
@@ -5,6 +5,15 @@
"type": "imaginary",
"valkyrie": "pardofelis",
"features": ["ice-dmg", "freeze", "time mastery"],
"equipment": [
{
"type": "recommended",
"weapon": "dream-of-the-past-eyes-of-the-night",
"stigmataTop": "bastet-top",
"stigmataMid": "bastet-mid",
"stigmataBot": "bastet-bot"
}
],
"leader": {
"core": {
"name": "Life, an empty dream",
@@ -5,6 +5,15 @@
"type": "imaginary",
"valkyrie": "durandal",
"features": ["physical", "time mastery"],
"equipment": [
{
"type": "recommended",
"weapon": "midnight-ataegina",
"stigmataTop": "bianka-theatre-top",
"stigmataMid": "bianka-theatre-mid",
"stigmataBot": "bianka-theatre-bot"
}
],
"leader": {
"core": {
"name": "Stellar Crusader",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "fischl",
"features": ["lightning-dmg", "time mastery", "fast atk", "aerial"],
"equipment": [
{
"type": "recommended",
"weapon": "mitternachts-waltz",
"stigmataTop": "wang-zhenyi-top",
"stigmataMid": "wang-zhenyi-mid",
"stigmataBot": "wang-zhenyi-bot"
}
],
"leader": {
"core": {
"name": "Evernight Suite",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "theresa",
"features": ["physical", "heal", "time mastery", "stun", "gather"],
"equipment": [
{
"type": "recommended",
"weapon": "zither-s-lament",
"stigmataTop": "shuijing-top",
"stigmataMid": "shuijing-mid",
"stigmataBot": "shuijing-bot"
}
],
"leader": {
"core": {
"name": "Nine Palaces",
@@ -5,6 +5,15 @@
"type": "quantum",
"valkyrie": "seele",
"features": ["physical", "time mastery", "heavy-atk"],
"equipment": [
{
"type": "recommended",
"weapon": "path-to-acheron-kindred",
"stigmataTop": "allan-poe-top",
"stigmataMid": "allan-poe-mid",
"stigmataBot": "allan-poe-bot"
}
],
"leader": {
"core": {
"name": "Cursed Blessing",
@@ -5,6 +5,15 @@
"type": "mecha",
"valkyrie": "carole",
"features": ["physical", "time mastery", "stun", "gather", "aerial"],
"equipment": [
{
"type": "recommended",
"weapon": "miracle-kissy-pillow",
"stigmataTop": "paganini-top",
"stigmataMid": "paganini-mid",
"stigmataBot": "paganini-bot"
}
],
"leader": {
"core": {
"name": "Star of Hope",
@@ -5,6 +5,15 @@
"type": "mecha",
"valkyrie": "rita",
"features": ["fire-dmg", "ignite", "time mastery", "gather"],
"equipment": [
{
"type": "recommended",
"weapon": "astral-divide-pisces",
"stigmataTop": "ragna-top",
"stigmataMid": "ragna-mid",
"stigmataBot": "ragna-bot"
}
],
"leader": {
"core": {
"name": "Thuban: Circumpolar Star",
@@ -5,6 +5,15 @@
"type": "biologic",
"valkyrie": "bronya",
"features": ["ice-dmg", "fast atk", "time mastery", "gather", "aerial"],
"equipment": [
{
"type": "recommended",
"weapon": "falcon-flare-final",
"stigmataTop": "bronya-n-ex-top",
"stigmataMid": "bronya-n-ex-mid",
"stigmataBot": "bronya-n-ex-bot"
}
],
"leader": {
"core": {
"name": "Hyper Proxy",
@@ -5,6 +5,15 @@
"type": "mecha",
"valkyrie": "theresa",
"features": ["physical", "bleed", "fast atk", "time mastery"],
"equipment": [
{
"type": "recommended",
"weapon": "hekate-s-sombre",
"stigmataTop": "kafka-top",
"stigmataMid": "kafka-mid",
"stigmataBot": "kafka-bot"
}
],
"leader": {
"core": {
"name": "Execution Time",
+4 -1
View File
@@ -40,7 +40,10 @@
"special-attack": "Special Attack",
"ultimate": "Ultimate",
"basic-attack": "Basic Attack",
"sp-skill": "SP Skill"
"sp-skill": "SP Skill",
"equipmentTypes": {
"recommended": "Recommended"
}
},
"stigmata-list": {
"description": "Stigmata list of Honkai 3rd",
+4 -1
View File
@@ -35,7 +35,10 @@
"special-attack": "특수 공격",
"ultimate": "필살기",
"basic-attack": "기본 공격",
"sp-skill": "SP 스킬"
"sp-skill": "SP 스킬",
"equipmentTypes": {
"recommended": "추천 장비"
}
},
"stigmata-list": {
"description": "붕괴 3rd 성흔 목록",
+9
View File
@@ -11,6 +11,14 @@ export interface BattlesuitSkillGroup {
subskills: BattlesuitSkill[]
}
export interface BattlesuitEquipment {
type: string
weapon: string
stigmataTop: string
stigmataMid: string
stigmataBot: string
}
export interface BattlesuitData {
id: string
version?: string
@@ -19,6 +27,7 @@ export interface BattlesuitData {
type: string
valkyrie: string
features: string[]
equipment?: BattlesuitEquipment[]
leader: BattlesuitSkillGroup
special: BattlesuitSkillGroup
evasion: BattlesuitSkillGroup
@@ -35,12 +35,27 @@ import Head from '../../../components/atoms/Head'
import { capitalize } from '../../../lib/string'
import { assetsBucketBaseUrl } from '../../../lib/consts'
import Honkai3rdLayout from '../../../components/layouts/Honkai3rdLayout'
import { WeaponData } from '../../../lib/honkai3rd/weapons'
import { getWeaponById } from '../../../server/data/honkai3rd/weapons'
import { StigmataData } from '../../../lib/honkai3rd/stigmata'
import WeaponCard from '../../../components/molecules/WeaponCard'
import StigmataCard from '../../../components/molecules/StigmataCard'
import { getStigmataById } from '../../../server/data/honkai3rd/stigmata'
type WeaponObjectMap = { [key: string]: WeaponData }
type StigmataObjectMap = { [key: string]: StigmataData }
interface BattlesuitShowPageProps {
battlesuit: BattlesuitData
weaponMap: WeaponObjectMap
stigmataMap: StigmataObjectMap
}
const BattlesuitShowPage = ({ battlesuit }: BattlesuitShowPageProps) => {
const BattlesuitShowPage = ({
battlesuit,
weaponMap,
stigmataMap,
}: BattlesuitShowPageProps) => {
const { t } = useTranslation()
const { locale } = useRouter()
@@ -170,6 +185,44 @@ const BattlesuitShowPage = ({ battlesuit }: BattlesuitShowPageProps) => {
</Flex>
</Card>
{battlesuit.equipment != null && (
<Card
sx={{
mb: 3,
overflow: 'hidden',
}}
>
{battlesuit.equipment.map((equipmentItem) => {
return (
<Box key={equipmentItem.type}>
<Heading
as='h3'
sx={{
pt: 2,
px: 2,
mb: 1,
}}
>
{t(`battlesuit-show.equipmentTypes.${equipmentItem.type}`)}
</Heading>
<Flex>
<WeaponCard weapon={weaponMap[equipmentItem.weapon]} />
<StigmataCard
stigmata={stigmataMap[equipmentItem.stigmataTop]}
/>
<StigmataCard
stigmata={stigmataMap[equipmentItem.stigmataMid]}
/>
<StigmataCard
stigmata={stigmataMap[equipmentItem.stigmataBot]}
/>
</Flex>
</Box>
)
})}
</Card>
)}
<BattlesuitSkillGroupCard
heading={t('battlesuit-show.leader')}
skillGroup={battlesuit.leader}
@@ -224,10 +277,50 @@ export async function getStaticProps({
params,
locale,
}: NextPageContext & { params: { battlesuitId: string } }) {
const battlesuit = getBattlesuitById(params.battlesuitId)
const battlesuit = getBattlesuitById(params.battlesuitId)!
const { weaponIds, stigmataIds } = (battlesuit.equipment || []).reduce<{
weaponIds: string[]
stigmataIds: string[]
}>(
(acc, equipmentItem) => {
acc.weaponIds.push(equipmentItem.weapon)
acc.stigmataIds.push(
equipmentItem.stigmataTop,
equipmentItem.stigmataMid,
equipmentItem.stigmataBot
)
return acc
},
{ weaponIds: [], stigmataIds: [] }
)
const weaponMap = weaponIds.reduce<{ [key: string]: WeaponData }>(
(map, id) => {
const weapon = getWeaponById(id)
if (weapon != null) {
map[id] = weapon
}
return map
},
{}
)
const stigmataMap = stigmataIds.reduce<{ [key: string]: StigmataData }>(
(map, id) => {
const stigmata = getStigmataById(id)
if (stigmata != null) {
map[id] = stigmata
}
return map
},
{}
)
return {
props: { battlesuit, ...(await getI18NProps(locale)) },
props: {
battlesuit,
weaponMap,
stigmataMap,
...(await getI18NProps(locale)),
},
}
}