NicePack/sources/Weapons/Playable/Heavy/XMV/NiceXMV850M.uc
2022-01-21 14:25:59 +04:00

133 lines
4.8 KiB
Ucode

class NiceXMV850M extends NiceHeavyGun;
var float DesiredSpeed;
var float BarrelSpeed;
var int BarrelTurn;
var Sound BarrelSpinSound, BarrelStopSound, BarrelStartSound;
var String BarrelSpinSoundRef, BarrelStopSoundRef, BarrelStartSoundRef;
static function PreloadAssets(Inventory Inv, optional bool bSkipRefCount){
local NiceXMV850M W;
super.PreloadAssets(Inv, bSkipRefCount);
if(default.BarrelSpinSound == none && default.BarrelSpinSoundRef != "")
default.BarrelSpinSound = sound(DynamicLoadObject(default.BarrelSpinSoundRef, class'sound', true));
if(default.BarrelStopSound == none && default.BarrelStopSoundRef != "")
default.BarrelStopSound = sound(DynamicLoadObject(default.BarrelStopSoundRef, class'sound', true));
if(default.BarrelStartSound == none && default.BarrelStartSoundRef != "")
default.BarrelStartSound = sound(DynamicLoadObject(default.BarrelStartSoundRef, class'sound', true));
W = NiceXMV850M(Inv);
if(W != none){
W.BarrelSpinSound = default.BarrelSpinSound;
W.BarrelStopSound = default.BarrelStopSound;
W.BarrelStartSound = default.BarrelStartSound;
}
}
static function bool UnloadAssets(){
if(super.UnloadAssets()){
default.BarrelSpinSound = none;
default.BarrelStopSound = none;
default.BarrelStartSound = none;
}
return true;
}
// XMV uses custom hands
simulated function HandleSleeveSwapping(){}
simulated event WeaponTick(float dt){
local Rotator bt;
super.WeaponTick(dt);
bt.Roll = BarrelTurn;
SetBoneRotation('Barrels', bt);
DesiredSpeed = 0.50;
}
simulated event Tick(float dt){
local float OldBarrelTurn;
super.Tick(dt);
if(FireMode[0].IsFiring()){
BarrelSpeed = BarrelSpeed + FClamp(DesiredSpeed - BarrelSpeed, -0.20 * dt, 0.40 * dt);
BarrelTurn += int(BarrelSpeed * float(655360) * dt);
}
else{
if(BarrelSpeed > 0){
BarrelSpeed = FMax(BarrelSpeed - 0.10 * dt, 0.01);
OldBarrelTurn = float(BarrelTurn);
BarrelTurn += int(BarrelSpeed * float(655360) * dt);
if(BarrelSpeed <= 0.03 && (int(OldBarrelTurn / 10922.67) < int(float(BarrelTurn) / 10922.67))){
BarrelTurn = int(float(int(float(BarrelTurn) / 10922.67)) * 10922.67);
BarrelSpeed = 0.00;
PlaySound(BarrelStopSound, SLOT_none, 0.50,, 32.00, 1.00, true);
AmbientSound = none;
}
}
}
if(BarrelSpeed > 0){
AmbientSound = BarrelSpinSound;
SoundPitch = byte(float(32) + float(96) * BarrelSpeed);
}
if(NiceXMV850Attachment(ThirdPersonActor) != none)
NiceXMV850Attachment(ThirdPersonActor).BarrelSpeed = BarrelSpeed;
}
simulated function AltFire(float F){
ToggleLaser();
}
simulated function ToggleLaser(){
if(!Instigator.IsLocallyControlled())
return;
// Will redo this bit later, but so far it'll have to do
if(LaserType == 0)
LaserType = 3;
else
LaserType = 0;
ApplyLaserState();
}
defaultproperties
{
BarrelSpinSoundRef="HMG_S.XMV.XMV-BarrelSpinLoop"
BarrelStopSoundRef="HMG_S.XMV.XMV-BarrelSpinEnd"
BarrelStartSoundRef="HMG_S.XMV.XMV-BarrelSpinStart"
LaserAttachmentOffset=(X=120.000000,Z=-10.000000)
LaserAttachmentBone="Muzzle"
reloadPreEndFrame=0.201000
reloadEndFrame=0.729000
reloadChargeEndFrame=-1.000000
reloadMagStartFrame=0.340000
reloadChargeStartFrame=-1.000000
MagazineBone="BeltBone1"
MagCapacity=160
ReloadRate=4.400000
ReloadAnim="Reload"
ReloadAnimRate=1.000000
WeaponReloadAnim="Reload"
Weight=7.000000
StandardDisplayFOV=55.000000
TraderInfoTexture=Texture'HMG_T.XMV.Trader_XMV850'
MeshRef="HMG_A.XMV850Mesh"
SkinRefs(0)="HMG_T.XMV.XMV850_Main"
SkinRefs(1)="HMG_T.XMV.Hands_Shdr"
SkinRefs(2)="HMG_T.XMV.XMV850_Barrels_Shdr"
SelectSoundRef="HMG_S.XMV.XMV-Pullout"
HudImageRef="HMG_T.XMV.XMV850_Unselected"
SelectedHudImageRef="HMG_T.XMV.XMV850_Selected"
PlayerIronSightFOV=65.000000
ZoomedDisplayFOV=20.000000
FireModeClass(0)=class'NiceXMV850Fire'
FireModeClass(1)=Class'KFMod.NoFire'
PutDownAnim="Putaway"
SelectForce="SwitchToAssaultRifle"
AIRating=0.550000
CurrentRating=0.550000
bShowChargingBar=True
Description="Minigun with reduced fire rate down to 950RPM. But still badass and has laser sight."
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
DisplayFOV=55.000000
Priority=135
CustomCrosshair=11
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
InventoryGroup=3
GroupOffset=7
PickupClass=class'NiceXMV850Pickup'
PlayerViewOffset=(X=30.000000,Y=20.000000,Z=-10.000000)
BobDamping=6.000000
AttachmentClass=class'NiceXMV850Attachment'
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
ItemName="XMV850 Minigun"
TransientSoundVolume=0.625000
}