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..5cb83d8 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java @@ -0,0 +1,75 @@ +package org.project.entity.enemies; + +import org.project.entity.Entity; +import org.project.entity.players.Player; +import org.project.item.weapons.BoneDagger; +import org.project.item.weapons.DragonClaw; + +import java.util.Random; + +public class Dragon extends Enemy { + private Random random; + + public Dragon() { + super("Dragon", 150, 100, new DragonClaw()); + this.random = new Random(); + } + + @Override + public void attack(Entity target) { + int chance = random.nextInt(100); + + if (chance > 40) { //Fire breath chance 60% + //Fire breath attack + fireBreath(target); + } else { + //Normal claw attack + normalAttack(target); + } + } + + private void normalAttack(Entity target) { + int damage = 25; + + if (target instanceof Player) { + Player player = (Player) target; + if (player.isDefending()) { + System.out.println("🐉 Dragon ignores your pathetic shield!"); + //Complete damage is done + } + } + + target.takeDamage(damage); + System.out.println("🐉 Dragon strikes with its claw!"); + System.out.println("💥 " + damage + " damage dealt to " + getName(target) + "!"); + } + + private void fireBreath(Entity target) { + int damage = 45; + + System.out.println("🐉🐉🐉 DRAGON BREATHES FIRE! 🐉🐉🐉"); + System.out.println("🔥🔥🔥 FIERY BREATH ENGULFS EVERYTHING! 🔥🔥🔥"); + + if (target instanceof Player) { + Player player = (Player) target; + if (player.isDefending()) { + System.out.println("🛡️ Your shield MELTS under the dragon's breath!"); + System.out.println("🔥 Defense is USELESS against this attack!"); + player.setDefending(false); //The defense is invalid + } + } + + target.takeDamage(damage); + System.out.println("💥 " + getName(target) + " takes " + damage + " MASSIVE damage!"); + } + + @Override + public int getMaxHP() { + return 150; + } + + @Override + public int getMaxMP() { + return 100; + } +} diff --git a/Java-Knight/src/main/java/org/project/item/weapons/BoneDagger.java b/Java-Knight/src/main/java/org/project/item/weapons/BoneDagger.java index 8ab1579..cc92cf8 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/BoneDagger.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/BoneDagger.java @@ -1,9 +1,7 @@ package org.project.item.weapons; -import org.project.item.Item; - //The skeleton's weapon -public class BoneDagger extends Weapon implements Item { +public class BoneDagger extends Weapon { public BoneDagger() { super(10, 5); } 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 8596d78..62e5c84 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,7 +3,7 @@ package org.project.item.weapons; import org.project.item.Item; //The assassin's weapon -public class Dagger extends Weapon implements Item { +public class Dagger extends Weapon { int abilityCharge; public Dagger() { diff --git a/Java-Knight/src/main/java/org/project/item/weapons/DragonClaw.java b/Java-Knight/src/main/java/org/project/item/weapons/DragonClaw.java new file mode 100644 index 0000000..3908eae --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/weapons/DragonClaw.java @@ -0,0 +1,8 @@ +package org.project.item.weapons; + +//The dragon's weapon +public class DragonClaw extends Weapon { + public DragonClaw() { + super(25, 20); + } +} \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Rapier.java b/Java-Knight/src/main/java/org/project/item/weapons/Rapier.java index a9a5880..675ae77 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Rapier.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Rapier.java @@ -1,9 +1,7 @@ package org.project.item.weapons; -import org.project.item.Item; - //The vampire's weapon -public class Rapier extends Weapon implements Item { +public class Rapier extends Weapon { public Rapier() { super(20, 10); } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/ToothedHook.java b/Java-Knight/src/main/java/org/project/item/weapons/ToothedHook.java index 22efe43..f9ad15b 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/ToothedHook.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/ToothedHook.java @@ -1,9 +1,7 @@ package org.project.item.weapons; -import org.project.item.Item; - //The goblin's weapon -public class ToothedHook extends Weapon implements Item { +public class ToothedHook extends Weapon { public ToothedHook() { super(15, 6); } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Wand.java b/Java-Knight/src/main/java/org/project/item/weapons/Wand.java index 317deec..4440e86 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Wand.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Wand.java @@ -1,9 +1,7 @@ package org.project.item.weapons; -import org.project.item.Item; - //The wizard's weapon -public class Wand extends Weapon implements Item { +public class Wand extends Weapon{ int abilityCharge; public Wand() {