So this is the solution I use for things like this. I'm sure there's a more elegant way, but I haven't found it yet.
You're going to need two paired objects. I'm going to call them objLinkTrigger1 and objLinkRecieve1 for the sake of writing this, but you can go with whatever suits your style obviously. Same with the variables in the following code as long as you make sure to change every instance of them.
objLinkTrigger1 should have this code:
Create Event:
triggervar = false;
Collision with Player Event:
triggervar = true;
Then, in objLinkRecieve1 put this:
Create Event:
timelinevar = false;
Step Event:
if timelinevar = false {
if objLinkTrigger1.triggervar = true {
timeline_index = TimelineName
timeline_running = true;
timelinevar = true;
}
}
Using this method you're going to have to make multiple linked pairs (I would call them, say objLinkTrigger2 and objLinkRecieve2) for them to be in the same room. On the plus side, that makes it easier to make each one behave in a specific way, or you could have two objects linked to the same trigger, etc. If you want to make it reset after the timeline has ended, just put a step at the end of the timeline that changes the variables in each back to their default state.