When dealing with multiple conditions you have to decide how these interact. Using your example: Say you want to only deliver the stim after 1min within a session. Does this mean that the next time your ROI is visited you want to deliver the stimulus OR once the 1min elapsed and if the animal is inside the ROI you want to deliver the stimulus? Depending on the exact behavior you are looking for, the implementation might be different.
Implementing the first solution:
Initialize your "InTestPhase" as False and change it to True using a "Timer" -> "Boolean(True)" wherein the DueTime property of Timer determines how long you want to reject entries in the ROI for.
Next, since you only want to check the value of the "InTestPhase" once the animal actually enters the ROI, we use "WithLatestFrom" where the first input is given by "MouseInCenter" subject events. Basically, each time "MouseInCenter" emits a value, it will "pair" it with the latest value available in "InTestPhase". Finally, the only thing left to do is to check if both values are True by using a "BitwiseAnd" inside a Condition node (you could also just check the second one, since you are already making sure that MouseInCenter is True). This logic will only allow events to go in if this condition is passed which should trigger your stimulus.
Implementing the second solution requires few changes. We will replace "WithLatestFrom" by "CombineLatest". As the name implies, this node will emit an event whenever ANY of the sources emits a value and combines it with the latest element of the second source. As a result, if the time elapses and the animal is in the ROI, the stimulus will be automatically triggered, instead of waiting for the next entry. However, for this to work, we need to stop filtering the MouseInCenter subject, since the latest value, by design, would always be True. Simply remove the Condition Node, and initialize the subject as False (Boolean(False)).
Hope it helps!
Bruno