Merge branch 'MadeBaruna:main' into import-tcg-deck
|
@ -826,6 +826,52 @@ export const banners = {
|
||||||
// timezoneDependent: true,
|
// timezoneDependent: true,
|
||||||
// version: '3.7',
|
// version: '3.7',
|
||||||
// },
|
// },
|
||||||
|
{
|
||||||
|
name: 'Caution in Confidence',
|
||||||
|
image: 2,
|
||||||
|
shortName: 'Alhaitham',
|
||||||
|
start: '2023-06-13 18:00:00',
|
||||||
|
end: '2023-07-04 14:59:59',
|
||||||
|
color: '#5bcbd1',
|
||||||
|
featured: ['alhaitham', 'kaedehara_kazuha'],
|
||||||
|
featuredRare: ['yaoyao', 'shikanoin_heizou', 'xiangling'],
|
||||||
|
version: '3.7',
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// name: 'Leaves in the Wind',
|
||||||
|
// image: 3,
|
||||||
|
// shortName: 'Kazuha',
|
||||||
|
// start: '2023-06-13 18:00:00',
|
||||||
|
// end: '2023-07-04 14:59:59',
|
||||||
|
// color: '#5bcbd1',
|
||||||
|
// featured: ['alhaitham', 'kaedehara_kazuha'],
|
||||||
|
// featuredRare: ['yaoyao', 'shikanoin_heizou', 'xiangling'],
|
||||||
|
// version: '3.7',
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
name: 'Born of Ocean Swell',
|
||||||
|
image: 3,
|
||||||
|
shortName: 'Eula',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-07-25 17:59:59',
|
||||||
|
color: '#A6D6E0',
|
||||||
|
featured: ['eula', 'klee'],
|
||||||
|
featuredRare: ['mika', 'razor', 'thoma'],
|
||||||
|
version: '3.8',
|
||||||
|
timezoneDependent: true,
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// name: 'Sparkling Steps',
|
||||||
|
// image: 4,
|
||||||
|
// shortName: 'Klee',
|
||||||
|
// start: '2023-07-05 06:00:00',
|
||||||
|
// end: '2023-07-25 17:59:59',
|
||||||
|
// color: '#A6D6E0',
|
||||||
|
// featured: ['eula', 'klee'],
|
||||||
|
// featuredRare: ['mika', 'razor', 'thoma'],
|
||||||
|
// version: '3.8',
|
||||||
|
// timezoneDependent: true,
|
||||||
|
// },
|
||||||
],
|
],
|
||||||
weapons: [
|
weapons: [
|
||||||
{
|
{
|
||||||
|
@ -1401,5 +1447,27 @@ export const banners = {
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
version: '3.7',
|
version: '3.7',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Epitome Invocation',
|
||||||
|
image: 48,
|
||||||
|
shortName: 'Freedom',
|
||||||
|
start: '2023-06-13 18:00:00',
|
||||||
|
end: '2023-07-04 14:59:59',
|
||||||
|
color: '#eae5e1',
|
||||||
|
featured: ['freedom-sworn', 'light_of_foliar_incision'],
|
||||||
|
featuredRare: ['wavebreakers_fin', 'mouuns_moon', 'favonius_sword', 'sacrificial_greatsword', 'favonius_codex'],
|
||||||
|
version: '3.7',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Epitome Invocation',
|
||||||
|
image: 49,
|
||||||
|
shortName: 'Freedom',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-07-25 17:59:59',
|
||||||
|
color: '#ffb169',
|
||||||
|
featured: ['song_of_broken_pines', 'lost_prayer_to_the_sacred_winds'],
|
||||||
|
featuredRare: ['the_alley_flash', 'alley_hunter', 'rainslasher', 'favonius_lance', 'eye_of_perception'],
|
||||||
|
version: '3.8',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
@ -553,4 +553,54 @@ export const bannersDual = {
|
||||||
version: '3.7',
|
version: '3.7',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
'Caution in Confidence 2': [
|
||||||
|
{
|
||||||
|
name: 'Caution in Confidence',
|
||||||
|
image: 2,
|
||||||
|
shortName: 'Alhaitham',
|
||||||
|
start: '2023-06-13 18:00:00',
|
||||||
|
end: '2023-07-04 14:59:59',
|
||||||
|
color: '#5bcbd1',
|
||||||
|
featured: ['alhaitham', 'kaedehara_kazuha'],
|
||||||
|
featuredRare: ['yaoyao', 'shikanoin_heizou', 'xiangling'],
|
||||||
|
version: '3.7',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Leaves in the Wind',
|
||||||
|
image: 3,
|
||||||
|
shortName: 'Kazuha',
|
||||||
|
start: '2023-06-13 18:00:00',
|
||||||
|
end: '2023-07-04 14:59:59',
|
||||||
|
color: '#5bcbd1',
|
||||||
|
featured: ['alhaitham', 'kaedehara_kazuha'],
|
||||||
|
featuredRare: ['yaoyao', 'shikanoin_heizou', 'xiangling'],
|
||||||
|
version: '3.7',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'Born of Ocean Swell 3': [
|
||||||
|
{
|
||||||
|
name: 'Born of Ocean Swell',
|
||||||
|
image: 3,
|
||||||
|
shortName: 'Eula',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-07-25 17:59:59',
|
||||||
|
color: '#A6D6E0',
|
||||||
|
featured: ['eula', 'klee'],
|
||||||
|
featuredRare: ['mika', 'razor', 'thoma'],
|
||||||
|
timezoneDependent: true,
|
||||||
|
version: '3.8',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Sparkling Steps',
|
||||||
|
image: 4,
|
||||||
|
shortName: 'Klee',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-07-25 17:59:59',
|
||||||
|
color: '#A6D6E0',
|
||||||
|
featured: ['eula', 'klee'],
|
||||||
|
featuredRare: ['mika', 'razor', 'thoma'],
|
||||||
|
timezoneDependent: true,
|
||||||
|
version: '3.8',
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
1862
src/data/build.js
|
@ -1274,4 +1274,60 @@ export const events = [
|
||||||
url: 'https://www.hoyolab.com/article/18031376',
|
url: 'https://www.hoyolab.com/article/18031376',
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Duel! The Summoners' Summit!",
|
||||||
|
pos: '35% 20%',
|
||||||
|
zoom: '250%',
|
||||||
|
image: 'Duel The Summoners Summit.png',
|
||||||
|
start: '2023-05-25 10:00:00',
|
||||||
|
end: '2023-06-12 03:59:59',
|
||||||
|
color: '#d8e29d',
|
||||||
|
url: 'https://www.hoyolab.com/article/18699059',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Divine Ingenuity: Collector's Chapter",
|
||||||
|
pos: '0% 20%',
|
||||||
|
zoom: '200%',
|
||||||
|
image: 'Divine Ingenuity 2.png',
|
||||||
|
start: '2023-06-08 10:00:00',
|
||||||
|
end: '2023-06-29 03:59:59',
|
||||||
|
color: '#cbfeff',
|
||||||
|
url: 'https://www.hoyolab.com/article/18699187',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Feast of the Departed Warriors',
|
||||||
|
pos: '0% 20%',
|
||||||
|
zoom: '250%',
|
||||||
|
image: 'Feast of the Departed Warriors.png',
|
||||||
|
start: '2023-06-14 10:00:00',
|
||||||
|
end: '2023-06-26 03:59:59',
|
||||||
|
color: '#4f7eed',
|
||||||
|
url: 'https://www.hoyolab.com/article/19277582',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Secret Summer Paradise',
|
||||||
|
pos: '20% 10%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Secret Summer Paradise.jpg',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-08-16 03:59:59',
|
||||||
|
color: '#9ceddf',
|
||||||
|
url: 'https://www.hoyolab.com/article/19771436',
|
||||||
|
showOnHome: true,
|
||||||
|
timezoneDependent: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Adventurer's Trials: Advanced",
|
||||||
|
pos: '0% 50%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Adventurers Trials Advanced Temp.png',
|
||||||
|
start: '2023-07-20 10:00:00',
|
||||||
|
end: '2023-07-31 03:59:59',
|
||||||
|
color: '#fffa86',
|
||||||
|
url: 'https://www.hoyolab.com/article/19777607',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,73 +1,29 @@
|
||||||
export const eventsData = [
|
export const eventsData = [
|
||||||
[
|
[
|
||||||
{
|
|
||||||
name: 'Fulminating Sandstorm',
|
|
||||||
pos: '0% 20%',
|
|
||||||
zoom: '100%',
|
|
||||||
image: 'fulminating_sandstorm.png',
|
|
||||||
start: '2023-04-21 10:00:00',
|
|
||||||
end: '2023-05-01 03:59:59',
|
|
||||||
color: '#f1eada',
|
|
||||||
url: 'https://www.hoyolab.com/article/17591460',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "The Recollector's Path",
|
|
||||||
pos: '50% 40%',
|
|
||||||
zoom: '200%',
|
|
||||||
image: 'the_recollectors_path_temp.png',
|
|
||||||
start: '2023-05-08 10:00:00',
|
|
||||||
end: '2023-05-22 03:59:59',
|
|
||||||
color: '#efa7a9',
|
|
||||||
url: 'https://www.hoyolab.com/article/18031376',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Divine Ingenuity: Collector's Chapter",
|
name: "Divine Ingenuity: Collector's Chapter",
|
||||||
pos: '0% 30%',
|
pos: '0% 20%',
|
||||||
zoom: '150%',
|
zoom: '200%',
|
||||||
image: 'Divine Ingenuity 2 Temp.png',
|
image: 'Divine Ingenuity 2.png',
|
||||||
start: '2023-06-08 10:00:00',
|
start: '2023-06-08 10:00:00',
|
||||||
end: '2023-06-29 03:59:59',
|
end: '2023-06-29 03:59:59',
|
||||||
color: '#cbfeff',
|
color: '#cbfeff',
|
||||||
url: 'https://www.hoyolab.com/article/18699187',
|
url: 'https://www.hoyolab.com/article/18699187',
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Adventurer's Trials: Advanced",
|
||||||
|
pos: '0% 50%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Adventurers Trials Advanced Temp.png',
|
||||||
|
start: '2023-07-20 10:00:00',
|
||||||
|
end: '2023-07-31 03:59:59',
|
||||||
|
color: '#fffa86',
|
||||||
|
url: 'https://www.hoyolab.com/article/19777607',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
|
||||||
name: 'Brewing Developments',
|
|
||||||
pos: '0% 20%',
|
|
||||||
zoom: '250%',
|
|
||||||
image: 'brewing_developments.jpg',
|
|
||||||
start: '2023-04-13 10:00:00',
|
|
||||||
end: '2023-04-24 03:59:59',
|
|
||||||
color: '#b0f7f1',
|
|
||||||
url: 'https://www.hoyolab.com/article/17591332',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'A Parade of Providence',
|
|
||||||
pos: '40% 20%',
|
|
||||||
zoom: '100%',
|
|
||||||
image: 'a_parade_of_providence_full.jpg',
|
|
||||||
start: '2023-04-27 10:00:00',
|
|
||||||
end: '2023-05-15 03:59:59',
|
|
||||||
color: '#e98a4a',
|
|
||||||
url: 'https://www.hoyolab.com/article/17950597',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Overflowing Mastery',
|
|
||||||
pos: '0% 50%',
|
|
||||||
image: 'overflowing_mastery.jpg',
|
|
||||||
start: '2023-05-15 04:00:00',
|
|
||||||
end: '2023-05-22 03:59:59',
|
|
||||||
color: '#f5debc',
|
|
||||||
zoom: '200%',
|
|
||||||
url: 'https://www.hoyolab.com/article/18031376',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Duel! The Summoners' Summit!",
|
name: "Duel! The Summoners' Summit!",
|
||||||
pos: '35% 20%',
|
pos: '35% 20%',
|
||||||
|
@ -79,31 +35,31 @@ export const eventsData = [
|
||||||
url: 'https://www.hoyolab.com/article/18699059',
|
url: 'https://www.hoyolab.com/article/18699059',
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
},
|
},
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
{
|
||||||
name: "The Moongrass' Enlightenment - Nahida Banner",
|
name: 'Feast of the Departed Warriors',
|
||||||
pos: '10% 15%',
|
pos: '0% 20%',
|
||||||
|
zoom: '250%',
|
||||||
|
image: 'Feast of the Departed Warriors.png',
|
||||||
|
start: '2023-06-14 10:00:00',
|
||||||
|
end: '2023-06-26 03:59:59',
|
||||||
|
color: '#4f7eed',
|
||||||
|
url: 'https://www.hoyolab.com/article/19277582',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Secret Summer Paradise',
|
||||||
|
pos: '20% 10%',
|
||||||
zoom: '150%',
|
zoom: '150%',
|
||||||
image: 'the_moongrass_enlightenment_2.jpg',
|
image: 'Secret Summer Paradise.jpg',
|
||||||
start: '2023-04-12 06:00:00',
|
start: '2023-07-05 06:00:00',
|
||||||
end: '2023-05-02 17:59:59',
|
end: '2023-08-16 03:59:59',
|
||||||
color: '#b8db94',
|
color: '#9ceddf',
|
||||||
url: 'https://www.hoyolab.com/article/17591331',
|
url: 'https://www.hoyolab.com/article/19771436',
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
{
|
],
|
||||||
name: 'Immaculate Pulse - Baizhu Banner',
|
[
|
||||||
pos: '20% 15%',
|
|
||||||
zoom: '200%',
|
|
||||||
image: 'immaculate_pulse_1.jpg',
|
|
||||||
start: '2023-05-02 18:00:00',
|
|
||||||
end: '2023-05-23 14:59:59',
|
|
||||||
color: '#8fdaa0',
|
|
||||||
url: 'https://www.hoyolab.com/article/18031187',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'Tapestry of Golden Flames - Yoimiya Banner',
|
name: 'Tapestry of Golden Flames - Yoimiya Banner',
|
||||||
pos: '10% 15%',
|
pos: '10% 15%',
|
||||||
|
@ -116,31 +72,31 @@ export const eventsData = [
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
{
|
||||||
name: 'Twirling Lotus - Nilou Banner',
|
name: 'Caution in Confidence - Alhaitham Banner',
|
||||||
|
pos: '10% 5%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Caution in Confidence 2.png',
|
||||||
|
start: '2023-06-13 18:00:00',
|
||||||
|
end: '2023-07-04 14:59:59',
|
||||||
|
color: '#5bcbd1',
|
||||||
|
url: 'https://www.hoyolab.com/article/19181094',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Born of Ocean Swell - Eula Banner',
|
||||||
pos: '10% 15%',
|
pos: '10% 15%',
|
||||||
zoom: '150%',
|
zoom: '150%',
|
||||||
image: 'twirling_lotus_2.jpg',
|
image: 'Born of Ocean Swell 3.jpg',
|
||||||
start: '2023-04-12 06:00:00',
|
start: '2023-07-05 06:00:00',
|
||||||
end: '2023-05-02 17:59:59',
|
end: '2023-07-25 17:59:59',
|
||||||
color: '#b2e0f0',
|
color: '#A6D6E0',
|
||||||
url: 'https://www.hoyolab.com/article/17591331',
|
url: 'https://www.hoyolab.com/article/19771439',
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
{
|
],
|
||||||
name: 'Adrift in the Harbor - Ganyu Banner',
|
[
|
||||||
pos: '10% 15%',
|
|
||||||
zoom: '150%',
|
|
||||||
image: 'adrift_in_the_harbor_4.jpg',
|
|
||||||
start: '2023-05-02 18:00:00',
|
|
||||||
end: '2023-05-23 14:59:59',
|
|
||||||
color: '#6994DF',
|
|
||||||
url: 'https://www.hoyolab.com/article/18031187',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'Everbloom Violet - Yae Miko Banner',
|
name: 'Everbloom Violet - Yae Miko Banner',
|
||||||
pos: '10% 15%',
|
pos: '10% 15%',
|
||||||
|
@ -153,31 +109,31 @@ export const eventsData = [
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
{
|
||||||
name: 'Epitome Invocation - Weapon Banner',
|
name: 'Leaves in the Wind - Kazuha Banner',
|
||||||
pos: '30% 35%',
|
pos: '10% 5%',
|
||||||
zoom: '150%',
|
zoom: '150%',
|
||||||
image: 'epitome_invocation_45.jpg',
|
image: 'Leaves in the Wind 3.png',
|
||||||
start: '2023-04-12 06:00:00',
|
start: '2023-06-13 18:00:00',
|
||||||
end: '2023-05-02 17:59:59',
|
end: '2023-07-04 14:59:59',
|
||||||
color: '#FFAA4B',
|
color: '#7edec3',
|
||||||
url: 'https://www.hoyolab.com/article/17591331',
|
url: 'https://www.hoyolab.com/article/19181094',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Sparkling Steps - Klee Banner',
|
||||||
|
pos: '10% 15%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Sparkling Steps 4.jpg',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-07-25 17:59:59',
|
||||||
|
color: '#f26c36',
|
||||||
|
url: 'https://www.hoyolab.com/article/19771439',
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
{
|
],
|
||||||
name: 'Epitome Invocation - Weapon Banner',
|
[
|
||||||
pos: '30% 35%',
|
|
||||||
zoom: '150%',
|
|
||||||
image: 'epitome_invocation_46.jpg',
|
|
||||||
start: '2023-05-02 18:00:00',
|
|
||||||
end: '2023-05-23 14:59:59',
|
|
||||||
color: '#FFAA4B',
|
|
||||||
url: 'https://www.hoyolab.com/article/18031187',
|
|
||||||
showOnHome: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'Epitome Invocation - Weapon Banner',
|
name: 'Epitome Invocation - Weapon Banner',
|
||||||
pos: '30% 35%',
|
pos: '30% 35%',
|
||||||
|
@ -190,38 +146,31 @@ export const eventsData = [
|
||||||
showOnHome: true,
|
showOnHome: true,
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Epitome Invocation - Weapon Banner',
|
||||||
|
pos: '30% 25%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Epitome Invocation 48.png',
|
||||||
|
start: '2023-06-13 18:00:00',
|
||||||
|
end: '2023-07-04 14:59:59',
|
||||||
|
color: '#FFAA4B',
|
||||||
|
url: 'https://www.hoyolab.com/article/19181094',
|
||||||
|
showOnHome: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Epitome Invocation - Weapon Banner',
|
||||||
|
pos: '30% 35%',
|
||||||
|
zoom: '150%',
|
||||||
|
image: 'Epitome Invocation 49.jpg',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-07-25 17:59:59',
|
||||||
|
color: '#FFAA4B',
|
||||||
|
url: 'https://www.hoyolab.com/article/19771439',
|
||||||
|
showOnHome: true,
|
||||||
|
timezoneDependent: true,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
|
||||||
name: 'Spiral Abyss',
|
|
||||||
image: 'spiral_abyss.jpg',
|
|
||||||
pos: '50% 20%',
|
|
||||||
start: '2023-04-01 04:00:00',
|
|
||||||
end: '2023-04-16 04:00:00',
|
|
||||||
color: '#4299E1',
|
|
||||||
description:
|
|
||||||
"When a character's HP decreases, release a shockwave at the current active character's position, dealing True DMG to nearby opponents. This effect can be triggered once every 3s.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Spiral Abyss',
|
|
||||||
image: 'spiral_abyss.jpg',
|
|
||||||
pos: '50% 20%',
|
|
||||||
start: '2023-04-16 04:00:00',
|
|
||||||
end: '2023-05-01 04:00:00',
|
|
||||||
color: '#4299E1',
|
|
||||||
description:
|
|
||||||
"When the active character's HP decreases, a shockwave will be unleashed at the character's position, dealing True DMG to nearby opponents. This effect can be triggered once every 0.8s.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Spiral Abyss',
|
|
||||||
image: 'spiral_abyss.jpg',
|
|
||||||
pos: '50% 20%',
|
|
||||||
start: '2023-05-01 04:00:00',
|
|
||||||
end: '2023-05-16 04:00:00',
|
|
||||||
color: '#4299E1',
|
|
||||||
description:
|
|
||||||
"After a character triggers a Bloom reaction, all characters' Bloom, Hyperbloom, and Burgeon DMG dealt is increased by 35% for 6s. This effect can be triggered once every 0.1s. Max 4 stacks. Each stack's duration is counted independently.",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'Spiral Abyss',
|
name: 'Spiral Abyss',
|
||||||
image: 'spiral_abyss.jpg',
|
image: 'spiral_abyss.jpg',
|
||||||
|
@ -232,18 +181,68 @@ export const eventsData = [
|
||||||
description:
|
description:
|
||||||
'When DMG dealt by Dendro Cores (including DMG from Hyperbloom and Burgeon reactions) hits a character, Elemental Mastery will be increased by 200 for all characters in the party for 4s.',
|
'When DMG dealt by Dendro Cores (including DMG from Hyperbloom and Burgeon reactions) hits a character, Elemental Mastery will be increased by 200 for all characters in the party for 4s.',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Spiral Abyss',
|
||||||
|
image: 'spiral_abyss.jpg',
|
||||||
|
pos: '50% 20%',
|
||||||
|
start: '2023-06-01 04:00:00',
|
||||||
|
end: '2023-06-16 04:00:00',
|
||||||
|
color: '#4299E1',
|
||||||
|
description:
|
||||||
|
"After the character's Normal Attack hits an opponent, this opponent will be afflicted with a Sign of Snaring. After 3s, the Sign will be removed, dealing True DMG to this opponent. After a character's Normal Attack hits an opponent with a Sign of Snaring, the DMG dealt by the Sign's removal will be increased. This DMG can be increased for no more than 9 times.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Spiral Abyss',
|
||||||
|
image: 'spiral_abyss.jpg',
|
||||||
|
pos: '50% 20%',
|
||||||
|
start: '2023-06-16 04:00:00',
|
||||||
|
end: '2023-07-01 04:00:00',
|
||||||
|
color: '#4299E1',
|
||||||
|
description:
|
||||||
|
"After the active character's Normal Attacks hit opponents, the DMG dealt by this character will increase by 12% for 2s. This effect can stack up to 5 times. Each stack's duration is counted independently. This effect can be triggered once every 0.05s. This effect will be canceled when the character leaves the field.will be removed, dealing True DMG to this opponent. After a character's Normal Attack hits an opponent with a Sign of Snaring, the DMG dealt by the Sign's removal will be increased. This DMG can be increased for no more than 9 times.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Spiral Abyss',
|
||||||
|
image: 'spiral_abyss.jpg',
|
||||||
|
pos: '50% 20%',
|
||||||
|
start: '2023-07-01 04:00:00',
|
||||||
|
end: '2023-07-16 04:00:00',
|
||||||
|
color: '#4299E1',
|
||||||
|
description:
|
||||||
|
"After the character's Normal Attack hits an opponent, the Physical or Elemental RES of this opponent will decrease by 6% for 2s, matching the Attribute of that attack. This can stack up to 6 times. RES decreases of different types can co-exist, and their stacks and timers will be independent of each other.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Spiral Abyss',
|
||||||
|
image: 'spiral_abyss.jpg',
|
||||||
|
pos: '50% 20%',
|
||||||
|
start: '2023-07-16 04:00:00',
|
||||||
|
end: '2023-08-01 04:00:00',
|
||||||
|
color: '#4299E1',
|
||||||
|
description:
|
||||||
|
"Within 10s after the character enters the field, the character's Normal, Charged, and Plunging Attacks will deal 30% increased DMG. Their ATK SPD will also be increased by 10%. This effect will be canceled when the character leaves the field.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Spiral Abyss',
|
||||||
|
image: 'spiral_abyss.jpg',
|
||||||
|
pos: '50% 20%',
|
||||||
|
start: '2023-08-01 04:00:00',
|
||||||
|
end: '2023-08-16 04:00:00',
|
||||||
|
color: '#4299E1',
|
||||||
|
description:
|
||||||
|
'When a character loses or restores HP, all party members will gain 7.5% increased ATK for 10s. This effect can be triggered once every 0.1s. Max 4 stacks. Each stack will be counted independently.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Spiral Abyss',
|
||||||
|
image: 'spiral_abyss.jpg',
|
||||||
|
pos: '50% 20%',
|
||||||
|
start: '2023-08-16 04:00:00',
|
||||||
|
end: '2023-09-01 04:00:00',
|
||||||
|
color: '#4299E1',
|
||||||
|
description:
|
||||||
|
"When the active character deals consecutive instances of Elemental DMG of the same Elemental Type or Physical DMG using Normal, Charged, or Plunging Attacks to an opponent, they will gain 1 count stack. 1 stack can be gained every 0.3s. The stacks for every Elemental and Physical DMG will be counted independently. After 6 stacks have been gained, a shockwave will be unleashed at the opponent's position, dealing True DMG and clearing all previously accumulated stacks for this DMG type. Should the active character leave the field, these stacks will be cleared.",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
|
||||||
name: "Paimon's Bargain - Razor, Amber, and Royal",
|
|
||||||
pos: '0% 50%',
|
|
||||||
zoom: '150%',
|
|
||||||
start: '2023-04-01 04:00:00',
|
|
||||||
end: '2023-05-01 04:00:00',
|
|
||||||
color: '#B6A1EA',
|
|
||||||
image: 'paimon_bargain.png',
|
|
||||||
description: 'Now selling: Razor, Amber, and Royal Weapons.',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Paimon's Bargain - Bennett, Lisa, and Blackcliff",
|
name: "Paimon's Bargain - Bennett, Lisa, and Blackcliff",
|
||||||
pos: '0% 50%',
|
pos: '0% 50%',
|
||||||
|
@ -254,18 +253,28 @@ export const eventsData = [
|
||||||
image: 'paimon_bargain.png',
|
image: 'paimon_bargain.png',
|
||||||
description: 'Now selling: Razor, Amber, and Blackcliff Weapons.',
|
description: 'Now selling: Razor, Amber, and Blackcliff Weapons.',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Paimon's Bargain - Barbara, Kaeya, and Royal",
|
||||||
|
pos: '0% 50%',
|
||||||
|
zoom: '150%',
|
||||||
|
start: '2023-06-01 04:00:00',
|
||||||
|
end: '2023-07-01 04:00:00',
|
||||||
|
color: '#B6A1EA',
|
||||||
|
image: 'paimon_bargain.png',
|
||||||
|
description: 'Now selling: Barbara, Kaeya, and Royal Weapons.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Paimon's Bargain - Fischl, Xiangling, and Blackcliff",
|
||||||
|
pos: '0% 50%',
|
||||||
|
zoom: '150%',
|
||||||
|
start: '2023-07-01 04:00:00',
|
||||||
|
end: '2023-08-01 04:00:00',
|
||||||
|
color: '#B6A1EA',
|
||||||
|
image: 'paimon_bargain.png',
|
||||||
|
description: 'Now selling: Fischl, Xiangling, and Blackcliff Weapons.',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
|
||||||
name: 'Battle Pass - Crown of Glory',
|
|
||||||
pos: '0% 12%',
|
|
||||||
image: 'crown_of_glory.jpg',
|
|
||||||
start: '2023-04-12 06:00:00',
|
|
||||||
end: '2023-05-22 03:59:59',
|
|
||||||
color: '#c8d18f',
|
|
||||||
url: 'https://www.hoyolab.com/article/17591460',
|
|
||||||
timezoneDependent: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Battle Pass - Invoker's Secrets",
|
name: "Battle Pass - Invoker's Secrets",
|
||||||
pos: '0% 12%',
|
pos: '0% 12%',
|
||||||
|
@ -276,5 +285,15 @@ export const eventsData = [
|
||||||
url: 'https://www.hoyolab.com/article/18699187',
|
url: 'https://www.hoyolab.com/article/18699187',
|
||||||
timezoneDependent: true,
|
timezoneDependent: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Battle Pass - Vivid Illumination',
|
||||||
|
pos: '0% 15%',
|
||||||
|
image: 'Vivid Illumination.jpg',
|
||||||
|
start: '2023-07-05 06:00:00',
|
||||||
|
end: '2023-08-14 03:59:59',
|
||||||
|
color: '#e0fbf8',
|
||||||
|
url: 'https://www.hoyolab.com/article/19771440',
|
||||||
|
timezoneDependent: true,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -274,7 +274,7 @@
|
||||||
"Open Genshin Impact in this PC (If you use multiple accounts, please restart the game)",
|
"Open Genshin Impact in this PC (If you use multiple accounts, please restart the game)",
|
||||||
"Then open the wish history in the game and wait it to load",
|
"Then open the wish history in the game and wait it to load",
|
||||||
"Then open the folder where your game is installed (example: C:\\Games\\Genshin Impact)",
|
"Then open the folder where your game is installed (example: C:\\Games\\Genshin Impact)",
|
||||||
"Then open folder GenshinImpact_Data → webCaches → Cache → Cache_Data",
|
"Then open folder GenshinImpact_Data → webCaches → 2.13.0.1 → Cache → Cache_Data",
|
||||||
"Right click \"data_2\" file then click \"Open with\" then select Notepad (If you get error like \"The process cannot access the file because it is being used by another process\" please exit the game first)",
|
"Right click \"data_2\" file then click \"Open with\" then select Notepad (If you get error like \"The process cannot access the file because it is being used by another process\" please exit the game first)",
|
||||||
"Press CTRL+F then check \"Wrap around\" and select direction \"Up\" then in the input box search for \"e20190909gacha-v2\" (without the quote) then click Find Next",
|
"Press CTRL+F then check \"Wrap around\" and select direction \"Up\" then in the input box search for \"e20190909gacha-v2\" (without the quote) then click Find Next",
|
||||||
"Copy all the link from https://webstatic until game_biz=hk4e_global the url looks like this: https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha-v2/index.html?.......&game_biz=hk4e_global",
|
"Copy all the link from https://webstatic until game_biz=hk4e_global the url looks like this: https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha-v2/index.html?.......&game_biz=hk4e_global",
|
||||||
|
@ -966,7 +966,10 @@
|
||||||
"artifact": "Artifact",
|
"artifact": "Artifact",
|
||||||
"setPiece": "{piece} Set Bonus",
|
"setPiece": "{piece} Set Bonus",
|
||||||
"recommendedCharacter": "Recommended Characters {piece} Set",
|
"recommendedCharacter": "Recommended Characters {piece} Set",
|
||||||
|
"15AnemoDmgSet": "Anemo +15% set",
|
||||||
|
"15HydroDmgSet": "Hydro +15% set",
|
||||||
"18ATKSet": "ATK +18% set",
|
"18ATKSet": "ATK +18% set",
|
||||||
|
"20HPSet": "HP +18% set",
|
||||||
"20EnergyRechargeSet": "Energy Recharge +20% set",
|
"20EnergyRechargeSet": "Energy Recharge +20% set",
|
||||||
"25PhysicalDmgSet": "Physical DMG +25% set",
|
"25PhysicalDmgSet": "Physical DMG +25% set",
|
||||||
"80EMSet": "Elemental Mastery +80 set",
|
"80EMSet": "Elemental Mastery +80 set",
|
||||||
|
|
|
@ -274,7 +274,7 @@
|
||||||
"Buka Genshin Impact di PC ini (Jika mempunyai beberapa akun, restart dulu game nya)",
|
"Buka Genshin Impact di PC ini (Jika mempunyai beberapa akun, restart dulu game nya)",
|
||||||
"Buka riwayat history di dalam game nya, dan tunggu sampai selesai loading",
|
"Buka riwayat history di dalam game nya, dan tunggu sampai selesai loading",
|
||||||
"Kemudian buka folder dimana game nya ter-install (contoh: C:\\Games\\Genshin Impact)",
|
"Kemudian buka folder dimana game nya ter-install (contoh: C:\\Games\\Genshin Impact)",
|
||||||
"Kemudian buka folder GenshinImpact_Data → webCaches → Cache → Cache_Data",
|
"Kemudian buka folder GenshinImpact_Data → webCaches → 2.13.0.1 → Cache → Cache_Data",
|
||||||
"Klik kanan \"data_2\" kemudian klik \"Open with\" kemudian pilih Notepad (Jika kamu mendapatkan error seperti \"The process cannot access the file because it is being used by another process\" silahkan tutup dahulu game nya)",
|
"Klik kanan \"data_2\" kemudian klik \"Open with\" kemudian pilih Notepad (Jika kamu mendapatkan error seperti \"The process cannot access the file because it is being used by another process\" silahkan tutup dahulu game nya)",
|
||||||
"Tekan CTRL+F kemudian centang \"Wrap around\" dan pilih direction \"Up\" dan di kotak input nya masukkan \"e20190909gacha-v2\" (tanpa petik) kemudian klik Find Next",
|
"Tekan CTRL+F kemudian centang \"Wrap around\" dan pilih direction \"Up\" dan di kotak input nya masukkan \"e20190909gacha-v2\" (tanpa petik) kemudian klik Find Next",
|
||||||
"Copy semua link nya dari https://webstatic sampai game_biz=hk4e_global link nya seperti ini: https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha-v2/index.html?.......&game_biz=hk4e_global",
|
"Copy semua link nya dari https://webstatic sampai game_biz=hk4e_global link nya seperti ini: https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha-v2/index.html?.......&game_biz=hk4e_global",
|
||||||
|
|
|
@ -13,25 +13,25 @@
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
const featured = {
|
const featured = {
|
||||||
yoimiya: {
|
klee: {
|
||||||
name: 'Yoimiya',
|
name: 'Klee',
|
||||||
rarity: 'legendary',
|
rarity: 'legendary',
|
||||||
count: 0,
|
count: 0,
|
||||||
average: '...',
|
average: '...',
|
||||||
percentage: '...',
|
percentage: '...',
|
||||||
},
|
},
|
||||||
yae_miko: {
|
eula: {
|
||||||
name: 'Yae Miko',
|
name: 'Eula',
|
||||||
rarity: 'legendary',
|
rarity: 'legendary',
|
||||||
count: 0,
|
count: 0,
|
||||||
average: '...',
|
average: '...',
|
||||||
percentage: '...',
|
percentage: '...',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const bannerId = 300048;
|
const bannerId = 300050;
|
||||||
const image = 'yoimiya-yae.png';
|
const image = 'eula_klee.png';
|
||||||
const width = 800;
|
const width = 800;
|
||||||
const height = 539;
|
const height = 515;
|
||||||
|
|
||||||
let loading = true;
|
let loading = true;
|
||||||
let user = '';
|
let user = '';
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
'3.5',
|
'3.5',
|
||||||
'3.6',
|
'3.6',
|
||||||
'3.7',
|
'3.7',
|
||||||
|
'3.8',
|
||||||
].map((e) => ({
|
].map((e) => ({
|
||||||
label: e,
|
label: e,
|
||||||
value: e,
|
value: e,
|
||||||
|
|
|
@ -43,9 +43,13 @@
|
||||||
|
|
||||||
let constellationDiv;
|
let constellationDiv;
|
||||||
let talentDiv;
|
let talentDiv;
|
||||||
const builds = Object.entries(buildData.roles)
|
const builds =
|
||||||
.sort((a, b) => b[1].recommended - a[1].recommended)
|
Object.keys(buildData).length > 0
|
||||||
.map((e) => ({ name: e[0], build: e[1] }));
|
? Object.entries(buildData.roles)
|
||||||
|
.sort((a, b) => b[1].recommended - a[1].recommended)
|
||||||
|
.map((e) => ({ name: e[0], build: e[1] }))
|
||||||
|
: null;
|
||||||
|
|
||||||
let currentBuild = 0;
|
let currentBuild = 0;
|
||||||
const artifactsEn = artifactData;
|
const artifactsEn = artifactData;
|
||||||
let artifacts = artifactData;
|
let artifacts = artifactData;
|
||||||
|
@ -179,6 +183,12 @@
|
||||||
return 'gladiators_finale';
|
return 'gladiators_finale';
|
||||||
case '+20%_energy_recharge':
|
case '+20%_energy_recharge':
|
||||||
return 'emblem_of_severed_fate';
|
return 'emblem_of_severed_fate';
|
||||||
|
case '+20%_hp_set':
|
||||||
|
return 'tenacity_of_the_millelith';
|
||||||
|
case '+15%_hydro_dmg_set':
|
||||||
|
return 'heart_of_depth';
|
||||||
|
case '+15%_anemo_dmg_set':
|
||||||
|
return 'viridescent_venerer';
|
||||||
case '+25%_physical_dmg':
|
case '+25%_physical_dmg':
|
||||||
return 'bloodstained_chivalry';
|
return 'bloodstained_chivalry';
|
||||||
case '+80_em':
|
case '+80_em':
|
||||||
|
@ -196,6 +206,12 @@
|
||||||
return 'artifact.18ATKSet';
|
return 'artifact.18ATKSet';
|
||||||
case '+20%_energy_recharge':
|
case '+20%_energy_recharge':
|
||||||
return 'artifact.20EnergyRechargeSet';
|
return 'artifact.20EnergyRechargeSet';
|
||||||
|
case '+20%_hp_set':
|
||||||
|
return 'artifact.20HPSet';
|
||||||
|
case '+15%_hydro_dmg_set':
|
||||||
|
return 'artifact.15HydroDmgSet';
|
||||||
|
case '+15%_anemo_dmg_set':
|
||||||
|
return 'artifact.15AnemoDmgSet';
|
||||||
case '+25%_physical_dmg':
|
case '+25%_physical_dmg':
|
||||||
return 'artifact.25PhysicalDmgSet';
|
return 'artifact.25PhysicalDmgSet';
|
||||||
case '+80_em':
|
case '+80_em':
|
||||||
|
@ -230,8 +246,8 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
$: constellationCountTotal = constellationCount + manualCount;
|
$: constellationCountTotal = constellationCount + manualCount;
|
||||||
$: buildName = builds[currentBuild].name;
|
$: buildName = builds ? builds[currentBuild].name : '';
|
||||||
$: build = builds[currentBuild].build;
|
$: build = builds ? builds[currentBuild].build : '';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
@ -470,330 +486,405 @@
|
||||||
</div>
|
</div>
|
||||||
<Ad class="mt-4 max-w-screen-2xl flex justify-center" type="desktop" variant="lb" id="1" />
|
<Ad class="mt-4 max-w-screen-2xl flex justify-center" type="desktop" variant="lb" id="1" />
|
||||||
<Ad class="flex justify-center mt-4" type="mobile" variant="mpu" id="2" />
|
<Ad class="flex justify-center mt-4" type="mobile" variant="mpu" id="2" />
|
||||||
<div class="flex flex-col text-white px-4 md:px-8 max-w-screen-2xl">
|
{#if builds}
|
||||||
{#if builds.length > 1}
|
<div class="flex flex-col text-white px-4 md:px-8 max-w-screen-2xl">
|
||||||
<div class="flex mt-4 items-center">
|
{#if builds.length > 1}
|
||||||
{#each builds as item, i}
|
<div class="flex mt-4 items-center">
|
||||||
<button class="pill mr-2 {currentBuild === i ? 'active' : ''}" on:click={() => selectBuild(i)}>
|
{#each builds as item, i}
|
||||||
{item.name}
|
<button class="pill mr-2 {currentBuild === i ? 'active' : ''}" on:click={() => selectBuild(i)}>
|
||||||
{item.build.recommended ? '👍' : ''}
|
{item.name}
|
||||||
</button>
|
{item.build.recommended ? '👍' : ''}
|
||||||
{/each}
|
</button>
|
||||||
</div>
|
{/each}
|
||||||
{/if}
|
</div>
|
||||||
<div class="p-4 mt-2 rounded-xl bg-item flex flex-col">
|
|
||||||
<h3 class="font-black font-display text-xl">
|
|
||||||
{buildName}
|
|
||||||
{$t('characters.build')}
|
|
||||||
{build.recommended ? '👍' : ''}
|
|
||||||
</h3>
|
|
||||||
<p class="whitespace-pre-wrap text-gray-200 character-note">{@html build.note}</p>
|
|
||||||
{#if build.tip !== ''}
|
|
||||||
<h4 class="font-black font-display text-lg mt-4">{$t('characters.abilityTip')}</h4>
|
|
||||||
<p class="whitespace-pre-wrap text-gray-200">{build.tip}</p>
|
|
||||||
{/if}
|
{/if}
|
||||||
<div class="flex mt-2 -mx-4 flex-wrap">
|
<div class="p-4 mt-2 rounded-xl bg-item flex flex-col">
|
||||||
<div class="mx-4 mt-4">
|
<h3 class="font-black font-display text-xl">
|
||||||
<h4 class="font-black font-display text-lg">{$t('characters.mainStats')}</h4>
|
{buildName}
|
||||||
<div class="flex items-center">
|
{$t('characters.build')}
|
||||||
<div class="px-2 py-1 mr-3 bg-background rounded-md w-32">
|
{build.recommended ? '👍' : ''}
|
||||||
<img class="w-8 h-8 inline mr-1" src="/images/artifacts/adventurer_sands.png" alt="SANDS" />
|
</h3>
|
||||||
<span class="font-semibold">{$t('artifact.sands')}</span>
|
<p class="whitespace-pre-wrap text-gray-200 character-note">{@html build.note}</p>
|
||||||
|
{#if build.tip !== ''}
|
||||||
|
<h4 class="font-black font-display text-lg mt-4">{$t('characters.abilityTip')}</h4>
|
||||||
|
<p class="whitespace-pre-wrap text-gray-200">{build.tip}</p>
|
||||||
|
{/if}
|
||||||
|
<div class="flex mt-2 -mx-4 flex-wrap">
|
||||||
|
<div class="mx-4 mt-4">
|
||||||
|
<h4 class="font-black font-display text-lg">{$t('characters.mainStats')}</h4>
|
||||||
|
<div class="flex items-center">
|
||||||
|
<div class="px-2 py-1 mr-3 bg-background rounded-md w-32">
|
||||||
|
<img class="w-8 h-8 inline mr-1" src="/images/artifacts/adventurer_sands.png" alt="SANDS" />
|
||||||
|
<span class="font-semibold">{$t('artifact.sands')}</span>
|
||||||
|
</div>
|
||||||
|
<p>{build.mainStats.sands.join(' / ')}</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center mt-1">
|
||||||
|
<div class="px-2 py-1 mr-3 bg-background rounded-md w-32">
|
||||||
|
<img class="w-8 h-8 inline mr-1" src="/images/artifacts/adventurer_goblet.png" alt="GOBLET" />
|
||||||
|
<span class="font-semibold">{$t('artifact.goblet')}</span>
|
||||||
|
</div>
|
||||||
|
<p>{build.mainStats.goblet.join(' / ')}</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center mt-1">
|
||||||
|
<div class="px-2 py-1 mr-3 bg-background rounded-md w-32">
|
||||||
|
<img class="w-8 h-8 inline mr-1" src="/images/artifacts/adventurer_circlet.png" alt="CIRCLET" />
|
||||||
|
<span class="font-semibold">{$t('artifact.circlet')}</span>
|
||||||
|
</div>
|
||||||
|
<p>{build.mainStats.circlet.join(' / ')}</p>
|
||||||
</div>
|
</div>
|
||||||
<p>{build.mainStats.sands.join(' / ')}</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-1">
|
<div class="mt-4 mx-4">
|
||||||
<div class="px-2 py-1 mr-3 bg-background rounded-md w-32">
|
<h4 class="font-black font-display text-lg">{$t('characters.subStats')}</h4>
|
||||||
<img class="w-8 h-8 inline mr-1" src="/images/artifacts/adventurer_goblet.png" alt="GOBLET" />
|
<div class="decimal-list">
|
||||||
<span class="font-semibold">{$t('artifact.goblet')}</span>
|
{#each build.subStats as stat, i}
|
||||||
|
<p><span class="font-semibold w-4 inline-block">{i + 1}.</span> {stat}</p>
|
||||||
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
<p>{build.mainStats.goblet.join(' / ')}</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-1">
|
<div class="mt-4 mx-4">
|
||||||
<div class="px-2 py-1 mr-3 bg-background rounded-md w-32">
|
<h4 class="font-black font-display text-lg">{$t('characters.talentPriority')}</h4>
|
||||||
<img class="w-8 h-8 inline mr-1" src="/images/artifacts/adventurer_circlet.png" alt="CIRCLET" />
|
<div class="flex items-center">
|
||||||
<span class="font-semibold">{$t('artifact.circlet')}</span>
|
{#each build.talent as talent, i}
|
||||||
|
<p class="mr-1">{talent}</p>
|
||||||
|
{#if i !== build.talent.length - 1}
|
||||||
|
<Icon className="mr-1" path={mdiChevronRight} />
|
||||||
|
{/if}
|
||||||
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
<p>{build.mainStats.circlet.join(' / ')}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-4 mx-4">
|
<div class="flex -mx-4 flex-wrap">
|
||||||
<h4 class="font-black font-display text-lg">{$t('characters.subStats')}</h4>
|
<div class="mt-4 mx-4 -mb-1">
|
||||||
<div class="decimal-list">
|
<h4 class="font-black font-display text-lg">{$t('characters.weapons')}</h4>
|
||||||
{#each build.subStats as stat, i}
|
{#each build.weapons as weapon, i}
|
||||||
<p><span class="font-semibold w-4 inline-block">{i + 1}.</span> {stat}</p>
|
<a class="popup flex mb-1" href="/weapons/{weapon.id}">
|
||||||
{/each}
|
<div class="popup-container">
|
||||||
</div>
|
<div class="bg-gray-300 text-gray-900 p-2 rounded-md mb-1 shadow-2xl">
|
||||||
</div>
|
<p class="font-bold text-primary text-sm">
|
||||||
<div class="mt-4 mx-4">
|
{weapons[weapon.id].skill.name}
|
||||||
<h4 class="font-black font-display text-lg">{$t('characters.talentPriority')}</h4>
|
</p>
|
||||||
<div class="flex items-center">
|
<p class="text-gray-900 text-sm break-words" style="filter: brightness(0);">
|
||||||
{#each build.talent as talent, i}
|
{@html weapons[weapon.id].skill.description}
|
||||||
<p class="mr-1">{talent}</p>
|
</p>
|
||||||
{#if i !== build.talent.length - 1}
|
<div class="flex mt-2">
|
||||||
<Icon className="mr-1" path={mdiChevronRight} />
|
<div class="mr-4">
|
||||||
{/if}
|
<p class="font-bold text-primary text-sm">{$t('weapon.atk')}</p>
|
||||||
{/each}
|
<p class="text-gray-900 text-sm">{Math.round(weapons[weapon.id].atk[96])}</p>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex -mx-4 flex-wrap">
|
|
||||||
<div class="mt-4 mx-4 -mb-1">
|
|
||||||
<h4 class="font-black font-display text-lg">{$t('characters.weapons')}</h4>
|
|
||||||
{#each build.weapons as weapon, i}
|
|
||||||
<a class="popup flex mb-1" href="/weapons/{weapon.id}">
|
|
||||||
<div class="popup-container">
|
|
||||||
<div class="bg-gray-300 text-gray-900 p-2 rounded-md mb-1 shadow-2xl">
|
|
||||||
<p class="font-bold text-primary text-sm">
|
|
||||||
{weapons[weapon.id].skill.name}
|
|
||||||
</p>
|
|
||||||
<p class="text-gray-900 text-sm break-words" style="filter: brightness(0);">
|
|
||||||
{@html weapons[weapon.id].skill.description}
|
|
||||||
</p>
|
|
||||||
<div class="flex mt-2">
|
|
||||||
<div class="mr-4">
|
|
||||||
<p class="font-bold text-primary text-sm">{$t('weapon.atk')}</p>
|
|
||||||
<p class="text-gray-900 text-sm">{Math.round(weapons[weapon.id].atk[96])}</p>
|
|
||||||
</div>
|
|
||||||
{#if weapons[weapon.id].secondary.stats}
|
|
||||||
<div>
|
|
||||||
<p class="font-bold text-primary text-sm">
|
|
||||||
{$t(`weapon.${weapons[weapon.id].secondary.name}`)}
|
|
||||||
</p>
|
|
||||||
<p class="text-gray-900 text-sm">
|
|
||||||
{formatStat(weapons[weapon.id].secondary.stats[96], weapons[weapon.id].secondary.name)}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
{#if weapons[weapon.id].secondary.stats}
|
||||||
|
<div>
|
||||||
|
<p class="font-bold text-primary text-sm">
|
||||||
|
{$t(`weapon.${weapons[weapon.id].secondary.name}`)}
|
||||||
|
</p>
|
||||||
|
<p class="text-gray-900 text-sm">
|
||||||
|
{formatStat(weapons[weapon.id].secondary.stats[96], weapons[weapon.id].secondary.name)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-center bg-background rounded-md p-1 mr-1">
|
||||||
|
<p class="w-6 text-center mr-1" style="padding-top: 2px;">{i + 1}</p>
|
||||||
|
<Icon className={rarityColor[weaponList[weapon.id].rarity]} path={mdiStar} size={0.8} />
|
||||||
|
<img class="h-8 mr-2 ml-2" src="/images/weapons/{weapon.id}.png" alt={weaponList[weapon.id].name} />
|
||||||
|
<p class="pl-1 pr-2" style="padding-top: 2px;">
|
||||||
|
<span>{$t(weaponList[weapon.id].name)}</span>
|
||||||
|
{#if weapon.refine}
|
||||||
|
<span class="ml-2 bg-blue-300 rounded-md px-1 text-sm text-gray-900"
|
||||||
|
>R{weapon.refine.join('-')}</span
|
||||||
|
>
|
||||||
{/if}
|
{/if}
|
||||||
|
{#if weapon.stack}
|
||||||
|
<Tooltip title="Stack">
|
||||||
|
<span class="ml-2 bg-orange-300 rounded-md px-1 text-sm text-gray-900">S{weapon.stack}</span>
|
||||||
|
</Tooltip>
|
||||||
|
{/if}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
<div class="mt-4 mx-4 -mb-1 md:max-w-screen-sm">
|
||||||
|
<h4 class="font-black font-display text-lg">{$t('characters.artifacts')}</h4>
|
||||||
|
{#each build.artifacts as item, i}
|
||||||
|
<div class="flex mb-1">
|
||||||
|
<div class="flex items-center justify-center bg-background rounded-md px-1 mr-1">
|
||||||
|
<p class="w-6 text-center" style="min-width: 1.5rem; padding-top: 2px;">{i + 1}</p>
|
||||||
|
<div class="flex flex-wrap -mb-1">
|
||||||
|
{#each item as artifact, i}
|
||||||
|
{#if item.length > 2 && i === 0}
|
||||||
|
<div
|
||||||
|
class="flex items-center justify-center bg-background rounded-md px-2 py-1 mb-1 mr-1"
|
||||||
|
style="height: 40px;"
|
||||||
|
>
|
||||||
|
<p class="text-center whitespace-nowrap text-primary" style="padding-top: 2px;">
|
||||||
|
{$t('artifact.choose2')}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
<a
|
||||||
|
class="popup bg-background rounded-md py-1 pl-1 pr-2 mr-1 mb-1 flex items-center"
|
||||||
|
href={artifact.startsWith('+') ? undefined : `/artifacts/${artifact}`}
|
||||||
|
>
|
||||||
|
<div class="popup-container">
|
||||||
|
<div class="bg-gray-300 text-gray-900 p-2 rounded-md mb-1 shadow-2xl">
|
||||||
|
{#if !artifact.startsWith('+')}
|
||||||
|
{#each artifacts[artifact].bonuses as bonus, i}
|
||||||
|
<div class={i === 1 ? 'mt-2' : ''}>
|
||||||
|
<p class="font-bold text-primary text-sm">
|
||||||
|
{$t('artifact.setPiece', { values: { piece: (i + 1) * 2 } })}
|
||||||
|
</p>
|
||||||
|
<p class="text-gray-900 text-sm">{bonus}</p>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
{:else if artifact === '+18%_atk_set'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/gladiators_finale"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/gladiators_finale_flower.png"
|
||||||
|
alt="Gladiator's Finale"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t("Gladiator's Finale")}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 py-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/shimenawas_reminiscence"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/shimenawas_reminiscence_flower.png"
|
||||||
|
alt="Shimenawa's Reminiscence"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t("Shimenawa's Reminiscence")}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 py-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/vermillion_hereafter"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/vermillion_hereafter_flower.png"
|
||||||
|
alt="Vermillion Hereafter"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Vermillion Hereafter')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/echoes_of_an_offering"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/echoes_of_an_offering_flower.png"
|
||||||
|
alt="Echoes of an Offering"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Echoes of an Offering')}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+20%_energy_recharge'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/emblem_of_severed_fate"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/emblem_of_severed_fate_flower.png"
|
||||||
|
alt="Emblem of Severed Fate"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Emblem of Severed Fate')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 py-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/the_exile"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/the_exile_flower.png"
|
||||||
|
alt="The Exile"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('The Exile')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/scholar"
|
||||||
|
>
|
||||||
|
<img class="h-8 ml-1 mr-2" src="/images/artifacts/scholar_flower.png" alt="Scholar" />
|
||||||
|
<span class="font-semibold">{$t('Scholar')}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+25%_physical_dmg'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/bloodstained_chivalry"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/bloodstained_chivalry_flower.png"
|
||||||
|
alt="Bloodstained Chivalry"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Bloodstained Chivalry')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/pale_flame"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/pale_flame_flower.png"
|
||||||
|
alt="Pale Flame"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Pale Flame')}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+20%_hp_set'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/tenacity_of_the_millelith"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/tenacity_of_the_millelith_flower.png"
|
||||||
|
alt="Tenacity of the Millelith"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Tenacity of the Millelith')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/vourukashas_glow"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/vourukashas_glow_flower.png"
|
||||||
|
alt="Vourukasha's Glow"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t("Vourukasha's Glow")}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+15%_anemo_dmg_set'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/viridescent_venerer"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/viridescent_venerer_flower.png"
|
||||||
|
alt="Viridescent Venerer"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Viridescent Venerer')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/desert_pavilion_chronicle"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/desert_pavilion_chronicle_flower.png"
|
||||||
|
alt="Desert Pavilion Chronicle"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Desert Pavilion Chronicle')}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+15%_hydro_dmg_set'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/heart_of_depth"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/heart_of_depth_flower.png"
|
||||||
|
alt="Heart of Depth"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Heart of Depth')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/nymphs_dream"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/nymphs_dream_flower.png"
|
||||||
|
alt="Nymph's Dream"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t("Nymph's Dream")}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+80_em'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/gilded_dreams"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/gilded_dreams_flower.png"
|
||||||
|
alt="Gilded Dreams"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Gilded Dreams')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/wanderers_troupe"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/wanderers_troupe_flower.png"
|
||||||
|
alt="Wanderer's Troupe"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t("Wanderer's Troupe")}</span>
|
||||||
|
</a>
|
||||||
|
{:else if artifact === '+15%_healing_bonus_set'}
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
||||||
|
href="/artifacts/ocean-hued_clam"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/ocean-hued_clam_flower.png"
|
||||||
|
alt="Ocean-Hued Clam"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Ocean-Hued Clam')}</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
||||||
|
href="/artifacts/maiden_beloved"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="h-8 ml-1 mr-2"
|
||||||
|
src="/images/artifacts/maiden_beloved_flower.png"
|
||||||
|
alt="Maiden Beloved"
|
||||||
|
/>
|
||||||
|
<span class="font-semibold">{$t('Maiden Beloved')}</span>
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img
|
||||||
|
class="h-8 mr-2"
|
||||||
|
src="/images/artifacts/{getArtifactCommon(artifact)}_flower.png"
|
||||||
|
alt={artifact}
|
||||||
|
/>
|
||||||
|
<span style="padding-top: 2px;">
|
||||||
|
{$t(getArtifactCommonName(artifact))}
|
||||||
|
</span>
|
||||||
|
<span class="ml-2 bg-gray-400 rounded-md px-1 text-sm text-gray-900">
|
||||||
|
{item.length === 1 ? '4' : '2'}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{/each}
|
||||||
<div class="flex items-center bg-background rounded-md p-1 mr-1">
|
</div>
|
||||||
<p class="w-6 text-center mr-1" style="padding-top: 2px;">{i + 1}</p>
|
|
||||||
<Icon className={rarityColor[weaponList[weapon.id].rarity]} path={mdiStar} size={0.8} />
|
|
||||||
<img class="h-8 mr-2 ml-2" src="/images/weapons/{weapon.id}.png" alt={weaponList[weapon.id].name} />
|
|
||||||
<p class="pl-1 pr-2" style="padding-top: 2px;">
|
|
||||||
<span>{$t(weaponList[weapon.id].name)}</span>
|
|
||||||
{#if weapon.refine}
|
|
||||||
<span class="ml-2 bg-blue-300 rounded-md px-1 text-sm text-gray-900"
|
|
||||||
>R{weapon.refine.join('-')}</span
|
|
||||||
>
|
|
||||||
{/if}
|
|
||||||
{#if weapon.stack}
|
|
||||||
<Tooltip title="Stack">
|
|
||||||
<span class="ml-2 bg-orange-300 rounded-md px-1 text-sm text-gray-900">S{weapon.stack}</span>
|
|
||||||
</Tooltip>
|
|
||||||
{/if}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
<div class="mt-4 mx-4 -mb-1 md:max-w-screen-sm">
|
|
||||||
<h4 class="font-black font-display text-lg">{$t('characters.artifacts')}</h4>
|
|
||||||
{#each build.artifacts as item, i}
|
|
||||||
<div class="flex mb-1">
|
|
||||||
<div class="flex items-center justify-center bg-background rounded-md px-1 mr-1">
|
|
||||||
<p class="w-6 text-center" style="min-width: 1.5rem; padding-top: 2px;">{i + 1}</p>
|
|
||||||
<div class="flex flex-wrap -mb-1">
|
|
||||||
{#each item as artifact, i}
|
|
||||||
{#if item.length > 2 && i === 0}
|
|
||||||
<div
|
|
||||||
class="flex items-center justify-center bg-background rounded-md px-2 py-1 mb-1 mr-1"
|
|
||||||
style="height: 40px;"
|
|
||||||
>
|
|
||||||
<p class="text-center whitespace-nowrap text-primary" style="padding-top: 2px;">
|
|
||||||
{$t('artifact.choose2')}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
<a
|
|
||||||
class="popup bg-background rounded-md py-1 pl-1 pr-2 mr-1 mb-1 flex items-center"
|
|
||||||
href={artifact.startsWith('+') ? undefined : `/artifacts/${artifact}`}
|
|
||||||
>
|
|
||||||
<div class="popup-container">
|
|
||||||
<div class="bg-gray-300 text-gray-900 p-2 rounded-md mb-1 shadow-2xl">
|
|
||||||
{#if !artifact.startsWith('+')}
|
|
||||||
{#each artifacts[artifact].bonuses as bonus, i}
|
|
||||||
<div class={i === 1 ? 'mt-2' : ''}>
|
|
||||||
<p class="font-bold text-primary text-sm">
|
|
||||||
{$t('artifact.setPiece', { values: { piece: (i + 1) * 2 } })}
|
|
||||||
</p>
|
|
||||||
<p class="text-gray-900 text-sm">{bonus}</p>
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
{:else if artifact === '+18%_atk_set'}
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/gladiators_finale"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/gladiators_finale_flower.png"
|
|
||||||
alt="Gladiator's Finale"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t("Gladiator's Finale")}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 py-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/shimenawas_reminiscence"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/shimenawas_reminiscence_flower.png"
|
|
||||||
alt="Shimenawa's Reminiscence"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t("Shimenawa's Reminiscence")}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 py-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/vermillion_hereafter"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/vermillion_hereafter_flower.png"
|
|
||||||
alt="Vermillion Hereafter"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Vermillion Hereafter')}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
|
||||||
href="/artifacts/echoes_of_an_offering"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/echoes_of_an_offering_flower.png"
|
|
||||||
alt="Echoes of an Offering"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Echoes of an Offering')}</span>
|
|
||||||
</a>
|
|
||||||
{:else if artifact === '+20%_energy_recharge'}
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/emblem_of_severed_fate"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/emblem_of_severed_fate_flower.png"
|
|
||||||
alt="Emblem of Severed Fate"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Emblem of Severed Fate')}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 py-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/the_exile"
|
|
||||||
>
|
|
||||||
<img class="h-8 ml-1 mr-2" src="/images/artifacts/the_exile_flower.png" alt="The Exile" />
|
|
||||||
<span class="font-semibold">{$t('The Exile')}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
|
||||||
href="/artifacts/scholar"
|
|
||||||
>
|
|
||||||
<img class="h-8 ml-1 mr-2" src="/images/artifacts/scholar_flower.png" alt="Scholar" />
|
|
||||||
<span class="font-semibold">{$t('Scholar')}</span>
|
|
||||||
</a>
|
|
||||||
{:else if artifact === '+25%_physical_dmg'}
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/bloodstained_chivalry"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/bloodstained_chivalry_flower.png"
|
|
||||||
alt="Bloodstained Chivalry"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Bloodstained Chivalry')}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
|
||||||
href="/artifacts/pale_flame"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/pale_flame_flower.png"
|
|
||||||
alt="Pale Flame"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Pale Flame')}</span>
|
|
||||||
</a>
|
|
||||||
{:else if artifact === '+80_em'}
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/gilded_dreams"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/gilded_dreams_flower.png"
|
|
||||||
alt="Gilded Dreams"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Gilded Dreams')}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
|
||||||
href="/artifacts/wanderers_troupe"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/wanderers_troupe_flower.png"
|
|
||||||
alt="Wanderer's Troupe"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t("Wanderer's Troupe")}</span>
|
|
||||||
</a>
|
|
||||||
{:else if artifact === '+15%_healing_bonus_set'}
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pb-1 border-b border-gray-400"
|
|
||||||
href="/artifacts/ocean-hued_clam"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/ocean-hued_clam_flower.png"
|
|
||||||
alt="Ocean-Hued Clam"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Ocean-Hued Clam')}</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="flex items-center text-primary hover:text-blue-400 pt-1"
|
|
||||||
href="/artifacts/maiden_beloved"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
class="h-8 ml-1 mr-2"
|
|
||||||
src="/images/artifacts/maiden_beloved_flower.png"
|
|
||||||
alt="Maiden Beloved"
|
|
||||||
/>
|
|
||||||
<span class="font-semibold">{$t('Maiden Beloved')}</span>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img
|
|
||||||
class="h-8 mr-2"
|
|
||||||
src="/images/artifacts/{getArtifactCommon(artifact)}_flower.png"
|
|
||||||
alt={artifact}
|
|
||||||
/>
|
|
||||||
<span style="padding-top: 2px;">
|
|
||||||
{$t(getArtifactCommonName(artifact))}
|
|
||||||
</span>
|
|
||||||
<span class="ml-2 bg-gray-400 rounded-md px-1 text-sm text-gray-900">
|
|
||||||
{item.length === 1 ? '4' : '2'}
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<a
|
||||||
<a
|
class="mx-4 md:mx-8 px-2 py-1 bg-background hover:bg-item text-primary mt-2 rounded-md inline-block"
|
||||||
class="mx-4 md:mx-8 px-2 py-1 bg-background hover:bg-item text-primary mt-2 rounded-md inline-block"
|
href="https://tinyurl.com/genshinbuilds"
|
||||||
href="https://tinyurl.com/genshinbuilds"
|
target="_blank"
|
||||||
target="_blank"
|
>
|
||||||
>
|
{$t('characters.source')}
|
||||||
{$t('characters.source')}
|
</a>
|
||||||
</a>
|
{/if}
|
||||||
<Ad class="mt-2 max-w-screen-2xl flex justify-center" type="desktop" variant="lb" id="2" />
|
<Ad class="mt-2 max-w-screen-2xl flex justify-center" type="desktop" variant="lb" id="2" />
|
||||||
<Ad type="mobile" variant="lb" id="2" />
|
<Ad type="mobile" variant="lb" id="2" />
|
||||||
<div class="flex flex-col mt-4 text-white px-4 md:px-8 max-w-screen-2xl" bind:this={talentDiv}>
|
<div class="flex flex-col mt-4 text-white px-4 md:px-8 max-w-screen-2xl" bind:this={talentDiv}>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script context="module">
|
<script context="module">
|
||||||
export async function load({ fetch }) {
|
export async function load({ fetch }) {
|
||||||
const promoted = ['yoimiya', 'yae_miko'];
|
const promoted = ['eula', 'klee'];
|
||||||
const builds = {};
|
const builds = {};
|
||||||
for (const p of promoted) {
|
for (const p of promoted) {
|
||||||
const response = await fetch(`/characters/build/${p}.json`);
|
const response = await fetch(`/characters/build/${p}.json`);
|
||||||
|
|
|
@ -94,8 +94,8 @@
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let powershellScript = `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex "&{$((New-Object System.Net.WebClient).DownloadString('https://gist.githubusercontent.com/MadeBaruna/1d75c1d37d19eca71591ec8a31178235/raw/702e34117b07294e6959928963b76cfdafdd94f3/getlink.ps1'))} global"`;
|
let powershellScript = `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex "&{$((New-Object System.Net.WebClient).DownloadString('https://gist.githubusercontent.com/MadeBaruna/1d75c1d37d19eca71591ec8a31178235/raw/649a9e3a4e88f3bffdd0fe6dd8eeed23737b15da/getlink.ps1'))} global"`;
|
||||||
let powershellScriptChina = `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex "&{$((New-Object System.Net.WebClient).DownloadString('https://gist.githubusercontent.com/MadeBaruna/1d75c1d37d19eca71591ec8a31178235/raw/702e34117b07294e6959928963b76cfdafdd94f3/getlink.ps1'))} china"`;
|
let powershellScriptChina = `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex "&{$((New-Object System.Net.WebClient).DownloadString('https://gist.githubusercontent.com/MadeBaruna/1d75c1d37d19eca71591ec8a31178235/raw/649a9e3a4e88f3bffdd0fe6dd8eeed23737b15da/getlink.ps1'))} china"`;
|
||||||
let powershellScriptSource = 'https://gist.github.com/MadeBaruna/1d75c1d37d19eca71591ec8a31178235';
|
let powershellScriptSource = 'https://gist.github.com/MadeBaruna/1d75c1d37d19eca71591ec8a31178235';
|
||||||
let powershellScriptAlt = `iex('Write-Host "Copy the wish history table!";while(1) { $c = Get-Clipboard -TextFormatType Html; if ($c -match "^SourceURL:https:/.+log") { break; }; for($i=5; $i -gt 0; $i--) { Write-Host "\`rChecking in $i" -NoNewline; Sleep 1; }; }; Write-Host " OK"; $m=(((Get-Clipboard -TextFormatType Html) | Select-String "(https:/.+log)").Matches[0].Value);$m; Set-Clipboard -Value $m;')`;
|
let powershellScriptAlt = `iex('Write-Host "Copy the wish history table!";while(1) { $c = Get-Clipboard -TextFormatType Html; if ($c -match "^SourceURL:https:/.+log") { break; }; for($i=5; $i -gt 0; $i--) { Write-Host "\`rChecking in $i" -NoNewline; Sleep 1; }; }; Write-Host " OK"; $m=(((Get-Clipboard -TextFormatType Html) | Select-String "(https:/.+log)").Matches[0].Value);$m; Set-Clipboard -Value $m;')`;
|
||||||
let powershellScriptAlt2 =
|
let powershellScriptAlt2 =
|
||||||
|
@ -902,10 +902,10 @@
|
||||||
</h1>
|
</h1>
|
||||||
<div class="mt-4 mb-4 md:flex items-center bg-background rounded-xl p-4 relative">
|
<div class="mt-4 mb-4 md:flex items-center bg-background rounded-xl p-4 relative">
|
||||||
<img class="h-16 hidden md:block mr-0" src="/images/paimon_faq.png" alt="Paimon" />
|
<img class="h-16 hidden md:block mr-0" src="/images/paimon_faq.png" alt="Paimon" />
|
||||||
<div class="md:ml-4 ">
|
<div class="md:ml-4">
|
||||||
<p class="text-white font-bold">{$t('wish.import.header.0')}</p>
|
<p class="text-white font-bold">{$t('wish.import.header.0')}</p>
|
||||||
<p class="text-gray-200 text-sm">{$t('wish.import.header.1')}</p>
|
<p class="text-gray-200 text-sm">{$t('wish.import.header.1')}</p>
|
||||||
<div class="flex items-center mt-2 md:mt-0 bg-background-secondary md:bg-transparent p-2 md:p-0 rounded-xl ">
|
<div class="flex items-center mt-2 md:mt-0 bg-background-secondary md:bg-transparent p-2 md:p-0 rounded-xl">
|
||||||
<img class="h-16 md:hidden mr-2" src="/images/paimon_faq.png" alt="Paimon" />
|
<img class="h-16 md:hidden mr-2" src="/images/paimon_faq.png" alt="Paimon" />
|
||||||
<p class="text-yellow-300 text-sm">{$t('wish.import.header.2')}</p>
|
<p class="text-yellow-300 text-sm">{$t('wish.import.header.2')}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,7 +7,7 @@ const IMAGE_CACHE = `cacheimg${IMAGE_CACHE_VER}`;
|
||||||
|
|
||||||
const IMAGE_URL = `${self.location.origin}/images/`;
|
const IMAGE_URL = `${self.location.origin}/images/`;
|
||||||
|
|
||||||
const changelog = ['Add Kirara', 'Update banners', 'Update timeline', 'Update achievements'];
|
const changelog = ['Update achievement', 'Update import on pc', 'Update banners', 'Update timeline'];
|
||||||
|
|
||||||
const channel = new BroadcastChannel('paimonmoe-sw');
|
const channel = new BroadcastChannel('paimonmoe-sw');
|
||||||
|
|
||||||
|
|
BIN
static/images/banners/Born of Ocean Swell 3.png
Normal file
After Width: | Height: | Size: 243 KiB |
BIN
static/images/banners/Caution in Confidence 2.png
Normal file
After Width: | Height: | Size: 431 KiB |
BIN
static/images/banners/Epitome Invocation 48.png
Normal file
After Width: | Height: | Size: 295 KiB |
BIN
static/images/banners/Epitome Invocation 49.png
Normal file
After Width: | Height: | Size: 169 KiB |
BIN
static/images/banners/Leaves in the Wind 3.png
Normal file
After Width: | Height: | Size: 401 KiB |
BIN
static/images/banners/Sparkling Steps 4.png
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
static/images/events/Adventurers Trials Advanced Temp.png
Normal file
After Width: | Height: | Size: 230 KiB |
BIN
static/images/events/Born of Ocean Swell 3.jpg
Normal file
After Width: | Height: | Size: 243 KiB |
BIN
static/images/events/Caution in Confidence 2.png
Normal file
After Width: | Height: | Size: 431 KiB |
BIN
static/images/events/Divine Ingenuity 2.png
Normal file
After Width: | Height: | Size: 343 KiB |
BIN
static/images/events/Epitome Invocation 48.png
Normal file
After Width: | Height: | Size: 295 KiB |
BIN
static/images/events/Epitome Invocation 49.jpg
Normal file
After Width: | Height: | Size: 169 KiB |
BIN
static/images/events/Feast of the Departed Warriors.png
Normal file
After Width: | Height: | Size: 324 KiB |
BIN
static/images/events/Leaves in the Wind 3.png
Normal file
After Width: | Height: | Size: 401 KiB |
BIN
static/images/events/Secret Summer Paradise.jpg
Normal file
After Width: | Height: | Size: 234 KiB |
BIN
static/images/events/Sparkling Steps 4.jpg
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
static/images/events/Vivid Illumination.jpg
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
static/images/home/eula_klee.png
Normal file
After Width: | Height: | Size: 307 KiB |
BIN
static/images/home/kazuha_alhaitham.png
Normal file
After Width: | Height: | Size: 246 KiB |