跳转至

Ch99.2: Your own (time limit) quest

躺平


附錄 ‐‐ 製作自己的(期間限定)任務

讀完這篇文章,你也能夠自行新增任何出擊、演習或遠征任務。

要為 kcauto_custom 定義新任務,你需要提供:

  1. 任務資訊
  2. 任務需求
  3. 任務指定的 Noro6 標籤(若有需要)
  4. 任務優先度

這些由以下檔案處理:

  1. data/quests/kc3_quests_en.json
  2. data/quests/quests.json
  3. data/combat/map_enum.json
  4. data/quests/<類型>_quest_priority.json

任務資訊 -- kc3_quests_en

如名稱所示,此檔案來自 KC3。
你可以從 這裡 取得檔案並直接複製貼上。
此外,kcauto_custom 在 tool/quest/update_kc3_quests_en.py 中也提供了工具,執行該腳本即可自動更新檔案。
請注意,KC3 開發者更新最新任務通常需要幾天時間。

此檔案提供 CUI 使用的基本任務資訊以及後續需要的任務 ID。

image

任務資訊來自 KC3


任務需求 -- quests.json

接下來在 quests.json 中定義任務,此檔案包含任務的詳細內容。
若需要範例,請參考 data/quests/quests.json 中的其他任務。

  "1234B1": {                      # 任務名稱(參考 kc3_quests_en)
    "id": 999,                     # 任務 ID(參考 kc3_quests_en)
    "type": "weekly",              # 任務類型(有效值:"daily", "weekly", "monthly", "other")
    "recommended_map": [           # (出擊專用) 若 POI 無提供指示,kcauto-custom 將出擊的地圖
      "1234B1-1-1",
      "1234B1-1-2",
      "1234B1-1-3"
    ], 
    "expedition_context": [        # (遠征專用) 若 POI 無提供指示,kcauto-custom 將前往的遠征
      29,
      30,
      131,
      133
    ],
    "intervals": [1, 0, 0],        # (選填) 任務完成檢查間隔(順序:[出擊, 演習, 遠征])
    "fleet_composition": {...}     # (選填) 任務的艦隊需求
  },

a. 任務名稱

透過選擇任務並查看 KC3 面板即可找到任務名稱。
例如,以下期間限定演習任務為 2606C1 (不含 L)。

poi-plugin-quest.png

find_quest_name.png

b. 任務 ID

開啟 data/quests/kc3_quests_en.json 並搜尋上述任務名稱,即可找到任務 ID。以 "2507C1" 為例:

...
    "380": {       <= 目標任務 ID
        "code": "2507C1",
        "name": "Weekly [Time-limited] Landing Fleet Escort Exercises!",
        "desc": "Secure 3 A-Rank+ victories in Exercises within the same day using either an LHA and 2 DE OR 3 DE, and up to 3 additional ships.",
        "memo": "\u27a3Rewards:\n\u00B6First choice: Either three Buckets OR a Screw OR a Combat Ration\n\u00B6Second choice: Either three Development Materials OR two Type 94 Depth Charge Projectors OR a Type 3 Depth Charge Projector"
    },
...

c. 任務類型

任務所屬的分頁。有效值為 "daily"、"weekly"、"monthly"、"other"。

d. 出擊地圖 (出擊任務專用)

顯示 kcauto-custom 將出擊的地圖。命名規則很簡單,即 "<任務名稱>-<地圖>"。
例如,任務 2509B5 要求在 4-2、4-3、4-4 取得 S 勝利:

    "recommended_map": [
      "2509B5-4-2",
      "2509B5-4-3",
      "2509B5-4-4"
    ]

e. 遠征地圖 (遠征任務專用)

顯示 kcauto-custom 將前往的遠征 ID。
A1、B2 等遠征 ID 可在 kcauto/kca_enums/expeditions.py 中查詢。
例如,任務 Dy7 要求遠征 29、30、131、133:

    "expedition_context": [      
      29,
      30,
      131,
      133
    ]

f. 艦隊構成 (選填,不推)

此項顯示任務的艦隊需求。
若當前艦隊不符合此處要求,kcauto_custom 就不會承接此任務,這樣能更有效利用任務欄位。

不過設定較為複雜,個人認為對於期間限定任務並不划算。詳細定義可參閱 reference/fleet_composition_documentation.md。

    "fleet_composition": {...}     #(選填) 任務的艦隊需求

Noro6 標籤 -- map_enum.json (出擊任務專用)

此步驟僅在任務為出擊任務,且該任務需要專屬 Noro6 設定檔時才需要。

map_enum.json 包含 kcauto_custom 將處理的所有出擊地圖,這也是所有出擊用 Noro6 設定檔的名稱標籤。
若在上述的 recommended_map 中加入了地圖,也需要在此處新增。

命名規則簡單:
"W<地圖>-<任務名稱>" : "<任務名稱>-<地圖>"
例如:

    "W2_2_A": "B-2-2-A",
    "W6_4": "B-6-4",
    "W2_5_Bm1": "Bm1-2-5",
    "W4-4-2509B5": "2509B5-4-4",
    "W2-3-2412B5": "2412B5-2-3",

任務優先度 (quest_priority)

最後是 data/quests/<類型>_quest_priority.json。定義了 kcauto-costom 任務優先度列表:

優先度依降冪排序。("2412B5" > "2509B5" > "Bm1" ... 等)

{
  "time_limited": [
    "2412B5",
    "2509B5"
  ],
  "exact_ship_and_map": [
    "Bm1",
    ...
    "By15"
  ],
  "exact_ship_type_and_map": [
    "Bm3",
    ...
    "By11"
  ],
  "any_ship_with_exact_map": [
    "Bm8",
    ...
    "Bq10"
  ],
  "exact_area": [
    "Bw6",
    "Bw7"
  ],
  "exact_enemy_type": [
    "Bw2",
    ...
    "Bw3"
  ],
  "any_sortie": [
    "Bd1",
    ...
    "Bw1"
  ],
  "low_priority": [
    "Bd7"
  ]
...