The random events (GPU shortages, regulatory hearings, PR crises, etc.) added interruption without enough gameplay value. Removed all event types, definitions (~1800 lines of event data), the event processor, EventModal UI, store actions, and tick integration. Updated docs to reflect the removal. Bundle size drops ~47kB. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,6 @@ export const FAST_FORWARD_BATCH_SIZE = 100;
|
||||
export const AUTO_SAVE_INTERVAL_TICKS = 60;
|
||||
export const FINANCIAL_SNAPSHOT_INTERVAL = 60;
|
||||
export const MAX_FINANCIAL_HISTORY = 1000;
|
||||
export const MAX_EVENT_HISTORY = 50;
|
||||
export const MAX_REPUTATION_HISTORY = 500;
|
||||
|
||||
export const STARTING_MONEY = 50_000;
|
||||
|
||||
@@ -9,7 +9,6 @@ export * from './types/competitors';
|
||||
export * from './types/talent';
|
||||
export * from './types/data';
|
||||
export * from './types/reputation';
|
||||
export * from './types/events';
|
||||
export * from './types/achievements';
|
||||
export * from './utils/formatting';
|
||||
export * from './constants/gameBalance';
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
import type { Era } from './gameState';
|
||||
|
||||
export interface EventState {
|
||||
activeEvents: ActiveEvent[];
|
||||
eventHistory: EventHistoryEntry[];
|
||||
eventCooldowns: Record<string, number>;
|
||||
eventOccurrences: Record<string, number>;
|
||||
}
|
||||
|
||||
export interface ActiveEvent {
|
||||
eventId: string;
|
||||
instanceId: string;
|
||||
triggeredAtTick: number;
|
||||
expiresAtTick: number;
|
||||
title: string;
|
||||
description: string;
|
||||
category: EventCategory;
|
||||
choices: EventChoice[];
|
||||
defaultChoiceIndex: number;
|
||||
}
|
||||
|
||||
export type EventCategory = 'industry' | 'regulatory' | 'pr' | 'internal' | 'market';
|
||||
|
||||
export interface EventChoice {
|
||||
label: string;
|
||||
description: string;
|
||||
consequences: EventConsequence[];
|
||||
}
|
||||
|
||||
export interface EventConsequence {
|
||||
type: 'money' | 'reputation' | 'compute' | 'talent' | 'research_speed'
|
||||
| 'regulation' | 'competitor' | 'unlock' | 'lock' | 'chain_event';
|
||||
value: number;
|
||||
target?: string;
|
||||
delay?: number;
|
||||
}
|
||||
|
||||
export interface EventHistoryEntry {
|
||||
eventId: string;
|
||||
instanceId: string;
|
||||
title: string;
|
||||
category: EventCategory;
|
||||
tick: number;
|
||||
chosenOptionIndex: number;
|
||||
}
|
||||
|
||||
export interface EventDefinition {
|
||||
id: string;
|
||||
title: string;
|
||||
descriptionTemplate: string;
|
||||
category: EventCategory;
|
||||
eras: Era[];
|
||||
weight: number;
|
||||
cooldownTicks: number;
|
||||
maxOccurrences: number;
|
||||
prerequisites: string[];
|
||||
conditions: EventCondition[];
|
||||
choices: EventChoice[];
|
||||
defaultChoiceIndex: number;
|
||||
expiryTicks: number;
|
||||
}
|
||||
|
||||
export interface EventCondition {
|
||||
field: string;
|
||||
operator: 'gt' | 'lt' | 'gte' | 'lte' | 'eq';
|
||||
value: number;
|
||||
}
|
||||
|
||||
export const INITIAL_EVENTS: EventState = {
|
||||
activeEvents: [],
|
||||
eventHistory: [],
|
||||
eventCooldowns: {},
|
||||
eventOccurrences: {},
|
||||
};
|
||||
@@ -8,7 +8,6 @@ import type { CompetitorState } from './competitors';
|
||||
import type { TalentState } from './talent';
|
||||
import type { DataState } from './data';
|
||||
import type { ReputationState } from './reputation';
|
||||
import type { EventState } from './events';
|
||||
import type { AchievementState } from './achievements';
|
||||
|
||||
export interface GameState {
|
||||
@@ -23,7 +22,6 @@ export interface GameState {
|
||||
talent: TalentState;
|
||||
data: DataState;
|
||||
reputation: ReputationState;
|
||||
events: EventState;
|
||||
achievements: AchievementState;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user