first commit
This commit is contained in:
119
mod_slipgate/source/server/subs.qc
Normal file
119
mod_slipgate/source/server/subs.qc
Normal file
@@ -0,0 +1,119 @@
|
||||
/*==========
|
||||
SUB_PainNull
|
||||
==========*/
|
||||
void(entity attacker, float damage) SUB_PainNull = {};
|
||||
|
||||
/*==========
|
||||
SUB_Null
|
||||
==========*/
|
||||
void() SUB_Null = {};
|
||||
|
||||
/*==========
|
||||
SUB_Remove
|
||||
==========*/
|
||||
void() SUB_Remove = {remove(self);};
|
||||
|
||||
/*==========
|
||||
SUB_Fade
|
||||
==========*/
|
||||
void() SUB_Fade =
|
||||
{
|
||||
if (self.alpha == 0)
|
||||
self.alpha = 1;
|
||||
self.alpha = self.alpha - 0.1;
|
||||
if (self.alpha <= 0)
|
||||
{
|
||||
remove(self);
|
||||
return;
|
||||
}
|
||||
self.think = SUB_Fade;
|
||||
self.nextthink = time + 0.1;
|
||||
};
|
||||
|
||||
/*==========
|
||||
SetMoveDir
|
||||
|
||||
the angle field in map editors is a single float, so up and down are constant values
|
||||
==========*/
|
||||
void() SetMovedir =
|
||||
{
|
||||
if (self.angles == '0 -1 0') // up
|
||||
self.movedir = '0 0 1';
|
||||
else if (self.angles == '0 -2 0') // down
|
||||
self.movedir = '0 0 -1';
|
||||
else
|
||||
{
|
||||
makevectors (self.angles);
|
||||
self.movedir = v_forward;
|
||||
}
|
||||
self.angles = '0 0 0';
|
||||
};
|
||||
|
||||
/*==========
|
||||
SUB_CalcMoveDone
|
||||
|
||||
After moving, set origin to exact final destination and run think1
|
||||
==========*/
|
||||
void() SUB_CalcMoveDone =
|
||||
{
|
||||
setorigin(self, self.finaldest);
|
||||
self.velocity = '0 0 0';
|
||||
self.think = SUB_Null;
|
||||
self.nextthink = -1;
|
||||
if (self.think1)
|
||||
self.think1();
|
||||
};
|
||||
|
||||
/*==========
|
||||
SUB_CalcMove
|
||||
|
||||
calculate self.velocity and self.nextthink to reach dest from
|
||||
self.origin traveling at speed
|
||||
==========*/
|
||||
void(vector dst, float spd, void() thnk) SUB_CalcMove =
|
||||
{
|
||||
if (!spd)
|
||||
{
|
||||
objerror("SUB_CalcMove: no speed defined");
|
||||
return;
|
||||
}
|
||||
|
||||
self.think = SUB_CalcMoveDone;
|
||||
self.think1 = thnk;
|
||||
self.finaldest = dst;
|
||||
|
||||
if (dst == self.origin)
|
||||
{
|
||||
self.velocity = '0 0 0';
|
||||
if (self.movetype == MOVETYPE_PUSH)
|
||||
self.nextthink = self.ltime + 0.01;
|
||||
else
|
||||
self.nextthink = time + 0.01;
|
||||
return;
|
||||
}
|
||||
|
||||
vector delta = dst - self.origin;
|
||||
float traveltime = vlen(delta) / spd;
|
||||
if (traveltime < 0.01)
|
||||
{
|
||||
self.velocity = '0 0 0';
|
||||
if (self.movetype == MOVETYPE_PUSH)
|
||||
self.nextthink = self.ltime + 0.01;
|
||||
else
|
||||
self.nextthink = time + 0.01;
|
||||
return;
|
||||
}
|
||||
|
||||
self.velocity = delta / traveltime;
|
||||
if (self.movetype == MOVETYPE_PUSH)
|
||||
self.nextthink = self.ltime + traveltime;
|
||||
else
|
||||
self.nextthink = time + traveltime;
|
||||
};
|
||||
|
||||
void(float normal) SUB_AttackFinished =
|
||||
{
|
||||
self.cnt = 0; // refire count for nightmare
|
||||
if (skill != 3)
|
||||
self.attack_finished = time + normal;
|
||||
};
|
||||
Reference in New Issue
Block a user