Add Pinwheel Clause support for zone-based encounters in route groups

Allows each sub-zone within a route group to have its own independent
encounter when the Pinwheel Clause rule is enabled (default on), instead
of the entire group sharing a single encounter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 20:22:36 +01:00
parent 0b874a6816
commit 4fb6d43305
16 changed files with 233 additions and 22 deletions

View File

@@ -19,11 +19,13 @@ export interface UpdateGameInput {
export interface CreateRouteInput {
name: string
order: number
pinwheelZone?: number | null
}
export interface UpdateRouteInput {
name?: string
order?: number
pinwheelZone?: number | null
}
export interface RouteReorderItem {

View File

@@ -15,6 +15,7 @@ export interface Route {
gameId: number
order: number
parentRouteId: number | null
pinwheelZone: number | null
encounterMethods: string[]
}

View File

@@ -5,6 +5,7 @@ export interface NuzlockeRules {
nicknameRequired: boolean
duplicatesClause: boolean
shinyClause: boolean
pinwheelClause: boolean
// Difficulty modifiers
hardcoreMode: boolean
@@ -19,6 +20,7 @@ export const DEFAULT_RULES: NuzlockeRules = {
nicknameRequired: true,
duplicatesClause: true,
shinyClause: true,
pinwheelClause: true,
// Difficulty modifiers - off by default
hardcoreMode: false,
@@ -70,6 +72,13 @@ export const RULE_DEFINITIONS: RuleDefinition[] = [
'Shiny Pokémon may always be caught, regardless of whether they are your first encounter.',
category: 'core',
},
{
key: 'pinwheelClause',
name: 'Pinwheel Clause',
description:
'Sub-zones within a location group each get their own encounter instead of sharing one.',
category: 'core',
},
// Difficulty modifiers
{