r74 - trunk/basezym/progsqc

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Aug 12 01:51:42 EDT 2007


Author: Vermeulen
Date: 2007-08-12 01:51:42 -0400 (Sun, 12 Aug 2007)
New Revision: 74

Modified:
   trunk/basezym/progsqc/actor.qc
   trunk/basezym/progsqc/damage.qc
   trunk/basezym/progsqc/inventory.qc
   trunk/basezym/progsqc/jumppads.qc
   trunk/basezym/progsqc/player.qc
Log:
Added triggers to weapon options and a few other small movement things

Modified: trunk/basezym/progsqc/actor.qc
===================================================================
--- trunk/basezym/progsqc/actor.qc	2007-08-09 00:36:09 UTC (rev 73)
+++ trunk/basezym/progsqc/actor.qc	2007-08-12 05:51:42 UTC (rev 74)
@@ -376,6 +376,8 @@
 	local string tracermodel;
 	local float tracer;
 	local float modelscale;
+	local float projhealth;
+	local float projmass;
 	muzzle1tagorigin = muzzle2tagorigin = muzzle3tagorigin = self.origin + self.weapon_ofs_x * v_forward + self.weapon_ofs_y * v_right + self.weapon_ofs_z * '0 0 1';
 	makevectors(self.v_angle);
 	if (secondary)
@@ -396,6 +398,8 @@
 		tracer = iteminfo_ammo2tracer;
 		tracermodel = iteminfo_ammo2tracermodel;
 		modelscale = iteminfo_ammo2modelscale;
+		projhealth = iteminfo_ammo2health;
+		projmass = iteminfo_ammo2mass;
 	}
 	else
 	{
@@ -414,14 +418,15 @@
 		mintofire = iteminfo_ammo1minimumtofire;
 		tracer = iteminfo_ammo1tracer;
 		tracermodel = iteminfo_ammo1tracermodel;
-		modelscale = iteminfo_ammo1modelscale;
+		projhealth = iteminfo_ammo1health;
+		projmass = iteminfo_ammo1mass;
 	}
 
 	Inventory_ModifyItem(self, self.weaponitem, 0, 0 - mintofire, 0);
 	weapon_recoil(recoil);
 	while (numberof != 0)
 	{
-		  weapon_fireprojectile(shotmodel, shotorg, shotdir, shotdamage, shotdamagetype, shotlifetime, shotprojectileflags, shotfiresound, shotexplodesound, shotbouncesound, tracer, tracermodel, modelscale);	
+		  weapon_fireprojectile(shotmodel, shotorg, shotdir, shotdamage, shotdamagetype, shotlifetime, shotprojectileflags, shotfiresound, shotexplodesound, shotbouncesound, tracer, tracermodel, modelscale, projhealth, projmass);	
 		  numberof = numberof - 1;
 	}
 };

Modified: trunk/basezym/progsqc/damage.qc
===================================================================
--- trunk/basezym/progsqc/damage.qc	2007-08-09 00:36:09 UTC (rev 73)
+++ trunk/basezym/progsqc/damage.qc	2007-08-12 05:51:42 UTC (rev 74)
@@ -211,20 +211,19 @@
 		return;
 	oldself = self;
 	self = targ;
-	if (self.movetype == MOVETYPE_WALK)
+	
+	//bprint(vtos(self.velocity), " ");
+	//bprint(" ", vtos(force));
+	//bprint("/", ftos(self.mass));
+	v = force * (1 / self.mass);
+	//bprint("=", vtos(v), " ");
+	if (vlen(v) >= 0.1)
 	{
-		//bprint(vtos(self.velocity), " ");
-		//bprint(" ", vtos(force));
-		//bprint("/", ftos(self.mass));
-		v = force * (1 / self.mass);
-		//bprint("=", vtos(v), " ");
-		if (vlen(v) >= 0.1)
-		{
-			self.velocity = self.velocity + force * (1 / self.mass);
-			self.flags = self.flags - (self.flags & FL_ONGROUND);
-		}
-		//bprint(vtos(self.velocity), "\n");
+		self.velocity = self.velocity + force * (1 / self.mass);
+		self.flags = self.flags - (self.flags & FL_ONGROUND);
 	}
