class_name DiveUpgradeEffects extends RefCounted var battery_capacity_bonus_kwh: float var oxygen_capacity_bonus_l: float var hull_integrity_bonus: float var certified_depth_bonus_m: float var battery_consumption_multiplier: float var collision_damage_multiplier: float var pressure_damage_multiplier: float func _init( p_battery_capacity_bonus_kwh: float = 0.0, p_oxygen_capacity_bonus_l: float = 0.0, p_hull_integrity_bonus: float = 0.0, p_certified_depth_bonus_m: float = 0.0, p_battery_consumption_multiplier: float = 1.0, p_collision_damage_multiplier: float = 1.0, p_pressure_damage_multiplier: float = 1.0 ) -> void: battery_capacity_bonus_kwh = p_battery_capacity_bonus_kwh oxygen_capacity_bonus_l = p_oxygen_capacity_bonus_l hull_integrity_bonus = p_hull_integrity_bonus certified_depth_bonus_m = p_certified_depth_bonus_m battery_consumption_multiplier = p_battery_consumption_multiplier collision_damage_multiplier = p_collision_damage_multiplier pressure_damage_multiplier = p_pressure_damage_multiplier func validation_error() -> String: for bonus: float in [ battery_capacity_bonus_kwh, oxygen_capacity_bonus_l, hull_integrity_bonus, certified_depth_bonus_m, ]: if not is_finite(bonus) or bonus < 0.0: return "upgrade bonuses must be finite and non-negative" for multiplier: float in [ battery_consumption_multiplier, collision_damage_multiplier, pressure_damage_multiplier, ]: if not is_finite(multiplier) or multiplier <= 0.0: return "upgrade multipliers must be finite and positive" return ""