update entity

This commit is contained in:
2026-05-07 00:17:11 +03:30
parent 0a6c6034a3
commit 29dbb6d7ad
11 changed files with 64 additions and 33 deletions
@@ -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
*/
}