From 6ab1cb375c6b77ab12b0d1c6f2299da7fcb29123 Mon Sep 17 00:00:00 2001 From: Arefe Date: Thu, 7 May 2026 09:22:43 +0330 Subject: [PATCH] complete weapons package --- .../java/org/project/item/weapons/Dagger.java | 31 +++++++++++++++++- .../java/org/project/item/weapons/Sword.java | 26 ++++++++------- .../java/org/project/item/weapons/Wand.java | 18 ++++++++++- .../java/org/project/item/weapons/Weapon.java | 32 ++++++++++--------- 4 files changed, 78 insertions(+), 29 deletions(-) diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java b/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java index c77fd1f..363e8ae 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Dagger.java @@ -1,4 +1,33 @@ package org.project.item.weapons; -public class Dagger { +import org.project.entity.Entity; + +public class Dagger extends Weapon{ + + private static final double CRIT_CHANCE = 0.3; + + public Dagger() { + super(3, "Poison Dagger", 8); + } + + public void uniqueAbility(Entity target) { + if (target.isAlive()) + { + int damage = this.getDamage(); + boolean isCrit = Math.random() < CRIT_CHANCE; + + if (isCrit) + { + damage *= 2; + System.out.println("⚡ CRITICAL HIT!"); + } + else + { + System.out.println("🗡️ " + this.getName() + " struck for " + damage + " damage."); + } + + target.takeDamage(damage); + } + } } + 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..0b8b028 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 @@ -4,23 +4,25 @@ import org.project.entity.Entity; import java.util.ArrayList; -// TODO: UPDATE IMPLEMENTATION -public class Sword { - /* - THIS IS AN EXAMPLE OF A WEAPON DESIGN. - */ - - int abilityCharge; +public class Sword extends Weapon{ public Sword() { - // TODO: DESIGN SWORD'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR + super(1, "Iron sword", 10); } - // TODO: (BONUS) UPDATE THE UNIQUE ABILITY public void uniqueAbility(ArrayList targets) { - abilityCharge += 2; - for (Entity target : targets) { - target.takeDamage(getDamage()); + int boostedDamage = this.getDamage() * 2; + + System.out.println("🗡️ " + this.getName() + " glows with power!"); + + for (Entity target : targets) + { + if (target.isAlive()) + { + target.takeDamage(boostedDamage); + System.out.println("💥 " + target.getClass().getSimpleName() + " took " + boostedDamage + " deep slash damage!"); + } } } + } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Wand.java b/Java-Knight/src/main/java/org/project/item/weapons/Wand.java index 90cf48e..9b0a314 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Wand.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Wand.java @@ -1,4 +1,20 @@ package org.project.item.weapons; -public class Wand { +import org.project.entity.Entity; +import org.project.entity.enemies.Enemy; + +import java.util.ArrayList; + +public class Wand extends Weapon{ + public Wand() { + super(2, "Wooden wand", 5); + } + + public void uniqueAbility(ArrayList targets) + { + for (Enemy target : targets) + { + target.takeDamage(2); + } + } } 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 cb9fcf2..bd20280 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 @@ -1,35 +1,37 @@ package org.project.item.weapons; import org.project.entity.Entity; +import org.project.item.Item; -// TODO: UPDATE IMPLEMENTATION -public abstract class Weapon { +public abstract class Weapon implements Item { private int damage; - private int manaCost; + private int id; + private String name; - /* - TODO: ADD OTHER REQUIRED AND BONUS ATTRIBUTES - */ - - public Weapon(int damage, int manaCost) { + public Weapon(int id, String name, int damage) { + this.id = id; + this.name = name; this.damage = damage; - this.manaCost = manaCost; } + @Override public void use(Entity target) { - target.takeDamage(damage); + System.out.println("🏹 " + name + " is equipped!"); } public int getDamage() { return damage; } - public int getManaCost() { - return manaCost; + @Override + public String getName() { + return name; + } + + @Override + public int getId() { + return id; } - /* - TODO: ADD OTHER REQUIRED AND BONUS METHODS - */ }