Fancy FOV features (no more A_ZoomLevel hackery).

This commit is contained in:
Mari the Deer 2021-03-13 02:04:42 +01:00
commit 8c978a9f25
15 changed files with 123 additions and 44 deletions

View file

@ -120,6 +120,12 @@ Class SWWMWeapon : Weapon abstract
return -1, 0;
}
action void A_BumpFOV( double factor )
{
if ( !(self is 'Demolitionist') ) return;
Demolitionist(self).lastbump *= factor;
}
// subtracts given ammo from price, drops excess
virtual bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon )
{

View file

@ -210,8 +210,7 @@ Class Hellblazer : SWWMWeapon
A_AlertMonsters(swwm_uncapalert?0:bAlt?400:1200);
int qstr = bAlt?4:5;
A_QuakeEx(qstr,qstr,qstr,bAlt?4:12,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.12*qstr);
A_ZoomFactor(bAlt?.96:.93,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(bAlt?.96:.93);
A_PlayerFire();
invoker.clipcount = max(0,invoker.clipcount-1);
invoker.magstate[invoker.magpos] = true;

View file

@ -458,8 +458,7 @@ Class Wallbuster : SWWMWeapon
int qk = min(9,1+howmany/5);
int ql = min(25,6+howmany/2);
A_QuakeEx(qk,qk,qk,ql,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:qk*.15);
A_ZoomFactor(1.-qk*.04,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(1.-qk*.04);
A_AlertMonsters(swwm_uncapalert?0:alertness);
A_PlayerFire();
if ( redflashstr > 0 )

View file

@ -107,8 +107,7 @@ Class Eviscerator : SWWMWeapon
invoker.isfiring = true;
A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP);
A_QuakeEx(6,6,6,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5);
A_ZoomFactor(.94,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.94);
A_SWWMFlash();
A_PlayerFire();
SWWMHandler.DoFlash(self,Color(64,255,224,96),3);
@ -178,8 +177,7 @@ Class Eviscerator : SWWMWeapon
A_StartSound("eviscerator/altfire",CHAN_WEAPON,CHANF_OVERLAP);
A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP);
A_QuakeEx(4,4,4,5,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.9);
A_ZoomFactor(.91,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.91);
A_SWWMFlash();
A_PlayerFire();
SWWMHandler.DoFlash(self,Color(16,255,224,96),3);

View file

@ -108,8 +108,7 @@ Class Ynykron : SWWMWeapon
}
else A_AlertMonsters(); // full range alert
A_QuakeEx(9,9,9,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:2.5);
A_ZoomFactor(.7,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.7);
A_PlayerFire();
SWWMHandler.DoFlash(self,Color(120,255,255,255),30);
A_Overlay(PSP_WEAPON+1,"FireSmoke");

View file

@ -41,8 +41,7 @@ Class PusherWeapon : SWWMWeapon
invoker.chargelevel = clamp(invoker.chargelevel+FRandom[Pusher](-.04,.08),.3,1.);
A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5);
A_WeaponOffset(FRandom[Pusher](-1,1)*2,32+FRandom[Pusher](-1,1)*2);
A_ZoomFactor(1.01,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(1.01);
A_Recoil(-cos(pitch));
Vector3 x, y, z;
[x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll);
@ -118,8 +117,7 @@ Class PusherWeapon : SWWMWeapon
A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5);
A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP);
A_StartSound("pusher/altfire",CHAN_WEAPON,CHANF_OVERLAP);
A_ZoomFactor(1.+invoker.chargelevel*.2,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(1.+invoker.chargelevel*.2);
A_Recoil(-(2.+4.*invoker.chargelevel)*cos(pitch));
A_QuakeEx(2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),3+int(invoker.chargelevel*6),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3+invoker.chargelevel*.7);
A_WeaponOffset(0,32);

View file

@ -407,8 +407,7 @@ Class Spreadgun : SWWMWeapon
A_StartSound(sounds[i],CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6);
A_AlertMonsters(swwm_uncapalert?0:louds[i]);
A_QuakeEx(quakes[i],quakes[i],quakes[i],9,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2*quakes[i]);
A_ZoomFactor(1.-quakes[i]*.04,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(1.-quakes[i]*.04);
A_PlayerFire();
SWWMHandler.DoFlash(self,cols[i],5);
Vector3 x, y, z;

View file

@ -91,8 +91,7 @@ Class Sparkster : SWWMWeapon
// spark
A_StartSound("biospark/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.7);
A_QuakeEx(2,2,2,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2);
A_ZoomFactor(.96,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.96);
A_SWWMFlash();
SWWMHandler.DoFlash(self,Color(64,192,255,96),3);
A_AlertMonsters(swwm_uncapalert?0:5000);
@ -112,8 +111,7 @@ Class Sparkster : SWWMWeapon
// beam
A_StartSound("biospark/altfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.8);
A_QuakeEx(3,3,3,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3);
A_ZoomFactor(.95,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.95);
A_SWWMFlash();
SWWMHandler.DoFlash(self,Color(64,192,255,96),3);
A_AlertMonsters(swwm_uncapalert?0:4000);
@ -133,8 +131,7 @@ Class Sparkster : SWWMWeapon
// big spark
A_StartSound("biospark/thirdfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:1.5);
A_QuakeEx(5,5,5,10,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.6);
A_ZoomFactor(.94,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.94);
A_AlertMonsters(swwm_uncapalert?0:1200);
A_PlayerFire();
SWWMUtility.DoKnockback(self,-x,2500.);

View file

@ -93,8 +93,7 @@ Class ExplodiumGun : SWWMWeapon
invoker.clipcount = max(invoker.clipcount-1,0);
A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP);
A_QuakeEx(5,5,5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5);
A_ZoomFactor(.96,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.96);
A_SWWMFlash();
SWWMHandler.DoFlash(self,Color(64,255,224,64),3);
A_AlertMonsters(swwm_uncapalert?0:5000);
@ -533,8 +532,7 @@ Class DualExplodiumGun : SWWMWeapon
}
A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP);
A_QuakeEx(5,5,5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5);
A_ZoomFactor(.96,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.96);
if ( side == 1 )
A_SWWMFlash("Flash");
else if ( side == -1 )

View file

@ -115,8 +115,7 @@ Class CandyGun : SWWMWeapon
invoker.clipcount = max(invoker.clipcount-1,0);
A_StartSound("candygun/fire",CHAN_WEAPON,CHANF_OVERLAP);
A_QuakeEx(5,5,5,5,0,15,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:2.);
A_ZoomFactor(.94,ZOOM_INSTANT);
A_ZoomFactor(1.);
A_BumpFOV(.94);
A_SWWMFlash();
SWWMHandler.DoFlash(self,Color(64,224,64,255),5);
A_AlertMonsters(swwm_uncapalert?0:9000);

View file

@ -593,8 +593,7 @@ Class SilverBullet : SWWMWeapon
int str = invoker.fcbchambered?7:8;
A_QuakeEx(str,str,str,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:str/4.);
double basezoom = invoker.zoomed?clamp(invoker.zoomlevel,1.,16.):1.;
A_ZoomFactor(basezoom*(invoker.fcbchambered?.8:.76),ZOOM_INSTANT);
A_ZoomFactor(basezoom);
A_BumpFOV(invoker.fcbchambered?.8:.76);
A_PlayerFire();
SWWMHandler.DoFlash(self,Color(110,255,192,80),8);
Vector3 x, y, z;