Skip to content

Conversation

@Reuzehagel
Copy link

@Reuzehagel Reuzehagel commented Nov 27, 2025

⚠️ Draft PR - Looking for feedback on the approach before marking ready.

Question for maintainers: Is there a preferred way to handle weapons like Kuva variants that don't have weapon-class-specific paths in DE's data? Currently using manual path entries similar to the existing /LongGuns/PrimeStrun pattern.


What did you fix?

Primary weapons were incorrectly typed as "Rifle" when they should have specific weapon class types for mod compatibility:

  • Shotgun: Kuva Hek, Kuva Sobek, Kuva Drakgoon, Kuva Kohm, Vaykor Hek, Drakgoon, Kohm, Sancti Tigris, Tigris Prime, Astilla Prime, Corinth Prime, Cedo Prime, Tenet Arca Plasmor, Mk1-Strun, Bubonico, Convectrix
  • Bow: All weapons in /Bows/ and /Bow/ paths, Mk1-Paris
  • Crossbow: Zhuge, Zhuge Prime, Attica, Nagantaka, Nagantaka Prime
  • Launcher: Ogris, Kuva Ogris, Tonkor, Kuva Tonkor, Penta, Secura Penta, Carmine Penta, Zarr, Kuva Zarr, Torid, Tenet Envoy
  • Speargun: Afentis, Scourge, Scourge Prime, Ferrox, Tenet Ferrox, Javlok
  • Sniper Rifle: Rubico, Rubico Prime, Vectis, Vectis Prime, Lanka, Vulkar, Vulkar Wraith, Snipetron, Snipetron Vandal, Komorex, Sporothrix, Coda Sporothrix, Perigale, Vadarya Prime

These weapons were falling through to the itemType patterns which assigned them "Rifle" type.


Reproduction steps

  1. Run npm run build
  2. Check data/json/Primary.json for weapons like "Kuva Hek", "Paris", "Ogris"
  3. Notice they all have "type": "Rifle" instead of their correct weapon class

Evidence/screenshot/link to line

Reference: https://wiki.warframe.com/w/Template:WeaponNav#Primary

And Discord messages sent by Reuzehagel (Nov 27th 20:48)

The Wiki categorizes these weapons into classes (Shotguns, Bows, Sniper Rifles, etc.) which affects mod compatibility.


Considerations

  • Does this contain a new dependency? No
  • Does this introduce opinionated data formatting or manual data entry? Yes
    • These manual entries are needed because Kuva/Tenet/Prime variants don't have weapon-class-specific paths in DE's data. Open to suggestions if there's a more automated approach.
  • Does this pr include updated data files in a separate commit that can be reverted for a clean code-only pr? No (only config/itemTypes.json is changed, data files are generated)
  • Have I run the linter? Yes
  • Is it a bug fix, feature request, or enhancement? Bug Fix

Summary by CodeRabbit

  • New Features
    • Expanded weapon classifications with many new entries (Bow, Launcher, Sniper, Shotgun, Dual Pistols, Throwing, etc.) for finer item recognition.
  • Changes
    • Public weapon types adjusted: added Bow, Kitgun, Launcher, Companion Weapon, and Sniper; removed Crossbow and Speargun; Sniper Rifle renamed to Sniper.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 27, 2025

Walkthrough

Added many new weapon ID→category mappings to config/itemTypes.json and updated public TypeScript unions in index.d.ts to reflect new/changed weapon type literals.

Changes

Cohort / File(s) Summary
Item type mappings
config/itemTypes.json
Added numerous new entries mapping weapon IDs (e.g., /Lotus/Weapons/...) to categories such as Pistol, Shotgun, Bow, Throwing, Dual Pistols, Launcher, Sniper, etc.; replaced a single /LongGuns/PrimeStrun entry with many more specific weapon paths.
Type declarations
index.d.ts
Adjusted exported type unions: removed Crossbow and Speargun from one union, replaced Sniper Rifle with Sniper, and updated WeaponType members (added Bow, Kitgun, Launcher, Companion Weapon in places while changing placement of Rifle/Pistol literals).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Review focus:
    • Validate correctness and absence of duplicates/conflicts in config/itemTypes.json additions
    • Ensure index.d.ts union changes remain consistent with the new mappings and existing API consumers
    • Confirm the replacement of the PrimeStrun entry preserves intended resolution of IDs

