Skip to Content
FeaturesFire Modes

Fire Modes

Fire Modes is a feature that goes inside the features code block.

It would look like this:

"features": [ { "type": "FireMode", "fireModes": [ { } ] } ]

What does it do?

It allows you to create more custom behaviors for your weapon. It’s mainly useful for underbarrel grenade launchers, alternate firing modes, etc..

You can actually have as many firemodes as you want for a gun. Like this:

"features": [ { "type": "FireMode", "fireModes": [ { Example code }, { Example code }, { Example code } ] } ]

Inside the bracket blocks, you need to add things like the name of the firemode, the ammo, the rpm, etc..

Here’s what a complete firemode example looks like:

{ "type": "FireMode", "fireModes": [ { "name": "destiny_sr_auto_fast", "displayName": "label.pointblank.fireMode.destiny_sr_auto_fast", "type": "AUTOMATIC", "rpm": 600, "damage": 4 }, { "name": "destiny_sr_auto_slow", "displayName": "label.pointblank.fireMode.destiny_sr_auto_slow", "type": "AUTOMATIC", "rpm": 360, "damage": 7, "animationName": "animation.model.fire3" } ] }

In this example, there are two firemodes: Auto Fast and Auto Slow. They both shoot at type AUTOMATIC and have different other stats.

Auto Fast fires at 600 RPM and does 4 damage per shot.

Auto Slow fires at 360 RPM but does 7 damage per shot, and uses a different firing animation.

Note that damage is required to be specified if you want something specific. If you leave it missing, the gun, when in that firemode, will fire at a default value of 5 damage.

Let’s look at a more complex example:

{ "type": "FireMode", "fireModes": [ { "name": "primary", "displayName": "label.pointblank.fireMode.primary", "type": "SINGLE", "rpm": 80, "pelletCount": 30, "pelletSpread": 0.1, "damage": 1.7, "animationName": "animation.model.fire", "shakeRecoilAmplitude": 0.65, "shakeRecoilSpeed": 3.5, "shakeRecoilDuration": 350, "enableFireModeAnimations": [ { "name": "animation.model.switch", "duration": 470 } ] }, { "name": "secondary", "displayName": "label.pointblank.fireMode.secondary", "type": "SINGLE", "rpm": 45, "pelletCount": 30, "pelletSpread": 0.05, "damage": 3, "animationName": "animation.model.firealt", "shakeRecoilAmplitude": 1, "shakeRecoilSpeed": 3.5, "shakeRecoilDuration": 350, "enableFireModeAnimations": [ { "name": "animation.model.switch", "duration": 470 } ] } ] }

For these two firemodes, there’re a lot more settings.

The first firemode here is called Primary, shooting SINGLE at 80 RPM, with pellet count of 30 and spread of 0.1, damage 1.7 (1.7 damage per pellet), with a custom firing animation, shake settings, and lastly a firemode switch animation.

The second firemode here has very similar settings, but with different values.

For another complex example:

{ "type": "FireMode", "fireModes": [ { "name": "automatic", "displayName": "label.pointblank.fireMode.automatic", "type": "AUTOMATIC", "rpm": 300, "damage": 7, "animationName": "animation.model.fire", "shakeRecoilAmplitude": 0.4, "shakeRecoilSpeed": 2.0, "shakeRecoilDuration": 350 }, { "name": "charge", "displayName": "label.pointblank.fireMode.charge", "type": "SINGLE", "rpm": 80, "damage": 23, "animationName": "animation.model.firealt", "shakeRecoilAmplitude": 2.0, "shakeRecoilSpeed": 2.0, "shakeRecoilDuration": 350, "prepareFireAnimations": [ { "name": "animation.model.preparefire", "duration": 800 } ], "effects": [ { "phase": "preparing", "name": "hl_taucharge" } ] }, { "name": "chargemax", "displayName": "label.pointblank.fireMode.chargemax", "type": "SINGLE", "rpm": 75, "damage": 60, "animationName": "animation.model.firealt2", "shakeRecoilAmplitude": 2.0, "shakeRecoilSpeed": 2.0, "shakeRecoilDuration": 350, "prepareFireAnimations": [ { "name": "animation.model.preparefire2", "duration": 2530 } ] } ] }

Here, we see a lot of the same stuff, with two new things: preparefire animation and an effects segment.

For one last example, and the thing that might interest most people—it features an underbarrel grenade launcher:

{ "type": "FireMode", "fireModes": [ { "name": "automatic", "displayName": "label.pointblank.fireMode.automatic", "type": "AUTOMATIC", "rpm": 800, "damage": 3.5, "animationName": "animation.model.fire", "shakeRecoilAmplitude": 0.35, "shakeRecoilSpeed": 2.0, "shakeRecoilDuration": 350, "enableFireModeAnimations": [ { "name": "animation.model.switch", "duration": 470 } ] }, { "name": "single", "displayName": "label.pointblank.fireMode.single", "type": "SINGLE", "rpm": 800, "damage": 3.5, "animationName": "animation.model.fire", "shakeRecoilAmplitude": 0.35, "shakeRecoilSpeed": 2.0, "shakeRecoilDuration": 350, "enableFireModeAnimations": [ { "name": "animation.model.switch", "duration": 470 } ] }, { "name": "grenade", "displayName": "label.pointblank.fireMode.grenade", "ammo": "grenade40mm", "maxAmmoCapacity": 1, "type": "SINGLE", "rpm": 140, "animationName": "animation.model.firegrenade", "shakeRecoilAmplitude": 2.0, "shakeRecoilSpeed": 2.0, "shakeRecoilDuration": 350, "enableFireModeAnimations": [ { "name": "animation.model.switchgrenade", "duration": 470 } ] } ] }

For the Grenade firemode, a custom ammo and maxAmmoCapacity is being used. Essentially, this is a second ammo pool for the gun, the 40mm grenade launcher. When an ammo isn’t specified, the gun will use whatever is defined elsewhere in the gun json file. In this case, the first two firemodes here aren’t written, so it will use the ammo specified in:

"compatibleAmmo": [ "ammocreative", "ammo46" ],

When it comes to alternate shotgun firemodes, all you need is pellet counts and spread, as shown in previous examples. If you want an explosive, simply specify the explosive ammo type.

Last updated on