

I can tell you the approach to these problems in my most recent project.
In my project, I have a central “MainGame” node that is the root of the scene where the main game loop happens, and then there is an “OverworldManager”, which then hosts “OverworldMap” nodes and swaps them as required, as well as hosting the Player character node as a sibling to the OverworldMap, rather than a descendant of it, so that I can warp it around easily.
But MainGame has multiple other children, two of them being the InventoryManager and the PersistenceManager nodes. You can access these as soon as you have a reference to the MainGame node by simply calling GetChild(), altough I have wrapper methods for accessing those.
The InventoryManager node hosts a list of tuples in the form of (ItemType, amount), and it has multiple methods AddItem, RemoveItem, HasItem, etc. All of these just access this list of tuples.
The PersistenceManager is responsible for keeping track of persistent changes in the many OverworldMaps. It’s just a single wrapper for a list of NodePaths for nodes that have been “flagged”. Because OverworldManager never has more than one map loaded at any given time, every node in the map will keep the same exact NodePath relative to the scene root even if you unload and reload the map. This means that, when for example a locked door or a destructible crate is instantiated as part of the map, you can check in its _Ready function whether the game’s PersistenceManager has flagged the path to this crate, and in that case, just destroy it again or QueueFree it outright. You should then make sure to have the PersistenceManager flag this node when you open it/destroy it/etc. You can actually extend this approach to have the PersistenceManager be able to hold multiple flags with values for a given node.
Then, when you save the game, you can easily add independent Save and Load functions to each of these managers and call all of them from a SaveManager node if you want to persist the data across runs. Really, all of these managers may as well be autoload scripts, but behind the scenes autoloads are just nodes that are siblings to your root node. Personally, I avoid autoloads entirely because I’d rather manage these nodes myself, but there is nothing wrong per se with using autoloads.
As for HP and damage; I don’t actually use a node dedicated to HP. Instead, my BattleScene holds Battler nodes, which define their many attributes in battle, one of them being HP. It also has a static function CalculateDamage(Battler attacker, Technique technique, Battler target) that I use to calculate how much HP a given technique should remove, and because it is a private function of Battler, I also get access to private Battler data such as its stat boosts. For persisting the player’s HP, I have a dedicated PlayerManager node. This obviously only makes sense if you have separate Overworld and Battle scenes; if you are fighting enemies in the Overworld in real time, your approach will need to be different.
I hope that helps.
Microblogging is a terrible social media format when what you want from social media is to read and discuss stuff you’re interested in. In Mastodon, I can scream into the void, but I have no guarantee that anybody will be interested in what I have to say. If all you want is to keep tabs on people it works fine I guess, but as soon as you want to follow topics it becomes incredibly clunky.
You can search keywords or hashtags, but all you get is an unmoderated firehose of loosely connected posts about the topic you want, and other topics for which people use the same words. You can follow hashtags, but then you just get said unfiltered firehose on your TL. Unless everyone somehow agrees in how to use the hashtag, it’s pointless.
Frankly I think all microblogging platforms would improve if there was a closed set of possible hashtags you could use in your posts. Hopefully there would be a unified name convention for each topic, and each hashtag could have a dedicated curation team of some sort, that could remove or relocate posts. Likewise, users should be able to submit a new possible hashtag for everyone to use. This way, I would be able to subscribe to a hashtag, be sure that all the content I receive will be relevant to a topic I care about, and I could post to it knowing that other people who subscribe to the hashtag are guaranteed to be at least somewhat interested in what I have to say. Oh wait, I think I just reinvented Lemmy communities.
While we’re at it, Mastodon is not 2008 Twitter anymore. No one posts via SMS. Inline hashtags should not be a thing, because it lets people optimize the way they phrase their posts for discoverability, and abusing them makes posts very uncomfortable to read. I have not seen as many people on Mastodon doing this as on Twitter, but why even keep inline hashtags at all nowadays? Just keep tags separately from the post’s content.