Whew. So for my Crow-based Action RPG I wanted to have an ability system similar to Kingdom Hearts -- but rather than base it on Ability POINTS, I figured each ability will be its own badge, and the player can equip as many badges as they want to have, as long as they have an available slot. The maximum slots can be increased either by leveling up or by equipping a badge that increases them.
I've never had an inventory in a game I've made, much less a complicated one such as this. The player starts with 6 slots for badges (with 4 filled with 'default' badges) and an "infinite" backpack to collect badges that aren't equipped. Badges do all kinds of things, from adding actual new moves, to simply boosting stats. Some badges are "stackable", meaning if you have more than one of that badge, you can use it -- but duplicates also use your slots, so you have to balance the actual need for you to have two of that badge equipped. Some badges aren't stackable at all, such as specific abilities. Some badges can only be equipped if you have a "pre-requisite" badge already equipped (i.e. Frost Magic -> Frost-2 magic -> Frost-3 Magic).
The four default badges are EXP-gain, HP Bar, MP bar, and Item Bag -- meaning you can stop yourself from gaining experience, limit yourself to 1HP, limit yourself to no magic, and limit yourself to no potions of any kind by unequipping the default badges. I want this system to basically make the game playable in a variety of ways.
The UI for doing all this is dynamically done, and immediately updates. There are sub-menus and sub-sub-menus and it's all done with one single object, and toggling bools.
It's the most crazy "system" I've ever made, for sure. It's a big motivator to have been able to just look up the data structures available in GMS and just crank this out on my own. I contemplated buying marketplace assets that do a similar thing, but none of them did it the way I wanted to do it -- too focused on inventories as a "collect and use" kind of system rather than equipping and unequipping, etc. So I finally convinced myself to buckle down and just make it, and it came out better than any of the ones I looked at.
I love those moments in gamedev where you think "I can't code this on my own" and then you sit down and force yourself to learn and you do it, and do it better than any tutorial you could have found.
Shoutouts to GMS' pretty great documentation on this too.