Files
rogue/src/core/config/GameConfig.ts
2026-01-05 12:47:09 +11:00

137 lines
2.8 KiB
TypeScript

export const GAME_CONFIG = {
player: {
initialStats: {
maxHp: 20,
hp: 20,
attack: 5,
defense: 2,
level: 1,
exp: 0,
expToNextLevel: 10,
statPoints: 0,
skillPoints: 0,
strength: 10,
dexterity: 10,
intelligence: 10,
// Offensive
critChance: 5,
critMultiplier: 150,
accuracy: 90,
lifesteal: 0,
// Defensive
evasion: 5,
blockChance: 0,
// Utility
luck: 0,
passiveNodes: [] as string[]
},
speed: 100,
viewRadius: 8
},
map: {
width: 60,
height: 40,
minRooms: 8,
maxRooms: 13,
roomMinWidth: 5,
roomMaxWidth: 12,
roomMinHeight: 4,
roomMaxHeight: 10
},
enemies: {
rat: {
baseHp: 8,
baseAttack: 3,
baseDefense: 0,
minSpeed: 80,
maxSpeed: 110,
expValue: 5
},
bat: {
baseHp: 6,
baseAttack: 4,
baseDefense: 0,
minSpeed: 110,
maxSpeed: 140,
expValue: 8
}
},
enemyScaling: {
baseCount: 3,
baseCountPerFloor: 3,
hpPerFloor: 5,
attackPerTwoFloors: 1,
},
leveling: {
baseExpToNextLevel: 10,
expMultiplier: 1.5,
hpGainPerLevel: 5,
attackGainPerLevel: 1,
statPointsPerLevel: 5,
skillPointsPerLevel: 1
},
rendering: {
tileSize: 16,
cameraZoom: 2,
wallColor: 0x2b2b2b,
floorColor: 0x161616,
exitColor: 0xffd166,
playerColor: 0x66ff66,
enemyColor: 0xff6666,
pathPreviewColor: 0x3355ff,
expOrbColor: 0x33ccff,
expTextColor: 0x33ccff,
levelUpColor: 0xffff00,
fogAlphaFloor: 0.15,
fogAlphaWall: 0.35,
visibleMinAlpha: 0.35,
visibleMaxAlpha: 1.0,
visibleStrengthFactor: 0.65
},
terrain: {
empty: 1,
wall: 4,
water: 63,
emptyDeco: 24,
wallDeco: 12,
exit: 8
},
ui: {
minimapPanelWidth: 340,
minimapPanelHeight: 220,
minimapPadding: 20,
menuPanelWidth: 340,
menuPanelHeight: 220
},
gameplay: {
energyThreshold: 100,
actionCost: 100
},
assets: {
spritesheets: [
{ key: "warrior", path: "assets/sprites/actors/player/warrior.png", frameConfig: { frameWidth: 12, frameHeight: 15 } },
{ key: "rat", path: "assets/sprites/actors/enemies/rat.png", frameConfig: { frameWidth: 16, frameHeight: 15 } },
{ key: "bat", path: "assets/sprites/actors/enemies/bat.png", frameConfig: { frameWidth: 15, frameHeight: 15 } },
{ key: "tiles0", path: "assets/tilesets/dungeon.png", frameConfig: { frameWidth: 16, frameHeight: 16 } },
],
images: [
{ key: "splash_bg", path: "assets/ui/splash_bg.png" }
]
}
} as const;
export type GameConfig = typeof GAME_CONFIG;