154 lines
4.3 KiB
Ucode
154 lines
4.3 KiB
Ucode
//=============================================================================
|
|
// HuskGun
|
|
//=============================================================================
|
|
// Husk Arm fireball launching gun
|
|
//=============================================================================
|
|
// Killing Floor Source
|
|
// Copyright (C) 2011 Tripwire Interactive LLC
|
|
// - John "Ramm-Jaeger" Gibson
|
|
//=============================================================================
|
|
class ChainGun extends KFWeapon;
|
|
|
|
simulated function bool StartFire(int Mode)
|
|
{
|
|
if( Mode == 1 )
|
|
return super.StartFire(Mode);
|
|
|
|
if( !super.StartFire(Mode) ) // returns false when mag is empty
|
|
return false;
|
|
|
|
if( AmmoAmount(0) <= 0 )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
AnimStopLooping();
|
|
|
|
if( !FireMode[Mode].IsInState('FireLoop') && (AmmoAmount(0) > 0) )
|
|
{
|
|
FireMode[Mode].StartFiring();
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
simulated function AnimEnd(int channel)
|
|
{
|
|
local name anim;
|
|
local float frame, rate;
|
|
|
|
if(!FireMode[0].IsInState('FireLoop'))
|
|
{
|
|
GetAnimParams(0, anim, frame, rate);
|
|
|
|
if (ClientState == WS_ReadyToFire)
|
|
{
|
|
if ((FireMode[0] == None || !FireMode[0].bIsFiring) && (FireMode[1] == None || !FireMode[1].bIsFiring))
|
|
{
|
|
PlayIdle();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
simulated event OnZoomOutFinished()
|
|
{
|
|
local name anim;
|
|
local float frame, rate;
|
|
|
|
GetAnimParams(0, anim, frame, rate);
|
|
|
|
if (ClientState == WS_ReadyToFire)
|
|
{
|
|
// Play the regular idle anim when we're finished zooming out
|
|
if (anim == IdleAimAnim)
|
|
{
|
|
PlayIdle();
|
|
}
|
|
// Switch looping fire anims if we switched to/from zoomed
|
|
else if( FireMode[0].IsInState('FireLoop') && anim == 'Fire_Iron_Loop')
|
|
{
|
|
LoopAnim('Fire_Loop', FireMode[0].FireLoopAnimRate, FireMode[0].TweenTime);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Called by the native code when the interpolation of the first person weapon to the zoomed position finishes
|
|
*/
|
|
simulated event OnZoomInFinished()
|
|
{
|
|
local name anim;
|
|
local float frame, rate;
|
|
|
|
GetAnimParams(0, anim, frame, rate);
|
|
|
|
if (ClientState == WS_ReadyToFire)
|
|
{
|
|
// Play the iron idle anim when we're finished zooming in
|
|
if (anim == IdleAnim)
|
|
{
|
|
PlayIdle();
|
|
}
|
|
// Switch looping fire anims if we switched to/from zoomed
|
|
else if( FireMode[0].IsInState('FireLoop') && anim == 'Fire_Loop' )
|
|
{
|
|
LoopAnim('Fire_Iron_Loop', FireMode[0].FireLoopAnimRate, FireMode[0].TweenTime);
|
|
}
|
|
}
|
|
}
|
|
// Don't use alt fire to toggle
|
|
simulated function AltFire(float F){}
|
|
// Don't switch fire mode
|
|
exec function SwitchModes(){}
|
|
|
|
defaultproperties
|
|
{
|
|
MagCapacity=150
|
|
ReloadRate=6.500000
|
|
bHasSecondaryAmmo=True
|
|
ReloadAnim="CrappyReload"
|
|
ReloadAnimRate=1.000000
|
|
WeaponReloadAnim="Reload_AA12"
|
|
Weight=17.000000
|
|
IdleAimAnim="Idle"
|
|
StandardDisplayFOV=55.000000
|
|
bModeZeroCanDryFire=True
|
|
TraderInfoTexture=Texture'HMG_T.PatGun.patgun_unselected'
|
|
bIsTier3Weapon=True
|
|
MeshRef="HMG_A.PatGunMesh"
|
|
SkinRefs(0)="KF_Weapons4_Trip_T.Weapons.HUSK_cmb"
|
|
SkinRefs(1)="KF_Weapons_Trip_T.hands.hands_1stP_military_cmb"
|
|
SkinRefs(2)="KF_Specimens_Trip_T.gatling_cmb"
|
|
SkinRefs(3)="HMG_T.PatGun.Handle"
|
|
SelectSoundRef="HMG_S.Stinger.StingerTakeOut"
|
|
HudImageRef="HMG_T.PatGun.patgun_unselected"
|
|
SelectedHudImageRef="HMG_A.patgun_selected"
|
|
PlayerIronSightFOV=65.000000
|
|
ZoomedDisplayFOV=45.000000
|
|
FireModeClass(0)=Class'ScrnHMG.ChainGunFire'
|
|
FireModeClass(1)=Class'ScrnHMG.ChainGunAltFire'
|
|
PutDownAnim="PutDown"
|
|
SelectForce="SwitchToAssaultRifle"
|
|
AIRating=0.550000
|
|
CurrentRating=0.550000
|
|
Description="Chaingun ripped from dead Patriarch's hand. Or maybe ripped WITH. Or even WITH ALIVE. It works and nothing else matters."
|
|
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
|
|
DisplayFOV=55.000000
|
|
Priority=155
|
|
InventoryGroup=4
|
|
GroupOffset=5
|
|
PickupClass=Class'ScrnHMG.ChainGunPickup'
|
|
PlayerViewOffset=(X=40.000000,Y=40.000000,Z=16.000000)
|
|
BobDamping=6.000000
|
|
AttachmentClass=Class'ScrnHMG.ChainGunAttachment'
|
|
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
|
ItemName="Patriarch's Chaingun SE"
|
|
TransientSoundVolume=1.250000
|
|
}
|