The Enemy subclasses completed.
This commit is contained in:
@@ -22,6 +22,8 @@ public abstract class Enemy implements Entity {
|
||||
this.weapon = weapon;
|
||||
}
|
||||
|
||||
public abstract void attack(Entity target);
|
||||
|
||||
@Override
|
||||
public void takeDamage(int damage) {
|
||||
hp -= damage;
|
||||
|
||||
@@ -1,11 +1,39 @@
|
||||
package org.project.entity.enemies;
|
||||
|
||||
import org.project.entity.Entity;
|
||||
import org.project.item.weapons.BoneDagger;
|
||||
import org.project.item.weapons.ToothedHook;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class Goblin extends Enemy {
|
||||
private Random random;
|
||||
|
||||
public Goblin() {
|
||||
super("Goblin", 30, 30, new ToothedHook());
|
||||
super("Goblin", 30, 20, new ToothedHook());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target) {
|
||||
int damage = 10;
|
||||
boolean isCritical = false;
|
||||
|
||||
//Checking Critical Chance
|
||||
int chance = random.nextInt(100);
|
||||
if (chance > 30) { //Critical Chance = 70%
|
||||
damage *= 2;
|
||||
isCritical = true;
|
||||
}
|
||||
|
||||
target.takeDamage(damage);
|
||||
|
||||
if (isCritical) {
|
||||
System.out.println("💣 Goblin used CRITICAL STRIKE! ");
|
||||
System.out.println("💥 Goblin dealt " + damage + " damage to " + getName(target) + "!");
|
||||
} else {
|
||||
System.out.println("👹 Goblin attacked " + getName(target) + "!");
|
||||
System.out.println("💥 Goblin dealt " + damage + " damage to " + getName(target) + "!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,6 +43,6 @@ public class Goblin extends Enemy {
|
||||
|
||||
@Override
|
||||
public int getMaxMP() {
|
||||
return 30;
|
||||
return 20;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.project.entity.enemies;
|
||||
|
||||
import org.project.entity.Entity;
|
||||
import org.project.item.weapons.BoneDagger;
|
||||
|
||||
public class Skeleton extends Enemy {
|
||||
@@ -9,6 +10,17 @@ public class Skeleton extends Enemy {
|
||||
super("Skeleton", 40, 25, new BoneDagger());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target) {
|
||||
int damage = 10;
|
||||
|
||||
target.takeDamage(damage);
|
||||
|
||||
System.out.println("💀 Skeleton attacked " + getName(target) + "!");
|
||||
System.out.println("💥 Skeleton dealt " + damage + " damage to "
|
||||
+ getName(target) + "!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeDamage(int damage) {
|
||||
int newHp = getHp() - damage;
|
||||
@@ -20,14 +32,16 @@ public class Skeleton extends Enemy {
|
||||
hasResurrected = true;
|
||||
|
||||
System.out.println("💀 Skeleton has been defeated...");
|
||||
System.out.println("☠️ But Skeleton rises again! Resurrected with " + resurrectedHp + " HP!");
|
||||
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());
|
||||
System.out.println("💥 Skeleton took " + damage + " damage! HP: "
|
||||
+ getHp() + "/" + getMaxHP());
|
||||
|
||||
if (getHp() <= 0) {
|
||||
System.out.println("☠️ Skeleton has been destroyed for good!");
|
||||
|
||||
@@ -1,4 +1,44 @@
|
||||
package org.project.entity.enemies;
|
||||
|
||||
public class Vampire {
|
||||
import org.project.entity.Entity;
|
||||
import org.project.item.weapons.ToothedHook;
|
||||
|
||||
public class Vampire extends Enemy {
|
||||
public Vampire() {
|
||||
super("Vampire", 50, 40, new ToothedHook());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target) {
|
||||
int damage = 12;
|
||||
|
||||
target.takeDamage(damage);
|
||||
|
||||
//Adding to Vampire HP
|
||||
int healAmount = damage * 30 / 100;
|
||||
int newHp = getHp() + healAmount;
|
||||
if (newHp > getMaxHP()) {
|
||||
newHp = getMaxHP();
|
||||
}
|
||||
setHp(newHp);
|
||||
|
||||
System.out.println("🦇 Vampire attacks " + getName(target) + "!");
|
||||
System.out.println("💥 Dealt " + damage + " damage!");
|
||||
System.out.println("🩸 Life steal: Vampire drains " + healAmount + " HP and regenerates!");
|
||||
System.out.println("💚 Vampire HP: " + getHp() + "/" + getMaxHP());
|
||||
|
||||
if (getHp() == getMaxHP()) {
|
||||
System.out.println("🦇 Vampire is fully satiated!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxHP() {
|
||||
return 50;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxMP() {
|
||||
return 40;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,7 @@ import org.project.item.Item;
|
||||
|
||||
//The vampire's weapon
|
||||
public class Rapier extends Weapon implements Item {
|
||||
int abilityCharge;
|
||||
|
||||
public Rapier(int damage, int manaCost) {
|
||||
super(damage, manaCost);
|
||||
public Rapier() {
|
||||
super(20, 10);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user