diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 4158879..4e0bf3c 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..d8a57fa 100644
--- a/Java-Knight/src/main/java/org/project/entity/Entity.java
+++ b/Java-Knight/src/main/java/org/project/entity/Entity.java
@@ -1,7 +1,8 @@
package org.project.entity;
public interface Entity {
- void attack(Entity target);
+// void attack(Entity target);
+
void defend();
@@ -11,10 +12,20 @@ public interface Entity {
void takeDamage(int damage);
+ void specialAbility(Entity target);
+
+ void stun();
+
int getMaxHP();
int getMaxMP();
+ boolean isStunned();
+
+ void stun(boolean value);
+
+
+
/*
TODO: ADD OTHER REQUIRED AND BONUS METHODS
*/
diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java
new file mode 100644
index 0000000..dd23a5c
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java
@@ -0,0 +1,4 @@
+package org.project.entity.enemies;
+
+public class Dragon extends Enemy{
+}
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 e019acb..f3f6fcb 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
@@ -1,12 +1,14 @@
package org.project.entity.enemies;
+import org.project.entity.Entity;
import org.project.item.weapons.Weapon;
// TODO: UPDATE IMPLEMENTATION
-public abstract class Enemy {
+public abstract class Enemy implements Entity {
Weapon weapon;
private int hp;
private int mp;
+ private boolean stunned = false;
public Enemy(int hp, int mp, Weapon weapon) {
this.hp = hp;
@@ -20,6 +22,16 @@ public abstract class Enemy {
hp -= damage;
}
+ @Override
+ public void stun(boolean value) {
+ stunned = value;
+ }
+
+ @Override
+ public boolean isStunned() {
+ return stunned;
+ }
+
public int getHp() {
return hp;
}
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
new file mode 100644
index 0000000..02aa9f0
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java
@@ -0,0 +1,4 @@
+package org.project.entity.enemies;
+
+public class Goblin extends Enemy{
+}
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
new file mode 100644
index 0000000..f2323fb
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java
@@ -0,0 +1,4 @@
+package org.project.entity.enemies;
+
+public class Vampire extends Enemy{
+}
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..8b73f20
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java
@@ -0,0 +1,18 @@
+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{
+
+ public Assassin(String name, int hp, int mp, Weapon weapon, Armor armor){
+ super(name, hp, mp, weapon, armor, 300,50);
+ }
+
+ @Override
+ public void specialAbility(Entity target) {
+ System.out.println("Turning invisible...");
+ this.defend();
+ }
+}
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..ee2c846 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,20 @@
package org.project.entity.players;
+import org.project.entity.Entity;
+import org.project.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
// TODO: UPDATE IMPLEMENTATION
-public class Knight {
- // TODO: DESIGN KNIGHT'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR
+public class Knight extends Player {
+
+ public Knight(String name, int hp, int mp, Weapon weapon, Armor armor){
+ super(name, hp, mp, weapon, armor, 400,40);
+ }
+
+ @Override
+ public void specialAbility(Entity target) {
+ System.out.println("Performing shield bash...");
+ target.stun(true);
+ target.takeDamage(50);
+ }
}
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..df7615e 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
@@ -5,7 +5,7 @@ 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,34 +13,53 @@ public abstract class Player {
private int maxHP;
private int mp;
private int maxMP;
+ private boolean isDefending = false;
+ private boolean stunned;
- public Player(String name, int hp, int mp, Weapon weapon, Armor armor) {
+ public Player(String name, int hp, int mp, Weapon weapon, Armor armor,int maxHP, int maxMP) {
this.name = name;
this.hp = hp;
this.mp = mp;
+ this.maxHP = maxHP;
+ this.maxMP = maxMP;
+
this.weapon = weapon;
this.armor = armor;
}
- @Override
- public void attack(Entity target) {
+ public void lightAttack(Entity target){
+ target.takeDamage(10);
+ }
+
+ public void heavyAttack(Entity target){
target.takeDamage(weapon.getDamage());
+ mp -= weapon.getManaCost();
}
@Override
public void defend() {
- // TODO
+ this.mp -= 5;
+ isDefending = true;
+ System.out.println("Defending...");
}
@Override
public void takeDamage(int damage) {
- hp -= damage - armor.getDefense();
+ if (!isDefending) {
+ hp -= damage - armor.getDefense();
+ }
+ else {
+ System.out.println("Defended the attack.");
+ isDefending = false;
+ }
+
}
@Override
public void heal(int health) {
+ mp -= 10;
hp += health;
if (hp > maxHP) {
hp = maxHP;
@@ -55,6 +74,15 @@ public abstract class Player {
}
}
+ @Override
+ public void stun() {
+ stunned = true;
+ }
+
+ @Override
+ public boolean isStunned() {
+ return stunned;
+ }
public String getName() {
return name;
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..8c3e92a
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java
@@ -0,0 +1,19 @@
+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{
+
+ public Wizard(String name, int hp, int mp, Weapon weapon, Armor armor){
+ super(name, hp, mp, weapon, armor, 500,30);
+ }
+
+ @Override
+ public void specialAbility(Entity target) {
+ System.out.println("Casting spell...");
+ target.takeDamage(30);
+ this.heal(10);
+ }
+}
diff --git a/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java b/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java
index eb59a46..8af0ff1 100644
--- a/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java
+++ b/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java
@@ -1,6 +1,6 @@
package org.project.item.armors;
// TODO: UPDATE IMPLEMENTATION
-public class KnightArmor {
+public class KnightArmor extends Armor{
// TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
}
\ No newline at end of file
diff --git a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java b/Java-Knight/src/main/java/org/project/item/consumables/Flask.java
index c0e7a6d..e8adb32 100644
--- a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java
+++ b/Java-Knight/src/main/java/org/project/item/consumables/Flask.java
@@ -3,7 +3,7 @@ package org.project.item.consumables;
import org.project.entity.Entity;
// TODO: UPDATE IMPLEMENTATION
-public class Flask {
+public class Flask extends Consumable {
/*
THIS IS AN EXAMPLE OF A CONSUMABLE DESIGN.
*/
diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Sword.java b/Java-Knight/src/main/java/org/project/item/weapons/Sword.java
index 96226ee..8c7be6a 100644
--- a/Java-Knight/src/main/java/org/project/item/weapons/Sword.java
+++ b/Java-Knight/src/main/java/org/project/item/weapons/Sword.java
@@ -5,7 +5,7 @@ import org.project.entity.Entity;
import java.util.ArrayList;
// TODO: UPDATE IMPLEMENTATION
-public class Sword {
+public class Sword extends Weapon {
/*
THIS IS AN EXAMPLE OF A WEAPON DESIGN.
*/