2 void Teleport_Touch (void)
6 if (other.classname != "player") // FIXME: Make missiles firable through the teleport too
9 // Make teleport effect where the player left
10 sound (other, CHAN_ITEM, "misc/Teleport.wav", 1, ATTN_NORM);
11 te_teleport (other.origin);
13 dest = find (world, targetname, self.target);
15 objerror ("Teleporter with nonexistant target");
17 // Make teleport effect where the player arrived
18 sound (other, CHAN_ITEM, "misc/Teleport.wav", 1, ATTN_NORM);
19 makevectors (dest.mangle);
20 te_teleport (dest.origin + v_forward * 32);
22 // Relocate the player
23 setorigin (other, dest.origin);
24 other.angles = dest.mangle;
25 other.fixangle = TRUE;
27 other.velocity = '0 0 0';
29 other.flags = other.flags - (other.flags & FL_ONGROUND);
32 void info_teleport_destination (void)
34 self.mangle = self.angles;
35 self.angles = '0 0 0';
37 setorigin (self, self.origin + '0 0 27'); // To fix a mappers' habit as old as Quake
40 objerror ("Teleport destination without a targetname");
43 void trigger_teleport (void)
45 self.angles = '0 0 0';
47 self.solid = SOLID_TRIGGER;
48 self.movetype = MOVETYPE_NONE;
50 setmodel (self, self.model);
55 self.touch = Teleport_Touch;
58 objerror ("Teleporter with no target");