]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/gamec/t_teleporters.c
made cl_client.c compile again - you can not assign a string to a float field without...
[divverent/nexuiz.git] / qcsrc / gamec / t_teleporters.c
1
2 void Teleport_Touch (void)
3 {
4         if (other.health < 1)
5                 return;
6         if (other.classname != "player")        // FIXME: Make missiles firable through the teleport too
7                 return;
8
9         // Make teleport effect where the player left
10         sound (other, CHAN_ITEM, "misc/teleport.wav", 1, ATTN_NORM);
11         te_teleport (other.origin);
12         
13         dest = find (world, targetname, self.target);
14         if (!dest)
15                 objerror ("Teleporter with nonexistant target");
16
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);
21
22         // Relocate the player
23         //setorigin (other, dest.origin);
24         setorigin (other, dest.origin + '0 0 1' * (1 - other.mins_z - 24));
25         other.angles = dest.mangle;
26         other.fixangle = TRUE;
27         
28         other.velocity = '0 0 0';
29         
30         other.flags = other.flags - (other.flags & FL_ONGROUND);
31 }
32
33 void info_teleport_destination (void)
34 {
35         self.mangle = self.angles;
36         self.angles = '0 0 0';
37
38         //setorigin (self, self.origin + '0 0 27');     // To fix a mappers' habit as old as Quake
39         setorigin (self, self.origin);
40
41         if (!self.targetname)
42                 objerror ("Teleport destination without a targetname");
43 }
44
45 void misc_teleporter_dest (void)
46 {
47         info_teleport_destination();
48 }
49
50 void trigger_teleport (void)
51 {
52         self.angles = '0 0 0';
53
54         self.solid = SOLID_TRIGGER;
55         self.movetype = MOVETYPE_NONE;
56         
57         setmodel (self, self.model);
58         
59         self.model = "";
60         self.modelindex = 0;
61         
62         self.touch = Teleport_Touch;
63         
64         if (!self.target)
65                 objerror ("Teleporter with no target");
66 }