WARFRAME Wiki
Register
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"
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,
	HeavyRadialDmg = 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",
	SlamRadialDmg = 214,
	SlamRadialElement = "Heat",
	SlamRadialProcs = { "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
HeavyRadialDmg 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
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 direct hit damage type "Heat"
SlamRadialDmg 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 N/A N/A N/A String Melee's base normal slam radial attack damage type "Heat"
SlamRadialProcs 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 0 key-value errors

Checking missing keys

p.checkForMissingData(frame): There are a total of 20 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. "Gorgon" Attacks[3].FireRate is nil
  10. "Gorgon Wraith" Attacks[3].FireRate is nil
  11. "Lanzo Fishing Spear" Attacks[1].CritChance is nil
  12. "Peram Fishing Spear" Attacks[1].CritChance is nil
  13. "Prisma Gorgon" Attacks[3].FireRate is nil
  14. "Rampart" Attacks[1].CritChance is nil
  15. "Rampart" Attacks[1].StatusChance is nil
  16. "Rampart" Attacks[1].CritMultiplier is nil
  17. "Shockprod Fishing Spear" Attacks[1].CritChance is nil
  18. "Spari Spear" Attacks[1].CritChance is nil
  19. "Stunna Fishing Spear" Attacks[1].CritChance is nil
  20. "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 449 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" AmmoPickup must be a value greater than or equal to 0
  98. "Grimoire" Magazine must be a value above 0
  99. "Grimoire" Missing reload time or reload time has to be above 0
  100. "Halikar" Heavy attack must be greater than 0
  101. "Halikar Wraith" Heavy attack must be greater than 0
  102. "Hand Grenade" AmmoMax must be a value greater than or equal to 0
  103. "Hand Grenade" AmmoPickup must be a value greater than or equal to 0
  104. "Hand Grenade" Magazine must be a value above 0
  105. "Hand Grenade" Missing reload time or reload time has to be above 0
  106. "Hand Grenade" Missing trigger type of weapon
  107. "Helstrum" AmmoPickup must be a value greater than or equal to 0
  108. "Imperator" AmmoPickup must be a value greater than or equal to 0
  109. "Imperator (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  110. "Imperator (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Imperator.png
  111. "Imperator Vandal" AmmoPickup must be a value greater than or equal to 0
  112. "Imperator Vandal (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  113. "Imperator Vandal (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: ImperatorVandal.png
  114. "Kestrel" Heavy attack must be greater than 0
  115. "Klamora Prism" AmmoPickup must be a value greater than or equal to 0
  116. "Klebrik Scaffold" AmmoPickup must be a value greater than or equal to 0
  117. "Kuva Ayanga" AmmoPickup must be a value greater than or equal to 0
  118. "Kuva Ayanga (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  119. "Kuva Ayanga (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: KuvaAyanga.png
  120. "Kuva Grattler" AmmoPickup must be a value greater than or equal to 0
  121. "Kuva Grattler (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  122. "Kuva Grattler (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: KuvaGrattler.png
  123. "Laith MK I" AmmoPickup must be a value greater than or equal to 0
  124. "Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  125. "Laith MK II" AmmoPickup must be a value greater than or equal to 0
  126. "Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  127. "Laith MK III" AmmoPickup must be a value greater than or equal to 0
  128. "Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  129. "Larkspur" AmmoPickup must be a value greater than or equal to 0
  130. "Larkspur (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  131. "Larkspur (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Larkspur.png
  132. "Larkspur Prime" AmmoPickup must be a value greater than or equal to 0
  133. "Larkspur Prime (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  134. "Larkspur Prime (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: LarkspurPrime.png
  135. "Laser Rifle" AmmoPickup must be a value greater than or equal to 0
  136. "Lavan Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  137. "Lavan Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  138. "Lavan Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  139. "Lavan Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  140. "Lavan Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  141. "Lavan Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  142. "Lavan Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  143. "Lavan Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  144. "Lavan Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  145. "Lavan Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  146. "Lavan Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  147. "Lavan Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  148. "Lavan Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  149. "Lavan Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  150. "Lavan Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  151. "Lavan Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  152. "Lavan Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  153. "Lavan Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  154. "Lavan Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  155. "Lavan Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  156. "Lavan Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  157. "Lavan Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  158. "Lavan Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  159. "Lavan Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  160. "Lavan Laith MK I" AmmoPickup must be a value greater than or equal to 0
  161. "Lavan Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  162. "Lavan Laith MK II" AmmoPickup must be a value greater than or equal to 0
  163. "Lavan Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  164. "Lavan Laith MK III" AmmoPickup must be a value greater than or equal to 0
  165. "Lavan Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  166. "Lavan Photor MK I" AmmoPickup must be a value greater than or equal to 0
  167. "Lavan Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  168. "Lavan Photor MK II" AmmoPickup must be a value greater than or equal to 0
  169. "Lavan Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  170. "Lavan Photor MK III" AmmoPickup must be a value greater than or equal to 0
  171. "Lavan Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  172. "Lavan Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  173. "Lavan Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  174. "Lavan Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  175. "Lavan Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  176. "Lavan Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  177. "Lavan Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  178. "Lavan Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  179. "Lavan Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  180. "Lavan Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  181. "Lavan Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  182. "Lavan Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  183. "Lavan Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  184. "Lavan Vort MK I" AmmoPickup must be a value greater than or equal to 0
  185. "Lavan Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  186. "Lavan Vort MK II" AmmoPickup must be a value greater than or equal to 0
  187. "Lavan Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  188. "Lavan Vort MK III" AmmoPickup must be a value greater than or equal to 0
  189. "Lavan Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  190. "Lega Prism" AmmoPickup must be a value greater than or equal to 0
  191. "MK1-Braton" Image should be in the form of "WeaponName.png"; current value: Braton.png
  192. "MK1-Furis" Image should be in the form of "WeaponName.png"; current value: Furis.png
  193. "MK1-Kunai" Image should be in the form of "WeaponName.png"; current value: Kunai.png
  194. "MK1-Paris" Image should be in the form of "WeaponName.png"; current value: Paris.png
  195. "MK1-Strun" Image should be in the form of "WeaponName.png"; current value: Strun.png
  196. "Mandonel" AmmoPickup must be a value greater than or equal to 0
  197. "Mandonel" Missing InternalName
  198. "Mandonel (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  199. "Mandonel (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Mandonel.png
  200. "Mandonel (Atmosphere)" Missing InternalName
  201. "Mausolon" AmmoPickup must be a value greater than or equal to 0
  202. "Mausolon (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  203. "Mausolon (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Mausolon.png
  204. "Milati" AmmoPickup must be a value greater than or equal to 0
  205. "Milati" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  206. "Milati MK I" AmmoPickup must be a value greater than or equal to 0
  207. "Milati MK I" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  208. "Milati MK II" AmmoPickup must be a value greater than or equal to 0
  209. "Milati MK II" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  210. "Milati MK III" AmmoPickup must be a value greater than or equal to 0
  211. "Milati MK III" Image should be in the form of "WeaponName.png"; current value: OrdnanceMilati.png
  212. "Morgha" AmmoPickup must be a value greater than or equal to 0
  213. "Morgha (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  214. "Morgha (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Morgha.png
  215. "Mote Amp" AmmoPickup must be a value greater than or equal to 0
  216. "Multron" AmmoPickup must be a value greater than or equal to 0
  217. "Orvius" Heavy attack must be greater than 0
  218. "Parazon" AmmoMax must be a value greater than or equal to 0
  219. "Parazon" AmmoPickup must be a value greater than or equal to 0
  220. "Parazon" Magazine must be a value above 0
  221. "Parazon" Missing reload time or reload time has to be above 0
  222. "Parazon" Missing trigger type of weapon
  223. "Pathocyst" Heavy attack must be greater than 0
  224. "Pencha Scaffold" AmmoPickup must be a value greater than or equal to 0
  225. "Phaedra" AmmoPickup must be a value greater than or equal to 0
  226. "Phaedra (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  227. "Phaedra (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Phaedra.png
  228. "Phahd Scaffold" AmmoPickup must be a value greater than or equal to 0
  229. "Photor" AmmoPickup must be a value greater than or equal to 0
  230. "Photor" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  231. "Photor MK I" AmmoPickup must be a value greater than or equal to 0
  232. "Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  233. "Photor MK II" AmmoPickup must be a value greater than or equal to 0
  234. "Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  235. "Photor MK III" AmmoPickup must be a value greater than or equal to 0
  236. "Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  237. "Prime Laser Rifle" AmmoPickup must be a value greater than or equal to 0
  238. "Prisma Burst Laser" AmmoPickup must be a value greater than or equal to 0
  239. "Prisma Dual Decurions" AmmoPickup must be a value greater than or equal to 0
  240. "Prisma Dual Decurions (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  241. "Prisma Dual Decurions (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: PrismaDualDecurions.png
  242. "Propa Scaffold" AmmoPickup must be a value greater than or equal to 0
  243. "Pugil" AmmoMax must be a value greater than or equal to 0
  244. "Pugil" AmmoPickup must be a value greater than or equal to 0
  245. "Pugil" Missing InternalName
  246. "Pugil" Magazine must be a value above 0
  247. "Pugil" Missing reload time or reload time has to be above 0
  248. "Pugil" Missing trigger type of weapon
  249. "Pulsar" AmmoPickup must be a value greater than or equal to 0
  250. "Pulsar" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  251. "Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  252. "Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  253. "Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  254. "Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  255. "Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  256. "Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  257. "Rahn Prism" AmmoPickup must be a value greater than or equal to 0
  258. "Rampart" AmmoPickup must be a value greater than or equal to 0
  259. "Rampart" Disposition must be between 0.5-1.55; default should be 0.5
  260. "Rampart" Missing InternalName
  261. "Rampart" Missing mastery rank unlock and mastery has to between 0 and 16 inclusive
  262. "Raplak Prism" AmmoPickup must be a value greater than or equal to 0
  263. "Rattleguts (Primary)" AmmoPickup must be a value greater than or equal to 0
  264. "Rattleguts (Primary)" Image should be in the form of "WeaponName.png"; current value: Rattleguts.png
  265. "Rattleguts (Primary)" Magazine must be a value above 0
  266. "Rattleguts (Primary)" Missing reload time or reload time has to be above 0
  267. "Rattleguts (Secondary)" AmmoPickup must be a value greater than or equal to 0
  268. "Rattleguts (Secondary)" Image should be in the form of "WeaponName.png"; current value: Rattleguts.png
  269. "Rattleguts (Secondary)" Magazine must be a value above 0
  270. "Rattleguts (Secondary)" Missing reload time or reload time has to be above 0
  271. "Razorflies" AmmoMax must be a value greater than or equal to 0
  272. "Razorflies" AmmoPickup must be a value greater than or equal to 0
  273. "Razorflies" Image should be in the form of "WeaponName.png"; current value: Panel.png
  274. "Razorflies" Magazine must be a value above 0
  275. "Razorflies" Missing reload time or reload time has to be above 0
  276. "Razorflies" Missing trigger type of weapon
  277. "Shraksun Scaffold" AmmoPickup must be a value greater than or equal to 0
  278. "Shwaak Prism" AmmoPickup must be a value greater than or equal to 0
  279. "Sirocco" AmmoPickup must be a value greater than or equal to 0
  280. "Soaktron" AmmoPickup must be a value greater than or equal to 0
  281. "Soaktron" Missing InternalName
  282. "Soaktron" Missing reload time or reload time has to be above 0
  283. "Sporelacer (Primary)" Image should be in the form of "WeaponName.png"; current value: Sporelacer.png
  284. "Sporelacer (Primary)" Magazine must be a value above 0
  285. "Sporelacer (Primary)" Missing reload time or reload time has to be above 0
  286. "Sporelacer (Secondary)" Image should be in the form of "WeaponName.png"; current value: Sporelacer.png
  287. "Sporelacer (Secondary)" Magazine must be a value above 0
  288. "Sporelacer (Secondary)" Missing reload time or reload time has to be above 0
  289. "Stinger" AmmoPickup must be a value greater than or equal to 0
  290. "Sweeper" AmmoPickup must be a value greater than or equal to 0
  291. "Sweeper Prime" AmmoPickup must be a value greater than or equal to 0
  292. "Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  293. "Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  294. "Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  295. "Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  296. "Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  297. "Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  298. "Tazicor" AmmoPickup must be a value greater than or equal to 0
  299. "Tombfinger (Primary)" Image should be in the form of "WeaponName.png"; current value: Tombfinger.png
  300. "Tombfinger (Primary)" Magazine must be a value above 0
  301. "Tombfinger (Primary)" Missing reload time or reload time has to be above 0
  302. "Tombfinger (Secondary)" Image should be in the form of "WeaponName.png"; current value: Tombfinger.png
  303. "Tombfinger (Secondary)" Magazine must be a value above 0
  304. "Tombfinger (Secondary)" Missing reload time or reload time has to be above 0
  305. "Tunguska Cannon" AmmoPickup must be a value greater than or equal to 0
  306. "Tunguska Cannon" Image should be in the form of "WeaponName.png"; current value: DomeCharge.png
  307. "Tunguska Cannon" Missing InternalName
  308. "Tycho Seeker" AmmoPickup must be a value greater than or equal to 0
  309. "Tycho Seeker" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  310. "Tycho Seeker MK I" AmmoPickup must be a value greater than or equal to 0
  311. "Tycho Seeker MK I" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  312. "Tycho Seeker MK II" AmmoPickup must be a value greater than or equal to 0
  313. "Tycho Seeker MK II" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  314. "Tycho Seeker MK III" AmmoPickup must be a value greater than or equal to 0
  315. "Tycho Seeker MK III" Image should be in the form of "WeaponName.png"; current value: OrdnanceTychoSeeker.png
  316. "Unarmed" AmmoMax must be a value greater than or equal to 0
  317. "Unarmed" AmmoPickup must be a value greater than or equal to 0
  318. "Unarmed" Image should be in the form of "WeaponName.png"; current value: Blank.png
  319. "Unarmed" Missing InternalName
  320. "Unarmed" Magazine must be a value above 0
  321. "Unarmed" Missing reload time or reload time has to be above 0
  322. "Unarmed" Missing trigger type of weapon
  323. "Velocitus" AmmoPickup must be a value greater than or equal to 0
  324. "Velocitus (Atmosphere)" AmmoPickup must be a value greater than or equal to 0
  325. "Velocitus (Atmosphere)" Image should be in the form of "WeaponName.png"; current value: Velocitus.png
  326. "Verglas" AmmoPickup must be a value greater than or equal to 0
  327. "Vermisplicer (Primary)" Image should be in the form of "WeaponName.png"; current value: Vermisplicer.png
  328. "Vermisplicer (Primary)" Magazine must be a value above 0
  329. "Vermisplicer (Primary)" Missing reload time or reload time has to be above 0
  330. "Vermisplicer (Secondary)" Image should be in the form of "WeaponName.png"; current value: Vermisplicer.png
  331. "Vermisplicer (Secondary)" Magazine must be a value above 0
  332. "Vermisplicer (Secondary)" Missing reload time or reload time has to be above 0
  333. "Vidar Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  334. "Vidar Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  335. "Vidar Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  336. "Vidar Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  337. "Vidar Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  338. "Vidar Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  339. "Vidar Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  340. "Vidar Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  341. "Vidar Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  342. "Vidar Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  343. "Vidar Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  344. "Vidar Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  345. "Vidar Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  346. "Vidar Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  347. "Vidar Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  348. "Vidar Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  349. "Vidar Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  350. "Vidar Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  351. "Vidar Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  352. "Vidar Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  353. "Vidar Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  354. "Vidar Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  355. "Vidar Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  356. "Vidar Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  357. "Vidar Laith MK I" AmmoPickup must be a value greater than or equal to 0
  358. "Vidar Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  359. "Vidar Laith MK II" AmmoPickup must be a value greater than or equal to 0
  360. "Vidar Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  361. "Vidar Laith MK III" AmmoPickup must be a value greater than or equal to 0
  362. "Vidar Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  363. "Vidar Photor MK I" AmmoPickup must be a value greater than or equal to 0
  364. "Vidar Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  365. "Vidar Photor MK II" AmmoPickup must be a value greater than or equal to 0
  366. "Vidar Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  367. "Vidar Photor MK III" AmmoPickup must be a value greater than or equal to 0
  368. "Vidar Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  369. "Vidar Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  370. "Vidar Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  371. "Vidar Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  372. "Vidar Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  373. "Vidar Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  374. "Vidar Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  375. "Vidar Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  376. "Vidar Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  377. "Vidar Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  378. "Vidar Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  379. "Vidar Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  380. "Vidar Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  381. "Vidar Vort MK I" AmmoPickup must be a value greater than or equal to 0
  382. "Vidar Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  383. "Vidar Vort MK II" AmmoPickup must be a value greater than or equal to 0
  384. "Vidar Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  385. "Vidar Vort MK III" AmmoPickup must be a value greater than or equal to 0
  386. "Vidar Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  387. "Vort MK I" AmmoPickup must be a value greater than or equal to 0
  388. "Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  389. "Vort MK II" AmmoPickup must be a value greater than or equal to 0
  390. "Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  391. "Vort MK III" AmmoPickup must be a value greater than or equal to 0
  392. "Vort MK III" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  393. "Vulcax" AmmoPickup must be a value greater than or equal to 0
  394. "Vulklok" AmmoPickup must be a value greater than or equal to 0
  395. "Xoris" Heavy attack must be greater than 0
  396. "Zetki Apoc MK I" AmmoPickup must be a value greater than or equal to 0
  397. "Zetki Apoc MK I" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  398. "Zetki Apoc MK II" AmmoPickup must be a value greater than or equal to 0
  399. "Zetki Apoc MK II" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  400. "Zetki Apoc MK III" AmmoPickup must be a value greater than or equal to 0
  401. "Zetki Apoc MK III" Image should be in the form of "WeaponName.png"; current value: TurretApoc.png
  402. "Zetki Carcinnox MK I" AmmoPickup must be a value greater than or equal to 0
  403. "Zetki Carcinnox MK I" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  404. "Zetki Carcinnox MK II" AmmoPickup must be a value greater than or equal to 0
  405. "Zetki Carcinnox MK II" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  406. "Zetki Carcinnox MK III" AmmoPickup must be a value greater than or equal to 0
  407. "Zetki Carcinnox MK III" Image should be in the form of "WeaponName.png"; current value: TurretCarcinnox.png
  408. "Zetki Cryophon MK I" AmmoPickup must be a value greater than or equal to 0
  409. "Zetki Cryophon MK I" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  410. "Zetki Cryophon MK II" AmmoPickup must be a value greater than or equal to 0
  411. "Zetki Cryophon MK II" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  412. "Zetki Cryophon MK III" AmmoPickup must be a value greater than or equal to 0
  413. "Zetki Cryophon MK III" Image should be in the form of "WeaponName.png"; current value: TurretCryophon.png
  414. "Zetki Glazio MK I" AmmoPickup must be a value greater than or equal to 0
  415. "Zetki Glazio MK I" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  416. "Zetki Glazio MK II" AmmoPickup must be a value greater than or equal to 0
  417. "Zetki Glazio MK II" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  418. "Zetki Glazio MK III" AmmoPickup must be a value greater than or equal to 0
  419. "Zetki Glazio MK III" Image should be in the form of "WeaponName.png"; current value: TurretGlazio.png
  420. "Zetki Laith MK I" AmmoPickup must be a value greater than or equal to 0
  421. "Zetki Laith MK I" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  422. "Zetki Laith MK II" AmmoPickup must be a value greater than or equal to 0
  423. "Zetki Laith MK II" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  424. "Zetki Laith MK III" AmmoPickup must be a value greater than or equal to 0
  425. "Zetki Laith MK III" Image should be in the form of "WeaponName.png"; current value: TurretLaith.png
  426. "Zetki Photor MK I" AmmoPickup must be a value greater than or equal to 0
  427. "Zetki Photor MK I" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  428. "Zetki Photor MK II" AmmoPickup must be a value greater than or equal to 0
  429. "Zetki Photor MK II" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  430. "Zetki Photor MK III" AmmoPickup must be a value greater than or equal to 0
  431. "Zetki Photor MK III" Image should be in the form of "WeaponName.png"; current value: TurretPhotor.png
  432. "Zetki Pulsar MK I" AmmoPickup must be a value greater than or equal to 0
  433. "Zetki Pulsar MK I" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  434. "Zetki Pulsar MK II" AmmoPickup must be a value greater than or equal to 0
  435. "Zetki Pulsar MK II" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  436. "Zetki Pulsar MK III" AmmoPickup must be a value greater than or equal to 0
  437. "Zetki Pulsar MK III" Image should be in the form of "WeaponName.png"; current value: TurretPulsar.png
  438. "Zetki Talyn MK I" AmmoPickup must be a value greater than or equal to 0
  439. "Zetki Talyn MK I" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  440. "Zetki Talyn MK II" AmmoPickup must be a value greater than or equal to 0
  441. "Zetki Talyn MK II" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  442. "Zetki Talyn MK III" AmmoPickup must be a value greater than or equal to 0
  443. "Zetki Talyn MK III" Image should be in the form of "WeaponName.png"; current value: TurretTalyn.png
  444. "Zetki Vort MK I" AmmoPickup must be a value greater than or equal to 0
  445. "Zetki Vort MK I" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  446. "Zetki Vort MK II" AmmoPickup must be a value greater than or equal to 0
  447. "Zetki Vort MK II" Image should be in the form of "WeaponName.png"; current value: TurretVort.png
  448. "Zetki Vort MK III" AmmoPickup must be a value greater than or equal to 0
  449. "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