first commit

This commit is contained in:
2019-12-30 17:23:05 +01:00
commit 7fe19ee89f
1149 changed files with 271279 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
void() s_explode1 = [0, s_explode2] {};
void() s_explode2 = [1, s_explode3] {};
void() s_explode3 = [2, s_explode4] {};
void() s_explode4 = [3, s_explode5] {};
void() s_explode5 = [4, s_explode6] {};
void() s_explode6 = [5, SUB_Remove] {};
/*==========
BecomeExplosion
==========*/
void() BecomeExplosion =
{
self.solid = SOLID_NOT;
self.movetype = MOVETYPE_NONE;
self.velocity = '0 0 0';
self.touch = SUB_Null;
setmodel (self, "progs/s_explod.spr");
s_explode1();
};
/*==========
grenade_explode
==========*/
static void() grenade_explode =
{
RadiusDamage (self, self.owner, self.dmg, world);
te_explosion(self.origin);
BecomeExplosion();
};
/*==========
grenade_touch
==========*/
static void() grenade_touch =
{
if (pointcontents(self.origin) == CONTENT_SKY)
{
remove(self);
return;
}
if (other.takedamage == DAMAGE_AIM)
{
grenade_explode();
return;
}
sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM);
};
/*==========
launch_grenade
used for player, zombie and ogre grenades
==========*/
void(vector org, vector dir, float spd, float dam) launch_grenade =
{
newmis = spawn();
newmis.classname = "grenade";
newmis.owner = self;
newmis.solid = SOLID_BBOX;
newmis.movetype = MOVETYPE_BOUNCE;
setmodel (newmis, "progs/grenade.mdl");
setsize (newmis, '0 0 0', '0 0 0');
setorigin (newmis, org);
newmis.dmg = dam;
newmis.touch = grenade_touch;
newmis.angles = vectoangles(dir);
newmis.velocity = dir * spd;
newmis.think = grenade_explode;
newmis.nextthink = time + 2.5;
};
/*==========
spike_touch
==========*/
static void() spike_touch2 =
{
if (pointcontents(self.origin) == CONTENT_SKY)
{
remove(self);
return;
}
// move out of the wall / floor slightly
self.origin = self.origin - 8*normalize(self.velocity);
// lasers always play an impact sound
if (self.classname == "laser")
sound (self, CHAN_WEAPON, "enforcer/enfstop.wav", 1, ATTN_IDLE);
if (other.takedamage)
{
Damage(other, self, self.owner, self.dmg);
if (other.solid == SOLID_BSP)
SpawnTouchParticles(self.dmg, 192);
else
SpawnTouchblood(self.dmg);
}
else
{
if (self.classname == "laser")
te_gunshot(self.origin);
else if (self.classname == "spike")
te_spike(self.origin);
else if (self.classname == "superspike")
te_superspike(self.origin);
else if (self.classname == "wizspike")
te_wizspike(self.origin);
else if (self.classname == "knightspike")
te_knightspike(self.origin);
}
remove(self);
};
/*==========
launch_spike
used for nails, lasers, scrag spit and hellknight fire
==========*/
void(string name, string mod, vector org, vector dir, float spd, float dam) launch_spike2 =
{
newmis = spawn();
newmis.classname = name; // spike, superspike, laser, knightspike, wizspike
newmis.owner = self;
newmis.solid = SOLID_BBOX;
newmis.movetype = MOVETYPE_FLYMISSILE;
setmodel (newmis, mod);
setsize (newmis, '0 0 0', '0 0 0');
setorigin (newmis, org);
newmis.dmg = dam;
newmis.touch = spike_touch2;
newmis.angles = vectoangles(dir);
newmis.velocity = dir * spd;
newmis.think = SUB_Remove;
newmis.nextthink = time + 10;
};