Looks like we can clean (some of) this stuff up quite easily. :>
I was worried we would not be able to update the various items, but here's a Arrow of Fire, and you can see where the the Surface creation is done, and the Explode Radius.
new entry "Projectile_ArrowOfFire"
type "SpellData"
data "SpellType" "Projectile"
using "Projectile_MainHandAttack"
data "SpellProperties" "IF(not SavingThrow(Ability.Dexterity,10)):DealDamage(1d4,Fire);
GROUND:SurfaceChange(Ignite); GROUND:SurfaceChange(Vaporize); GROUND:CreateSurface(2,,Fire);"data "ExplodeRadius" "2"data "SpellSuccess" "TARGET:DealDamage(MainRangedWeapon, MainRangedWeaponDamageType); TARGET:ExecuteWeaponFunctors(MainHand)"
data "Template" "a987eb34-3d51-42fb-ba62-d2ebfbdc58c0"
data "DisplayName" "Projectile_ArrowOfFire_DisplayName"
data "CastSound" "Proj_Arr_Cast_Arrow_Of_Fire"
data "SpellFlags" "HasHighGroundRangeExtension;RangeIgnoreVerticalThreshold;IsHarmful"
Now if I can just find where the stupid Barrels are stored, I've already found the High Ground modifiers as well, and we are getting somewhere.