return new_org;
}
+void crosshair_trace_waypoints(entity pl);
+void waypoint_lock(entity pl)
+{
+ crosshair_trace_waypoints(pl);
+ pl.wp_locked = trace_ent;
+}
+
bool waypoint_has_hardwiredlinks(entity wp)
{
if (!wp)
LOG_INFO("^xf80Start waypoint has been cleared.\n");
}
-void crosshair_trace_waypoints(entity pl);
void waypoint_start_hardwiredlink(entity pl, bool at_crosshair)
{
entity wp = pl.nearestwaypoint;
it.wp_aimed = NULL;
if (wasfreed(it.wp_locked))
it.wp_locked = NULL;
- if (PHYS_INPUT_BUTTON_USE(it))
- it.wp_locked = it.wp_aimed;
entity head = it.wp_locked;
if (!head)
head = navigation_findnearestwaypoint(it, false);
waypoint_start_hardwiredlink(caller, (s == "crosshair"));
return;
}
+ else if (argv(1) == "lock")
+ {
+ waypoint_lock(caller);
+ return;
+ }
else if (argv(1) == "unreachable")
{
if (!IS_PLAYER(caller))
sprint(caller, " ^5spawn support^7: spawns a support waypoint (spawn another waypoint to create destination from which all incoming links are removed), useful to replace links to preblematic jumppad/teleport waypoints\n");
sprint(caller, " ^5hardwire^7: marks the nearest waypoint as origin of a new hardwired link (spawn another waypoint over an existing one to create destination)\n");
sprint(caller, " ^5hardwire crosshair^7: marks the waypoint at crosshair instead of the nearest waypoint\n");
+ sprint(caller, " ^5lock^7: locks link display of the aimed waypoint (unlocks if no waypoint is found at crosshair's position)\n");
sprint(caller, " ^5symorigin get|set\n");
sprint(caller, " ^5symorigin get|set p1 p2 ... pX\n");
sprint(caller, " ^5symaxis get|set p1 p2\n");