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; 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
*/
} }