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