Looks good!
EDIT:
The forum ate the formatting of my diff.
Here is a cleanup for minor stuff:
better formatting of parse function:
void parse_ship_sound(char *name, int id, ship_info *sip)
{
Assert( name != NULL );
int temp_index;
parse_sound(name, &temp_index, sip->name);
if (temp_index >= 0)
sip->ship_sounds.insert(std::pair<int, int>(id, temp_index));
}
void parse_ship_sounds(ship_info *sip)
{
parse_ship_sound("$CockpitEngineSnd:", SND_ENGINE, sip);
parse_ship_sound("$FullThrottleSnd:", SND_FULL_THROTTLE, sip);
parse_ship_sound("$FullThrottleSnd:", SND_ZERO_THROTTLE, sip);
parse_ship_sound("$ThrottleUpSnd:", SND_THROTTLE_UP, sip);
parse_ship_sound("$ThrottleDownSnd:", SND_THROTTLE_DOWN, sip);
parse_ship_sound("$AfterburnerSnd:", SND_ABURN_ENGAGE, sip);
parse_ship_sound("$AfterburnerEngageSnd:", SND_ABURN_LOOP, sip);
parse_ship_sound("$AfterburnerFailedSnd:", SND_ABURN_FAIL, sip);
parse_ship_sound("$MissileTrackingSnd:", SND_MISSILE_TRACKING, sip);
parse_ship_sound("$MissileLockedSnd:", SND_MISSILE_LOCK, sip);
parse_ship_sound("$PrimaryCycleSnd:", SND_PRIMARY_CYCLE, sip);
parse_ship_sound("$SecondaryCycleSnd:", SND_SECONDARY_CYCLE, sip);
parse_ship_sound("$TargetAcquiredSnd:", SND_TARGET_ACQUIRE, sip);
parse_ship_sound("$PrimaryFireFailedSnd:", SND_OUT_OF_WEAPON_ENERGY, sip);
parse_ship_sound("$SecondaryFireFailedSnd:", SND_OUT_OF_MISSLES, sip);
parse_ship_sound("$HeatSeekerLaunchWarningSnd:", SND_HEATLOCK_WARN, sip);
parse_ship_sound("$AspectSeekerLaunchWarningSnd:", SND_ASPECTLOCK_WARN, sip);
parse_ship_sound("$MissileLockWarningSnd:", SND_THREAT_FLASH, sip);
parse_ship_sound("$HeatSeekerProximityWarningSnd:", SND_PROXIMITY_WARNING, sip);
parse_ship_sound("$AspectSeekerProximityWarningSnd:", SND_PROXIMITY_ASPECT_WARNING, sip);
parse_ship_sound("$MissileEvadedSnd:", SND_MISSILE_EVADED_POPUP, sip);
parse_ship_sound("$CargoScanningSnd:", SND_CARGO_SCAN, sip);
}