]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/triggers/func/ladder.qc
4e90eb9aa3f05004c62f085f08d5336788fd8960
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / func / ladder.qc
1 REGISTER_NET_LINKED(ENT_CLIENT_LADDER)
2
3 void func_ladder_touch()
4 {SELFPARAM();
5 #ifdef SVQC
6         if (!other.iscreature)
7                 return;
8         if(IS_VEHICLE(other))
9                 return;
10 #elif defined(CSQC)
11         if(!other.isplayermodel)
12                 return;
13 #endif
14
15         EXACTTRIGGER_TOUCH;
16
17         other.ladder_time = time + 0.1;
18         other.ladder_entity = self;
19 }
20
21 #ifdef SVQC
22 bool func_ladder_send(entity to, int sf)
23 {SELFPARAM();
24         WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER);
25
26         WriteString(MSG_ENTITY, self.classname);
27         WriteByte(MSG_ENTITY, self.skin);
28         WriteCoord(MSG_ENTITY, self.speed);
29
30         trigger_common_write(self, false);
31
32         return true;
33 }
34
35 void func_ladder_link()
36 {
37         self.SendEntity = func_ladder_send;
38         self.SendFlags = 0xFFFFFF;
39         //self.model = "null";
40 }
41
42 void func_ladder_init()
43 {
44         self.touch = func_ladder_touch;
45
46         trigger_init(self);
47         func_ladder_link();
48 }
49
50 spawnfunc(func_ladder)
51 {
52         func_ladder_init();
53 }
54
55 spawnfunc(func_water)
56 {
57         func_ladder_init();
58 }
59
60 #elif defined(CSQC)
61 .float speed;
62
63 void func_ladder_remove()
64 {
65         if(self.classname) { strunzone(self.classname); }
66         self.classname = string_null;
67 }
68
69 NET_HANDLE(ENT_CLIENT_LADDER, bool isnew)
70 {
71         self.classname = strzone(ReadString());
72         self.skin = ReadByte();
73         self.speed = ReadCoord();
74
75         trigger_common_read(false);
76
77         self.solid = SOLID_TRIGGER;
78         self.move_touch = func_ladder_touch;
79         self.drawmask = MASK_NORMAL;
80         self.move_time = time;
81         self.entremove = func_ladder_remove;
82
83         return true;
84 }
85 #endif