1612 lines
30 KiB
Text
1612 lines
30 KiB
Text
#name "turretweapon"
|
|
#dll "all" "weapon"
|
|
#target_dir "weapons/sp/" // target location 1 (single-player)
|
|
#target_dir "weapons/mp/" // target location 2 (multi-player)
|
|
#target_dir "xmodel/"
|
|
#target_dir ""
|
|
#target_dir "xanim/"
|
|
#file_ext "*"
|
|
#version 25
|
|
|
|
// This tells the configstring converter what the file type identifier should be
|
|
string "WEAPONFILE" configstringFileType
|
|
|
|
// This uses the config string convert's multi-target folder
|
|
// mechanism to make the weapon either a single-player weapon
|
|
// or a multi-player weapon.
|
|
// The first character is used to specify which target folder to go in
|
|
enum { "1: Single-Player", "2: Multi-Player" } targetFolder
|
|
|
|
string "none" projectileTrail
|
|
|
|
enum { "turret" } weaponClass
|
|
enum { "bullet", "projectile", "gas" } weaponType
|
|
enum { "stand", "prone", "duck" } stance
|
|
enum { "none", "bullet_small", "bullet_large", "bullet_ap", "shotgun", "grenade_bounce", "grenade_explode", "rocket_explode", "projectile_dud", "mortar_shell", "tank_shell" } impactType
|
|
enum { "none", "small", "medium", "large" } penetrateType
|
|
enum { "primary" } inventoryType
|
|
enum { "Full Auto", "Single Shot" } fireType
|
|
|
|
string adsOverlayShader
|
|
int 320 1 640 adsOverlayWidth
|
|
int 240 1 480 adsOverlayHeight
|
|
enum { "none", "Turret Scope" } adsOverlayInterface
|
|
|
|
int 1 0 1 projImpactExplode
|
|
int 600 0 20000 projectileSpeed
|
|
int 300 0 10000 explosionRadius
|
|
int 10 0 10000 explosionInnerDamage
|
|
int 10 0 10000 explosionOuterDamage
|
|
float 180 0 180 damageConeAngle
|
|
|
|
// additional grenade weapon info
|
|
int 0 0 10000 projectileSpeedUp
|
|
int 0 0 10000 projectileActivateDist
|
|
float 30.0 0 10000.0 projectileLifetime
|
|
string projectileModel
|
|
enum { "grenade", "rocket", "molotov", "none" } projExplosionType
|
|
string projExplosionEffect
|
|
int 0 0 1 projExplosionEffectForceNormalUp
|
|
string projExplosionSound
|
|
string projDudEffect
|
|
string projDudSound
|
|
string bounceSound
|
|
string projectileSound
|
|
|
|
// additional projectile weapon info
|
|
string projTrailEffect
|
|
int 200 0 1000 projectileDLight
|
|
float 0.75 0 1 projectileRed
|
|
float 0.3 0 1 projectileGreen
|
|
float 0.0 0 1 projectileBlue
|
|
int 0 0 10000 projIgnitionDelay
|
|
string projIgnitionEffect
|
|
string projIgnitionSound
|
|
|
|
float 0.0 0 10 destabilizationRateTime
|
|
float 10 0.0 10000000 destabilizationCurvatureMax
|
|
int 30000 0 32000 destabilizeDistance
|
|
|
|
|
|
string script
|
|
|
|
string ammoName
|
|
int 100 0 999 maxAmmo
|
|
int 0 0 1000 startAmmo
|
|
string clipName
|
|
int 10 0 999 clipSize
|
|
int 1 0 1 unlimitedAmmo
|
|
|
|
int 30 0 1000 damage
|
|
int 30 0 1000 playerDamage
|
|
|
|
int 30 0 1000 minDamage
|
|
int 30 0 1000 minPlayerDamage
|
|
|
|
float 15000 1 15000 maxDamageRange
|
|
float 16000 1 16000 minDamageRange
|
|
|
|
float 1600 0 10000 enemyCrosshairRange
|
|
int 1 0 1 crosshairColorChange
|
|
|
|
float 1600 0 8000 autoAimRange
|
|
float 3200 0 15000 aimAssistRange
|
|
float 3200 0 15000 aimAssistRangeAds
|
|
|
|
int 115 0 360 leftArc
|
|
int 115 0 360 rightArc
|
|
int 90 0 360 topArc
|
|
int 90 0 360 bottomArc
|
|
int 0 0 360 grabarc
|
|
float 1 0 1 accuracy
|
|
float 2 0 180 aiSpread
|
|
float 1 0 180 playerSpread
|
|
|
|
float 0.05 0.0 10.0 fireTime
|
|
int 20 0 180 animHorRotateInc
|
|
int 5 1 720 minHorTurnSpeed
|
|
int 5 1 720 minVertTurnSpeed
|
|
int 360 1 720 maxHorTurnSpeed
|
|
int 360 1 720 maxVertTurnSpeed
|
|
int 100 1 720 horTurnSpeed
|
|
int 100 1 720 vertTurnSpeed
|
|
float 0.3 0 60 pitchConvergenceTime
|
|
float 2 0 60 yawConvergenceTime
|
|
float 2 0 60 suppressionTime
|
|
float 0 0 1000000 maxRange
|
|
float 0.5 0 5 horizViewJitter
|
|
float 0.5 0 5 vertViewJitter
|
|
|
|
float 0 -300 300 proneOfsF
|
|
float 0 -300 300 proneOfsR
|
|
float 0 -300 300 proneOfsU
|
|
float 0 -300 300 duckedOfsF
|
|
float 0 -300 300 duckedOfsR
|
|
float 0 -300 300 duckedOfsU
|
|
|
|
int 0 0 1 rifleBullet
|
|
int 0 0 1 armorPiercing
|
|
|
|
string fireSound
|
|
string fireSoundPlayer
|
|
string loopFireSound
|
|
string loopFireSoundPlayer
|
|
string stopFireSound
|
|
string stopFireSoundPlayer
|
|
string reloadStartSound
|
|
string reloadStartSoundPlayer
|
|
float 0.05 0.0 10.0 reloadTime
|
|
string reloadEndSound
|
|
string reloadEndSoundPlayer
|
|
string rotateLoopSound
|
|
string rotateLoopSoundPlayer
|
|
|
|
string flameTableFirstPerson
|
|
string flameTableThirdPerson
|
|
int 100 1 1000 rechamberBoltTime
|
|
|
|
string viewFlashEffect
|
|
string worldFlashEffect
|
|
string viewShellEjectEffect
|
|
string worldShellEjectEffect
|
|
|
|
|
|
string reticleCenter
|
|
int 32 1 480 reticleCenterSize
|
|
|
|
string idleAnim
|
|
string fireAnim
|
|
float 46 1 128 playerPositionDist
|
|
|
|
string hudIcon
|
|
string killIcon
|
|
enum { "4:1", "1:1", "2:1" } hudIconRatio
|
|
enum { "4:1", "1:1", "2:1" } killIconRatio
|
|
int 1 0 1 flipKillIcon
|
|
|
|
int 0 0 1 overheatWeapon
|
|
int 0 0 1 coolWhileFiring
|
|
float 1.0 0.1 100.0 overheatRate
|
|
float 30.0 0.1 100.0 cooldownRate
|
|
float 25.0 0.0 99.0 overheatEndVal
|
|
string overheatSound
|
|
string overheatSoundPlayer
|
|
// hack, use these as overheat effects for turrets
|
|
string viewLastShotEjectEffect
|
|
string worldLastShotEjectEffect
|
|
|
|
|
|
string useHintString
|
|
string dropHintString
|
|
|
|
keyenum("rumble.gdf") fireRumble
|
|
|
|
float 0 0 100 adsDofStart
|
|
float 0 0 100 adsDofEnd
|
|
|
|
float 30 0 180 swayMaxAngle
|
|
float 6 1 50 swayLerpSpeed
|
|
float 0.1 -2 2 swayPitchScale
|
|
float 0.1 -2 2 swayYawScale
|
|
float 0.1 -2 2 swayHorizScale
|
|
float 0.1 -2 2 swayVertScale
|
|
|
|
int 0 0 1 aimDownSight
|
|
float 65 1 160 adsZoomFov
|
|
float 0.1 0 10 adsTransInTime
|
|
float 0.1 0 10 adsTransOutTime
|
|
float 0.5 0 1 adsZoomInFrac
|
|
float 0.1 0 1 adsZoomOutFrac
|
|
|
|
float 0 0 360 aimPadding
|
|
|
|
float 1.0 0 10 locNone
|
|
float 4.0 0 10 locHelmet
|
|
float 4.0 0 10 locHead
|
|
float 5.0 0 10 locNeck
|
|
float 1.0 0 10 locTorsoUpper
|
|
float 0.9 0 10 locTorsoLower
|
|
float 0.8 0 10 locRightArmUpper
|
|
float 0.6 0 10 locRightArmLower
|
|
float 0.4 0 10 locRightHand
|
|
float 0.8 0 10 locLeftArmUpper
|
|
float 0.6 0 10 locLeftArmLower
|
|
float 0.4 0 10 locLeftHand
|
|
float 0.8 0 10 locRightLegUpper
|
|
float 0.6 0 10 locRightLegLower
|
|
float 0.4 0 10 locRightFoot
|
|
float 0.8 0 10 locLeftLegUpper
|
|
float 0.6 0 10 locLeftLegLower
|
|
float 0.4 0 10 locLeftFoot
|
|
float 0 0 10 locGun
|
|
|
|
|
|
vcontainer
|
|
{
|
|
scrollbox(targetFolder)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
}
|
|
]
|
|
|
|
scrollbox(stance)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
}
|
|
]
|
|
|
|
scrollbox(weaponType)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
}
|
|
]
|
|
|
|
scrollbox(impactType)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
label("Impact type")
|
|
tooltip("The impact type, used to play impact effects based on surfacetype")
|
|
}
|
|
]
|
|
|
|
scrollbox(penetrateType)
|
|
[
|
|
exec
|
|
{
|
|
label("Penetration")
|
|
tooltip("Type of bullet penetration.")
|
|
}
|
|
]
|
|
|
|
scrollbox(fireType)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
label("Fire Type")
|
|
tooltip("Behavior of the weapon when the trigger is held down.")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Aim Assist
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
floatedit(autoAimRange, 1, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Auto Aim Range")
|
|
tooltip("(Console only.) The range in world units up to which entering ADS will lock-on to enemies. (1 world unit = 1 inch)")
|
|
}
|
|
]
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(aimAssistRange, 1, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Aim Assist Range")
|
|
tooltip("(Console only.) The range in world units up to which the crosshair will stick to targets. (1 world unit = 1 inch)")
|
|
}
|
|
]
|
|
|
|
floatedit(aimAssistRangeAds, 1, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Aim Assist Range ADS")
|
|
tooltip("(Console only.) The range in world units up to which the crosshair will stick to targets in ADS. (1 world unit = 1 inch)")
|
|
width(260)
|
|
labelwidth(160)
|
|
}
|
|
]
|
|
}
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Aim Assist (Console only)")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Ammunition
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
checkbox(unlimitedAmmo)
|
|
[
|
|
exec
|
|
{
|
|
label("Unlimited Ammo")
|
|
tooltip("This turret has unlimited ammo while emplaced")
|
|
width(500)
|
|
}
|
|
]
|
|
edit(ammoName)
|
|
[
|
|
exec
|
|
{
|
|
label("Ammo Name")
|
|
tooltip("Allows different weapons to share the same ammo pool.")
|
|
width(500)
|
|
}
|
|
]
|
|
|
|
edit(clipName)
|
|
[
|
|
exec
|
|
{
|
|
label("Clip Name")
|
|
tooltip("Allows different weapons to share clips. Used for weapons that have a selective fire option, and would therefore need to use the same type of clip.")
|
|
width(500)
|
|
}
|
|
]
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(maxAmmo, 10, 20)
|
|
[
|
|
exec
|
|
{
|
|
label("Max Ammo")
|
|
tooltip("Max ammo the player can collect for this weapon. No effect on AI.")
|
|
}
|
|
]
|
|
|
|
spinedit(startAmmo, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
label("Start Ammo")
|
|
tooltip("How much ammo the player gets when starting with this weapon. One clip/magazine from this amount will be already in the weapon. No effect on AI.")
|
|
}
|
|
]
|
|
|
|
spinedit(clipSize, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
label("Clip Size")
|
|
tooltip("Specifies how many bullets per clip/magazine.")
|
|
}
|
|
]
|
|
}
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Ammunition")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Location Damage
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
hcontainer
|
|
{
|
|
floatedit(locNone, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("None")
|
|
tooltip("Unrelated to weapon. Used for damage that's not location based, such as grenades or falling. Included here for completeness.")
|
|
}
|
|
]
|
|
|
|
floatedit(locHelmet, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Helmet")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locHead, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Head")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locNeck, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Neck")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locTorsoUpper, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Upper Torso")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locTorsoLower, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Lower Torso")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locLeftArmUpper, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Left Upper Arm")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locRightArmUpper, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Right Upper Arm")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locLeftArmLower, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Left Lower Arm")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locRightArmLower, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Right Lower Arm")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locLeftHand, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Left Hand")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locRightHand, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Right Hand")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locLeftLegUpper, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Left Upper Leg")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locRightLegUpper, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Right Upper Leg")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locLeftLegLower, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Left Lower Leg")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locRightLegLower, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Right Lower Leg")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(locLeftFoot, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Left Foot")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
|
|
floatedit(locRightFoot, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Right Foot")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
|
|
floatedit(locGun, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("Gun")
|
|
tooltip("Damage per-bullet multiplier.")
|
|
}
|
|
]
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Location Damage")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Overheating
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
hcontainer
|
|
{
|
|
checkbox(overheatWeapon)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheating Weapon")
|
|
tootip("This weapon can overheat")
|
|
width(300)
|
|
labelwidth(280)
|
|
righttext()
|
|
}
|
|
]
|
|
checkbox(coolWhileFiring)
|
|
[
|
|
exec
|
|
{
|
|
label("Cool While Firing")
|
|
tootip("This weapon's heat decreases, even when it is being fired")
|
|
width(300)
|
|
labelwidth(280)
|
|
righttext()
|
|
}
|
|
]
|
|
}
|
|
|
|
floatedit(overheatRate, 1.0, 10.0)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheating Rate")
|
|
tooltip("Percent of heat added per shot for this weapon")
|
|
}
|
|
]
|
|
|
|
floatedit(cooldownRate, 1.0, 10.0)
|
|
[
|
|
exec
|
|
{
|
|
label("Cooldown Rate")
|
|
tooltip("Percent of heat that is bled off per second for this weapon")
|
|
}
|
|
]
|
|
|
|
floatedit(overheatEndVal, 1.0, 10.0)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheating Ends At")
|
|
tooltip("Percent of heat at which, if this weapon is overheating, it is able to fire again")
|
|
}
|
|
]
|
|
|
|
edit(overheatSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheat SFX 1-P")
|
|
tooltip("Sound effect that plays when the gun overheats (1st-person)")
|
|
}
|
|
]
|
|
|
|
edit(overheatSound)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheat SFX 3-P")
|
|
tooltip("Sound effect that plays when the gun overheats (3rd-person)")
|
|
}
|
|
]
|
|
|
|
edit(viewLastShotEjectEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheat Fx 1st")
|
|
tooltip("Particle effect that plays when the gun overheats (1st-person)")
|
|
}
|
|
]
|
|
|
|
edit(worldLastShotEjectEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("Overheat Fx 3rd")
|
|
tooltip("Particle effect that plays when the gun overheats (3rd-person)")
|
|
}
|
|
]
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Overheating")
|
|
}
|
|
]
|
|
|
|
spinedit(damage, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("The maximum amount of per-bullet damage done to anything other than the player at maxDamageRange.")
|
|
}
|
|
]
|
|
spinedit(playerDamage, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("The maximum amount of per-bullet damage done only to the player at maxDamageRange.")
|
|
}
|
|
]
|
|
spinedit(minDamage, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("The minimum amount of per-bullet damage done to anything other than the player at minDamageRange.")
|
|
}
|
|
]
|
|
spinedit(minPlayerDamage, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("The minimum amount of per-bullet damage done only to the player at minDamageRange.")
|
|
}
|
|
]
|
|
|
|
floatedit(maxDamageRange, 120, 8000)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("Distance specified in world units. 1 world unit = 1 inch.")
|
|
}
|
|
]
|
|
floatedit(minDamageRange, 120, 8000)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("Distance specified in world units. 1 world unit = 1 inch.")
|
|
}
|
|
]
|
|
hcontainer
|
|
{
|
|
floatedit(enemyCrosshairRange, 1, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Enemy Crosshair Range")
|
|
tooltip("The range in at which friendly names appear and friendly or enemy changes your crosshair color.")
|
|
width(280)
|
|
labelwidth(180)
|
|
}
|
|
]
|
|
checkbox(crosshairColorChange)
|
|
[
|
|
exec
|
|
{
|
|
label("Crosshair Color Change")
|
|
tooltip("Change crosshair color if pointing at friendly or enemy")
|
|
width(200)
|
|
labelwidth(200)
|
|
righttext()
|
|
}
|
|
]
|
|
}
|
|
|
|
spinedit(explosionRadius, 10, 50)
|
|
|
|
spinedit(explosionInnerDamage, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
labelwidth(160)
|
|
}
|
|
]
|
|
|
|
spinedit(explosionOuterDamage, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
width(300)
|
|
labelwidth(160)
|
|
}
|
|
]
|
|
|
|
spinedit(leftArc, 1, 10)
|
|
spinedit(rightArc, 1, 10)
|
|
spinedit(topArc, 1, 10)
|
|
spinedit(bottomArc, 1, 10)
|
|
|
|
floatedit(accuracy, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
tooltip("The probability between 0 and 1 that for any bullet the AI will aim at the player")
|
|
}
|
|
]
|
|
floatedit(aiSpread, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("ai spread")
|
|
width(270)
|
|
tooltip("The bullet spread in degrees when the gun is used by AI")
|
|
}
|
|
]
|
|
floatedit(playerSpread, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("player spread")
|
|
width(270)
|
|
tooltip("The bullet spread in degrees when the gun is used by the player")
|
|
}
|
|
]
|
|
floatedit(aimPadding, 0.1, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("aim padding")
|
|
width(270)
|
|
tooltip("How crooked it will allow the bullet to leave the gun in order to hit its target")
|
|
}
|
|
]
|
|
floatedit(fireTime, 0.05, 0.2)
|
|
|
|
spinedit(animHorRotateInc, 1, 10)
|
|
|
|
spinedit(minHorTurnSpeed, 1, 10)
|
|
spinedit(minVertTurnSpeed, 1, 10)
|
|
spinedit(maxHorTurnSpeed, 1, 10)
|
|
spinedit(maxVertTurnSpeed, 1, 10)
|
|
|
|
floatedit(pitchConvergenceTime, 0.1, 1)
|
|
floatedit(yawConvergenceTime, 0.1, 1)
|
|
floatedit(suppressionTime, 0.1, 1)
|
|
floatedit(maxRange, 1, 10)
|
|
floatedit(horizViewJitter, 0.1, 1)
|
|
floatedit(vertViewJitter, 0.1, 1)
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(proneOfsF, 0.1, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("Offset Forward")
|
|
tooltip("The view will slide forward by this amount. (-ive for backward)")
|
|
}
|
|
]
|
|
|
|
floatedit(proneOfsR, 0.1, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("Offset Right")
|
|
tooltip("The view will slide sideways by this amount. (-ive for backward)")
|
|
}
|
|
]
|
|
|
|
floatedit(proneOfsU, 0.1, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("Offset Up")
|
|
tooltip("The view will slide upwards by this amount. (-ive for backward)")
|
|
}
|
|
]
|
|
}
|
|
hcontainer
|
|
{
|
|
floatedit(duckedOfsF, 0.1, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("ADS Offset Forward")
|
|
tooltip("The view will slide forward by this amount. (-ive for backward)")
|
|
}
|
|
]
|
|
|
|
floatedit(duckedOfsR, 0.1, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("ADS Offset Right")
|
|
tooltip("The view will slide sideways by this amount. (-ive for backward)")
|
|
}
|
|
]
|
|
|
|
floatedit(duckedOfsU, 0.1, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("ADS Offset Up")
|
|
tooltip("The view will slide upwards by this amount. (-ive for backward)")
|
|
}
|
|
]
|
|
}
|
|
|
|
edit(script)
|
|
|
|
checkbox(rifleBullet)
|
|
checkbox(armorPiercing)
|
|
checkbox(projImpactExplode)
|
|
|
|
edit(fireSound)
|
|
edit(fireSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("fire (Player)")
|
|
}
|
|
]
|
|
edit(loopFireSound)
|
|
edit(loopFireSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("loopFire (Player)")
|
|
}
|
|
]
|
|
edit(stopFireSound)
|
|
edit(stopFireSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("stopFire (Player)")
|
|
}
|
|
]
|
|
edit(reloadStartSound)
|
|
edit(reloadStartSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("reloadStartSnd (Player)")
|
|
}
|
|
]
|
|
floatedit(reloadTime, 0.05, 0.2)
|
|
[
|
|
exec
|
|
{
|
|
label("RldStrtSFX Len")
|
|
tooltip("Allows the system to start the reload start SFX at the correct time")
|
|
}
|
|
]
|
|
edit(reloadEndSound)
|
|
edit(reloadEndSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("reloadEndSnd (Player)")
|
|
}
|
|
]
|
|
edit(rotateLoopSoundPlayer)
|
|
[
|
|
exec
|
|
{
|
|
label("Spin Snd 1st-P")
|
|
}
|
|
]
|
|
edit(rotateLoopSound)
|
|
[
|
|
exec
|
|
{
|
|
label("Spin Snd 3rd-P")
|
|
}
|
|
]
|
|
|
|
fileedit(viewFlashEffect)
|
|
[
|
|
exec
|
|
{
|
|
reldir("share/raw/")
|
|
}
|
|
]
|
|
fileedit(worldFlashEffect)
|
|
[
|
|
exec
|
|
{
|
|
reldir("share/raw/")
|
|
}
|
|
]
|
|
fileedit(viewShellEjectEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("View Shell Eject")
|
|
reldir("share/raw/")
|
|
width(500)
|
|
}
|
|
]
|
|
|
|
fileedit(worldShellEjectEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("World Shell Eject")
|
|
reldir("share/raw/")
|
|
width(500)
|
|
}
|
|
]
|
|
fileedit(reticleCenter)
|
|
[
|
|
exec
|
|
{
|
|
reldir("pc/main/")
|
|
}
|
|
]
|
|
spinedit(reticleCenterSize, 1, 2)
|
|
|
|
fileedit(idleAnim)
|
|
[
|
|
exec
|
|
{
|
|
reldir("share/main/xanim/")
|
|
width(500)
|
|
}
|
|
]
|
|
fileedit(fireAnim)
|
|
[
|
|
exec
|
|
{
|
|
reldir("share/main/xanim/")
|
|
width(500)
|
|
}
|
|
]
|
|
floatedit(playerPositionDist, 1, 10)
|
|
|
|
////////////////////////////////////////
|
|
// UI
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
hcontainer
|
|
{
|
|
fileedit(hudIcon)
|
|
[
|
|
exec
|
|
{
|
|
label("Hud Icon")
|
|
reldir("pc/main/")
|
|
width(450)
|
|
labelwidth(130)
|
|
}
|
|
]
|
|
scrollbox(hudIconRatio)
|
|
[
|
|
exec
|
|
{
|
|
label(" Aspect:")
|
|
width(110)
|
|
labelwidth(60)
|
|
}
|
|
]
|
|
}
|
|
hcontainer
|
|
{
|
|
fileedit(killIcon)
|
|
[
|
|
exec
|
|
{
|
|
label("Kill Icon")
|
|
reldir("pc/main/")
|
|
width(450)
|
|
labelwidth(130)
|
|
}
|
|
]
|
|
scrollbox(killIconRatio)
|
|
[
|
|
exec
|
|
{
|
|
label(" Aspect:")
|
|
width(110)
|
|
labelwidth(60)
|
|
}
|
|
]
|
|
checkbox(flipKillIcon)
|
|
[
|
|
exec
|
|
{
|
|
label(" Flip:")
|
|
tooltip("Used for weapons that need to have their kill icon horizontally flipped before displaying. (For MP obituaries).")
|
|
lefttext()
|
|
width(65)
|
|
labelwidth(40)
|
|
}
|
|
]
|
|
}
|
|
edit(useHintString)
|
|
edit(dropHintString)
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("User Interface")
|
|
}
|
|
]
|
|
|
|
scrollbox(fireRumble)
|
|
[
|
|
exec
|
|
{
|
|
width(500)
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// ADS Overlay Settings
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
edit(adsOverlayShader)
|
|
[
|
|
exec
|
|
{
|
|
label("Shader")
|
|
tooltip("Overlay for sniper rifles in ADS. Uses a quarter circle image to construct a full scope view.")
|
|
width(500)
|
|
}
|
|
]
|
|
|
|
scrollbox(adsOverlayInterface)
|
|
[
|
|
exec
|
|
{
|
|
label("Interface")
|
|
tooltip("Interactive Interface for Overlay")
|
|
}
|
|
]
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(adsOverlayWidth, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
label("Width")
|
|
}
|
|
]
|
|
|
|
spinedit(adsOverlayHeight, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
label("Height")
|
|
}
|
|
]
|
|
}
|
|
hcontainer
|
|
{
|
|
checkbox(aimDownSight)
|
|
[
|
|
exec
|
|
{
|
|
label("ADS")
|
|
tooltip("Must be turned on for proper viewmodel appearance of a weapon that can be Aimed Down the Sight (ADS).")
|
|
righttext()
|
|
}
|
|
]
|
|
floatedit(adsZoomFov, 1, 5)
|
|
[
|
|
exec
|
|
{
|
|
label("Zoom FOV")
|
|
tooltip("Field of view when in ADS.")
|
|
}
|
|
]
|
|
}
|
|
hcontainer
|
|
{
|
|
floatedit(adsTransInTime, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Trans In Time")
|
|
tooltip("Time it will take to switch from hipfire to ADS.")
|
|
}
|
|
]
|
|
|
|
floatedit(adsTransOutTime, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Trans Out Time")
|
|
tooltip("Time it will take to switch from ADS to hipfire.")
|
|
}
|
|
]
|
|
}
|
|
hcontainer
|
|
{
|
|
floatedit(adsZoomInFrac, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Zoom In Frac")
|
|
tooltip("Fraction of the hipfire-to-ADS transition time over which the FOV zoom-in effect happens.")
|
|
}
|
|
]
|
|
|
|
floatedit(adsZoomOutFrac, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Zoom Out Frac")
|
|
tooltip("Fraction of the ADS-to-hipfire transition time over which the FOV zoom-out effect happens.")
|
|
}
|
|
]
|
|
}
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("ADS Settings")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Sway settings
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
hcontainer
|
|
{
|
|
floatedit(swayMaxAngle, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Max Angle")
|
|
tooltip("Max angle change that will be applied to the hipfire viewmodel sway.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(swayLerpSpeed, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Lerp Speed")
|
|
tooltip("Speed at which the sway will lerp in hipfire.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(swayPitchScale, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Pitch Scale")
|
|
tooltip("Amount of pitch change in the viewmodel to apply to the sway pitch in hipfire.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(swayYawScale, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Yaw Scale")
|
|
tooltip("Amount of yaw change in the viewmodel to apply to the sway yaw in hipfire.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(swayHorizScale, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Horiz Scale")
|
|
tooltip("Amount of yaw change in the viewmodel to apply to the sway horizontal offset in hipfire.")
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
floatedit(swayVertScale, 0.05, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Vert Scale")
|
|
tooltip("Amount of pitch change in the view model to apply to the sway vertical offset in hipfire.")
|
|
}
|
|
]
|
|
}
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Sway Settings")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Flamethrower Details
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
edit(flameTableFirstPerson)
|
|
[
|
|
exec
|
|
{
|
|
label("1st Person Flame Table")
|
|
width(500)
|
|
}
|
|
]
|
|
edit(flameTableThirdPerson)
|
|
[
|
|
exec
|
|
{
|
|
label("3rd Person Flame Table")
|
|
width(500)
|
|
}
|
|
]
|
|
spinedit(rechamberBoltTime, 1, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("MuzzleEffect Time")
|
|
tooltip("Time to wait in-between spawning a new MuzzleEffect")
|
|
}
|
|
]
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Flamethrower")
|
|
}
|
|
]
|
|
|
|
////////////////////////////////////////
|
|
// Projectile
|
|
////////////////////////////////////////
|
|
vcontainer
|
|
{
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(projectileSpeed, 10, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Projectile Speed")
|
|
tooltip("The speed the projectile travels (inches/sec)")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
|
|
spinedit(projectileSpeedUp, 10, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Extra Verticle Speed")
|
|
tooltip("Vertical speed added to grenades")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(projectileActivateDist, 10, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Activate Distance")
|
|
tooltip("Distance the projectile must travel before it will explode.")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
|
|
floatedit( projectileLifetime, 0.1, 1 )
|
|
[
|
|
exec
|
|
{
|
|
label("Lifetime")
|
|
tooltip("The time (in seconds) after which the projectile will explode in the air, if it hasn't hit anything yet")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
}
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(destabilizeDistance, 10, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Destabilize Distance")
|
|
tooltip("The distance the projectile goes before becoming unstable")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
|
|
floatedit(destabilizationRateTime, 0.01, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Destabilize Rate (time)")
|
|
tooltip("The time between 'instability' course changes")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
}
|
|
hcontainer
|
|
{
|
|
floatedit(destabilizationCurvatureMax, 0.01, 1)
|
|
[
|
|
exec
|
|
{
|
|
label("Destabilize Angle Max")
|
|
tooltip("The maximum curvature in degrees per second")
|
|
width(262)
|
|
labelwidth(187)
|
|
}
|
|
]
|
|
}
|
|
fileedit(projectileModel)
|
|
[
|
|
exec
|
|
{
|
|
label("Projectile Model")
|
|
tooltip("Define the model to be used for the projectile")
|
|
reldir("pc/main/xmodel/")
|
|
}
|
|
]
|
|
hcontainer
|
|
{
|
|
scrollbox(projExplosionType)
|
|
[
|
|
exec
|
|
{
|
|
label("Explosion Type")
|
|
tooltip("Defines the type of effect that will be played. Effects are defined in fx/iw_impacts.csv")
|
|
reldir("share/raw/")
|
|
}
|
|
]
|
|
checkbox(projExplosionEffectForceNormalUp)
|
|
[
|
|
exec
|
|
{
|
|
label("Force straight-up normal vector")
|
|
labelwidth(350)
|
|
width(400)
|
|
righttext()
|
|
}
|
|
]
|
|
}
|
|
fileedit(projExplosionEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("Explosion Effect")
|
|
tooltip("Defines the effect that will be played when the projectile explodes. It will also play the effects that are defined in fx/iw_impacts.csv")
|
|
reldir("share/raw/")
|
|
}
|
|
]
|
|
edit(projExplosionSound)
|
|
[
|
|
exec
|
|
{
|
|
label("Explosion Sound")
|
|
tooltip("The sound the projectile will play when it impacts")
|
|
}
|
|
]
|
|
fileedit(projDudEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("Dud Effect")
|
|
tooltip("The effect that will play if the projectile collides with an object before the Activate Distance is reached")
|
|
reldir("share/raw/")
|
|
}
|
|
]
|
|
edit(projDudSound)
|
|
[
|
|
exec
|
|
{
|
|
label("Dud Sound")
|
|
tooltip("The sound the projectile will play when it impacts before the Activate Distance is reached")
|
|
}
|
|
]
|
|
edit(projectileSound)
|
|
[
|
|
exec
|
|
{
|
|
label("Projectile_sound")
|
|
width(500)
|
|
}
|
|
]
|
|
edit(bounceSound)
|
|
[
|
|
exec
|
|
{
|
|
label("Dud Bounce Sound Base")
|
|
tooltip("Base alias for the bounce sound. For instance, if the value is \"grenade_bounce\", sounds like \"grenade_bounce_concrete\" will be looked for. \"grenade_bounce_default\" will be used for any materials that aren't specified.")
|
|
width(500)
|
|
}
|
|
]
|
|
fileedit(projTrailEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("Trail Effect")
|
|
tooltip("This effect is attached to and trailed behind the projectile model.")
|
|
reldir("share/raw/")
|
|
width(400)
|
|
}
|
|
]
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(projIgnitionDelay, 1, 10)
|
|
[
|
|
exec
|
|
{
|
|
label("Ignition Delay")
|
|
tooltip("How long after launch to wait for rocket to ignite.")
|
|
width(262)
|
|
labelwidth(128)
|
|
}
|
|
]
|
|
}
|
|
|
|
fileedit(projIgnitionEffect)
|
|
[
|
|
exec
|
|
{
|
|
label("Ignition Effect")
|
|
tooltip("This effect is played when a projectile's rocket first ignites.")
|
|
reldir("share/raw/")
|
|
width(400)
|
|
}
|
|
]
|
|
|
|
hcontainer
|
|
{
|
|
spinedit(projectileDLight, 10, 100)
|
|
[
|
|
exec
|
|
{
|
|
label("Dynamic Light Radius")
|
|
tooltip("Set the radius (in inches) of the light to follow the projectile.")
|
|
reldir("share/raw/")
|
|
width(250)
|
|
labelwidth(150)
|
|
}
|
|
]
|
|
floatedit(projectileRed, 0.1, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Red")
|
|
tooltip("Sets the red value of the dynamic light (0-255).")
|
|
reldir("share/raw/")
|
|
width(100)
|
|
labelwidth(50)
|
|
}
|
|
]
|
|
floatedit(projectileGreen, 0.1, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Green")
|
|
tooltip("Sets the Green value of the dynamic light (0-255).")
|
|
reldir("share/raw/")
|
|
width(100)
|
|
labelwidth(50)
|
|
}
|
|
]
|
|
floatedit(projectileBlue, 0.1, 0.1)
|
|
[
|
|
exec
|
|
{
|
|
label("Blue")
|
|
tooltip("Sets the Blue value of the dynamic light (0-255).")
|
|
reldir("share/raw/")
|
|
width(100)
|
|
labelwidth(50)
|
|
}
|
|
]
|
|
}
|
|
}
|
|
[
|
|
exec
|
|
{
|
|
groupBox("Projectile")
|
|
}
|
|
]
|
|
|
|
}
|
|
|