{ "schema": 1, "contract_revision": "p10.3-siltwake-deep-channels-r1", "source": { "region_catalog_path": "docs/content/REGION_CATALOG.md", "region_catalog_blob": "2ca533feb82bdedf6f141c6381319c3a56759ba3", "enemy_catalog_path": "docs/content/ENEMY_CATALOG.md", "enemy_catalog_blob": "cdf05128cfd1832835712e37c3eb200595983613", "equipment_catalog_path": "docs/content/EQUIPMENT_CATALOG.md", "equipment_catalog_blob": "3fd34ef951056b02749137f7bff2e66fb94b8375", "artifact_catalog_path": "docs/content/ARTIFACT_CATALOG.md", "artifact_catalog_blob": "009265f793e646a0ebb45d4018eb6c2d2c6e51e3", "profession_catalog_path": "docs/content/PROFESSION_CATALOG.md", "profession_catalog_blob": "61e05b21d61e8abca2dc78045c3f2d603ababf82", "economy_path": "docs/product/ECONOMY_AND_BALANCE.md", "economy_blob": "0cb57e7b44d983f61c27e8b60da43d4728950e33" }, "names_zh": { "RG-02": "淤潮沼泽", "CTR-R2-01": "淤潮初渡", "EQ-057": "慈护屏", "EQ-058": "低护围甲", "EQ-059": "反印盾", "EQ-060": "末邻甲", "EQ-061": "晨钟", "EQ-062": "屏息面具", "EQ-063": "回势剪", "EQ-064": "余拍环", "EN-R2-11": "渠网寡妇", "EN-R2-12": "水闸长老", "AR-011": "窄锋阵", "AR-012": "长列战团", "AR-015": "成对职责", "RO-R2-M05-Q0": "寡妇堤道", "RO-R2-M05-Q1": "缠丝湾口", "RO-R2-M05-Q2": "雾缚织渠", "RO-R2-M06-Q0": "缓潮水闸", "RO-R2-M06-Q1": "籽闸水流", "RO-R2-M06-Q2": "长老育池", "RO-R2-M07-Q0": "双闸泊台", "RO-R2-M07-Q1": "寡妇钟水", "RO-R2-M07-Q2": "溺丝水道" }, "region": { "id": "RG-02", "name": "Siltwake Fens", "preview": "Bind the restored ferry to one shared rule before linked positions and moving safe ground overlap.", "response_tags": ["linked_positions", "moving_safe_index", "run_rule"] }, "contract": { "id": "CTR-R2-01", "name": "First Siltwake Contract", "region_id": "RG-02", "slice_start_market": 5, "slice_end_market": 8, "boss_executable": false, "preview": "Clear Rounds 5 through 7, choose one shared Artifact rule and preserve the changed Run at Market 8.", "response_tags": ["three_round_arc", "artifact_choice", "first_promotion"] }, "equipment": [ { "id": "EQ-057", "name": "Mercy Screen", "fit": "guard; support", "class": "B", "effect": "A projectile that would defeat an ally leaves it at the survival floor and breaks this screen.", "tradeoff": "The protected ally cannot receive healing for one cadence.", "preview": "Prevent one projectile fall, but plan around the protected ally's temporary healing lock.", "response_tags": ["projectile_survival", "healing_lock", "linked_care"] }, { "id": "EQ-058", "name": "Lowguard Apron", "fit": "garb; center", "class": "B", "effect": "When the neighbor ahead is below half vitality, it receives the wearer's first positive Guard gain.", "tradeoff": "The wearer receives none of that Guard gain.", "preview": "Route one Guard gain forward and leave the center wearer without it.", "response_tags": ["directional_guard", "low_vitality", "neighbor_ahead"] }, { "id": "EQ-059", "name": "Counterseal Shield", "fit": "guard; any", "class": "B", "effect": "The first Mark applied to the wearer becomes Guard and removes that Mark.", "tradeoff": "The next Mark on the wearer lasts one cadence longer.", "preview": "Invert one Mark now while accepting a longer second Mark later.", "response_tags": ["mark_inversion", "guard_gain", "second_mark_risk"] }, { "id": "EQ-060", "name": "Last Neighbor Plate", "fit": "guard; any", "class": "B", "effect": "With exactly one living neighbor, both allies share the first direct hit.", "tradeoff": "The shared hit cannot be intercepted again.", "preview": "Build one durable pair to share a direct hit without another protection layer.", "response_tags": ["paired_duty", "shared_hit", "single_neighbor"] }, { "id": "EQ-061", "name": "Early Bell", "fit": "charm; any", "class": "B", "effect": "The wearer's first basic resolves one cadence earlier.", "tradeoff": "Its second basic resolves one cadence later.", "preview": "Take one early action when source focus matters more than the delayed follow-up.", "response_tags": ["early_action", "delayed_followup", "focus_timing"] }, { "id": "EQ-062", "name": "Held Breath Mask", "fit": "garb; slow", "class": "B", "effect": "The first wind-up survives one interrupt as a delay.", "tradeoff": "That delayed action loses every status rider.", "preview": "Preserve one important slow action while giving up its attached status effect.", "response_tags": ["windup_survival", "interrupt_delay", "status_rider_loss"] }, { "id": "EQ-063", "name": "Recovery Shears", "fit": "kit; any", "class": "B", "effect": "Defeating the current target removes the wearer's recovery time.", "tradeoff": "If the target survives, that recovery time doubles.", "preview": "Commit to a visible finishing threshold or accept doubled recovery.", "response_tags": ["finish_threshold", "recovery_cut", "survival_wager"] }, { "id": "EQ-064", "name": "Afterbeat Ring", "fit": "charm; tempo", "class": "B", "effect": "Acting immediately after a neighbor grants one local resource.", "tradeoff": "Acting before both neighbors Hinders the wearer.", "preview": "Order the wearer behind one neighbor to gain resource without taking an early Hindrance.", "response_tags": ["neighbor_timing", "local_resource", "early_hindrance"] } ], "enemies": [ { "id": "EN-R2-11", "name": "Channel Widow", "class": "elite", "rule": "Thread two allied positions; healing either transfers the same amount as damage to the other until the pair becomes adjacent.", "responses": "Swap the linked pair adjacent, or stagger healing until one linked target is safe.", "preview": "A visible thread turns healing into damage until its two positions become adjacent.", "response_tags": ["linked_positions", "adjacent_swap", "healing_backlash"] }, { "id": "EN-R2-12", "name": "Sluice Elder", "class": "elite", "rule": "Move the safe index forward each cadence; units outside it gain Wet, and three Wet causes a pull.", "responses": "Follow the safe index and cleanse before the third Wet stack; reverse the plan below half vitality.", "preview": "The numbered safe index moves every cadence and reverses below half vitality.", "response_tags": ["moving_safe_index", "wet_threshold", "direction_reversal"] } ], "artifacts": [ { "id": "AR-011", "name": "Narrow Vanguard", "rule": "Deploy one fewer Recruit; the foremost starts Guarded and receives forced-target priority.", "tradeoff": "Conflicts with AR-012; the lost footprint is shown before route commitment.", "conflict_id": "AR-012", "preview": "Trade one footprint for a protected, predictable front target.", "response_tags": ["capacity_down", "front_guard", "forced_target"] }, { "id": "AR-012", "name": "Long Company", "rule": "Deploy one additional Recruit up to the core cap; no Recruit starts with Guard.", "tradeoff": "Conflicts with AR-011; the expanded unguarded line is shown before commitment.", "conflict_id": "AR-011", "preview": "Gain one footprint when roster breadth outweighs opening protection.", "response_tags": ["capacity_up", "unguarded_start", "roster_breadth"] }, { "id": "AR-015", "name": "Paired Duties", "rule": "Prepare partitions the line into adjacent pairs; enable and Guard sharing inside each pair gain priority.", "tradeoff": "Conflicts with AR-016; sharing across pair boundaries is delayed one cadence.", "conflict_id": "AR-016", "preview": "Strengthen adjacent pairs while accepting slower support across pair boundaries.", "response_tags": ["adjacent_pairs", "guard_sharing", "cross_pair_delay"] } ], "artifact_draft": { "id": "AD-R2-M07-01", "offer_ids": ["AR-011", "AR-012", "AR-015"], "created_after_round": 6, "apply_from_market": 7 }, "routes": [ { "id": "RO-R2-M05-Q0", "name": "Widowbank Causeway", "market_index": 5, "round_index": 5, "risk": 0, "enemy_ids": ["EN-R2-11", "EN-R2-02"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-11"}, {"tick": 18, "enemy_id": "EN-R2-02"}], "reward_coin": 30, "recovery_coin": 9, "pressure": "Linked healing requires an adjacent swap before care.", "failure_cause": "Healing one separated target damaged its linked partner into danger.", "preview": "Bring the linked positions adjacent before committing the next heal.", "response_tags": ["adjacent_swap", "healing_backlash", "linked_care"] }, { "id": "RO-R2-M05-Q1", "name": "Threaded Inlet", "market_index": 5, "round_index": 5, "risk": 1, "enemy_ids": ["EN-R2-11", "EN-R2-09"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-11"}, {"tick": 12, "enemy_id": "EN-R2-09"}], "reward_coin": 37, "recovery_coin": 11, "pressure": "Widow link and Medic sustain compete for focus timing.", "failure_cause": "The line treated linked damage while the Medic restored the thread source.", "preview": "Focus one source before opening the linked care window.", "response_tags": ["focus_source", "linked_positions", "enemy_healing"] }, { "id": "RO-R2-M05-Q2", "name": "Fogbound Loom", "market_index": 5, "round_index": 5, "risk": 2, "enemy_ids": ["EN-R2-11", "EN-R2-10", "EN-R2-03"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-11"}, {"tick": 9, "enemy_id": "EN-R2-10"}, {"tick": 21, "enemy_id": "EN-R2-03"}], "reward_coin": 44, "recovery_coin": 13, "pressure": "A guarded center bait must not strand the linked pair.", "failure_cause": "The Fogjaw bait separated the Widow's linked positions before healing.", "preview": "Guard the center while preserving one adjacent linked pair.", "response_tags": ["center_protection", "adjacent_pairs", "reveal_window"] }, { "id": "RO-R2-M06-Q0", "name": "Patient Sluice", "market_index": 6, "round_index": 6, "risk": 0, "enemy_ids": ["EN-R2-12", "EN-R2-06"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-12"}, {"tick": 17, "enemy_id": "EN-R2-06"}], "reward_coin": 32, "recovery_coin": 10, "pressure": "Late cleanse must follow the disclosed moving safe index.", "failure_cause": "An early cleanse strengthened Hindrance before the third Wet stack pulled the line.", "preview": "Follow the index, then cleanse after the status midpoint and before three Wet.", "response_tags": ["delay_cleanse", "moving_safe_index", "wet_threshold"] }, { "id": "RO-R2-M06-Q1", "name": "Seedgate Current", "market_index": 6, "round_index": 6, "risk": 1, "enemy_ids": ["EN-R2-12", "EN-R2-08"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-12"}, {"tick": 10, "enemy_id": "EN-R2-08"}], "reward_coin": 39, "recovery_coin": 12, "pressure": "Seed movement must land inside the next safe index.", "failure_cause": "The seed escape crossed outside the new safe index and completed three Wet.", "preview": "Time the defeat so its escape step lands on the disclosed next index.", "response_tags": ["deliberate_movement", "moving_safe_index", "countdown"] }, { "id": "RO-R2-M06-Q2", "name": "Elder's Nursery", "market_index": 6, "round_index": 6, "risk": 2, "enemy_ids": ["EN-R2-12", "EN-R2-09", "EN-R2-04"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-12"}, {"tick": 8, "enemy_id": "EN-R2-09"}, {"tick": 20, "enemy_id": "EN-R2-04"}], "reward_coin": 46, "recovery_coin": 14, "pressure": "Safe-index reversal overlaps sustain and indexed mud.", "failure_cause": "The line followed the old direction through mud while the Medic sustained the Elder.", "preview": "Focus sustain before the Elder reverses the safe-index direction.", "response_tags": ["focus_source", "direction_reversal", "indexed_hazard"] }, { "id": "RO-R2-M07-Q0", "name": "Twin-Gate Mooring", "market_index": 7, "round_index": 7, "risk": 0, "enemy_ids": ["EN-R2-11", "EN-R2-12"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-11"}, {"tick": 16, "enemy_id": "EN-R2-12"}], "reward_coin": 34, "recovery_coin": 10, "pressure": "Adjacent pairs must follow a moving safe band.", "failure_cause": "Cross-pair care arrived after the linked pair left the safe index.", "preview": "Keep linked partners adjacent while the pair follows the safe index.", "response_tags": ["adjacent_pairs", "moving_safe_index", "guard_sharing"] }, { "id": "RO-R2-M07-Q1", "name": "Widow's Bellwater", "market_index": 7, "round_index": 7, "risk": 1, "enemy_ids": ["EN-R2-11", "EN-R2-12", "EN-R2-09"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-11"}, {"tick": 9, "enemy_id": "EN-R2-12"}, {"tick": 19, "enemy_id": "EN-R2-09"}], "reward_coin": 41, "recovery_coin": 13, "pressure": "Source focus must preserve the linked care window.", "failure_cause": "The Medic outlasted focus while linked healing echoed across an unsafe index.", "preview": "Interrupt sustain, then use the adjacent care window before the index moves.", "response_tags": ["focus_source", "linked_care", "moving_safe_index"] }, { "id": "RO-R2-M07-Q2", "name": "Drowned Threadway", "market_index": 7, "round_index": 7, "risk": 2, "enemy_ids": ["EN-R2-11", "EN-R2-12", "EN-R2-10"], "wave_order": [{"tick": 0, "enemy_id": "EN-R2-11"}, {"tick": 8, "enemy_id": "EN-R2-12"}, {"tick": 18, "enemy_id": "EN-R2-10"}], "reward_coin": 48, "recovery_coin": 15, "pressure": "Reveal, linked positions and safe-index movement overlap.", "failure_cause": "The reveal chase broke adjacency and left the center outside the reversed safe index.", "preview": "Move as one paired line and reserve a short-reach answer for the reveal.", "response_tags": ["deliberate_movement", "adjacent_pairs", "short_reach"] } ], "markets": [ { "market_index": 5, "round_index": 5, "cleared_rounds_before": 4, "line_capacity": 6, "offer_level": 2, "route_ids": ["RO-R2-M05-Q0", "RO-R2-M05-Q1", "RO-R2-M05-Q2"], "required_equipment_ids": ["EQ-057", "EQ-060"], "first_order_changer_id": "EN-R2-11", "milestone_disclosure": "linked_positions" }, { "market_index": 6, "round_index": 6, "cleared_rounds_before": 5, "line_capacity": 6, "offer_level": 2, "route_ids": ["RO-R2-M06-Q0", "RO-R2-M06-Q1", "RO-R2-M06-Q2"], "required_equipment_ids": ["EQ-061", "EQ-062"], "first_order_changer_id": "EN-R2-12", "milestone_disclosure": "artifact_after_victory" }, { "market_index": 7, "round_index": 7, "cleared_rounds_before": 6, "line_capacity": 7, "offer_level": 3, "route_ids": ["RO-R2-M07-Q0", "RO-R2-M07-Q1", "RO-R2-M07-Q2"], "required_equipment_ids": ["EQ-063", "EQ-064"], "first_order_changer_id": "EN-R2-12", "milestone_disclosure": "first_promotion" } ] }