]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/triggers/func/ladder.qc
Merge branch 'master' into terencehill/dynamic_hud
[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     SELFPARAM();
38         self.SendEntity = func_ladder_send;
39         self.SendFlags = 0xFFFFFF;
40         //self.model = "null";
41 }
42
43 void func_ladder_init()
44 {
45     SELFPARAM();
46         self.touch = func_ladder_touch;
47
48         trigger_init(self);
49         func_ladder_link();
50 }
51
52 spawnfunc(func_ladder)
53 {
54         func_ladder_init();
55 }
56
57 spawnfunc(func_water)
58 {
59         func_ladder_init();
60 }
61
62 #elif defined(CSQC)
63 .float speed;
64
65 void func_ladder_remove(entity this)
66 {
67         if(this.classname) { strunzone(this.classname); }
68         this.classname = string_null;
69 }
70
71 NET_HANDLE(ENT_CLIENT_LADDER, bool isnew)
72 {
73         self.classname = strzone(ReadString());
74         self.skin = ReadByte();
75         self.speed = ReadCoord();
76
77         trigger_common_read(false);
78
79         self.solid = SOLID_TRIGGER;
80         self.move_touch = func_ladder_touch;
81         self.drawmask = MASK_NORMAL;
82         self.move_time = time;
83         self.entremove = func_ladder_remove;
84
85         return true;
86 }
87 #endif