djcev.com

//

Git Repos / fte_dogmode / qc / info / path_corner.qc

Last update to this file was on 2024-03-24 at 02:40.

Show path_corner.qc

//==============================================================================
// path_corner
//==============================================================================

//======================================================================
// forward declarations
//======================================================================

void() path_corner_movetarget_touch;
void(entity e) path_corner_movetarget_init;
entity(entity src, vector org) spawn_path_corner;
void(entity e) path_corner_init;
void() path_corner;

//------------------------------------------------------------------------------

/*QUAKED path_corner (0.5 0.3 0) (-8 -8 -8) (8 8 8)
Monsters will continue walking towards the next target corner.
*/
//----------------------------------------------------------------------
// class path_corner: base_mapentity
// {
//--------------------------------------------------------------
// t_movetarget
//
// Something has bumped into a movetarget. If it is a monster
// moving towards it, change the next destination and continue.
//--------------------------------------------------------------
void() path_corner_movetarget_touch =
{
local entity stemp;

if (other.movetarget != self)
return;

if (other.enemy)
// fighting, not following a path
return;

stemp = self;
self = other;
other = stemp;

if (self.classtype == CT_MONSTER_OGRE)
// chainsaw drag sound -- sound_custom -- dumptruck_ds
sound_misc (self, CHAN_VOICE, "ogre/ogdrag.wav",
1, ATTN_IDLE);

// dprint ("t_movetarget\n");
self.goalentity = self.movetarget = find (world, targetname,
other.target);
self.ideal_yaw = vectoyaw (
self.goalentity.origin - self.origin);
if (!self.movetarget)
{
self.pausetime = time + 999999;
// TODO CEV
/*
if (self.classgroup & CG_MONSTER)
{
self.think_stand ();
}
else
{
dprint (sprintf("t_movetarget: ERROR tried "
"to call th_stand on classname %s!\n",
self.classname));
}
*/
return;
}
};

//--------------------------------------------------------------
// MOVETARGET CODE
//
// The angle of the movetarget effects standing and bowing
// direction, but has no effect on movement, which always heads
// to the next target.
//
// targetname
// must be present. The name of this movetarget.
//
// target
// the next spot to move to. If not present, stop here for good.
//
// pausetime
// The number of seconds to spend standing or bowing for
// path_stand or path_bow
//--------------------------------------------------------------
void(entity e) path_corner_movetarget_init =
{
if (!e.targetname)
objerror ("path_corner_movetarget_init: no targetname");

e.solid = SOLID_TRIGGER;
e.touch = path_corner_movetarget_touch;
setsize (e, '-8 -8 -8', '8 8 8');
};

//--------------------------------------------------------------
entity(entity src, vector org) spawn_path_corner =
{
local entity e = spawn ();
e.owner = src;
e.origin = org;
path_corner_init (e);
return e;
};

//--------------------------------------------------------------
void(entity e) path_corner_init =
{
base_mapentity_init (e);
e.classname = "path_corner";
e.classtype = CT_PATH_CORNER;

if (e.noise != __NULL__ && e.noise != "")
precache_sound (e.noise);
if (e.noise2 != __NULL__ && e.noise2 != "")
precache_sound (e.noise2);

path_corner_movetarget_init (e);
};

//--------------------------------------------------------------
void() path_corner =
{
// new spawnflags for all entities -- iw
if (SUB_Inhibit())
return;

path_corner_init (self);
};
// };

Return to the top of this page or return to the overview of this repo.

Log path_corner.qc

Date Commit Message Author + -
2024-03-24 2nd pass refactor, rework QC class structure cev +109 -125
2024-02-18 Client/player, projectiles, entrypoints refactor cev +10 -1
2024-01-31 Class based monster refactor & start projectiles cev +64  
2024-01-09 Continue OO / Class-based refactor cev +78  

Return to the top of this page or return to the overview of this repo.