It is hard to understand pilot's intentions especially with limited capabilities of scripting. That's why I want to clarify the trigger logic of announcements. Most of the announcements are played with random delays for better realism. Script also prevents playing several announcements layered. Most of inflight announcements require properly setup pressurization: flight level and destination airport elevation.
"Welcome on board" is played when cargo doors are closed (no cabin doors in IXEG 737 yet) and seat belt sign is turned on.
"Doors on automatic" is played when anti collision light is turned on.
"Safety instructions" are played as soon as you start pushing or starting engines or taxing.
"Prepare to takeoff" is played when you turn on landing lights.
"Seat belts on" and "seat belts off" are played inflight when you turn them on and off (that simple).
"Drinks and meals" is played just before you reach cruise altitude.
"Start of descend" is played when you are 1000 ft below your cruise altitude.
"Before landing" is played when you pass 4000 ft altitude for destination airport or extract gear or set flaps 10 or more.
"Landing command" is played when you pass 3000 ft altitude for destination airport or set flaps 30 or more.
"Arrival (after landing)" is played when ground speed is bellow 40 kts.
"Doors on manual" is played when engines turned off, parking brake set.
Any advice or suggestions are welcome.