Ok let's get this straight, your naming is terrible and made is confusing as fuck to understand what this is from just skimming your classes. Before I'll comment on the functionality etc I want to point out some naming issues first:
First of all where did you come up with the name Node? A node is nothing more than something in a chain or other form of connection with an abstract name. However your 'nodes' are known what they do, so why name them Node, they are simply some form of tasks?! Nodes are for example the nodes in a list, but if I know what they nodes represents then I have no reason to call them nodes anymore. Furthermore events are triggered and when triggered tasks are executed. Something subscribes on an event handler and when triggered the event handler makes the calls to the task, but why call your tasks Nodes? And how is your NodeHandler handling anything? It's just a class holding a reference to a static collection of 'nodes' and a method to return one. And your NodeManager? What is it managing? All it does is check whether event were triggered and executes the behaviour programmed to be executed when triggered (the task).
But from what I can see you've been trying to make a system that contains certain tasks for certain events and based on what phase the player is in there is a subset of those tasks available to the engine? If so you've made it more complex than necessary.