Actually, I have the opposite problem, way more ideas than I'm able to implement.
I can understand how that feels I have a number of projects going on at one time.
One is a tool for writing and game development. I won't get into the details on that one.
Second is a game engine related. This one is more related to probably your issue.
I wanted to give players a massive amount of flexibility in what they choose to do.
If I did that the conventional way it would be righting effectively hundreds of routs joining them together and then trying to make the dialog for them all mesh and make sense together. It would result in producing a lot of code that would need to be gone through each time the story is added to or a bug is found.
Doing that type of work is not my thing at all.
The first part was to automate a number of processes. Rather than me using a general script to determine when a character was at one location or another. I built a scheduling system. The character also has a goal system. Goals change depending on the characters needs so on. If the character is hunger they will want to eat. If they are tired they will want to sleep. Can even pass out if to tired. They have a task system that works with the schedule system and object in the world along with the people.
The part that allows the story writing is an event system. There are world / environmental events. These are things scheduled to happen in the world if the character happens to be in the area at the time they might become involved it. Some events are forced on character such as crimes and other stuff. It usually isn't a choice to be robbed.
Other event are personal events and relation based. These are triggered by various stat levels being in the right location with the right person or persons.
Events are effectively just scripts that are run when the trigger is set.
Instead of writing large if then else nest areas events are attached to a location or to individuals. They are written in another file and when the game starts the event is registered with what it is supposed to be attached to.
An event manager assigned to the object location or person will test the event on update.
That means if I have an issue with an event I only need to check the script of that event and not search through a lot of unrelated code.
It also gives a large performance boost. Because you have a event manager that events are registered with you don't have to go through testing each event or go through a large if then else list.
Events can be loaded on the fly such as after you complete a previous event.
They can also be removed when they are one time events.
Repeatable events can be left in the list. You designate the difference between one that is repeatable and not using a flag.
You can even have time based events such as Holidays and birthdays and so on.
Not sure if something like that make it easier for you.