sub CarAccident { my (%I) = @_; my $Driver = $I{Driver}; my $Weather = $I{Weather}; my $Car = Car( Owner => $Driver ); my $Road = Road( Weather => $Weather ); my $CarSpeed = CarSpeed( CarMaxSpeed => $Car->{MaxSpeed}, DriverAgression => $Driver->{Aggression}, RoadSpeedLimit => $Road->{SpeedLimit} ); my $Accident = Accident( SteeringSafety => $Car->{SteeringSafety}, CarSpeed => $CarSpeed, RoadCondition => $Road->{Condition} ); my $AccidentLevel = AccidentLevel( BreakingPower => $Car->{BreakingPower}, DrivingSkill => $Driver->{DrivingSkill}, Accident => $Accident ); my $Damage = Damage( CurrentVal => $CurrentVal, AccidentLevel => $AccidentLevel ); return { Damage => $Damage }; }