First, I changed the SlidingWorldModel to a SlidingDoor. This has the advantage of making it easy to get the sidecar to keep moving back and forth. I renamed the SlidingDoor object to ChairMover, the brush to Chair, and the AI char to SystemMonitor.
The SystemMonitor char must have the MoveToFloor option set to False. Or else he will fall through the chair.
The Chair brush gets bound to the ChairMover object. In the Attachments property of this ChairMover (SlidingDoor) we put in the name of the AI char, SystemMonitor. This attaches him to the chair so he will move with it.
In the Options, we change these settings: ForceMoveOn to True, ForceMoveOff to True, PlayerActivate to False, AIActivate to False, StartOpen to True, TriggerClose to False, RemainOpen to False, ForceMove to True, Locked to False, Waveform to Sine, and ActivateType to None.
The ForceMove settings will make the Chair push anything out of the way. So if a player jumps up and bumps into the chair as it moves, he/she will get pushed away. Otherwise, the players can pass through the chair. (Bad!) StartOpen makes the chair start moving as soon as the map loads. Waveform affects how the chair moves. Sine makes it start slow, get up to speed, then slow down again near the end.
In DamageProperties, I set Mass to 10000. This makes the chair heavier and more massive than the players, so the chair will definitely push them out of the way.
In the Commands, I set ClosedCommand to:
Code: Select all
msg ChairMover trigger
For MoveDir, set Z to -1. This will make the chair move in a Z plane direction, toward the other side of the room. I set MoveDist to 512, which moves it pretty far to the other side. Think of OpeningTime as "how long it takes to move to the other side". I set it to 30, which made it move pretty slowly.
You might want to adjust MoveDist and OpeningTime to your liking, to make it move a bit longer/shorter distance or a bit faster/slower.