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 7976ea1..c163c29 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 @@ -74,6 +74,24 @@ public abstract class Enemy implements Entity { return hp; } + @Override + public void heal(int health) { + //checking mana + if (mp < healCost) { + System.out.println("Not enough mana to heal!"); + return; + } + + //reducing mana + mp -= healCost; + + //increasing health + hp += health; + if (hp > getMaxHP()) { + hp = getMaxHP(); + } + } + public int getMp() { return mp; } @@ -94,4 +112,8 @@ public abstract class Enemy implements Entity { } return "Dragon"; } + + public void setHp(int newHp) { + hp = newHp; + } } 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..326b7b3 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,20 @@ package org.project.entity.enemies; -public class Goblin { +import org.project.item.weapons.BoneDagger; +import org.project.item.weapons.ToothedHook; + +public class Goblin extends Enemy { + public Goblin() { + super("Goblin", 30, 30, new ToothedHook()); + } + + @Override + public int getMaxHP() { + return 30; + } + + @Override + public int getMaxMP() { + return 30; + } } 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 b01438f..d3af5db 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 @@ -2,10 +2,53 @@ package org.project.entity.enemies; import org.project.item.weapons.BoneDagger; -// TODO: UPDATE IMPLEMENTATION public class Skeleton extends Enemy { - // TODO: DESIGN ENEMY AND IMPLEMENT THE CONSTRUCTOR + private boolean hasResurrected = false; + public Skeleton() { super("Skeleton", 40, 25, new BoneDagger()); } + + @Override + public void takeDamage(int damage) { + int newHp = getHp() - damage; + + if (newHp <= 0 && !hasResurrected) { + //Resurrecting + int resurrectedHp = getMaxHP() * 50 / 100; + setHp(resurrectedHp); + hasResurrected = true; + + System.out.println("💀 Skeleton has been defeated..."); + System.out.println("☠️ But Skeleton rises again! Resurrected with " + resurrectedHp + " HP!"); + return; + } + + setHp(newHp); + if (getHp() < 0) setHp(0); + + System.out.println("💥 Skeleton took " + damage + " damage! HP: " + getHp() + "/" + getMaxHP()); + + if (getHp() <= 0) { + System.out.println("☠️ Skeleton has been destroyed for good!"); + } + } + + @Override + public int getMaxHP() { + return 45; + } + + @Override + public int getMaxMP() { + return 25; + } + + public boolean hasResurrected() { + return hasResurrected; + } + + public void setHasResurrected(boolean hasResurrected) { + this.hasResurrected = hasResurrected; + } } 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 e97c60a..ed55516 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,6 +1,7 @@ package org.project.entity.players; import org.project.entity.Entity; +import org.project.entity.enemies.Enemy; import org.project.item.armors.Armor; import org.project.item.weapons.Sword; import org.project.item.weapons.Wand; @@ -23,8 +24,7 @@ public class Wizard extends Player implements Entity,ICombatActions { setMp(getMp()-15); target.takeDamage(30); - System.out.println("🔮 " + target.getName() + " took " + - 30 + " damage from Devastating Spell!"); + System.out.println("🔮 " + getName() + "used DEVASTATING SPELL Dealt" + 30 + " damage!"); int newHp = getHp() + 10; if (newHp > getMaxHP()) newHp = getMaxHP(); @@ -77,4 +77,5 @@ public class Wizard extends Player implements Entity,ICombatActions { if (getHp() > getMaxHP()) setHp(getMaxHP()); System.out.println("💚 " + getName() + " healed " + healAmount + " HP!"); } + } 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 ea41415..8ab1579 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 @@ -4,8 +4,6 @@ import org.project.item.Item; //The skeleton's weapon public class BoneDagger extends Weapon implements Item { - int abilityCharge; - public BoneDagger() { super(10, 5); } 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 502a27c..22efe43 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 @@ -4,9 +4,7 @@ import org.project.item.Item; //The goblin's weapon public class ToothedHook extends Weapon implements Item { - int abilityCharge; - - public ToothedHook(int damage, int manaCost) { - super(damage, manaCost); + public ToothedHook() { + super(15, 6); } } \ No newline at end of file