+\r
+// returns 1 if player is at minimum size and 0 if player is at normal size\r
+float playersize_micro(entity e)\r
+{\r
+ if(!cvar("g_healthsize"))\r
+ return 0;\r
+ return bound(0, (e.health / cvar("g_healthsize_center") - 1) / (cvar("g_healthsize_min") / cvar("g_healthsize_center") - 1), 1);\r
+}\r
+// returns 0 if player is at normal size and 1 if player is at maximum size\r
+float playersize_macro(entity e)\r
+{\r
+ if(!cvar("g_healthsize"))\r
+ return 0;\r
+ return 1 - bound(0, (e.health / cvar("g_healthsize_max") - 1) / (cvar("g_healthsize_center") / cvar("g_healthsize_max") - 1), 1);\r
+}\r
+\r
+// returns 1 if the player is close to a wall\r
+float check_close_to_wall(float threshold) {\r
+ //TODO: This check should be moved somehow for this to be a common utility\r
+ if (!cvar("sv_dodging_wall_dodging"))\r
+ return 0;\r
+\r
+ vector trace_start;\r
+ vector trace_end;\r
+\r
+ trace_start = self.origin;\r
+\r
+ trace_end = self.origin + (1000*v_right);\r
+ tracebox(trace_start, self.mins, self.maxs, trace_end, TRUE, self);\r
+ if (trace_fraction < 1 && vlen (self.origin - trace_endpos) < threshold)\r
+ return 1;\r
+\r
+ trace_end = self.origin - (1000*v_right);\r
+ tracebox(trace_start, self.mins, self.maxs, trace_end, TRUE, self);\r
+ if (trace_fraction < 1 && vlen (self.origin - trace_endpos) < threshold)\r
+ return 1;\r
+\r
+ trace_end = self.origin + (1000*v_forward);\r
+ tracebox(trace_start, self.mins, self.maxs, trace_end, TRUE, self);\r
+ if (trace_fraction < 1 && vlen (self.origin - trace_endpos) < threshold)\r
+ return 1;\r
+\r
+ trace_end = self.origin - (1000*v_forward);\r
+ tracebox(trace_start, self.mins, self.maxs, trace_end, TRUE, self);\r
+ if (trace_fraction < 1 && vlen (self.origin - trace_endpos) < threshold)\r
+ return 1;\r
+\r
+ return 0;\r
+}\r
+\r
+float check_close_to_ground(float threshold) {\r
+ if (self.flags & FL_ONGROUND)\r
+ return 1;\r
+\r
+ return 0;\r
+}\r