diff --git a/Java-Knight/src/main/java/org/project/entity/Entity.java b/Java-Knight/src/main/java/org/project/entity/Entity.java index ea83da8..4a3e219 100644 --- a/Java-Knight/src/main/java/org/project/entity/Entity.java +++ b/Java-Knight/src/main/java/org/project/entity/Entity.java @@ -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; diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java index b891d92..746c38c 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java @@ -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; + } } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java index 77c6ccb..6f3471d 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java @@ -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 diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java index 01b74ca..0aa3919 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java @@ -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 diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java index 1960690..969e1af 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java @@ -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())))); } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java index c678b51..ffccbd9 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java @@ -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"); diff --git a/Java-Knight/src/main/java/org/project/entity/players/Knight.java b/Java-Knight/src/main/java/org/project/entity/players/Knight.java index 0e9f68a..8ace541 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Knight.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Knight.java @@ -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 { diff --git a/Java-Knight/src/main/java/org/project/entity/players/Player.java b/Java-Knight/src/main/java/org/project/entity/players/Player.java index 7dfd7d9..25941fe 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Player.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Player.java @@ -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; + } + } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java index 2ae2fc1..148d7ff 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java @@ -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); } diff --git a/Java-Knight/src/main/java/org/project/item/Item.java b/Java-Knight/src/main/java/org/project/item/Item.java index 6d6b5ad..b3eefb6 100644 --- a/Java-Knight/src/main/java/org/project/item/Item.java +++ b/Java-Knight/src/main/java/org/project/item/Item.java @@ -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 - */ } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java b/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java index f98b149..67dcc12 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java @@ -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 - */ + }