i think i understand you very well , you want to do this without arrays , here i suggest a solution
a full shope system for you from placing sprites to picking the bought weapons for the character.
1st - for the s_sword_icon sprite make 2 animation containing the sword famres in the first animation is just the sword icone , or locked , and the second have th e same frames but with the indication that the sword was bought and make a variable for the s_sword_icon name it sword_number make the default value <varies> construct 2 will now that there will be different value for each instance and second value for the price (sword_cost) and third value isbough=false and it's optional if you want a power for each weapon add another value name it sword_power(integer or float).
2nd - in the shope make a sprite that will work as a slot i mean where the sword_icon should appear ( somthing like boxes , make them instances from the same sprite lets name it sword_slot make 2 values for each instance one name it to isbought(boolean) a second value is slot_number(integer) ather values are sword_cost and sword_power
-- here to fill the not bought slots
3rd -in the event-sheet (Trigger event + AND for each s_sword_slot AND s_sword_slot.isbough=false )
* create new object ( s_sword_icon)
* set s_sword_icon animation frame to (s_sword_slot.slot_number)
* set s_sword_icon.sword_num to (s_sword_slot.slot_number)
* set s_sword_icon.sword_cost to s_sword_slot.sword_cost
* set s_sword_icon.sword_power to s_sword_slot.sword_power
* set s_sword_icon.isbought=false
* set s_sword_icon position to another object "s_sword_slot".
-- here to fill the already bought slots:
4th - ( Trigger event + for each s_sword_slot AND s_sword_slot.isbough=true )
* create new object ( s_sword_icon)
* set s_sword_icon.animation ("nimation2")
* set s_sword_icon.animation frame to (s_sword_slot .slot_number)
* set s_sword_icon.isbought=true
* set s_sword_icon.sword_num to (slot_number)
* set s_sword_icon.sword_cost to (array_swords.X[s_sword_slot.slot_number])
* set s_sword_icon.sword_power to (array_swords.Y[s_sword_slot.slot_number])
* set s_sword_icon position to another object "s_sword_slot".
-- here the buying operation
5th - (on double touched object s_sword_icon AND on double touched object s_sword_slot AND s_sword_icon.isbough=false and s_sword_ico.sword_cost <= total_money )
-- here you can make the buying actions such as :
* set s_sword_slot.isbought=true
* set s_sword_icon.isbought=true
* set s_sword_icon.animation ("nimation2")
* set s_sword_icon.animation frame to (s_sword_icon.sword_number)
* substract from total _money ( s_sword_icon.sword_cost)
-- here you can select the sword you bought
6th - (on touched object s_sword_icon AND s_sword_icon.isbough=true )
-- here you can make sword selection actions such as :
* set s_sword.animation frame to (s_sword_icon.sword_number)
* set s_sword.power to (s_sword_slot.sword_power)
if you need to understand somthing i'm here, i'm sorry i know it looks confusing i made the solution in my head i don't have the project opened so i couldn't explain more.