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