-
-

+
-
🗺️ Vstupuješ do novej oblasti...
-
📍 @TransitionTargetText
-
-
✨
-
⭐
-
✨
+
+
+
+
+

+
+
@heroDisplayName
+
Udatný Počtár
+
+
+
+ VS
+ ⚔️
+
+
+
+
+

+
+
@PendingLevel.Enemy.Name
+
❤️ @PendingLevel.Enemy.MaxHp HP
+
+
+
+
+
+ 🧠 Úloha: @(PendingLevel.IsBoss ? "Záverečná skúška vedomostí!" : "Vyrieš matematické príklady a poraz protivníka!")
+
+
+
+
+
+
@@ -89,9 +125,9 @@
private ScreenType CurrentScreen { get; set; } = ScreenType.Loading;
private PlayerProfile Profile { get; set; } = new();
private Level? SelectedLevel { get; set; }
+ private Level? PendingLevel { get; set; }
private bool IsTransitioning { get; set; } = false;
- private string TransitionTargetText { get; set; } = string.Empty;
protected override async Task OnInitializedAsync()
{
@@ -121,17 +157,30 @@
await Storage.SaveProfileAsync(Profile);
}
- private async Task HandleLevelSelected(Level level)
+ private void HandleLevelSelected(Level level)
{
- TransitionTargetText = $"{level.Name} (Protivník: {level.Enemy.Name})";
+ PendingLevel = level;
IsTransitioning = true;
StateHasChanged();
+ }
- await Task.Delay(850);
+ private void ConfirmAndStartPendingLevel()
+ {
+ if (PendingLevel != null)
+ {
+ SelectedLevel = PendingLevel;
+ PendingLevel = null;
+ CurrentScreen = ScreenType.Battle;
+ IsTransitioning = false;
+ StateHasChanged();
+ }
+ }
- SelectedLevel = level;
- CurrentScreen = ScreenType.Battle;
+ private void CancelPendingLevel()
+ {
+ PendingLevel = null;
IsTransitioning = false;
+ CurrentScreen = ScreenType.WorldMap;
StateHasChanged();
}
@@ -150,7 +199,7 @@
await Storage.SaveProfileAsync(Profile);
}
- await HandleLevelSelected(nextLevel);
+ HandleLevelSelected(nextLevel);
}
private void UnlockNextLevel(Level completedLevel)
diff --git a/src/CiselnaVyprava/Services/MathProblemGenerator.cs b/src/CiselnaVyprava/Services/MathProblemGenerator.cs
index d896d7c..b01dece 100644
--- a/src/CiselnaVyprava/Services/MathProblemGenerator.cs
+++ b/src/CiselnaVyprava/Services/MathProblemGenerator.cs
@@ -107,6 +107,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = b.ToString(),
CorrectAnswer = sum.ToString(),
QuestionText = $"{a} + {b} = ?",
+ Explanation = GetAdditionExplanation(a, b, sum),
InputType = config.InputType
};
@@ -118,6 +119,36 @@ public class MathProblemGenerator : IMathProblemGenerator
return problem;
}
+ private string GetAdditionExplanation(int a, int b, int sum)
+ {
+ if (sum <= 10)
+ {
+ return $"Sčítanie: k číslu {a} pridáme {b} a dostaneme {sum}.";
+ }
+ if (a < 10 && b < 10 && sum > 10)
+ {
+ int toTen = 10 - a;
+ int rem = b - toTen;
+ return $"Tip: Rozlož si druhé číslo {b} na {toTen} a {rem}. Najprv doplň do desiatky ({a} + {toTen} = 10) a potom pripočítaj zvyšok (10 + {rem} = {sum})!";
+ }
+ if (a >= 10 && b < 10)
+ {
+ int unitsA = a % 10;
+ if (unitsA + b < 10)
+ {
+ return $"Sčítaj jednotky: {unitsA} + {b} = {unitsA + b}. Desiatky ({a / 10 * 10}) opíšeme: výsledok je {sum}.";
+ }
+ else
+ {
+ int toNextTen = 10 - unitsA;
+ int rem = b - toNextTen;
+ int nextTen = ((a / 10) + 1) * 10;
+ return $"Doplň do celej desiatky: {a} + {toNextTen} = {nextTen}, a potom pripočítaj zvyšných {rem}: {nextTen} + {rem} = {sum}!";
+ }
+ }
+ return $"Sčítanie: {a} + {b} = {sum}.";
+ }
+
private MathProblem GenerateSubtraction(MathConfig config, int hpPhase)
{
// Phase 4: Possibility of 3-term mixed chain
@@ -135,6 +166,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = "",
CorrectAnswer = res3.ToString(),
QuestionText = $"{a3} - {b3} + {c3} = ?",
+ Explanation = $"Počítaj postupne zľava doprava: najprv {a3} - {b3} = {a3 - b3}, a potom {a3 - b3} + {c3} = {res3}.",
InputType = config.InputType
};
if (config.InputType == "MultipleChoice")
@@ -184,6 +216,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = b.ToString(),
CorrectAnswer = diff.ToString(),
QuestionText = $"{a} - {b} = ?",
+ Explanation = GetSubtractionExplanation(a, b, diff),
InputType = config.InputType
};
@@ -195,6 +228,42 @@ public class MathProblemGenerator : IMathProblemGenerator
return problem;
}
+ private string GetSubtractionExplanation(int a, int b, int diff)
+ {
+ if (a <= 10)
+ {
+ return $"Odčítanie: od čísla {a} uberieme {b} a zostane nám {diff}.";
+ }
+ if (a > 10 && a <= 20 && b < 10)
+ {
+ int toTen = a - 10;
+ if (b <= toTen)
+ {
+ return $"Odčítaj jednotky: {toTen} - {b} = {toTen - b}. K desiatke pridáme {toTen - b} a máme {diff}.";
+ }
+ else
+ {
+ int rem = b - toTen;
+ return $"Tip: Rozlož si {b} na {toTen} a {rem}. Najprv odčítaj po desiatku ({a} - {toTen} = 10) a potom uber zvyšok (10 - {rem} = {diff})!";
+ }
+ }
+ if (a > 20 && b < 10)
+ {
+ int unitsA = a % 10;
+ if (unitsA >= b)
+ {
+ return $"Odčítaj jednotky: {unitsA} - {b} = {unitsA - b}. Desiatky ({a / 10 * 10}) zostávajú: výsledok je {diff}.";
+ }
+ else
+ {
+ int rem = b - unitsA;
+ int prevTen = (a / 10) * 10;
+ return $"Odčítaj najprv {unitsA} do desiatky ({a} - {unitsA} = {prevTen}) a potom odčítaj zvyšných {rem} ({prevTen} - {rem} = {diff})!";
+ }
+ }
+ return $"Odčítanie: {a} - {b} = {diff}.";
+ }
+
private MathProblem GenerateMultiplication(MathConfig config, int hpPhase)
{
var factors = config.Factors != null && config.Factors.Count > 0
@@ -232,6 +301,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = factorB.ToString(),
CorrectAnswer = product.ToString(),
QuestionText = $"{factorA} × {factorB} = ?",
+ Explanation = $"Násobenie: {factorA} × {factorB} znamená {factorB}-krát sčítať číslo {factorA}. Výsledok je {product}.",
InputType = config.InputType
};
@@ -280,6 +350,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = divisor.ToString(),
CorrectAnswer = result.ToString(),
QuestionText = $"{dividend} ÷ {divisor} = ?",
+ Explanation = $"Delenie: pýtame sa, koľkokrát sa {divisor} zmestí do {dividend}. Keďže {divisor} × {result} = {dividend}, výsledok je {result}!",
InputType = config.InputType
};
@@ -321,6 +392,7 @@ public class MathProblemGenerator : IMathProblemGenerator
}
string comp = leftVal < rightVal ? "<" : (leftVal > rightVal ? ">" : "=");
+ string compWord = leftVal < rightVal ? "menšie ako" : (leftVal > rightVal ? "väčšie ako" : "rovné");
return new MathProblem
{
@@ -329,6 +401,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = rightStr,
CorrectAnswer = comp,
QuestionText = $"{leftStr} ? {rightStr}",
+ Explanation = $"Vypočítajme obe strany: ( {leftStr} = {leftVal} ) a ( {rightStr} = {rightVal} ). Keďže {leftVal} je {compWord} {rightVal}, správny znak je {comp}.",
InputType = "MultipleChoice",
Choices = new List
{ "<", "=", ">" }
};
@@ -343,6 +416,7 @@ public class MathProblemGenerator : IMathProblemGenerator
}
string answer = x < y ? "<" : (x > y ? ">" : "=");
+ string word = x < y ? "menšie ako" : (x > y ? "väčšie ako" : "rovné");
return new MathProblem
{
@@ -351,6 +425,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = y.ToString(),
CorrectAnswer = answer,
QuestionText = $"{x} ? {y}",
+ Explanation = $"Porovnanie: Číslo {x} je {word} číslu {y}, preto platí {x} {answer} {y}.",
InputType = "MultipleChoice",
Choices = new List { "<", "=", ">" }
};
@@ -392,11 +467,10 @@ public class MathProblemGenerator : IMathProblemGenerator
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
+ if (config.MaxA > 100)
{
int a = _rand.Next(10, 50) * 10;
int b = _rand.Next(5, 30) * 10;
@@ -408,7 +482,7 @@ public class MathProblemGenerator : IMathProblemGenerator
valRight = c - d;
exprRight = $"{c} - {d}";
}
- else if (config.MaxSum > 20 || config.MaxA > 20) // Grade 2
+ else if (config.MaxSum > 20 || config.MaxA > 20)
{
int a = _rand.Next(10, 45);
int b = _rand.Next(5, 30);
@@ -420,7 +494,7 @@ public class MathProblemGenerator : IMathProblemGenerator
valRight = c - d;
exprRight = $"{c} - {d}";
}
- else // Grade 1
+ else
{
int a = _rand.Next(2, 9);
int b = _rand.Next(2, 9);
@@ -433,7 +507,6 @@ public class MathProblemGenerator : IMathProblemGenerator
exprRight = $"{c} - {d}";
}
- // Sometimes create equal expressions
if (_rand.Next(3) == 0)
{
valRight = valLeft;
@@ -442,6 +515,7 @@ public class MathProblemGenerator : IMathProblemGenerator
}
string answer = valLeft < valRight ? "<" : (valLeft > valRight ? ">" : "=");
+ string compWord = valLeft < valRight ? "menšie ako" : (valLeft > valRight ? "väčšie ako" : "rovné");
return new MathProblem
{
@@ -450,6 +524,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = exprRight,
CorrectAnswer = answer,
QuestionText = $"Porovnaj výrazy:\n( {exprLeft} ) ? ( {exprRight} )",
+ Explanation = $"Ľavá strana: {exprLeft} = {valLeft}. Pravá strana: {exprRight} = {valRight}. Keďže {valLeft} je {compWord} {valRight}, správny znak je {answer}.",
InputType = "MultipleChoice",
Choices = new List { "<", "=", ">" },
IsDefenseTest = true
@@ -461,8 +536,9 @@ public class MathProblemGenerator : IMathProblemGenerator
bool isAdd = _rand.Next(2) == 0;
int missing, known, result;
string equation;
+ string explanation;
- if (config.MaxSum > 100 || config.MaxA > 100) // Grade 3
+ if (config.MaxSum > 100 || config.MaxA > 100)
{
known = _rand.Next(10, 50) * 10;
missing = _rand.Next(10, 40) * 10;
@@ -470,15 +546,17 @@ public class MathProblemGenerator : IMathProblemGenerator
{
result = known + missing;
equation = _rand.Next(2) == 0 ? $"{known} + ❓ = {result}" : $"❓ + {known} = {result}";
+ explanation = $"Neznáme číslo nájdeme odčítaním: {result} - {known} = {missing}.";
}
else
{
result = known;
int total = known + missing;
equation = $"{total} - ❓ = {result}";
+ explanation = $"Neznáme číslo zistíme odčítaním výsledku od celku: {total} - {result} = {missing}.";
}
}
- else if (config.MaxSum > 20 || config.MaxA > 20) // Grade 2
+ else if (config.MaxSum > 20 || config.MaxA > 20)
{
known = _rand.Next(12, 50);
missing = _rand.Next(8, 35);
@@ -486,15 +564,17 @@ public class MathProblemGenerator : IMathProblemGenerator
{
result = known + missing;
equation = _rand.Next(2) == 0 ? $"{known} + ❓ = {result}" : $"❓ + {known} = {result}";
+ explanation = $"Neznáme číslo nájdeme odčítaním: {result} - {known} = {missing}.";
}
else
{
result = known;
int total = known + missing;
equation = $"{total} - ❓ = {result}";
+ explanation = $"Neznáme číslo zistíme odčítaním výsledku od celku: {total} - {result} = {missing}.";
}
}
- else // Grade 1
+ else
{
known = _rand.Next(3, 10);
missing = _rand.Next(3, 10);
@@ -502,12 +582,14 @@ public class MathProblemGenerator : IMathProblemGenerator
{
result = known + missing;
equation = _rand.Next(2) == 0 ? $"{known} + ❓ = {result}" : $"❓ + {known} = {result}";
+ explanation = $"Neznáme číslo nájdeme odčítaním: {result} - {known} = {missing}.";
}
else
{
result = known;
int total = known + missing;
equation = $"{total} - ❓ = {result}";
+ explanation = $"Neznáme číslo zistíme odčítaním: {total} - {result} = {missing}.";
}
}
@@ -518,6 +600,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = "",
CorrectAnswer = missing.ToString(),
QuestionText = $"Doplň chýbajúce číslo ❓:\n{equation}",
+ Explanation = explanation,
InputType = "MultipleChoice",
Choices = GenerateNumericChoices(missing, 1, 1000),
IsDefenseTest = true
@@ -529,7 +612,7 @@ public class MathProblemGenerator : IMathProblemGenerator
int a, b, c, result;
string expr;
- if (config.MaxSum > 100 || config.MaxA > 100) // Grade 3
+ if (config.MaxSum > 100 || config.MaxA > 100)
{
a = _rand.Next(15, 45) * 10;
b = _rand.Next(10, 30) * 10;
@@ -537,7 +620,7 @@ public class MathProblemGenerator : IMathProblemGenerator
result = a + b - c;
expr = $"{a} + {b} - {c}";
}
- else if (config.MaxSum > 20 || config.MaxA > 20) // Grade 2
+ else if (config.MaxSum > 20 || config.MaxA > 20)
{
a = _rand.Next(15, 50);
b = _rand.Next(10, 30);
@@ -545,7 +628,7 @@ public class MathProblemGenerator : IMathProblemGenerator
result = a + b - c;
expr = $"{a} + {b} - {c}";
}
- else // Grade 1
+ else
{
a = _rand.Next(4, 9);
b = _rand.Next(3, 8);
@@ -561,6 +644,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = "",
CorrectAnswer = result.ToString(),
QuestionText = $"Vypočítaj trojčlenný reťazec:\n{expr} = ?",
+ Explanation = $"Počítaj po krokoch zľava doprava: najprv {a} + {b} = {a + b}, a potom {a + b} - {c} = {result}.",
InputType = "MultipleChoice",
Choices = GenerateNumericChoices(result, 0, 1000),
IsDefenseTest = true
@@ -585,6 +669,9 @@ public class MathProblemGenerator : IMathProblemGenerator
string equation = isDiv
? $"{product} ÷ ❓ = {factorA}"
: (_rand.Next(2) == 0 ? $"{factorA} × ❓ = {product}" : $"❓ × {factorA} = {product}");
+ string explanation = isDiv
+ ? $"Neznámeho deliteľa nájdeme delením: {product} ÷ {factorA} = {missing}."
+ : $"Neznámeho činiteľa nájdeme delením: {product} ÷ {factorA} = {missing}.";
return new MathProblem
{
@@ -593,6 +680,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = "",
CorrectAnswer = missing.ToString(),
QuestionText = $"Nájdi neznáme číslo ❓:\n{equation}",
+ Explanation = explanation,
InputType = "MultipleChoice",
Choices = GenerateNumericChoices(missing, 1, 10),
IsDefenseTest = true
@@ -617,6 +705,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = "",
CorrectAnswer = result.ToString(),
QuestionText = $"Kombinovaný výpočet (najprv násob!):\n{expr} = ?",
+ Explanation = $"Násobenie má vždy prednosť! Najprv: {f1} × {f2} = {prod}, a potom: {prod} {(isSub ? "-" : "+")} {add} = {result}.",
InputType = "MultipleChoice",
Choices = GenerateNumericChoices(result, 1, 100),
IsDefenseTest = true
@@ -627,6 +716,7 @@ public class MathProblemGenerator : IMathProblemGenerator
{
bool isCorrect = _rand.Next(2) == 0;
string equation;
+ string explanation;
if (isMult)
{
@@ -636,6 +726,9 @@ public class MathProblemGenerator : IMathProblemGenerator
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}";
+ explanation = isCorrect
+ ? $"Rovnica {equation} je správna, pretože {a} × {b} sa skutočne rovná {prod}."
+ : $"Rovnica {equation} je nesprávna! Správny výsledok {a} × {b} je {prod} (nie {displayed}).";
}
else
{
@@ -646,6 +739,9 @@ public class MathProblemGenerator : IMathProblemGenerator
int displayed = isCorrect ? sum : (sum + offset);
if (displayed <= 0) displayed = sum + 2;
equation = $"{a} + {b} = {displayed}";
+ explanation = isCorrect
+ ? $"Rovnica {equation} je správna, pretože {a} + {b} sa skutočne rovná {sum}."
+ : $"Rovnica {equation} je nesprávna! Správny výsledok {a} + {b} je {sum} (nie {displayed}).";
}
return new MathProblem
@@ -655,6 +751,7 @@ public class MathProblemGenerator : IMathProblemGenerator
DisplayB = "",
CorrectAnswer = isCorrect ? "ÁNO" : "NIE",
QuestionText = $"Je táto rovnica správna?\n{equation}",
+ Explanation = explanation,
InputType = "MultipleChoice",
Choices = new List { "ÁNO", "NIE" },
IsDefenseTest = true
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p1.png
new file mode 100644
index 0000000..910fa66
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p2.png
new file mode 100644
index 0000000..f96ebdd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p3.png
new file mode 100644
index 0000000..db826ec
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p4.png
new file mode 100644
index 0000000..83f67af
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p1.png
new file mode 100644
index 0000000..3729b14
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p2.png
new file mode 100644
index 0000000..5ada518
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p3.png
new file mode 100644
index 0000000..b4be0ce
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p4.png
new file mode 100644
index 0000000..7ee6ff9
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p1.png
new file mode 100644
index 0000000..a745d86
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p2.png
new file mode 100644
index 0000000..7c9443a
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p3.png
new file mode 100644
index 0000000..dfe1023
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p4.png
new file mode 100644
index 0000000..a239944
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p1.png
new file mode 100644
index 0000000..81fa62a
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p2.png
new file mode 100644
index 0000000..fe8d072
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p3.png
new file mode 100644
index 0000000..7205551
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p4.png
new file mode 100644
index 0000000..ccce3c7
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/bat_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p1.png
new file mode 100644
index 0000000..9d76184
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p2.png
new file mode 100644
index 0000000..28734f6
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p3.png
new file mode 100644
index 0000000..78d24b7
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p4.png
new file mode 100644
index 0000000..a437f39
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p1.png
new file mode 100644
index 0000000..025b3ec
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p2.png
new file mode 100644
index 0000000..b352126
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p3.png
new file mode 100644
index 0000000..ece2577
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p4.png
new file mode 100644
index 0000000..09d0639
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p1.png
new file mode 100644
index 0000000..8dc4eb4
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p2.png
new file mode 100644
index 0000000..323e1ea
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p3.png
new file mode 100644
index 0000000..5140d62
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p4.png
new file mode 100644
index 0000000..b882fef
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p1.png
new file mode 100644
index 0000000..f29ba2d
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p2.png
new file mode 100644
index 0000000..3674c2d
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p3.png
new file mode 100644
index 0000000..ff108bd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p4.png
new file mode 100644
index 0000000..5200e91
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/frogman_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p1.png
new file mode 100644
index 0000000..68c73b3
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p2.png
new file mode 100644
index 0000000..dde2ab5
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p3.png
new file mode 100644
index 0000000..e6fa9c5
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p4.png
new file mode 100644
index 0000000..cf352b4
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p1.png
new file mode 100644
index 0000000..7a53592
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p2.png
new file mode 100644
index 0000000..bc2ea98
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p3.png
new file mode 100644
index 0000000..d9462e1
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p4.png
new file mode 100644
index 0000000..1ee1fba
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p1.png
new file mode 100644
index 0000000..8bac93e
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p2.png
new file mode 100644
index 0000000..28deee2
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p3.png
new file mode 100644
index 0000000..bd3b0af
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p4.png
new file mode 100644
index 0000000..39e034a
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p1.png
new file mode 100644
index 0000000..17b6279
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p2.png
new file mode 100644
index 0000000..372e316
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p3.png
new file mode 100644
index 0000000..7308835
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p4.png
new file mode 100644
index 0000000..3a43637
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/kraken_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p1.png
new file mode 100644
index 0000000..061e31c
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p2.png
new file mode 100644
index 0000000..56c4dbe
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p3.png
new file mode 100644
index 0000000..7aae9df
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p4.png
new file mode 100644
index 0000000..6d2811e
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p1.png
new file mode 100644
index 0000000..5763550
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p2.png
new file mode 100644
index 0000000..764e08a
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p3.png
new file mode 100644
index 0000000..f58ab19
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p4.png
new file mode 100644
index 0000000..b0c84e3
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p1.png
new file mode 100644
index 0000000..d005189
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p2.png
new file mode 100644
index 0000000..4f94fb2
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p3.png
new file mode 100644
index 0000000..44c15f7
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p4.png
new file mode 100644
index 0000000..82c6de2
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p1.png
new file mode 100644
index 0000000..4053e27
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p2.png
new file mode 100644
index 0000000..5bf4b7f
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p3.png
new file mode 100644
index 0000000..f175ad1
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p4.png
new file mode 100644
index 0000000..eb517fe
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/mushroom_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p1.png
new file mode 100644
index 0000000..85247e5
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p2.png
new file mode 100644
index 0000000..12bc947
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p3.png
new file mode 100644
index 0000000..817e6b7
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p4.png
new file mode 100644
index 0000000..1958350
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p1.png
new file mode 100644
index 0000000..771484c
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p2.png
new file mode 100644
index 0000000..9f60d59
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p3.png
new file mode 100644
index 0000000..ebd508d
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p4.png
new file mode 100644
index 0000000..ce57cad
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p1.png
new file mode 100644
index 0000000..1d0a1bd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p2.png
new file mode 100644
index 0000000..24a7837
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p3.png
new file mode 100644
index 0000000..86f2043
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p4.png
new file mode 100644
index 0000000..c21ba61
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p1.png
new file mode 100644
index 0000000..5a22e48
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p2.png
new file mode 100644
index 0000000..53d41ab
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p3.png
new file mode 100644
index 0000000..9181dc5
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p4.png
new file mode 100644
index 0000000..a05bc82
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/treant_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p1.png
new file mode 100644
index 0000000..5b61ccd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p2.png
new file mode 100644
index 0000000..070fab5
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p3.png
new file mode 100644
index 0000000..342f358
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p4.png
new file mode 100644
index 0000000..32588fe
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p1.png
new file mode 100644
index 0000000..c017c5b
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p2.png
new file mode 100644
index 0000000..dab14e4
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p3.png
new file mode 100644
index 0000000..1f08bfd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p4.png
new file mode 100644
index 0000000..886afc4
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p1.png
new file mode 100644
index 0000000..4d5293c
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p2.png
new file mode 100644
index 0000000..758cea5
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p3.png
new file mode 100644
index 0000000..6b4fbf4
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p4.png
new file mode 100644
index 0000000..1918698
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p1.png
new file mode 100644
index 0000000..48b6370
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p2.png
new file mode 100644
index 0000000..82d41bd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p3.png
new file mode 100644
index 0000000..d5acf4c
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p4.png
new file mode 100644
index 0000000..7ccc4bd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/troll_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p1.png
new file mode 100644
index 0000000..ce5ae54
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p2.png
new file mode 100644
index 0000000..063ff2d
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p3.png
new file mode 100644
index 0000000..cf68a57
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p4.png
new file mode 100644
index 0000000..c97bc9e
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p1.png
new file mode 100644
index 0000000..51366b2
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p2.png
new file mode 100644
index 0000000..44afde9
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p3.png
new file mode 100644
index 0000000..c3d623b
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p4.png
new file mode 100644
index 0000000..0ddfeed
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p1.png
new file mode 100644
index 0000000..0bb0c3f
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p2.png
new file mode 100644
index 0000000..c29255e
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p3.png
new file mode 100644
index 0000000..f87f03b
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p4.png
new file mode 100644
index 0000000..e1409cf
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p1.png
new file mode 100644
index 0000000..e5f4ae6
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p2.png
new file mode 100644
index 0000000..963e51c
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p3.png
new file mode 100644
index 0000000..1e7faab
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p4.png
new file mode 100644
index 0000000..59884cc
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/turtle_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p1.png
new file mode 100644
index 0000000..2b1d994
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p2.png
new file mode 100644
index 0000000..179a20d
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p3.png
new file mode 100644
index 0000000..2e24687
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p4.png
new file mode 100644
index 0000000..2fcf487
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_attack_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p1.png
new file mode 100644
index 0000000..d1ee39c
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p2.png
new file mode 100644
index 0000000..cb074ef
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p3.png
new file mode 100644
index 0000000..70fc2fd
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p4.png
new file mode 100644
index 0000000..951d176
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_defend_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p1.png
new file mode 100644
index 0000000..95e1071
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p2.png
new file mode 100644
index 0000000..b28ad31
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p3.png
new file mode 100644
index 0000000..6add81b
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p4.png
new file mode 100644
index 0000000..0b2a5f1
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_hurt_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p1.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p1.png
new file mode 100644
index 0000000..9be8ea9
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p1.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p2.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p2.png
new file mode 100644
index 0000000..c063576
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p2.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p3.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p3.png
new file mode 100644
index 0000000..c7cc693
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p3.png differ
diff --git a/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p4.png b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p4.png
new file mode 100644
index 0000000..dfae071
Binary files /dev/null and b/src/CiselnaVyprava/wwwroot/assets/images/enemies/wolf_idle_p4.png differ
diff --git a/src/CiselnaVyprava/wwwroot/css/app.css b/src/CiselnaVyprava/wwwroot/css/app.css
index 78e5517..75e22dd 100644
--- a/src/CiselnaVyprava/wwwroot/css/app.css
+++ b/src/CiselnaVyprava/wwwroot/css/app.css
@@ -1,5 +1,5 @@
:root {
- --font-main: "Fredoka", "Nunito", cursive, sans-serif;
+ --font-main: "Comfortaa", "Nunito", cursive, sans-serif;
--color-parchment: #fcf6e8;
--color-parchment-border: #8b5a2b;
--color-gold: #f39c12;
@@ -1512,18 +1512,42 @@ html, body {
flex: 0 0 auto;
}
-.equation-box { margin-bottom: clamp(4px, 0.8vh, 8px); }
+.equation-box {
+ margin-bottom: clamp(4px, 0.8vh, 8px);
+ min-height: clamp(48px, 7.5vh, 62px);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.equation-title {
+ font-size: clamp(0.72rem, 1.4vh, 0.85rem);
+ font-weight: 700;
+ margin-bottom: 2px;
+}
+
.equation-text {
- font-size: clamp(1.4rem, 3.6vh, 2.2rem);
+ font-size: clamp(1.4rem, 3.4vh, 2.1rem);
color: #2c3e50;
- margin: 2px 0;
+ margin: 0;
letter-spacing: 1.5px;
white-space: pre-line;
- line-height: 1.25;
+ line-height: 1.2;
+}
+
+/* INPUT ACTION ZONE - STABLE HEIGHT FOR BOTH KEYPAD AND CHOICES */
+.input-action-zone {
+ min-height: clamp(185px, 28vh, 220px);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
}
/* KEYPAD */
.keypad-container {
+ width: 100%;
max-width: 260px;
margin: 0 auto;
}
@@ -1564,29 +1588,45 @@ html, body {
.key-btn.action-key.backspace { background: #fadbd8; border-color: #e74c3c; box-shadow: 0 3px 0 #cb4335; }
.key-btn.action-key.submit { background: #d4efdf; border-color: #27ae60; box-shadow: 0 3px 0 #1e8449; }
-/* CHOICES */
+/* CHOICE SELECTOR (DEFENSE & MULTIPLE CHOICE) */
+.choice-selector-container {
+ width: 100%;
+ max-width: 440px;
+ margin: 0 auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100%;
+ min-height: clamp(185px, 28vh, 220px);
+}
+
.choices-grid {
display: grid;
- grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
- gap: 10px;
- max-width: 440px;
+ grid-template-columns: repeat(2, 1fr);
+ gap: clamp(10px, 1.6vh, 14px);
+ width: 100%;
margin: 0 auto;
}
.choice-btn {
background: white;
border: 3px solid var(--color-gold);
- border-radius: 12px;
- padding: clamp(8px, 1.8vh, 14px) 0;
- font-size: clamp(1.2rem, 2.8vh, 1.6rem);
+ border-radius: 14px;
+ padding: clamp(12px, 2.4vh, 20px) clamp(8px, 1.5vw, 16px);
+ font-size: clamp(1.25rem, 2.8vh, 1.65rem);
font-weight: 700;
font-family: var(--font-main);
cursor: pointer;
- box-shadow: 0 4px 0 var(--color-gold-dark);
+ box-shadow: 0 5px 0 var(--color-gold-dark);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: clamp(52px, 8.5vh, 68px);
+ transition: transform 0.1s ease, background-color 0.15s ease;
}
.choice-btn:hover { background: #fef9e7; }
-.choice-btn:active { transform: translateY(2px); box-shadow: 0 2px 0 var(--color-gold-dark); }
+.choice-btn:active { transform: translateY(3px); box-shadow: 0 2px 0 var(--color-gold-dark); }
/* VICTORY / DEFEAT CARDS */
/* ========================================================
@@ -1837,7 +1877,7 @@ html, body {
}
/* ========================================================
- FAIRYTALE LEVEL TRANSITION SCREEN (CLOUDS & MARCHING)
+ FAIRYTALE LEVEL TRANSITION SCREEN (INTERACTIVE FACE-OFF)
======================================================== */
.transition-screen-overlay {
position: fixed;
@@ -1845,68 +1885,207 @@ html, body {
left: 0;
width: 100vw;
height: 100vh;
- background: rgba(26, 37, 47, 0.85);
+ background: rgba(26, 37, 47, 0.88);
backdrop-filter: blur(8px);
display: flex;
justify-content: center;
align-items: center;
z-index: 10000;
+ padding: clamp(8px, 1.5vh, 16px);
}
.transition-parchment-box {
background: var(--color-parchment);
border: 4px solid var(--color-gold);
border-radius: 20px;
- padding: clamp(20px, 4vh, 32px) clamp(24px, 4vw, 44px);
+ padding: clamp(12px, 2.5vh, 22px) clamp(16px, 3vw, 28px);
text-align: center;
- box-shadow: 0 12px 36px rgba(0,0,0,0.5);
- max-width: 440px;
- width: 90%;
+ box-shadow: 0 14px 40px rgba(0,0,0,0.6);
+ max-width: 560px;
+ width: 95%;
+ max-height: 94vh;
display: flex;
flex-direction: column;
align-items: center;
+ gap: clamp(8px, 1.5vh, 14px);
+ overflow-y: auto;
}
-.transition-hero-marching {
- width: clamp(80px, 16vh, 120px);
- height: clamp(80px, 16vh, 120px);
+.transition-header {
display: flex;
- justify-content: center;
+ flex-direction: column;
align-items: center;
- margin-bottom: 6px;
- position: relative;
+ gap: 4px;
}
-.marching-hero-img {
- max-height: 100%;
- max-width: 100%;
- object-fit: contain;
- filter: drop-shadow(0 6px 12px rgba(0,0,0,0.3));
+.transition-badge {
+ background: var(--color-gold);
+ color: white;
+ font-size: clamp(0.7rem, 1.3vh, 0.8rem);
+ font-weight: 800;
+ padding: 2px 10px;
+ border-radius: 12px;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.15);
}
.transition-title {
- font-size: clamp(1.2rem, 2.6vh, 1.5rem);
+ font-size: clamp(1.2rem, 2.6vh, 1.6rem);
color: #8b5a2b;
- margin: 4px 0 2px 0;
+ margin: 0;
font-weight: 800;
+ line-height: 1.2;
}
-.transition-target {
- font-size: clamp(0.9rem, 1.8vh, 1.05rem);
- color: #2c3e50;
- font-weight: 700;
- margin: 2px 0 10px 0;
-}
-
-.transition-sparkles {
+.transition-faceoff-stage {
display: flex;
- gap: 12px;
- font-size: 1.4rem;
+ align-items: center;
+ justify-content: center;
+ gap: clamp(8px, 2vw, 16px);
+ width: 100%;
}
-.sparkle { animation: bounce 0.6s infinite alternate; }
-.sparkle:nth-child(2) { animation-delay: 0.2s; }
-.sparkle:nth-child(3) { animation-delay: 0.4s; }
+.faceoff-card {
+ flex: 1 1 0;
+ background: white;
+ border: 3px solid var(--color-parchment-border);
+ border-radius: 14px;
+ padding: clamp(8px, 1.5vh, 12px);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ gap: 4px;
+ box-shadow: 0 4px 10px rgba(0,0,0,0.06);
+}
+
+.faceoff-card.hero-side {
+ border-color: #27ae60;
+}
+
+.faceoff-card.enemy-side {
+ border-color: #e74c3c;
+}
+
+.faceoff-avatar-pedestal {
+ width: 100%;
+ height: clamp(80px, 15vh, 115px);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background: radial-gradient(circle, rgba(243, 156, 18, 0.15) 0%, rgba(255, 255, 255, 0) 70%);
+}
+
+.faceoff-avatar-img {
+ max-height: 100%;
+ max-width: 100%;
+ object-fit: contain;
+ filter: drop-shadow(0 6px 10px rgba(0,0,0,0.25));
+}
+
+.faceoff-name {
+ font-weight: 800;
+ font-size: clamp(0.85rem, 1.8vh, 1.05rem);
+ color: #2c3e50;
+ line-height: 1.1;
+}
+
+.faceoff-role {
+ font-size: clamp(0.68rem, 1.3vh, 0.78rem);
+ color: #27ae60;
+ font-weight: 700;
+}
+
+.faceoff-hp-badge {
+ background: #fadbd8;
+ color: #c0392b;
+ font-size: clamp(0.7rem, 1.3vh, 0.8rem);
+ font-weight: 800;
+ padding: 2px 8px;
+ border-radius: 6px;
+ border: 1px solid #f5b7b1;
+}
+
+.faceoff-vs-pill {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background: #34495e;
+ color: #f1c40f;
+ border: 3px solid var(--color-gold);
+ border-radius: 50%;
+ width: clamp(40px, 7vh, 52px);
+ height: clamp(40px, 7vh, 52px);
+ box-shadow: 0 4px 10px rgba(0,0,0,0.3);
+ flex: 0 0 auto;
+ animation: vsPulse 1.5s infinite ease-in-out alternate;
+}
+
+.vs-text {
+ font-weight: 900;
+ font-size: clamp(0.75rem, 1.5vh, 0.9rem);
+ line-height: 1;
+}
+
+.vs-swords {
+ font-size: clamp(0.65rem, 1.2vh, 0.8rem);
+ line-height: 1;
+}
+
+@keyframes vsPulse {
+ 0% { transform: scale(0.95); }
+ 100% { transform: scale(1.08); box-shadow: 0 0 14px rgba(243, 156, 18, 0.6); }
+}
+
+.transition-details-card {
+ background: #fdfefe;
+ border: 1.5px dashed var(--color-gold);
+ border-radius: 10px;
+ padding: clamp(6px, 1.2vh, 10px) 14px;
+ width: 100%;
+}
+
+.transition-math-info {
+ margin: 0;
+ font-size: clamp(0.78rem, 1.5vh, 0.9rem);
+ color: #34495e;
+ line-height: 1.3;
+}
+
+.transition-action-buttons {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ width: 100%;
+ margin-top: 2px;
+}
+
+.btn-transition-start {
+ width: 100%;
+ background: linear-gradient(180deg, #2ecc71 0%, #27ae60 100%);
+ color: white;
+ font-size: clamp(0.95rem, 2.2vh, 1.2rem);
+ font-weight: 800;
+ padding: clamp(8px, 1.8vh, 14px);
+ border: none;
+ border-radius: 12px;
+ cursor: pointer;
+ box-shadow: 0 4px 0 #1e8449, 0 6px 14px rgba(39, 174, 96, 0.4);
+ transition: all 0.15s ease;
+}
+
+.btn-transition-start:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 6px 0 #1e8449, 0 8px 18px rgba(39, 174, 96, 0.5);
+ background: linear-gradient(180deg, #32d67a 0%, #2ecc71 100%);
+}
+
+.btn-transition-start:active {
+ transform: translateY(2px);
+ box-shadow: 0 2px 0 #1e8449;
+}
/* ANIMATION KEYFRAMES */
@keyframes victoryModalPop {
@@ -2046,3 +2225,217 @@ html, body {
#blazor-error-ui .reload { color: #1e8449; margin-left: 1rem; text-decoration: underline; }
#blazor-error-ui .dismiss { cursor: pointer; position: absolute; right: 0.75rem; top: 0.5rem; }
+
+/* ========================================================
+ EDUCATIONAL PAUSE & EXPLANATION MODAL (ON INCORRECT ANSWER)
+ ======================================================== */
+.explanation-modal-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 100vh;
+ background: rgba(15, 23, 42, 0.78);
+ backdrop-filter: blur(8px);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 10000;
+ padding: clamp(10px, 2.5vh, 24px);
+}
+
+.explanation-parchment-box {
+ background: linear-gradient(180deg, #fffdf8 0%, #f7edd7 100%);
+ border: 4px solid var(--color-parchment-border);
+ border-radius: 22px;
+ box-shadow: 0 16px 40px rgba(0, 0, 0, 0.55), 0 0 0 6px rgba(212, 163, 89, 0.35);
+ padding: clamp(14px, 2.2vh, 22px) clamp(16px, 2.5vw, 28px);
+ width: 100%;
+ max-width: 580px;
+ max-height: 94vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ position: relative;
+ overflow-y: auto;
+ scrollbar-width: thin;
+}
+
+.explanation-header {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 4px;
+ margin-bottom: clamp(8px, 1.4vh, 14px);
+}
+
+.explanation-owl-icon {
+ font-size: clamp(2rem, 4.2vh, 2.8rem);
+ filter: drop-shadow(0 3px 6px rgba(0,0,0,0.25));
+ animation: bounce 1.8s infinite ease-in-out alternate;
+}
+
+.explanation-badge {
+ background: #795548;
+ color: #fef5e7;
+ font-size: clamp(0.7rem, 1.4vh, 0.82rem);
+ font-weight: 800;
+ letter-spacing: 1px;
+ text-transform: uppercase;
+ padding: 3px 12px;
+ border-radius: 12px;
+ border: 1px solid #5d4037;
+}
+
+.explanation-title {
+ font-size: clamp(1.25rem, 2.8vh, 1.65rem);
+ color: #8b3a2b;
+ margin: 2px 0 0 0;
+ font-weight: 800;
+ text-shadow: 1px 1px 0 rgba(255,255,255,0.8);
+}
+
+.explanation-body {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: clamp(8px, 1.5vh, 14px);
+ margin-bottom: clamp(10px, 1.8vh, 16px);
+}
+
+.explanation-equation-card {
+ background: #ffffff;
+ border: 2px solid #e2d4be;
+ border-radius: 14px;
+ padding: clamp(8px, 1.4vh, 12px) clamp(10px, 1.8vw, 16px);
+ box-shadow: 0 4px 10px rgba(0,0,0,0.06);
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.equation-question-row {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+}
+
+.equation-question-row .equation-label {
+ font-weight: 700;
+ color: #6d4c41;
+ font-size: clamp(0.9rem, 1.8vh, 1.05rem);
+}
+
+.explanation-equation-card .equation-text {
+ font-size: clamp(1.15rem, 2.5vh, 1.45rem);
+ font-weight: 800;
+ color: #2c3e50;
+ margin: 0;
+}
+
+.equation-answers-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 10px;
+}
+
+.answer-box {
+ border-radius: 10px;
+ padding: clamp(6px, 1.2vh, 10px);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 2px;
+}
+
+.answer-box.user-answer {
+ background: #fde8e8;
+ border: 2px solid #f87171;
+ color: #991b1b;
+}
+
+.answer-box.correct-answer {
+ background: #e6f9ed;
+ border: 2px solid #34d399;
+ color: #065f46;
+}
+
+.answer-box .ans-label {
+ font-size: clamp(0.7rem, 1.3vh, 0.8rem);
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ opacity: 0.9;
+}
+
+.answer-box .ans-val {
+ font-size: clamp(1rem, 2.2vh, 1.3rem);
+ font-weight: 800;
+}
+
+.explanation-step-card {
+ background: #fffdf5;
+ border: 2px dashed #d4a359;
+ border-radius: 14px;
+ padding: clamp(8px, 1.6vh, 14px) clamp(10px, 2vw, 16px);
+ text-align: left;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.step-card-header {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ color: #795548;
+ font-size: clamp(0.85rem, 1.7vh, 0.95rem);
+}
+
+.step-explanation-text {
+ margin: 0;
+ color: #2d3748;
+ font-size: clamp(0.88rem, 1.8vh, 1.05rem);
+ line-height: 1.45;
+ font-weight: 600;
+ background: rgba(254, 243, 199, 0.45);
+ padding: clamp(6px, 1.2vh, 10px) clamp(8px, 1.5vw, 12px);
+ border-radius: 8px;
+ border-left: 4px solid #f59e0b;
+}
+
+.explanation-actions {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+}
+
+.btn-explanation-continue {
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
+ color: #ffffff;
+ border: 3px solid #047857;
+ border-radius: 16px;
+ font-size: clamp(0.95rem, 2.2vh, 1.2rem);
+ font-weight: 800;
+ padding: clamp(10px, 1.8vh, 14px) clamp(18px, 3vw, 28px);
+ cursor: pointer;
+ box-shadow: 0 6px 0 #065f46, 0 8px 16px rgba(16, 185, 129, 0.35);
+ transition: all 0.15s ease;
+ width: 100%;
+ max-width: 420px;
+}
+
+.btn-explanation-continue:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 8px 0 #065f46, 0 12px 20px rgba(16, 185, 129, 0.45);
+ background: linear-gradient(135deg, #34d399 0%, #10b981 100%);
+}
+
+.btn-explanation-continue:active {
+ transform: translateY(3px);
+ box-shadow: 0 2px 0 #065f46;
+}
+
diff --git a/src/CiselnaVyprava/wwwroot/data/game-config.json b/src/CiselnaVyprava/wwwroot/data/game-config.json
index 0a79a25..37a8440 100644
--- a/src/CiselnaVyprava/wwwroot/data/game-config.json
+++ b/src/CiselnaVyprava/wwwroot/data/game-config.json
@@ -1,10 +1,10 @@
{
"battle": {
- "criticalTimeSeconds": 3.0,
- "standardTimeSeconds": 6.0,
+ "criticalTimeSeconds": 4.0,
+ "standardTimeSeconds": 10.0,
"criticalDamageMultiplier": 1.5,
"weakDamageMultiplier": 0.5,
- "defenseTestDurationSeconds": 5.0,
+ "defenseTestDurationSeconds": 16.0,
"defaultPlayerHp": 5,
"comboStreakBonusDmg": 1
},
diff --git a/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json b/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json
index 65f948b..5bfec50 100644
--- a/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json
+++ b/src/CiselnaVyprava/wwwroot/data/worlds-grade1.json
@@ -10,26 +10,26 @@
"id": "1-1-1",
"levelNumber": 1,
"name": "Lúčny Škriatok",
- "enemy": { "id": "meadow_goblin", "name": "Lúčny Škriatok", "maxHp": 25, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" },
+ "enemy": { "id": "meadow_goblin", "name": "Lúčny Škriatok", "maxHp": 32, "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
+ "requiredCorrectAnswers": 4
},
{
"id": "1-1-2",
"levelNumber": 2,
- "name": "Zvedavý Slizík",
- "enemy": { "id": "curious_slime", "name": "Zvedavý Slizík", "maxHp": 32, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" },
+ "name": "Kvetinový Slizík",
+ "enemy": { "id": "flower_slime", "name": "Kvetinový Slizík", "maxHp": 42, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" },
"mathConfig": { "operations": ["+", "-"], "minA": 2, "maxA": 10, "minB": 1, "maxB": 5, "maxSum": 10, "allowCarryOver": false, "inputType": "DirectInput" },
- "requiredCorrectAnswers": 4
+ "requiredCorrectAnswers": 5
},
{
"id": "1-1-3",
"levelNumber": 3,
"name": "Lesný Medveď (Boss)",
"isBoss": true,
- "enemy": { "id": "gentle_bear_boss", "name": "Lesný Medveď", "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/bear" },
+ "enemy": { "id": "gentle_bear_boss", "name": "Lesný Medveď", "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/bear" },
"mathConfig": { "operations": ["+", "-"], "minA": 3, "maxA": 10, "minB": 1, "maxB": 5, "maxSum": 10, "allowCarryOver": false, "inputType": "DirectInput" },
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
}
]
},
@@ -43,18 +43,18 @@
{
"id": "1-2-1",
"levelNumber": 1,
- "name": "Lesný Škriatok",
- "enemy": { "id": "forest_gnome", "name": "Lesný Škriatok", "maxHp": 38, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" },
+ "name": "Hubový Mužík",
+ "enemy": { "id": "mushroom_sprite_g1", "name": "Hubový Mužík", "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/mushroom" },
"mathConfig": { "operations": ["+", "-"], "minA": 10, "maxA": 19, "minB": 1, "maxB": 5, "maxSum": 20, "allowCarryOver": false, "inputType": "DirectInput" },
- "requiredCorrectAnswers": 4
+ "requiredCorrectAnswers": 5
},
{
"id": "1-2-2",
"levelNumber": 2,
- "name": "Kráľovský Sliz",
- "enemy": { "id": "royal_slime_g1", "name": "Kráľovský Sliz", "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/slime" },
+ "name": "Šibalský Vĺčik",
+ "enemy": { "id": "forest_wolf_g1", "name": "Šibalský Vĺčik", "maxHp": 60, "attackPower": 1, "assetFolder": "assets/images/enemies/wolf" },
"mathConfig": { "operations": ["+", "-"], "minA": 11, "maxA": 19, "minB": 1, "maxB": 8, "maxSum": 20, "allowCarryOver": false, "inputType": "DirectInput" },
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
}
]
},
@@ -68,19 +68,19 @@
{
"id": "1-3-1",
"levelNumber": 1,
- "name": "Vodný Škriatok",
- "enemy": { "id": "water_goblin_g1", "name": "Vodný Škriatok", "maxHp": 38, "attackPower": 1, "assetFolder": "assets/images/enemies/goblin" },
+ "name": "Vodný Žabiak",
+ "enemy": { "id": "water_frog_g1", "name": "Vodný Žabiak", "maxHp": 50, "attackPower": 1, "assetFolder": "assets/images/enemies/frogman" },
"mathConfig": { "operations": ["<", ">", "="], "minA": 1, "maxA": 20, "minB": 1, "maxB": 20, "inputType": "MultipleChoice" },
- "requiredCorrectAnswers": 4
+ "requiredCorrectAnswers": 5
},
{
"id": "1-3-2",
"levelNumber": 2,
- "name": "Jazerný Golem (Boss)",
+ "name": "Pancierová Korytnačka (Boss)",
"isBoss": true,
- "enemy": { "id": "lake_golem_boss_g1", "name": "Jazerný Golem", "maxHp": 65, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" },
+ "enemy": { "id": "lake_turtle_boss_g1", "name": "Pancierová Korytnačka", "maxHp": 85, "attackPower": 1, "assetFolder": "assets/images/enemies/turtle" },
"mathConfig": { "operations": ["<", ">", "="], "minA": 5, "maxA": 20, "minB": 5, "maxB": 20, "inputType": "MultipleChoice" },
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
}
]
},
@@ -94,10 +94,10 @@
{
"id": "1-4-1",
"levelNumber": 1,
- "name": "Kamenný Golem",
- "enemy": { "id": "stone_watcher_g1", "name": "Kamenný Golem", "maxHp": 45, "attackPower": 1, "assetFolder": "assets/images/enemies/golem" },
+ "name": "Jaskynný Netopierik",
+ "enemy": { "id": "crystal_bat_g1", "name": "Jaskynný Netopierik", "maxHp": 60, "attackPower": 1, "assetFolder": "assets/images/enemies/bat" },
"mathConfig": { "operations": ["+", "-"], "minA": 10, "maxA": 50, "minB": 10, "maxB": 40, "maxSum": 100, "allowCarryOver": false, "inputType": "DirectInput" },
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
}
]
},
@@ -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": 75, "attackPower": 1, "assetFolder": "assets/images/enemies/dragon" },
+ "enemy": { "id": "king_dragon_boss", "name": "Kráľovský Drak", "maxHp": 100, "attackPower": 1, "assetFolder": "assets/images/enemies/dragon" },
"mathConfig": { "operations": ["+", "-"], "minA": 5, "maxA": 20, "minB": 1, "maxB": 10, "maxSum": 20, "allowCarryOver": false, "inputType": "DirectInput" },
- "requiredCorrectAnswers": 7
+ "requiredCorrectAnswers": 9
}
]
}
diff --git a/src/CiselnaVyprava/wwwroot/data/worlds-grade2.json b/src/CiselnaVyprava/wwwroot/data/worlds-grade2.json
index 4b13599..5b7f175 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": 38,
+ "maxHp": 50,
"attackPower": 1,
"assetFolder": "assets/images/enemies/goblin"
},
@@ -27,16 +27,16 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 4
+ "requiredCorrectAnswers": 5
},
{
"id": "2-1-2",
"levelNumber": 2,
- "name": "Lesný Slizík",
+ "name": "Kvetinový Slizík",
"enemy": {
- "id": "forest_slime",
- "name": "Lesný Slizík",
- "maxHp": 50,
+ "id": "flower_slime_g2",
+ "name": "Kvetinový Slizík",
+ "maxHp": 65,
"attackPower": 1,
"assetFolder": "assets/images/enemies/slime"
},
@@ -50,19 +50,19 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "2-1-3",
"levelNumber": 3,
- "name": "Golem Čísel (Boss)",
+ "name": "Lesný Medveď (Boss)",
"isBoss": true,
"enemy": {
- "id": "stone_golem_boss",
- "name": "Golem Čísel",
- "maxHp": 75,
+ "id": "meadow_bear_boss",
+ "name": "Lesný Medveď",
+ "maxHp": 100,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/golem"
+ "assetFolder": "assets/images/enemies/bear"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -74,7 +74,7 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
}
]
},
@@ -88,13 +88,13 @@
{
"id": "2-2-1",
"levelNumber": 1,
- "name": "Lesný Goblin",
+ "name": "Hubový Mužík",
"enemy": {
- "id": "forest_goblin_comp",
- "name": "Lesný Goblin",
- "maxHp": 45,
+ "id": "mushroom_comp_g2",
+ "name": "Hubový Mužík",
+ "maxHp": 60,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/goblin"
+ "assetFolder": "assets/images/enemies/mushroom"
},
"mathConfig": {
"operations": ["<", ">", "="],
@@ -104,18 +104,18 @@
"maxB": 50,
"inputType": "MultipleChoice"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "2-2-2",
"levelNumber": 2,
- "name": "Slizký Strážca",
+ "name": "Šibalský Vĺčik",
"enemy": {
- "id": "slime_comp_watcher",
- "name": "Slizký Strážca",
- "maxHp": 50,
+ "id": "forest_wolf_comp_g2",
+ "name": "Šibalský Vĺčik",
+ "maxHp": 65,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/slime"
+ "assetFolder": "assets/images/enemies/wolf"
},
"mathConfig": {
"operations": ["<", ">", "="],
@@ -125,19 +125,19 @@
"maxB": 100,
"inputType": "MultipleChoice"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "2-2-3",
"levelNumber": 3,
- "name": "Lesný Medveď (Boss)",
+ "name": "Stromový Ent (Boss)",
"isBoss": true,
"enemy": {
- "id": "forest_bear_comp_boss",
- "name": "Lesný Medveď",
- "maxHp": 70,
+ "id": "ancient_treant_boss_g2",
+ "name": "Stromový Ent",
+ "maxHp": 90,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/bear"
+ "assetFolder": "assets/images/enemies/treant"
},
"mathConfig": {
"operations": ["<", ">", "="],
@@ -147,7 +147,7 @@
"maxB": 100,
"inputType": "MultipleChoice"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
}
]
},
@@ -161,13 +161,13 @@
{
"id": "2-3-1",
"levelNumber": 1,
- "name": "Riečny Goblin",
+ "name": "Vodný Žabiak",
"enemy": {
- "id": "river_goblin_easy",
- "name": "Riečny Goblin",
- "maxHp": 45,
+ "id": "river_frog_g2",
+ "name": "Vodný Žabiak",
+ "maxHp": 60,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/goblin"
+ "assetFolder": "assets/images/enemies/frogman"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -179,18 +179,18 @@
"allowCarryOver": false,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "2-3-2",
"levelNumber": 2,
- "name": "Kvapkový Sliz",
+ "name": "Pancierová Korytnačka",
"enemy": {
- "id": "droplet_slime",
- "name": "Kvapkový Sliz",
- "maxHp": 55,
+ "id": "river_turtle_g2",
+ "name": "Pancierová Korytnačka",
+ "maxHp": 70,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/slime"
+ "assetFolder": "assets/images/enemies/turtle"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -202,19 +202,19 @@
"allowCarryOver": false,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 7
},
{
"id": "2-3-3",
"levelNumber": 3,
- "name": "Balvanový Netvor (Boss)",
+ "name": "Jazerný Kraken (Boss)",
"isBoss": true,
"enemy": {
- "id": "river_golem_boss",
- "name": "Balvanový Netvor",
- "maxHp": 80,
+ "id": "lake_kraken_boss_g2",
+ "name": "Jazerný Kraken",
+ "maxHp": 105,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/golem"
+ "assetFolder": "assets/images/enemies/kraken"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -226,7 +226,7 @@
"allowCarryOver": false,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 7
+ "requiredCorrectAnswers": 9
}
]
},
@@ -240,13 +240,13 @@
{
"id": "2-4-1",
"levelNumber": 1,
- "name": "Horský Goblin",
+ "name": "Jaskynný Netopierik",
"enemy": {
- "id": "mountain_goblin",
- "name": "Horský Goblin",
- "maxHp": 50,
+ "id": "cave_bat_g2",
+ "name": "Jaskynný Netopierik",
+ "maxHp": 65,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/goblin"
+ "assetFolder": "assets/images/enemies/bat"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -258,18 +258,18 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "2-4-2",
"levelNumber": 2,
- "name": "Magický Horský Sliz",
+ "name": "Horský Snežný Trol",
"enemy": {
- "id": "mountain_magic_slime",
- "name": "Magický Horský Sliz",
- "maxHp": 65,
+ "id": "mountain_troll_g2",
+ "name": "Horský Snežný Trol",
+ "maxHp": 85,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/slime"
+ "assetFolder": "assets/images/enemies/troll"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -281,19 +281,19 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
},
{
"id": "2-4-3",
"levelNumber": 3,
- "name": "Horský Medveď (Boss)",
+ "name": "Kamenný Golem (Boss)",
"isBoss": true,
"enemy": {
- "id": "mountain_bear_boss",
- "name": "Horský Medveď",
- "maxHp": 90,
+ "id": "mountain_golem_boss_g2",
+ "name": "Kamenný Golem",
+ "maxHp": 120,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/bear"
+ "assetFolder": "assets/images/enemies/golem"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -305,7 +305,7 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 7
+ "requiredCorrectAnswers": 10
}
]
},
@@ -323,7 +323,7 @@
"enemy": {
"id": "castle_guard_goblin",
"name": "Hradný Strážca",
- "maxHp": 50,
+ "maxHp": 65,
"attackPower": 1,
"assetFolder": "assets/images/enemies/goblin"
},
@@ -334,16 +334,16 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "2-5-2",
"levelNumber": 2,
- "name": "Kráľovský Sliz",
+ "name": "Kráľovský Zlatý Sliz",
"enemy": {
"id": "royal_castle_slime",
- "name": "Kráľovský Sliz",
- "maxHp": 65,
+ "name": "Kráľovský Zlatý Sliz",
+ "maxHp": 85,
"attackPower": 1,
"assetFolder": "assets/images/enemies/slime"
},
@@ -354,7 +354,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
},
{
"id": "2-5-3",
@@ -364,7 +364,7 @@
"enemy": {
"id": "castle_dragon_boss",
"name": "Hradný Drak",
- "maxHp": 95,
+ "maxHp": 125,
"attackPower": 1,
"assetFolder": "assets/images/enemies/dragon"
},
@@ -375,7 +375,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 8
+ "requiredCorrectAnswers": 11
}
]
}
diff --git a/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json b/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json
index d89f50d..de25b57 100644
--- a/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json
+++ b/src/CiselnaVyprava/wwwroot/data/worlds-grade3.json
@@ -9,13 +9,13 @@
{
"id": "3-1-1",
"levelNumber": 1,
- "name": "Riečny Škriatok",
+ "name": "Vodný Žabiak",
"enemy": {
- "id": "river_sprite_goblin",
- "name": "Riečny Škriatok",
- "maxHp": 45,
+ "id": "river_sprite_frogman",
+ "name": "Vodný Žabiak",
+ "maxHp": 60,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/goblin"
+ "assetFolder": "assets/images/enemies/frogman"
},
"mathConfig": {
"operations": ["*"],
@@ -24,18 +24,18 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "3-1-2",
"levelNumber": 2,
- "name": "Vodný Slizík",
+ "name": "Pancierová Korytnačka",
"enemy": {
- "id": "water_slime_div",
- "name": "Vodný Slizík",
- "maxHp": 55,
+ "id": "water_turtle_div",
+ "name": "Pancierová Korytnačka",
+ "maxHp": 70,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/slime"
+ "assetFolder": "assets/images/enemies/turtle"
},
"mathConfig": {
"operations": ["/"],
@@ -44,19 +44,19 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 7
},
{
"id": "3-1-3",
"levelNumber": 3,
- "name": "Jazerný Drak (Boss)",
+ "name": "Jazerný Kraken (Boss)",
"isBoss": true,
"enemy": {
- "id": "lake_dragon_boss",
- "name": "Jazerný Drak",
- "maxHp": 80,
+ "id": "lake_kraken_boss_g3",
+ "name": "Jazerný Kraken",
+ "maxHp": 105,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/dragon"
+ "assetFolder": "assets/images/enemies/kraken"
},
"mathConfig": {
"operations": ["*", "/"],
@@ -65,7 +65,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 7
+ "requiredCorrectAnswers": 9
}
]
},
@@ -79,13 +79,13 @@
{
"id": "3-2-1",
"levelNumber": 1,
- "name": "Lesný Piadimužík",
+ "name": "Hubový Mužík",
"enemy": {
- "id": "forest_dwarf_goblin",
- "name": "Lesný Piadimužík",
- "maxHp": 50,
+ "id": "forest_mushroom_g3",
+ "name": "Hubový Mužík",
+ "maxHp": 65,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/goblin"
+ "assetFolder": "assets/images/enemies/mushroom"
},
"mathConfig": {
"operations": ["*"],
@@ -94,18 +94,18 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "3-2-2",
"levelNumber": 2,
- "name": "Živicový Sliz",
+ "name": "Šibalský Vĺčik",
"enemy": {
- "id": "resin_slime_div",
- "name": "Živicový Sliz",
- "maxHp": 65,
+ "id": "forest_wolf_div_g3",
+ "name": "Šibalský Vĺčik",
+ "maxHp": 85,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/slime"
+ "assetFolder": "assets/images/enemies/wolf"
},
"mathConfig": {
"operations": ["/"],
@@ -114,19 +114,19 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
},
{
"id": "3-2-3",
"levelNumber": 3,
- "name": "Starý Lesný Medveď (Boss)",
+ "name": "Stromový Ent (Boss)",
"isBoss": true,
"enemy": {
- "id": "ancient_forest_bear_boss",
- "name": "Starý Lesný Medveď",
- "maxHp": 90,
+ "id": "ancient_treant_boss_g3",
+ "name": "Stromový Ent",
+ "maxHp": 120,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/bear"
+ "assetFolder": "assets/images/enemies/treant"
},
"mathConfig": {
"operations": ["*", "/"],
@@ -135,7 +135,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 8
+ "requiredCorrectAnswers": 10
}
]
},
@@ -149,13 +149,13 @@
{
"id": "3-3-1",
"levelNumber": 1,
- "name": "Jaskynný Goblin",
+ "name": "Jaskynný Netopierik",
"enemy": {
- "id": "cave_goblin_1000",
- "name": "Jaskynný Goblin",
- "maxHp": 55,
+ "id": "cave_bat_1000",
+ "name": "Jaskynný Netopierik",
+ "maxHp": 70,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/goblin"
+ "assetFolder": "assets/images/enemies/bat"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -167,18 +167,18 @@
"allowCarryOver": false,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 7
},
{
"id": "3-3-2",
"levelNumber": 2,
- "name": "Trblietavý Sliz",
+ "name": "Horský Snežný Trol",
"enemy": {
- "id": "glitter_slime_1000",
- "name": "Trblietavý Sliz",
- "maxHp": 70,
+ "id": "mountain_troll_1000",
+ "name": "Horský Snežný Trol",
+ "maxHp": 90,
"attackPower": 1,
- "assetFolder": "assets/images/enemies/slime"
+ "assetFolder": "assets/images/enemies/troll"
},
"mathConfig": {
"operations": ["+", "-"],
@@ -190,7 +190,7 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
},
{
"id": "3-3-3",
@@ -200,7 +200,7 @@
"enemy": {
"id": "crystal_golem_boss",
"name": "Kryštálový Golem",
- "maxHp": 95,
+ "maxHp": 125,
"attackPower": 1,
"assetFolder": "assets/images/enemies/golem"
},
@@ -214,7 +214,7 @@
"allowCarryOver": true,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 8
+ "requiredCorrectAnswers": 10
}
]
},
@@ -228,11 +228,11 @@
{
"id": "3-4-1",
"levelNumber": 1,
- "name": "Veterný Škriatok",
+ "name": "Lúčny Škriatok",
"enemy": {
"id": "wind_sprite_goblin",
- "name": "Veterný Škriatok",
- "maxHp": 50,
+ "name": "Lúčny Škriatok",
+ "maxHp": 65,
"attackPower": 1,
"assetFolder": "assets/images/enemies/goblin"
},
@@ -244,16 +244,16 @@
"maxB": 999,
"inputType": "MultipleChoice"
},
- "requiredCorrectAnswers": 5
+ "requiredCorrectAnswers": 6
},
{
"id": "3-4-2",
"levelNumber": 2,
- "name": "Búrkový Sliz",
+ "name": "Kvetinový Slizík",
"enemy": {
"id": "storm_slime_comp",
- "name": "Búrkový Sliz",
- "maxHp": 65,
+ "name": "Kvetinový Slizík",
+ "maxHp": 85,
"attackPower": 1,
"assetFolder": "assets/images/enemies/slime"
},
@@ -265,17 +265,17 @@
"maxB": 1000,
"inputType": "MultipleChoice"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
},
{
"id": "3-4-3",
"levelNumber": 3,
- "name": "Hromový Medveď (Boss)",
+ "name": "Lesný Medveď (Boss)",
"isBoss": true,
"enemy": {
"id": "thunder_bear_boss",
- "name": "Hromový Medveď",
- "maxHp": 95,
+ "name": "Lesný Medveď",
+ "maxHp": 125,
"attackPower": 1,
"assetFolder": "assets/images/enemies/bear"
},
@@ -287,7 +287,7 @@
"maxB": 1000,
"inputType": "MultipleChoice"
},
- "requiredCorrectAnswers": 8
+ "requiredCorrectAnswers": 10
}
]
},
@@ -301,11 +301,11 @@
{
"id": "3-5-1",
"levelNumber": 1,
- "name": "Elitný Goblin",
+ "name": "Hradný Strážca",
"enemy": {
"id": "elite_guard_goblin",
- "name": "Elitný Goblin",
- "maxHp": 65,
+ "name": "Hradný Strážca",
+ "maxHp": 85,
"attackPower": 1,
"assetFolder": "assets/images/enemies/goblin"
},
@@ -316,7 +316,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 6
+ "requiredCorrectAnswers": 8
},
{
"id": "3-5-2",
@@ -325,7 +325,7 @@
"enemy": {
"id": "plasma_slime_boss",
"name": "Magický Plazmový Sliz",
- "maxHp": 80,
+ "maxHp": 105,
"attackPower": 1,
"assetFolder": "assets/images/enemies/slime"
},
@@ -341,7 +341,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 7
+ "requiredCorrectAnswers": 9
},
{
"id": "3-5-3",
@@ -351,7 +351,7 @@
"enemy": {
"id": "golden_dragon_final_boss",
"name": "Zlatý Drak Kráľovstva",
- "maxHp": 110,
+ "maxHp": 145,
"attackPower": 1,
"assetFolder": "assets/images/enemies/dragon"
},
@@ -367,7 +367,7 @@
"maxMultiplier": 10,
"inputType": "DirectInput"
},
- "requiredCorrectAnswers": 10
+ "requiredCorrectAnswers": 12
}
]
}
diff --git a/src/CiselnaVyprava/wwwroot/index.html b/src/CiselnaVyprava/wwwroot/index.html
index 6894b43..e68a94e 100644
--- a/src/CiselnaVyprava/wwwroot/index.html
+++ b/src/CiselnaVyprava/wwwroot/index.html
@@ -8,7 +8,7 @@
-
+