diff --git a/src/CiselnaVyprava/Components/BattleArena.razor b/src/CiselnaVyprava/Components/BattleArena.razor index 9c54d1d..3be999a 100644 --- a/src/CiselnaVyprava/Components/BattleArena.razor +++ b/src/CiselnaVyprava/Components/BattleArena.razor @@ -1,5 +1,6 @@ @inject IGameDataLoader DataLoader @inject IBattleEngine BattleEngine +@implements IDisposable
@@ -88,7 +89,7 @@ {
- @(State.IsDefensePhase ? "🛡️ OBRANNÝ TEST: Vyber správnu odpoveď!" : "⚔️ VYPOČÍTAJ A ZAÚTOČ:") + @(State.IsDefensePhase ? "🛡️ ZÁCHRANNÁ OBRANA: Vyrieš náročnú výzvu a aktivuj štít!" : "⚔️ VYPOČÍTAJ A ZAÚTOČ:")

@State.CurrentProblem.QuestionText

@@ -213,10 +214,29 @@ private double RemainingTimeSeconds { get; set; } = 6.0; private Level? NextLevel => DataLoader.GetNextLevel(PlayerGrade, CurrentLevel.Id); + private string? _loadedLevelId; protected override void OnInitialized() { - StartBattle(); + if (CurrentLevel != null && !string.IsNullOrEmpty(CurrentLevel.Id)) + { + _loadedLevelId = CurrentLevel.Id; + StartBattle(); + } + } + + protected override void OnParametersSet() + { + if (CurrentLevel != null && !string.IsNullOrEmpty(CurrentLevel.Id) && CurrentLevel.Id != _loadedLevelId) + { + _loadedLevelId = CurrentLevel.Id; + StartBattle(); + } + } + + public void Dispose() + { + _timer?.Dispose(); } private void StartBattle() @@ -407,6 +427,16 @@ return; } + if (e.Key is "<" or "=" or ">") + { + var match = State.CurrentProblem.Choices.FirstOrDefault(c => c == e.Key); + if (match != null) + { + await HandleChoiceSelected(match); + return; + } + } + if (e.Key.Equals("a", StringComparison.OrdinalIgnoreCase) || e.Key.Equals("y", StringComparison.OrdinalIgnoreCase)) { var match = State.CurrentProblem.Choices.FirstOrDefault(c => c.StartsWith("Á", StringComparison.OrdinalIgnoreCase) || c.StartsWith("A", StringComparison.OrdinalIgnoreCase)); diff --git a/src/CiselnaVyprava/Pages/Home.razor b/src/CiselnaVyprava/Pages/Home.razor index af98ba8..fce2616 100644 --- a/src/CiselnaVyprava/Pages/Home.razor +++ b/src/CiselnaVyprava/Pages/Home.razor @@ -39,7 +39,8 @@ var currentWorld = worlds.FirstOrDefault(w => w.Levels.Any(l => l.Id == SelectedLevel.Id)); var bg = currentWorld?.Background ?? "assets/images/backgrounds/world1_meadow.jpg"; - w.Levels.Any(l => l.Id == completedLevel.Id)); diff --git a/src/CiselnaVyprava/Services/BattleEngine.cs b/src/CiselnaVyprava/Services/BattleEngine.cs index db727d2..49331d1 100644 --- a/src/CiselnaVyprava/Services/BattleEngine.cs +++ b/src/CiselnaVyprava/Services/BattleEngine.cs @@ -51,7 +51,7 @@ public class BattleEngine : IBattleEngine public void NextProblem() { - State.CurrentProblem = _mathGenerator.GenerateProblem(State.CurrentLevel.MathConfig); + State.CurrentProblem = _mathGenerator.GenerateProblem(State.CurrentLevel.MathConfig, State.EnemyHpPhase); State.ProblemStartTime = DateTime.UtcNow; State.IsDefensePhase = false; State.PlayerPose = CombatPose.Idle; @@ -117,9 +117,7 @@ public class BattleEngine : IBattleEngine State.EnemyPose = CombatPose.Attack; State.IsDefensePhase = true; State.LastResult = CombatResultType.PlayerMissed; - State.LastFeedbackMessage = $"❌ Vedľa! Pozor na protiútok! Aktivuj štít!"; - - State.CurrentProblem = _mathGenerator.GenerateDefenseTest(); + State.CurrentProblem = _mathGenerator.GenerateDefenseTest(State.CurrentLevel.MathConfig); State.ProblemStartTime = DateTime.UtcNow; return CombatResultType.PlayerMissed; diff --git a/src/CiselnaVyprava/Services/MathProblemGenerator.cs b/src/CiselnaVyprava/Services/MathProblemGenerator.cs index 9035bc4..d896d7c 100644 --- a/src/CiselnaVyprava/Services/MathProblemGenerator.cs +++ b/src/CiselnaVyprava/Services/MathProblemGenerator.cs @@ -4,41 +4,99 @@ namespace CiselnaVyprava.Services; public interface IMathProblemGenerator { - MathProblem GenerateProblem(MathConfig config); - MathProblem GenerateDefenseTest(); + MathProblem GenerateProblem(MathConfig config, int hpPhase = 1); + MathProblem GenerateDefenseTest(MathConfig config); } public class MathProblemGenerator : IMathProblemGenerator { private readonly Random _rand = new(); - public MathProblem GenerateProblem(MathConfig config) + public MathProblem GenerateProblem(MathConfig config, int hpPhase = 1) { var op = config.Operations[_rand.Next(config.Operations.Count)]; return op switch { - "+" => GenerateAddition(config), - "-" => GenerateSubtraction(config), - "*" => GenerateMultiplication(config), - "/" => GenerateDivision(config), - "<" or ">" or "=" => GenerateComparison(config), - _ => GenerateAddition(config) + "+" => GenerateAddition(config, hpPhase), + "-" => GenerateSubtraction(config, hpPhase), + "*" => GenerateMultiplication(config, hpPhase), + "/" => GenerateDivision(config, hpPhase), + "<" or ">" or "=" => GenerateComparison(config, hpPhase), + _ => GenerateAddition(config, hpPhase) }; } - private MathProblem GenerateAddition(MathConfig config) + private MathProblem GenerateAddition(MathConfig config, int hpPhase) { + // Phase 4: Possibility of 3-term chain or climax numbers + if (hpPhase >= 4 && _rand.Next(3) == 0 && config.MaxSum >= 10) + { + int c1 = Math.Max(1, config.MinA); + int c2 = Math.Max(1, config.MinB); + int maxPart = Math.Max(2, config.MaxSum / 3); + int a3 = _rand.Next(c1, maxPart + 1); + int b3 = _rand.Next(c2, Math.Min(config.MaxB, config.MaxSum - a3 - 1) + 1); + int c3 = _rand.Next(1, Math.Min(config.MaxB, config.MaxSum - a3 - b3) + 1); + int sum3 = a3 + b3 + c3; + + var chainProblem = new MathProblem + { + DisplayA = $"{a3} + {b3} + {c3}", + Operation = "+", + DisplayB = "", + CorrectAnswer = sum3.ToString(), + QuestionText = $"{a3} + {b3} + {c3} = ?", + InputType = config.InputType + }; + if (config.InputType == "MultipleChoice") + { + chainProblem.Choices = GenerateNumericChoices(sum3, 1, config.MaxSum); + } + return chainProblem; + } + int a, b; + int minA = config.MinA; + int maxA = config.MaxA; + int minB = config.MinB; + int maxB = config.MaxB; + + // Scale difficulty by phase + if (hpPhase == 1) + { + maxA = Math.Max(minA, minA + (maxA - minA) / 2); + maxB = Math.Max(minB, minB + (maxB - minB) / 2); + } + else if (hpPhase >= 3) + { + minA = Math.Min(maxA, minA + (maxA - minA) / 3); + minB = Math.Min(maxB, minB + (maxB - minB) / 3); + } + if (config.AllowCarryOver) { - a = _rand.Next(config.MinA, config.MaxA + 1); - b = _rand.Next(config.MinB, Math.Min(config.MaxB, config.MaxSum - a) + 1); + a = _rand.Next(minA, maxA + 1); + int remainingMax = Math.Min(maxB, config.MaxSum - a); + b = _rand.Next(minB, Math.Max(minB, remainingMax) + 1); + + // In Phase 3-4, prefer carry over (sum of units >= 10) if possible + if (hpPhase >= 3 && config.MaxSum >= 20) + { + int tries = 0; + while ((a % 10 + b % 10 < 10) && tries < 15) + { + tries++; + a = _rand.Next(minA, maxA + 1); + remainingMax = Math.Min(maxB, config.MaxSum - a); + b = _rand.Next(minB, Math.Max(minB, remainingMax) + 1); + } + } } else { - a = _rand.Next(config.MinA, config.MaxA + 1); - b = _rand.Next(config.MinB, config.MaxB + 1); + a = _rand.Next(minA, maxA + 1); + b = _rand.Next(minB, maxB + 1); } int sum = a + b; @@ -60,10 +118,63 @@ public class MathProblemGenerator : IMathProblemGenerator return problem; } - private MathProblem GenerateSubtraction(MathConfig config) + private MathProblem GenerateSubtraction(MathConfig config, int hpPhase) { - int b = _rand.Next(config.MinB, config.MaxB + 1); - int a = _rand.Next(Math.Max(b, config.MinA), config.MaxA + 1); + // Phase 4: Possibility of 3-term mixed chain + if (hpPhase >= 4 && _rand.Next(3) == 0 && config.MaxA >= 15) + { + int a3 = _rand.Next(Math.Max(10, config.MinA), config.MaxA + 1); + int b3 = _rand.Next(2, Math.Max(3, a3 / 2)); + int c3 = _rand.Next(1, 6); + int res3 = a3 - b3 + c3; + + var chainProblem = new MathProblem + { + DisplayA = $"{a3} - {b3} + {c3}", + Operation = "-", + DisplayB = "", + CorrectAnswer = res3.ToString(), + QuestionText = $"{a3} - {b3} + {c3} = ?", + InputType = config.InputType + }; + if (config.InputType == "MultipleChoice") + { + chainProblem.Choices = GenerateNumericChoices(res3, 0, config.MaxA + 10); + } + return chainProblem; + } + + int minA = config.MinA; + int maxA = config.MaxA; + int minB = config.MinB; + int maxB = config.MaxB; + + if (hpPhase == 1) + { + maxA = Math.Max(minA, minA + (maxA - minA) / 2); + maxB = Math.Max(minB, minB + (maxB - minB) / 2); + } + else if (hpPhase >= 3) + { + minA = Math.Min(maxA, minA + (maxA - minA) / 3); + minB = Math.Min(maxB, minB + (maxB - minB) / 3); + } + + int b = _rand.Next(minB, maxB + 1); + int a = _rand.Next(Math.Max(b, minA), maxA + 1); + + // In Phase 3-4 with carry, prefer crossing ten (e.g., 14 - 8, 32 - 17) + if (hpPhase >= 3 && config.AllowCarryOver && config.MaxA >= 15) + { + int tries = 0; + while ((a % 10 >= b % 10) && tries < 15) + { + tries++; + b = _rand.Next(minB, maxB + 1); + a = _rand.Next(Math.Max(b, minA), maxA + 1); + } + } + int diff = a - b; var problem = new MathProblem @@ -84,19 +195,34 @@ public class MathProblemGenerator : IMathProblemGenerator return problem; } - private MathProblem GenerateMultiplication(MathConfig config) + private MathProblem GenerateMultiplication(MathConfig config, int hpPhase) { + var factors = config.Factors != null && config.Factors.Count > 0 + ? new List(config.Factors) + : new List { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + int factorA; - if (config.Factors != null && config.Factors.Count > 0) + int minMult = config.MinMultiplier; + int maxMult = config.MaxMultiplier; + + if (hpPhase == 1) { - factorA = config.Factors[_rand.Next(config.Factors.Count)]; + var lowerFactors = factors.Where(f => f <= 5).ToList(); + factorA = lowerFactors.Any() ? lowerFactors[_rand.Next(lowerFactors.Count)] : factors[_rand.Next(factors.Count)]; + maxMult = Math.Min(5, config.MaxMultiplier); + } + else if (hpPhase >= 3) + { + var upperFactors = factors.Where(f => f >= 6).ToList(); + factorA = upperFactors.Any() ? upperFactors[_rand.Next(upperFactors.Count)] : factors[_rand.Next(factors.Count)]; + minMult = Math.Max(5, config.MinMultiplier); } else { - factorA = _rand.Next(2, 10); + factorA = factors[_rand.Next(factors.Count)]; } - int factorB = _rand.Next(config.MinMultiplier, config.MaxMultiplier + 1); + int factorB = _rand.Next(minMult, maxMult + 1); int product = factorA * factorB; var problem = new MathProblem @@ -117,19 +243,34 @@ public class MathProblemGenerator : IMathProblemGenerator return problem; } - private MathProblem GenerateDivision(MathConfig config) + private MathProblem GenerateDivision(MathConfig config, int hpPhase) { + var factors = config.Factors != null && config.Factors.Count > 0 + ? new List(config.Factors) + : new List { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + int divisor; - if (config.Factors != null && config.Factors.Count > 0) + int minMult = config.MinMultiplier; + int maxMult = config.MaxMultiplier; + + if (hpPhase == 1) { - divisor = config.Factors[_rand.Next(config.Factors.Count)]; + var lower = factors.Where(f => f <= 5).ToList(); + divisor = lower.Any() ? lower[_rand.Next(lower.Count)] : factors[_rand.Next(factors.Count)]; + maxMult = Math.Min(5, config.MaxMultiplier); + } + else if (hpPhase >= 3) + { + var upper = factors.Where(f => f >= 6).ToList(); + divisor = upper.Any() ? upper[_rand.Next(upper.Count)] : factors[_rand.Next(factors.Count)]; + minMult = Math.Max(5, config.MinMultiplier); } else { - divisor = _rand.Next(2, 10); + divisor = factors[_rand.Next(factors.Count)]; } - int result = _rand.Next(config.MinMultiplier, config.MaxMultiplier + 1); + int result = _rand.Next(minMult, maxMult + 1); int dividend = divisor * result; var problem = new MathProblem @@ -150,41 +291,370 @@ public class MathProblemGenerator : IMathProblemGenerator return problem; } - private MathProblem GenerateComparison(MathConfig config) + private MathProblem GenerateComparison(MathConfig config, int hpPhase) { - int a = _rand.Next(config.MinA, config.MaxA + 1); - int b = _rand.Next(config.MinB, config.MaxB + 1); + if (hpPhase >= 3) + { + int a = _rand.Next(config.MinA, config.MaxA + 1); + int b = _rand.Next(config.MinB, config.MaxB + 1); + int leftVal = a + b; + string leftStr = $"{a} + {b}"; - string answer = a < b ? "<" : (a > b ? ">" : "="); + int rightVal; + string rightStr; + if (hpPhase == 3) + { + rightVal = _rand.Next(Math.Max(1, leftVal - 3), leftVal + 4); + rightStr = rightVal.ToString(); + } + else + { + int c = _rand.Next(config.MinA, config.MaxA + 1); + int d = _rand.Next(config.MinB, config.MaxB + 1); + rightVal = c + d; + rightStr = $"{c} + {d}"; + if (_rand.Next(3) == 0) + { + rightVal = leftVal; + rightStr = $"{a + 1} + {b - 1}"; + } + } + + string comp = leftVal < rightVal ? "<" : (leftVal > rightVal ? ">" : "="); + + return new MathProblem + { + DisplayA = leftStr, + Operation = "?", + DisplayB = rightStr, + CorrectAnswer = comp, + QuestionText = $"{leftStr} ? {rightStr}", + InputType = "MultipleChoice", + Choices = new List { "<", "=", ">" } + }; + } + + int x = _rand.Next(config.MinA, config.MaxA + 1); + int y = _rand.Next(config.MinB, config.MaxB + 1); + + if (hpPhase == 2 && _rand.Next(2) == 0) + { + y = Math.Clamp(x + (_rand.Next(2) == 0 ? 1 : -1), config.MinB, config.MaxB); + } + + string answer = x < y ? "<" : (x > y ? ">" : "="); return new MathProblem { - DisplayA = a.ToString(), + DisplayA = x.ToString(), Operation = "?", - DisplayB = b.ToString(), + DisplayB = y.ToString(), CorrectAnswer = answer, - QuestionText = $"{a} ? {b}", + QuestionText = $"{x} ? {y}", InputType = "MultipleChoice", Choices = new List { "<", "=", ">" } }; } - public MathProblem GenerateDefenseTest() + // ======================================================== + // ADVANCED / CHALLENGING RESCUE DEFENSE CHALLENGES + // ======================================================== + public MathProblem GenerateDefenseTest(MathConfig config) { - // Simple True/False defense shield challenge - int a = _rand.Next(1, 10); - int b = _rand.Next(1, 10); - bool isCorrect = _rand.Next(2) == 0; - int displayedResult = isCorrect ? (a + b) : (a + b + (_rand.Next(2) == 0 ? 1 : -1)); - if (displayedResult <= 0) displayedResult = a + b + 2; + bool hasComparison = config.Operations.Any(o => o is "<" or ">" or "="); + bool hasMultDiv = config.Operations.Any(o => o is "*" or "/"); + + if (hasComparison) + { + return GenerateChallengingComparisonDefense(config); + } + else if (hasMultDiv) + { + int variant = _rand.Next(3); + return variant switch + { + 0 => GenerateMissingFactorDefense(config), + 1 => GenerateMixedMultAddDefense(config), + _ => GenerateTrickyVerificationDefense(config, isMult: true) + }; + } + else + { + int variant = _rand.Next(3); + return variant switch + { + 0 => GenerateMissingNumberDefense(config), + 1 => GenerateThreeTermChainDefense(config), + _ => GenerateTrickyVerificationDefense(config, isMult: false) + }; + } + } + + private MathProblem GenerateChallengingComparisonDefense(MathConfig config) + { + // Compare expressions: (a + b) ? (c - d) + int valLeft, valRight; + string exprLeft, exprRight; + + if (config.MaxA > 100) // Grade 3 large numbers + { + int a = _rand.Next(10, 50) * 10; + int b = _rand.Next(5, 30) * 10; + valLeft = a + b; + exprLeft = $"{a} + {b}"; + + int c = _rand.Next(20, 80) * 10; + int d = _rand.Next(5, 25) * 10; + valRight = c - d; + exprRight = $"{c} - {d}"; + } + else if (config.MaxSum > 20 || config.MaxA > 20) // Grade 2 + { + int a = _rand.Next(10, 45); + int b = _rand.Next(5, 30); + valLeft = a + b; + exprLeft = $"{a} + {b}"; + + int c = _rand.Next(30, 80); + int d = _rand.Next(5, 25); + valRight = c - d; + exprRight = $"{c} - {d}"; + } + else // Grade 1 + { + int a = _rand.Next(2, 9); + int b = _rand.Next(2, 9); + valLeft = a + b; + exprLeft = $"{a} + {b}"; + + int c = _rand.Next(6, 18); + int d = _rand.Next(1, 6); + valRight = c - d; + exprRight = $"{c} - {d}"; + } + + // Sometimes create equal expressions + if (_rand.Next(3) == 0) + { + valRight = valLeft; + int offset = _rand.Next(1, 8); + exprRight = $"{valLeft + offset} - {offset}"; + } + + string answer = valLeft < valRight ? "<" : (valLeft > valRight ? ">" : "="); return new MathProblem { - DisplayA = $"{a} + {b} = {displayedResult}", + DisplayA = exprLeft, + Operation = "?", + DisplayB = exprRight, + CorrectAnswer = answer, + QuestionText = $"Porovnaj výrazy:\n( {exprLeft} ) ? ( {exprRight} )", + InputType = "MultipleChoice", + Choices = new List { "<", "=", ">" }, + IsDefenseTest = true + }; + } + + private MathProblem GenerateMissingNumberDefense(MathConfig config) + { + bool isAdd = _rand.Next(2) == 0; + int missing, known, result; + string equation; + + if (config.MaxSum > 100 || config.MaxA > 100) // Grade 3 + { + known = _rand.Next(10, 50) * 10; + missing = _rand.Next(10, 40) * 10; + if (isAdd) + { + result = known + missing; + equation = _rand.Next(2) == 0 ? $"{known} + ❓ = {result}" : $"❓ + {known} = {result}"; + } + else + { + result = known; + int total = known + missing; + equation = $"{total} - ❓ = {result}"; + } + } + else if (config.MaxSum > 20 || config.MaxA > 20) // Grade 2 + { + known = _rand.Next(12, 50); + missing = _rand.Next(8, 35); + if (isAdd) + { + result = known + missing; + equation = _rand.Next(2) == 0 ? $"{known} + ❓ = {result}" : $"❓ + {known} = {result}"; + } + else + { + result = known; + int total = known + missing; + equation = $"{total} - ❓ = {result}"; + } + } + else // Grade 1 + { + known = _rand.Next(3, 10); + missing = _rand.Next(3, 10); + if (isAdd) + { + result = known + missing; + equation = _rand.Next(2) == 0 ? $"{known} + ❓ = {result}" : $"❓ + {known} = {result}"; + } + else + { + result = known; + int total = known + missing; + equation = $"{total} - ❓ = {result}"; + } + } + + return new MathProblem + { + DisplayA = equation, + Operation = "", + DisplayB = "", + CorrectAnswer = missing.ToString(), + QuestionText = $"Doplň chýbajúce číslo ❓:\n{equation}", + InputType = "MultipleChoice", + Choices = GenerateNumericChoices(missing, 1, 1000), + IsDefenseTest = true + }; + } + + private MathProblem GenerateThreeTermChainDefense(MathConfig config) + { + int a, b, c, result; + string expr; + + if (config.MaxSum > 100 || config.MaxA > 100) // Grade 3 + { + a = _rand.Next(15, 45) * 10; + b = _rand.Next(10, 30) * 10; + c = _rand.Next(5, 20) * 10; + result = a + b - c; + expr = $"{a} + {b} - {c}"; + } + else if (config.MaxSum > 20 || config.MaxA > 20) // Grade 2 + { + a = _rand.Next(15, 50); + b = _rand.Next(10, 30); + c = _rand.Next(5, 20); + result = a + b - c; + expr = $"{a} + {b} - {c}"; + } + else // Grade 1 + { + a = _rand.Next(4, 9); + b = _rand.Next(3, 8); + c = _rand.Next(2, 6); + result = a + b - c; + expr = $"{a} + {b} - {c}"; + } + + return new MathProblem + { + DisplayA = expr, + Operation = "", + DisplayB = "", + CorrectAnswer = result.ToString(), + QuestionText = $"Vypočítaj trojčlenný reťazec:\n{expr} = ?", + InputType = "MultipleChoice", + Choices = GenerateNumericChoices(result, 0, 1000), + IsDefenseTest = true + }; + } + + private MathProblem GenerateMissingFactorDefense(MathConfig config) + { + int factorA; + if (config.Factors != null && config.Factors.Count > 0) + { + factorA = config.Factors[_rand.Next(config.Factors.Count)]; + } + else + { + factorA = _rand.Next(2, 10); + } + + int missing = _rand.Next(2, 10); + int product = factorA * missing; + bool isDiv = _rand.Next(2) == 0; + string equation = isDiv + ? $"{product} ÷ ❓ = {factorA}" + : (_rand.Next(2) == 0 ? $"{factorA} × ❓ = {product}" : $"❓ × {factorA} = {product}"); + + return new MathProblem + { + DisplayA = equation, + Operation = "", + DisplayB = "", + CorrectAnswer = missing.ToString(), + QuestionText = $"Nájdi neznáme číslo ❓:\n{equation}", + InputType = "MultipleChoice", + Choices = GenerateNumericChoices(missing, 1, 10), + IsDefenseTest = true + }; + } + + private MathProblem GenerateMixedMultAddDefense(MathConfig config) + { + int f1 = _rand.Next(2, 8); + int f2 = _rand.Next(2, 6); + int prod = f1 * f2; + int add = _rand.Next(4, 16); + + bool isSub = _rand.Next(2) == 0 && prod > add; + int result = isSub ? prod - add : prod + add; + string expr = isSub ? $"{f1} × {f2} - {add}" : $"{f1} × {f2} + {add}"; + + return new MathProblem + { + DisplayA = expr, + Operation = "", + DisplayB = "", + CorrectAnswer = result.ToString(), + QuestionText = $"Kombinovaný výpočet (najprv násob!):\n{expr} = ?", + InputType = "MultipleChoice", + Choices = GenerateNumericChoices(result, 1, 100), + IsDefenseTest = true + }; + } + + private MathProblem GenerateTrickyVerificationDefense(MathConfig config, bool isMult) + { + bool isCorrect = _rand.Next(2) == 0; + string equation; + + if (isMult) + { + int a = _rand.Next(3, 10); + int b = _rand.Next(3, 10); + int prod = a * b; + int displayed = isCorrect ? prod : (prod + (_rand.Next(2) == 0 ? _rand.Next(1, 4) : -_rand.Next(1, 4))); + if (displayed <= 0) displayed = prod + 2; + equation = $"{a} × {b} = {displayed}"; + } + else + { + int a = _rand.Next(15, 45); + int b = _rand.Next(15, 45); + int sum = a + b; + int offset = _rand.Next(2) == 0 ? (_rand.Next(2) == 0 ? 1 : -1) : (_rand.Next(2) == 0 ? 10 : -10); + int displayed = isCorrect ? sum : (sum + offset); + if (displayed <= 0) displayed = sum + 2; + equation = $"{a} + {b} = {displayed}"; + } + + return new MathProblem + { + DisplayA = equation, Operation = "", DisplayB = "", CorrectAnswer = isCorrect ? "ÁNO" : "NIE", - QuestionText = $"Je to správne?\n{a} + {b} = {displayedResult}", + QuestionText = $"Je táto rovnica správna?\n{equation}", InputType = "MultipleChoice", Choices = new List { "ÁNO", "NIE" }, IsDefenseTest = true @@ -194,13 +664,22 @@ public class MathProblemGenerator : IMathProblemGenerator private List GenerateNumericChoices(int correct, int min, int max) { var set = new HashSet { correct }; - while (set.Count < 3) + int tries = 0; + while (set.Count < 4 && tries < 30) { - int offset = _rand.Next(-5, 6); - if (offset == 0) offset = 1; + tries++; + int offset = _rand.Next(-4, 5); + if (offset == 0) offset = _rand.Next(2) == 0 ? 1 : -1; int candidate = Math.Clamp(correct + offset, min, max); set.Add(candidate); } + int fallback = 1; + while (set.Count < 4) + { + set.Add(Math.Max(min, correct + fallback)); + fallback++; + } + return set.OrderBy(_ => _rand.Next()).Select(x => x.ToString()).ToList(); } } diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p1.png new file mode 100644 index 0000000..02d8d5a Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p2.png new file mode 100644 index 0000000..c747d23 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p3.png new file mode 100644 index 0000000..78d7b72 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p4.png new file mode 100644 index 0000000..f1a2078 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p1.png new file mode 100644 index 0000000..4fa32be Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p2.png new file mode 100644 index 0000000..cee605f Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p3.png new file mode 100644 index 0000000..68af322 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p4.png new file mode 100644 index 0000000..9b81b45 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p1.png new file mode 100644 index 0000000..63d40c8 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p2.png new file mode 100644 index 0000000..f9a0044 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p3.png new file mode 100644 index 0000000..c61a5f9 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p4.png new file mode 100644 index 0000000..7c8486d Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p1.png new file mode 100644 index 0000000..0770f49 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p2.png new file mode 100644 index 0000000..a9d6e52 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p3.png new file mode 100644 index 0000000..8e91514 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p4.png new file mode 100644 index 0000000..6ddedc5 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bear_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p1.png new file mode 100644 index 0000000..c69e23f Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p2.png new file mode 100644 index 0000000..6aa8c84 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p3.png new file mode 100644 index 0000000..644dde3 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p4.png new file mode 100644 index 0000000..57befda Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p1.png new file mode 100644 index 0000000..f3fff4b Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p2.png new file mode 100644 index 0000000..e9b2962 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p3.png new file mode 100644 index 0000000..71c402a Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p4.png new file mode 100644 index 0000000..85a9874 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p1.png new file mode 100644 index 0000000..9d6084c Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p2.png new file mode 100644 index 0000000..63b438c Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p3.png new file mode 100644 index 0000000..f51230b Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p4.png new file mode 100644 index 0000000..2d28f1f Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p1.png new file mode 100644 index 0000000..d23d11c Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p2.png new file mode 100644 index 0000000..ffc9ea0 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p3.png new file mode 100644 index 0000000..281bbed Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p4.png new file mode 100644 index 0000000..d1af877 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/dragon_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p1.png index cb72285..8048e03 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p2.png index cb72285..18e2e29 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p3.png index cb72285..709e0ca 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p4.png index cb72285..060a699 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p1.png index d228789..3c9d267 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p2.png index d228789..2f15865 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p3.png index d228789..eba5fc6 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p4.png index d228789..4f9ee01 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p1.png index 789ab7e..9724442 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p2.png index 789ab7e..1defe33 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p3.png index 789ab7e..b4a6a71 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p4.png index 789ab7e..bb8dae7 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p1.png index 36bf7b1..3d9393f 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p2.png index 36bf7b1..f5d11fb 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p3.png index 36bf7b1..3408a11 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p4.png index 36bf7b1..052f9cc 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/goblin_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p1.png index b50c142..b8f60e8 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p2.png index b50c142..5e69be0 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p3.png index b50c142..244c40e 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p4.png index b50c142..47fb2b6 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p1.png new file mode 100644 index 0000000..cc156e0 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p2.png new file mode 100644 index 0000000..0cf5d8d Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p3.png new file mode 100644 index 0000000..5fe1cdd Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p4.png new file mode 100644 index 0000000..285fd50 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p1.png index b50c142..01b2a89 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p2.png index b50c142..91927ba 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p3.png index b50c142..ccf7ad7 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p4.png index b50c142..b233b2e 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p1.png index b50c142..2a661d5 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p2.png index b50c142..8c87e95 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p3.png index b50c142..5bd8ee6 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p4.png index b50c142..0ef28fe 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/golem_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p1.png index cb72285..051f4b7 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p2.png index cb72285..3dd97e1 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p3.png index cb72285..aaa057f 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p4.png index cb72285..f4b0f4d 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p1.png new file mode 100644 index 0000000..dc9a148 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p2.png new file mode 100644 index 0000000..1ce0c6d Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p3.png new file mode 100644 index 0000000..00991ca Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p4.png new file mode 100644 index 0000000..7a0af56 Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p1.png index 789ab7e..ceb15bd 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p2.png index 789ab7e..3638fae 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p3.png index 789ab7e..7c73c6b 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p4.png index 789ab7e..2938dd1 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p1.png index 36bf7b1..3c94914 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p2.png index 36bf7b1..c601cc1 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p3.png index 36bf7b1..149ed6c 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p4.png index 36bf7b1..9882e71 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/slime_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p1.png index 6110b71..2dfe32d 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p2.png index 6110b71..fd4db93 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p3.png index 6110b71..142c993 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p4.png index 6110b71..bd05494 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p1.png index 69d38d6..a66f18b 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p2.png index 69d38d6..3f7283c 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p3.png index 69d38d6..23a6e20 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p4.png index 69d38d6..dcc51fe 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p1.png index 7de3dea..300826b 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p2.png index 7de3dea..60bb83b 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p3.png index 7de3dea..ef92fd2 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p4.png index 7de3dea..36502dd 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p1.png index 7de3dea..8e54a01 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p2.png index 7de3dea..eafd1ba 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p3.png index 7de3dea..bc58175 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p4.png index 7de3dea..2e14c34 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/archer_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p1.png index 6110b71..bba92d7 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p2.png index 6110b71..763355c 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p3.png index 6110b71..5095123 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p4.png index 6110b71..4b2d8f0 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p1.png index 69d38d6..bcfd50c 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p2.png index 69d38d6..39947cf 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p3.png index 69d38d6..e81fa61 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p4.png index 69d38d6..64b7bc4 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p1.png index 7de3dea..5711d7f 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p2.png index 7de3dea..a3b7d8b 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p3.png index 7de3dea..6913051 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p4.png index 7de3dea..d588d3a 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p1.png index 7de3dea..81f6ad6 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p2.png index 7de3dea..058360d 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p3.png index 7de3dea..b9ec727 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p4.png index 7de3dea..1b2cff8 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/knight_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p1.png index 6110b71..1d76da3 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p2.png index 6110b71..5dc8e20 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p3.png index 6110b71..3de7a30 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p4.png index 6110b71..5abb0a0 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_attack_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p1.png index 69d38d6..99cbf37 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p2.png index 69d38d6..9da4cf0 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p3.png index 69d38d6..78c0ace 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p4.png index 69d38d6..92d6207 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_defend_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p1.png index 7de3dea..e464b03 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p2.png index 7de3dea..5fb6808 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p3.png index 7de3dea..78f4c6a 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p4.png index 7de3dea..314a960 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_hurt_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p1.png index 7de3dea..ce8229b 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p1.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p1.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p2.png index 7de3dea..76a7c33 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p2.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p2.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p3.png index 7de3dea..ba124cf 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p3.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p3.png differ diff --git a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p4.png index 7de3dea..1fe9a8f 100644 Binary files a/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p4.png and b/src/CiselnaVyprava/wwwroot/assets/images/heroes/mage_idle_p4.png differ diff --git a/src/CiselnaVyprava/wwwroot/css/app.css b/src/CiselnaVyprava/wwwroot/css/app.css index a666f19..78e5517 100644 --- a/src/CiselnaVyprava/wwwroot/css/app.css +++ b/src/CiselnaVyprava/wwwroot/css/app.css @@ -1513,12 +1513,13 @@ html, body { } .equation-box { margin-bottom: clamp(4px, 0.8vh, 8px); } -.equation-title { font-size: clamp(0.75rem, 1.6vh, 0.9rem); font-weight: 700; color: #7f8c8d; } .equation-text { - font-size: clamp(1.6rem, 4vh, 2.4rem); + font-size: clamp(1.4rem, 3.6vh, 2.2rem); color: #2c3e50; margin: 2px 0; letter-spacing: 1.5px; + white-space: pre-line; + line-height: 1.25; } /* KEYPAD */ diff --git a/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json b/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json index 5d7ac9d..65f948b 100644 --- a/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json +++ b/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json @@ -9,27 +9,27 @@ { "id": "1-1-1", "levelNumber": 1, - "name": "Lúčny Motýlik", - "enemy": { "id": "meadow_butterfly", "name": "Lúčny Motýlik", "maxHp": 20, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, + "name": "Lúčny Škriatok", + "enemy": { "id": "meadow_goblin", "name": "Lúčny Škriatok", "maxHp": 25, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, "mathConfig": { "operations": ["+"], "minA": 1, "maxA": 5, "minB": 1, "maxB": 5, "maxSum": 10, "allowCarryOver": false, "inputType": "DirectInput" }, "requiredCorrectAnswers": 3 }, { "id": "1-1-2", "levelNumber": 2, - "name": "Zvedavý Zajačik", - "enemy": { "id": "curious_bunny", "name": "Zvedavý Zajačik", "maxHp": 25, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, + "name": "Zvedavý Slizík", + "enemy": { "id": "curious_slime", "name": "Zvedavý Slizík", "maxHp": 32, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, "mathConfig": { "operations": ["+", "-"], "minA": 2, "maxA": 10, "minB": 1, "maxB": 5, "maxSum": 10, "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 3 + "requiredCorrectAnswers": 4 }, { "id": "1-1-3", "levelNumber": 3, "name": "Lesný Medveď (Boss)", "isBoss": true, - "enemy": { "id": "gentle_bear_boss", "name": "Strážca Lúky", "maxHp": 40, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, + "enemy": { "id": "gentle_bear_boss", "name": "Lesný Medveď", "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/bear" }, "mathConfig": { "operations": ["+", "-"], "minA": 3, "maxA": 10, "minB": 1, "maxB": 5, "maxSum": 10, "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 } ] }, @@ -44,17 +44,17 @@ "id": "1-2-1", "levelNumber": 1, "name": "Lesný Škriatok", - "enemy": { "id": "forest_gnome", "name": "Lesný Škriatok", "maxHp": 30, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, + "enemy": { "id": "forest_gnome", "name": "Lesný Škriatok", "maxHp": 38, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, "mathConfig": { "operations": ["+", "-"], "minA": 10, "maxA": 19, "minB": 1, "maxB": 5, "maxSum": 20, "allowCarryOver": false, "inputType": "DirectInput" }, "requiredCorrectAnswers": 4 }, { "id": "1-2-2", "levelNumber": 2, - "name": "Kráľovský Ježko", - "enemy": { "id": "royal_hedgehog", "name": "Kráľovský Ježko", "maxHp": 35, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, + "name": "Kráľovský Sliz", + "enemy": { "id": "royal_slime_g1", "name": "Kráľovský Sliz", "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, "mathConfig": { "operations": ["+", "-"], "minA": 11, "maxA": 19, "minB": 1, "maxB": 8, "maxSum": 20, "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 } ] }, @@ -68,19 +68,19 @@ { "id": "1-3-1", "levelNumber": 1, - "name": "Vodná Víla", - "enemy": { "id": "water_fairy", "name": "Vodná Víla", "maxHp": 30, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, + "name": "Vodný Škriatok", + "enemy": { "id": "water_goblin_g1", "name": "Vodný Škriatok", "maxHp": 38, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, "mathConfig": { "operations": ["<", ">", "="], "minA": 1, "maxA": 20, "minB": 1, "maxB": 20, "inputType": "MultipleChoice" }, "requiredCorrectAnswers": 4 }, { "id": "1-3-2", "levelNumber": 2, - "name": "Riečny Had (Boss)", + "name": "Jazerný Golem (Boss)", "isBoss": true, - "enemy": { "id": "river_serpent_boss", "name": "Riečny Had", "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, + "enemy": { "id": "lake_golem_boss_g1", "name": "Jazerný Golem", "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, "mathConfig": { "operations": ["<", ">", "="], "minA": 5, "maxA": 20, "minB": 5, "maxB": 20, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 } ] }, @@ -94,10 +94,10 @@ { "id": "1-4-1", "levelNumber": 1, - "name": "Kamenný Strážca", - "enemy": { "id": "stone_watcher", "name": "Kamenný Strážca", "maxHp": 35, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, + "name": "Kamenný Golem", + "enemy": { "id": "stone_watcher_g1", "name": "Kamenný Golem", "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, "mathConfig": { "operations": ["+", "-"], "minA": 10, "maxA": 50, "minB": 10, "maxB": 40, "maxSum": 100, "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 } ] }, @@ -113,9 +113,9 @@ "levelNumber": 1, "name": "Kráľovský Drak (Veľký Boss)", "isBoss": true, - "enemy": { "id": "king_dragon_boss", "name": "Kráľovský Drak", "maxHp": 60, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, + "enemy": { "id": "king_dragon_boss", "name": "Kráľovský Drak", "maxHp": 75, "attackPower": 1, "assetFolder": "assets/images/enemies/dragon" }, "mathConfig": { "operations": ["+", "-"], "minA": 5, "maxA": 20, "minB": 1, "maxB": 10, "maxSum": 20, "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 6 + "requiredCorrectAnswers": 7 } ] } diff --git a/src/CiselnaVyprava/wwwroot/data/worlds-grade2.json b/src/CiselnaVyprava/wwwroot/data/worlds-grade2.json index 5cebdc1..4b13599 100644 --- a/src/CiselnaVyprava/wwwroot/data/worlds-grade2.json +++ b/src/CiselnaVyprava/wwwroot/data/worlds-grade2.json @@ -13,7 +13,7 @@ "enemy": { "id": "goblin_apprentice", "name": "Škriatok Počtárik", - "maxHp": 30, + "maxHp": 38, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -27,7 +27,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 3 + "requiredCorrectAnswers": 4 }, { "id": "2-1-2", @@ -36,7 +36,7 @@ "enemy": { "id": "forest_slime", "name": "Lesný Slizík", - "maxHp": 40, + "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -50,7 +50,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-1-3", @@ -60,7 +60,7 @@ "enemy": { "id": "stone_golem_boss", "name": "Golem Čísel", - "maxHp": 60, + "maxHp": 75, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, @@ -74,7 +74,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 } ] }, @@ -92,7 +92,7 @@ "enemy": { "id": "forest_goblin_comp", "name": "Lesný Goblin", - "maxHp": 35, + "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -104,7 +104,7 @@ "maxB": 50, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-2-2", @@ -113,7 +113,7 @@ "enemy": { "id": "slime_comp_watcher", "name": "Slizký Strážca", - "maxHp": 40, + "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -125,19 +125,19 @@ "maxB": 100, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-2-3", "levelNumber": 3, - "name": "Strážca Hvozdu (Boss)", + "name": "Lesný Medveď (Boss)", "isBoss": true, "enemy": { - "id": "forest_golem_comp_boss", - "name": "Strážca Hvozdu", - "maxHp": 55, + "id": "forest_bear_comp_boss", + "name": "Lesný Medveď", + "maxHp": 70, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/bear" }, "mathConfig": { "operations": ["<", ">", "="], @@ -147,7 +147,7 @@ "maxB": 100, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 } ] }, @@ -165,7 +165,7 @@ "enemy": { "id": "river_goblin_easy", "name": "Riečny Goblin", - "maxHp": 35, + "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -179,7 +179,7 @@ "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-3-2", @@ -188,7 +188,7 @@ "enemy": { "id": "droplet_slime", "name": "Kvapkový Sliz", - "maxHp": 45, + "maxHp": 55, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -202,7 +202,7 @@ "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-3-3", @@ -212,7 +212,7 @@ "enemy": { "id": "river_golem_boss", "name": "Balvanový Netvor", - "maxHp": 65, + "maxHp": 80, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, @@ -226,7 +226,7 @@ "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 7 } ] }, @@ -244,7 +244,7 @@ "enemy": { "id": "mountain_goblin", "name": "Horský Goblin", - "maxHp": 40, + "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -258,7 +258,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-4-2", @@ -267,7 +267,7 @@ "enemy": { "id": "mountain_magic_slime", "name": "Magický Horský Sliz", - "maxHp": 50, + "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -281,19 +281,19 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 }, { "id": "2-4-3", "levelNumber": 3, - "name": "Horský Obor (Boss)", + "name": "Horský Medveď (Boss)", "isBoss": true, "enemy": { - "id": "mountain_giant_boss", - "name": "Horský Obor", - "maxHp": 70, + "id": "mountain_bear_boss", + "name": "Horský Medveď", + "maxHp": 90, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/bear" }, "mathConfig": { "operations": ["+", "-"], @@ -305,7 +305,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 7 } ] }, @@ -323,7 +323,7 @@ "enemy": { "id": "castle_guard_goblin", "name": "Hradný Strážca", - "maxHp": 40, + "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -334,7 +334,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "2-5-2", @@ -343,7 +343,7 @@ "enemy": { "id": "royal_castle_slime", "name": "Kráľovský Sliz", - "maxHp": 50, + "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -354,19 +354,19 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 }, { "id": "2-5-3", "levelNumber": 3, - "name": "Veľký Hradný Pán (Finále 2. ročníka)", + "name": "Hradný Drak (Veľký Boss)", "isBoss": true, "enemy": { - "id": "castle_lord_boss", - "name": "Veľký Hradný Pán", - "maxHp": 75, + "id": "castle_dragon_boss", + "name": "Hradný Drak", + "maxHp": 95, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/dragon" }, "mathConfig": { "operations": ["*"], @@ -375,7 +375,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 6 + "requiredCorrectAnswers": 8 } ] } diff --git a/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json b/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json index 96bf14f..d89f50d 100644 --- a/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json +++ b/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json @@ -13,7 +13,7 @@ "enemy": { "id": "river_sprite_goblin", "name": "Riečny Škriatok", - "maxHp": 35, + "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -24,7 +24,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "3-1-2", @@ -33,7 +33,7 @@ "enemy": { "id": "water_slime_div", "name": "Vodný Slizík", - "maxHp": 45, + "maxHp": 55, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -44,19 +44,19 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "3-1-3", "levelNumber": 3, - "name": "Jazerný Strážca (Boss)", + "name": "Jazerný Drak (Boss)", "isBoss": true, "enemy": { - "id": "lake_golem_boss", - "name": "Jazerný Strážca", - "maxHp": 65, + "id": "lake_dragon_boss", + "name": "Jazerný Drak", + "maxHp": 80, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/dragon" }, "mathConfig": { "operations": ["*", "/"], @@ -65,7 +65,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 7 } ] }, @@ -83,7 +83,7 @@ "enemy": { "id": "forest_dwarf_goblin", "name": "Lesný Piadimužík", - "maxHp": 40, + "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -94,7 +94,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "3-2-2", @@ -103,7 +103,7 @@ "enemy": { "id": "resin_slime_div", "name": "Živicový Sliz", - "maxHp": 50, + "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -114,19 +114,19 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 }, { "id": "3-2-3", "levelNumber": 3, - "name": "Starý Lesný Golem (Boss)", + "name": "Starý Lesný Medveď (Boss)", "isBoss": true, "enemy": { - "id": "ancient_forest_golem_boss", - "name": "Starý Lesný Golem", - "maxHp": 70, + "id": "ancient_forest_bear_boss", + "name": "Starý Lesný Medveď", + "maxHp": 90, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/bear" }, "mathConfig": { "operations": ["*", "/"], @@ -135,7 +135,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 6 + "requiredCorrectAnswers": 8 } ] }, @@ -153,7 +153,7 @@ "enemy": { "id": "cave_goblin_1000", "name": "Jaskynný Goblin", - "maxHp": 45, + "maxHp": 55, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -167,7 +167,7 @@ "allowCarryOver": false, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "3-3-2", @@ -176,7 +176,7 @@ "enemy": { "id": "glitter_slime_1000", "name": "Trblietavý Sliz", - "maxHp": 55, + "maxHp": 70, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -190,7 +190,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 }, { "id": "3-3-3", @@ -200,7 +200,7 @@ "enemy": { "id": "crystal_golem_boss", "name": "Kryštálový Golem", - "maxHp": 75, + "maxHp": 95, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" }, @@ -214,7 +214,7 @@ "allowCarryOver": true, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 6 + "requiredCorrectAnswers": 8 } ] }, @@ -232,7 +232,7 @@ "enemy": { "id": "wind_sprite_goblin", "name": "Veterný Škriatok", - "maxHp": 40, + "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -244,7 +244,7 @@ "maxB": 999, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 4 + "requiredCorrectAnswers": 5 }, { "id": "3-4-2", @@ -253,7 +253,7 @@ "enemy": { "id": "storm_slime_comp", "name": "Búrkový Sliz", - "maxHp": 50, + "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -265,19 +265,19 @@ "maxB": 1000, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 }, { "id": "3-4-3", "levelNumber": 3, - "name": "Hromový Golem (Boss)", + "name": "Hromový Medveď (Boss)", "isBoss": true, "enemy": { - "id": "thunder_golem_boss", - "name": "Hromový Golem", - "maxHp": 75, + "id": "thunder_bear_boss", + "name": "Hromový Medveď", + "maxHp": 95, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/bear" }, "mathConfig": { "operations": ["<", ">", "="], @@ -287,7 +287,7 @@ "maxB": 1000, "inputType": "MultipleChoice" }, - "requiredCorrectAnswers": 6 + "requiredCorrectAnswers": 8 } ] }, @@ -305,7 +305,7 @@ "enemy": { "id": "elite_guard_goblin", "name": "Elitný Goblin", - "maxHp": 50, + "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" }, @@ -316,7 +316,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 5 + "requiredCorrectAnswers": 6 }, { "id": "3-5-2", @@ -325,7 +325,7 @@ "enemy": { "id": "plasma_slime_boss", "name": "Magický Plazmový Sliz", - "maxHp": 65, + "maxHp": 80, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" }, @@ -341,19 +341,19 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 6 + "requiredCorrectAnswers": 7 }, { "id": "3-5-3", "levelNumber": 3, - "name": "Arcimág Čísel (Záverečný Boss)", + "name": "Zlatý Drak Kráľovstva (Záverečný Boss)", "isBoss": true, "enemy": { - "id": "archmage_golem_final_boss", - "name": "Arcimág Čísel", - "maxHp": 85, + "id": "golden_dragon_final_boss", + "name": "Zlatý Drak Kráľovstva", + "maxHp": 110, "attackPower": 1, - "assetFolder": "assets/images/enemies/golem" + "assetFolder": "assets/images/enemies/dragon" }, "mathConfig": { "operations": ["+", "-", "*", "/"], @@ -367,7 +367,7 @@ "maxMultiplier": 10, "inputType": "DirectInput" }, - "requiredCorrectAnswers": 8 + "requiredCorrectAnswers": 10 } ] }