Alternatively, you could use json and reduce the code repitition, e.g.:
[h: BaseDamage = 0]
[h: WeaponTraits = "None"]
[h: SkillRollAdd = 0]
[h: '<!-- load data into nested json objects -->']
[h: vWarheads = json.set("{}",
"Dazzler", json.set("{}", "BaseDamage",0, "WeaponTraits2","Blinding", "Area", "Uniform (50m)"),
"EMP", json.set("{}", "BaseDamage",3D10, "WeaponTraits2","Disables Radios, Damage to Nanoswarms Only", "Area", "Uniform (20m)")
)]
[h: '<!-- use the parent json object keys for the radio input values and return the selection as string rather than the index number -->']
[h: input1 = input(
"ChoiceWarhead|" + json.fields(vWarheads) + "|Warhead?|RADIO|VALUE=STRING",
"ChoiceSize|Micromissile/Minigrenade, Minimissile/Standard Grenade, Standard-Missile|Warhead Size?|RADIO|SELECT=0",
"ChoiceSkill|No Superior, Superior 1, Superior 2|Skill Option?|RADIO"
)]
[h: '<!-- stop macro execution if the user cancels the input dialog -->']
[h: abort(input1)]
[h: SkillRollAdd = roll(ChoiceSkill,6)]
[h: '<!-- get the attributes for the selected choice, and convert them to variables -->']
[h: json.toVars(json.get(vWarheads, ChoiceWarhead))]
[h, if(ChoiceSize == 0): WarheadDamage = BaseDamage]
[r, if(ChoiceSize == 1): WarheadDamage = BaseDamage + 1D10]
[h, if(ChoiceSize == 2), code: {
[h: BaseDamage = BaseDamage + 1.25]
[h: WarheadDamage = (BaseDamage * 2) - 2.5]
}]
[h: MacroName = getMacroName()]
[h: Total = WarheadDamage + SkillRollAdd]