#name "vehicleweapon" #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 18 string "WEAPONFILE" configstringFileType enum { "non-player", "mg", "rocketlauncher" } weaponClass enum { "1: Single-Player", "2: Multi-Player" } targetFolder enum { "bullet", "projectile", "bomb", "gas" } weaponType enum { "none", "small", "medium", "large" } penetrateType enum { "none", "bullet_small", "bullet_large", "bullet_ap", "shotgun", "grenade_bounce", "grenade_explode", "rocket_explode", "projectile_dud", "mortar_shell", "tank_shell" } impactType enum { "primary" } inventoryType string flameTableFirstPerson string flameTableThirdPerson string worldFlashEffect string worldShellEjectEffect string fireSound string fireSoundPlayer keyenum("rumble.gdf") fireRumble int 100 1 1000 rechamberBoltTime int 30 0 3000 damage int 30 0 3000 minDamage float 15000 1 15000 maxDamageRange float 16000 1 16000 minDamageRange float 750 1 10000 damageDuration float 100 1 10000 damageInterval int 30 0 1000 playerDamage float 1600 0 8000 autoAimRange float 3200 0 8000 aimAssistRange float 3200 0 8000 aimAssistRangeAds float 10 0 180 aimPadding float 0 0 50 adsSpread float 15000 0 15000 enemyCrosshairRange float 1.0 0 10 locNone float 1.0 0 10 locHelmet float 1.0 0 10 locHead float 1.0 0 10 locNeck float 1.0 0 10 locTorsoUpper float 1.0 0 10 locTorsoLower float 1.0 0 10 locRightArmUpper float 1.0 0 10 locRightArmLower float 1.0 0 10 locRightHand float 1.0 0 10 locLeftArmUpper float 1.0 0 10 locLeftArmLower float 1.0 0 10 locLeftHand float 1.0 0 10 locRightLegUpper float 1.0 0 10 locRightLegLower float 1.0 0 10 locRightFoot float 1.0 0 10 locLeftLegUpper float 1.0 0 10 locLeftLegLower float 1.0 0 10 locLeftFoot float 1.0 0 10 locGun 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 float 0.1 0.0 10.0 fireTime // additional projectile weapon info int 300 0 10000 explosionRadius int 10 0 10000 explosionInnerDamage int 10 0 10000 explosionOuterDamage float 180 0 180 damageConeAngle int 600 0 10000 projectileSpeed int 0 0 10000 projectileSpeedUp int 0 0 10000 projectileActivateDist float 30 0 10000 projectileLifetime float 0 0 10000 timeToAccelerate float 0 0 10000 projectileCurvature string projectileModel enum { "grenade", "rocket", "molotov", "none" } projExplosionType string projExplosionEffect int 0 0 1 projExplosionEffectForceNormalUp string projExplosionSound string projDudEffect string projDudSound string projectileSound int 0 0 1 armorPiercing int 1 0 1 projImpactExplode // 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 float 0.0 0 10 destabilizationRateTime float 10 0.0 10000000 destabilizationCurvatureMax int 30000 0 32000 destabilizeDistance enum { "None", "Sidewinder", "Hellfire", "Javelin" } guidedMissileType float 3000 0 1000000 maxSteeringAccel int 360 1 720 maxHorTurnSpeed int 360 1 720 maxVertTurnSpeed float 0 0 5 horizViewJitter float 0 0 5 vertViewJitter string useHintString enum { "None", "Pip-On-A-Stick", "Bouncing diamond" } activeReticleType string reticleCenter int 32 1 480 reticleCenterSize float 0 0 100 adsDofStart float 0 0 100 adsDofEnd string killIcon enum { "4:1", "1:1", "2:1" } killIconRatio int 1 0 1 flipKillIcon 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 vcontainer { scrollbox(targetFolder) [ exec { width(300) labelwidth(160) } ] scrollbox(weaponType) [ exec { width(300) labelwidth(160) } ] scrollbox(weaponClass) [ exec { width(300) labelwidth(160) } ] //////////////////////////////////////// // 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)") } ] floatedit(aimPadding, 0.1, 0.2) [ exec { label("Aim Padding") tooltip("The direction of fire will turn away from the barrel direction towards the player's view by up to this amount (in degrees). Set to zero if you want the direction of fire to be exactly the direction of the barrel.") width(280) labelwidth(180) } ] floatedit(adsSpread, 0.1, 1) [ exec { label("Spread") tooltip("Size of bullet/projectile spread cone. Bullet/projectile will project randomly within the confines of the cone.") width(280) labelwidth(180) } ] floatedit(enemyCrosshairRange, 1, 100) [ exec { label("Enemy Crosshair Range") tooltip("The range in world units at which an enemy will change your crosshair color. (1 world unit = 1 inch)") width(280) labelwidth(180) } ] 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)") } ] } checkbox(armorPiercing) [ exec { width(300) labelwidth(160) } ] scrollbox(penetrateType) [ exec { label("Penetration") tooltip("Type of bullet penetration.") } ] scrollbox(impactType) [ exec { width(300) label("Impact type") tooltip("The impact type, used to play impact effects based on surfacetype") } ] fileedit(worldFlashEffect) [ exec { label("World Flash Effect") reldir("share/raw/") labelwidth(160) } ] fileedit(worldShellEjectEffect) [ exec { label("World Shell Eject") reldir("share/raw/") width(500) } ] edit(fireSound) [ exec { width(500) labelwidth(160) } ] edit(fireSoundPlayer) [ exec { tooltip("Fire sound used by player. If not defined, player will play normal 'Fire' that is used by the AI.") width(400) } ] scrollbox(fireRumble) [ exec { width(500) labelwidth(160) } ] spinedit(maxHorTurnSpeed, 1, 10) spinedit(maxVertTurnSpeed, 1, 10) floatedit(horizViewJitter, 0.1, 1) floatedit(vertViewJitter, 0.1, 1) //////////////////////////////////////// // Damage //////////////////////////////////////// vcontainer { hcontainer { spinedit(minDamage, 1, 10) [ exec { label("Min Dmg") tooltip("Damage per-bullet, applied beyond Min Dmg Range.") } ] floatedit(minDamageRange, 120, 8000) [ exec { label("Min Dmg Range") tooltip("Range in world units, beyond which the minimum damage is applied. (1 world unit = 1 inch)") } ] } hcontainer { spinedit(damage, 1, 10) [ exec { label("Max Dmg") tooltip("Damage per-bullet, applied up to Max Dmg Range. Damage falls off linearly from Max Dmg Range until reaching Min Dmg at Min Dmg Range.") } ] floatedit(maxDamageRange, 120, 8000) [ exec { label("Max Dmg Range") tooltip("Range in world units, up to which the maximum damage is applied. (1 world unit = 1 inch)") } ] } hcontainer { floatedit(damageDuration, 1, 10) [ exec { label("Damage Duration") tooltip("Duration to apply damage in ms for gas type weapons") } ] floatedit(damageInterval, 1, 10) [ exec { label("Damage Interval") tooltip("Frequency of damage over time in ms for gas type weapons") } ] } hcontainer { spinedit(playerDamage, 1, 10) [ exec { label("Damage to player") tooltip("Damage done to player when hit by an AI") } ] } } [ exec { groupBox("Damage") } ] /////////////////////////////////////////////////// // Flamethrower Variables /////////////////////////////////////////////////// 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") } ] //////////////////////////////////////// // 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") } ] //////////////////////////////////////// // Reticle Settings //////////////////////////////////////// vcontainer { fileedit(reticleCenter) [ exec { label("Center Reticle") tooltip("Center Reticle.") reldir("pc/main/") width(500) } ] spinedit(reticleCenterSize, 1, 2) [ exec { label("Center Size") tooltip("Center Size.") } ] scrollbox(activeReticleType) [ exec { label("Active reticle") width(300) tooltip("Optional code-driven reticle animations") } ] } [ exec { groupBox("Reticle Settings") } ] floatedit(fireTime, 0.05, 0.2) [ exec { width(300) labelwidth(160) } ] //////////////////////////////////////// // Projectile //////////////////////////////////////// vcontainer { checkbox(projImpactExplode) hcontainer { spinedit(explosionInnerDamage, 1, 10) spinedit(explosionOuterDamage, 1, 10) spinedit(explosionRadius, 10, 50) } hcontainer { spinedit(projectileSpeed, 10, 100) spinedit(projectileSpeedUp, 10, 100) spinedit(projectileActivateDist, 10, 100) } floatedit( projectileLifetime, 0.1, 1 ) [ exec { label("Lifetime") tooltip("The time (in seconds) after which the missile will explode in the air, if it hasn't hit anything yet") } ] hcontainer { floatedit(timeToAccelerate, 0.1, 1) [ exec { label("Time to accelerate") tooltip("Time for the projectile to accelerate from zero to full speed.") } ] floatedit(projectileCurvature, 0.1, 1) [ exec { label("Max flight curvature") tooltip("The largest trajectory curvature allowed. The curvature is chosen randomly in this range.") } ] } fileedit(projectileModel) [ exec { reldir("pc/main/xmodel/") } ] hcontainer { scrollbox(projExplosionType) checkbox(projExplosionEffectForceNormalUp) [ exec { label("Force straight-up normal vector") labelwidth(350) width(400) righttext() } ] } fileedit(projExplosionEffect) [ exec { reldir("share/raw/") width(400) } ] fileedit(projDudEffect) [ exec { reldir("share/raw/") width(400) } ] edit(projExplosionSound) edit(projDudSound) edit(projectileSound) [ exec { label("Projectile_sound") width(500) } ] fileedit(projTrailEffect) [ exec { reldir("share/raw/") width(400) } ] spinedit(projectileDLight, 10, 100) hcontainer { floatedit(projectileRed, 0.1, 0.1) floatedit(projectileGreen, 0.1, 0.1) floatedit(projectileBlue, 0.1, 0.1) } scrollbox(guidedMissileType) [ exec { label("Missile guidance") tooltip("Guided missile type") } ] floatedit(maxSteeringAccel, 1, 10 ) [ exec { visible( guidedMissileType != "None" ) label("Max steering accel") tooltip("The maximum acceleration with which the guided missile can steer (inches / sec^2).") } ] } [ exec { groupBox("Projectile") } ] 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 Curvature Max") tooltip("The maximum curvature in degrees per second") width(262) labelwidth(187) } ] } edit(useHintString) //////////////////////////////////////// // Depth of Field Settings //////////////////////////////////////// vcontainer { 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.") } ] } hcontainer { floatedit(adsDofStart, 0.1, 0.5) [ exec { label("ADS Start") } ] floatedit(adsDofEnd, 0.1, 0.5) [ exec { label("ADS End") } ] } } [ exec { groupBox("Depth of Field Settings") } ] vcontainer { hcontainer { fileedit(killIcon) [ exec { label("Kill Icon") reldir("pc/main/") width(500) labelwidth(180) } ] 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) } ] } } [ exec { groupBox("User Interface") } ] }