+	//bprint(vtos(force), "\n");
+	
 	// save is how much was blocked by the target's armor or shield (if any)
 	save = min(self.armorvalue, damage * self.armortype);
 	take = damage - save;
@@ -340,7 +339,8 @@
 float PROJECTILEFLAG_SNIPERRAIL = 2048;
 float PROJECTILEFLAG_PLASMA = 4096;
 float PROJECTILEFLAG_ASSAULTRAIL = 8192;
-float PROJECTILEFLAG_TOSS = 16384
+float PROJECTILEFLAG_STICK = 16384;
+float PROJECTILEFLAG_LASERGUIDED = 32768;
 
 .float weaponsound_cycle; // templeofnoise: added for minigun routing sound, guess i'll use it for other sound specs also.
 
@@ -362,6 +362,15 @@
 	e.lefty = 17;
 }
 
+void(entity attacker, float damage) projectile_pain =
+{
+	if (self.lefty  & PROJECTILEFLAG_STICK)
+	{
+		self.movetype = MOVETYPE_BOUNCE;
+		self.lefty = self.lefty - PROJECTILEFLAG_STICK;
+	}
+}
+
 void() projectile_die =
 {
 
@@ -442,6 +451,9 @@
 //.vector oldvelocity;
 void() projectile_touch =
 {
+	if (self.lefty  & PROJECTILEFLAG_STICK)
+		self.movetype = MOVETYPE_NONE;
+
 	if (self.owner)
 	{
 		if (other == self.owner)
@@ -486,9 +498,31 @@
 		self.th_die();
 		return;
 	}
+	if (self.lefty & PROJECTILEFLAG_LASERGUIDED)
+	{
+	    float velspeed,turnrate;
+		vector desireddir, olddir, newdir;
+		
+		traceline(self.origin, self.realowner.origin + self.view_ofs + v_forward * 1000, FALSE, self);
+		
+		velspeed = vlen(self.velocity);
+		turnrate = 0.65; //cvar("g_balance_rocketlauncher_laserguided_turnrate");//0.65;						// how fast to turn
+		desireddir = normalize(trace_endpos - self.origin);		// get direction from my position to the laser target
+		olddir = normalize(self.velocity);					// get my current direction
+		newdir = normalize((olddir + desireddir * turnrate) * 0.5);	// take the average of the 2 directions; not the best method but simple & easy
+		self.velocity = newdir * velspeed;					// make me fly in the new direction at my flight speed
+		self.angles = vectoangles(self.velocity);			// turn model in the new flight direction
+	}
+	if (self.lefty & PROJECTILEFLAG_REMOTEDETONATE)
+	{
+	    if (self.realowner.button4)
+		{
+		   self.th_die();
+		}
+	}
 }
 
-void(string modelname, vector shotorg, vector shotvel, vector damage, float damagtype, float lifetime, float projectileflags, string firesound, string explodesound, string bouncesound, float tracer, string tracermodel, float modelscale) weapon_fireprojectile =
+void(string modelname, vector shotorg, vector shotvel, vector damage, float damagtype, float lifetime, float projectileflags, string firesound, string explodesound, string bouncesound, float tracer, string tracermodel, float modelscale, float projhealth, float projmass) weapon_fireprojectile =
 {
 	local float r; // templeofnoise
 
@@ -502,6 +536,7 @@
 	newmis.velocity = shotvel;
  	newmis.angles = vectoangles(shotvel);
  	newmis.th_die = projectile_die;
+	newmis.th_pain = projectile_pain;
  	newmis.touch = projectile_touch;
  	newmis.think = projectile_think;
  	newmis.nextthink = time;
@@ -515,6 +550,12 @@
  	setmodel(newmis, modelname);
  	setsize(newmis, '0 0 0', '0 0 0');
 	newmis.scale = modelscale;
+	newmis.health = projhealth;
+	newmis.mass = projmass;
+	if (newmis.health > 0)
+	{
+	   newmis.takedamage = DAMAGE_YES;
+	}
 
 	if (tracer > random())
 	{
@@ -603,8 +644,6 @@
 		te_smallflash(shotorg);
 	if (projectileflags & PROJECTILEFLAG_ROCKET)
 		newmis.movetype = MOVETYPE_BOUNCEMISSILE;
-	if (projectileflags & PROJECTILEFLAG_TOSS)
-		newmis.movetype = MOVETYPE_TOSS;
 	if (projectileflags & PROJECTILEFLAG_GLOW)
 		newmis.effects = newmis.effects | EF_ADDITIVE | EF_FULLBRIGHT | EF_NOSHADOW; // | EF_BRIGHTFIELD; Add once Zymotic gamemode has support for this
 };

Modified: trunk/basezym/progsqc/inventory.qc
===================================================================
--- trunk/basezym/progsqc/inventory.qc	2007-08-09 00:36:09 UTC (rev 73)
+++ trunk/basezym/progsqc/inventory.qc	2007-08-12 05:51:42 UTC (rev 74)
@@ -87,6 +87,10 @@
 string iteminfo_ammo2tracermodel;
 float iteminfo_ammo1modelscale;
 float iteminfo_ammo2modelscale;
+float iteminfo_ammo1health;
+float iteminfo_ammo2health;
+float iteminfo_ammo1mass;
+float iteminfo_ammo2mass;
 
 // special information specific to weapon items
 string iteminfo_weapon_viewmodel;
@@ -163,6 +167,8 @@
 	iteminfo_ammo1tracer = 0;
 	iteminfo_ammo1tracermodel = "";
 	iteminfo_ammo1modelscale = 1;
+	iteminfo_ammo1health = 0;
+	iteminfo_ammo2mass = 0;
 	iteminfo_ammo2max = 0;
 	iteminfo_ammo2inventorymax = 0;
 	iteminfo_ammo2minimumtofire = 0;
@@ -181,6 +187,8 @@
 	iteminfo_ammo2tracer = 0;
 	iteminfo_ammo2tracermodel = "";
 	iteminfo_ammo2modelscale = 1;
+	iteminfo_ammo2health = 0;
+	iteminfo_ammo2mass = 0;
 	iteminfo_weapon_viewmodel = "";
 	iteminfo_weapon_viewmodelanim_idle = '0 0 1';
 	iteminfo_weapon_viewmodelanim_fire1 = '0 0 2';
@@ -234,6 +242,8 @@
 		iteminfo_ammo1tracer = cvar(wname,"_ammo1tracer");
 		iteminfo_ammo1tracermodel = cvar_string(wname,"_ammo1tracermodel");
 		iteminfo_ammo1modelscale = cvar(wname,"_ammo1modelscale");
+		iteminfo_ammo1health = cvar(wname,"_ammo1health");
+		iteminfo_ammo1mass = cvar(wname,"_ammo1mass");
 		iteminfo_weapon_viewmodelanim_fire1 = stov(cvar_string(wname,"_fire1"));
 		
 		iteminfo_ammo2damage = stov(cvar_string(wname,"_ammo2damage"));
@@ -250,11 +260,12 @@
 		iteminfo_ammo2tracer = cvar(wname,"_ammo2tracer");
 		iteminfo_ammo2tracermodel = cvar_string(wname,"_ammo2tracermodel");
 		iteminfo_ammo2modelscale = cvar(wname,"_ammo2modelscale");
+		iteminfo_ammo2health = cvar(wname,"_ammo2health");
+		iteminfo_ammo2mass = cvar(wname,"_ammo2mass");
 		iteminfo_weapon_viewmodelanim_fire2 = stov(cvar_string(wname,"_fire2"));
 	}
 	else if (itemtype < ITEMTYPE_TOTAL)
 	{
-	 	string wname;
 		wname = strcat("g_weap",ftos(itemtype - ITEMTYPE_WEAP1_AMMO + 1));
 		iteminfo_name = cvar_string(wname,"_ammo_name");
 		iteminfo_model = cvar_string(wname,"_ammo_model");

Modified: trunk/basezym/progsqc/jumppads.qc
===================================================================
--- trunk/basezym/progsqc/jumppads.qc	2007-08-09 00:36:09 UTC (rev 73)
+++ trunk/basezym/progsqc/jumppads.qc	2007-08-12 05:51:42 UTC (rev 74)
@@ -1,7 +1,6 @@
 float PUSH_ONCE			= 1;
 float PUSH_SILENT		= 2;
 
-.float pushltime;
 .float height;
 
 float trigger_push_calculatevelocity_flighttime;

Modified: trunk/basezym/progsqc/player.qc
===================================================================
--- trunk/basezym/progsqc/player.qc	2007-08-09 00:36:09 UTC (rev 73)
+++ trunk/basezym/progsqc/player.qc	2007-08-12 05:51:42 UTC (rev 74)
@@ -42,7 +42,7 @@
 	local vector legsframesoffset;
 
 
-	pc = playerclass_spawn(ACTORTYPE_THEPLAYER, AITYPE_PLAYER, "models/players/spy", ".md3", "player");
+	pc = playerclass_spawn(ACTORTYPE_THEPLAYER, AITYPE_PLAYER, "models/players/soldier", ".md3", "player");
 	pc.health = cvar("g_player_healthstart");
 	pc.max_health = cvar("g_player_healthmax");
 	pc.armorvalue = cvar("g_player_shieldstart");
@@ -87,7 +87,6 @@
 	Inventory_GetItemInfo(pc, ITEMTYPE_WEAP1);
 	Inventory_ModifyItem(pc, ITEMTYPE_WEAP1, 1, iteminfo_ammo1max, iteminfo_ammo2max);
 	Inventory_ModifyItem(pc, ITEMTYPE_WEAP1_AMMO, iteminfo_ammo1inventorymax * 2, 0, 0);
-
 	
 
 	pc = playerclass_spawn(ACTORTYPE_LIGHTGUARD, AITYPE_SMARTFELLOW, "models/players/soldier", ".md3", "player");
@@ -131,9 +130,9 @@
 	pc.actoranim_LEGS_IDLECR   = '236 5 15' + legsframesoffset;
 	pc.actoranim_LEGS_TURN     = '245 7 15' + legsframesoffset;
 	Inventory_Clear(pc);
-	Inventory_GetItemInfo(pc, ITEMTYPE_WEAP2);
-	Inventory_ModifyItem(pc, ITEMTYPE_WEAP2, 1, iteminfo_ammo1max, iteminfo_ammo2max);
-	Inventory_ModifyItem(pc, ITEMTYPE_WEAP2_AMMO, iteminfo_ammo1inventorymax * 2, 0, 0);
+	Inventory_GetItemInfo(pc, ITEMTYPE_WEAP5);
+	Inventory_ModifyItem(pc, ITEMTYPE_WEAP5, 1, iteminfo_ammo1max, iteminfo_ammo2max);
+	Inventory_ModifyItem(pc, ITEMTYPE_WEAP5_AMMO, iteminfo_ammo1inventorymax * 2, 0, 0);
 
 	pc = playerclass_spawn(ACTORTYPE_HEAVYGUARD, AITYPE_SMARTFELLOW, "models/players/soldier", ".md3", "player");
 	pc.health = cvar("g_player_healthstart");
@@ -500,7 +499,7 @@
 		{
 			if (self.jetpackactive)
 			{
-			    self.jetpackacc = 1;
+			    self.jetpackacc = cvar("g_player_jetpack_accbase");
 				sound(self, CHAN_BODY, strcat(self.playerclass.sounddir, "/jetpackstop.wav"), 1, ATTN_NORM);
 				self.jetpackactive = FALSE;
 			}




More information about the zymotic-commits mailing list