Module dpmod: Change committed

havoc at icculus.org havoc at icculus.org
Fri Sep 20 02:02:28 EDT 2002


Commiter   : havoc
CVSROOT    : /cvs/cvsroot/twilight
Module     : dpmod
Commit time: 2002-09-20 06:02:28 UTC

Log message:

absolute velocity instead of relative

Modified files:
     qc/mine.qc

------=MIME.1e19952f6f7ee3c701d2a62a30caac7d
Content-Type: text/plain; name="dpmod.20020920.060228.havoc.diff"
Content-Disposition: attachment; filename="dpmod.20020920.060228.havoc.diff"
Content-Transfer-Encoding: 8bit

Index: dpmod/qc/mine.qc
diff -u dpmod/qc/mine.qc:1.1.1.1 dpmod/qc/mine.qc:1.2
--- dpmod/qc/mine.qc:1.1.1.1	Thu Sep 19 15:06:56 2002
+++ dpmod/qc/mine.qc	Fri Sep 20 02:02:18 2002
@@ -1,299 +1,299 @@
-
-float MINE_LASERTRIP = 1;
-float MINE_PROXIMITY = 2;
-float MINE_IMMUNETODAMAGE = 4;
-float MINE_TENWARHEAD = 8;
-float MINE_DETONATEONBUTTON3 = 16;
-
-void() MineExplode =
-{
-	local vector v, basevel;
-	local float t;
-	if (self.weapon & MINE_TENWARHEAD)
-	{
-		basevel = '0 0 250' + '0 0 0.2' * cvar("sv_gravity");
-		t = /*GRENADE_IMPACT + */GRENADE_IMMUNETODAMAGE;
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
-	}
-	else if (self.lefty == 2)
-	{
-		v = self.angles;
-		v_x = 0 - v_x;
+
+float MINE_LASERTRIP = 1;
+float MINE_PROXIMITY = 2;
+float MINE_IMMUNETODAMAGE = 4;
+float MINE_TENWARHEAD = 8;
+float MINE_DETONATEONBUTTON3 = 16;
+
+void() MineExplode =
+{
+	local vector v, basevel;
+	local float t;
+	if (self.weapon & MINE_TENWARHEAD)
+	{
+		basevel = '0 0 250' + '0 0 0.2' * cvar("sv_gravity");
+		t = /*GRENADE_IMPACT + */GRENADE_IMMUNETODAMAGE;
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+		v = randomvec() * 250 + basevel;LaunchGrenade(self.origin, v, self.owner, self.dmg, self.dmg2, t, 0.5, self.deathtype, self.obitfunc1);
+	}
+	else if (self.lefty == 2)
+	{
+		v = self.angles;
+		v_x = 0 - v_x;
 		makevectors(v);
 		bullet_type = -1;
 		bullet_owner = self.owner;
-		bullet_launcher = self;
+		bullet_launcher = self;
 		bullet_ignoreentity = world;
 		shotorg = self.origin;
-		FireBullets(4, self.dmg / 4, self.dmg / 4, v_forward * 7000, 0.05, "LASERTRIPMINEDIRECT", DT_NAIL, self.obitfunc1);
-		Explosion(self.origin, self.owner, self.dmg, self.dmg2, "LASERTRIPMINEBLAST", '0 0 0', self.effects & EF_BLUE, self.obitfunc1);
-	}
-	else if (self.lefty == 3)
-	{
-		T_Damage(self.enemy, self, self.owner, self.dmg, self.dmg, "TAGMINEDIRECT", DT_EXPLOSION, self.origin, '0 0 0.5' * self.dmg, self.obitfunc1);
-		ExplosionIgnore(self.origin, self.owner, self.dmg, self.dmg2, self.enemy, "TAGMINEBLAST", '0 0 0', self.effects & EF_BLUE, self.obitfunc1);
-	}
-	else
-		Explosion(self.origin, self.owner, self.dmg, self.dmg2, self.deathtype, '0 0 0', self.effects & EF_BLUE, self.obitfunc1);
-	remove(self);
-};
-
-void() MineDet =
-{
-	self.think = MineExplode;
-	self.nextthink = time;
-	self.solid = SOLID_NOT;
-	self.takedamage = DAMAGE_NO;
-	setsize(self, '0 0 0', '0 0 0');
-	self.movetype = MOVETYPE_NONE;
-};
-
-void() MineThink =
-{
-	local entity head;
-	local float p;
-	local vector v;
-	self.nextthink = time;
-	fightdone = time + 1; // delay stuff until fighting is over
-	p = pointcontents(self.origin);
-	if (p == CONTENT_SKY)
-	{
-		remove(self);
-		return;
-	}
-	if (p == CONTENT_LAVA || time > self.cnt)
-	{
-		self.th_die();
-		return;
-	}
-	if (self.weapon & MINE_DETONATEONBUTTON3)
-	if (self.owner.button3)
-	if (self.owner.weapon == IT_WEAPON6)
-	{
-		MineExplode();
-		return;
-	}
-	if (self.lefty == 3)
-	{
-		if (!self.enemy.takedamage)
-		{
-			MineExplode();
-			return;
-		}
-	}
-	if (time >= self.count)
-	{
-		self.count = time + 0.05;
-		if (self.lefty)
-		{
-			head = findradius(self.origin, self.dmg2 * 0.5);
-			while (head)
-			{
-				if ((head.flags & FL_MONSTER) || head.classname == "player")
-				if (head != self.owner)
-				if (head.team == 0 || head.team != self.owner.team)
-				if (head != self.enemy)
-				{
-					traceline(head.origin, self.origin, TRUE, world);
-					if (trace_fraction == 1)
-					{
-						// trigger
-						self.count = time + 1000;
-						self.cnt = time + 0.1;
-						sound(self, CHAN_VOICE, "weapons/bomb/trigger.wav", 1, ATTN_STATIC);
-						break;
-					}
-				}
-				head = head.chain;
-			}
-		}
-		if (self.lefty == 2)
-		{
-			v = self.angles;
-			v_x = 0 - v_x;
-			makevectors(v);
-			newmis = self.owner;
-			self.owner = world;
-			traceline(self.origin, self.origin + v_forward * 65536, FALSE, self);
-			self.owner = newmis;
-			self.dest = trace_endpos;
+		FireBullets(4, self.dmg / 4, self.dmg / 4, v_forward * 7000, 0.05, "LASERTRIPMINEDIRECT", DT_NAIL, self.obitfunc1);
+		Explosion(self.origin, self.owner, self.dmg, self.dmg2, "LASERTRIPMINEBLAST", '0 0 0', self.effects & EF_BLUE, self.obitfunc1);
+	}
+	else if (self.lefty == 3)
+	{
+		T_Damage(self.enemy, self, self.owner, self.dmg, self.dmg, "TAGMINEDIRECT", DT_EXPLOSION, self.origin, '0 0 0.5' * self.dmg, self.obitfunc1);
+		ExplosionIgnore(self.origin, self.owner, self.dmg, self.dmg2, self.enemy, "TAGMINEBLAST", '0 0 0', self.effects & EF_BLUE, self.obitfunc1);
+	}
+	else
+		Explosion(self.origin, self.owner, self.dmg, self.dmg2, self.deathtype, '0 0 0', self.effects & EF_BLUE, self.obitfunc1);
+	remove(self);
+};
+
+void() MineDet =
+{
+	self.think = MineExplode;
+	self.nextthink = time;
+	self.solid = SOLID_NOT;
+	self.takedamage = DAMAGE_NO;
+	setsize(self, '0 0 0', '0 0 0');
+	self.movetype = MOVETYPE_NONE;
+};
+
+void() MineThink =
+{
+	local entity head;
+	local float p;
+	local vector v;
+	self.nextthink = time;
+	fightdone = time + 1; // delay stuff until fighting is over
+	p = pointcontents(self.origin);
+	if (p == CONTENT_SKY)
+	{
+		remove(self);
+		return;
+	}
+	if (p == CONTENT_LAVA || time > self.cnt)
+	{
+		self.th_die();
+		return;
+	}
+	if (self.weapon & MINE_DETONATEONBUTTON3)
+	if (self.owner.button3)
+	if (self.owner.weapon == IT_WEAPON6)
+	{
+		MineExplode();
+		return;
+	}
+	if (self.lefty == 3)
+	{
+		if (!self.enemy.takedamage)
+		{
+			MineExplode();
+			return;
+		}
+	}
+	if (time >= self.count)
+	{
+		self.count = time + 0.05;
+		if (self.lefty)
+		{
+			head = findradius(self.origin, self.dmg2 * 0.5);
+			while (head)
+			{
+				if ((head.flags & FL_MONSTER) || head.classname == "player")
+				if (head != self.owner)
+				if (head.team == 0 || head.team != self.owner.team)
+				if (head != self.enemy)
+				{
+					traceline(head.origin, self.origin, TRUE, world);
+					if (trace_fraction == 1)
+					{
+						// trigger
+						self.count = time + 1000;
+						self.cnt = time + 0.1;
+						sound(self, CHAN_VOICE, "weapons/bomb/trigger.wav", 1, ATTN_STATIC);
+						break;
+					}
+				}
+				head = head.chain;
+			}
+		}
+		if (self.lefty == 2)
+		{
+			v = self.angles;
+			v_x = 0 - v_x;
+			makevectors(v);
+			newmis = self.owner;
+			self.owner = world;
+			traceline(self.origin, self.origin + v_forward * 65536, FALSE, self);
+			self.owner = newmis;
+			self.dest = trace_endpos;
 			if (trace_ent)
-			if ((trace_ent.flags & FL_MONSTER) || trace_ent.classname == "player")
-			if (trace_ent.team == 0 || trace_ent.team != self.owner.team)
-			{
-				// trigger
-				self.count = time + 1000;
-				self.cnt = 0;
-				sound(self, CHAN_VOICE, "weapons/bomb/trigger.wav", 1, ATTN_STATIC);
-			}
-		}
-	}
-	if (time > self.cnt)
-	{
-		self.th_die();
-		return;
-	}
-};
-
-void(entity targ) MineAttach =
-{
-	self.enemy = targ;
-	self.touch = SUB_Null;
-	self.movetype = MOVETYPE_FOLLOW;
-	if (targ.solid == SOLID_BSP)
-		self.solid = SOLID_BBOX;
-	else
-		self.solid = SOLID_TRIGGER;
-	setsize(self, '-8 -8 -8', '8 8 8');
-	// set up the follow parameters
-	self.aiment = targ;
-	self.punchangle = targ.angles;
-	self.view_ofs = self.origin + trace_plane_normal - targ.origin;
-	self.v_angle = self.angles - targ.angles;
-	// relink
-	setorigin(self, self.origin);
-	// FIXME: this should be some kind of attach sound
-	sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM);  // bounce sound
-};
-
-void(float tries, vector org, float rad) findnearestsurface =
-{
-	local float bestfrac;
-	local vector bestdir, v;
-	bestfrac = 2;
-	bestdir = '1 0 0';
-
-	while (tries > 0)
-	{
-		tries = tries - 1;
-		if (tries >= 6)
-		{
-			v = randomvec();
-			v = normalize(v);
-		}
-		else if (tries >= 5)
-			v = '0 0 -1';
-		else if (tries >= 4)
-			v = '0 0 1';
-		else if (tries >= 3)
-			v = '0 -1 0';
-		else if (tries >= 2)
-			v = '0 1 0';
-		else if (tries >= 1)
-			v = '-1 0 0';
-		else
-			v = '1 0 0';
-		traceline(org, org + v * rad, FALSE, world);
-		if (bestfrac > trace_fraction)
-		{
-			bestfrac = trace_fraction;
-			bestdir = v;
-		}
-	}
-	traceline(org, org + bestdir * rad, FALSE, world);
-}
-
-void() laserdotthink =
-{
-	self.nextthink = time;
-	if (!self.owner.modelindex)
-	{
-		remove(self);
-		return;
-	}
-	setorigin(self, self.owner.dest);
-	//self.angles = self.owner.angles;
-};
-
-void() MineTouch =
-{
-	if (other == self.owner)
-		return; // don't hit owner
-	if (other.solid == SOLID_BSP)
-	{
-		findnearestsurface(16, self.origin, 32);
-		self.angles = vectoangles(trace_plane_normal);
-		newmis = spawn();
-		newmis.classname = "laserdot";
-		newmis.owner = self;
-		newmis.think = laserdotthink;
-		newmis.nextthink = time;
-		setmodel(newmis, "progs/s_bubble.spr");
-		setsize(newmis, '0 0 0', '0 0 0');
-		if (self.weapon & MINE_LASERTRIP)
-			self.lefty = 2;
-		else
-			self.lefty = 1;
-		MineAttach(other);
-		return;
-	}
-	if ((other.flags & FL_MONSTER) || other.classname == "player")
-	if (other.team == 0 || other.team != self.owner.team)
-	{
-		if (self.weapon & (MINE_PROXIMITY | MINE_LASERTRIP))
-		{
-			MineExplode();
-			return;
-		}
-		self.weapon = self.weapon | MINE_PROXIMITY;
-		self.lefty = 3;
-		MineAttach(other);
-		return;
-	}
-};
-
-void(vector org, vector vel, entity own, float damage, float damage2, float type, float lifetime, string dethtype, void(entity t, entity a, string m, float dtyp) obitfunc) LaunchMine =
-{
-	local   vector  v;
-	DelayGibComment();      // make him wait before commenting on gibs so it's not drown out by explosions etc
-
-	fightdone = time + 1; // delay stuff until fighting is over
-	v = normalize(vel);
-	newmis = spawn ();
-	//newmis.cantrigger = TRUE; // can trigger buttons
-	newmis.shoulddodge = TRUE;
-	newmis.dangerrating = damage2;
-	newmis.havocattack = TRUE;
-	newmis.owner = own;
-	newmis.movetype = MOVETYPE_TOSS;//BOUNCE;
-	newmis.solid = SOLID_BBOX;
-	newmis.classname = "mine";
-	// set newmis speed
-	newmis.velocity = vel + self.velocity;
-	newmis.avelocity = '0 0 0';
-	newmis.angles = vectoangles(newmis.velocity);
-	newmis.touch = MineTouch;
-	newmis.dmg = damage * damagescale;
-	newmis.dmg2 = damage2;
-	newmis.effects = EF_LOWPRECISION;
-	if (self.items & IT_QUAD)
-	{
-		newmis.effects = newmis.effects | EF_BLUE;
-		newmis.dmg = newmis.dmg * 4;
-	}
-	// set newmis duration
-	newmis.cnt = time + lifetime;
-	newmis.deathtype = dethtype;
-	newmis.obitfunc1 = obitfunc;
-	newmis.weapon = type;
-	newmis.think = MineThink;
-	newmis.nextthink = time;
-	if (type & MINE_IMMUNETODAMAGE)
-		newmis.takedamage = DAMAGE_NO;
-	else
-		newmis.takedamage = DAMAGE_YES;
-	newmis.health = 20; // can be shot
-	newmis.th_die = MineDet;
-	setmodel (newmis, "progs/grenade.mdl");
-	setsize (newmis, '0 0 0', '0 0 0');
-	setorigin (newmis, org);
-};
+			if ((trace_ent.flags & FL_MONSTER) || trace_ent.classname == "player")
+			if (trace_ent.team == 0 || trace_ent.team != self.owner.team)
+			{
+				// trigger
+				self.count = time + 1000;
+				self.cnt = 0;
+				sound(self, CHAN_VOICE, "weapons/bomb/trigger.wav", 1, ATTN_STATIC);
+			}
+		}
+	}
+	if (time > self.cnt)
+	{
+		self.th_die();
+		return;
+	}
+};
+
+void(entity targ) MineAttach =
+{
+	self.enemy = targ;
+	self.touch = SUB_Null;
+	self.movetype = MOVETYPE_FOLLOW;
+	if (targ.solid == SOLID_BSP)
+		self.solid = SOLID_BBOX;
+	else
+		self.solid = SOLID_TRIGGER;
+	setsize(self, '-8 -8 -8', '8 8 8');
+	// set up the follow parameters
+	self.aiment = targ;
+	self.punchangle = targ.angles;
+	self.view_ofs = self.origin + trace_plane_normal - targ.origin;
+	self.v_angle = self.angles - targ.angles;
+	// relink
+	setorigin(self, self.origin);
+	// FIXME: this should be some kind of attach sound
+	sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM);  // bounce sound
+};
+
+void(float tries, vector org, float rad) findnearestsurface =
+{
+	local float bestfrac;
+	local vector bestdir, v;
+	bestfrac = 2;
+	bestdir = '1 0 0';
+
+	while (tries > 0)
+	{
+		tries = tries - 1;
+		if (tries >= 6)
+		{
+			v = randomvec();
+			v = normalize(v);
+		}
+		else if (tries >= 5)
+			v = '0 0 -1';
+		else if (tries >= 4)
+			v = '0 0 1';
+		else if (tries >= 3)
+			v = '0 -1 0';
+		else if (tries >= 2)
+			v = '0 1 0';
+		else if (tries >= 1)
+			v = '-1 0 0';
+		else
+			v = '1 0 0';
+		traceline(org, org + v * rad, FALSE, world);
+		if (bestfrac > trace_fraction)
+		{
+			bestfrac = trace_fraction;
+			bestdir = v;
+		}
+	}
+	traceline(org, org + bestdir * rad, FALSE, world);
+}
+
+void() laserdotthink =
+{
+	self.nextthink = time;
+	if (!self.owner.modelindex)
+	{
+		remove(self);
+		return;
+	}
+	setorigin(self, self.owner.dest);
+	//self.angles = self.owner.angles;
+};
+
+void() MineTouch =
+{
+	if (other == self.owner)
+		return; // don't hit owner
+	if (other.solid == SOLID_BSP)
+	{
+		findnearestsurface(16, self.origin, 32);
+		self.angles = vectoangles(trace_plane_normal);
+		newmis = spawn();
+		newmis.classname = "laserdot";
+		newmis.owner = self;
+		newmis.think = laserdotthink;
+		newmis.nextthink = time;
+		setmodel(newmis, "progs/s_bubble.spr");
+		setsize(newmis, '0 0 0', '0 0 0');
+		if (self.weapon & MINE_LASERTRIP)
+			self.lefty = 2;
+		else
+			self.lefty = 1;
+		MineAttach(other);
+		return;
+	}
+	if ((other.flags & FL_MONSTER) || other.classname == "player")
+	if (other.team == 0 || other.team != self.owner.team)
+	{
+		if (self.weapon & (MINE_PROXIMITY | MINE_LASERTRIP))
+		{
+			MineExplode();
+			return;
+		}
+		self.weapon = self.weapon | MINE_PROXIMITY;
+		self.lefty = 3;
+		MineAttach(other);
+		return;
+	}
+};
+
+void(vector org, vector vel, entity own, float damage, float damage2, float type, float lifetime, string dethtype, void(entity t, entity a, string m, float dtyp) obitfunc) LaunchMine =
+{
+	local   vector  v;
+	DelayGibComment();      // make him wait before commenting on gibs so it's not drown out by explosions etc
+
+	fightdone = time + 1; // delay stuff until fighting is over
+	v = normalize(vel);
+	newmis = spawn ();
+	//newmis.cantrigger = TRUE; // can trigger buttons
+	newmis.shoulddodge = TRUE;
+	newmis.dangerrating = damage2;
+	newmis.havocattack = TRUE;
+	newmis.owner = own;
+	newmis.movetype = MOVETYPE_TOSS;//BOUNCE;
+	newmis.solid = SOLID_BBOX;
+	newmis.classname = "mine";
+	// set newmis speed
+	newmis.velocity = vel;// + self.velocity;
+	newmis.avelocity = '0 0 0';
+	newmis.angles = vectoangles(newmis.velocity);
+	newmis.touch = MineTouch;
+	newmis.dmg = damage * damagescale;
+	newmis.dmg2 = damage2;
+	newmis.effects = EF_LOWPRECISION;
+	if (self.items & IT_QUAD)
+	{
+		newmis.effects = newmis.effects | EF_BLUE;
+		newmis.dmg = newmis.dmg * 4;
+	}
+	// set newmis duration
+	newmis.cnt = time + lifetime;
+	newmis.deathtype = dethtype;
+	newmis.obitfunc1 = obitfunc;
+	newmis.weapon = type;
+	newmis.think = MineThink;
+	newmis.nextthink = time;
+	if (type & MINE_IMMUNETODAMAGE)
+		newmis.takedamage = DAMAGE_NO;
+	else
+		newmis.takedamage = DAMAGE_YES;
+	newmis.health = 20; // can be shot
+	newmis.th_die = MineDet;
+	setmodel (newmis, "progs/grenade.mdl");
+	setsize (newmis, '0 0 0', '0 0 0');
+	setorigin (newmis, org);
+};


More information about the twilight-commits mailing list