Fix bugs: Kalima ticket is not be created automatically if buy the Symbol of kundun from the NPC#807
Fix bugs: Kalima ticket is not be created automatically if buy the Symbol of kundun from the NPC#807foyo-ai wants to merge 3 commits into
Conversation
Buying a stackable item that completed an existing stack did not invoke the IItemStackedPlugIn plugin point, unlike the item-pickup and item-drag paths. As a result, completing a Symbol of Kundun stack (5/5) via an NPC purchase never triggered SymbolOfKundunStackedPlugIn, so it was not converted into a Lost Map (Kalima ticket). Invoke IItemStackedPlugIn after a purchase completes a stack, mirroring DroppedItem.TryStackOnItemAsync and MoveItemAction. Adds a test verifying the plugin point is invoked with the completed inventory stack. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_0192s5DNiL7YY7KFWwZjVwxQ
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a bug where purchasing stackable items from an NPC failed to trigger the item stacking plugin logic. By ensuring the IItemStackedPlugIn is invoked upon stack completion, the system now correctly processes items like the Symbol of Kundun, allowing them to be converted into Kalima tickets as intended. Highlights
New Features🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces support for invoking the IItemStackedPlugIn plugin point when a player completes an item stack by purchasing an item from an NPC, and includes a new test suite to verify this behavior. The review feedback highlights a potential NullReferenceException when accessing the nullable PlugInManager property directly, suggesting the use of a null-conditional operator to ensure safety.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| targetItem.Durability += storeItem.Durability; | ||
| await player.InvokeViewPlugInAsync<IItemDurabilityChangedPlugIn>(p => p.ItemDurabilityChangedAsync(targetItem, false)).ConfigureAwait(false); | ||
| await player.InvokeViewPlugInAsync<IBuyNpcItemFailedPlugIn>(p => p.BuyNpcItemFailedAsync()).ConfigureAwait(false); | ||
| if (player.GameContext.PlugInManager.GetPlugInPoint<IItemStackedPlugIn>() is { } itemStackedPlugIn) |
There was a problem hiding this comment.
The PlugInManager property on GameContext is nullable. Accessing it directly without a null-conditional operator (?.) could result in a NullReferenceException if it is not initialized. Using the null-conditional operator ensures defensive programming and prevents potential runtime crashes.
if (player.GameContext.PlugInManager?.GetPlugInPoint<IItemStackedPlugIn>() is { } itemStackedPlugIn)
Buying a stackable item that completed an existing stack did not invoke
the IItemStackedPlugIn plugin point, unlike the item-pickup and item-drag
paths. As a result, completing a Symbol of Kundun stack (5/5) via an NPC
purchase never triggered SymbolOfKundunStackedPlugIn, so it was not
converted into a Lost Map (Kalima ticket).
Invoke IItemStackedPlugIn after a purchase completes a stack, mirroring
DroppedItem.TryStackOnItemAsync and MoveItemAction. Adds a test verifying
the plugin point is invoked with the completed inventory stack.