#include "walker.qh"
-#ifdef IMPLEMENTATION
-
#ifdef SVQC
float autocvar_g_turrets_unit_walker_melee_damage;
.float animflag;
.float idletime;
-#define WALKER_PATH(this, s, e) pathlib_astar(this, s, e)
-
bool walker_firecheck(entity this)
{
if (this.animflag == ANIM_MELEE)
void walker_rocket_explode(entity this)
{
RadiusDamage (this, this.owner, (autocvar_g_turrets_unit_walker_rocket_damage), 0, (autocvar_g_turrets_unit_walker_rocket_radius), this, NULL, (autocvar_g_turrets_unit_walker_rocket_force), DEATH_TURRET_WALK_ROCKET.m_id, NULL);
- delete (this);
+ delete(this);
}
void walker_rocket_touch(entity this, entity toucher)
if (this.pathgoal.enemy)
{
- this.pathcurrent = WALKER_PATH(this, this.pathgoal.origin, this.pathgoal.enemy.origin);
+ this.pathcurrent = pathlib_astar(this, this.pathgoal.origin, this.pathgoal.enemy.origin);
this.pathgoal = this.pathgoal.enemy;
}
}
#endif
}
+void walker_findtarget(entity this)
+{
+ entity e = find(NULL, targetname, this.target);
+ if (!e)
+ {
+ LOG_TRACE("Initital waypoint for walker does NOT exist, fix your map!");
+ this.target = "";
+ }
+
+ if (e.classname != "turret_checkpoint")
+ LOG_TRACE("Warning: not a turrret path");
+ else
+ {
+#ifdef WALKER_FANCYPATHING
+ this.pathcurrent = pathlib_astar(this, this.origin, e.origin);
+ this.pathgoal = e;
+#else
+ this.pathcurrent = e;
+#endif
+ }
+
+ // TODO: this doesn't reset target, so tur_defend will be the checkpoint too!
+}
+
spawnfunc(turret_walker) { if(!turret_initialize(this, TUR_WALKER)) delete(this); }
METHOD(WalkerTurret, tr_think, void(WalkerTurret thistur, entity it))
{
it.ticrate = 0.05;
- entity e;
-
// Respawn is called & first spawn to, to set team. need to make sure we do not move the initial spawn.
if(it.move_movetype == MOVETYPE_WALK)
{
it.turret_firecheckfunc = walker_firecheck;
if (it.target != "")
- {
- e = find(NULL, targetname, it.target);
- if (!e)
- {
- LOG_TRACE("Initital waypoint for walker does NOT exsist, fix your map!");
- it.target = "";
- }
-
- if (e.classname != "turret_checkpoint")
- LOG_TRACE("Warning: not a turrret path");
- else
- {
-#ifdef WALKER_FANCYPATHING
- it.pathcurrent = WALKER_PATH(it, it.origin, e.origin);
- it.pathgoal = e;
-#else
- it.pathcurrent = e;
-#endif
- }
- }
+ InitializeEntity(it, walker_findtarget, INITPRIO_FINDTARGET);
}
#endif // SVQC
}
#endif // CSQC
-#endif