import { WORLDMAP_TYPES, type OasisType, type RegionType } from "./types"; import { assert, getUnitSource } from "./utils"; import type { VillageState } from "./village"; export function resolveMission(V: VillageState, region: RegionType) { assert(region.type === WORLDMAP_TYPES.OASIS); const mission = region.state.mission; if (!mission) { return; } switch (mission.type) { case 'pillage': if (region.type === WORLDMAP_TYPES.OASIS) { resolvePillageOasis(V, region); } break; default: throw new Error(`Unknown mission type: "${ mission.type }"`); } if (mission.repeat) { mission.remainingTime = 1 * 10 * 1000; } else { delete region.state.mission; } } function resolvePillageOasis(V: VillageState, region: OasisType) { const mission = region.state.mission; if (!mission) { return; } const unit = getUnitSource('soldier'); V.resources[region.resource] += mission.unitCount * unit.behavior.caryingCapacity; }