Sometimes it's the features you don't expect that are the most complex. In my game, that was the internal scripted event player
I designed the framework with it in mind, with all the inputs routed through hot-swappable components, but even basic implementation still was somehow more than I expected