MWI Profit Panel

milkywayidle游戏利润插件,在右面板添加了根据当前市场数据计算出来的收益详情,掉落记录展示了掉落详情

// ==UserScript==
// @name         MWI Profit Panel
// @namespace    http://tampermonkey.net/
// @version      2025.06.16
// @description  milkywayidle游戏利润插件,在右面板添加了根据当前市场数据计算出来的收益详情,掉落记录展示了掉落详情
// @author       MengLan
// @match        https://www.milkywayidle.com/*
// @grant        GM_addStyle
// @grant        GM.xmlHttpRequest
// @grant        GM_xmlhttpRequest
// @connect      raw.githubusercontent.com
// @connect      ghproxy.net
// @license      MIT
// ==/UserScript==
(function () {
    'use strict';

    // 全局状态管理器
    class GlobalState {
      constructor() {
        this._state = {
          initClientData_itemDetailMap: {},
          initClientData_actionDetailMap: {},
          initClientData_openableLootDropMap: {},
          initCharacterData_characterSkills: [],
          initCharacterData_actionTypeDrinkSlotsMap: {},
          initCharacterData_characterHouseRoomMap: {},
          initCharacterData_characterItems: [],
          initCharacterData_communityActionTypeBuffsMap: {},
          initCharacterData_consumableActionTypeBuffsMap: {},
          initCharacterData_houseActionTypeBuffsMap: {},
          initCharacterData_equipmentActionTypeBuffsMap: {},
          hasMarketItemUpdate: false,
          isZHInGameSetting: false,
          freshnessMarketJson: {},
          medianMarketJson: {},
          processingMap: {},
          lootLog: []
        };
        this._listeners = new Set();
        return new Proxy(this, {
          get(target, prop) {
            if (prop in target._state) {
              return target._state[prop];
            }
            return target[prop];
          },
          set(target, prop, value) {
            if (prop in target._state) {
              target._state[prop] = value;
              target._notifyListeners(prop, value);
              return true;
            }
            target[prop] = value;
            return true;
          }
        });
      }
      _notifyListeners(prop, value) {
        this._listeners.forEach(cb => cb(prop, value));
      }
      subscribe(callback) {
        this._listeners.add(callback);
        return () => this._listeners.delete(callback);
      }
    }
    var globals = new GlobalState();

    function getItemName(itemHrid) {
      if (globals.isZHInGameSetting) return ZHitemNames[itemHrid];else return globals.initClientData_itemDetailMap[itemHrid].name;
    }
    function getActionName(actionHrid) {
      if (globals.isZHInGameSetting) return ZHActionNames[actionHrid];else return globals.initClientData_actionDetailMap[actionHrid].name;
    }
    function mergeMooket(hrid, valuation, marketJson) {
      if (getMwiObj()?.coreMarket) {
        const hridWithLevel = `${hrid}:0`;
        const mooketVal = getMwiObj()?.coreMarket.marketData[hridWithLevel];
        if (mooketVal && mooketVal?.time > marketJson.time) {
          valuation.bid = mooketVal.bid;
          valuation.ask = mooketVal.ask;
        }
      } else console.log(`mergeMooket failed ${window}`);
      return valuation;
    }
    function getItemValuation(hrid, marketJson) {
      const item = globals.initClientData_itemDetailMap[hrid];
      if (!item) {
        console.log(`${hrid} can't found the item detail`);
        return {
          bid: 0,
          ask: 0
        };
      }
      if (item?.isTradable) {
        let ret = marketJson.market[item.name];
        ret = mergeMooket(hrid, ret, marketJson);
        if (ret.bid == -1 && ret.ask == -1) ret.ask = ret.bid = 1e9;else if (ret.bid == -1 || ret.ask == -1) ret.ask = ret.bid = Math.max(ret.ask, ret.bid);
        if (globals.medianMarketJson?.market) {
          const median = globals.medianMarketJson.market[item.name];
          ret.medianAsk = median.ask;
          ret.medianBid = median.bid;
        }
        return ret;
      } else if (item?.isOpenable) {
        const openedItems = globals.initClientData_openableLootDropMap[hrid];
        const valuation = {
          bid: 0,
          ask: 0,
          medianAsk: 0,
          medianBid: 0
        };
        for (const openedItem of openedItems) {
          const openedValuation = getItemValuation(openedItem.itemHrid, marketJson);
          valuation.bid += openedItem.dropRate * (openedItem.minCount + openedItem.maxCount) / 2 * openedValuation.bid;
          valuation.ask += openedItem.dropRate * (openedItem.minCount + openedItem.maxCount) / 2 * openedValuation.ask;
          valuation.medianBid += openedItem.dropRate * (openedItem.minCount + openedItem.maxCount) / 2 * (openedValuation?.medianBid ?? 0);
          valuation.medianAsk += openedItem.dropRate * (openedItem.minCount + openedItem.maxCount) / 2 * (openedValuation?.medianAsk ?? 0);
        }
        return valuation;
      } else if (hrid === "/items/coin") return {
        ask: 1,
        bid: 1,
        medianAsk: 1,
        medianBid: 1
      };else if (hrid === "/items/cowbell") {
        const pack = getItemValuation("/items/bag_of_10_cowbells", marketJson);
        return {
          ask: pack.ask / 10,
          bid: pack.bid / 10,
          medianAsk: (pack?.medianAsk ?? 0) / 10,
          medianBid: (pack?.medianBid ?? 0) / 10
        };
      } else return {
        ask: item.sellPrice,
        bid: item.sellPrice,
        medianAsk: item.sellPrice,
        medianBid: item.sellPrice
      };
    }
    function getDropTableInfomation(dropTable, marketJson, teaBuffs = {
      processing: 0
    }) {
      const valuationResult = {
        ask: 0,
        bid: 0
      };
      const dropItems = [];
      for (const drop of dropTable) {
        const valuation = getItemValuation(drop.itemHrid, marketJson);
        let dropCount = (drop.minCount + drop.maxCount) / 2 * drop.dropRate;
        if (globals.processingMap && teaBuffs.processing) {
          const processingAction = globals.processingMap[drop.itemHrid];
          if (processingAction) {
            // Add processed production
            const outputItemHrid = processingAction.outputItems[0].itemHrid;
            const valuation = getItemValuation(outputItemHrid, marketJson);
            const outputCount = teaBuffs.processing / 100 * drop.dropRate;
            valuationResult.ask += valuation.ask * outputCount;
            valuationResult.bid += valuation.bid * outputCount;
            dropItems.push({
              name: getItemName(outputItemHrid),
              ...valuation,
              count: outputCount
            });

            // Reduce processed inputItem
            dropCount -= outputCount * processingAction.inputItems[0].count;
          }
        }
        valuationResult.ask += valuation.ask * dropCount;
        valuationResult.bid += valuation.bid * dropCount;
        dropItems.push({
          itemHrid: drop.itemHrid,
          name: getItemName(drop.itemHrid),
          ...valuation,
          count: dropCount
        });
      }
      return {
        ...valuationResult,
        dropItems
      };
    }
    function getSvg(iconId) {
      if (globals.initClientData_itemDetailMap[`/items/${iconId}`]) return `items_sprite.6d12eb9d.svg#${iconId}`;
      return `actions_sprite.e6388cbc.svg#${iconId}`;
    }
    function formatNumber(val) {
      let number = Number(val);
      if (number < 10) return Number(Math.trunc(number * 1000) / 1000);else if (number < 1000) return Number(Math.trunc(number * 10) / 10);else if (number < 1e5) return Math.trunc(number);else if (number < 1e6) return `${Number(Math.trunc(number / 100) / 10)}k`;else if (number < 1e9) return `${Number(Math.trunc(number / 1e4) / 100)}M`;else return `${Math.trunc(number / 1e9)}B`;
    }
    function getDuration(date) {
      return formatDuration(Date.now() - date.getTime());
    }
    function mooketStatus() {
      try {
        if (mwi?.game) {
          return `已安装`;
        }
        return `加载异常`;
      } catch (e) {}
      return `未安装`;
    }
    function formatDuration(diffMs) {
      const diffSeconds = Math.floor(diffMs / 1000);
      if (diffSeconds < 60) return `${diffSeconds}秒前`;
      const diffMinutes = Math.floor(diffSeconds / 60);
      if (diffMinutes < 60) return `${diffMinutes}分钟前`;
      const diffHours = Math.floor(diffMinutes / 60);
      return `${diffHours}小时 ${diffMinutes - diffHours * 60}分钟前`;
    }
    function getMwiObj() {
      try {
        if (mwi) return mwi;
        return null;
      } catch (e) {
        return null;
      }
    }

    // 完整的物品名称翻译
    const ZHitemNames = {
      "/items/coin": "\u91d1\u5e01",
      "/items/task_token": "\u4efb\u52a1\u4ee3\u5e01",
      "/items/chimerical_token": "\u5947\u5e7b\u4ee3\u5e01",
      "/items/sinister_token": "\u9634\u68ee\u4ee3\u5e01",
      "/items/enchanted_token": "\u79d8\u6cd5\u4ee3\u5e01",
      "/items/pirate_token": "\u6d77\u76d7\u4ee3\u5e01",
      "/items/cowbell": "\u725b\u94c3",
      "/items/bag_of_10_cowbells": "\u725b\u94c3\u888b (10\u4e2a)",
      "/items/purples_gift": "\u5c0f\u7d2b\u725b\u7684\u793c\u7269",
      "/items/small_meteorite_cache": "\u5c0f\u9668\u77f3\u8231",
      "/items/medium_meteorite_cache": "\u4e2d\u9668\u77f3\u8231",
      "/items/large_meteorite_cache": "\u5927\u9668\u77f3\u8231",
      "/items/small_artisans_crate": "\u5c0f\u5de5\u5320\u5323",
      "/items/medium_artisans_crate": "\u4e2d\u5de5\u5320\u5323",
      "/items/large_artisans_crate": "\u5927\u5de5\u5320\u5323",
      "/items/small_treasure_chest": "\u5c0f\u5b9d\u7bb1",
      "/items/medium_treasure_chest": "\u4e2d\u5b9d\u7bb1",
      "/items/large_treasure_chest": "\u5927\u5b9d\u7bb1",
      "/items/chimerical_chest": "\u5947\u5e7b\u5b9d\u7bb1",
      "/items/sinister_chest": "\u9634\u68ee\u5b9d\u7bb1",
      "/items/enchanted_chest": "\u79d8\u6cd5\u5b9d\u7bb1",
      "/items/pirate_chest": "\u6d77\u76d7\u5b9d\u7bb1",
      "/items/blue_key_fragment": "\u84dd\u8272\u94a5\u5319\u788e\u7247",
      "/items/green_key_fragment": "\u7eff\u8272\u94a5\u5319\u788e\u7247",
      "/items/purple_key_fragment": "\u7d2b\u8272\u94a5\u5319\u788e\u7247",
      "/items/white_key_fragment": "\u767d\u8272\u94a5\u5319\u788e\u7247",
      "/items/orange_key_fragment": "\u6a59\u8272\u94a5\u5319\u788e\u7247",
      "/items/brown_key_fragment": "\u68d5\u8272\u94a5\u5319\u788e\u7247",
      "/items/stone_key_fragment": "\u77f3\u5934\u94a5\u5319\u788e\u7247",
      "/items/dark_key_fragment": "\u9ed1\u6697\u94a5\u5319\u788e\u7247",
      "/items/burning_key_fragment": "\u71c3\u70e7\u94a5\u5319\u788e\u7247",
      "/items/chimerical_entry_key": "\u5947\u5e7b\u94a5\u5319",
      "/items/chimerical_chest_key": "\u5947\u5e7b\u5b9d\u7bb1\u94a5\u5319",
      "/items/sinister_entry_key": "\u9634\u68ee\u94a5\u5319",
      "/items/sinister_chest_key": "\u9634\u68ee\u5b9d\u7bb1\u94a5\u5319",
      "/items/enchanted_entry_key": "\u79d8\u6cd5\u94a5\u5319",
      "/items/enchanted_chest_key": "\u79d8\u6cd5\u5b9d\u7bb1\u94a5\u5319",
      "/items/pirate_entry_key": "\u6d77\u76d7\u94a5\u5319",
      "/items/pirate_chest_key": "\u6d77\u76d7\u5b9d\u7bb1\u94a5\u5319",
      "/items/donut": "\u751c\u751c\u5708",
      "/items/blueberry_donut": "\u84dd\u8393\u751c\u751c\u5708",
      "/items/blackberry_donut": "\u9ed1\u8393\u751c\u751c\u5708",
      "/items/strawberry_donut": "\u8349\u8393\u751c\u751c\u5708",
      "/items/mooberry_donut": "\u54de\u8393\u751c\u751c\u5708",
      "/items/marsberry_donut": "\u706b\u661f\u8393\u751c\u751c\u5708",
      "/items/spaceberry_donut": "\u592a\u7a7a\u8393\u751c\u751c\u5708",
      "/items/cupcake": "\u7eb8\u676f\u86cb\u7cd5",
      "/items/blueberry_cake": "\u84dd\u8393\u86cb\u7cd5",
      "/items/blackberry_cake": "\u9ed1\u8393\u86cb\u7cd5",
      "/items/strawberry_cake": "\u8349\u8393\u86cb\u7cd5",
      "/items/mooberry_cake": "\u54de\u8393\u86cb\u7cd5",
      "/items/marsberry_cake": "\u706b\u661f\u8393\u86cb\u7cd5",
      "/items/spaceberry_cake": "\u592a\u7a7a\u8393\u86cb\u7cd5",
      "/items/gummy": "\u8f6f\u7cd6",
      "/items/apple_gummy": "\u82f9\u679c\u8f6f\u7cd6",
      "/items/orange_gummy": "\u6a59\u5b50\u8f6f\u7cd6",
      "/items/plum_gummy": "\u674e\u5b50\u8f6f\u7cd6",
      "/items/peach_gummy": "\u6843\u5b50\u8f6f\u7cd6",
      "/items/dragon_fruit_gummy": "\u706b\u9f99\u679c\u8f6f\u7cd6",
      "/items/star_fruit_gummy": "\u6768\u6843\u8f6f\u7cd6",
      "/items/yogurt": "\u9178\u5976",
      "/items/apple_yogurt": "\u82f9\u679c\u9178\u5976",
      "/items/orange_yogurt": "\u6a59\u5b50\u9178\u5976",
      "/items/plum_yogurt": "\u674e\u5b50\u9178\u5976",
      "/items/peach_yogurt": "\u6843\u5b50\u9178\u5976",
      "/items/dragon_fruit_yogurt": "\u706b\u9f99\u679c\u9178\u5976",
      "/items/star_fruit_yogurt": "\u6768\u6843\u9178\u5976",
      "/items/milking_tea": "\u6324\u5976\u8336",
      "/items/foraging_tea": "\u91c7\u6458\u8336",
      "/items/woodcutting_tea": "\u4f10\u6728\u8336",
      "/items/cooking_tea": "\u70f9\u996a\u8336",
      "/items/brewing_tea": "\u51b2\u6ce1\u8336",
      "/items/alchemy_tea": "\u70bc\u91d1\u8336",
      "/items/enhancing_tea": "\u5f3a\u5316\u8336",
      "/items/cheesesmithing_tea": "\u5976\u916a\u953b\u9020\u8336",
      "/items/crafting_tea": "\u5236\u4f5c\u8336",
      "/items/tailoring_tea": "\u7f1d\u7eab\u8336",
      "/items/super_milking_tea": "\u8d85\u7ea7\u6324\u5976\u8336",
      "/items/super_foraging_tea": "\u8d85\u7ea7\u91c7\u6458\u8336",
      "/items/super_woodcutting_tea": "\u8d85\u7ea7\u4f10\u6728\u8336",
      "/items/super_cooking_tea": "\u8d85\u7ea7\u70f9\u996a\u8336",
      "/items/super_brewing_tea": "\u8d85\u7ea7\u51b2\u6ce1\u8336",
      "/items/super_alchemy_tea": "\u8d85\u7ea7\u70bc\u91d1\u8336",
      "/items/super_enhancing_tea": "\u8d85\u7ea7\u5f3a\u5316\u8336",
      "/items/super_cheesesmithing_tea": "\u8d85\u7ea7\u5976\u916a\u953b\u9020\u8336",
      "/items/super_crafting_tea": "\u8d85\u7ea7\u5236\u4f5c\u8336",
      "/items/super_tailoring_tea": "\u8d85\u7ea7\u7f1d\u7eab\u8336",
      "/items/ultra_milking_tea": "\u7a76\u6781\u6324\u5976\u8336",
      "/items/ultra_foraging_tea": "\u7a76\u6781\u91c7\u6458\u8336",
      "/items/ultra_woodcutting_tea": "\u7a76\u6781\u4f10\u6728\u8336",
      "/items/ultra_cooking_tea": "\u7a76\u6781\u70f9\u996a\u8336",
      "/items/ultra_brewing_tea": "\u7a76\u6781\u51b2\u6ce1\u8336",
      "/items/ultra_alchemy_tea": "\u7a76\u6781\u70bc\u91d1\u8336",
      "/items/ultra_enhancing_tea": "\u7a76\u6781\u5f3a\u5316\u8336",
      "/items/ultra_cheesesmithing_tea": "\u7a76\u6781\u5976\u916a\u953b\u9020\u8336",
      "/items/ultra_crafting_tea": "\u7a76\u6781\u5236\u4f5c\u8336",
      "/items/ultra_tailoring_tea": "\u7a76\u6781\u7f1d\u7eab\u8336",
      "/items/gathering_tea": "\u91c7\u96c6\u8336",
      "/items/gourmet_tea": "\u7f8e\u98df\u8336",
      "/items/wisdom_tea": "\u7ecf\u9a8c\u8336",
      "/items/processing_tea": "\u52a0\u5de5\u8336",
      "/items/efficiency_tea": "\u6548\u7387\u8336",
      "/items/artisan_tea": "\u5de5\u5320\u8336",
      "/items/catalytic_tea": "\u50ac\u5316\u8336",
      "/items/blessed_tea": "\u798f\u6c14\u8336",
      "/items/stamina_coffee": "\u8010\u529b\u5496\u5561",
      "/items/intelligence_coffee": "\u667a\u529b\u5496\u5561",
      "/items/defense_coffee": "\u9632\u5fa1\u5496\u5561",
      "/items/attack_coffee": "\u653b\u51fb\u5496\u5561",
      "/items/power_coffee": "\u529b\u91cf\u5496\u5561",
      "/items/ranged_coffee": "\u8fdc\u7a0b\u5496\u5561",
      "/items/magic_coffee": "\u9b54\u6cd5\u5496\u5561",
      "/items/super_stamina_coffee": "\u8d85\u7ea7\u8010\u529b\u5496\u5561",
      "/items/super_intelligence_coffee": "\u8d85\u7ea7\u667a\u529b\u5496\u5561",
      "/items/super_defense_coffee": "\u8d85\u7ea7\u9632\u5fa1\u5496\u5561",
      "/items/super_attack_coffee": "\u8d85\u7ea7\u653b\u51fb\u5496\u5561",
      "/items/super_power_coffee": "\u8d85\u7ea7\u529b\u91cf\u5496\u5561",
      "/items/super_ranged_coffee": "\u8d85\u7ea7\u8fdc\u7a0b\u5496\u5561",
      "/items/super_magic_coffee": "\u8d85\u7ea7\u9b54\u6cd5\u5496\u5561",
      "/items/ultra_stamina_coffee": "\u7a76\u6781\u8010\u529b\u5496\u5561",
      "/items/ultra_intelligence_coffee": "\u7a76\u6781\u667a\u529b\u5496\u5561",
      "/items/ultra_defense_coffee": "\u7a76\u6781\u9632\u5fa1\u5496\u5561",
      "/items/ultra_attack_coffee": "\u7a76\u6781\u653b\u51fb\u5496\u5561",
      "/items/ultra_power_coffee": "\u7a76\u6781\u529b\u91cf\u5496\u5561",
      "/items/ultra_ranged_coffee": "\u7a76\u6781\u8fdc\u7a0b\u5496\u5561",
      "/items/ultra_magic_coffee": "\u7a76\u6781\u9b54\u6cd5\u5496\u5561",
      "/items/wisdom_coffee": "\u7ecf\u9a8c\u5496\u5561",
      "/items/lucky_coffee": "\u5e78\u8fd0\u5496\u5561",
      "/items/swiftness_coffee": "\u8fc5\u6377\u5496\u5561",
      "/items/channeling_coffee": "\u541f\u5531\u5496\u5561",
      "/items/critical_coffee": "\u66b4\u51fb\u5496\u5561",
      "/items/poke": "\u7834\u80c6\u4e4b\u523a",
      "/items/impale": "\u900f\u9aa8\u4e4b\u523a",
      "/items/puncture": "\u7834\u7532\u4e4b\u523a",
      "/items/penetrating_strike": "\u8d2f\u5fc3\u4e4b\u523a",
      "/items/scratch": "\u722a\u5f71\u65a9",
      "/items/cleave": "\u5206\u88c2\u65a9",
      "/items/maim": "\u8840\u5203\u65a9",
      "/items/crippling_slash": "\u81f4\u6b8b\u65a9",
      "/items/smack": "\u91cd\u78be",
      "/items/sweep": "\u91cd\u626b",
      "/items/stunning_blow": "\u91cd\u9524",
      "/items/fracturing_impact": "\u788e\u88c2\u51b2\u51fb",
      "/items/shield_bash": "\u76fe\u51fb",
      "/items/quick_shot": "\u5feb\u901f\u5c04\u51fb",
      "/items/aqua_arrow": "\u6d41\u6c34\u7bad",
      "/items/flame_arrow": "\u70c8\u7130\u7bad",
      "/items/rain_of_arrows": "\u7bad\u96e8",
      "/items/silencing_shot": "\u6c89\u9ed8\u4e4b\u7bad",
      "/items/steady_shot": "\u7a33\u5b9a\u5c04\u51fb",
      "/items/pestilent_shot": "\u75ab\u75c5\u5c04\u51fb",
      "/items/penetrating_shot": "\u8d2f\u7a7f\u5c04\u51fb",
      "/items/water_strike": "\u6d41\u6c34\u51b2\u51fb",
      "/items/ice_spear": "\u51b0\u67aa\u672f",
      "/items/frost_surge": "\u51b0\u971c\u7206\u88c2",
      "/items/mana_spring": "\u6cd5\u529b\u55b7\u6cc9",
      "/items/entangle": "\u7f20\u7ed5",
      "/items/toxic_pollen": "\u5267\u6bd2\u7c89\u5c18",
      "/items/natures_veil": "\u81ea\u7136\u83cc\u5e55",
      "/items/life_drain": "\u751f\u547d\u5438\u53d6",
      "/items/fireball": "\u706b\u7403",
      "/items/flame_blast": "\u7194\u5ca9\u7206\u88c2",
      "/items/firestorm": "\u706b\u7130\u98ce\u66b4",
      "/items/smoke_burst": "\u70df\u7206\u706d\u5f71",
      "/items/minor_heal": "\u521d\u7ea7\u81ea\u6108\u672f",
      "/items/heal": "\u81ea\u6108\u672f",
      "/items/quick_aid": "\u5feb\u901f\u6cbb\u7597\u672f",
      "/items/rejuvenate": "\u7fa4\u4f53\u6cbb\u7597\u672f",
      "/items/taunt": "\u5632\u8bbd",
      "/items/provoke": "\u6311\u8845",
      "/items/toughness": "\u575a\u97e7",
      "/items/elusiveness": "\u95ea\u907f",
      "/items/precision": "\u7cbe\u786e",
      "/items/berserk": "\u72c2\u66b4",
      "/items/elemental_affinity": "\u5143\u7d20\u589e\u5e45",
      "/items/frenzy": "\u72c2\u901f",
      "/items/spike_shell": "\u5c16\u523a\u9632\u62a4",
      "/items/arcane_reflection": "\u5965\u672f\u53cd\u5c04",
      "/items/vampirism": "\u5438\u8840",
      "/items/revive": "\u590d\u6d3b",
      "/items/insanity": "\u75af\u72c2",
      "/items/invincible": "\u65e0\u654c",
      "/items/fierce_aura": "\u7269\u7406\u5149\u73af",
      "/items/aqua_aura": "\u6d41\u6c34\u5149\u73af",
      "/items/sylvan_aura": "\u81ea\u7136\u5149\u73af",
      "/items/flame_aura": "\u706b\u7130\u5149\u73af",
      "/items/speed_aura": "\u901f\u5ea6\u5149\u73af",
      "/items/critical_aura": "\u66b4\u51fb\u5149\u73af",
      "/items/gobo_stabber": "\u54e5\u5e03\u6797\u957f\u5251",
      "/items/gobo_slasher": "\u54e5\u5e03\u6797\u5173\u5200",
      "/items/gobo_smasher": "\u54e5\u5e03\u6797\u72fc\u7259\u68d2",
      "/items/spiked_bulwark": "\u5c16\u523a\u91cd\u76fe",
      "/items/werewolf_slasher": "\u72fc\u4eba\u5173\u5200",
      "/items/griffin_bulwark": "\u72ee\u9e6b\u91cd\u76fe",
      "/items/gobo_shooter": "\u54e5\u5e03\u6797\u5f39\u5f13",
      "/items/vampiric_bow": "\u5438\u8840\u5f13",
      "/items/cursed_bow": "\u5492\u6028\u4e4b\u5f13",
      "/items/gobo_boomstick": "\u54e5\u5e03\u6797\u706b\u68cd",
      "/items/cheese_bulwark": "\u5976\u916a\u91cd\u76fe",
      "/items/verdant_bulwark": "\u7fe0\u7eff\u91cd\u76fe",
      "/items/azure_bulwark": "\u851a\u84dd\u91cd\u76fe",
      "/items/burble_bulwark": "\u6df1\u7d2b\u91cd\u76fe",
      "/items/crimson_bulwark": "\u7edb\u7ea2\u91cd\u76fe",
      "/items/rainbow_bulwark": "\u5f69\u8679\u91cd\u76fe",
      "/items/holy_bulwark": "\u795e\u5723\u91cd\u76fe",
      "/items/wooden_bow": "\u6728\u5f13",
      "/items/birch_bow": "\u6866\u6728\u5f13",
      "/items/cedar_bow": "\u96ea\u677e\u5f13",
      "/items/purpleheart_bow": "\u7d2b\u5fc3\u5f13",
      "/items/ginkgo_bow": "\u94f6\u674f\u5f13",
      "/items/redwood_bow": "\u7ea2\u6749\u5f13",
      "/items/arcane_bow": "\u795e\u79d8\u5f13",
      "/items/stalactite_spear": "\u77f3\u949f\u957f\u67aa",
      "/items/granite_bludgeon": "\u82b1\u5c97\u5ca9\u5927\u68d2",
      "/items/furious_spear": "\u72c2\u6012\u957f\u67aa",
      "/items/regal_sword": "\u541b\u738b\u4e4b\u5251",
      "/items/chaotic_flail": "\u6df7\u6c8c\u8fde\u67b7",
      "/items/soul_hunter_crossbow": "\u7075\u9b42\u730e\u624b\u5f29",
      "/items/sundering_crossbow": "\u88c2\u7a7a\u4e4b\u5f29",
      "/items/frost_staff": "\u51b0\u971c\u6cd5\u6756",
      "/items/infernal_battlestaff": "\u70bc\u72f1\u6cd5\u6756",
      "/items/jackalope_staff": "\u9e7f\u89d2\u5154\u4e4b\u6756",
      "/items/rippling_trident": "\u6d9f\u6f2a\u4e09\u53c9\u621f",
      "/items/blooming_trident": "\u7efd\u653e\u4e09\u53c9\u621f",
      "/items/blazing_trident": "\u70bd\u7130\u4e09\u53c9\u621f",
      "/items/cheese_sword": "\u5976\u916a\u5251",
      "/items/verdant_sword": "\u7fe0\u7eff\u5251",
      "/items/azure_sword": "\u851a\u84dd\u5251",
      "/items/burble_sword": "\u6df1\u7d2b\u5251",
      "/items/crimson_sword": "\u7edb\u7ea2\u5251",
      "/items/rainbow_sword": "\u5f69\u8679\u5251",
      "/items/holy_sword": "\u795e\u5723\u5251",
      "/items/cheese_spear": "\u5976\u916a\u957f\u67aa",
      "/items/verdant_spear": "\u7fe0\u7eff\u957f\u67aa",
      "/items/azure_spear": "\u851a\u84dd\u957f\u67aa",
      "/items/burble_spear": "\u6df1\u7d2b\u957f\u67aa",
      "/items/crimson_spear": "\u7edb\u7ea2\u957f\u67aa",
      "/items/rainbow_spear": "\u5f69\u8679\u957f\u67aa",
      "/items/holy_spear": "\u795e\u5723\u957f\u67aa",
      "/items/cheese_mace": "\u5976\u916a\u9489\u5934\u9524",
      "/items/verdant_mace": "\u7fe0\u7eff\u9489\u5934\u9524",
      "/items/azure_mace": "\u851a\u84dd\u9489\u5934\u9524",
      "/items/burble_mace": "\u6df1\u7d2b\u9489\u5934\u9524",
      "/items/crimson_mace": "\u7edb\u7ea2\u9489\u5934\u9524",
      "/items/rainbow_mace": "\u5f69\u8679\u9489\u5934\u9524",
      "/items/holy_mace": "\u795e\u5723\u9489\u5934\u9524",
      "/items/wooden_crossbow": "\u6728\u5f29",
      "/items/birch_crossbow": "\u6866\u6728\u5f29",
      "/items/cedar_crossbow": "\u96ea\u677e\u5f29",
      "/items/purpleheart_crossbow": "\u7d2b\u5fc3\u5f29",
      "/items/ginkgo_crossbow": "\u94f6\u674f\u5f29",
      "/items/redwood_crossbow": "\u7ea2\u6749\u5f29",
      "/items/arcane_crossbow": "\u795e\u79d8\u5f29",
      "/items/wooden_water_staff": "\u6728\u5236\u6c34\u6cd5\u6756",
      "/items/birch_water_staff": "\u6866\u6728\u6c34\u6cd5\u6756",
      "/items/cedar_water_staff": "\u96ea\u677e\u6c34\u6cd5\u6756",
      "/items/purpleheart_water_staff": "\u7d2b\u5fc3\u6c34\u6cd5\u6756",
      "/items/ginkgo_water_staff": "\u94f6\u674f\u6c34\u6cd5\u6756",
      "/items/redwood_water_staff": "\u7ea2\u6749\u6c34\u6cd5\u6756",
      "/items/arcane_water_staff": "\u795e\u79d8\u6c34\u6cd5\u6756",
      "/items/wooden_nature_staff": "\u6728\u5236\u81ea\u7136\u6cd5\u6756",
      "/items/birch_nature_staff": "\u6866\u6728\u81ea\u7136\u6cd5\u6756",
      "/items/cedar_nature_staff": "\u96ea\u677e\u81ea\u7136\u6cd5\u6756",
      "/items/purpleheart_nature_staff": "\u7d2b\u5fc3\u81ea\u7136\u6cd5\u6756",
      "/items/ginkgo_nature_staff": "\u94f6\u674f\u81ea\u7136\u6cd5\u6756",
      "/items/redwood_nature_staff": "\u7ea2\u6749\u81ea\u7136\u6cd5\u6756",
      "/items/arcane_nature_staff": "\u795e\u79d8\u81ea\u7136\u6cd5\u6756",
      "/items/wooden_fire_staff": "\u6728\u5236\u706b\u6cd5\u6756",
      "/items/birch_fire_staff": "\u6866\u6728\u706b\u6cd5\u6756",
      "/items/cedar_fire_staff": "\u96ea\u677e\u706b\u6cd5\u6756",
      "/items/purpleheart_fire_staff": "\u7d2b\u5fc3\u706b\u6cd5\u6756",
      "/items/ginkgo_fire_staff": "\u94f6\u674f\u706b\u6cd5\u6756",
      "/items/redwood_fire_staff": "\u7ea2\u6749\u706b\u6cd5\u6756",
      "/items/arcane_fire_staff": "\u795e\u79d8\u706b\u6cd5\u6756",
      "/items/eye_watch": "\u638c\u4e0a\u76d1\u5de5",
      "/items/snake_fang_dirk": "\u86c7\u7259\u77ed\u5251",
      "/items/vision_shield": "\u89c6\u89c9\u76fe",
      "/items/gobo_defender": "\u54e5\u5e03\u6797\u9632\u5fa1\u8005",
      "/items/vampire_fang_dirk": "\u5438\u8840\u9b3c\u77ed\u5251",
      "/items/knights_aegis": "\u9a91\u58eb\u76fe",
      "/items/treant_shield": "\u6811\u4eba\u76fe",
      "/items/manticore_shield": "\u874e\u72ee\u76fe",
      "/items/tome_of_healing": "\u6cbb\u7597\u4e4b\u4e66",
      "/items/tome_of_the_elements": "\u5143\u7d20\u4e4b\u4e66",
      "/items/watchful_relic": "\u8b66\u6212\u9057\u7269",
      "/items/bishops_codex": "\u4e3b\u6559\u6cd5\u5178",
      "/items/cheese_buckler": "\u5976\u916a\u5706\u76fe",
      "/items/verdant_buckler": "\u7fe0\u7eff\u5706\u76fe",
      "/items/azure_buckler": "\u851a\u84dd\u5706\u76fe",
      "/items/burble_buckler": "\u6df1\u7d2b\u5706\u76fe",
      "/items/crimson_buckler": "\u7edb\u7ea2\u5706\u76fe",
      "/items/rainbow_buckler": "\u5f69\u8679\u5706\u76fe",
      "/items/holy_buckler": "\u795e\u5723\u5706\u76fe",
      "/items/wooden_shield": "\u6728\u76fe",
      "/items/birch_shield": "\u6866\u6728\u76fe",
      "/items/cedar_shield": "\u96ea\u677e\u76fe",
      "/items/purpleheart_shield": "\u7d2b\u5fc3\u76fe",
      "/items/ginkgo_shield": "\u94f6\u674f\u76fe",
      "/items/redwood_shield": "\u7ea2\u6749\u76fe",
      "/items/arcane_shield": "\u795e\u79d8\u76fe",
      "/items/sinister_cape": "\u9634\u68ee\u6597\u7bf7",
      "/items/chimerical_quiver": "\u5947\u5e7b\u7bad\u888b",
      "/items/enchanted_cloak": "\u79d8\u6cd5\u62ab\u98ce",
      "/items/red_culinary_hat": "\u7ea2\u8272\u53a8\u5e08\u5e3d",
      "/items/snail_shell_helmet": "\u8717\u725b\u58f3\u5934\u76d4",
      "/items/vision_helmet": "\u89c6\u89c9\u5934\u76d4",
      "/items/fluffy_red_hat": "\u84ec\u677e\u7ea2\u5e3d\u5b50",
      "/items/corsair_helmet": "\u63a0\u593a\u8005\u5934\u76d4",
      "/items/acrobatic_hood": "\u6742\u6280\u5e08\u515c\u5e3d",
      "/items/magicians_hat": "\u9b54\u672f\u5e08\u5e3d",
      "/items/cheese_helmet": "\u5976\u916a\u5934\u76d4",
      "/items/verdant_helmet": "\u7fe0\u7eff\u5934\u76d4",
      "/items/azure_helmet": "\u851a\u84dd\u5934\u76d4",
      "/items/burble_helmet": "\u6df1\u7d2b\u5934\u76d4",
      "/items/crimson_helmet": "\u7edb\u7ea2\u5934\u76d4",
      "/items/rainbow_helmet": "\u5f69\u8679\u5934\u76d4",
      "/items/holy_helmet": "\u795e\u5723\u5934\u76d4",
      "/items/rough_hood": "\u7c97\u7cd9\u515c\u5e3d",
      "/items/reptile_hood": "\u722c\u884c\u52a8\u7269\u515c\u5e3d",
      "/items/gobo_hood": "\u54e5\u5e03\u6797\u515c\u5e3d",
      "/items/beast_hood": "\u91ce\u517d\u515c\u5e3d",
      "/items/umbral_hood": "\u6697\u5f71\u515c\u5e3d",
      "/items/cotton_hat": "\u68c9\u5e3d",
      "/items/linen_hat": "\u4e9a\u9ebb\u5e3d",
      "/items/bamboo_hat": "\u7af9\u5e3d",
      "/items/silk_hat": "\u4e1d\u5e3d",
      "/items/radiant_hat": "\u5149\u8f89\u5e3d",
      "/items/dairyhands_top": "\u6324\u5976\u5de5\u4e0a\u8863",
      "/items/foragers_top": "\u91c7\u6458\u8005\u4e0a\u8863",
      "/items/lumberjacks_top": "\u4f10\u6728\u5de5\u4e0a\u8863",
      "/items/cheesemakers_top": "\u5976\u916a\u5e08\u4e0a\u8863",
      "/items/crafters_top": "\u5de5\u5320\u4e0a\u8863",
      "/items/tailors_top": "\u88c1\u7f1d\u4e0a\u8863",
      "/items/chefs_top": "\u53a8\u5e08\u4e0a\u8863",
      "/items/brewers_top": "\u996e\u54c1\u5e08\u4e0a\u8863",
      "/items/alchemists_top": "\u70bc\u91d1\u5e08\u4e0a\u8863",
      "/items/enhancers_top": "\u5f3a\u5316\u5e08\u4e0a\u8863",
      "/items/gator_vest": "\u9cc4\u9c7c\u9a6c\u7532",
      "/items/turtle_shell_body": "\u9f9f\u58f3\u80f8\u7532",
      "/items/colossus_plate_body": "\u5de8\u50cf\u80f8\u7532",
      "/items/demonic_plate_body": "\u6076\u9b54\u80f8\u7532",
      "/items/anchorbound_plate_body": "\u951a\u5b9a\u80f8\u7532",
      "/items/maelstrom_plate_body": "\u6012\u6d9b\u80f8\u7532",
      "/items/marine_tunic": "\u6d77\u6d0b\u76ae\u8863",
      "/items/revenant_tunic": "\u4ea1\u7075\u76ae\u8863",
      "/items/griffin_tunic": "\u72ee\u9e6b\u76ae\u8863",
      "/items/kraken_tunic": "\u514b\u62c9\u80af\u76ae\u8863",
      "/items/icy_robe_top": "\u51b0\u971c\u888d\u670d",
      "/items/flaming_robe_top": "\u70c8\u7130\u888d\u670d",
      "/items/luna_robe_top": "\u6708\u795e\u888d\u670d",
      "/items/royal_water_robe_top": "\u7687\u5bb6\u6c34\u7cfb\u888d\u670d",
      "/items/royal_nature_robe_top": "\u7687\u5bb6\u81ea\u7136\u7cfb\u888d\u670d",
      "/items/royal_fire_robe_top": "\u7687\u5bb6\u706b\u7cfb\u888d\u670d",
      "/items/cheese_plate_body": "\u5976\u916a\u80f8\u7532",
      "/items/verdant_plate_body": "\u7fe0\u7eff\u80f8\u7532",
      "/items/azure_plate_body": "\u851a\u84dd\u80f8\u7532",
      "/items/burble_plate_body": "\u6df1\u7d2b\u80f8\u7532",
      "/items/crimson_plate_body": "\u7edb\u7ea2\u80f8\u7532",
      "/items/rainbow_plate_body": "\u5f69\u8679\u80f8\u7532",
      "/items/holy_plate_body": "\u795e\u5723\u80f8\u7532",
      "/items/rough_tunic": "\u7c97\u7cd9\u76ae\u8863",
      "/items/reptile_tunic": "\u722c\u884c\u52a8\u7269\u76ae\u8863",
      "/items/gobo_tunic": "\u54e5\u5e03\u6797\u76ae\u8863",
      "/items/beast_tunic": "\u91ce\u517d\u76ae\u8863",
      "/items/umbral_tunic": "\u6697\u5f71\u76ae\u8863",
      "/items/cotton_robe_top": "\u68c9\u5e03\u888d\u670d",
      "/items/linen_robe_top": "\u4e9a\u9ebb\u888d\u670d",
      "/items/bamboo_robe_top": "\u7af9\u888d\u670d",
      "/items/silk_robe_top": "\u4e1d\u7ef8\u888d\u670d",
      "/items/radiant_robe_top": "\u5149\u8f89\u888d\u670d",
      "/items/dairyhands_bottoms": "\u6324\u5976\u5de5\u4e0b\u88c5",
      "/items/foragers_bottoms": "\u91c7\u6458\u8005\u4e0b\u88c5",
      "/items/lumberjacks_bottoms": "\u4f10\u6728\u5de5\u4e0b\u88c5",
      "/items/cheesemakers_bottoms": "\u5976\u916a\u5e08\u4e0b\u88c5",
      "/items/crafters_bottoms": "\u5de5\u5320\u4e0b\u88c5",
      "/items/tailors_bottoms": "\u88c1\u7f1d\u4e0b\u88c5",
      "/items/chefs_bottoms": "\u53a8\u5e08\u4e0b\u88c5",
      "/items/brewers_bottoms": "\u996e\u54c1\u5e08\u4e0b\u88c5",
      "/items/alchemists_bottoms": "\u70bc\u91d1\u5e08\u4e0b\u88c5",
      "/items/enhancers_bottoms": "\u5f3a\u5316\u5e08\u4e0b\u88c5",
      "/items/turtle_shell_legs": "\u9f9f\u58f3\u817f\u7532",
      "/items/colossus_plate_legs": "\u5de8\u50cf\u817f\u7532",
      "/items/demonic_plate_legs": "\u6076\u9b54\u817f\u7532",
      "/items/anchorbound_plate_legs": "\u951a\u5b9a\u817f\u7532",
      "/items/maelstrom_plate_legs": "\u6012\u6d9b\u817f\u7532",
      "/items/marine_chaps": "\u822a\u6d77\u76ae\u88e4",
      "/items/revenant_chaps": "\u4ea1\u7075\u76ae\u88e4",
      "/items/griffin_chaps": "\u72ee\u9e6b\u76ae\u88e4",
      "/items/kraken_chaps": "\u514b\u62c9\u80af\u76ae\u88e4",
      "/items/icy_robe_bottoms": "\u51b0\u971c\u888d\u88d9",
      "/items/flaming_robe_bottoms": "\u70c8\u7130\u888d\u88d9",
      "/items/luna_robe_bottoms": "\u6708\u795e\u888d\u88d9",
      "/items/royal_water_robe_bottoms": "\u7687\u5bb6\u6c34\u7cfb\u888d\u88d9",
      "/items/royal_nature_robe_bottoms": "\u7687\u5bb6\u81ea\u7136\u7cfb\u888d\u88d9",
      "/items/royal_fire_robe_bottoms": "\u7687\u5bb6\u706b\u7cfb\u888d\u88d9",
      "/items/cheese_plate_legs": "\u5976\u916a\u817f\u7532",
      "/items/verdant_plate_legs": "\u7fe0\u7eff\u817f\u7532",
      "/items/azure_plate_legs": "\u851a\u84dd\u817f\u7532",
      "/items/burble_plate_legs": "\u6df1\u7d2b\u817f\u7532",
      "/items/crimson_plate_legs": "\u7edb\u7ea2\u817f\u7532",
      "/items/rainbow_plate_legs": "\u5f69\u8679\u817f\u7532",
      "/items/holy_plate_legs": "\u795e\u5723\u817f\u7532",
      "/items/rough_chaps": "\u7c97\u7cd9\u76ae\u88e4",
      "/items/reptile_chaps": "\u722c\u884c\u52a8\u7269\u76ae\u88e4",
      "/items/gobo_chaps": "\u54e5\u5e03\u6797\u76ae\u88e4",
      "/items/beast_chaps": "\u91ce\u517d\u76ae\u88e4",
      "/items/umbral_chaps": "\u6697\u5f71\u76ae\u88e4",
      "/items/cotton_robe_bottoms": "\u68c9\u888d\u88d9",
      "/items/linen_robe_bottoms": "\u4e9a\u9ebb\u888d\u88d9",
      "/items/bamboo_robe_bottoms": "\u7af9\u888d\u88d9",
      "/items/silk_robe_bottoms": "\u4e1d\u7ef8\u888d\u88d9",
      "/items/radiant_robe_bottoms": "\u5149\u8f89\u888d\u88d9",
      "/items/enchanted_gloves": "\u9644\u9b54\u624b\u5957",
      "/items/pincer_gloves": "\u87f9\u94b3\u624b\u5957",
      "/items/panda_gloves": "\u718a\u732b\u624b\u5957",
      "/items/magnetic_gloves": "\u78c1\u529b\u624b\u5957",
      "/items/dodocamel_gauntlets": "\u6e21\u6e21\u9a7c\u62a4\u624b",
      "/items/sighted_bracers": "\u7784\u51c6\u62a4\u8155",
      "/items/marksman_bracers": "\u795e\u5c04\u62a4\u8155",
      "/items/chrono_gloves": "\u65f6\u7a7a\u624b\u5957",
      "/items/cheese_gauntlets": "\u5976\u916a\u62a4\u624b",
      "/items/verdant_gauntlets": "\u7fe0\u7eff\u62a4\u624b",
      "/items/azure_gauntlets": "\u851a\u84dd\u62a4\u624b",
      "/items/burble_gauntlets": "\u6df1\u7d2b\u62a4\u624b",
      "/items/crimson_gauntlets": "\u7edb\u7ea2\u62a4\u624b",
      "/items/rainbow_gauntlets": "\u5f69\u8679\u62a4\u624b",
      "/items/holy_gauntlets": "\u795e\u5723\u62a4\u624b",
      "/items/rough_bracers": "\u7c97\u7cd9\u62a4\u8155",
      "/items/reptile_bracers": "\u722c\u884c\u52a8\u7269\u62a4\u8155",
      "/items/gobo_bracers": "\u54e5\u5e03\u6797\u62a4\u8155",
      "/items/beast_bracers": "\u91ce\u517d\u62a4\u8155",
      "/items/umbral_bracers": "\u6697\u5f71\u62a4\u8155",
      "/items/cotton_gloves": "\u68c9\u624b\u5957",
      "/items/linen_gloves": "\u4e9a\u9ebb\u624b\u5957",
      "/items/bamboo_gloves": "\u7af9\u624b\u5957",
      "/items/silk_gloves": "\u4e1d\u624b\u5957",
      "/items/radiant_gloves": "\u5149\u8f89\u624b\u5957",
      "/items/collectors_boots": "\u6536\u85cf\u5bb6\u9774",
      "/items/shoebill_shoes": "\u9cb8\u5934\u9e73\u978b",
      "/items/black_bear_shoes": "\u9ed1\u718a\u978b",
      "/items/grizzly_bear_shoes": "\u68d5\u718a\u978b",
      "/items/polar_bear_shoes": "\u5317\u6781\u718a\u978b",
      "/items/centaur_boots": "\u534a\u4eba\u9a6c\u9774",
      "/items/sorcerer_boots": "\u5deb\u5e08\u9774",
      "/items/cheese_boots": "\u5976\u916a\u9774",
      "/items/verdant_boots": "\u7fe0\u7eff\u9774",
      "/items/azure_boots": "\u851a\u84dd\u9774",
      "/items/burble_boots": "\u6df1\u7d2b\u9774",
      "/items/crimson_boots": "\u7edb\u7ea2\u9774",
      "/items/rainbow_boots": "\u5f69\u8679\u9774",
      "/items/holy_boots": "\u795e\u5723\u9774",
      "/items/rough_boots": "\u7c97\u7cd9\u9774",
      "/items/reptile_boots": "\u722c\u884c\u52a8\u7269\u9774",
      "/items/gobo_boots": "\u54e5\u5e03\u6797\u9774",
      "/items/beast_boots": "\u91ce\u517d\u9774",
      "/items/umbral_boots": "\u6697\u5f71\u9774",
      "/items/cotton_boots": "\u68c9\u9774",
      "/items/linen_boots": "\u4e9a\u9ebb\u9774",
      "/items/bamboo_boots": "\u7af9\u9774",
      "/items/silk_boots": "\u4e1d\u9774",
      "/items/radiant_boots": "\u5149\u8f89\u9774",
      "/items/small_pouch": "\u5c0f\u888b\u5b50",
      "/items/medium_pouch": "\u4e2d\u888b\u5b50",
      "/items/large_pouch": "\u5927\u888b\u5b50",
      "/items/giant_pouch": "\u5de8\u5927\u888b\u5b50",
      "/items/gluttonous_pouch": "\u8d2a\u98df\u4e4b\u888b",
      "/items/guzzling_pouch": "\u66b4\u996e\u4e4b\u56ca",
      "/items/necklace_of_efficiency": "\u6548\u7387\u9879\u94fe",
      "/items/fighter_necklace": "\u6218\u58eb\u9879\u94fe",
      "/items/ranger_necklace": "\u5c04\u624b\u9879\u94fe",
      "/items/wizard_necklace": "\u5deb\u5e08\u9879\u94fe",
      "/items/necklace_of_wisdom": "\u7ecf\u9a8c\u9879\u94fe",
      "/items/necklace_of_speed": "\u901f\u5ea6\u9879\u94fe",
      "/items/philosophers_necklace": "\u8d24\u8005\u9879\u94fe",
      "/items/earrings_of_gathering": "\u91c7\u96c6\u8033\u73af",
      "/items/earrings_of_essence_find": "\u7cbe\u534e\u53d1\u73b0\u8033\u73af",
      "/items/earrings_of_armor": "\u62a4\u7532\u8033\u73af",
      "/items/earrings_of_regeneration": "\u6062\u590d\u8033\u73af",
      "/items/earrings_of_resistance": "\u6297\u6027\u8033\u73af",
      "/items/earrings_of_rare_find": "\u7a00\u6709\u53d1\u73b0\u8033\u73af",
      "/items/earrings_of_critical_strike": "\u66b4\u51fb\u8033\u73af",
      "/items/philosophers_earrings": "\u8d24\u8005\u8033\u73af",
      "/items/ring_of_gathering": "\u91c7\u96c6\u6212\u6307",
      "/items/ring_of_essence_find": "\u7cbe\u534e\u53d1\u73b0\u6212\u6307",
      "/items/ring_of_armor": "\u62a4\u7532\u6212\u6307",
      "/items/ring_of_regeneration": "\u6062\u590d\u6212\u6307",
      "/items/ring_of_resistance": "\u6297\u6027\u6212\u6307",
      "/items/ring_of_rare_find": "\u7a00\u6709\u53d1\u73b0\u6212\u6307",
      "/items/ring_of_critical_strike": "\u66b4\u51fb\u6212\u6307",
      "/items/philosophers_ring": "\u8d24\u8005\u6212\u6307",
      "/items/basic_task_badge": "\u57fa\u7840\u4efb\u52a1\u5fbd\u7ae0",
      "/items/advanced_task_badge": "\u9ad8\u7ea7\u4efb\u52a1\u5fbd\u7ae0",
      "/items/expert_task_badge": "\u4e13\u5bb6\u4efb\u52a1\u5fbd\u7ae0",
      "/items/celestial_brush": "\u661f\u7a7a\u5237\u5b50",
      "/items/cheese_brush": "\u5976\u916a\u5237\u5b50",
      "/items/verdant_brush": "\u7fe0\u7eff\u5237\u5b50",
      "/items/azure_brush": "\u851a\u84dd\u5237\u5b50",
      "/items/burble_brush": "\u6df1\u7d2b\u5237\u5b50",
      "/items/crimson_brush": "\u7edb\u7ea2\u5237\u5b50",
      "/items/rainbow_brush": "\u5f69\u8679\u5237\u5b50",
      "/items/holy_brush": "\u795e\u5723\u5237\u5b50",
      "/items/celestial_shears": "\u661f\u7a7a\u526a\u5200",
      "/items/cheese_shears": "\u5976\u916a\u526a\u5200",
      "/items/verdant_shears": "\u7fe0\u7eff\u526a\u5200",
      "/items/azure_shears": "\u851a\u84dd\u526a\u5200",
      "/items/burble_shears": "\u6df1\u7d2b\u526a\u5200",
      "/items/crimson_shears": "\u7edb\u7ea2\u526a\u5200",
      "/items/rainbow_shears": "\u5f69\u8679\u526a\u5200",
      "/items/holy_shears": "\u795e\u5723\u526a\u5200",
      "/items/celestial_hatchet": "\u661f\u7a7a\u65a7\u5934",
      "/items/cheese_hatchet": "\u5976\u916a\u65a7\u5934",
      "/items/verdant_hatchet": "\u7fe0\u7eff\u65a7\u5934",
      "/items/azure_hatchet": "\u851a\u84dd\u65a7\u5934",
      "/items/burble_hatchet": "\u6df1\u7d2b\u65a7\u5934",
      "/items/crimson_hatchet": "\u7edb\u7ea2\u65a7\u5934",
      "/items/rainbow_hatchet": "\u5f69\u8679\u65a7\u5934",
      "/items/holy_hatchet": "\u795e\u5723\u65a7\u5934",
      "/items/celestial_hammer": "\u661f\u7a7a\u9524\u5b50",
      "/items/cheese_hammer": "\u5976\u916a\u9524\u5b50",
      "/items/verdant_hammer": "\u7fe0\u7eff\u9524\u5b50",
      "/items/azure_hammer": "\u851a\u84dd\u9524\u5b50",
      "/items/burble_hammer": "\u6df1\u7d2b\u9524\u5b50",
      "/items/crimson_hammer": "\u7edb\u7ea2\u9524\u5b50",
      "/items/rainbow_hammer": "\u5f69\u8679\u9524\u5b50",
      "/items/holy_hammer": "\u795e\u5723\u9524\u5b50",
      "/items/celestial_chisel": "\u661f\u7a7a\u51ff\u5b50",
      "/items/cheese_chisel": "\u5976\u916a\u51ff\u5b50",
      "/items/verdant_chisel": "\u7fe0\u7eff\u51ff\u5b50",
      "/items/azure_chisel": "\u851a\u84dd\u51ff\u5b50",
      "/items/burble_chisel": "\u6df1\u7d2b\u51ff\u5b50",
      "/items/crimson_chisel": "\u7edb\u7ea2\u51ff\u5b50",
      "/items/rainbow_chisel": "\u5f69\u8679\u51ff\u5b50",
      "/items/holy_chisel": "\u795e\u5723\u51ff\u5b50",
      "/items/celestial_needle": "\u661f\u7a7a\u9488",
      "/items/cheese_needle": "\u5976\u916a\u9488",
      "/items/verdant_needle": "\u7fe0\u7eff\u9488",
      "/items/azure_needle": "\u851a\u84dd\u9488",
      "/items/burble_needle": "\u6df1\u7d2b\u9488",
      "/items/crimson_needle": "\u7edb\u7ea2\u9488",
      "/items/rainbow_needle": "\u5f69\u8679\u9488",
      "/items/holy_needle": "\u795e\u5723\u9488",
      "/items/celestial_spatula": "\u661f\u7a7a\u9505\u94f2",
      "/items/cheese_spatula": "\u5976\u916a\u9505\u94f2",
      "/items/verdant_spatula": "\u7fe0\u7eff\u9505\u94f2",
      "/items/azure_spatula": "\u851a\u84dd\u9505\u94f2",
      "/items/burble_spatula": "\u6df1\u7d2b\u9505\u94f2",
      "/items/crimson_spatula": "\u7edb\u7ea2\u9505\u94f2",
      "/items/rainbow_spatula": "\u5f69\u8679\u9505\u94f2",
      "/items/holy_spatula": "\u795e\u5723\u9505\u94f2",
      "/items/celestial_pot": "\u661f\u7a7a\u58f6",
      "/items/cheese_pot": "\u5976\u916a\u58f6",
      "/items/verdant_pot": "\u7fe0\u7eff\u58f6",
      "/items/azure_pot": "\u851a\u84dd\u58f6",
      "/items/burble_pot": "\u6df1\u7d2b\u58f6",
      "/items/crimson_pot": "\u7edb\u7ea2\u58f6",
      "/items/rainbow_pot": "\u5f69\u8679\u58f6",
      "/items/holy_pot": "\u795e\u5723\u58f6",
      "/items/celestial_alembic": "\u661f\u7a7a\u84b8\u998f\u5668",
      "/items/cheese_alembic": "\u5976\u916a\u84b8\u998f\u5668",
      "/items/verdant_alembic": "\u7fe0\u7eff\u84b8\u998f\u5668",
      "/items/azure_alembic": "\u851a\u84dd\u84b8\u998f\u5668",
      "/items/burble_alembic": "\u6df1\u7d2b\u84b8\u998f\u5668",
      "/items/crimson_alembic": "\u7edb\u7ea2\u84b8\u998f\u5668",
      "/items/rainbow_alembic": "\u5f69\u8679\u84b8\u998f\u5668",
      "/items/holy_alembic": "\u795e\u5723\u84b8\u998f\u5668",
      "/items/celestial_enhancer": "\u661f\u7a7a\u5f3a\u5316\u5668",
      "/items/cheese_enhancer": "\u5976\u916a\u5f3a\u5316\u5668",
      "/items/verdant_enhancer": "\u7fe0\u7eff\u5f3a\u5316\u5668",
      "/items/azure_enhancer": "\u851a\u84dd\u5f3a\u5316\u5668",
      "/items/burble_enhancer": "\u6df1\u7d2b\u5f3a\u5316\u5668",
      "/items/crimson_enhancer": "\u7edb\u7ea2\u5f3a\u5316\u5668",
      "/items/rainbow_enhancer": "\u5f69\u8679\u5f3a\u5316\u5668",
      "/items/holy_enhancer": "\u795e\u5723\u5f3a\u5316\u5668",
      "/items/milk": "\u725b\u5976",
      "/items/verdant_milk": "\u7fe0\u7eff\u725b\u5976",
      "/items/azure_milk": "\u851a\u84dd\u725b\u5976",
      "/items/burble_milk": "\u6df1\u7d2b\u725b\u5976",
      "/items/crimson_milk": "\u7edb\u7ea2\u725b\u5976",
      "/items/rainbow_milk": "\u5f69\u8679\u725b\u5976",
      "/items/holy_milk": "\u795e\u5723\u725b\u5976",
      "/items/cheese": "\u5976\u916a",
      "/items/verdant_cheese": "\u7fe0\u7eff\u5976\u916a",
      "/items/azure_cheese": "\u851a\u84dd\u5976\u916a",
      "/items/burble_cheese": "\u6df1\u7d2b\u5976\u916a",
      "/items/crimson_cheese": "\u7edb\u7ea2\u5976\u916a",
      "/items/rainbow_cheese": "\u5f69\u8679\u5976\u916a",
      "/items/holy_cheese": "\u795e\u5723\u5976\u916a",
      "/items/log": "\u539f\u6728",
      "/items/birch_log": "\u767d\u6866\u539f\u6728",
      "/items/cedar_log": "\u96ea\u677e\u539f\u6728",
      "/items/purpleheart_log": "\u7d2b\u5fc3\u539f\u6728",
      "/items/ginkgo_log": "\u94f6\u674f\u539f\u6728",
      "/items/redwood_log": "\u7ea2\u6749\u539f\u6728",
      "/items/arcane_log": "\u795e\u79d8\u539f\u6728",
      "/items/lumber": "\u6728\u677f",
      "/items/birch_lumber": "\u767d\u6866\u6728\u677f",
      "/items/cedar_lumber": "\u96ea\u677e\u6728\u677f",
      "/items/purpleheart_lumber": "\u7d2b\u5fc3\u6728\u677f",
      "/items/ginkgo_lumber": "\u94f6\u674f\u6728\u677f",
      "/items/redwood_lumber": "\u7ea2\u6749\u6728\u677f",
      "/items/arcane_lumber": "\u795e\u79d8\u6728\u677f",
      "/items/rough_hide": "\u7c97\u7cd9\u517d\u76ae",
      "/items/reptile_hide": "\u722c\u884c\u52a8\u7269\u76ae",
      "/items/gobo_hide": "\u54e5\u5e03\u6797\u76ae",
      "/items/beast_hide": "\u91ce\u517d\u76ae",
      "/items/umbral_hide": "\u6697\u5f71\u76ae",
      "/items/rough_leather": "\u7c97\u7cd9\u76ae\u9769",
      "/items/reptile_leather": "\u722c\u884c\u52a8\u7269\u76ae\u9769",
      "/items/gobo_leather": "\u54e5\u5e03\u6797\u76ae\u9769",
      "/items/beast_leather": "\u91ce\u517d\u76ae\u9769",
      "/items/umbral_leather": "\u6697\u5f71\u76ae\u9769",
      "/items/cotton": "\u68c9\u82b1",
      "/items/flax": "\u4e9a\u9ebb",
      "/items/bamboo_branch": "\u7af9\u5b50",
      "/items/cocoon": "\u8695\u8327",
      "/items/radiant_fiber": "\u5149\u8f89\u7ea4\u7ef4",
      "/items/cotton_fabric": "\u68c9\u82b1\u5e03\u6599",
      "/items/linen_fabric": "\u4e9a\u9ebb\u5e03\u6599",
      "/items/bamboo_fabric": "\u7af9\u5b50\u5e03\u6599",
      "/items/silk_fabric": "\u4e1d\u7ef8",
      "/items/radiant_fabric": "\u5149\u8f89\u5e03\u6599",
      "/items/egg": "\u9e21\u86cb",
      "/items/wheat": "\u5c0f\u9ea6",
      "/items/sugar": "\u7cd6",
      "/items/blueberry": "\u84dd\u8393",
      "/items/blackberry": "\u9ed1\u8393",
      "/items/strawberry": "\u8349\u8393",
      "/items/mooberry": "\u54de\u8393",
      "/items/marsberry": "\u706b\u661f\u8393",
      "/items/spaceberry": "\u592a\u7a7a\u8393",
      "/items/apple": "\u82f9\u679c",
      "/items/orange": "\u6a59\u5b50",
      "/items/plum": "\u674e\u5b50",
      "/items/peach": "\u6843\u5b50",
      "/items/dragon_fruit": "\u706b\u9f99\u679c",
      "/items/star_fruit": "\u6768\u6843",
      "/items/arabica_coffee_bean": "\u4f4e\u7ea7\u5496\u5561\u8c46",
      "/items/robusta_coffee_bean": "\u4e2d\u7ea7\u5496\u5561\u8c46",
      "/items/liberica_coffee_bean": "\u9ad8\u7ea7\u5496\u5561\u8c46",
      "/items/excelsa_coffee_bean": "\u7279\u7ea7\u5496\u5561\u8c46",
      "/items/fieriosa_coffee_bean": "\u706b\u5c71\u5496\u5561\u8c46",
      "/items/spacia_coffee_bean": "\u592a\u7a7a\u5496\u5561\u8c46",
      "/items/green_tea_leaf": "\u7eff\u8336\u53f6",
      "/items/black_tea_leaf": "\u9ed1\u8336\u53f6",
      "/items/burble_tea_leaf": "\u7d2b\u8336\u53f6",
      "/items/moolong_tea_leaf": "\u54de\u9f99\u8336\u53f6",
      "/items/red_tea_leaf": "\u7ea2\u8336\u53f6",
      "/items/emp_tea_leaf": "\u865a\u7a7a\u8336\u53f6",
      "/items/catalyst_of_coinification": "\u70b9\u91d1\u50ac\u5316\u5242",
      "/items/catalyst_of_decomposition": "\u5206\u89e3\u50ac\u5316\u5242",
      "/items/catalyst_of_transmutation": "\u8f6c\u5316\u50ac\u5316\u5242",
      "/items/prime_catalyst": "\u81f3\u9ad8\u50ac\u5316\u5242",
      "/items/snake_fang": "\u86c7\u7259",
      "/items/shoebill_feather": "\u9cb8\u5934\u9e73\u7fbd\u6bdb",
      "/items/snail_shell": "\u8717\u725b\u58f3",
      "/items/crab_pincer": "\u87f9\u94b3",
      "/items/turtle_shell": "\u4e4c\u9f9f\u58f3",
      "/items/marine_scale": "\u6d77\u6d0b\u9cde\u7247",
      "/items/treant_bark": "\u6811\u76ae",
      "/items/centaur_hoof": "\u534a\u4eba\u9a6c\u8e44",
      "/items/luna_wing": "\u6708\u795e\u7ffc",
      "/items/gobo_rag": "\u54e5\u5e03\u6797\u62b9\u5e03",
      "/items/goggles": "\u62a4\u76ee\u955c",
      "/items/magnifying_glass": "\u653e\u5927\u955c",
      "/items/eye_of_the_watcher": "\u89c2\u5bdf\u8005\u4e4b\u773c",
      "/items/icy_cloth": "\u51b0\u971c\u7ec7\u7269",
      "/items/flaming_cloth": "\u70c8\u7130\u7ec7\u7269",
      "/items/sorcerers_sole": "\u9b54\u6cd5\u5e08\u978b\u5e95",
      "/items/chrono_sphere": "\u65f6\u7a7a\u7403",
      "/items/frost_sphere": "\u51b0\u971c\u7403",
      "/items/panda_fluff": "\u718a\u732b\u7ed2",
      "/items/black_bear_fluff": "\u9ed1\u718a\u7ed2",
      "/items/grizzly_bear_fluff": "\u68d5\u718a\u7ed2",
      "/items/polar_bear_fluff": "\u5317\u6781\u718a\u7ed2",
      "/items/red_panda_fluff": "\u5c0f\u718a\u732b\u7ed2",
      "/items/magnet": "\u78c1\u94c1",
      "/items/stalactite_shard": "\u949f\u4e73\u77f3\u788e\u7247",
      "/items/living_granite": "\u82b1\u5c97\u5ca9",
      "/items/colossus_core": "\u5de8\u50cf\u6838\u5fc3",
      "/items/vampire_fang": "\u5438\u8840\u9b3c\u4e4b\u7259",
      "/items/werewolf_claw": "\u72fc\u4eba\u4e4b\u722a",
      "/items/revenant_anima": "\u4ea1\u8005\u4e4b\u9b42",
      "/items/soul_fragment": "\u7075\u9b42\u788e\u7247",
      "/items/infernal_ember": "\u5730\u72f1\u4f59\u70ec",
      "/items/demonic_core": "\u6076\u9b54\u6838\u5fc3",
      "/items/griffin_leather": "\u72ee\u9e6b\u4e4b\u76ae",
      "/items/manticore_sting": "\u874e\u72ee\u4e4b\u523a",
      "/items/jackalope_antler": "\u9e7f\u89d2\u5154\u4e4b\u89d2",
      "/items/dodocamel_plume": "\u6e21\u6e21\u9a7c\u4e4b\u7fce",
      "/items/griffin_talon": "\u72ee\u9e6b\u4e4b\u722a",
      "/items/acrobats_ribbon": "\u6742\u6280\u5e08\u5f69\u5e26",
      "/items/magicians_cloth": "\u9b54\u672f\u5e08\u7ec7\u7269",
      "/items/chaotic_chain": "\u6df7\u6c8c\u9501\u94fe",
      "/items/cursed_ball": "\u8bc5\u5492\u4e4b\u7403",
      "/items/royal_cloth": "\u7687\u5bb6\u7ec7\u7269",
      "/items/knights_ingot": "\u9a91\u58eb\u4e4b\u952d",
      "/items/bishops_scroll": "\u4e3b\u6559\u5377\u8f74",
      "/items/regal_jewel": "\u541b\u738b\u5b9d\u77f3",
      "/items/sundering_jewel": "\u88c2\u7a7a\u5b9d\u77f3",
      "/items/marksman_brooch": "\u795e\u5c04\u80f8\u9488",
      "/items/corsair_crest": "\u63a0\u593a\u8005\u5fbd\u7ae0",
      "/items/damaged_anchor": "\u7834\u635f\u8239\u951a",
      "/items/maelstrom_plating": "\u6012\u6d9b\u7532\u7247",
      "/items/kraken_leather": "\u514b\u62c9\u80af\u76ae\u9769",
      "/items/kraken_fang": "\u514b\u62c9\u80af\u4e4b\u7259",
      "/items/butter_of_proficiency": "\u7cbe\u901a\u4e4b\u6cb9",
      "/items/thread_of_expertise": "\u4e13\u7cbe\u4e4b\u7ebf",
      "/items/branch_of_insight": "\u6d1e\u5bdf\u4e4b\u679d",
      "/items/gluttonous_energy": "\u8d2a\u98df\u80fd\u91cf",
      "/items/guzzling_energy": "\u66b4\u996e\u80fd\u91cf",
      "/items/milking_essence": "\u6324\u5976\u7cbe\u534e",
      "/items/foraging_essence": "\u91c7\u6458\u7cbe\u534e",
      "/items/woodcutting_essence": "\u4f10\u6728\u7cbe\u534e",
      "/items/cheesesmithing_essence": "\u5976\u916a\u953b\u9020\u7cbe\u534e",
      "/items/crafting_essence": "\u5236\u4f5c\u7cbe\u534e",
      "/items/tailoring_essence": "\u7f1d\u7eab\u7cbe\u534e",
      "/items/cooking_essence": "\u70f9\u996a\u7cbe\u534e",
      "/items/brewing_essence": "\u51b2\u6ce1\u7cbe\u534e",
      "/items/alchemy_essence": "\u70bc\u91d1\u7cbe\u534e",
      "/items/enhancing_essence": "\u5f3a\u5316\u7cbe\u534e",
      "/items/swamp_essence": "\u6cbc\u6cfd\u7cbe\u534e",
      "/items/aqua_essence": "\u6d77\u6d0b\u7cbe\u534e",
      "/items/jungle_essence": "\u4e1b\u6797\u7cbe\u534e",
      "/items/gobo_essence": "\u54e5\u5e03\u6797\u7cbe\u534e",
      "/items/eyessence": "\u773c\u7cbe\u534e",
      "/items/sorcerer_essence": "\u6cd5\u5e08\u7cbe\u534e",
      "/items/bear_essence": "\u718a\u718a\u7cbe\u534e",
      "/items/golem_essence": "\u9b54\u50cf\u7cbe\u534e",
      "/items/twilight_essence": "\u66ae\u5149\u7cbe\u534e",
      "/items/abyssal_essence": "\u5730\u72f1\u7cbe\u534e",
      "/items/chimerical_essence": "\u5947\u5e7b\u7cbe\u534e",
      "/items/sinister_essence": "\u9634\u68ee\u7cbe\u534e",
      "/items/enchanted_essence": "\u79d8\u6cd5\u7cbe\u534e",
      "/items/pirate_essence": "\u6d77\u76d7\u7cbe\u534e",
      "/items/task_crystal": "\u4efb\u52a1\u6c34\u6676",
      "/items/star_fragment": "\u661f\u5149\u788e\u7247",
      "/items/pearl": "\u73cd\u73e0",
      "/items/amber": "\u7425\u73c0",
      "/items/garnet": "\u77f3\u69b4\u77f3",
      "/items/jade": "\u7fe1\u7fe0",
      "/items/amethyst": "\u7d2b\u6c34\u6676",
      "/items/moonstone": "\u6708\u4eae\u77f3",
      "/items/sunstone": "\u592a\u9633\u77f3",
      "/items/philosophers_stone": "\u8d24\u8005\u4e4b\u77f3",
      "/items/crushed_pearl": "\u73cd\u73e0\u788e\u7247",
      "/items/crushed_amber": "\u7425\u73c0\u788e\u7247",
      "/items/crushed_garnet": "\u77f3\u69b4\u77f3\u788e\u7247",
      "/items/crushed_jade": "\u7fe1\u7fe0\u788e\u7247",
      "/items/crushed_amethyst": "\u7d2b\u6c34\u6676\u788e\u7247",
      "/items/crushed_moonstone": "\u6708\u4eae\u77f3\u788e\u7247",
      "/items/crushed_sunstone": "\u592a\u9633\u77f3\u788e\u7247",
      "/items/crushed_philosophers_stone": "\u8d24\u8005\u4e4b\u77f3\u788e\u7247",
      "/items/shard_of_protection": "\u4fdd\u62a4\u788e\u7247",
      "/items/mirror_of_protection": "\u4fdd\u62a4\u4e4b\u955c"
    };

    // 完整的动作名称翻译
    const ZHActionNames = {
      "/actions/milking/cow": "\u5976\u725b",
      "/actions/milking/verdant_cow": "\u7fe0\u7eff\u5976\u725b",
      "/actions/milking/azure_cow": "\u851a\u84dd\u5976\u725b",
      "/actions/milking/burble_cow": "\u6df1\u7d2b\u5976\u725b",
      "/actions/milking/crimson_cow": "\u7edb\u7ea2\u5976\u725b",
      "/actions/milking/unicow": "\u5f69\u8679\u5976\u725b",
      "/actions/milking/holy_cow": "\u795e\u5723\u5976\u725b",
      "/actions/foraging/egg": "\u9e21\u86cb",
      "/actions/foraging/wheat": "\u5c0f\u9ea6",
      "/actions/foraging/sugar": "\u7cd6",
      "/actions/foraging/cotton": "\u68c9\u82b1",
      "/actions/foraging/farmland": "\u7fe0\u91ce\u519c\u573a",
      "/actions/foraging/blueberry": "\u84dd\u8393",
      "/actions/foraging/apple": "\u82f9\u679c",
      "/actions/foraging/arabica_coffee_bean": "\u4f4e\u7ea7\u5496\u5561\u8c46",
      "/actions/foraging/flax": "\u4e9a\u9ebb",
      "/actions/foraging/shimmering_lake": "\u6ce2\u5149\u6e56\u6cca",
      "/actions/foraging/blackberry": "\u9ed1\u8393",
      "/actions/foraging/orange": "\u6a59\u5b50",
      "/actions/foraging/robusta_coffee_bean": "\u4e2d\u7ea7\u5496\u5561\u8c46",
      "/actions/foraging/misty_forest": "\u8ff7\u96fe\u68ee\u6797",
      "/actions/foraging/strawberry": "\u8349\u8393",
      "/actions/foraging/plum": "\u674e\u5b50",
      "/actions/foraging/liberica_coffee_bean": "\u9ad8\u7ea7\u5496\u5561\u8c46",
      "/actions/foraging/bamboo_branch": "\u7af9\u5b50",
      "/actions/foraging/burble_beach": "\u6df1\u7d2b\u6c99\u6ee9",
      "/actions/foraging/mooberry": "\u54de\u8393",
      "/actions/foraging/peach": "\u6843\u5b50",
      "/actions/foraging/excelsa_coffee_bean": "\u7279\u7ea7\u5496\u5561\u8c46",
      "/actions/foraging/cocoon": "\u8695\u8327",
      "/actions/foraging/silly_cow_valley": "\u50bb\u725b\u5c71\u8c37",
      "/actions/foraging/marsberry": "\u706b\u661f\u8393",
      "/actions/foraging/dragon_fruit": "\u706b\u9f99\u679c",
      "/actions/foraging/fieriosa_coffee_bean": "\u706b\u5c71\u5496\u5561\u8c46",
      "/actions/foraging/olympus_mons": "\u5965\u6797\u5339\u65af\u5c71",
      "/actions/foraging/spaceberry": "\u592a\u7a7a\u8393",
      "/actions/foraging/star_fruit": "\u6768\u6843",
      "/actions/foraging/spacia_coffee_bean": "\u592a\u7a7a\u5496\u5561\u8c46",
      "/actions/foraging/radiant_fiber": "\u5149\u8f89\u7ea4\u7ef4",
      "/actions/foraging/asteroid_belt": "\u5c0f\u884c\u661f\u5e26",
      "/actions/woodcutting/tree": "\u6811",
      "/actions/woodcutting/birch_tree": "\u6866\u6811",
      "/actions/woodcutting/cedar_tree": "\u96ea\u677e\u6811",
      "/actions/woodcutting/purpleheart_tree": "\u7d2b\u5fc3\u6811",
      "/actions/woodcutting/ginkgo_tree": "\u94f6\u674f\u6811",
      "/actions/woodcutting/redwood_tree": "\u7ea2\u6749\u6811",
      "/actions/woodcutting/arcane_tree": "\u5965\u79d8\u6811",
      "/actions/cheesesmithing/cheese": "\u5976\u916a",
      "/actions/cheesesmithing/cheese_boots": "\u5976\u916a\u9774",
      "/actions/cheesesmithing/cheese_gauntlets": "\u5976\u916a\u62a4\u624b",
      "/actions/cheesesmithing/cheese_sword": "\u5976\u916a\u5251",
      "/actions/cheesesmithing/cheese_brush": "\u5976\u916a\u5237\u5b50",
      "/actions/cheesesmithing/cheese_shears": "\u5976\u916a\u526a\u5200",
      "/actions/cheesesmithing/cheese_hatchet": "\u5976\u916a\u65a7\u5934",
      "/actions/cheesesmithing/cheese_spear": "\u5976\u916a\u957f\u67aa",
      "/actions/cheesesmithing/cheese_hammer": "\u5976\u916a\u9524\u5b50",
      "/actions/cheesesmithing/cheese_chisel": "\u5976\u916a\u51ff\u5b50",
      "/actions/cheesesmithing/cheese_needle": "\u5976\u916a\u9488",
      "/actions/cheesesmithing/cheese_spatula": "\u5976\u916a\u9505\u94f2",
      "/actions/cheesesmithing/cheese_pot": "\u5976\u916a\u58f6",
      "/actions/cheesesmithing/cheese_mace": "\u5976\u916a\u9489\u5934\u9524",
      "/actions/cheesesmithing/cheese_alembic": "\u5976\u916a\u84b8\u998f\u5668",
      "/actions/cheesesmithing/cheese_enhancer": "\u5976\u916a\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/cheese_helmet": "\u5976\u916a\u5934\u76d4",
      "/actions/cheesesmithing/cheese_buckler": "\u5976\u916a\u5706\u76fe",
      "/actions/cheesesmithing/cheese_bulwark": "\u5976\u916a\u91cd\u76fe",
      "/actions/cheesesmithing/cheese_plate_legs": "\u5976\u916a\u817f\u7532",
      "/actions/cheesesmithing/cheese_plate_body": "\u5976\u916a\u80f8\u7532",
      "/actions/cheesesmithing/verdant_cheese": "\u7fe0\u7eff\u5976\u916a",
      "/actions/cheesesmithing/verdant_boots": "\u7fe0\u7eff\u9774",
      "/actions/cheesesmithing/verdant_gauntlets": "\u7fe0\u7eff\u62a4\u624b",
      "/actions/cheesesmithing/verdant_sword": "\u7fe0\u7eff\u5251",
      "/actions/cheesesmithing/verdant_brush": "\u7fe0\u7eff\u5237\u5b50",
      "/actions/cheesesmithing/verdant_shears": "\u7fe0\u7eff\u526a\u5200",
      "/actions/cheesesmithing/verdant_hatchet": "\u7fe0\u7eff\u65a7\u5934",
      "/actions/cheesesmithing/verdant_spear": "\u7fe0\u7eff\u957f\u67aa",
      "/actions/cheesesmithing/verdant_hammer": "\u7fe0\u7eff\u9524\u5b50",
      "/actions/cheesesmithing/verdant_chisel": "\u7fe0\u7eff\u51ff\u5b50",
      "/actions/cheesesmithing/verdant_needle": "\u7fe0\u7eff\u9488",
      "/actions/cheesesmithing/verdant_spatula": "\u7fe0\u7eff\u9505\u94f2",
      "/actions/cheesesmithing/verdant_pot": "\u7fe0\u7eff\u58f6",
      "/actions/cheesesmithing/verdant_mace": "\u7fe0\u7eff\u9489\u5934\u9524",
      "/actions/cheesesmithing/snake_fang_dirk": "\u86c7\u7259\u77ed\u5251",
      "/actions/cheesesmithing/verdant_alembic": "\u7fe0\u7eff\u84b8\u998f\u5668",
      "/actions/cheesesmithing/verdant_enhancer": "\u7fe0\u7eff\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/verdant_helmet": "\u7fe0\u7eff\u5934\u76d4",
      "/actions/cheesesmithing/verdant_buckler": "\u7fe0\u7eff\u5706\u76fe",
      "/actions/cheesesmithing/verdant_bulwark": "\u7fe0\u7eff\u91cd\u76fe",
      "/actions/cheesesmithing/verdant_plate_legs": "\u7fe0\u7eff\u817f\u7532",
      "/actions/cheesesmithing/verdant_plate_body": "\u7fe0\u7eff\u80f8\u7532",
      "/actions/cheesesmithing/azure_cheese": "\u851a\u84dd\u5976\u916a",
      "/actions/cheesesmithing/azure_boots": "\u851a\u84dd\u9774",
      "/actions/cheesesmithing/azure_gauntlets": "\u851a\u84dd\u62a4\u624b",
      "/actions/cheesesmithing/azure_sword": "\u851a\u84dd\u5251",
      "/actions/cheesesmithing/azure_brush": "\u851a\u84dd\u5237\u5b50",
      "/actions/cheesesmithing/azure_shears": "\u851a\u84dd\u526a\u5200",
      "/actions/cheesesmithing/azure_hatchet": "\u851a\u84dd\u65a7\u5934",
      "/actions/cheesesmithing/azure_spear": "\u851a\u84dd\u957f\u67aa",
      "/actions/cheesesmithing/azure_hammer": "\u851a\u84dd\u9524\u5b50",
      "/actions/cheesesmithing/azure_chisel": "\u851a\u84dd\u51ff\u5b50",
      "/actions/cheesesmithing/azure_needle": "\u851a\u84dd\u9488",
      "/actions/cheesesmithing/azure_spatula": "\u851a\u84dd\u9505\u94f2",
      "/actions/cheesesmithing/azure_pot": "\u851a\u84dd\u58f6",
      "/actions/cheesesmithing/azure_mace": "\u851a\u84dd\u9489\u5934\u9524",
      "/actions/cheesesmithing/pincer_gloves": "\u87f9\u94b3\u624b\u5957",
      "/actions/cheesesmithing/azure_alembic": "\u851a\u84dd\u84b8\u998f\u5668",
      "/actions/cheesesmithing/azure_enhancer": "\u851a\u84dd\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/azure_helmet": "\u851a\u84dd\u5934\u76d4",
      "/actions/cheesesmithing/azure_buckler": "\u851a\u84dd\u5706\u76fe",
      "/actions/cheesesmithing/azure_bulwark": "\u851a\u84dd\u91cd\u76fe",
      "/actions/cheesesmithing/azure_plate_legs": "\u851a\u84dd\u817f\u7532",
      "/actions/cheesesmithing/snail_shell_helmet": "\u8717\u725b\u58f3\u5934\u76d4",
      "/actions/cheesesmithing/azure_plate_body": "\u851a\u84dd\u80f8\u7532",
      "/actions/cheesesmithing/turtle_shell_legs": "\u9f9f\u58f3\u817f\u7532",
      "/actions/cheesesmithing/turtle_shell_body": "\u9f9f\u58f3\u80f8\u7532",
      "/actions/cheesesmithing/burble_cheese": "\u6df1\u7d2b\u5976\u916a",
      "/actions/cheesesmithing/burble_boots": "\u6df1\u7d2b\u9774",
      "/actions/cheesesmithing/burble_gauntlets": "\u6df1\u7d2b\u62a4\u624b",
      "/actions/cheesesmithing/burble_sword": "\u6df1\u7d2b\u5251",
      "/actions/cheesesmithing/burble_brush": "\u6df1\u7d2b\u5237\u5b50",
      "/actions/cheesesmithing/burble_shears": "\u6df1\u7d2b\u526a\u5200",
      "/actions/cheesesmithing/burble_hatchet": "\u6df1\u7d2b\u65a7\u5934",
      "/actions/cheesesmithing/burble_spear": "\u6df1\u7d2b\u957f\u67aa",
      "/actions/cheesesmithing/burble_hammer": "\u6df1\u7d2b\u9524\u5b50",
      "/actions/cheesesmithing/burble_chisel": "\u6df1\u7d2b\u51ff\u5b50",
      "/actions/cheesesmithing/burble_needle": "\u6df1\u7d2b\u9488",
      "/actions/cheesesmithing/burble_spatula": "\u6df1\u7d2b\u9505\u94f2",
      "/actions/cheesesmithing/burble_pot": "\u6df1\u7d2b\u58f6",
      "/actions/cheesesmithing/burble_mace": "\u6df1\u7d2b\u9489\u5934\u9524",
      "/actions/cheesesmithing/burble_alembic": "\u6df1\u7d2b\u84b8\u998f\u5668",
      "/actions/cheesesmithing/burble_enhancer": "\u6df1\u7d2b\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/burble_helmet": "\u6df1\u7d2b\u5934\u76d4",
      "/actions/cheesesmithing/burble_buckler": "\u6df1\u7d2b\u5706\u76fe",
      "/actions/cheesesmithing/burble_bulwark": "\u6df1\u7d2b\u91cd\u76fe",
      "/actions/cheesesmithing/burble_plate_legs": "\u6df1\u7d2b\u817f\u7532",
      "/actions/cheesesmithing/burble_plate_body": "\u6df1\u7d2b\u80f8\u7532",
      "/actions/cheesesmithing/crimson_cheese": "\u7edb\u7ea2\u5976\u916a",
      "/actions/cheesesmithing/crimson_boots": "\u7edb\u7ea2\u9774",
      "/actions/cheesesmithing/crimson_gauntlets": "\u7edb\u7ea2\u62a4\u624b",
      "/actions/cheesesmithing/crimson_sword": "\u7edb\u7ea2\u5251",
      "/actions/cheesesmithing/crimson_brush": "\u7edb\u7ea2\u5237\u5b50",
      "/actions/cheesesmithing/crimson_shears": "\u7edb\u7ea2\u526a\u5200",
      "/actions/cheesesmithing/crimson_hatchet": "\u7edb\u7ea2\u65a7\u5934",
      "/actions/cheesesmithing/crimson_spear": "\u7edb\u7ea2\u957f\u67aa",
      "/actions/cheesesmithing/crimson_hammer": "\u7edb\u7ea2\u9524\u5b50",
      "/actions/cheesesmithing/crimson_chisel": "\u7edb\u7ea2\u51ff\u5b50",
      "/actions/cheesesmithing/crimson_needle": "\u7edb\u7ea2\u9488",
      "/actions/cheesesmithing/crimson_spatula": "\u7edb\u7ea2\u9505\u94f2",
      "/actions/cheesesmithing/crimson_pot": "\u7edb\u7ea2\u58f6",
      "/actions/cheesesmithing/crimson_mace": "\u7edb\u7ea2\u9489\u5934\u9524",
      "/actions/cheesesmithing/crimson_alembic": "\u7edb\u7ea2\u84b8\u998f\u5668",
      "/actions/cheesesmithing/crimson_enhancer": "\u7edb\u7ea2\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/crimson_helmet": "\u7edb\u7ea2\u5934\u76d4",
      "/actions/cheesesmithing/crimson_buckler": "\u7edb\u7ea2\u5706\u76fe",
      "/actions/cheesesmithing/crimson_bulwark": "\u7edb\u7ea2\u91cd\u76fe",
      "/actions/cheesesmithing/crimson_plate_legs": "\u7edb\u7ea2\u817f\u7532",
      "/actions/cheesesmithing/vision_helmet": "\u89c6\u89c9\u5934\u76d4",
      "/actions/cheesesmithing/vision_shield": "\u89c6\u89c9\u76fe",
      "/actions/cheesesmithing/crimson_plate_body": "\u7edb\u7ea2\u80f8\u7532",
      "/actions/cheesesmithing/rainbow_cheese": "\u5f69\u8679\u5976\u916a",
      "/actions/cheesesmithing/rainbow_boots": "\u5f69\u8679\u9774",
      "/actions/cheesesmithing/black_bear_shoes": "\u9ed1\u718a\u978b",
      "/actions/cheesesmithing/grizzly_bear_shoes": "\u68d5\u718a\u978b",
      "/actions/cheesesmithing/polar_bear_shoes": "\u5317\u6781\u718a\u978b",
      "/actions/cheesesmithing/rainbow_gauntlets": "\u5f69\u8679\u62a4\u624b",
      "/actions/cheesesmithing/rainbow_sword": "\u5f69\u8679\u5251",
      "/actions/cheesesmithing/panda_gloves": "\u718a\u732b\u624b\u5957",
      "/actions/cheesesmithing/rainbow_brush": "\u5f69\u8679\u5237\u5b50",
      "/actions/cheesesmithing/rainbow_shears": "\u5f69\u8679\u526a\u5200",
      "/actions/cheesesmithing/rainbow_hatchet": "\u5f69\u8679\u65a7\u5934",
      "/actions/cheesesmithing/rainbow_spear": "\u5f69\u8679\u957f\u67aa",
      "/actions/cheesesmithing/rainbow_hammer": "\u5f69\u8679\u9524\u5b50",
      "/actions/cheesesmithing/rainbow_chisel": "\u5f69\u8679\u51ff\u5b50",
      "/actions/cheesesmithing/rainbow_needle": "\u5f69\u8679\u9488",
      "/actions/cheesesmithing/rainbow_spatula": "\u5f69\u8679\u9505\u94f2",
      "/actions/cheesesmithing/rainbow_pot": "\u5f69\u8679\u58f6",
      "/actions/cheesesmithing/rainbow_mace": "\u5f69\u8679\u9489\u5934\u9524",
      "/actions/cheesesmithing/rainbow_alembic": "\u5f69\u8679\u84b8\u998f\u5668",
      "/actions/cheesesmithing/rainbow_enhancer": "\u5f69\u8679\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/rainbow_helmet": "\u5f69\u8679\u5934\u76d4",
      "/actions/cheesesmithing/rainbow_buckler": "\u5f69\u8679\u5706\u76fe",
      "/actions/cheesesmithing/rainbow_bulwark": "\u5f69\u8679\u91cd\u76fe",
      "/actions/cheesesmithing/rainbow_plate_legs": "\u5f69\u8679\u817f\u7532",
      "/actions/cheesesmithing/rainbow_plate_body": "\u5f69\u8679\u80f8\u7532",
      "/actions/cheesesmithing/holy_cheese": "\u795e\u5723\u5976\u916a",
      "/actions/cheesesmithing/holy_boots": "\u795e\u5723\u9774",
      "/actions/cheesesmithing/holy_gauntlets": "\u795e\u5723\u62a4\u624b",
      "/actions/cheesesmithing/holy_sword": "\u795e\u5723\u5251",
      "/actions/cheesesmithing/holy_brush": "\u795e\u5723\u5237\u5b50",
      "/actions/cheesesmithing/holy_shears": "\u795e\u5723\u526a\u5200",
      "/actions/cheesesmithing/holy_hatchet": "\u795e\u5723\u65a7\u5934",
      "/actions/cheesesmithing/holy_spear": "\u795e\u5723\u957f\u67aa",
      "/actions/cheesesmithing/holy_hammer": "\u795e\u5723\u9524\u5b50",
      "/actions/cheesesmithing/holy_chisel": "\u795e\u5723\u51ff\u5b50",
      "/actions/cheesesmithing/holy_needle": "\u795e\u5723\u9488",
      "/actions/cheesesmithing/holy_spatula": "\u795e\u5723\u9505\u94f2",
      "/actions/cheesesmithing/holy_pot": "\u795e\u5723\u58f6",
      "/actions/cheesesmithing/holy_mace": "\u795e\u5723\u9489\u5934\u9524",
      "/actions/cheesesmithing/magnetic_gloves": "\u78c1\u529b\u624b\u5957",
      "/actions/cheesesmithing/stalactite_spear": "\u77f3\u949f\u957f\u67aa",
      "/actions/cheesesmithing/granite_bludgeon": "\u82b1\u5c97\u5ca9\u5927\u68d2",
      "/actions/cheesesmithing/vampire_fang_dirk": "\u5438\u8840\u9b3c\u77ed\u5251",
      "/actions/cheesesmithing/werewolf_slasher": "\u72fc\u4eba\u5173\u5200",
      "/actions/cheesesmithing/holy_alembic": "\u795e\u5723\u84b8\u998f\u5668",
      "/actions/cheesesmithing/holy_enhancer": "\u795e\u5723\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/holy_helmet": "\u795e\u5723\u5934\u76d4",
      "/actions/cheesesmithing/holy_buckler": "\u795e\u5723\u5706\u76fe",
      "/actions/cheesesmithing/holy_bulwark": "\u795e\u5723\u91cd\u76fe",
      "/actions/cheesesmithing/holy_plate_legs": "\u795e\u5723\u817f\u7532",
      "/actions/cheesesmithing/holy_plate_body": "\u795e\u5723\u80f8\u7532",
      "/actions/cheesesmithing/celestial_brush": "\u661f\u7a7a\u5237\u5b50",
      "/actions/cheesesmithing/celestial_shears": "\u661f\u7a7a\u526a\u5200",
      "/actions/cheesesmithing/celestial_hatchet": "\u661f\u7a7a\u65a7\u5934",
      "/actions/cheesesmithing/celestial_hammer": "\u661f\u7a7a\u9524\u5b50",
      "/actions/cheesesmithing/celestial_chisel": "\u661f\u7a7a\u51ff\u5b50",
      "/actions/cheesesmithing/celestial_needle": "\u661f\u7a7a\u9488",
      "/actions/cheesesmithing/celestial_spatula": "\u661f\u7a7a\u9505\u94f2",
      "/actions/cheesesmithing/celestial_pot": "\u661f\u7a7a\u58f6",
      "/actions/cheesesmithing/celestial_alembic": "\u661f\u7a7a\u84b8\u998f\u5668",
      "/actions/cheesesmithing/celestial_enhancer": "\u661f\u7a7a\u5f3a\u5316\u5668",
      "/actions/cheesesmithing/colossus_plate_body": "\u5de8\u50cf\u80f8\u7532",
      "/actions/cheesesmithing/colossus_plate_legs": "\u5de8\u50cf\u817f\u7532",
      "/actions/cheesesmithing/demonic_plate_body": "\u6076\u9b54\u80f8\u7532",
      "/actions/cheesesmithing/demonic_plate_legs": "\u6076\u9b54\u817f\u7532",
      "/actions/cheesesmithing/spiked_bulwark": "\u5c16\u523a\u91cd\u76fe",
      "/actions/cheesesmithing/dodocamel_gauntlets": "\u6e21\u6e21\u9a7c\u62a4\u624b",
      "/actions/cheesesmithing/corsair_helmet": "\u63a0\u593a\u8005\u5934\u76d4",
      "/actions/cheesesmithing/knights_aegis": "\u9a91\u58eb\u76fe",
      "/actions/cheesesmithing/anchorbound_plate_legs": "\u951a\u5b9a\u817f\u7532",
      "/actions/cheesesmithing/maelstrom_plate_legs": "\u6012\u6d9b\u817f\u7532",
      "/actions/cheesesmithing/griffin_bulwark": "\u72ee\u9e6b\u91cd\u76fe",
      "/actions/cheesesmithing/furious_spear": "\u72c2\u6012\u957f\u67aa",
      "/actions/cheesesmithing/chaotic_flail": "\u6df7\u6c8c\u8fde\u67b7",
      "/actions/cheesesmithing/regal_sword": "\u541b\u738b\u4e4b\u5251",
      "/actions/cheesesmithing/anchorbound_plate_body": "\u951a\u5b9a\u80f8\u7532",
      "/actions/cheesesmithing/maelstrom_plate_body": "\u6012\u6d9b\u80f8\u7532",
      "/actions/crafting/lumber": "\u6728\u677f",
      "/actions/crafting/wooden_crossbow": "\u6728\u5f29",
      "/actions/crafting/wooden_water_staff": "\u6728\u5236\u6c34\u6cd5\u6756",
      "/actions/crafting/basic_task_badge": "\u57fa\u7840\u4efb\u52a1\u5fbd\u7ae0",
      "/actions/crafting/advanced_task_badge": "\u9ad8\u7ea7\u4efb\u52a1\u5fbd\u7ae0",
      "/actions/crafting/expert_task_badge": "\u4e13\u5bb6\u4efb\u52a1\u5fbd\u7ae0",
      "/actions/crafting/wooden_shield": "\u6728\u76fe",
      "/actions/crafting/wooden_nature_staff": "\u6728\u5236\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/wooden_bow": "\u6728\u5f13",
      "/actions/crafting/wooden_fire_staff": "\u6728\u5236\u706b\u6cd5\u6756",
      "/actions/crafting/birch_lumber": "\u767d\u6866\u6728\u677f",
      "/actions/crafting/birch_crossbow": "\u6866\u6728\u5f29",
      "/actions/crafting/birch_water_staff": "\u6866\u6728\u6c34\u6cd5\u6756",
      "/actions/crafting/crushed_pearl": "\u73cd\u73e0\u788e\u7247",
      "/actions/crafting/birch_shield": "\u6866\u6728\u76fe",
      "/actions/crafting/birch_nature_staff": "\u6866\u6728\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/birch_bow": "\u6866\u6728\u5f13",
      "/actions/crafting/ring_of_gathering": "\u91c7\u96c6\u6212\u6307",
      "/actions/crafting/birch_fire_staff": "\u6866\u6728\u706b\u6cd5\u6756",
      "/actions/crafting/earrings_of_gathering": "\u91c7\u96c6\u8033\u73af",
      "/actions/crafting/cedar_lumber": "\u96ea\u677e\u6728\u677f",
      "/actions/crafting/cedar_crossbow": "\u96ea\u677e\u5f29",
      "/actions/crafting/cedar_water_staff": "\u96ea\u677e\u6c34\u6cd5\u6756",
      "/actions/crafting/cedar_shield": "\u96ea\u677e\u76fe",
      "/actions/crafting/cedar_nature_staff": "\u96ea\u677e\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/cedar_bow": "\u96ea\u677e\u5f13",
      "/actions/crafting/crushed_amber": "\u7425\u73c0\u788e\u7247",
      "/actions/crafting/cedar_fire_staff": "\u96ea\u677e\u706b\u6cd5\u6756",
      "/actions/crafting/ring_of_essence_find": "\u7cbe\u534e\u53d1\u73b0\u6212\u6307",
      "/actions/crafting/earrings_of_essence_find": "\u7cbe\u534e\u53d1\u73b0\u8033\u73af",
      "/actions/crafting/necklace_of_efficiency": "\u6548\u7387\u9879\u94fe",
      "/actions/crafting/purpleheart_lumber": "\u7d2b\u5fc3\u6728\u677f",
      "/actions/crafting/purpleheart_crossbow": "\u7d2b\u5fc3\u5f29",
      "/actions/crafting/purpleheart_water_staff": "\u7d2b\u5fc3\u6c34\u6cd5\u6756",
      "/actions/crafting/purpleheart_shield": "\u7d2b\u5fc3\u76fe",
      "/actions/crafting/purpleheart_nature_staff": "\u7d2b\u5fc3\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/purpleheart_bow": "\u7d2b\u5fc3\u5f13",
      "/actions/crafting/crushed_garnet": "\u77f3\u69b4\u77f3\u788e\u7247",
      "/actions/crafting/crushed_jade": "\u7fe1\u7fe0\u788e\u7247",
      "/actions/crafting/crushed_amethyst": "\u7d2b\u6c34\u6676\u788e\u7247",
      "/actions/crafting/catalyst_of_coinification": "\u70b9\u91d1\u50ac\u5316\u5242",
      "/actions/crafting/treant_shield": "\u6811\u4eba\u76fe",
      "/actions/crafting/purpleheart_fire_staff": "\u7d2b\u5fc3\u706b\u6cd5\u6756",
      "/actions/crafting/ring_of_regeneration": "\u6062\u590d\u6212\u6307",
      "/actions/crafting/earrings_of_regeneration": "\u6062\u590d\u8033\u73af",
      "/actions/crafting/fighter_necklace": "\u6218\u58eb\u9879\u94fe",
      "/actions/crafting/ginkgo_lumber": "\u94f6\u674f\u6728\u677f",
      "/actions/crafting/ginkgo_crossbow": "\u94f6\u674f\u5f29",
      "/actions/crafting/ginkgo_water_staff": "\u94f6\u674f\u6c34\u6cd5\u6756",
      "/actions/crafting/ring_of_armor": "\u62a4\u7532\u6212\u6307",
      "/actions/crafting/catalyst_of_decomposition": "\u5206\u89e3\u50ac\u5316\u5242",
      "/actions/crafting/ginkgo_shield": "\u94f6\u674f\u76fe",
      "/actions/crafting/earrings_of_armor": "\u62a4\u7532\u8033\u73af",
      "/actions/crafting/ginkgo_nature_staff": "\u94f6\u674f\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/ranger_necklace": "\u5c04\u624b\u9879\u94fe",
      "/actions/crafting/ginkgo_bow": "\u94f6\u674f\u5f13",
      "/actions/crafting/ring_of_resistance": "\u6297\u6027\u6212\u6307",
      "/actions/crafting/crushed_moonstone": "\u6708\u4eae\u77f3\u788e\u7247",
      "/actions/crafting/ginkgo_fire_staff": "\u94f6\u674f\u706b\u6cd5\u6756",
      "/actions/crafting/earrings_of_resistance": "\u6297\u6027\u8033\u73af",
      "/actions/crafting/wizard_necklace": "\u5deb\u5e08\u9879\u94fe",
      "/actions/crafting/ring_of_rare_find": "\u7a00\u6709\u53d1\u73b0\u6212\u6307",
      "/actions/crafting/catalyst_of_transmutation": "\u8f6c\u5316\u50ac\u5316\u5242",
      "/actions/crafting/earrings_of_rare_find": "\u7a00\u6709\u53d1\u73b0\u8033\u73af",
      "/actions/crafting/necklace_of_wisdom": "\u7ecf\u9a8c\u9879\u94fe",
      "/actions/crafting/redwood_lumber": "\u7ea2\u6749\u6728\u677f",
      "/actions/crafting/redwood_crossbow": "\u7ea2\u6749\u5f29",
      "/actions/crafting/redwood_water_staff": "\u7ea2\u6749\u6c34\u6cd5\u6756",
      "/actions/crafting/redwood_shield": "\u7ea2\u6749\u76fe",
      "/actions/crafting/redwood_nature_staff": "\u7ea2\u6749\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/redwood_bow": "\u7ea2\u6749\u5f13",
      "/actions/crafting/crushed_sunstone": "\u592a\u9633\u77f3\u788e\u7247",
      "/actions/crafting/chimerical_entry_key": "\u5947\u5e7b\u94a5\u5319",
      "/actions/crafting/chimerical_chest_key": "\u5947\u5e7b\u5b9d\u7bb1\u94a5\u5319",
      "/actions/crafting/eye_watch": "\u638c\u4e0a\u76d1\u5de5",
      "/actions/crafting/watchful_relic": "\u8b66\u6212\u9057\u7269",
      "/actions/crafting/redwood_fire_staff": "\u7ea2\u6749\u706b\u6cd5\u6756",
      "/actions/crafting/ring_of_critical_strike": "\u66b4\u51fb\u6212\u6307",
      "/actions/crafting/mirror_of_protection": "\u4fdd\u62a4\u4e4b\u955c",
      "/actions/crafting/earrings_of_critical_strike": "\u66b4\u51fb\u8033\u73af",
      "/actions/crafting/necklace_of_speed": "\u901f\u5ea6\u9879\u94fe",
      "/actions/crafting/arcane_lumber": "\u795e\u79d8\u6728\u677f",
      "/actions/crafting/arcane_crossbow": "\u795e\u79d8\u5f29",
      "/actions/crafting/arcane_water_staff": "\u795e\u79d8\u6c34\u6cd5\u6756",
      "/actions/crafting/sinister_entry_key": "\u9634\u68ee\u94a5\u5319",
      "/actions/crafting/sinister_chest_key": "\u9634\u68ee\u5b9d\u7bb1\u94a5\u5319",
      "/actions/crafting/arcane_shield": "\u795e\u79d8\u76fe",
      "/actions/crafting/arcane_nature_staff": "\u795e\u79d8\u81ea\u7136\u6cd5\u6756",
      "/actions/crafting/manticore_shield": "\u874e\u72ee\u76fe",
      "/actions/crafting/arcane_bow": "\u795e\u79d8\u5f13",
      "/actions/crafting/enchanted_entry_key": "\u79d8\u6cd5\u94a5\u5319",
      "/actions/crafting/enchanted_chest_key": "\u79d8\u6cd5\u5b9d\u7bb1\u94a5\u5319",
      "/actions/crafting/pirate_entry_key": "\u6d77\u76d7\u94a5\u5319",
      "/actions/crafting/pirate_chest_key": "\u6d77\u76d7\u5b9d\u7bb1\u94a5\u5319",
      "/actions/crafting/arcane_fire_staff": "\u795e\u79d8\u706b\u6cd5\u6756",
      "/actions/crafting/vampiric_bow": "\u5438\u8840\u5f13",
      "/actions/crafting/soul_hunter_crossbow": "\u7075\u9b42\u730e\u624b\u5f29",
      "/actions/crafting/rippling_trident": "\u6d9f\u6f2a\u4e09\u53c9\u621f",
      "/actions/crafting/blooming_trident": "\u7efd\u653e\u4e09\u53c9\u621f",
      "/actions/crafting/blazing_trident": "\u70bd\u7130\u4e09\u53c9\u621f",
      "/actions/crafting/frost_staff": "\u51b0\u971c\u6cd5\u6756",
      "/actions/crafting/infernal_battlestaff": "\u70bc\u72f1\u6cd5\u6756",
      "/actions/crafting/jackalope_staff": "\u9e7f\u89d2\u5154\u4e4b\u6756",
      "/actions/crafting/philosophers_ring": "\u8d24\u8005\u6212\u6307",
      "/actions/crafting/crushed_philosophers_stone": "\u8d24\u8005\u4e4b\u77f3\u788e\u7247",
      "/actions/crafting/philosophers_earrings": "\u8d24\u8005\u8033\u73af",
      "/actions/crafting/philosophers_necklace": "\u8d24\u8005\u9879\u94fe",
      "/actions/crafting/bishops_codex": "\u4e3b\u6559\u6cd5\u5178",
      "/actions/crafting/cursed_bow": "\u5492\u6028\u4e4b\u5f13",
      "/actions/crafting/sundering_crossbow": "\u88c2\u7a7a\u4e4b\u5f29",
      "/actions/tailoring/rough_leather": "\u7c97\u7cd9\u76ae\u9769",
      "/actions/tailoring/cotton_fabric": "\u68c9\u82b1\u5e03\u6599",
      "/actions/tailoring/rough_boots": "\u7c97\u7cd9\u9774",
      "/actions/tailoring/cotton_boots": "\u68c9\u9774",
      "/actions/tailoring/rough_bracers": "\u7c97\u7cd9\u62a4\u8155",
      "/actions/tailoring/cotton_gloves": "\u68c9\u624b\u5957",
      "/actions/tailoring/small_pouch": "\u5c0f\u888b\u5b50",
      "/actions/tailoring/rough_hood": "\u7c97\u7cd9\u515c\u5e3d",
      "/actions/tailoring/cotton_hat": "\u68c9\u5e3d",
      "/actions/tailoring/rough_chaps": "\u7c97\u7cd9\u76ae\u88e4",
      "/actions/tailoring/cotton_robe_bottoms": "\u68c9\u5e03\u888d\u88d9",
      "/actions/tailoring/rough_tunic": "\u7c97\u7cd9\u76ae\u8863",
      "/actions/tailoring/cotton_robe_top": "\u68c9\u5e03\u888d\u670d",
      "/actions/tailoring/reptile_leather": "\u722c\u884c\u52a8\u7269\u76ae\u9769",
      "/actions/tailoring/linen_fabric": "\u4e9a\u9ebb\u5e03\u6599",
      "/actions/tailoring/reptile_boots": "\u722c\u884c\u52a8\u7269\u9774",
      "/actions/tailoring/linen_boots": "\u4e9a\u9ebb\u9774",
      "/actions/tailoring/reptile_bracers": "\u722c\u884c\u52a8\u7269\u62a4\u8155",
      "/actions/tailoring/linen_gloves": "\u4e9a\u9ebb\u624b\u5957",
      "/actions/tailoring/reptile_hood": "\u722c\u884c\u52a8\u7269\u515c\u5e3d",
      "/actions/tailoring/linen_hat": "\u4e9a\u9ebb\u5e3d",
      "/actions/tailoring/reptile_chaps": "\u722c\u884c\u52a8\u7269\u76ae\u88e4",
      "/actions/tailoring/linen_robe_bottoms": "\u4e9a\u9ebb\u888d\u88d9",
      "/actions/tailoring/medium_pouch": "\u4e2d\u888b\u5b50",
      "/actions/tailoring/reptile_tunic": "\u722c\u884c\u52a8\u7269\u76ae\u8863",
      "/actions/tailoring/linen_robe_top": "\u4e9a\u9ebb\u888d\u670d",
      "/actions/tailoring/shoebill_shoes": "\u9cb8\u5934\u9e73\u978b",
      "/actions/tailoring/gobo_leather": "\u54e5\u5e03\u6797\u76ae\u9769",
      "/actions/tailoring/bamboo_fabric": "\u7af9\u5b50\u5e03\u6599",
      "/actions/tailoring/gobo_boots": "\u54e5\u5e03\u6797\u9774",
      "/actions/tailoring/bamboo_boots": "\u7af9\u9774",
      "/actions/tailoring/gobo_bracers": "\u54e5\u5e03\u6797\u62a4\u8155",
      "/actions/tailoring/bamboo_gloves": "\u7af9\u624b\u5957",
      "/actions/tailoring/gobo_hood": "\u54e5\u5e03\u6797\u515c\u5e3d",
      "/actions/tailoring/bamboo_hat": "\u7af9\u5e3d",
      "/actions/tailoring/gobo_chaps": "\u54e5\u5e03\u6797\u76ae\u88e4",
      "/actions/tailoring/bamboo_robe_bottoms": "\u7af9\u5e03\u888d\u88d9",
      "/actions/tailoring/large_pouch": "\u5927\u888b\u5b50",
      "/actions/tailoring/gobo_tunic": "\u54e5\u5e03\u6797\u76ae\u8863",
      "/actions/tailoring/bamboo_robe_top": "\u7af9\u888d\u670d",
      "/actions/tailoring/marine_tunic": "\u6d77\u6d0b\u76ae\u8863",
      "/actions/tailoring/marine_chaps": "\u822a\u6d77\u76ae\u88e4",
      "/actions/tailoring/icy_robe_top": "\u51b0\u971c\u888d\u670d",
      "/actions/tailoring/icy_robe_bottoms": "\u51b0\u971c\u888d\u88d9",
      "/actions/tailoring/flaming_robe_top": "\u70c8\u7130\u888d\u670d",
      "/actions/tailoring/flaming_robe_bottoms": "\u70c8\u7130\u888d\u88d9",
      "/actions/tailoring/beast_leather": "\u91ce\u517d\u76ae\u9769",
      "/actions/tailoring/silk_fabric": "\u4e1d\u7ef8",
      "/actions/tailoring/beast_boots": "\u91ce\u517d\u9774",
      "/actions/tailoring/silk_boots": "\u4e1d\u9774",
      "/actions/tailoring/beast_bracers": "\u91ce\u517d\u62a4\u8155",
      "/actions/tailoring/silk_gloves": "\u4e1d\u624b\u5957",
      "/actions/tailoring/collectors_boots": "\u6536\u85cf\u5bb6\u4e4b\u9774",
      "/actions/tailoring/sighted_bracers": "\u7784\u51c6\u62a4\u8155",
      "/actions/tailoring/beast_hood": "\u91ce\u517d\u515c\u5e3d",
      "/actions/tailoring/silk_hat": "\u4e1d\u5e3d",
      "/actions/tailoring/beast_chaps": "\u91ce\u517d\u76ae\u88e4",
      "/actions/tailoring/silk_robe_bottoms": "\u4e1d\u7ef8\u888d\u88d9",
      "/actions/tailoring/centaur_boots": "\u534a\u4eba\u9a6c\u9774",
      "/actions/tailoring/sorcerer_boots": "\u5deb\u5e08\u9774",
      "/actions/tailoring/giant_pouch": "\u5de8\u5927\u888b\u5b50",
      "/actions/tailoring/beast_tunic": "\u91ce\u517d\u76ae\u8863",
      "/actions/tailoring/silk_robe_top": "\u4e1d\u7ef8\u888d\u670d",
      "/actions/tailoring/red_culinary_hat": "\u7ea2\u8272\u53a8\u5e08\u5e3d",
      "/actions/tailoring/luna_robe_top": "\u6708\u795e\u888d\u670d",
      "/actions/tailoring/luna_robe_bottoms": "\u6708\u795e\u888d\u88d9",
      "/actions/tailoring/umbral_leather": "\u6697\u5f71\u76ae\u9769",
      "/actions/tailoring/radiant_fabric": "\u5149\u8f89\u5e03\u6599",
      "/actions/tailoring/umbral_boots": "\u6697\u5f71\u9774",
      "/actions/tailoring/radiant_boots": "\u5149\u8f89\u9774",
      "/actions/tailoring/umbral_bracers": "\u6697\u5f71\u62a4\u8155",
      "/actions/tailoring/radiant_gloves": "\u5149\u8f89\u624b\u5957",
      "/actions/tailoring/enchanted_gloves": "\u9644\u9b54\u624b\u5957",
      "/actions/tailoring/fluffy_red_hat": "\u84ec\u677e\u7ea2\u5e3d\u5b50",
      "/actions/tailoring/chrono_gloves": "\u65f6\u7a7a\u624b\u5957",
      "/actions/tailoring/umbral_hood": "\u6697\u5f71\u515c\u5e3d",
      "/actions/tailoring/radiant_hat": "\u5149\u8f89\u5e3d",
      "/actions/tailoring/umbral_chaps": "\u6697\u5f71\u76ae\u88e4",
      "/actions/tailoring/radiant_robe_bottoms": "\u5149\u8f89\u888d\u88d9",
      "/actions/tailoring/umbral_tunic": "\u6697\u5f71\u76ae\u8863",
      "/actions/tailoring/radiant_robe_top": "\u5149\u8f89\u888d\u670d",
      "/actions/tailoring/revenant_chaps": "\u4ea1\u7075\u76ae\u88e4",
      "/actions/tailoring/griffin_chaps": "\u72ee\u9e6b\u62a4\u817f",
      "/actions/tailoring/dairyhands_top": "\u6324\u5976\u5de5\u4e0a\u8863",
      "/actions/tailoring/dairyhands_bottoms": "\u6324\u5976\u5de5\u4e0b\u88c5",
      "/actions/tailoring/foragers_top": "\u91c7\u6458\u8005\u4e0a\u8863",
      "/actions/tailoring/foragers_bottoms": "\u91c7\u6458\u8005\u4e0b\u88c5",
      "/actions/tailoring/lumberjacks_top": "\u4f10\u6728\u5de5\u4e0a\u8863",
      "/actions/tailoring/lumberjacks_bottoms": "\u4f10\u6728\u5de5\u4e0b\u88c5",
      "/actions/tailoring/cheesemakers_top": "\u5976\u916a\u5e08\u4e0a\u8863",
      "/actions/tailoring/cheesemakers_bottoms": "\u5976\u916a\u5e08\u4e0b\u88c5",
      "/actions/tailoring/crafters_top": "\u5de5\u5320\u4e0a\u8863",
      "/actions/tailoring/crafters_bottoms": "\u5de5\u5320\u4e0b\u88c5",
      "/actions/tailoring/tailors_top": "\u88c1\u7f1d\u4e0a\u8863",
      "/actions/tailoring/tailors_bottoms": "\u88c1\u7f1d\u4e0b\u88c5",
      "/actions/tailoring/chefs_top": "\u53a8\u5e08\u4e0a\u8863",
      "/actions/tailoring/chefs_bottoms": "\u53a8\u5e08\u4e0b\u88c5",
      "/actions/tailoring/brewers_top": "\u996e\u54c1\u5e08\u4e0a\u8863",
      "/actions/tailoring/brewers_bottoms": "\u996e\u54c1\u5e08\u4e0b\u88c5",
      "/actions/tailoring/alchemists_top": "\u70bc\u91d1\u5e08\u7684\u4e0a\u8863",
      "/actions/tailoring/alchemists_bottoms": "\u70bc\u91d1\u5e08\u4e0b\u88c5",
      "/actions/tailoring/enhancers_top": "\u5f3a\u5316\u5e08\u4e0a\u8863",
      "/actions/tailoring/enhancers_bottoms": "\u5f3a\u5316\u5e08\u4e0b\u88c5",
      "/actions/tailoring/revenant_tunic": "\u4ea1\u7075\u76ae\u8863",
      "/actions/tailoring/griffin_tunic": "\u72ee\u9e6b\u76ae\u8863",
      "/actions/tailoring/gluttonous_pouch": "\u8d2a\u98df\u4e4b\u888b",
      "/actions/tailoring/guzzling_pouch": "\u66b4\u996e\u4e4b\u56ca",
      "/actions/tailoring/marksman_bracers": "\u795e\u5c04\u62a4\u8155",
      "/actions/tailoring/acrobatic_hood": "\u6742\u6280\u5e08\u515c\u5e3d",
      "/actions/tailoring/magicians_hat": "\u9b54\u672f\u5e08\u4e4b\u5e3d",
      "/actions/tailoring/kraken_chaps": "\u514b\u62c9\u80af\u76ae\u88e4",
      "/actions/tailoring/royal_water_robe_bottoms": "\u7687\u5bb6\u6c34\u7cfb\u888d\u88d9",
      "/actions/tailoring/royal_nature_robe_bottoms": "\u7687\u5bb6\u81ea\u7136\u7cfb\u888d\u88d9",
      "/actions/tailoring/royal_fire_robe_bottoms": "\u7687\u5bb6\u706b\u7cfb\u888d\u88d9",
      "/actions/tailoring/kraken_tunic": "\u514b\u62c9\u80af\u76ae\u8863",
      "/actions/tailoring/royal_water_robe_top": "\u7687\u5bb6\u6c34\u7cfb\u888d\u670d",
      "/actions/tailoring/royal_nature_robe_top": "\u7687\u5bb6\u81ea\u7136\u7cfb\u888d\u670d",
      "/actions/tailoring/royal_fire_robe_top": "\u7687\u5bb6\u706b\u7cfb\u888d\u670d",
      "/actions/cooking/donut": "\u751c\u751c\u5708",
      "/actions/cooking/cupcake": "\u7eb8\u676f\u86cb\u7cd5",
      "/actions/cooking/gummy": "\u8f6f\u7cd6",
      "/actions/cooking/yogurt": "\u9178\u5976",
      "/actions/cooking/blueberry_donut": "\u84dd\u8393\u751c\u751c\u5708",
      "/actions/cooking/blueberry_cake": "\u84dd\u8393\u86cb\u7cd5",
      "/actions/cooking/apple_gummy": "\u82f9\u679c\u8f6f\u7cd6",
      "/actions/cooking/apple_yogurt": "\u82f9\u679c\u9178\u5976",
      "/actions/cooking/blackberry_donut": "\u9ed1\u8393\u751c\u751c\u5708",
      "/actions/cooking/blackberry_cake": "\u9ed1\u8393\u86cb\u7cd5",
      "/actions/cooking/orange_gummy": "\u6a59\u5b50\u8f6f\u7cd6",
      "/actions/cooking/orange_yogurt": "\u6a59\u5b50\u9178\u5976",
      "/actions/cooking/strawberry_donut": "\u8349\u8393\u751c\u751c\u5708",
      "/actions/cooking/strawberry_cake": "\u8349\u8393\u86cb\u7cd5",
      "/actions/cooking/plum_gummy": "\u674e\u5b50\u8f6f\u7cd6",
      "/actions/cooking/plum_yogurt": "\u674e\u5b50\u9178\u5976",
      "/actions/cooking/mooberry_donut": "\u54de\u8393\u751c\u751c\u5708",
      "/actions/cooking/mooberry_cake": "\u54de\u8393\u86cb\u7cd5",
      "/actions/cooking/peach_gummy": "\u6843\u5b50\u8f6f\u7cd6",
      "/actions/cooking/peach_yogurt": "\u6843\u5b50\u9178\u5976",
      "/actions/cooking/marsberry_donut": "\u706b\u661f\u8393\u751c\u751c\u5708",
      "/actions/cooking/marsberry_cake": "\u706b\u661f\u8393\u86cb\u7cd5",
      "/actions/cooking/dragon_fruit_gummy": "\u706b\u9f99\u679c\u8f6f\u7cd6",
      "/actions/cooking/dragon_fruit_yogurt": "\u706b\u9f99\u679c\u9178\u5976",
      "/actions/cooking/spaceberry_donut": "\u592a\u7a7a\u8393\u751c\u751c\u5708",
      "/actions/cooking/spaceberry_cake": "\u592a\u7a7a\u8393\u86cb\u7cd5",
      "/actions/cooking/star_fruit_gummy": "\u6768\u6843\u8f6f\u7cd6",
      "/actions/cooking/star_fruit_yogurt": "\u6768\u6843\u9178\u5976",
      "/actions/brewing/milking_tea": "\u6324\u5976\u8336",
      "/actions/brewing/stamina_coffee": "\u8010\u529b\u5496\u5561",
      "/actions/brewing/foraging_tea": "\u91c7\u6458\u8336",
      "/actions/brewing/intelligence_coffee": "\u667a\u529b\u5496\u5561",
      "/actions/brewing/gathering_tea": "\u91c7\u96c6\u8336",
      "/actions/brewing/woodcutting_tea": "\u4f10\u6728\u8336",
      "/actions/brewing/cooking_tea": "\u70f9\u996a\u8336",
      "/actions/brewing/defense_coffee": "\u9632\u5fa1\u5496\u5561",
      "/actions/brewing/brewing_tea": "\u51b2\u6ce1\u8336",
      "/actions/brewing/attack_coffee": "\u653b\u51fb\u5496\u5561",
      "/actions/brewing/gourmet_tea": "\u7f8e\u98df\u8336",
      "/actions/brewing/alchemy_tea": "\u70bc\u91d1\u8336",
      "/actions/brewing/enhancing_tea": "\u5f3a\u5316\u8336",
      "/actions/brewing/cheesesmithing_tea": "\u5976\u916a\u953b\u9020\u8336",
      "/actions/brewing/power_coffee": "\u529b\u91cf\u5496\u5561",
      "/actions/brewing/crafting_tea": "\u5236\u4f5c\u8336",
      "/actions/brewing/ranged_coffee": "\u8fdc\u7a0b\u5496\u5561",
      "/actions/brewing/wisdom_tea": "\u7ecf\u9a8c\u8336",
      "/actions/brewing/wisdom_coffee": "\u7ecf\u9a8c\u5496\u5561",
      "/actions/brewing/tailoring_tea": "\u7f1d\u7eab\u8336",
      "/actions/brewing/magic_coffee": "\u9b54\u6cd5\u5496\u5561",
      "/actions/brewing/super_milking_tea": "\u8d85\u7ea7\u6324\u5976\u8336",
      "/actions/brewing/super_stamina_coffee": "\u8d85\u7ea7\u8010\u529b\u5496\u5561",
      "/actions/brewing/super_foraging_tea": "\u8d85\u7ea7\u91c7\u6458\u8336",
      "/actions/brewing/super_intelligence_coffee": "\u8d85\u7ea7\u667a\u529b\u5496\u5561",
      "/actions/brewing/processing_tea": "\u52a0\u5de5\u8336",
      "/actions/brewing/lucky_coffee": "\u5e78\u8fd0\u5496\u5561",
      "/actions/brewing/super_woodcutting_tea": "\u8d85\u7ea7\u4f10\u6728\u8336",
      "/actions/brewing/super_cooking_tea": "\u8d85\u7ea7\u70f9\u996a\u8336",
      "/actions/brewing/super_defense_coffee": "\u8d85\u7ea7\u9632\u5fa1\u5496\u5561",
      "/actions/brewing/super_brewing_tea": "\u8d85\u7ea7\u51b2\u6ce1\u8336",
      "/actions/brewing/ultra_milking_tea": "\u7a76\u6781\u6324\u5976\u8336",
      "/actions/brewing/super_attack_coffee": "\u8d85\u7ea7\u653b\u51fb\u5496\u5561",
      "/actions/brewing/ultra_stamina_coffee": "\u7a76\u6781\u8010\u529b\u5496\u5561",
      "/actions/brewing/efficiency_tea": "\u6548\u7387\u8336",
      "/actions/brewing/swiftness_coffee": "\u8fc5\u6377\u5496\u5561",
      "/actions/brewing/super_alchemy_tea": "\u8d85\u7ea7\u70bc\u91d1\u8336",
      "/actions/brewing/super_enhancing_tea": "\u8d85\u7ea7\u5f3a\u5316\u8336",
      "/actions/brewing/ultra_foraging_tea": "\u7a76\u6781\u91c7\u6458\u8336",
      "/actions/brewing/ultra_intelligence_coffee": "\u7a76\u6781\u667a\u529b\u5496\u5561",
      "/actions/brewing/channeling_coffee": "\u541f\u5531\u5496\u5561",
      "/actions/brewing/super_cheesesmithing_tea": "\u8d85\u7ea7\u5976\u916a\u953b\u9020\u8336",
      "/actions/brewing/ultra_woodcutting_tea": "\u7a76\u6781\u4f10\u6728\u8336",
      "/actions/brewing/super_power_coffee": "\u8d85\u7ea7\u529b\u91cf\u5496\u5561",
      "/actions/brewing/artisan_tea": "\u5de5\u5320\u8336",
      "/actions/brewing/super_crafting_tea": "\u8d85\u7ea7\u5236\u4f5c\u8336",
      "/actions/brewing/ultra_cooking_tea": "\u7a76\u6781\u70f9\u996a\u8336",
      "/actions/brewing/super_ranged_coffee": "\u8d85\u7ea7\u8fdc\u7a0b\u5496\u5561",
      "/actions/brewing/ultra_defense_coffee": "\u7a76\u6781\u9632\u5fa1\u5496\u5561",
      "/actions/brewing/catalytic_tea": "\u50ac\u5316\u8336",
      "/actions/brewing/critical_coffee": "\u66b4\u51fb\u5496\u5561",
      "/actions/brewing/super_tailoring_tea": "\u8d85\u7ea7\u7f1d\u7eab\u8336",
      "/actions/brewing/ultra_brewing_tea": "\u7a76\u6781\u51b2\u6ce1\u8336",
      "/actions/brewing/super_magic_coffee": "\u8d85\u7ea7\u9b54\u6cd5\u5496\u5561",
      "/actions/brewing/ultra_attack_coffee": "\u7a76\u6781\u653b\u51fb\u5496\u5561",
      "/actions/brewing/blessed_tea": "\u798f\u6c14\u8336",
      "/actions/brewing/ultra_alchemy_tea": "\u7a76\u6781\u70bc\u91d1\u8336",
      "/actions/brewing/ultra_enhancing_tea": "\u7a76\u6781\u5f3a\u5316\u8336",
      "/actions/brewing/ultra_cheesesmithing_tea": "\u7a76\u6781\u5976\u916a\u953b\u9020\u8336",
      "/actions/brewing/ultra_power_coffee": "\u7a76\u6781\u529b\u91cf\u5496\u5561",
      "/actions/brewing/ultra_crafting_tea": "\u7a76\u6781\u5236\u4f5c\u8336",
      "/actions/brewing/ultra_ranged_coffee": "\u7a76\u6781\u8fdc\u7a0b\u5496\u5561",
      "/actions/brewing/ultra_tailoring_tea": "\u7a76\u6781\u7f1d\u7eab\u8336",
      "/actions/brewing/ultra_magic_coffee": "\u7a76\u6781\u9b54\u6cd5\u5496\u5561",
      "/actions/alchemy/coinify": "\u70b9\u91d1",
      "/actions/alchemy/transmute": "\u8f6c\u5316",
      "/actions/alchemy/decompose": "\u5206\u89e3",
      "/actions/enhancing/enhance": "\u5f3a\u5316",
      "/actions/combat/fly": "\u82cd\u8747",
      "/actions/combat/rat": "\u6770\u745e",
      "/actions/combat/skunk": "\u81ed\u9f2c",
      "/actions/combat/porcupine": "\u8c6a\u732a",
      "/actions/combat/slimy": "\u53f2\u83b1\u59c6",
      "/actions/combat/smelly_planet": "\u81ed\u81ed\u661f\u7403",
      "/actions/combat/smelly_planet_elite": "\u81ed\u81ed\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/frog": "\u9752\u86d9",
      "/actions/combat/snake": "\u86c7",
      "/actions/combat/swampy": "\u6cbc\u6cfd\u866b",
      "/actions/combat/alligator": "\u590f\u6d1b\u514b",
      "/actions/combat/swamp_planet": "\u6cbc\u6cfd\u661f\u7403",
      "/actions/combat/swamp_planet_elite": "\u6cbc\u6cfd\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/sea_snail": "\u8717\u725b",
      "/actions/combat/crab": "\u8783\u87f9",
      "/actions/combat/aquahorse": "\u6c34\u9a6c",
      "/actions/combat/nom_nom": "\u54ac\u54ac\u9c7c",
      "/actions/combat/turtle": "\u5fcd\u8005\u9f9f",
      "/actions/combat/aqua_planet": "\u6d77\u6d0b\u661f\u7403",
      "/actions/combat/aqua_planet_elite": "\u6d77\u6d0b\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/jungle_sprite": "\u4e1b\u6797\u7cbe\u7075",
      "/actions/combat/myconid": "\u8611\u83c7\u4eba",
      "/actions/combat/treant": "\u6811\u4eba",
      "/actions/combat/centaur_archer": "\u534a\u4eba\u9a6c\u5f13\u7bad\u624b",
      "/actions/combat/jungle_planet": "\u4e1b\u6797\u661f\u7403",
      "/actions/combat/jungle_planet_elite": "\u4e1b\u6797\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/gobo_stabby": "\u523a\u523a",
      "/actions/combat/gobo_slashy": "\u780d\u780d",
      "/actions/combat/gobo_smashy": "\u9524\u9524",
      "/actions/combat/gobo_shooty": "\u54bb\u54bb",
      "/actions/combat/gobo_boomy": "\u8f70\u8f70",
      "/actions/combat/gobo_planet": "\u54e5\u5e03\u6797\u661f\u7403",
      "/actions/combat/gobo_planet_elite": "\u54e5\u5e03\u6797\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/eye": "\u72ec\u773c",
      "/actions/combat/eyes": "\u53e0\u773c",
      "/actions/combat/veyes": "\u590d\u773c",
      "/actions/combat/planet_of_the_eyes": "\u773c\u7403\u661f\u7403",
      "/actions/combat/planet_of_the_eyes_elite": "\u773c\u7403\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/novice_sorcerer": "\u65b0\u624b\u5deb\u5e08",
      "/actions/combat/ice_sorcerer": "\u51b0\u971c\u5deb\u5e08",
      "/actions/combat/flame_sorcerer": "\u706b\u7130\u5deb\u5e08",
      "/actions/combat/elementalist": "\u5143\u7d20\u6cd5\u5e08",
      "/actions/combat/sorcerers_tower": "\u5deb\u5e08\u4e4b\u5854",
      "/actions/combat/sorcerers_tower_elite": "\u5deb\u5e08\u4e4b\u5854 (\u7cbe\u82f1)",
      "/actions/combat/gummy_bear": "\u8f6f\u7cd6\u718a",
      "/actions/combat/panda": "\u718a\u732b",
      "/actions/combat/black_bear": "\u9ed1\u718a",
      "/actions/combat/grizzly_bear": "\u68d5\u718a",
      "/actions/combat/polar_bear": "\u5317\u6781\u718a",
      "/actions/combat/bear_with_it": "\u718a\u718a\u661f\u7403",
      "/actions/combat/bear_with_it_elite": "\u718a\u718a\u661f\u7403 (\u7cbe\u82f1)",
      "/actions/combat/magnetic_golem": "\u78c1\u529b\u9b54\u50cf",
      "/actions/combat/stalactite_golem": "\u949f\u4e73\u77f3\u9b54\u50cf",
      "/actions/combat/granite_golem": "\u82b1\u5c97\u5ca9\u9b54\u50cf",
      "/actions/combat/golem_cave": "\u9b54\u50cf\u6d1e\u7a74",
      "/actions/combat/golem_cave_elite": "\u9b54\u50cf\u6d1e\u7a74 (\u7cbe\u82f1)",
      "/actions/combat/zombie": "\u50f5\u5c38",
      "/actions/combat/vampire": "\u5438\u8840\u9b3c",
      "/actions/combat/werewolf": "\u72fc\u4eba",
      "/actions/combat/twilight_zone": "\u66ae\u5149\u4e4b\u5730",
      "/actions/combat/twilight_zone_elite": "\u66ae\u5149\u4e4b\u5730 (\u7cbe\u82f1)",
      "/actions/combat/abyssal_imp": "\u6df1\u6e0a\u5c0f\u9b3c",
      "/actions/combat/soul_hunter": "\u7075\u9b42\u730e\u624b",
      "/actions/combat/infernal_warlock": "\u5730\u72f1\u672f\u58eb",
      "/actions/combat/infernal_abyss": "\u5730\u72f1\u6df1\u6e0a",
      "/actions/combat/infernal_abyss_elite": "\u5730\u72f1\u6df1\u6e0a (\u7cbe\u82f1)",
      "/actions/combat/chimerical_den": "\u5947\u5e7b\u6d1e\u7a74",
      "/actions/combat/sinister_circus": "\u9634\u68ee\u9a6c\u620f\u56e2",
      "/actions/combat/enchanted_fortress": "\u79d8\u6cd5\u8981\u585e",
      "/actions/combat/pirate_cove": "\u6d77\u76d7\u57fa\u5730"
    };
    const processingCategory = {
      "/action_types/cheesesmithing": "/action_categories/cheesesmithing/material",
      "/action_types/crafting": "/action_categories/crafting/lumber",
      "/action_types/tailoring": "/action_categories/tailoring/material"
    };
    const ZHActionTypeNames = {
      milking: "\u6324\u5976",
      foraging: "\u91c7\u6458",
      woodcutting: "\u4f10\u6728",
      cheesesmithing: "\u5976\u916a\u953b\u9020",
      crafting: "\u5236\u4f5c",
      tailoring: "\u7f1d\u7eab",
      cooking: "\u70f9\u996a",
      brewing: "\u51b2\u6ce1"
    };

    // // 动作类型到房子名称映射
    // export const actionHridToHouseNamesMap = {
    //     "/action_types/brewing": "/house_rooms/brewery",
    //     "/action_types/cheesesmithing": "/house_rooms/forge",
    //     "/action_types/cooking": "/house_rooms/kitchen",
    //     "/action_types/crafting": "/house_rooms/workshop",
    //     "/action_types/foraging": "/house_rooms/garden",
    //     "/action_types/milking": "/house_rooms/dairy_barn",
    //     "/action_types/tailoring": "/house_rooms/sewing_parlor",
    //     "/action_types/woodcutting": "/house_rooms/log_shed",
    //     "/action_types/alchemy": "/house_rooms/laboratory",
    // };

    // // 物品强化等级到增益加成映射
    // export const itemEnhanceLevelToBuffBonusMap = {
    //     0: 0,
    //     1: 2,
    //     2: 4.2,
    //     3: 6.6,
    //     4: 9.2,
    //     5: 12.0,
    //     6: 15.0,
    //     7: 18.2,
    //     8: 21.6,
    //     9: 25.2,
    //     10: 29.0,
    //     11: 33.0,
    //     12: 37.2,
    //     13: 41.6,
    //     14: 46.2,
    //     15: 51.0,
    //     16: 56.0,
    //     17: 61.2,
    //     18: 66.6,
    //     19: 72.2,
    //     20: 78.0,
    // };

    // // 动作类型到工具速度增益名称映射
    // export const actionHridToToolsSpeedBuffNamesMap = {
    //     "/action_types/brewing": "brewingSpeed",
    //     "/action_types/cheesesmithing": "cheesesmithingSpeed",
    //     "/action_types/cooking": "cookingSpeed",
    //     "/action_types/crafting": "craftingSpeed",
    //     "/action_types/foraging": "foragingSpeed",
    //     "/action_types/milking": "milkingSpeed",
    //     "/action_types/tailoring": "tailoringSpeed",
    //     "/action_types/woodcutting": "woodcuttingSpeed",
    //     "/action_types/alchemy": "alchemySpeed",
    // };

    const freshnessConfig = {
      cacheKey: "refreshnessMarketDataCache",
      targetUrls: ["https://ghproxy.net/https://raw.githubusercontent.com/holychikenz/MWIApi/main/milkyapi.json", "https://raw.githubusercontent.com/holychikenz/MWIApi/main/milkyapi.json"],
      refreshTimer: null,
      data: null
    };
    const medianConfig = {
      cacheKey: "medianMarketDataCache",
      targetUrls: ["https://ghproxy.net/https://raw.githubusercontent.com/holychikenz/MWIApi/main/medianmarket.json", "https://raw.githubusercontent.com/holychikenz/MWIApi/main/medianmarket.json"],
      refreshTimer: null,
      data: null
    };
    class MWIApiMarketJson {
      constructor(config) {
        FetchMarketJson(config);
        this.config = config;
        return new Proxy(this, {
          get(target, prop) {
            if (target.config.data) return target.config.data[prop];
            return null;
          },
          set(target, prop, value) {
            // Cant be set outside
            return true;
          }
        });
      }
    }
    async function preFetchData() {
      globals.freshnessMarketJson = new MWIApiMarketJson(freshnessConfig);
      globals.medianMarketJson = new MWIApiMarketJson(medianConfig);
    }
    async function FetchMarketJson(config) {
      const ONE_HOUR = 60 * 60 * 1000; // 1小时
      const FIVE_MINUTES = 5 * 60 * 1000; // 5分钟
      const TEN_SECONDS = 10 * 1000; // 10秒

      const schedualNextRefresh = ({
        data,
        timestamp,
        config
      }) => {
        if (data) config.data = data;
        // 清理定时器
        const clearRefreshTimer = () => {
          if (config.refreshTimer) {
            clearTimeout(config.refreshTimer);
            config.refreshTimer = null;
          }
        };
        const now = Date.now();
        const cacheAge = now - timestamp;
        const dataAge = data?.time ? now - new Date(data.time * 1000).getTime() : ONE_HOUR;
        const nextRefreshTime = data ? Math.max(ONE_HOUR - dataAge, FIVE_MINUTES - cacheAge) : TEN_SECONDS;
        clearRefreshTimer();
        config.refreshTimer = setTimeout(async () => {
          clearRefreshTimer();
          await FetchMarketJson(config);
          globals.hasMarketItemUpdate = true; // 主动刷新数据
        }, nextRefreshTime);
      };

      // 检查缓存
      const cachedData = localStorage.getItem(config.cacheKey);
      if (cachedData) {
        try {
          const {
            data,
            timestamp
          } = JSON.parse(cachedData);
          const now = Date.now();
          const cacheAge = now - timestamp;
          const dataAge = data?.time ? now - new Date(data.time * 1000).getTime() : ONE_HOUR;

          // 如果数据未过期(1小时内)或 缓存足够新(5分钟内)
          if (dataAge < ONE_HOUR || cacheAge < FIVE_MINUTES) {
            schedualNextRefresh({
              data,
              timestamp,
              config
            });
            return data;
          }
        } catch (e) {
          console.error('Failed to parse cache:', e);
        }
      }
      return new Promise(resolve => {
        const urls = config.targetUrls;
        let currentIndex = 0;
        const tryNextUrl = () => {
          if (currentIndex >= urls.length) {
            // 所有URL尝试失败,返回缓存或null
            if (cachedData) {
              try {
                const {
                  data
                } = JSON.parse(cachedData);
                resolve(data);
              } catch (e) {
                resolve(null);
              }
            } else {
              resolve(null);
            }
            return;
          }
          try {
            GM_xmlhttpRequest({
              method: "GET",
              url: urls[currentIndex],
              onload: function (response) {
                try {
                  let data = JSON.parse(response.responseText);
                  if (config.dataTransfer) data = config.dataTransfer(data);
                  if (!data?.market) {
                    throw new Error('Invalid market data structure');
                  }

                  // 更新缓存
                  localStorage.setItem(config.cacheKey, JSON.stringify({
                    data,
                    timestamp: Date.now()
                  }));
                  resolve(data);
                } catch (e) {
                  console.error('Failed to parse market data:', e);
                  currentIndex++;
                  tryNextUrl();
                }
              },
              onerror: function (error) {
                console.error(`Failed to fetch market data from ${urls[currentIndex]}:`, error);
                currentIndex++;
                tryNextUrl();
              }
            });
          } catch (error) {
            console.error('Request setup failed:', error);
            currentIndex++;
            tryNextUrl();
          }
        };
        tryNextUrl();
      }).then(data => {
        schedualNextRefresh({
          data,
          timestamp: Date.now(),
          config
        });
        return data;
      });
    }

    class Buff {
      constructor() {
        this.artisan = 0; // "Reduces required materials during production"
        this.action_speed = 0; // "Decreases time cost for the action"
        this.alchemy_success = 0; // "Multiplicative bonus to success rate while alchemizing"
        this.blessed = 0; // "Chance to gain +2 instead of +1 on enhancing success"
        this.combat_drop_quantity = 0; // "Increases quantity of combat loot",
        this.efficiency = 0; // "Chance of repeating the action instantly"
        this.essence_find = 0; // "Increases drop rate of essences"
        this.enhancing_success = 0; // "Multiplicative bonus to success rate while enhancing",
        this.gathering = 0; // "Increases gathering quantity"
        this.wisdom = 0; // "Increases experience gained"
        this.processing = 0; // "Chance to instantly convert gathered resource into processed material"
        this.rare_find = 0; // "Increases rare item drop rate"
      }
      static fromBuffs(buffs) {
        const buff = new Buff();
        if (!buffs) return buff;
        for (const {
          typeHrid,
          flatBoost
        } of buffs) {
          switch (typeHrid) {
            case "/buff_types/artisan":
              buff.artisan += flatBoost * 100;
              break;
            case "/buff_types/action_level":
              buff.efficiency -= flatBoost;
              break;
            case "/buff_types/action_speed":
              buff.action_speed += flatBoost * 100;
              break;
            case "/buff_types/alchemy_success":
              buff.alchemy_success += flatBoost * 100;
              break;
            case "/buff_types/blessed":
              buff.blessed += flatBoost * 100;
              break;
            case "/buff_types/combat_drop_quantity":
              buff.combat_drop_quantity += flatBoost * 100;
              break;
            case "/buff_types/essence_find":
              buff.essence_find += flatBoost * 100;
              break;
            case "/buff_types/efficiency":
              buff.efficiency += flatBoost * 100;
              break;
            case "/buff_types/enhancing_success":
              buff.enhancing_success += flatBoost * 100;
              break;
            case "/buff_types/gathering":
            case "/buff_types/gourmet":
              buff.gathering += flatBoost * 100;
              break;
            case "/buff_types/wisdom":
              buff.wisdom += flatBoost * 100;
              break;
            case "/buff_types/processing":
              buff.processing += flatBoost * 100;
              break;
            case "/buff_types/rare_find":
              buff.rare_find += flatBoost * 100;
              break;
            default:
              if (typeHrid.endsWith("_level")) buff.efficiency += flatBoost;else console.error(`unhandled buff type - ${typeHrid}`);
              break;
          }
        }
        return buff;
      }
    }
    class BuffsProvider {
      constructor() {
        // 缓存所有buff数据
        this.buffCache = {
          community: new Map(),
          tea: new Map(),
          equipment: new Map(),
          house: new Map()
          // mooPass: new Map(),
        };

        // 订阅全局数据变化
        globals.subscribe((key, value) => {
          if (key === 'initCharacterData_communityActionTypeBuffsMap') this.updateBuffCache('community', value);else if (key === 'initCharacterData_consumableActionTypeBuffsMap') this.updateBuffCache('tea', value);else if (key === 'initCharacterData_equipmentActionTypeBuffsMap') this.updateBuffCache('equipment', value);else if (key === 'initCharacterData_houseActionTypeBuffsMap') this.updateBuffCache('house', value);
        });
        this.updateBuffCache('community', globals.initCharacterData_communityActionTypeBuffsMap);
        this.updateBuffCache('tea', globals.initCharacterData_consumableActionTypeBuffsMap);
        this.updateBuffCache('equipment', globals.initCharacterData_equipmentActionTypeBuffsMap);
        this.updateBuffCache('house', globals.initCharacterData_houseActionTypeBuffsMap);
        // updateBuffCache('mooPass', globals.initCharacterData_houseActionTypeBuffsMap);
      }
      updateBuffCache(type, data) {
        this.clearCache(type);
        for (const [actionType, buffs] of Object.entries(data)) {
          this.buffCache[type].set(actionType, Buff.fromBuffs(buffs));
        }
      }
      clearCache(type) {
        if (this.buffCache[type]) {
          this.buffCache[type].clear();
        }
      }
      getCommunityBuff(actionTypeHrid) {
        return this.buffCache.community.get(actionTypeHrid) || new Buff();
      }
      getTeaBuffs(actionTypeHrid) {
        return this.buffCache.tea.get(actionTypeHrid) || new Buff();
      }
      getHouseBuff(actionTypeHrid) {
        return this.buffCache.house.get(actionTypeHrid) || new Buff();
      }
      getEquipmentBuff(actionTypeHrid) {
        return this.buffCache.equipment.get(actionTypeHrid) || new Buff();
      }
    }

    // "community_buffs_updated" === e.type ? this.handleMessageCommunityBuffsUpdated(e)
    var buffs = new BuffsProvider();

    function ProfitCaculation(action, marketJson) {
      const isProduction = action.inputItems?.length > 0;
      const actionHrid = action.hrid;

      // 茶(饮品)效率和支出计算
      const teaBuffs = buffs.getTeaBuffs(action.type);
      let drinksConsumedPerHourAskPrice = 0;
      let drinksConsumedPerHourBidPrice = 0;
      const drinksList = globals.initCharacterData_actionTypeDrinkSlotsMap[action.type];
      const drinkItems = [];
      for (const drink of drinksList) {
        if (!drink?.itemHrid) continue;
        const valuation = getItemValuation(drink.itemHrid, marketJson);
        drinksConsumedPerHourAskPrice += (valuation?.ask ?? 0) * 12;
        drinksConsumedPerHourBidPrice += (valuation?.bid ?? 0) * 12;
        drinkItems.push({
          ...valuation,
          name: getItemName(drink.itemHrid),
          countPerHour: 12
        });
      }
      const communityBuff = buffs.getCommunityBuff(action.type);

      // 原料支出计算
      let inputItems = [];
      let totalResourcesAskPricePerAction = 0;
      let totalResourcesBidPricePerAction = 0;
      let upgradedItem = null;
      if (isProduction) {
        inputItems = JSON.parse(JSON.stringify(action.inputItems));
        for (const item of inputItems) {
          item.name = getItemName(item.itemHrid);
          Object.assign(item, getItemValuation(item.itemHrid, marketJson));
          // 茶减少原料消耗
          item.count *= 1 - teaBuffs.artisan / 100;
          totalResourcesAskPricePerAction += item.ask * item.count;
          totalResourcesBidPricePerAction += item.bid * item.count;
        }

        // 上级物品作为原料
        if (action.upgradeItemHrid) {
          const valuation = getItemValuation(action.upgradeItemHrid, marketJson);
          const upgradedFromItemAsk = valuation?.ask;
          const upgradedFromItemBid = valuation?.bid;
          totalResourcesAskPricePerAction += upgradedFromItemAsk;
          totalResourcesBidPricePerAction += upgradedFromItemBid;
          upgradedItem = {
            name: getItemName(action.upgradeItemHrid),
            ...valuation,
            count: 1
          };
          inputItems.push(upgradedItem);
        }
      }

      // 等级碾压提高效率(人物等级不及最低要求等级时,按最低要求等级计算)
      const requiredLevel = action.levelRequirement.level;
      let currentLevel = requiredLevel;
      for (const skill of globals.initCharacterData_characterSkills) {
        if (skill.skillHrid === action.levelRequirement.skillHrid) {
          currentLevel = skill.level;
          break;
        }
      }
      const levelEffBuff = Math.max(currentLevel - requiredLevel, 0);
      // 房子效率
      const houseBuff = buffs.getHouseBuff(action.type);
      // 特殊装备效率
      const equipmentBuff = buffs.getEquipmentBuff(action.type);
      // 总效率,影响动作数
      const totalEffBuff = levelEffBuff + houseBuff.efficiency + teaBuffs.efficiency + equipmentBuff.efficiency + communityBuff.efficiency;

      // 每小时动作数(包含工具缩减动作时间)
      const baseTimePerActionSec = action.baseTimeCost / 1000000000;
      const actualTimePerActionSec = baseTimePerActionSec / (1 + equipmentBuff.action_speed / 100);
      const actionPerHour = 3600 / actualTimePerActionSec * (1 + totalEffBuff / 100);

      // 每小时支出
      const expendPerHour = totalResourcesAskPricePerAction * actionPerHour + drinksConsumedPerHourAskPrice;
      const outputItems = [];
      // 基础产出
      let basicOutputValuationPerAction = {
        ask: 0,
        bid: 0
      };
      if (isProduction) {
        for (const output of action.outputItems) {
          const valuation = getItemValuation(output.itemHrid, marketJson);
          basicOutputValuationPerAction.ask += valuation.ask * output.count;
          basicOutputValuationPerAction.bid += valuation.bid * output.count;
          outputItems.push({
            name: getItemName(output.itemHrid),
            ...valuation,
            count: output.count
          });
        }
      } else {
        basicOutputValuationPerAction = getDropTableInfomation(action.dropTable, marketJson, teaBuffs);
        outputItems.push(...basicOutputValuationPerAction.dropItems);
      }

      // 茶产量额外增益
      const quantityBuf = (100 + teaBuffs.gathering + communityBuff.gathering) / 100;
      basicOutputValuationPerAction.ask *= quantityBuf;
      basicOutputValuationPerAction.bid *= quantityBuf;
      outputItems.forEach(item => item.count *= quantityBuf);

      // 精华掉落
      const essenceOutputValuationPerAction = Array.isArray(action?.essenceDropTable) ? getDropTableInfomation(action.essenceDropTable, marketJson) : {
        ask: 0,
        bid: 0
      };
      if (essenceOutputValuationPerAction.dropItems) {
        const quantityBuf = (100 + equipmentBuff.essence_find) / 100;
        essenceOutputValuationPerAction.ask *= quantityBuf;
        essenceOutputValuationPerAction.bid *= quantityBuf;
        essenceOutputValuationPerAction.dropItems.forEach(item => item.count *= quantityBuf);
        outputItems.push(...essenceOutputValuationPerAction.dropItems);
      }

      // 稀有掉落
      const rareOutputValuationPerAction = Array.isArray(action?.rareDropTable) ? getDropTableInfomation(action.rareDropTable, marketJson) : {
        ask: 0,
        bid: 0
      };
      if (rareOutputValuationPerAction.dropItems) {
        const quantityBuf = (100 + houseBuff.rare_find) / 100;
        rareOutputValuationPerAction.ask *= quantityBuf;
        rareOutputValuationPerAction.bid *= quantityBuf;
        rareOutputValuationPerAction.dropItems.forEach(item => item.count *= quantityBuf);
        outputItems.push(...rareOutputValuationPerAction.dropItems);
      }

      // 每小时产出
      const ask = basicOutputValuationPerAction.ask + essenceOutputValuationPerAction.ask + rareOutputValuationPerAction.ask;
      const bid = basicOutputValuationPerAction.bid + essenceOutputValuationPerAction.bid + rareOutputValuationPerAction.bid;
      const outputPerHour = {
        ask: ask * actionPerHour * 0.98,
        bid: bid * actionPerHour * 0.98
      };
      inputItems.forEach(item => item.countPerHour = item.count * actionPerHour);
      drinkItems.forEach(item => item.count = item.countPerHour / actionPerHour);
      inputItems.push(...drinkItems);
      outputItems.forEach(item => item.countPerHour = item.count * actionPerHour);

      // 每小时利润
      const profitPerHour = outputPerHour.bid - expendPerHour;
      const profitPerDayMillion = (profitPerHour * 24 / 1e6).toFixed(2);
      return {
        actionNames: getActionName(action.hrid),
        actionHrid,
        inputItems,
        outputItems,
        actionPerHour,
        expendPerHour,
        outputPerHour,
        profitPerHour,
        baseTimePerActionSec,
        levelEffBuff,
        teaBuffs,
        communityBuff,
        houseBuff,
        equipmentBuff,
        profitPerDayMillion,
        ProfitMargin: 100 * (outputPerHour.bid - expendPerHour) / expendPerHour
      };
    }

    function GenerateDom(marketJson) {
      if (!marketJson?.market) throw new Error("Market data unavailable");
      const actionTypes = Object.keys(ZHActionTypeNames);
      const actionTypesHtml = [];
      for (const actionType of actionTypes) {
        const actions = [];
        Object.keys(globals.initClientData_actionDetailMap).filter(key => key.indexOf(`/actions/${actionType}/`) !== -1).forEach(key => actions.push(globals.initClientData_actionDetailMap[key]));
        const actionsHtmlResult = [];
        for (const action of actions) {
          if (processingCategory[action.type]) {
            if (action?.category && action.category !== processingCategory[action.type]) continue;
          }
          const levelEngouth = globals.initCharacterData_characterSkills.some(skill => skill.skillHrid === action.levelRequirement.skillHrid && skill.level >= action.levelRequirement.level);
          const iconId = action.hrid.replace(`/actions/${actionType}/`, '');
          const result = ProfitCaculation(action, marketJson);
          const actionHtml = `
                <div class="Item_itemContainer__x7kH1" style="position: relative;">
                    <div>
                        <div class="Item_item__2De2O Item_clickable__3viV6" style="${levelEngouth ? "" : "background-color: var(--color-midnight-800);"}" data-tooltip='${JSON.stringify(result)}'>
                            <div class="Item_iconContainer__5z7j4"><svg role="img" aria-label="${action.name}"
                                    class="Icon_icon__2LtL_" width="100%" height="100%">
                                    <use href="/static/media/${getSvg(iconId)}"></use>
                                </svg></div>
                            
                            <div id="script_stack_price" style="z-index: 1; position: absolute; top: 2px; left: 2px; text-align: left;">${result.profitPerDayMillion}M</div>
                            <div class="Item_count__1HVvv">${result.ProfitMargin.toFixed(0)}%</div>
                        </div>
                    </div>
                </div>
            `;
          actionsHtmlResult.push({
            profitPerHour: result.profitPerHour,
            actionHtml
          });
        }
        const actionHtml = [];
        actionsHtmlResult.sort((l, r) => r.profitPerHour - l.profitPerHour).forEach(v => actionHtml.push(v.actionHtml));
        const actionTypeHtml = `
            <div>
                <div class="Inventory_itemGrid__20YAH">
                    <div class="Inventory_label__XEOAx" >
                        <span class="Inventory_categoryButton__35s1x">${ZHActionTypeNames[actionType]}</span>
                    </div>
                    ${actionHtml.join('\n')}
                </div>
            </div>
        `;
        actionTypesHtml.push(actionTypeHtml);
      }
      const innerHtml = actionTypesHtml.join('\n');
      return innerHtml;
    }

    function createTooltip() {
      const tooltip = document.createElement('div');
      tooltip.id = 'profit-tooltip';
      tooltip.setAttribute('role', 'tooltip');
      tooltip.className = 'MuiPopper-root MuiTooltip-popper css-112l0a2';
      tooltip.style.position = 'absolute';
      tooltip.style.zIndex = '9999';
      tooltip.style.display = 'none';
      tooltip.style.pointerEvents = 'none';
      tooltip.style.margin = '0px';
      tooltip.style.inset = "0px auto auto 0px";
      const tooltipInner = document.createElement('div');
      tooltipInner.className = 'MuiTooltip-tooltip MuiTooltip-tooltipPlacementTop css-1spb1s5';
      tooltipInner.style.minWidth = "340px";
      const tooltipContent = document.createElement('div');
      tooltipContent.className = 'ItemTooltipText_itemTooltipText__zFq3A';
      tooltipInner.appendChild(tooltipContent);
      tooltip.appendChild(tooltipInner);
      document.body.appendChild(tooltip);
      setupTooltipEvents(tooltip, tooltipContent);
      return {
        container: tooltip,
        content: tooltipContent
      };
    }
    function generateDiffInfo(item, type) {
      const medianType = type == "ask" ? "medianAsk" : "medianBid";
      if (!item[type] || !item[medianType]) {
        console.log(item);
        return "";
      }
      const diff = item[type] - item[medianType];
      if (diff == 0) return "(-)";
      const sign = diff > 0 ? "↑" : "↓";
      const num = formatNumber(Math.abs(diff));
      return ` (${sign}${num})`;
    }
    function setupTooltipEvents(tooltip, tooltipContent) {
      let tooltipTimer = null;
      document.addEventListener('mouseover', e => {
        const itemContainer = e.target.closest('.Item_item__2De2O');
        if (!itemContainer) {
          tooltip.style.display = 'none';
          return;
        }
        const tooltipData = itemContainer.dataset.tooltip;
        if (!tooltipData) return;
        try {
          const data = JSON.parse(tooltipData);
          tooltipContent.innerHTML = formatTooltipContent(data);
          tooltip.style.display = 'block';

          // 计算并设置位置
          const rect = itemContainer.getBoundingClientRect();
          const xPos = Math.max(0, rect.left - tooltip.offsetWidth);
          const yPos = Math.max(0, rect.bottom - tooltip.offsetHeight);
          tooltip.style.transform = `translate(${xPos}px, ${yPos}px)`;
          tooltip.setAttribute('data-popper-placement', 'left');
          if (tooltipTimer) clearTimeout(tooltipTimer);
        } catch (e) {
          console.error('Failed to parse tooltip data:', e);
        }
      });
      document.addEventListener('mouseout', e => {
        if (!e.relatedTarget || !e.relatedTarget.closest('.Item_item__2De2O')) {
          tooltipTimer = setTimeout(() => {
            tooltip.style.display = 'none';
          }, 0);
        }
      });
    }
    function formatPercent(percent) {
      const result = percent ? `+${formatNumber(percent)}%` : "-";
      return result;
    }
    function formatTooltipContent(data) {
      let totalInputAsk = 0,
        totalInputBid = 0;
      let totalInputMedianAsk = 0,
        totalInputMedianBid = 0;
      const inputTableHtmls = [];
      for (const input of data.inputItems) {
        totalInputAsk += input.ask * input.count;
        totalInputBid += input.bid * input.count;
        totalInputMedianAsk += (input.medianAsk ?? 0) * input.count;
        totalInputMedianBid += (input.medianBid ?? 0) * input.count;
        const tableHtml = `
                    <tr>
                        <td style="text-align: left;">${input.name}</td>
                        <td style="text-align: right;">${formatNumber(input.count)}</td>
                        <td style="text-align: right;">${formatNumber(input.ask)}</td>
                        <td style="text-align: left;">${generateDiffInfo(input, "ask")}</td>
                        <td style="text-align: right;">${formatNumber(input.bid)}</td>
                        <td style="text-align: left;">${generateDiffInfo(input, "bid")}</td>
                        <td style="text-align: right;">${formatNumber(input.countPerHour)}</td>
                    </tr>
                `;
        inputTableHtmls.push(tableHtml);
      }
      let totalOuputAsk = 0,
        totalOuputBid = 0;
      let totalOutputMedianAsk = 0,
        totalOutputMedianBid = 0;
      const onputTableHtmls = [];
      for (const output of data.outputItems) {
        totalOuputAsk += output.ask * output.count;
        totalOuputBid += output.bid * output.count;
        totalOutputMedianAsk += (output.medianAsk ?? 0) * output.count;
        totalOutputMedianBid += (output.medianBid ?? 0) * output.count;
        const tableHtml = `
                    <tr>
                        <td style="text-align: left;">${output.name}</td>
                        <td style="text-align: right;">${formatNumber(output.count)}</td>
                        <td style="text-align: right;">${formatNumber(output.ask)}</td>
                        <td style="text-align: left;">${generateDiffInfo(output, "ask")}</td>
                        <td style="text-align: right;">${formatNumber(output.bid)}</td>
                        <td style="text-align: left;">${generateDiffInfo(output, "bid")}</td>
                        <td style="text-align: right;">${formatNumber(output.countPerHour)}</td>
                    </tr>
                `;
        onputTableHtmls.push(tableHtml);
      }

      // 格式化tooltip内容
      const content = `
        <div class="ItemTooltipText_name__2JAHA"><span>${data.actionNames}</span></div>

            <div style="color: #804600; font-size: 10px;">
                <table style="width:100%; border-collapse: collapse;">
                    <tbody>
                        <tr style="border-bottom: 1px solid #804600;">
                            <th style="text-align: left;">原料</th>
                            <th style="text-align: center;">数量</th>
                            <th style="text-align: right;">出售价</th>
                            <th style="text-align: left;"></th>
                            <th style="text-align: right;">收购价</th>
                            <th style="text-align: left;"></th>
                            <th style="text-align: right;">数量/小时</th>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: left;"><b>合计</b></td>
                            <td style="text-align: right;"><b>/</b></td>
                            <td style="text-align: right;"><b>${formatNumber(totalInputAsk)}</b></td>
                            <th style="text-align: left;">${generateDiffInfo({
    ask: totalInputAsk,
    medianAsk: totalInputMedianAsk
  }, "ask")}</th>
                            <td style="text-align: right;"><b>${formatNumber(totalInputBid)}</b></td>
                            <th style="text-align: left;">${generateDiffInfo({
    bid: totalInputBid,
    medianBid: totalInputMedianBid
  }, "bid")}</th>
                            <td style="text-align: right;"><b>/</b></td>
                        </tr>
                        ${inputTableHtmls.join('\n')}
                    </tbody>
                </table>
            </div>
            <div><strong>每小时支出:</strong> ${formatNumber(data.expendPerHour)}</div>
            <div style="color: #804600; font-size: 10px;">
                <table style="width:100%; border-collapse: collapse;">
                    <tbody>
                        <tr style="border-bottom: 1px solid #804600;">
                            <th style="text-align: left;">产出</th>
                            <th style="text-align: center;">数量</th>
                            <th style="text-align: right;">出售价</th>
                            <th style="text-align: left;"></th>
                            <th style="text-align: right;">收购价</th>
                            <th style="text-align: left;"></th>
                            <th style="text-align: right;">数量/小时</th>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: left;"><b>合计</b></td>
                            <td style="text-align: right;"><b>/</b></td>
                            <td style="text-align: right;"><b>${formatNumber(totalOuputAsk)}</b></td>
                            <th style="text-align: left;">${generateDiffInfo({
    ask: totalOuputAsk,
    medianAsk: totalOutputMedianAsk
  }, "ask")}</th>
                            <td style="text-align: right;"><b>${formatNumber(totalOuputBid)}</b></td>
                            <th style="text-align: left;">${generateDiffInfo({
    bid: totalOuputBid,
    medianBid: totalOutputMedianBid
  }, "bid")}</th>
                            <td style="text-align: right;"><b>/</b></td>
                        </tr>
                        ${onputTableHtmls.join('\n')}
                    </tbody>
                </table>
            </div>
            <div><strong>每小时收入(税后):</strong> ${formatNumber(data.outputPerHour.bid)}</div>
            <div style="color: #804600; font-size: 10px;">
                <table style="width:100%; border-collapse: collapse;">
                    <tbody>
                        <tr style="border-bottom: 1px solid #804600;">
                            <th style="text-align: right;">类型</th>
                            <th style="text-align: right;">速度</th>
                            <th style="text-align: right;">效率</th>
                            <th style="text-align: right;">数量</th>
                            <th style="text-align: right;">经验</th>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: right;"><b>社区</b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.communityBuff.action_speed)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.communityBuff.efficiency)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.communityBuff.gathering)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.communityBuff.wisdom)} </b></td>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: right;"><b>茶</b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.teaBuffs.action_speed)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.teaBuffs.efficiency)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.teaBuffs.gathering)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.teaBuffs.wisdom)} </b></td>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: right;"><b>装备</b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.equipmentBuff.action_speed)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.equipmentBuff.efficiency)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.equipmentBuff.gathering)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.equipmentBuff.wisdom)} </b></td>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: right;"><b>等级</b></td>
                            <td style="text-align: right;"><b> - </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.levelEffBuff)} </b></td>
                            <td style="text-align: right;"><b> - </b></td>
                            <td style="text-align: right;"><b> - </b></td>
                        </tr>
                        <tr style="border-bottom: 1px solid #804600;">
                            <td style="text-align: right;"><b>房子</b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.houseBuff.action_speed)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.houseBuff.efficiency)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.houseBuff.gathering)} </b></td>
                            <td style="text-align: right;"><b> ${formatPercent(data.houseBuff.wisdom)} </b></td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <div>每小时动作: ${data.actionPerHour.toFixed(2)}次</div>
            <div>茶减少消耗: ${data.teaBuffs.artisan.toFixed(2)}%</div>
            <div><strong>每小时利润(税后):</strong> ${formatNumber(data.profitPerHour)}</div>
        `;
      return content;
    }

    async function waitForRightPannel() {
      if (!globals.freshnessMarketJson?.market) {
        setTimeout(waitForRightPannel, 1000);
        return;
      }
      const targetNodes = document.querySelectorAll("div.CharacterManagement_tabsComponentContainer__3oI5G");
      targetNodes.forEach(container => {
        if (container.dataset.processed) return;

        // 添加收益标签按钮
        const tabsContainer = container.querySelector('div.MuiTabs-flexContainer');
        const newTabButton = document.createElement('button');
        newTabButton.className = 'MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary css-1q2h7u5';
        newTabButton.innerHTML = `<span class="MuiBadge-root TabsComponent_badge__1Du26 css-1rzb3uu">收益<span class="MuiBadge-badge MuiBadge-standard MuiBadge-invisible MuiBadge-anchorOriginTopRight MuiBadge-anchorOriginTopRightRectangular MuiBadge-overlapRectangular MuiBadge-colorWarning css-dpce5z"></span></span><span class="MuiTouchRipple-root css-w0pj6f"></span>`;
        newTabButton.classList.add('income-tab');
        tabsContainer.appendChild(newTabButton);

        // 创建收益面板
        const tabPanelsContainer = container.querySelector('div.TabsComponent_tabPanelsContainer__26mzo');
        const newPanel = document.createElement('div');
        newPanel.className = 'TabPanel_tabPanel__tXMJF TabPanel_hidden__26UM3 income-panel';
        newPanel.innerHTML = `
            <div class="Inventory_inventory__17CH2 profit-pannel">
                <h3>生产收益详情</h3>
                <span style="color: green; font-size: 0.8em; margin-left: 10px;">数据更新于: ${formatDuration(Date.now() - globals.freshnessMarketJson.time * 1000)}</span>
                <div class="Inventory_items__6SXv0 script_buildScore_added script_invSort_added">
                ${GenerateDom(globals.freshnessMarketJson)}
                </div>
            </div>
        `;
        tabPanelsContainer.appendChild(newPanel);
        container.dataset.processed = "true";
        setupTabSwitching(newTabButton, newPanel, tabPanelsContainer, container);
        createTooltip();
        setupClickActions();

        // Testing only
        setInterval(() => refreshProfitPanel(), 1000);
      });

      // Check if income panel is missing
      const incomePanelMissing = document.querySelectorAll(".TabPanel_tabPanel__tXMJF.TabPanel_hidden__26UM3.income-panel").length === 0;
      if (incomePanelMissing) {
        setTimeout(waitForRightPannel, 1000);
      }
    }
    function setupTabSwitching(newTabButton, newPanel, tabPanelsContainer, container) {
      newTabButton.addEventListener('click', () => {
        container.querySelectorAll('.MuiTab-root').forEach(btn => btn.classList.remove('Mui-selected'));
        newTabButton.classList.add('Mui-selected');
        tabPanelsContainer.querySelectorAll('.TabPanel_tabPanel__tXMJF').forEach(panel => {
          panel.classList.add('TabPanel_hidden__26UM3');
        });
        newPanel.classList.remove('TabPanel_hidden__26UM3');
      });
      container.querySelectorAll('.MuiTab-root:not(:last-child)').forEach(btn => {
        btn.addEventListener('click', () => {
          newPanel.classList.add('TabPanel_hidden__26UM3');
          newTabButton.classList.remove('Mui-selected');

          // 添加选中状态并显示原标签面板
          btn.classList.add('Mui-selected');
          const tabIndex = Array.from(container.querySelectorAll('.MuiTab-root:not(:last-child)')).indexOf(btn);
          tabPanelsContainer.querySelectorAll('.TabPanel_tabPanel__tXMJF:not(.income-panel)').forEach((panel, index) => {
            panel.classList.toggle('TabPanel_hidden__26UM3', index !== tabIndex);
          });
        });
      });
    }
    function setupClickActions() {
      document.addEventListener('click', e => {
        const itemContainer = e.target.closest('.Item_item__2De2O');
        if (!itemContainer) return;
        const tooltipData = itemContainer.dataset.tooltip;
        if (!tooltipData) return;
        try {
          const data = JSON.parse(tooltipData);
          if (data?.actionHrid && getMwiObj()?.game?.handleGoToAction) {
            getMwiObj().game.handleGoToAction(data.actionHrid);
          }
        } catch (e) {
          console.error('Click action error:', e);
        }
      });
    }
    let profitRefreshTime = new Date();
    function refreshProfitPanel(force = false) {
      if (!globals.freshnessMarketJson?.market) return;
      const inventoryPanels = document.querySelectorAll('.Inventory_inventory__17CH2.profit-pannel');
      inventoryPanels.forEach(panel => {
        const timeSpan = panel.querySelector('span');
        if (timeSpan) {
          timeSpan.textContent = `数据更新于:${getDuration(new Date(globals.freshnessMarketJson.time * 1000))},收益刷新于:${getDuration(profitRefreshTime)},mooket${mooketStatus()},${getMwiObj()?.coreMarket ? "支持" : "不支持"}实时价格`;
        }
        if (force || globals.hasMarketItemUpdate) {
          const itemsContainer = panel.querySelector('.Inventory_items__6SXv0');
          if (itemsContainer) {
            itemsContainer.innerHTML = GenerateDom(globals.freshnessMarketJson);
            profitRefreshTime = new Date();
            globals.hasMarketItemUpdate = false;
          }
        }
      });
    }

    const supportActionType = ["/action_types/milking", "/action_types/foraging", "/action_types/woodcutting", "/action_types/cheesesmithing", "/action_types/crafting", "/action_types/tailoring", "/action_types/cooking", "/action_types/brewing"
    // "/action_types/alchemy",
    ];
    function LostTrackerExpectEstimate() {
      setTimeout(() => {
        const lootLogList = document.querySelectorAll('.LootLogPanel_actionLoots__3oTid .LootLogPanel_actionLoot__32gl_');
        if (!lootLogList.length || !Array.isArray(globals.lootLog)) return;
        const lootLogData = [...globals.lootLog].reverse();
        lootLogList.forEach((lootElem, idx) => {
          const logData = lootLogData[idx];
          if (!logData) return;

          // 获取action数据
          const action = globals.initClientData_actionDetailMap[logData.actionHrid];
          if (!action) return;
          if (supportActionType.indexOf(action.type) === -1) return;

          // 计算预期收益
          const expected = ProfitCaculation(action, globals.medianMarketJson);

          // 计算实际收益
          let actualValue = 0;
          Object.entries(logData.drops).forEach(([itemHash, count]) => {
            const itemHrid = itemHash.split("::")[0];
            const valuation = getItemValuation(itemHrid, globals.medianMarketJson);
            actualValue += (valuation?.bid || 0) * count;
          });
          actualValue *= 0.98;

          // 计算持续时间(小时)
          const startTime = new Date(logData.startTime);
          const endTime = new Date(logData.endTime);
          const durationHours = (endTime - startTime) / (1000 * 60 * 60);

          // 计算预期收益
          const expectedValue = expected.outputPerHour.bid * durationHours;
          const expendValue = expected.expendPerHour * durationHours;
          const profit = actualValue - expendValue;
          const diffValue = actualValue - expectedValue;
          const diffPercent = (diffValue / expectedValue * 100).toFixed(2);

          // 生成显示元素

          const content = diffPercent >= 0 ? `支出 ${formatNumber(expendValue)}   收入 ${formatNumber(actualValue)}   高于预期 ${Math.abs(diffPercent)}%   期望 ${formatNumber(expectedValue)}   多赚 ${formatNumber(Math.abs(diffValue))}   盈利 ${formatNumber(profit)}` : `支出 ${formatNumber(expendValue)}   收入 ${formatNumber(actualValue)}   低于预期 ${Math.abs(diffPercent)}%   期望 ${formatNumber(expectedValue)}   少赚 ${formatNumber(Math.abs(diffValue))}   盈利 ${formatNumber(profit)}`;
          const colorIntensity = Math.min(Math.abs(diffPercent) / 20, 1) * 0.3 + 0.7;
          const color = diffPercent >= 0 ? `rgb(${Math.floor(255 * colorIntensity)}, 0, 0)` // 红色表示高于预期
          : `rgb(0, ${Math.floor(255 * colorIntensity)}, 0)`; // 绿色表示低于预期
          const span = document.createElement('span');
          span.style.marginLeft = '8px';
          span.style.color = color;
          span.textContent = content;

          // 添加到动作名称后面
          const actionNameSpan = lootElem.querySelector('span:not(.loot-log-index)');
          if (actionNameSpan) {
            actionNameSpan.appendChild(span);
          }
        });
      }, 200);
    }

    function hookWS() {
      const dataProperty = Object.getOwnPropertyDescriptor(MessageEvent.prototype, "data");
      const oriGet = dataProperty.get;
      dataProperty.get = hookedGet;
      Object.defineProperty(MessageEvent.prototype, "data", dataProperty);
      function hookedGet() {
        const socket = this.currentTarget;
        if (!(socket instanceof WebSocket)) {
          return oriGet.call(this);
        }
        if (socket.url.indexOf("api.milkywayidle.com/ws") <= -1 && socket.url.indexOf("api-test.milkywayidle.com/ws") <= -1) {
          return oriGet.call(this);
        }
        const message = oriGet.call(this);
        Object.defineProperty(this, "data", {
          value: message
        }); // Anti-loop

        return handleMessage(message);
      }
    }
    function handleMessage(message) {
      try {
        let obj = JSON.parse(message);
        if (obj && obj.type === "init_character_data") {
          globals.initCharacterData_characterSkills = obj.characterSkills;
          globals.initCharacterData_actionTypeDrinkSlotsMap = obj.actionTypeDrinkSlotsMap;
          globals.initCharacterData_characterHouseRoomMap = obj.characterHouseRoomMap;
          globals.initCharacterData_characterItems = obj.characterItems;
          globals.initCharacterData_communityActionTypeBuffsMap = obj.communityActionTypeBuffsMap;
          globals.initCharacterData_consumableActionTypeBuffsMap = obj.consumableActionTypeBuffsMap;
          globals.initCharacterData_houseActionTypeBuffsMap = obj.houseActionTypeBuffsMap;
          globals.initCharacterData_equipmentActionTypeBuffsMap = obj.equipmentActionTypeBuffsMap;
          waitForRightPannel();
        } else if (obj && obj.type === "init_client_data") {
          globals.initClientData_actionDetailMap = obj.actionDetailMap;
          globals.initClientData_itemDetailMap = obj.itemDetailMap;
          globals.initClientData_openableLootDropMap = obj.openableLootDropMap;
        } else if (obj && obj.type === "community_buffs_updated") {
          globals.initCharacterData_communityActionTypeBuffsMap = obj.communityActionTypeBuffsMap;
          refreshProfitPanel(true);
        } else if (obj && obj.type === "market_item_order_books_updated") {
          globals.hasMarketItemUpdate = true;
          console.log({
            hasMarketItemUpdate: globals.hasMarketItemUpdate,
            obj
          });
        } else if (obj && obj.type === "loot_log_updated") {
          globals.lootLog = obj.lootLog;
          LostTrackerExpectEstimate();
        }
      } catch (err) {
        console.error(err);
      }
      return message;
    }
    globals.subscribe((key, value) => {
      if (key === "initClientData_actionDetailMap") {
        const processingMap = {};
        for (const [actionHrid, actionDetail] of Object.entries(value)) {
          const category = processingCategory[actionDetail.type];
          if (category && category == actionDetail.category) {
            const inputHrid = actionDetail.inputItems[0].itemHrid;
            processingMap[inputHrid] = actionDetail;
          }
        }
        globals.processingMap = processingMap;
      }
    });
    globals.isZHInGameSetting = localStorage.getItem("i18nextLng")?.toLowerCase()?.startsWith("zh"); // 获取游戏内设置语言

    if (localStorage.getItem("initClientData")) {
      const obj = JSON.parse(localStorage.getItem("initClientData"));
      globals.initClientData_actionDetailMap = obj.actionDetailMap;
      globals.initClientData_itemDetailMap = obj.itemDetailMap;
      globals.initClientData_openableLootDropMap = obj.openableLootDropMap;
    }
    hookWS();
    preFetchData();
    addEventListener('MWICoreItemPriceUpdated', () => {
      globals.hasMarketItemUpdate = true;
    });

})();