WARFRAME Wiki
Advertisement
WARFRAME Wiki
Photo-4
“It's taking longer than I calculated.”
This page is actively being worked on and may not be completely correct. Please assist in making this page accurate. See WARFRAME Wiki:Research on ways to perform research on this game. Click here to add more info.
Duviri weapons in Update 33.0 (2023-04-26). Add support for new "IncarnonCharges" key to differentiate between ammo capacity in "normal" fire mode vs. Incarnon Mode. This is so readers don't confuse the stat being modified by Ammo Maximum bonuses. Update ExplosionDelay key to store a 2-tuple value (2-element table) for minimum delay and maximum delay.

Hey! You! Here to update something that's out of date? Follow these easy steps:

  1. Open the relevant Horizontal Partition and click "Edit Source" on the top right of the page.
  2. Use Ctrl +F  to find the data for the weapon.
  3. Find the number/string that's wrong.
  4. Change the number/string and save the page.

That's it! After you've done that, the data will proliferate out to all the relevant pages.

If you're adding new data instead of just changing existing data, try to use an example of how things are entered if you're not quite sure what to do.

(Oh, order doesn't matter, but spelling and capitalization do. For example, it doesn't matter if Disposition is first or last)

Thanks, you're awesome!

User:Falterfire

Last updated: Sat, 13 Jan 2024 01:58:17 +0000 (UTC) by User:Cephalon Scientia

Horizontal Partitions (and where to update data)

Attack Data Schema

	{
		AttackName = "Normal Attack",
		AmmoCost = 1,
		BurstCount = 1,
		Damage = { Impact = 1, Puncture = 1, Slash = 1 },
		CritChance = 0.1,
		CritMultiplier = 1,
		StatusChance = 0.1,
		FireRate = 1.0,
		Falloff = { StartRange = 400, EndRange = 600, Reduction = 0.2 },
		ShotType = "Hit-Scan",
		ShotSpeed = 1,
		Trigger = "Semi-Auto"
	},
Key/Column Name Arsenal EN L10n Public Export Equivalent Internal Equivalent Data Type Required? Explanation/Description Example(s)
AttackName Varies N/A N/A String Name of attack; defaults to "Normal Attack" "Normal Attack" or "AoE Explosion"
AmmoCost N/A N/A ammoRequirement Number (float) ✔️ Ammo consumed on a single attack input; defaults to nil 0.5 or 10
AmmoType N/A N/A ammoType String Type of ammo pickups that replenishes ammo reserves; "None" for battery weapons and "Energy" for those that use Warframe energy "Primary"
BurstCount N/A N/A NumShots Number (integer) For burst-fire weapons, the number of shots per burst; omit for attacks that shoot bursts that scale off magazine size (e.g Pandero Pandero) 4
BurstDelay N/A N/A BurstDelay Number (float) For burst-fire weapons, the time in seconds between shooting each individual shot in a burst. 0.061
BurstReloadDelay N/A N/A N/A Number (float) Only for burst-fire attacks that scale off magazine size (e.g Pandero Pandero), the time after a burst before an automatic reload commences. This value is derived from the inverse of internal fire rates of burst attacks (1 ÷ fireRate). 0.2
Damage Damage damagePerShot and totalDamage AttackData Table (map of floats) ✔️ Table of damage types that the weapon deals and their individual damage values. Possible keys: Impact, Puncture, Slash, Cold, Electricity, Heat, Toxin, Blast, Corrosive, Gas, Magnetic, Radiation, Viral, Void, and MinProgenitorBonus (random element for Kuva/Tenet weapons) { Impact = 100, Puncture = 25, Slash = 30 }
ChargeTime Charge Rate N/A ChargeTime Number (float) For charged attacks, the base charge time for a fully charged attack 0.5
CritChance Critical Chance criticalChance CriticalChance or criticalHitChance Number (float) ✔️ Attack's base critical chance as a decimal 0.25
CritMultiplier Critical Multiplier criticalMultiplier CriticalMultiplier or criticalHitDamageMultiplier Number (float) ✔️ Attack's base critical hit multiplier as a scalar 2.2
EffectDuration N/A N/A N/A Number (float) For special attacks, the time in seconds that a special effect lasts for (e.g. Pox Pox's toxin clouds or Zenistar Zenistar's disc) 5
ExplosionDelay Embed Delay N/A EmbedTime Number (float) For AoE attacks, the time in seconds between initial shot and explosion; the same as "Embed Delay" stat in-game 0.5
ExtraHeadshotDmg N/A N/A N/A Number (float) Additional bonus damage on headshots for weapons such as CernosPrime Cernos Prime 0.5
Falloff Falloff N/A damageFallOff and damageFallOffMinDamage or ExplosionFallOff and DamageRadius Table (map of floats) Attack's base Damage Falloff stats; includes starting distance in meters when falloff multiplier comes into play, ending distance in meters when falloff multipler is at max reduction, and the maximum damage reduction as a decimal { StartRange = 0, EndRange = 5, Reduction = 0.5 }
FireRate Fire Rate fireRate fireRate (stored as a whole number representing number shots per minute, have to divide by 60s to get arsenal Fire Rate) Number (float) ✔️ Attack's base Fire Rate or Attack Speed multiplier 6.5
ForcedProcs N/A N/A ForcedProcs Table (array of strings) Attack's forced procs, if any { "Impact", "Slash" }
IsSilent Noise noise IsSilenced or SilentProjectile Boolean Whether or not an attack has a silent Noise Level; defaults to false true
MaxSpread N/A N/A AIMED_ACCURACY.Spread.SHOOTING.range[1] Number (float) Attack's maximum spread range. Arsenal accuracy is calculated as the inverse of the average spread multiplied by 100. 16
MinSpread N/A N/A AIMED_ACCURACY.Spread.SHOOTING.range[0] Number (float) Attack's minimum spread range. Arsenal accuracy is calculated as the inverse of the average spread multiplied by 100. 6
Multishot Multishot multishot fireIterations Number (integer) Attack's base Multishot value; defaults to 1 10
PunchThrough Punch Through N/A PunctureDepth or tracePunctureDepth Number (float) Attack's base Punch Through value in meters; defaults to 0 1.5
Range Range N/A traceDistance or DamageRadius Number (float) For maximum range of a particular attack in meters. For AoE attacks, the base radius of area of effect in meters. 40
ShotType N/A N/A HitType String ✔️ Attack's shot type (e.g. "Hit-Scan", "Projectile", and "AoE" for area of effects) Projectile
ShotSpeed N/A N/A KinematicMaxSpeed or ForwardVel Number (integer) For projectile attacks, the attack's maximum projectile speed in meters per second (not initial or minimum speed) 50
StatusChance Status procChance ProcChance Number (float) ✔️ Attack's base status chance as a decimal 0.2
SyndicateEffect N/A N/A N/A String For Syndicate weapons, the Syndicate Radial Effect that it has "Entropy"
Trigger Trigger trigger FireModes String For weapons with multiple Trigger Types, attack's trigger type "Semi-Auto"

Gun Entry Schema

