You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.3 KiB
TypeScript
116 lines
3.3 KiB
TypeScript
/** Free-tier buff activations per rolling 24h window (spec daily task "Use 3 Buffs") */
|
|
export const FREE_BUFF_ACTIVATIONS_PER_PERIOD = 2;
|
|
|
|
/** Server tick rate in Hz */
|
|
export const TICK_RATE = 10;
|
|
|
|
/** Fixed timestep for game logic in seconds */
|
|
export const FIXED_DT = 1 / TICK_RATE;
|
|
|
|
/** Fixed timestep in milliseconds */
|
|
export const FIXED_DT_MS = 1000 / TICK_RATE;
|
|
|
|
/** Isometric tile width in pixels */
|
|
export const TILE_WIDTH = 96;
|
|
|
|
/** Isometric tile height in pixels (typically half of width for 2:1 iso) */
|
|
export const TILE_HEIGHT = 48;
|
|
|
|
/** Camera follow lerp factor (0 = no follow, 1 = instant snap) */
|
|
export const CAMERA_FOLLOW_LERP = 0.08;
|
|
|
|
/** Reference frame duration for dt-scaled camera smoothing (~60 Hz) */
|
|
export const CAMERA_LERP_REFERENCE_MS = 1000 / 60;
|
|
|
|
/** Map zoom level (<1 = zoomed out to show more tiles, 1 = default) */
|
|
export const MAP_ZOOM = 1.0;
|
|
|
|
/** Screen shake magnitude in pixels */
|
|
export const SHAKE_MAGNITUDE = 6;
|
|
|
|
/** Screen shake duration in milliseconds */
|
|
export const SHAKE_DURATION_MS = 200;
|
|
|
|
/** WebSocket reconnect base delay in milliseconds */
|
|
export const WS_RECONNECT_BASE_MS = 1000;
|
|
|
|
/** WebSocket reconnect max delay in milliseconds */
|
|
export const WS_RECONNECT_MAX_MS = 30000;
|
|
|
|
/** WebSocket heartbeat interval in milliseconds */
|
|
export const WS_HEARTBEAT_INTERVAL_MS = 15000;
|
|
|
|
/** WebSocket heartbeat timeout in milliseconds */
|
|
export const WS_HEARTBEAT_TIMEOUT_MS = 5000;
|
|
|
|
/** Max accumulated time before we drop frames (prevents spiral of death) */
|
|
export const MAX_ACCUMULATED_MS = 250;
|
|
|
|
/** Floating damage number duration in milliseconds */
|
|
export const DAMAGE_NUMBER_DURATION_MS = 1800;
|
|
|
|
/** Floating damage rise distance in pixels */
|
|
export const DAMAGE_NUMBER_RISE_PX = 60;
|
|
|
|
/** Buff cooldown overlay animation fps */
|
|
export const BUFF_OVERLAY_FPS = 30;
|
|
|
|
/** Death screen auto-revive countdown (seconds); manual "Revive now" is always available when server allows. */
|
|
export const REVIVE_TIMER_SECONDS = 300;
|
|
|
|
/** Client combat tuning: longer fights vs server-authoritative preview (matches backend pace intent). */
|
|
export const COMBAT_HIT_INTERVAL_MULT = 5;
|
|
/** Multiplier applied to outgoing/incoming hit damage (before minimum 1). */
|
|
export const COMBAT_DAMAGE_SCALE = 0.35;
|
|
|
|
/** API base path */
|
|
export const API_BASE = '/api/v1';
|
|
|
|
/** WebSocket path */
|
|
export const WS_PATH = '/ws';
|
|
|
|
// ---- Rarity Colors (WoW-style) ----
|
|
|
|
export const RARITY_COLORS: Record<string, string> = {
|
|
common: '#9d9d9d',
|
|
uncommon: '#1eff00',
|
|
rare: '#0070dd',
|
|
epic: '#a335ee',
|
|
legendary: '#ffd700',
|
|
};
|
|
|
|
export const RARITY_GLOW: Record<string, string> = {
|
|
common: 'none',
|
|
uncommon: '0 0 8px #1eff0066',
|
|
rare: '0 0 10px #0070dd88, 0 0 20px #0070dd44',
|
|
epic: '0 0 12px #a335ee99, 0 0 24px #a335ee55',
|
|
legendary: '0 0 16px #ffd700cc, 0 0 32px #ffd70066, 0 0 48px #ffd70033',
|
|
};
|
|
|
|
// ---- Debuff Colors ----
|
|
|
|
export const DEBUFF_COLORS: Record<string, string> = {
|
|
poison: '#44cc44',
|
|
freeze: '#44ddff',
|
|
burn: '#ff8833',
|
|
stun: '#ffdd44',
|
|
slow: '#4488ff',
|
|
weaken: '#aa44dd',
|
|
ice_slow: '#66aaff',
|
|
};
|
|
|
|
// ---- Debuff Default Durations (ms) ----
|
|
|
|
export const DEBUFF_DURATION_DEFAULTS: Record<string, number> = {
|
|
poison: 5000,
|
|
freeze: 3000,
|
|
burn: 4000,
|
|
stun: 2000,
|
|
slow: 4000,
|
|
weaken: 5000,
|
|
ice_slow: 4000,
|
|
};
|
|
|
|
/** Loot popup display duration in milliseconds */
|
|
export const LOOT_POPUP_DURATION_MS = 5000;
|