unity – create structure for a game (missions, dialogue, triggering events on collected items, etc.) & monitoring a player's progress in our code?


Hello, I have been working with Unity and other Game Engines / Libraries in my free time for many years. It was a long, winding road full of joy and pain: D In the last few months, I jumped back and noticed that I can really master the basics of almost all aspects of game development (ie I can do it well) Moving characters with Rigidbody in different ways, without Rigidbody; Animations with which I am well versed; Shader and Skyboxes and post-processing, which I like to know with barebones, etc.).

My main problem that I'm always dealing with (and finally being defeated until I start building a new project that only does the things I've already understood) is managing quests or special events throughout the game.

For example, today I try to make a puzzle game (similar to Monkey Island, but for now more basic puzzles). So you start playing in a room, there are many things in the room and a door and a fireplace.
The door is locked. To solve the puzzle, all you have to do is use the water pitcher by the fire, then you can click on the fireplace to climb out of the room.

I actually did this puzzle and it worked fine (I used strings mainly and had complicated if statements to find out if the player was holding this item). However, once I apply this method to a whole game (say, you keep the empty water pitcher there and later use it as a puzzle along with other items, etc.), it gets very complicated and does not seem to be good at doing it.

I've read a lot about text data types. Apparently it's possible to create your own custom commands in text files so I can annotate the text and trigger methods in my code. But although I've read about it in some forum posts, I can not find much help coding this (on a very basic beginner level).

I hope to be able to create a text file containing elements as well as dialogue and mission data: element names; Product Description dialogue; Whether they are quest items; Can they be combined (and if so, with what and in what)?

Ideally, the same system can be used for dialogues (initial "hello" with NPC; follow up talks; NPC quests; if yes, start one; final (after completing all quests of this NPC) type "See ya around!" Dialog) The text file should help me what I read, but I do not know how?!?!?

I am quite well-versed in polymorphism, so one element is the parent and the children's class may be Food: Item. Weapon: object; Tool: article etc.
and I've also parsed data from text to create simple pong breakout style levels (using Json and XML). I feel like this is the way, but I miss a lot about adding attributes or custom markup or something to my text data.

I know the question is very broad here, but I would be happy to receive any helpful suggestions for the beginning. Many thanks