1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFWeap_Pistol_DualG18.uc
2020-12-13 18:01:13 +03:00

322 lines
10 KiB
Ucode
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// KFWeap_Pistol_DualG18
//=============================================================================
// An Glock 18 Pistol Dual
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// Fernando Ferrando @ Saber Interactive
//=============================================================================
/*
TODO LIST [LOOK FOR TAG (WHATS BEFORE THE : IN THE INDICATED FILE)] OK = DONE || XX = NOT DONE
BASE DAMAGE
OK DEFAULT MODE DAMAGE : KFWeap_Pistol_SingleG18.uc
OK BASH MODE DAMAGE : KFWeap_Pistol_SingleG18.uc
DAMAGE TYPES
OK DEFAULT MODE TYPE DAMAGE : KFWeap_Pistol_SingleG18.uc
OK BASH MODE TYPE DAMAGE : KFWeap_Pistol_SingleG18.uc
FIRE RATE
OK Single Default Firemode (Automatic) firerate : KFWeap_Pistol_SingleG18.uc
RANGE
OK Default Firemode (Automatic) range : KFWeapDef_Pistol_SingleG18.uc
PENETRATION
OK Default Firemode (Automatic) penetration : KFWeap_Pistol_SingleG18.uc
DUAL-WIELDABLE
OK Dual-wieldable yes : KFWeap_Pistol_SingleG18.uc
MAGAZINE SIZE
OK Magazine ammount : KFWeap_Pistol_SingleG18.uc
SPARE AMMO CAPACITY
OK spare ammo Ammount : KFWeap_Pistol_SingleG18.uc
STARTING SPARE MAGAZINES
OK starting spare magazines Ammount : KFWeap_Pistol_SingleG18.uc
AMMO BOX PICKUP SCALE
XX Ammount:
RELOAD SPEED
XX [Single Standard]
Full Reload
Full Length Animation - ??? seconds
Interrupt - ??? seconds
Half Reload
Full Length Animation - ??? seconds
Interrupt - ??? seconds
XX [Single Elite]
Full Reload
Full Length Animation - ??? seconds
Interrupt - ??? seconds
Half Reload
Full Length Animation - ??? seconds
Interrupt - ??? seconds
WEIGHT
OK Weight Ammount : KFWeap_Pistol_SingleG18.uc
WEAPON TRADER PRICE
OK Weapon Price : KFWeapDef_Pistol_SingleG18.uc
AMMO TRADER PRICE
OK Ammo Price : KFWeapDef_Pistol_SingleG18.uc
WEAPON TIER
XX Tier :
FIRE MODE DEFAULT
OK FireMode Automatic : KFWeap_Pistol_SingleG18.uc
AFFLICTIONS
OK afflictions Default Firemode (Automatic) : KFDT_Ballistic_SingleG18.uc
OK afflictions Bash Firemode : KFDT_Ballistic_SingleG18.uc
PERKS
OK Main Perk : KFWeap_Pistol_SingleG18.uc
WEAPON UPGRADE
XX Upgrades:
*/
class KFWeap_Pistol_DualG18 extends KFWeap_DualBase;
simulated state WeaponFiring
{
simulated function BeginState(Name PrevStateName)
{
local KFPerk InstigatorPerk;
InstigatorPerk = GetPerk();
if( InstigatorPerk != none )
{
SetZedTimeResist( InstigatorPerk.GetZedTimeModifier(self) );
}
if ( bLoopingFireSnd.Length > 0 )
{
StartLoopingFireSound(CurrentFireMode);
}
super.BeginState(PrevStateName);
}
simulated function FireAmmunition()
{
bFireFromRightWeapon = !bFireFromRightWeapon;
Super.FireAmmunition();
}
simulated function EndState(Name NextStateName)
{
super.EndState(NextStateName);
ClearZedTimeResist();
// Simulate weapon firing effects on the local client
if( WorldInfo.NetMode == NM_Client )
{
Instigator.WeaponStoppedFiring(self, false);
}
if ( bPlayingLoopingFireSnd )
{
StopLoopingFireSound(CurrentFireMode);
}
}
}
/**
* This function returns the world location for spawning the visual effects
*
* Overridden to allow for left weapon location
*/
simulated event vector GetMuzzleLoc()
{
local Rotator ViewRotation;
if( bFireFromRightWeapon )
{
if( Instigator != none )
{
ViewRotation = Instigator.GetViewRotation();
// Add in the free-aim rotation
if ( KFPlayerController(Instigator.Controller) != None )
{
ViewRotation += KFPlayerController(Instigator.Controller).WeaponBufferRotation;
}
if( bUsingSights )
{
return Instigator.GetWeaponStartTraceLocation() + (FireOffset >> ViewRotation);
}
else
{
return Instigator.GetPawnViewLocation() + (FireOffset >> ViewRotation);
}
}
return Location;
}
else
{
return GetLeftMuzzleLoc();
}
}
defaultproperties
{
SingleClass=class'KFWeap_Pistol_G18C'
// FOV
MeshFOV=96
MeshIronSightFOV=77
PlayerIronSightFOV=77
//RecoilBlendOutRatio=0
FireTweenTime=0.03
// Depth of field
DOF_FG_FocalRadius=40
DOF_FG_MaxNearBlurSize=3.5
// Zooming/Position
IronSightPosition=(X=-3,Y=0,Z=0)
PlayerViewOffset=(X=-15,Y=0,Z=0)
// Controls the rotation when Hans(the bastard) grabs you
QuickWeaponDownRotation=(Pitch=-14192,Yaw=-6000,Roll=16384)
FireOffset=(X=17,Y=4.0,Z=-3)
LeftFireOffset=(X=17,Y=-4,Z=-3)
// Content
PackageKey="Dual_G18C"
FirstPersonMeshName="WEP_1P_Dual_G18C_MESH.Wep_1stP_Dual_G18C_Rig"
FirstPersonAnimSetNames(0)="WEP_1P_Dual_G18C_ANIM.WEP_1st_Dual_G18C_ANIM"
PickupMeshName="wep_3p_dual_g18c_mesh.Wep_3rdP_Dual_G18C_Pickup"
AttachmentArchetypeName="WEP_Dual_G18C_ARCH.Wep_Dual_g18c_3P"
MuzzleFlashTemplateName="WEP_Dual_G18C_ARCH.Wep_Dual_G18C_MuzzleFlash"
// Ammo
MagazineCapacity[0]=66 //Magazine ammount
SpareAmmoCapacity[0]=462 //spare ammo Ammount
InitialSpareMags[0]=2//3 //starting spare magazines Ammount
bCanBeReloaded=true
bReloadFromMagazine=true
bHasFireLastAnims=true
// Recoil
maxRecoilPitch=260 //220 //165 //150 //100
minRecoilPitch=200 //165 //125 //112 //75
maxRecoilYaw=85
minRecoilYaw=-85
RecoilRate=0.045
RecoilMaxYawLimit=500
RecoilMinYawLimit=65035
RecoilMaxPitchLimit=900
RecoilMinPitchLimit=65035
RecoilISMaxYawLimit=100
RecoilISMinYawLimit=65435
RecoilISMaxPitchLimit=375
RecoilISMinPitchLimit=65460
IronSightMeshFOVCompensationScale=1.65
WalkingRecoilModifier=1.1
JoggingRecoilModifier=1.2
// DEFAULT_FIREMODE
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_BulletAuto'
FiringStatesArray(DEFAULT_FIREMODE)=WeaponFiring //DEFAULT MODE DAMAGE
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_G18c'
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_G18c' //DEFAULT MODE TYPE DAMAGE
FireInterval(DEFAULT_FIREMODE)=+0.05 // 1200 RPM //Default Firemode (Automatic) firerate
Spread(DEFAULT_FIREMODE)=0.06
InstantHitDamage(DEFAULT_FIREMODE)=37 //39 //41 // DEFAULT MODE DAMAGE
PenetrationPower(DEFAULT_FIREMODE)=0.0 //Default Firemode (Automatic) & Altfire Firemode (Single Fire) penetration
PenetrationDamageReductionCurve(DEFAULT_FIREMODE)=(Points=((InVal=0.f,OutVal=0.f),(InVal=1.f, OutVal=1.f))) //Default Firemode (Automatic) & Altfire Firemode (Single Fire) penetration
//ALT_FIREMODE
FireModeIconPaths(ALTFIRE_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_BulletAuto'
FiringStatesArray(ALTFIRE_FIREMODE)=WeaponFiring //DEFAULT MODE DAMAGE
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_G18c'
InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_G18c' //DEFAULT MODE TYPE DAMAGE
FireInterval(ALTFIRE_FIREMODE)=+0.05 // 1200 RPM //Default Firemode (Automatic) firerate
Spread(ALTFIRE_FIREMODE)=0.06
InstantHitDamage(ALTFIRE_FIREMODE)=37 //39 //41 // DEFAULT MODE DAMAGE
PenetrationPower(ALTFIRE_FIREMODE)=0.0 //Default Firemode (Automatic) & Altfire Firemode (Single Fire) penetration
PenetrationDamageReductionCurve(ALTFIRE_FIREMODE)=(Points=((InVal=0.f,OutVal=0.f),(InVal=1.f, OutVal=1.f))) //Default Firemode (Automatic) & Altfire Firemode (Single Fire) penetration
// BASH_FIREMODE
InstantHitDamageTypes(BASH_FIREMODE)=class'KFDT_Bludgeon_G18C' //BASH MODE TYPE DAMAGE
InstantHitDamage(BASH_FIREMODE)=25 //BASH MODE DAMAGE
PenetrationPower(BASH_FIREMODE)=0.0 //Default Firemode (Automatic) & Altfire Firemode (Single Fire) penetration
PenetrationDamageReductionCurve(BASH_FIREMODE)=(Points=((InVal=0.f,OutVal=0.f),(InVal=1.f, OutVal=1.f))) //Default Firemode (Automatic) & Altfire Firemode (Single Fire) penetration
//Sounds
WeaponFireSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Auto_3P_Loop', FirstPersonCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Auto_Loop')
WeaponDryFireSnd(DEFAULT_FIREMODE)=AkEvent'WW_WEP_SA_MedicSMG.Play_SA_MedicSMG_Handling_DryFire'
// Advanced (High RPM) Fire Effects
bLoopingFireAnim(DEFAULT_FIREMODE)=false
bLoopingFireSnd(DEFAULT_FIREMODE)=true
WeaponFireLoopEndSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Fire_3P_EndLoop', FirstPersonCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Fire_1P_EndLoop')
//Sounds
WeaponFireSnd(ALTFIRE_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Auto_3P_Loop', FirstPersonCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Auto_Loop')
WeaponDryFireSnd(ALTFIRE_FIREMODE)=AkEvent'WW_WEP_SA_MedicSMG.Play_SA_MedicSMG_Handling_DryFire'
// Advanced (High RPM) Fire Effects
bLoopingFireAnim(ALTFIRE_FIREMODE)=false
bLoopingFireSnd(ALTFIRE_FIREMODE)=true
WeaponFireLoopEndSnd(ALTFIRE_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Fire_3P_EndLoop', FirstPersonCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Fire_1P_EndLoop')
WeaponFireSnd(2)=(DefaultCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Fire_3P_Single', FirstPersonCue=AkEvent'WW_WEP_G18c.Play_WEP_G18c_Fire_1P_Single')
SingleFireSoundIndex=2
// Attachments
bHasIronSights=true
bHasFlashlight=true
AssociatedPerkClasses(0)=class'KFPerk_Gunslinger' //Main Perk
// Inventory
InventorySize=8 //Weight Ammount
GroupPriority=100
bCanThrow=true
bDropOnDeath=true
WeaponSelectTexture=Texture2D'WEP_UI_Dual_G18C_TEX.UI_WeaponSelect_Dual_G18C'
bIsBackupWeapon=false
// Custom animations
IdleFidgetAnims=(Guncheck_v1, Guncheck_v2, Guncheck_v3)
//FireSightedAnims=(Shoot_Iron, Shoot_Iron2, Shoot_Iron3)
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.125f), (Stat=EWUS_Damage1, Scale=1.125f), (Stat=EWUS_Weight, Add=2)))
//WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.25f), (Stat=EWUS_Weight, Add=2)))
//WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.2f)))
//WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.4f)))
//WeaponUpgrades[3]=(Stats=((Stat=EWUS_Damage0, Scale=1.6f)))
//WeaponUpgrades[4]=(Stats=((Stat=EWUS_Damage0, Scale=1.8f)))
//WeaponUpgrades[5]=(Stats=((Stat=EWUS_Damage0, Scale=2.0f)))
}