Skip to content

Add the Warden - #307

Merged
SunkenInTime merged 1 commit into
mainfrom
t3/warden
Oct 15, 2026
Merged

SunkenInTime merged 1 commit into
mainfrom
t3/warden

Conversation

@SunkenInTime

@SunkenInTime SunkenInTime commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

VALORANT added a new rifle, the Warden, and players couldn't give it to an agent in Icarus. Now it's in the Weapon menu under Rifles, after the Vandal. Replays show it next to whoever bought one.

(Asked for as "the Outlaw", but the Outlaw has been in Icarus since the weapons landed. The Warden is the gun VALORANT just added.)

What changed

  • The gun. warden goes last in WeaponType, so it's saved as Hive index 20 and JSON "warden", and no existing saved index moves.
  • The icon. Valorant-API's kill-feed silhouette, the same source as every other gun (assets/weapons/README.md), with its visible bounds in WeaponIcon.
  • Replays. The game keeps the gun in /Game/Equippables/Guns/Rifles/BattleRifle/, so that folder maps to the Warden. I checked the path against a real 13.08 replay: someone bought one about 23:40 into it.

Older builds

  • Desktop 4.6.3 reads index 20 as "no weapon". A page holding a Warden still opens there whole; that agent is just unarmed, and keeps nothing if 4.6.3 saves it back. Until now the rollback tests decoded weapons with this build's adapter, on the grounds that it hadn't changed since 4.6.3. It has now, so they use 4.6.3's own weapon adapter, copied from the tag, and a new test proves the above. It fails if 4.6.3's adapter is swapped for this build's.
  • JSON in older builds is the same story as every new agent (Miks was added the same way). A 4.6.x build, or a web tab still running the previous deploy, fails to decode "weapon": "warden". So an .ica holding a Warden won't import into 4.6.3. A stale web tab may also fail to show a teammate's Warden until it reloads. The server stores the payload as is and doesn't check weapon names.

How it was checked

  • flutter test on the weapon, widget, rollback and Hive layout tests: 37 pass. The catalogue test now renders 20 guns on an agent; the Warden sits like the other rifles.
  • A Windows release build, used in the running app (Astra drove it; I checked the screenshots):
    • Weapon > Rifles lists Bulldog, Guardian, Phantom, Vandal, Warden, each with its silhouette.
    • A Warden on a placed agent and on a lineup origin sits on the portrait the same way the Vandal does, at normal zoom and zoomed in.
    • In the 13.08 Abyss replay, round 16, Fade's roster row and map badge show the Warden from the buy phase on.

ci: analyze test

🤖 Generated with Claude Code

VALORANT's new rifle. It goes last in WeaponType so every saved index
stays put (Hive index 20), and lists after the Vandal under Rifles. The
icon is Valorant-API's kill-feed silhouette, like the other guns, and
replays map the game's /Rifles/BattleRifle/ folder to it.

Desktop 4.6.3 doesn't know index 20 and reads it as no weapon. The
rollback tests now use 4.6.3's own weapon adapter and prove a page with
a Warden still opens there whole, with that agent unarmed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f7ccfe60-0432-44e9-a848-22748ddbfddb
📥 Commits

Reviewing files that changed from the base of the PR and between 20e373c and 74d1e0e.

⛔ Files ignored due to path filters: 1
  • assets/weapons/warden.png is excluded by !**/*.png
📒 Files selected for processing: 10
  • assets/weapons/README.md
  • lib/const/placed_classes.g.dart
  • lib/const/weapons.dart
  • lib/hive/hive_adapters.g.dart
  • lib/hive/hive_adapters.g.yaml
  • lib/replay/replay_weapons.dart
  • lib/widgets/draggable_widgets/agents/weapon_icon.dart
  • test/agent_weapon_widgets_test.dart
  • test/desktop_4_6_3_adapters_test_support.dart
  • test/hive_desktop_rollback_test.dart

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The weapon enum adds Warden as a rifle. Serialization, replay mapping, icon artwork bounds, and rendering tests include the new weapon. Desktop 4.6.3 rollback handling maps Warden to WeaponType.none.

Changes: Warden weapon support

Layer / File(s) Summary
Weapon type and serialization
lib/const/weapons.dart, lib/const/placed_classes.g.dart, lib/hive/hive_adapters.g.dart, lib/hive/hive_adapters.g.yaml
WeaponType adds Warden as a rifle. The placed-class and Hive serialization mappings include it at index 20.
Replay and icon support
lib/replay/replay_weapons.dart, lib/widgets/draggable_widgets/agents/weapon_icon.dart, assets/weapons/README.md, test/agent_weapon_widgets_test.dart
Replay mapping and icon bounds include Warden. The asset source table lists its icon, and the rendering test expects 20 weapon icons.
Desktop 4.6.3 rollback handling
test/desktop_4_6_3_adapters_test_support.dart, test/hive_desktop_rollback_test.dart
The legacy adapter maps unknown weapon bytes to WeaponType.none and cannot write Warden. The rollback test verifies that Warden values read as WeaponType.none while other weapon values remain unchanged.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to 74d1e

This adds the Warden weapon with its icon and replay mapping. Older app builds will show the agent unarmed, which is a known and tested tradeoff. No merge-blocking risk was found.

Pre-merge checks: Passed 5
Passed Passed checks: 5 passed
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely identifies the main change: adding the Warden weapon.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@SunkenInTime
SunkenInTime merged commit 5905ab1 into main Oct 15, 2026
14 checks passed
@SunkenInTime
SunkenInTime deleted the t3/warden branch October 15, 2026 05:22
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.

1 participant