#include "waypoints.qh"
-#include <server/defs.qh>
-#include <server/miscfunctions.qh>
+#include <common/weapons/_all.qh>
+#include <common/stats.qh>
+#include <server/items/items.qh>
+#include <server/spawnpoints.qh>
+#include <server/weapons/tracing.qh>
#include "cvars.qh"
#include "bot.qh"
#include <common/constants.qh>
#include <common/debug.qh>
+#include <common/gamemodes/_mod.qh>
#include <common/mapobjects/trigger/jumppads.qh>
#include <common/net_linked.qh>
#include <common/physics/player.qh>
return;
}
+void waypoint_restore_hardwiredlinks(entity wp)
+{
+ if (wp.wphw00) waypoint_addlink(wp, wp.wphw00);
+ if (wp.wphw01) waypoint_addlink(wp, wp.wphw01);
+ if (wp.wphw02) waypoint_addlink(wp, wp.wphw02);
+ if (wp.wphw03) waypoint_addlink(wp, wp.wphw03);
+ if (wp.wphw04) waypoint_addlink(wp, wp.wphw04);
+ if (wp.wphw05) waypoint_addlink(wp, wp.wphw05);
+ if (wp.wphw06) waypoint_addlink(wp, wp.wphw06);
+ if (wp.wphw07) waypoint_addlink(wp, wp.wphw07);
+}
+
void waypoint_setupmodel(entity wp)
{
if (autocvar_g_waypointeditor)
}
else
{
- if(autocvar_developer)
+ if(autocvar_developer > 0)
{
LOG_INFO("A generated waypoint is stuck in solid at ", vtos(w.origin));
backtrace("Waypoint stuck");
}
}
});
+
+ // waypoint_clearlinks preserves references to old hardwired links (.wphwXX links)
+ // so they can be restored here when a wp is spawned over an existing one
+ waypoint_restore_hardwiredlinks(this);
+
navigation_testtracewalk = 0;
this.wplinked = true;
this.dphitcontentsmask = dphitcontentsmask_save;
wp.wp16mincost = wp.wp17mincost = wp.wp18mincost = wp.wp19mincost = wp.wp20mincost = wp.wp21mincost = wp.wp22mincost = wp.wp23mincost = f;
wp.wp24mincost = wp.wp25mincost = wp.wp26mincost = wp.wp27mincost = wp.wp28mincost = wp.wp29mincost = wp.wp30mincost = wp.wp31mincost = f;
+ // don't remove references to hardwired links (.wphwXX fields)
+
wp.wplinked = false;
}
LOG_TRACE("loaded ", ftos(c), " waypoint links from maps/", mapname, ".waypoints.hardwired");
}
+float waypoint_get_assigned_link_cost(entity w, float i)
+{
+ switch(i)
+ {
+ case 0: return w.wp00mincost;
+ case 1: return w.wp01mincost;
+ case 2: return w.wp02mincost;
+ case 3: return w.wp03mincost;
+ case 4: return w.wp04mincost;
+ case 5: return w.wp05mincost;
+ case 6: return w.wp06mincost;
+ case 7: return w.wp07mincost;
+ case 8: return w.wp08mincost;
+ case 9: return w.wp09mincost;
+ case 10: return w.wp10mincost;
+ case 11: return w.wp11mincost;
+ case 12: return w.wp12mincost;
+ case 13: return w.wp13mincost;
+ case 14: return w.wp14mincost;
+ case 15: return w.wp15mincost;
+ case 16: return w.wp16mincost;
+ case 17: return w.wp17mincost;
+ case 18: return w.wp18mincost;
+ case 19: return w.wp19mincost;
+ case 20: return w.wp20mincost;
+ case 21: return w.wp21mincost;
+ case 22: return w.wp22mincost;
+ case 23: return w.wp23mincost;
+ case 24: return w.wp24mincost;
+ case 25: return w.wp25mincost;
+ case 26: return w.wp26mincost;
+ case 27: return w.wp27mincost;
+ case 28: return w.wp28mincost;
+ case 29: return w.wp29mincost;
+ case 30: return w.wp30mincost;
+ case 31: return w.wp31mincost;
+ default: return -1;
+ }
+}
+
entity waypoint_get_link(entity w, float i)
{
switch(i)