/
MrFish
/
CSharpGameProject
Обзор
Документация
Войти
/
MrFish
/
CSharpGameProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
MainGameProject/Spell.cs
52 строки
4 KB
Yaroslav4444-bauer
Фикс логики заклинаний
20 дек 2025, 14:52
20 дек 2025, 14:52
9e30d28
Код
Авторство
О чём код?
namespace MainGameProject { // Spell class (simple combination of 2-3 runes, basic effects) public class Spell { public List<Rune> Runes { get; set; } = []; public string Name { get; set; } = "Basic Cast"; public int Damage { get; set; } public RuneType PrimaryElement { get; set; } // For terrain bonus public Spell() { } // Parameterless constructor for JSON deserialization // Инициализация заклинаний public Spell(List<Rune> runes) { Runes = runes; DetermineSpellProperties(); } // Функция создания заклинания и определения его силы private void DetermineSpellProperties() { if (Runes.Count == 0) return; PrimaryElement = Runes[0].Type; Damage = Runes.Count * 20; // Base damage // Simple combinations var fireCount = Runes.Count(r => r.Type == RuneType.Fire); var waterCount = Runes.Count(r => r.Type == RuneType.Water); var earthCount = Runes.Count(r => r.Type == RuneType.Earth); var airCount = Runes.Count(r => r.Type == RuneType.Air); if (airCount == 1 && earthCount == 1 && waterCount == 1 && fireCount == 1) { Name = "ELEMENTALIO"; PrimaryElement = RuneType.Air; Damage += 140; } // ELEMENTALIO - Комбинация всех типов рун else if (fireCount == 4) { Name = "Solarfist"; PrimaryElement = RuneType.Fire; Damage += 70; } // Солнечный кулак else if (waterCount == 4) { Name = "Tsunami"; PrimaryElement = RuneType.Water; Damage += 60; } // Ценами else if (earthCount == 4) { Name = "Meteorite"; PrimaryElement = RuneType.Earth; Damage += 70; } // Метеорит else if (airCount == 4) { Name = "Cyclone"; PrimaryElement = RuneType.Air; Damage += 60; } // Циклон else if (fireCount >= 2) { Name = "Fireball"; Damage += 10; } // Огненный шар else if (waterCount >= 2) { Name = "Wave"; Damage += 10; } // Волна else if (earthCount >= 2) { Name = "Rockslide"; Damage += 10; } // Камнепад else if (airCount >= 2) { Name = "Gale"; Damage += 10; } // Шторм else if (fireCount == 1 && airCount == 1) { Name = "Lightning"; PrimaryElement = RuneType.Fire; Damage += 30; } // Молния else if (waterCount == 1 && earthCount == 1) { Name = "Mudslide"; PrimaryElement = RuneType.Water; Damage += 20; } // Оползень else if (fireCount == 1 && earthCount == 1) { Name = "Lavaflow"; PrimaryElement = RuneType.Earth; Damage += 25; } // Поток лавы else if (waterCount == 1 && airCount == 1) { Name = "Hail"; PrimaryElement = RuneType.Air; Damage += 15; } // Град else if (waterCount == 1 && fireCount == 1) { Name = "Geyser"; PrimaryElement = RuneType.Air; Damage += 25; } // Гейзер else if (airCount == 1 && earthCount == 1) { Name = "Sandstorm"; PrimaryElement = RuneType.Fire; Damage += 15; } // Песчаная буря else { Name = "Basic Cast"; } // Базовое заклинание } } }