Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Handin] Item handin overhaul #1403

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

Akkadius
Copy link
Contributor

Associated to server pull request here, do not merge until ready

This is a very long overdue overhaul to a complex system. That aims to solve many issues around item handins.

Why

  • Instead of having separately maintained hand-in logic in Perl and Lua, they both pass-through existing plugins to the source and are handled entirely source side. Reducing bugs, defects and allowing us to far more easily add features.
  • Player event records sometimes don't get caught under certain circumstances, now every hand-in no matter whether its handled in quest or not gets captured
  • Item handin gets handled the same in both Perl and Lua
  • Money handin gets handled the same in both Perl and Lua
  • Support multi-quest natively in the source for NPC's who have it enabled
  • Heavily simplify item handin logic
  • Add comprehensive logging to debug deeper level handin issues

Catch-all for returning items to players

  • Item loss would occur when a player hands in to an NPC with an empty EVENT_TRADE
  • Item loss would occur when a player accidentally hands in to a pet instead of the intended NPC
  • Item loss would occur if a script failed to add a "return_items" plugin equivalent with hand-in code
  • NPCs with no proper check_handin/return_items would eat items.
  • NPCs were returning a new item, not the previous item instance (items with augments). Items are simply return as their original instance, with all augments, attuned properties, serial number etc.
  • Augments were eaten in Perl when doing handins because we were summoning by item ID instead of the item instance itself.

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