Repository navigation
Pistol slide lock with the Tachi reload asset (pairs with neoAssets) - #2259
Open
sunzenshen wants to merge 5 commits into
Open
sunzenshen wants to merge 5 commits into
sunzenshen wants to merge 5 commits into
Conversation
This was referenced Oct 17, 2026
Contributor
Author
|
This PR (2259) is the more complete solution, but I am proposing #2248 simultaneously, because I think we need to figure out how to handle the raw precompiled animation files from NeotokyoRebuild/neoAssets#170 . Maybe they shouldn't be in neoAssets? So it might be easier to merge 2248 first before we figure out the answer to animation file management. |
sunzenshen
marked this pull request as ready for review
October 17, 2026 02:03
Contributor
Author
|
Demo of the custom tachi slide-open animation (right most example) compared to a code only solution: 682226330-b7f4b4ea-ef36-4313-8a63-cf044174e7c4.mp4 |
Contributor
Author
|
TODO: I still need to make a blender project example for the custom animation. |
The Tachi and Milso viewmodels have an idle01empty sequence with the slide held back, which neo never played: an emptied pistol held its last fire frame for 2.0 s and then idled with the slide forward. The original NEOTOKYO holds the slide back from the end of the last shot until the reload. Send ACT_VM_IDLE_EMPTY for ACT_VM_IDLE while the clip is empty, as the SDK crossbow does, and go to it as the emptying shot's sequence ends. Models without the sequence are unchanged.
The Tachi and Milso viewmodels ship a drawempty sequence, the normal draw with the slide held back, but it carries no activity, so an empty pistol drew with the slide forward and only pulled it back as the empty idle faded in. Pick drawempty by name in Deploy when the clip is empty. Models without it, and loaded draws, are unchanged.
The shot that emptied a Tachi or Milso played its normal fire sequence, whose slide closes within 0.2 s, and the slide went back only when the empty idle followed 0.4 s later. Both pistols ship a dry fire sequence that is a shot's kick with the slide held back throughout, ending on the empty idle's pose, so the last round's shot plays that instead.
A reload always played the reload sequence, whose slide is forward from its first frame, so the slide of an empty pistol closed as the reload began. The Milso ships a reload for an empty gun (ACT_VM_RELOAD_EMPTY) that keeps the slide back until its release near the end, the same length as the reload; an empty weapon now plays it where the model has one.
sunzenshen
force-pushed
the
vm-empty-slide-assets
branch
from
October 26, 2026 04:48
3adcb38 to
e84fa2e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The same code as #2248, paired with NeotokyoRebuild/neoAssets#170 (the Tachi's reload from empty), for reviewers who want to merge both at once. Merge this PR or #2248, not both. Description, results, testing and clips are in #2248.
What the pair does for the Tachi and Milso:
ACT_VM_IDLEis sent asACT_VM_IDLE_EMPTYwhere the model has it.fireempty, a shot's kick with the slide held back, so the slide locks at the shot and the empty idle follows when it ends.drawempty, picked by name since it has no activity.ACT_VM_RELOAD_EMPTYwhere the model has it, with the third-person reload gesture as for any reload: the Milso's shippedreloadempty, and the Tachi's from Tachi: reload from empty with the slide held back neoAssets#170. The slide stays back until the end of the reload.Without the neoAssets PR this code still works: the Tachi keeps the normal reload, as in #2248.
How to test
With NeotokyoRebuild/neoAssets#170: steps 1-5 of #2248. In step 4, the Tachi's slide stays back through a reload from empty and goes forward near its end, on both teams.
Related