Class SpecialItemConfig

java.lang.Object
server.specialitem.SpecialItemConfig

public final class SpecialItemConfig extends Object
單筆「特殊道具」設定的不可變資料模型,對應資料表 special_items 的一列。

由後台「特殊道具」頁設定、SpecialItemFactory 自 SQL 載入後封裝為本物件。 玩家身上(依三個生效旗標之一)持有對應 itemId 的道具時, client.PlayerStats#recalcLocalStats 會把本設定的各項加成累加進角色數值, 道具一旦離身即於下次重算自動移除。

欄位語意:

  • itemId——道具編號(主鍵)。
  • equipEffectiveinvEffectivestorageEffective—— 三個「生效條件」旗標:穿戴中/背包內/倉庫內任一滿足即觸發(可同時開啟多個,符合其一即生效)。
  • enabled——總開關,關閉時整列設定不生效。
  • pickupRange——寵物自動撿物範圍(0~1000010000 約等同全圖吸物)。
  • extraExpPctextraMesoPct——擊殺怪物的額外經驗值/楓幣百分比(加法疊加)。
  • strdexint_lukwatkmatk—— 力/敏/智/幸/攻擊力/魔攻的固定加成(會以右上角 buff 圖示呈現,且不被同名藥水覆蓋、不被淨化)。
  • Constructor Details

    • SpecialItemConfig

      public SpecialItemConfig(int itemId, boolean equipEffective, boolean invEffective, boolean storageEffective, boolean enabled, int pickupRange, int extraExpPct, int extraMesoPct, int str, int dex, int int_, int luk, int watk, int matk)
      建構一筆特殊道具設定。
      Parameters:
      itemId - 道具編號
      equipEffective - 穿戴中是否生效
      invEffective - 背包內是否生效
      storageEffective - 倉庫內是否生效
      enabled - 總開關
      pickupRange - 寵吸範圍(0~10000)
      extraExpPct - 額外經驗值百分比
      extraMesoPct - 額外楓幣百分比
      str - 力量加成
      dex - 敏捷加成
      int_ - 智力加成
      luk - 幸運加成
      watk - 攻擊力加成
      matk - 魔法攻擊力加成
  • Method Details

    • getItemId

      public int getItemId()
      Returns:
      道具編號(主鍵)。
    • isEquipEffective

      public boolean isEquipEffective()
      Returns:
      穿戴中是否生效。
    • isInvEffective

      public boolean isInvEffective()
      Returns:
      背包內是否生效。
    • isStorageEffective

      public boolean isStorageEffective()
      Returns:
      倉庫內是否生效。
    • isEnabled

      public boolean isEnabled()
      Returns:
      總開關(關閉時整列不生效)。
    • getPickupRange

      public int getPickupRange()
      Returns:
      寵吸範圍(0~10000)。
    • getExtraExpPct

      public int getExtraExpPct()
      Returns:
      額外經驗值百分比。
    • getExtraMesoPct

      public int getExtraMesoPct()
      Returns:
      額外楓幣百分比。
    • getStr

      public int getStr()
      Returns:
      力量加成。
    • getDex

      public int getDex()
      Returns:
      敏捷加成。
    • getInt

      public int getInt()
      Returns:
      智力加成。
    • getLuk

      public int getLuk()
      Returns:
      幸運加成。
    • getWatk

      public int getWatk()
      Returns:
      攻擊力加成。
    • getMatk

      public int getMatk()
      Returns:
      魔法攻擊力加成。
    • hasStatBonus

      public boolean hasStatBonus()
      本列是否帶有任何「會以右上角 buff 圖示呈現」的數值加成(力/敏/智/幸/攻擊/魔攻其一非零)。
      Returns:
      有任一數值加成時回傳 true
    • describeEffects

      public String describeEffects()
      把本設定的各項非零加成組成可讀的中文效果字串,例如 "力+5 敏+3 經驗+10%"

      欄位順序與標籤與後台「特殊道具」頁一致:力/敏/智/幸/攻擊/魔攻為固定值(力+5), 經驗/楓幣為百分比(經驗+10%),寵吸範圍為固定值(寵吸範圍+10000); 數值為 0 的項目一律略過,負值則以 - 呈現(力-5)。

      供「穿戴特殊道具時的效果提示」(server.MapleInventoryManipulator#equip)與 @特殊道具 指令列出生效中的效果共用,確保兩處呈現一致。

      Returns:
      各非零加成的中文描述(以單一空白分隔);全部為 0 時回傳空字串