Ammo from other mods (e.g. Yuoki Industries) with ammo_category = "bullet" is correctly detected and converted from hitscan to projectile in the first pass (which checks ammo.ammo_category == BULLET_STRING). However, the second pass that applies range, dispersion, and magazine size adjustments dispatches entirely on item name substrings:
name:find("magazine") → bullet adjustments
name:find("cannon") → cannon adjustments
name:find("shotgun-shell") → shotgun adjustments
Modded ammo whose names don't contain any of these substrings (Yuoki's are named like y-ammo-acid-2, y-ammo-krakon, etc.) falls through all branches and gets no adjustments applied — no range scaling, no dispersion, no magazine size multiplier. The ammo ends up converted to projectile type but with only the base max_range from convert_ammo_type and none of the tuning from bullet_ammo().
A fix would be to add a fallback in both places that matches on ammo_category when no name pattern hits, similar to how the conversion loop already works.