## WeaponData — resource containing all stats for a weapon. ## ## Used by the weapon system to configure damage, fire rate, recoil, ## economy pricing, and team restrictions. ## ## This is a pure Resource (no Node dependency) so it loads clean ## in both client and server contexts. extends Resource class_name WeaponData enum FireMode { SEMI, AUTO, MELEE } # Identification @export var weapon_id: int = 0 @export var weapon_name: String = "" @export var slot: int = 0 # 0=melee, 1=pistol, 2=SMG, 3=rifle, 4=sniper # Damage @export var damage: int = 30 @export var headshot_multiplier: float = 2.0 @export var chest_multiplier: float = 1.0 @export var waist_multiplier: float = 0.75 @export var leg_multiplier: float = 0.5 @export var armor_penetration: float = 0.5 # 0.0-1.0, % damage through armor # Firing @export var fire_mode: FireMode = FireMode.SEMI @export var fire_rate: float = 10.0 # rounds per second @export var reload_time: float = 2.0 # seconds @export var max_distance: float = 1000.0 # Magazine @export var magazine_size: int = 30 @export var reserve_size: int = 90 # Recoil & Spread @export var recoil_per_shot: float = 0.5 # degrees @export var recoil_recovery: float = 8.0 # degrees/sec @export var spread_idle: float = 0.0 # degrees while standing still @export var spread_walking: float = 2.0 # degrees while moving @export var spread_sprinting: float = 6.0 # degrees while sprinting # Movement @export var move_speed_multiplier: float = 1.0 # multiplier on base move speed @export var aim_speed_multiplier: float = 0.5 # move speed while aiming # Economy @export var price: int = 0 @export var kill_reward: int = 300 @export var team: int = -1 # -1=both, 0=T, 1=CT