diff --git a/Java-Knight/src/main/java/org/project/Main.java b/Java-Knight/src/main/java/org/project/Main.java index 79b377e..30b3e74 100644 --- a/Java-Knight/src/main/java/org/project/Main.java +++ b/Java-Knight/src/main/java/org/project/Main.java @@ -108,7 +108,8 @@ public class Main { while (player.isAlive() && enemy.isAlive()) { if (turn == 0) { turn = 1; - System.out.println("choose your action:\n1.light attack 2.heavy attack 3.defend 4.heal 5.special ability"); + System.out.println("choose your action:\n1.light attack 2.heavy attack " + + "3.defend 4.heal 5.special ability 6.flask"); choice = sc.nextInt(); switch (choice) { case 1: @@ -131,8 +132,15 @@ public class Main { player.specialAbility(enemy); if (player.isSuccessfulAction()) break; else {turn = 0; continue;} + + case 6: + player.getFlask().use(player); + break; + default: System.out.println("invalid choice"); + turn = 0; + continue; } System.out.println("[" + player.getClass().getSimpleName() + " - " + player.getHP() + "/" + player.getMaxHP() + " HP | " + player.getMP() + "/" + player.getMaxMP() + " Mana" + "]"); 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 new file mode 100644 index 0000000..2d70780 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java @@ -0,0 +1,60 @@ +package org.project.entity.enemies; + +import org.project.entity.Entity; +import org.project.item.weapons.Sword; + +public class Dragon extends Enemy { + + private static final int FIRE_BREATH_MP_COST = 30; + private int fireBreathCharge = 0; + + public Dragon() { + + super(200, 150, new Sword()); + setDefendRate(.5); + } + + @Override + public void attack(Entity target) { + System.out.println("Dragon breathes fire at " + target.getClass().getSimpleName() + "!"); + fireBreathCharge++; + + double damage = getAttackMultiplier() * getWeapon().getDamage(); + + if (fireBreathCharge >= 3) { + fireBreathCharge = 0; + System.out.println("FIRE BREATH! Dragon unleashes a devastating inferno!"); + damage *= 2; + if (target.isDefending()) { + target.setDefending(false); + } + target.takeDamage((int) damage); + setMP(getMP() - FIRE_BREATH_MP_COST); + } + + if (target.isDefending()) { + target.setDefending(false); + } + + target.takeDamage((int) damage); + setMP(getMP() - getWeapon().getManaCost()); + } + + @Override + public void defend() { + System.out.println("Dragon roars and ignores the chance to defend!"); + setSuccessfulAction(false); + } + + @Override + public void heal(int health) { + if (getMP() >= 20) { + System.out.println("Dragon regenerates " + health + " HP!"); + setHP(getHP() + health); + setMP(getMP() - 20); + } else { + System.out.println("Dragon has no mana to regenerate!"); + setSuccessfulAction(false); + } + } +} \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java index 45a3ec1..d2845a5 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java @@ -24,7 +24,7 @@ public abstract class Enemy implements Entity { this.mp = mp; this.maxMP = mp; this.weapon = weapon; - if (!keyFound) { hasKey = Math.random() < .2;} + if (!keyFound) { hasKey = Math.random() < .9;} } @Override diff --git a/Java-Knight/target/classes/org/project/Main.class b/Java-Knight/target/classes/org/project/Main.class index 64d692e..88934e8 100644 Binary files a/Java-Knight/target/classes/org/project/Main.class and b/Java-Knight/target/classes/org/project/Main.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class index 6a55c5c..7aa7328 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class and b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class index 838dce5..665930c 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class and b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class differ 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 f906bee..3010482 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class and b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class index b0a21a5..0b56b74 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class and b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/Assassin.class b/Java-Knight/target/classes/org/project/entity/players/Assassin.class index d637b36..4627003 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Assassin.class and b/Java-Knight/target/classes/org/project/entity/players/Assassin.class differ 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 6654b51..fe7fc1e 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Knight.class and b/Java-Knight/target/classes/org/project/entity/players/Knight.class differ 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 eb2c678..c33ffb6 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Player.class and b/Java-Knight/target/classes/org/project/entity/players/Player.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/Wizard.class b/Java-Knight/target/classes/org/project/entity/players/Wizard.class index e28c603..f27d4f2 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Wizard.class and b/Java-Knight/target/classes/org/project/entity/players/Wizard.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/combatOptions.class b/Java-Knight/target/classes/org/project/entity/players/combatOptions.class deleted file mode 100644 index 732a1c1..0000000 Binary files a/Java-Knight/target/classes/org/project/entity/players/combatOptions.class and /dev/null differ diff --git a/Java-Knight/target/classes/org/project/item/consumables/Consumable.class b/Java-Knight/target/classes/org/project/item/consumables/Consumable.class index 5b818fb..5a9e76b 100644 Binary files a/Java-Knight/target/classes/org/project/item/consumables/Consumable.class and b/Java-Knight/target/classes/org/project/item/consumables/Consumable.class differ diff --git a/Java-Knight/target/classes/org/project/item/consumables/Flask.class b/Java-Knight/target/classes/org/project/item/consumables/Flask.class index 48e724e..b1ebb43 100644 Binary files a/Java-Knight/target/classes/org/project/item/consumables/Flask.class and b/Java-Knight/target/classes/org/project/item/consumables/Flask.class differ