Compare commits
2 Commits
5968f0f67c
...
d8da88246d
| Author | SHA1 | Date | |
|---|---|---|---|
| d8da88246d | |||
| 063ee20202 |
Binary file not shown.
@@ -5,7 +5,10 @@ import { ZoneDetection } from "@/components/zone/ZoneDetection";
|
||||
import { PylonFarmerNPC } from "@/components/gameplay/pylon/PylonFarmerNPC";
|
||||
import { PylonNarratorOutro } from "@/components/gameplay/pylon/PylonNarratorOutro";
|
||||
import { PYLON_APPROACH_ZONE, PYLON_ARRIVED_ZONE } from "@/data/gameplay/zones";
|
||||
import { PYLON_NARRATIVE_DIALOGUES } from "@/data/gameplay/pylonConfig";
|
||||
import {
|
||||
PYLON_APPROACH_DELAY_MS,
|
||||
PYLON_NARRATIVE_DIALOGUES,
|
||||
} from "@/data/gameplay/pylonConfig";
|
||||
import { AudioManager } from "@/managers/AudioManager";
|
||||
import { loadDialogueManifest } from "@/utils/dialogues/loadDialogueManifest";
|
||||
import { playDialogueById } from "@/utils/dialogues/playDialogue";
|
||||
@@ -19,6 +22,18 @@ export function PylonNarrativeFlow(): React.JSX.Element | null {
|
||||
const setMissionStep = useGameStore((state) => state.setMissionStep);
|
||||
const setCanMove = useGameStore((state) => state.setCanMove);
|
||||
|
||||
useEffect(() => {
|
||||
if (mainState !== "pylon" || step !== "tampon") return undefined;
|
||||
|
||||
const timeoutId = window.setTimeout(() => {
|
||||
setMissionStep("pylon", "approaching");
|
||||
}, PYLON_APPROACH_DELAY_MS);
|
||||
|
||||
return () => {
|
||||
window.clearTimeout(timeoutId);
|
||||
};
|
||||
}, [mainState, setMissionStep, step]);
|
||||
|
||||
// ── approaching : powerdown sfx → then electricOutage dialogue ────────────
|
||||
useEffect(() => {
|
||||
if (mainState !== "pylon" || step !== "approaching") return undefined;
|
||||
@@ -129,7 +144,7 @@ export function PylonNarrativeFlow(): React.JSX.Element | null {
|
||||
<ZoneDetection
|
||||
key="pylon-approach"
|
||||
zone={PYLON_APPROACH_ZONE}
|
||||
onEnter={() => setMissionStep("pylon", "approaching")}
|
||||
onEnter={() => setMissionStep("pylon", "tampon")}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ export const PYLON_NARRATIVE_INTERACT_RADIUS = 3.5;
|
||||
|
||||
export const PYLON_STRAIGHTEN_ANIMATION_DURATION_MS = 2200;
|
||||
|
||||
export const PYLON_APPROACH_DELAY_MS = 7500;
|
||||
|
||||
export const PYLON_NARRATIVE_DIALOGUES = {
|
||||
electricOutage: "narrateur_coupureelec",
|
||||
searchCentral: "narrateur_fouillelecentre",
|
||||
|
||||
@@ -11,6 +11,7 @@ const REPAIR_MISSION_ID_VALUES: ReadonlySet<string> = new Set(
|
||||
export const MISSION_STEPS = [
|
||||
"locked",
|
||||
"electricienne_history",
|
||||
"tampon",
|
||||
"approaching",
|
||||
"arrived",
|
||||
"npc-return",
|
||||
@@ -26,6 +27,7 @@ export const MISSION_STEPS = [
|
||||
const MISSION_STEP_VALUES: ReadonlySet<string> = new Set(MISSION_STEPS);
|
||||
|
||||
const PYLON_ONLY_MISSION_STEPS = new Set<MissionStep>([
|
||||
"tampon",
|
||||
"approaching",
|
||||
"arrived",
|
||||
"npc-return",
|
||||
@@ -61,9 +63,11 @@ export function getNextMissionStep(
|
||||
): MissionStep {
|
||||
switch (step) {
|
||||
case "locked":
|
||||
return mission === "pylon" ? "approaching" : "waiting";
|
||||
return mission === "pylon" ? "tampon" : "waiting";
|
||||
case "electricienne_history":
|
||||
return "done";
|
||||
case "tampon":
|
||||
return "approaching";
|
||||
case "approaching":
|
||||
return "arrived";
|
||||
case "arrived":
|
||||
@@ -98,8 +102,10 @@ export function getPreviousMissionStep(
|
||||
return "locked";
|
||||
case "electricienne_history":
|
||||
return "locked";
|
||||
case "approaching":
|
||||
case "tampon":
|
||||
return "locked";
|
||||
case "approaching":
|
||||
return "tampon";
|
||||
case "arrived":
|
||||
return "approaching";
|
||||
case "npc-return":
|
||||
|
||||
@@ -99,6 +99,7 @@ export interface RepairMissionConfig {
|
||||
|
||||
export type MissionStep =
|
||||
| "locked"
|
||||
| "tampon"
|
||||
| "approaching"
|
||||
| "arrived"
|
||||
| "npc-return"
|
||||
@@ -113,6 +114,7 @@ export type MissionStep =
|
||||
| "electricienne_history";
|
||||
|
||||
export const PYLON_NARRATIVE_STEPS = [
|
||||
"tampon",
|
||||
"approaching",
|
||||
"arrived",
|
||||
"npc-return",
|
||||
|
||||
Reference in New Issue
Block a user