update enemies project
This commit is contained in:
@@ -9,32 +9,18 @@ import org.project.item.weapons.Weapon;
|
|||||||
public abstract class Enemy implements Entity {
|
public abstract class Enemy implements Entity {
|
||||||
Weapon weapon;
|
Weapon weapon;
|
||||||
private int hp;
|
private int hp;
|
||||||
|
private int maxHP;
|
||||||
private int mp;
|
private int mp;
|
||||||
|
private int maxMP;
|
||||||
|
private boolean defending = false;
|
||||||
|
private double defendRate;
|
||||||
|
|
||||||
public Enemy(int hp, int mp, Weapon weapon) {
|
public Enemy(int hp, int mp, Weapon weapon) {
|
||||||
this.hp = hp;
|
this.hp = hp;
|
||||||
this.mp = mp;
|
this.mp = mp;
|
||||||
|
|
||||||
this.weapon = weapon;
|
this.weapon = weapon;
|
||||||
}
|
}
|
||||||
|
//implement this in Main
|
||||||
@Override
|
|
||||||
public void takeDamage(int damage) {
|
|
||||||
hp -= damage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHp() {
|
|
||||||
return hp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getMp() {
|
|
||||||
return mp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Weapon getWeapon() {
|
|
||||||
return weapon;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkTargetAbility(Player target) {
|
private boolean checkTargetAbility(Player target) {
|
||||||
if (target instanceof Knight) {
|
if (target instanceof Knight) {
|
||||||
boolean check = target.getUsingSpecialAbility();
|
boolean check = target.getUsingSpecialAbility();
|
||||||
@@ -42,5 +28,101 @@ public abstract class Enemy implements Entity {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attack(Entity target, double multiplier) {
|
||||||
|
if (checkTargetAbility((Player) target)){
|
||||||
|
System.out.println("target is using special ability");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double damage = multiplier * weapon.getDamage();
|
||||||
|
if (target.isDefending()) {
|
||||||
|
target.takeDamage( (int) (damage * (1 - target.getDefendRate())));
|
||||||
|
target.setDefending(false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
target.takeDamage((int) damage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void defend(){
|
||||||
|
setDefending(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void heal(int health) {
|
||||||
|
setHP(getHP() + health);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void takeDamage(int damage) {
|
||||||
|
setHP(getHP() - damage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getHP() {
|
||||||
|
return hp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setHP(int hp) {
|
||||||
|
this.hp = hp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxHP() {
|
||||||
|
return maxHP;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMaxHP(int maxHP) {
|
||||||
|
this.maxHP = maxHP;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMP() {
|
||||||
|
return mp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMP(int mp) {
|
||||||
|
this.mp = mp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxMP() {
|
||||||
|
return maxMP;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMaxMP(int maxMP) {
|
||||||
|
this.maxMP = maxMP;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDefending() {
|
||||||
|
return defending;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDefending(boolean defending) {
|
||||||
|
this.defending = defending;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getDefendRate() {
|
||||||
|
return defendRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDefendRate(double defendRate) {
|
||||||
|
this.defendRate = defendRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Weapon getWeapon() {
|
||||||
|
return weapon;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package org.project.entity.enemies;
|
||||||
|
|
||||||
|
import org.project.entity.Entity;
|
||||||
|
import org.project.item.weapons.Weapon;
|
||||||
|
|
||||||
|
public class Goblin extends Enemy{
|
||||||
|
public Goblin(int hp, int mp, Weapon weapon) {
|
||||||
|
super(hp,mp,weapon);
|
||||||
|
setDefendRate(.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attack(Entity target, double multiplier) {
|
||||||
|
if (getMP() > 5) {
|
||||||
|
super.attack(target,2);
|
||||||
|
setMP(getMP() - 5);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void defend() {
|
||||||
|
if (getMP() >= 5) {
|
||||||
|
super.defend();
|
||||||
|
setMP(getMP() - 5);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void heal(int health) {
|
||||||
|
if (getMP() >= 6) {
|
||||||
|
super.heal(health);
|
||||||
|
setMP(getMP() - 6);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,56 @@
|
|||||||
package org.project.entity.enemies;
|
package org.project.entity.enemies;
|
||||||
|
|
||||||
// TODO: UPDATE IMPLEMENTATION
|
|
||||||
public class Skeleton {
|
import org.project.entity.Entity;
|
||||||
// TODO: DESIGN ENEMY AND IMPLEMENT THE CONSTRUCTOR
|
import org.project.item.weapons.Weapon;
|
||||||
|
|
||||||
|
public class Skeleton extends Enemy{
|
||||||
|
|
||||||
|
public Skeleton(int hp, int mp, Weapon weapon) {
|
||||||
|
super(hp,mp,weapon);
|
||||||
|
setDefendRate(.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attack(Entity target, double multiplier) {
|
||||||
|
if (getMP() > 5) {
|
||||||
|
super.attack(target,1);
|
||||||
|
setMP(getMP() - 5);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void defend() {
|
||||||
|
if (getMP() >= 3) {
|
||||||
|
super.defend();
|
||||||
|
setMP(getMP() - 3);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void heal(int health) {
|
||||||
|
if (getMP() >= 6) {
|
||||||
|
super.heal(health);
|
||||||
|
setMP(getMP() - 6);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void takeDamage(int damage) {
|
||||||
|
super.takeDamage(damage);
|
||||||
|
if (getHP() <= 0) {
|
||||||
|
setHP(getMaxHP() / 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package org.project.entity.enemies;
|
||||||
|
|
||||||
|
import org.project.entity.Entity;
|
||||||
|
import org.project.item.weapons.Weapon;
|
||||||
|
|
||||||
|
public class Vampire extends Enemy{
|
||||||
|
|
||||||
|
public Vampire(int hp, int mp, Weapon weapon) {
|
||||||
|
super(hp,mp,weapon);
|
||||||
|
setDefendRate(.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attack(Entity target, double multiplier) {
|
||||||
|
if (getMP() > 5) {
|
||||||
|
super.attack(target,1.5);
|
||||||
|
setMP(getMP() - 5);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
|
||||||
|
double damage = weapon.getDamage() * multiplier;
|
||||||
|
if (target.isDefending()) {
|
||||||
|
heal( (int) (.3 * (damage * (1 - target.getDefendRate()))));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
heal( (int) (.3 * damage));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void defend() {
|
||||||
|
if (getMP() >= 3) {
|
||||||
|
super.defend();
|
||||||
|
setMP(getMP() - 3);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void heal(int health) {
|
||||||
|
if (getMP() >= 6) {
|
||||||
|
super.heal(health);
|
||||||
|
setMP(getMP() - 6);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Not enough MP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,7 +30,7 @@ public abstract class Player implements Entity, combatOptions {
|
|||||||
public void attack(Entity target, double multiplier) {
|
public void attack(Entity target, double multiplier) {
|
||||||
double damage = multiplier * weapon.getDamage();
|
double damage = multiplier * weapon.getDamage();
|
||||||
if (target.isDefending()) {
|
if (target.isDefending()) {
|
||||||
target.takeDamage( (int) (damage * (1 - getDefendRate())));
|
target.takeDamage( (int) (damage * (1 - target.getDefendRate())));
|
||||||
target.setDefending(false);
|
target.setDefending(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class Sword {
|
|||||||
public void uniqueAbility(ArrayList<Entity> targets) {
|
public void uniqueAbility(ArrayList<Entity> targets) {
|
||||||
abilityCharge += 2;
|
abilityCharge += 2;
|
||||||
for (Entity target : targets) {
|
for (Entity target : targets) {
|
||||||
target.takeDamage(getDamage());
|
target.takeDamage(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user