update entity
This commit is contained in:
@@ -3,7 +3,7 @@ package org.project.entity;
|
||||
import org.project.item.weapons.Weapon;
|
||||
|
||||
public interface Entity {
|
||||
void attack(Entity target, double multiplier);
|
||||
void attack(Entity target);
|
||||
|
||||
void defend();
|
||||
|
||||
@@ -37,6 +37,10 @@ public interface Entity {
|
||||
|
||||
Weapon getWeapon();
|
||||
|
||||
double getAttackMultiplier();
|
||||
|
||||
void setAttackMultiplier(double multiplier);
|
||||
|
||||
default boolean isAlive() {
|
||||
int hp = getHP();
|
||||
return hp > 0;
|
||||
|
||||
@@ -14,6 +14,7 @@ public abstract class Enemy implements Entity {
|
||||
private int maxMP;
|
||||
private boolean defending = false;
|
||||
private double defendRate;
|
||||
private double attackMultiplier = 1;
|
||||
|
||||
public Enemy(int hp, int mp, Weapon weapon) {
|
||||
this.hp = hp;
|
||||
@@ -32,13 +33,13 @@ public abstract class Enemy implements Entity {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
public void attack(Entity target) {
|
||||
if (getMP() >= weapon.getManaCost()) {
|
||||
if (checkTargetAbility((Player) target)) {
|
||||
System.out.println("target is using special ability");
|
||||
return;
|
||||
}
|
||||
double damage = multiplier * weapon.getDamage();
|
||||
double damage = getAttackMultiplier() * weapon.getDamage();
|
||||
if (target.isDefending()) {
|
||||
target.takeDamage((int) (damage * (1 - target.getDefendRate())));
|
||||
target.setDefending(false);
|
||||
@@ -129,5 +130,15 @@ public abstract class Enemy implements Entity {
|
||||
public Weapon getWeapon() {
|
||||
return weapon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getAttackMultiplier() {
|
||||
return attackMultiplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAttackMultiplier(double multiplier) {
|
||||
attackMultiplier = multiplier;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,10 @@ public class Goblin extends Enemy{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
super.attack(target,2);
|
||||
public void attack(Entity target) {
|
||||
setAttackMultiplier(2);
|
||||
super.attack(target);
|
||||
setAttackMultiplier(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,8 +12,8 @@ public class Skeleton extends Enemy{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
super.attack(target,1);
|
||||
public void attack(Entity target) {
|
||||
super.attack(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,9 +11,11 @@ public class Vampire extends Enemy{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
super.attack(target,1.5);
|
||||
double damage = weapon.getDamage() * multiplier;
|
||||
public void attack(Entity target) {
|
||||
setAttackMultiplier(1.5);
|
||||
super.attack(target);
|
||||
double damage = weapon.getDamage() * getAttackMultiplier();
|
||||
setAttackMultiplier(1);
|
||||
if (target.isDefending()) {
|
||||
heal( (int) (.3 * (damage * (1 - target.getDefendRate()))));
|
||||
}
|
||||
|
||||
@@ -14,18 +14,22 @@ public class Assassin extends Player {
|
||||
|
||||
@Override
|
||||
public void lightAttack(Entity target) {
|
||||
attack(target, 1);
|
||||
attack(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heavyAttack(Entity target) {
|
||||
if (getUsingSpecialAbility()) {
|
||||
attack(target, 3);
|
||||
setAttackMultiplier(3);
|
||||
attack(target);
|
||||
setAttackMultiplier(1);
|
||||
setUsingSpecialAbility(false);
|
||||
}
|
||||
|
||||
else if (getMP() >= weapon.getManaCost()) {
|
||||
attack(target, 2.5);
|
||||
setAttackMultiplier(2.5);
|
||||
attack(target);
|
||||
setAttackMultiplier(1);
|
||||
setMP(getMP() - weapon.getManaCost());
|
||||
} else {
|
||||
System.out.println("Not enough MP");
|
||||
|
||||
@@ -14,13 +14,15 @@ public class Knight extends Player {
|
||||
|
||||
@Override
|
||||
public void lightAttack(Entity target) {
|
||||
attack(target, 1);
|
||||
attack(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heavyAttack(Entity target) {
|
||||
if (getMP() >= weapon.getManaCost()) {
|
||||
attack(target, 1.8);
|
||||
setAttackMultiplier(1.8);
|
||||
attack(target);
|
||||
setAttackMultiplier(1);
|
||||
setMP(getMP() - weapon.getManaCost());
|
||||
}
|
||||
else {
|
||||
@@ -43,7 +45,9 @@ public class Knight extends Player {
|
||||
public void specialAbility(Entity target) {
|
||||
if (getMP() >= 20) {
|
||||
setUsingSpecialAbility(true);
|
||||
attack(target, 2);
|
||||
setAttackMultiplier(2);
|
||||
attack(target);
|
||||
setAttackMultiplier(1);
|
||||
setMP(getMP() - 20);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -16,6 +16,7 @@ public abstract class Player implements Entity, combatOptions {
|
||||
private boolean defending = false;
|
||||
private double defendRate;
|
||||
private boolean isUsingSpecialAbility = false;
|
||||
private double attackMultiplier = 1;
|
||||
|
||||
public Player(String name, int hp, int mp, Weapon weapon, Armor armor) {
|
||||
this.name = name;
|
||||
@@ -28,8 +29,8 @@ public abstract class Player implements Entity, combatOptions {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
double damage = multiplier * weapon.getDamage();
|
||||
public void attack(Entity target) {
|
||||
double damage = getAttackMultiplier() * weapon.getDamage();
|
||||
if (target.isDefending()) {
|
||||
target.takeDamage( (int) (damage * (1 - target.getDefendRate())));
|
||||
target.setDefending(false);
|
||||
@@ -148,4 +149,14 @@ public abstract class Player implements Entity, combatOptions {
|
||||
|
||||
public void setUsingSpecialAbility(boolean isUsingSpecialAbility) { this.isUsingSpecialAbility = isUsingSpecialAbility; }
|
||||
|
||||
@Override
|
||||
public double getAttackMultiplier() {
|
||||
return attackMultiplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAttackMultiplier(double multiplier) {
|
||||
attackMultiplier = multiplier;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,13 +13,15 @@ public class Wizard extends Player{
|
||||
|
||||
@Override
|
||||
public void lightAttack(Entity target) {
|
||||
attack(target, 1);
|
||||
attack(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heavyAttack(Entity target) {
|
||||
if (getMP() >= weapon.getManaCost()) {
|
||||
attack(target, 1.6);
|
||||
setAttackMultiplier(1.6);
|
||||
attack(target);
|
||||
setAttackMultiplier(1);
|
||||
setMP(getMP() - weapon.getManaCost());
|
||||
}
|
||||
else {
|
||||
@@ -41,7 +43,9 @@ public class Wizard extends Player{
|
||||
@Override
|
||||
public void specialAbility(Entity target) {
|
||||
if (getMP() >= 20) {
|
||||
attack(target, 2);
|
||||
setAttackMultiplier(2);
|
||||
attack(target);
|
||||
setAttackMultiplier(1);
|
||||
setMP(getMP() - 20);
|
||||
setHP(getHP() + 10);
|
||||
}
|
||||
|
||||
@@ -3,9 +3,5 @@ package org.project.item;
|
||||
import org.project.entity.Entity;
|
||||
|
||||
public interface Item {
|
||||
void use(Entity target);
|
||||
|
||||
/*
|
||||
TODO: ADD OTHER REQUIRED AND BONUS METHODS
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -13,11 +13,6 @@ public abstract class Weapon implements Item {
|
||||
this.manaCost = manaCost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void use(Entity target) {
|
||||
target.takeDamage(damage);
|
||||
}
|
||||
|
||||
public int getDamage() {
|
||||
return damage;
|
||||
}
|
||||
@@ -26,7 +21,5 @@ public abstract class Weapon implements Item {
|
||||
return manaCost;
|
||||
}
|
||||
|
||||
/*
|
||||
TODO: ADD OTHER REQUIRED AND BONUS METHODS
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user