From eaa0640a9c38fa14436de1d1920c8ef110a7a570 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Fri, 8 May 2026 19:33:52 +0330 Subject: [PATCH] Implement remaining game mechanics and fixed known bugs --- .../src/main/java/org/project/Help.java | 85 ++++++++++++++ .../src/main/java/org/project/Menu.java | 23 ++-- .../main/java/org/project/MenuActions.java | 104 +++++++++++++----- .../org/project/entity/enemies/Dragon.java | 26 ++++- .../org/project/entity/enemies/Goblin.java | 57 +++++++++- .../java/org/project/entity/enemies/Key.java | 1 + .../org/project/entity/enemies/Skeleton.java | 10 +- .../org/project/entity/enemies/Vampire.java | 57 +++++++++- .../org/project/entity/players/Assassin.java | 34 +++++- .../org/project/entity/players/Knight.java | 3 +- .../org/project/entity/players/Player.java | 31 ++++-- .../org/project/entity/players/Wizard.java | 34 +++++- .../org/project/item/weapons/BoneHarpoon.java | 2 +- .../java/org/project/item/weapons/Dagger.java | 8 +- .../org/project/item/weapons/Fireball.java | 6 +- .../project/item/weapons/GoblinSickle.java | 3 +- .../org/project/item/weapons/MirrorClaws.java | 2 +- .../java/org/project/item/weapons/Sword.java | 2 +- .../java/org/project/location/Location.java | 10 +- .../target/classes/org/project/Help.class | Bin 0 -> 3775 bytes .../target/classes/org/project/Menu.class | Bin 3192 -> 2929 bytes .../classes/org/project/MenuActions.class | Bin 8040 -> 9094 bytes .../org/project/entity/enemies/Dragon.class | Bin 0 -> 1166 bytes .../org/project/entity/enemies/Goblin.class | Bin 0 -> 1766 bytes .../org/project/entity/enemies/Key.class | Bin 203 -> 247 bytes .../org/project/entity/enemies/Skeleton.class | Bin 1750 -> 1772 bytes .../org/project/entity/enemies/Vampire.class | Bin 0 -> 1770 bytes .../org/project/entity/players/Assassin.class | Bin 0 -> 1292 bytes .../org/project/entity/players/Knight.class | Bin 1289 -> 1289 bytes .../org/project/entity/players/Player.class | Bin 3375 -> 4795 bytes .../org/project/entity/players/Wizard.class | Bin 0 -> 1291 bytes .../project/item/weapons/BoneHarpoon.class | Bin 1710 -> 1710 bytes .../org/project/item/weapons/Dagger.class | Bin 1620 -> 1644 bytes .../org/project/item/weapons/Fireball.class | Bin 1682 -> 1706 bytes .../project/item/weapons/GoblinSickle.class | Bin 1659 -> 1723 bytes .../project/item/weapons/MirrorClaws.class | Bin 1724 -> 1748 bytes .../org/project/item/weapons/Sword.class | Bin 1157 -> 1160 bytes .../org/project/location/Location.class | Bin 2524 -> 2625 bytes 38 files changed, 420 insertions(+), 78 deletions(-) create mode 100644 Java-Knight/target/classes/org/project/Help.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Dragon.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Goblin.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Vampire.class create mode 100644 Java-Knight/target/classes/org/project/entity/players/Assassin.class create mode 100644 Java-Knight/target/classes/org/project/entity/players/Wizard.class diff --git a/Java-Knight/src/main/java/org/project/Help.java b/Java-Knight/src/main/java/org/project/Help.java index 104447a..f8b5f81 100644 --- a/Java-Knight/src/main/java/org/project/Help.java +++ b/Java-Knight/src/main/java/org/project/Help.java @@ -1,4 +1,89 @@ package org.project; +import java.util.Scanner; + public class Help { + private Scanner scanner; + public Help(){ + this.scanner = new Scanner(System.in); + } + + public void showHelp() { + + while(true) { + System.out.println("\n"+"===== Help Menu ====="); + System.out.println("What do you need help with, sir?"); + System.out.println("1-What is Java-Knight?"); + System.out.println("2-How to play"); + System.out.println("0-Back"); + System.out.println("======================="); + int choice = getValidIntInput(); + switch (choice) { + case 1: javaKnight(); break; + case 2: howTo(); break; + case 0: return; + default: + System.out.println("Invalid choice. Please choose a number between 0-2."); + } + } + } + + private void javaKnight() { + System.out.println(""" + Prologue: The Legend of Javanest + For centuries, the land of Javanest lived in peace, until a magical Dragon attacked, + plunging the realm into absolute darkness. With a wicked curse, + the Dragon transformed the innocent people into horrific monsters: + Goblins, Skeletons, and Vampires. Retreating to its impenetrable Castle, + the Dragon divided the three keys to its lair and hid them among these cursed creatures. + Now, it is your duty to step up and save the land. You must battle these monsters, + recover the unique key from each monster type, and finally slay the Dragon to + break the curse and restore peace to Javanest! + """); + + System.out.println("\nPress ENTER to go back..."); + scanner.nextLine(); + + } + private void howTo() { + System.out.println("=== HOW TO PLAY ==="); + System.out.println(); + System.out.println("Goal – Defeat enemies to collect three unique keys (Goblin, Skeleton, Vampire), then storm the castle and slay the Dragon."); + System.out.println(); + System.out.println("Choose Your Class – Start as one of three heroes:"); + System.out.println(" - Knight – High damage."); + System.out.println(" - Assassin – High stamina."); + System.out.println(" - Wizard – High health."); + System.out.println(); + System.out.println("Combat (Turn-Based) – On your turn, choose one action:"); + System.out.println(" 1. Light Attack – Moderate damage, costs no mana (your fallback when out of mana)."); + System.out.println(" 2. Heavy Attack – High damage, costs mana."); + System.out.println(" 3. Special Ability – Unique class move (highest mana cost)."); + System.out.println(" 4. Defend – Reduces or blocks the next enemy attack."); + System.out.println(" 5. Heal – Restores HP, costs mana."); + System.out.println(); + System.out.println("Progression"); + System.out.println(" - After each victory, your HP and mana fully recover."); + System.out.println(" - Defeating enemies grants XP → leveling up increases max HP/mana."); + System.out.println(" - Each enemy has a chance (~20%) to drop its unique key. You only need one key per enemy type."); + System.out.println(); + System.out.println("Locked Path – The castle option is hidden until you collect all three keys. Only then can you face the final Dragon."); + System.out.println(); + System.out.println("Game Over – If your HP reaches zero, the game ends."); + System.out.println(); + System.out.println("> \"Collect the keys. Break the curse. Save Javanest.\""); + + System.out.println("\nPress ENTER to go back..."); + scanner.nextLine(); + } + + private int getValidIntInput() { + while (!scanner.hasNextInt()) { + System.out.print("Please enter a valid number: "); + scanner.next(); + } + int input = scanner.nextInt(); + scanner.nextLine(); // Clear buffer + return input; + } } diff --git a/Java-Knight/src/main/java/org/project/Menu.java b/Java-Knight/src/main/java/org/project/Menu.java index 7cfaa0e..221e978 100644 --- a/Java-Knight/src/main/java/org/project/Menu.java +++ b/Java-Knight/src/main/java/org/project/Menu.java @@ -1,7 +1,9 @@ package org.project; +import org.project.entity.players.Assassin; import org.project.entity.players.Knight; import org.project.entity.players.Player; +import org.project.entity.players.Wizard; import org.project.item.weapons.Sword; import java.util.Scanner; @@ -9,6 +11,7 @@ import java.util.Scanner; public class Menu { private Scanner scanner = new Scanner(System.in); private MenuActions actions = new MenuActions(); + private Help helpMenu = new Help(); public void start() { while (true) { @@ -24,7 +27,7 @@ public class Menu { switch(choice) { case 0: return; case 1: startMenu(); break; - case 2: showHelp(); break; + case 2: helpMenu.showHelp(); break; default: System.out.println("Invalid choice, please choose a number between 0-2"); } @@ -55,13 +58,13 @@ public class Menu { while (keepAsking) { int choice = getValidIntInput(); switch (choice) { - case 1: character = new Knight(name, 1000, 1000, new Sword(), 5, 5); + case 1: character = new Knight(name); System.out.println("You are a knight!"); keepAsking = false; break; - case 2: character = new Knight(name); + case 2: character = new Wizard(name); System.out.println("You are a wizard!"); keepAsking = false; break; - case 3: character = new Knight(name); + case 3: character = new Assassin(name); System.out.println("You are an assassin!"); keepAsking = false; break; case 0: keepAsking = false; break; @@ -71,17 +74,7 @@ public class Menu { return character; } - private void showHelp() { - System.out.println("\n"+"===== Java Knight ====="); - System.out.println("Help menu"); - System.out.println("What do you need help with, sir?"); - System.out.println("1-What is Java-Knight?"); - System.out.println("2-How to play"); - System.out.println("3-About characters"); - System.out.println("4-General tips"); - System.out.println("0-Back"); - System.out.println("======================="); - } + private int getValidIntInput() { while (!scanner.hasNextInt()) { System.out.print("Please enter a valid number: "); diff --git a/Java-Knight/src/main/java/org/project/MenuActions.java b/Java-Knight/src/main/java/org/project/MenuActions.java index fb760a6..967ed9d 100644 --- a/Java-Knight/src/main/java/org/project/MenuActions.java +++ b/Java-Knight/src/main/java/org/project/MenuActions.java @@ -1,8 +1,7 @@ package org.project; import org.project.entity.Entity; -import org.project.entity.enemies.Enemy; -import org.project.entity.enemies.Skeleton; +import org.project.entity.enemies.*; import org.project.entity.players.Player; import org.project.location.Location; @@ -11,12 +10,21 @@ import java.util.Random; import java.util.Scanner; public class MenuActions { - private ArrayList locations = new ArrayList<>(); - Scanner scanner = new Scanner(System.in); + private ArrayList locations; + Scanner scanner; + + public MenuActions() { + this.scanner = new Scanner(System.in); + this.locations = new ArrayList<>(); + } public void startGame(Player player) { - while (player.getKeysCollected() < 3) { - System.out.println("Keys collected: " + player.getKeysCollected()); + while (player.getKeysCollectedCount() < 3) { +// System.out.println("Keys collected: " + player.getStringKeysCollected()); +// if (askInventory(player)) { +// +// }; + askInventory(player); Enemy enemy = chooseEnemy(); Entity winner = fight(player, enemy); @@ -25,7 +33,21 @@ public class MenuActions { break; } } + if (player.getKeysCollectedCount() == 3) { askInventory(player); + System.out.println("Congratulations! You have successfully collected all 3 keys\n" + + "You may now fight the Dragon"); + System.out.println("Make sure to upgrade before entering the castle!"); + askInventory(player); + System.out.println("Entering the castle..."); + Entity winner = fight(player, new Dragon()); + if (winner != player) { + System.out.println("You were killed by the dragon. Game over!\nreturning to main menu..."); + } else { + System.out.println("Congratulations! You killed the dragon and saved Javanest!"); + } + } + } private Enemy chooseEnemy() { @@ -60,23 +82,43 @@ public class MenuActions { public Entity fight(Player player, Enemy enemy) { player.heal(player.getMaxHP()); player.fillMana(player.getMaxMP()); - Entity winner = null; + Entity winner; while (true) { playerTurn(player, enemy); if (enemy.getHp() == 0) { winner = player; System.out.println(player.getName() + " won the fight!"); - player.setXp(player.getXp()+5); - System.out.println(player.getName() + " got 5 XP for winning the fight!"); - System.out.println("Keys collected: " + player.getKeysCollected()); + if (!(enemy instanceof Dragon)) { + player.setXp(player.getXp()+5); + System.out.println(player.getName() + " got 5 XP for winning the fight!"); + } + if (enemy instanceof Skeleton) { boolean hasKey = ((Skeleton) enemy).generateKey(); if (hasKey) { - player.collectKey(); + player.collectKey((Skeleton) enemy); player.setXp(player.getXp()+20); - System.out.println(player.getName() + " got a key and 20 XP!"); + System.out.println(player.getName() + " got a Skeleton key and 20 XP!"); } } + if (enemy instanceof Goblin) { + boolean hasKey = ((Goblin) enemy).generateKey(); + if (hasKey) { + player.collectKey((Goblin) enemy); + player.setXp(player.getXp()+10); + System.out.println(player.getName() + " got a Goblin key and 10 XP!"); + } + } + if (enemy instanceof Vampire) { + boolean hasKey = ((Vampire) enemy).generateKey(); + if (hasKey) { + player.collectKey((Vampire) enemy); + player.setXp(player.getXp()+30); + System.out.println(player.getName() + " got a Vampire key and 30 XP!"); + } + } + System.out.println("Keys collected: " + player.getStringKeysCollected()); + return winner; } enemyTurn(player, enemy); @@ -96,25 +138,28 @@ public class MenuActions { // System.out.println("1-Light attack, mana cost: 0"); // System.out.println("2-Heavy attack, mana cost: "); // System.out.println("3-Special Ability, mana cost: "); -// System.out.println("4-Defend, mana cost: 10"); -// System.out.println("5-Heal, mana cost: 20"); +// System.out.println("4-Defend, mana cost: 10"); disabled +// System.out.println("5-Heal, mana cost: 20"); disabled while (true) { Random random = new Random(); - int choice = random.nextInt(5) + 1; + int choice = random.nextInt(3) + 1; switch (choice) { - case 1: enemy.getWeapon().lightAttack(player); return; + case 1: enemy.getWeapon().lightAttack(player); + System.out.println(enemy.getType() + "attacked(light)!"); return; case 2: if(enemy.getMp() >= enemy.getWeapon().getManaCost()) { - enemy.getWeapon().heavyAttack(enemy, player); return; + enemy.getWeapon().heavyAttack(enemy, player); + System.out.println(enemy.getType() + "attacked(Heavy)!"); return; } break; case 3: if (enemy.getMp() >= enemy.getWeapon().getSpecialMana()){ - enemy.getWeapon().useSpecialAbility(enemy, player); return; - } break; - case 4: if (enemy.getMp() >= enemy.getDefendManaCost()) { - enemy.defend(); return; - } break; - case 5: if (enemy.getMp() >= enemy.getHealManaCost()) { - enemy.heal(20); return; + enemy.getWeapon().useSpecialAbility(enemy, player); + System.out.println(enemy.getType() + "used special ability!"); return; } break; +// case 4: if (enemy.getMp() >= enemy.getDefendManaCost()) { +// enemy.defend(); return; +// } break; +// case 5: if (enemy.getMp() >= enemy.getHealManaCost()) { +// enemy.heal(20); return; +// } break; default: System.out.println("Invalid choice"); } @@ -168,20 +213,21 @@ public class MenuActions { } private void askInventory(Player player) { - System.out.println("Choose an option: "); - System.out.println("1- Go to the inventory"); - System.out.println("2- Continue to next fight"); + + whileLoop: while (true) { + System.out.println("Choose an option: "); + System.out.println("1- Go to the inventory"); + System.out.println("2- Continue to next fight"); int choice = getValidIntInput(); switch (choice) { - case 1: shop(player); + case 1: shop(player); break; case 2: return; default: System.out.println("Invalid choice, please choose a number (1 or 2)."); break; } } - } private void shop(Player player) { diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java index a4ca0b9..7c073e1 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java @@ -1,4 +1,28 @@ package org.project.entity.enemies; -public class Dragon { +import org.project.item.weapons.BoneHarpoon; +import org.project.item.weapons.TailScythe; +import org.project.item.weapons.Weapon; + +public class Dragon extends Enemy{ + private static int DEFAULT_HP = 200; + private static int DEFAULT_MP = 200; + private static TailScythe DEFAULT_WEAPON = new TailScythe(); + private static int DEFAULT_HEAL_MANA_COST = 20; + private static int DEFAULT_DEFEND_MANA_COST = 20; + + public Dragon() { + super(DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + + public Dragon(String name, int hp, int mp, Weapon weapon, + int healManaCost, int defendManaCost) { + super(hp, mp, weapon, healManaCost, defendManaCost); + } + + @Override + public String getType() { + return "Dragon"; + } } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java index a11e517..7f01929 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java @@ -1,4 +1,59 @@ package org.project.entity.enemies; -public class Goblin { +import org.project.item.weapons.BoneHarpoon; +import org.project.item.weapons.GoblinSickle; +import org.project.item.weapons.Weapon; + +import java.util.Random; + +public class Goblin extends Enemy implements Key{ + private static int DEFAULT_HP = 80; + private static int DEFAULT_MP = 120; + private static GoblinSickle DEFAULT_WEAPON = new GoblinSickle(); + private static int DEFAULT_HEAL_MANA_COST = 30; + private static int DEFAULT_DEFEND_MANA_COST = 20; + private static int keysRemaining = 1; + + public Goblin() { + super(DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + + public Goblin(String name, int hp, int mp, Weapon weapon, + int healManaCost, int defendManaCost) { + super(hp, mp, weapon, healManaCost, defendManaCost); + } + + @Override + public String getType() { + return "Goblin" ; + } + + @Override + public boolean generateKey() { + if (keysRemaining > 0) { + Random random = new Random(); + int dice = random.nextInt(1); + if (dice == 0) { + decreaseKey(); + return true; + } + } + return false; + } + + @Override + public void decreaseKey() { + keysRemaining -= 1; + } + + @Override + public int getKeysRemaining() { + return keysRemaining; + } + + @Override + public String getKeyType() { + return "Goblin"; + } } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Key.java b/Java-Knight/src/main/java/org/project/entity/enemies/Key.java index e358147..eeeb890 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Key.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Key.java @@ -4,4 +4,5 @@ public interface Key { boolean generateKey(); void decreaseKey(); int getKeysRemaining(); + String getKeyType(); } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java index 9378ab0..ab6acf5 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java @@ -13,7 +13,6 @@ public class Skeleton extends Enemy implements Key { private static int DEFAULT_HEAL_MANA_COST = 30; private static int DEFAULT_DEFEND_MANA_COST = 20; private static int keysRemaining = 1; - private boolean hasKey = false; public Skeleton() { super(DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, @@ -34,8 +33,8 @@ public class Skeleton extends Enemy implements Key { public boolean generateKey() { if (keysRemaining > 0) { Random random = new Random(); - int dice = random.nextInt(5); - if (dice == 1) { + int dice = random.nextInt(1); + if (dice == 0) { decreaseKey(); return true; } @@ -52,5 +51,10 @@ public class Skeleton extends Enemy implements Key { public int getKeysRemaining() { return keysRemaining; } + + @Override + public String getKeyType() { + return "Skeleton"; + } // TODO: DESIGN ENEMY AND IMPLEMENT THE CONSTRUCTOR } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java index 966c4b5..c2618ce 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java @@ -1,4 +1,59 @@ package org.project.entity.enemies; -public class Vampire { +import org.project.item.weapons.GoblinSickle; +import org.project.item.weapons.MirrorClaws; +import org.project.item.weapons.Weapon; + +import java.util.Random; + +public class Vampire extends Enemy implements Key{ + private static int DEFAULT_HP = 150; + private static int DEFAULT_MP = 150; + private static MirrorClaws DEFAULT_WEAPON = new MirrorClaws(); + private static int DEFAULT_HEAL_MANA_COST = 30; + private static int DEFAULT_DEFEND_MANA_COST = 20; + private static int keysRemaining = 1; + + public Vampire() { + super(DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + + public Vampire(String name, int hp, int mp, Weapon weapon, + int healManaCost, int defendManaCost) { + super(hp, mp, weapon, healManaCost, defendManaCost); + } + + @Override + public String getType() { + return "Vampire" ; + } + + @Override + public boolean generateKey() { + if (keysRemaining > 0) { + Random random = new Random(); + int dice = random.nextInt(1); + if (dice == 0) { + decreaseKey(); + return true; + } + } + return false; + } + + @Override + public void decreaseKey() { + keysRemaining -= 1; + } + + @Override + public int getKeysRemaining() { + return keysRemaining; + } + + @Override + public String getKeyType() { + return "Vampire"; + } } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java index 2fb2ede..2a1840e 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java @@ -1,4 +1,36 @@ package org.project.entity.players; -public class Assassin { +import org.project.item.weapons.Sword; +import org.project.item.weapons.Weapon; + +public class Assassin extends Player { + private static int DEFAULT_HP = 80; + private static int DEFAULT_MP = 100; + private static Sword DEFAULT_WEAPON = new Sword(); + private static String DEFAULT_NAME = "Hasan"; + private static int DEFAULT_HEAL_MANA_COST = 20; + private static int DEFAULT_DEFEND_MANA_COST = 15; + + public Assassin() { + super(DEFAULT_NAME, DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + public Assassin(String name) { + super(name, DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + + public Assassin(String name, int hp, int mp, Weapon weapon, + int healManaCost, int defendManaCost) { + super(name, hp, mp, weapon, healManaCost, defendManaCost); + } + + + + @Override + public String getType() { + return "Assassin" ; + } + + } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Knight.java b/Java-Knight/src/main/java/org/project/entity/players/Knight.java index 2f7c093..5305209 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Knight.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Knight.java @@ -1,13 +1,12 @@ package org.project.entity.players; -import org.project.item.armors.Armor; import org.project.item.weapons.Sword; import org.project.item.weapons.Weapon; // TODO: UPDATE IMPLEMENTATION public class Knight extends Player { private static int DEFAULT_HP = 100; - private static int DEFAULT_MP = 100; + private static int DEFAULT_MP = 80; private static Sword DEFAULT_WEAPON = new Sword(); private static String DEFAULT_NAME = "Ser Duncan"; private static int DEFAULT_HEAL_MANA_COST = 30; diff --git a/Java-Knight/src/main/java/org/project/entity/players/Player.java b/Java-Knight/src/main/java/org/project/entity/players/Player.java index 11db2d3..89d4bad 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Player.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Player.java @@ -1,9 +1,11 @@ package org.project.entity.players; import org.project.entity.Entity; -import org.project.item.armors.Armor; +import org.project.entity.enemies.Key; import org.project.item.weapons.Weapon; +import java.util.ArrayList; + // TODO: UPDATE IMPLEMENTATION public abstract class Player implements Entity{ protected String name; @@ -16,8 +18,9 @@ public abstract class Player implements Entity{ private boolean isDefendingThisTurn = false; private int healManaCost; private int defendManaCost; - private int keysCollected; + private int keysCollectedCount; private int xp = 0; + private ArrayList keysByType = new ArrayList<>(); public Player(String name, int hp, int mp, Weapon weapon, int healManaCost, int defendManaCost) { @@ -27,18 +30,20 @@ public abstract class Player implements Entity{ this.maxHP = hp; this.maxMP = mp; this.weapon = weapon; - this.keysCollected = 0; + this.keysCollectedCount = 0; this.healManaCost = healManaCost; this.defendManaCost = defendManaCost; } - public void collectKey() { - keysCollected += 1; + public void collectKey(Key enemy) { + addKey(enemy.getKeyType()); + keysCollectedCount += 1; } @Override public void defend() { isDefendingThisTurn = true; + this.reduceMana(this.getDefendManaCost()); } @@ -121,8 +126,8 @@ public abstract class Player implements Entity{ return weapon; } - public int getKeysCollected() { - return keysCollected; + public int getKeysCollectedCount() { + return keysCollectedCount; } @Override @@ -154,9 +159,17 @@ public abstract class Player implements Entity{ this.setMaxMP(this.getMaxMP() + amount); } } - public int getDefendManaCost() { return defendManaCost; } - + public void addKey(String type) { + keysByType.add(type); + } + public String getStringKeysCollected() { + String result = "Count: " + keysCollectedCount + " "; + for (String key: keysByType) { + result += " " + key + " key"; + } + return result; + } } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java index db87a41..ba2965a 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java @@ -1,4 +1,36 @@ package org.project.entity.players; -public class Wizard { +import org.project.item.weapons.Fireball; +import org.project.item.weapons.Weapon; + +public class Wizard extends Player{ + private static int DEFAULT_HP = 90; + private static int DEFAULT_MP = 90; + private static Fireball DEFAULT_WEAPON = new Fireball(); + private static String DEFAULT_NAME = "Merlin"; + private static int DEFAULT_HEAL_MANA_COST = 25; + private static int DEFAULT_DEFEND_MANA_COST = 25; + + public Wizard() { + super(DEFAULT_NAME, DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + public Wizard(String name) { + super(name, DEFAULT_HP, DEFAULT_MP, DEFAULT_WEAPON, + DEFAULT_HEAL_MANA_COST, DEFAULT_DEFEND_MANA_COST); + } + + public Wizard(String name, int hp, int mp, Weapon weapon, + int healManaCost, int defendManaCost) { + super(name, hp, mp, weapon, healManaCost, defendManaCost); + } + + + + @Override + public String getType() { + return "Wizard" ; + } + + } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/BoneHarpoon.java b/Java-Knight/src/main/java/org/project/item/weapons/BoneHarpoon.java index b08a364..6a8cfe2 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/BoneHarpoon.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/BoneHarpoon.java @@ -3,7 +3,7 @@ package org.project.item.weapons; import org.project.entity.Entity; public class BoneHarpoon extends Weapon{ - private static int DEFAULT_DAMAGE = 10; + private static int DEFAULT_DAMAGE = 15; private static int DEFAULT_MANACOST = 10; private static int DEFAULT_SPECIAL_MANA = 20; diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java b/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java index 7ae48e1..4565fea 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java @@ -3,9 +3,9 @@ package org.project.item.weapons; import org.project.entity.Entity; public class Dagger extends Weapon{ - private static int DEFAULT_DAMAGE = 20; - private static int DEFAULT_MANACOST = 20; - private static int DEFAULT_SPECIAL_MANA = 20; + private static int DEFAULT_DAMAGE = 15; + private static int DEFAULT_MANACOST = 15; + private static int DEFAULT_SPECIAL_MANA = 30; public Dagger() { @@ -15,7 +15,7 @@ public class Dagger extends Weapon{ @Override public void useSpecialAbility(Entity attacker, Entity target) { target.takeDamage(50); - attacker.reduceMana(this.getManaCost() + 10); + attacker.reduceMana(this.getSpecialMana()); } @Override public String getType() { diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Fireball.java b/Java-Knight/src/main/java/org/project/item/weapons/Fireball.java index fb3344f..580dc7a 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Fireball.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Fireball.java @@ -3,9 +3,9 @@ package org.project.item.weapons; import org.project.entity.Entity; public class Fireball extends Weapon{ - private static int DEFAULT_DAMAGE = 20; + private static int DEFAULT_DAMAGE = 15; private static int DEFAULT_MANACOST = 20; - private static int DEFAULT_SPECIAL_MANA = 20; + private static int DEFAULT_SPECIAL_MANA = 25; public Fireball() { @@ -14,7 +14,7 @@ public class Fireball extends Weapon{ @Override public void useSpecialAbility(Entity attacker, Entity target) { target.takeDamage(this.getDamage() * 3); - attacker.reduceMana(this.getManaCost() + 10); + attacker.reduceMana(this.getSpecialMana()); } @Override public String getType() { diff --git a/Java-Knight/src/main/java/org/project/item/weapons/GoblinSickle.java b/Java-Knight/src/main/java/org/project/item/weapons/GoblinSickle.java index 7171593..072bec3 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/GoblinSickle.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/GoblinSickle.java @@ -4,7 +4,7 @@ import org.project.entity.Entity; public class GoblinSickle extends Weapon { private static int DEFAULT_DAMAGE = 10; - private static int DEFAULT_MANACOST = 15; + private static int DEFAULT_MANACOST = 10; private static int DEFAULT_SPECIAL_MANA = 20; @@ -15,6 +15,7 @@ public class GoblinSickle extends Weapon { @Override public void useSpecialAbility(Entity attacker, Entity target) { target.takeDamage(this.getDamage()*2); + attacker.reduceMana(this.getSpecialMana()); } @Override public String getType() { diff --git a/Java-Knight/src/main/java/org/project/item/weapons/MirrorClaws.java b/Java-Knight/src/main/java/org/project/item/weapons/MirrorClaws.java index 8fbb673..a9f497b 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/MirrorClaws.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/MirrorClaws.java @@ -16,7 +16,7 @@ public class MirrorClaws extends Weapon{ public void useSpecialAbility(Entity attacker, Entity target) { target.takeDamage(this.getDamage()); target.reduceMana(30); - attacker.reduceMana(this.getManaCost() + 10); + attacker.reduceMana(this.getSpecialMana()); } @Override public String getType() { diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Sword.java b/Java-Knight/src/main/java/org/project/item/weapons/Sword.java index ee337ad..a42018e 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Sword.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Sword.java @@ -18,7 +18,7 @@ public class Sword extends Weapon { @Override public void useSpecialAbility(Entity attacker, Entity target) { target.takeDamage(this.getDamage()* 2 + 5); - attacker.reduceMana(this.getManaCost()); + attacker.reduceMana(this.getSpecialMana()); } @Override public String getType() { diff --git a/Java-Knight/src/main/java/org/project/location/Location.java b/Java-Knight/src/main/java/org/project/location/Location.java index d45323e..cdff602 100644 --- a/Java-Knight/src/main/java/org/project/location/Location.java +++ b/Java-Knight/src/main/java/org/project/location/Location.java @@ -1,7 +1,9 @@ package org.project.location; import org.project.entity.enemies.Enemy; +import org.project.entity.enemies.Goblin; import org.project.entity.enemies.Skeleton; +import org.project.entity.enemies.Vampire; import org.project.item.weapons.BoneHarpoon; import org.project.item.weapons.Sword; import org.project.item.weapons.Weapon; @@ -37,8 +39,8 @@ public class Location { Enemy e = null; switch (enemyId) { case 0: e = new Skeleton(); break; - case 1: e = new Skeleton(); break; - case 2: e = new Skeleton(); break; + case 1: e = new Goblin(); break; + case 2: e = new Vampire(); break; } this.enemies.add(e); } @@ -47,11 +49,11 @@ public class Location { this.enemies.add(e); } private void addGoblin() { - Enemy e = null; + Enemy e = new Goblin(); this.enemies.add(e); } private void addVampire() { - Enemy e = null; + Enemy e = new Vampire(); this.enemies.add(e); } public static String pickName() { diff --git a/Java-Knight/target/classes/org/project/Help.class b/Java-Knight/target/classes/org/project/Help.class new file mode 100644 index 0000000000000000000000000000000000000000..9ed86bec57f6d7197d295405021df924c791196b GIT binary patch literal 3775 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 literal 3192 zcmbVOYjYFV8Gcrlt+iOd2wC5X(S~!$pY=4oYndY0FyLSc~OdWp`!c z^pd3aOVae3Hc9Vk$1|OLC>df;%S=AD)8>D4`lWxMlL>v^vny(ow9~2V-J^5%ocFx% zb2+QOe)z}t0Gz{b(@3Btg`|O2v}x$LX)Rj$n&r;rFVEhz%b|w05yy4H(;8ZO`=(OR zHEdIp8lh9mm&%sw+I~CI*pz}{U^BLCh*DY(LVH0&!f`cpj;oc9moK{YMpz1c+gd23 zkwS;;zfHr=-jAKqH`R{q*pWh~fi6769Xx+7U-vypF+X9u4GpOv%0VuhSdMEh5DOjs8um?Bt^01qGjE%rXI8wUX5jc|bPQmRS8n#CB#;TT2Zf#$~;oiOt z+}dvFgvUhVK$=K`^Y^=0X$e{{DX1<_QB&O3tmS64BFy zflIjDtnC8P)zH)XKkO)UK1GwAbD5?&<28KKDly?zjxPgLNp? ztk;B&X^JI1)&!^Atb5qhF~jwPxk!aNuCq6kn|7YJ{ECiGYe*l4<9RcYU!NxA+p=2r-Ry<`v*S0H>t(Kgy+O*-4hOWV!n&$-SfQYG~MVB>f9?D&$ z8>u@{rjE~P$dI5}o;cKgtmZ(+7wG2WxeGQ=W2>g@s^bMk-dU0-+Ih*qm+)osTeX5q zln?!=tawewSE=#I$WJ7dva`&{Y>}x%dp-ENfp5qe)v8V-iTEu8-xf6{MU67>ih=Kl z=TkDE;wQ(v3PrkAw0cQ7^l59h#*xgpSGHyON`MQkSxA=A-^1(f7e8qVu+09}VVtKrp>) zDg0{VJ5Zg|1kRDS9;cUR>au;_5ggj(*y|Sq^Hs8)Z)5OE$XiZ*I!1wV3 z_B1)Yc$et^Q2PV^JJ^>wxQfHl9*Nsr+~(tUFm8{31R*a{sT{M*LkGy{|9^kN4F(20{o=M+b; zVi#r@`357;@zw2NpQ^5lHJri_euy8bI{moL*BEs(EB!!@$F{bAQnE6!S^9EZ`aY&M zHh$#K=#bS$XoV)E?`~}(yh$) z$M^}el3a9XAD}CR*V*T5Dq=u;ljE&?`o1hqQK*41h0^<*Kis?#~HlE8E<10cW@Sez!=`cj^v4O~d9D;0B)RMRF$o#YeiJ_>+zHP88RXQ6w_KZ$MG#Xj;W*$m#qINP`}w&2V%&;#L|F;tfGoiQ zU8!T74wzsx{{oRy>^=Yh diff --git a/Java-Knight/target/classes/org/project/MenuActions.class b/Java-Knight/target/classes/org/project/MenuActions.class index 4c587d0f0e89da9df40e799782f95cd2a2326a54..d1e7a29a0ab6c7b6b71cadcf2ddfc90c3ff45de5 100644 GIT binary patch literal 9094 zcmb_hdwf*Yo&TOBWNwBFgb7a}aCsQ>4i7;kfQ{i5Od=W}-~+iyF3Fh5%s3Aq#dqsl zTi;gdwxYJ|R;)i!@KP#8dwi7_ZvD80`>Lf}K#Ml5#6XP&`6qk;{WXc&(C~Gnj0SMIw~k>1mFo zqtr1~+Y;pB6(&wYrGjZE`&*(r$t9K;RH&$I{Yd7GRhxxFwTT+kDva&!i^Y=8>Zmh7 z2JC{6k z%|%CGvLO+U`Y(qAr<0fyOgO1@A{vhNTB(>dV27jD0D(|nUmwJoI4gi< zCK|EaH#b3-!;LtJ3-5@a(!-oaJuyj+RHgw!eoJ#K+MBRb>4*!3Io8%#+Um1+I#x2> z-R&fkJJONJpw;c$)3PHGYq8Z&8wZ7Sz#g=sv0au{rR+qCQ#va<<5mEG{ZabNZICBh~qcDYfJAQd$@94^%#CK`LJu0g$4j~1}r`Z$_4(4w#`uaZ2bvSpW}Wk-9gBvsdAt!I#lI>{8h z=Uj#ITx|PZ*U;*@Ul8k2D35j%=V60FkUk`UC2$!B2<$xGOe{~s1tvPMk)YxPv2u$? zniJg^4>l`UxdKq{;<>)ov}**h30q8T#f8KTxosSbI|`HhwR3@E;9{b5#mD%QJ#8~_ zsn4{X$PO_m+a|iu&8-a(9aJr&P-i&R$5t|BM^oJNnRx)~Y9UvW+}(Pp4ne^Y_B(V; z(Te+sDH0U=OoS!Em2&Hw?MS$%C7RL!+(5s=62TFpP0}IKQ-Wj-c0#hFKOB#H{uy<4 zr!3#N95cYAuz)d6_{sEew^MIzh&VR+xUtK!t!R3n%Sl+33uz*2Q58LVJz|n7mWzQe zH<1AKQE2z{9OuSv@@lNQP=a*Y#7>dlp!{w2?sXfabGL~>d{UvP&#@!?B0LyCEnH#Z z${gZ0O?9&QKuN`UKYT`D3Y>OWIjET>RkYkcgYD+wXLO223r7-U#@b2h$B2Fq64dPDRW8z-i z$JEhF@H6N+%v3rxX(fKn!~@vN-FmT356;WGTiF_D0Y?dB@Tei8;wR zAs9F$&h|CRQ`s^q`gr~*Hcp37fCwO{FB1$+zscU zCoCdT5;Ub!b~n9#R$j}yD$+&|il#T=B@-|EFl{4DpT{dE{#kkmGkRmxZjMRy^*mlR z@h|uR`{|H72mN)%Le!fct>b| zYvR9T&l9=lRn874+T*J_gi@E}cP4%>Boj!ojxlhAU?Scz@ITBzBavO(-jj^6`_H2W zwZTRP|CeZLXC`o>v2<^r-bTIEtjkfWsh4%yGRweU6;2sppLES)*{<>#=PevH@xB~M zihH#D20mcQ9ho9J)&mr0n0P$-iiT1OGe*spxGyG4B%R2PdP5Z|gghzjs1=J#?N3S7 z7`pGmI%{oA%qrzf*e}ct6=0-TRA(_ar^3;+F5`5f(;1L~MwOTi(MF*MaMhGF=Nb$hbwA$|Ovz*;=mV{2U+p*#?mbDhoKrAGQ9?F{F zIfFt|dWUrc)9FGNT1=@6tv*UsM%8rog~`X=wU1>t4WDhO$qX-4!8z$cP0#b!SngV0 z1*3-InJTb=9gGYiMpr?gnrW(XosGKEgX@@$CgGhBCgYHy<|vHIvDTIiLO#z_^L_F* zl1~xxsX|WeecU=>MW`~+0BscIyh1^et|yBjtQRmXDED>7KPr zvCQJxK{c3afgBvh=p%ygT4bull2?kvy3(;k0`h!monfjoWyp}B)^L=CVM#~0H_Agp zg6*aG%G2ee0+(MEWlP@1m5p4gIo8AZ6NF{EE`v7OT@m(#q%w|dwi97__d1JGePLEY z(?>DRITw>*3CqVsN~(J9Oy@l&*irP<$O)w{Cl>Dt%Nd^_$w%$QTavkD5VKD{GI!8F z36tx%4oM_!cHG-RG10~vP(krXVfZ>>C>h1g?;p_>H>Niu<+CW~grYW}&ht}iPOVD_ zvuYGoil2*R_55OjMOQY8CM{0rES%+C)F40Ng9f0g-QuZHcw$Zze;pb_1S}?duZH6rzK34p|&ZUdlEkl z(nZ(k45FuKWjGxBptce8(osfQrclUPYfS9J);WM8Ai+&39ii%JDGHn0d=>+sVD3ypQr(KFCFLPqzqE-zA%Srxqz1o1^nmrCX_l$ z-qbQad7;W@kaq*T0_I2~-!}5lruaRp`Y=@W5d^j#LdjuFcnTrDP1|}Hr#yujPm-cQ zE$34Xd0=H(go$j2xJH>;!5-7)qE@Q2`KHt-Q0cCqs!1zzuBgdicJaeFt(uKft23x- ztFEcdpsu~H=1UlV2n$0?GB{&DiuVt{p=lq&dQB@sD>x+IXY)JT*`!~N@P_L!R+Cd( zt9u7V~jBPQ_X5Y2rRw z*xQb3Z03z?H%I$Wha|60_h7N!`{~ptYZ%p}&Y{+)Gt@S#RXmkJ+AOHBdyhH z4Ry1Yz2iBvvfvoj1n~G#o>>dzPS?}hTyhvgnmtFbp8IQUrB2!kGdTZQY-*$4I@@J; z7jbv|=GY~5L)Z?UA?2Oz9^Iy%dzThXE_#fdz`Y1EXdixNc^ z+&_F1NnEuprLurCsJ1g%;GM-yE~Byc zJ{8XL+PGnE*Hx5O&uqfaH$Egf<$@iWNuF~MWmWH@~FMeAi#^AtBL%3P%z4kdY@5M|ZzQx#{ z!R^`cJN)rGAHd?;XK`l+cZ-D{z^OIv>-~CG>7-H9KJQO^(4F>R24BdT##e7zaMZLf z`qLhAr#+Ox!#UIV>P?$9YT6@unk)08L)foh>kjHY|2_Bg*xuoSTG?~m(>S2u@4D_F z_3I+$7R+V4gZAD?eRtC3w$RRM@1JnhOQBx}_-qYcf_qLuNw=)Vc4XJ+FfEP7GZ;mzv)$((G z_6*_Q^=93@k1~nO{*UaeUs0z+c-trDT=x8M2*1wh`OOgiJLmP?A^btVN@QMHuI)(+ zXmd)q7q1a>ZsUic1P6pEts!O&{gEp_=}9ST@55vnmNY8%4E;&QrSTUw_T%aiQra|2 zDmD%M-)Pc}9_erPp_I+{gyh(05{Yl3o_F^lSW`NQp-?aNA*o2sy9K?b&bcl?EQ;?2 zgBzGEK)*2X7y)vCx%YAAq65r!UnNMMVA43q@bDyE{SYtfzeWf>h1<#RAP9f{KZmFB zDxvaY9>(9ox2Vu><0vmf3-O#X@q(I)@2I)F-K@ZORRdmPwevl-8n38Ud|z$Et7bf_4}}5%Xjtu99T_;`95ws#xPMjJ2*QyH8`=%P1XDX*GoOm z(doq%&)0e=@D)#)(qP)L2pG@F5bp8m!>u zG4NA9-(;=vGkX2cVG*Xw@e8Kix3C(&WGH=G@6e(!7V7m5WtsE+9kMl2d&sXV$I!@3 zdX#o4kn1bYRmO9^xXNrT$vAfxH2f_?YJ!jCGF9sDF61`|2^R@d{Khmk+>Hy)U*t#r zL?*^277;+4Yq+dW$?*#5c?8up0QnPi}{^5(uh5S*NT3m}u z?jJtzQEcbBY)?IrZH32nOg^@*aZb}~R8f4_IM-3#;5}>!fjJHD670WYx%hkf@gHcQ zKhijVWH?FL0;g)odRO zY>j|n25YMKvFaFRsbl=@nR$#=srxPV;;(`p)UV^4*lz)=tWZW(?Zs5B_S%f9ce@sL z?jL^JZJxf|{a)HR<3Ltfr?9AlIt4*BgNbw|SDb|k8na$mdJ}F@w!jm!f^?k}-L03U z!YilJw~$+b+Nv((_g$>AZ{_$!`gw_dUaFtAes=4pqo2L{8P?B!{T$HGn0{WapGo~p t>*p^09MsP}`gx^(UaggT8Q^LqWfQ9o~1cTz4Esp>9ukGc=j{{{e#Oq2is literal 8040 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 Uh(nZg>7;BNb81De)$lie0Tt%%ivR!s literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class new file mode 100644 index 0000000000000000000000000000000000000000..dbd000d2d87499184219c185f292e774a846cd44 GIT binary patch literal 1766 zcma)6U2{@b6kR9W@RbX}l-NW`#KagNHQ3hHYN9PB#8An{NE)Yo$=tvxxdtu_+*En$ z|L8-1fe$Ur=uDmI59p8Tbe+RT2-eY;v(Gtq@3q%nXYc#ZzkmG=Ad7qeWAON3m>7pw z;Cii5PS+c?=d$RgrQ_Oei$+#$*-SsK9an5eAh?;`%KVT&INIJ95IKe5HxW?bgHJpA z>UzS2iI70JAMq@k+27k0Sk4dUv0YhBzmQhF=Jc}^?BZ!ft|^d76A^`dxev0P&E$`E zGP{|hjlIHwa+xymiE^3gyU=ELH_x4dn8sxvJ~c6eS%LU)_K_;HthOcKUAGN5;|!jrCcXUve=MTQ$CR`A3hUU z8ZPX;vIen&1s~D^^TYllLJ*TFH)1JxWb#Me646z4y}f*&b>>+ zJ+Yetix>17f$a*kCU8HI*D_Qrr<^Xh4T?h@FN9vGU`T56a;&Om@eYK**h!sBm5aCA zRBY=H!U~ut(yHuOjeUZZbL35=3mBwncCTE){HtKO3_!c4?CZyJr3<9KyHbXoYuFL8$_h4)nt?*;LEybGmbbF;?u z__X(bfMy6VtAVz=&OIQ8;cML0;30fND3vyZd)#^S?mpIF=-oQ+#`W$2cdCeo__jyl z7Og7EGj-(;nr;ol7O^|*-`miebh>3nhehWWpHgbn72QqN8LtK#B44q1&S z=J}cb0IuqB?$Slo5g-|()In_YMbdoD+d~xv1{H1LaSvpbR)H7GFWZ$bJVR^0EWpTdYvbTO9-=^BsgE(GD&dy{d%P@(NW^-8PO1 Ut|pZVu~EX*agsHBuh~EO50(&4O8@`> literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Key.class b/Java-Knight/target/classes/org/project/entity/enemies/Key.class index 22f13b717ee1bdbcc7e00677d8a2954bcf0977b7..1cf95c9e77d87db6ec39e70122601b64ca9a6bb3 100644 GIT binary patch delta 99 zcmX@j_??mK)W2Q(7#J8_8Tco1)hVW@mUyRDhEx`$GBSv0X!>L&mL=-vB<7{-2bUCO s=A~OtY*p4~VPRxoWng1q0MhIX9AKK0feTD?Gw=XSV`Sh3l1vPI0BgY$i~s-t delta 37 scmey)c$$&x)W2Q(7#J8_8F(jh)lFQZz{ouDtOOSWBLg>3l!<`{0PzY5bpQYW diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class index 8e511ea28179e99a7f2ecc7e2a96b6d2f6fa4dcf..fb68edd9490fdbe3f06d61566d30a611c942fe73 100644 GIT binary patch delta 882 zcmaJm z6hrjMuGka311p9QGI3-PVK8?^|8QIEx4Tx?+R>3`NWN?zwd-$s-M#vD+v*(b8_1y$ z#{`NDTDkH}o@e5i#T3tfI^71~34F$-u^qJn7qI{nfx+0at zhz;+!NdNmNb$ZanAxW`7(gQs7K^7=8*Z?OK$=fr;^J95vm8&bu&@Sr>_9%Ec)6bulysA0yNHBSo?G8*)x$*Z=?k delta 839 zcmZ{i+int36o&uJOc@vkLJ^YEa+DT1*iuxir+R4B7O6GS#6<6iooG|VM7Xe5@CL?A zywvyry|6=U6HUDG!uS9_g-_sx@!xw$>5Z9WpJuIZ{r}qgclcM>{Q39GHvqSAZ{KW* zl^}eWv5-Pq!2hh>ZP~j5;&A|3fxv?u`?=kF*^xnc3n$?h2=Cat-TU^7_I78x^VGns zGZ2Zj0*V%cYplqRns({h4U-z1wo`7CzmYXI~^A;9lXlToR^2%;^Z5B1K zD9EadTWM5_Wj=B8L0a;>XO3CXj;!3|wR=4pFk05iyU2Y&>MIJ54l%b;4IH4f zoYFrcSUJFHeNWqydT7zKu0jiX((|CP;tz zk&31QiY$Ng5sc(4F+@5EQjWegL~eXV^1%R$2%tXpw29!6sXM%I&(s2ENzqA>x{o)c uF-~S{y}J!y!&BhA@lT~|>_B}8GnyG95{(ZrsgHyRG@S4Lym41CH~#^~(qJzD diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class new file mode 100644 index 0000000000000000000000000000000000000000..13ef878ee4421e2556cab73ad069996fb4dedbb2 GIT binary patch literal 1770 zcma)6QBxXM6#lNPEUXKnMXM1BF=_xCH*M3Vi6$*UtlNOG(V9tKoDJOKCa^HeTFX=a zMIZXmUyz3uW|Em^ravG*D${c>E3TxO_T`>?@1FCW?|kRnef#dOzX6m`j$#ZU6^f2= zgc+7vZry0Rt>?Vz8Qk$~uSF$i0Ful_~EC@ zp17XSp(Dl+KZ|%=D(pSnWmqi-6WJbb8mHW9x15eqv0b<278}-SXG362>PQIa*)xot zQlWfQDeM-GiVyb>gv+#!kA%zInG4y{?$)`Jh8fJN_*lmr<{2`<`&g3RFwNXy1PctRFOp!js3R>{#a{4k=MisOgy_^&WEc|9t)DF8#Iqa5 zBg?6^ni?)+NwB-h5X$Bb#d$@?Dy|Wx!+-Wn$74{kX3o?II;SHqTqkP0>T;{YAMmb< zPZ*Yim3>H74Qp6ZVKAhF?ju4FBxNkNYSi(`vhDEQljbw-9$3#BbTeIURjtOM<=W!x zUn<_Q-60Ye^csQn1=?V^lPyab8kSQx_C1%xAt5isUZ^0TH4$^Hrlj#61jE>Io0cXm z;lWTbT=`E}2K|^@jf&-1#a4&Jj@S5)+^L;ksCDigbla3Qna#aVow`w{r{Y?k=!R_L zQ)1xC{tCfHdrlH4HM>f9v3<{~zNlDjU&jPxB8>B)k!U78ufc}_i^yiR;SZ^{-#T%t zeA^bS(S3>6MM7MmahUOMzBd2$-iN`7}y-sQAg-J`#NLm_PvJr}-k)-too$k{e zBb&_kz6kI$2RvX!_D0WCk@1>Rb%)4-NT$gMuIW3weuFnI2NVW8n=hKY2}qwx+zo^4-*L zh~{4*tGo=o6!21;v@BtXC|pGx%cRf>>9L9wuFg@oLl4~>WC5gUMBWgEf-#dLLRM-A6o;>|;vt>ta&POQegK Zw=gDXNOa6n`xi*N3?`|H?T literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/entity/players/Assassin.class b/Java-Knight/target/classes/org/project/entity/players/Assassin.class new file mode 100644 index 0000000000000000000000000000000000000000..d83977c8601d1c1697801919ad746cb7e1b7b8a8 GIT binary patch literal 1292 zcmah}ZBN=z6n?I}6l(>Bg5uQS)D3Xjy}xOe5XC?ONCMOBlc~^Q4YZ`KbN;IhKA3FD ze!zazvU4v*MP2sgp3~cNpYxpOKJD*6KYjtoJ)wxi}8M{^v*WKeeUySb00`e7wk&NIYHC)yWHZEI#rt+}>gwl+CzNWnN{ z26BSvB0o&z3mM- zszMfq;Fe(;?gxhV>DxLKi~nYRAST!>7Bl-HJYWb71(vYHuz0=o?TKZiu*_MmF!<6O z;Socipg9`dkAK^0>I{*RVd|CB&XI1{wWBue#7b5}Ywv5e!JoZNzk6&r467qdZwx!6 zw#g8`W6aDxH8r&kwHQ0@($b+NIJhEGaRhl}7Ec4R)UmF$%bKZeTaHT(XzHJJvw5{4 zwRE?B-lYc9>CA1NNxiK`+q($4W}Vs%eb?Y4PY$VXaFb$*T#zK|2O)EJQYLdNib&oQ zk-h{G$xR}XWhe%~xZJcprl&k4%7B?{53C2Nhlw7-J;Zv5Utsn-y&6NBR+%CYL4v?D zlqrK_$YPD2IOG!#vP_V?HlAJkKj0L3JuUzfgF_x59mhKHr!S3L*n|E`&=Nt1vupDU zNq;;L58gpCNlMHK%)+4h5;N>!5&|~7k-|_Z^Kn!>#WVOt_MG+tB6~p@=kXG+JQnK| zxn{oD;x`HdeRv7T%vaj@ytW~{zLdKvh6Glk)jp(XvyX|NNPW7%!#={X)jn8sx{p{i i(np+Y&xH1K;vyv?6e2R?{P#eYKY>MY3vUF6w|@Z?#rRqP literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/entity/players/Knight.class b/Java-Knight/target/classes/org/project/entity/players/Knight.class index d0d7e57efbadb0bf76075f9685acc62df2437b11..11a2579c9f306d48ddf23d9b0e1106a30d27b07b 100644 GIT binary patch delta 81 zcmeC=>g3vx$IL3gAjTjxxtQ69RfIu=L2U97W`9;G23`i~$r3DOjEa-{S@akKChud> ik>_AwW#DAs0zwf6ZU#vP9tJs}Iz|R_1_lNu1`7aO?+c^= delta 81 zcmeC=>g3vx$IL3oAjTj(xtQ69Rg^)5L45KNW`9;`23`i4$r3DOj7pRHS@alFChud> hk>_M!W#9rrZlF3I21%eAIR-ukMh0^R1_mYu3jks23&j8c diff --git a/Java-Knight/target/classes/org/project/entity/players/Player.class b/Java-Knight/target/classes/org/project/entity/players/Player.class index cb1a0830300a3158c12f24dfafddd9191d7539f9..f3f302878ec25abb5a8e2febb1c18b2a38c1e0c7 100644 GIT binary patch literal 4795 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 diff --git a/Java-Knight/target/classes/org/project/entity/players/Wizard.class b/Java-Knight/target/classes/org/project/entity/players/Wizard.class new file mode 100644 index 0000000000000000000000000000000000000000..3f5c1c61dc575ea607ce8774be154267a39b1cf4 GIT binary patch literal 1291 zcmah}ZBG+H5Pp`vT)CbF3oR4@K~UQwobPWClLks?(v~Jvh<+hQyOtx@yXJbR_^Y)2 zK%$91z#nCt-CjYV$d{Sf-Pvbmo_+3q{r>(FKpwA#F@%7EpoS2_4D*iL&|9u^#A}|; zZO`;h^p<6uaJQ}RnO_XI&Y*4NH*;@`)%|j=lxK(+kBpCoZW(q%-|<}2ZmbH>h=yUP z3~E1ntHQtv;z-kQwWDrzJ(Oo)`pehT?~dE-1uMG8|2ZfTgt%>VhQ zNM0DiYo={_Zx~*uFH=z{T;2Sh9AdRl$m~XNn}B)@E117fc;Lt?=CB~zTx1BO1;jmq zC~?;^ZHC~wQ|AmLMbqZx{b_3HM%!hPjplQq>_htde0H>rUGv5!CqyZr9H@lm_>zCoL*4p3Yq6 znIW=Pqsiq%s5{QFTjQIi7&zKvbw#KY^Q3_kDL)KV$de*fXi<6+pY-%0NKaalo&-Za z1SYs9d!JT$C=>w`*$!9-N(a#nVjaXgNStEw8yyWHO;#ljj37zi8H%*tHDs|wD*^ey zhb$4K$W3IIt_K_=r6(j{vUkY`r0ZCw{^?T_0`{Rl6SP9mvFy_HOe&ZNCBg%mOc4`P z5_7AUeTEtHF$n=H{zx(C6a@q-9^w&#GI~sVAsIcPNc8a(&-^Zy$qUW`@!7BBdi;nK zkdn{23HW6rcz#BAMGgrpj=t|g5hnTrbMH=Zr;AwpZWnAc)kR#Ggy5b@?x*BKD%4Pf Uni&>92YUP{X5}lqkUhNo19jy0xBvhE literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/item/weapons/BoneHarpoon.class b/Java-Knight/target/classes/org/project/item/weapons/BoneHarpoon.class index 56f95e0914cccdb58c30909877742f617a0de7b4..93932301014b7117dfe89146bc1fcd97e03fa970 100644 GIT binary patch delta 13 UcmZ3-yN-85JR2kbe6M6ipOGP~a`vy0VJPrU?E5(FgPttuva*;heqB*?X_O*7-EQOym8h`39hXgPLIqzja=&9Nm;pFG`n(rK^$? z6UCST1tTU#F(}Z(yiDY;Zz}=zjhjdyS-%qxLaaOA%89jMU=w)_TQXB{&eRXju0Y&* zQsX`iMS%!m#Ch~&y(tK!ombCrb%IoK3}B*{Ytlu6r-clr7zMJJmi5HPtW+6;DLdOh zP(d>Bf=~lP3Tk{-An7c(qz^g*TtSyI+G=Z4k^nQ9C23W{IYNb(c`UT&q#30KH4uI7 z@cP`R{w|4XN8)0qHRn=M1(n6P<4ueK|12$aVR8-7?tQq6?$5D~CAdGt(HVCrVB7vW rggi7mQimb!iY~i8c%ktpbsAlEC9hzWQD;?-dkx#X8ALnS!#+a4U=cal delta 492 zcmYjN$xZ@66s(>Zm`OX55tIasN{qO$xZu8{h+FjJ)fhP#4<=$F-i#AI!OV|HNKD}1 z2YA)^6@G)UdO&14^WN*O_o}P<+y1oW`%m)?KoLhZX$!mO`l@nTx-AvT_Z2TGj%AqO zxQz)+)}KXHhz&2IUxcxk!*cATT)ug@GjZTO8E1hh2&B9( zW5i99NVt(a1`zRC6RpWMD>*QSoJ(R=&LhWBfdwqKugWqjOb;hsI=n&uDB7h`@2FhrjOKkR zs-U=0C9sJk@Xyjx7bn-?BQ3|f=>AMwScd;dyjq!8pX2n`AyhC`kjk#;vKvGICLhzH a(G_AERKFjYL@ delta 475 zcmYk2%TB^T6o&t4%Ozt=DoRXAL=uCSa#8VqM-kM8?*I#aclE0-pQc?(w(5|gs< z0o=OsWsLt6L^|m?|C}@P%|G+%bR7Bl)BgZa!(~_c!k)OfZe2C+n$`Qqma2-9OtQIP zV-ZU|C7y&hP@dUI97!Cb62pn^oT|Y55;gT~`PR8WM!i@W^=*|S%MkFD8<}h8Ns%xZ zZ8#i-PzlBaiYPG)tYB5Ir*6RH0MZ5j9aGWU05b;i)U&Q^1jribvda=DSI$YZynhFMmHgn))1JPh_@{rd1yFP#?4 zd&To&2fER(A&fo-^-4dwDd{3@#UM{HzcQp@nC~;Uc~nCbvFaJSV{D0kN%!`giWRI{ zuqG;b{vdy_OWXYNvKdsf{?Tu&pJue2@hO`Y^XtP%902saF8Ws0Vk0q zD#H|}o4pbgMNM`NJhpVrM#|G>Q*POuX;AsQ$yJEdF#`Pa8h(7l?xi7pZT!D6t(b-J yEz~P*bO9U=wF)KRs=?4lW6e#8Y{}k9EPQW4y1S?q3J>mdt@D?F)1FA?! z6o~_L%PqJ95@O<(wzBMb9?yGkY=0zvOws;reF8YfNmCR_kHeKdW!=1q0!9f#mlusw z|JtwL+%{5NH(_EDrQnGkh&H6BKU!M?+t`U=H$2&sZT*W5<+I@#N5on$hAY2~T4V}@ zX<3Nm?#iqppz&%V!DB`t;?;tOS&oDX=E8c$XV7^7iHi4zbmZzCV;Y*A(9jo3vQ$b5 zuc~qZY+D2%dpJPM9tj}AyAjIrKAI`5sGe4_#xc&>O`hx6 N=bd15fI5Gh^9R=9FxmhB diff --git a/Java-Knight/target/classes/org/project/item/weapons/MirrorClaws.class b/Java-Knight/target/classes/org/project/item/weapons/MirrorClaws.class index f3ade90fd5316c1ba2aedddf1269b2ca9354295f..3059d759b4cd6dd2271ac603b57c85e571497e6a 100644 GIT binary patch delta 487 zcmYk2$xZ@65QhJrVStRoXh0=~MO<)Ub6*if0arY6<0LVJ7>$sKXT5te{R%#S#DoN* z#Isj@9%FTnBAIm8KV4N{|6Q-HFPHxD-R=O$A>YumtlzAZ>xEkR{GxPqTDmUrBJ+>y zP%vd+8p8~IloyFi^``EozF7kiL|^XN17kbfP@l|Q9ec<)kQJF6@2H=)LxwPaw*~dd ze6@OcTXW!;zu5{}3=DBTq>UC6gc8>P23+*bNyTV4F^>g`42xJ2^`t9QsZtEYB29Q& z@G6K61X~Cwh|)<&sskyI1mHfDf-j47S?2;9p@?tsfdW1XKfy!_V`8C&6n1=o<(9U#CJ+-7 zi17n#weeGIjA!>EA(NdsJF|P{%zTC4!t&#{{|=ym)2^(G(Ad>w>#TXxtli$V)VWAX zm&LgdvY3B)6c0k|sI2`I*^}5uHGl(MIaJ^Fr)a2WC+8dsq*TXAsUN58TYx}Lm3--T zo-7g;eF$M%!5~2&K@p3L0!t|A_r%w*X+Wlsdqu2=xP?MA)x(s9JTsZ7yfBw8-!Mh* z!l55$50@508WW~R#^Y%ZnvfF9D6@@5D?}FYD%R+A<07N3+3rk-!Q=LuRD49UJ=DBD z{8}|soJUL6BKw#H1}u8Oh>?;YS&|D#jL`kBAczfkE4%kkSM*rkA3uBuaI_#9HjS(; VY%>PQwaZgMjW~%IkeZyCnB$w6m$=!M(SsQPf4K2N8`+#0`_M3IyCCYyw7fKpgjhECj*?Ly)q(NcjwT1HJIh zlG4&DDXp@+^BKJHL8Sb9B13Ng5%|% z&S2e0em0l2G@OFdi?a%vQ$ro1HE2O=`MDA*wJY#1m`}~NoM~m+ z^kN}vWmI%3a82cxW>s|2Gt5F#MGw7Od6QnR0?*j0mC2=4oLAtS%obH#RN&Uv7)Zrs zo*d2Qaw@KJcQ9qC7~t+;wm3JhVvxIW^C`8%3NASZ@{Bji?U{T&xuRl>ZakMwr&Ubw z)njwv*JoC2(ir2t6rB9(AgIUrl5i6;Gvx^kGrF> z+gxwp3LxM@0M)4H|9%{zo#AQ?PXa;Qfx)lT-X&+c{KkDUvZHOJ_8_XL^6{*|VOtx5 zlbV3kmVdbqoVd5m3y?lVP9>}RHur&@Q_K_Y-{Br5_ZYb$W_28mXtKEtRD$s;IZ3Y; zeySaeU#aY+XQ*___=q!!*Qnk=Gu?0^{2ui!9}t;Yr`ib_PRf?m!nKL07eU2~l%{!k zBJ(G|7v5m0l83|2!)JG@oq2R{3_EvKDYoNjHd|IXU!gFY1pj0�KngCuEJ0tr~Z; zyU6Y)yJw4ClCnME*}dR)1OE^2CA^RD^IPye*;O1aIZo5u{f3guuKAh2?lam9r|8fP zmpG>zZqcn99udwzeil6^@=OBs_3V!5^-8h4AEAL5!xDYjdq_Hr}c^J zw6)>}tzX>K$2Sn<3>=vVN5Wq|;ArRdXz4A}sB}n9K5!9f^uyx4uOV(1BIh^F`CY&w z_bsNMvu}Kjx+UJWgT+|eCAINSz7;p`VBZd04kR#Y11pcoZFhZAzNS2uNs$fNt*-xD SJ@Jnkf1b`0LJE{Su<{$vxUEM3 delta 1197 zcmb7DSx*yD6#k~`bf~4=5>Rj0#ZZ~DJ@_{KnBHe0S9PHp|plIKJ_n{^e>qB z3c+ZiL1TRL*(c*aF(H0;1_g~TzMP)kd%oqIbLUg#_mKAG@ZARh3FP;*jG}3%K$9Pr z&|Lbe)D>G51Xs*$GmpSM!GZlTT9Lwf%D*AaFPvuoy=WRT@xwx$225*PWZDMaK7;wf4 z)QjoSa-*p@)%G3S4t6mA+ zVUrF_Km#k_VVo?zbcdr;Jg?#j5QK}(mqGA<2sNn0U7q?`3Dja5I)5d0hCGucucsk( zjIAQJ8a|vx0B6WhV`1yyBqnr(m03AeBwvUc)#SOy+*Xh$6Fjkf-nW!y87E6GJgq~= zN@uBbj!Nh0?*jGeETt+UL1o*e%xonGo!Gtp@Fa>Cjkjo+c!jd}u+!GpsBC|O#@Rih zoscR`a^iRZgPsEz!9zTvry$~Z zj3?xtlS3?r>kwftY85Z$HOMBp3r?l(AggVhoDgr8!^CsNAuz_STOy29d{2>|n^UEZ=LI zZ*vJLR^@3lZS8Z1jb*q?2W>Cg=1U)aRXNEeUl+LV<8Q@%v>ydotPmp`jj&4Ax#doF Vnb_;F!O4Gs?ayG9pqy2`_7m^yl=}bx