diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 4158879..af1c02b 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -16,5 +16,10 @@
+
+
+
+
+
\ No newline at end of file
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 2a060f9..d0be577 100644
--- a/Java-Knight/src/main/java/org/project/entity/Entity.java
+++ b/Java-Knight/src/main/java/org/project/entity/Entity.java
@@ -1,6 +1,7 @@
package org.project.entity;
public interface Entity {
+
void attack(Entity target);
void defend();
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
new file mode 100644
index 0000000..b786431
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java
@@ -0,0 +1,13 @@
+package org.project.entity.players;
+
+import org.project.entity.Entity;
+import org.project.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
+public class Assassin extends Player implements Entity {
+ public Assassin(String name, int hp, int mp, Weapon weapon, Armor armor) {
+ super(name, hp, mp, weapon, armor);
+ setMaxMP(60);
+ setMaxHP(45);
+ }
+}
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 14d8fa2..8201821 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
@@ -1,6 +1,16 @@
package org.project.entity.players;
-// TODO: UPDATE IMPLEMENTATION
-public class Knight {
+import org.project.entity.Entity;
+import org.project.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
+
+public class Knight extends Player implements Entity {
+ public Knight(String name, int hp, int mp, Weapon weapon, Armor armor) {
+ super(name, hp, mp, weapon, armor);
+ setMaxMP(45);
+ setMaxHP(45);
+ }
// TODO: DESIGN KNIGHT'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR
+
}
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 ff5385c..9195271 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
@@ -4,8 +4,8 @@ import org.project.entity.Entity;
import org.project.item.armors.Armor;
import org.project.item.weapons.Weapon;
-// TODO: UPDATE IMPLEMENTATION
-public abstract class Player {
+
+public abstract class Player implements Entity {
protected String name;
Weapon weapon;
Armor armor;
@@ -13,6 +13,9 @@ public abstract class Player {
private int maxHP;
private int mp;
private int maxMP;
+ private final int defendCost = 6;
+ private boolean isDefending = false;
+ private final int healCost = 12;
public Player(String name, int hp, int mp, Weapon weapon, Armor armor) {
this.name = name;
@@ -30,17 +33,48 @@ public abstract class Player {
@Override
public void defend() {
- // TODO
- }
+ //checking mana
+ if (mp < defendCost) {
+ System.out.println("Not enough mana to defend!");
+ return;
+ }
+ //reducing mana
+ mp -= defendCost;
+
+ //activating defense mode
+ isDefending = true;
+
+ System.out.println("🛡️ " + name + " raises shield, preparing to block next attack!");
+ }
@Override
public void takeDamage(int damage) {
- hp -= damage - armor.getDefense();
+ int actualDamage = damage;
+
+ //reducing damage if the player is in defend mode
+ if (isDefending) {
+ actualDamage = damage / 2;
+ System.out.println("🛡️ Defense reduced damage from " + damage + " to " + actualDamage);
+ isDefending = false;
+ }
+
+ hp -= actualDamage;
+ if (hp < 0) {hp = 0;}
}
@Override
public void heal(int health) {
+ //checking mana
+ if (mp < healCost) {
+ System.out.println("Not enough mana to heal!");
+ return;
+ }
+
+ //reducing mana
+ mp -= healCost;
+
+ //increasing health
hp += health;
if (hp > maxHP) {
hp = maxHP;
@@ -49,10 +83,19 @@ public abstract class Player {
@Override
public void fillMana(int mana) {
+ int oldMana = mp;
+ mp += mana;
+
mp += mana;
if (mp > maxMP) {
mp = maxMP;
}
+
+ if (mp == maxMP) {
+ System.out.println("Mana is now full! (" + mp + "/" + maxMP + ")");
+ } else {
+ System.out.println("Mana increased from " + oldMana + " to " + mp);
+ }
}
@@ -86,4 +129,11 @@ public abstract class Player {
return armor;
}
+ public void setMaxMP(int amount) {
+ maxMP = amount;
+ }
+
+ public void setMaxHP(int amount) {
+ maxHP = amount;
+ }
}
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
new file mode 100644
index 0000000..ae37b40
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java
@@ -0,0 +1,13 @@
+package org.project.entity.players;
+
+import org.project.entity.Entity;
+import org.project.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
+public class Wizard extends Player implements Entity {
+ public Wizard (String name, int hp, int mp, Weapon weapon, Armor armor) {
+ super(name, hp, mp, weapon, armor);
+ setMaxMP(45);
+ setMaxHP(60);
+ }
+}