+ });
+
+ if (imp >= 200 && imp <= 229)
+ {
+ if (!this.vehicle && this.deadflag == DEAD_NO)
+ {
+ // custom order weapon cycling
+ int i = imp % 10;
+ int m = (imp - (210 + i)); // <0 for prev, =0 for best, >0 for next
+ W_CycleWeapon(this.(cvar_cl_weaponpriorities[i]), m);
+ }
+ // else // don't retry, as this can break weaplast bind
+ // this.impulse = imp; // retry in next frame
+ }
+ else if (imp >= WEP_IMPULSE_BEGIN && imp <= WEP_IMPULSE_END)
+ {
+ if (!this.vehicle && this.deadflag == DEAD_NO) W_SwitchWeapon(imp - WEP_IMPULSE_BEGIN + WEP_FIRST);
+ // else // don't retry, as this can break weaplast bind
+ // this.impulse = imp; // retry in next frame
+ }
+}
+
+IMPULSE(use, 21)
+{
+ PlayerUseKey();
+}
+
+IMPULSE(waypoint_personal_here, 30)
+{
+ entity wp = WaypointSprite_DeployPersonal(WP_Waypoint, this.origin, RADARICON_WAYPOINT);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "personal waypoint spawned at location\n");
+}
+
+IMPULSE(waypoint_personal_crosshair, 31)
+{
+ WarpZone_crosshair_trace(this);
+ entity wp = WaypointSprite_DeployPersonal(WP_Waypoint, trace_endpos, RADARICON_WAYPOINT);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "personal waypoint spawned at crosshair\n");
+}
+
+IMPULSE(waypoint_personal_death, 32)
+{
+ if (!this.death_origin) return;
+ entity wp = WaypointSprite_DeployPersonal(WP_Waypoint, this.death_origin, RADARICON_WAYPOINT);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "personal waypoint spawned at death location\n");
+}
+
+IMPULSE(waypoint_here_follow, 33)
+{
+ if (!teamplay) return;
+ if (this.deadflag != DEAD_NO) return;
+ if (!MUTATOR_CALLHOOK(HelpMePing, this))
+ {
+ entity wp = WaypointSprite_Attach(WP_Helpme, true, RADARICON_HELPME);
+ if (!wp) WaypointSprite_HelpMePing(this.waypointsprite_attachedforcarrier);
+ else WaypointSprite_Ping(wp);
+ }
+ sprint(this, "HELP ME attached\n");
+}
+
+IMPULSE(waypoint_here_here, 34)
+{
+ entity wp = WaypointSprite_DeployFixed(WP_Here, false, this.origin, RADARICON_HERE);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "HERE spawned at location\n");
+}
+
+IMPULSE(waypoint_here_crosshair, 35)
+{
+ WarpZone_crosshair_trace(this);
+ entity wp = WaypointSprite_DeployFixed(WP_Here, false, trace_endpos, RADARICON_HERE);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "HERE spawned at crosshair\n");
+}
+
+IMPULSE(waypoint_here_death, 36)
+{
+ if (!this.death_origin) return;
+ entity wp = WaypointSprite_DeployFixed(WP_Here, false, this.death_origin, RADARICON_HERE);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "HERE spawned at death location\n");
+}
+
+IMPULSE(waypoint_danger_here, 37)
+{
+ entity wp = WaypointSprite_DeployFixed(WP_Danger, false, this.origin, RADARICON_DANGER);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "DANGER spawned at location\n");
+}
+
+IMPULSE(waypoint_danger_crosshair, 38)
+{
+ WarpZone_crosshair_trace(this);
+ entity wp = WaypointSprite_DeployFixed(WP_Danger, false, trace_endpos, RADARICON_DANGER);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "DANGER spawned at crosshair\n");
+}
+
+IMPULSE(waypoint_danger_death, 39)
+{
+ if (!this.death_origin) return;
+ entity wp = WaypointSprite_DeployFixed(WP_Danger, false, this.death_origin, RADARICON_DANGER);
+ if (wp) WaypointSprite_Ping(wp);
+ sprint(this, "DANGER spawned at death location\n");
+}