using System.Collections.Generic;
namespace Luneraria.Core
{
/// How a hero power is triggered.
public enum PowerTrigger
{
/// Automatic in combat (like the existing abilities).
Automatic,
/// Released by the player through the command menu during combat.
Command,
}
///
/// Description of an ability or ultimate. Numbers are balance parameters; null means "not
/// decided yet". Nothing here is simulated until a hero is activated in a hero phase.
///
public sealed class HeroPower
{
public string Id = "";
public string Name = "";
public string Text = "";
public PowerTrigger Trigger = PowerTrigger.Automatic;
/// Effect family in the rules vocabulary (slow, splash, damage buff, dot, ...).
public string Effect = "";
public double? Radius;
public double? Duration;
public double? Amount;
public int? MaxTargets;
public double? Cooldown;
/// Stun length for powers that stun (a new rule, see docs/port/U1-RULES.md).
public double? Stun;
/// Open design questions of this power.
public string Note = "";
}
/// A planned hero from the owner's hero concept (docs/luneraria/HELDEN-KONZEPT.md in the reference).
public sealed class PlannedHero
{
public string Id = "";
public string Name = "";
public string People = "";
public string Role = "";
/// Row in the formation, as for troops: front, melee, ranged, splash or support.
public string FormationRole = "";
public string Weapon = "";
public string Look = "";
public HeroPower Ability = new HeroPower();
public HeroPower Ultimate = new HeroPower();
public string Goal = "";
/// False until a hero phase implements and balances the kit; not purchasable before.
public bool Active;
}
///
/// The four heroes the owner defined for Champions of Luneraria (Lucy, Ghaliga, Siegfried,
/// Feena). Part of the data model so HUD and command menu can be designed against them;
/// the match still offers only the three reference heroes (ContentData.Heroes), so the port
/// keeps behavioural parity. Ultimates are released through the command menu; the rest of
/// the combat stays automatic.
///
public static class PlannedHeroes
{
public static readonly IReadOnlyList All = new List
{
new PlannedHero
{
Id = "lucy", Name = "Lucy", People = "Dunkelelfe", Role = "Kontrolle / Fernkampf", FormationRole = "ranged", Weapon = "Bogen",
Look = "Lange weiße Haare, grüne Augen, dunkle Haut, dunkle Lederrüstung mit dunkelblauen Akzenten, frostige Nachtästhetik.",
Ability = new HeroPower { Id = "frostpfeile", Name = "Frostpfeile", Text = "Treffer verlangsamen Gegner.", Effect = "movement_slow" },
Ultimate = new HeroPower { Id = "multischuss", Name = "Multischuss", Text = "Mehrere Pfeile auf mehrere Ziele; Kontrolle und Flächendruck statt rohem Burst.",
Trigger = PowerTrigger.Command, Effect = "multi_target_volley" },
Goal = "Gefährliche Gegnerwellen verlangsamen und Formationen stören.",
},
new PlannedHero
{
Id = "ghaliga", Name = "Ghaliga", People = "Zwerg", Role = "Frontkämpfer / Bruiser", FormationRole = "front", Weapon = "Axt",
Look = "Rote Haare, langer Bart, blaue Augen, goldene Zwergenrüstung, schwere robuste Silhouette.",
Ability = new HeroPower { Id = "wirbelhieb", Name = "Wirbelhieb", Text = "Flächenangriff um ihn herum.", Effect = "splash_around_self" },
Ultimate = new HeroPower { Id = "versteinerung", Name = "Versteinerung", Text = "Absorbiert massiv Schaden und wird extrem zäh.",
Trigger = PowerTrigger.Command, Effect = "shield_and_reduction", Note = "Bindungs-/Aggroeffekt optional: wäre eine neue Zielwahlregel." },
Goal = "Front halten, Gegner binden, Wellen abfangen.",
},
new PlannedHero
{
Id = "siegfried", Name = "Siegfried", People = "Mensch", Role = "Anführer / Frontkämpfer / Support", FormationRole = "front", Weapon = "Schwert (gold-blau)",
Look = "Kurze blonde Haare, blaue Augen, goldene Paladinrüstung.",
Ability = new HeroPower { Id = "schlachtruf", Name = "Schlachtruf", Text = "Stärkt nahe Verbündete.", Effect = "damage" },
Ultimate = new HeroPower { Id = "excalibur", Name = "Excalibur", Text = "Großer kritischer Flächenangriff mit kurzer Betäubung; trifft nicht die ganze Karte.",
Trigger = PowerTrigger.Command, Effect = "area_strike_stun", Note = "Wirkbereich (Radius) und Betäubungsdauer sind Balanceparameter; Betäubung ist eine neue Regel." },
Goal = "Verbündete stärken und kritische Kämpfe drehen.",
},
new PlannedHero
{
Id = "feena", Name = "Feena", People = "Waldelfe", Role = "Fernkampf-DPS / Boss- und Elitejägerin", FormationRole = "ranged", Weapon = "Bogen",
Look = "Lange rote Haare, grüne Augen, grün-braune Lederrüstung, flinke naturverbundene Schützin.",
Ability = new HeroPower { Id = "giftpfeile", Name = "Giftpfeile", Text = "Schaden über Zeit.", Effect = "dot" },
Ultimate = new HeroPower { Id = "turbopfeile", Name = "Turbopfeile", Text = "Stark erhöhtes Angriffstempo für kurze Zeit.",
Trigger = PowerTrigger.Command, Effect = "attack_speed", Note = "Das Angriffstempo ist heute auf +50 % gedeckelt; das Ultimate braucht eine Ausnahme oder einen höheren Deckel." },
Goal = "Hoher anhaltender Fernkampfschaden, besonders gegen starke Einzelziele.",
},
};
}
}