Phase 7: netfox + godot-jolt stack upgrade
Stack installed: - netfox v1.35.3 (core + extras + noray + internals) - godot-jolt v0.16.0-stable Architecture: - Server: ENet transport (works headless, no netfox deps) - Client/Editor: netfox rollback (RollbackSynchronizer, TickInterpolator) New/modified: - docs/migration-netfox-plan.md — migration architecture - scripts/network/network_manager.gd — netfox-aware ENet fallback - scripts/network/player.gd — clean base player - client/characters/player_netfox.gd — rollback player w/ WeaponManager - client/characters/input/player_net_input.gd — BaseNetInput subclass - client/characters/character/fps_character_controller.gd — netfox input feed - client/weapons/ — weapon data, registry, TacticalWeaponHitscan, WeaponManager - client/scripts/round_replicator.gd — client-side round state bridge - server/scripts/round_manager.gd — improved state machine - server/scripts/plugin_api/plugin_manager.gd — refined plugin system - config: enemy_tag, ally_tag for meatball targeting Removed: old C++ SimulationServer GDExtension (replaced by netfox rollback)
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
## 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
|
||||
Reference in New Issue
Block a user