322 lines
10 KiB
Ucode
322 lines
10 KiB
Ucode
|
//=============================================================================
|
|||
|
// 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)))
|
|||
|
|
|||
|
}
|
|||
|
|