NicePack/sources/Weapons/Playable/Shotguns/Boomstick/NiceBoomStick.uc
2022-01-21 14:25:59 +04:00

103 lines
3.8 KiB
Ucode

class NiceBoomStick extends NiceWeapon;
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
var float glueTiming;
var float firstShellTiming, secondShellTiming, jumpTiming;
var const string firstShellStr, secondShellStr, jumpStr;
simulated function PostBeginPlay(){
local EventRecord record;
local AutoReloadAnimDesc reloadDesc;
// Setup animation timings
autoReloadsDescriptions.Length = 0;
reloadDesc.canInterruptFrame = 0.056;
reloadDesc.trashStartFrame = secondShellTiming;
reloadDesc.resumeFrame = 0.056;
reloadDesc.speedFrame = 0.056;
// Setup all possible fire animations
reloadDesc.animName = 'Fire_Both';
autoReloadsDescriptions[0] = reloadDesc;
reloadDesc.animName = 'Fire_Both_Iron';
autoReloadsDescriptions[1] = reloadDesc;
reloadDesc.animName = 'Fire_Last';
autoReloadsDescriptions[2] = reloadDesc;
reloadDesc.animName = 'Fire_Last_Iron';
autoReloadsDescriptions[3] = reloadDesc;
// Setup reload events
record.eventName = jumpStr;
record.eventFrame = jumpTiming;
relEvents[relEvents.Length] = record;
record.eventName = firstShellStr;
record.eventFrame = firstShellTiming;
relEvents[relEvents.Length] = record;
record.eventName = secondShellStr;
record.eventFrame = secondShellTiming;
relEvents[relEvents.Length] = record;
super.PostBeginPlay();
}
simulated function ReloadEvent(string eventName){
if(eventName ~= jumpStr && GetMagazineAmmo() > 0)
SetAnimFrame(glueTiming);
if(eventName ~= firstShellStr)
MagAmmoRemainingClient = Min(1, AmmoAmount(0));
else if(eventName ~= secondShellStr)
MagAmmoRemainingClient = Min(2, AmmoAmount(0));
ServerSetMagSize(MagAmmoRemainingClient, bRoundInChamber, Level.TimeSeconds);
}
simulated function AddAutoReloadedAmmo(){
MagAmmoRemainingClient = Min(2, AmmoAmount(0));
ServerSetMagSize(MagAmmoRemainingClient, bRoundInChamber, Level.TimeSeconds);
}
simulated function bool AltFireCanForceInterruptReload(){
return (GetMagazineAmmo() > 0);
}
defaultproperties
{
glueTiming=0.633330
firstShellTiming=0.555550
secondShellTiming=0.733330
jumpTiming=0.388880
firstShellStr="firstShell"
secondShellStr="secondShellStr"
jumpStr="jumpStr"
bChangeClipIcon=True
hudClipTexture=Texture'KillingFloorHUD.HUD.Hud_Single_Bullet'
reloadType=RTYPE_AUTO
ForceZoomOutOnFireTime=0.010000
ForceZoomOutOnAltFireTime=0.010000
MagCapacity=2
Weight=6.000000
ReloadRate=2.250000
ReloadAnim="Reload"
ReloadAnimRate=1.100000
bHoldToReload=True
WeaponReloadAnim="Reload_HuntingShotgun"
bHasAimingMode=True
IdleAimAnim="Idle_Iron"
StandardDisplayFOV=55.000000
TraderInfoTexture=Texture'KillingFloorHUD.Trader_Weapon_Images.Trader_Hunting_Shotgun'
bIsTier2Weapon=True
MeshRef="KF_Weapons_Trip.BoomStick_Trip"
SkinRefs(0)="KF_Weapons_Trip_T.Shotguns.boomstick_cmb"
SelectSoundRef="KF_DoubleSGSnd.2Barrel_Select"
HudImageRef="KillingFloorHUD.WeaponSelect.BoomStic_unselected"
SelectedHudImageRef="KillingFloorHUD.WeaponSelect.BoomStick"
PlayerIronSightFOV=70.000000
ZoomedDisplayFOV=40.000000
FireModeClass(0)=class'NiceBoomStickAltFire'
FireModeClass(1)=class'NiceBoomStickFire'
PutDownAnim="PutDown"
AIRating=0.900000
CurrentRating=0.900000
bSniping=False
Description="A double barreled shotgun used by big game hunters. It fires two slugs simultaneously and can bring down even the largest targets, quickly."
DisplayFOV=55.000000
Priority=160
InventoryGroup=4
GroupOffset=2
PickupClass=class'NiceBoomStickPickup'
PlayerViewOffset=(X=8.000000,Y=14.000000,Z=-8.000000)
BobDamping=6.000000
AttachmentClass=class'NiceBoomStickAttachment'
ItemName="Hunting Shotgun"
bUseDynamicLights=True
TransientSoundVolume=1.000000
}