RAIDER_Survivor/scripts/Items/Weapon.gd

34 lines
845 B
GDScript

class_name Weapon extends Node3D
var stats: WeaponStats
var attachments: Array[Attachment]
func init_weapon(stats: WeaponStats):
self.stats = stats;
func attach(newAttachment: Attachment)-> void:
attachments.append(newAttachment)
func unattach(attachmentToRemove: Attachment)-> void:
attachments.erase(attachmentToRemove)
func get_damage()->int:
var damage = stats.damage
for attachment in attachments:
damage += attachment.get_damage()
return damage
func get_fire_rate()->int:
var fire_rate = stats.fire_rate
for attachment in attachments:
fire_rate += attachment.get_fire_rate()
return fire_rate
func get_hit_effects()-> Array[Effect]:
var hit_effects = []
hit_effects.append_array(stats.hit_effects.value)
for attachment in attachments:
hit_effects.append_array(attachment.get_hit_effects())
return hit_effects