打麻将出千游戏高亮提示

This commit is contained in:
cakipaul 2025-07-25 15:13:09 +08:00
parent 832bd08443
commit aa4a0ffd54
9 changed files with 194 additions and 23 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gan7qq0i7uiw"
path="res://.godot/imported/ux_镜子遮罩.png-0dd6b96863a6b256a2eae5a1d3ec8f65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c03/s03_瞎子理发店/ux_镜子遮罩.png"
dest_files=["res://.godot/imported/ux_镜子遮罩.png-0dd6b96863a6b256a2eae5a1d3ec8f65.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

View File

@ -177,3 +177,78 @@
瞎子: 这种事情就算我晓得,也不好教你们去害人的。
瞎子: 你们好跑了,我还要去问问告示都贴完了伐,不够的闲话还要再写两张...
=> END
~ c03_s05_肉铺隔门板偷听
陆仁: 咦?哪能没开门?不应该啊...
陆仁: 张老板?张老板?
陆仁: ...
陆仁: 算了,有可能人家办事去了,咱们过两天再来伐。
小小蝶: 老板就在店里厢呀。
陆仁: 侬这孩子,啥人讲给你听的?
小小蝶: 喏,是它讲的呀。
小小蝶: 侬要是不相信么,我现在就问问它,老板到底在啥地方...
小小蝶: ...
小小蝶: 爸爸,它讲,它晓得小蝉在啥地方。
陆仁: 侬覅、(深吸一口气)这种鬼出莫辩(句测老逼)的事情伐好瞎讲的,听到了伐!
=> END
~ c03_胖子游戏对白
探子: 侬哪能又来了。
肉铺胖子: 侬在看啥?
探子: 看人家过河帮,吃力(撒度)了就算算加减法。
肉铺胖子: 格搭除了我们,啥还有其他人阿?
探子: 文开呀,人家都讲你港,讲的真的一点不错。
探子: 他们就是老早死在河帮里厢的人呀!
探子: 要不是你们拦了嘿,他们老早就跑掉了。
肉铺胖子: 跑?跑到啥方去啊?
探子: 跑到外地去,讲不定就死不掉了呢。
肉铺胖子: ...侬跟他们不一样。
探子: 对额!想当初侬一记头就看出来我是细作。
探子: 侬有点小聪明的,想拿我抓回去,也好吃顿饱饭。
探子: 不过侬太年轻、人么又瘦,就这样一趟翻身的机会侬浪费掉了。
探子: 但是要我讲哦,最最重要的是啥东西侬晓得哇...
肉铺胖子: 要讲就讲,别装模作样。
探子: 侬跟他们一样,这条河帮你也过不过去的。
探子: 作孽啊...
=> END
#【玩家⾛近,触发演出对白:陆仁坐倒在地咳⾎,⼩⼩蝶和陆仁对话(关于陆仁近期身体越来越差,⼩⼩蝶关⼼陆仁身体,再次提到⼩猫玩具上的⼩⻤,觉得⼩⻤已经附身在了⾃⼰身上,让⾃⼰变重才导致陆仁背不动⾃⼰,陆仁扯开话题),随后两⼈⾛向玩家⽅向,和玩家擦肩⽽过。(玩家碎碎念:设定好时⻓,在陆仁⾛⾄玩家身后时正好碎碎念⾄“爸爸”,陆仁停顿,微微侧头,然后离开,演出结束。)】
~ c03_三楼陆仁演出
陆仁: 咳...嗬...咳咳...(咳嗽)
小小蝶: 爸爸!侬、侬哪能...
陆仁: 爸爸越来越没用了。
陆仁: 现在连的侬都背不动...
小小蝶: 伐是的!
小小蝶: 肯定是、是因为这玩具里厢的小鬼太重了!它老是要跑到我身高头来,所以才会的这幅样子!
陆仁: 还瞎讲!
陆仁: 侬在瞎三话四滴啥东西?要是让人家听到了,又要讲咱们哪能哪能了...
小小蝶: 我...
陆仁: 我吃力了,侬来搭把手,我到里厢坐特些。
吕萍: 爸爸...
吕萍: 侬还在此地伐?
=> END
~ c03_结尾回忆小蝶和小婵
小小蝶: 喏,侬的玻璃弹子,我帮侬拿回来了。
小蝉: 谢谢。
小小蝶: 你的弹子老好看的,我从来没看到过这种样子的。
小蝉: ...侬要欢喜,我就送给侬。
小小蝶: 谢谢侬,但是我(阿拉)爸不让我玩这个。
小小蝶: 他老是讲小姑娘要文一点,要有小姑娘的样子,其实...我玻璃弹子打的比他们好的多呢。
小小蝶: ...你(呐)爸爸呢?
小蝉: 嗯...他蛮好的。
小小蝶: 他管侬管的紧哇,是不是经常会的讲‘都是为了侬好’这种闲话啊?
小蝉: 有时候(辰光)会的,他蛮吓人的。
小蝉: 我、我不想惹za他不开心。
小小蝶: 还是当大人好。等我们长大了,就没人再讲咱们是一懂不懂的小朋友了。
小小蝶: 到那个时候,我欢喜撒就组撒、伐想组就伐组,彻底解放了!
小蝉: 真好啊。
小小蝶: 诶,我马上就要过生日了!侬想...咦,妈妈,侬哪能来了?
小小蝶: 那个,这是我刚刚认识的好朋友,她叫、她叫...
小蝉: 我叫方小蝉。
小蝉: 阿姨,你们是伐是要回起吃饭啦,我爸爸...等些阿要叫我回起了。
小蝉: 再、再见。
=> END

View File

@ -107,15 +107,6 @@ texture = ExtResource("15_r0k7c")
position = Vector2(64, 46)
texture = ExtResource("16_4umel")
[node name="床上死人" type="Sprite2D" parent="Ground/DeployLayer/Event2D香炉"]
position = Vector2(145, 48)
[node name="Label" type="Label" parent="Ground/DeployLayer/Event2D香炉/床上死人"]
offset_left = -49.0
offset_right = 51.0
offset_bottom = 14.0
text = "【此处应有弟弟尸体】"
[node name="Closeup李氏纸人" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_dbkw8")]
unique_name_in_owner = true
position = Vector2(372, 40)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://6ehb3ux2kilu"]
[gd_scene load_steps=9 format=3 uid="uid://6ehb3ux2kilu"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ip0og"]
[ext_resource type="Script" path="res://scene/ground/scene/c03/s05_肉铺.gd" id="2_l22xv"]
@ -6,6 +6,7 @@
[ext_resource type="Texture2D" uid="uid://ccl8ud5hbuq1r" path="res://asset/art/scene/c03/s05_肉铺/bg_肉铺内背景.png" id="4_ip0og"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_r4bhp"]
[ext_resource type="Texture2D" uid="uid://c5oth3mdxrnby" path="res://asset/art/scene/c03/s05_肉铺/fg_肉铺内前景.png" id="5_l22xv"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_r4bhp"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
@ -52,6 +53,13 @@ target_scene = "c03_s07"
target_portal = "left"
status = "opened"
[node name="Ambush偷听门板" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_r4bhp")]
position = Vector2(291, 18)
trigger_mode = "interact"
collision_width_and_x = Vector2(61.48, 0)
hook_dialogue_res = "c03"
hook_dialogue_title = "c03_s05_肉铺隔门板偷听"
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(63, 95)
catty_light_energy = 0.5

View File

@ -181,7 +181,7 @@ updater_stages = Array[int]([0])
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="Ambush偷听" parent="Ground/DeployLayer" index="6" instance=ExtResource("12_73c8v")]
position = Vector2(532, 33)
position = Vector2(531, 18)
trigger_mode = "interact"
hook_dialogue_res = "c03"
hook_dialogue_title = "c03_s08_囚室偷听"

View File

@ -1,10 +1,10 @@
[gd_scene load_steps=6 format=3 uid="uid://bnoqhovb0wjem"]
[ext_resource type="Script" uid="uid://xyswrst2qvnv" path="res://scene/ground/script/c03/s03_closeup镜子特写.gd" id="1_l7eke"]
[ext_resource type="Script" path="res://scene/ground/script/c03/s03_closeup镜子特写.gd" id="1_l7eke"]
[ext_resource type="Texture2D" uid="uid://cv43fc0yphoyh" path="res://asset/art/scene/c03/s03_瞎子理发店/ux_镜子特写_脸.png" id="2_h11vl"]
[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_x88e4"]
[ext_resource type="PackedScene" uid="uid://bg7oictr1wgex" path="res://scene/little_game/general/draggable.tscn" id="4_pmhbo"]
[ext_resource type="Texture2D" uid="uid://dri7gy7janvim" path="res://asset/art/scene/c03/s03_瞎子理发店/ux_镜子特写_红绳麻将.png" id="5_l7eke"]
[ext_resource type="Texture2D" uid="uid://gan7qq0i7uiw" path="res://asset/art/scene/c03/s03_瞎子理发店/ux_镜子遮罩.png" id="5_pmhbo"]
[node name="Closeup镜子特写" type="CanvasLayer"]
script = ExtResource("1_l7eke")
@ -17,15 +17,6 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_h11vl")
[node name="遮罩" type="TextureRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
texture = ExtResource("2_x88e4")
[node name="Draggable2D麻绳" parent="." instance=ExtResource("4_pmhbo")]
position = Vector2(122, 78)
act_as_button = true
@ -33,3 +24,12 @@ texture = ExtResource("5_l7eke")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Draggable2D麻绳"]
polygon = PackedVector2Array(5, -83.5, -4, -83.5, -4, 36.5, -9.8, 36.5, -13.8, 40.5, -15, 40.5, -15, 79.6, -14.5, 79.9, -13.7, 79, -13.1, 83.5, -2.8, 83.5, -4, 81, -4, 80.3, 14.2, 78.5, 15, 78.5, 15, 37.4, 7, 36.6, 7, -79.7, 5, -80.8)
[node name="遮罩" type="TextureRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
texture = ExtResource("5_pmhbo")

View File

@ -29,7 +29,6 @@ var mahjongs = {
# 替换后会从数组中移除
@onready var holding_mahjongs_btn_dict: Dictionary[int, TextureButton] = {14: %"14", 15: %"15", 16: %"16"}
var current_round := 0
# 回合1-4摸牌3万、2万、1条、2筒胜利
var dispatched_card_per_round: Array[String] = ["万3", "万2", "条1", "筒2"]
@ -41,6 +40,9 @@ var standing_cards: Array[String] = ["筒7", "筒8", "风南", "条1", "条2", "
# 赖子手在左下角桌子下手中为三个麻将5万、3条、9筒
var holding_cards_dict: Dictionary[int, String] = {14: "万5", 15: "条3", 16: "筒9"}
# 前三回合,对话结束后,等待一段时间给出提示(提示为高亮桌面需要打出的牌面)
var tip_wait_time = [10.0, 20.0, 30.0]
var freezing = true:
set(val):
if freezing != val:
@ -158,6 +160,8 @@ func _start_game() -> void:
await tween.finished
freezing = false
_play_dialogue_with_update_stage(2)
_load_tip(2)
func _play_dialogue_with_update_stage(stage: int):
@ -208,6 +212,7 @@ func _exchange_texture_and_card(btn1: TextureButton, btn2: TextureButton) -> voi
var require_replacing_card = intersect(useless_cards, holding_cards_dict)
var require_dealing_card = intersect(useless_cards, standing_cards, require_replacing_card)
if require_replacing_card and require_dealing_card:
_skip_tip()
useless_cards.erase(require_replacing_card)
useless_cards.erase(require_dealing_card)
_toggle_hightlight_for_all(false)
@ -268,6 +273,7 @@ func _next_round() -> void:
# 对话结束后,开始第二回合
await _await_dialog(3)
_play_dialogue_with_update_stage(4)
_load_tip(4)
elif current_round == 2:
# 第二回合结束
await _await_dialog(4)
@ -275,6 +281,7 @@ func _next_round() -> void:
# 对话结束后,开始第三回合
await _await_dialog(5)
_play_dialogue_with_update_stage(6)
_load_tip(6)
elif current_round == 3:
# 第三回合结束
await _await_dialog(6)
@ -298,11 +305,67 @@ func _next_round() -> void:
else:
freezing = false
# dialog stage 结束后开始计时, 而不是回合开始就计时
# 所以需要关联到对应对话 stage
func _load_tip(stage: int) -> void:
if _last_dialog_updated.is_connected(_counting_down_tip):
_last_dialog_updated.disconnect(_counting_down_tip)
_last_dialog_updated.connect(_counting_down_tip.bind(stage))
var tip_tween: Tween
func _counting_down_tip(stage: int) -> void:
# 对话阶段还没到
if _last_dialog_stage < stage:
return
# 对话阶段已到
if _last_dialog_stage >= stage:
if _last_dialog_updated.is_connected(_counting_down_tip):
_last_dialog_updated.disconnect(_counting_down_tip)
# 对话阶段正好,开始计时
if _last_dialog_stage == stage:
if tip_tween and tip_tween.is_running():
tip_tween.kill()
if current_round >= 3:
printerr("Warning: current_round >= 3, should not display tip.")
return
var wait_time = tip_wait_time[current_round]
if GlobalConfig.DEBUG:
SceneManager.pop_debug_dialog_info("Tip", "debug等待5秒进行提示正常模式下等待" + str(wait_time) + "")
wait_time = 5
tip_tween = create_tween()
tip_tween.tween_interval(wait_time)
tip_tween.tween_callback(_display_tip)
func _display_tip() -> void:
var hight_light_btns: Array[TextureButton] = []
for useless in useless_cards:
var id = standing_cards.find(useless)
if id > 0:
var btn = standing_mahjongs_btn[id]
hight_light_btns.append(btn)
btn.get_node("光束").enabled = true
await Util.wait(2.0)
for btn in hight_light_btns:
# 未在 hightlight 状态
if not btn.get_meta("hightlighting", false):
btn.get_node("光束").enabled = false
func _skip_tip() -> void:
if tip_tween and tip_tween.is_running():
tip_tween.kill()
if _last_dialog_updated.is_connected(_counting_down_tip):
_last_dialog_updated.disconnect(_counting_down_tip)
func _toggle_hightlight(btn: TextureButton, hightlight: bool) -> void:
if null == btn:
return
btn.get_node("光束").enabled = hightlight
# 记录 hightlight 状态
btn.set_meta("hightlighting", hightlight)
func _toggle_hightlight_for_all(hightlighted: bool) -> void: