@VagrantVX - Okay, I did a quick proof of concept with Enviro and NodeCanvas, and I've got a very basic setup that should work.
I whipped up a simple component to capture the Enviro events and then broadcast them to NodeCanvas graphs as a global event (i.e. to all Behavior Trees in the scene):
using UnityEngine;
public class EnviroActorScheduler : MonoBehaviour
{
void Start ()
{
EnviroSky.instance.OnHourPassed += OnHourPassed;
}
private void OnHourPassed()
{
NodeCanvas.Framework.GraphOwner.SendGlobalEvent<int>("OnHourPassed", EnviroSky.instance.GameTime.Hours);
}
}
Obviously, you'd need to fill this out with the other events, but the basic framework is there. You could put simple BTs on your lights in the scene and have them turn on and off in response to OnDayTime and OnNightTime, for example.
I put together a simple BT that listens for the OnHourPassed graph event and then displays a simple message based on the time:

The conditional decorator on the first Selector also looks at a "ResumeSchedule" boolean that currently doesn't do anything. I just put that in there because we'd need a way to check these again if the NPC is interrupted and then needs to resume what he was doing. It would need more than just that, as you would want to resume in the middle of that particular activity and not start over, but hey, it was a quick proof of concept. ;-)
Each sequence of movement/animations/whatever in an activity might be best implemented as an FSM that is run by the BT. Might also want to standardize the list of possible activities as an enum. Can't really know until I really start digging into it.
And obviously you'd want to split off each activity into its own BT or FSM, rather than having everything in one giant BT.
@Kaemalux - I wouldn't say it can't be done totally in ORK. I'm just saying that I don't think ORK is the best tool for the job. Event-driven systems typically perform better than ones that are continuously polling, especially as you scale up.
I think that the approach I've outlined above is also far simpler. The "Time and Day" tutorial works but in my opinion it's a square peg fitting into a round hole situation. It seems overly complex to me, plus you still have all of your time-related objects needing to poll it. You could set up some simple routines using the Move AI and its Idle events. You'd put an Auto-start GameEvent on each NPC that runs a continuous "Check Time" -> "Wait" loop and then switches out these Move AIs, or runs different Events for more complex activities. But we're already getting more complex than using a behavior tree, and I suspect that the BT would also offer significantly better performance.