X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_weaponsystem.qc;h=a75e2be5af16fee8e3758a60e0590a28f020ad0f;hb=db5c4d5b616a207cc01a6c0a81c574a572ce0426;hp=402b692af1230fba959a89c1fce3aef5a999ab13;hpb=dbcdd58814a7281aef637c8c07a02242331c4c86;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 402b692af..a75e2be5a 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -343,10 +343,10 @@ void CL_WeaponEntity_SetModel(string name) setmodel(self, strcat("models/weapons/h_", name, ".iqm")); // precision set below // preset some defaults that work great for renamed zym files (which don't need an animinfo) - self.anim_fire1 = animfixfps(self, '0 1 0.01'); - self.anim_fire2 = animfixfps(self, '1 1 0.01'); - self.anim_idle = animfixfps(self, '2 1 0.01'); - self.anim_reload = animfixfps(self, '3 1 0.01'); + self.anim_fire1 = animfixfps(self, '0 1 0.01', '0 0 0'); + self.anim_fire2 = animfixfps(self, '1 1 0.01', '0 0 0'); + self.anim_idle = animfixfps(self, '2 1 0.01', '0 0 0'); + self.anim_reload = animfixfps(self, '3 1 0.01', '0 0 0'); // if we have a "weapon" tag, let's attach the v_ model to it ("invisible hand" style model) // if we don't, this is a "real" animated model @@ -1008,13 +1008,14 @@ void weapon_thinkf(float fr, float t, void() func) if (self.weaponentity) { self.weaponentity.wframe = fr; + a = '0 0 0'; if (fr == WFRAME_IDLE) a = self.weaponentity.anim_idle; else if (fr == WFRAME_FIRE1) a = self.weaponentity.anim_fire1; else if (fr == WFRAME_FIRE2) a = self.weaponentity.anim_fire2; - else if (fr == WFRAME_RELOAD) + else // if (fr == WFRAME_RELOAD) a = self.weaponentity.anim_reload; a_z *= g_weaponratefactor; setanim(self.weaponentity, a, restartanim == FALSE, restartanim, restartanim); @@ -1046,25 +1047,17 @@ void weapon_thinkf(float fr, float t, void() func) self.weapon_think = func; //dprint("next ", ftos(self.weapon_nextthink), "\n"); - // The shoot animation looks TERRIBLE without animation blending! Yay for moonwalking while shooting! - //anim = self.anim_shoot; - if (restartanim) - if (t) - if (!self.crouch) // shoot anim stands up, this looks bad + if((fr == WFRAME_FIRE1 || fr == WFRAME_FIRE2) && t) { - vector anim; - if(self.weapon == WEP_SHOTGUN && self.BUTTON_ATCK2) - { - anim = self.anim_melee; - anim_z = anim_y / (t + sys_frametime); - setanim(self, anim, FALSE, TRUE, TRUE); - } - else if (self.animstate_startframe == self.anim_idle_x) // only allow shoot anim to override idle animation until we have animation blending - { - anim = self.anim_shoot; - anim_z = anim_y / (t + sys_frametime); - setanim(self, anim, FALSE, TRUE, TRUE); - } + if(self.weapon == WEP_SHOTGUN && fr == WFRAME_FIRE2) + animdecide_setaction(self, ANIMACTION_MELEE, restartanim); + else + animdecide_setaction(self, ANIMACTION_SHOOT, restartanim); + } + else + { + if(self.anim_upper_action == ANIMACTION_SHOOT || self.anim_upper_action == ANIMACTION_MELEE) + self.anim_upper_action = 0; } } @@ -1196,7 +1189,7 @@ vector findperpendicular(vector v) vector W_CalculateProjectileSpread(vector forward, float spread) { float sigma; - vector v1, v2; + vector v1 = '0 0 0', v2; float dx, dy, r; float sstyle; spread *= g_weaponspreadfactor;