#name "spotterweapon" #dll "configstringconvert" #target_dir "weapons/sp/" // target location 1 (single-player) #target_dir "weapons/mp/" // target location 2 (multi-player) #file_ext "*" #version 1 // This tells the configstring converter what the file type identifier should be enum { "WEAPONFILE" } configstringFileType // This uses the config string convert's multi-target folder // mechanism to make the weapon either a single-player weaons // 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 string "spotter" weaponType string "spotter" weaponClass string displayName string AIOverlayDescription string modeName string gunModel string handModel string idleAnim string emptyIdleAnim string rechamberAnim string meleeAnim string reloadAnim string reloadEmptyAnim string reloadStartAnim string reloadEndAnim string raiseAnim string dropAnim string altRaiseAnim string altDropAnim string adsFireAnim string adsLastShotAnim string adsRechamberAnim string adsDeployedAnim string adsDeployAnim string adsBreakdownAnim enum { "binocular","primary", "none", "pistol", "grenade", "smokegrenade", "satchel" } weaponSlot enum { "artillery", "mortar", "tank", "none" } projExplosionType float 1 0 5 moveSpeedScale int 30 0 5000 damage int 25 0 1000 meleeDamage int 0 0 1 adsFire int 100 0 100 minDamagePercent float 0.1 0 10.0 fireDelay float 0.25 0.05 10.0 meleeDelay float 2.0 0.0 10.0 reloadTime float 2.0 0.0 10.0 reloadEmptyTime float 0 0.0 10.0 reloadAddTime float 0 0.0 10.0 reloadStartTime float 0 0.0 10.0 reloadStartAddTime float 0 0.0 10.0 reloadEndTime float 0.1 0.0 10.0 fireTime float 0.1 0.0 10.0 rechamberTime float 0 0.0 10.0 rechamberBoltTime float 0.7 0.0 10.0 meleeTime float 0.5 0.0 10.0 dropTime float 0.5 0.0 10.0 raiseTime float 0.5 0.0 10.0 altDropTime float 0.5 0.0 10.0 altRaiseTime float 0.3 0 10 adsTransInTime float 0.6 0 10 adsTransOutTime float 1 1 10 adsSensitivity float 65 10 160 adsZoomFov float 0.5 0 1 adsZoomInFrac float 0.1 0 1 adsZoomOutFrac string adsOverlayShader enum { "none", "crosshair", "FG42", "Springfield", "Gewehr43" } adsOverlayReticle int 240 1 1024 adsOverlayWidth int 240 1 1024 adsOverlayHeight float 1.0 0 10 adsBobFactor float 0 0 100 adsViewBobMult float 4 0 90 hipSpreadStandMin float 3 0 90 hipSpreadDuckedMin float 2 0 90 hipSpreadProneMin float 10 0 90 hipSpreadMax float 1.5 0 50 hipSpreadDecayRate float 0.25 0 1 hipSpreadFireAdd float 0 0 10 hipSpreadTurnAdd float 0 0 10 hipSpreadMoveAdd float 1.375 0 10 hipSpreadDuckedDecay float 1.6 0 10 hipSpreadProneDecay float 0 0 1 hipReticleSidePos float 0 0 10 adsSpread int 25 0 150 adsIdleAmount int 80 0 150 hipIdleAmount float 0.5 0 1 idleCrouchFactor float 0.15 0 1 idleProneFactor int 30 0 80 gunMaxPitch int 30 0 80 gunMaxYaw float 0 -30 30 adsAimPitch float 1 0 1 adsCrosshairInFrac float 0.2 0 1 adsCrosshairOutFrac float 0.6 0 5 adsReloadTransTime float 0.1 0 5 adsTransBlendTime 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 float 5 0 20 swayShellShockScale float 30 0 180 adsSwayMaxAngle float 6 1 50 adsSwayLerpSpeed float 0.1 -2 2 adsSwayPitchScale float 0.1 -2 2 adsSwayYawScale float 0.1 -2 2 adsSwayHorizScale float 0.1 -2 2 adsSwayVertScale // info for filling in the gitem_t for the weapon string radiantName string worldModel string pickupModel string hudIcon string modeIcon string ammoIcon string ammoName int 100 0 999 maxAmmo int 0 0 1000 startAmmo string clipName int 10 0 999 clipSize int 1 1 1 clipOnly int 1 0 1 doNotDrop int 0 0 999 dropAmmoMin int 0 0 999 dropAmmoMax // client-side info string viewFlashEffect string worldFlashEffect string pickupSound string ammoPickupSound string projectileSound string fireSound string lastShotSound string loopFireSound string stopFireSound string rechamberSound string reloadSound string reloadEmptySound string reloadStartSound string reloadEndSound string altSwitchSound string raiseSound string putawaySound string noteTrackSoundA string noteTrackSoundB string noteTrackSoundC string noteTrackSoundD string reticleCenter string reticleSide int 32 1 480 reticleCenterSize int 16 1 480 reticleSideSize int 0 0 480 reticleMinOfs // additional weapons info int 10 0 10000 projectileCount int 600 0 10000 projectileSpeed int 300 0 10000 projectileRadius int 500 0 10000 projectileDelay int 300 0 10000 projectileSpacingMin int 1000 0 10000 projectileSpacingMax int 300 0 10000 explosionRadius int 10 0 10000 explosionInnerDamage int 10 0 10000 explosionOuterDamage string projExplosionEffect string projExplosionSound string altWeapon int 1 0 1 twoHanded int 1 0 1 aimDownSight float 0 0 90 adsViewErrorMin float 0 0 90 adsViewErrorMax int 1 0 1 wideListIcon string killIcon int 1 0 1 wideKillIcon int 0 0 1 noPartialReload int 0 0 1 segmentedReload int 0 0 999 reloadAmmoAdd int 0 0 999 reloadStartAdd // AI ranges float 800 1 12000 aiEffectiveRange float 1600 1 16000 aiMissRange // settings for view model position movement float -14 -300 300 sprintMoveF float -10 -300 300 sprintMoveR float -14 -300 300 sprintMoveU float 0 -300 300 sprintRotP float 0 -300 300 sprintRotY float 0 -300 300 sprintRotR float 0 -300 300 standMoveF float 1 -300 300 standMoveR float -1.5 -300 300 standMoveU float 0 -300 300 standRotP float 0 -300 300 standRotY float 0 -300 300 standRotR float -2 -300 300 duckedOfsF float 2 -300 300 duckedOfsR float -0.2 -300 300 duckedOfsU float 0 -300 300 duckedMoveF float 1 -300 300 duckedMoveR float -1.5 -300 300 duckedMoveU float 0 -300 300 duckedRotP float 0 -300 300 duckedRotY float 0 -300 300 duckedRotR float -6 -300 300 proneOfsF float 3.5 -300 300 proneOfsR float 0.8 -300 300 proneOfsU float 0 -300 300 proneMoveF float 1 -300 300 proneMoveR float -1.5 -300 300 proneMoveU float 0 -300 300 proneRotP float 0 -300 300 proneRotY float 0 -300 300 proneRotR float 4 0 300 posMoveRate float 10 0 300 posProneMoveRate float 110 0 3000 sprintMoveMinSpeed float 110 0 3000 standMoveMinSpeed float 60 0 3000 duckedMoveMinSpeed float 0 0 3000 proneMoveMinSpeed float 5 0 300 posRotRate float 10 0 300 posProneRotRate float 110 0 1000 sprintRotMinSpeed float 110 0 1000 standRotMinSpeed float 60 0 1000 duckedRotMinSpeed float 0 0 1000 proneRotMinSpeed vcontainer { scrollbox(targetFolder) [ exec { width(300) } ] hcontainer { edit(displayName) edit(modeName) } hcontainer { edit(AIOverlayDescription) } hcontainer { floatedit(aiEffectiveRange, 1, 4000) floatedit(aiMissRange, 120, 8000) } hcontainer { floatedit(moveSpeedScale, 0.1, 1) } hcontainer { spinedit(damage, 1, 10) spinedit(meleeDamage, 1, 10) } hcontainer { scrollbox(weaponSlot) } checkbox(doNotDrop) checkbox(twoHanded) checkbox(aimDownSight) checkbox(adsFire) floatedit(adsViewErrorMin, 0.1, 1) floatedit(adsViewErrorMax, 0.1, 1) checkbox(wideListIcon) hcontainer { spinedit(explosionInnerDamage, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] spinedit(explosionOuterDamage, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] spinedit(explosionRadius, 10, 50) } spinedit(projectileSpeed, 10, 100) hcontainer { spinedit(projectileCount, 1, 10) spinedit(projectileRadius, 10, 50) } hcontainer { spinedit(projectileDelay, 10, 50) spinedit(projectileSpacingMin, 10, 50) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] spinedit(projectileSpacingMax, 10, 50) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { scrollbox(projExplosionType) fileedit(projExplosionEffect) [ exec { reldir("game/uo/") width(400) } ] } edit(projExplosionSound) fileedit(killIcon) [ exec { reldir("game/uo/") } ] checkbox(wideKillIcon) hcontainer { checkbox(noPartialReload) checkbox(segmentedReload) } hcontainer { spinedit(reloadAmmoAdd, 1, 10) spinedit(reloadStartAdd, 1, 10) } hcontainer { floatedit(reloadTime, 0.05, 0.2) floatedit(reloadEmptyTime, 0.05, 0.2) } hcontainer { floatedit(reloadAddTime, 0.05, 0.2) floatedit(reloadStartAddTime, 0.05, 0.2) } hcontainer { floatedit(reloadStartTime, 0.05, 0.2) floatedit(reloadEndTime, 0.05, 0.2) } hcontainer { floatedit(fireDelay, 0.05, 0.2) floatedit(meleeDelay, 0.05, 0.2) } hcontainer { floatedit(fireTime, 0.05, 0.2) floatedit(meleeTime, 0.05, 0.2) } hcontainer { floatedit(rechamberTime, 0.05, 0.2) floatedit(rechamberBoltTime, 0.05, 0.2) } hcontainer { floatedit(dropTime, 0.05, 0.2) floatedit(raiseTime, 0.05, 0.2) } hcontainer { floatedit(altDropTime, 0.05, 0.2) floatedit(altRaiseTime, 0.05, 0.2) } hcontainer { floatedit(idleCrouchFactor, 0.01, 0.1) floatedit(idleProneFactor, 0.01, 0.1) } hcontainer { spinedit(gunMaxPitch, 1, 10) spinedit(gunMaxYaw, 1, 10) } // seperator hcontainer { } hcontainer { spinedit(adsIdleAmount, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] spinedit(hipIdleAmount, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsSpread, 0.1, 1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsBobFactor, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsViewBobMult, 0.1, 1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsZoomFov, 1, 5) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsZoomInFrac, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsZoomOutFrac, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsAimPitch, 0.1, 1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsCrosshairInFrac, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsCrosshairOutFrac, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsReloadTransTime, 0.01, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsTransBlendTime, 0.01, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } edit(adsOverlayShader) [ exec { width(670) // optional custom width labelwidth(170) // optional custom width } ] scrollbox(adsOverlayReticle) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] hcontainer { spinedit(adsOverlayWidth, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] spinedit(adsOverlayHeight, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(adsTransInTime, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsTransOutTime, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(swayMaxAngle, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsSwayMaxAngle, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(swayLerpSpeed, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsSwayLerpSpeed, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(swayPitchScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsSwayPitchScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(swayYawScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsSwayYawScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(swayHorizScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsSwayHorizScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } hcontainer { floatedit(swayVertScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] floatedit(adsSwayVertScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } floatedit(swayShellShockScale, 0.05, 0.1) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] // seperator hcontainer { } edit(altWeapon) // seperator hcontainer { } // info for filling in the gitem_t for the weapon edit(radiantName) fileedit(hudIcon) [ exec { reldir("game/uo/") } ] fileedit(modeIcon) [ exec { reldir("game/uo/") } ] fileedit(ammoIcon) [ exec { reldir("game/uo/") } ] hcontainer { edit(ammoName) spinedit(maxAmmo, 10, 20) [ exec { width(190) // optional custom width labelwidth(100) // optional custom width } ] spinedit(startAmmo, 1, 10) [ exec { width(190) // optional custom width labelwidth(100) // optional custom width } ] } hcontainer { edit(clipName) spinedit(clipSize, 1, 10) [ exec { width(190) // optional custom width labelwidth(100) // optional custom width } ] } hcontainer { spinedit(dropAmmoMin, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] spinedit(dropAmmoMax, 1, 10) [ exec { width(270) // optional custom width labelwidth(170) // optional custom width } ] } fileedit(reticleCenter) [ exec { reldir("game/uo/") } ] fileedit(reticleSide) [ exec { reldir("game/uo/") } ] hcontainer { spinedit(reticleCenterSize, 1, 2) spinedit(reticleSideSize, 1, 2) spinedit(reticleMinOfs, 1, 2) } // seperator hcontainer { } fileedit(viewFlashEffect) [ exec { reldir("game/uo/") } ] fileedit(worldFlashEffect) [ exec { reldir("game/uo/") } ] edit(pickupSound) edit(ammoPickupSound) edit(projectileSound) edit(fireSound) edit(lastShotSound) edit(loopFireSound) edit(stopFireSound) edit(rechamberSound) edit(reloadSound) edit(reloadEmptySound) edit(reloadStartSound) edit(reloadEndSound) edit(altSwitchSound) edit(raiseSound) edit(putawaySound) edit(noteTrackSoundA) edit(noteTrackSoundB) edit(noteTrackSoundC) edit(noteTrackSoundD) // seperator hcontainer { } hcontainer { floatedit(sprintMoveF, 0.1, 1) floatedit(sprintMoveR, 0.1, 1) floatedit(sprintMoveU, 0.1, 1) } hcontainer { floatedit(sprintRotP, 0.1, 1) floatedit(sprintRotY, 0.1, 1) floatedit(sprintRotR, 0.1, 1) } hcontainer { floatedit(standMoveF, 0.1, 1) floatedit(standMoveR, 0.1, 1) floatedit(standMoveU, 0.1, 1) } hcontainer { floatedit(standRotP, 0.1, 1) floatedit(standRotY, 0.1, 1) floatedit(standRotR, 0.1, 1) } hcontainer { floatedit(duckedOfsF, 0.1, 1) floatedit(duckedOfsR, 0.1, 1) floatedit(duckedOfsU, 0.1, 1) } hcontainer { floatedit(duckedMoveF, 0.1, 1) floatedit(duckedMoveR, 0.1, 1) floatedit(duckedMoveU, 0.1, 1) } hcontainer { floatedit(duckedRotP, 0.1, 1) floatedit(duckedRotY, 0.1, 1) floatedit(duckedRotR, 0.1, 1) } hcontainer { floatedit(proneOfsF, 0.1, 1) floatedit(proneOfsR, 0.1, 1) floatedit(proneOfsU, 0.1, 1) } hcontainer { floatedit(proneMoveF, 0.1, 1) floatedit(proneMoveR, 0.1, 1) floatedit(proneMoveU, 0.1, 1) } hcontainer { floatedit(proneRotP, 0.1, 1) floatedit(proneRotY, 0.1, 1) floatedit(proneRotR, 0.1, 1) } hcontainer { floatedit(posMoveRate, 0.1, 1) floatedit(posProneMoveRate, 0.1, 1) } hcontainer { floatedit(sprintMoveMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] floatedit(standMoveMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] floatedit(duckedMoveMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] floatedit(proneMoveMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] } hcontainer { floatedit(posRotRate, 0.1, 1) floatedit(posProneRotRate, 0.1, 1) } hcontainer { floatedit(sprintRotMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] floatedit(standRotMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] floatedit(duckedRotMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] floatedit(proneRotMinSpeed, 1, 10) [ exec { width(210) labelwidth(150) } ] } // seperator hcontainer { } fileedit(worldModel) [ exec { reldir("game/uo/") } ] fileedit(pickupModel) [ exec { reldir("game/uo/") } ] fileedit(gunModel) [ exec { reldir("game/uo/xmodel/") width(500) } ] fileedit(handModel) [ exec { reldir("game/uo/xmodel/") width(500) } ] fileedit(idleAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(emptyIdleAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(rechamberAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(meleeAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(reloadAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(reloadEmptyAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(reloadStartAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(reloadEndAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(raiseAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(dropAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(altRaiseAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(altDropAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(adsFireAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(adsLastShotAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(adsRechamberAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(adsDeployedAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(adsDeployAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] fileedit(adsBreakdownAnim) [ exec { reldir("game/uo/xanim/") width(500) } ] }