1 REGISTER_NET_LINKED(ENT_CLIENT_LADDER)
3 void func_ladder_touch()
14 other.ladder_time = time + 0.1;
15 other.ladder_entity = self;
19 bool func_ladder_send(entity to, int sf)
21 WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER);
24 if(self.warpzone_isboxy)
26 if(self.origin != '0 0 0')
28 WriteByte(MSG_ENTITY, f);
30 // we need THESE to render the warpzone (and cull properly)...
33 WriteCoord(MSG_ENTITY, self.origin.x);
34 WriteCoord(MSG_ENTITY, self.origin.y);
35 WriteCoord(MSG_ENTITY, self.origin.z);
38 WriteShort(MSG_ENTITY, self.modelindex);
39 WriteCoord(MSG_ENTITY, self.mins.x);
40 WriteCoord(MSG_ENTITY, self.mins.y);
41 WriteCoord(MSG_ENTITY, self.mins.z);
42 WriteCoord(MSG_ENTITY, self.maxs.x);
43 WriteCoord(MSG_ENTITY, self.maxs.y);
44 WriteCoord(MSG_ENTITY, self.maxs.z);
45 WriteByte(MSG_ENTITY, bound(1, self.scale * 16, 255));
47 WriteString(MSG_ENTITY, self.classname);
48 WriteByte(MSG_ENTITY, self.skin);
49 WriteCoord(MSG_ENTITY, self.speed);
51 trigger_common_write(false);
56 void func_ladder_link()
58 self.SendEntity = func_ladder_send;
59 self.SendFlags = 0xFFFFFF;
60 //self.model = "null";
63 void func_ladder_init()
65 //self.mdl = self.model;
66 string m = self.model;
67 WarpZoneLib_ExactTrigger_Init();
71 _setmodel(self, m); // no precision needed
73 setorigin(self, self.origin);
75 setsize(self, self.mins * self.scale, self.maxs * self.scale);
77 setsize(self, self.mins, self.maxs);
78 self.touch = func_ladder_touch;
83 spawnfunc(func_ladder)
96 void func_ladder_remove()
98 if(self.classname) { strunzone(self.classname); }
99 self.classname = string_null;
102 NET_HANDLE(ENT_CLIENT_LADDER, bool isnew)
105 self.warpzone_isboxy = (f & 1);
108 self.origin_x = ReadCoord();
109 self.origin_y = ReadCoord();
110 self.origin_z = ReadCoord();
113 self.origin = '0 0 0';
115 self.modelindex = ReadShort();
116 self.mins_x = ReadCoord();
117 self.mins_y = ReadCoord();
118 self.mins_z = ReadCoord();
119 self.maxs_x = ReadCoord();
120 self.maxs_y = ReadCoord();
121 self.maxs_z = ReadCoord();
122 self.scale = ReadByte() / 16;
123 self.classname = strzone(ReadString());
124 self.skin = ReadByte();
125 self.speed = ReadCoord();
127 trigger_common_read(false);
129 self.solid = SOLID_TRIGGER;
130 self.move_touch = func_ladder_touch;
131 self.drawmask = MASK_NORMAL;
132 self.move_time = time;
133 self.entremove = func_ladder_remove;