feat: make third-camp preparation choices explicit
This commit is contained in:
@@ -749,6 +749,8 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
})) ?? [],
|
||||
selectedPriorityId:
|
||||
thirdProgress?.selectedPriorityId ?? null,
|
||||
selectionConfirmed:
|
||||
thirdProgress?.selectionConfirmed ?? false,
|
||||
selectedPriorityLabel:
|
||||
selectedThirdPriority?.label ?? null,
|
||||
hudActivityTitle:
|
||||
@@ -933,8 +935,9 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
this.completeThirdCampActivity(
|
||||
activityId as ThirdCampExplorationActivityId
|
||||
);
|
||||
return thirdCampExplorationProgress().selectedPriorityId ===
|
||||
activityId;
|
||||
return thirdCampExplorationProgress().completedActivityIds.includes(
|
||||
activityId as ThirdCampExplorationActivityId
|
||||
);
|
||||
}
|
||||
|
||||
private isSecondReliefVisit() {
|
||||
@@ -1061,7 +1064,7 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
? getThirdCampPreparationPriority(progress.selectedPriorityId)
|
||||
: undefined;
|
||||
return progress.completedActivityCount > 0
|
||||
? `선택 활동 ${progress.completedActivityCount} / 3 · 현재 우선 ${selected?.label ?? '미정'} · 언제든 출진 가능`
|
||||
? `준비 활동 ${progress.completedActivityCount} / 3 · 출진 보너스 ${selected?.label ?? '미선택'}${progress.ready ? '' : selected ? ' 확인 필요' : ''} · 군영 장부에서 확정`
|
||||
: '준비 활동 0 / 3 · 원하는 곳만 살피고 남쪽 출구에서 언제든 출진할 수 있습니다.';
|
||||
}
|
||||
|
||||
@@ -1721,7 +1724,7 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
150,
|
||||
'자유 준비 0 / 3',
|
||||
'작전판 · 보급 수레 · 먼저 귀환한 동료',
|
||||
'한 곳만 확인해도 방침이 정해지며, 마지막 활동이 현재 우선 기준이 됩니다.'
|
||||
'활동을 마치면 보너스 후보가 열립니다. 현재 출진 보너스는 자동으로 바뀌지 않습니다.'
|
||||
);
|
||||
this.objectiveCard = activityCard.background;
|
||||
this.thirdActivityTitleText = activityCard.titleText;
|
||||
@@ -1736,9 +1739,9 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
|
||||
const priorityCard = this.drawObjectiveCard(
|
||||
342,
|
||||
'현재 출진 우선',
|
||||
'출진 보너스 확정',
|
||||
'아직 정하지 않음',
|
||||
'완료한 활동을 다시 확인하면 보상 중복 없이 우선 기준만 바뀝니다.'
|
||||
'실제로 적용할 하나는 군영 장부에서 따로 선택하고 확정합니다.'
|
||||
);
|
||||
this.thirdPriorityLocationText = priorityCard.locationText;
|
||||
|
||||
@@ -2913,7 +2916,7 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
const newlyCompleted =
|
||||
!before.completedActivityIds.includes(activityId);
|
||||
this.inputReadyAt = this.time.now + inputCarryoverGuardMs;
|
||||
this.lastNotice = `${result.activity.shortLabel} · 현재 출진 우선`;
|
||||
this.lastNotice = `${result.activity.shortLabel} · 보너스 후보 해금`;
|
||||
if (newlyCompleted) {
|
||||
soundDirector.playObjectiveAchieved();
|
||||
} else {
|
||||
@@ -2925,8 +2928,8 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
this.refreshInteractionPrompt();
|
||||
this.showCompletionToast(
|
||||
newlyCompleted
|
||||
? result.activity.completionLine
|
||||
: `${result.priority.label}을 현재 출진 우선으로 다시 선택했습니다. 보상은 중복되지 않습니다.`,
|
||||
? `${result.activity.completionLine} 군영 장부에서 출진 보너스로 선택할 수 있습니다.`
|
||||
: `${result.priority.label} 후보는 이미 해금되어 있습니다. 현재 출진 보너스는 그대로 유지됩니다.`,
|
||||
'success',
|
||||
newlyCompleted ? 2100 : 1750
|
||||
);
|
||||
@@ -3572,7 +3575,7 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
|
||||
this.inputReadyAt = this.time.now + inputCarryoverGuardMs;
|
||||
this.closeChoicePanel();
|
||||
this.lastNotice = '동료 공명 · 현재 출진 우선';
|
||||
this.lastNotice = '동료 공명 · 보너스 후보 해금';
|
||||
if (alreadyCompleted) {
|
||||
soundDirector.playSelect();
|
||||
} else {
|
||||
@@ -3593,8 +3596,8 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
{
|
||||
speaker: '공명 기록',
|
||||
text: alreadyCompleted
|
||||
? `${result.memory.label}을 현재 출진 우선으로 다시 선택했습니다. 공명 보상은 중복되지 않습니다.`
|
||||
: `${result.choice.label} · 공명 +${result.rewardExp} · 다음 본영전 초반 협공 신호에 반영`
|
||||
? '동료 공명 후보는 이미 해금되어 있습니다. 현재 출진 보너스와 공명 보상은 바뀌지 않습니다.'
|
||||
: `${result.choice.label} · 공명 +${result.rewardExp} · 군영 장부에서 초반 협공 보너스로 선택 가능`
|
||||
}
|
||||
],
|
||||
() =>
|
||||
@@ -3657,7 +3660,7 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
portraitKey: 'liuBei',
|
||||
text:
|
||||
progress.completedActivityCount > 0
|
||||
? '살핀 준비와 현재 우선 기준은 장부에 남았다. 나머지는 선택이니 군영으로 돌아가 출진 여부를 정하자.'
|
||||
? '살핀 준비는 장부에 남았다. 실제로 적용할 보너스는 군영 장부에서 따로 정하고 출진하자.'
|
||||
: '아직 별도 준비를 확인하지 않았지만, 세 활동은 모두 선택이다. 군영 장부로 돌아가 바로 출진해도 된다.'
|
||||
},
|
||||
{
|
||||
@@ -3766,8 +3769,8 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
sceneHeight / 2 + 44,
|
||||
this.isThirdCampVisit()
|
||||
? this.visitComplete()
|
||||
? '선택한 출진 우선과 완료한 활동을 장부에 반영합니다.'
|
||||
: '선택 활동을 남겨 두고 군영 장부로 돌아갑니다.'
|
||||
? '완료한 활동을 장부에 반영하고, 출진 보너스는 군영에서 따로 확정합니다.'
|
||||
: '완료한 활동을 저장하고 보너스를 정할 군영 장부로 돌아갑니다.'
|
||||
: this.visitComplete()
|
||||
? this.isSecondReliefVisit()
|
||||
? '현장 수습과 광종 진군 방침을 출진 장부에 올립니다.'
|
||||
@@ -3826,21 +3829,27 @@ export class CampVisitExplorationScene extends Phaser.Scene {
|
||||
`자유 준비 ${progress.completedActivityCount} / 3`
|
||||
);
|
||||
this.thirdPriorityLocationText?.setText(
|
||||
selected?.label ?? '아직 정하지 않음'
|
||||
selected
|
||||
? `${selected.label}${progress.ready ? ' · 확정됨' : ' · 확인 필요'}`
|
||||
: '아직 정하지 않음'
|
||||
);
|
||||
const activityLines = progress.activities
|
||||
.map(
|
||||
(activity) =>
|
||||
`${activity.completed ? '✓' : '!'} ${activity.shortLabel}${
|
||||
activity.selected ? ' · 현재 우선' : ''
|
||||
activity.selected
|
||||
? progress.ready
|
||||
? ' · 출진 확정'
|
||||
: ' · 확인 필요'
|
||||
: ''
|
||||
}`
|
||||
)
|
||||
.join('\n');
|
||||
this.progressText?.setText(
|
||||
`선택 활동 ${progress.completedActivityCount} / 3 · 모두 선택\n` +
|
||||
`현재 우선 · ${selected?.label ?? '아직 정하지 않음'}\n\n` +
|
||||
`준비 활동 ${progress.completedActivityCount} / 3 · 모두 선택\n` +
|
||||
`출진 보너스 · ${selected?.label ?? '미선택'}${selected && !progress.ready ? ' · 군영 확인 필요' : ''}\n\n` +
|
||||
`${activityLines}\n\n` +
|
||||
'완료한 곳을 다시 확인하면 보상 중복 없이 우선 기준만 바뀝니다.'
|
||||
'재방문해도 선택은 바뀌지 않습니다. 군영 장부에서 적용할 하나를 확정하세요.'
|
||||
);
|
||||
this.refreshThirdWorldFeedback();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user