diff --git a/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png new file mode 100644 index 00000000..b06ee876 Binary files /dev/null and b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png differ diff --git a/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import new file mode 100644 index 00000000..e59d6450 --- /dev/null +++ b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgax11gclu80s" +path="res://.godot/imported/ux_除晦手.png-6c68f35f3067c90c07cbb89651b18feb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png" +dest_files=["res://.godot/imported/ux_除晦手.png-6c68f35f3067c90c07cbb89651b18feb.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/inspect_content.csv b/asset/dialogue/inspect_content.csv index 7d5c1e76..35cbd97a 100644 --- a/asset/dialogue/inspect_content.csv +++ b/asset/dialogue/inspect_content.csv @@ -69,3 +69,36 @@ c03_肉铺账本6,二十日 卖三〇三三 猪肉一斤,,,, c03_肉铺账本7,二十五日 新货到 米肉二十斤 自留 米肉五斤,,,, c03_肉铺账本8,二十六日 赠启钊兄 米肉二斤,,,, c03_肉铺账本9,二十七日 卖三〇一二 米肉一斤,,,, +c04_除晦游戏1,假神医?,,,, +c04_除晦游戏2,一家人都是骗子,,,, +c04_除晦游戏3,外地人,,,, +c04_除晦游戏4,搬来才多久,,,, +c04_除晦游戏5,李家小弟被他们害死了,,,, +c04_除晦游戏6,三楼晚上会有小孩哭,,,, +c04_除晦游戏7,不准去三楼玩,,,, +c04_除晦游戏8,失踪的小女孩是被他们拐走的把,,,, +c04_除晦游戏9,又有人失踪了,,,, +c04_除晦游戏10,搞得我都不敢出门了,,,, +c04_除晦游戏11,他们家养了只黑猫,,,, +c04_除晦游戏12,黑猫不吉利,,,, +c04_除晦游戏13,那家男的能和死人说话,,,, +c04_除晦游戏14,听说夫妻两人早就死了,,,, +c04_除晦游戏15,摊上这种父母真是作孽,,,, +c04_除晦游戏16,轻点声,,,, +c04_除晦游戏17,小心被勾了魂,,,, +c04_除晦游戏18,好久都不出门,,,, +c04_除晦游戏19,肯定心虚了,,,, +c04_除晦游戏20,就那家女儿长得这么胖,,,, +c04_除晦游戏21,他们家还吃人呢,,,, +c04_除晦游戏22,性格一点不像女孩,,,, +c04_除晦游戏23,不知道养了个什么东西出来,,,, +c04_除晦游戏24,真邋遢,,,, +c04_除晦游戏25,他们的女儿其实是儿子吧,,,, +c04_除晦游戏26,趁她尿尿的时候看一下,,,, +c04_除晦游戏27,身上都是怪味道,,,, +c04_除晦游戏28,不知道拜了哪路妖怪,,,, +c04_除晦游戏29,他老婆还是个哑巴,,,, +c04_除晦游戏30,那男人把他老婆的舌头给妖怪吃,,,, +c04_除晦游戏31,亲眼所见啊,,,, +c04_除晦游戏32,早点去死吧,,,, +c04_除晦游戏33,活着祸害人,,,, diff --git a/asset/dialogue/inspect_content.dialogue b/asset/dialogue/inspect_content.dialogue index 60f2d19b..fce25eca 100644 --- a/asset/dialogue/inspect_content.dialogue +++ b/asset/dialogue/inspect_content.dialogue @@ -96,3 +96,39 @@ 二十六日 赠启钊兄 米肉二斤[ID:c03_肉铺账本8] 二十七日 卖三〇一二 米肉一斤[ID:c03_肉铺账本9] => END + +~ c04_除晦游戏 +假神医?[ID:c04_除晦游戏1] +一家人都是骗子[ID:c04_除晦游戏2] +外地人[ID:c04_除晦游戏3] +搬来才多久[ID:c04_除晦游戏4] +李家小弟被他们害死了[ID:c04_除晦游戏5] +三楼晚上会有小孩哭[ID:c04_除晦游戏6] +不准去三楼玩[ID:c04_除晦游戏7] +失踪的小女孩是被他们拐走的把[ID:c04_除晦游戏8] +又有人失踪了[ID:c04_除晦游戏9] +搞得我都不敢出门了[ID:c04_除晦游戏10] +他们家养了只黑猫[ID:c04_除晦游戏11] +黑猫不吉利[ID:c04_除晦游戏12] +那家男的能和死人说话[ID:c04_除晦游戏13] +听说夫妻两人早就死了[ID:c04_除晦游戏14] +摊上这种父母真是作孽[ID:c04_除晦游戏15] +轻点声[ID:c04_除晦游戏16] +小心被勾了魂[ID:c04_除晦游戏17] +好久都不出门[ID:c04_除晦游戏18] +肯定心虚了[ID:c04_除晦游戏19] +就那家女儿长得这么胖[ID:c04_除晦游戏20] +他们家还吃人呢[ID:c04_除晦游戏21] +性格一点不像女孩[ID:c04_除晦游戏22] +不知道养了个什么东西出来[ID:c04_除晦游戏23] +真邋遢[ID:c04_除晦游戏24] +他们的女儿其实是儿子吧[ID:c04_除晦游戏25] +趁她尿尿的时候看一下[ID:c04_除晦游戏26] +身上都是怪味道[ID:c04_除晦游戏27] +不知道拜了哪路妖怪[ID:c04_除晦游戏28] +他老婆还是个哑巴[ID:c04_除晦游戏29] +那男人把他老婆的舌头给妖怪吃[ID:c04_除晦游戏30] +亲眼所见啊[ID:c04_除晦游戏31] +早点去死吧[ID:c04_除晦游戏32] +活着祸害人[ID:c04_除晦游戏33] +=> END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 441a1261..3d5075bd 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -381,3 +381,4 @@ c04_鬼打墙_走向楼梯,不,我不想听它们的。,,,,, c04_鬼打墙_再次开门,不会是...鬼打墙吧?,,,,, c04_鬼打墙_全部交互完,...,,,,, c04_鬼打墙_捂眼,我记得...{br}捂眼静心,或许有用。,,,,, +c04_除晦游戏_开始,好吵...不要吵了,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 9a1ca644..76f098eb 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -479,6 +479,8 @@ skip[ID:prop_沾血的老虎钳_详情] 不会是...鬼打墙吧?[ID:c04_鬼打墙_再次开门] ...[ID:c04_鬼打墙_全部交互完] 我记得...{br}捂眼静心,或许有用。[ID:c04_鬼打墙_捂眼] +# 除晦游戏 +好吵...不要吵了[ID:c04_除晦游戏_开始] => END ~ Notes_c05 diff --git a/config/animation/entity_sprite_frames.tres b/config/animation/entity_sprite_frames.tres index f7a217c8..e68a7fa6 100644 --- a/config/animation/entity_sprite_frames.tres +++ b/config/animation/entity_sprite_frames.tres @@ -1,4 +1,4 @@ -[gd_resource type="SpriteFrames" load_steps=1071 format=3 uid="uid://b7fhheih1hbvf"] +[gd_resource type="SpriteFrames" load_steps=1102 format=3 uid="uid://b7fhheih1hbvf"] [ext_resource type="Texture2D" uid="uid://dvq64espa37lx" path="res://asset/art/animation/c00_吕萍_idle_left/zhhx1.png" id="1_ekv0l"] [ext_resource type="Texture2D" uid="uid://dcp4gk5lib4bl" path="res://asset/art/animation/c00_吕萍_idle_left/zhhx2.png" id="2_fq076"] @@ -1052,24 +1052,55 @@ [ext_resource type="Texture2D" uid="uid://d11u3r8knuujh" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/胖子对半砍/6.png" id="1041_nis13"] [ext_resource type="Texture2D" uid="uid://df0k1vv0tnx75" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/胖子对半砍/7.png" id="1042_y1qej"] [ext_resource type="Texture2D" uid="uid://r7l0ou2nvmwt" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/胖子对半砍/8.png" id="1043_e3b0h"] +[ext_resource type="Texture2D" uid="uid://75q52y1am8w7" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/0.png" id="1053_ims8x"] [ext_resource type="Texture2D" uid="uid://dmr1greolytrq" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/0.png" id="1053_mhvgv"] [ext_resource type="Texture2D" uid="uid://gy6scy5crhox" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/1.png" id="1054_3vhq4"] +[ext_resource type="Texture2D" uid="uid://dssx0cv6lcn4h" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/1.png" id="1054_8syho"] [ext_resource type="Texture2D" uid="uid://b7vdib1l4fvmv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/2.png" id="1055_37ts7"] +[ext_resource type="Texture2D" uid="uid://dqy83v7otqi8q" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/2.png" id="1055_xpdus"] [ext_resource type="Texture2D" uid="uid://6p3a2xxh4vle" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/3.png" id="1056_q7q0i"] +[ext_resource type="Texture2D" uid="uid://dskammmgt6p1k" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/3.png" id="1056_ubuty"] [ext_resource type="Texture2D" uid="uid://dxcm3462m4my6" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/4.png" id="1057_la5wd"] +[ext_resource type="Texture2D" uid="uid://1jg11gdxqbyg" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/4.png" id="1057_lpy23"] +[ext_resource type="Texture2D" uid="uid://b4htb08ofcct2" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/0.png" id="1058_35cy1"] [ext_resource type="Texture2D" uid="uid://b28j1kgnc0xro" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/5.png" id="1058_voge0"] +[ext_resource type="Texture2D" uid="uid://b4ef4dgnql7ru" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/1.png" id="1059_313ip"] [ext_resource type="Texture2D" uid="uid://dmnjnbsodlpon" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/6.png" id="1059_h8k05"] [ext_resource type="Texture2D" uid="uid://t6pqq5x6jafs" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/7.png" id="1060_2uu24"] +[ext_resource type="Texture2D" uid="uid://bvbt0gywcl4ti" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/2.png" id="1060_as7o6"] [ext_resource type="Texture2D" uid="uid://gy1ugcpngt1p" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/8.png" id="1061_0ye5j"] +[ext_resource type="Texture2D" uid="uid://ttuewk1ghnmq" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/3.png" id="1061_ycyb5"] +[ext_resource type="Texture2D" uid="uid://bamy0yy0eo42j" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/4.png" id="1062_8dtli"] [ext_resource type="Texture2D" uid="uid://4t48tqnox4vr" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/9.png" id="1062_xfi5l"] +[ext_resource type="Texture2D" uid="uid://c3ha1p6fu6qkm" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/5.png" id="1063_p46hf"] [ext_resource type="Texture2D" uid="uid://d2j6ubjov164f" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/10.png" id="1063_r3y8n"] +[ext_resource type="Texture2D" uid="uid://b81w5sfycq8l1" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/0.png" id="1064_1eof2"] [ext_resource type="Texture2D" uid="uid://dop55jxd1okb8" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/11.png" id="1064_b5n4m"] [ext_resource type="Texture2D" uid="uid://d3p62apuyj7l6" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/12.png" id="1065_b3sel"] +[ext_resource type="Texture2D" uid="uid://cxjr2a0623tak" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/1.png" id="1065_eehli"] +[ext_resource type="Texture2D" uid="uid://cprtrlpaatvcs" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/2.png" id="1066_fdp6i"] [ext_resource type="Texture2D" uid="uid://c7ryymjhjk2gv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/13.png" id="1066_t25a7"] +[ext_resource type="Texture2D" uid="uid://bedaaviwo4rxv" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/3.png" id="1067_j8iso"] [ext_resource type="Texture2D" uid="uid://cywr0736ooibx" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/14.png" id="1067_wv12g"] [ext_resource type="Texture2D" uid="uid://dv4gc8w1p16gv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/15.png" id="1068_ap1tk"] +[ext_resource type="Texture2D" uid="uid://du5iwu6kklql4" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/0.png" id="1068_exh41"] +[ext_resource type="Texture2D" uid="uid://cv5s41fdlm0jd" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/1.png" id="1069_38qsh"] [ext_resource type="Texture2D" uid="uid://rbsdh3wjiy4d" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/16.png" id="1069_sdjh1"] [ext_resource type="Texture2D" uid="uid://d3308o8u5bb16" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/17.png" id="1070_6o5lc"] +[ext_resource type="Texture2D" uid="uid://ctbxwos4m7201" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/2.png" id="1070_nohsw"] +[ext_resource type="Texture2D" uid="uid://b1udcj3h4nxst" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/3.png" id="1071_bbjp7"] +[ext_resource type="Texture2D" uid="uid://ccaa7nl4q5srm" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/4.png" id="1072_6krcv"] +[ext_resource type="Texture2D" uid="uid://qfa7708xb25y" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/5.png" id="1073_rdn4r"] +[ext_resource type="Texture2D" uid="uid://5inug2lf4dgn" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/6.png" id="1074_s307o"] +[ext_resource type="Texture2D" uid="uid://qbowwc5r7tpn" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/7.png" id="1075_a43i5"] +[ext_resource type="Texture2D" uid="uid://dcu7se5xi876v" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/8.png" id="1076_t0x06"] +[ext_resource type="Texture2D" uid="uid://betjp865ic4f2" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/9.png" id="1077_li64a"] +[ext_resource type="Texture2D" uid="uid://btvofoysylc4p" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/10.png" id="1078_87fjk"] +[ext_resource type="Texture2D" uid="uid://tsc8u8kvlset" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/11.png" id="1079_ivc6x"] +[ext_resource type="Texture2D" uid="uid://cduktq0r8noq7" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/12.png" id="1080_wnl82"] +[ext_resource type="Texture2D" uid="uid://dw33aqiha46v0" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/13.png" id="1081_tnls8"] +[ext_resource type="Texture2D" uid="uid://wbnp0dmrndnx" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/14.png" id="1082_oi5yg"] +[ext_resource type="Texture2D" uid="uid://cfu2v88etq5dj" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/15.png" id="1083_ev0x7"] [resource] animations = [{ @@ -4959,6 +4990,119 @@ animations = [{ "speed": 5.0 }, { "frames": [{ +"duration": 1.0, +"texture": ExtResource("1053_ims8x") +}, { +"duration": 1.0, +"texture": ExtResource("1054_8syho") +}, { +"duration": 1.0, +"texture": ExtResource("1055_xpdus") +}, { +"duration": 1.0, +"texture": ExtResource("1056_ubuty") +}, { +"duration": 1.0, +"texture": ExtResource("1057_lpy23") +}], +"loop": false, +"name": &"c04_吕萍_捂眼", +"speed": 6.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1058_35cy1") +}, { +"duration": 1.0, +"texture": ExtResource("1059_313ip") +}, { +"duration": 1.0, +"texture": ExtResource("1060_as7o6") +}, { +"duration": 1.0, +"texture": ExtResource("1061_ycyb5") +}, { +"duration": 1.0, +"texture": ExtResource("1062_8dtli") +}, { +"duration": 1.0, +"texture": ExtResource("1063_p46hf") +}], +"loop": false, +"name": &"c04_吕萍_捂眼呼吸", +"speed": 1.5 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1064_1eof2") +}, { +"duration": 1.0, +"texture": ExtResource("1065_eehli") +}, { +"duration": 1.0, +"texture": ExtResource("1066_fdp6i") +}, { +"duration": 1.0, +"texture": ExtResource("1067_j8iso") +}], +"loop": false, +"name": &"c04_吕萍_捂眼放下", +"speed": 6.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1068_exh41") +}, { +"duration": 1.0, +"texture": ExtResource("1069_38qsh") +}, { +"duration": 1.0, +"texture": ExtResource("1070_nohsw") +}, { +"duration": 1.0, +"texture": ExtResource("1071_bbjp7") +}, { +"duration": 1.0, +"texture": ExtResource("1072_6krcv") +}, { +"duration": 1.0, +"texture": ExtResource("1073_rdn4r") +}, { +"duration": 1.0, +"texture": ExtResource("1074_s307o") +}, { +"duration": 1.0, +"texture": ExtResource("1075_a43i5") +}, { +"duration": 1.0, +"texture": ExtResource("1076_t0x06") +}, { +"duration": 1.0, +"texture": ExtResource("1077_li64a") +}, { +"duration": 1.0, +"texture": ExtResource("1078_87fjk") +}, { +"duration": 1.0, +"texture": ExtResource("1079_ivc6x") +}, { +"duration": 1.0, +"texture": ExtResource("1080_wnl82") +}, { +"duration": 1.0, +"texture": ExtResource("1081_tnls8") +}, { +"duration": 1.0, +"texture": ExtResource("1082_oi5yg") +}, { +"duration": 1.0, +"texture": ExtResource("1083_ev0x7") +}], +"loop": true, +"name": &"c04_吕萍_捂眼走", +"speed": 6.0 +}, { +"frames": [{ "duration": 2.0, "texture": ExtResource("1053_mhvgv") }, { diff --git a/manager/config_manager/global_config.gd b/manager/config_manager/global_config.gd index 0cc46509..fc50a372 100644 --- a/manager/config_manager/global_config.gd +++ b/manager/config_manager/global_config.gd @@ -7,7 +7,7 @@ const DEBUG_CHARACTER_PREFIX = "[debug]" # 影响事件的 release_stage # 0:demo # 1:v1.0正式版 -const RELEASE_STAGE := 0 +const RELEASE_STAGE := 1 static func is_demo() -> bool: return RELEASE_STAGE == 0 diff --git a/scene/character/main_player.gd b/scene/character/main_player.gd index 6394deed..e27673fd 100644 --- a/scene/character/main_player.gd +++ b/scene/character/main_player.gd @@ -23,7 +23,7 @@ signal animation_finished @export var lock_move_right := false @export var reenter_lock: PlayerReenterLock @export var camera_marker: CameraFocusMarker -@export_enum("吕萍", "吕萍爬行", "吕萍带小猫", "吕萍推柜子", "吕萍拉大柜子", "小小蝶", "盒子猫", "胖子游戏", "小小小蝶") var character := "吕萍": +@export_enum("吕萍", "吕萍爬行", "吕萍带小猫", "吕萍推柜子", "吕萍拉大柜子", "小小蝶", "盒子猫", "胖子游戏", "吕萍捂脸", "小小小蝶") var character := "吕萍": set(val): character = val if is_node_ready(): diff --git a/scene/character/player_animation_config.gd b/scene/character/player_animation_config.gd index a3fadf62..d4e7a0bf 100644 --- a/scene/character/player_animation_config.gd +++ b/scene/character/player_animation_config.gd @@ -56,7 +56,12 @@ var ANIMATION_CONFIG = { 20: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠呼吸", &""], 21: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠起身_屠宰间", &""], 22: [&"", Vector2.ONE, Vector2(341.0, -75.0), &"", &"c02_吕萍_风吹过"], + # 第三章 23: [&"c04_吕萍_木头人死亡", Vector2.ONE, Vector2(0, -63.5)], + 24: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼"], + 25: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼呼吸"], + 26: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼放下"], + 27: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼走"], }, "吕萍爬行": { @@ -207,12 +212,34 @@ var ANIMATION_CONFIG = { # 此处为[2][3]分别为 sprite 向左、向右时的 offset MOVEMENT_WALKING: [&"", &"c03_胖子游戏_瘦子走"], MOVEMENT_RUNNING: [&"", &"c03_胖子游戏_瘦子跑"], - 5: [&"c03_胖子游戏_掉下来", Vector2.ONE, Vector2(0, -108.0)], + 5: [&"c03_胖子游戏_掉下来", Vector2.ONE, Vector2(0, -108.0)], 6: [&"c03_胖子游戏_洞里爬出来", Vector2.ONE, Vector2(-70, -44.5)], 7: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_胖子对半砍"], 8: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_吃东西"], 9: [&"", Vector2.ONE, Vector2(0, -108.0), &"", &"c03_胖子游戏_爬起来"], }, + "吕萍捂脸": + { + "scale": Vector2.ONE, + "speed_walking": 60.0, + "can_run": false, + "speed_runnig": 110.0, + "walk_footstep": 0.5, + "run_footstep": 7.0 / 10.0 / 2.0, + # 内心 os 时,dialogue 的高度 + "os_height": 120.0, + "light_height": 60.0, + # 人物脚底 offset,吕萍为 0,高 200px,足底在 100px 处 + "foot_offset": Vector2(0, -50), + MOVEMENT_IDLE: [&"", &"c04_吕萍_捂眼呼吸"], + MOVEMENT_WALKING: [&"", &"c04_吕萍_捂眼走"], + MOVEMENT_RUNNING: [&"", &"c04_吕萍_捂眼走"], + # 第三章 + 24: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼"], + 25: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼呼吸"], + 26: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼放下"], + 27: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼走"], + }, "小小小蝶": { "scale": Vector2(1, 1), diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index ab102308..20371c5e 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -55,6 +55,7 @@ const GROUND_SCENE_PATH_DICT: Dictionary[String, Dictionary] = { "c04_s06": {"path": "uid://dgcxqcu5k6tvt", "name": "小蝶房间"}, "c04_s07": {"path": "uid://b6cfu5rs88pql", "name": "佛堂"}, "c04_s08": {"path": "uid://dcg8ekvhqxjjs", "name": "三楼III"}, + "c04_s09": {"path": "uid://cchuw5rw6cf0l", "name": "除晦游戏"}, } # 注意: 共享 ground archive diff --git a/scene/ground/scene/c04/s01_父母房间.tscn b/scene/ground/scene/c04/s01_父母房间.tscn index 2fc89104..29658288 100644 --- a/scene/ground/scene/c04/s01_父母房间.tscn +++ b/scene/ground/scene/c04/s01_父母房间.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://drjnu33pga6i5"] +[gd_scene load_steps=14 format=3 uid="uid://drjnu33pga6i5"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_36j8f"] [ext_resource type="Script" uid="uid://bkbngux0ije3l" path="res://scene/ground/scene/c04/s01_父母房间.gd" id="2_1k73c"] @@ -7,6 +7,7 @@ [ext_resource type="Texture2D" uid="uid://byxt5camx1sbh" path="res://asset/art/scene/c04/s01_父母房间/小蝶父母房间.png" id="5_7m886"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="5_173ya"] [ext_resource type="PackedScene" uid="uid://8chvwh72yan1" path="res://scene/ground/script/c03/s09_closeup九宫格游戏.tscn" id="6_1k73c"] +[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_c3ujy"] [ext_resource type="Texture2D" uid="uid://72r8mpv4dym1" path="res://asset/art/scene/c04/s01_父母房间/藤曼.png" id="6_rfsfd"] [ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="7_rfsfd"] [ext_resource type="Texture2D" uid="uid://c22pwj4e7hxo5" path="res://asset/art/scene/c04/s01_父母房间/前景.png" id="9_lkeaf"] @@ -55,7 +56,13 @@ target_scene = "c04_s06" target_portal = "left" status = "opened" -[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_c3ujy")] +position = Vector2(258, 37) +debug_note = "除晦游戏结束后传送点" +enabled = false +portal_name = "1" + +[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="3"] position = Vector2(319, -27) texture = ExtResource("6_rfsfd") @@ -67,11 +74,11 @@ updater_ease_duration = 0.0 updater_stages = Array[int]([0, 1]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" -[node name="Closeup九宫格游戏" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_173ya")] +[node name="Closeup九宫格游戏" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_173ya")] position = Vector2(178, 30) packed_scene = ExtResource("6_1k73c") -[node name="Closeup桌面" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_173ya")] +[node name="Closeup桌面" parent="Ground/DeployLayer" index="5" instance=ExtResource("5_173ya")] position = Vector2(306, 34) packed_scene = ExtResource("10_lkeaf") diff --git a/scene/ground/scene/c04/s08_三楼III.gd b/scene/ground/scene/c04/s08_三楼III.gd index 5cdef8ae..d0199c72 100644 --- a/scene/ground/scene/c04/s08_三楼III.gd +++ b/scene/ground/scene/c04/s08_三楼III.gd @@ -130,6 +130,7 @@ func _game_success() -> void: await Util.wait(1.0) var animation_player = $"鬼打墙黑手Effect/AnimationPlayer" animation_player.play("双手捂屏幕") + _action_hide_face() # 重置镜头与玩家活动范围 SceneManager.get_player().player_movement_rect = player_rect var camera = SceneManager.get_camera_marker() @@ -143,6 +144,7 @@ func _game_success() -> void: _hide_trap_layer() await Util.wait(1.5) animation_player.play("双手离开屏幕") + SceneManager.get_player().player_action(26, false) camera.speed = 2.0 tween = create_tween() tween.tween_property(camera, "limit_right", camera_rect.size.x, 2.0) @@ -150,6 +152,10 @@ func _game_success() -> void: await Util.wait(1.0) SceneManager.unlock_player() +func _action_hide_face() -> void: + await SceneManager.get_player().player_action(24, false) + SceneManager.get_player().player_action(25, false) + func _hide_trap_layer() -> void: var l = $"../鬼打墙Layer" diff --git a/scene/ground/scene/c04/s08_三楼III.tscn b/scene/ground/scene/c04/s08_三楼III.tscn index 7d838d23..e18f1cc7 100644 --- a/scene/ground/scene/c04/s08_三楼III.tscn +++ b/scene/ground/scene/c04/s08_三楼III.tscn @@ -288,7 +288,7 @@ updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" [node name="排队纸人" type="Sprite2D" parent="Ground/DeployLayer" index="11"] -position = Vector2(413.6, 10.4) +position = Vector2(464.6, 9.4) scale = Vector2(0.8, 0.8) texture = ExtResource("21_llqg1") @@ -301,7 +301,7 @@ updater_stages = Array[int]([3]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" [node name="排队纸人_歪头" type="Sprite2D" parent="Ground/DeployLayer" index="12"] -position = Vector2(413.6, 10.4) +position = Vector2(464.6, 9.4) scale = Vector2(0.8, 0.8) texture = ExtResource("22_qnwug") @@ -484,14 +484,17 @@ centered = false offset = Vector2(0, -100) [node name="砖墙1" type="Sprite2D" parent="Ground/鬼打墙Layer"] +visible = false position = Vector2(282, -7) texture = ExtResource("32_44hgy") [node name="砖墙2" type="Sprite2D" parent="Ground/鬼打墙Layer"] +visible = false position = Vector2(368, -8) texture = ExtResource("32_44hgy") [node name="砖墙3" type="Sprite2D" parent="Ground/鬼打墙Layer"] +visible = false position = Vector2(451, -8) texture = ExtResource("32_44hgy") diff --git a/scene/ground/scene/c04/s09_除晦游戏.gd b/scene/ground/scene/c04/s09_除晦游戏.gd index 4b2f923c..cfe93b49 100644 --- a/scene/ground/scene/c04/s09_除晦游戏.gd +++ b/scene/ground/scene/c04/s09_除晦游戏.gd @@ -14,6 +14,7 @@ func _ready() -> void: #region node_reference +var inversed_color_sprite: Sprite2D #endregion @@ -24,6 +25,83 @@ func _setup_node_reference() -> void: var texture_painting_after_tear = preload("uid://deoi4dv42vspn") +var bg_texture_width: float +var player: MainPlayer + func _on_ground_ready() -> void: - pass + bg_texture_width = $"../BGSprite2D".texture.get_size().x + inversed_color_sprite = $"../DeployLayer/反色空间" + player = SceneManager.get_player() + # 锁定玩家位置 + player.global_position.x = $"../DeployLayer/portal_1".global_position.x + player.set_facing_direction(Vector2.RIGHT) + # 锁定玩家 + SceneManager.lock_player() + Util.timer(2.0, _game_intro) + + +func _game_intro() -> void: + # 手捂脸 + _action_hide_face() + _toggle_inversed_effect(true) + await Util.wait(2.0) + # 开始游戏 + var root1 = $"../DeployLayer/文字Root1" + root1.start_disperse_game() + root1.game_success.connect(_stage_1_success, CONNECT_ONE_SHOT) + await Util.wait(2.0) + # 显示提示文字 + var label = $"../DeployLayer/屏中文字/提示文字" + $"Sfx红字音效".play() + var tween = create_tween() + tween.tween_property(label, "modulate:a", 1.0, 1.0) + tween.tween_interval(3.0) + tween.tween_property(label, "modulate:a", 0.0, 1.0) + + +func _action_hide_face() -> void: + SceneManager.get_player().character = "吕萍捂脸" + SceneManager.get_player().player_action(24, true) + + +# 更新反色空间位置 +func _physics_process(_delta: float) -> void: + if not player or Engine.is_editor_hint(): + return + var ratio = player.global_position.x / bg_texture_width + inversed_color_sprite.material.set("shader_parameter/offset_ratio", ratio) + + +func _toggle_inversed_effect(show: bool, duration := 2.0) -> void: + if show: + create_tween().tween_property( + inversed_color_sprite.material, "shader_parameter/modulate_a", 1.0, duration + ) + else: + create_tween().tween_property( + inversed_color_sprite.material, "shader_parameter/modulate_a", 0.0, duration + ) + + +func _stage_1_success() -> void: + await Util.wait(1.0) + # 向右走 + var target_x = $"../DeployLayer/portal_2".global_position.x + await SceneManager.get_player().walk_to_x(target_x).finished + await Util.wait(1.0) + _action_hide_face() + # 开始第二阶段游戏 + var root2 = $"../DeployLayer/文字Root2" + root2.start_disperse_game() + root2.game_success.connect(_stage_2_success, CONNECT_ONE_SHOT) + + +func _stage_2_success() -> void: + # 手放下 + SceneManager.get_player().character = "吕萍" + SceneManager.get_player().player_action(26, true) + _toggle_inversed_effect(false) + await Util.wait(2.0) + # 传送到父母房间 + SceneManager.get_ground_loader().transition_to_scene("c04_s01", "1") diff --git a/scene/ground/scene/c04/s09_除晦游戏.tscn b/scene/ground/scene/c04/s09_除晦游戏.tscn index 3a670837..883267de 100644 --- a/scene/ground/scene/c04/s09_除晦游戏.tscn +++ b/scene/ground/scene/c04/s09_除晦游戏.tscn @@ -1,25 +1,42 @@ -[gd_scene load_steps=14 format=3 uid="uid://cchuw5rw6cf0l"] +[gd_scene load_steps=23 format=3 uid="uid://cchuw5rw6cf0l"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_juj5v"] [ext_resource type="Script" uid="uid://b06m3d5mehyin" path="res://scene/ground/scene/c04/s09_除晦游戏.gd" id="2_juj5v"] [ext_resource type="AudioStream" uid="uid://b2mudqvq1dmng" path="res://asset/audio/sfx/环境音/白噪音/白噪声房间里1.ogg" id="3_om2jl"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_n4q25"] +[ext_resource type="AudioStream" uid="uid://ko5kibky8hcw" path="res://asset/audio/sfx/交互/第一章/红字特效音.ogg" id="5_3a5uu"] [ext_resource type="Texture2D" uid="uid://dsymfb45n1sx1" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间.png" id="5_iqexw"] +[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_7knml"] [ext_resource type="Texture2D" uid="uid://bhygivahwd1yb" path="res://asset/art/scene/c04/s05_客厅/藤曼.png" id="6_qppbt"] [ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="7_3a5uu"] [ext_resource type="Texture2D" uid="uid://cgjca5flabtkt" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_关着的门.png" id="8_cmpvw"] [ext_resource type="Texture2D" uid="uid://0l2c7c3qgxs0" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_上层墙.png" id="8_ob3l3"] +[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="8_qppbt"] [ext_resource type="Texture2D" uid="uid://86yqa60yum4f" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_打开的门.png" id="9_prdnl"] +[ext_resource type="Texture2D" uid="uid://cgax11gclu80s" path="res://asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png" id="11_7jpfo"] [ext_resource type="Texture2D" uid="uid://xnqlxofyldx5" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_反色.png" id="11_prdnl"] +[ext_resource type="Shader" uid="uid://c4ioalmumivey" path="res://scene/ground/script/c04/s09_除晦游戏反色效果.gdshader" id="12_juj5v"] [ext_resource type="Texture2D" uid="uid://cpgt884ml6a7d" path="res://asset/art/scene/c04/s05_客厅/前景.png" id="14_0i4ir"] +[ext_resource type="Script" uid="uid://bvkqk6qf83nux" path="res://scene/ground/script/c04/除晦游戏label.gd" id="14_ef5eh"] +[ext_resource type="Script" uid="uid://bm1luy5kk6sbv" path="res://scene/ground/script/c04/除晦游戏文字root.gd" id="14_n4q25"] +[ext_resource type="FontFile" uid="uid://bnxdsxp7dst7f" path="res://asset/font/锐字太空混元像素简繁-闪 超黑_mianfeiziti.com.ttf" id="14_om2jl"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ef5eh"] +shader = ExtResource("12_juj5v") +shader_parameter/mask_texture = ExtResource("11_7jpfo") +shader_parameter/modulate_a = 0.0 +shader_parameter/half_width_ratio = 0.218 +shader_parameter/offset_ratio = 0.063 +shader_parameter/alpha_threshold = 0.5 + [node name="S09" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] [node name="Ground" parent="." instance=ExtResource("1_juj5v")] scene_name = "c04_s09" +default_portal = "1" player_y = 60 [node name="AnimationPlayer" parent="Ground" index="0"] @@ -39,24 +56,39 @@ mode = "场景背景音" "感应玩家操作" = false metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx红字音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +stream = ExtResource("5_3a5uu") +volume_db = -10.0 +bus = &"game_sfx" +script = ExtResource("4_n4q25") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 texture = ExtResource("5_iqexw") offset = Vector2(0, -158) [node name="portal_left" parent="Ground/DeployLayer" index="0"] -position = Vector2(70, 29) -target_scene = "c04_s08" -target_portal = "1" -status = "opened" +position = Vector2(72, 24) +enabled = false [node name="portal_right" parent="Ground/DeployLayer" index="1"] -position = Vector2(538, 31) -target_scene = "c04_s01" -target_portal = "left" -status = "opened" +position = Vector2(1185, 25) +enabled = false -[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_7knml")] +position = Vector2(289, 25) +debug_note = "传送点" +enabled = false +portal_name = "1" + +[node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_7knml")] +position = Vector2(852, 39) +debug_note = "右侧点" +enabled = false +portal_name = "2" + +[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="4"] position = Vector2(294, -17) texture = ExtResource("6_qppbt") @@ -68,28 +100,297 @@ updater_ease_duration = 0.0 updater_stages = Array[int]([0, 1]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" -[node name="关着的门" type="Sprite2D" parent="Ground/DeployLayer" index="3"] +[node name="关着的门" type="Sprite2D" parent="Ground/DeployLayer" index="5"] texture = ExtResource("8_cmpvw") centered = false offset = Vector2(0, -158) -[node name="打开的门" type="Sprite2D" parent="Ground/DeployLayer" index="4"] +[node name="打开的门" type="Sprite2D" parent="Ground/DeployLayer" index="6"] visible = false texture = ExtResource("9_prdnl") centered = false offset = Vector2(0, -158) -[node name="隔断墙" type="Sprite2D" parent="Ground/DeployLayer" index="5"] +[node name="隔断墙" type="Sprite2D" parent="Ground/DeployLayer" index="7"] z_index = 6 position = Vector2(607.5, 0) texture = ExtResource("8_ob3l3") -[node name="反色空间" type="Sprite2D" parent="Ground/DeployLayer" index="6"] +[node name="反色空间" type="Sprite2D" parent="Ground/DeployLayer" index="8"] z_index = 6 +material = SubResource("ShaderMaterial_ef5eh") texture = ExtResource("11_prdnl") centered = false offset = Vector2(0, -158) +[node name="屏中文字" type="Node2D" parent="Ground/DeployLayer" index="9"] +z_index = 6 +position = Vector2(282, -20) + +[node name="提示文字" type="RichTextLabel" parent="Ground/DeployLayer/屏中文字"] +modulate = Color(1, 1, 1, 0) +light_mask = 16 +custom_minimum_size = Vector2(300, 0) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -50.0 +offset_right = 50.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 32 +bbcode_enabled = true +text = "[wave amp=10.0 freq=3.0][/wave]" +fit_content = true +horizontal_alignment = 1 +meta_underlined = false +hint_underlined = false +script = ExtResource("8_qppbt") +translation_key = "c04_除晦游戏_开始" +prefix = "[wave amp=10.0 freq=3.0]" +suffix = "[/wave]" + +[node name="文字Root1" type="Node2D" parent="Ground/DeployLayer" index="10"] +z_index = 6 +script = ExtResource("14_n4q25") + +[node name="2" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 387.0 +offset_top = -3.0 +offset_right = 537.0 +offset_bottom = 29.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="1" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 392.0 +offset_top = -41.0 +offset_right = 542.0 +offset_bottom = -25.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="3" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 74.0 +offset_top = -52.0 +offset_right = 174.0 +offset_bottom = -20.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="4" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 84.0 +offset_top = -2.0 +offset_right = 184.0 +offset_bottom = 30.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="6" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 398.0 +offset_top = 56.0 +offset_right = 548.0 +offset_bottom = 88.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="5" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 60.0 +offset_top = 64.0 +offset_right = 210.0 +offset_bottom = 96.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="文字Root2" type="Node2D" parent="Ground/DeployLayer" index="11"] +z_index = 6 +script = ExtResource("14_n4q25") +id_range = Vector2i(15, 34) + +[node name="1" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 627.0 +offset_top = 64.0 +offset_right = 777.0 +offset_bottom = 80.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="2" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 642.0 +offset_top = 5.0 +offset_right = 792.0 +offset_bottom = 21.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="3" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 899.0 +offset_top = -69.0 +offset_right = 1049.0 +offset_bottom = -53.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="4" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 959.0 +offset_top = -8.0 +offset_right = 1109.0 +offset_bottom = 8.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="6" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 625.0 +offset_top = -54.0 +offset_right = 775.0 +offset_bottom = -38.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="5" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 959.0 +offset_top = 56.0 +offset_right = 1109.0 +offset_bottom = 72.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(63, 95) catty_light_energy = 0.5 @@ -102,10 +403,9 @@ texture = ExtResource("14_0i4ir") offset = Vector2(0, 50) [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] -points = PackedVector2Array(20, 150, 533, 151) +points = PackedVector2Array(20, 150, 1190, 151) [node name="DirectionalLight2D" parent="Ground" index="8"] -visible = false energy = 0.8 blend_mode = 1 diff --git a/scene/ground/script/c04/s06_closeup日历.tscn b/scene/ground/script/c04/s06_closeup日历.tscn index 92790201..20b34519 100644 --- a/scene/ground/script/c04/s06_closeup日历.tscn +++ b/scene/ground/script/c04/s06_closeup日历.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://dhrc5sc21rwc"] +[gd_scene load_steps=7 format=3 uid="uid://dhrc5sc21rwc"] [ext_resource type="Script" uid="uid://cvsj8mktuf8wn" path="res://scene/ground/script/c04/s06_closeup日历.gd" id="1_e3s2p"] [ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_6av83"] +[ext_resource type="Texture2D" uid="uid://bhd6bhcvhe33g" path="res://asset/art/scene/c04/s06_小蝶房间/日记游戏/日历特写/日历01-3月1日.png" id="2_e3s2p"] [ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_e35wp"] [ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_0yds4"] [ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_p5dpr"] @@ -15,6 +16,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +texture = ExtResource("2_e3s2p") [node name="遮罩" type="TextureRect" parent="."] anchors_preset = 15 @@ -26,6 +28,7 @@ mouse_filter = 2 texture = ExtResource("2_6av83") [node name="ContentInspector" parent="." instance=ExtResource("3_e35wp")] +visible = false [node name="遮罩" type="TextureRect" parent="ContentInspector"] layout_mode = 1 diff --git a/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader new file mode 100644 index 00000000..7b0bb9e9 --- /dev/null +++ b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader @@ -0,0 +1,62 @@ +shader_type canvas_item; + +// sprite_texture 即为 Sprite2D 自身的纹理(内置:TEXTURE) +// 外部参数:mask_texture(与 sprite_texture 高度相同,宽度 = width_ratio * sprite_width) +// width_ratio < 1 为常量(运行时不变) +// offset_ratio 会在物理帧中不断更新,控制 mask 在 sprite 上的水平起点(0 表示最左端,1 - width_ratio 表示最右端) + +uniform sampler2D mask_texture; +uniform float modulate_a : hint_range(0.0, 1.0) = 1.0; // mask_texture.width / sprite_texture.width +uniform float half_width_ratio : hint_range(0.1, 1.0) = 0.5; // mask_texture.width / sprite_texture.width +uniform float offset_ratio : hint_range(0.01, 1.0) = 0.01; // mask 左边界起点在 sprite UV(0~1)中的比例 + +// 当 mask 的 alpha > 0.5(或你需要的阈值)时显示 sprite,对应区域 alpha = 原纹理 alpha,否则 alpha = 0。 +uniform float alpha_threshold : hint_range(0.0, 1.0) = 0.5; + +void fragment() { + // 基础 sprite 采样 + vec4 sprite_col = texture(TEXTURE, UV); + + // 将 sprite 的 UV(0~1)映射到 mask 的 UV: + // mask 横向只覆盖 [offset_ratio, offset_ratio + width_ratio] 的区间 + // 在该区间内,线性映射到 mask 的 [0, 1] 横向。区间之外,直接视为 mask alpha = 0。 + float u = UV.x; + float v = UV.y; + + // 判断是否在 mask 的横向覆盖范围内 + float left = offset_ratio - half_width_ratio; + float right = offset_ratio + half_width_ratio; + + // 缩放到 mask 的 U 坐标(0~1) + float mask_u = 0.5 * (u - left) / half_width_ratio; + float mask_v = v; // 高度一致,直接使用同一 v 坐标(0~1) + + // 默认 mask alpha = 0 + float mask_a = 0.0; + + // 仅在覆盖范围内采样 mask 纹理 + if (u >= left && u <= right) { + vec4 mask_col = texture(mask_texture, vec2(mask_u, mask_v)); + mask_a = mask_col.a; + } + + // 应用阈值或直接乘 alpha(两种方式任选其一) + // 方式 A:阈值裁剪(更硬边) + float visible = step(alpha_threshold, mask_a); + // visible && white + float col_rgb = step(alpha_threshold, visible * COLOR.a); + + // 输出:颜色保持原纹理(也可以乘 mask_a 做软边),alpha 由 visible 控制 + // 如果你想要软边,替换为 sprite_col.a *= mask_a; + vec4 out_col = sprite_col; + out_col.rgb = vec3(col_rgb); + // 纯黑手掌 + out_col.a = visible * modulate_a; + // 半透明的手掌 + //out_col.a = visible * modulate_a * max(col_rgb, 0.2); + + // 可选:也让 RGB 乘以 visible,避免半透明像素渗色 + //out_col.rgb *= visible; + + COLOR = out_col; +} \ No newline at end of file diff --git a/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid new file mode 100644 index 00000000..50ada48f --- /dev/null +++ b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid @@ -0,0 +1 @@ +uid://c4ioalmumivey diff --git a/scene/ground/script/c04/除晦游戏label.gd b/scene/ground/script/c04/除晦游戏label.gd new file mode 100644 index 00000000..e1385aed --- /dev/null +++ b/scene/ground/script/c04/除晦游戏label.gd @@ -0,0 +1,45 @@ +@tool +extends RichTextLabel + +@export var id := 1: + set(val): + id = val + if is_node_ready(): + refresh() +@warning_ignore("unused_private_class_variable") +@export_tool_button("刷新") var _refresh = refresh + +const self_mod = Color.GRAY + + +func _ready() -> void: + refresh() + self_modulate = self_mod + meta_hover_started.connect(_on_meta_hover_started) + meta_hover_ended.connect(_on_meta_hover_ended) + + +# res://asset/dialogue/inspect_content.zh_CN.translation +var items_translation = preload("uid://eu5aw5htt74r") as Translation + + +func refresh(): + var translation_key = "c04_除晦游戏" + str(id) + var msg = tr(translation_key) + if Engine.is_editor_hint(): + msg = items_translation.get_message(translation_key) + msg = msg.replace("{br}", "\n") + text = '[url=' + str(id) + '][wave amp=8.0 freq=2.0]' + msg + "[/wave][/url]" + + +func _notification(what: int) -> void: + if what == NOTIFICATION_TRANSLATION_CHANGED: + refresh() + + +func _on_meta_hover_started(_m) -> void: + self_modulate = Color.WHITE + + +func _on_meta_hover_ended(_m) -> void: + self_modulate = self_mod diff --git a/scene/ground/script/c04/除晦游戏label.gd.uid b/scene/ground/script/c04/除晦游戏label.gd.uid new file mode 100644 index 00000000..7102d0c5 --- /dev/null +++ b/scene/ground/script/c04/除晦游戏label.gd.uid @@ -0,0 +1 @@ +uid://bvkqk6qf83nux diff --git a/scene/ground/script/c04/除晦游戏文字root.gd b/scene/ground/script/c04/除晦游戏文字root.gd new file mode 100644 index 00000000..74fd3461 --- /dev/null +++ b/scene/ground/script/c04/除晦游戏文字root.gd @@ -0,0 +1,75 @@ +extends Node2D + +signal game_success + +# inclusive, exclusive +@export var id_range := Vector2i(1, 15) + +var available_labels: Array[RichTextLabel] = [] +# 0:hide 1:display 2:cleared +var id_state_arr: Array[int] = [] +var display_timer := Timer.new() + + +func _ready() -> void: + for c in get_children(): + if c is RichTextLabel: + available_labels.append(c) + c.modulate.a = 0.0 + c.meta_clicked.connect(_on_meta_clicked.bind(c)) + id_state_arr.resize(id_range.y - id_range.x) + # 初始化文本 + add_child(display_timer) + display_timer.wait_time = 1.5 + display_timer.timeout.connect(_display_next) + # _reset_overtime_tween() + + +func start_disperse_game() -> void: + display_timer.start() + + +# 分配一个 id 到 labels 上 +func _display_next() -> void: + if not available_labels: + if GlobalConfig.DEBUG: + print("no available labels") + return + var label = available_labels.pop_front() + var next_id = -1 + for i in range(len(id_state_arr)): + if id_state_arr[i] == 0: + next_id = i + id_range.x + id_state_arr[i] = 1 + break + if GlobalConfig.DEBUG: + print("next_id=", next_id) + if next_id > 0: + label.id = next_id + var tween = create_tween() + tween.tween_property(label, "modulate:a", 1.0, 1.0) + + +func _on_meta_clicked(meta, label: RichTextLabel): + var id = int(meta) + if id_state_arr[id - id_range.x] != 1: + return + available_labels.append(label) + id_state_arr[id - id_range.x] = 2 + var tween = create_tween() + tween.tween_property(label, "modulate:a", 0.0, 1.0) + + if id_state_arr.all(func(i): return i==2): + game_success.emit() + print("game success") + +# _reset_overtime_tween() + +# # 长时间不点击 +# var overtime_tween: Tween + +# func _reset_overtime_tween() -> void: +# if overtime_tween and overtime_tween.is_running(): +# overtime_tween.kill() +# overtime_tween = create_tween() +# overtime_tween.tween_interval(2.0) diff --git a/scene/ground/script/c04/除晦游戏文字root.gd.uid b/scene/ground/script/c04/除晦游戏文字root.gd.uid new file mode 100644 index 00000000..541707b2 --- /dev/null +++ b/scene/ground/script/c04/除晦游戏文字root.gd.uid @@ -0,0 +1 @@ +uid://bm1luy5kk6sbv diff --git a/scene/ux/prop_hud.tscn b/scene/ux/prop_hud.tscn index b92036f4..f38a5e95 100644 --- a/scene/ux/prop_hud.tscn +++ b/scene/ux/prop_hud.tscn @@ -20,13 +20,13 @@ font_size = 36 [node name="PropHUD" type="Control"] process_mode = 3 -custom_minimum_size = Vector2(600, 500) +custom_minimum_size = Vector2(300, 230) layout_mode = 3 anchors_preset = 0 offset_left = 8.0 offset_top = 4.0 offset_right = 608.0 -offset_bottom = 504.0 +offset_bottom = 204.0 scale = Vector2(0.3, 0.3) mouse_filter = 1 script = ExtResource("1_bbv0a")