It turns out the problem with SNAPSS playing the wrong sound for weapons that use ammo is not due to a change in what aWeaponUNID is set to, but rather a bug in typGetProperty. (Several of these have been introduced in the 1.7 alphas.)

Using itmGetProperty instead returns the correct value. It seems like both of these should resolve to CItemType::GetProperty(), so the difference may be here (CItem line 922):

		//	If this is a missile, then pass it to the weapon.

        else if (GetType()->IsMissile() && Ctx.ResolveVariant())
			return Ctx.GetVariantDevice()->GetItemProperty(Ctx, sName);

		//	Otherwise, from the type

		else
			return CreateResultFromDataField(CC, GetType()->GetDataField(sName));
		}

At any rate, when using typGetProperty, it seems to think that the first weapon in the game (the laser cannon) can fire any ammo.

See also:
Request: Variable to get launcher UNID instead of just ammo UNID in events.
(typGetProperty) doesn't work correctly during <OnGlobalTypesInit> for certain values (1.7A2)

Capture.PNG
Capture.PNG
assumedpseudonym 8 Oct 2016:

...Huh. Neat. Thanks for this one, NMS. Things make a little more sense, now. ^.^

megas 8 Oct 2016:

This might explain the bug where (typGetProperty aWeaponType 'speed) always returns 100 since 1.7a2.

nms 9 Oct 2016:

Yes, it does explain that for ammo types. It seems to work properly for weapons, whether or not they use ammo.

george moromisato 25 Oct 2016:

This should be fixed in 1.7 Alpha 3. Same as the bug for: https://ministry.kronosaur.com/record.hexm?id=57737