Suggested labels

Scope: Data

Suggested reviewers

  • TobiTenno

Poem

🐰 I hopped through JSON rows tonight,
Sprinkled pistol, bow, and sniper light,
Paths multiplied, each ID found its bed,
Type names twitched and settled overhead—
A joyful nibble, then a happy tread. 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: correct weapon type classifications in itemTypes.json' accurately reflects the main change—correcting weapon type classifications in the itemTypes configuration file, which aligns with the PR's core objective of fixing incorrect primary weapon classifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Reuzehagel Reuzehagel force-pushed the fix/weapon-type-classifications branch from 155b4dd to 0cb49cb Compare November 29, 2025 11:16
@TobiTenno
Copy link
Member

@Reuzehagel please rebase. (DO NOT MERGE UPSTREAM INTO YOUR BRANCH)

@TobiTenno TobiTenno force-pushed the fix/weapon-type-classifications branch from 0cb49cb to 19fc989 Compare November 29, 2025 15:40
@TobiTenno
Copy link
Member

@Reuzehagel i just rebased it, you'll want to pull

@Reuzehagel Reuzehagel marked this pull request as ready for review November 29, 2025 15:47
@Reuzehagel Reuzehagel requested a review from a team as a code owner November 29, 2025 15:47
@Reuzehagel Reuzehagel requested a review from AyAyEm November 29, 2025 15:47
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
index.d.ts (1)

940-956: WeaponType expansion aligns with data; note TS surface-area change

Adding Bow, Crossbow, Launcher, Sniper Rifle, and Speargun (while retaining Kitgun and Companion Weapon) looks correct and matches the new item type mappings, so RivenMod['type'] can now express the intended categories via ${WeaponType} Riven Mod. This is a widening of the exported union, so TS consumers doing exhaustive switch/never checks may see new compile-time cases; worth calling out in release notes or a minor/major bump depending on your versioning policy.

config/itemTypes.json (1)

966-1177: Primary weapon subclass mappings match design; verify ordering and coverage

This block cleanly encodes the intended primary subclasses:

  • Shotguns: Kuva/Vaykor Hek, Kuva Sobek/Drakgoon/Kohm, Drakgoon/Kohm bases, Sancti/Tigris Prime, Astilla/Corinth/Cedo primes, Tenet Arca Plasmor, Mk1-Strun, Bubonico (InfArmCannon), Convectrix (CrpSplitLaser).
  • Bows: Mk1-Paris, all /Bows/ and /Bow/ paths.
  • Crossbows: Zhuge/Zhuge Prime, Attica, Nagantaka/Nagantaka Prime.
  • Launchers: Ogris/Kuva Ogris, Tonkor/Kuva Tonkor, Penta/Secura/Carmine Penta, Zarr/Kuva Zarr, Torid, Tenet Envoy.
  • Spearguns: Afentis, Scourge/Scourge Prime, Javlok (incl. Grineer flame spear variants), Tenet Ferrox.
  • Sniper rifles: Rubico/Rubico Prime, Vectis/Vectis Prime, Lanka, Vulkar/Vulkar Wraith, Snipetron/Vandal, Komorex, Sporothrix/Coda Sporothrix, Perigale, plus the generic sniper paths.

The placements before /LongGunsRifle and ClanTech/.*WeaponRifle look correct to ensure these don’t get typed as generic Rifles instead.

Two follow-ups to consider:

  • Confirm the matcher truly stops on the first hit for non-append entries; if it keeps scanning and overwriting, later generic patterns could still re-type these as Rifle.
  • Double-check whether any base variants (e.g., non-Tenet Ferrox, any newer launcher/speargun/sniper with slightly different paths) are missing and should also get explicit entries alongside these.

If both checks pass, this block should fix the reported mis-typings without collateral reclassification.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c5933af and 19fc989.