["Long Gun Weapon Name"] = {
	_IgnoreEntry = true,
	_TooltipAttackDisplay = 1,
	Accuracy = 100,
	AmmoMax = 540,
	AmmoPickup = 1,
	Attacks = {
		{
			AttackName = "Normal Attack",
			AmmoCost = 0.5,
			BurstCount = 1,
			Damage = { Impact = 1, Puncture = 1, Slash = 1 },
			CritChance = 0.1,
			CritMultiplier = 1,
			StatusChance = 0.1,
			FireRate = 1.0,
			Falloff = { StartRange = 400, EndRange = 600, Reduction = 0.2 },
			ShotType = "Hit-Scan",
			ShotSpeed = 100,
			Trigger = "Semi-Auto"
		}
	},
	Class = "Sniper Rifle",
	Conclave = false,
	Disposition = 0.5,
	ExilusPolarity = "V",
	Family = "",
	Image = "Weapon.png",
	Introduced = "",
    Link = "Page Name",
	Magazine = 1,
	Mastery = 1,
	MaxRank = 30,
	Name = "Weapon Name",
	Polarities = {},
	Reload = 1,
	ReloadStyle = "Regenerate",
	SellPrice = 7500,
    Slot = "Primary",
	SniperComboMin = 1,
	SniperComboReset = 1,
	Spool = 5,
	Trigger = "Semi-Auto",
	Traits = { "Grineer" },
	Users = { },
	Zoom = { "2.0x", "4.0x" }
},
Key/Column Name Arsenal EN L10n Public Export Equivalent Internal Equivalent Data Type Required? Explanation/Description Example(s)
Accuracy Accuracy accuracy N/A Number (float) ✔️ Gun's base Accuracy value 100
AmmoMax Ammo Maximum N/A AmmoCapacity Number (integer) ✔️ Gun's base maximum reserve ammo (this excludes magazine size) 210 or 0 (represents infinite ammo, for weapons that don't use ammo)
AmmoPickup Ammo Pickup N/A AmmoPickUpCount Number (integer) Amount of ammo recovered after walking over an ammo pickup 1
Attacks N/A N/A AttackData, ExplosiveAttack, RadialDamage, EmbedAttack Table ✔️ Contains attack data for the weapon See #Attack Data Schema
Class N/A productCategory IsAbilityWeapon for Exalted Weapons, otherwise no direct equivalent String ✔️ Weapon class for modding or a subclass of the weapon in its equip slot; in the case of Exalted Weapons, it is just "Exalted Weapon" "Sniper Rifle"
CodexSecret N/A codexSecret CodexSecret Boolean Whether or not the weapon has an entry in the Codex before the player acquires it; defaults to false false
CompatibilityTags N/A N/A CompatibilityTags Table (array of strings) Tags that denote item compatibility. In other words, items with these tags can/cannot have a particular mod installed with the same tag. { "POWER_WEAPON" }
Conclave N/A N/A AvailableOnPvp Boolean Whether or not the weapon can be used in Conclave false
DefaultUpgrades N/A N/A DefaultUpgrades[1] Table (array of strings) Additional upgrades that are innate to the weapon { "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" }
Disposition Riven Disposition omegaAttenuation OmegaAttenuation Number (float) ✔️ Riven Mod Disposition value 0.5
ExilusPolarity N/A N/A ArtifactSlots String Polarity on Exilus slot "Madurai"
Family N/A N/A N/A String Weapon family that it belongs to, corresponding to the Riven Mod compatibility "Latron"
IncarnonImage N/A N/A N/A String Image file name of the weapon in its Incarnon Form as uploaded to the wiki "Ack&BruntIncarnon.png"
Image N/A textureLocation Icon String ✔️ Image file name of the weapon as uploaded to the wiki "CrpBFG.png"
InternalName N/A uniqueName TypeName String ✔️ The full unique name of a weapon formatted as a file path "/Lotus/Weapons/MK1Series/MK1Paris"
Introduced N/A N/A N/A String ✔️ The game version in which the weapon was first introduced in the global build of WARFRAME "30.5" or "Specters of the Rail"
IsLichWeapon N/A N/A IsKuva Boolean Denotes whether or not a weapon is a Kuva or Tenet weapon true
Link N/A N/A N/A String ✔️ Page/article link to the weapon on the wiki "Artemis Bow (Weapon)"
Magazine Magazine magazineSize AmmoClipSize Number (integer) ✔️ Gun's base magazine size 45 or 0 (no magazine)
Mastery N/A masteryReq RequiredLevel Number (integer) ✔️ Mastery Rank requirement 5
MaxRank N/A N/A LevelCap Number (integer) Weapon's maximum rank 30
Name N/A name LocalizeTag String ✔️ Weapon's name "Primary Vermisplicer Chamber"
Polarities N/A N/A ArtifactSlots Table (array of strings) ✔️ Full names of the weapon's non-Universal polarities { "Naramon", "Madurai" }
Reload Reload reloadTime reloadTime or reloadEndTime, reloadLoopTime, reloadStartTime for by shell reloads Number (float) ✔️ Gun's base reload time in seconds 3.5
ReloadDelay N/A N/A HeavyBatteryRegenDelay Number (float) For rechargeable/battery weapons, the time in seconds after firing before magazine 'recharges' or is replenished. For Vectis Vectis and Exergis Exergis, the time in seconds after firing before reload animation starts. 0.5
ReloadDelayEmpty N/A N/A HeavyBatteryRegenDelayFromEmpty Number (float) For rechargeable/battery weapons, the time in seconds after fully depleting magazine before magazine 'recharges' or is replenished 1
ReloadRate N/A N/A HeavyBatteryRegenRate Number (float) For rechargeable/battery weapons, the rate at which magazine 'recharges' or is replenished per second 40
ReloadStyle N/A N/A N/A String Gun's unique reload type for weapons like Cycron Cycron or Corinth Corinth "Regenerate" or "ByRound"
SellPrice N/A N/A SellingPrice Number (integer) For sellable weapons, the sell price in Credits when removed from the player's inventory 25000
Slot N/A slot InventorySlot String ✔️ The weapon slot that the weapon can be equipped on; in the case of Exalted Weapons, it is just their modding class "Primary"
SniperComboMin N/A N/A HitReqNextTierOperator Number (integer) For sniper rifles, the minimum number of hits to gain combo bonus 1
SniperComboReset N/A N/A TimeBetweenHits Number (integer) For sniper rifles, the number of seconds after last hit before combo number goes down 3
Spool N/A N/A ContinuousMaxShots Number (integer) For auto-spool weapons, number of shots until weapon reaches max fire rate 5
Tradable N/A N/A TradeCapability Number (integer, enum) Whether or not a weapon is tradable to other players.
  • 0 or nil = not tradable
  • 1 = weapon itself is tradable only if it is unranked with no Forma and Orokin Catalyst installed
  • 2 = tradable parts and/or blueprint(s) but weapon itself is not tradable
  • 3 = indirectly tradable through trading Kuva Liches/Sisters of Parvos (Lich System in general)
  • 4 = only fully built components are tradable, not blueprints
  • 5 = for Robotic weapons that are indirectly tradable if parent companion is tradable
2
Trigger Trigger trigger FireModes String ✔️ Gun's Trigger Type "Auto" or "Auto / Burst"
Traits N/A N/A N/A Table (array of strings) Gun's categorical traits { "Grineer", "Wraith" }
Users N/A N/A N/A Table (array of strings) Name of NPCs that use this weapon { "Stalker", "Shadow Stalker" }
Zoom N/A N/A ZoomLevels Table (array of strings) The levels of zoom that the gun offers { "2.0x", "4.5x" }

Melee Entry Schema

