124 lines
4.3 KiB
Ucode
124 lines
4.3 KiB
Ucode
class NiceHighROFFire extends NiceFire;
|
|
// sound
|
|
var sound FireEndSound; // The sound to play at the end of the ambient fire sound
|
|
var sound FireEndStereoSound; // The sound to play at the end of the ambient fire sound in first person stereo
|
|
var float AmbientFireSoundRadius; // The sound radius for the ambient fire sound
|
|
var sound AmbientFireSound; // How loud to play the looping ambient fire sound
|
|
var byte AmbientFireVolume; // The ambient fire sound
|
|
var string FireEndSoundRef;
|
|
var string FireEndStereoSoundRef;
|
|
var string AmbientFireSoundRef;
|
|
//MEANTODO
|
|
|
|
static function PreloadAssets(LevelInfo LevelInfo, optional KFFire Spawned){
|
|
super.PreloadAssets(LevelInfo, Spawned);
|
|
if(default.FireEndSound != none && default.FireEndSoundRef != "")
|
|
default.FireEndSound = sound(DynamicLoadObject(default.FireEndSoundRef, class'sound', true));
|
|
if(default.FireEndStereoSound == none){
|
|
if(default.FireEndStereoSoundRef != "")
|
|
default.FireEndStereoSound = sound(DynamicLoadObject(default.FireEndStereoSoundRef, class'Sound', true));
|
|
else
|
|
default.FireEndStereoSound = default.FireEndSound;
|
|
}
|
|
if(default.AmbientFireSoundRef != "")
|
|
default.AmbientFireSound = sound(DynamicLoadObject(default.AmbientFireSoundRef, class'sound', true));
|
|
if(NiceHighROFFire(Spawned) != none){
|
|
NiceHighROFFire(Spawned).FireEndSound = default.FireEndSound;
|
|
NiceHighROFFire(Spawned).FireEndStereoSound = default.FireEndStereoSound;
|
|
NiceHighROFFire(Spawned).AmbientFireSound = default.AmbientFireSound;
|
|
}
|
|
}
|
|
static function bool UnloadAssets(){
|
|
super.UnloadAssets();
|
|
default.FireEndSound = none;
|
|
default.FireEndStereoSound = none;
|
|
default.AmbientFireSound = none;
|
|
return true;
|
|
}
|
|
// Sends the fire class to the looping state
|
|
function StartFiring(){
|
|
if(!bWaitForRelease && !currentContext.bIsBursting)
|
|
GotoState('FireLoop');
|
|
else
|
|
Super.StartFiring();
|
|
}
|
|
// Handles toggling the weapon attachment's ambient sound on and off
|
|
function PlayAmbientSound(Sound aSound){
|
|
local WeaponAttachment WA;
|
|
WA = WeaponAttachment(Weapon.ThirdPersonActor);
|
|
if(Weapon == none || (WA == none))
|
|
return;
|
|
if(aSound == none){
|
|
WA.SoundVolume = WA.default.SoundVolume;
|
|
WA.SoundRadius = WA.default.SoundRadius;
|
|
}
|
|
else{
|
|
WA.SoundVolume = AmbientFireVolume;
|
|
WA.SoundRadius = AmbientFireSoundRadius;
|
|
}
|
|
WA.AmbientSound = aSound;
|
|
}
|
|
// Make sure we are in the fire looping state when we fire
|
|
event ModeDoFire(){
|
|
if(!bWaitForRelease && !currentContext.bIsBursting){
|
|
if(AllowFire() && IsInState('FireLoop'))
|
|
Super.ModeDoFire();
|
|
}
|
|
else
|
|
Super.ModeDoFire();
|
|
}
|
|
state FireLoop
|
|
{
|
|
function BeginState(){
|
|
NextFireTime = Level.TimeSeconds - 0.1;
|
|
if(KFWeap.bAimingRifle)
|
|
Weapon.LoopAnim(FireLoopAimedAnim, FireLoopAnimRate, TweenTime);
|
|
else
|
|
Weapon.LoopAnim(FireLoopAnim, FireLoopAnimRate, TweenTime);
|
|
PlayAmbientSound(AmbientFireSound);
|
|
}
|
|
function PlayFiring(){}
|
|
function ServerPlayFiring(){}
|
|
function EndState(){
|
|
Weapon.AnimStopLooping();
|
|
PlayAmbientSound(none);
|
|
if(Weapon.Instigator != none && Weapon.Instigator.IsLocallyControlled() &&
|
|
Weapon.Instigator.IsFirstPerson() && StereoFireSound != none)
|
|
Weapon.PlayOwnedSound(FireEndStereoSound,SLOT_none,AmbientFireVolume/127,,AmbientFireSoundRadius,,false);
|
|
else
|
|
Weapon.PlayOwnedSound(FireEndSound,SLOT_none,AmbientFireVolume/127,,AmbientFireSoundRadius);
|
|
Weapon.StopFire(ThisModeNum);
|
|
}
|
|
function StopFiring(){
|
|
GotoState('');
|
|
}
|
|
function ModeTick(float dt){
|
|
Super.ModeTick(dt);
|
|
if(!bIsFiring || !AllowFire()){
|
|
GotoState('');
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
function PlayFireEnd(){
|
|
if(!bWaitForRelease)
|
|
Super.PlayFireEnd();
|
|
}
|
|
defaultproperties
|
|
{
|
|
AmbientFireSoundRadius=500.000000
|
|
AmbientFireVolume=255
|
|
FireAimedAnim="Fire_Iron"
|
|
FireEndAimedAnim="Fire_Iron_End"
|
|
FireLoopAimedAnim="Fire_Iron_Loop"
|
|
bAccuracyBonusForSemiAuto=True
|
|
bPawnRapidFireAnim=True
|
|
TransientSoundVolume=1.800000
|
|
FireLoopAnim="Fire_Loop"
|
|
FireEndAnim="Fire_End"
|
|
TweenTime=0.025000
|
|
FireForce="AssaultRifleFire"
|
|
BotRefireRate=0.100000
|
|
aimerror=30.000000
|
|
}
|