The Enemy subclasses completed.
This commit is contained in:
@@ -22,6 +22,8 @@ public abstract class Enemy implements Entity {
|
|||||||
this.weapon = weapon;
|
this.weapon = weapon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void attack(Entity target);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void takeDamage(int damage) {
|
public void takeDamage(int damage) {
|
||||||
hp -= damage;
|
hp -= damage;
|
||||||
|
|||||||
@@ -1,11 +1,39 @@
|
|||||||
package org.project.entity.enemies;
|
package org.project.entity.enemies;
|
||||||
|
|
||||||
|
import org.project.entity.Entity;
|
||||||
import org.project.item.weapons.BoneDagger;
|
import org.project.item.weapons.BoneDagger;
|
||||||
import org.project.item.weapons.ToothedHook;
|
import org.project.item.weapons.ToothedHook;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class Goblin extends Enemy {
|
public class Goblin extends Enemy {
|
||||||
|
private Random random;
|
||||||
|
|
||||||
public Goblin() {
|
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
|
@Override
|
||||||
@@ -15,6 +43,6 @@ public class Goblin extends Enemy {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxMP() {
|
public int getMaxMP() {
|
||||||
return 30;
|
return 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.project.entity.enemies;
|
package org.project.entity.enemies;
|
||||||
|
|
||||||
|
import org.project.entity.Entity;
|
||||||
import org.project.item.weapons.BoneDagger;
|
import org.project.item.weapons.BoneDagger;
|
||||||
|
|
||||||
public class Skeleton extends Enemy {
|
public class Skeleton extends Enemy {
|
||||||
@@ -9,6 +10,17 @@ public class Skeleton extends Enemy {
|
|||||||
super("Skeleton", 40, 25, new BoneDagger());
|
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
|
@Override
|
||||||
public void takeDamage(int damage) {
|
public void takeDamage(int damage) {
|
||||||
int newHp = getHp() - damage;
|
int newHp = getHp() - damage;
|
||||||
@@ -20,14 +32,16 @@ public class Skeleton extends Enemy {
|
|||||||
hasResurrected = true;
|
hasResurrected = true;
|
||||||
|
|
||||||
System.out.println("💀 Skeleton has been defeated...");
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setHp(newHp);
|
setHp(newHp);
|
||||||
if (getHp() < 0) setHp(0);
|
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) {
|
if (getHp() <= 0) {
|
||||||
System.out.println("☠️ Skeleton has been destroyed for good!");
|
System.out.println("☠️ Skeleton has been destroyed for good!");
|
||||||
|
|||||||
@@ -1,4 +1,44 @@
|
|||||||
package org.project.entity.enemies;
|
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
|
//The vampire's weapon
|
||||||
public class Rapier extends Weapon implements Item {
|
public class Rapier extends Weapon implements Item {
|
||||||
int abilityCharge;
|
public Rapier() {
|
||||||
|
super(20, 10);
|
||||||
public Rapier(int damage, int manaCost) {
|
|
||||||
super(damage, manaCost);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user