📒 Files selected for processing (2)
  • config/itemTypes.json (2 hunks)
  • index.d.ts (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: SlayerOrnstein
Repo: WFCD/warframe-items PR: 663
File: config/masterableCategories.json:1-2
Timestamp: 2024-12-03T23:47:24.677Z
Learning: In the 'warframe-items' repository, when suggesting changes to regex patterns in 'config/masterableCategories.json', ensure that added patterns only include items relevant to the current PR context, and avoid adding items not present in the context.
📚 Learning: 2024-12-03T23:47:24.677Z
Learnt from: SlayerOrnstein
Repo: WFCD/warframe-items PR: 663
File: config/masterableCategories.json:1-2
Timestamp: 2024-12-03T23:47:24.677Z
Learning: In the 'warframe-items' repository, when suggesting changes to regex patterns in 'config/masterableCategories.json', ensure that added patterns only include items relevant to the current PR context, and avoid adding items not present in the context.

Applied to files:

  • config/itemTypes.json
🔇 Additional comments (1)
config/itemTypes.json (1)

906-931: Secondary classifications look right; confirm Grimoire/Tome intent

The new mappings here look consistent with in-game behavior:

  • /KuvaLich/Secondaries/, VTDetron, and MK1FurisPistol
  • MK1KunaiThrowing
  • Entrati wrist gun and Twin Grakatas → Pistol / Dual Pistols respectively

The only subtle point is /Tenno/Grimoire/Pistol while Tenno/Grimoire later in the file still maps to Tome. Depending on how the matcher walks this array (first-match vs last-match, substring vs regex), one of these will dominate. Please double-check which type you actually want exposed for Grimoire in data/json/Secondary.json and that the matching logic won’t silently pick the unintended one.

@AyAyEm
Copy link
Member

AyAyEm commented Nov 29, 2025

Thanks for the PR always good to fix some mistakes in the data, it seems the type checks were not happy though, gonna check it tomorrow

@TobiTenno
Copy link
Member

well, just on the last error in the list, it's a Bow Mod and it's getting type'd as Bow, so that seems wrong....

Copy link
Member

@AyAyEm AyAyEm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First good job i know it takes some time to add these things (if you didn't use ai), most of the additions are okay and could be merged fast but the ones that add a new data type we're gonna to have to discuss them first.

The short and long format for id are not really a thing in the itemTypes.json but using the long format helps in knowing that entry refers to a single item, so long id format should be used here in most entries.

Let's just agree on the already defined types:
Shotgun is basically reserved for weapons that shoots a lot of pellets, that's a shotgun in warframe.
The rifle is a weapon that (in general) shoots one pellet per round and for pratical purposes is basically any weapon that doesn't have a more defined type.

We should discuss the following:
Sniper Rifle should we use just Sniper or Sniper Rifle? Would a sniper be a rifle that has a scope (right click to zoom)?
Pistol would be basically a secondary rifle
Launcher a rifle that shoots a projectile that explodes?
What would the need be in adding speargun and crossbow?

Dont merge the suggestions until @TobiTenno (need your help on this one) puts a thumbs up emoji on them

In retrospect i should have done fewer suggestions with more code in it, it seems github doesnt handle very well this amount of suggestions.

Comment on lines 1026 to 1037
{
"id": "/Bows/",
"name": "Bow"
},
{
"id": "/Bow/",
"name": "Bow"
},
Copy link
Member

@AyAyEm AyAyEm Nov 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{
"id": "/Bows/",
"name": "Bow"
},
{
"id": "/Bow/",
"name": "Bow"
},
{
"id": "/(Tenno|Grineer|Corpus)/Bows?",
"regex": true,
"name": "Bow"
},
{
"id": "/Syndicates/[a-zA-Z]+/Bows?",
"regex": true,
"name": "Bow"
},

"name": "Sniper Rifle"
},
{
"id": "/LongGuns/PrimeLightningGun/",
Copy link
Member

@AyAyEm AyAyEm Nov 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does vadarya have scope?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it does it has a scoped mode and unscoped mode iirc. Wiki also classifies it as a sniper.

@TobiTenno
Copy link
Member

i agree with the overall suggestions for change, i'm worried that these are all going to perpetuate a pattern of adding individual items into this itemTypes file, which is not the intention. Commonalities in unique names should be found and summarized, and every item should not need to be overridden to have the right type

@AyAyEm
Copy link
Member

AyAyEm commented Nov 30, 2025

I agree with you and i think the same but it's pretty messy sometimes that make any pattern out of it basically impossible, as long as we can figure out a pattern it should take precedence otherwise it's gonna to be messy and there's basically nothing we can do about it (other than not adding these because we dont like it)

@AyAyEm
Copy link
Member

AyAyEm commented Nov 30, 2025

@Reuzehagel please refactor the ids that are meant to a single weapon and ill delete the suggestions, its killing browser performance.

@Reuzehagel
Copy link
Author

For weapon type definitions:

  • Sniper, scoped primary (with shot combo multiplier), has exclusive mods. Game uses 'Sniper' on mods so I think just Sniper is enough. But the Wiki does classify it as a Sniper Rifle. Point to be made for both.
  • Launcher, explosive projectile weapon, has at least one exclusive mod (Adhesive Blast)
  • Crossbow / Speargun, agreed, these don't need separation. They use rifle mods. I'll remove these and keep them as Rifle.

I'll also refactor the IDs to use the full format as suggested when I get around to it tomorrow.

@Reuzehagel
Copy link
Author

Lowkey no idea what happened... let me try again

Reuzehagel and others added 2 commits December 2, 2025 19:36
Primary weapons:
- Add Shotgun type for Kuva/Syndicate shotguns, Prime shotguns, Bubonico, Convectrix
- Add Bow type for all bow weapons including Mk1-Paris
- Add Crossbow type for Zhuge, Attica, Nagantaka variants
- Add Launcher type for Ogris, Tonkor, Penta, Zarr variants, Torid, Tenet Envoy
- Add Speargun type for Scourge, Ferrox, Javlok, Afentis
- Add Sniper Rifle type for Rubico, Vectis, Lanka, Vulkar, etc.

These weapons previously used the generic "Rifle" type (the default for Primary weapons).
Adding specific types improves mod compatibility matching in build tools and community apps.

Also add these weapon types to the WeaponType union in index.d.ts for proper RivenMod typing.
@Reuzehagel Reuzehagel force-pushed the fix/weapon-type-classifications branch from 6231275 to 7d3d59a Compare December 2, 2025 18:36
Copy link
Member

@AyAyEm AyAyEm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please the full format should include the entire uniqueName, don't do rebases with upstream at this point and do not squash commits yet. Also see the previous review i already updated it.

Comment on lines 1086 to 1137
{
"id": "/Lotus/Weapons/Corpus/LongGuns/CrpSentAmlgSniper/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/ClanTech/Energy/Railgun",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/TnQuadSniper/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/FiveShotSniper/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/RubicoPrime/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/Rifle/SniperRifle",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/Rifle/VandalSniperRifle",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Infested/LongGuns/InfSniperRifle/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Infested/InfestedLich/LongGuns/CodaSporothrix",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeLightningGun/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/Rifle/TennoSniperRifle",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeVectis/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Grineer/LongGuns/GrineerSniperRifle/",
"name": "Sniper"
},
Copy link
Member

@AyAyEm AyAyEm Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{
"id": "/Lotus/Weapons/Corpus/LongGuns/CrpSentAmlgSniper/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/ClanTech/Energy/Railgun",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/TnQuadSniper/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/FiveShotSniper/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/RubicoPrime/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/Rifle/SniperRifle",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/Rifle/VandalSniperRifle",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Infested/LongGuns/InfSniperRifle/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Infested/InfestedLich/LongGuns/CodaSporothrix",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeLightningGun/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/Rifle/TennoSniperRifle",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeVectis/",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Grineer/LongGuns/GrineerSniperRifle/",
"name": "Sniper"
},
{
"id": "/LongGuns/[a-zA-Z]*Sniper(Rifle)?/",
"regex": true,
"name": "Sniper"
},
{
"id": "/(Tenno|Grineer|Corpus)/Rifle/[a-zA-Z]*Sniper(Rifle)?",
"regex": true,
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/ClanTech/Energy/Railgun",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/RubicoPrime/RubicoPrimeWeapon",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Infested/InfestedLich/LongGuns/CodaSporothrix",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeLightningGun/PrimeLightningGun",
"name": "Sniper"
},
{
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeVectis/PrimeVectisRifle",
"name": "Sniper"
},

Comment on lines 1046 to 1085
{
"id": "/Lotus/Weapons/Corpus/LongGuns/CrpBriefcaseLauncher/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/ClanTech/Chemical/RocketLauncher",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/ClanTech/Bio/BioWeapon",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Corpus/LongGuns/GrenadeLauncher/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Syndicates/PerrinSequence/LongGuns/PSPenta",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/LongGuns/GrnGrenadeLauncher/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Tonkor/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Ogris/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Zarr/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/LongGuns/GrnCannon/",
"name": "Launcher"
},
Copy link
Member

@AyAyEm AyAyEm Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{
"id": "/Lotus/Weapons/Corpus/LongGuns/CrpBriefcaseLauncher/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/ClanTech/Chemical/RocketLauncher",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/ClanTech/Bio/BioWeapon",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Corpus/LongGuns/GrenadeLauncher/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Syndicates/PerrinSequence/LongGuns/PSPenta",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/LongGuns/GrnGrenadeLauncher/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Tonkor/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Ogris/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Zarr/",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/LongGuns/GrnCannon/",
"name": "Launcher"
},
{
"id": "/LongGuns/(Grn)?(Grenade|Cannon)[a-zA-Z]*/",
"regex": true,
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Corpus/LongGuns/CrpBriefcaseLauncher/CrpBriefcaseLauncher",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/ClanTech/Chemical/RocketLauncher",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/ClanTech/Bio/BioWeapon",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Syndicates/PerrinSequence/LongGuns/PSPenta",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Tonkor/KuvaTonkor",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Ogris/KuvaOgris",
"name": "Launcher"
},
{
"id": "/Lotus/Weapons/Grineer/KuvaLich/LongGuns/Zarr/KuvaZarr",
"name": "Launcher"
},
  {
    "id": "/HeavyWeapons/GrnHeavyGrenadeLauncher",
    "name": "Launcher"
  },

Can you see for me if kuva-ayanga supports adhesive blast? i dont have it.

I dont know what to do with the tenet ferrox https://wiki.warframe.com/w/Adhesive_Blast

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kuva Ayanga does not support adhesive blast. The wiki classifies it as a 'Archgun'.

Tenet Ferrox I think is an edge case I think... Warframe doing Warframe things...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we treat those either as 'Archgun' or 'Heavy Gun', can't remember which

Copy link
Author

@Reuzehagel Reuzehagel Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mausolon:

"type": "Arch-gun"

See line 690266 in All.json.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's just ignore the tenet ferrox and the kuva-ayanga.

…d partial weapon paths to use complete paths
Copilot AI review requested due to automatic review settings December 3, 2025 19:21
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
config/itemTypes.json (1)

967-1043: Consider consolidating individual weapon IDs with regex patterns for performance and maintainability.

This section introduces many entries with individual, fully-qualified weapon paths (e.g., /Lotus/Weapons/Grineer/KuvaLich/LongGuns/Hek/KuvaHekWeapon). While this approach ensures precise matching, it creates maintenance overhead and was flagged by reviewers as potentially harmful to browser performance when representing single weapons.

The code already uses broader pattern-based entries elsewhere in the file (e.g., line 1031–1036 with trailing slashes like /Lotus/Weapons/Tenno/Bows/). Consolidating similar weapon families with regex patterns would improve performance and reduce duplication.

Examples of potential consolidation opportunities:

  • Lines 971–985 (Kuva variants: Hek, Sobek, Drakgoon, Kohm) could use a regex pattern like /(Tenno|Grineer)/KuvaLich/LongGuns/.* with regex: true
  • Lines 1067–1085 (Launcher entries) include several individual paths that might benefit from broader patterns

Consider reviewing the regex suggestions from prior review comments (e.g., AyAyEm's Bow pattern suggestion) and applying similar consolidation here.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7d3d59a and 04c8bba.

📒 Files selected for processing (1)
  • config/itemTypes.json (3 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: SlayerOrnstein
Repo: WFCD/warframe-items PR: 663
File: config/masterableCategories.json:1-2
Timestamp: 2024-12-03T23:47:24.677Z
Learning: In the 'warframe-items' repository, when suggesting changes to regex patterns in 'config/masterableCategories.json', ensure that added patterns only include items relevant to the current PR context, and avoid adding items not present in the context.
📚 Learning: 2024-12-03T23:47:24.677Z
Learnt from: SlayerOrnstein
Repo: WFCD/warframe-items PR: 663
File: config/masterableCategories.json:1-2
Timestamp: 2024-12-03T23:47:24.677Z
Learning: In the 'warframe-items' repository, when suggesting changes to regex patterns in 'config/masterableCategories.json', ensure that added patterns only include items relevant to the current PR context, and avoid adding items not present in the context.

Applied to files:

  • config/itemTypes.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Agent
🔇 Additional comments (1)
config/itemTypes.json (1)

1087-1137: Verify individual Sniper rifle IDs match game data and cannot be consolidated further.

The Sniper entries mix specific full-path IDs (e.g., lines 1103–1104, 1131–1132) with regex patterns (e.g., lines 1107–1108). Confirm that each individual entry is necessary and that there isn't a shared naming pattern that would allow consolidation (e.g., paths containing Sniper or SniperRifle).

This aligns with the earlier feedback about avoiding per-item overrides where patterns are available.

@Reuzehagel
Copy link
Author

Sorry for making some mistakes btw. Ive never really used Git, besides having a single branch for some personal things.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes weapon type classifications in the itemTypes.json configuration file to correctly categorize primary weapons by their specific weapon classes (Shotgun, Bow, Sniper, Launcher) instead of defaulting all of them to "Rifle". This is important for mod compatibility in Warframe, as different weapon classes accept different sets of mods. The changes include updates to TypeScript type definitions to add new weapon types ('Bow', 'Launcher', 'Sniper') to the WeaponType union, rename 'Sniper Rifle' to 'Sniper', and remove unused types ('Crossbow', 'Speargun').

Key changes:

  • Added ~230 explicit weapon path mappings for Shotguns, Bows, Launchers, and Snipers that were previously falling through to the generic "Rifle" classification
  • Added 'Bow', 'Launcher', 'Sniper', 'Companion Weapon', and 'Kitgun' to the WeaponType union
  • Renamed 'Sniper Rifle' to 'Sniper' and removed 'Crossbow' and 'Speargun' from ItemType
  • Corrected PrimeStrun path from partial to full weapon path
  • Added explicit mappings for secondary weapons including Kuva Lich variants, MK1 series, Grimoires, and Twin Grakatas

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.

File Description
index.d.ts Updates TypeScript type definitions: adds weapon types to WeaponType union, renames 'Sniper Rifle' to 'Sniper', removes 'Crossbow' and 'Speargun' types
config/itemTypes.json Adds ~240 explicit weapon path mappings to correctly classify Shotguns, Bows, Launchers, Snipers, and various secondary weapons instead of defaulting to "Rifle"

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +967 to +969
"id": "/Lotus/Weapons/Tenno/LongGuns/PrimeStrun/PrimeStrunWeapon",
"name": "Shotgun"
},
Copy link

Copilot AI Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The path for PrimeStrun has been changed from a partial path "/LongGuns/PrimeStrun" to a full path "/Lotus/Weapons/Tenno/LongGuns/PrimeStrun/PrimeStrunWeapon". Verify that the old shorter path was indeed incorrect and that this longer path is the actual path used in the game data. If both paths are valid, consider whether the shorter path should be retained for backward compatibility or if it was never functional.

Copilot uses AI. Check for mistakes.
@AyAyEm
Copy link
Member

AyAyEm commented Dec 7, 2025

@Reuzehagel when you have time, take at the requested changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants