From b78d2c80ce48f3d5f3a6faf6e912421f1fdbb339 Mon Sep 17 00:00:00 2001 From: cakipaul Date: Sat, 7 Jun 2025 17:04:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=86=E8=8A=82=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asset/art/gif/c02_杂项/听纸杯/0.png | Bin 1949 -> 1916 bytes asset/art/gif/c02_杂项/听纸杯/1.png | Bin 1931 -> 1900 bytes asset/art/gif/c02_杂项/听纸杯/2.png | Bin 1949 -> 1909 bytes asset/art/gif/c02_杂项/听纸杯/3.png | Bin 1931 -> 1900 bytes asset/art/gif/c02_杂项/听纸杯/4.png | Bin 1949 -> 1916 bytes asset/art/gif/c02_杂项/拿纸杯/0.png | Bin 2295 -> 2274 bytes asset/art/gif/c02_杂项/拿纸杯/1.png | Bin 1858 -> 1816 bytes asset/art/gif/c02_杂项/拿纸杯/2.png | Bin 1863 -> 1826 bytes asset/art/gif/c02_杂项/拿纸杯/3.png | Bin 1884 -> 1852 bytes asset/art/gif/c02_杂项/拿纸杯/4.png | Bin 1888 -> 1856 bytes asset/art/gif/c02_杂项/拿纸杯/5.png | Bin 1906 -> 1857 bytes asset/art/gif/c02_杂项/拿纸杯/6.png | Bin 1940 -> 1883 bytes asset/art/gif/c02_杂项/拿纸杯/7.png | Bin 2018 -> 1981 bytes asset/art/gif/c02_杂项/拿纸杯/8.png | Bin 2013 -> 1968 bytes asset/art/gif/c02_杂项/拿纸杯/9.png | Bin 1949 -> 1911 bytes .../scene/c02/s01_公寓门口/bg_公寓门口.png | Bin 0 -> 57166 bytes .../c02/s01_公寓门口/bg_公寓门口.png.import | 34 ++ asset/dialogue/c01.dialogue | 9 +- asset/dialogue/c02.csv | 8 +- asset/dialogue/c02.dialogue | 13 +- asset/dialogue/inspect_content.dialogue | 24 +- asset/dialogue/item_description.csv | 87 ++--- asset/dialogue/item_description.dialogue | 15 +- config/animation/entity_sprite_frames.tres | 20 +- config/default_bus_layout.tres | 12 +- manager/scene/scene_manager.gd | 16 +- scene/dialog/balloon.tscn | 1 - scene/entity/ambush.gd | 4 + scene/entity/note.gd | 3 +- scene/entity/portal.gd | 5 +- scene/entity/portal.tscn | 4 +- scene/ground/ground.gd | 9 + scene/ground/ground_loader.gd | 4 +- scene/ground/scene/c01/s05_animation.gd | 41 +-- scene/ground/scene/c01/s05_院长房间.tscn | 341 ++++++++++-------- scene/ground/scene/c01/s06_animation.gd | 16 +- scene/ground/scene/c01/s07_animation.gd | 4 +- scene/ground/scene/c01/s08_animation.gd | 10 +- scene/ground/scene/c01/s08_书店.tscn | 4 + scene/ground/scene/c01/s11_animation.gd | 41 ++- scene/ground/scene/c01/s11_黄包车演出.tscn | 33 +- scene/ground/scene/c01/s12_书店外_诡异版.tscn | 6 +- scene/ground/scene/c02/s01_街道.tscn | 18 +- scene/ground/scene/c02/s02_animation.gd | 28 +- scene/ground/scene/c02/s02_过道.tscn | 99 ++--- scene/ground/scene/c02/s03_animation.gd | 15 +- scene/ground/scene/c02/s06_animation.gd | 6 +- scene/ground/scene/c02/s06_二楼.tscn | 1 + scene/ground/script/c02/小手讨东西.gd | 1 + scene/little_game/拼凑信件.gd | 1 - scene/notification/notification.tscn | 18 +- scene/player/main_player.gd | 48 ++- scene/settings/settings.gd | 11 +- 53 files changed, 570 insertions(+), 440 deletions(-) create mode 100755 asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png create mode 100644 asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png.import diff --git a/asset/art/gif/c02_杂项/听纸杯/0.png b/asset/art/gif/c02_杂项/听纸杯/0.png index 5c77e8f2a161ff693132ded1823f9ae3c15ba750..aa98b25b898fadf38602d2d19985e625eb37c8c8 100644 GIT binary patch delta 1811 zcmV+u2kiKr5Bv_0F*!C#L_t(|ob8?8Z&PI$$G>N8ZvDZ^V76lf%*GM{kp)Gmn>U(} zCFq65TjM4E1H;4{00_c+w(~p+Vj3`-oBsnyg#0E zRsfN(Cy~Dpf1r!i>ISTbmk$lw?qk1CPO<(@EE{hU;fAZ2wpKSFC?g|DqYNt)avs&{ zQK!At4G4nX$yO+YrJMg$)ae=+bfhR=I8MvPNgxO zN_)QV&-t?efcIXHk)P;U2{Cng*T5j2>+SJX|AqK5j3xKjW63>a#jp|rRF|TcRf`w^ zpelux5ETj2sWdwKcA#ru5I|{e>FnE45h=xD(E_~Z5Q@>lO2}Wccbrwyu_vvHrLCGv zrc-H0f5z88-LnAT^p#6EedUtzb16w-B?NeM)+hGw15jE?Eziwjd2SXTKL2c49ffJR zyISZddrd_OJ0U=2hbt2M_j#6`y?Db~Ep$LVfJ!M8U@1iL+B@%-y}s7Fv!c$?;l1|g zP`^Do)Ne25v(O(vxfBXfLVo9J;-inhuydK4f6nWlzx%dA4gj2=_zHbPea6qorAnL3 zaHJam&=x8JC`D4E+ZzN{$wi)nWFOo^_m*wWztxELssv=Q ziLDI|D8OhOP5cf46+ZU?JqlVB7|P>0f>*8}rpL1C-AN zf2)NKWFOqC`MIlwjocTe0EC4! zdXuKl9l8{1kQLHMOcOc9=m3Zcp^(C8e-$K!Y-Tp45URr!umObBN};>URWgw(EQEM< zx}WPA`ihELn#2TYAu2`QC@5Z#azk1OP&+!*S#Qc^0rZC`H{`OtUQ1rT!mheP<2;v*VVwjSru;?&2N?iSA%K4=`o_;oj_EE%s*n}ZNLIq7`+2D^ zc>%&g7Bh{>V|8^$003FLfFlQ=w#SapzW7B}NKo9vm6y=_g%u3BXY$=;(BZiz1#km{*`l_cdi``4)_|9EMF-zGz+07x@+|JSAy}mnae=(nRWa!V; zYqcktO6AFZUj?~IJt%FVBCs|Zd9ALTC`r*Dw#W`yshN4-b-CSpRSmL2bgErkQr9?C zba0o$LP))E+#s?LQtL{e*V30GEQI()rA;^wTkM6HqQRZp;skpkCb&t^*-%0_&m9V~ zLVEiXHS5$8;Et3ayZ=@}e^$tP&vvf!2w5S1Fm<$_8|NrPQpo5~zs>2aZX_gyc%lDz zrT$!@XMFYd=w;Mlk?r-f6F14wC8TENeJvDP4cY4hM~C;?rn5W9%F2{6p1hkT`<(&8 zLJmFEW7j&PtF5HmGN_ACkRG!1PStM>Rh{oOFX-<}9(xl2F!{|ye>0lcaL5XoyqmVh zPmJ67I}4=)w{GL&uD2qFBu59&0n#3m+jmYaQ+gauJS1A7^VC3i*9VJ)O%fDs;#TsRzyx!fMEh#7Z4) zub87C5{trKdGwlNf23@P2nk1`6;aW?`ye9m?Ja6i{g4)N^3#(RP&ouGUb*T>C@bsi z1OQl(PUjFeDWrvX5#IL<0Kn1)TqQx5q2MHi#T-&?F0k6+M2618g{w_$QS)FCA!=yK zXG&tMNT)Fpyih|Q2UtXiPCk=EB)%rY5E%+PzYGBQ?90#Df5-p`XM5ee|JK`f&wTlR zB)M?-71%4l6SFgLmwoWtB%AN1!>ZArj2yDn-yj0OiSN%?e#$t(Vh&NX_azXE^%(yS zv051?SP9t-h!A415>jh8%4E{M>QRQ(#P{lsXxXix7iM#opE6Fci4b>(Z&cU_F`*=x zWN{V9TF6F3DTD}uAP9mW2!bF8f*=TjAP7Rk`5z_myn;dMpY;F$002ovPDHLkV1ns5 BWVrwU delta 1854 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 BWVrwU delta 1854 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 delta 2270 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 I!o3sz1-gG&^#A|> delta 1857 zcmV-H2fp~c4%`lqFnO>9(E6vzJ$W@u;Llxbz0wh%By69tjVhfu4; zxKJaw(6C~oVWBM8784hmCX%=iR|Xbrh{nW)(Ul8vp*sa7Rss=;NDYR5z?7jwr>{+m z*TwX{zL|Mnoq5BY)1F^KI(_#Ix$pk&Irrne=>UQt2!bF8f`1?gf*=TjAP9mW2!bF8 zf*=TjAP9mW2!bF8f*=TjAP9mW2!bF80tfbN+o+md2Vnt9GFCOa0zx?=gcu@3parGz z1CR(IhX^4?tl1T)hyMP)vUH;?3qKECG@4bPC}1h1zrRl@%Yw43s966A-qh@t$47;|PxG+3ff8`>AOn=V^Lp&Z=Ph~nnpMNQr$K2eU zeT_#Bq}A$H_da;)>j@HV!EOw>l*_vwt32*@-k*QnLoRn005EUSoE4Mk6=B)gomIM_ zb)>ZRY{ty+bzI8j;f$Wj=->jo3diGd1(XW`U`x?(lmReIS-PQHy1H!{%CgYX)on}S zDg$6B1b-+s`2ICU)wGstnsUNY2mo|$-2$MLs%FPVF*`Pj4|YD;%{f|JAo$&p&{z zIC#_$ArbOY?-L3rH8=pYXWQ_f756;9aPJPP*gVS4^_u@H528VYG4Q@L=@=q@Kn3ju3sGh4CI6?buk!rjNo!xm)tr8h<=4WT`VBw@wr55 zkc*J%$)(9inrj22WIh>ZGlr0i5TGO`nXbQAx2`RHxU--v?A`u|YEQ&)_B`F$7Js=2 z(Gu#F;T36jt$FljOtN<)$q9)HKcPBmC_+w%?%DdM+iq6@L}}C zH)dovY;+YfQz(*M9FpBS0fN^cUa89KeN-Q8a6&dh!s6Uk_Zs9=?dh^ep$u6exsmZ^ zSD`78PFWh~pbeC#q{_iu)*%G&N>v=URagk|ySc=%(fwc{#EVK9+|w1nTz`lcVb>`X zVJl=gjT=tb3UTZC%VDNPR*2u$3E&+GP8pSA^j{UC3|S#jrXEfaLsp0%+{Xz&ND6uG zvGuB!Ud<^IykN0)qVbE2usg%lVIia*5t`h{c;G~V0%Y$GL@^_B+c6%xohN(E0O1I! zw?|jXpe{l~RtQkusLluHf`8JK^L>5$Uk3mTeRd||+BF8ULWXYVje%nWs(5Rnbl}EK zoV)xhfa(XSGwVC6B0`Jc23a9hY}$anO&dzDZ`=d`TTpIf9DUoKDLWScl4c6i#i<8c z&3fS@#K}T~+kz@cnyCj_n@AzKFmzH&<8q4%C*+0H0_O-}m9orqsehr>yn7Uw=@iub z;_n(o9uFMQqb{nAvqrs!{Eb7INa_69!P7f~K!rwI!65wUoZw)^L2sEjKBo zg?N$N@;Cs%a3owU!EpJ)VNOz5j3Itwff0ip8BXp`Ty0>D8V8FA(W$98SrTKIEv}K^ zg-(4OU=blsijz|?vwsURTp~lGin9QKPfmTxMg~B5`@NEP-#Dl`#>>CAaANoKQ1ig* z(GgUZz4y})n`?8zs?s0z?@+O>#Vz?`-+X6;DdPl-F+>yV>O?x-fpoh1E4=;6IKfKD zNgss00000NkvXXu0mjfyUSo} diff --git a/asset/art/gif/c02_杂项/拿纸杯/4.png b/asset/art/gif/c02_杂项/拿纸杯/4.png index 2ae5df85dea7fe86c99e8e74f2a6176ed69d644a..b607af2ef7b4aea6923249fe8122f33ff0ef5e3b 100644 GIT binary patch delta 1785 zcmVO>7ip7{~tuUE1B*c3Y@hC;W#@yrtfbfZ;L|d~fPz$P1a2mUP`3eB{ z8{Z2vC0hqpsZ(eFBR{5puo7Z6evk+^@4cE*Kn|zQHlkM1LjI01iN#{-sotK@=by<; zWB1NZ0DxuP0RVjcbC&cqvl~OsWTrijxsSVFFYe&c8L$$f(_uDt$C|b9OHHv@v;d$j zUJ3>EbO6kRoSwMq*`QjAPRg0gv?JrdFE=azm@n{{aFM@byokkrVrt94250(fPIpZi z9O2Qix+oTl)+Cmfl z_j&qw!tQE+VC|xZ+-|SmfF8En@;Xn;p`H$aK|*SQ(`?EQ7D5)XdutBnrO!}!$RaPK z-mP?*WkpQbnU-#NZUWqp7XpMI8(KjM3nBF|b2HoQD%1oyA+;_B!={1D$GYU!Awcvi z^x1q4N5{s=uR#D}3E94`U(IG~laa8ys-|Q<5p$k@?V=9JgaE*7wtz&+`?qatp`*(N z0OV8w+crL`y5ns)a+2We~gCIEbHin(pq8ry8fC6-DGbmQFjY5)~O*SMDzBJ z=K%nJhyMH{@VuHDo=HktqRY|)zt<+@?OgsrSEnw>E|4}q(xVcoxbG~>Oh>Xe?#M8Y zyJuSFbob;%?>|D&Y{(|0x4+M~%xv_aX>oexDkQs8&gW#3| z%bHZ9g+p4%zR&hqKxG#+d+xj=p{%UE9ROh2?am=?Qb-H&BeDK*0Dxt5xLSgLDMQ0a z3X3r$Xe_YW;3UK3&h_&RtWo1&kr3TA<+CL*mfh}|1V41w#{m`zG0A6VV5jfN@JNP6 z<>vqZpMUiw8yNuM?RPgHys=C5OqKuB`s-VsgPI2xPmIG|_TjNnHrHmts?whhZB}i| z?{CTP`Qfk?ri>FT#t=>0@;;<&QawneD*qXAP#Gs!33(V0A;e%Mq*`~B%}$3pk20(V zz86*`%N~6AePYH6Q^pB432`@gtHMTz7g~~+EUp4s3u#3}h#&}pAP9mW2!bF8f*=Tj bAVkjpo=0UH*vO4}00000NkvXXu0mjf!sux- delta 1827 zcmV+;2i*9;4&V-uFnO>7ip7{~tuyR`e!ZVPn_C18pq3RWrxp%#hp zfJXG7;p9cbK|OdaCLT0RB=I16F__4OU`#xi=tT{9&=`Y&Ce#KZAwftm^aB>kF5NE8 z7G4kAcX)SpW_I?AeV*;}OGw(8+2)=1xBut;*eL}BK@bE%5Ru0jk-rar4s0J-r<&ac zVG&9)mNmNpLNOvlparFJwdA2FLrNAgLJ*Sf~Cx z_aC|Y4>h|1)i69fq*N{kmCKc!duHpP0uWdXHQ1FbEyE8h5-CX!7gz}i+R5dFQ7u;h zGa==$A`$!RJC`rHUPEzzs%yehh}rQbIvMj*lK@H+rDae}2f%DlSGk$v&szWxiWEYBK|LJ+Ga+Xtueo-p zmZFn#HZ^0*IQ-L13jh{!q-VP}p=G7j&1T>-%KKj-nm>Ay+KVpXzCdN*$ZP*`isPfcQeY7!ql^|>>hkf0fi0+fUaZ*?&ZRs*Jp0uL|3wZqwLS6D1^l<%PHdC;>R7! zB6<57Q&4BeO5C~@ObRtv4C-CUjY8ifa&nu#lw+Ng?%42d5bqNgR0nenX(2%Qbm-N&^E!Pz8tZIe>*^1= z-CnN&J!si-yH3lYo(_OPLMnmNY|0B3LaN!lH3##;XDB>mkrz_yR=Uix>P*m?mhO0N z0-TT+0t6o$T0sg6A+<1jE8XlSR0KI8l`aN@rh&_U$GYU!Awd0C=yTZ&PK-~GUxNU| z60&n+pPEZoCL6K)WmeNo6rwg8trNgI38oBx zrx*@To{$w%&(gywF=U1K!F`?`lp-@PftGiN-G(L3f6!!$L?cA~dOq z>9P|A3XuJLpdK?Kw;kiL>oa8U86cdHTHn!58Pr8+$O-|9JJoz}u3VWiUpKVpRRF-) z(Ia(kU1K0CWbFEkHL`z1Wv|^R9Jq3S6{pVq1)%gn>Yl#dl0;|`+#oBYg!OANw0>>j z>nm3Qz!sF6n8wh+(?!<;Kr|M|Tz2+>HnUdv2r*gga9farXe|C9TT@p^E(}eo>0EB9 zFd;9b8aO9}RmqAa3LUK$+*1%s#Gw}Mf6p-~Es>CDEMAg|(E2TiC08}6Mb$%pTFAjq z4q8BI37R{9!In^TuB{CKV8z<(L)@g07UD&8)1v?Y%P6>7f+<78NeYWG#BVIHLa>uz za`(oC2DYeiutCSSd#~+P-P6T?wEo7nXQ38l=lrPDKkuA>aAf$#Y>@uCMGex01P zf}G<7n}j$!yj5W%#0@RUO%_*ytcA29B18}bK@bE%5ClOG1VIo4K@jQ|&i_4Bdz=#| RMS1`L002ovPDHLkV1iWqQr!Rm diff --git a/asset/art/gif/c02_杂项/拿纸杯/5.png b/asset/art/gif/c02_杂项/拿纸杯/5.png index bb24d3450273dabde653bf814210308a74b0bac5..3789e30b0ec925da02f8228e86cdbb0242eaf65d 100644 GIT binary patch delta 1830 zcmV+>2if@Y4#5tPFn&u@W6t+UIlX%)HaQ^M3Yu-e=yKZ2>_L1VIo4L4ObgK@bE%5ClOG1VIo4 zK@bE%5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%5ClOG1VO`ScLy3_czDRtx2=30e~yl^ zz9yEPA08gEtbE?L4OcPjIvqrY5s3f*E?>UF?)uiWy92f0Oi^A`6GjnY?da1W3aQpG(91id81OOPuA^_m)pHif+ncW;R zo}6>t=iKkyUb~)0GGHY{MTb7v>$f}$uc#>$3I+g#B7X*6>Dq_a5(jYl@Q0))dR9WN zP0qNc8zn_W%6M|lmT~&$2lhFsR7oUdDWvnM7vXT&+O=c5UHO9lYwG63NGjjOHeU<0re0swv6w*e^KYb;Dn zVqt0$pMSmjVw-!_I4p%6JATUg?%HU@{>67ba&5nN@P&#wV<{hQe#e>sxg1)JW5-Wf z+2l=F;dS=D-@ZMI4T+~PxbGkUAZBhsCVSgHK7Q$kir=%85961yzsX%cxeoa;a&*N0 zq>o+vvEq38;RAFhI_>SLTT|%Y+F#a2j|_@JSby9tsg!f+{8<249`y2*vnEnNccio8 zTyC%sl79FAKuN?>K8&U1#~o`Tg|c?~r(d1J4e~O!I$?1fYtY)&!&CPKUhHOOG+vgxvI%JT<6Tu3I#_Z{7OAuR-`9v$lL z+}Td;kD6UA>|OIAx47t4@&-*?ZtXa&ZIO?VTHrQ;yFp6Go~;8lEhhS*Pv)FNkrLuY zqv^(3Wl@Km5NBmoYo*0afD>|)x*N5o9DiL(W^cz22PA=ts{(QcO!CsTB6tY4ZB^r1C zVkq!9YA8Zhh}S1PC~7k223aAs!oA#8kQL&Wa%v{SXVsXj5Cyl@+D2hIjIMAM(2_??zsJPWEISs^-pPx{njSrr}J<**P^FC0@C3nA5BP6%51a)5=9pr~aN z&S{Ii5VvS>u5EFGy%0CJNzhqQLO9PI3bI0a2l}eEsV2Y~DQ)2kw?rLuC9FnWKE>@@>~h3tH~$EsHP`rVN`Wl$HPAU%iZgQ~w;ss`U{UeM1Q zI`AF|LYAuD9`{(qb?a&*MX&dio}+`We@*Z%@g`DT3YKwm{fC=uKsE2M(W zn=rI_Q|afs_W-~al$@Bx(2m#3+5$k-j3JlJJkf483Lhal%L8r;au79RPqH^ng?!mt z&){;43LWx7>Vb2Fuu55Gyfn~O(LD;xcnntY@ixauSrHKuHDeV~5r5kJGR(w=Hub1} zNDDc6;^guhjOBx!yK&Q&P9)vZ)Nr#Ig*R$WU0>1pvSo zUwz3&20(bV*U2aEAAhoXrpy0t;q0zAVHJV3lM`?r`}FcCn`_fy)#=ZNcUtN@hyZZ( z`wK>pW1L_yhbTh*eTc_<;P#a_zhj(WC1f=qLWsdiNVRmNzD~_KZLym8-r5)|d-37- z$&3-?7$?|7h;zVKDr|(fp(MG<;wq4}kd=rC5d=XH1VIo4K_3tVK@bE%5QL`lKf4iQ UiR{}%xc~qF07*qoM6N<$g0ALSr2qf` delta 1879 zcmah~S5T7)1N;C5OhTj&aDaUD-ld2b3FK%;4;?fDf*?gesmFy9ns7%zsss?Fcj+Xe z1c(IWK$_A*iDFdRfhL?Ze`fx-|K;D=*`3*keb|>J!}sBMO)QtHrI`sjhOk{W876pJ zWaJfx_t;J_sd+X;De0V?Lz{=gu*ZuSK+v#`a5aMWXOa({a!+axD2K^Mfcye*&i*bV=JW^Dl=;9XcHyG;daH_aviJ=UeEviK7KZ>`H7v z6qGwz>WtX`+W%MadBe7;pr}hYImJ=8xh*(%bp~&eaQ^h%!}O;xOZQ=3a9Hy(Ey+Vf zQc~H{&_z8RVLrlMHZzg*=euf^pSeaqyZxgvhOmnl-CfkVREkuLSc@zZ=yfbcYZg<~ zo)1H0-|JP4>m9JNcx%!kn;k@CFTPNZ3eA zPM|ZD=f!*>LeZoIV;H;fw`lWieGnx7w>95Mr&vJgpR<0Ce}AyQ|$#FMqR2VE^V zDWiCCBXUk`usg@252!i0LozIdgstO)+apdFcb=)N+zPYvu0XC9zRc5$^RpKmqz746 z6QBWh90Su&ifRbX>sN_`61R6ZIH6!Y*8!U#O7#=c&5KBTu1x4zI=;V`R{0*nlnljd ze2q^p?BKA1-A+d`{sA2Eu2^a_E6yf1rADnMitw(RYHo2E zdrxI86wlv&*Ba}bmHEeK3gMBWBXYU!GR+{seHK(0HtcAKs-f5<3Phl2e+D`Ir7mY& zbPg~Zx+Pqn<%QEtM#|zSUKy0&tSWraG`d=_t9#}gP}L;6C)CUvrqX$2IY`+QrzTwHTc4;M`yWu~AB8SYrci z^LVmB%N>M-HgPnZ(t<gWBly}8D^NgD)y+U(N8+<_ zoJme`8P(r0BZ{(BQkaK~J!?~_YHn4m;sMwpd(w+S9XD$kd2&OO8&d!h3rjs_k%)yr{G%`=&P~!>t4V;P2y>7X@wG zOVD2;N!PRqAwqMiE_wp(J-Yq=W^?0B%d*)krE>8Tz%4AeRI$~qY?E-(LM_v-%d*F} zfQL`M<`g!N4;r9{M`^5n4nXAOD_Vx=7EOhS_Uqrx7MFakJ)=XB=-FMP7rX-U5u&Rz ztDeGqR_FAo5GCIkPFTpI{qG4!a9}?9YzZyhf2=G$fsA4YKb5W(fW^!j1Pqo+G zS^CaC{x4CUdFKaSIO2GIuUbLGn#(Aj`B<&;qg%WYFrc}#?Y&%u7p9~9Hgy2N)VkLy zS>2Ru3CR+pyF#<|=5s4MG$WgnjDy5grLkt!HNUkhzSdmwmLWq64h;sRk@vMnb;tkB zgB4Nj-AZDCfq4PCC|w!fg?BN-{qI8|X+JJC=3sgJ5ST^a N43;Qcvlb*K`9DVoc-Q~{ diff --git a/asset/art/gif/c02_杂项/拿纸杯/6.png b/asset/art/gif/c02_杂项/拿纸杯/6.png index c6747dc1a37bdab34cb4080b69113f20279f204b..fc17934bd6da3a7c8af240de36b7d7af63fd38a6 100644 GIT binary patch delta 1813 zcmV+w2kQ8g58DoqF@F_FL_t(|ob8=YY!r1A$G;0*w!5=sTdCV^i6kJ2plE}Co8rX- z5|M+1lSd9};(2T0#c&|;Af5;uyby_r2UERxKs0(VAi>0@fdq*lis>K9mUfr!4o$cH zdD#A@znz_(o!#!z_uBV4b!TRq-@H%Xd%yY3>=qCNK@bE%5Rteak-rgt3_@!?fYmTK zIH1he%C_;_$SCV`VmbK1!2zXg+xHl*V%QBjh>TD)3IMo#`3k%9+qBjLs0Vk6szxng zlwl>L7CJKk;L)AG*Kj0_!%~PDcoUr&^OF+*$}{TKeNP3-uC=CZtp`vK%C?4u=)6BBy=lE&!!}25ySdG63MiW7|~G zR`~ZprMMri+$I$RRv7}U1Ui!Hbz~^pMkLkiNHS#rz}eyH(4Dd5;~r{5uoD850)BW) zsA5`sEi+Rg!;d99-1M=n7M4N)py%1W07|85esTiylN0#l#pgVaJ=niTZHg|GZKEgy zU@GLq$usJkKSnBlwlBW*9snRclve4XwCeA+)WQBeF&I)&SnER{k;{a(P z)w07+hDMh!PT2tv7t%^7&aeQ&LK^KI+#xGuqe4>1M$Ha@sE}4ewSNE`LNI$Tf8@>g^4tl)2d~03aTXvgk47GNct0V___R*3yTZGrobdiNM*>STjNb%_X=Dt05<(EmacI1^@wtR3qM* zaDJYf&6Z_Lf48MZGkJ1L@#KUg5?#)>Ei@a70^E@5AwcOnND_(Q-)G{!{-}06VrC0v z$O+M0y!}t0*0i;Q(q3S5E2xq-dc-k~8Yq`R-D<}tMdxHE;rmzj|j(#*ehP9==2kRW&knp5z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ND)MKH+>aZ||W%Aecyk>Ng8Q_o`MT0-`gX0;hnJu@pW2_yGs z$euGmSjhe-yHu^Iuiq89TLyIz8qz()466BPsSbX%zF@v@;P5*DfRQiHwPJ`(hpdp1 z`!k{RP+H}urb`>{j^WDn-vLxU8QGO63KQ}|8i8|$uqs(r zq7-OV^v(h+5r-moy9R=grB+IGAEE4girM$|Z@g`E2A)bbOI<-sn0+_>pT zDBBl_002T(#M#763TYwLi0yp_01z??u9jfR&~TE%qKEkPf>0Zr%rIG;zS+VNwGI{; zqDxagTM`qpBA%I04PE*;z#>CT^4U39$z>THnW0hnc>uuYXHT<{0T5p8b@S2DW2)<3 z`Ts4Pe))B%BCvU49PWJ|Umjt9b8aTA2L0*aex*Ny2mnLhUI+!*#|aiaMAMe)K_bxw zuaCU>?c)S1AsYb^LJU?yYLz4Xaca(Gi&f)$qc>jm;KMHybD<#nIKd`E+yP&&uo2>g zmgFUit3cL5)*~WB5ClOG1VIo4K@bE%5ClOGn$G{{4Q`@?u89Qz00008NkvXXu0mjf Dc>r78 delta 1876 zcmV-a2dnto4wMg&F@H`;L_t(|ob8=YY!r1A$G-zz+TGc*t<>!w0trYWDB9p3ti_85 zB%%imCyyM|#Pim~i{U`xK|B#i^g<*i9!&M3382w~K?x={4J1eeQAqz#wzRwKc4)fo z&%^dN{q5}R>}hje) zAgpM#EPJ@XN=VosR})6HTmj64 zRKto!-Nz4a{o{KKf5oY;2}>bn;7xR9%#M!%D9j_UEKhdg71f! zB^+b`%!HW14-(J>*Jy%6FT0yZ8CVmSQo;WQyCrIQkCB=FUopf6fjw*eyGDqEgn(&COW= z&=f5uLnbqYpGN=2;I+#bympzS6q0EhL?jYXz>=Jn9XkOO8@MS-%K(56j%-l{N8!Kw z<>Jm?x=AVqtTF^x3UqTr~+4lL@-vt1q22v_DkW#%JwmR6mn_S}#f>c8b!?EM1R6czjDzeGl_VZU~ zu_gH!dS81J01&r#;No{DF)?xnUAww`|IUIF!H>g#f029tB2#ci?U3PvQJPQDeK`-qA8=`Y)i?)`%mK!XDWFOoIP!zG? zM6j@Uxx;MK=P%u~%zmL?!wvFH{ZQW%sx8@CQi>`aXFk`*Pft8(+~67jc_ChOR(Pke z=Kf0ie>gx|i1$;k36i1F&AVD=QG>LQMnZ9h1rQceDLd9WWQD9(ND5i6*#Qt0(rBpm z4`7`Lp}Ml`2YVsag3U<=z(h!;poR(dOg>xh;WQM|LUQTgdvw<#q=f+0vqPVqdymuG zWA^3-j;{WYTkWkh1Pe}t#cYeDkXp)A zwG!2`*#-b)m4oS-0uH@IdnK8q5For1^Tf}TGn4Uu{j^g+Z--4*3Rxj5C6@62Vkoeb ze>D^#E2PpVJS@7IbAzmqTH!w3)sPhuRB~!2$7j`;tPl;i)!LQ9;>55nFv${98FKN) zXx$h79%l3P{*w)bT!y@v>;wQ5<`vFOPK0`m+0bM5X3XTXh_@x&nUSE$f4QZ2azYY`cK6p7>J3E!UP$#2p!gdkiA4C{ zGx45(R5~9qvxPF`glI0@{5RBb=Cs&5MdmnVCMiV!Qco=b^@`yr10X7-7R+lLYhn3> ztdR8R-O$H!%?3Zn3NZ<~(x)%W>g?byhlP;k!m)(05K`^tgs@Xz4zLgs7QJl3f4OY2 z7vh%<-nA`GuovP7Hwh+dN(krPp&=`zqo=d#G1UZkGlj#CnUNJz&rdt25=K@?82kdw zDfoVn6mno!kK!KK?O@g zGoo5%R(=wO?oE+>&j4W|`yOvsf7PbGL1*M%8Pr8+NcRvksOGJuI{20Pg890>!*2lq zhQ2)0h#}S;vO#l^7ea+1P0LyN6H*u3fT1X{gd!7UUSVqCs5=F*!{z`(cXtT6jH z!J>y~nz}lXNVLQ6D{n#jIKfKDdO(B_gO!kK>nseD=)%afRN{*M@`0&eE&I+@S z6KpcX8}PLX8zFvZNq(}p3S=#0Eh0h$K@bE%5ClOG1VIo4K@bF??)(of7K$cYyT+RU O0000L07;J&JfnV_a*>O8sClizwhDL z;KpSUXQ!7ZtUA2|n_|B2@`L+x`M|@7<&yoGytWwsE#7s@fpFR2x+4M#B zPH`g?3Ml~C)7epQTsORVTpv4nq!j>QS&MivHi&O-U4JXM_Q$JtNwop12+<90-uX>i zw-pJ}WV2bjv9JG;E|NhJR-O9q<5QN75|gH_+pq`s3PhPQ&i?So0)T-o6kR(I?^6Js zNFh-Pzl1^|b#V7Cd-!V(cW)$S3S>ALi1(?bOb7r_*POMFQxU={Wofe6tTnj7Dw_ON zk^ul(hJW7H`#MsBhNTby=-RatKz^>VFfopWiE(^<;Dw6U&83qCf6OSM0INPkbK>L~ zb^iS6qT`FNzYqNS0fvqbDFC=M`~_mYn=zM87L*G|+FV5p#QRjxsf$G3^uvjhXH+_I z8!EKHKK9esU*WZP-?R5yB3p6!yVIC@@GrWzcYk9k6Y?AhBE$#!&If?ei{BTWPyY7^ zZLJ&aeJ#WfBE$nn_U%wWzQF;YJ=R*#IXltOFmY$XlMwxHT^ju}@b+NQhd4znEkEus z(~xuYq^~K5pH%j=s1LdVl^BTksisIHnj(z=0F`@EWh=B~Z=1&fpt-#PsYfZ~a>~9I z$bU;vxq7?2%GIN;Ig5+e{|Y=h0EWX}eMgtNv+J6(p6_}+`U<+=Fd;3Z)MTxk42@1< z?XgzZvRVd(e#3;c5I=Z{ilt1bU`}%R&KM~f0AV4uUdk{#edk1x5@dzc61O2T#pnQt z3Zb&l7X&1QtY_Ax5US}4SOY@JEupxb4}VA6R`3?jr2TpGO`q=X#a z-s5XAu^eV+Zi=F|nCOI*5I0sjGNQb0x__i%8yT3oNAh9YEzXsTVU zHHW*LATMOSK}yJ~J?l>K`7s)D&woSSh;;z~a*GNVrl&kzV|M7_NE_>=6LLZty7NLB z0KlUVPcVrRQYi}nqEYuB0jQSwWV)vR-fBZm$g$ybmLDla^N;2ImiDN9Y(AN0BZiz1 z&BeR_cq(TOi=9K{Snp<6G4shZ*~uZR$!H=?_J8wg$aU&| zscX&x%h{;Z=*o_g1pTx{Hf1HoCOwzs_U=_V$O&YrG{Whx19Mv9-= ze^8JWveLVqYd=C(h!@-%+JDQ7bCe+|tzf@2b0K$pA^Le?T8L=Xf) o5ClOG1VIo4K^qVRK@e)r|KWSrjw)ymod5s;07*qoM6N<$f>!~jC;$Ke delta 1991 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≀7iLJal=<*nwb2DL8=uZawmHrJP037@7 zT)@vZPOxZ0G!2~{h(_C7e}`CX8z)!^*$9XbVz3fYDjm(w&-vPqGOQZDm$oz)JPP{L zWGdii8zJ)IwUG6Q2oVH95ClOG1VIo4K@bE%5QM7pKX{7g U@7L;jV*mgE07*qoM6N<$f)GNhl>h($ diff --git a/asset/art/gif/c02_杂项/拿纸杯/9.png b/asset/art/gif/c02_杂项/拿纸杯/9.png index 5c77e8f2a161ff693132ded1823f9ae3c15ba750..a3c1083df02a1d64240e54b1cfab08ccd4418380 100644 GIT binary patch delta 1844 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 XQ~JyQlZu2c00000NkvXXu0mjfsW5%0 diff --git a/asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png b/asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png new file mode 100755 index 0000000000000000000000000000000000000000..e4b1975d1e9cee555aaeab0534221636f637e6fe GIT binary patch literal 57166 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 literal 0 HcmV?d00001 diff --git a/asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png.import b/asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png.import new file mode 100644 index 00000000..0a363525 --- /dev/null +++ b/asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d05pqud4yoxx3" +path="res://.godot/imported/bg_公寓门口.png-5b96fed8c17c1ee89574cd626a23f2fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png" +dest_files=["res://.godot/imported/bg_公寓门口.png-5b96fed8c17c1ee89574cd626a23f2fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/asset/dialogue/c01.dialogue b/asset/dialogue/c01.dialogue index 747c695a..7fcd79aa 100644 --- a/asset/dialogue/c01.dialogue +++ b/asset/dialogue/c01.dialogue @@ -1,11 +1,7 @@ -~ c01_s05_院长房间_开场 +~ c01_s05_院长房间_看不清了 ???: ...后面看不清了。 [ID:c01_1小小蝶_开头阅读2] => END -#~ c01_s05_院长房间_开场_sh -#???: ...后面看不清了。 [ID:c01_1小小蝶_开头阅读2] -#=> END - ~ c01_s06_走廊前对话 老师: 昨天认的字,现在全忘了? [ID:c01_2老师1] 老师: (唉呀)黄鱼脑子! [ID:c01_2老师2] @@ -152,6 +148,9 @@ 车夫: 读书?读书好呀。打您一上车,我就能感觉到那什么...书香气,对对对,书香气! [ID:c01_9车夫_17] 车夫: 您将来一定大有可为! [ID:c01_9车夫_18] 吕萍: 那就借师傅吉言了。 [ID:c01_9小蝶_8] +=> END + +~ c01_s11_车夫对话5 车夫: 到地方喽——您看好自己的东西再下车! [ID:c01_9车夫_19] 吕萍: 谢谢。 [ID:c01_9小蝶_9] => END \ No newline at end of file diff --git a/asset/dialogue/c02.csv b/asset/dialogue/c02.csv index d75450e3..5efcfd66 100644 --- a/asset/dialogue/c02.csv +++ b/asset/dialogue/c02.csv @@ -224,7 +224,7 @@ c02_4小蝉_1,啊?,,方小蝉,, c02_4小蝉_2,...「死」是什么意思?,,方小蝉,, c02_4瞎子_2,每个人就像一个封起来的盒子,人死了,就是打开盒盖,把里面的灵魂放走了。,,方启钊,, c02_4小蝉_3,然后呢?,,方小蝉,, -c02_4小蝉_4,方小蝉:那个盒子怎么样了?,,,, +c02_4小蝉_4,那个盒子怎么样了?,,方小蝉,, c02_4瞎子_3,一个空盒子而已,没人会在乎这个。,,方启钊,, c02_4小蝉_5,...那你死了之后,也会变成空盒子吗?我可以住进空盒子里陪着你。,,方小蝉,, c02_4瞎子_4,你不明白。人死了,就意味着...,,方启钊,, @@ -237,9 +237,9 @@ c02_4瞎子_9,你还小,不需要知道这么多。,,方启钊,, c02_4小蝉_7,...但是你不要死,爸爸。,,方小蝉,, c02_4瞎子_10,生死哪由人。,,方启钊,, c02_4瞎子_11,走吧。,,方启钊,, -c02_11肉铺敲门_1,理发二楼,看病三楼!,,???,, -c02_11肉铺敲门_2,敲什么敲!,,???,, -c02_11肉铺敲门_3,不做生意赶紧滚!,,???,, +c02_11肉铺敲门_1,理发二楼,看病三楼!,,???,, +c02_11肉铺敲门_2,敲什么敲!,,???,, +c02_11肉铺敲门_3,不做生意赶紧滚!,,???,, c02_5小男孩_1,大姐姐,等一下!你玩过打弹珠没有?,,小男孩,, c02_5小男孩_2,你赢了的话,我们就认你当老大,听你的吩咐办事!,,小男孩,, c02_5小男孩_3,你得有弹珠才能跟我们玩儿!,,,, diff --git a/asset/dialogue/c02.dialogue b/asset/dialogue/c02.dialogue index 0737caf3..5f49575d 100644 --- a/asset/dialogue/c02.dialogue +++ b/asset/dialogue/c02.dialogue @@ -1,8 +1,3 @@ -~ c02_s01_门口 -芦昌路26弄3号 [ID:c02_芦昌路26] -=> END - - ~ c02_04_李氏癞子 #[#anonymous] 李兰: 真的假的?你钻进去啦,你这个体型进得去哒? [ID:c02_6偷听对话_李氏_1] @@ -45,12 +40,12 @@ => END ~ c02_s03_敲门游戏intro -???: 理发二楼,看病三楼! [ID:c02_11肉铺敲门_1] +???: 理发二楼,看病三楼! [ID:c02_11肉铺敲门_1] => END ~ c02_s03_敲门游戏 -???: 敲什么敲! [ID:c02_11肉铺敲门_2] -???: 不做生意赶紧滚! [ID:c02_11肉铺敲门_3] +???: 敲什么敲! [ID:c02_11肉铺敲门_2] +???: 不做生意赶紧滚! [ID:c02_11肉铺敲门_3] => END # 寻找弹珠 @@ -117,7 +112,7 @@ #【未完成拯救小蝉的游戏】 #小蝉: 再见了,大姐姐。 -~ c02_s11_谢幕交谈 +~ c02_s11_谢幕交谈1 吕萍: 小姑娘,你认识我,对不对? [ID:c02_10小蝶_1] 方小蝉: 嗯。 [ID:c02_10小蝉_1] 吕萍: 我能感觉到,从我踏进这里的那一刻,你就在盯着我。 [ID:c02_10小蝶_2] diff --git a/asset/dialogue/inspect_content.dialogue b/asset/dialogue/inspect_content.dialogue index b19dd6a0..80974e45 100644 --- a/asset/dialogue/inspect_content.dialogue +++ b/asset/dialogue/inspect_content.dialogue @@ -1,27 +1,27 @@ -~ c01_院长座钟 -x年 [ID:t89c0f4a8de] -下午一点 [ID:t356af5308e] +~ c01_飘落的寻人启事 +寻人启事 [ID:c01_飘落的寻人启事1] => END ~ c02_鼠疫海报 -据闻奉贤县分水墩又有七人染受鼠疫,病状可怖,闻医官药治无用,免职。 [ID:t344c97cf2c] -有地方人称鼠疫为妖邪作祟,甚为惊骇,一时人心惶惶,竟有聚众滋闹之事,政府以防疫事宜关系紧要,拟赴分水墩一带调查防疫事宜云。 [ID:tdb119a3714] +据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。[ID:tdb119a3714] 《申报》 [ID:ta750647b12] 民国五年一月十三日 [ID:t736cca4563] => END -~ c02_公寓告示 -公寓告示正文 [ID:公寓告示正文_1] -=> END - ~ c02_海报1 -海报1内容 [ID:c02_海报1] +战胜北方鼠疫之二杰 [ID:c02_海报1] => END ~ c02_海报2 -海报2内容 [ID:c02_海报2] +剪辮懸樑上偵探奇聞 [ID:c02_海报2] +=> END + +~ c02_海报3 +大舞台 [ID:c02_海报3] +二月初三夜,二等正厅,三等包厢 [ID:c02_海报4] => END ~ c02_保卫科花名册 -花名册内容 [ID:c02_保卫科花名册] +芦昌公寓居民登记簿(黄国栋记) [ID:c02_保卫科花名册1] +... [ID:c02_保卫科花名册2] => END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 615375a0..4b46685c 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -4,6 +4,42 @@ ui_press_b,按 B 打开背包,,, 5,5,,, 院长的信...,院长的信...,,, prop_小鞋子,小鞋子,,,[#texture=c02/小鞋子.png] +c02_绳子剪刀,绳子和剪刀,,, +c02_玩具缺脑袋,这个玩具缺了个脑袋,,, +c02_又是寻人启示,又是那张寻人启示,,, +c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,, +c02_井臭,井里有一股臭味,,, +c02_中药材,车上放了一些中药材,,, +c02_排队,排队的人堵住了上楼的路,,, +c02_不要出去,最好还是先不要出去,,, +c02_太阳,太阳快落山了,,, +c02_民国六年1015,民国六年十月十五日,,, +c02_一个洞,一个洞,里面好像还有空间,,, +c02_工具箱,工具箱,,, +c02_找到有用的东西,应该能找到有用的东西,,, +c02_公寓告示,公寓告示,,, +c02_通往里间的门,通往里间的门,,, +c02_花名册,花名册,,, +c02_罪,罪,,, +c02_门上有什么东西,门上有什么东西,,, +c02_奠,奠,,, +c02_寻夏小蝉,失踪的小孩名叫夏小蝉,,, +c02_小猫干尸,小猫的尸体已经干了,,, +c02_几块大洋,几块大洋,,, +c02_死老鼠,死掉的老鼠,,, +c02_石缝开花,石缝里开了几束花,,, +c02_石壁空间,石壁另一头好像还有空间,,, +c02_民国六年1221,民国六年十二月二十一日,,, +c02_患者感谢信,一些患者的感谢信,,, +c02_被撕掉的书,一本被撕掉的书,,, +c02_里面有什么东西,里面有什么东西,,, +c02_戏台上的诗,戏台上面刻了一首诗,,, +c02_锁开了,锁开了,,, +c02_口袋里有东西,口袋里有东西,,, +c02_雾太大,雾太大了,看不清路,,, +c02_八音盒,是个八音盒,,, +c02_祝女儿早日康复,祝女儿早日康复,,, +c02_图案一样,这图案和我手臂上的一摸一样,,, index_新游戏,新游戏,,, index_继续游戏,继续游戏,,, index_退出游戏,退出游戏,,, @@ -31,9 +67,9 @@ ui_阅读,阅读,,, ui_检阅,检阅,,, ui_收起,收起,,, ui_夜行船1,百岁光阴一梦蝶。,,, -ui_夜行船2,重回⾸往事堪嗟。,,, -ui_夜行船3,今⽇春来。,,, -ui_夜行船4,今⽇春来,明朝花谢。,,, +ui_夜行船2,重回首往事堪嗟。,,, +ui_夜行船3,今日春来。,,, +ui_夜行船4,今日春来,明朝花谢。,,, ui_夜行船5,急罚盏夜阑灯灭。,,, ui_夜行船6,夜行船,,, prop_空手,空手,,, @@ -108,48 +144,17 @@ c01_s07_书店展柜,"院长说,读一百本书,就可以成为无所不能 如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...",,, c01_s08_书架游戏完成,这些书都被老鼠啃坏了,连木头架子都没放过。,,, c01_s08_获得袁大头后,工钱还在老地方。,,, -c02_小蝉寻人启事_脸部破碎,"似乎是一张寻人启事 -脸的部分被撕掉了,看不清",,, +c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清。,,, +c02_芦昌路26,芦昌路26弄3号,就是这里了。,,, +c02_冷飕飕的,冷飕飕的...,,, +c02_太暗了,太暗了,找找能照明的东西吧。,,, +c02_陈旧的煤油灯,上了年头的煤油灯,似乎很久没用过了。,,, +c02_使用煤油灯,呼,那股阴冷的感觉也消失了。,,, c02_卫生宣传画,几张卫生宣传画,,, c02_老鼠洞,"一个老鼠洞 在这种楼里挺常见的",,, c02_十几年前的报纸,十几年前的报纸,,, c02_一楼楼道被挡住,被挡住了,,, c02_火灾等待准备,还没准备好点火呢,,, +小猫玩具发光,嗯?玩具在发光,,, c02_点火前阻止右移,没时间浪费了!想想办法救出小蝉...,,, -c02_绳子剪刀,绳子和剪刀,,, -c02_玩具缺脑袋,这个玩具缺了个脑袋,,, -c02_又是寻人启示,又是那张寻人启示,,, -c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,, -c02_井臭,井里有一股臭味,,, -c02_中药材,车上放了一些中药材,,, -c02_排队,排队的人堵住了上楼的路,,, -c02_不要出去,最好还是先不要出去,,, -c02_太阳,太阳快落山了,,, -c02_民国六年1015,民国六年十月十五日,,, -c02_一个洞,一个洞,里面好像还有空间,,, -c02_工具箱,工具箱,,, -c02_找到有用的东西,应该能找到有用的东西,,, -c02_公寓告示,公寓告示,,, -c02_通往里间的门,通往里间的门,,, -c02_花名册,花名册,,, -c02_罪,罪,,, -c02_门上有什么东西,门上有什么东西,,, -c02_奠,奠,,, -c02_寻夏小蝉,失踪的小孩名叫夏小蝉,,, -c02_小猫干尸,小猫的尸体已经干了,,, -c02_几块大洋,几块大洋,,, -c02_死老鼠,死掉的老鼠,,, -c02_石缝开花,石缝里开了几束花,,, -c02_石壁空间,石壁另一头好像还有空间,,, -c02_民国六年1221,民国六年十二月二十一日,,, -c02_患者感谢信,一些患者的感谢信,,, -c02_被撕掉的书,一本被撕掉的书,,, -c02_里面有什么东西,里面有什么东西,,, -c02_戏台上的诗,戏台上面刻了一首诗,,, -c02_锁开了,锁开了,,, -c02_口袋里有东西,口袋里有东西,,, -c02_雾太大,雾太大了,看不清路,,, -c02_八音盒,是个八音盒,,, -c02_祝女儿早日康复,祝女儿早日康复,,, -c02_图案一样,这图案和我手臂上的一摸一样,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index d64e7fb4..a871743c 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -33,9 +33,9 @@ 百岁光阴一梦蝶。 [ID:ui_夜行船1] -重回⾸往事堪嗟。 [ID:ui_夜行船2] -今⽇春来。 [ID:ui_夜行船3] -今⽇春来,明朝花谢。 [ID:ui_夜行船4] +重回首往事堪嗟。 [ID:ui_夜行船2] +今日春来。 [ID:ui_夜行船3] +今日春来,明朝花谢。 [ID:ui_夜行船4] 急罚盏夜阑灯灭。 [ID:ui_夜行船5] 夜行船 [ID:ui_夜行船6] => END @@ -149,16 +149,21 @@ 工钱还在老地方。 [ID:c01_s08_获得袁大头后] # c02 # c02-s01 街道 -似乎是一张寻人启事\n脸的部分被撕掉了,看不清 [ID:c02_小蝉寻人启事_脸部破碎] +寻人启事...画像和字迹都看不清。 [ID:c02_小蝉寻人启事_脸部破碎] +芦昌路26弄3号,就是这里了。 [ID:c02_芦昌路26] # c02-s02 走道 +冷飕飕的... [ID:c02_冷飕飕的] +太暗了,找找能照明的东西吧。 [ID:c02_太暗了] +上了年头的煤油灯,似乎很久没用过了。 [ID:c02_陈旧的煤油灯] +呼,那股阴冷的感觉也消失了。 [ID:c02_使用煤油灯] 几张卫生宣传画 [ID:c02_卫生宣传画] 一个老鼠洞\n在这种楼里挺常见的 [ID:c02_老鼠洞] 十几年前的报纸 [ID:c02_十几年前的报纸] # c02 内侧楼道 被挡住了 [ID:c02_一楼楼道被挡住] - # c02 火灾 还没准备好点火呢 [ID:c02_火灾等待准备] +嗯?玩具在发光 [ID:小猫玩具发光] 没时间浪费了!想想办法救出小蝉... [ID:c02_点火前阻止右移] diff --git a/config/animation/entity_sprite_frames.tres b/config/animation/entity_sprite_frames.tres index 8aa39e1e..e44aba2b 100644 --- a/config/animation/entity_sprite_frames.tres +++ b/config/animation/entity_sprite_frames.tres @@ -1970,6 +1970,24 @@ animations = [{ "texture": ExtResource("147_jn0hd") }, { "duration": 1.0, +"texture": ExtResource("146_glua7") +}, { +"duration": 1.0, +"texture": ExtResource("147_jn0hd") +}, { +"duration": 1.0, +"texture": ExtResource("146_glua7") +}, { +"duration": 1.0, +"texture": ExtResource("147_jn0hd") +}, { +"duration": 1.0, +"texture": ExtResource("146_glua7") +}, { +"duration": 1.0, +"texture": ExtResource("147_jn0hd") +}, { +"duration": 1.0, "texture": ExtResource("148_gtwc1") }, { "duration": 1.0, @@ -2812,7 +2830,7 @@ animations = [{ "speed": 6.0 }, { "frames": [{ -"duration": 1.0, +"duration": 12.0, "texture": ExtResource("227_n073l") }, { "duration": 1.0, diff --git a/config/default_bus_layout.tres b/config/default_bus_layout.tres index ef4b8c49..6b89600e 100644 --- a/config/default_bus_layout.tres +++ b/config/default_bus_layout.tres @@ -2,18 +2,18 @@ [resource] bus/0/volume_db = -0.030508 -bus/1/name = &"game_sfx" +bus/1/name = &"dialog" bus/1/solo = false bus/1/mute = false bus/1/bypass_fx = false -bus/1/volume_db = 0.0 -bus/1/send = &"Master" -bus/2/name = &"dialog" +bus/1/volume_db = -0.00828743 +bus/1/send = &"game_sfx" +bus/2/name = &"game_sfx" bus/2/solo = false bus/2/mute = false bus/2/bypass_fx = false -bus/2/volume_db = 0.0 -bus/2/send = &"game_sfx" +bus/2/volume_db = -0.00606537 +bus/2/send = &"Master" bus/3/name = &"music" bus/3/solo = false bus/3/mute = false diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd index a528e3ba..8dd8b470 100644 --- a/manager/scene/scene_manager.gd +++ b/manager/scene/scene_manager.gd @@ -80,7 +80,6 @@ func unlock_player(): # return true # return player.operational - # func set_player_operational(val := true): # var player = get_player() as MainPlayer # if player: @@ -157,6 +156,7 @@ func get_current_prop(must_selected: bool) -> String: return prop_hud.inventory.current_item_key() return "" + # 静默增加 prop,一般用于提前保存数据,确保数据一致性(防止在 await 时退出等导致丢数据) func enable_prop_item_silently(prop_key: String) -> void: var prop_hud = get_prop_hud() @@ -165,6 +165,7 @@ func enable_prop_item_silently(prop_key: String) -> void: else: printerr("enable_prop_item_silently PropHud node not found") + func enable_prop_item(prop_key: String) -> void: var prop_hud = get_prop_hud() if prop_hud: @@ -177,6 +178,7 @@ func enable_important_item(prop_key: String) -> void: var prop_hud = get_prop_hud() if prop_hud: prop_hud.inventory.enable_important_item(prop_key) + SceneManager.pop_center_notification(tr("ui_important_item_update")) else: printerr("enable_important_item PropHud node not found") @@ -189,14 +191,20 @@ func disable_prop_item(prop_key: String) -> void: printerr("disable_prop_item PropHud node not found") -func pop_os(lines := []): - var player = get_player() +func pop_os(lines := [], auto_freeze := true, auto_release := true): + var player = get_player() as MainPlayer if player: - player.pop_os(lines) + player.pop_os(lines, auto_freeze, auto_release) else: printerr("Player node not found") +func pop_os_with_str(translation_key: String, auto_freeze := true, auto_release := true): + var msg = tr(translation_key) + var lines = await DialogueUtil.generate_lines(msg) + SceneManager.pop_os(lines, auto_freeze, auto_release) + + func pop_notification(msg: String, number := 1) -> void: var notification_node = get_node_or_null("/root/Main/UILayer/Notification") if notification_node: diff --git a/scene/dialog/balloon.tscn b/scene/dialog/balloon.tscn index 62509bd8..ec34207f 100644 --- a/scene/dialog/balloon.tscn +++ b/scene/dialog/balloon.tscn @@ -165,7 +165,6 @@ mouse_filter = 1 text = "Response example" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] -volume_db = -20.0 bus = &"dialog" [connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"] diff --git a/scene/entity/ambush.gd b/scene/entity/ambush.gd index 2d41ec5d..17ace9f9 100644 --- a/scene/entity/ambush.gd +++ b/scene/entity/ambush.gd @@ -20,6 +20,7 @@ signal triggered @export var freeze_time := 5.0 var hook_animation = "" @export var lock_player_on_playing_dialogue = true +@export var hook_os_key := "" @export_enum("c01", "c02", "c03", "c04", "c05") var hook_dialogue_res = "c01": set(val): hook_dialogue_res = val @@ -151,6 +152,9 @@ func _do_trigger(): SceneManager.freeze_player(0.0) DialogueManager.show_dialogue_balloon(dialogue_res, hook_dialogue_title) DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT) + # hook_os + if hook_os_key: + SceneManager.pop_os_with_str(hook_os_key) if hook_method: var animation_player = _get_animation_player() if animation_player: diff --git a/scene/entity/note.gd b/scene/entity/note.gd index 8d2d62f3..e804efac 100644 --- a/scene/entity/note.gd +++ b/scene/entity/note.gd @@ -62,6 +62,7 @@ var tried_times: int: func _ready() -> void: if Engine.is_editor_hint(): + notify_property_list_changed() return area2d.body_entered.connect(_reset) area2d.body_exited.connect(_on_cancel) @@ -100,7 +101,7 @@ func _on_interacted() -> void: func _show_os(res, title): var lines = await DialogueUtil.get_lines(res, title) - SceneManager.pop_os(lines) + SceneManager.pop_os(lines, false, false) interacting = true var player = SceneManager.get_player() if player: diff --git a/scene/entity/portal.gd b/scene/entity/portal.gd index 6603b20c..ed5d279a 100644 --- a/scene/entity/portal.gd +++ b/scene/entity/portal.gd @@ -131,10 +131,7 @@ func _on_interacted() -> void: tried_times += 1 if holding: if holding_reason_key: - var reason = tr(holding_reason_key) - if reason: - var lines = await DialogueUtil.generate_lines(reason) - SceneManager.pop_os(lines) + SceneManager.pop_os_with_str(holding_reason_key) return if target_portal == "none" or not enabled: return diff --git a/scene/entity/portal.tscn b/scene/entity/portal.tscn index 3c173673..3ca23648 100644 --- a/scene/entity/portal.tscn +++ b/scene/entity/portal.tscn @@ -6,9 +6,9 @@ [ext_resource type="Texture2D" uid="uid://dtyg0nugb2tnf" path="res://asset/art/ui/action_mark/UI探索.png" id="2_fr7ak"] [ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="3_6khux"] [ext_resource type="Texture2D" uid="uid://bc8sn2v4t1yta" path="res://asset/art/ui/action_mark/UI开锁.png" id="3_fr7ak"] -[ext_resource type="AudioStream" uid="uid://bghyinc16m1nx" path="res://asset/audio/sfx/交互/收起背包.wav" id="4_p48ld"] [ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_ty1ds"] [ext_resource type="AudioStream" uid="uid://ccng5y2fip6mc" path="res://asset/audio/sfx/ui/开锁声.mp3" id="5_l48hy"] +[ext_resource type="AudioStream" uid="uid://dqdjxy04ge0r5" path="res://asset/audio/sfx/旧版/c02/场景转场.mp3" id="6_1sj6c"] [ext_resource type="AudioStream" uid="uid://c1eftumrd4mgw" path="res://asset/audio/sfx/交互/开门.wav" id="6_p48ld"] [ext_resource type="AudioStream" uid="uid://inmdv5gqqius" path="res://asset/audio/sfx/ui/门锁互动.mp3" id="7_bjcty"] @@ -27,7 +27,7 @@ prop_key = "" [node name="SfxDefault" parent="." instance=ExtResource("3_6khux")] unique_name_in_owner = true -stream = ExtResource("4_p48ld") +stream = ExtResource("6_1sj6c") file = "" [node name="SfxOpen" parent="." instance=ExtResource("3_6khux")] diff --git a/scene/ground/ground.gd b/scene/ground/ground.gd index 2523c506..a822d296 100644 --- a/scene/ground/ground.gd +++ b/scene/ground/ground.gd @@ -87,6 +87,7 @@ func _ready() -> void: # %ColorRectTop.visible = true # %ColorRectBottom.visible = true # 如果 debug 模式下不通过 GroundLoader 启动,则插入到 main 以下 + _setup_player_light() func _restart_from_main(): @@ -160,3 +161,11 @@ func move_player_to_portal(portal_name: String) -> void: printerr("move_player_to_portal player not ready") # 传送后,重置 camera 位置 camera_focus_marker.reset_position_immediately() + +func _setup_player_light(): + # 设置角色身上光源 + if directional_light.blend_mode == Light2D.BLEND_MODE_SUB and directional_light.energy > 0.6: + player.enable_light = true + else: + player.enable_light = false + print("_setup_player_light player.enable_light=", player.enable_light) diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index 3c32cd97..4b121ebd 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -60,7 +60,9 @@ func _ready() -> void: if not ignore_archive: _load_save() if current_scene and entrance_portal: - transition_to_scene(current_scene, entrance_portal, 0.0) + # 首次进入渐隐效果 + transition_to_scene(current_scene, entrance_portal) + # transition_to_scene(current_scene, entrance_portal, 0.0) func _load_save(): diff --git a/scene/ground/scene/c01/s05_animation.gd b/scene/ground/scene/c01/s05_animation.gd index c943af87..7d172e19 100644 --- a/scene/ground/scene/c01/s05_animation.gd +++ b/scene/ground/scene/c01/s05_animation.gd @@ -6,26 +6,26 @@ var frame: Note2D var paper: Interactable2D var right_door: Portal2D var piano: Interactable2D -var bed_reading: AnimatedSprite2D + # 覆盖该方法 func _default_data() -> Dictionary: - return { - "frame_relocated": false - } + return {"frame_relocated": false} func _ready() -> void: super._ready() oneshot_animation_finished.connect(show_interact_help) +func intro_start(): + SceneManager.freeze_player(0) + await animation_finished + SceneManager.release_player() + $"../DeployLayer/床".enabled = true func play_intro_dialogue(): - # 播放开场对话 - # DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s05_院长房间_开场") # 直接使用 sfx,防止下方字幕与全屏文字重复 $intro_audio_player.play() - SceneManager.pop_debug_dialog_info("音效", "开场念诵声等") func _on_ground_ready() -> void: @@ -34,8 +34,8 @@ func _on_ground_ready() -> void: paper = $"../DeployLayer/oneshot纸片" right_door = $"../DeployLayer/portal_right" piano = $"../DeployLayer/钢琴" - bed_reading = $"../DeployLayer/小小蝶看书" - bed_reading.frame_changed.connect(_on_bed_reading_frame_changed) + if data["oneshot_animation_played"]: + $"../DeployLayer/床".enabled = true # 画框是否已经正位 data.frame_relocated = ambush.played and ambush.one_shot # 禁用鸡毛掸子 @@ -74,18 +74,8 @@ func _on_ground_ready() -> void: $"环境音".finished.connect($"环境音".play) -var intro_dialog_played = false - -func _on_bed_reading_frame_changed(): - if bed_reading.animation == "c01_小小蝶_床上看书": - if bed_reading.frame == 5 and not intro_dialog_played: - intro_dialog_played = true - DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s05_院长房间_开场") - elif bed_reading.frame == 10: - # 播放结束,0.5s 后释放角色 - get_tree().create_timer(0.5).timeout.connect(SceneManager.release_player) - $"../DeployLayer/床".enabled = true - +func cant_read(): + DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s05_院长房间_看不清了") func _on_note_read(): @@ -112,15 +102,7 @@ func _on_paper_interacted(): paper.visible = false paper.enabled = false SceneManager.enable_prop_item("prop_信碎片1") - SceneManager.enable_important_item("prop_信碎片1") right_door.holding = false - # SceneManager.pop_debug_dialog_info("音效", "开门声") - var inspector = SceneManager.get_inspector() as PropInspector - if inspector: - # 显示互动提示 - inspector.quit_and_hidden.connect( - SceneManager.pop_center_notification.bind(tr("ui_important_item_update")), CONNECT_ONE_SHOT - ) # 钢琴音效,每次按下播放不同音符 @@ -145,6 +127,7 @@ var piano_streams = [ preload("res://asset/audio/sfx/交互/序章/01_院长房间_钢琴_13.wav"), ] + func _on_piano_interacted(): # 钢琴音符最大编号 var piano_id_max := piano_streams.size() diff --git a/scene/ground/scene/c01/s05_院长房间.tscn b/scene/ground/scene/c01/s05_院长房间.tscn index 1c614383..9de6ed91 100644 --- a/scene/ground/scene/c01/s05_院长房间.tscn +++ b/scene/ground/scene/c01/s05_院长房间.tscn @@ -79,163 +79,163 @@ tracks/3/keys = { tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("MainPlayer:visible") +tracks/4/path = NodePath("DeployLayer/画框:rotation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] +"update": 0, +"values": [-0.179769] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("DeployLayer/画框:rotation") +tracks/5/path = NodePath("Intro:visible") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [-0.179769] +"update": 1, +"values": [false] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true -tracks/6/path = NodePath("Intro:visible") +tracks/6/path = NodePath("Intro:modulate") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] +"update": 0, +"values": [Color(1, 1, 1, 1)] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true -tracks/7/path = NodePath("Intro:modulate") +tracks/7/path = NodePath("MainPlayer:position") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Color(1, 1, 1, 1)] +"values": [Vector2(26, 88)] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true -tracks/8/path = NodePath("MainPlayer:position") +tracks/8/path = NodePath("DeployLayer/小小蝶看书:visible") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(26, 88)] +"update": 1, +"values": [false] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true -tracks/9/path = NodePath("DeployLayer/小小蝶看书:visible") +tracks/9/path = NodePath("DeployLayer/小小蝶看书:frame") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [10] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true -tracks/10/path = NodePath("DeployLayer/小小蝶看书:frame") +tracks/10/path = NodePath("DeployLayer/oneshot纸片/Area2D:position") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [10] +"update": 0, +"values": [Vector2(0, 0)] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true -tracks/11/path = NodePath("DeployLayer/oneshot纸片/Area2D:position") +tracks/11/path = NodePath("DeployLayer/oneshot纸片/AnimatedSprite2D:frame") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] +"update": 1, +"values": [9] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true -tracks/12/path = NodePath("DeployLayer/oneshot纸片/AnimatedSprite2D:frame") +tracks/12/path = NodePath("DeployLayer/oneshot纸片/Sign:display_sign") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [9] +"values": [true] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true -tracks/13/path = NodePath("DeployLayer/oneshot纸片/Sign:display_sign") +tracks/13/path = NodePath("DeployLayer/oneshot纸片/Sign:position") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] +"update": 0, +"values": [Vector2(3, -4)] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true -tracks/14/path = NodePath("DeployLayer/oneshot纸片/Sign:position") +tracks/14/path = NodePath("CameraFocusMarker:zoom_ratio") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(3, -4)] +"values": [1.0] } tracks/15/type = "value" tracks/15/imported = false tracks/15/enabled = true -tracks/15/path = NodePath("CameraFocusMarker:zoom_ratio") +tracks/15/path = NodePath("CameraFocusMarker:force_offset") tracks/15/interp = 1 tracks/15/loop_wrap = true tracks/15/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [1.0] +"values": [Vector2(0, 0)] } tracks/16/type = "value" tracks/16/imported = false tracks/16/enabled = true -tracks/16/path = NodePath("CameraFocusMarker:force_offset") +tracks/16/path = NodePath("AnimationPlayer/扶正相框:playing") tracks/16/interp = 1 tracks/16/loop_wrap = true tracks/16/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] +"update": 1, +"values": [false] } tracks/17/type = "value" tracks/17/imported = false tracks/17/enabled = true -tracks/17/path = NodePath("AnimationPlayer/扶正相框:playing") +tracks/17/path = NodePath("AnimationPlayer/下床音效:playing") tracks/17/interp = 1 tracks/17/loop_wrap = true tracks/17/keys = { @@ -247,7 +247,7 @@ tracks/17/keys = { tracks/18/type = "value" tracks/18/imported = false tracks/18/enabled = true -tracks/18/path = NodePath("AnimationPlayer/下床音效:playing") +tracks/18/path = NodePath("MainPlayer:hide_sprite") tracks/18/interp = 1 tracks/18/loop_wrap = true tracks/18/keys = { @@ -256,10 +256,34 @@ tracks/18/keys = { "update": 1, "values": [false] } +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("AnimationPlayer/intro_audio_player:volume_db") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-20.0] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Intro/HBoxContainer:modulate") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} [sub_resource type="Animation" id="Animation_7k2c8"] resource_name = "intro" -length = 7.0 +length = 24.0 capture_included = true tracks/0/type = "value" tracks/0/imported = false @@ -268,7 +292,7 @@ tracks/0/path = NodePath("Intro:visible") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 4.63333), +"times": PackedFloat32Array(0, 18.4333), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [true, false] @@ -280,7 +304,7 @@ tracks/1/path = NodePath("Intro:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0, 4.4, 4.63333), +"times": PackedFloat32Array(0, 15.5333, 18.4333), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] @@ -292,7 +316,7 @@ tracks/2/path = NodePath("MainPlayer:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(3.93333), +"times": PackedFloat32Array(17.7333), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(87, 88)] @@ -300,93 +324,109 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("MainPlayer:visible") +tracks/3/path = NodePath("DeployLayer/小小蝶看书:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0, 6.63333), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("DeployLayer/小小蝶看书:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 6.66667), +"times": PackedFloat32Array(0, 23.8667), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [true, false] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("DeployLayer/小小蝶看书:frame") +tracks/4/interp = 1 +tracks/4/loop_wrap = false +tracks/4/keys = { +"times": PackedFloat32Array(18.4, 23.8667), +"transitions": PackedFloat32Array(1, 1), +"update": 2, +"values": [0, 16] +} tracks/5/type = "method" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("MainPlayer") +tracks/5/path = NodePath("AnimationPlayer") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [0.0, -1, false], -"method": &"freeze_player" -}] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("DeployLayer/小小蝶看书:frame") -tracks/6/interp = 1 -tracks/6/loop_wrap = false -tracks/6/keys = { -"times": PackedFloat32Array(4.56667, 6.66667), -"transitions": PackedFloat32Array(1, 1), -"update": 2, -"values": [0, 10] -} -tracks/7/type = "method" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("AnimationPlayer") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0.133333), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0, 1.93333, 19.1), +"transitions": PackedFloat32Array(1, 1, 1), "values": [{ "args": [], +"method": &"intro_start" +}, { +"args": [], "method": &"play_intro_dialogue" +}, { +"args": [], +"method": &"cant_read" }] } -tracks/8/type = "method" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Intro") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(4.76667), +tracks/6/type = "method" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Intro") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(18.5667), "transitions": PackedFloat32Array(1), "values": [{ "args": [], "method": &"queue_free" }] } -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("AnimationPlayer/下床音效:playing") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(5.33333), +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("AnimationPlayer/下床音效:playing") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(21.7667), "transitions": PackedFloat32Array(1), "update": 1, "values": [true] } +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("MainPlayer:hide_sprite") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 23.8667), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("AnimationPlayer/intro_audio_player:volume_db") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 5.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [-10.0, 0.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Intro/HBoxContainer:modulate") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0, 3.1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} [sub_resource type="Animation" id="Animation_il8ov"] resource_name = "使用鸡毛掸子" @@ -458,34 +498,22 @@ tracks/4/keys = { tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("MainPlayer:visible") +tracks/5/path = NodePath("DeployLayer/ambush鸡毛掸子:visible") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.88, 3.96), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("DeployLayer/ambush鸡毛掸子:visible") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { "times": PackedFloat32Array(0.02, 1.48, 3.42), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [true, false, true] } -tracks/7/type = "method" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("MainPlayer") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { +tracks/6/type = "method" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("MainPlayer") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { "times": PackedFloat32Array(0.08), "transitions": PackedFloat32Array(1), "values": [{ @@ -493,42 +521,54 @@ tracks/7/keys = { "method": &"walk_to" }] } -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("CameraFocusMarker:zoom_ratio") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("CameraFocusMarker:zoom_ratio") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { "times": PackedFloat32Array(0, 1.22, 3.1, 4.1), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, "values": [1.0, 1.3, 1.3, 1.0] } -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("CameraFocusMarker:force_offset") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("CameraFocusMarker:force_offset") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { "times": PackedFloat32Array(0, 4.08), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector2(0, -20), Vector2(0, -20)] } -tracks/10/type = "value" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("AnimationPlayer/扶正相框:playing") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("AnimationPlayer/扶正相框:playing") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { "times": PackedFloat32Array(0, 2.28), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [false, true] } +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("MainPlayer:hide_sprite") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0.94, 3.98), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} [sub_resource type="Animation" id="Animation_ocf0o"] resource_name = "纸片飘落" @@ -642,7 +682,8 @@ oneshot_animation = "intro" [node name="intro_audio_player" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] stream = ExtResource("3_sluu3") -bus = &"game_sfx" +volume_db = -20.0 +bus = &"dialog" [node name="piano_player" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] bus = &"game_sfx" @@ -707,10 +748,10 @@ title_filter = "c01" note_key = "c01_倾斜的洋相片" [node name="Sign" parent="Ground/DeployLayer/画框" index="1"] -offset_left = 3.0 -offset_top = -7.0 -offset_right = 86.0 -offset_bottom = 73.0 +offset_left = 2.77355 +offset_top = 7.10178 +offset_right = 85.7736 +offset_bottom = 87.1018 metadata/_edit_use_anchors_ = true [node name="CollisionShape2D" parent="Ground/DeployLayer/画框/Area2D" index="0"] @@ -785,10 +826,10 @@ stream = null file = "" [node name="Sign" parent="Ground/DeployLayer/钢琴" index="2"] -offset_left = -1.0 -offset_top = -8.0 -offset_right = -1.0 -offset_bottom = -8.0 +offset_left = 4.0 +offset_top = -18.0 +offset_right = 4.0 +offset_bottom = -18.0 [node name="CollisionShape2D" parent="Ground/DeployLayer/钢琴/Area2D" index="0"] shape = SubResource("RectangleShape2D_5s1ih") @@ -807,6 +848,7 @@ height = 50.0 [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(26, 88) +enable_light = false character = "小小蝶" [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] @@ -971,4 +1013,3 @@ texture = ExtResource("3_7u4bh") [editable path="Ground/DeployLayer/oneshot纸片"] [editable path="Ground/DeployLayer/oneshot纸片/Sign"] [editable path="Ground/DeployLayer/钢琴"] -[editable path="Ground/DeployLayer/钢琴/Sign"] diff --git a/scene/ground/scene/c01/s06_animation.gd b/scene/ground/scene/c01/s06_animation.gd index 4d410833..7f2111d9 100644 --- a/scene/ground/scene/c01/s06_animation.gd +++ b/scene/ground/scene/c01/s06_animation.gd @@ -92,13 +92,8 @@ func _on_pre_game_intro_finished(_res): # 重置镜头 SceneManager.focus_player_and_reset_zoom(2.5) await get_tree().create_timer(1.5).timeout - var lines = await DialogueUtil.generate_lines(tr("c01_s06_熟悉的墙画")) - var player = SceneManager.get_player() as MainPlayer - player.pop_os(lines) - player.os_finished.connect(pre_game_os_finished, CONNECT_ONE_SHOT) + SceneManager.pop_os_with_str("c01_s06_熟悉的墙画", false, true) -func pre_game_os_finished(): - SceneManager.release_player() func game_intro() -> void: standing_kid1.get_node("对话1ambush").enabled = false @@ -147,17 +142,21 @@ func _game_counting_down(_res = null): func talk1(): _on_talked() + # 与小孩 2 对话 func talk2(): _on_talked() + # 与残疾小孩对话 func talk3(): _on_talked() + # 玩家与三个小孩的互动计数 var talk_count := 0 + func _on_talked(): talk_count += 1 if talk_count == 3: @@ -165,10 +164,7 @@ func _on_talked(): await DialogueManager.dialogue_ended SceneManager.freeze_player(0) await get_tree().create_timer(1.0).timeout - var lines = await DialogueUtil.generate_lines(tr("c01_s06_四小孩对话结束")) - var player = SceneManager.get_player() as MainPlayer - player.pop_os(lines) - player.os_finished.connect(SceneManager.release_player, CONNECT_ONE_SHOT) + SceneManager.pop_os_with_str("c01_s06_四小孩对话结束", false, true) var kid_run_tween diff --git a/scene/ground/scene/c01/s07_animation.gd b/scene/ground/scene/c01/s07_animation.gd index d18992f7..ff2326f5 100644 --- a/scene/ground/scene/c01/s07_animation.gd +++ b/scene/ground/scene/c01/s07_animation.gd @@ -89,9 +89,7 @@ func seller_interacted(): ArchiveManager.archive.prop_inventory.enable_item("prop_信碎片2") await get_tree().create_timer(1.5).timeout $"报童音效".play() - var msg = tr("c01_s07_获得报纸") - var lines = await DialogueUtil.generate_lines(msg) - SceneManager.pop_os(lines) + SceneManager.pop_os_with_str("c01_s07_获得报纸") # 播放获得动画 await get_tree().create_timer(2.0).timeout SceneManager.enable_prop_item("prop_信碎片2") diff --git a/scene/ground/scene/c01/s08_animation.gd b/scene/ground/scene/c01/s08_animation.gd index b2343ce0..db264205 100644 --- a/scene/ground/scene/c01/s08_animation.gd +++ b/scene/ground/scene/c01/s08_animation.gd @@ -155,9 +155,8 @@ func _on_fall_off_finished() -> void: # 最后释放玩家 SceneManager.release_player() SceneManager.get_player().visible = true - var lines = await DialogueUtil.generate_lines(tr("c01_s08_书架游戏完成")) - var callback = SceneManager.pop_os.bind(lines) - get_tree().create_timer(1.0).timeout.connect(callback) + await get_tree().create_timer(1.2).timeout + SceneManager.pop_os_with_str("c01_s08_书架游戏完成") func _setup_weird_bookstore() -> void: # 切换背景音效 @@ -169,6 +168,7 @@ func _setup_weird_bookstore() -> void: ladder.enabled = false manager.visible = false mice.visible = true + $"../DirectionalLight2D".energy = 0.7 $"../BGSprite2D".texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/bg_书店夜晚.png") $"../ParallaxForeground/FGParallaxLayer/FGSprite2D".texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/fg_书店夜晚前景.png") ladder.texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/e_梯子 夜晚.png") @@ -205,6 +205,4 @@ func pay_off_wage() -> void: _check_portal() func _on_quit_inspect_coin() -> void: - var msg = tr("c01_s08_获得袁大头后") - var lines = await DialogueUtil.generate_lines(msg) - SceneManager.pop_os(lines) + SceneManager.pop_os_with_str("c01_s08_获得袁大头后") diff --git a/scene/ground/scene/c01/s08_书店.tscn b/scene/ground/scene/c01/s08_书店.tscn index b7552180..d6ffdfe3 100644 --- a/scene/ground/scene/c01/s08_书店.tscn +++ b/scene/ground/scene/c01/s08_书店.tscn @@ -184,6 +184,10 @@ offset = Vector2(0, 40) [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] points = PackedVector2Array(30, 150, 545, 150) +[node name="DirectionalLight2D" parent="Ground" index="9"] +energy = 0.0 +blend_mode = 1 + [node name="参考" type="Sprite2D" parent="."] visible = false modulate = Color(1, 1, 1, 0.580392) diff --git a/scene/ground/scene/c01/s11_animation.gd b/scene/ground/scene/c01/s11_animation.gd index bff20de0..6372be83 100644 --- a/scene/ground/scene/c01/s11_animation.gd +++ b/scene/ground/scene/c01/s11_animation.gd @@ -4,16 +4,15 @@ extends AnimationRoot var footstep_sfx: Sfx var chapter_sfx: Sfx var main_character: AnimatedSprite2D -# 2:33 ~ 3:44, 71s -var duration := 67.0 +var duration := 90.0 var target_x := 10750.0 -var building_duration := 30.0 -var building_y := 450.0 +var building_duration := 10.0 +var building_y := 350.0 -var title_1 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png") -var title_2 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png") -var title_3 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png") -var chapter_title = preload("res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png") +var title_1 = preload("uid://snm3q333tqhl") +var title_2 = preload("uid://d4laekws15ap6") +var title_3 = preload("uid://5oln8axxcfep") +var chapter_title = preload("uid://bvjt8iyliunfs") # 覆盖该方法 @@ -45,15 +44,15 @@ func _on_ground_ready() -> void: func pop_title_1(): - SceneManager.pop_center_texture(title_1) + SceneManager.pop_center_texture(title_1, 6.0) func pop_title_2(): - SceneManager.pop_center_texture(title_2) + SceneManager.pop_center_texture(title_2, 10.5) func pop_title_3(): - SceneManager.pop_center_texture(title_3) + SceneManager.pop_center_texture(title_3, 4) # 又是这个梦.. 12句 @@ -97,17 +96,15 @@ func dialog3() -> void: dialogue_c01, "c01_s11_车夫对话3", [GlobalConfig.DIALOG_IGNORE_INPUT] ) +func dialog4() -> void: + DialogueManager.show_dialogue_balloon( + dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT] + ) + func _on_finished(): var camera = SceneManager.get_camera_marker() footstep_sfx.stop() - # 吕萍: “是到了吗,师傅” - # 车夫: “到了,芦昌路26弄3号,就是这里” - # 6句 - # 车夫: “嗯,钱正好,那么我先跑了” - DialogueManager.show_dialogue_balloon( - dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT] - ) # 运镜 marker var marker = Node2D.new() get_parent().add_child(marker) @@ -117,11 +114,17 @@ func _on_finished(): camera.focus_node(marker, 0.0) # 运镜,上下打量公寓楼 var tween = create_tween() - tween.tween_interval(3.0) + tween.tween_interval(1.0) tween.tween_callback(camera.tween_zoom.bind(0.7, 3.0)) + tween.tween_callback(final_dialog) tween.tween_property(marker, "global_position:y", target_y, building_duration) tween.tween_callback(_show_chapter) +func final_dialog(): + await get_tree().create_timer(2.0).timeout + DialogueManager.show_dialogue_balloon( + dialogue_c01, "c01_s11_车夫对话5", [GlobalConfig.DIALOG_IGNORE_INPUT] + ) # 展示章节转场 func _show_chapter(): diff --git a/scene/ground/scene/c01/s11_黄包车演出.tscn b/scene/ground/scene/c01/s11_黄包车演出.tscn index 36692ed5..8a3d2462 100644 --- a/scene/ground/scene/c01/s11_黄包车演出.tscn +++ b/scene/ground/scene/c01/s11_黄包车演出.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://coiumaaenimbc"] +[gd_scene load_steps=31 format=3 uid="uid://coiumaaenimbc"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_1sveo"] [ext_resource type="Script" uid="uid://dcn7u7v3fsscj" path="res://scene/ground/scene/c01/s11_animation.gd" id="2_espm6"] @@ -9,7 +9,9 @@ [ext_resource type="Texture2D" uid="uid://qbwh5si2owve" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景3.png" id="4_1flr0"] [ext_resource type="AudioStream" uid="uid://qku3yk82g364" path="res://asset/audio/sfx/交互/标题出现音效.wav" id="5_amglq"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_3k8jj"] +[ext_resource type="AudioStream" uid="uid://b8rg7adnnkjll" path="res://asset/audio/BGM/戏曲声.wav" id="6_68ynl"] [ext_resource type="SpriteFrames" uid="uid://bk54qlc8dr5xr" path="res://asset/art/gif/c01_黄包车长场景/frames.tres" id="7_wo6md"] +[ext_resource type="AudioStream" uid="uid://bi6gm533oqsa" path="res://asset/audio/BGM/街道背景音.wav" id="7_yajus"] [ext_resource type="Script" uid="uid://dvmw38syi54l3" path="res://scene/ground/script/c01/s11_路灯序列.gd" id="9_6p5hp"] [ext_resource type="Texture2D" uid="uid://cg1ey0l55acvs" path="res://asset/art/scene/c01/s09_黄包车长场景/e_单个路灯.png" id="9_u6881"] [ext_resource type="Texture2D" uid="uid://cgsq1im2q63f8" path="res://asset/art/scene/c01/s09_黄包车长场景/e_路灯灯芯.png" id="11_2w2ir"] @@ -122,6 +124,13 @@ _data = { &"intro": SubResource("Animation_blie8") } +[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_s11la"] +stream_count = 2 +stream_0/stream = ExtResource("6_68ynl") +stream_0/volume = 5.0 +stream_1/stream = ExtResource("7_yajus") +stream_1/volume = -3.0 + [sub_resource type="RectangleShape2D" id="RectangleShape2D_b0oon"] size = Vector2(200, 100) @@ -159,6 +168,11 @@ bus = &"game_sfx" script = ExtResource("3_vx53v") file = "" +[node name="背景音" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] +stream = SubResource("AudioStreamSynchronized_s11la") +volume_db = -3.0 +autoplay = true + [node name="BGSprite2D" parent="Ground" index="2"] position = Vector2(-12, 2) offset = Vector2(0, -646) @@ -191,19 +205,20 @@ autoplay = "车夫静止" shape = SubResource("RectangleShape2D_b0oon") [node name="小孩捡球" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"] -position = Vector2(461, 80) +modulate = Color(0, 0, 0, 1) +position = Vector2(460, 69) sprite_frames = ExtResource("3_hnnuc") animation = &"c01_捡球男孩_关键帧" [node name="ambush_title1" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_3k8jj")] -position = Vector2(1553, 15) +position = Vector2(1365, 4) trigger_mode = "area_enter" one_shot = false freeze_time = 1.0 hook_method = "pop_title_1" [node name="ambush_title2" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_3k8jj")] -position = Vector2(3012, 4) +position = Vector2(2870, -10) trigger_mode = "area_enter" one_shot = false hook_method = "pop_title_2" @@ -215,17 +230,23 @@ one_shot = false hook_method = "pop_title_3" [node name="ambush_dialog2" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_3k8jj")] -position = Vector2(1956, 5) +position = Vector2(866, 5) trigger_mode = "area_enter" one_shot = false hook_method = "dialog2" [node name="ambush_dialog3" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_3k8jj")] -position = Vector2(5009, -15) +position = Vector2(3448, -8) trigger_mode = "area_enter" one_shot = false hook_method = "dialog3" +[node name="ambush_dialog4" parent="Ground/DeployLayer" index="9" instance=ExtResource("6_3k8jj")] +position = Vector2(5305, -2) +trigger_mode = "area_enter" +one_shot = false +hook_method = "dialog4" + [node name="路灯序列1" type="Node2D" parent="Ground/AmbientLayer" index="0"] position = Vector2(405, 10) script = ExtResource("9_6p5hp") diff --git a/scene/ground/scene/c01/s12_书店外_诡异版.tscn b/scene/ground/scene/c01/s12_书店外_诡异版.tscn index 2f8bad99..1eca5b96 100644 --- a/scene/ground/scene/c01/s12_书店外_诡异版.tscn +++ b/scene/ground/scene/c01/s12_书店外_诡异版.tscn @@ -279,14 +279,12 @@ texture = ExtResource("17_nta2f") position = Vector2(41, 98) character = "小小蝶" -[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] -texture = null - [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] points = PackedVector2Array(37, 150, 3050, 150) [node name="DirectionalLight2D" parent="Ground" index="9"] -visible = false +energy = 0.4 +blend_mode = 1 [node name="参考" type="Sprite2D" parent="."] visible = false diff --git a/scene/ground/scene/c02/s01_街道.tscn b/scene/ground/scene/c02/s01_街道.tscn index 8912e1ec..03045e84 100644 --- a/scene/ground/scene/c02/s01_街道.tscn +++ b/scene/ground/scene/c02/s01_街道.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=5 format=3 uid="uid://bbs7yy5aofw1v"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_gdcov"] -[ext_resource type="Texture2D" uid="uid://dibfvlmarlkg6" path="res://asset/art/scene/c02/旧版/s01_街道/bg_公寓入口.png" id="2_ni1a4"] [ext_resource type="Script" uid="uid://jkselt4d5q4r" path="res://scene/ground/scene/c02/s01_animation.gd" id="2_uuwn3"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="3_6lnxd"] +[ext_resource type="Texture2D" uid="uid://d05pqud4yoxx3" path="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png" id="3_a5loe"] [node name="S01" type="Node2D"] [node name="Ground" parent="." instance=ExtResource("1_gdcov")] scene_name = "c02_s01" -player_y = 55 +player_y = 60 [node name="AnimationPlayer" parent="Ground" index="0"] script = ExtResource("2_uuwn3") @@ -20,7 +20,7 @@ data = { oneshot_animation = "" [node name="BGSprite2D" parent="Ground" index="2"] -texture = ExtResource("2_ni1a4") +texture = ExtResource("3_a5loe") [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(78, 27) @@ -28,25 +28,23 @@ immediately = true matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] -position = Vector2(392, 2) +position = Vector2(371, 2) target_scene = "c02_s02" target_portal = "left" matched_sign_texture = null [node name="Note寻人启事" parent="Ground/DeployLayer" index="2" instance=ExtResource("3_6lnxd")] -position = Vector2(250, -22) +position = Vector2(230, -24) title_filter = "c02" note_key = "c02_小蝉寻人启事_脸部破碎" [node name="Note门口" parent="Ground/DeployLayer" index="3" instance=ExtResource("3_6lnxd")] -position = Vector2(311, -27) -mode = "ballon" -dialogue = "c02" +position = Vector2(290, -20) title_filter = "c02" -note_key = "c02_s01_门口" +note_key = "c02_芦昌路26" [node name="MainPlayer" parent="Ground" index="5"] -position = Vector2(78, 103) +position = Vector2(78, 98) [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] points = PackedVector2Array(37, 150, 720, 150) diff --git a/scene/ground/scene/c02/s02_animation.gd b/scene/ground/scene/c02/s02_animation.gd index 695484f8..fd775c87 100644 --- a/scene/ground/scene/c02/s02_animation.gd +++ b/scene/ground/scene/c02/s02_animation.gd @@ -8,7 +8,9 @@ var music_box: Closeup2D # 覆盖该方法 func _default_data() -> Dictionary: - return {} + return { + "first_enter": false + } func _ready() -> void: @@ -19,7 +21,10 @@ func _ready() -> void: func _on_ground_ready() -> void: wind_blows = $"../DeployLayer/WindBlows" - wind_blows.visible = false + if data.first_enter: + wind_blows.visible = false + else: + _oneshot_wind.call_deferred() paper_man = $"../DeployLayer/Ambush纸人" if 5 <= ArchiveManager.get_global_value("c02_musicbox_stage", 0): _display_paper_man(false) @@ -32,25 +37,22 @@ func _on_ground_ready() -> void: func _oneshot_wind(): - SceneManager.get_player().global_position.x = 53 - SceneManager.get_player().set_facing_direction(Vector2.RIGHT) + var player = %MainPlayer as MainPlayer SceneManager.freeze_player(0) - %MainPlayer.visible = false + player.hide_sprite = true + player.set_facing_direction(Vector2.RIGHT) + player.global_position.x = 53.0 wind_blows.visible = true wind_blows.play() wind_blows.animation_finished.connect(_on_wind_finished, CONNECT_ONE_SHOT) func _on_wind_finished(): - %MainPlayer.visible = true + set_data("first_enter", true) + %MainPlayer.hide_sprite = false wind_blows.visible = false - #TODO 使用气泡文字 - # DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s02_天冷") - DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT) - - -func _on_dialogue_ended(_res): - SceneManager.release_player() + # 使用气泡文字 + SceneManager.pop_os_with_str("c02_冷飕飕的", false, true) func lumber_interacted(): diff --git a/scene/ground/scene/c02/s02_过道.tscn b/scene/ground/scene/c02/s02_过道.tscn index 8da46735..4ce56c90 100644 --- a/scene/ground/scene/c02/s02_过道.tscn +++ b/scene/ground/scene/c02/s02_过道.tscn @@ -1,17 +1,18 @@ -[gd_scene load_steps=30 format=3 uid="uid://brck77w81fhvc"] +[gd_scene load_steps=28 format=3 uid="uid://brck77w81fhvc"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_wrr6r"] [ext_resource type="Script" uid="uid://bfrgnmde3hjn0" path="res://scene/ground/scene/c02/s02_animation.gd" id="2_5p8ev"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="3_fy0o1"] [ext_resource type="Texture2D" uid="uid://5428j51dwarc" path="res://asset/art/scene/c02/s02_大门过道/bg_过道背景.png" id="3_gjwum"] [ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="4_wbif8"] +[ext_resource type="Texture2D" uid="uid://ceijv5l0prppa" path="res://asset/art/prop/c02/海报(小)/除鼠双杰.png" id="6_gjwum"] +[ext_resource type="Texture2D" uid="uid://b8pcnqvdddo5g" path="res://asset/art/prop/c02/海报特写/除鼠二杰.png" id="7_jg8g0"] [ext_resource type="Texture2D" uid="uid://cvgw2mxrlr6io" path="res://asset/art/scene/c02/旧版/s02_走道/ux_进门鼠疫海报yz.png" id="7_wdwbi"] [ext_resource type="Texture2D" uid="uid://5pl1b7cor715" path="res://asset/art/scene/c02/旧版/s02_走道/e_纸人.png" id="7_xsghn"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="8_52as8"] -[ext_resource type="Texture2D" uid="uid://dtpn7k468vcjb" path="res://asset/art/prop/c02/海报(小)/大舞台.png" id="8_jg8g0"] -[ext_resource type="Texture2D" uid="uid://dut11vxri2hy5" path="res://asset/art/prop/c02/海报特写/剪辫子侦探.png" id="9_jg8g0"] -[ext_resource type="Texture2D" uid="uid://7nudp635g54o" path="res://asset/art/prop/c02/海报特写/大舞台.png" id="9_m1xet"] +[ext_resource type="Texture2D" uid="uid://bt37pw8hhgsec" path="res://asset/art/prop/c02/海报(小)/剪辫子侦探.png" id="8_m1xet"] [ext_resource type="PackedScene" uid="uid://beleib3mmu0af" path="res://scene/little_game/八音盒/八音盒.tscn" id="10_ifae7"] +[ext_resource type="Texture2D" uid="uid://dut11vxri2hy5" path="res://asset/art/prop/c02/海报特写/剪辫子侦探.png" id="10_jg8g0"] [ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="10_pelha"] [ext_resource type="AudioStream" uid="uid://dq2ndg5yd3rps" path="res://asset/audio/sfx/旧版/c02/出现.mp3" id="11_u68d7"] [ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/local_inspectable.tscn" id="12_0fckv"] @@ -22,43 +23,7 @@ [ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/frames.tres" id="19_q0axc"] [ext_resource type="Texture2D" uid="uid://6x6mmg2hig5j" path="res://asset/art/scene/c02/s02_大门过道/e-八音盒(场景中).png" id="22_jg8g0"] -[sub_resource type="Animation" id="Animation_abofy"] -resource_name = "oneshot_天冷" -length = 3.0 -tracks/0/type = "method" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AnimationPlayer") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"_oneshot_wind" -}] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_fjkfm"] -_data = { -&"oneshot_天冷": SubResource("Animation_abofy") -} - -[sub_resource type="Gradient" id="Gradient_p6da7"] -interpolation_mode = 2 -interpolation_color_space = 1 -offsets = PackedFloat32Array(0, 0.177305, 0.43617, 0.684397, 0.989362) -colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0.294118, 1.01176, 1.01176, 1.01176, 0.12549, 1, 1, 1, 0.00520623, 1, 1, 1, 0) - -[sub_resource type="GradientTexture2D" id="GradientTexture2D_m1xet"] -gradient = SubResource("Gradient_p6da7") -width = 512 -height = 512 -use_hdr = true -fill = 1 -fill_from = Vector2(0.5, 0.5) -fill_to = Vector2(1, 1) [sub_resource type="RectangleShape2D" id="RectangleShape2D_dwg0o"] resource_local_to_scene = true @@ -93,9 +58,10 @@ libraries = { script = ExtResource("2_5p8ev") data = { "display_paper_man": false, +"first_enter": false, "oneshot_animation_played": false } -oneshot_animation = "oneshot_天冷" +oneshot_animation = "" [node name="BGSprite2D" parent="Ground" index="2"] self_modulate = Color(0.831373, 0.886275, 0.956863, 1) @@ -105,7 +71,7 @@ texture = ExtResource("3_gjwum") offset = Vector2(0, -240) [node name="portal_left" parent="Ground/DeployLayer" index="0"] -position = Vector2(32, 15) +position = Vector2(28, 21) target_scene = "c02_s01" target_portal = "right" matched_sign_texture = null @@ -121,35 +87,35 @@ unique_name_in_owner = true position = Vector2(394, 23) sprite_frames = ExtResource("4_wbif8") animation = &"c02_吕萍_风吹过" +frame = 10 +frame_progress = 1.0 -[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/WindBlows"] -position = Vector2(-341, 18) -energy = 0.5 -range_item_cull_mask = 15 -texture = SubResource("GradientTexture2D_m1xet") -height = 10.0 +[node name="Ambush太暗了" parent="Ground/DeployLayer" index="3" instance=ExtResource("8_52as8")] +position = Vector2(177, 42) +hook_os_key = "c02_太暗了" -[node name="海报1" parent="Ground/DeployLayer" index="3" instance=ExtResource("12_0fckv")] -position = Vector2(255, -11) +[node name="海报1" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_0fckv")] +position = Vector2(223, -28) +texture = ExtResource("6_gjwum") content_centered = true -texture_cover = ExtResource("9_jg8g0") +texture_cover = ExtResource("7_jg8g0") content_key = "c02_海报1" -[node name="海报2" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_0fckv")] -position = Vector2(319, -17) -texture = ExtResource("8_jg8g0") +[node name="海报2" parent="Ground/DeployLayer" index="5" instance=ExtResource("12_0fckv")] +position = Vector2(314, -26) +texture = ExtResource("8_m1xet") content_centered = true -texture_cover = ExtResource("9_m1xet") +texture_cover = ExtResource("10_jg8g0") content_key = "c02_海报2" -[node name="鼠疫海报" parent="Ground/DeployLayer" index="5" instance=ExtResource("12_0fckv")] +[node name="鼠疫海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("12_0fckv")] position = Vector2(441, -14) texture_cover = ExtResource("7_wdwbi") content_key = "c02_鼠疫海报" -[node name="Ambush纸人" parent="Ground/DeployLayer" index="6" instance=ExtResource("8_52as8")] +[node name="Ambush纸人" parent="Ground/DeployLayer" index="7" instance=ExtResource("8_52as8")] visible = false -position = Vector2(113, 53) +position = Vector2(113, 44) texture = ExtResource("7_xsghn") flip_h = true enabled = false @@ -182,13 +148,13 @@ stream = ExtResource("11_u68d7") dir = "c02" file = "出现.mp3" -[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="7" instance=ExtResource("8_52as8")] +[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="8" instance=ExtResource("8_52as8")] position = Vector2(387, 66) trigger_mode = "interact" freeze_time = 1.0 hook_method = "lumber_interacted" -[node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="8"] +[node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"] visible = false light_mask = 5 position = Vector2(269, 38) @@ -201,35 +167,35 @@ energy = 3.0 range_item_cull_mask = 4 texture = ExtResource("17_m1xet") -[node name="Note老鼠洞" parent="Ground/DeployLayer" index="9" instance=ExtResource("3_fy0o1")] +[node name="Note老鼠洞" parent="Ground/DeployLayer" index="10" instance=ExtResource("3_fy0o1")] position = Vector2(507, 64) title_filter = "c02" note_key = "c02_老鼠洞" -[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="10"] +[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"] visible = false position = Vector2(498, 0) sprite_frames = ExtResource("19_q0axc") animation = &"老鼠托小鞋子" -[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="11" instance=ExtResource("13_ck13g")] +[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="12" instance=ExtResource("13_ck13g")] position = Vector2(498, 65) enabled = false mute_when_interacted = true -[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="12" instance=ExtResource("8_52as8")] +[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="13" instance=ExtResource("8_52as8")] position = Vector2(537, 54) one_shot = false freeze_time = 1.0 hook_method = "check_if_show_shoes" -[node name="煤油灯" parent="Ground/DeployLayer" index="13" instance=ExtResource("17_mpkj1")] +[node name="煤油灯" parent="Ground/DeployLayer" index="14" instance=ExtResource("17_mpkj1")] position = Vector2(122, -15) gaslight_energy = 2.0 gaslight_ground_energy = 2.0 debug_light_switch = true -[node name="Closeup八音盒" parent="Ground/DeployLayer" index="14" instance=ExtResource("19_6wwyd")] +[node name="Closeup八音盒" parent="Ground/DeployLayer" index="15" instance=ExtResource("19_6wwyd")] position = Vector2(533, 67) packed_scene = ExtResource("10_ifae7") @@ -250,6 +216,7 @@ texture = SubResource("GradientTexture2D_fvldj") [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(53, 98) +facing_direction = Vector2(1, 0) [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] points = PackedVector2Array(37, 150, 670, 150) diff --git a/scene/ground/scene/c02/s03_animation.gd b/scene/ground/scene/c02/s03_animation.gd index 5ccb043e..018c3796 100644 --- a/scene/ground/scene/c02/s03_animation.gd +++ b/scene/ground/scene/c02/s03_animation.gd @@ -121,7 +121,7 @@ func eavesdrop() -> void: await get_tree().create_timer(1.0).timeout # TODO 对话替换 DialogueManager.show_dialogue_balloon( - dialogue_c02, "c02_04_李氏王赖子", [GlobalConfig.DIALOG_IGNORE_INPUT] + dialogue_c02, "c02_04_李氏癞子", [GlobalConfig.DIALOG_IGNORE_INPUT] ) await animation_finished SceneManager.release_player() @@ -164,16 +164,13 @@ func bully_ambush(): func bully_end(): SceneManager.release_player() - # 小猫玩具微亮 + #TODO 小猫玩具微亮 SceneManager.pop_debug_dialog_info("美术", "手中小猫玩具微亮") - #TODO 使用气泡文字 - # DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_玩具发光") + SceneManager.pop_os_with_str("小猫玩具发光", true, true) func block_right_move(): - var msg = tr("c02_点火前阻止右移") - var lines = await DialogueUtil.generate_lines(msg) - SceneManager.pop_os(lines) + SceneManager.pop_os_with_str("c02_点火前阻止右移") # var count_down_tween:Tween @@ -187,9 +184,7 @@ func block_right_move(): func _on_counter_interacted(): if not ArchiveManager.get_global_value("c02_ready_to_fire"): - var msg = tr("c02_火灾等待准备") - var lines = await DialogueUtil.generate_lines(msg) - SceneManager.pop_os(lines) + SceneManager.pop_os_with_str("c02_火灾等待准备") return counter.enabled = false if not ArchiveManager.get_global_value("c02_burning"): diff --git a/scene/ground/scene/c02/s06_animation.gd b/scene/ground/scene/c02/s06_animation.gd index bc109dd2..18d027df 100644 --- a/scene/ground/scene/c02/s06_animation.gd +++ b/scene/ground/scene/c02/s06_animation.gd @@ -112,7 +112,11 @@ func _c02_final_show(): # WARN: 如果不延时,开场直接显示 dialog 可能会显示失败(无报错提示) await get_tree().create_timer(0.1).timeout player.global_position.x = 650 - DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈") + # 和小蝉对话 + DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈1") + await DialogueManager.dialogue_ended + # 瞎子打断 + DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈2") func _c02_final_show_end(): diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index 9b9b939b..f0ae7aa1 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -361,6 +361,7 @@ texture = ExtResource("5_26mqt") points = PackedVector2Array(37, 150, 900, 150) [node name="DirectionalLight2D" parent="Ground" index="9"] +visible = false energy = 0.9 blend_mode = 1 diff --git a/scene/ground/script/c02/小手讨东西.gd b/scene/ground/script/c02/小手讨东西.gd index 7ebcc94e..ed5faf8f 100644 --- a/scene/ground/script/c02/小手讨东西.gd +++ b/scene/ground/script/c02/小手讨东西.gd @@ -142,6 +142,7 @@ func _quit_communicating() -> void: # 重置动画 SceneManager.get_player().set_facing_direction(Vector2.ONE) animated_sprite.visible = true + animated_sprite.play("小手_纸杯_show") var interacting := false: diff --git a/scene/little_game/拼凑信件.gd b/scene/little_game/拼凑信件.gd index 2a002a0f..d87df4f3 100644 --- a/scene/little_game/拼凑信件.gd +++ b/scene/little_game/拼凑信件.gd @@ -134,7 +134,6 @@ func _post_success(): # 不显示文本,让玩家在重要物品栏去看(提示) # var tween = create_tween() # tween.tween_property(content_rect, "modulate:a", 1.0, 1.0) - SceneManager.pop_center_notification(tr("ui_important_item_update")) var texture = preload("res://asset/art/prop/c01/院长的信.png") var inspector = SceneManager.get_inspector() inspector.pop_standard_inspection(texture, null, tr("prop_院长的信_说明")) diff --git a/scene/notification/notification.tscn b/scene/notification/notification.tscn index 145ac4e4..6f2a7e03 100644 --- a/scene/notification/notification.tscn +++ b/scene/notification/notification.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://b2aixse6e2l86" path="res://scene/notification/notification.gd" id="1_j0g80"] [ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_eh7gu"] -[ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="3_wqejl"] +[ext_resource type="Texture2D" uid="uid://d4laekws15ap6" path="res://asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-08.png" id="3_otkdq"] [sub_resource type="LabelSettings" id="LabelSettings_ycsas"] font = ExtResource("2_eh7gu") @@ -64,9 +64,15 @@ label_settings = SubResource("LabelSettings_ycsas") [node name="MarginContainer3" type="MarginContainer" parent="."] layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -150.0 +offset_top = -150.0 +offset_right = 150.0 +offset_bottom = 150.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 @@ -79,6 +85,6 @@ theme_override_constants/margin_bottom = 64 unique_name_in_owner = true layout_mode = 2 mouse_filter = 2 -texture = ExtResource("3_wqejl") -expand_mode = 1 +texture = ExtResource("3_otkdq") +expand_mode = 3 stretch_mode = 5 diff --git a/scene/player/main_player.gd b/scene/player/main_player.gd index 3bc5bd71..89ff439d 100644 --- a/scene/player/main_player.gd +++ b/scene/player/main_player.gd @@ -7,6 +7,11 @@ signal position_updated(global_pos: Vector2) signal os_finished signal animation_finished +@export var hide_sprite := false: + set(val): + hide_sprite = val + if is_node_ready(): + sprite.visible = not hide_sprite @export var enable_light := true: set(val): enable_light = val @@ -76,6 +81,7 @@ var current_animation_config := ( # # animation -> {frame -> {shadow polygon}} # var animation_shadow_polygons = {} func _ready() -> void: + sprite.visible = not hide_sprite light.enabled = enable_light os_contaner.modulate.a = 0.0 # set up animated sprite @@ -240,6 +246,9 @@ func _tweak_camera_marker(): func set_catty_light(enable := false): + # 如果没有允许光照,那么 catty 的光也不添加 + if not enable_light: + return var tween = create_tween() if enable: tween.tween_property(catty_light, "energy", catty_light_energy, 0.5) @@ -361,26 +370,53 @@ func _reset_os_and_shadow_position(): var os_tween: Tween +var os_pausing_timer: SceneTreeTimer -func pop_os(lines := []): +func pop_os(lines := [], auto_freeze := true, auto_release := true): if os_tween: os_tween.kill() + if auto_freeze: + freeze_player(0, 3, false) os_tween = create_tween() os_label.text = "" os_tween.tween_property(os_contaner, "modulate:a", 1.0, 0.2) for line in lines: - var duration = max(min(4.0, line.text.length() * 0.2), 2.0) + var duration = max(min(4.0, line.text.length() * 0.2), 2.0) + 0.2 # var duration = max(min(4.0, line.text.length() * 0.2), 2.0) - 0.4 - os_tween.tween_callback(_os_load_line.bind(line)) - os_tween.tween_callback(os_label.type_out) - os_tween.tween_interval(duration) + os_tween.tween_callback(_os_load_line.bind(line, duration)) + os_tween.tween_interval(0.1) os_tween.tween_callback(os_finished.emit) os_tween.tween_property(os_contaner, "modulate:a", 0.0, 0.2) + if auto_release: + os_tween.tween_callback(release_player) -func _os_load_line(line): +func _os_load_line(line, duration): os_label.dialogue_line = line + os_label.type_out() + os_tween.pause() + if os_pausing_timer and os_pausing_timer.timeout.is_connected(os_tween.play): + os_pausing_timer.timeout.disconnect(os_tween.play) + os_pausing_timer = get_tree().create_timer(duration) + os_pausing_timer.timeout.connect(_on_os_line_timeout, CONNECT_ONE_SHOT) + + +func _on_os_line_timeout(naturally := true): + if not naturally: + if os_pausing_timer.timeout.is_connected(_on_os_line_timeout): + os_pausing_timer.timeout.disconnect(_on_os_line_timeout) + if os_tween.is_valid(): + os_label.text = "" + os_tween.play() + os_pausing_timer = null + + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("interact"): + if os_pausing_timer and os_pausing_timer.time_left > 0: + _on_os_line_timeout(false) + get_viewport().set_input_as_handled() # animation -> offset_y diff --git a/scene/settings/settings.gd b/scene/settings/settings.gd index b48c0eb2..8e6a9dc3 100644 --- a/scene/settings/settings.gd +++ b/scene/settings/settings.gd @@ -13,6 +13,9 @@ signal exited @onready var exit_btn = %ExitBtn as Button @onready var diary_btn = %DiaryBtn as Button +# 音量 DB 偏移 +var sfx_db_offset := 6.0 +var dialog_db_offset := -20.0 func _ready(): layer = GlobalConfig.CANVAS_LAYER_SETTINGS @@ -22,10 +25,10 @@ func _ready(): AudioServer.get_bus_volume_db(AudioServer.get_bus_index("Master")) ) sfx_bus_slider.value = db_to_linear( - AudioServer.get_bus_volume_db(AudioServer.get_bus_index("game_sfx")) + AudioServer.get_bus_volume_db(AudioServer.get_bus_index("game_sfx")) - sfx_db_offset ) dialog_bus_slider.value = db_to_linear( - AudioServer.get_bus_volume_db(AudioServer.get_bus_index("dialog")) + AudioServer.get_bus_volume_db(AudioServer.get_bus_index("dialog")) - dialog_db_offset ) master_bus_slider.value_changed.connect(_on_master_bus_slider_value_changed) sfx_bus_slider.value_changed.connect(_on_sfx_bus_slider_value_changed) @@ -69,13 +72,13 @@ func _on_master_bus_slider_value_changed(value: float) -> void: func _on_sfx_bus_slider_value_changed(value: float) -> void: - var db_value = linear_to_db(value) + var db_value = linear_to_db(value) + sfx_db_offset GlobalConfigManager.config.db_game_sfx = db_value AudioServer.set_bus_volume_db(AudioServer.get_bus_index("game_sfx"), db_value) func _on_dialog_bus_slider_value_changed(value: float) -> void: - var db_value = linear_to_db(value) + var db_value = linear_to_db(value) + dialog_db_offset GlobalConfigManager.config.db_dialog = db_value AudioServer.set_bus_volume_db(AudioServer.get_bus_index("dialog"), db_value)