r81 - trunk/basezym/progsqc

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Nov 13 22:48:37 EST 2007


Author: Vermeulen
Date: 2007-11-13 22:48:37 -0500 (Tue, 13 Nov 2007)
New Revision: 81

Modified:
   trunk/basezym/progsqc/actor.qc
   trunk/basezym/progsqc/gamedefs.qc
   trunk/basezym/progsqc/inventory.qc
   trunk/basezym/progsqc/player.qc
Log:
Added viewmodelpush

Modified: trunk/basezym/progsqc/actor.qc
===================================================================
--- trunk/basezym/progsqc/actor.qc	2007-11-13 02:50:25 UTC (rev 80)
+++ trunk/basezym/progsqc/actor.qc	2007-11-14 03:48:37 UTC (rev 81)
@@ -170,16 +170,20 @@
 	// FIXME: turn self into a gib using decor_spawn
 };
 
-void(string weapmodel, string viewweapmodel, vector offset) actor_setweaponmodel =
+void(string weapmodel, string viewweapmodel) actor_setweaponmodel =
 {
 	setmodel(self.actorpart_weapon, weapmodel);
 	setmodel(self.actorpart_viewweapon, viewweapmodel);
-	
+};
+
+void(vector offset) actor_setviewmodeloffset =
+{
 	offset = self.weapon_ofs - self.view_ofs + offset; // default '10 4 -10'
 	offset_y = offset_y * -1;
 	setorigin(self.actorpart_viewweapon, offset);
-};
+}
 
+
 void(float force) player_selectlegsanim;
 
 void() actor_update =
@@ -232,17 +236,21 @@
 	local float f2;
 	oldself = self;
 	self = self.owner;
