This is going to be a very messy post but hopefully you'll get something out of this :P
(Edit: This is all kind of pointless if you already understand how stuff works, my main focus on writing all of this post was that it's pretty straightforward to do without "lists" and using what we already have.)
All this is totally possible with Arrays and Instance Variables (and webstorage for saving). When using Arrays, the information in the Array is global, so can be accessed in all layouts. I guess the 1 'eh' thing is that yeah, with Arrays you have to remember the index number for things rather than using words, but I don't think it's too big of a deal, it never bothered me really. Also, I'd have multiple Arrays for different things, such as Character attributes (however, In my own project, I didn't make an array for this, I stored it in webstorage and loaded when I needed, can't remember why I did that way), Inventory items, Skills. I set my Arrays out like so:
Inventory Items
X (Character ID, every character in-game has a unique ID assigned to them)
0= Bob
1= Fred
2= Bum
3= Jesse
Y (Inventory Slot. Where the item will be placed in the list(nothing needs to be entered into these parts of the array))
0
1
2
3
Z (Item attributes)
0=[Name of item]
1=[Description of item]
2=[Level required]
3=[Str]
4=[Dex]
5=[Int]
6=[Luk]
(so for example)
0=Super mega sword
1=This sword is the most mega awesome sword ever.
2=50
3=20
4=10
5=-6
6=0
And there you would have your item in an inventory that can be accessed and placed correctly in a list by using the right events :P making "sorting" and whatnot isn't too hard as long as you know what you are doing and know a bit about arrays (I barely know much about arrays and probably use a stupid method)
I remember storing the player attributes like so:
If a player's stat changed (for example, level up), I'd do a webstorage event to write an expression like this:
["Char" & Player.CID & "Level"] to Player.Level
"Char" is to tell the webstorage that this is to do with Character stuff.
"Player.CID" is an instance variable that is storing the ID for the character (so that webstorage knows which characters level it is changing)
"Level" just lets it know what attribute we are dealing with
"Player.Level" is the players level which gets set into the location of the expression.
So the expression ends up looking sorta like:
Char3Level= 69
This is very easy to load back in a later time. Upon creating and assigning the ID onto a player, you can then "Set instance variable" to the players "Level" to ["Char" & Player.CID & "Level"]. And Volia, you have a saved attribute unique to a specific character! I did this for all attribute stats like HP, MaxHP, MP, Level, Str, Dex, ect.
Sooooooo yeah this was probably the most confusing post ever, and I don't mean to explain stuff you may already know, but yeah I'm mentally exhausted but wanted to try and help nonetheless, since I love RPG's and know how annoying they are to deal with!