137 lines
2.8 KiB
TypeScript
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;
|