bc/server/core/config.js

112 lines
8.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /server/core/config.js
const GAME_CONFIG = {
// --- Баланс Игры ---
BLOCK_DAMAGE_REDUCTION: 0.5, // Множитель урона при блоке (0.5 = 50% снижение)
DAMAGE_VARIATION_MIN: 0.9, // Минимальный множитель урона (0.9 = 90%)
DAMAGE_VARIATION_RANGE: 0.2, // Диапазон вариации урона (0.2 = от 90% до 110%)
HEAL_VARIATION_MIN: 0.8, // Минимальный множитель лечения (0.8 = 80%)
HEAL_VARIATION_RANGE: 0.4, // Диапазон вариации лечения (0.4 = от 80% до 120%)
NATURE_STRENGTH_MANA_REGEN: 10, // Количество маны, восстанавливаемое "Силой природы" (и ее аналогом)
// --- Условия ИИ и Игрока ---
OPPONENT_HEAL_THRESHOLD_PERCENT: 50, // Процент HP Баларда, НИЖЕ которого он будет пытаться лечиться (для AI)
PLAYER_MERCY_TAUNT_THRESHOLD_PERCENT: 60, // Процент HP Баларда, НИЖЕ которого Елена использует "доминирующие" насмешки (для AI/текстов)
PLAYER_HP_BLEED_THRESHOLD_PERCENT: 60, // % HP Елены, НИЖЕ которого Балард предпочитает Кровотечение Безмолвию (для AI)
BALARD_MANA_DRAIN_HIGH_MANA_THRESHOLD: 60, // % Маны Елены, ВЫШЕ которого Балард может использовать "Похищение Света" (для AI)
// --- Способности Баларда (AI) - Конфигурация ---
SILENCE_DURATION: 3, // Длительность Безмолвия в ходах Елены (после хода Баларда)
SILENCE_SUCCESS_RATE: 0.7, // Шанс успеха наложения Безмолвия (70%)
BALARD_SILENCE_ABILITY_COST: 15, // Стоимость "Эха Безмолвия" в Ярости
BALARD_SILENCE_INTERNAL_COOLDOWN: 5, // К-во ходов Баларда КД ПОСЛЕ успешного использования Безмолвия
// BALARD_BLEED_COST: 15, // Если будете добавлять способность Кровотечение
// BALARD_BLEED_POWER: 5,
// BALARD_BLEED_DURATION: 2,
// BALARD_BLEED_COOLDOWN: 3,
// --- Таймер Хода ---
TURN_DURATION_SECONDS: 60, // Длительность хода в секундах
TURN_DURATION_MS: 60 * 1000, // Длительность хода в миллисекундах
TIMER_UPDATE_INTERVAL_MS: 1000, // Интервал обновления таймера на клиенте (в мс)
RECONNECT_TIMEOUT_MS: 5000,
// --- Идентификаторы и Типы ---
PLAYER_ID: 'player', // Технический идентификатор для слота 'Игрок 1'
OPPONENT_ID: 'opponent', // Технический идентификатор для слота 'Игрок 2' / 'Противник'
ACTION_TYPE_HEAL: 'heal',
ACTION_TYPE_DAMAGE: 'damage',
ACTION_TYPE_BUFF: 'buff',
ACTION_TYPE_DISABLE: 'disable', // Тип для контроля (безмолвие, стан и т.п.)
ACTION_TYPE_DEBUFF: 'debuff', // Тип для ослаблений, DoT и т.п.
ACTION_TYPE_DRAIN: 'drain', // Тип для Похищения Света
// --- Строки для UI (могут быть полезны и на сервере для логов) ---
STATUS_READY: 'Готов(а)', // Сделал универсальным
STATUS_BLOCKING: 'Защищается',
// --- Типы Логов (для CSS классов на клиенте, и для структурирования на сервере) ---
LOG_TYPE_INFO: 'info',
LOG_TYPE_DAMAGE: 'damage',
LOG_TYPE_HEAL: 'heal',
LOG_TYPE_TURN: 'turn',
LOG_TYPE_SYSTEM: 'system',
LOG_TYPE_BLOCK: 'block',
LOG_TYPE_EFFECT: 'effect',
// --- CSS Классы (в основном для клиента, но константы могут быть полезны для согласованности) ---
CSS_CLASS_BLOCKING: 'blocking',
CSS_CLASS_NOT_ENOUGH_RESOURCE: 'not-enough-resource',
CSS_CLASS_BUFF_IS_ACTIVE: 'buff-is-active',
CSS_CLASS_ATTACK_BUFFED: 'attack-buffed',
CSS_CLASS_SHAKING: 'is-shaking',
CSS_CLASS_CASTING_PREFIX: 'is-casting-', // Например: is-casting-fireball
CSS_CLASS_HIDDEN: 'hidden',
CSS_CLASS_ABILITY_BUTTON: 'ability-button',
CSS_CLASS_ABILITY_SILENCED: 'is-silenced',
CSS_CLASS_ABILITY_ON_COOLDOWN: 'is-on-cooldown', // Для отображения кулдауна
// --- Задержки (в миллисекундах) ---
// Эти задержки теперь в основном будут управляться сервером при отправке событий или планировании AI ходов
DELAY_OPPONENT_TURN: 1200, // Задержка перед ходом AI
DELAY_AFTER_PLAYER_ACTION: 500, // Сервер может использовать это для паузы перед следующим событием
// DELAY_AFTER_BLOCK: 500, // Менее релевантно для сервера напрямую
DELAY_INIT: 100, // Для клиентской инициализации, если нужна
DELAY_BEFORE_VICTORY_MODAL: 1500, // Для клиента, после получения gameOver
MODAL_TRANSITION_DELAY: 10, // Для анимации модалки на клиенте
// --- Длительности анимаций (в миллисекундах, в основном для клиента, но сервер может знать для таймингов) ---
ANIMATION_SHAKE_DURATION: 400,
ANIMATION_CAST_DURATION: 600,
ANIMATION_DISSOLVE_DURATION: 6000, // var(--dissolve-duration) из CSS
// --- Внутренние ID способностей (для удобства в логике, нужны и на сервере, и на клиенте) ---
// Игрока (Елена)
ABILITY_ID_HEAL: 'heal', // Малое Исцеление
ABILITY_ID_FIREBALL: 'fireball', // Огненный Шар
ABILITY_ID_NATURE_STRENGTH: 'naturesStrength', // Сила Природы
ABILITY_ID_DEFENSE_AURA: 'defenseAura', // Аура Защиты
ABILITY_ID_HYPNOTIC_GAZE: 'hypnoticGaze', // Гипнотический взгляд
ABILITY_ID_SEAL_OF_WEAKNESS: 'sealOfWeakness', // Печать Слабости
// Противника (Балард - AI)
ABILITY_ID_BALARD_HEAL: 'darkPatronage', // Покровительство Тьмы
ABILITY_ID_BALARD_SILENCE: 'echoesOfSilence', // Эхо Безмолвия
ABILITY_ID_BALARD_MANA_DRAIN: 'manaDrainHeal', // Похищение Света
// ABILITY_ID_BALARD_BLEED: 'balardBleed', // Если будете добавлять
// Противника (Альмагест - PvP - зеркало Елены)
ABILITY_ID_ALMAGEST_HEAL: 'darkHeal', // Темное Восстановление (Аналог heal)
ABILITY_ID_ALMAGEST_DAMAGE: 'shadowBolt', // Теневой Сгусток (Аналог fireball)
ABILITY_ID_ALMAGEST_BUFF_ATTACK: 'shadowEmpowerment', // Усиление Тьмой (Аналог naturesStrength)
ABILITY_ID_ALMAGEST_BUFF_DEFENSE: 'voidShield', // Щит Пустоты (Аналог defenseAura)
ABILITY_ID_ALMAGEST_DISABLE: 'mindShatter', // Раскол Разума (Аналог hypnoticGaze)
ABILITY_ID_ALMAGEST_DEBUFF: 'curseOfDecay', // Проклятие Увядания (Аналог sealOfWeakness)
};
// Для использования в Node.js модулях
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = GAME_CONFIG;
}
// console.log("config.js loaded from server/core/ and GAME_CONFIG object created/exported.");