1 - Door (targetname - door)
2 - front trigger_damage (targetname - front_trig)
3 - back trigger_damage (targetname - back_trig)
4 - front trigger_hurt (targetname - front_kill)
5 - back trigger_hurt (targetname - back_kill)
Code: Select all
main()
{
// get all entities
door = getent("door", "targetname");
fr_kill = getent("front_kill", "targetname");
fr_trig = getent("front_trig", "targetname");
bk_kill = getent("back_kill", "targetname");
bk_trig = getent("back_trig","targetname");
// turn off kill triggers for now.
fr_kill thread maps\mp\_utility::triggerOff();
bk_kill thread maps\mp\_utility::triggerOff();
// start trigger check threads
fr_trig thread trigFront(door, bk_kill);
bk_trig thread trigBack(door, fr_kill);
}
trigFront(door, kill)
{
// Tell this function to stop when notified
level endon("kill_front");
// Wait for damage
self waittill("damage");
// Stop the other function
level notify("kill_back");
// Rotate door
door rotatepitch (90, .5, .5, 0);
wait 0.2;
// turn on the kill trigger
kill thread maps\mp\_utility::triggerOn();
wait 0.8;
// turn off the kill trigger
kill thread maps\mp\_utility::triggerOff();
}
trigBack(door, kill)
{
level endon("kill_doors");
level endon("kill_back");
self waittill("damage");
level notify("kill_front");
door rotatepitch (-90, .5, .5, 0);
wait 0.2;
kill thread maps\mp\_utility::triggerOn();
wait 0.8;
kill thread maps\mp\_utility::triggerOff();
level notify("kill_doors");
}