mirror of
https://github.com/nzp-team/quakec.git
synced 2024-11-29 15:22:29 +00:00
SERVER: Adds support for ADS framing, use it for Panzerschreck
This commit is contained in:
parent
63c759e217
commit
92b464b424
3 changed files with 27 additions and 22 deletions
|
@ -68,7 +68,6 @@ void() W_AimIn =
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (IsDualWeapon(self.weapon) ||
|
if (IsDualWeapon(self.weapon) ||
|
||||||
self.zoom ||
|
|
||||||
self.reload_delay > time ||
|
self.reload_delay > time ||
|
||||||
self.sprinting ||
|
self.sprinting ||
|
||||||
self.new_anim_stop ||
|
self.new_anim_stop ||
|
||||||
|
@ -76,6 +75,13 @@ void() W_AimIn =
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float ads_frame = GetFrame(self.weapon, AIM_IN);
|
||||||
|
if (ads_frame != 0 && self.fire_delay < time) {
|
||||||
|
self.weaponframe_end = self.weaponframe = ads_frame;
|
||||||
|
} else if (self.zoom) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef FTE
|
#ifndef FTE
|
||||||
|
|
||||||
self.ADS_Offset = GetWeaponADSOfs_PSP(self.weapon);
|
self.ADS_Offset = GetWeaponADSOfs_PSP(self.weapon);
|
||||||
|
@ -1506,9 +1512,14 @@ void(float side) W_Fire =
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Play weapon animation and sound
|
// Play weapon animation and sound
|
||||||
startframe = GetFrame(self.weapon,FIRE_START);
|
if (self.zoom && GetFrame(self.weapon, AIM_FIRE_START) != 0) {
|
||||||
endframe = GetFrame(self.weapon,FIRE_END);
|
startframe = GetFrame(self.weapon, AIM_FIRE_START);
|
||||||
|
endframe = GetFrame(self.weapon, AIM_FIRE_END);
|
||||||
|
} else {
|
||||||
|
startframe = GetFrame(self.weapon, FIRE_START);
|
||||||
|
endframe = GetFrame(self.weapon, FIRE_END);
|
||||||
|
}
|
||||||
|
|
||||||
// Increment the amount of shots fired while downed
|
// Increment the amount of shots fired while downed
|
||||||
if (self.downed == true)
|
if (self.downed == true)
|
||||||
|
@ -2440,13 +2451,11 @@ void () Weapon_Logic =
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!self.zoom) {
|
W_AimIn();
|
||||||
W_AimIn();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef FTE
|
#ifdef FTE
|
||||||
|
|
||||||
else {
|
if (self.zoom) {
|
||||||
if (self.weapon == W_KAR_SCOPE || self.weapon == W_PTRS ||
|
if (self.weapon == W_KAR_SCOPE || self.weapon == W_PTRS ||
|
||||||
self.weapon == W_HEADCRACKER || self.weapon == W_PENETRATOR) {
|
self.weapon == W_HEADCRACKER || self.weapon == W_PENETRATOR) {
|
||||||
if (self.scopetime >= time)
|
if (self.scopetime >= time)
|
||||||
|
@ -2493,7 +2502,7 @@ void () Weapon_Logic =
|
||||||
float zoom_factor2 = 1 + (0.018 * GetWeaponZoomAmount(self.weapon)); // increase zoom factor
|
float zoom_factor2 = 1 + (0.018 * GetWeaponZoomAmount(self.weapon)); // increase zoom factor
|
||||||
float sigmoid_input2 = (zoom_factor2 - self.viewzoom) * 10; // adjust sigmoid input
|
float sigmoid_input2 = (zoom_factor2 - self.viewzoom) * 10; // adjust sigmoid input
|
||||||
float sigmoid_output2 = 1 / (1 + exp(-sigmoid_input2)); // apply the sigmoid function
|
float sigmoid_output2 = 1 / (1 + exp(-sigmoid_input2)); // apply the sigmoid function
|
||||||
float zoom_speed2 = 0.06 * (sigmoid_output2 + 0.5) * (frametime * 40); // adjust the zoom speed based on the sigmoid output
|
float zoom_speed2 = 0.06 * (sigmoid_output2 + 0.5) * (frametime * 80); // adjust the zoom speed based on the sigmoid output
|
||||||
|
|
||||||
if (self.viewzoom < zoom_factor2) {
|
if (self.viewzoom < zoom_factor2) {
|
||||||
self.viewzoom += zoom_speed2;
|
self.viewzoom += zoom_speed2;
|
||||||
|
|
|
@ -158,13 +158,9 @@ const float EVENT_WEAPONRECOIL = 40;
|
||||||
#define PUT_OUT_START 18 // Start of putting away weapon
|
#define PUT_OUT_START 18 // Start of putting away weapon
|
||||||
#define PUT_OUT_END 19 // End of putting away weapon
|
#define PUT_OUT_END 19 // End of putting away weapon
|
||||||
#define RELOAD_CANCEL 20 // Frame where mag variable is filled
|
#define RELOAD_CANCEL 20 // Frame where mag variable is filled
|
||||||
#define AIM_IN_START 30 // Start of animation-based ADS
|
#define AIM_IN 30 // Frame to snap to when in ADS (optional)
|
||||||
#define AIM_IN_END 31 // End of animation-based ADS
|
#define AIM_FIRE_START 31 // Start of firing while ADS (optional)
|
||||||
#define AIM_LOOP 33 // ADS stuck loop frame
|
#define AIM_FIRE_END 32 // End of firing while ADS (optional)
|
||||||
#define AIM_OUT_START 34 // Start of ADS end
|
|
||||||
#define AIM_OUT_END 35 // End of ADS end
|
|
||||||
#define AIM_FIRE_START 36 // Start of firing while ADS
|
|
||||||
#define AIM_FIRE_END 37 // End of firing while ADS
|
|
||||||
|
|
||||||
//Animation types
|
//Animation types
|
||||||
#define RELOAD 1
|
#define RELOAD 1
|
||||||
|
|
|
@ -2114,8 +2114,12 @@ float(float wep, float frametype, optional float z) GetFrame =
|
||||||
return 33;
|
return 33;
|
||||||
case RELOAD_CANCEL:
|
case RELOAD_CANCEL:
|
||||||
return 18;
|
return 18;
|
||||||
case AIM_IN_END:
|
case AIM_IN:
|
||||||
|
return 2;
|
||||||
|
case AIM_FIRE_START:
|
||||||
return 3;
|
return 3;
|
||||||
|
case AIM_FIRE_END:
|
||||||
|
return 5;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case W_PPSH:
|
case W_PPSH:
|
||||||
|
@ -2308,10 +2312,6 @@ float(float wep, float frametype, optional float z) GetFrame =
|
||||||
return 38;
|
return 38;
|
||||||
case RELOAD_CANCEL:
|
case RELOAD_CANCEL:
|
||||||
return 16;
|
return 16;
|
||||||
case AIM_IN_END:
|
|
||||||
return 28;
|
|
||||||
case AIM_IN_START:
|
|
||||||
return 27;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case W_TESLA:
|
case W_TESLA:
|
||||||
|
|
Loading…
Reference in a new issue