벅샷 룰렛(Buckshot Roulette) 게임 로직 사양서
-
게임 개요 유형: 턴제 전략 게임 플레이어: 플레이어 1인 vs AI (딜러) 목표: 상대방의 체력(Charges)을 0으로 만들어 승리
-
산탄총 (핵심 메커니즘) 탄창: 한 번의 '장전(Load)'은 무작위로 섞인 실탄(적색)과 공포탄(청색)으로 구성됩니다. 투명성: 각 라운드 시작 시, 플레이어에게 전체 실탄과 공포탄의 개수가 공개됩니다 (예: "실탄 3발, 공포탄 2발"). 순서: 탄환들은 무작위로 섞여 총기에 선형 큐(Queue) 형태로 숨겨진 채 장전됩니다. 차탄 장전: 산탄총은 큐의 맨 앞부분부터 한 번에 한 발씩 발사됩니다.
-
플레이어 턴 액션 플레이어는 자신의 턴에 다음 두 가지 주요 행동 중 하나를 선택해야 합니다. A. 상대방(딜러) 사격 실탄일 경우: 딜러의 체력이 1 감소하며 턴이 종료됩니다. 공포탄일 경우: 피해가 없으며 턴이 종료됩니다.
B. 자신에게 사격 실탄일 경우: 플레이어의 체력이 1 감소하며 턴이 종료됩니다. 공포탄일 경우: 피해가 없으며, 플레이어가 추가 턴을 얻습니다 (가장 중요한 전략적 요소). 4. 아이템 시스템 및 세부 규칙 아이템은 새로운 탄창이 장전될 때 지급됩니다 (인당 2~4개 추가). 이전 라운드의 아이템은 유지됩니다. 인벤토리 제한은 8슬롯입니다. 새 아이템 추가 시 인벤토리 제한을 초과하면, 제한(8슬롯)에 도달할 때까지만 추가됩니다.
수갑 (턴 건너뛰기): 상대방의 다음 턴을 건너뜁니다. 상대가 이미 수갑 상태인 경우 중복 사용할 수 없습니다. 플레이어가 수갑을 사용한 상태에서 자신에게 실탄을 쏘면, 상대의 턴은 여전히 스킵되어 플레이어의 턴이 유지됩니다. 효과는 상대의 턴을 한 번 건너뛴 후 초기화됩니다.
돋보기 (탄환 확인): 약실에 들어있는 현재 탄환이 실탄인지 공포탄인지 확인합니다. 아이템 사용 후에도 턴은 종료되지 않습니다.
손톱깎이/톱 (데미지 2배): 현재 탄환이 실탄일 경우 피해량을 2로 증가시킵니다. 이미 톱을 사용한 상태(is_sawed == true)에서는 중복 사용할 수 없으며, 발사되거나 맥주로 배출된 후에는 효과가 해제됩니다.
담배 (회복): 사용자의 체력을 1 회복합니다. 게임 시작 시 설정된 최대 체력을 초과할 수 없습니다.
맥주 (탄환 배출): 사격하지 않고 현재 약실의 탄환을 밖으로 배출합니다. 만약 톱 효과가 활성화된 상태였다면, 효과는 사라지고 다음 탄환으로 초기화됩니다.
- 게임 흐름 로직 (상태 머신) 초기화: 플레이어와 딜러의 최대 체력을 설정합니다.
장전 단계: 실탄/공포탄 조합을 무작위 생성하여 개수를 표시합니다. 각 라운드 시작 시 플레이어에게 2~4개의 랜덤 아이템을 추가합니다. 이전 라운드의 아이템은 유지됩니다. 새 아이템 추가 시 인벤토리 제한(8슬롯)을 초과하면, 제한에 도달할 때까지만 추가됩니다. 참고: 장전 단계에서 체력(HP)은 회복되지 않습니다. 체력은 게임 초기화 시에만 리셋됩니다. 참고: 장전 단계에서 아이템은 제거되지 않습니다. 모든 아이템은 라운드 간에 유지됩니다.
액션 단계: 수갑 등 상태 이상을 확인합니다. 플레이어의 입력을 기다립니다 (아이템 사용, 상대 사격, 자신 사격). 사격 결과를 처리하여 체력을 갱신하고 턴 전환을 관리합니다.
조건 확인: 탄창이 비면: 장전 단계로 전환 (새 라운드 시작, 체력은 회복되지 않음). 체력이 0 이하가 되면: 게임 종료 (게임 종료이지 라운드 종료가 아님). 그 외: 이전 액션 결과와 상태 이상에 따라 다음 차례를 결정합니다.
-
복합 아이템 상호작용 로직 톱 + 맥주: 톱을 사용한 후 맥주를 마시면 톱 효과는 낭비됩니다. 탄환은 배출되고 차탄의 데미지는 다시 1로 돌아갑니다. 톱 + 자신 사격: 톱 효과 상태에서 자신에게 실탄을 쏘면 2의 피해를 입습니다. 공포탄일 경우 피해 없이 턴이 계속되지만 톱 효과는 소멸됩니다. 수갑 + 자신 사격(공포탄): 상대가 수갑 상태일 때 자신에게 공포탄을 쏘면 추가 턴을 얻습니다. 이때 상대의 턴이 아직 돌아오지 않았으므로 수갑 상태(is_handcuffed)는 유지됩니다. 수갑 + 탄창 소진: 수갑 효과가 활성화된 상태에서 마지막 탄환이 발사/배출되어 탄창이 비더라도, 수갑 효과는 다음 장전 단계까지 유지되어 다음 탄창의 첫 상대 턴을 건너뜁니다.
-
라운드 정의 라운드(Round)는 한 세트의 총알이 모두 소진될 때까지의 기간을 의미합니다. 참고: 플레이어의 체력이 0이 되면 게임이 종료됩니다 (라운드 종료가 아님).
라운드 시작 (Load Phase):
- 새 총알 세트 생성: 1
4개의 실탄과 14개의 공포탄을 무작위로 생성하여 총 2~8개의 총알을 만듭니다. - 총알 섞기: 생성된 총알들을 무작위로 섞어 산탄총에 장전합니다.
- 아이템 배분: 각 라운드 시작 시 플레이어에게 2~4개의 랜덤 아이템을 추가합니다. 이전 라운드의 아이템은 유지됩니다. 새 아이템 추가 시 인벤토리 제한(8슬롯)을 초과하면, 제한에 도달할 때까지만 추가됩니다.
- 총알 정보 공개: 플레이어에게 실탄과 공포탄의 개수를 표시합니다 (예: "실탄 3발, 공포탄 2발").
- 중요: 체력(HP)은 회복되지 않습니다. 체력은 이전 라운드의 상태를 유지하며 게임 시작 시에만 초기화됩니다.
- 중요: 아이템은 제거되지 않습니다. 이전 라운드의 모든 아이템이 유지됩니다.
라운드 진행 (Action Phase):
- 플레이어들이 턴을 번갈아가며 총알을 발사하거나 아이템을 사용합니다.
- 총알은 발사되거나 배출될 때마다 하나씩 소진됩니다.
라운드 종료 조건:
- 탄창 소진: 모든 총알이 발사되거나 배출되어 탄창이 비어있을 때 (rounds.Count == 0) → 새 라운드(Load Phase)가 즉시 시작됩니다.
- 체력 소진: 플레이어 또는 딜러 중 한 명의 체력이 0이 될 때 → 게임 종료 (라운드 종료가 아님).
라운드 종료 시:
- 남은 총알이 있다면 모두 제거됩니다.
- 중요: 아이템은 제거되지 않습니다. 모든 아이템은 라운드 간에 유지되며 다음 라운드로 이어집니다.
- 즉시 새로운 라운드(Load Phase)가 시작되어 새로운 총알 세트가 생성됩니다.
- 중요: 체력(HP)은 회복되지 않으며 이전 라운드의 상태를 그대로 유지합니다. 체력은 게임 시작 시에만 초기화됩니다.
참고사항:
- 라운드 종료는 게임 종료를 의미하지 않습니다. 게임은 여러 라운드로 구성되며, 라운드가 끝나면 새로운 라운드가 계속 시작됩니다.
- 한 라운드당 총알 개수는 최소 2개(실탄 1개 + 공포탄 1개)부터 최대 8개(실탄 4개 + 공포탄 4개)까지입니다.
- 체력(HP)은 라운드 간에 유지되며 게임 초기화 시에만 리셋됩니다. 새 라운드가 시작될 때 체력은 회복되지 않습니다.