bc/server_modules/config.js
2025-05-09 12:11:07 +00:00

107 lines
7.3 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_modules/config.js
// или /public/js/config_client.js (если делаете отдельный для клиента)
// console.log("Loading 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)
// --- Способности Баларда - Конфигурация ---
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,
// --- Идентификаторы и Типы ---
PLAYER_ID: 'player', // Технический идентификатор для Елены
OPPONENT_ID: 'opponent', // Технический идентификатор для Баларда
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', // Тип для Похищения Света, уже используется в data.js
// --- Строки для 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',
// Противника (Балард)
ABILITY_ID_BALARD_HEAL: 'darkPatronage',
ABILITY_ID_BALARD_SILENCE: 'echoesOfSilence',
ABILITY_ID_BALARD_MANA_DRAIN: 'manaDrainHeal', // Похищение Света
// ABILITY_ID_BALARD_BLEED: 'balardBleed', // Если будете добавлять
};
// Для использования в Node.js модулях (например, server_modules/gameInstance.js)
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = GAME_CONFIG;
}
// Для использования в браузере (если этот файл подключается напрямую через <script>)
// В нашем случае, для клиента, мы будем передавать нужные конфиги от сервера,
// либо создадим урезанный config_client.js.
// else {
// window.GAME_CONFIG = GAME_CONFIG;
// }
// console.log("config.js loaded and GAME_CONFIG object created/exported.");