diff --git a/game/assets/items/iWeapon.gd b/game/assets/items/iWeapon.gd new file mode 100644 index 0000000..ddd5e7b --- /dev/null +++ b/game/assets/items/iWeapon.gd @@ -0,0 +1,30 @@ +# weapon.gd +extends Resource +class_name iWeapon +# This acts as an interface base class. + +# --- Common Stats --- +@export var weapon_name: String = "Unnamed Weapon" +@export var damage: float = 10.0 +@export var attack_speed: float = 1.0 # attacks per second +@export var range: float = 1.5 # meters; melee = short, ranged = long +@export var knockback: float = 0.0 +@export var stamina_cost: float = 5.0 + +# --- Ranged‑specific Stats --- +@export var projectile_scene: PackedScene # null for melee +@export var projectile_speed: float = 20.0 +@export var ammo_type: String = "" # e.g. "arrows", "bullets" +@export var ammo_per_shot: int = 1 + +# --- Melee‑specific Stats --- +@export var swing_arc: float = 90.0 # degrees +@export var hitbox_size: float = 1.0 + +# --- Interface Methods --- +func attack(user): + push_error("Weapon.attack() not implemented in subclass") + return null + +func can_attack(user) -> bool: + return true diff --git a/game/assets/items/iWeapon.gd.uid b/game/assets/items/iWeapon.gd.uid new file mode 100644 index 0000000..47661ee --- /dev/null +++ b/game/assets/items/iWeapon.gd.uid @@ -0,0 +1 @@ +uid://bttaq8w3plgqh