자산 시스템 (docs/작업지시서/자산시스템_작업지시서.md 반영, 이전 세션 작업분 커밋): - 발라트로형 조커 레이어 엔진 빌딩 도입. assets.json 8종(트리거→효과→성장 스키마) + engine/assetEngine.js(이벤트 버스, 연쇄 깊이 상한 10)로 기존 수동 클릭형 자산 4종 전면 대체 - AssetInfoPopup 추가 — 자산 슬롯 클릭 시 트리거/효과/스택/충전 상태 표시, 발동 로그 피드 노출 오염 카드 압박 강화 (그레이박스 위기감 피드백 반영): - engine/pollution.js 신설 — 오염 주입 규칙(타입 매핑·등급 추첨·물량)을 단일 모듈로 분리해 사전 예고(SwipeCard) · 실제 주입(GameScreen) · 사후 알림이 같은 계산을 공유하도록 함 - 위험 파라미터를 올리는 결재는 정례회의를 기다리지 않고 그 자리에서 덱에 오염 카드를 주입 - UI 3종: 스와이프 시 오염 유입 사전 경고, 결재 후 유입 토스트, 상단 덱 오염 상시 게이지 - currentCardIndex를 매 결재마다 덱 길이로 정규화(주입/소각으로 덱 길이가 바뀌므로 필요) 기타: - docs/architecture_design.md를 실제 구현(plain JS/CSS, useState, engine/ 순수 함수 경계) 기준으로 전면 재작성 — 기존 문서는 채택되지 않은 초기 제안(Tailwind/Zustand/TS)이었음 - playtest.bat 추가 — 더블클릭으로 dev 서버 실행 (ASCII 전용, chcp로 인한 배치 파싱 오류 회피) - CLAUDE.md 상태 갱신 및 실기 플레이 결과 기록 실기 플레이로 정상 동작 확인. 자산 획득 경로(극비 카드 스와이프)는 플레이 중 한 번도 발생하지 않아 원인 미조사 상태로 남김 — CLAUDE.md에 후속 확인 항목으로 기록. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
107 lines
4.7 KiB
JSON
107 lines
4.7 KiB
JSON
[
|
|
{
|
|
"id": "asset_purge_001",
|
|
"name": "문서 파쇄실",
|
|
"grade": "C",
|
|
"archetype": "purge",
|
|
"trigger": { "type": "every_n_approvals", "params": { "n": 5 } },
|
|
"effect": { "type": "purge_lowest", "params": { "count": 1 } },
|
|
"growth": null,
|
|
"risk": null,
|
|
"faction_link": "scavengers",
|
|
"description": "결재 5건마다 덱에서 최하 등급 오염 카드 1장을 영구 소각한다.",
|
|
"flavor": "파쇄 용량: 일일 1건. 증설 요청은 3회 반려됨."
|
|
},
|
|
{
|
|
"id": "asset_purge_002",
|
|
"name": "소각 처리 대장",
|
|
"grade": "A",
|
|
"archetype": "purge",
|
|
"trigger": { "type": "on_purge", "params": {} },
|
|
"effect": null,
|
|
"growth": { "stackOn": "on_purge", "per": 3, "bonus": { "effect": "purge_lowest", "count": 1 } },
|
|
"risk": null,
|
|
"faction_link": "scavengers",
|
|
"description": "소각이 발생할 때마다 숙련도가 쌓인다. 숙련 3회마다 최하 등급 오염 카드 1장을 추가로 소각한다.",
|
|
"flavor": "소각로 온도는 서류로 증명되지 않는다."
|
|
},
|
|
{
|
|
"id": "asset_convert_001",
|
|
"name": "폐기물 재활용 규정",
|
|
"grade": "C",
|
|
"archetype": "convert",
|
|
"trigger": { "type": "on_pollution_draw", "params": { "category": "신화", "minGrade": null } },
|
|
"effect": { "type": "convert_to_token", "params": { "tokenType": "budget", "amount": 2 } },
|
|
"growth": null,
|
|
"risk": null,
|
|
"faction_link": "nexus_traders",
|
|
"description": "신화 오염 카드가 드로우되면 예산 토큰 2를 회수한다. (페널티는 정상 적용 후)",
|
|
"flavor": "괴수 사체도 감가상각 대상이다."
|
|
},
|
|
{
|
|
"id": "asset_convert_002",
|
|
"name": "부산물 매각 계약",
|
|
"grade": "B",
|
|
"archetype": "convert",
|
|
"trigger": { "type": "on_convert", "params": {} },
|
|
"effect": { "type": "convert_multiplier", "params": { "multiplier": 2 } },
|
|
"growth": null,
|
|
"risk": { "param": "risk_tolerance", "amount": 5, "when": "council_end" },
|
|
"faction_link": "nexus_traders",
|
|
"description": "모든 환전 효과의 산출량을 2배로 늘린다. 의회가 열릴 때마다 위험 수용 계수가 소폭 상승한다.",
|
|
"flavor": "이 계약서에 서명한 사람은 아무도 기억하지 못한다."
|
|
},
|
|
{
|
|
"id": "asset_quarantine_001",
|
|
"name": "임시 격리 컨테이너",
|
|
"grade": "C",
|
|
"archetype": "quarantine",
|
|
"trigger": { "type": "on_swipe_left", "params": {} },
|
|
"effect": { "type": "quarantine", "params": { "failCondition": "다음 의회까지 대중 공황 1단계 상승" } },
|
|
"growth": null,
|
|
"risk": null,
|
|
"faction_link": "occult_collectors",
|
|
"description": "좌로 스와이프한 오염 카드를 격리한다. 다음 의회 전까지 처리하지 못하면 대중 공황이 상승한다.",
|
|
"flavor": "컨테이너 라벨: '절대 열지 말 것 (2차 통보)'."
|
|
},
|
|
{
|
|
"id": "asset_quarantine_002",
|
|
"name": "심연 보관 조례",
|
|
"grade": "S",
|
|
"archetype": "quarantine",
|
|
"trigger": { "type": "on_quarantine_fail", "params": {} },
|
|
"effect": { "type": "quarantine_fail_to_purge", "params": { "bonusTag": "surveillance" } },
|
|
"growth": null,
|
|
"risk": null,
|
|
"faction_link": "occult_collectors",
|
|
"description": "격리가 실패로 판정되면 그 즉시 대상을 영구 소각하고, 감시 태그 1을 획득한다. 격리 실패가 더 이상 페널티가 아니다.",
|
|
"flavor": "실패란 서류상의 표현일 뿐이다."
|
|
},
|
|
{
|
|
"id": "asset_skip_001",
|
|
"name": "결재 반려 도장",
|
|
"grade": "C",
|
|
"archetype": "skip",
|
|
"trigger": { "type": "manual_charge", "params": { "chargeEvery": 10 } },
|
|
"effect": { "type": "negate_penalty", "params": { "category": null } },
|
|
"growth": null,
|
|
"risk": null,
|
|
"faction_link": "field_agents_union",
|
|
"description": "결재 10건마다 충전된다. 충전 완료 시 수동으로 발동해 다음 오염 카드의 페널티를 1회 무효화한다.",
|
|
"flavor": "도장이 닳는 속도가 곧 국장의 임기다."
|
|
},
|
|
{
|
|
"id": "asset_skip_002",
|
|
"name": "책임 소재 불명 처리",
|
|
"grade": "B",
|
|
"archetype": "skip",
|
|
"trigger": { "type": "on_pollution_draw", "params": { "category": "조직저항", "minGrade": null } },
|
|
"effect": { "type": "negate_penalty", "params": { "category": "조직저항" } },
|
|
"growth": null,
|
|
"risk": { "param": "resistance", "amount": 3, "when": "on_trigger" },
|
|
"faction_link": "field_agents_union",
|
|
"description": "조직 저항 계열 오염 카드의 페널티를 자동으로 무효화한다. 다만 책임 소재가 사라질 때마다 내부 저항이 소폭 상승한다.",
|
|
"flavor": "'담당자 부재'라는 담당자가 새로 생겼다."
|
|
}
|
|
]
|