+	
 	Inventory_GetItemInfo(self, self.weaponitem);
 	if (animdone)
 	{
 		if (self.weaponstate == WS_LOWER)
 		{
 			if (time >= self.lowerguntime)
-			{
-				//bprint("raising\n");
+			{				
+				actor_setviewmodeloffset(iteminfo_viewmodeloffset);
+				self.viewmodelchange_x = 0;
+				self.viewmodelchange_z = -20;
 				self.weaponitem = self.switchweaponitem;
 				Inventory_GetItemInfo(self, self.weaponitem);
-				actor_setweaponmodel(iteminfo_model, iteminfo_weapon_viewmodel, iteminfo_viewmodeloffset);
+				actor_setweaponmodel(iteminfo_model, iteminfo_weapon_viewmodel);
+
 				weapon_state(WS_RAISE);
 			}
 		}
@@ -316,6 +324,7 @@
 {
 	self.weaponstate = newstate;
 	Inventory_GetItemInfo(self, self.weaponitem);
+		   
 	if (newstate == WS_IDLE)
 	{
 		if (self.weaponsound_cycle >= 5) // templeofnoise
@@ -334,6 +343,8 @@
 	{
 		anim_start(self.actorpart_viewweapon, iteminfo_weapon_viewmodelanim_fire1, ANIMTYPE_IDLE, viewweapon_animframefunc);
 		anim_start(self.actorpart_torso, self.playerclass.actoranim_TORSO_ATTACK, ANIMTYPE_IDLE, torso_animframefunc);
+		self.viewmodelchange = self.viewmodelchange + iteminfo_ammo1viewmodelpush;
+		self.viewmodelchange_y = self.viewmodelchange_y + crandom();
 		//bprint("weapon_state ");bprint(ftos(newstate));bprint(":");bprint(vtos(iteminfo_weapon_viewmodelanim_fire1));bprint(" ");bprint(ftos(self.actorpart_torso.anim_frametime));bprint("\n");
 		weapon_fire(FALSE);
 	}
@@ -341,6 +352,7 @@
 	{
 		anim_start(self.actorpart_viewweapon, iteminfo_weapon_viewmodelanim_fire2, ANIMTYPE_IDLE, viewweapon_animframefunc);
 		anim_start(self.actorpart_torso, self.playerclass.actoranim_TORSO_ATTACK, ANIMTYPE_IDLE, torso_animframefunc);
+		self.viewmodelchange = self.viewmodelchange + iteminfo_ammo2viewmodelpush;
 		weapon_fire(TRUE);
 	}
 	else if (newstate == WS_RELOAD)
@@ -471,7 +483,11 @@
 	Inventory_GetItemInfo(character, weaponitemtype);
 	self.weaponitem = weaponitemtype;
 	self.switchweaponitem = self.weaponitem;
-	actor_setweaponmodel(iteminfo_model, iteminfo_weapon_viewmodel, iteminfo_viewmodeloffset);
+	
+	actor_setweaponmodel(iteminfo_model, iteminfo_weapon_viewmodel);
+	actor_setviewmodeloffset(iteminfo_viewmodeloffset);
+	self.viewmodelchange = iteminfo_viewmodeloffset;
+	
 	weapon_state(WS_IDLE);
 };
 

Modified: trunk/basezym/progsqc/gamedefs.qc
===================================================================
--- trunk/basezym/progsqc/gamedefs.qc	2007-11-13 02:50:25 UTC (rev 80)
+++ trunk/basezym/progsqc/gamedefs.qc	2007-11-14 03:48:37 UTC (rev 81)
@@ -5,6 +5,9 @@
 
 .float respawntime;
 
+.vector viewmodelchange;
+.vector viewmodeldiff;
+
 .float fade_time;
 .float fade_rate;
 .vector finaldest, finalangle;

Modified: trunk/basezym/progsqc/inventory.qc
===================================================================
--- trunk/basezym/progsqc/inventory.qc	2007-11-13 02:50:25 UTC (rev 80)
+++ trunk/basezym/progsqc/inventory.qc	2007-11-14 03:48:37 UTC (rev 81)
@@ -95,6 +95,8 @@
 float iteminfo_ammo2mass;
 vector iteminfo_ammo1colormod;
 vector iteminfo_ammo2colormod;
+vector iteminfo_ammo1viewmodelpush;
+vector iteminfo_ammo2viewmodelpush;
 
 // special information specific to weapon items
 string iteminfo_weapon_viewmodel;
@@ -172,6 +174,7 @@
 	iteminfo_ammo1health = 0;
 	iteminfo_ammo1mass = 0;
 	iteminfo_ammo1colormod = '0 0 0';
+	iteminfo_ammo1viewmodelpush = '0 0 0';
 	iteminfo_ammo2minimumtofire = 0;
 	iteminfo_ammo2damagetype = DAMAGETYPE_UNKNOWN;
 	iteminfo_ammo2damage = '0 0 0';
@@ -190,6 +193,7 @@
 	iteminfo_ammo2health = 0;
 	iteminfo_ammo2mass = 0;
 	iteminfo_ammo2colormod = '0 0 0';
+	iteminfo_ammo2viewmodelpush =  '0 0 0';
 	iteminfo_weapon_viewmodel = "";
 	iteminfo_weapon_viewmodelanim_idle = '0 0 1';
 	iteminfo_weapon_viewmodelanim_fire1 = '0 0 2';
@@ -212,8 +216,8 @@
 		iteminfo_quantitymax = 1;
 		iteminfo_pickupsound = "items/pickupweapon.wav";
 		iteminfo_weapon_viewmodelanim_idle = '0 0 30';
-		iteminfo_weapon_viewmodelanim_lower = '0 0 2';
-		iteminfo_weapon_viewmodelanim_raise = '0 0 2';
+		iteminfo_weapon_viewmodelanim_lower = '0 0 0';
+		iteminfo_weapon_viewmodelanim_raise = '0 0 0';
 		
 		string wname;
 		if (itemtype < ITEMTYPE_AI_WEAP1)
@@ -250,6 +254,7 @@
 		iteminfo_ammo1health = cvar(wname,"_ammo1health");
 		iteminfo_ammo1mass = cvar(wname,"_ammo1mass");
 		iteminfo_ammo1colormod = stov(cvar_string(wname,"_ammo1colormod"));
+		iteminfo_ammo1viewmodelpush = stov(cvar_string(wname,"_ammo1viewmodelpush"));
 		iteminfo_weapon_viewmodelanim_fire1 = stov(cvar_string(wname,"_fire1"));
 		
 		iteminfo_ammo2damage = stov(cvar_string(wname,"_ammo2damage"));
@@ -268,6 +273,7 @@
 		iteminfo_ammo2health = cvar(wname,"_ammo2health");
 		iteminfo_ammo2mass = cvar(wname,"_ammo2mass");
 		iteminfo_ammo2colormod = stov(cvar_string(wname,"_ammo2colormod"));
+		iteminfo_ammo2viewmodelpush = stov(cvar_string(wname,"_ammo2viewmodelpush"));
 		iteminfo_weapon_viewmodelanim_fire2 = stov(cvar_string(wname,"_fire2"));
 	}
 	else if (itemtype < ITEMTYPE_AMMO1)

Modified: trunk/basezym/progsqc/player.qc
===================================================================
--- trunk/basezym/progsqc/player.qc	2007-11-13 02:50:25 UTC (rev 80)
+++ trunk/basezym/progsqc/player.qc	2007-11-14 03:48:37 UTC (rev 81)
@@ -438,6 +438,14 @@
 	   self.jetpack_fuel = self.jetpack_fuel + self.jetpack_fuelregenair;
 	}
 	
+	if (self.flags & FL_CLIENT) // should really be client side
+	{
+	   Inventory_GetItemInfo(self, self.weaponitem);
+	   self.viewmodeldiff = iteminfo_viewmodeloffset - self.viewmodelchange;
+	   self.viewmodelchange = self.viewmodelchange + self.viewmodeldiff * 0.1;
+	   actor_setviewmodeloffset(self.viewmodelchange);
+	}
+	
 	local float im;
 	if (self.flags & FL_CLIENT) // only real players can respawn, not NPCs
 	if (self.deadflag)
@@ -1078,7 +1086,7 @@
 		if (impuls == 20)
 		{
 			c = 0;
-			while (c < ITEMTYPE_TOTAL)
+			while (c < ITEMTYPE_AI_WEAP1)
 			{
 				Inventory_GetItemInfo(self, c);
 				Inventory_ModifyItem(self, c, iteminfo_quantitymax, iteminfo_ammomax);
@@ -1093,7 +1101,7 @@
 		w = 0;
 		while (select >= 0)
 		{
-			if (w >= ITEMTYPE_TOTAL)
+			if (w >= ITEMTYPE_AI_WEAP1)
 				break;
 			Inventory_GetItemInfo(self, w);
 			if (iteminfo_weapon_canraise)




More information about the zymotic-commits mailing list