10 if(dt <= 0) {
return; }
16 it.ladder_entity = NULL;
17 IL_REMOVE(g_ladderents, it);
35 it.ladder_entity =
this;
48 WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER);
54 trigger_common_write(
this,
false);
59 void func_ladder_link(
entity this)
61 trigger_link(
this, func_ladder_send);
65 void func_ladder_init(
entity this)
68 func_ladder_link(
this);
72 if(
min(this.
absmax.x -
this.absmin.x,
this.absmax.y -
this.absmin.y) > 100)
76 setsize(tracetest_ent, PL_MIN_CONST, PL_MAX_CONST);
82 top_max.z += PL_MAX_CONST.z - PL_MIN_CONST.z;
89 tracebox(top_max, PL_MIN_CONST, PL_MAX_CONST, top_min,
MOVE_NOMONSTERS, tracetest_ent);
92 if(this.
absmax.x -
this.absmin.x > PL_MAX_CONST.x - PL_MIN_CONST.x
93 &&
this.absmax.y -
this.absmin.y <
this.absmax.x -
this.absmin.x)
96 top_max.y = top_min.y = this.
absmin.y + (PL_MAX_CONST.y - PL_MIN_CONST.y) * 0.75;
98 else if(this.
absmax.y -
this.absmin.y > PL_MAX_CONST.y - PL_MIN_CONST.y
99 &&
this.absmax.x -
this.absmin.x <
this.absmax.y -
this.absmin.y)
102 top_max.x = top_min.x = this.
absmin.x + (PL_MAX_CONST.x - PL_MIN_CONST.x) * 0.75;
104 tracebox(top_max, PL_MIN_CONST, PL_MAX_CONST, top_min,
MOVE_NOMONSTERS, tracetest_ent);
107 if(this.
absmax.x -
this.absmin.x > PL_MAX_CONST.x - PL_MIN_CONST.x
108 &&
this.absmax.y -
this.absmin.y <
this.absmax.x -
this.absmin.x)
111 top_max.y = top_min.y = this.
absmax.y - (PL_MAX_CONST.y - PL_MIN_CONST.y) * 0.75;
113 else if(this.
absmax.y -
this.absmin.y > PL_MAX_CONST.y - PL_MIN_CONST.y
114 &&
this.absmax.x -
this.absmin.x <
this.absmax.y -
this.absmin.y)
117 top_max.x = top_min.x = this.
absmax.x - (PL_MAX_CONST.x - PL_MIN_CONST.x) * 0.75;
119 tracebox(top_max, PL_MIN_CONST, PL_MAX_CONST, top_min,
MOVE_NOMONSTERS, tracetest_ent);
124 delete(tracetest_ent);
140 func_ladder_init(
this);
145 func_ladder_init(
this);
153 void func_ladder_remove(
entity this)
157 it.ladder_entity = NULL;
158 IL_REMOVE(g_ladderents, it);
166 this.
skin = ReadByte();
167 this.
speed = ReadCoord();
170 trigger_common_read(
this,
false);
174 this.draw = func_ladder_draw;
178 this.entremove = func_ladder_remove;
#define IL_EACH(this, cond, body)
#define REGISTER_NET_LINKED(id)
const int WAYPOINTFLAG_LADDER
#define NET_HANDLE(id, param)
float DPCONTENTS_PLAYERCLIP
spawnfunc(info_player_attacker)
const float MOVE_NOMONSTERS
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
ERASEABLE float boxesoverlap(vector m1, vector m2, vector m3, vector m4)
requires that m2>m1 in all coordinates, and that m4>m3
float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig)
float waypoint_getlinearcost(float dist)
vector(float skel, float bonenum) _skel_get_boneabs_hidden
const float SOLID_TRIGGER
IntrusiveList g_ladderents
void waypoint_spawnforteleporter_boxes(entity e, int teleport_flag, vector org1, vector org2, vector destination1, vector destination2, float timetaken)
IntrusiveList g_drawables
void func_ladder_think(entity this)