Initial commit: RPG game project

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-02-25 01:01:02 +03:00
commit ac1f348311
24 changed files with 13329 additions and 0 deletions

241
data/classes.json Normal file
View File

@@ -0,0 +1,241 @@
{
"classes": {
"warrior": {
"name":"Воин", "icon":"⚔️", "hp":130, "mp":30, "str":14, "def":10, "mag":4, "spd":7,
"desc":"Мощный боец с высоким HP",
"startSpells":[], "startSkills":[],
"lvlBonuses":{ "hp":15, "mp":3, "str":3, "def":2, "mag":1, "spd":1 }
},
"mage": {
"name":"Маг", "icon":"🔮", "hp":65, "mp":110, "str":4, "def":4, "mag":16, "spd":6,
"desc":"Мастер заклинаний",
"startSpells":["fireball","frostbolt"],
"lvlBonuses":{ "hp":5, "mp":15, "str":1, "def":1, "mag":3, "spd":1 }
},
"archer": {
"name":"Лучник", "icon":"🏹", "hp":90, "mp":55, "str":10, "def":6, "mag":6, "spd":13,
"desc":"Быстрый и меткий",
"startSpells":["lightning"],
"lvlBonuses":{ "hp":8, "mp":5, "str":2, "def":1, "mag":1, "spd":3 }
},
"paladin": {
"name":"Паладин", "icon":"🛡️", "hp":115, "mp":65, "str":10, "def":13, "mag":8, "spd":6,
"desc":"Святой воин-защитник",
"startSpells":["heal","holy_fire"],
"lvlBonuses":{ "hp":12, "mp":8, "str":2, "def":3, "mag":2, "spd":1 }
},
"necromancer": {
"name":"Некромант", "icon":"💀", "hp":75, "mp":95, "str":5, "def":5, "mag":15, "spd":7,
"desc":"Властелин тёмной магии",
"startSpells":["life_drain","curse"],
"lvlBonuses":{ "hp":6, "mp":12, "str":1, "def":1, "mag":4, "spd":1 }
},
"berserker": {
"name":"Берсерк", "icon":"🪓", "hp":150, "mp":20, "str":18, "def":6, "mag":2, "spd":10,
"desc":"Ярость и сила превыше всего",
"startSpells":[],
"lvlBonuses":{ "hp":20, "mp":2, "str":4, "def":1, "mag":1, "spd":1 }
},
"druid": {
"name":"Друид", "icon":"🌿", "hp":85, "mp":85, "str":7, "def":7, "mag":11, "spd":9,
"desc":"Хранитель природы",
"startSpells":["heal","poison_cloud"],
"lvlBonuses":{ "hp":9, "mp":9, "str":2, "def":2, "mag":2, "spd":1 }
}
},
"spells": {
"fireball": { "name":"Огненный шар", "icon":"🔥", "mp":15, "dmg":28, "type":"fire", "cd":3000 },
"frostbolt": { "name":"Ледяная стрела", "icon":"❄️", "mp":12, "dmg":20, "type":"ice", "cd":2000, "slow":true },
"lightning": { "name":"Молния", "icon":"⚡", "mp":20, "dmg":35, "type":"lightning", "cd":3000 },
"fireball2": { "name":"Огненный шторм", "icon":"🌋", "mp":30, "dmg":55, "type":"fire", "cd":6000 },
"blizzard": { "name":"Метель", "icon":"🌨️", "mp":35, "dmg":50, "type":"ice", "cd":8000 },
"chain_lightning":{ "name":"Цепная молния", "icon":"⚡", "mp":28, "dmg":45, "type":"lightning", "cd":5000 },
"heal": { "name":"Исцеление", "icon":"💚", "mp":10, "heal":35, "cd":4000 },
"greater_heal": { "name":"Мощное исцеление", "icon":"💖", "mp":25, "heal":75, "cd":6000 },
"holy_fire": { "name":"Священный огонь", "icon":"✨", "mp":22, "dmg":30, "type":"holy", "cd":4000 },
"resurrect": { "name":"Воскрешение", "icon":"🕊️", "mp":50, "heal":999, "cd":60000 },
"life_drain": { "name":"Похищение жизни", "icon":"🖤", "mp":18, "dmg":15, "heal":12, "type":"dark", "cd":5000 },
"curse": { "name":"Проклятие", "icon":"☠️", "mp":15, "debuff":"atk", "val":0.7, "cd":10000 },
"power_strike": { "name":"Мощный удар", "icon":"💥", "mp":12, "dmgMult":2.2, "cd":5000 },
"berserk": { "name":"Берсеркерство", "icon":"😡", "mp":8, "buff":"str", "val":1.8, "dur":8000, "cd":15000 },
"whirlwind": { "name":"Вихрь", "icon":"🌀", "mp":18, "dmg":25, "type":"physical", "cd":5000 },
"poison_cloud": { "name":"Облако яда", "icon":"🧪", "mp":20, "dot":"poison", "dotDmg":8, "dotTurns":4, "cd":6000 },
"stone_skin": { "name":"Каменная кожа", "icon":"🪨", "mp":20, "buff":"def", "val":2, "dur":12000, "cd":20000 },
"arrow_rain": { "name":"Дождь стрел", "icon":"🏹", "mp":22, "dmg":40, "type":"physical", "cd":5000 },
"shadow_step": { "name":"Теневой шаг", "icon":"🌑", "mp":15, "buff":"spd", "val":2, "dur":5000, "cd":12000 },
"earthquake": { "name":"Землетрясение", "icon":"🌍", "mp":40, "dmg":60, "type":"physical", "cd":10000 }
},
"skills": {
"tough_skin": { "name":"Толстая кожа", "icon":"🛡️", "desc":"+15 HP навсегда", "effect":"hp", "val":15 },
"sharp_mind": { "name":"Острый ум", "icon":"🧠", "desc":"+10 MP навсегда", "effect":"mp", "val":10 },
"quick_feet": { "name":"Быстрые ноги", "icon":"👟", "desc":"+2 к скорости", "effect":"spd", "val":2 },
"iron_will": { "name":"Железная воля", "icon":"⚡", "desc":"+3 к силе атаки", "effect":"str", "val":3 },
"arcane_mastery": { "name":"Магия мастера", "icon":"✨", "desc":"+3 к магии", "effect":"mag", "val":3 },
"fortify": { "name":"Укрепление", "icon":"🪬", "desc":"+3 к защите", "effect":"def", "val":3 },
"learn_power_strike": { "name":"Мощный удар", "icon":"💥", "desc":"Изучить: Мощный удар", "effect":"spell", "val":"power_strike" },
"learn_fireball2": { "name":"Огненный шторм", "icon":"🌋", "desc":"Изучить: Огненный шторм", "effect":"spell", "val":"fireball2" },
"learn_berserk": { "name":"Берсеркерство", "icon":"😡", "desc":"Изучить: Берсеркерство", "effect":"spell", "val":"berserk" },
"learn_greater_heal": { "name":"Мощное исцеление", "icon":"💖", "desc":"Изучить: Мощное исцеление", "effect":"spell", "val":"greater_heal" },
"learn_blizzard": { "name":"Метель", "icon":"🌨️", "desc":"Изучить: Метель", "effect":"spell", "val":"blizzard" },
"learn_stone_skin": { "name":"Каменная кожа", "icon":"🪨", "desc":"Изучить: Каменная кожа", "effect":"spell", "val":"stone_skin" },
"learn_earthquake": { "name":"Землетрясение", "icon":"🌍", "desc":"Изучить: Землетрясение", "effect":"spell", "val":"earthquake" },
"learn_arrow_rain": { "name":"Дождь стрел", "icon":"🏹", "desc":"Изучить: Дождь стрел", "effect":"spell", "val":"arrow_rain" },
"learn_chain_lightning":{ "name":"Цепная молния", "icon":"⚡", "desc":"Изучить: Цепная молния", "effect":"spell", "val":"chain_lightning" }
},
"perkTree": {
"warrior": { "branches": [
{ "id":"might", "name":"Мощь", "icon":"⚔️", "perks":[
{ "id":"war_str1", "tier":1, "name":"Грубая сила", "icon":"💪", "desc":"+4 СИЛ", "effect":"stat", "stat":"str", "val":4 },
{ "id":"war_crit", "tier":2, "name":"Мощный удар", "icon":"💥", "desc":"+10% к крит. урону", "effect":"critDmg", "val":0.10 },
{ "id":"war_dbl", "tier":3, "name":"Двойной удар", "icon":"⚔️", "desc":"15% шанс ударить дважды", "effect":"doubleAtk", "val":0.15 }
]},
{ "id":"armor", "name":"Броня", "icon":"🛡️", "perks":[
{ "id":"war_def1", "tier":1, "name":"Закалка", "icon":"🛡️", "desc":"+4 ЗАЩ", "effect":"stat", "stat":"def", "val":4 },
{ "id":"war_hp", "tier":2, "name":"Несгибаемый", "icon":"🪨", "desc":"+25 макс. HP", "effect":"stat", "stat":"maxHp", "val":25 },
{ "id":"war_thorn", "tier":3, "name":"Шипы", "icon":"🌵", "desc":"10% отражение урона", "effect":"thorns", "val":0.10 }
]},
{ "id":"survival", "name":"Выживание", "icon":"❤️", "perks":[
{ "id":"war_life", "tier":1, "name":"Жизненная сила", "icon":"🩸", "desc":"+6% вампиризм", "effect":"lifesteal", "val":0.06 },
{ "id":"war_regen", "tier":2, "name":"Регенерация", "icon":"💚", "desc":"Восст. 4 HP за ход", "effect":"regenHp", "val":4 },
{ "id":"war_save", "tier":3, "name":"Несмертельный", "icon":"🛡️", "desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 }
]},
{ "id":"speed", "name":"Скорость", "icon":"💨", "perks":[
{ "id":"war_spd1", "tier":1, "name":"Быстрые ноги", "icon":"👟", "desc":"+3 СКР", "effect":"stat", "stat":"spd", "val":3 },
{ "id":"war_dodge", "tier":2, "name":"Уклонение", "icon":"💨", "desc":"+8% шанс уклониться", "effect":"dodge", "val":0.08 },
{ "id":"war_rage", "tier":3, "name":"Ярость", "icon":"😡", "desc":"+20% урон при <30% HP", "effect":"enrage", "val":0.20 }
]}
]},
"mage": { "branches": [
{ "id":"arcane", "name":"Арканум", "icon":"🔮", "perks":[
{ "id":"mag_mag1", "tier":1, "name":"Знание рун", "icon":"📜", "desc":"+5 МАГ", "effect":"stat", "stat":"mag", "val":5 },
{ "id":"mag_mp", "tier":2, "name":"Мана-источник", "icon":"💧", "desc":"+25 макс. МА", "effect":"stat", "stat":"maxMp", "val":25 },
{ "id":"mag_spell", "tier":3, "name":"Могущество", "icon":"✨", "desc":"+18% к урону заклинаний", "effect":"spelldmg", "val":0.18 }
]},
{ "id":"fire", "name":"Огонь", "icon":"🔥", "perks":[
{ "id":"mag_mag2", "tier":1, "name":"Жар пламени", "icon":"🔥", "desc":"+3 МАГ", "effect":"stat", "stat":"mag", "val":3 },
{ "id":"mag_crit", "tier":2, "name":"Пылающий крит", "icon":"💥", "desc":"+12% к крит. урону", "effect":"critDmg", "val":0.12 },
{ "id":"mag_spl2", "tier":3, "name":"Испепеление", "icon":"☄️", "desc":"+20% урона заклинаний", "effect":"spelldmg", "val":0.20 }
]},
{ "id":"frost", "name":"Лёд", "icon":"❄️", "perks":[
{ "id":"mag_spd", "tier":1, "name":"Ледяная скорость", "icon":"⚡","desc":"+3 СКР", "effect":"stat", "stat":"spd", "val":3 },
{ "id":"mag_dodge", "tier":2, "name":"Морозное скольжение", "icon":"❄️","desc":"+10% уклонение", "effect":"dodge", "val":0.10 },
{ "id":"mag_mpx", "tier":3, "name":"Ледяная броня", "icon":"🧊","desc":"+30 макс. МА", "effect":"stat", "stat":"maxMp", "val":30 }
]},
{ "id":"inner", "name":"Внутр. сила","icon":"💜", "perks":[
{ "id":"mag_def", "tier":1, "name":"Магический щит", "icon":"🛡️", "desc":"+3 ЗАЩ", "effect":"stat", "stat":"def", "val":3 },
{ "id":"mag_life", "tier":2, "name":"Маговампир", "icon":"🩸", "desc":"+5% вампиризм", "effect":"lifesteal", "val":0.05 },
{ "id":"mag_save", "tier":3, "name":"Последний резерв","icon":"💜","desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 }
]}
]},
"archer": { "branches": [
{ "id":"precision", "name":"Меткость", "icon":"🎯", "perks":[
{ "id":"arc_spd1", "tier":1, "name":"Орлиный глаз", "icon":"👁️", "desc":"+4 СКР", "effect":"stat", "stat":"spd", "val":4 },
{ "id":"arc_crit", "tier":2, "name":"Смертельный выстрел","icon":"🎯","desc":"+12% крит. урон", "effect":"critDmg", "val":0.12 },
{ "id":"arc_dbl", "tier":3, "name":"Двойной выстрел", "icon":"🏹", "desc":"20% двойная атака", "effect":"doubleAtk", "val":0.20 }
]},
{ "id":"survival", "name":"Выживание", "icon":"🌿", "perks":[
{ "id":"arc_dodge", "tier":1, "name":"Стремительный", "icon":"💨", "desc":"+10% уклонение", "effect":"dodge", "val":0.10 },
{ "id":"arc_life", "tier":2, "name":"Кровавая стрела","icon":"🩸", "desc":"+6% вампиризм", "effect":"lifesteal", "val":0.06 },
{ "id":"arc_save", "tier":3, "name":"Уйти живым", "icon":"🛡️", "desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 }
]},
{ "id":"poison", "name":"Яд", "icon":"☠️", "perks":[
{ "id":"arc_def", "tier":1, "name":"Кожаная броня", "icon":"🛡️", "desc":"+3 ЗАЩ", "effect":"stat", "stat":"def", "val":3 },
{ "id":"arc_thorn", "tier":2, "name":"Ядовитые шипы", "icon":"🌵", "desc":"+8% отражение урона", "effect":"thorns", "val":0.08 },
{ "id":"arc_rage", "tier":3, "name":"Охотничья ярость","icon":"😡","desc":"+18% урон при <30% HP", "effect":"enrage", "val":0.18 }
]},
{ "id":"speed", "name":"Скорость", "icon":"⚡", "perks":[
{ "id":"arc_spd2", "tier":1, "name":"Ветер", "icon":"🌬️", "desc":"+5 СКР", "effect":"stat", "stat":"spd", "val":5 },
{ "id":"arc_str", "tier":2, "name":"Твёрдая рука", "icon":"💪", "desc":"+3 СИЛ", "effect":"stat", "stat":"str", "val":3 },
{ "id":"arc_dg2", "tier":3, "name":"Тень", "icon":"🌑", "desc":"+8% уклонение", "effect":"dodge", "val":0.08 }
]}
]},
"paladin": { "branches": [
{ "id":"holy", "name":"Святость", "icon":"✨", "perks":[
{ "id":"pal_mag", "tier":1, "name":"Свет веры", "icon":"☀️", "desc":"+5 МАГ", "effect":"stat", "stat":"mag", "val":5 },
{ "id":"pal_spell", "tier":2, "name":"Святой свет", "icon":"✨", "desc":"+12% урона заклинаний", "effect":"spelldmg", "val":0.12 },
{ "id":"pal_regen", "tier":3, "name":"Благодать", "icon":"💚", "desc":"Восст. 5 HP за ход", "effect":"regenHp", "val":5 }
]},
{ "id":"shield", "name":"Щит", "icon":"🛡️", "perks":[
{ "id":"pal_def1", "tier":1, "name":"Мастер щита", "icon":"🛡️", "desc":"+5 ЗАЩ", "effect":"stat", "stat":"def", "val":5 },
{ "id":"pal_hp", "tier":2, "name":"Крепость духа", "icon":"🏰", "desc":"+25 макс. HP", "effect":"stat", "stat":"maxHp", "val":25 },
{ "id":"pal_thorn", "tier":3, "name":"Сталь и огонь", "icon":"🔥", "desc":"+12% отражение урона", "effect":"thorns", "val":0.12 }
]},
{ "id":"divine", "name":"Благодать", "icon":"💛", "perks":[
{ "id":"pal_hpmp", "tier":1, "name":"Тело и душа", "icon":"💛", "desc":"+15 HP, +15 МА", "effect":"stat", "stat":"maxHp", "val":15 },
{ "id":"pal_save", "tier":2, "name":"Воля Небес", "icon":"🕊️", "desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 },
{ "id":"pal_life", "tier":3, "name":"Священный вампир","icon":"🩸","desc":"+5% вампиризм", "effect":"lifesteal", "val":0.05 }
]},
{ "id":"crusade", "name":"Крестовый поход", "icon":"⚔️", "perks":[
{ "id":"pal_str", "tier":1, "name":"Кара Небес", "icon":"⚔️", "desc":"+4 СИЛ", "effect":"stat", "stat":"str", "val":4 },
{ "id":"pal_crit", "tier":2, "name":"Удар справедливости", "icon":"💥", "desc":"+10% крит. урон", "effect":"critDmg", "val":0.10 },
{ "id":"pal_dbl", "tier":3, "name":"Двойной удар", "icon":"⚔️", "desc":"+12% двойная атака","effect":"doubleAtk", "val":0.12 }
]}
]},
"necromancer": { "branches": [
{ "id":"dark", "name":"Тьма", "icon":"🌑", "perks":[
{ "id":"nec_mag1", "tier":1, "name":"Тёмное знание", "icon":"📕", "desc":"+5 МАГ", "effect":"stat", "stat":"mag", "val":5 },
{ "id":"nec_spell", "tier":2, "name":"Сила смерти", "icon":"💀", "desc":"+18% урона заклинаний", "effect":"spelldmg", "val":0.18 },
{ "id":"nec_crit", "tier":3, "name":"Смертельное слово","icon":"💥","desc":"+12% крит. урон", "effect":"critDmg", "val":0.12 }
]},
{ "id":"undead", "name":"Нежить", "icon":"🦴", "perks":[
{ "id":"nec_hp", "tier":1, "name":"Труп-тело", "icon":"🦴", "desc":"+20 макс. HP", "effect":"stat", "stat":"maxHp", "val":20 },
{ "id":"nec_life", "tier":2, "name":"Поглощение жизни","icon":"🩸","desc":"+8% вампиризм", "effect":"lifesteal", "val":0.08 },
{ "id":"nec_save", "tier":3, "name":"Личная смерть", "icon":"💀", "desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 }
]},
{ "id":"curse", "name":"Проклятие", "icon":"🔮", "perks":[
{ "id":"nec_def", "tier":1, "name":"Тёмный покров", "icon":"🌑", "desc":"+3 ЗАЩ", "effect":"stat", "stat":"def", "val":3 },
{ "id":"nec_thorn", "tier":2, "name":"Проклятое тело", "icon":"☠️", "desc":"+8% отражение урона", "effect":"thorns", "val":0.08 },
{ "id":"nec_rage", "tier":3, "name":"Ярость тьмы", "icon":"😡", "desc":"+25% урон при <30% HP", "effect":"enrage", "val":0.25 }
]},
{ "id":"soul", "name":"Душа", "icon":"👻", "perks":[
{ "id":"nec_mp", "tier":1, "name":"Душехранитель", "icon":"👻", "desc":"+15 макс. МА", "effect":"stat", "stat":"maxMp", "val":15 },
{ "id":"nec_regen", "tier":2, "name":"Восстановление", "icon":"💚", "desc":"Восст. 4 HP за ход", "effect":"regenHp", "val":4 },
{ "id":"nec_dodge", "tier":3, "name":"Призрачность", "icon":"💨", "desc":"+10% уклонение", "effect":"dodge", "val":0.10 }
]}
]},
"berserker": { "branches": [
{ "id":"rage", "name":"Ярость", "icon":"😡", "perks":[
{ "id":"ber_str1", "tier":1, "name":"Бешеная сила", "icon":"💪", "desc":"+5 СИЛ", "effect":"stat", "stat":"str", "val":5 },
{ "id":"ber_rage", "tier":2, "name":"Берсеркерская ярость","icon":"🔥","desc":"+25% урон при <30% HP","effect":"enrage", "val":0.25 },
{ "id":"ber_dbl", "tier":3, "name":"Смертельный вихрь", "icon":"⚔️","desc":"20% двойная атака", "effect":"doubleAtk", "val":0.20 }
]},
{ "id":"blood", "name":"Кровь", "icon":"🩸", "perks":[
{ "id":"ber_life", "tier":1, "name":"Кровожадность", "icon":"🩸", "desc":"+8% вампиризм", "effect":"lifesteal", "val":0.08 },
{ "id":"ber_regen", "tier":2, "name":"Регенерация крови", "icon":"💚","desc":"Восст. 5 HP за ход", "effect":"regenHp", "val":5 },
{ "id":"ber_save", "tier":3, "name":"Воля к жизни", "icon":"🛡️","desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 }
]},
{ "id":"brutality", "name":"Жестокость", "icon":"🪓", "perks":[
{ "id":"ber_crit", "tier":1, "name":"Brutal удар", "icon":"💥", "desc":"+12% крит. урон", "effect":"critDmg", "val":0.12 },
{ "id":"ber_thorn", "tier":2, "name":"Кровавые шипы", "icon":"🌵", "desc":"+10% отражение урона", "effect":"thorns", "val":0.10 },
{ "id":"ber_str2", "tier":3, "name":"Безудержная сила","icon":"💪","desc":"+5 СИЛ", "effect":"stat", "stat":"str", "val":5 }
]},
{ "id":"berserking","name":"Буйство", "icon":"⚡", "perks":[
{ "id":"ber_spd", "tier":1, "name":"Ветер смерти", "icon":"💨", "desc":"+5 СКР", "effect":"stat", "stat":"spd", "val":5 },
{ "id":"ber_dodge", "tier":2, "name":"Дикое уклонение","icon":"💨", "desc":"+10% уклонение", "effect":"dodge", "val":0.10 },
{ "id":"ber_rage2", "tier":3, "name":"Боевое безумие", "icon":"😡", "desc":"+15% урон при <30% HP", "effect":"enrage", "val":0.15 }
]}
]},
"druid": { "branches": [
{ "id":"nature", "name":"Природа", "icon":"🌿", "perks":[
{ "id":"dru_mag", "tier":1, "name":"Голос леса", "icon":"🌿", "desc":"+4 МАГ", "effect":"stat", "stat":"mag", "val":4 },
{ "id":"dru_spell", "tier":2, "name":"Природная магия", "icon":"✨", "desc":"+12% урона заклинаний", "effect":"spelldmg", "val":0.12 },
{ "id":"dru_regen", "tier":3, "name":"Дыхание жизни", "icon":"💚", "desc":"Восст. 5 HP за ход", "effect":"regenHp", "val":5 }
]},
{ "id":"beast", "name":"Зверь", "icon":"🐾", "perks":[
{ "id":"dru_spd", "tier":1, "name":"Звериная прыть", "icon":"🐾", "desc":"+5 СКР", "effect":"stat", "stat":"spd", "val":5 },
{ "id":"dru_dodge", "tier":2, "name":"Уклонение зверя","icon":"💨", "desc":"+10% уклонение", "effect":"dodge", "val":0.10 },
{ "id":"dru_str", "tier":3, "name":"Когти зверя", "icon":"🐻", "desc":"+4 СИЛ", "effect":"stat", "stat":"str", "val":4 }
]},
{ "id":"earth", "name":"Земля", "icon":"🪨", "perks":[
{ "id":"dru_def", "tier":1, "name":"Кора дерева", "icon":"🪨", "desc":"+5 ЗАЩ", "effect":"stat", "stat":"def", "val":5 },
{ "id":"dru_hp", "tier":2, "name":"Корни земли", "icon":"🌱", "desc":"+20 макс. HP", "effect":"stat", "stat":"maxHp", "val":20 },
{ "id":"dru_thorn", "tier":3, "name":"Шипастая кора","icon":"🌵","desc":"+8% отражение урона", "effect":"thorns", "val":0.08 }
]},
{ "id":"regrowth", "name":"Возрождение","icon":"🔄", "perks":[
{ "id":"dru_life", "tier":1, "name":"Жизненная сила","icon":"🩸", "desc":"+6% вампиризм", "effect":"lifesteal", "val":0.06 },
{ "id":"dru_rg2", "tier":2, "name":"Лесное зелье", "icon":"💚", "desc":"Восст. 4 HP за ход", "effect":"regenHp", "val":4 },
{ "id":"dru_save", "tier":3, "name":"Перерождение", "icon":"🔄", "desc":"1×/бой выжить с 1 HP", "effect":"deathSave", "val":1 }
]}
]}
}
}

10
data/enchants.json Normal file
View File

@@ -0,0 +1,10 @@
{
"flame": { "name":"Огненный", "icon":"🔥", "cost":150, "mat":"dragon_scale", "matQty":1, "bonus":{"damage":5}, "desc":"+5 урона огнём", "target":"weapon" },
"frost": { "name":"Ледяной", "icon":"❄️", "cost":130, "mat":"yeti_fur", "matQty":1, "bonus":{"defense":4}, "desc":"+4 защиты", "target":"armor" },
"holy": { "name":"Святой", "icon":"✨", "cost":180, "mat":"troll_heart", "matQty":1, "bonus":{"damage":4}, "desc":"+4 урона", "target":"weapon" },
"life": { "name":"Жизненный", "icon":"💚", "cost":80, "mat":"herb", "matQty":3, "bonus":{"hp":25}, "desc":"+25 HP", "target":"any" },
"arcane": { "name":"Магический", "icon":"💜", "cost":120, "mat":"slime_gel", "matQty":2, "bonus":{"mag":4, "mp":15}, "desc":"+4 магии, +15 MP", "target":"weapon" },
"swift": { "name":"Быстрый", "icon":"⚡", "cost":100, "mat":"bat_wing", "matQty":2, "bonus":{"str":4}, "desc":"+4 силы", "target":"any" },
"ward": { "name":"Стражника", "icon":"🛡️", "cost":110, "mat":"bone", "matQty":3, "bonus":{"defense":6}, "desc":"+6 защиты", "target":"armor" },
"venom": { "name":"Ядовитый", "icon":"☠️", "cost":70, "mat":"spider_venom", "matQty":2, "bonus":{"damage":4}, "desc":"+4 урона ядом", "target":"weapon" }
}

109
data/enemies.json Normal file
View File

@@ -0,0 +1,109 @@
{
"goblin": { "name":"Гоблин", "hp":32, "dmg":8, "def":2, "exp":20, "gold":10, "loot":["herb","goblin_ear"],
"lore":"Хитрые зелёные существа, живущие стаями. Воруют всё, до чего дотянутся. Трусливы поодиночке, опасны в толпе.",
"weakness":"fire", "resist":null, "ai":"coward" },
"orc": { "name":"Орк", "hp":55, "dmg":13, "def":4, "exp":40, "gold":25, "loot":["orc_tusk","meat"],
"lore":"Могучие воители из горных кланов. Живут по закону силы — вождём становится сильнейший боец.",
"weakness":"magic", "resist":"physical", "ai":"berserk" },
"skeleton": { "name":"Скелет", "hp":42, "dmg":11, "def":6, "exp":30, "gold":15, "loot":["bone","bone_dagger"],
"lore":"Мертвецы, поднятые некромантами. Лишены боли и страха. Разваливаются от святого оружия.",
"weakness":"holy", "resist":"poison", "ai":null },
"slime": { "name":"Слизень", "hp":22, "dmg":5, "def":0, "exp":10, "gold":5, "loot":["slime_gel"],
"lore":"Аморфное существо из кислотной слизи. Не имеет органов, поглощает пищу целиком. Разделяется при ударе.",
"weakness":"fire", "resist":"physical", "ai":"acid" },
"bandit": { "name":"Разбойник", "hp":38, "dmg":10, "def":3, "exp":25, "gold":22, "loot":["money_pouch"],
"lore":"Бывшие солдаты и беглые крестьяне, избравшие путь разбоя. Опасны засадами и ядовитыми клинками.",
"weakness":"holy", "resist":null, "ai":"steal" },
"wolf": { "name":"Волк", "hp":30, "dmg":9, "def":2, "exp":18, "gold":8, "loot":["wolf_pelt"],
"lore":"Лесной хищник с острым чутьём. Охотится стаей, загоняя жертву. Вожак стаи втрое крупнее обычного волка.",
"weakness":"fire", "resist":null, "ai":"howl" },
"spider": { "name":"Паук", "hp":28, "dmg":12, "def":1, "exp":22, "gold":12, "loot":["spider_venom"],
"lore":"Ядовитый паук размером с собаку. Плетёт невидимые сети и вводит парализующий яд.",
"weakness":"fire", "resist":"poison", "ai":"venom" },
"zombie": { "name":"Зомби", "hp":48, "dmg":8, "def":8, "exp":28, "gold":12, "loot":["rot_flesh"],
"lore":"Восставшие мертвецы с гниющей плотью. Медлительны, но чрезвычайно живучи. Укус передаёт заразу.",
"weakness":"fire", "resist":"poison", "ai":"decay" },
"bat": { "name":"Летучая мышь","hp":18, "dmg":7, "def":0, "exp":12, "gold":6, "loot":["bat_wing"],
"lore":"Пещерные твари с эхолокацией. В темноте видят лучше любого существа. Нападают роем.",
"weakness":"holy", "resist":null, "ai":"swarm" },
"troll": { "name":"Тролль", "hp":110, "dmg":20, "def":8, "exp":90, "gold":65, "loot":["troll_heart","club"], "isBoss":false,
"lore":"Регенерирующий великан из болот. Плоть зарастает на глазах. Только огонь останавливает регенерацию.",
"weakness":"fire", "resist":"physical", "ai":"regen" },
"yeti": { "name":"Йети", "hp":95, "dmg":18, "def":10, "exp":80, "gold":55, "loot":["yeti_fur"],
"lore":"Белый великан горных вершин. Выдерживает любой мороз, но уязвим к огню. Ревниво охраняет свою территорию.",
"weakness":"fire", "resist":"ice", "ai":"berserk" },
"witch": { "name":"Ведьма", "hp":60, "dmg":22, "def":3, "exp":70, "gold":50, "loot":["witch_brew"], "hasMp":true,
"lore":"Колдунья, заключившая договор с тёмными силами. Варит яды и проклятия. Способна проклясть весь отряд.",
"weakness":"holy", "resist":"magic", "ai":"hex" },
"golem": { "name":"Голем", "hp":130, "dmg":16, "def":20, "exp":100, "gold":80, "loot":["golem_core"], "isBoss":false,
"lore":"Магический конструкт из камня и металла. Создан алхимиками для охраны. Разрушить можно только магией.",
"weakness":"magic", "resist":"physical", "ai":"stun" },
"dragon": { "name":"Дракон", "hp":220, "dmg":32, "def":16, "exp":220, "gold":220, "loot":["dragon_scale","dragon_heart"], "isBoss":true,
"lore":"Древнее создание с интеллектом мага и силой армии. Живёт тысячелетиями. Огонь его дыхания плавит доспехи.",
"weakness":"ice", "resist":"fire", "ai":"fury" },
"lich": { "name":"Лич", "hp":140, "dmg":38, "def":10, "exp":200, "gold":150, "loot":["necronomicon","skull_staff"], "isBoss":true, "hasMp":true,
"lore":"Некромант, победивший смерть ценой души. Хранит жизненную силу в филактерии. Повелевает армиями мертвецов.",
"weakness":"holy", "resist":"magic", "ai":"summon" },
"ghost": { "name":"Призрак", "hp":55, "dmg":20, "def":0, "exp":80, "gold":35, "loot":["ghost_essence"],
"lore":"Душа воина, погибшего в Руинах. Способна уходить в эфирный план, становясь неуязвимой на мгновение.",
"weakness":"holy", "resist":"physical", "ai":"phase" },
"wyvern": { "name":"Виверна", "hp":95, "dmg":26, "def":7, "exp":140, "gold":95, "loot":["wyvern_scale","wyvern_poison"],
"lore":"Двукрылая родственница дракона. Атакует стремительным пикированием с воздуха. Яд виверны разъедает доспехи.",
"weakness":"ice", "resist":"fire", "ai":"dive" },
"goblin_king": { "name":"Зубастый, Король Гоблинов", "hp":145, "dmg":20, "def":10, "exp":280, "gold":180,
"loot":["goblin_ear","herb"],
"lore":"Легендарный вожак гоблинов, носящий украденную корону убитого рыцаря. За его голову обещана награда ещё десять лет назад. Собрал крупнейшую в регионе стаю — более сотни особей.",
"weakness":"fire", "resist":null, "ai":"warcry",
"isBoss":true, "isMini":true,
"uniqueLoot":{ "id":"goblin_crown", "type":"armor", "name":"Корона Зубастого",
"opts":{ "defense":8, "bonusStr":5, "bonusDef":3, "value":280, "slot":"head", "icon":"👑", "rarity":"legendary", "desc":"Корона украденная у рыцаря. Пахнет гоблином." }}},
"corvus": { "name":"Корвус Некромант", "hp":180, "dmg":30, "def":9, "exp":420, "gold":260,
"loot":["necronomicon","bone"],
"lore":"Бывший придворный маг, изгнанный за опыты над мёртвыми. Корвус нашёл укрытие в подземельях под деревней и за годы изоляции лишился рассудка. Теперь он стремится поднять армию нежити и захватить регион.",
"weakness":"holy", "resist":"magic", "ai":"necroboss",
"isBoss":true, "isMini":true, "hasMp":true,
"uniqueLoot":{ "id":"corvus_staff", "type":"weapon", "name":"Посох Корвуса",
"opts":{ "damage":16, "bonusMag":22, "value":460, "slot":"weapon", "icon":"💜", "rarity":"legendary", "desc":"Навершие посоха светится мертвенным светом. Усиливает заклинания смерти." }}},
"hydra": { "name":"Болотная Гидра", "hp":210, "dmg":25, "def":6, "exp":360, "gold":200,
"loot":["hydra_scale","slime_gel"],
"lore":"Трёхголовое чудовище, поселившееся в глубинах болота поколения назад. Каждую отрубленную голову заменяют две новые. Только огонь не даёт ей регенерировать.",
"weakness":"fire", "resist":"physical", "ai":"hydra",
"isBoss":true, "isMini":true,
"uniqueLoot":{ "id":"hydra_fang", "type":"weapon", "name":"Клык Гидры",
"opts":{ "damage":23, "bonusMag":4, "value":340, "slot":"weapon", "icon":"🦷", "rarity":"legendary", "combatEffect":"poison", "combatDmg":9, "desc":"Полый клык, наполненный ядом Гидры. Каждый удар отравляет врага." }}},
"frost_giant": { "name":"Ледяной Великан Скарр", "hp":200, "dmg":30, "def":13, "exp":390, "gold":230,
"loot":["frost_heart","yeti_fur"],
"lore":"Древний великан из ледяного народа, изгнанный своим кланом за жестокость. Скарр обосновался на вершине горы и убивает любого, кто осмелится подняться на его территорию.",
"weakness":"fire", "resist":"ice", "ai":"frost",
"isBoss":true, "isMini":true,
"uniqueLoot":{ "id":"giant_axe", "type":"weapon", "name":"Топор Великана",
"opts":{ "damage":29, "bonusStr":8, "value":400, "slot":"weapon", "icon":"🪓", "rarity":"legendary", "desc":"Огромный топор из ледяного железа. Прежде чем поднять его, убедись что хватит сил." }}},
"stone_colossus": { "name":"Каменный Колосс", "hp":260, "dmg":24, "def":22, "exp":440, "gold":270,
"loot":["titan_core","golem_core"],
"lore":"Прото-голем, созданный магами Первой Эпохи для охраны пещерного святилища. Тысячелетиями он стоял неподвижно — пока не почуял чужака. Разрушить физически невозможно, только магией.",
"weakness":"magic", "resist":"physical", "ai":"colossus",
"isBoss":true, "isMini":true,
"uniqueLoot":{ "id":"colossus_shield", "type":"armor", "name":"Щит Колосса",
"opts":{ "defense":18, "bonusHp":40, "value":380, "slot":"shield", "icon":"🛡️", "rarity":"legendary", "desc":"Отколотая рука Колосса. Невероятно прочна." }}},
"shadow_assassin": { "name":"Призрак Ирис", "hp":160, "dmg":36, "def":7, "exp":410, "gold":240,
"loot":["ghost_essence","wyvern_poison"],
"lore":"Легендарный убийца, некогда служивший тайной службе королевства. После гибели в руинах её душа не ушла — она осталась охранять тайны, которые унесла с собой. Атакует из темноты.",
"weakness":"holy", "resist":"physical", "ai":"shadow",
"isBoss":true, "isMini":true,
"uniqueLoot":{ "id":"shadow_blade", "type":"weapon", "name":"Клинок Ирис",
"opts":{ "damage":26, "bonusDef":4, "value":420, "slot":"weapon", "icon":"🗡️", "rarity":"legendary", "combatEffect":"poison", "combatDmg":7, "desc":"Клинок, выкованный из теневого металла. Слабо светится в темноте." }}},
"chaos_lord": { "name":"Мрак Безликий", "hp":700, "dmg":55, "def":22, "exp":3000, "gold":800,
"loot":["dragon_heart","necronomicon","titan_core"],
"lore":"Первобытное существо из Бездны. Источник всего зла в Эйдоне. Не имеет лица, не имеет имени — только жажда хаоса.",
"weakness":"holy", "resist":"magic", "ai":"chaos",
"isBoss":true, "isMini":true, "hasMp":true,
"uniqueLoot":{ "id":"void_crown", "type":"armor", "name":"Корона Бездны",
"opts":{ "defense":25, "bonusHp":80, "bonusMag":15, "bonusStr":10, "value":2000, "slot":"head", "icon":"🌑", "rarity":"legendary", "desc":"Корона первобытного хаоса. Все стихии склоняются перед её владельцем." }}}
}

29
data/loot.json Normal file
View File

@@ -0,0 +1,29 @@
{
"herb": { "n":"Трава", "t":"material", "v":6 },
"goblin_ear": { "n":"Ухо гоблина", "t":"material", "v":5 },
"orc_tusk": { "n":"Клык орка", "t":"material", "v":12 },
"meat": { "n":"Мясо", "t":"food", "v":10, "heal":20 },
"slime_gel": { "n":"Слизь", "t":"material", "v":5 },
"bone": { "n":"Кость", "t":"material", "v":4 },
"bone_dagger": { "n":"Костяной кинжал", "t":"weapon", "v":28, "dmg":8, "slot":"weapon", "icon":"🗡️", "rarity":"uncommon", "setId":"shadow" },
"money_pouch": { "n":"Кошелёк", "t":"gold", "v":18 },
"wolf_pelt": { "n":"Волчья шкура", "t":"material", "v":15 },
"spider_venom": { "n":"Паучий яд", "t":"material", "v":20 },
"rot_flesh": { "n":"Гнилая плоть", "t":"material", "v":3 },
"bat_wing": { "n":"Крыло летучей мыши", "t":"material", "v":8 },
"troll_heart": { "n":"Сердце тролля", "t":"material", "v":55, "rarity":"rare" },
"club": { "n":"Дубина", "t":"weapon", "v":18, "dmg":7, "slot":"weapon", "icon":"🏏" },
"yeti_fur": { "n":"Шкура йети", "t":"material", "v":40, "rarity":"rare" },
"witch_brew": { "n":"Зелье ведьмы", "t":"potion", "v":60, "heal":80, "rarity":"rare" },
"golem_core": { "n":"Ядро голема", "t":"material", "v":90, "rarity":"epic" },
"dragon_scale": { "n":"Чешуя дракона", "t":"material", "v":110,"rarity":"epic" },
"dragon_heart": { "n":"Сердце дракона", "t":"material", "v":300,"rarity":"legendary" },
"necronomicon": { "n":"Некрономикон", "t":"scroll", "v":200,"spell":"life_drain", "rarity":"rare" },
"skull_staff": { "n":"Посох черепа", "t":"weapon", "v":90, "dmg":18, "bonusMag":5, "slot":"weapon", "icon":"💀", "rarity":"rare", "setId":"shadow" },
"ghost_essence": { "n":"Эссенция призрака", "t":"material", "v":40, "rarity":"rare" },
"wyvern_scale": { "n":"Чешуя виверны", "t":"material", "v":60, "rarity":"rare" },
"wyvern_poison": { "n":"Яд виверны", "t":"material", "v":50, "rarity":"rare" },
"hydra_scale": { "n":"Чешуя Гидры", "t":"material", "v":75, "rarity":"epic" },
"frost_heart": { "n":"Сердце Мороза", "t":"material", "v":90, "rarity":"epic" },
"titan_core": { "n":"Сердцевина Колосса", "t":"material", "v":100, "rarity":"epic" }
}

59
data/lore.json Normal file
View File

@@ -0,0 +1,59 @@
[
{ "id":"ln_v1", "title":"Старая записка", "mapId":"village", "gx":11, "gy":11, "icon":"📜",
"text":"Говорят, в пещерах к востоку обитает дракон. Никто из ушедших туда не вернулся. Будь осторожен, путник.",
"reveals":{ "enemy":"dragon", "hint":"Дракон живёт в пещерах. Готовься к огненному бою." } },
{ "id":"ln_v2", "title":"Объявление на столбе", "mapId":"village", "gx":5, "gy":5, "icon":"📋",
"text":"РАЗЫСКИВАЕТСЯ: вожак гоблинов по прозвищу «Зубастый». Видели в лесу к северу. Награда: 100 золота. Обращаться к Стражнику.",
"reveals":{ "enemy":"goblin_king", "hint":"Зубастый прячется в лесу. Огонь — его слабость." } },
{ "id":"ln_f1", "title":"Эльфийский дневник", "mapId":"forest", "gx":4, "gy":4, "icon":"📖",
"text":"4-й день. Лес изменился. Существа стали агрессивнее с тех пор, как в болоте появился Шаман. Старые тропы больше не безопасны.",
"reveals":{ "enemy":"wolf", "hint":"Волки контролируют лесные тропы. Огонь отпугивает стаю." } },
{ "id":"ln_f2", "title":"Измятый пергамент", "mapId":"forest", "gx":10, "gy":9, "icon":"📜",
"text":"...Не ходите в болото ночью. Ведьма собирает души потерявшихся. Говорят, она слаба против святого пламени...",
"reveals":{ "enemy":"witch", "hint":"Ведьма уязвима к святой магии, но устойчива к обычным чарам." } },
{ "id":"ln_d1", "title":"Надпись на стене", "mapId":"dungeon", "gx":3, "gy":3, "icon":"🪨",
"text":"«Тот, кто слышит шорох в стенах — не одинок. Мы всегда рядом.» — написано кровью. Под надписью — рисунок Лича.",
"reveals":{ "enemy":"lich", "hint":"Лич повелевает нежитью. Святое оружие прожигает его магию." } },
{ "id":"ln_d2", "title":"Дневник солдата", "mapId":"dungeon", "gx":10, "gy":10, "icon":"📔",
"text":"12-й день в подземелье. Еды нет. Скелеты не дают пройти. Лич слаб против святого огня. Надеюсь, кто-то это найдёт.",
"reveals":{ "enemy":"skeleton", "hint":"Скелеты неуязвимы к яду, но святой свет разрушает их." } },
{ "id":"ln_c1", "title":"Записка исследователя","mapId":"cave", "gx":5, "gy":5, "icon":"📝",
"text":"Кристаллы в этой пещере поглощают магическую энергию. Я чувствую, как слабею. Дракон охраняет нечто в глубине — не ходите туда.",
"reveals":{ "enemy":"dragon", "hint":"Дракон устойчив к огню, но уязвим ко льду." } },
{ "id":"ln_c2", "title":"Рунный камень", "mapId":"cave", "gx":10, "gy":8, "icon":"🔮",
"text":"«Огонь рождён из холода, лёд — из пламени. Дракон, что дышит огнём, падёт от стрел мороза.»",
"reveals":{ "enemy":"dragon", "hint":"Ледяные заклинания наносят дракону полуторный урон!" } },
{ "id":"ln_m1", "title":"Высеченный текст", "mapId":"mountain", "gx":7, "gy":7, "icon":"⛏️",
"text":"«Здесь покоится Первый Голем, созданный Академией. Магия разрушает его — физический урон отскакивает от него, как от скалы.»",
"reveals":{ "enemy":"golem", "hint":"Голем устойчив к физическим атакам. Используй магию!" } },
{ "id":"ln_s1", "title":"Страница гримуара", "mapId":"swamp", "gx":5, "gy":9, "icon":"📖",
"text":"Рецепт зелья тени: 3 части паучьего яда, крыло летучей мыши, лепесток ночного цветка. Смешать в полночь. Осторожно — вдыхать нельзя.",
"reveals":{ "enemy":"spider", "hint":"Пауки устойчивы к яду, но огонь сжигает их паутину." } },
{ "id":"ln_s2", "title":"Записка беглеца", "mapId":"swamp", "gx":9, "gy":4, "icon":"📜",
"text":"Ведьма слабее у восточного огня. Принесите святую воду и она не сможет применить исцеление. Я ухожу. Прощайте.",
"reveals":{ "enemy":"witch", "hint":"Святая магия блокирует исцеление Ведьмы." } },
{ "id":"ln_f3", "title":"Поваленное дерево", "mapId":"forest", "gx":8, "gy":7, "icon":"📜",
"text":"Нашёл старый указатель: «Зубастый обитает в центре леса. Его стая — сотня гоблинов. Один не ходи — вернись с оружием и смелостью.» Дата: десять лет назад.",
"reveals":{ "enemy":"goblin", "hint":"Гоблины боятся огня. Используй огненные заклинания." } },
{ "id":"ln_d3", "title":"Сожжённая страница", "mapId":"dungeon", "gx":6, "gy":6, "icon":"📔",
"text":"«Корвус захватил нижний ярус. Бывший придворный маг — теперь безумный некромант. Его свита — армия нежити. Мы не смогли пробиться. Пишу это, чтобы предупредить следующих.»",
"reveals":{ "enemy":"corvus", "hint":"Корвус — святая магия его единственная слабость." } },
{ "id":"ln_s3", "title":"Болотный знак", "mapId":"swamp", "gx":3, "gy":8, "icon":"📖",
"text":"Шаман предупреждал: в глубинах болота спит трёхголовая Гидра. Она проснулась год назад. Регенерирует раненые головы — только огонь останавливает её. Не ходите туда.",
"reveals":{ "enemy":"hydra", "hint":"Гидра регенерирует, но огонь останавливает рост голов!" } },
{ "id":"ln_m2", "title":"Табличка на перевале", "mapId":"mountain", "gx":9, "gy":9, "icon":"⛏️",
"text":"СТОЙ! Выше — территория Скарра. Изгнанный ледяной великан убивает любого, кто поднимется на вершину. Огонь — единственное, чего он боится. Не говори, что тебя не предупреждали.",
"reveals":{ "enemy":"frost_giant", "hint":"Ледяной Великан боится огня. Лёд бесполезен против него." } },
{ "id":"ln_c3", "title":"Предостережение", "mapId":"cave", "gx":3, "gy":9, "icon":"🔮",
"text":"Каменный Колосс — тысячелетний страж. Он почуял чужака. Магия разрушает его — физическое оружие не берёт. Каждые несколько ходов он закрывается непробиваемой бронёй. Жди и атакуй в уязвимый момент.",
"reveals":{ "enemy":"stone_colossus", "hint":"Колосс устойчив к физике. Магия — единственный путь." } },
{ "id":"ln_r1", "title":"Выцветший пергамент", "mapId":"ruins", "gx":5, "gy":7, "icon":"📜",
"text":"«Ирис — легенда среди убийц. Она мертва, но не ушла. Её призрак охраняет тайны руин, которые унесла с собой. Нападает из темноты. Святое оружие — единственная защита от неё.»",
"reveals":{ "enemy":"shadow_assassin", "hint":"Призрак Ирис уязвима к святой магии." } },
{ "id":"ln_r2", "title":"Чёрный портал", "mapId":"ruins", "gx":7, "gy":2, "icon":"🌑",
"text":"Что-то пульсирует за этим порталом. Воздух холоднее, чем должен быть. Первый Герой запечатал это место — печать ослабла. Это начало конца, или его конец?",
"reveals":{ "enemy":"chaos_lord", "hint":"За порталом — древнее зло. Готовь святое оружие." } },
{ "id":"ln_a1", "title":"Записка Первого Героя","mapId":"abyss", "gx":4, "gy":4, "icon":"📜",
"text":"«Я запечатал его здесь тысячу лет назад. Если ты читаешь это — печать разрушена. Мрак Безликий — это не демон и не зверь. Это сама тьма, принявшая форму. Только святое оружие может причинить ему настоящий вред. Удачи, герой.» — Эйдор I",
"reveals":{ "enemy":"chaos_lord", "hint":"Мрак Безликий уязвим ТОЛЬКО к святой магии!" } }
]

27
data/quests.json Normal file
View File

@@ -0,0 +1,27 @@
[
{ "id":"q_first", "name":"Первая кровь", "desc":"Убей 3 гоблина", "type":"kill", "target":"goblin", "need":3, "reward":{ "exp":50, "gold":20 }},
{ "id":"q_wolves", "name":"Охота на волков", "desc":"Убей 3 волка", "type":"kill", "target":"wolf", "need":3, "reward":{ "exp":60, "gold":30 }},
{ "id":"q_forest", "name":"Зачистка леса", "desc":"Убей 5 любых монстров", "type":"kill", "target":"any", "need":5, "reward":{ "exp":100, "gold":40 }},
{ "id":"q_slime", "name":"Проблема слизней", "desc":"Убей 3 слизня", "type":"kill", "target":"slime", "need":3, "reward":{ "exp":45, "gold":25 }},
{ "id":"q_bandit", "name":"Убрать разбойников", "desc":"Убей 4 разбойника", "type":"kill", "target":"bandit", "need":4, "reward":{ "exp":80, "gold":60 }},
{ "id":"q_dungeon","name":"Вход в подземелье", "desc":"Доберись до подземелья", "type":"visit","target":"dungeon", "need":1, "reward":{ "exp":30, "gold":15 }},
{ "id":"q_cave", "name":"Вход в пещеру", "desc":"Найди пещеру", "type":"visit","target":"cave", "need":1, "reward":{ "exp":50, "gold":20 }},
{ "id":"q_skel", "name":"Армия скелетов", "desc":"Убей 4 скелета", "type":"kill", "target":"skeleton", "need":4, "reward":{ "exp":120, "gold":60 }},
{ "id":"q_troll", "name":"Бой с троллем", "desc":"Убей тролля", "type":"kill", "target":"troll", "need":1, "reward":{ "exp":200, "gold":100}},
{ "id":"q_spider", "name":"Пауки болота", "desc":"Убей 5 пауков", "type":"kill", "target":"spider", "need":5, "reward":{ "exp":90, "gold":55 }},
{ "id":"q_dragon", "name":"Убийца дракона", "desc":"Убей дракона", "type":"kill", "target":"dragon", "need":1, "reward":{ "exp":500, "gold":300}},
{ "id":"q_lich", "name":"Конец некромантии", "desc":"Уничтожь Лича", "type":"kill", "target":"lich", "need":1, "reward":{ "exp":450, "gold":250}},
{ "id":"q_ruins", "name":"Исследователь", "desc":"Посети Руины", "type":"visit","target":"ruins", "need":1, "reward":{ "exp":80, "gold":40 }},
{ "id":"q_ghost", "name":"Упокоить призраков", "desc":"Убей 3 призрака в Руинах", "type":"kill", "target":"ghost", "need":3, "reward":{ "exp":200, "gold":100}},
{ "id":"q_wyvern", "name":"Охота на виверн", "desc":"Убей 2 виверны", "type":"kill", "target":"wyvern", "need":2, "reward":{ "exp":280, "gold":160}},
{ "id":"q_orc5", "name":"Орочья угроза", "desc":"Убей 5 орков", "type":"kill", "target":"orc", "need":5, "reward":{ "exp":150, "gold":80 }},
{ "id":"q_yeti", "name":"Снежный зверь", "desc":"Убей йети", "type":"kill", "target":"yeti", "need":1, "reward":{ "exp":160, "gold":100}},
{ "id":"q_swamp_c", "name":"Зачистка болота", "desc":"Убей 3 паука и 2 зомби", "type":"kill","target":"spider", "need":3, "reward":{"exp":130, "gold":70 }},
{ "id":"q_goblin_king", "name":"Король Гоблинов", "desc":"Убей Зубастого в лесу", "type":"kill","target":"goblin_king", "need":1, "reward":{"exp":450, "gold":250 }},
{ "id":"q_corvus", "name":"Конец Корвуса", "desc":"Уничтожь Корвуса в подземелье", "type":"kill","target":"corvus", "need":1, "reward":{"exp":550, "gold":300 }},
{ "id":"q_hydra", "name":"Гидра болот", "desc":"Убей Болотную Гидру", "type":"kill","target":"hydra", "need":1, "reward":{"exp":480, "gold":280 }},
{ "id":"q_frost_giant", "name":"Ледяной Великан", "desc":"Сразись с Ледяным Великаном Скарр", "type":"kill","target":"frost_giant", "need":1, "reward":{"exp":510, "gold":290 }},
{ "id":"q_colossus", "name":"Каменный Колосс", "desc":"Уничтожь Каменного Колосса в пещере", "type":"kill","target":"stone_colossus", "need":1, "reward":{"exp":560, "gold":310 }},
{ "id":"q_shadow", "name":"Призрак Ирис", "desc":"Упокой Призрак Ирис в Руинах", "type":"kill","target":"shadow_assassin", "need":1, "reward":{"exp":530, "gold":295 }},
{ "id":"q_chaos_lord", "name":"Конец Тьмы", "desc":"Убей Мрака Безликого в Бездне", "type":"kill","target":"chaos_lord", "need":1, "reward":{"exp":3000,"gold":500 }}
]

92
data/recipes.json Normal file
View File

@@ -0,0 +1,92 @@
[
{ "id":"r_heal_sm", "name":"Малое зелье HP", "icon":"🧪", "category":"potions",
"ingredients":[{"id":"herb","qty":1},{"id":"slime_gel","qty":1}],
"result":{ "type":"potion", "name":"Малое зелье HP", "opts":{ "healAmount":40, "value":30, "stackable":true, "qty":1, "icon":"🧪" }}},
{ "id":"r_heal_md", "name":"Среднее зелье HP", "icon":"🧪", "category":"potions",
"ingredients":[{"id":"herb","qty":2},{"id":"slime_gel","qty":1}],
"result":{ "type":"potion", "name":"Среднее зелье HP", "opts":{ "healAmount":70, "value":55, "stackable":true, "qty":1, "icon":"🧪" }}},
{ "id":"r_heal_lg", "name":"Большое зелье HP", "icon":"🍶", "category":"potions",
"ingredients":[{"id":"herb","qty":3},{"id":"troll_heart","qty":1}],
"result":{ "type":"potion", "name":"Большое зелье HP", "opts":{ "healAmount":120, "value":95, "stackable":true, "qty":1, "icon":"🍶" }}},
{ "id":"r_mp_md", "name":"Зелье маны", "icon":"💧", "category":"potions",
"ingredients":[{"id":"bat_wing","qty":2},{"id":"spider_venom","qty":1}],
"result":{ "type":"potion", "name":"Зелье маны", "opts":{ "restoreMp":50, "value":60, "stackable":true, "qty":1, "icon":"💧" }}},
{ "id":"r_antidote", "name":"Антидот", "icon":"🩺", "category":"potions",
"ingredients":[{"id":"herb","qty":1},{"id":"wolf_pelt","qty":1}],
"result":{ "type":"potion", "name":"Антидот", "opts":{ "healAmount":15, "value":35, "stackable":true, "qty":1, "icon":"🩺", "desc":"Снимает яд и горение" }}},
{ "id":"r_stew", "name":"Мясное рагу", "icon":"🍲", "category":"potions",
"ingredients":[{"id":"meat","qty":2},{"id":"herb","qty":1}],
"result":{ "type":"food", "name":"Сытное рагу", "opts":{ "healAmount":50, "restoreMp":25, "value":40, "stackable":true, "qty":1, "icon":"🍲" }}},
{ "id":"r_smoke", "name":"Дымовая бомба", "icon":"💨", "category":"potions",
"ingredients":[{"id":"bat_wing","qty":1},{"id":"rot_flesh","qty":1}],
"result":{ "type":"potion", "name":"Дымовая бомба", "opts":{ "value":45, "stackable":true, "qty":1, "icon":"💨", "desc":"Гарантированный побег из боя", "healAmount":0 }}},
{ "id":"r_rune_str", "name":"Руна Силы", "icon":"🔴", "category":"runes",
"ingredients":[{"id":"golem_core","qty":1},{"id":"orc_tusk","qty":2}],
"result":{ "type":"material", "name":"Руна Силы", "opts":{ "bonusStr":5, "value":200, "icon":"🔴", "desc":"+5 СИЛ к персонажу", "rarity":"rare" }}},
{ "id":"r_rune_mag", "name":"Руна Магии", "icon":"🔵", "category":"runes",
"ingredients":[{"id":"dragon_scale","qty":1},{"id":"necronomicon","qty":1}],
"result":{ "type":"material", "name":"Руна Магии", "opts":{ "bonusMag":5, "value":260, "icon":"🔵", "desc":"+5 МАГ к персонажу", "rarity":"rare" }}},
{ "id":"r_rune_def", "name":"Руна Защиты", "icon":"🟢", "category":"runes",
"ingredients":[{"id":"yeti_fur","qty":1},{"id":"bone","qty":3}],
"result":{ "type":"material", "name":"Руна Защиты", "opts":{ "bonusDef":4, "value":185, "icon":"🟢", "desc":"+4 ЗАЩ к персонажу", "rarity":"uncommon" }}},
{ "id":"r_sharpen", "name":"Камень заточки", "icon":"⚙️", "category":"enhance",
"ingredients":[{"id":"bone","qty":2},{"id":"slime_gel","qty":1}],
"result":{ "type":"material", "name":"Камень заточки", "opts":{ "damage":3, "value":65, "icon":"⚙️", "desc":"+3 урона (применить к оружию)" }}},
{ "id":"r_poison_c", "name":"Яд на оружие", "icon":"☠️", "category":"enhance",
"ingredients":[{"id":"spider_venom","qty":2},{"id":"herb","qty":1}],
"result":{ "type":"scroll", "name":"Яд на оружие", "opts":{ "spell":"poison_cloud", "value":85, "icon":"☠️", "stackable":true, "qty":1 }}},
{ "id":"r_scale_a", "name":"Чешуйчатая броня", "icon":"🐉", "category":"equipment",
"ingredients":[{"id":"dragon_scale","qty":2},{"id":"wolf_pelt","qty":2}],
"result":{ "type":"armor", "name":"Чешуйчатая броня", "opts":{ "defense":20, "bonusHp":30, "value":500, "slot":"chest", "icon":"🐉", "rarity":"epic" }}},
{ "id":"r_death_s", "name":"Посох Смерти", "icon":"💀", "category":"equipment",
"ingredients":[{"id":"skull_staff","qty":1},{"id":"golem_core","qty":1},{"id":"goblin_ear","qty":3}],
"result":{ "type":"weapon", "name":"Посох Смерти", "opts":{ "damage":22, "bonusMag":8, "value":420, "slot":"weapon", "icon":"💀", "rarity":"epic" }}},
{ "id":"r_life_gem", "name":"Амулет жизни", "icon":"💎", "category":"equipment",
"ingredients":[{"id":"dragon_heart","qty":1},{"id":"troll_heart","qty":1}],
"result":{ "type":"armor", "name":"Амулет жизни", "opts":{ "bonusHp":60, "bonusMp":30, "value":850, "slot":"acc", "icon":"💎", "rarity":"legendary" }}},
{ "id":"r_alch_str", "name":"Зелье силы", "icon":"💪", "category":"alchemy",
"ingredients":[{"id":"herb","qty":2},{"id":"orc_tusk","qty":1}],
"result":{ "type":"potion", "name":"Зелье силы 💪", "opts":{ "buffStat":"str", "buffVal":1.5, "buffDur":45000, "value":80, "stackable":true, "qty":1, "icon":"💪", "desc":"Урон ×1.5 на 45 сек" }}},
{ "id":"r_alch_def", "name":"Зелье камня", "icon":"🪨", "category":"alchemy",
"ingredients":[{"id":"wolf_pelt","qty":2},{"id":"bone","qty":2}],
"result":{ "type":"potion", "name":"Зелье камня 🪨", "opts":{ "buffStat":"def", "buffVal":2.0, "buffDur":30000, "value":70, "stackable":true, "qty":1, "icon":"🪨", "desc":"Защита ×2 на 30 сек" }}},
{ "id":"r_alch_mp", "name":"Эликсир маны", "icon":"🔮", "category":"alchemy",
"ingredients":[{"id":"slime_gel","qty":2},{"id":"bat_wing","qty":2}],
"result":{ "type":"potion", "name":"Эликсир маны 🔮", "opts":{ "restoreMp":80, "value":65, "stackable":true, "qty":1, "icon":"🔮" }}},
{ "id":"r_alch_regen","name":"Зелье регенерации", "icon":"💚", "category":"alchemy",
"ingredients":[{"id":"herb","qty":3},{"id":"troll_heart","qty":1}],
"result":{ "type":"potion", "name":"Зелье регенерации 💚", "opts":{ "healAmount":40, "buffStat":"regen", "buffVal":8, "buffDur":50000, "value":110, "stackable":true, "qty":1, "icon":"💚", "desc":"+40 HP сейчас, регенерация 8 HP/ход 5 ходов" }}},
{ "id":"r_alch_poison","name":"Яд-склянка", "icon":"☠️", "category":"alchemy",
"ingredients":[{"id":"spider_venom","qty":2},{"id":"bat_wing","qty":1}],
"result":{ "type":"potion", "name":"Яд-склянка ☠️", "opts":{ "combatEffect":"poison", "value":55, "stackable":true, "qty":1, "icon":"☠️", "desc":"Боевое: наносит яд врагу (3 хода)" }}},
{ "id":"r_alch_fire","name":"Огненная колба", "icon":"🔥", "category":"alchemy",
"ingredients":[{"id":"dragon_scale","qty":1},{"id":"herb","qty":1}],
"result":{ "type":"potion", "name":"Огненная колба 🔥", "opts":{ "combatEffect":"fire", "combatDmg":35, "value":90, "stackable":true, "qty":1, "icon":"🔥", "desc":"Боевое: 35 урона огнём", "rarity":"rare" }}},
{ "id":"r_alch_antidote","name":"Сильный антидот", "icon":"🩺", "category":"alchemy",
"ingredients":[{"id":"herb","qty":2},{"id":"slime_gel","qty":1},{"id":"bat_wing","qty":1}],
"result":{ "type":"potion", "name":"Сильный антидот 🩺", "opts":{ "healAmount":20, "cureStatus":true, "value":50, "stackable":true, "qty":1, "icon":"🩺", "desc":"Снимает яд, горение, все статусы" }}},
{ "id":"r_alch_elixir","name":"Эликсир могущества", "icon":"⚗️", "category":"alchemy",
"ingredients":[{"id":"dragon_heart","qty":1},{"id":"witch_brew","qty":1}],
"result":{ "type":"potion", "name":"Эликсир могущества ⚗️", "opts":{ "healAmount":80, "restoreMp":60, "buffStat":"str", "buffVal":1.4, "buffDur":60000, "value":350, "stackable":true, "qty":1, "icon":"⚗️", "desc":"HP+80 MP+60 Сила×1.4 на 60 сек", "rarity":"epic" }}},
{ "id":"r_ghost_ward","name":"Оберег от призраков", "icon":"🕯️", "category":"alchemy",
"ingredients":[{"id":"ghost_essence","qty":2},{"id":"herb","qty":2}],
"result":{ "type":"potion", "name":"Оберег от призраков 🕯️", "opts":{ "buffStat":"def", "buffVal":1.3, "buffDur":60000, "value":120, "stackable":true, "qty":1, "icon":"🕯️", "desc":"Защита ×1.3 и +30 HP против нежити", "healAmount":30 }}},
{ "id":"r_wyvern_venom","name":"Яд виверны", "icon":"☠️", "category":"alchemy",
"ingredients":[{"id":"wyvern_poison","qty":1},{"id":"spider_venom","qty":1}],
"result":{ "type":"potion", "name":"Яд виверны ☠️", "opts":{ "combatEffect":"poison", "value":95, "stackable":true, "qty":1, "icon":"☠️", "desc":"Боевое: сильный яд на врага (4 хода)", "rarity":"rare" }}},
{ "id":"r_holy_plate","name":"Нагрудник паладина", "icon":"⛪", "category":"equipment",
"ingredients":[{"id":"golem_core","qty":1},{"id":"troll_heart","qty":1},{"id":"bone","qty":3}],
"result":{ "type":"armor", "name":"Нагрудник паладина ⛪", "opts":{ "defense":16, "bonusHp":40, "value":480, "slot":"chest", "icon":"⛪", "rarity":"epic", "setId":"holy" }}},
{ "id":"r_storm_staff","name":"Посох бури", "icon":"⚡", "category":"equipment",
"ingredients":[{"id":"dragon_scale","qty":1},{"id":"yeti_fur","qty":1},{"id":"golem_core","qty":1}],
"result":{ "type":"weapon", "name":"Посох бури ⚡", "opts":{ "damage":10, "bonusMag":16, "bonusMp":35, "value":580, "slot":"weapon", "icon":"⚡", "rarity":"epic", "setId":"arcane" }}},
{ "id":"r_frost_blade","name":"Ледяной клинок", "icon":"❄️", "category":"equipment",
"ingredients":[{"id":"frost_heart","qty":1},{"id":"dragon_scale","qty":1}],
"result":{ "type":"weapon", "name":"Ледяной клинок ❄️", "opts":{ "damage":27, "bonusStr":6, "value":620, "slot":"weapon", "icon":"❄️", "rarity":"legendary", "desc":"Выкован из ледяного сердца великана. Морозит врагов." }}},
{ "id":"r_titan_armor","name":"Броня Колосса", "icon":"🪨", "category":"equipment",
"ingredients":[{"id":"titan_core","qty":1},{"id":"golem_core","qty":1}],
"result":{ "type":"armor", "name":"Броня Колосса 🪨", "opts":{ "defense":24, "bonusHp":55, "value":650, "slot":"chest", "icon":"🪨", "rarity":"legendary", "desc":"Выкована из осколков Каменного Колосса. Невероятно прочна." }}},
{ "id":"r_hydra_mail", "name":"Кольчуга Гидры", "icon":"🐍", "category":"equipment",
"ingredients":[{"id":"hydra_scale","qty":2},{"id":"wyvern_scale","qty":1}],
"result":{ "type":"armor", "name":"Кольчуга Гидры 🐍", "opts":{ "defense":17, "bonusHp":30, "bonusMp":20, "value":490, "slot":"chest", "icon":"🐍", "rarity":"epic", "desc":"Сделана из чешуи Болотной Гидры. Обладает природной регенерацией." }}}
]

32
data/sets.json Normal file
View File

@@ -0,0 +1,32 @@
{
"steel": {
"name": "Стальной доспех", "icon": "⚔️",
"pieces": ["s_sw2","s_ar2","s_sh2","s_hm2"],
"bonuses": {
"2": { "def":4, "desc":"2 предмета: +4 защиты" },
"4": { "def":4, "str":6, "hp":20, "desc":"4 предмета: +6 силы, +4 защиты, +20 HP" }
}
},
"arcane": {
"name": "Посох чародея", "icon": "✨",
"pieces": ["s_st3"],
"bonuses": {
"1": { "mag":5, "mp":20, "desc":"Набор: +5 магии, +20 MP" }
}
},
"shadow": {
"name": "Тёмные чары", "icon": "💀",
"pieces": ["skull_staff","bone_dagger"],
"bonuses": {
"2": { "mag":6, "str":4, "desc":"2 предмета: +6 магии, +4 силы" }
}
},
"holy": {
"name": "Доспех паладина", "icon": "⛪",
"pieces": ["s_ar3","r_holy_plate"],
"bonuses": {
"1": { "def":5, "hp":15, "desc":"1 предмет: +5 защиты, +15 HP" },
"2": { "def":8, "hp":30, "mag":4, "desc":"2 предмета: +8 защиты, +30 HP, +4 магии" }
}
}
}

19
data/shop.json Normal file
View File

@@ -0,0 +1,19 @@
[
{ "id":"s_hp2", "type":"potion", "name":"Среднее зелье HP", "opts":{ "healAmount":60, "value":50, "stackable":true, "qty":1, "icon":"🧪" }},
{ "id":"s_hp3", "type":"potion", "name":"Большое зелье HP", "opts":{ "healAmount":100, "value":90, "stackable":true, "qty":1, "icon":"🧪" }},
{ "id":"s_mp2", "type":"potion", "name":"Среднее зелье MP", "opts":{ "restoreMp":40, "value":55, "stackable":true, "qty":1, "icon":"💧" }},
{ "id":"s_sw2", "type":"weapon", "name":"Стальной меч", "opts":{ "damage":12, "value":160, "slot":"weapon", "icon":"⚔️", "rarity":"uncommon", "setId":"steel" }},
{ "id":"s_ax2", "type":"weapon", "name":"Боевой топор", "opts":{ "damage":14, "value":200, "slot":"weapon", "icon":"🪓", "rarity":"uncommon" }},
{ "id":"s_st3", "type":"weapon", "name":"Посох силы", "opts":{ "damage":5, "bonusMag":8, "value":220, "slot":"weapon", "icon":"✨", "rarity":"uncommon", "setId":"arcane" }},
{ "id":"s_ar2", "type":"armor", "name":"Кольчуга", "opts":{ "defense":8, "value":200, "slot":"chest", "icon":"🔗", "rarity":"uncommon", "setId":"steel" }},
{ "id":"s_sh2", "type":"armor", "name":"Стальной щит", "opts":{ "defense":6, "value":150, "slot":"shield", "icon":"🛡️", "rarity":"uncommon", "setId":"steel" }},
{ "id":"s_hm2", "type":"armor", "name":"Шлем воина", "opts":{ "defense":4, "bonusHp":15, "value":130, "slot":"head", "icon":"⛑️", "rarity":"uncommon", "setId":"steel" }},
{ "id":"s_sc1", "type":"scroll", "name":"Свиток огня", "opts":{ "spell":"fireball", "value":80, "icon":"📜" }},
{ "id":"s_sc2", "type":"scroll", "name":"Свиток исцеления", "opts":{ "spell":"heal", "value":60, "icon":"📜" }},
{ "id":"s_ring1", "type":"armor", "name":"Кольцо мага", "opts":{ "bonusMag":5, "bonusMp":20, "value":280, "slot":"acc", "icon":"💍", "rarity":"rare", "setId":"arcane" }},
{ "id":"s_boot1", "type":"armor", "name":"Сапоги ловкости", "opts":{ "bonusStr":3, "defense":2, "value":200, "slot":"feet", "icon":"👟", "rarity":"uncommon" }},
{ "id":"s_sw3", "type":"weapon", "name":"Ночной клинок", "opts":{ "damage":18, "bonusStr":4, "value":450, "slot":"weapon", "icon":"🗡️", "rarity":"legendary", "setId":"shadow" }},
{ "id":"s_st4", "type":"weapon", "name":"Посох бури", "opts":{ "damage":8, "bonusMag":14, "bonusMp":30, "value":500, "slot":"weapon", "icon":"⚡", "rarity":"epic", "setId":"arcane" }},
{ "id":"s_ar3", "type":"armor", "name":"Нагрудник паладина","opts":{ "defense":14, "bonusHp":30, "value":400, "slot":"chest", "icon":"⛪", "rarity":"epic", "setId":"holy" }},
{ "id":"s_ring2", "type":"armor", "name":"Кольцо защиты", "opts":{ "bonusDef":4, "defense":3, "value":220, "slot":"acc", "icon":"🔮", "rarity":"rare" }}
]

351
data/world.json Normal file
View File

@@ -0,0 +1,351 @@
{
"locations": {
"village": { "name":"Деревня", "safe":true },
"tavern": { "name":"Таверна", "safe":true },
"forest": { "name":"Лес", "safe":false },
"dungeon": { "name":"Подземелье", "safe":false },
"cave": { "name":"Пещера", "safe":false },
"mountain": { "name":"Горы", "safe":false },
"swamp": { "name":"Болото", "safe":false },
"ruins": { "name":"Руины", "safe":false },
"abyss": { "name":"Бездна", "safe":false }
},
"spawns": {
"forest": [
{"t":"goblin", "lOff":0, "x":3, "y":3 },
{"t":"wolf", "lOff":0, "x":10, "y":2 },
{"t":"goblin", "lOff":1, "x":5, "y":9 },
{"t":"slime", "lOff":0, "x":2, "y":10},
{"t":"bandit", "lOff":1, "x":11, "y":8 },
{"t":"wolf", "lOff":1, "x":7, "y":4 },
{"t":"goblin_king", "lOff":5, "x":8, "y":7 }
],
"dungeon": [
{"t":"skeleton", "lOff":2, "x":2, "y":2 },
{"t":"skeleton", "lOff":2, "x":11, "y":3 },
{"t":"zombie", "lOff":2, "x":6, "y":10},
{"t":"troll", "lOff":4, "x":10, "y":11},
{"t":"skeleton", "lOff":2, "x":3, "y":8 },
{"t":"zombie", "lOff":3, "x":8, "y":5 },
{"t":"corvus", "lOff":6, "x":5, "y":6 }
],
"cave": [
{"t":"bat", "lOff":2, "x":3, "y":3 },
{"t":"slime", "lOff":1, "x":8, "y":5 },
{"t":"orc", "lOff":3, "x":10, "y":8 },
{"t":"dragon", "lOff":7, "x":12, "y":2 },
{"t":"bat", "lOff":2, "x":5, "y":11},
{"t":"orc", "lOff":4, "x":11, "y":11},
{"t":"stone_colossus", "lOff":8, "x":6, "y":7 }
],
"mountain":[
{"t":"yeti", "lOff":3, "x":3, "y":3 },
{"t":"golem", "lOff":5, "x":11, "y":4 },
{"t":"yeti", "lOff":4, "x":6, "y":10},
{"t":"golem", "lOff":6, "x":10, "y":10},
{"t":"wolf", "lOff":2, "x":4, "y":7 },
{"t":"frost_giant", "lOff":7, "x":8, "y":7 }
],
"swamp": [
{"t":"spider", "lOff":2, "x":3, "y":4 },
{"t":"spider", "lOff":2, "x":11, "y":3 },
{"t":"witch", "lOff":4, "x":7, "y":11},
{"t":"slime", "lOff":1, "x":2, "y":9 },
{"t":"zombie", "lOff":3, "x":10, "y":9 },
{"t":"lich", "lOff":8, "x":12, "y":2 },
{"t":"hydra", "lOff":7, "x":5, "y":6 }
],
"ruins": [
{"t":"ghost", "lOff":3, "x":3, "y":3 },
{"t":"ghost", "lOff":3, "x":10, "y":4 },
{"t":"ghost", "lOff":4, "x":5, "y":10},
{"t":"wyvern", "lOff":5, "x":11, "y":10},
{"t":"wyvern", "lOff":6, "x":12, "y":3 },
{"t":"skeleton", "lOff":2, "x":2, "y":9 },
{"t":"zombie", "lOff":3, "x":9, "y":11},
{"t":"shadow_assassin", "lOff":8, "x":7, "y":7 }
],
"abyss": [
{"t":"shadow_assassin", "lOff":7, "x":3, "y":3 },
{"t":"lich", "lOff":8, "x":11, "y":3 },
{"t":"ghost", "lOff":6, "x":2, "y":11},
{"t":"chaos_lord", "lOff":12,"x":7, "y":5 }
]
},
"npcs": {
"village": [
{"name":"Торговец", "x":2, "y":5, "color":"#3498db", "type":"shop"},
{"name":"Стражник", "x":5, "y":1, "color":"#8b0000", "type":"quest"},
{"name":"Целитель", "x":10, "y":3, "color":"#27ae60", "type":"healer"},
{"name":"Старик", "x":8, "y":8, "color":"#aaa", "type":"quest"}
],
"tavern": [
{"name":"Трактирщик", "x":7, "y":5, "color":"#c8a060", "type":"branch"}
],
"forest": [{"name":"Эльф", "x":10, "y":10, "color":"#2ecc71", "type":"quest"}],
"dungeon": [{"name":"Призрак", "x":7, "y":7, "color":"#aaffff", "type":"quest"}],
"swamp": [{"name":"Шаман", "x":3, "y":3, "color":"#8e44ad", "type":"quest"}],
"mountain": [{"name":"Старик", "x":5, "y":5, "color":"#aaa", "type":"quest"}],
"ruins": [{"name":"Страж", "x":6, "y":6, "color":"#88aacc", "type":"quest"}]
},
"decos": {
"village": [
{"x":2, "y":2, "type":"house"},
{"x":11, "y":2, "type":"house"},
{"x":2, "y":9, "type":"house"},
{"x":4, "y":6, "type":"tree"},
{"x":10, "y":6, "type":"tree"},
{"x":12, "y":8, "type":"tree"},
{"x":3, "y":4, "type":"fountain"},
{"x":8, "y":2, "type":"well"},
{"x":7, "y":9, "type":"tavern", "name":"Таверна"},
{"x":7, "y":9, "type":"portal", "destination":"tavern", "name":"🍺 Таверна"},
{"x":13, "y":7, "type":"portal", "destination":"forest", "name":"Лес"},
{"x":7, "y":13, "type":"portal", "destination":"dungeon", "name":"Подземелье"},
{"x":1, "y":7, "type":"portal", "destination":"cave", "name":"Пещера"},
{"x":13, "y":1, "type":"portal", "destination":"mountain", "name":"Горы"},
{"x":1, "y":13, "type":"portal", "destination":"swamp", "name":"Болото"},
{"x":13, "y":13, "type":"portal", "destination":"ruins", "name":"Руины"}
],
"tavern": [
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"🚪 Выход"},
{"x":3, "y":3, "type":"torch"},
{"x":11, "y":3, "type":"torch"},
{"x":3, "y":10, "type":"torch"},
{"x":11, "y":10, "type":"torch"},
{"x":4, "y":6, "type":"table"},
{"x":4, "y":8, "type":"table"},
{"x":10, "y":6, "type":"table"},
{"x":10, "y":8, "type":"table"}
],
"forest": [
{"x":2, "y":2, "type":"tree"},
{"x":4, "y":3, "type":"tree"},
{"x":6, "y":4, "type":"tree"},
{"x":8, "y":5, "type":"tree"},
{"x":10, "y":6, "type":"tree"},
{"x":12, "y":7, "type":"tree"},
{"x":4, "y":4, "type":"rock"},
{"x":10, "y":10, "type":"rock"},
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"Деревня"}
],
"dungeon": [
{"x":1, "y":1, "type":"pillar"},
{"x":13, "y":1, "type":"pillar"},
{"x":1, "y":13, "type":"pillar"},
{"x":13, "y":13, "type":"pillar"},
{"x":4, "y":4, "type":"torch"},
{"x":9, "y":4, "type":"torch"},
{"x":4, "y":9, "type":"torch"},
{"x":9, "y":9, "type":"torch"},
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"Деревня"}
],
"cave": [
{"x":2, "y":2, "type":"crystal"},
{"x":11, "y":3, "type":"crystal"},
{"x":8, "y":8, "type":"crystal"},
{"x":3, "y":11, "type":"crystal"},
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"Деревня"}
],
"mountain": [
{"x":3, "y":3, "type":"rock"},
{"x":10, "y":3, "type":"rock"},
{"x":5, "y":8, "type":"rock"},
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"Деревня"}
],
"swamp": [
{"x":2, "y":2, "type":"rock"},
{"x":11, "y":4, "type":"rock"},
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"Деревня"}
],
"ruins": [
{"x":2, "y":2, "type":"pillar"},
{"x":11, "y":2, "type":"pillar"},
{"x":2, "y":11, "type":"pillar"},
{"x":11, "y":11, "type":"pillar"},
{"x":5, "y":5, "type":"rock"},
{"x":8, "y":3, "type":"rock"},
{"x":3, "y":8, "type":"rock"},
{"x":10, "y":9, "type":"rock"},
{"x":4, "y":4, "type":"torch"},
{"x":9, "y":4, "type":"torch"},
{"x":4, "y":9, "type":"torch"},
{"x":7, "y":13, "type":"portal", "destination":"village", "name":"Деревня"},
{"x":7, "y":1, "type":"portal", "destination":"abyss", "name":"Бездна"}
],
"abyss": [
{"x":2, "y":2, "type":"pillar"},
{"x":12, "y":2, "type":"pillar"},
{"x":2, "y":12, "type":"pillar"},
{"x":12, "y":12, "type":"pillar"},
{"x":4, "y":4, "type":"torch"},
{"x":10, "y":4, "type":"torch"},
{"x":4, "y":10, "type":"torch"},
{"x":10, "y":10, "type":"torch"},
{"x":7, "y":13, "type":"portal", "destination":"ruins", "name":"Руины"}
]
},
"weather": {
"village": ["none","none","rain","sunny"],
"tavern": ["none"],
"forest": ["rain","rain","fog","none"],
"dungeon": ["none","fog"],
"cave": ["none","fog"],
"mountain": ["snow","snow","none"],
"swamp": ["fog","fog","rain"],
"ruins": ["fog","fog","none"],
"abyss": ["fog","fog","fog"]
},
"dialogs": {
"Трактирщик": {
"start": {
"text": "Добро пожаловать в «Золотой Кубок»! Что желаете?",
"opts": [
{ "label": "Отдохнуть (20 🪙)", "next": "rest", "cost": 20 },
{ "label": "Купить напиток (10 🪙)", "next": "drink", "cost": 10 },
{ "label": "Послушать слухи", "next": "rumors" },
{ "label": "До свидания", "next": null }
]
},
"rest": {
"text": "Хорошо, комната готова. Ложитесь — утром будете как новенький!",
"opts": [{ "label": "Спасибо!", "next": null, "reward": { "hp": 9999, "mp": 9999 } }]
},
"drink": {
"text": "Вот кружка доброго эля. Придаст сил на бой!",
"opts": [{ "label": "За удачу!", "next": null, "reward": { "buff": "str" } }]
},
"rumors": {
"text": "Говорят, в Руинах видели странный свет по ночам... А ещё что Бездна всё расширяется. Путники туда заходят — и не возвращаются.",
"opts": [{ "label": "Занятно...", "next": null }]
}
},
"Стражник": {
"start": { "text":"Путник! Тут неспокойно. Гоблины снова шалят в лесу. Чем могу помочь?",
"opts": [
{ "label":"📍 Расскажи о локациях", "next":"lore" },
{ "label":"💰 Заплатить за совет (15 💰)", "next":"tip", "cost":15 },
{ "label":"❌ Ничего, спасибо", "next":null }
]},
"lore": { "text":"Лес к северу опасен — там волки и гоблины. В подземелье орудует нежить. В пещере — дракон. На болоте засела Ведьма. Горы охраняет Голем.",
"opts": [
{ "label":"Понятно, спасибо", "next":null }
]},
"tip": { "text":"Тайный совет: Паук ядовит — возьми антидот. Голем неуязвим к физике, только магия берёт. Ну и не суйся на болото ночью.",
"opts": [
{ "label":"Ценная информация!", "next":null, "reward":{ "exp":30 } }
]}
},
"Старик": {
"start": { "text":"Хм... Давненько не видел таких юных искателей приключений. Что тебя интересует?",
"opts": [
{ "label":"📖 История Эйдона", "next":"history" },
{ "label":"🧙 Тайны магии", "next":"magic" },
{ "label":"🎁 Благословение (50 💰)", "next":"bless", "cost":50 },
{ "label":"❌ Ничего", "next":null }
]},
"history": { "text":"Эйдон — земля, рождённая из хаоса. Когда-то здесь жили древние маги. Они создали Голема и Лича в качестве стражей. Но амбиции взяли верх, и мир погрузился в войну...",
"opts": [
{ "label":"Что случилось дальше?", "next":"history2" },
{ "label":"Понятно", "next":null }
]},
"history2": { "text":"Войну остановил Первый Герой — он запечатал Лича в болоте, а Голем заснул в горах. Но печать слабеет... Лич снова собирает силы.",
"opts": [
{ "label":"Мне нужно остановить его", "next":null, "reward":{ "exp":50 } }
]},
"magic": { "text":"Магия идёт из земли. Кристаллы пещер — её источники. Но у каждой стихии есть противоположность: огонь слаб против льда, яд — против антидота.",
"opts": [
{ "label":"Полезно знать", "next":null, "reward":{ "exp":25 } }
]},
"bless": { "text":"Пусть удача сопутствует тебе. Прими моё благословение — пусть следующий бой будет в твою пользу.",
"opts": [
{ "label":"Благодарю, мудрец", "next":null, "reward":{ "exp":40, "buff":"def" } }
]}
},
"Эльф": {
"start": { "text":"О, смертный... Ты пришёл в лес в неспокойное время. Что тебе нужно?",
"opts": [
{ "label":"🌿 Собрать травы", "next":"herbs" },
{ "label":"⚔️ Где самые опасные враги?", "next":"danger" },
{ "label":"🎁 Дар природы", "next":"gift" },
{ "label":"❌ Просто проходил мимо", "next":null }
]},
"herbs": { "text":"В этом лесу много целебных трав. Возьми — пригодятся для зелий.",
"opts": [
{ "label":"Спасибо!", "next":null, "reward":{ "item":"herb", "qty":3 } }
]},
"danger": { "text":"Глубже в лес — волки и бандиты. Осторожнее с пауками — их яд силён. А тролль у болота регенерирует — нужен огонь.",
"opts": [
{ "label":"Буду осторожен", "next":null }
]},
"gift": { "text":"Природа даёт дары тем, кто уважает её. Прими этот амулет леса.",
"opts": [
{ "label":"Прекрасно!", "next":null, "reward":{ "exp":60, "item":"slime_gel", "qty":2 } }
]}
},
"Шаман": {
"start": { "text":"Я чувствую силу в тебе... и тьму вокруг. Болото охраняет тайны. Что ты ищешь?",
"opts": [
{ "label":"🧪 Исцели меня", "next":"heal" },
{ "label":"📜 Секрет болота", "next":"secret" },
{ "label":"🔮 Предсказание", "next":"predict" },
{ "label":"❌ Ухожу", "next":null }
]},
"heal": { "text":"Болото очищает. Постой на этой земле... готово, яды ушли.",
"opts": [
{ "label":"Благодарю шаман", "next":null, "reward":{ "cure":true, "hp":30 } }
]},
"secret": { "text":"Ведьма черпает силу из болотных трясин. Вытащи её на твёрдую землю — и она ослабнет. Святой огонь сожжёт её договор с тьмой.",
"opts": [
{ "label":"Это важно", "next":null, "reward":{ "exp":45 } }
]},
"predict": { "text":"Я вижу... тебя окружают враги. Один из них обманет тебя. Но ты победишь. Цена предсказания — немного твоей силы.",
"opts": [
{ "label":"Принять предсказание", "next":null, "reward":{ "exp":35 } }
]}
},
"Призрак": {
"start": { "text":"...ты слышишь меня? Хорошо. Я был солдатом. Погиб здесь давно. Чего ты хочешь, живой?",
"opts": [
{ "label":"Кто ты?", "next":"who" },
{ "label":"Как победить Лича?", "next":"lich" },
{ "label":"Покойся с миром", "next":null }
]},
"who": { "text":"Рядовой Эрик из армии Короля. Мы пришли зачистить подземелье от нежити. Никто не вернулся. Лич поглотил наши души... кроме моей. Я слишком упрямый.",
"opts": [
{ "label":"Мне жаль", "next":"lich" },
{ "label":"Покойся с миром", "next":null }
]},
"lich": { "text":"Лич хранит свою душу в филактерии — магическом сосуде. Пока он цел — Лич не умрёт. Разбей его святым заклинанием... или просто бей достаточно сильно. Удачи тебе, живой.",
"opts": [
{ "label":"Я уничтожу Лича", "next":null, "reward":{ "exp":80 } }
]}
},
"Страж": {
"start": { "text":"Стоп! Ты живой? Странно видеть здесь живых... Руины опасны. Духи воинов и виверны охраняют эти камни. Что тебе нужно?",
"opts": [
{ "label":"Расскажи об этом месте", "next":"history" },
{ "label":"Где найти виверн?", "next":"wyvern" },
{ "label":"Дай задание", "next":"quest" },
{ "label":"Ничего, спасибо", "next":null }
]},
"history": { "text":"Когда-то здесь стоял великий замок короля Эйдора. Армия тьмы уничтожила его за одну ночь. Я был среди защитников. Теперь мы здесь навсегда — ждём героя, который упокоит проклятие.",
"opts": [
{ "label":"Как снять проклятие?", "next":"curse" },
{ "label":"Я помогу", "next":null, "reward":{ "exp":60 } }
]},
"curse": { "text":"Убей Виверну-Матриарха в северо-восточном углу. Она — источник проклятия. Её смерть ослабит духов. Это единственный путь.",
"opts": [
{ "label":"Я её найду", "next":null, "reward":{ "exp":90, "item":"ghost_essence" } }
]},
"wyvern": { "text":"Виверны гнездятся в разрушенных башнях — смотри на северо-восток. Яд виверны — ценный алхимический компонент. Удача тебе нужна больше, чем смелость.",
"opts": [
{ "label":"Спасибо за совет", "next":null, "reward":{ "exp":40 } }
]},
"quest": { "text":"Упокой трёх призраков в этих руинах. Они страдают. Их имена я знаю, но произнести не могу. Просто уничтожь их — это лучшее, что ты можешь сделать.",
"opts": [
{ "label":"Хорошо, займусь этим", "next":null, "reward":{ "exp":50 } }
]}
}
}
}