class_name DiveDifficultyProfile extends RefCounted var profile_id: StringName var oxygen_consumption_multiplier: float var battery_consumption_multiplier: float var collision_damage_multiplier: float var pressure_damage_multiplier: float var crush_grace_multiplier: float func _init( p_profile_id: StringName, p_oxygen_consumption_multiplier: float, p_battery_consumption_multiplier: float, p_collision_damage_multiplier: float, p_pressure_damage_multiplier: float, p_crush_grace_multiplier: float ) -> void: profile_id = p_profile_id oxygen_consumption_multiplier = p_oxygen_consumption_multiplier battery_consumption_multiplier = p_battery_consumption_multiplier collision_damage_multiplier = p_collision_damage_multiplier pressure_damage_multiplier = p_pressure_damage_multiplier crush_grace_multiplier = p_crush_grace_multiplier static func exploration(): return new(&"exploration", 0.75, 0.80, 0.65, 0.50, 1.50) static func standard(): return new(&"standard", 1.0, 1.0, 1.0, 1.0, 1.0) static func expert(): return new(&"expert", 1.20, 1.15, 1.25, 1.35, 0.75) func validation_error() -> String: if profile_id.is_empty(): return "difficulty profile_id is empty" for value: float in [ oxygen_consumption_multiplier, battery_consumption_multiplier, collision_damage_multiplier, pressure_damage_multiplier, crush_grace_multiplier, ]: if not is_finite(value) or value <= 0.0: return "difficulty multipliers must be finite and positive" return ""