I greatly apologize for that delay: and interesting tidbit, actually. I have only used 'i' for local variables or a relavant title because of some mental carry over from RPG Maker.
That aside: You're a god. I just moved the code to be:
for(var c = 0; c < WID_MAX; c++){
if(playerweapon_has(c)){
if(include_weapons_we_have){
var ups = global.weapon_data[c][pstat_POSSIBLEUPGRADES];
for(var d = 0; d < array_length(ups); d++){
if((global.weapon_upgrades_obtained[c][d] < global.weapon_data[c][pstat_POSSIBLEUPGRADES][d][dbupgd_MAXUPGRADES]) || allow_surpassing_max_level){ //Can we upgrade it further?
At the top of that function and it seems to be working perfectly. Now I'm just going to add some text to show the current 'level' of that upgrade for visual clarity. Thank you so very much for helping me out and your patience.