Skip to content

A merchant store item which no longer fits makes its map fail to load #1489

Open

Description

@Mosch0512

Problem

When an item of a merchant store finds no place in the store, e.g. because the size of its definition grew in the data, the merchant can't be created, and with it the map it stands on.

MerchantNpc builds a Storage over the merchant store, and the Storage constructor throws "Some items do not fit into the storage" for an item which finds no free place. The MerchantNpc is created while the map is initialized (MapInitializer), so the exception ends the initialization of the map.

How it showed up

On a local server, the Kris (0/0) was set from 1x2 to 4x4 in the admin panel, to test #1475. At the next start, the Crywolf event failed three times:

[Error] [CrywolfPlugIn] Unexpected error in the crywolf event.
System.ArgumentException: Some items do not fit into the storage: Slot 72: Kris+2+4 Physical Base Damage (min and max)+Luck
   at MUnique.OpenMU.GameLogic.Storage..ctor(...)
   at MUnique.OpenMU.GameLogic.NPC.MerchantNpc..ctor(...)
   at MUnique.OpenMU.GameLogic.MapInitializer.InitializeSpawnAsync(...)
   at MUnique.OpenMU.GameLogic.MapInitializer.InitializeStateAsync(...)
   at MUnique.OpenMU.GameLogic.GameContext.GetMapAsync(...)
   at MUnique.OpenMU.GameLogic.Crywolf.CrywolfContext.InitializeAsync()

The same path runs for every map whose merchant sells such an item, when the map is created.

Proposal

A merchant store item which finds no place is left out of the shop and logged as a warning (merchant, item, slot), instead of failing the map. The item stays in the database, so an admin can move it or change the store in the admin panel.

The items of characters (inventory, vault) are handled by #1475 / #1487; merchant stores aren't part of that, because their items belong to no player.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions