- | {{ me.name }} |
+ {{ me.name }} |
{
{{ conflict.cityName }}
- {{
+ {{
nationMap.get(Number(id))?.name
}}{{ percent.toFixed(1) }}% {
}
return map;
});
+const selectedSpecialWarInfo = computed(
+ () => status.value?.availableSpecialWar.find((entry) => entry.key === nextSpecialKey.value)?.info ?? ''
+);
const buffCost = (key: BuffKey, target: number): number => {
const points = status.value?.inheritConst.inheritBuffPoints ?? [0, 0, 0, 0, 0, 0];
@@ -493,7 +496,11 @@ onMounted(() => {
{{ specialNameMap.get(nextSpecialKey) }} 특기를 다음에 얻도록 지정합니다. {{
+ selectedSpecialWarInfo
+ }} {{ specialNameMap.get(nextSpecialKey) }} 특기를 다음에
+ 얻도록 지정합니다. 필요 포인트: {{ status.inheritConst.inheritSpecificSpecialPoint }}
diff --git a/app/game-frontend/src/views/MainView.vue b/app/game-frontend/src/views/MainView.vue
index 2106881..f9bb136 100644
--- a/app/game-frontend/src/views/MainView.vue
+++ b/app/game-frontend/src/views/MainView.vue
@@ -65,6 +65,18 @@ const nationAccess = computed(() => ({
}));
const nationColor = computed(() => nation.value?.color ?? '#000000');
const voteActive = computed(() => Boolean(frontStatus.value?.latestVote));
+const formatRecord = (entry: { text: string; createdAt?: string | Date }, appendTime = false): string => {
+ if (!appendTime || /\d{2}:\d{2}\s*$/u.test(entry.text)) return formatLog(entry.text);
+ const parsed = entry.createdAt ? new Date(entry.createdAt) : null;
+ if (!parsed || Number.isNaN(parsed.getTime())) return formatLog(entry.text);
+ const time = new Intl.DateTimeFormat('ko-KR', {
+ timeZone: 'Asia/Seoul',
+ hour: '2-digit',
+ minute: '2-digit',
+ hour12: false,
+ }).format(parsed);
+ return formatLog(`${entry.text} ${time}`);
+};
let surveyNoticeTimer: ReturnType | null = null;
watch(surveyNotice, (notice) => {
@@ -151,7 +163,9 @@ watch(
>
실시간 동기화: {{ realtimeLabel }}
-
+
@@ -241,7 +255,7 @@ watch(
v-for="entry in globalRecords"
:key="entry.id"
class="record-line"
- v-html="formatLog(entry.text)"
+ v-html="formatRecord(entry)"
/>
기록이 없습니다.
@@ -255,7 +269,7 @@ watch(
v-for="entry in generalRecords"
:key="entry.id"
class="record-line"
- v-html="formatLog(entry.text)"
+ v-html="formatRecord(entry, true)"
/>
기록이 없습니다.
@@ -269,7 +283,7 @@ watch(
v-for="entry in worldHistory"
:key="entry.id"
class="record-line"
- v-html="formatLog(entry.text)"
+ v-html="formatRecord(entry)"
/>
기록이 없습니다.
@@ -350,7 +364,7 @@ watch(
v-for="entry in globalRecords"
:key="entry.id"
class="record-line"
- v-html="formatLog(entry.text)"
+ v-html="formatRecord(entry)"
/>
기록이 없습니다.
@@ -364,7 +378,7 @@ watch(
v-for="entry in generalRecords"
:key="entry.id"
class="record-line"
- v-html="formatLog(entry.text)"
+ v-html="formatRecord(entry, true)"
/>
기록이 없습니다.
@@ -378,7 +392,7 @@ watch(
v-for="entry in worldHistory"
:key="entry.id"
class="record-line"
- v-html="formatLog(entry.text)"
+ v-html="formatRecord(entry)"
/>
기록이 없습니다.
@@ -624,7 +638,6 @@ button {
.desktop-message-panel {
grid-column: 1 / -1;
- height: 1377.5px;
}
.common-menu-middle {
@@ -654,6 +667,11 @@ button {
white-space: nowrap;
}
+.record-line :deep(.hidden_but_copyable) {
+ color: transparent !important;
+ font-size: 0;
+}
+
.record-empty {
color: #aaa;
}
diff --git a/app/game-frontend/src/views/MyPageView.vue b/app/game-frontend/src/views/MyPageView.vue
index 7ff5f29..838adc0 100644
--- a/app/game-frontend/src/views/MyPageView.vue
+++ b/app/game-frontend/src/views/MyPageView.vue
@@ -386,20 +386,49 @@ onMounted(() => {
경험/공헌
{{ data.general.experience }} / {{ data.general.dedication }}
+
+ 성격/특기
+
+ {{ data.general.traits?.personal ?? '-' }} /
+ {{ data.general.traits?.specialWar ?? '-' }}
+
+
+
+ 나이/다음턴
+ {{ data.general.age ?? '-' }}세 / {{ data.general.turnTime?.slice(11, 16) ?? '-' }}
+
- 명망 약간 ({{ data.general.experience }}) · 계급
- 약간 ({{ data.general.dedication }})
+ 명망
+ Lv {{ data.general.progression?.experienceLevel ?? 0 }} ({{
+ data.general.experience
+ }})
+ · 계급
+ Lv {{ data.general.progression?.dedicationLevel ?? 0 }} ({{
+ data.general.dedication
+ }})
전투 0 · 계략 0 · 사관 7년
승률 0% · 승리 0 · 패배 0
살상률 0% · 사살 0 · 피살 0
숙련도
- 보병 0.0K · 궁병 0.0K · 기병 0.0K · 귀병 0.0K · 차병 0.0K
- 병종 {{ data.general.crew ? '보병' : '-' }} · 부상 {{ data.general.injury }} · 부대 - · 벌점 -
+ 보병 {{ data.general.progression?.dex?.[0] ?? 0 }} · 궁병
+ {{ data.general.progression?.dex?.[1] ?? 0 }} · 기병
+ {{ data.general.progression?.dex?.[2] ?? 0 }} · 귀병
+ {{ data.general.progression?.dex?.[3] ?? 0 }} · 차병
+ {{ data.general.progression?.dex?.[4] ?? 0 }}
+
+
+ 병종 {{ data.general.crewTypeId || '-' }} · 내정특기
+ {{ data.general.traits?.specialDomestic ?? '-' }} · 부상 {{ data.general.injury }} · 부대
+ {{ data.general.troopId || '-' }} · 벌점 {{ penalties.length || '-' }}
diff --git a/app/game-frontend/src/views/NationCitiesView.vue b/app/game-frontend/src/views/NationCitiesView.vue
index f548695..f36e392 100644
--- a/app/game-frontend/src/views/NationCitiesView.vue
+++ b/app/game-frontend/src/views/NationCitiesView.vue
@@ -2,6 +2,7 @@
import { computed, onMounted, ref } from 'vue';
import { useRouter } from 'vue-router';
import { getNpcColor } from '../utils/npcColor';
+import { legacyNationTextColor } from '../utils/legacyNationColor';
import { cityLevelMap, regionMap } from '../utils/nationFormat';
import { trpc } from '../utils/trpc';
@@ -149,7 +150,14 @@ onMounted(async () => {
>
|