통합 전략 프로토콜
약 2094 단어약 7 분
팁
JSON 파일은 주석을 지원하지 않습니다. 본문의 주석은 설명을 위한 것이므로 직접 복사하여 사용하지 마세요.
통합 전략 리소스 저장 위치
resource/roguelike/하위에 테마별로 통합 전략 리소스를 저장합니다.- 테마 폴더:
Phantom/팬텀 & 크림슨 솔리테어,Mizuki/미즈키 & 카이룰라 아버,Sami/탐험가의 은빛 서리 끝자락,Sarkaz/살카즈의 영겁 기담,JieGarden/쉐이의 기이한 계원,BlackFlow/블랙 플로우autopilot/에는 각 스테이지의 작전 json 파일이 위치합니다.스테이지명.json해당 스테이지의 작전 로직
encounter/에는 우연한 만남(전투 및 상점을 제외한 모든 노드) 이벤트 로직이 위치합니다.default.json레벨링 모드deposit.json오리지늄각뿔 파밍 모드
recruitment.json오퍼레이터 모집 로직shopping.json상점 소장품 구매 로직
- 테마 폴더:
특별히
Sami/폴더 하위에는:foldartal.json사미 통합 전략의 암호판 사용 로직collapsal_paradigms.json사미 통합 전략의 붕괴 패러다임 유형autopilot/스테이지명_collapse.json작전 로직 (붕괴 패러다임 파밍 모드)encounter/collapse.json붕괴 패러다임 파밍 모드의 우연한 만남 로직
Sarkaz/폴더 하위에는:fragments.json살카즈 통합 전략의 구상(Thought) 기본 정보map.json살카즈 통합 전략의 청사진 이동을 위한 템플릿 이미지 정보
JieGarden/폴더 하위에는:coppers.json주화의 기본 정보 및 줍기/교체 로직map.json쉐이의 기이한 계원 통합 전략의 맵 노드 템플릿 이미지 정보
BlackFlow/폴더 하위에는:strategy.json블랙 플로우 통합 전략의 상위 라우팅 전략 설정node_execution.json블랙 플로우 통합 전략의 노드 유형 처리 라우팅 설정map_perception/블랙 플로우 통합 전략의 맵 인식 시각 리소스scrap_market.json블랙 플로우 통합 전략의 신비한 상인(秘境行商) 데이터(자연물 가격, 새로고침 비용 및 육성 보유 한도)map_templates.json블랙 플로우 통합 전략의 맵 레이아웃 템플릿
통합 전략 1단계 — 오퍼레이터 모집
resource/roguelike/테마명/recruitment.json은 오퍼레이터 모집 로직을 기술합니다. tools/RoguelikeRecruitmentTool 및 tools/RoguelikeOperSearch 보조 도구를 사용하여 확인 및 작성할 수 있습니다.
{
"theme": "Phantom", // 통합 전략 테마 (여기서는 팬텀)
"priority": [ // 그룹별 우선순위 (순서대로)
...
],
"team_complete_condition": [ // 편성 완성도 검사
...
]
}오퍼레이터 분류
여러분의 게임 이해도에 따라 오퍼레이터를 다양한 그룹 (관련 개념은 자동지휘 프로토콜 참조)으로 분류하세요.
주의
동일 그룹 내의 오퍼레이터와 소환물은 배치 방식이 일치해야 하며(모두 지상 또는 모두 언덕), 공격 범위가 최대한 비슷해야 합니다.
동일한 오퍼레이터나 소환물이라도 사용법에 따라 다른 그룹으로 분류할 수 있습니다.
기존에 존재하는 그룹 이름은 수정하지 마세요. MAA 업데이트 시 이전 버전의 리소스가 작동하지 않을 수 있습니다.
가급적 그룹을 새로 추가하지 말고, 새로 추가하는 오퍼레이터를 사용 용도에 맞춰 기존 그룹에 포함시키세요.
팁
기본적으로 1차 정예화 55레벨 이상의 오퍼레이터만 모집합니다.
{
"theme": "Phantom",
"priority": [ // 그룹, 순서대로
{
"name": "棘刺", // 그룹명 (이 그룹의 이름은 '쏜즈')
"opers": [ // 그룹에 포함된 오퍼레이터, 순서대로 배치 우선순위를 나타냄
// (예: 이 그룹의 오퍼레이터를 배치해야 할 때, 쏜즈가 있는지 먼저 확인하고 있으면 배치, 없으면 혼을 확인)
{
"name": "棘刺", // 오퍼레이터 이름
"skill": 3,
"skill_usage": 1,
...
},
{
"name": "号角",
"skill": 2,
"skill_usage": 1,
...
}
]
},
"team_complete_condition": [
...
]
]
}기존 그룹 소개
사미 통합 전략 리소스를 예로 들면, 오퍼레이터를 다음과 같이 분류했습니다.
그룹 주요 고려 사항 주요 직군 오퍼레이터 예시 地面阻挡 전선 유지 및 일반 적 처리 디펜더, 가드 사리아, 마운틴, 라 플루마, Mon3tr, 링과 씬의 소환물, 스팟, 예비 디펜더 地面单切/处决者 엘리트 적 1:1 대처 스페셜리스트-처형자 수르트, 텍사스 디 오메르토사, 키린 R 야토, Mon3tr, 레드 高台 C 기본 공격 및 결전 화력 스나이퍼, 캐스터 위셔델, 로고스, 첸 더 홀룽데이, 골든글로우 高台输出 대공 및 기본 공격 화력 스나이퍼, 캐스터 아르케토, 엑시아, 크루스, 스튜어드 速狙 물리 피해, 표준 사거리 스나이퍼 엘라, 엑시아, 케이퍼, 크루스 术师 마법 피해, 표준 사거리 캐스터-코어 캐스터 에이야퍄들라, 로고스, 스튜어드 辅助 후방 1칸 공격 가능 서포터 비르투오사, 스즈란, 케이퍼, 오키드 狙击 긴 사거리의 언덕 스나이퍼-투척수/공성사수 위셔델, 티폰, 로사 奶 치료 능력 메딕, 서포터 켈시, 스카디 더 커럽팅 하트, 히비스커스, 안셀 单奶 공격 범위 깊이 >= 4 메딕 켈시, 리드 더 플레임 섀도우, 에이야퍄들라 더 크비트 아스카, 히비스커스, 안셀 群奶 공격 범위 깊이 < 4, 후방 치료 가능 메딕, 서포터 나이팅게일, 프틸롭시스, 스카디 더 커럽팅 하트 回费 코스트 수급 뱅가드 머틀, 이네스, 팽, 바닐라 地刺 저지 불가, 피해 또는 감속 스페셜리스트-매복자 언펙터, 아스카론, 맨티코어 地面远程 지상 사거리 김, 디펜더 뒤 공격 지원 가드-교관/로드 혼, 팔라스, 쏜즈, 실버애쉬 领主 지상 공격 범위 깊이 > 4, 대공 가능 디펜더-포트리스, 가드-로드 쏜즈, 실버애쉬, 츄바이 盾法 짧은 사거리, 방어 능력 보유 캐스터-진법 캐스터 린, 카넬리안 炮灰 탄환 흡수, 재배치 스페셜리스트, 소환물 Mon3tr, 레드, 머틀, 예비 오퍼레이터 大龙 전방 방어, 합체 편의성 소환물 링의 소환물, 제시카 더 리버레이티드의 방패 补给站 메인 공격수 SP 보조 소환물 보급기, 메카 캐스터 소환물 无人机 언덕/지상 무시 치료 소환물 소환물 스카디의 해사, 사일런스의 드론 支援陷阱 지상 배치 폭발물 소환물 W의 지뢰, 도로시의 함정 障碍物 배치 수 미소모, 어그로/저지 소환물 새장, 장애물 其他地面 우선순위 낮은 지상 유닛 밀치기, 1저지 뱅가드, 소드마스터 백파이프, 크루아상 高台预备/其他高台 우선순위 낮은 언덕 유닛 광역 캐스터, 체인 캐스터, 전술가 오키드, 예비 오퍼레이터 팁
地面阻挡은 오퍼레이터의 종합적인 방어 능력을 고려합니다.奶는 종합적인 치유 능력을 고려합니다. 단일 메딕(4칸)이나 멀티 메딕(후방 커버 가능)의 공격 범위 구분이 필요한 경우 별도로 분류하여 사용해 주세요.高台输出는 순수 화력을 고려합니다. 공격 타입이나 범위 제한이 필요한 경우速狙,术师,辅助,盾法등을 별도로 사용해 주세요.함정류 소환물은 종류가 많으므로
支援陷阱그룹에 넣지 말고 MAA가 자동으로 배치하도록 하는 것이 효율적입니다.특수 조작이 필요한 그룹
위의 일반적인 분류 외에도 특정 오퍼레이터나 직군을 정교하게 조작해야 할 때가 있습니다. 예를 들어:
그룹 포함 오퍼레이터 주요 특징 益达 위셔델 언덕 딜러, 우선 배치하여 부담 경감 棘刺 쏜즈, 혼 지상 원거리 딜러, 팬텀 통합 전략 등에서 매우 좋은 자리가 있음 召唤类 켈시, 링, 씬 자체 저지 가능, 맵에 따라 우선 배치 필요, 소환물을 저지나 미끼로 활용 情报官 칸타빌레, 이네스 코스트 회복, 측면 딜링, 암살 모두 가능 浊心斯卡蒂 스카디 더 커럽팅 하트 저압 상황 힐링 준수, 특수 범위, 특정 맵에서 좋은 자리가 있음 焰苇 리드 더 플레임 섀도우 사미 통합 전략 권장 스타팅, 치유/공격 겸업, 특정 맵에서 좋은 자리가 있음 玛恩纳 무에나, 실버애쉬 지상 광역 결전 병기, 보스전 등에서 배치 史尔特尔 수르트 2차 정예화 후 3스킬 고정 사용 시 저지 능력 거의 없음, 배치 우선순위 매우 낮음 骰子 주사위 미즈키 통합 전략의 주사위는 별도 조작 필요
주의
현재 식별되지 않은 지상 오퍼레이터는 뒤에서 두 번째 그룹(其他地面) 뒤에, 식별되지 않은 언덕 오퍼레이터는 마지막 그룹(高台预备/其他高台) 뒤에 자동으로 추가됩니다.
팁
새로 추가된 오퍼레이터는 각 테마의 recruitment.json에 수동으로 추가해야 합니다. 개발자가 모든 오퍼레이터를 즉시 추가하지 못할 수 있습니다.
누락된 것을 발견하면 Issue를 제보하거나 직접 PR을 보내주세요.
편성 프리셋 — 편성 완성도 검사
클리어 또는 고층 등반을 위해 필수적인 핵심 멤버는 누구일까요? 몇 명이 필요할까요?
주의
현재 스크립트의 모집 로직은 '편성 완성도'를 만족하기 전까지는 희망 소모 0인 오퍼레이터(주로 3성) 와 KEY 오퍼레이터(화이트리스트) 만 모집하며, 고등급 KEY 오퍼레이터를 위해 희망을 아낍니다.
(현재 구현 방식: 고성능 오퍼레이터와 3성에게 수동으로 KEY 태그 부여, 모집 시 KEY 오퍼레이터만 선택) (TODO: 0 희망 오퍼레이터 자동 식별)
따라서 완성도 총합을 적절하게 설정해야 합니다. 필요한 총 오퍼레이터 수(핵심 1, 지상 2, 힐러 1-2, 언덕 1 등)는 4~8명 정도가 적당합니다.
편성 완성도를 만족한 후에는 모집권을 얻을 때마다 오퍼레이터 점수와 2차 정예화 우선순위에 따라 모집합니다. 희망 자원 손실을 방지하려면 원하지 않는 오퍼레이터는 점수를 설정하지 않거나 동종 3성/예비대원보다 낮게 설정해 주세요.
(확실히 원하는 오퍼레이터나 절대 원하지 않는 오퍼레이터는 점수를 극단적으로 높거나 낮게 설정할 수 있습니다. Sami의 止颂(레싱) 설정 참조)
작전 편성 시, 오퍼레이터 선택 화면의 기본 정렬(위->아래, 왼쪽->오른쪽) 순서대로 읽어들입니다.
이 순서에 기반해, 편성 완성도 조건을 만족하는 오퍼레이터 중 먼저 나온 순서대로 앞쪽에 배치하고, 조건이 충족되거나 대상이 없을 때까지 반복합니다.
그 후 예비 오퍼레이터를 맨 뒤로 보내고, 새로운 순서대로 선택합니다.
임시 모집 6성은 편성 시 기본적으로 맨 앞에 위치하므로 실제 편성에서 포함되기 쉽습니다. (TODO: 사용 불가능한 1정예 임시 모집 오퍼레이터 제외)
뉴비 계정의 경우: 10회 모집 동안 KEY 오퍼레이터가 절반도 모이지 않으면 완성도 검사를 포기하고 점수대로 아무거나 모집합니다. 따라서 3성을 키우지 않은 뉴비 계정은 6성 2~3개와 예비대원만 잔뜩 들고 가는 경우가 생길 수 있습니다.
{
"theme": "Phantom", // 통합 전략 테마
"priority": [ // 그룹
...
],
"team_complete_condition": [ // 편성 완성도 검사
{ // 하나의 조건(condition) 그룹
"groups": [ // 어느 그룹의 오퍼레이터가 필요한가
"高台输出" // (여기서는 고대출력 그룹의 오퍼레이터 1명 필요)
],
"threshold": 1 // 필요한 수량
},
{ // 여러 조건 그룹 설정 가능
"groups": [
"棘刺", // (여기서는 쏜즈, 지상저지, 지상암살, 포회 그룹 중 합해서 2명 필요)
"地面阻挡",
"地面单切",
"炮灰"
],
"threshold": 2
},
{
"groups": [
"奶" // (여기서는 힐러 그룹 오퍼레이터 1명 필요)
],
"threshold": 1
}
...
]
}위험
한 오퍼레이터가 여러 그룹에 속해 있어도, 하나의 조건 그룹 내에서는 한 번만 카운트됩니다.
예: 쏜즈가 棘刺 그룹과 地面阻挡 그룹에 모두 속해 있을 때, 위 예시의 두 번째 조건 그룹에서 쏜즈는 1명으로만 계산됩니다.
하지만 서로 다른 조건 그룹 간에는 중복 카운트됩니다.
예: 리드 더 플레임 섀도우가 高台输出와 奶 그룹에 모두 속해 있다면, 첫 번째 조건과 세 번째 조건을 동시에 만족시키는 데 기여할 수 있습니다.
오퍼레이터 모집 파라미터 조정
그룹 내 오퍼레이터 순서는 작전 배치 시 선택 우선순위를 의미합니다.
임시 모집 오퍼레이터는 기본 점수에 +600점이 추가됩니다.
랜덤 승급(바로 2차 정예화) 오퍼레이터 점수는 모집 점수 + 2차 정예화 점수 합산으로 계산됩니다.
그룹 내 각 필드의 의미와 스크립트 로직
{ "theme": "Phantom", "priority": [ "name": "地面阻挡", // 그룹명 (여기서는 지상저지) "doc": "기준: 1저지(잡몹처리/유지력 마운틴보다 강함) > 마운틴 > 2저지(2저지 이상, 자가회복) > 스팟. 유지력이 스팟보다 낮으면 1저지나 미끼 그룹으로.", // "doc" 필드는 json 내부 주석용이며 프로그램 실행에 영향 없음 "opers": [ // 포함된 오퍼레이터 (순서 = 배치 우선순위) { "name": "百炼嘉维尔", // 오퍼레이터 이름 (가비알 디 인빈서블이 1순위. 지상 저지 그룹 배치 시 먼저 확인) "skill": 3, // 사용 스킬 (여기선 3스킬) "skill_usage": 2, // 스킬 사용 모드 (자동지휘 프로토콜 참조. 여기선 안 쓰면 기본값 1) // (0:안씀, 1:쿨마다, 2:x번만(skill_times), 3:미지원) "skill_times": 2, // 스킬 사용 횟수 (skill_usage가 2일 때) "alternate_skill": 2, // 지정 스킬 없을 때 대체 스킬 (6성 2차 정예화 전 등. 예: 3스킬 없으면 2스킬 사용) "alternate_skill_usage": 1, // 대체 스킬 사용 모드 (미구현) "alternate_skill_times": 1, // 대체 스킬 사용 횟수 (미구현) "recruit_priority": 900, // 모집 우선순위. 높을수록 먼저 모집. 900↑: 보이면 필수로 집음. 400↓: 핵심 오퍼 2차 정예화보다 낮음. // 임시 모집은 자동으로 +600 "promote_priority": 600, // 승급(2차 정예화) 우선순위. 900↑: 희망 있으면 바로 승급. 400↓: 3성 모집보다 낮음. // 팁: 모집 우선순위를 낮추고 승급 우선순위를 높이면, 임시 모집으로 떴을 때 승급을 잘 시켜줌. "is_key": true, // true: 핵심(KEY) 오퍼레이터. 편성 완성 전에는 KEY와 0희망만 모집. "is_start": true, // true: 스타팅 오퍼레이터. 파티에 스타팅 멤버 없으면 스타팅과 0희망만 모집. // UI의 스타팅 오퍼레이터 설정과 연동됨. 사용자가 수동 입력하면 강제로 start로 설정됨. "auto_retreat": 0, // 배치 후 n초 뒤 자동 철수. 0보다 클 때 작동. (특수/뱅가드용. 2배속 고려하여 지속시간/2 추천) "recruit_priority_when_team_full": 850, // 편성 완성 후 모집 우선순위 (기본값: 모집 우선순위 - 100) "promote_priority_when_team_full": 850, // 편성 완성 후 승급 우선순위 (기본값: 승급 우선순위 + 300) "recruit_priority_offsets": [ // 현재 편성에 따른 모집 우선순위 조정 { "groups": [ // 조건 그룹 (중복 오퍼레이터 없이 그룹별 카운트) "凯尔希", "地面阻挡", "棘刺" ], "is_less": false, // false: 이상(>=), true: 이하(<=). 기본값 false. "threshold": 2, // 기준 수량. 기본값 0. "offset": -300 // 조정값. 기본값 0. // (예: 켈시, 지상 저지, 쏜즈 그룹 합쳐서 2명 이상이면 가비알 디 인빈서블의 모집 우선순위 -300) } ] }, ... ], ], "team_complete_condition": [ ... ] }주의
recruit_priority_offsets의groups내 그룹들 간에 오퍼레이터가 중복되지 않도록 하세요.auto_retreat설정 시 작전 계획에서 별도로retreat_plan을 설정할 필요가 없습니다.오퍼레이터 및 그룹 추가
새로운 그룹을 추가한 뒤, 기존 그룹에서 오퍼레이터를 복사해오거나 고수들의 평가를 참고하여 점수를 수정하세요.
통합 전략 2단계 — 전투 로직
resource/roguelike/테마명/autopilot/스테이지명.json은 각 스테이지의 작전 전략을 기술합니다.
MAA 통합 전략 공용 전투 로직
(해당 스테이지의 작전 파일이 없을 때 적용됨)
타일 속성에 따른 기본 전투
MAA는 타일이 방어 지점인지 적 출현 지점인지, 언덕인지 지상인지, 배치 가능한지 등을 판단하여 기본 전투를 수행합니다.
MAA는 맵 이름이나 번호만으로 로직을 결정하며, 일반/긴급, 맵 변형, 암호판 사용 여부 등을 구분하지 않습니다.
MAA는 지도 상에서 확실하지 않은 정보(예:
사육장의 제단 위치,군중심리의 적 출현 방향 등)는 판단하지 않습니다.
따라서, 하나의 맵 이름에 대해 모든 변수를 커버할 수 있는 범용적인 로직을 구성해야 합니다.
MAA 공용 전략 — 입구 막기
지상 오퍼레이터는 방어 지점 타일 위(이유는 후술)나 주변에 우선 배치하며, 적이 오는 방향(자동 계산)을 바라봅니다.
지상을 먼저 배치하고 힐러와 언덕을 배치합니다. 방어 지점을 중심으로 원형으로 퍼져나가며 배치합니다.
배치 가능한 모든 것(오퍼레이터, 소환물, 지원 도구 등)을 계속해서 배치합니다.
기본 전투 전략 최적화
방어 지점 대체
오퍼레이터를 무작정 방어 지점 앞에 쌓는 건 좋지 않습니다. 어떤 맵은 특정 길목을 막는 게 훨씬 효율적일 수 있습니다. 또한 방어 지점이 여러 개일 때 MAA가 엉뚱한 곳을 막을 수도 있습니다.
이때 지도 위키를 켜고,
설정에서좌표 표시를MAA로 바꾼 뒤 지휘해 봅시다.우선 방어해야 할 좌표와 방향을 찾아 json의
"replacement_home"에 적습니다.{ "stage_name": "蓄水池", // 스테이지명 "replacement_home": [ // 중요 방어 지점, 최소 1개 필수 { "location": [ // 맵 사이트에서 확인한 좌표 6, 4 ], "direction_Doc1": "우선 방향. 절대적인 건 아님 (알고리즘 판단)", "direction_Doc2": "생략 시 기본값 none (알고리즘이 알아서 판단)", "direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右", "direction": "left" // (6,4 좌표에 우선 배치하고 왼쪽을 보게 함. 주변 자동 배치도 왼쪽을 보려고 노력함) } ],팁
replacement_home은deploy_plan이 모두 끝났는데도 대기 중인 오퍼레이터가 있을 때 작동합니다. 로직은 공용 전략과 같습니다.배치 금지 구역
화염구가 지나가는 길, 보스의 바로 발밑, 딜 각이 안 나오는 곳 등 배치하면 안 되는 곳을
"blacklist_location"으로 지정합니다.주의
여기에 지정된 타일은 뒤에서 설명할
deploy_plan에 적혀 있어도 배치가 불가능합니다.... "blacklist_location_Doc": "예시입니다. 실제 저수지 맵에서 여기를 금지하라는 뜻은 아님", "blacklist_location": [ // 배치 금지 좌표 [ 0, 0 ], [ 1, 1 ] ],기타 맵 전략
예: 미즈키 통합 전략에서 방어 지점에 적이 들어오면 주사위를 굴릴 것인가?
"not_use_dice_Doc": "방어 지점 라이프 감소 시 주사위 사용 안 함 여부. 기본값 false (사용함)", "not_use_dice": false,
커스텀 작전 전략
"deploy_plan"(배치)과 "retreat_plan"(철수)을 사용하여 정교한 작전을 짭니다.
커스텀 전략은 공용 전략보다 우선합니다. 커스텀 전략이 모두 실행된 후 남은 오퍼레이터는 공용 전략에 따라 배치됩니다.
모든 전략을 다 작성할 필요는 없으며, 핵심적인 부분만 작성하고 나머지는 MAA에게 맡기는(공용 전략) 방식이 효율적일 수 있습니다.
그룹별 오퍼레이터 배치
"deploy_plan": [ // 배치 로직 로직 (위에서 아래로, 왼쪽에서 오른쪽으로 검색하여 첫 번째로 찾은 오퍼레이터 배치) { "groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋" ],// 이 단계에서 이 그룹들 중 오퍼레이터를 탐색 "location": [ 6, 4 ], // 가비알 디 인빈서블, 라인 유지 오퍼레이터, 지상 딜러, 혼 등의 그룹 순회 "direction": "left" // 첫 번째로 찾은 오퍼레이터를 6,4 좌표에 왼쪽을 보게 배치 }, // 없으면 다음 단계로 { "groups": [ "召唤" ], "location": [ 6, 3 ], "direction": "left" }, { "groups": [ "单奶", "群奶" ], "location": [ 6, 2 ], "direction": "down" } ]주의
MAA는 모든 배치 명령을 평탄화(flatten)한 뒤 가장 우선순위가 높은 행동을 수행합니다.
예: [6,4]에 ["A", "B"], [6,3]에 ["B", "C"]를 배치하라고 하면, 전체 목록은 [(6,4)-A, (6,4)-B, (6,3)-B, (6,3)-C]가 됩니다.
만약 [6,4]의 A가 죽었고 내 손에 B가 있다면, [6,3]이 아니라 [6,4]에 B를 우선 배치합니다.즉, 거시적으로 볼 때 매번 배치 동작 후 처음부터 전략을 다시 검토합니다. (현재 단계 위치가 비어 있고, 배치 가능한 해당 그룹 오퍼레이터가 있는지)
팁
자주 쓰이는 조합 팁:
메인 방어선:
["地面阻挡", "处决者", "其他地面"](메인 탱커 죽으면 암살자로 시간 벌기). 압박 심할 때:["重装","地面阻挡", "处决者", "炮灰", "其他地面"]. 탱커 뒤:["地面远程","地面阻挡", "处决者", "其他地面"]. 어그로/미끼:["炮灰", "障碍物", "其他地面"].언덕 딜러:
["高台输出", "其他高台"]. 아무나 놔도 된다면:["高台输出", "狙击", "辅助", "盾法", "其他高台"].무에나나 매복자에게 적합한 위치:
["玛恩纳", "地刺"]
특정 시점에 배치 (조건부 배치)
팁
암살자나 미끼를 특정 타이밍에 쓸 때 유용합니다.
"deploy_plan": [ { "groups": [ "异德", "刺客", "挡人先锋", "其他地面" ], "location": [ 5, 3 ], "direction": "left", "condition": [ 0, 3 ] // 처치 수(kill count)가 0~3일 때만 수행 }, { "groups": [ "异德", "刺客", "挡人先锋", "其他地面" ], "location": [ 5, 3 ], "direction": "left", "condition": [ 6, 10 ] }, ... ]특정 시점에 철수
팁
유인용 오퍼레이터가 강해서 쓰러지지 않거나, 자리를 비워야 할 때 철수합니다.
같은 위치의 배치/철수
condition숫자가 겹치지 않게 주의하세요. (놓자마자 회수할 수 있음)"retreat_plan": [ // 특정 시점에 철수 { "location": [ 4, 1 ], "condition": [ 7, 8 ] // 처치 수 7~8일 때 [4,1] 오퍼레이터 철수. 없으면 패스. } ]특정 시점에 스킬 사용 (to do)
기타 필드 (권장하지 않음)
"role_order_Doc": "직업 배치 순서. 영문 입력. 미기재 시 가드, 뱅가드, 메딕, 디펜더, 스나이퍼, 캐스터, 서포터, 스페셜리스트, 소환물 순서", "role_order": [ // 비권장, deploy_plan 사용 권장 "warrior", "pioneer", "medic", "tank", "sniper", "caster", "support", "special", "drone" ], "force_air_defense_when_deploy_blocking_num_Doc": "필드에 저지 유닛 10000명 배치 시 대공 유닛 1명 강제 배치 시작 (기본값 false). 이 기간 동안 의료 유닛 배치 금지되지 않음.", "force_air_defense_when_deploy_blocking_num": { // 비권장, deploy_plan 사용 권장 "melee_num": 10000, "air_defense_num": 1, "ban_medic": false }, "force_deploy_direction_Doc": "특정 직업군의 강제 배치 방향 설정", "force_deploy_direction": [ // 비권장, deploy_plan 사용 권장 { "location": [ 1, 1 ], "role_Doc": "적용할 직업군", "role": [ "warrior", "pioneer" ], "direction": "up" }, { "location": [ 3, 1 ], "role": [ "sniper" ], "direction": "left" } ],
주의
MAA가 현재 스테이지 이름에 맞는 커스텀 전략 파일(스테이지명.json)을 찾지 못하면 공용 전략을 실행합니다.
스테이지 이름 인식 자체를 실패하면 아무것도 하지 않습니다.
특정 오퍼레이터 정밀 조작
해당 오퍼레이터를 별도 그룹으로 만드세요.
작업 작성 시 이 오퍼레이터와 기존 작업 간의 우선순위를 고려하세요.
아예 그 오퍼레이터 하나만 사용하는 작전 로직을 구성할 수도 있습니다.
참고 예시: 1. 팬텀 통합 전략 쏜즈, 2. 미즈키 통합 전략 특사스, 3. 사미 통합 전략 리드 더 플레임 섀도우/위셔델, 4. 살카즈 통합 전략 위셔델
통합 전략 3단계 — 우연한 만남(Encounter) 로직
resource/roguelike/테마명/encounter/default.json (레벨링 모드)
resource/roguelike/테마명/encounter/deposit.json (파밍 모드/스타팅 파밍 모드)
MAA의 우연한 만남 판단 방식
OCR로 이벤트 이름을 인식하지만, 선택지는 고정된 위치를 클릭합니다.
이벤트 이름 인식을 실패하면 선택지 아이콘(있으면)을 누르거나 가장 아래쪽 선택지를 누릅니다.
선택지 아이콘은 있는데 선택 불가능한 경우 가끔 멈출 수 있습니다 (TODO).
로직을 개선할 때 일반적으로 미세 조정만 하거나 아예 안 해도 됩니다 (고수들이 다 해놨으니까요).
선택지 우선순위 최적화 (Encounter)
PRTS 위키 등을 참고하여 선택지 효과를 확인하세요. (선택지는 고정이 아닐 수 있음)
특정 엔딩을 보거나 특정 보상을 원한다면 우선순위를 수정할 수 있습니다.
{
"theme": "Sami", // 통합 전략 테마
"mode": [1, 4], // 해당 파일이 적용되는 모드 제한, 선택 사항. 미작성 시 모든 모드에 적용
"stage": [ // 이벤트 목록
{
"name": "低地市集", // 이벤트 이름 (저지대 시장)
"option_num": 3, // 총 선택지 개수 (여기선 3)
"choose": 3, // 우선 선택할 선택지 번호 (여기선 3번째). 실패 시 런(주로 마지막).
"choices": [ // 특정 선택지에 대한 추가 요구 사항
{
"name": "选择碎草药", // 선택지 이름 (잘게 썬 약초 선택)
"choose": 1, // 아래 조건 충족 시 우선 선택할 선택지 번호, 선택 사항. 미작성 시 해당 항목은 적용되지 않음
"requirements": [ // 발동 조건, 선택 사항
{
"name": "Vision", // 조건 유형, 현재는 Vision(등불 수치)만 지원
"value": "3", // 기준값
"type": ">" // 크거나 작음 (=도 가능. 등불이 3보다 클 때 해당 choose가 적용됨)
}
]
},
{
"name": "选择好看的织物",
"choose": 1,
"requirements": [
{
"name": "Vision",
"value": "3",
"type": ">"
}
]
},
...이벤트는 다음 선택 필드도 지원합니다:
option_text: 문자열 배열, 이벤트 각 선택지의 텍스트로 인식 매칭을 보조하는 데 사용next_event: 문자열, 해당 이벤트 처리가 끝난 뒤 이동할 다음 이벤트 이름fallback_choices:[[실제 선택지 수, 우선 선택], ...]형식의 배열. 실제로 인식된 선택지 수가option_num과 다르면 실제 선택지 수에 맞는 항목으로 해당 선택지를 선택
BlackFlow 이벤트 전략과 선택 결과
이 절은 기계 번역입니다. 가능하면 중국어 문서를 읽어 주세요. 오류나 수정 제안이 있다면 알려 주시면 감사하겠습니다.
BlackFlow 전략 모듈은 encounter_rules를 지원합니다. 규칙은 이벤트 제목 event_name으로 이벤트를 매칭하며, when은 기존 전략 조건 문법을 사용합니다. 예를 들어 앞서 출발(先行一步)에 해당하는 이벤트 제목은 "未涉足之树"입니다. 여러 규칙이 동시에 일치하면 먼저 rank를 비교해 작은 값을 우선하며, rank가 같으면 규칙 id의 사전순으로 정합니다. 일치하는 규칙이 없으면 이벤트의 기본 설정을 사용합니다.
선택지는 option_text에 적은 텍스트 순서로 매칭할 수도 있고, option_num과 choose를 함께 지정할 수도 있습니다. 후자는 실제 선택지 수가 option_num과 같을 때 1부터 센 choose번째를 선택합니다. 두 방식은 함께 쓸 수 없습니다. allow_fallback의 기본값은 true이며, 목표를 선택할 수 없거나 선택에 실패하면 아래에서 위로 선택 가능한 선택지를 시도합니다. false로 설정하면 목표 선택에 실패하는 즉시 이번 선택을 종료합니다.
이벤트 판단에서는 다음 내장 페이지 사실을 facts에 다시 선언하지 않고 읽을 수 있습니다:
| 사실 | 유형 | 의미 |
|---|---|---|
encounter.name | string | 현재 인식된 이벤트 제목. |
encounter.option_count | int | 실제로 인식된 선택지 수. |
encounter.available_options | string_list | 이번 결정 시 선택 가능한 선택지 텍스트. |
encounter.route_known | bool | 이벤트 진입 시 유효하고 완전한 단일 잔여 경로가 유지되었는지 여부. |
encounter.remaining_battles | int | 해당 경로에서 현재 이벤트 이후의 전투 수. 경로가 명확할 때만 결정에 제공됩니다. |
encounter.selected_option | int | 실제로 선택된 선택지 번호, 1부터 시작. |
encounter.selected_text | string | 실제로 선택된 선택지 텍스트. |
encounter.used_fallback | bool | 실제 선택에서 대체 선택지를 사용했는지 여부. |
encounter.rule_id | string | 이번 선택 요청에서 일치한 규칙. 일치하지 않으면 비어 있음. |
available_options, route_known, remaining_battles는 이벤트 결정에 사용됩니다. 전투가 없다고 판단하려면 route_known이 true이고 remaining_battles가 0이어야 합니다. 경로가 비어 있거나 착지점이 여러 개이거나 이후 노드의 정체가 불분명하면 전투가 없다고 판단할 수 없습니다. 여기서는 이벤트에 진입할 때의 계획을 읽으며, 이후의 재계획은 제약하지 않습니다.
선택에 성공하면 공용 이벤트 플러그인이 RoguelikeEventSelected 콜백을 보내며, name, option_num, choose_option, option_text, rule_id, rule_description, used_fallback을 포함합니다. UI 로그에는 실제로 선택한 텍스트를 표시하고, 규칙에 일치하고 대체 선택지를 사용하지 않았다면 규칙의 description을 이유로 덧붙입니다. 따라서 서로 다른 전략이 같은 선택지를 고르더라도 각자의 이유를 표시할 수 있습니다. BlackFlow 세션은 실제 선택을 페이지 사실에 기록한 뒤 마일스톤을 갱신합니다. rule_id는 원래의 선택 요청을 나타내므로, 대체 선택지를 사용했다면 이것만으로 목표 선택지가 선택되었다고 볼 수 없습니다. 마일스톤은 실제 선택 사실을 확인해야 합니다. 선택 결과가 오퍼레이터 파견을 의미하지는 않습니다. 선택을 확정하면 반드시 얻는 아이템은 규칙의 on_selected로 해당 사실을 명시적으로 갱신할 수 있습니다.
on_selected는 탐험 전체의 사실 이름과 값의 대응표이며, 선언되어 있고 유형이 일치하는 run 사실만 허용하고 milestone.*에는 쓸 수 없습니다. 실제로 선택한 텍스트가 해당 규칙의 option_text에 포함될 때만 할당을 적용하며, 대체 선택지로 다른 텍스트를 선택했을 때는 적용하지 않습니다. 이 할당은 이번 선택 기록과 함께 기록한 뒤 마일스톤을 갱신하며, 실패하면 일부만 갱신된 상태를 남기지 않습니다. 제2 엔딩의 "线人"(정보원)에서 "我受雇于梅兰德"를 선택하면 즉시 sandtable_a를 true로 설정하며, 노드 종료는 기존의 보상 및 마무리 흐름을 따릅니다.
페이지 작업 결과도 마찬가지로 사실 전체와 페이지 변경을 검증한 뒤 한꺼번에 기록합니다. 이미 완료된 페이지는 완료 결과를 다시 받을 수 없으므로 같은 소장품 결과가 중복 누적되지 않습니다. 마일스톤 변화는 기존 콜백을 사용하며 출처 기록은 추가하지 않습니다. 놓친 마일스톤으로 인한 종료 판단은 여전히 지도 관측 시에 수행합니다.
BlackFlow 이벤트 기본 설정은 option_tasks를 지원하며, 실제로 선택한 선택지의 전체 텍스트를 키로, 기존 작업 이름을 값으로 사용합니다. 일치하면 JustReturn 진입점을 통해 해당 작업 체인으로 전달되며, 목표 작업은 자신의 이름으로 실행되어 템플릿 설정, 작업 이름 콜백, 실행 횟수 통계가 그대로 유지됩니다. 이후 페이지는 해당 작업 체인이 처리하며, 이번에는 이벤트 단위의 next_event를 실행하지 않습니다. 대응 항목이 없으면 기존의 보상 및 이벤트 마무리 흐름을 이어갑니다. 설정된 모든 작업은 선택 전에 해석할 수 있어야 하며, 작업이 없으면 선택지를 클릭하지 않습니다.
단일 선택지가 연속되는 이벤트
BlackFlow 이벤트 기본 설정의 continue_single_option 기본값은 false이며, 현재는 "安眠一隅"에서만 활성화되어 있습니다. 활성화하면 페이지마다 선택지를 다시 인식하고, 선택 가능한 선택지가 정확히 하나일 때만 이를 선택합니다. 고정 텍스트, 번호, 역순에 의한 대체 선택은 하지 않습니다. 선택 가능한 선택지가 0개 또는 여러 개이거나 선택 확정에 실패하면 모두 선택 실패로 처리합니다.
각 선택은 계속해서 확인 버튼과 LoadingText 대기 체인을 사용합니다. 이후 보상과 이벤트 대화를 처리하고, 선택지가 나타나면 이벤트 제목을 확인합니다. 제목이 여전히 현재 이벤트일 때만 다음 페이지를 다시 인식하며, 지도를 명확히 인식한 뒤에야 이벤트 전체를 종료합니다. 인접한 페이지는 같은 선택지 텍스트를 사용할 수 있습니다. 로딩, 인식 실패, 사용자 중지는 모두 이벤트 완료로 보지 않습니다. 이 필드는 BlackFlow 전용이며 next_event 또는 option_tasks와 동시에 활성화할 수 없습니다. 성공한 선택마다 실제 선택지를 따로 전달하며, 페이지 완료는 이벤트 전체가 끝난 뒤에만 보고합니다.
팀 상황에 따른 동적 우선순위 조정 (TODO)
통합 전략 4단계 — 상점/소장품 우선순위
resource/roguelike/테마명/shopping.json은 상점 구매 및 소장품(전투 후 획득 포함?) 선택 전략을 기술합니다.
{
"theme": "Phantom", // 테마 (여기서는 팬텀)
"priority": [ // 구매 우선순위 (순서대로)
// chars, roles 필터링이 먼저 적용되므로 조건 안 맞으면 안 삼.
{
"name": "金酒之杯", // 소장품 이름 (금주에 든 술잔)
"no_longer_buy": true, // true: 이 소장품을 획득하면 더 이상 구매하지 않음.
"ignore_no_longer_buy": true, // true: 상점에 이 소장품이 있다면 "구매 중단" 상태여도 구매함.
"effect": "每有5源石锭,所有我方单位的攻击速度+7", // 효과 메모
"No": 167 // 도감 번호 메모
},
...
{
"name": "扩散之手", // 확산의 손
"chars": [ // 이 오퍼레이터가 있을 때만 구매
"异客" // (패신저가 있을 때 구매 시도)
],
"effect": "【扩散术师】、【链术师】和【轰击术师】每对一个单位造成伤害就回复2点技力值",
"No": 136
},
...
{
"name": "折戟-破釜沉舟", // 부러진 창 - 배수진
"roles": [ // 이 직군이 있을 때만 구매
"WARRIOR" // (가드 직군이 있을 때 구매 시도)
], // 대문자 영문 직군명만 지원
"effect": "所有【近卫】干员的防御力-40%,但攻击力+40%,攻击速度+30",
"No": 16
},
...
{
"name": "Miss.Christine摸摸券", // 미스 크리스틴 쓰다듬기 권
"promotion": 2, // 0이 아닐 때, 승급 대기 중인 오퍼레이터가 있어야 구매. 기본값 0 (요구 없음)
"effect": "立即进阶两个干员(不消耗希望)",
"No": 15
},
...
{
"name": "警戒篱木", // 경계의 쐐기
"effect": "坍缩值-2,目标生命上限+2",
"No": 198,
"decrease_collapse": true // true: 획득 시 붕괴치 감소. (mode 5 붕괴 파밍 때는 안 삼)
},
...priority 외에도 shopping.json에는 전략에 따라 표를 고르는 테마를 위해 이름 있는 구매 표와 판매 표를 선언할 수 있습니다:
{
"theme": "BlackFlow",
"priority": [ ... ], // 기본 구매 표, 이름은 default
"buy_tables": { // 선택, 이름 있는 구매 표. 상품 작성법은 priority와 같으며 default는 priority용으로 예약
"표 이름": [ { "name": "..." } ]
},
"sell_tables": { // 선택, 이름 있는 판매 표. 판매를 허용할 이름을 나열하며 나열 순서는 판매 순서를 정하지 않음
"cultivation_final": [ "血蕈", "雾滚草", ... ]
}
}이름 있는 표, price, 구매 시 잔액에 따른 사전 선별은 현재 BlackFlow에서만 적용됩니다. 다른 테마는 계속 priority를 읽으며 기존 해석 규칙을 따릅니다.
roles는 모든 테마에서 위의 대문자 직군 이름만 받습니다. BlackFlow에서는 추가로 상품 이름을 비울 수 없고 roles와 chars는 문자열 배열이어야 합니다. 하나라도 맞지 않으면 파일 전체 해석이 실패합니다. 빈 구매 표는 구매 후보가 없음을, 빈 판매 표는 판매하지 않음을 뜻합니다.
BlackFlow의 상품에는 양의 정수 price를 지정할 수 있습니다. 상점 잔액을 읽을 수 있으면 잔액이 부족한 상품은 건너뛰고 다음 상품을 확인하며, 지정하지 않으면 동작은 바뀌지 않습니다.
BlackFlow 전략에 따른 구매·판매 표 선택
BlackFlow 전략 모듈은 shopping_rules를 지원합니다. 페이지 처리를 분배할 때 현재 페이지 의도와 사실을 기준으로 구매 표와 판매 표 한 쌍을 선택합니다:
"shopping_rules": [
{
"id": "cultivation_final", // 같은 전략 안에서 고유해야 함
"description": "第三层培育后结束,加工品卖出换种子", // 선택
"page_intent": "scrap_shop.cultivate", // 선택, 생략하면 해당 전략의 모든 페이지에 적용
"rank": 0, // 선택, 기본값은 0이며 작은 값이 우선
"when": { "fact": "current_floor", "op": "eq", "value": 3 }, // 선택, 기존 전략 조건 문법 사용
"buy_table": "default", // 선택, 기본값은 default
"sell_table": "cultivation_final" // 선택, 생략하거나 비어 있으면 판매하지 않음
}
]여러 규칙이 일치하면 rank가 작은 규칙을 우선하며, 값이 같으면 encounter_rules와 동일하게 id의 사전순으로 선택합니다. 구매 표와 판매 표는 같은 규칙에서 가져오며 서로 다른 규칙의 필드를 조합하지 않습니다. 일치하는 규칙이 없으면 default 구매 표를 사용하고 판매하지 않습니다. 페이지 처리를 분배할 때마다 표를 다시 선택하므로 이전 페이지의 선택은 이어지지 않습니다.
when은 후보 경로의 사실을 참조할 수 없습니다. 참조하는 표 이름은 BlackFlow의 shopping.json에 존재해야 하며, 없으면 전략 설정 해석이 실패합니다. 구매 처리는 선택한 구매 표를 사용하고, 신비한 상인(秘境行商)의 육성에서는 선택한 판매 표로 판매 대상을 걸러냅니다.
통합 전략 특수 메커니즘
탐험가의 은빛 서리 끝자락 — 암호판
resource/roguelike/Sami/foldartal.json은 사미 통합 전략의 암호판 전략을 기술합니다.
{
"theme": "Sami", // 테마 (탐험가의 은빛 서리 끝자락)
"groups": [ // 암호판 사용 전략 그룹
{
"usage": "SkipBattle", // 용도: 전투 건너뛰기 (전투 노드 회피 등)
"doc": "전투 회피용, 파밍 모드",
"pairs": [ // 조합 목록. 위에서부터 확인해서 만들 수 있으면 다 씀. 없으면 진입.
{ // (상흔 + 공허 조합)
"up": [ // 상판
"伤痕"
],
"down": [ // 하판
"空无"
]
},
{ // (추방자+경악, 추방자+의혹... 순차 검색)
"up": [
"黜人",
"猎手",
...
],
"down": [
"惊讶",
"疑惑",
...
]
}
]
},
{
"usage": "Boss", // 보스전용
"doc": "보유한 모든 암호판 사용",
...
}
],
"foldartal": [ // 암호판 데이터 (참고용)
{
"name": "布局", // 유형 (배치)
"foldartal": [
{
"name": "黜人", // 이름 (추방자) - 중국어 원문 유지
"effect": "选择所有右侧邻近的战斗节点" // 효과
},탐험가의 은빛 서리 끝자락 — 붕괴 패러다임
check_collapsal_paradigms가 true일 때, MAA는 두 가지 방법으로 붕괴 상태를 확인합니다.
- Panel Check: 맵 선택 화면 상단 패널을 클릭하여 확인.
- Banner Check: 화면 오른쪽의 붕괴 알림 배너를 감지.
붕괴치가 증가하는 다양한 상황을 고려했습니다:
- 전투 후 비완벽 전투로 붕괴치 증가 -> Banner Check
- 전투 후 소장품 획득으로 붕괴치 변동 -> Banner Check
- 우연한 만남 선택지 선택 -> Banner Check
- 교활한 상인에서 구매 -> Banner Check
- 암호판 사용으로 붕괴치 감소 -> Banner Check
- 다음 층 진입 -> Panel Check
- Banner Check 중 붕괴 패러다임이 사라진 경우(소멸), 혹시 2단계가 한 번에 사라졌을 가능성을 대비해 다음 맵 화면에서 Panel Check.
double_check_collapsal_paradigms가true면 맵 화면 갈 때마다 Panel Check (놓친 거 확인용).
히든 붕괴 패러다임 파밍 예시 (히든 엔딩 조건 달성용):
{
"theme": "Sami",
"mode": 5,
"investment_enabled": false,
"squad": "远程战术分队",
"roles": "稳扎稳打",
"core_char_list": [
{ "name": "维什戴尔", "use_support": false },
{ "name": "斑点", "use_support": false },
{ "name": "史都华德", "use_support": false }
],
"expected_collapsal_paradigms": ["目空一些", "睁眼瞎", "图像损坏", "一抹黑"]
}mode가 5일 때:
스테이지명_collapse.json작전 전략을 우선 사용합니다. (예:resource/roguelike/Sami/autopilot/事不过四_collapse.json)resource/roguelike/Sami/encounter/collapse.json이벤트 전략을 사용합니다.decrease_collapse가true인(붕괴치 낮추는) 소장품을 사지 않습니다.
mode가 5가 아니어도 check_collapsal_paradigms가 true면 붕괴를 체크하고, expected_collapsal_paradigms 목록에 있는 붕괴가 뜨면 작업을 정지합니다. (목록에 없는 게 뜨면 재시도 안 함)
히든 붕괴 파밍 추천 난이도: N10. 추천 덱:
- 위셔델 + 스팟 + 스튜어드
- 리드 더 플레임 섀도우 + 오키드 + 포푸카
- 티폰 + 스팟 + 스튜어드
쉐이의 기이한 계원 — 주화
resource/roguelike/JieGarden/coppers.json은 쉐이 통합 전략의 주화 배치/교환 전략을 기술합니다.
{
"theme": "JieGarden", // 테마 (쉐이의 기이한 계원)
"addons": { // 주화 접두어 효과 (참고용)
"锈色": "投出时,每经过一个节点,获得源石锭+1", // 녹슨
"存护": "加入钱盒时,获得护盾值+2", // 존호
"入幻": "加入钱盒时,获得希望+1", // 입환
"引光": "加入钱盒时,获得烛火+1", // 인광
"巡游": "投出时,每完成一场战斗,获得票券+1" // 순유
},
"coppers": [ // 주화 목록
{
"name": "大炎通宝", // 주화 이름 (대염 통보) - 중국어 원문 유지
"desc": "普通又空白,什么也没有", // 설명
"rarity": "NORMAL", // 희귀도
"pickup_priority": 0, // 줍기 우선순위 (높을수록 우선)
"discard_priority": 1000 // 버리기/교체하기 우선순위 (높을수록 먼저 버림)
},
{
"name": "衡-奇土生金", // 형 - 기토생금
"desc": "投出时,立即获得源石锭+4(下次投钱前变化为-大炎通宝)",
"rarity": "NORMAL",
"pickup_priority": 200,
"discard_priority": 800,
"cast_discard_priority": 999 // (선택) 이미 던져진 상태일 때의 버리기 우선순위.
// 던지고 나면 효과가 변하는(대염 통보가 되는) 것들에 사용.
},
{
"name": "厉-西廉贞", // 려 - 서렴정
"desc": "投出时,精英及领袖敌人的生命值、攻击力+10%,在险路恶敌及岁兽残识中攻击力、生命值额外+20%",
"rarity": "NORMAL",
"pickup_priority": 0,
"discard_priority": 1998,
"cast_discard_priority": 2098 // 던지면 디버프 걸리는 주화 등
},
...
]
}주화 교환 로직
MAA는 쉐이 통합 전략에서 자동으로 주화를 줍고 교환합니다.
주화 줍기: 전투 종료 후 주화 드랍 창에서
pickup_priority가 가장 높은 것을 선택.주화 교환: 주머니가 꽉 찼을 때 새 주화를 주우면:
- 주머니 속 주화들의 유형/이름/투척상태 식별
discard_priority가 가장 높은(가장 쓸모없는) 주화 탐색- 새 주화의
discard_priority가 그것보다 낮으면(더 좋으면) 교체, 아니면 포기.
투척 상태 특수 처리:
cast_discard_priority가 설정된 주화가 '던져진' 상태라면,discard_priority대신cast_discard_priority를 사용하여 가치를 판단.
주화 식별 메커니즘
MAA는 다음 방법으로 주화를 인식하고 처리합니다:
- 템플릿 매칭으로 주화 유형 아이콘(려/형/화) 식별
- 유형 아이콘 위치 기반 ROI 오프셋으로 OCR 이름 식별
- 주화의 '투척됨' 상태 식별
- 교환 화면에서 목록을 스크롤하며 모든 주화 스캔 및 비교
인식 흐름 예시


주의
- OCR로 인식된 주화 이름이 설정 파일에 없으면, MAA는 디버그 이미지를
debug/roguelike/coppers/unknown디렉토리에 저장합니다.
향후 구현 예정 (TODO)
자동 편성 로직
- 맵별 고유 편성 완성도/스킬 우선순위 설정
- 현 편성으로 감당 불가능한 고난이도 맵 회피
길찾기 알고리즘 최적화 (초기 구현됨)
3층까지 전투 많이, 그 뒤로 전투 적게 등 성장 곡선 최적화. 노드 연결 인식 등
스킬 대기 (Skill Hold)
배치 후 x초 대기 후 스킬 발동 (택틱 최적화)
스킬 끄기
탄약형 스킬 끄기 등
