Class MapleMapItem


public class MapleMapItem extends MapleMapObject
地圖上的掉落物(道具或楓幣),實作為 MapleMapObject 子類別。

每個掉落物持有以下資訊:

  • Item 實體(楓幣掉落時為 null,改以 meso 欄位記錄金額)
  • 掉落者 dropper(可能是怪物、NPC 或玩家對應的 MapleMapObject
  • 最初擁有者 character_ownerid(保護期間僅限該角色撿取)
  • 專屬擁有者 exclusiveOwner(「獨立掉寶」:> 0 時僅該角色可見、可撿取,連同隊都不行)
  • 掉落類型 type、是否為玩家主動丟棄 playerDrop、任務限定 questid
  • 自由撿取時間戳 nextFFA 與過期時間戳 nextExpiry

MapleMonsterKillManager 的掉落邏輯生成,並透過 MapleMapspawnItemDrop/spawnMesoDrop 系列方法放置到地圖; 封包組裝依賴 CField

  • Field Details

    • item

      protected Item item
    • dropper

      protected MapleMapObject dropper
    • character_ownerid

      protected int character_ownerid
    • meso

      protected int meso
    • questid

      protected int questid
    • exclusiveOwner

      protected int exclusiveOwner
    • type

      protected byte type
    • pickedUp

      protected boolean pickedUp
    • playerDrop

      protected boolean playerDrop
    • randDrop

      protected boolean randDrop
    • nextExpiry

      protected long nextExpiry
    • nextFFA

      protected long nextFFA
  • Constructor Details

  • Method Details

    • getItem

      public final Item getItem()
    • setItem

      public void setItem(Item z)
    • getQuest

      public final int getQuest()
    • getItemId

      public final int getItemId()
    • getDropper

      public final MapleMapObject getDropper()
    • getOwner

      public final int getOwner()
    • getExclusiveOwner

      public final int getExclusiveOwner()
      取得此掉落物的專屬擁有者角色 ID(「獨立掉寶」)。
      Returns:
      專屬擁有者角色 ID;0 表示無專屬限制(一般掉落物)
    • setExclusiveOwner

      public final void setExclusiveOwner(int charId)
      設定此掉落物為「獨立掉寶」,僅指定角色可見、可撿取(連同隊玩家都不行)。
      Parameters:
      charId - 專屬擁有者角色 ID;0 解除專屬限制
    • canBeSeenBy

      public final boolean canBeSeenBy(MapleCharacter chr)
      判斷指定角色是否能「看見」此掉落物——生成瞬間與離開地圖後重新進入視野皆共用此判斷。

      依序檢查:角色非 null、未受獨立掉寶專屬限制 (isExclusiveBlockedFor(MapleCharacter))、且任務限定(questid)成立。 對一般掉落物(無專屬擁有者且無任務限定)恆為 true

      Parameters:
      chr - 目標角色
      Returns:
      可見則 true
    • isExclusiveBlockedFor

      public final boolean isExclusiveBlockedFor(MapleCharacter chr)
      判斷此掉落物是否因「獨立掉寶」專屬限制而對指定角色封鎖(不可見/不可撿取)。

      exclusiveOwner 大於 0 且該角色並非專屬擁有者時回傳 true; 一般掉落物(exclusiveOwner == 0)恆回傳 false。撿取端 (Pickup_PlayerPickup_Pet/寵物自動撿取/GM 吸物)皆以此擋下非擁有者。

      Parameters:
      chr - 目標角色(null 視為非擁有者)
      Returns:
      受專屬限制封鎖則 true
    • getMeso

      public final int getMeso()
    • isPlayerDrop

      public final boolean isPlayerDrop()
    • isPickedUp

      public final boolean isPickedUp()
    • setPickedUp

      public void setPickedUp(boolean pickedUp)
    • getDropType

      public byte getDropType()
    • setDropType

      public void setDropType(byte z)
    • isRandDrop

      public final boolean isRandDrop()
    • getType

      public final MapleMapObjectType getType()
      Specified by:
      getType in class MapleMapObject
    • sendSpawnData

      public void sendSpawnData(MapleClient client)
      Specified by:
      sendSpawnData in class MapleMapObject
    • sendDestroyData

      public void sendDestroyData(MapleClient client)
      Specified by:
      sendDestroyData in class MapleMapObject
    • getLock

      public Lock getLock()
    • registerExpire

      public void registerExpire(long time)
    • registerFFA

      public void registerFFA(long time)
    • shouldExpire

      public boolean shouldExpire(long now)
    • shouldFFA

      public boolean shouldFFA(long now)
    • hasFFA

      public boolean hasFFA()
    • expire

      public void expire(MapleMap map)