["Melee Weapon Name"] = {
	_IgnoreEntry = true,
	_TooltipAttackDisplay = 1,
	Attacks = {
		{
            AttackName = "Normal Attack",
			Damage = { Impact = 1, Puncture = 1, Slash = 1 },
			CritChance = 0.1,
			CritMultiplier = 2,
			StatusChance = 0.1,
			FireRate = 1
 		}
	},
	BlockAngle = 55,
	Class = "Two-Handed Nikana",
	ComboDur = 5,
	Conclave = false,
	Disposition = 0.5,
	Family = "Tatsu",
	FollowThrough = 0.7,
	HeavyAttack = 1284,
	HeavySlamAttack = 1070,
	HeavySlamRadius = 8,
	Image = "Tatsu.png",
	Introduced = "",
    Link = "Page Name",
	Mastery = 1,
	MaxRank = 30,
	MeleeRange = 3,
	Name = "MeleeName",
	Polarities = { "Madurai" },
	SellPrice = 7500,
	SlamAttack = 642,
	SlamElement = "Heat",
	SlamForcedProcs = { "Heat" },
	SlamRadius = 7,
	SlideAttack = 1,
 	Slot = "Melee",
	StancePolarity = "Madurai",
	SweepRadius = 0.25,
	Traits = { "Tenno" },
	WindUp = 0.7
},
Key/Column Name Arsenal EN L10n Public Export Equivalent Internal Equivalent Data Type Required? Explanation/Description Example(s)
Attacks N/A N/A AttackData, ExplosiveAttack, RadialDamage, EmbedAttack Table ✔️ Contains attack data for the weapon See #Attack Data Schema
BlockAngle Blocking Angle blockingAngle ParryAngle Number (integer) ✔️ Melee's base blocking angle in degrees 90
Class N/A productCategory parent, parents, or MeleeStyle String ✔️ Weapon class for modding or a subclass of the weapon in its equip slot; in the case of Exalted Weapons, it is just "Exalted Weapon" "Nikana"
CodexSecret N/A codexSecret CodexSecret Boolean Whether or not the weapon has an entry in the Codex before the player acquires it; defaults to false false
ComboDur Combo Duration comboDuration TimeBetweenHits Number (integer) Melee's base combo duration in seconds 5
CompatibilityTags N/A N/A CompatibilityTags Table (array of strings) Tags that denote item compatibility. In other words, items with these tags can/cannot have a particular mod installed with the same tag. { "POWER_WEAPON" }
Conclave N/A N/A AvailableOnPvp Boolean Whether or not the weapon can be used in Conclave false
DefaultUpgrades N/A N/A DefaultUpgrades Table (array of strings) Additional upgrades that are innate to the weapon { "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" }
Disposition Riven Disposition omegaAttenuation OmegaAttenuation Number (float) ✔️ Riven Mod Disposition value 0.5
Family N/A N/A N/A String Weapon family that it belongs to, corresponding to the Riven Mod compatibility "Machete"
FollowThrough Follow Through followThrough N/A Number (float) ✔️ Melee's base follow through multiplier as a decimal 0.6
HeavyAttack Heavy Attack heavyAttackDamage N/A Number (float) ✔️ Melee's base heavy attack damage. For Kuva/Tenet weapons include minimum +25% Progenitor bonus in damage value. 1284
HeavySlamAttack Slam Attack heavySlamAttack N/A Number (float) ✔️ Melee's base heavy slam direct hit damage. For Kuva/Tenet weapons include minimum +25% Progenitor bonus in damage value. 1070
HeavySlamElement N/A N/A N/A String Melee's base heavy slam damage type "Heat"
HeavySlamForcedProcs N/A N/A N/A Table (array of strings) Melee's base heavy slam attack forced proc(s) { "Heat" }
HeavyRadialDmg (depreciated on Update 35.5 (2024-03-27)) Slam Radial Damage heavySlamRadialDamage N/A Number (float) ✔️ Melee's base heavy slam radial attack damage. For Kuva/Tenet weapons include minimum +25% Progenitor bonus in damage value. 1070
HeavySlamRadius Slam Radius heavySlamRadius N/A Number (integer) ✔️ Melee's base heavy slam radius in meters 8
IncarnonImage N/A N/A N/A String Image file name of the weapon in its Incarnon Form as uploaded to the wiki "Ack&BruntIncarnon.png"
Image N/A textureLocation Icon String ✔️ Image file name of the weapon as uploaded to the wiki "Ankyros.png"
InternalName N/A uniqueName TypeName String ✔️ The full unique name of a weapon formatted as a file path "/Lotus/Weapons/MK1Series/MK1Furis"
Introduced N/A N/A N/A String ✔️ The game version in which the weapon was first introduced in the global build of WARFRAME "30.5" or "Specters of the Rail"
IsLichWeapon N/A N/A IsKuva Boolean Denotes whether or not a weapon is a Kuva or Tenet weapon true
Link N/A N/A N/A String ✔️ Page/article link to the weapon on the wiki "Exalted Blade (Weapon)"
Mastery N/A masteryReq RequiredLevel Number (integer) ✔️ Mastery Rank requirement 5
MaxRank N/A N/A LevelCap Number (integer) Weapon's maximum rank 30
MeleeRange Range range N/A Number (float) ✔️ Melee's base attack range in meters 2
Name N/A name LocalizeTag String ✔️ Weapon's name "Galatine Prime"
Polarities N/A N/A ArtifactSlots Table (array of strings) ✔️ Full names of the weapon's non-Universal polarities { "Naramon", "Madurai" }
SellPrice N/A N/A SellingPrice Number (integer) For sellable weapons, the sell price in Credits when removed from the player's inventory 25000
SlamAttack Slam Attack slamAttack N/A Number (float) ✔️ Melee's base normal slam direct hit damage. For Kuva/Tenet weapons include minimum +25% Progenitor bonus in damage value. 642
SlamElement N/A N/A N/A String Melee's base normal slam damage type "Heat"
SlamForcedProcs N/A N/A N/A Table (array of strings) Melee's base normal slam attack forced proc(s) { "Heat" }
SlamRadialDmg (depreciated on Update 35.5 (2024-03-27)) Slam Radial Damage slamRadialDamage N/A Number (float) ✔️ Melee's base normal slam radial damage. For Kuva/Tenet weapons include minimum +25% Progenitor bonus in damage value. 214
SlamRadialElement (depreciated on Update 35.5 (2024-03-27)) N/A N/A N/A String Melee's base normal slam radial attack damage type "Heat"
SlamRadialProcs (depreciated on Update 35.5 (2024-03-27)) N/A N/A N/A Table (array of strings) Melee's base normal slam radial attack forced proc(s) { "Heat" }
SlamRadius Slam Radius slamRadius N/A Number (integer) ✔️ Melee's base normal slam radius in meters 7
SlideAttack Slide Attack slideAttack N/A Number (float) ✔️ Melee's base slide attack damage. For Kuva/Tenet weapons include minimum +25% Progenitor bonus in damage value. 100
SlideElement N/A N/A N/A String Melee's base slide attack damage type "Toxin"
Slot N/A slot InventorySlot String ✔️ The weapon slot that the weapon can be equipped on; in the case of Exalted Weapons, it is just their modding class "Melee"
StancePolarity N/A N/A ArtifactSlots String ✔️ Polarity on Stance slot "Madurai"
SweepRadius N/A N/A SweepRadius Number (float) ✔️ Melee's sweep attack's (i.e. normal and heavy attacks) base hitbox radius in meters 0.25
Tradable N/A N/A TradeCapability Number (integer, enum) Whether or not a weapon is tradable to other players.
  • 0 or nil = not tradable
  • 1 = weapon itself is tradable only if it is unranked with no Forma and Orokin Catalyst installed
  • 2 = tradable parts and blueprint(s) but weapon itself is not tradable
  • 3 = indirectly tradable through trading Kuva Liches/Sisters of Parvos (Lich System in general)
  • 4 = only fully built components are tradable, not blueprints
2
Traits N/A N/A N/A Table (array of strings) Gun's categorical traits { "Grineer", "Wraith" }
Users N/A N/A N/A Table (array of strings) Name of NPCs that use this weapon { "Stalker", "Shadow Stalker" }
WindUp Wind Up windUp N/A Number (float) ✔️ Heavy attack wind-up time in seconds 0.5

For Module Use

Key/Column Name Data Type Required? Explanation/Description Example(s)
_IgnoreEntry Boolean For module use, indicates that this weapon table entry is special and should ignored when parsing table entries true
_IgnoreInCSV Boolean For module use, indicates that this weapon table entry should be ignored when outputting CSV (via Module:Weapons/csv) true
_IgnoreInMasteryCount Boolean For module use, indicates that this weapon table entry should be ignored when tallying up mastery totals true
_TooltipAttackDisplay Number For module use, tells what table entry in Attack table to use when processing weapon tooltips and comparing weapon variants in Comparison sections; 1 will be used if no value is assigned 4

Preprocessed Data

If you want data on the relative stat rankings (percentile-based) of each weapon for each weapon stat, see Module:Weapons/ppdata.

Export Data

CephalonSimaris
“Hunter, I have temporarily disabled that ability.”
This article contains JavaScript scripts that users can run locally in their browser's console or machine. As a warning, which goes for any scripts you copy/run from the Internet, MAKE SURE YOU UNDERSTAND THE CODE BEFORE RUNNING IT LOCALLY FOR YOUR OWN SECURITY! Contact an admin if you have any concerns or questions about a script.

Since this database is horizontally partitioned, if you want all the weapon table entries at once, go to Special:ExpandTemplates and run {{#invoke:LuaSerializer|serialize|Weapons/data}}. This will run the script on this page and return plaintext that contains a executable prettified Lua table with all the weapon table entries.

Alternatively, you can use MediaWiki's Action API to get the executed contents of this module:

Weapon Edge Cases

Some weapons have complicated mechanics or behaviors that are not currently compatible with the wiki's weapon entry schema:

  • TenetDiplos Tenet Diplos's lock-on mechanic while aiming has a ~0.5 second delay after the burst ends before being able to lock-on again. This delay is affected by Fire Rate bonuses. This delay is not the same as BurstDelay or BurstReloadDelay. Can be thought as the "delay between bursts that is not the reciprocal of Fire Rate".

Where To Source Weapon Data

Some notes on where editors can source weapon data:

  • In-game:
  • Outside of the game (without the need to launch the game):
    • Public Export's ExportWeapons manifest
    • https://overframe.gg/, go create a "New Build" and F12 to HTML source to find some internal JSON data on weapon. See the below section for more details.

Where To Find Weapon Metadata

The in-game UI does not thoroughly present all the data and interactions that is provided from a weapon. Here are some methods and sources to get more insight on the internal mechanics on weapons:

  • https://overframe.gg/ has access to more metadata than what Digital Extremes provide to the public. This JSON data is cached locally on the client in these tags: <script id="__NEXT_DATA__" type="application/json"></script>
    • For example, for more metadata on KuvaBramma Kuva Bramma, go create a new build https://overframe.gg/build/new/4245/kuva-bramma/ and inspect the HTML element on the page using your browser's development tools. The relevant metadata should be under the <script id="__NEXT_DATA__" type="application/json"></script> tags. If not, hard refresh the browser's cache so the underlying data is updated to reflect on the actual item.
      	"data": {
      		"AmmoCapacity": 5,
      		"AmmoClipSize": 1,
      		"ArtifactSlots": ["AP_UNIVERSAL", "AP_UNIVERSAL", "AP_UNIVERSAL", "AP_ATTACK", "AP_UNIVERSAL", "AP_UNIVERSAL", "AP_UNIVERSAL", "AP_UNIVERSAL", "AP_TACTIC", "AP_UNIVERSAL"],
      		"Behaviors": [{
      				"fire:LotusWeaponProjectileFireBehavior": {
      					"AIMED_ACCURACY": {
      						"Spread": {
      							"SHOOTING": {
      								"range": [0, 12],
      								"type": "ST_EXPONENTIAL"
      							}
      						}
      					},
      					"IgnoreFireIterations": 0,
      					"IsMeleeBehavior": 0,
      					"IsSilenced": 0,
      					"RoundUpAmmoConsumption": 0,
      					"ScaleAmmoRequirement": 0,
      					"UseAmmo": 1,
      					"ammoRequirement": 1,
      					"ammoType": "/Lotus/Weapons/Ammo/RifleAmmoEx",
      					"chargedProjectileType": {
      						"AttackData": {
      							"Amount": 187,
      							"HitType": "DHT_PROJECTILE",
      							"ProcChance": 0.21,
      							"Type": "DT_IMPACT"
      						},
      						"BounceOnAvatars": 0,
      						"CanStick": 1,
      						"ClusterProjectiles": {
      							"AttackData": {
      								"Amount": 49,
      								"HitType": "DHT_PROJECTILE",
      								"ProcChance": 0.21,
      								"Type": "DT_IMPACT"
      							},
      							"BounceOnAvatars": 0,
      							"CanStick": 1,
      							"CriticalChance": 0.35,
      							"CriticalMultiplier": 2.1,
      							"DamageRadius": 3.5,
      							"DealDamageThroughImpactBehavior": 1,
      							"EmbedAttack": {
      								"Amount": 0,
      								"Type": "DT_POISON"
      							},
      							"EmbedDeathAttack": {
      								"Amount": 35,
      								"Type": "DT_EXPLOSION"
      							},
      							"EmbedTime": [0.5, 0.5],
      							"ExplosionFallOff": 0.5,
      							"ExplosionIgnoreSource": 1,
      							"ExplosiveAttack": {
      								"Amount": 57,
      								"HitType": "DHT_RADIAL",
      								"ProcChance": 0.21
      							},
      							"MaxLife": 2
      						},
      						"CriticalChance": 0.35,
      						"CriticalMultiplier": 2.1,
      						"DamageRadius": 8.3,
      						"DealDamageThroughImpactBehavior": 1,
      						"EmbedAttack": {
      							"Amount": 0,
      							"Type": "DT_POISON"
      						},
      						"EmbedDeathAttack": {
      							"Amount": 175,
      							"HitType": "DHT_RADIAL"
      						},
      						"ExplosionFallOff": 0.9,
      						"ExplosiveAttack": {
      							"Amount": 839,
      							"HitType": "DHT_RADIAL",
      							"ProcChance": 0.21
      						},
      						"MaxLife": 5,
      						"NumClusterProjectiles": 3
      					},
      					"fireIterations": 1,
      					"projectileType": {
      						"AttackData": {
      							"Amount": 187,
      							"HitType": "DHT_PROJECTILE",
      							"ProcChance": 0.21,
      							"Type": "DT_IMPACT"
      						},
      						"BounceOnAvatars": 0,
      						"CanStick": 1,
      						"ClusterProjectiles": {
      							"AttackData": {
      								"Amount": 49,
      								"HitType": "DHT_PROJECTILE",
      								"ProcChance": 0.21,
      								"Type": "DT_IMPACT"
      							},
      							"BounceOnAvatars": 0,
      							"CanStick": 1,
      							"CriticalChance": 0.35,
      							"CriticalMultiplier": 2.1,
      							"DamageRadius": 3.5,
      							"DealDamageThroughImpactBehavior": 1,
      							"EmbedAttack": {
      								"Amount": 0,
      								"Type": "DT_POISON"
      							},
      							"EmbedDeathAttack": {
      								"Amount": 35,
      								"Type": "DT_EXPLOSION"
      							},
      							"EmbedTime": [0.5, 0.5],
      							"ExplosionFallOff": 0.5,
      							"ExplosionIgnoreSource": 1,
      							"ExplosiveAttack": {
      								"Amount": 57,
      								"HitType": "DHT_RADIAL",
      								"ProcChance": 0.21
      							},
      							"MaxLife": 2
      						},
      						"CriticalChance": 0.35,
      						"CriticalMultiplier": 2.1,
      						"DamageRadius": 8.3,
      						"DealDamageThroughImpactBehavior": 1,
      						"EmbedAttack": {
      							"Amount": 0,
      							"Type": "DT_POISON"
      						},
      						"EmbedDeathAttack": {
      							"Amount": 175,
      							"HitType": "DHT_RADIAL"
      						},
      						"ExplosionFallOff": 0.9,
      						"ExplosiveAttack": {
      							"Amount": 839,
      							"HitType": "DHT_RADIAL",
      							"ProcChance": 0.21
      						},
      						"MaxLife": 5,
      						"NumClusterProjectiles": 3
      					}
      				},
      				"fire:Type": "/Lotus/Types/Game/LotusWeaponProjectileFireBehavior",
      				"impact:LotusWeaponImpactBehavior": {
      					"AttackData": {
      						"Amount": 10,
      						"DT_IMPACT": 0.33333,
      						"DT_PUNCTURE": 0.33333,
      						"DT_SLASH": 0.33333,
      						"HitType": "DHT_NONE",
      						"ProcChance": 0.1,
      						"Type": "DT_PHYSICAL",
      						"UseNewFormat": 0
      					},
      					"PlayerDamageMultiplier": 1,
      					"PvpDamageMultiplier": 1,
      					"criticalHitChance": 0.2,
      					"criticalHitDamageMultiplier": 1.5,
      					"radius": 0
      				},
      				"impact:Type": "/Lotus/Types/Weapon/LotusWeaponImpactBehavior",
      				"state:ChargedRemoteMineStateBehavior": {
      					"AutoFireWhenChargeCompleted": 0,
      					"ChargeModifier": "WEAPON_FIRE_RATE",
      					"ChargeTime": 0.4,
      					"ClipSizeAffectsChargeTime": 0,
      					"DamageMultiplier": 1,
      					"IsAlternateFire": 0,
      					"LocTag": "/Lotus/Language/Menu/Loadout_TriggerCharge",
      					"MinChargeRatio": 1,
      					"MinDamageMultiplier": 1,
      					"fireRate": 40,
      					"reloadTime": 0.6
      				},
      				"state:Type": "/Lotus/Types/Weapon/ChargedRemoteMineStateBehavior"
      			}
      		],
      		"CompatibilityTags": ["PROJECTILE", "AOE", "SNIPER_AMMO", "SINGLESHOT", "GRNBOW"],
      		"EquipTime": 1.8,
      		"GripType": "BOW",
      		"HasClip": 0,
      		"Icon": "/Lotus/Interface/Icons/StoreIcons/Weapons/PrimaryWeapons/Weapons/KuvaGrnBow.png",
      		"InventorySlot": "SLOT_2",
      		"IsKuva": 1,
      		"LevelCap": 40,
      		"LocalizeDescTag": "/Lotus/Language/Weapons/KuvaGrnBowDesc",
      		"LocalizeTag": "/Lotus/Language/Weapons/KuvaGrnBowName",
      		"MarketMode": "MM_HIDDEN",
      		"OmegaAttenuation": 0.6,
      		"PVPAmmoClipSize": 1,
      		"PremiumPrice": 225,
      		"ProductCategory": "LongGuns",
      		"RequiredLevel": 15,
      		"SellingPrice": 7500,
      		"ZoomLevels": [{}
      		]
      	},
      	"id": 4245,
      	"parent": "/Lotus/Weapons/Tenno/Bows/LotusLongBow",
      	"parents": ["/Lotus/Weapons/Tenno/Bows/LotusLongBow", "/Lotus/Weapons/Tenno/Bows/LotusBow", "/Lotus/Weapons/Tenno/Rifle/LotusRifle", "/Lotus/Weapons/Tenno/LotusLongGun", "/Lotus/Weapons/Tenno/LotusBulletWeapon"],
      	"path": "/Lotus/Weapons/Grineer/Bows/GrnBow/GrnBowWeapon",
      	"storeData": {
      		"DisplayRecipe": "",
      		"PremiumPrice": 225,
      		"ProductCategory": "LongGuns",
      		"SearchTags": ["/Lotus/Language/Game/DT_EXPLOSION_NoIcon", "/Lotus/Language/Game/DT_IMPACT_NoIcon", "/Lotus/Language/Items/BowCategoryName", "/Lotus/Language/Items/RifleCategoryName", "/Lotus/Language/Items/SniperCategoryName"],
      		"SellingPrice": 7500,
      		"ShowInMarket": 0
      	},
      	"storeItemType": "/Lotus/StoreItems/Weapons/Grineer/Bows/GrnBow/GrnBowWeapon",
      	"tag": "Weapon",
      	"texture": "/Lotus/Interface/Icons/Store/KuvaGrnBow.png",
      	"texture_new": "/Lotus/Interface/Icons/StoreIcons/Weapons/PrimaryWeapons/Weapons/KuvaGrnBow.png"
      }
      

Data Validation

Validate data types of key-value pairs

p.validateDataTypes(frame): There are a total of 9 key-value errors

  1. "Destreza" contains an unsupported key HeavSlamElement
  2. "Dual Ether" contains an unsupported key HeavuSlamElement
  3. "Hate" contains an unsupported key lamForcedProcs
  4. "Ironbride" contains an unsupported key SlamRadialDmg
  5. "Pugil" contains an unsupported key SlamRadialDmg
  6. "Pugil" contains an unsupported key SlamRadialProcs
  7. "Pugil" contains an unsupported key SlamRadialElement
  8. "Silva & Aegis" contains an unsupported key SlamForcedProc
  9. "Unarmed" contains an unsupported key SlamRadialDmg

Checking missing keys

p.checkForMissingData(frame): There are a total of 17 key-value errors

  1. "Dargyn" Attacks[1].CritChance is nil
  2. "Dargyn" Attacks[1].StatusChance is nil
  3. "Dargyn" Attacks[1].CritMultiplier is nil
  4. "Ebisu Spear" Attacks[1].CritChance is nil
  5. "Garuda Prime Talons" does not have Disposition key
  6. "Garuda Prime Talons" does not have Mastery key
  7. "Garuda Talons" does not have Disposition key
  8. "Garuda Talons" does not have Mastery key
  9. "Lanzo Fishing Spear" Attacks[1].CritChance is nil
  10. "Peram Fishing Spear" Attacks[1].CritChance is nil
  11. "Rampart" Attacks[1].CritChance is nil
  12. "Rampart" Attacks[1].StatusChance is nil
  13. "Rampart" Attacks[1].CritMultiplier is nil
  14. "Shockprod Fishing Spear" Attacks[1].CritChance is nil
  15. "Spari Spear" Attacks[1].CritChance is nil
  16. "Stunna Fishing Spear" Attacks[1].CritChance is nil
  17. "Tulok Fishing Spear" Attacks[1].CritChance is nil

Validate Attack tables

p.validateAttacks(frame): There are a total of 0 key-value errors

Validate required weapon table keys

p.validateRequiredKeys(frame): There are a total of 448 key-value errors

  1. "Apoc" AmmoPickup must be a value greater than or equal to 0
  2. "Apoc" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  3. "Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  4. "Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  5. "Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  6. "Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  7. "Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  8. "Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  9. "Artax" AmmoPickup must be a value greater than or equal to 0
  10. "Burst Laser" AmmoPickup must be a value greater than or equal to 0
  11. "Burst Laser Prime" AmmoPickup must be a value greater than or equal to 0
  12. "Cantic Prism" AmmoPickup must be a value greater than or equal to 0
  13. "Carcinnox" AmmoPickup must be a value greater than or equal to 0
  14. "Carcinnox" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  15. "Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  16. "Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  17. "Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  18. "Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  19. "Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  20. "Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  21. "Catchmoon (Primary)" Image should be in the form of "WeaponName.png"; current value: Catchmoon.png
  22. "Catchmoon (Primary)" Magazine must be a value above 0
  23. "Catchmoon (Primary)" Missing reload time or reload time has to be above 0
  24. "Catchmoon (Secondary)" Image should be in the form of "WeaponName.png"; current value: Catchmoon.png
  25. "Catchmoon (Secondary)" Magazine must be a value above 0
  26. "Catchmoon (Secondary)" Missing reload time or reload time has to be above 0
  27. "Cerata" Heavy attack must be greater than 0
  28. "Cortege" AmmoPickup must be a value greater than or equal to 0
  29. "Cortege (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  30. "Cortege (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Cortege.png
  31. "Corvas" AmmoPickup must be a value greater than or equal to 0
  32. "Corvas (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  33. "Corvas (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Corvas.png
  34. "Corvas Prime" AmmoPickup must be a value greater than or equal to 0
  35. "Corvas Prime (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  36. "Corvas Prime (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: CorvasPrime.png
  37. "Cryophon" AmmoPickup must be a value greater than or equal to 0
  38. "Cryophon" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  39. "Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  40. "Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  41. "Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  42. "Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  43. "Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  44. "Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  45. "Cryotra" AmmoPickup must be a value greater than or equal to 0
  46. "Cyngas" AmmoPickup must be a value greater than or equal to 0
  47. "Cyngas (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  48. "Cyngas (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Cyngas.png
  49. "Dargyn" AmmoPickup must be a value greater than or equal to 0
  50. "Dargyn" Disposition must be between 0.5-1.55; default should be 0.5
  51. "Dargyn" Image should be in the form of "WeaponName.png"; current value: GrnSkiffMissile.png
  52. "Dargyn" Missing InternalName
  53. "Dargyn" Missing mastery rank unlock and mastery has to between 0 and 16 inclusive
  54. "Deconstructor" AmmoPickup must be a value greater than or equal to 0
  55. "Deconstructor Prime" AmmoPickup must be a value greater than or equal to 0
  56. "Deth Machine Rifle" AmmoPickup must be a value greater than or equal to 0
  57. "Deth Machine Rifle Prime" AmmoPickup must be a value greater than or equal to 0
  58. "Dissic Scaffold" AmmoPickup must be a value greater than or equal to 0
  59. "Dual Decurion" AmmoPickup must be a value greater than or equal to 0
  60. "Dual Decurion (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  61. "Dual Decurion (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: DualDecurion.png
  62. "Exard Scaffold" AmmoPickup must be a value greater than or equal to 0
  63. "Falcor" Heavy attack must be greater than 0
  64. "Fluctus" AmmoPickup must be a value greater than or equal to 0
  65. "Fluctus (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  66. "Fluctus (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Fluctus.png
  67. "Galvarc" AmmoPickup must be a value greater than or equal to 0
  68. "Galvarc" Image should be in the form of "WeaponName.png"; current value: OrdnanceGalvarc.png
  69. "Galvarc MK I" AmmoPickup must be a value greater than or equal to 0
  70. "Galvarc MK I" Image should be in the form of "WeaponName.png"; current value: OrdnanceGalvarc.png
  71. "Galvarc MK II" AmmoPickup must be a value greater than or equal to 0
  72. "Galvarc MK II" Image should be in the form of "WeaponName.png"; current value: OrdnanceGalvarc.png
  73. "Galvarc MK III" AmmoPickup must be a value greater than or equal to 0
  74. "Galvarc MK III" Image should be in the form of "WeaponName.png"; current value: OrdnanceGalvarc.png
  75. "Garuda Prime Talons" Disposition must be between 0.5-1.55; default should be 0.5
  76. "Garuda Prime Talons" Missing mastery rank unlock
  77. "Garuda Talons" Disposition must be between 0.5-1.55; default should be 0.5
  78. "Garuda Talons" Missing mastery rank unlock
  79. "Gaze (Primary)" Image should be in the form of "WeaponName.png"; current value: Gaze.png
  80. "Gaze (Primary)" Magazine must be a value above 0
  81. "Gaze (Primary)" Missing reload time or reload time has to be above 0
  82. "Gaze (Secondary)" Image should be in the form of "WeaponName.png"; current value: Gaze.png
  83. "Gaze (Secondary)" Magazine must be a value above 0
  84. "Gaze (Secondary)" Missing reload time or reload time has to be above 0
  85. "Glaive" Heavy attack must be greater than 0
  86. "Glaive Prime" Heavy attack must be greater than 0
  87. "Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  88. "Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  89. "Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  90. "Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  91. "Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  92. "Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  93. "Granmu Prism" AmmoPickup must be a value greater than or equal to 0
  94. "Grattler" AmmoPickup must be a value greater than or equal to 0
  95. "Grattler (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  96. "Grattler (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Grattler.png
  97. "Grimoire" Magazine must be a value above 0
  98. "Grimoire" Missing reload time or reload time has to be above 0
  99. "Halikar" Heavy attack must be greater than 0
  100. "Halikar Wraith" Heavy attack must be greater than 0
  101. "Hand Grenade" AmmoMax must be a value greater than or equal to 0
  102. "Hand Grenade" AmmoPickup must be a value greater than or equal to 0
  103. "Hand Grenade" Magazine must be a value above 0
  104. "Hand Grenade" Missing reload time or reload time has to be above 0
  105. "Hand Grenade" Missing trigger type of weapon
  106. "Helstrum" AmmoPickup must be a value greater than or equal to 0
  107. "Imperator" AmmoPickup must be a value greater than or equal to 0
  108. "Imperator (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  109. "Imperator (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Imperator.png
  110. "Imperator Vandal" AmmoPickup must be a value greater than or equal to 0
  111. "Imperator Vandal (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  112. "Imperator Vandal (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: ImperatorVandal.png
  113. "Kestrel" Heavy attack must be greater than 0
  114. "Klamora Prism" AmmoPickup must be a value greater than or equal to 0
  115. "Klebrik Scaffold" AmmoPickup must be a value greater than or equal to 0
  116. "Kuva Ayanga" AmmoPickup must be a value greater than or equal to 0
  117. "Kuva Ayanga (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  118. "Kuva Ayanga (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: KuvaAyanga.png
  119. "Kuva Grattler" AmmoPickup must be a value greater than or equal to 0
  120. "Kuva Grattler (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  121. "Kuva Grattler (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: KuvaGrattler.png
  122. "Laith MK I" AmmoPickup must be a value greater than or equal to 0
  123. "Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  124. "Laith MK II" AmmoPickup must be a value greater than or equal to 0
  125. "Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  126. "Laith MK III" AmmoPickup must be a value greater than or equal to 0
  127. "Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  128. "Larkspur" AmmoPickup must be a value greater than or equal to 0
  129. "Larkspur (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  130. "Larkspur (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Larkspur.png
  131. "Larkspur Prime" AmmoPickup must be a value greater than or equal to 0
  132. "Larkspur Prime (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  133. "Larkspur Prime (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: LarkspurPrime.png
  134. "Laser Rifle" AmmoPickup must be a value greater than or equal to 0
  135. "Lavan Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  136. "Lavan Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  137. "Lavan Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  138. "Lavan Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  139. "Lavan Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  140. "Lavan Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  141. "Lavan Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  142. "Lavan Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  143. "Lavan Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  144. "Lavan Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  145. "Lavan Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  146. "Lavan Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  147. "Lavan Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  148. "Lavan Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  149. "Lavan Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  150. "Lavan Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  151. "Lavan Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  152. "Lavan Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  153. "Lavan Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  154. "Lavan Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  155. "Lavan Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  156. "Lavan Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  157. "Lavan Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  158. "Lavan Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  159. "Lavan Laith MK I" AmmoPickup must be a value greater than or equal to 0
  160. "Lavan Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  161. "Lavan Laith MK II" AmmoPickup must be a value greater than or equal to 0
  162. "Lavan Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  163. "Lavan Laith MK III" AmmoPickup must be a value greater than or equal to 0
  164. "Lavan Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  165. "Lavan Photor MK I" AmmoPickup must be a value greater than or equal to 0
  166. "Lavan Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  167. "Lavan Photor MK II" AmmoPickup must be a value greater than or equal to 0
  168. "Lavan Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  169. "Lavan Photor MK III" AmmoPickup must be a value greater than or equal to 0
  170. "Lavan Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  171. "Lavan Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  172. "Lavan Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  173. "Lavan Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  174. "Lavan Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  175. "Lavan Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  176. "Lavan Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  177. "Lavan Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  178. "Lavan Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  179. "Lavan Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  180. "Lavan Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  181. "Lavan Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  182. "Lavan Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  183. "Lavan Vort MK I" AmmoPickup must be a value greater than or equal to 0
  184. "Lavan Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  185. "Lavan Vort MK II" AmmoPickup must be a value greater than or equal to 0
  186. "Lavan Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  187. "Lavan Vort MK III" AmmoPickup must be a value greater than or equal to 0
  188. "Lavan Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  189. "Lega Prism" AmmoPickup must be a value greater than or equal to 0
  190. "MK1-Braton" Image should be in the form of "WeaponName.png"; current value: Braton.png
  191. "MK1-Furis" Image should be in the form of "WeaponName.png"; current value: Furis.png
  192. "MK1-Kunai" Image should be in the form of "WeaponName.png"; current value: Kunai.png
  193. "MK1-Paris" Image should be in the form of "WeaponName.png"; current value: Paris.png
  194. "MK1-Strun" Image should be in the form of "WeaponName.png"; current value: Strun.png
  195. "Mandonel" AmmoPickup must be a value greater than or equal to 0
  196. "Mandonel" Missing InternalName
  197. "Mandonel (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  198. "Mandonel (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Mandonel.png
  199. "Mandonel (Atmosphere)" Missing InternalName
  200. "Mausolon" AmmoPickup must be a value greater than or equal to 0
  201. "Mausolon (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  202. "Mausolon (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Mausolon.png
  203. "Milati" AmmoPickup must be a value greater than or equal to 0
  204. "Milati" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  205. "Milati MK I" AmmoPickup must be a value greater than or equal to 0
  206. "Milati MK I" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  207. "Milati MK II" AmmoPickup must be a value greater than or equal to 0
  208. "Milati MK II" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  209. "Milati MK III" AmmoPickup must be a value greater than or equal to 0
  210. "Milati MK III" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  211. "Morgha" AmmoPickup must be a value greater than or equal to 0
  212. "Morgha (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  213. "Morgha (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Morgha.png
  214. "Mote Amp" AmmoPickup must be a value greater than or equal to 0
  215. "Multron" AmmoPickup must be a value greater than or equal to 0
  216. "Orvius" Heavy attack must be greater than 0
  217. "Parazon" AmmoMax must be a value greater than or equal to 0
  218. "Parazon" AmmoPickup must be a value greater than or equal to 0
  219. "Parazon" Magazine must be a value above 0
  220. "Parazon" Missing reload time or reload time has to be above 0
  221. "Parazon" Missing trigger type of weapon
  222. "Pathocyst" Heavy attack must be greater than 0
  223. "Pencha Scaffold" AmmoPickup must be a value greater than or equal to 0
  224. "Phaedra" AmmoPickup must be a value greater than or equal to 0
  225. "Phaedra (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  226. "Phaedra (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Phaedra.png
  227. "Phahd Scaffold" AmmoPickup must be a value greater than or equal to 0
  228. "Photor" AmmoPickup must be a value greater than or equal to 0
  229. "Photor" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  230. "Photor MK I" AmmoPickup must be a value greater than or equal to 0
  231. "Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  232. "Photor MK II" AmmoPickup must be a value greater than or equal to 0
  233. "Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  234. "Photor MK III" AmmoPickup must be a value greater than or equal to 0
  235. "Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  236. "Prime Laser Rifle" AmmoPickup must be a value greater than or equal to 0
  237. "Prisma Burst Laser" AmmoPickup must be a value greater than or equal to 0
  238. "Prisma Dual Decurions" AmmoPickup must be a value greater than or equal to 0
  239. "Prisma Dual Decurions (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  240. "Prisma Dual Decurions (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: PrismaDualDecurions.png
  241. "Propa Scaffold" AmmoPickup must be a value greater than or equal to 0
  242. "Pugil" AmmoMax must be a value greater than or equal to 0
  243. "Pugil" AmmoPickup must be a value greater than or equal to 0
  244. "Pugil" Missing InternalName
  245. "Pugil" Magazine must be a value above 0
  246. "Pugil" Missing reload time or reload time has to be above 0
  247. "Pugil" Missing trigger type of weapon
  248. "Pulsar" AmmoPickup must be a value greater than or equal to 0
  249. "Pulsar" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  250. "Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  251. "Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  252. "Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  253. "Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  254. "Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  255. "Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  256. "Rahn Prism" AmmoPickup must be a value greater than or equal to 0
  257. "Rampart" AmmoPickup must be a value greater than or equal to 0
  258. "Rampart" Disposition must be between 0.5-1.55; default should be 0.5
  259. "Rampart" Missing InternalName
  260. "Rampart" Missing mastery rank unlock and mastery has to between 0 and 16 inclusive
  261. "Raplak Prism" AmmoPickup must be a value greater than or equal to 0
  262. "Rattleguts (Primary)" AmmoPickup must be a value greater than or equal to 0
  263. "Rattleguts (Primary)" Image should be in the form of "WeaponName.png"; current value: Rattleguts.png
  264. "Rattleguts (Primary)" Magazine must be a value above 0
  265. "Rattleguts (Primary)" Missing reload time or reload time has to be above 0
  266. "Rattleguts (Secondary)" AmmoPickup must be a value greater than or equal to 0
  267. "Rattleguts (Secondary)" Image should be in the form of "WeaponName.png"; current value: Rattleguts.png
  268. "Rattleguts (Secondary)" Magazine must be a value above 0
  269. "Rattleguts (Secondary)" Missing reload time or reload time has to be above 0
  270. "Razorflies" AmmoMax must be a value greater than or equal to 0
  271. "Razorflies" AmmoPickup must be a value greater than or equal to 0
  272. "Razorflies" Image should be in the form of "WeaponName.png"; current value: Panel.png
  273. "Razorflies" Magazine must be a value above 0
  274. "Razorflies" Missing reload time or reload time has to be above 0
  275. "Razorflies" Missing trigger type of weapon
  276. "Shraksun Scaffold" AmmoPickup must be a value greater than or equal to 0
  277. "Shwaak Prism" AmmoPickup must be a value greater than or equal to 0
  278. "Sirocco" AmmoPickup must be a value greater than or equal to 0
  279. "Soaktron" AmmoPickup must be a value greater than or equal to 0
  280. "Soaktron" Missing InternalName
  281. "Soaktron" Missing reload time or reload time has to be above 0
  282. "Sporelacer (Primary)" Image should be in the form of "WeaponName.png"; current value: Sporelacer.png
  283. "Sporelacer (Primary)" Magazine must be a value above 0
  284. "Sporelacer (Primary)" Missing reload time or reload time has to be above 0
  285. "Sporelacer (Secondary)" Image should be in the form of "WeaponName.png"; current value: Sporelacer.png
  286. "Sporelacer (Secondary)" Magazine must be a value above 0
  287. "Sporelacer (Secondary)" Missing reload time or reload time has to be above 0
  288. "Stinger" AmmoPickup must be a value greater than or equal to 0
  289. "Sweeper" AmmoPickup must be a value greater than or equal to 0
  290. "Sweeper Prime" AmmoPickup must be a value greater than or equal to 0
  291. "Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  292. "Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  293. "Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  294. "Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  295. "Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  296. "Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  297. "Tazicor" AmmoPickup must be a value greater than or equal to 0
  298. "Tombfinger (Primary)" Image should be in the form of "WeaponName.png"; current value: Tombfinger.png
  299. "Tombfinger (Primary)" Magazine must be a value above 0
  300. "Tombfinger (Primary)" Missing reload time or reload time has to be above 0
  301. "Tombfinger (Secondary)" Image should be in the form of "WeaponName.png"; current value: Tombfinger.png
  302. "Tombfinger (Secondary)" Magazine must be a value above 0
  303. "Tombfinger (Secondary)" Missing reload time or reload time has to be above 0
  304. "Tunguska Cannon" AmmoPickup must be a value greater than or equal to 0
  305. "Tunguska Cannon" Image should be in the form of "WeaponName.png"; current value: DomeCharge.png
  306. "Tunguska Cannon" Missing InternalName
  307. "Tycho Seeker" AmmoPickup must be a value greater than or equal to 0
  308. "Tycho Seeker" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  309. "Tycho Seeker MK I" AmmoPickup must be a value greater than or equal to 0
  310. "Tycho Seeker MK I" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  311. "Tycho Seeker MK II" AmmoPickup must be a value greater than or equal to 0
  312. "Tycho Seeker MK II" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  313. "Tycho Seeker MK III" AmmoPickup must be a value greater than or equal to 0
  314. "Tycho Seeker MK III" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  315. "Unarmed" AmmoMax must be a value greater than or equal to 0
  316. "Unarmed" AmmoPickup must be a value greater than or equal to 0
  317. "Unarmed" Image should be in the form of "WeaponName.png"; current value: Blank.png
  318. "Unarmed" Missing InternalName
  319. "Unarmed" Magazine must be a value above 0
  320. "Unarmed" Missing reload time or reload time has to be above 0
  321. "Unarmed" Missing trigger type of weapon
  322. "Velocitus" AmmoPickup must be a value greater than or equal to 0
  323. "Velocitus (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  324. "Velocitus (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Velocitus.png
  325. "Verglas" AmmoPickup must be a value greater than or equal to 0
  326. "Vermisplicer (Primary)" Image should be in the form of "WeaponName.png"; current value: Vermisplicer.png
  327. "Vermisplicer (Primary)" Magazine must be a value above 0
  328. "Vermisplicer (Primary)" Missing reload time or reload time has to be above 0
  329. "Vermisplicer (Secondary)" Image should be in the form of "WeaponName.png"; current value: Vermisplicer.png
  330. "Vermisplicer (Secondary)" Magazine must be a value above 0
  331. "Vermisplicer (Secondary)" Missing reload time or reload time has to be above 0
  332. "Vidar Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  333. "Vidar Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  334. "Vidar Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  335. "Vidar Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  336. "Vidar Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  337. "Vidar Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  338. "Vidar Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  339. "Vidar Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  340. "Vidar Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  341. "Vidar Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  342. "Vidar Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  343. "Vidar Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  344. "Vidar Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  345. "Vidar Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  346. "Vidar Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  347. "Vidar Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  348. "Vidar Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  349. "Vidar Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  350. "Vidar Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  351. "Vidar Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  352. "Vidar Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  353. "Vidar Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  354. "Vidar Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  355. "Vidar Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  356. "Vidar Laith MK I" AmmoPickup must be a value greater than or equal to 0
  357. "Vidar Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  358. "Vidar Laith MK II" AmmoPickup must be a value greater than or equal to 0
  359. "Vidar Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  360. "Vidar Laith MK III" AmmoPickup must be a value greater than or equal to 0
  361. "Vidar Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  362. "Vidar Photor MK I" AmmoPickup must be a value greater than or equal to 0
  363. "Vidar Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  364. "Vidar Photor MK II" AmmoPickup must be a value greater than or equal to 0
  365. "Vidar Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  366. "Vidar Photor MK III" AmmoPickup must be a value greater than or equal to 0
  367. "Vidar Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  368. "Vidar Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  369. "Vidar Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  370. "Vidar Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  371. "Vidar Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  372. "Vidar Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  373. "Vidar Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  374. "Vidar Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  375. "Vidar Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  376. "Vidar Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  377. "Vidar Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  378. "Vidar Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  379. "Vidar Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  380. "Vidar Vort MK I" AmmoPickup must be a value greater than or equal to 0
  381. "Vidar Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  382. "Vidar Vort MK II" AmmoPickup must be a value greater than or equal to 0
  383. "Vidar Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  384. "Vidar Vort MK III" AmmoPickup must be a value greater than or equal to 0
  385. "Vidar Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  386. "Vort MK I" AmmoPickup must be a value greater than or equal to 0
  387. "Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  388. "Vort MK II" AmmoPickup must be a value greater than or equal to 0
  389. "Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  390. "Vort MK III" AmmoPickup must be a value greater than or equal to 0
  391. "Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  392. "Vulcax" AmmoPickup must be a value greater than or equal to 0
  393. "Vulklok" AmmoPickup must be a value greater than or equal to 0
  394. "Xoris" Heavy attack must be greater than 0
  395. "Zetki Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  396. "Zetki Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  397. "Zetki Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  398. "Zetki Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  399. "Zetki Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  400. "Zetki Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  401. "Zetki Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  402. "Zetki Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  403. "Zetki Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  404. "Zetki Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  405. "Zetki Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  406. "Zetki Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  407. "Zetki Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  408. "Zetki Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  409. "Zetki Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  410. "Zetki Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  411. "Zetki Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  412. "Zetki Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  413. "Zetki Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  414. "Zetki Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  415. "Zetki Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  416. "Zetki Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  417. "Zetki Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  418. "Zetki Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  419. "Zetki Laith MK I" AmmoPickup must be a value greater than or equal to 0
  420. "Zetki Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  421. "Zetki Laith MK II" AmmoPickup must be a value greater than or equal to 0
  422. "Zetki Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  423. "Zetki Laith MK III" AmmoPickup must be a value greater than or equal to 0
  424. "Zetki Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  425. "Zetki Photor MK I" AmmoPickup must be a value greater than or equal to 0
  426. "Zetki Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  427. "Zetki Photor MK II" AmmoPickup must be a value greater than or equal to 0
  428. "Zetki Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  429. "Zetki Photor MK III" AmmoPickup must be a value greater than or equal to 0
  430. "Zetki Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  431. "Zetki Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  432. "Zetki Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  433. "Zetki Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  434. "Zetki Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  435. "Zetki Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  436. "Zetki Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  437. "Zetki Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  438. "Zetki Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  439. "Zetki Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  440. "Zetki Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  441. "Zetki Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  442. "Zetki Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  443. "Zetki Vort MK I" AmmoPickup must be a value greater than or equal to 0
  444. "Zetki Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  445. "Zetki Vort MK II" AmmoPickup must be a value greater than or equal to 0
  446. "Zetki Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  447. "Zetki Vort MK III" AmmoPickup must be a value greater than or equal to 0
  448. "Zetki Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png

Weapon Data


  1. As of Hotfix 32.0.12 (2022-10-12), this may not be accurate (last checked 2022-11-01 and first noticed a weapon data schema change ~2 months ago). This key is absent on most weapons and if it is present, then equivalent data is under UpgradeType key like for TatsuPrime Tatsu Prime (see script tag with id "__NEXT_DATA__" under HTML source on https://overframe.gg/build/new/5979/tatsu-prime/). Treat this information as speculation however.
---	WARFRAME weapon database to be used on the wiki.
--	
--	@module			weapons/data
--	@alias			data
--	@attribution	[[User:FINNER|FINNER]]
--	@attribution	[[User:Cephalon Scientia|Cephalon Scientia]]
--	@attribution	Everyone who contributes to adding new data or updating existing values in database
---	@require		[[Module:LuaSerializer]]
--	@release		stable
--	<nowiki>

-- TODO: Since horizontal partitions are accessed programmatically, this means
-- that this module can be tailored to serve specific user localizations.
-- All we need to do is to add a locale flag in here set to mw.getCurrentFrame():preprocess('{{int:Custom-lang}}'), 
-- a separate translation table (likely JSON) for mapping canonical internal names to localized names, 
-- and replace the Name key/Trigger key/index key with the localized counterpart.
-- In theory, any database access by requiring this module should contain the 
-- proper localization based on user's interface language setting.

local data = {}

local MODULE_LOCALIZATION = mw.site.namespaces[828].name

local COOP_SLOTS = { 'primary', 'secondary', 'melee', 'archwing', 'companion', 'railjack', 'modular', 'misc' }

local SLOTS_MAP = {
	primary = 'primary',
	secondary = 'secondary',
	melee = 'melee',

	archwing = 'archwing',
	['archgun'] = 'archwing',
	['archmelee'] = 'archwing',
	['archgun (atmosphere)'] = 'archwing',

	companion = 'companion',
	['robotic'] = 'companion',
	['hound'] = 'companion',

	railjack = 'railjack',
	['railjack turret'] = 'railjack',
	['railjack ordnance'] = 'railjack',

	modular = 'modular',
	['amp'] = 'modular',
	['kitgun'] = 'modular',
	['zaw'] = 'modular',

	misc = 'misc',
	['emplacement'] = 'misc',
	['gear'] = 'misc',
	['nech-melee'] = 'misc',
	['unique'] = 'misc',
	['vehicle'] = 'misc',
}

-- Defining default metatable values
local dbMetatable = {
	-- Page title of database
	_pageName = 'Weapons/data'
}
dbMetatable._pageTitle = MODULE_LOCALIZATION..':'..dbMetatable._pageName

---	Defining custom looping behavior with pairs() to iterate over multiple 
--	partitions while acting as one database table.
--	@function		data.__pairs
--	@param			{table} self Table self-reference
--	@return			{function} Iterator function
--	@return			{table} Contains key-pair values of slot names to corresponding horizontal partition
dbMetatable.__pairs = function(self)
		local temp = {}
		local slots = COOP_SLOTS
		
		for i, slot in ipairs(slots) do
			temp[i] = mw.loadData(getmetatable(self)._pageTitle..'/'..slot)
		end
		
		function next(t, key)
			return pairs(t)(t, key)
		end

		function __next(t, key)
			if not key then
				return next(t[1])
			else
				for i = 1, #t - 1 do
					if t[i][key] then
						if next(t[i], key) then
							return next(t[i], key)
						else
							return next(t[i + 1])
						end
					end
				end
				return next(t[#t], key)
			end
		end

		return __next, temp, nil
	end

---	Supporting indexing by slot name (returns array of weapon entries) or weapon name
--	(returns a weapon entry).
--	@function		data.__index
--	@param			{table} self Table self-reference
--	@param			{string} key Index key
--	@return			{table}
dbMetatable.__index = function(self, key)
		if (type(key) == 'number') then return nil end
		
		-- Indexing by slot
		if key and SLOTS_MAP[key:lower()] then
			return mw.loadData(getmetatable(self)._pageTitle..'/'..SLOTS_MAP[key:lower()])
		end
		
		local slots = COOP_SLOTS
		
		-- Indexing by weapon name
		local weapon
		for _, slot in ipairs(slots) do
			weapon = mw.loadData(getmetatable(self)._pageTitle..'/'..slot)[key]
			
			if weapon then
				return weapon
			end
		end
		return nil
	end

---	For changing which type of database to pull data from.
--	If you want to switch to a different database in the same script, must require()
--	a new instance of M:Weapons/data.
--	@function		__call
--	@usage			require('Module:Weapons/data')(true)
--	@param			{table} self Table self-reference
--	@param			{table} args Argument table
--	@return			{table} Database table
dbMetatable.__call = function(self, args)
		-- Define logic for additional named arguments before the return statement
		-- TODO: We can take advantage of calling a database table by adding additional arguments
		-- for filtering out content.
		return self
	end

---	Serializes database tables into a single string with no functions and metatables.
--	@function		__tostring
--	@param			{table} self Table self-reference
--	@return			{string} Serialized database
dbMetatable.__tostring = function(self)
		return require('Module:LuaSerializer')._serialize(getmetatable(self)._pageName)
	end

setmetatable(data, dbMetatable)

return data
Advertisement