From 56f494f3312727eccfe4f57729f4f4f3a41bf966 Mon Sep 17 00:00:00 2001 From: Kyoung5seo Date: Wed, 24 Jun 2026 23:08:32 +0900 Subject: [PATCH] =?UTF-8?q?=ED=94=BC=EB=93=9C=EB=B0=B1=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=82=AC=ED=95=AD=20=EC=A0=81=EC=9A=A9=20(?= =?UTF-8?q?=EB=AA=A8=EB=91=90=20=EB=B0=98=EC=98=81=EB=90=9C=20=EA=B2=83?= =?UTF-8?q?=EC=9D=80=20=EC=95=84=EB=8B=98)=20=E2=96=B6=EC=A3=BC=EA=B0=84?= =?UTF-8?q?=20=EC=9D=98=ED=9A=8C=20=EB=AA=85=EC=B9=AD=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?:=20=EC=A3=BC=EA=B0=84=20=EC=9D=98=ED=9A=8C=20-->=20=EC=A0=95?= =?UTF-8?q?=EA=B8=B0=20=EC=9D=98=ED=9A=8C=20=E2=96=B6=EB=9D=BC=EC=9A=B4?= =?UTF-8?q?=EB=93=9C=20=EB=8B=B9=20=EA=B2=B0=EC=9E=AC=20=EA=B1=B4=EC=88=98?= =?UTF-8?q?=EB=8A=94=20=EB=8B=A4=EB=A6=84=20:=20=EB=9D=BC=EC=9A=B4?= =?UTF-8?q?=EB=93=9C=EA=B0=80=20=EC=A6=9D=EA=B0=80=ED=95=A0=EB=95=8C?= =?UTF-8?q?=EB=A7=88=EB=8B=A4=20=EA=B2=B0=EC=9E=AC=20=EA=B1=B4=EC=88=98?= =?UTF-8?q?=EA=B0=80=20=EC=A4=84=EC=96=B4=EB=93=A4=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EC=95=84=EC=89=AC=EC=9B=80=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D=20-=20=EA=B2=B0=EC=9E=AC=20=EA=B1=B4=EC=88=98?= =?UTF-8?q?=EA=B0=80=200=EC=9D=B4=20=EB=90=98=EB=A9=B4=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84=20=EC=98=A4=EB=B2=84=20(=EA=B2=80=ED=86=A0=EB=A5=BC?= =?UTF-8?q?=20=ED=95=B4=EB=B3=B4=EA=B3=A0=20=EC=A4=84=EC=96=B4=EB=93=9C?= =?UTF-8?q?=EB=8A=94=EA=B2=8C=20=EB=82=98=EC=9D=84=EC=A7=80=20=EB=8A=98?= =?UTF-8?q?=EC=96=B4=EB=82=98=EB=8A=94=EA=B2=8C=20=EB=82=98=EC=9D=84?= =?UTF-8?q?=EC=A7=80=20=EA=B2=80=ED=86=A0=20=ED=95=B4=EC=A4=98)=20?= =?UTF-8?q?=E2=96=B6=EB=9D=BC=EC=9A=B4=EB=93=9C=20=EA=B5=AC=EC=84=B1=20?= =?UTF-8?q?=EA=B0=9C=EB=85=90=EC=9D=98=20=EB=94=94=ED=85=8C=EC=9D=BC=20?= =?UTF-8?q?=EB=B6=80=EC=A1=B1:=20=EA=B8=B0=ED=9A=8D=EC=84=9C=EC=97=90=20?= =?UTF-8?q?=ED=94=8C=EB=A1=9C=EC=9A=B0=EC=B0=A8=ED=8A=B8(=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EA=B7=B8=EB=9E=A8)=EB=A5=BC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20('=EA=B2=B0=EC=9E=AC=20=EB=8B=A8=EA=B3=84'=EC=99=80?= =?UTF-8?q?=20'=EC=A3=BC=EA=B0=84=20=EC=9D=98=ED=9A=8C=20=EB=8B=A8?= =?UTF-8?q?=EA=B3=84'=EC=9D=98=20=ED=9D=90=EB=A6=84=EC=9D=B4=20=ED=94=8C?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=EC=99=80=20=EA=B0=9C=EB=B0=9C?= =?UTF-8?q?=EC=9E=90=20=EB=AA=A8=EB=91=90=EC=97=90=EA=B2=8C=20=EB=AA=85?= =?UTF-8?q?=ED=99=95=ED=95=98=EB=8F=84=EB=A1=9D)=20=E2=96=B6=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20=EA=B2=B0=EA=B3=BC=20=EC=95=84=EB=9E=98=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=97=86=EC=9D=8C.=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=B6=94=EA=B0=80=20=ED=95=84=EC=9A=94=20(?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=EA=B0=80=20=EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=20=EB=A7=9E?= =?UTF-8?q?=EA=B2=8C=20=EC=9E=91=EB=8F=99=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=ED=95=B4=EC=A4=98)=20-=20=EC=9E=90?= =?UTF-8?q?=EC=82=B0=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20-=20=EC=98=A4?= =?UTF-8?q?=EC=97=BC=20=EC=B9=B4=EB=93=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?-=20=EB=82=B4=EB=9F=AC=ED=8B=B0=EB=B8=8C=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=E2=96=B6=ED=86=A0=ED=81=B0=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=EB=84=88=EC=8A=A4=20=EC=83=81=ED=83=9C=20=EC=B2=98=EB=A6=AC:?= =?UTF-8?q?=20=EB=B0=A9=ED=96=A5=20B=20(=ED=8C=A8=EB=84=90=ED=8B=B0=20?= =?UTF-8?q?=EB=B0=8F=20=ED=8C=8C=EC=82=B0=20-=20=EB=B8=94=EB=9E=99?= =?UTF-8?q?=EC=BD=94=EB=AF=B8=EB=94=94=EC=97=90=20=EC=96=B4=EC=9A=B8?= =?UTF-8?q?=EB=A6=BC),=20=EB=A7=88=EC=9D=B4=EB=84=88=EC=8A=A4=EB=A5=BC=20?= =?UTF-8?q?=ED=97=88=EC=9A=A9=ED=95=98=EB=90=98=20=EA=B0=80=ED=98=B9?= =?UTF-8?q?=ED=95=9C=20=EB=8C=80=EA=B0=80=EB=A5=BC=20=EC=B9=98=EB=A5=B4?= =?UTF-8?q?=EA=B2=8C=20=ED=95=98=EA=B8=B0=20=ED=8C=8C=EC=82=B0=20=EB=AC=B8?= =?UTF-8?q?=EC=B1=85=20=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EA=B8=B0=ED=9A=8D=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B5=AC=ED=98=84=20=ED=95=84=EC=9A=94=20(?= =?UTF-8?q?=EC=95=84=EB=9E=98=EB=8A=94=20=EA=B0=84=EB=9E=B5=20=EC=8B=9C?= =?UTF-8?q?=EC=8A=A4=ED=85=9C=20=EC=9E=91=EC=84=B1=20-=20=EB=B8=94?= =?UTF-8?q?=EB=9E=99=20=EC=BD=94=EB=AF=B8=EB=94=94=EA=B0=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EB=90=98=EB=A9=B4=20=EC=A2=8B=EA=B2=A0=EC=9D=8C)=20-?= =?UTF-8?q?=20=EB=A7=88=EC=9D=B4=EB=84=88=EC=8A=A4=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EA=B2=B0=EC=9E=AC=201=EA=B1=B4=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=ED=95=A0=20=EB=95=8C=20=EB=A7=88=EB=8B=A4?= =?UTF-8?q?,=20=ED=8C=8C=EC=82=B0=20=EC=B9=B4=EC=9A=B4=ED=84=B0=20?= =?UTF-8?q?=EC=A6=9D=EA=B0=80=20-=20=EC=A0=95=EA=B8=B0=20=EC=9D=98?= =?UTF-8?q?=ED=9A=8C=EC=97=90=EC=84=9C=20=ED=8C=8C=EC=82=B0=20=EB=AC=B8?= =?UTF-8?q?=EC=B1=85=20:=20=ED=8C=8C=EC=82=B0=20=EC=B9=B4=EC=9A=B4?= =?UTF-8?q?=ED=84=B0=EC=97=90=20=EB=94=B0=EB=9D=BC=20=EB=AC=B8=EC=B1=85?= =?UTF-8?q?=EC=9D=98=20=EA=B0=95=EB=8F=84=EA=B0=80=20=EB=8B=AC=EB=9D=BC=20?= =?UTF-8?q?=EC=A7=90=20-=20=ED=8C=8C=EC=82=B0=20=EB=AC=B8=EC=B1=85?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EA=B2=BD=EA=B3=A0=EB=A5=BC=20=EB=B0=9B?= =?UTF-8?q?=EC=95=98=EB=8A=94=EB=8D=B0=EB=8F=84=20=EA=B0=9C=EC=84=A0(?= =?UTF-8?q?=EB=A7=88=EC=9D=B4=EB=84=88=EC=8A=A4=EB=A5=BC=200=20=EC=9D=B4?= =?UTF-8?q?=EC=83=81=EC=9C=BC=EB=A1=9C=20=EB=B3=B5=EA=B5=AC)=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EB=AA=BB=ED=95=98=EB=A9=B4=20=EB=8B=A4=EC=9D=8C=20?= =?UTF-8?q?=EC=A0=95=EA=B8=B0=20=EC=9D=98=ED=9A=8C=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=EC=98=A4=EB=B2=84=20=E2=96=B6=EA=B8=80?= =?UTF-8?q?=EC=9D=B4=20=EB=84=88=EB=AC=B4=20=EA=B8=B8=EC=96=B4=20=EC=9D=BD?= =?UTF-8?q?=EA=B8=B0=20=ED=9E=98=EB=93=A0=20=EB=AC=B8=EC=A0=9C:=20-=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=ED=94=8C=EB=A0=88=EC=9D=B4=20=ED=95=84?= =?UTF-8?q?=EC=88=98=20=EA=B8=80=20(=EC=A7=81=EA=B4=80=EC=84=B1=20?= =?UTF-8?q?=EC=B5=9C=EC=9A=B0=EC=84=A0):=20=EC=B9=B4=EB=93=9C=20=EC=83=81?= =?UTF-8?q?=EB=8B=A8=EC=97=90=20=EC=83=81=ED=99=A9=20=ED=82=A4=EC=9B=8C?= =?UTF-8?q?=EB=93=9C=EB=A5=BC=20=EB=B0=B0=EC=B9=98=ED=95=98=EA=B3=A0,=20?= =?UTF-8?q?=EA=B7=B8=20=EC=95=84=EB=9E=98=EC=97=90=20=EC=A7=88=EB=AC=B8?= =?UTF-8?q?=EC=9D=84=20=EB=B0=B0=EC=B9=98=ED=95=B4=20=EB=AC=B4=EC=97=87?= =?UTF-8?q?=EC=9D=84=20=EC=9A=94=EA=B5=AC=20=ED=95=98=EB=8A=94=EC=A7=80=20?= =?UTF-8?q?=ED=99=95=EC=8B=A4=ED=95=98=EA=B2=8C=20=EC=95=8C=EB=A0=A4=20?= =?UTF-8?q?=EC=A4=8C=20(=EC=98=88:=20=EC=83=81=ED=99=A9=20=ED=82=A4?= =?UTF-8?q?=EC=9B=8C=EB=93=9C=20=3D=20=EC=9A=94=EC=9B=90=EB=93=A4=EC=9D=98?= =?UTF-8?q?=20=EC=8B=9C=EC=9C=84=20=EB=B0=9C=EC=83=9D,=20=EC=A7=88?= =?UTF-8?q?=EB=AC=B8=20=3D=20=EC=8B=9C=EC=9C=84=EB=A5=BC=20=EC=96=B4?= =?UTF-8?q?=EB=96=BB=EA=B2=8C=20=ED=95=98=EC=8B=9C=EA=B2=A0=EC=8A=B5?= =?UTF-8?q?=EB=8B=88=EA=B9=8C=3F)=20=EA=B7=B8=EB=A6=AC=EA=B3=A0=20?= =?UTF-8?q?=EC=A2=8C=EC=9A=B0=20=EC=8A=A4=EC=99=80=EC=9D=B4=ED=94=84=20?= =?UTF-8?q?=EC=8B=9C=20=EB=93=B1=EC=9E=A5=ED=95=98=EB=8A=94=20=EB=B3=B4?= =?UTF-8?q?=EC=83=81=20=ED=91=9C=EC=8B=9C=EC=97=90=EC=84=9C=20left=5Ftext,?= =?UTF-8?q?=20right=5Ftext=EC=9D=98=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=EB=A5=BC=20=ED=82=A4=EC=9A=B0=EA=B3=A0=20?= =?UTF-8?q?=EA=B7=B8=20=EC=95=84=EB=9E=98=EC=9D=98=20=EB=B3=B4=EC=83=81=20?= =?UTF-8?q?=EC=98=A4=EB=B8=8C=EC=A0=9D=ED=8A=B8(=EC=98=88:=20=20[=EC=98=88?= =?UTF-8?q?=EC=82=B0=20-2]=20,=20=20[=EC=A7=80=EC=A7=80=EB=8F=84=20+10]=20?= =?UTF-8?q?)=EB=8A=94=20=ED=85=8D=EC=8A=A4=ED=8A=B8=EB=B3=B4=EB=8B=A4?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=ED=98=B8=EC=99=80=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=EB=A5=BC=20=ED=99=9C=EC=9A=A9=ED=95=98=EC=97=AC=201=EC=B4=88?= =?UTF-8?q?=20=EB=A7=8C=EC=97=90=20=ED=8C=8C=EC=95=85=ED=95=A0=20=EC=88=98?= =?UTF-8?q?=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=ED=95=A8.=20-=20=EC=84=9C?= =?UTF-8?q?=EC=82=AC=EC=97=90=20=ED=95=84=EC=9A=94=ED=95=9C=20=EA=B8=80=20?= =?UTF-8?q?(=EB=A9=94=EC=9D=B8=20=ED=85=8D=EC=8A=A4=ED=8A=B8):=20'?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=ED=94=8C=EB=A0=88=EC=9D=B4=20=ED=95=84?= =?UTF-8?q?=EC=88=98=20=EA=B8=80'=EC=97=90=EC=84=9C=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=EC=A0=81=EC=9D=B8=20=EC=8A=A4=ED=86=A0=EB=A6=AC=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=A5=BC=20=EC=9B=90=ED=95=9C=EB=8B=A4=EB=A9=B4=20?= =?UTF-8?q?=EB=B4=90=EC=95=BC=20=ED=95=98=EB=8A=94=20=EA=B8=80=EB=A1=9C=20?= =?UTF-8?q?=EC=B9=B4=EB=93=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EC=97=90?= =?UTF-8?q?=EC=84=9C=20text=EC=BB=AC=EB=9F=BC=EC=9D=98=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=EC=9D=84=20=ED=91=9C=EC=8B=9C=20=ED=95=A9=EB=8B=88?= =?UTF-8?q?=EB=8B=A4.=20=EA=B2=8C=EC=9E=84=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=20=ED=95=84=EC=88=98=20=EA=B8=80=EB=B3=B4=EB=8B=A4=EB=8A=94=20?= =?UTF-8?q?=ED=8F=B0=ED=8A=B8=EA=B0=80=20=EC=9E=91=EC=95=84=EC=95=BC=20?= =?UTF-8?q?=ED=95=98=EA=B3=A0,=20=EB=84=88=EB=AC=B4=20=EA=B8=B8=EC=A7=80?= =?UTF-8?q?=20=EC=95=8A=EA=B2=8C=20=ED=95=B5=EC=8B=AC=20=EC=84=9C=EC=82=AC?= =?UTF-8?q?=20=EC=9C=84=EC=A3=BC=EB=A1=9C=20=EC=84=A4=EB=AA=85=20=ED=95=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4.=20(=EC=98=88=EB=A5=BC=20=EB=93=A4=EB=A9=B4,?= =?UTF-8?q?=20=EC=83=81=ED=99=A9=20=ED=82=A4=EC=9B=8C=EB=93=9C=EA=B0=80=20?= =?UTF-8?q?=EC=9A=94=EC=9B=90=EB=93=A4=EC=9D=98=20=EC=8B=9C=EC=9C=84=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=EC=9D=B8=EB=8D=B0,=20=EC=99=9C=20=EC=8B=9C?= =?UTF-8?q?=EC=9C=84=EA=B0=80=20=EB=B0=9C=EC=83=9D=ED=96=88=EB=8A=94?= =?UTF-8?q?=EC=A7=80=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=84=9C=EC=82=AC?= =?UTF-8?q?=EB=A5=BC=20=EC=95=8C=EB=A0=A4=20=EC=A3=BC=EB=A9=B4=20=EB=90=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4)=20-=20=EB=B8=94=EB=9E=99=20=EC=BD=94?= =?UTF-8?q?=EB=AF=B8=EB=94=94/=ED=94=8C=EB=A0=88=EC=9D=B4=EB=B2=84=20?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20(=EC=84=A0=ED=83=9D=EC=A0=81=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4):=20=EA=B3=B5=EA=B0=84=EC=9D=84=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=ED=95=A9=EB=8B=88=EB=8B=A4.(=EA=B3=B5=EA=B0=84=20?= =?UTF-8?q?=EA=B5=AC=EB=B6=84=EC=9D=B4=20=ED=99=95=EC=8B=A4=ED=95=B4?= =?UTF-8?q?=EC=95=BC=20=ED=95=A9=EB=8B=88=EB=8B=A4.)=20=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=20=ED=95=98=EB=8B=A8=EC=97=90=20=EA=B8=80=EC=9E=90=EB=A5=BC=20?= =?UTF-8?q?=EC=9E=91=EA=B2=8C=20=ED=95=98=EA=B3=A0,=20=ED=8F=B0=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EB=8B=A4=EB=A5=B4=EA=B2=8C=20=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EA=B5=AC=EB=B6=84=EB=90=98=EB=8F=84=EB=A1=9D=20=ED=95=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/components/CouncilScreen.jsx | 118 ++++++++++++------ client/src/components/EndingScreen.jsx | 2 +- client/src/components/GameScreen.jsx | 67 +++++++++- client/src/components/SwipeCard.css | 67 ++++++---- client/src/components/SwipeCard.jsx | 2 + client/src/data/assets.json | 30 +++++ client/src/data/cards.csv | 66 +++++----- client/src/data/narrative_tags.json | 20 +++ client/src/data/pollution_cards.json | 34 +++++ client/update_csv.js | 45 +++++-- ...ect SS 서사형 덱빌딩 게임 시스템 기획서.md | 29 +++++ 11 files changed, 376 insertions(+), 104 deletions(-) create mode 100644 client/src/data/assets.json create mode 100644 client/src/data/narrative_tags.json create mode 100644 client/src/data/pollution_cards.json diff --git a/client/src/components/CouncilScreen.jsx b/client/src/components/CouncilScreen.jsx index 32e7582..4b82bbd 100644 --- a/client/src/components/CouncilScreen.jsx +++ b/client/src/components/CouncilScreen.jsx @@ -1,39 +1,64 @@ import React, { useState, useEffect } from 'react'; import './CouncilScreen.css'; -export default function CouncilScreen({ params, setParams, tokens, setTokens, tags, setTags, onResolve }) { +export default function CouncilScreen({ params, setParams, tokens, setTokens, tags, setTags, bankruptcyCount, setBankruptcyCount, bankruptcyWarning, onResolve }) { const [members, setMembers] = useState([]); const [agenda, setAgenda] = useState(''); const [impeachment, setImpeachment] = useState(false); const [actionTaken, setActionTaken] = useState(false); const [result, setResult] = useState(null); - useEffect(() => { - // Initialize 13 members (8 board, 5 global) - // Their vote depends on risk parameter and randomness - const newMembers = Array.from({ length: 13 }).map((_, i) => { - const type = i < 8 ? 'board' : 'global'; - // High risk = more likely to vote against - const rand = Math.random() * 100; - let vote = '미정'; - if (rand < params.risk * 20) { - vote = '반대'; - } else if (rand > 50) { - vote = '찬성'; - } - return { id: i, type, vote }; - }); - setMembers(newMembers); + const [isBankruptcyWarning, setIsBankruptcyWarning] = useState(false); + const [bankruptPenalty, setBankruptPenalty] = useState(''); - const againstCount = newMembers.filter(m => m.vote === '반대').length; - if (againstCount >= 9) { - setAgenda('정치적 탄핵안 상정'); - setImpeachment(true); + useEffect(() => { + const isNegative = tokens.budget < 0 || tokens.personnel < 0 || tokens.info < 0; + + if (isNegative) { + if (bankruptcyWarning) { + setAgenda('재무 건전성 악화 및 횡령 배임 혐의'); + setResult('당신은 파산했고 자금 횡령으로 체포되었습니다. 감옥의 식사는 다행히 무료입니다.'); + return; + } else { + setIsBankruptcyWarning(true); + setAgenda('파산 문책: 재무 경고'); + if (bankruptcyCount >= 5) { + setBankruptPenalty(`파산 카운터 ${bankruptcyCount}회: 의회가 매우 분노했습니다. 모든 위험도 파라미터가 상승합니다.`); + setParams(prev => ({ + resistance: Math.min(5, prev.resistance + 1), + entropy: Math.min(5, prev.entropy + 1), + panic: Math.min(5, prev.panic + 1), + risk: Math.min(5, prev.risk + 1) + })); + } else { + setBankruptPenalty(`파산 카운터 ${bankruptcyCount}회: 의회에서 강력한 경고가 나왔습니다. 다음 의회까지 복구하지 못하면 해임됩니다.`); + } + } } else { - const randAgenda = Math.random() > 0.5 ? '이득 규약 법안 상정' : '표적 규약 법안 상정'; - setAgenda(randAgenda); + // Normal Agenda + const newMembers = Array.from({ length: 13 }).map((_, i) => { + const type = i < 8 ? 'board' : 'global'; + const rand = Math.random() * 100; + let vote = '미정'; + if (rand < params.risk * 20) { + vote = '반대'; + } else if (rand > 50) { + vote = '찬성'; + } + return { id: i, type, vote }; + }); + setMembers(newMembers); + + const againstCount = newMembers.filter(m => m.vote === '반대').length; + if (againstCount >= 9) { + setAgenda('정치적 탄핵안 상정'); + setImpeachment(true); + } else { + const randAgenda = Math.random() > 0.5 ? '이득 규약 법안 상정' : '표적 규약 법안 상정'; + setAgenda(randAgenda); + } } - }, [params.risk]); + }, [params.risk, tokens, bankruptcyWarning, bankruptcyCount]); const handleAction = (type) => { if (actionTaken) return; @@ -77,10 +102,20 @@ export default function CouncilScreen({ params, setParams, tokens, setTokens, ta }; const finalize = () => { + if (result && result.includes('파산')) { + onResolve({ bankrupted: true }); + return; + } if (result) { onResolve({ impeachment: false }); return; } + + if (isBankruptcyWarning) { + // Acknowledged warning + onResolve({ impeachment: false, bankruptcyWarning: true }); + return; + } const againstCount = members.filter(m => m.vote === '반대').length; if (impeachment) { @@ -98,14 +133,15 @@ export default function CouncilScreen({ params, setParams, tokens, setTokens, ta setTags(prev => ({ ...prev, wealth: Math.max(0, prev.wealth - 1) })); } } - onResolve({ impeachment: false }); + // If tokens are positive, clear bankruptcy warning + onResolve({ impeachment: false, bankruptcyWarning: false }); } }; return (
-

[📜 이번 주 상정: {agenda}]

+

[📜 이번 정기 상정: {agenda}]

위험 수용 계수:
@@ -115,22 +151,32 @@ export default function CouncilScreen({ params, setParams, tokens, setTokens, ta {impeachment &&
[🚨 정치적 탄핵안 상정!]
}
-
- {members.map(m => ( -
- 👤 - - {m.vote === '찬성' ? '✅' : m.vote === '반대' ? '❌' : '❓'} - -
- ))} -
+ {isBankruptcyWarning ? ( +
+

{bankruptPenalty}

+
+ ) : ( +
+ {members.map(m => ( +
+ 👤 + + {m.vote === '찬성' ? '✅' : m.vote === '반대' ? '❌' : '❓'} + +
+ ))} +
+ )} {result ? (

결과: {result}

+ ) : isBankruptcyWarning ? ( +
+ +
) : (