diff --git a/messages/vi.json b/messages/vi.json
index 9f4fba6..cf1c9b6 100644
--- a/messages/vi.json
+++ b/messages/vi.json
@@ -197,6 +197,7 @@
"selectPFEvent": "Chọn sự kiện PF",
"selectASEvent": "Chọn sự kiện AS",
"selectCEEvent": "Chọn sự kiện CE",
+ "selectPEAKEvent": "Chọn sự kiện PEAK",
"selectEvent": "Chọn sự kiện",
"selectFloor": "Chọn tầng",
"selectSide": "Chọn nửa trận",
@@ -237,10 +238,9 @@
"maxAllSuccess": "Đã thiết lập cấp độ kỹ năng tối đa thành công.",
"maxAllFailed": "Thiết lập cấp độ kỹ năng tối đa thất bại.",
"noRelicEquipped": "Không có di vật",
- "anomalyArbitration": "Phán Quyết Dị Thường",
+ "anomalyArbitration": "Trọng tài dị tướng",
"normalMode": "Chế độ thường",
"hardMode": "Chế độ khó",
- "selectPEAKEvent": "Chọn sự kiện",
"mode": "Chế độ",
"selectMode": "Chọn chế độ",
"rollBack": "Quay lại bước trước",
diff --git a/public/icon/ChallengePeakIcon.webp b/public/icon/ChallengePeakIcon.webp
new file mode 100644
index 0000000..da86ce0
Binary files /dev/null and b/public/icon/ChallengePeakIcon.webp differ
diff --git a/src/components/monsterBar/as.tsx b/src/components/monsterBar/as.tsx
index c1ed15f..1aa87b2 100644
--- a/src/components/monsterBar/as.tsx
+++ b/src/components/monsterBar/as.tsx
@@ -74,7 +74,7 @@ export default function AsBar() {
newBattleConfig.monsters = []
newBattleConfig.stage_id = 0
- if ((as_config.floor_side === "Upper" || as_config.floor_side === "Upper -> Lower")
+ if ((as_config.floor_side === "Upper" || as_config.floor_side === "Upper -> Lower")
&& challengeSelected.EventIDList1.length > 0) {
newBattleConfig.stage_id = challengeSelected.EventIDList1[0].StageID
for (const wave of challengeSelected.EventIDList1[0].MonsterList) {
@@ -89,7 +89,7 @@ export default function AsBar() {
newBattleConfig.monsters.push(newWave)
}
}
- if ((as_config.floor_side === "Lower" || as_config.floor_side === "Lower -> Upper")
+ if ((as_config.floor_side === "Lower" || as_config.floor_side === "Lower -> Upper")
&& challengeSelected.EventIDList2.length > 0) {
newBattleConfig.stage_id = challengeSelected.EventIDList2[0].StageID
for (const wave of challengeSelected.EventIDList2[0].MonsterList) {
@@ -104,7 +104,7 @@ export default function AsBar() {
newBattleConfig.monsters.push(newWave)
}
}
- if (as_config.floor_side === "Lower -> Upper"
+ if (as_config.floor_side === "Lower -> Upper"
&& challengeSelected.EventIDList1.length > 0) {
for (const wave of challengeSelected.EventIDList1[0].MonsterList) {
const newWave: MonsterStore[] = []
@@ -117,7 +117,7 @@ export default function AsBar() {
}
newBattleConfig.monsters.push(newWave)
}
- } else if (as_config.floor_side === "Upper -> Lower"
+ } else if (as_config.floor_side === "Upper -> Lower"
&& challengeSelected.EventIDList2.length > 0) {
for (const wave of challengeSelected.EventIDList2[0].MonsterList) {
const newWave: MonsterStore[] = []
@@ -146,7 +146,7 @@ export default function AsBar() {
if (!ASEvent) return null
return (
-
+
{/* Title Card */}
@@ -160,11 +160,11 @@ export default function AsBar() {
excludeSet={[]}
selectedCustomSet={as_config.event_id.toString()}
placeholder={transI18n("selectASEvent")}
- setSelectedCustomSet={(id) => setAsConfig({
- ...as_config,
- event_id: Number(id),
+ setSelectedCustomSet={(id) => setAsConfig({
+ ...as_config,
+ event_id: Number(id),
challenge_id: mapASInfo[Number(id)]?.Level.slice(-1)[0]?.Id || 0,
- buff_id: 0
+ buff_id: 0
})}
/>
@@ -243,106 +243,109 @@ export default function AsBar() {
{/* Enemy Waves */}
-
- {/* First Half */}
-
-
{transI18n("firstHalfEnemies")}
+ {(as_config?.challenge_id ?? 0) !== 0 && (
+
+ {/* First Half */}
+
+
{transI18n("firstHalfEnemies")}
- {challengeSelected && challengeSelected?.EventIDList1?.length > 0 && challengeSelected?.EventIDList1[0].MonsterList.map((wave, waveIndex) => (
-
-
{transI18n("wave")} {waveIndex + 1}
-
- {Object.values(wave).map((waveValue, enemyIndex) => (
-
-
-
- {listMonster.find((monster) => monster.child.includes(waveValue))?.icon && monster.child.includes(waveValue))?.icon?.split("/")?.pop()?.replace(".png", "")}.webp`}
- alt="Enemy Icon"
- width={376}
- height={512}
- className="w-full h-full object-cover"
- />}
-
+ {challengeSelected && challengeSelected?.EventIDList1?.length > 0 && challengeSelected?.EventIDList1[0].MonsterList.map((wave, waveIndex) => (
+
+
{transI18n("wave")} {waveIndex + 1}
+
+ {Object.values(wave).map((waveValue, enemyIndex) => (
+
+
+
+ {listMonster.find((monster) => monster.child.includes(waveValue))?.icon && monster.child.includes(waveValue))?.icon?.split("/")?.pop()?.replace(".png", "")}.webp`}
+ alt="Enemy Icon"
+ width={376}
+ height={512}
+ className="w-full h-full object-cover"
+ />}
+
-
-
Lv. {challengeSelected?.EventIDList1[0].Level}
-
- {listMonster
- .find((monster) => monster.child.includes(waveValue))
- ?.weak?.map((icon, iconIndex) => (
-
- ))}
+
+
Lv. {challengeSelected?.EventIDList1[0].Level}
+
+ {listMonster
+ .find((monster) => monster.child.includes(waveValue))
+ ?.weak?.map((icon, iconIndex) => (
+
+ ))}
+
-
- ))}
+ ))}
+
-
- ))}
-
+ ))}
+
- {/* Second Half */}
-
-
{transI18n("secondHalfEnemies")}
+ {/* Second Half */}
+
+
{transI18n("secondHalfEnemies")}
- {challengeSelected && challengeSelected?.EventIDList2?.length > 0 && challengeSelected?.EventIDList2[0].MonsterList.map((wave, waveIndex) => (
-
-
{transI18n("wave")} {waveIndex + 1}
-
- {Object.values(wave).map((waveValue, enemyIndex) => (
-
+ {challengeSelected && challengeSelected?.EventIDList2?.length > 0 && challengeSelected?.EventIDList2[0].MonsterList.map((wave, waveIndex) => (
+
+
{transI18n("wave")} {waveIndex + 1}
+
+ {Object.values(wave).map((waveValue, enemyIndex) => (
+
-
-
- {listMonster.find((monster) => monster.child.includes(waveValue))?.icon && monster.child.includes(waveValue))?.icon?.split("/")?.pop()?.replace(".png", "")}.webp`}
- alt="Enemy Icon"
- width={376}
- height={512}
- className="w-full h-full object-cover"
- />}
-
+
+
+ {listMonster.find((monster) => monster.child.includes(waveValue))?.icon && monster.child.includes(waveValue))?.icon?.split("/")?.pop()?.replace(".png", "")}.webp`}
+ alt="Enemy Icon"
+ width={376}
+ height={512}
+ className="w-full h-full object-cover"
+ />}
+
-
-
Lv. {challengeSelected?.EventIDList1[0].Level}
-
- {listMonster
- .find((monster) => monster.child.includes(waveValue))
- ?.weak?.map((icon, iconIndex) => (
-
- ))}
+
+
Lv. {challengeSelected?.EventIDList1[0].Level}
+
+ {listMonster
+ .find((monster) => monster.child.includes(waveValue))
+ ?.weak?.map((icon, iconIndex) => (
+
+ ))}
+
-
- ))}
+ ))}
+
-
- ))}
+ ))}
+
-
+ )}
+
)
}
\ No newline at end of file
diff --git a/src/components/monsterBar/ce.tsx b/src/components/monsterBar/ce.tsx
index b1c981e..28243bd 100644
--- a/src/components/monsterBar/ce.tsx
+++ b/src/components/monsterBar/ce.tsx
@@ -111,7 +111,7 @@ export default function CeBar() {
}, [stageSearchTerm])
return (
-
{
+
{
setShowSearchWaveId(null)
setShowSearchStage(false)
@@ -217,7 +217,7 @@ export default function CeBar() {
{ce_config.monsters.map((wave, waveIndex) => (
-
+
{transI18n("wave")} {waveIndex + 1}