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
}
]
}