add code step 3

This commit is contained in:
cakipaul 2024-12-23 09:31:10 +08:00
parent f032b08fc7
commit 57b867f93a
25 changed files with 1618 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,62 @@
#序章
~ lingpai01
获得: [color=orange]令牌[/color]
=> END
~ lingpai
获得: [color=orange]带有灵魂的令牌[/color]
=> END
#第一章
~ xinjian
获得: [color=orange]院长的信件[/color]
=> END
~ yaoshi
(一张纸条包着钥匙)
=> END
~ yaoshi2
获得: [color=orange]1012钥匙[/color]
=> END
~ laohuqian
获得: [color=orange]老虎钳[/color]
=> END
~ shengzi_E
获得: [color=orange]绳子[/color]
=> END
~ shengzi
(绳子和剪刀)
=> END
~ zhitiao
纸条
=> END
~ xiaomaotou
获得: [color=orange]小猫玩具脑袋[/color]
=> END
~ xiaomao_item
获得: [color=orange]小猫玩具[/color]
=> END
~ xiaomaoshenti
(这个玩具缺了个脑袋)
=> END
~ xuanzhuansuo_yaoshi
获得: [color=orange]钥匙[/color]
=> END
~ huochai
获得: [color=orange]火柴[/color]
=> END
~ yaoshi1014
获得: [color=orange]1014钥匙[/color]
=> END

View File

@ -0,0 +1,81 @@
~ xuzhang_00_02_heiwu
雾:: “时辰将至,锁魂障眼,自欺欺人”
雾:: “孤魂也罢,恶鬼亦然”
雾:: “三魂皆不可阙,将它们都带回来吧”
[color=MEDIUM_SPRING_GREEN]:[/color] “......”
=> END
~ xuzhang_00_oldman
(一个老人正在喂食笼子里的老鼠)
老人:: “这么多年......还是找不到......” [ID:tcef6a060b9]
老人:: “它们说......等它们吃饱了......” [ID:tb65380ea5d]
老人:: “吃饱了......就会帮我找......” [ID:t50f89a27e5]
老人:: “帮我找到我的孩子......” [ID:tf86e491bac]
[color=MEDIUM_SPRING_GREEN]:[/color] “......”
=> END
~ xuzhang_00_03_door
(无法触碰)
=> END
~ xuzhang_00_03_feature
[color=MEDIUM_SPRING_GREEN]:[/color] “在这儿吗......”[next=15] [ID:t80dc36183c]
=> END
~ xuzhang_00_04_begin
吕萍:: “又是这个梦”[next=1.5] [ID:tb5446007d7]
吕萍:: “这个星期已经第三次了”[next=3] [ID:tc2d15986d5]
吕萍:: “我到底是怎么了”[next=2] [ID:tbb5ee63a2a]
车夫:: “小姐,你没事吧?”[next=3] [ID:te493a0d5da]
吕萍:: “啊?哦我没事”[next=3.5] [ID:t31f7bd6bca]
吕萍:: “师傅,刚刚什么事情啊?”[next=3.5] [ID:t5145e4a651]
车夫:: “人没事就好”[next=3] [ID:t377527622c]
车夫:: “刚有几个小孩儿突然从路边窜出来”[next=4.5] [ID:t457439be08]
车夫:: “还好我刹住了,大过年差点触霉头”[next=4.5] [ID:tfd750b3caf]
车夫:: “不好意思,耽误你时间了”[next=4] [ID:t3ca3777849]
吕萍:: “没事没事,我其实也没有......那么赶时间”[next=6] [ID:t3676341a09]
车夫:: “哈哈,小姐你坐好了,跑了“[next=4] [ID:t9a1e445f9c]
=> END
~ xuzhang_00_04_animation1
车夫:: “小姐,你这是回家过年是哇?”[next=4.5] [ID:t8c27cd48bc]
=> END
~ xuzhang_00_04_animation2
吕萍:: “哦,不是的......”[next=2.5] [ID:t021c82b70c]
=> END
~ xuzhang_00_04_animation3
车夫:: “啊?不会是工作吧”[next=4] [ID:tacea5af85e]
=> END
~ xuzhang_00_04_animation4
车夫:: “这不行的,你这小年夜还要安排工作啊”[next=4.7] [ID:tdd93622a58]
车夫:: “你看我,拉完你这一趟,我也要准备收工了”[next=4.3] [ID:t56fdb18174]
车夫:: “工作什么的,今天肯定要统统结束掉的,你说对哇”[next=5] [ID:te7fe810b72]
车夫:: “这小年夜不行么,还有大年夜的呀”[next=4] [ID:t98517902ae]
车夫:: “到时候回去和家里人一起好好吃个年夜饭”[next=4.3] [ID:t080b02145f]
车夫:: “时间也差不多”[next=3] [ID:t0720faaedd]
=> END
~ xuzhang_00_04_animation5
吕萍:: “......”[next=3] [ID:t18326bf9ff]
=> END
~ xuzhang_00_04_animation6
吕萍:: “是到了吗,师傅”[next=2.5] [ID:t0cf43479d8]
=> END
~ xuzhang_00_04_animation7
车夫:: “到了芦昌路26弄3号就是这里”[next=5.5] [ID:t74848a4990]
=> END
~ xuzhang_00_04_animation8
车夫:: “嗯,钱正好,那么我先跑了”[next=4] [ID:tafc8b88bf2]
吕萍:: “好的,谢谢师傅”[next=2.5] [ID:tf7684cc8bf]
车夫:: “哎哟,谢什么”[next=3] [ID:ta1bb847397]
车夫:: “哦,位子上这份信是你的吧,别忘记了”[next=4.5] [ID:tbce893354a]
吕萍:: “对的对的,差点就忘记了,谢谢师傅,新年快乐”[next=6.5] [ID:t25399e2eff]
车夫:: “新年快乐”[next=3] [ID:tcf9f50d4e7]
=> END

View File

@ -0,0 +1,499 @@
#场景一
~ diyizhang_01_01_menpai
芦昌路26弄3号 [ID:tf3933c836c]
吕萍:: “这是梦里的那栋楼” [ID:teb1fdd0c3d]
=> END
~ diyizhang_01_01_xunren
(似乎是一张寻人启示) [ID:tf6373b1461]
(脸的部分被撕掉了,看不清) [ID:tace136aa1d]
=> END
#~ diyizhang_01_01_boy1
#(男孩在玩弹珠)
#吕萍:: “小朋友,先让一让好哇,让姐姐先进去”
#=> END
#~ diyizhang_01_01_boy2
#男孩:: “我在等人......”
#=> END
#
#~ diyizhang_01_01_boy3
#吕萍:: “......诶?”
#(小男孩突然跑开)
#=> END
#场景二
~ diyizhang_01_02_tianqi
吕萍:: “冷飕飕的,早知道多穿一件出来了”[next=4.2] [ID:t80736c88c5]
=> END
~ diyizhang_01_02_xuanchuanhua
(几张卫生宣传画) [ID:t8b921a1f0d]
=> END
~ diyizhang_01_02_laoshudong
(一个老鼠洞) [ID:tb3c5bdf8fa]
(在这种楼里挺常见的) [ID:t67b292ac79]
=> END
~ diyizhang_01_02_shuyihaibao
(十几年前的报纸) [ID:tc0b1d09ad5]
=> END
#场景三
~ diyizhang_01_03_tianqi
吕萍:: “天色变暗了”[next=3] [ID:t697159b817]
=> END
~ diyizhang_01_03_xunren
(又是那张寻人启示) [ID:t10093c48d6]
=> END
~ diyizhang_01_03_baoweishi
(锁住了) [ID:t33de979333]
=> END
~ diyizhang_01_03_tiemen
(锁住了) [ID:t060613cc71]
=> END
~ diyizhang_01_03_1014
(锁住了) [ID:t4c83f86ec3]
=> END
~ diyizhang_01_03_1015
(锁住了) [ID:ta4d131091f]
=> END
~ diyizhang_01_03_blood
(干掉的血迹) [ID:t53107de49e]
=> END
~ diyizhang_01_03_yaoshi
(有什么东西) [ID:t6bf59cddd7]
=> END
~ diyizhang_01_03_shuhuan
(墙上的海报被撕掉了) [ID:tde8f5415c3]
=> END
~ diyizhang_01_03_mimi
吕萍:: “这么冷的天,怎么这树的叶子还这么茂盛” [ID:tfbff76fa77]
#=> END
[wait=3][next=1] [ID:t88c78480dd]
~ diyizhang_01_03_mimi3
吕萍:: “咪咪?” [ID:ta853571b30]
吕萍:: “好多老鼠” [ID:t300a11f578]
=> END
~ diyizhang_01_03_shushu
吕萍:: “去,去” [ID:t3c391a329c]
=> END
~ diyizhang_01_03_mimi2
吕萍:: “你好乖啊” [ID:tac301a659a]
(咕噜咕噜) [ID:t648fa1c8e2]
=> END
~ diyizhang_01_03_mimi2_2
吕萍:: “诶?怎么走了” [ID:t9a6f86b1ba]
=> END
~ diyizhang_01_03_jing
(井里有一股臭味) [ID:t70d94938c8]
=> END
~ diyizhang_01_03_xiaomaotou
吕萍:: “这是什么东西?” [ID:t827e03aa77]
=> END
~ diyizhang_01_03_xiaomaotou_2
吕萍:: “嘶......我的头又开始痛了”[next=6.1] [ID:t5ec7026aa0]
=> END
#[color=MEDIUM_SPRING_GREEN]小蝶[/color]
#场景四
~ diyizhang_01_04_fartherandgirl
[color=MEDIUM_SPRING_GREEN]:[/color] “爸爸,我昨晚听到有大老鼠在床边叫”[next=5] [ID:tabd2edb27e]
[color=POWDER_BLUE]:[/color] “囡囡不怕哦,你把妈妈给你做的娃娃放在床边”[next=5][ID:ta308681a21]
[color=POWDER_BLUE]:[/color] “老鼠就不敢过来了”[next=1.6] [ID:ta66609d55b]
[color=MEDIUM_SPRING_GREEN]:[/color] “嗯!爸爸什么时候让妈妈教我唱歌呀”[next=5] [ID:t38603155aa]
[color=POWDER_BLUE]:[/color] “妈妈生病嗓子坏了,等忙完这一阵,爸爸教你唱,好吗”[next=7.5] [ID:tbce77569eb]
[color=POWDER_BLUE]:[/color] “走吧,爸爸带你去把药喝了”[next=3] [ID:t4bf2f8b7dc]
[color=MEDIUM_SPRING_GREEN]:[/color] “喝完药我要吃话梅糖!”[next=3.4] [ID:t9d9d410a0b]
[color=POWDER_BLUE]:[/color] “你就记得糖”[next=4] [ID:t0e40b0a6ca]
=> END
~ diyizhang_01_04_lvping_02
吕萍:: “我刚才眼花了吗” [ID:t13ffd6841d]
吕萍:: “这些人从哪儿来的” [ID:t2b7f492af2]
吕萍:: “......” [ID:t43e3e802fb]
吕萍:: “找个人问一下吧” [ID:tc4e755f8cc]
=> END
~ diyizhang_01_04_yaoche
(车上放了一些中药材) [ID:t198fd11186]
=> END
~ diyizhang_01_04_louti
(排队的人堵住了上楼的路) [ID:t2f080e7e4f]
=> END
~ diyizhang_01_04_lishi_01
吕萍:: “你好,请问陆先生住在这里吗” [ID:tef94e4cddf]
[color=SKY_BLUE]:[/color] “啊?你爸妈忙的又没空管你啦” [ID:tefe6342ef5]
[color=SKY_BLUE]:[/color] “死了滚,生意都被你家抢没了” [ID:t8ac1e1d74d]
吕萍:: “她在说什么......” [ID:t385ad205e6]
=> END
~ diyizhang_01_04_lishi_02
[color=SKY_BLUE]:[/color] “册那,都趁早死死掉算了”[next=3] [ID:t0ad0a91e1f]
=> END
~ diyizhang_01_04_xiazi
吕萍:: “呃......你好,请问......” [ID:te52e87e435]
[color=BURLYWOOD]:[/color] “祸福在己,当自求;兴衰有数,莫强留” [ID:tb39e6e2176]
吕萍:: “......” [ID:t0c7b5487e7]
=> END!
~ diyizhang_01_04_pangzi_01
[color=DARK_KHAKI]:[/color] “老方,小朋友又不懂,和她讲这些干嘛” [ID:t55e158aa73]
[color=DARK_KHAKI]:[/color] “小蝶啊,回头记得带妈妈来叔叔这儿买肉啊” [ID:t0e5a348b5f]
[color=DARK_KHAKI]:[/color] “外面没的买,叔叔这里多的是” [ID:tbc55af8bf7]
吕萍:: “这些人是在跟我说话吗” [ID:t0a091a2712]
=> END!
~ diyizhang_01_04_pangzi_02
[color=DARK_KHAKI]:[/color] “来来来,过来,过来” [ID:te49f3f6290]
=> END
~ diyizhang_01_04_pangzi_03
[color=DARK_KHAKI]:[/color] “悄悄和你讲,让你妈妈来我这里买肉,给你们家便宜点” [ID:t0b675d22e8]
[color=DARK_KHAKI]:[/color] “不行到时候我给你们把肉送到家里去,好哇” [ID:t6699cc4d89]
吕萍:: “呃,不用......不用了......” [ID:te8b6cac261]
=> END
~ diyizhang_01_04_boy
小男孩:: “喂,那只成天跟着你的小猫去哪里啦” [ID:t7c47b8f2ea]
小男孩:: “好可爱的,也抱来给我们摸摸呗” [ID:tbcb3f3a5c8]
吕萍:: “猫?你说的是那只黑色的猫吗?” [ID:t91bffb0a56]
小男孩:: “对啊对啊,哦对了,你有绳子嘛” [ID:t6ebd045126]
=> END
~ diyizhang_01_04_boy01
小男孩:: “对了,你有绳子嘛” [ID:tcb8871c993]
=> END
~ diyizhang_01_04_boy02
小男孩:: “嘿嘿,一会儿我们要在常年青下玩游戏,这次就叫上你吧” [ID:tafbb065366]
=> END
~ xuzhang_01_04_wanglaizi
[color=SKY_BLUE]:[/color] “真的假的?你钻进去啦,你这个体型进的去哒?”[next=5] [ID:t9f383266ad]
[color=INDIAN_RED]:[/color] “你声音轻点,这种事情不要大呼小叫的”[next=4] [ID:t84153d1302]
#[color=INDIAN_RED]:[/color] “这种事情不要大呼小叫的”[next=4] [ID:t4eac89d661]
[color=SKY_BLUE]:[/color] “快说说,你都看到啥了”[next=4] [ID:t50ee4564c0]
[color=INDIAN_RED]:[/color] “他们养了只老鼠,要死掉了”[next=2.5] [ID:t42919f1d5e]
[color=INDIAN_RED]:[/color] “没看到过这么大的老鼠”[next=2] [ID:tb25a6cfd1d]
[color=SKY_BLUE]:[/color] “啊?!”[next=1] [ID:td2e2e976b7]
[color=SKY_BLUE]:[/color] “我就说他们家不对劲”[next=3] [ID:t8c2a311801]
[color=INDIAN_RED]:[/color] “晚点我要去找趟瞎子,这东西他比我们懂”[next=4] [ID:t7dbddc808e]
[color=SKY_BLUE]:[/color] “嗯,那你到时候记得......”[next=2] [ID:tb2fd086d70]
[color=INDIAN_RED]:[/color] “好了,其他的回去讲”[next=3] [ID:t86d98df806]
=> END
#场景五
~ diyizhang_01_05_jinmen
吕萍:: “1014......刚刚那个小男孩说的就是这间吧” [ID:t2c185335a3]
吕萍:: “这不是个空房间吗?” [ID:t203b58cab5]
=> END
~ diyizhang_01_05_men
(最好还是先不要出去) [ID:t7ff84c6134]
=> END
~ diyizhang_01_05_chuang
(太阳快落山了) [ID:t2f3f184fe8]
=> END
~ diyizhang_01_05_rili
(民国六年十月十五日) [ID:t96fe0e898a]
=> END
~ diyizhang_01_05_lijian
(打不开) [ID:t18551dadd7]
=> END
~ diyizhang_01_05_liefeng
(一个洞,里面好像还有空间) [ID:tb37ff31a1b]
=> END
#场景六
~ diyizhang_01_06_xiangzi
(工具箱) [ID:t6290eed263]
(应该能找到有用的东西) [ID:t42468d2f1f]
=> END
~ diyizhang_01_06_gaoshi
(公寓告示) [ID:t1fc2a3944c]
=> END
~ diyizhang_01_06_lijian
(通往里间的门) [ID:t0e2886f21e]
(打不开) [ID:t6742e43e04]
=> END
#场景七
~ diyizhang_01_07_guahua
(挂画) [ID:t57fa48a9de]
=> END
~ diyizhang_01_07_huamingce
(花名册) [ID:t4018c7f508]
=> END
~ diyizhang_01_07_huamingce02
吕萍:: “陆仁,小蝶,吕......萍” [ID:tcee1769bea]
吕萍:: “和他说的一样,为什么” [ID:t01705be451]
=> END
#场景八
~ diyizhang_01_08_kaitou01
吕萍:: “怎么突然变暗了”[next=3.5] [ID:tbb8eaaac33]
=> END
~ diyizhang_01_08_kaitou02
吕萍:: “嗯?玩具在发光”[next=3.5] [ID:t3f088c65fc]
=> END
~ diyizhang_01_08_rili
(罪) [ID:tecab2324ef]
=> END
~ diyizhang_01_08_men
(门上有什么东西) [ID:tb8be4f8529]
=> END
~ diyizhang_01_08_fangjian1
吕萍:: “房间怎么还没有到头”[next=3.3] [ID:t585e87c2fb]
=> END
~ diyizhang_01_08_zhitiao1
(纸条) [ID:ta468951404]
=> END
~ diyizhang_01_08_zhitiao2
吕萍:: “头好痛”[next=4] [ID:tb9f4a5c023]
=> END
~ diyizhang_01_08_fangjian2
吕萍:: “......”[next=auto] [ID:tfab540faa7]
吕萍:: “这......到底是怎么回事”[next=4.1] [ID:t6a9fae7f94]
吕萍:: “我是在......做梦吗?”[next=4.1] [ID:t44b63ca9c1]
=> END
~ diyizhang_01_08_xiaodie01
[color=MEDIUM_SPRING_GREEN]:[/color]: “爸爸什么时候让妈妈教我唱歌呀”[next=auto] [ID:tba2d3b254f]
[color=POWDER_BLUE]:[/color]: “妈妈嗓子坏了,爸爸教你唱吧”[next=4] [ID:tddb946d7ab]
[color=POWDER_BLUE]:[/color]: “走吧,去把药喝了”[next=3.6] [ID:t26758aff7d]
=> END
~ diyizhang_01_08_xiaodie02
[color=MEDIUM_SPRING_GREEN]:[/color]: “妈妈,爸爸什么时候能让我出去玩呀”[next=auto] [ID:tfd98f18577]
=> END
~ diyizhang_01_08_xiaodie03
[color=MEDIUM_SPRING_GREEN]:[/color]: “妈妈,我房间里好像有一只大老鼠”[next=auto] [ID:td708807bf4]
[color=MEDIUM_SPRING_GREEN]:[/color]: “妈妈,我怕”[next=auto] [ID:t56894aa36d]
=> END
~ diyizhang_01_08_jiewei01
[color=AQUA]:[/color]: “小蝶”[next=2.1] [ID:t0bd0b50791]
=> END
~ diyizhang_01_08_jiewei02
[color=AQUA]:[/color]: “醒醒”[next=2] [ID:t7c7439fb6a]
=> END
~ diyizhang_01_08_jiewei03
吕萍:: “太吵了,不要吵了”[next=3.3] [ID:te61a43eed3]
=> END
~ diyizhang_01_08_jiewei04
吕萍:: “不要再说了!”[next=1.6] [ID:t96238696c3]
=> END
~ diyizhang_01_08_jiewei05
吕萍:: “不要!”[next=2] [ID:t5cf3356bb1]
=> END
~ diyizhang_01_09_zhitiao
(纸条) [ID:tda6ab6a3dd]
=> END
~ diyizhang_01_09_1014
(锁住了) [ID:t371e88b879]
=> END
~ diyizhang_01_09_1015
(奠) [ID:t1207196450]
=> END
~ diyizhang_01_09_xiaochan
(寻人启事) [ID:t4d609b2543]
(失踪的小孩名叫夏小蝉) [ID:t236739888b]
=> END
# 场景十
~ diyizhang_01_10_boy01
吕萍:: “你是刚刚门口那个小弟弟” [ID:t38152eaaf2]
男孩:: “小蝶,你终于还是回来了” [ID:te1c5e11fdb]
吕萍:: “我们认识吗?” [ID:td8476fc7cb]
吕萍:: “为什么......你们都叫我小蝶” [ID:t6125b684d7]
男孩:: “在你被送去孤儿院之前,我们就已经认识了” [ID:t0fd4743492]
男孩:: “你爸爸叫陆仁,那件事之后,他就把你妈妈的名字给了你” [ID:t3795fee445]
男孩:: “这些年来,我一直在这里等你,我们当初说好的,就在这里,你还记得吗?” [ID:t5e9e91d222]
吕萍:: “你说的是……真的假的” [ID:t8504465ab1]
吕萍:: “那个时候的事情,我一点也想不起来啊,你怎么......” [ID:tefe78da40f]
吕萍:: “不对,不可能,你这么小,不可能知道当年发生了什么” [ID:t481232f0f7]
吕萍:: “你到底是谁” [ID:td85ad730d3]
男孩:: “不要害怕,我的名字叫小蝉,记得吗,小蝉” [ID:tf1a514bbe9]
吕萍:: “不不不,你不要瞎说,我不记得什么小蝉” [ID:t263510936d]
吕萍:: “我是来找我亲生父母的,你肯定知道他们在哪儿对不对” [ID:t4d7070829c]
男孩:: “还是想不起来吗” [ID:tc28d032c92]
男孩:: “没关系,我会帮你的” [ID:t67dfca0c26]
男孩:: “我们现在没有办法离开这里,这栋楼已经不是当年的样子了” [ID:t6b5d5a9a88]
男孩:: “你现在在这里一定要小心” [ID:t7051f8e365]
=> END
~ diyizhang_01_10_boy02
吕萍:: “诶?等一下”[next=2] [ID:tde7799b60e]
=> END
~ diyizhang_01_10_boy03
男孩:: “去1014” [ID:t06808e83df]
=> END
~ diyizhang_01_10_cat
吕萍:: “咪咪?又是你” [ID:t36141ef025]
=> END
~ diyizhang_01_10_men
吕萍:: “这是......一面墙?” [ID:t664febbf8f]
=> END
~ diyizhang_01_11_cat
(小猫的尸体已经干了) [ID:t59e8199879]
=> END
# 场景十二
~ diyizhang_01_12_kaitou
吕萍:: “这是......通到什么地方去的” [ID:t7ce574125c]
=> END
~ diyizhang_01_12_yingbi
(几块大洋) [ID:t94b10f6270]
=> END
~ diyizhang_01_12_laoshu
(死掉的老鼠) [ID:td9593e553b]
=> END
~ diyizhang_01_12_hua
(石缝里开了几束花) [ID:t70c8da9593]
=> END
~ diyizhang_01_12_jiewei
(石壁另一头好像还有空间) [ID:t9b1714f00a]
=> END
# 场景十三
~ diyizhang_01_13_rili
(民国六年十二月二十一日) [ID:t9e9a33285a]
=> END
~ diyizhang_01_13_fartherandmother
[color=POWDER_BLUE]陆仁:[/color]: “你也不要太担心了,柜子我上了把锁”[next=4.3] [ID:t7147becd3a]
[color=POWDER_BLUE]陆仁:[/color]: “回头我再去问问看,说不定就是楼里的人偷的”[next=auto] [ID:tcad5305ba4]
[wait=1][next=6] [ID:t5dea58cccc]
[wait=1][next=3] [ID:t6e6d4ac32e]
[color=POWDER_BLUE]陆仁:[/color]: “你不要管他们怎么说,病确实是治好了,我们自己心里知道就可以了”[next=7.3] [ID:tcaf8437dab]
[color=POWDER_BLUE]陆仁:[/color]: “对了,昨天小蝶说她听到你做的那个娃娃开口说话了,不知道是怎么回事”[next=8.7] [ID:t39af521c31]
[color=POWDER_BLUE]陆仁:[/color]: “是不是应该让她和其他的小朋友一起多去玩玩,不要成天呆在家里”[next=6.7] [ID:t9af43f17ec]
[wait=1][next=4] [ID:tc88352dcea]
[wait=1][next=4] [ID:t78c1bab20c]
[color=POWDER_BLUE]陆仁:[/color]: “嗯......这个我也不是很懂的,那么到时候你和她说吧”[next=7.8] [ID:t3ab35a0776]
[color=POWDER_BLUE]陆仁:[/color]: “走吧,外面还有好多人等着呢,时间差不多再看几个今天就休息了”[next=8.3] [ID:t04cdb8c71c]
=> END
~ diyizhang_01_13_lock
(锁住了) [ID:t4b7e29f605]
=> END
~ diyizhang_01_13_xiangkuang
(相框) [ID:t05a04e53c5]
=> END
~ diyizhang_01_13_xin1
(一些患者的感谢信) [ID:t9ea994fc2b]
=> END
#
#~ diyizhang_01_13_shengyin
#吕萍:: “进来的地方......好像有声音”
#=> END
~ diyizhang_01_13_shu
(一本被撕掉的书) [ID:t2f53cff3ba]
=> END
~ diyizhang_01_13_xiaomaoshenti
(里面有什么东西) [ID:t2292f56db2]
=> END
~ diyizhang_01_13_shi
(戏台上面刻了一首诗) [ID:td1b7d3133c]
=> END
~ diyizhang_01_13_suo
(锁开了) [ID:t4bf2612ba6]
=> END
~ diyizhang_01_14_huangguodong
(口袋里有东西) [ID:te513bf86b9]
=> END
~ diyizhang_01_15_wu
(雾太大了,看不清路)[next=auto] [ID:t809fb0c8dc]
=> END
~ diyizhang_01_15_boy
男孩:: “你终于还是回来了”[next=4] [ID:t726c5cec0b]
=> END
~ diyizhang_01_16_bayinhe
(是个八音盒) [ID:t08bce48c30]
=> END
~ diyizhang_01_16_bayinhe2
(祝女儿早日康复) [ID:t744229d4f8]
=> END
~ diyizhang_01_15_fuzhou
(这图案和我手臂上的一摸一样) [ID:t2b3f3cc8b0]
=> END

View File

@ -0,0 +1,181 @@
extends CanvasLayer
## The action to use for advancing the dialogue
@export var next_action: StringName = &"ui_accept"
## The action to use to skip typing the dialogue
@export var skip_action: StringName = &"ui_cancel"
@onready var audio_stream_player: AudioStreamPlayer = $AudioStreamPlayer
@onready var balloon: Control = %Balloon
@onready var character_label: RichTextLabel = %CharacterLabel
@onready var dialogue_label: DialogueLabel = %DialogueLabel
@onready var responses_menu: DialogueResponsesMenu = %ResponsesMenu
## The dialogue resource
var resource: DialogueResource
## Temporary game states
var temporary_game_states: Array = []
## See if we are waiting for the player
var is_waiting_for_input: bool = false
## See if we are running a long mutation and should hide the balloon
var will_hide_balloon: bool = false
## The current line
var dialogue_line: DialogueLine:
set(next_dialogue_line):
is_waiting_for_input = false
balloon.focus_mode = Control.FOCUS_ALL
balloon.grab_focus()
# The dialogue has finished so close the balloon
if not next_dialogue_line:
queue_free()
return
# If the node isn't ready yet then none of the labels will be ready yet either
if not is_node_ready():
await ready
dialogue_line = next_dialogue_line
character_label.visible = not dialogue_line.character.is_empty()
character_label.text = tr(dialogue_line.character, "dialogue")
#主要角色颜色
if dialogue_line.character == "吕萍:":
character_label.modulate = Color.ORANGE
elif dialogue_line.character == "获得":
character_label.modulate = Color.WHITE
elif dialogue_line.character == "小蝶:":
character_label.modulate = Color.YELLOW
elif dialogue_line.character == "王癞子:":
character_label.modulate = Color.AQUA
else:
character_label.modulate = Color.LIGHT_SEA_GREEN
#print(dialogue_line.character,character_label.modulate)
dialogue_label.hide()
dialogue_label.dialogue_line = dialogue_line
responses_menu.hide()
responses_menu.set_responses(dialogue_line.responses)
# Show our balloon
balloon.show()
will_hide_balloon = false
dialogue_label.show()
if not dialogue_line.text.is_empty():
dialogue_label.type_out()
await dialogue_label.finished_typing
#sound
var stream = load("res://assets/sfx/peiyin/%s.mp3" % dialogue_line.translation_key)
if audio_stream_player.stream == stream and audio_stream_player.playing:
return
audio_stream_player.stream = stream
audio_stream_player.play()
# Wait for input
if dialogue_line.responses.size() > 0:
balloon.focus_mode = Control.FOCUS_NONE
responses_menu.show()
elif dialogue_line.time != "":
var time = dialogue_line.text.length() * 0.22 if dialogue_line.time == "auto" else dialogue_line.time.to_float()
await get_tree().create_timer(time).timeout
next(dialogue_line.next_id)
else:
is_waiting_for_input = true
balloon.focus_mode = Control.FOCUS_ALL
balloon.grab_focus()
get:
return dialogue_line
func _ready() -> void:
balloon.hide()
Engine.get_singleton("DialogueManager").mutated.connect(_on_mutated)
# If the responses menu doesn't have a next action set, use this one
if responses_menu.next_action.is_empty():
responses_menu.next_action = next_action
func _unhandled_input(_event: InputEvent) -> void:
# Only the balloon is allowed to handle input while it's showing
get_viewport().set_input_as_handled()
func _notification(what: int) -> void:
# Detect a change of locale and update the current dialogue line to show the new language
if what == NOTIFICATION_TRANSLATION_CHANGED and is_instance_valid(dialogue_label):
var visible_ratio = dialogue_label.visible_ratio
self.dialogue_line = await resource.get_next_dialogue_line(dialogue_line.id)
if visible_ratio < 1:
dialogue_label.skip_typing()
## Start some dialogue
func start(dialogue_resource: DialogueResource, title: String, extra_game_states: Array = []) -> void:
temporary_game_states = [self] + extra_game_states
is_waiting_for_input = false
resource = dialogue_resource
self.dialogue_line = await resource.get_next_dialogue_line(title, temporary_game_states)
## Go to the next line
func next(next_id: String) -> void:
self.dialogue_line = await resource.get_next_dialogue_line(next_id, temporary_game_states)
#region Signals
func _on_mutated(_mutation: Dictionary) -> void:
is_waiting_for_input = false
will_hide_balloon = true
get_tree().create_timer(0.1).timeout.connect(func():
if will_hide_balloon:
will_hide_balloon = false
balloon.hide()
)
func _on_balloon_gui_input(event: InputEvent) -> void:
# See if we need to skip typing of the dialogue
if dialogue_label.is_typing:
#var mouse_was_clicked: bool = event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed()
#var skip_button_was_pressed: bool = event.is_action_pressed(skip_action)
var skip_button_was_pressed_E: bool = event.is_action_pressed("interact")
#if mouse_was_clicked or skip_button_was_pressed or skip_button_was_pressed_E:
if skip_button_was_pressed_E:
get_viewport().set_input_as_handled()
dialogue_label.skip_typing()
return
if not is_waiting_for_input: return
if dialogue_line.responses.size() > 0: return
# When there are no response options the balloon itself is the clickable thing
get_viewport().set_input_as_handled()
#if event is InputEventMouseButton and event.is_pressed() and event.button_index == MOUSE_BUTTON_LEFT:
#next(dialogue_line.next_id)
#elif event.is_action_pressed(next_action) and get_viewport().gui_get_focus_owner() == balloon:
#next(dialogue_line.next_id)
if event.is_action_pressed("interact") and get_viewport().gui_get_focus_owner() == balloon:
next(dialogue_line.next_id)
func _on_responses_menu_response_selected(response: DialogueResponse) -> void:
next(response.next_id)
#endregion

View File

@ -0,0 +1,166 @@
[gd_scene load_steps=10 format=3 uid="uid://73jm5qjy52vq"]
[ext_resource type="Script" path="res://globals/balloon.gd" id="1_36de5"]
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"]
[ext_resource type="FontFile" uid="uid://dehtmf0lanaf3" path="res://assets/HUD/字体/方正楷体简体.TTF" id="2_tv8r6"]
[ext_resource type="Script" path="res://addons/dialogue_manager/dialogue_reponses_menu.gd" id="3_72ixx"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
border_color = Color(0.329412, 0.329412, 0.329412, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ri4m3"]
bg_color = Color(0.121569, 0.121569, 0.121569, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
border_color = Color(1, 1, 1, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0njw"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
border_color = Color(0.6, 0.6, 0.6, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_jydvi"]
[sub_resource type="Theme" id="Theme_qq3yp"]
default_font_size = 12
Button/fonts/font = ExtResource("2_tv8r6")
Button/styles/disabled = SubResource("StyleBoxFlat_spyqn")
Button/styles/focus = SubResource("StyleBoxFlat_ri4m3")
Button/styles/hover = SubResource("StyleBoxFlat_e0njw")
Button/styles/normal = SubResource("StyleBoxFlat_e0njw")
MarginContainer/constants/margin_bottom = 15
MarginContainer/constants/margin_left = 30
MarginContainer/constants/margin_right = 30
MarginContainer/constants/margin_top = 15
Panel/styles/panel = SubResource("StyleBoxEmpty_jydvi")
[node name="Balloon" type="CanvasLayer"]
layer = 100
script = ExtResource("1_36de5")
metadata/_edit_vertical_guides_ = [-78.0]
metadata/_edit_horizontal_guides_ = [276.0]
[node name="Balloon" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_qq3yp")
[node name="Panel" type="Panel" parent="Balloon"]
clip_children = 2
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -57.0
offset_bottom = -28.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 1
[node name="GridContainer" type="HBoxContainer" parent="Balloon/Panel"]
layout_direction = 1
layout_mode = 1
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_top = -12.5
offset_bottom = -1.5
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 1
theme_override_colors/font_shadow_color = Color(0, 0, 0, 0.207843)
theme_override_fonts/normal_font = ExtResource("2_tv8r6")
theme_override_font_sizes/normal_font_size = 9
bbcode_enabled = true
text = "Charagcter"
fit_content = true
scroll_active = false
autowrap_mode = 0
[node name="Dialogue" type="MarginContainer" parent="Balloon/Panel/GridContainer"]
layout_mode = 2
size_flags_stretch_ratio = 0.0
theme_override_constants/margin_left = 0
theme_override_constants/margin_top = 0
theme_override_constants/margin_right = 0
theme_override_constants/margin_bottom = 0
[node name="VBoxContainer" type="HBoxContainer" parent="Balloon/Panel/GridContainer/Dialogue"]
layout_mode = 2
[node name="DialogueLabel" parent="Balloon/Panel/GridContainer/Dialogue/VBoxContainer" instance=ExtResource("2_a8ve6")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 6
theme_override_colors/font_shadow_color = Color(0, 0, 0, 0.207843)
theme_override_fonts/normal_font = ExtResource("2_tv8r6")
theme_override_font_sizes/normal_font_size = 9
text = "Dialogue..."
autowrap_mode = 0
[node name="Responses" type="MarginContainer" parent="Balloon"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -147.0
offset_top = -558.0
offset_right = 494.0
offset_bottom = -154.0
grow_horizontal = 2
grow_vertical = 0
[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon/Responses" node_paths=PackedStringArray("response_template")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 8
theme_override_constants/separation = 2
script = ExtResource("3_72ixx")
response_template = NodePath("ResponseExample")
[node name="ResponseExample" type="Button" parent="Balloon/Responses/ResponsesMenu"]
layout_mode = 2
text = "Response example"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
volume_db = -15.0
bus = &"sfx"
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
[connection signal="response_selected" from="Balloon/Responses/ResponsesMenu" to="." method="_on_responses_menu_response_selected"]

Binary file not shown.

View File

@ -0,0 +1,29 @@
shader_type canvas_item;
render_mode unshaded;
// Texture must have 'Filter'-flag enabled!
// Automatic smoothing
// independent of geometry and perspective
vec4 texturePointSmooth(sampler2D smp, vec2 uv, vec2 pixel_size)
{
vec2 ddx = dFdx(uv);
vec2 ddy = dFdy(uv);
vec2 lxy = sqrt(ddx * ddx + ddy * ddy);
vec2 uv_pixels = uv / pixel_size;
vec2 uv_pixels_floor = round(uv_pixels) - vec2(0.5f);
vec2 uv_dxy_pixels = uv_pixels - uv_pixels_floor;
uv_dxy_pixels = clamp((uv_dxy_pixels - vec2(0.5f)) * pixel_size / lxy + vec2(0.5f), 0.0f, 1.0f);
uv = uv_pixels_floor * pixel_size;
return textureGrad(smp, uv + uv_dxy_pixels * pixel_size, ddx, ddy);
}
void fragment()
{
COLOR = texturePointSmooth(TEXTURE, UV, TEXTURE_PIXEL_SIZE);
}

44
asset/shader/bailizi.tscn Executable file
View File

@ -0,0 +1,44 @@
[gd_scene load_steps=7 format=3 uid="uid://611jtxfhccqk"]
[ext_resource type="Texture2D" uid="uid://mlffyqqogt5n" path="res://assets/worlds/第一章/场景八/单块碎片白.png" id="1_pgqa0"]
[sub_resource type="Curve" id="Curve_igcm1"]
_data = [Vector2(0, 0.956044), 0.0, 0.0, 0, 0, Vector2(0.328947, 0.527472), 2.90961, 2.90961, 0, 0, Vector2(0.72807, 0.340659), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_uoprq"]
curve = SubResource("Curve_igcm1")
[sub_resource type="Curve" id="Curve_sbmii"]
_data = [Vector2(0, 1), 0.0, -0.213234, 0, 0, Vector2(0.394872, 0.340659), 0.0, 0.0, 0, 0, Vector2(0.697436, 0.703297), 0.0, 0.0, 0, 0, Vector2(1, 0.131868), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_1u1hv"]
curve = SubResource("Curve_sbmii")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_44bc2"]
particle_flag_disable_z = true
emission_shape = 3
emission_box_extents = Vector3(0, 1, 1)
direction = Vector3(-50, -5, 0)
spread = 35.0
initial_velocity_min = 5.0
initial_velocity_max = 10.0
angular_velocity_min = -10.0
angular_velocity_max = 20.0
angular_velocity_curve = SubResource("CurveTexture_uoprq")
gravity = Vector3(0, 0, 0)
scale_min = 0.1
scale_max = 0.5
scale_curve = SubResource("CurveTexture_1u1hv")
[node name="baiselizi" type="GPUParticles2D"]
position = Vector2(563, 171)
amount = 150
process_material = SubResource("ParticleProcessMaterial_44bc2")
texture = ExtResource("1_pgqa0")
lifetime = 100.0
preprocess = 50.0
visibility_rect = Rect2(0, -100, -800, 200)
trail_sections = 16
metadata/_edit_vertical_guides_ = [-721.0]

BIN
asset/shader/bloodmoon21-1x.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

View File

@ -0,0 +1,86 @@
// BoTW Toon Shader by NekotoArts
// wrote this at 2AM
//
//
//
// England is my city
// Smoke trees
// Two to the One from the One to the Three
shader_type spatial;
render_mode diffuse_toon, specular_toon;
uniform vec4 tint: source_color;
uniform sampler2D albedo_texture : source_color;
uniform float metallic : hint_range(0.0, 1.0) = 0.0;
uniform sampler2D normal_map : hint_normal;
uniform float shadow_size = 0.045;
uniform float shadow_blend = 0.001;
uniform float shadow_extra_intensity = 0.0;
uniform vec4 shadow_color : source_color;
uniform vec4 light_tint : source_color;
uniform float rimlight_size = 0.921;
uniform float rimlight_blend = 0.01;
uniform vec4 rimlight_color : source_color;
uniform bool use_normalmap = true;
uniform bool animated = true;
uniform float time_scale = 0.02;
uniform vec3 normal_bias = vec3(0.0);
uniform vec3 light_bias = vec3(0.0);
uniform bool use_view = true;
uniform vec4 view_bias : source_color = vec4(1.0, 0.0, 1.0, 1.0);
uniform float view_multiplier : hint_range(-1.0, 1.0) = -1.0;
float fresnel(float amount, vec3 normal, vec3 view)
{
return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount);
}
varying vec3 vertex_normal;
varying vec3 vertex_tangent;
void vertex(){
vertex_normal = NORMAL;
vertex_normal = TANGENT;
}
void fragment(){
ALBEDO = texture(albedo_texture, UV).rgb * tint.rgb;
METALLIC = metallic;
}
void light(){
vec3 normal;
if (use_normalmap){
vec3 normal_from_texture;
if (animated){
normal_from_texture = texture(normal_map, UV + TIME * time_scale).rgb;
}else{
normal_from_texture = texture(normal_map, UV).rgb;
}
normal = vec3(normal_from_texture.x * NORMAL.x,
normal_from_texture.y * NORMAL.y, normal_from_texture.z);
normal = NORMAL - normal_from_texture;
}else{
normal = NORMAL;
}
if (use_view){
normal -= VIEW * view_bias.rgb * view_multiplier;
}
float NdotL = dot(normal + normal_bias, LIGHT + light_bias);
float rounded = smoothstep(shadow_size, shadow_blend + shadow_size, NdotL);
float one_minus = 1.0 - rounded;
vec3 mult1 = LIGHT_COLOR * rounded * light_tint.rgb * ATTENUATION;
vec3 mult2 = (one_minus * 1.4 * shadow_color.rgb) - shadow_extra_intensity;
vec3 add1 = mult1 + mult2;
float add3 = rimlight_blend + rimlight_size;
float basic_fresnel = fresnel(1.0, NORMAL, VIEW);
float smoothed = smoothstep(rimlight_size, add3, basic_fresnel);
vec3 add2 = add1 + smoothed * rimlight_color.rgb;
DIFFUSE_LIGHT += ALBEDO * add2;
}

View File

@ -0,0 +1,21 @@
shader_type canvas_item;
uniform int levels = 3;
uniform float spread = 0.01;
uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap;
void fragment(){
vec3 sum;
COLOR.rgb = vec3(0);
//vec2 offset = (UV - vec2(0.5))*vec2(1,-1);
vec2 offset = vec2(0.01, 0.01);
for(int i = 0; i < levels; i++){
float t = 2.0*float(i)/float(levels-1); // range 0.0->2.0
vec3 slice = vec3(1.0-t, 1.0 - abs(t - 1.0), t - 1.0);
slice = max(slice, 0.0);
sum += slice;
vec2 slice_offset = (t-1.0)*spread*offset;
COLOR.rgb += slice * texture(SCREEN_TEXTURE, SCREEN_UV + slice_offset).rgb;
}
COLOR.rgb /= sum;
}

24
asset/shader/fog2.gdshader Executable file
View File

@ -0,0 +1,24 @@
shader_type canvas_item;
//render_mode unshaded; // optional
// Noise texture
uniform sampler2D noise_texture: repeat_enable, filter_nearest;
// Fog density
uniform float density: hint_range(0.0, 1.0) = 0.25;
// Fog speed
uniform vec2 speed = vec2(0.02, 0.01);
// Called for every pixel the material is visible on
void fragment() {
// Make the fog slowly move
vec2 uv = UV + speed * TIME;
// Sample the noise texture
float noise = texture(noise_texture, uv).r;
// Convert the noise from the (0.0, 1.0) range to the (-1.0, 1.0) range
// and clamp it between 0.0 and 1.0 again
float fog = clamp(noise * 2.0 - 1.0, 0.0, 1.0);
// Apply the fog effect
COLOR.a *= fog * density;
}

20
asset/shader/frog.gdshader Executable file
View File

@ -0,0 +1,20 @@
shader_type canvas_item;
uniform vec4 base_color : source_color;
//global uniform float location_fade;
void fragment() {
vec3 fog_color_1 = texture(TEXTURE, vec2(UV.x / 2.0 + TIME /100.0, UV.y / 4.0 - TIME / 100.0)).rgb;
vec3 fog_color_2 = texture(TEXTURE, vec2(UV.x / 2.0 + 0.5 + TIME /50.0, UV.y / 4.0 + 0.5 - TIME / 160.0)).rgb;
vec3 fog_color_3 = texture(TEXTURE, vec2(UV.x / 2.0 + 0.25 + TIME /25.0, UV.y / 4.0 - 0.25 - TIME / 160.0)).rgb;
vec3 fog_color = mix(fog_color_3, mix(fog_color_1, fog_color_2, 0.5), 0.7);
COLOR.a *= base_color.a * fog_color.r *1.5;
COLOR.rgb = fog_color * base_color.rgb;
//COLOR.rgb *= location_fade;
// Called for every pixel the material is visible on.
}
//void light() {
// Called for every pixel for every light affecting the CanvasItem.
// Uncomment to replace the default light processing function with this one.
//}

View File

@ -0,0 +1,54 @@
/*
Glitch Effect Shader by Yui Kinomoto @arlez80
MIT License
*/
shader_type canvas_item;
// 振動の強さ
uniform float shake_power = 0.03;
// 振動率
uniform float shake_rate : hint_range( 0.0, 1.0 ) = 0.2;
// 振動速度
uniform float shake_speed = 5.0;
// 振動ブロックサイズ
uniform float shake_block_size = 30.5;
// 色の分離率
uniform float shake_color_rate : hint_range( 0.0, 1.0 ) = 0.01;
// スクリーン
uniform sampler2D screen_texture : hint_screen_texture;
float random( float seed )
{
return fract( 543.2543 * sin( dot( vec2( seed, seed ), vec2( 3525.46, -54.3415 ) ) ) );
}
void fragment( )
{
float enable_shift = float(
random( trunc( TIME * shake_speed ) )
< shake_rate
);
vec2 fixed_uv = SCREEN_UV;
fixed_uv.x += (
random(
( trunc( SCREEN_UV.y * shake_block_size ) / shake_block_size )
+ TIME
) - 0.5
) * shake_power * enable_shift;
vec4 pixel_color = textureLod( screen_texture, fixed_uv, 0.0 );
pixel_color.r = mix(
pixel_color.r
, textureLod( screen_texture, fixed_uv + vec2( shake_color_rate, 0.0 ), 0.0 ).r
, enable_shift
);
pixel_color.b = mix(
pixel_color.b
, textureLod( screen_texture, fixed_uv + vec2( -shake_color_rate, 0.0 ), 0.0 ).b
, enable_shift
);
COLOR = pixel_color;
}

54
asset/shader/heilizi.tscn Executable file
View File

@ -0,0 +1,54 @@
[gd_scene load_steps=9 format=3 uid="uid://b3ajpb6miur0s"]
[ext_resource type="Texture2D" uid="uid://bdfllabmrv7ue" path="res://assets/worlds/第一章/场景八/单块碎片黑.png" id="1_2t4yh"]
[sub_resource type="Curve" id="Curve_gabfw"]
min_value = -360.0
max_value = 360.0
_data = [Vector2(0, -344.176), 0.0, 0.0, 0, 0, Vector2(0.214912, 360), 0.0, 0.0, 0, 0, Vector2(0.614035, -320.44), 0.0, 0.0, 0, 0, Vector2(0.982456, 360), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_wrnlh"]
curve = SubResource("Curve_gabfw")
[sub_resource type="Gradient" id="Gradient_rwi0m"]
offsets = PackedFloat32Array(0, 0.99, 1)
colors = PackedColorArray(1, 1, 1, 0.466667, 1, 1, 1, 0.965333, 1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_5cty7"]
gradient = SubResource("Gradient_rwi0m")
[sub_resource type="Curve" id="Curve_8ybmm"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.982456, 0.10989), -1.97802, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_jq14j"]
curve = SubResource("Curve_8ybmm")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_wa8gc"]
particle_flag_disable_z = true
emission_shape = 3
emission_box_extents = Vector3(0, 1, 1)
direction = Vector3(-50, 0, 0)
spread = 40.0
initial_velocity_min = 5.0
initial_velocity_max = 10.0
angular_velocity_min = 10.0
angular_velocity_max = 30.0
angular_velocity_curve = SubResource("CurveTexture_wrnlh")
gravity = Vector3(0, 0, 0)
scale_min = 0.1
scale_max = 0.5
scale_curve = SubResource("CurveTexture_jq14j")
color_ramp = SubResource("GradientTexture1D_5cty7")
[node name="heiselizi" type="GPUParticles2D"]
position = Vector2(564, 159)
amount = 180
process_material = SubResource("ParticleProcessMaterial_wa8gc")
texture = ExtResource("1_2t4yh")
lifetime = 100.0
preprocess = 52.0
visibility_rect = Rect2(0, -100, -800, 200)
trail_enabled = true
trail_sections = 16

27
asset/shader/huabu.gdshader Executable file
View File

@ -0,0 +1,27 @@
shader_type canvas_item;
render_mode blend_mix;
uniform sampler2D palette: filter_nearest;
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
void fragment()
{
vec3 source_col = texture(screen_texture, SCREEN_UV).rgb;
vec3 closest_col = vec3(0.0);
float smallest_error = 10.0;
int palette_size = textureSize(palette, 0).x;
float palette_pixel_size = 1.0 / float(palette_size);
for (int x = 0; x < palette_size; x++)
{
vec3 palette_col = texture(palette, vec2(float(x) * palette_pixel_size, 0.0)).rgb;
float error = distance(source_col, palette_col);
if (error < smallest_error)
{
closest_col = palette_col;
smallest_error = error;
}
}
COLOR.rgb = closest_col;
}

44
asset/shader/huilizi.tscn Executable file
View File

@ -0,0 +1,44 @@
[gd_scene load_steps=7 format=3 uid="uid://clfivp8aur278"]
[ext_resource type="Texture2D" uid="uid://cwgusmrk6t3px" path="res://assets/worlds/第一章/场景八/单块碎片灰.png" id="1_jgu3s"]
[sub_resource type="Curve" id="Curve_d6251"]
_data = [Vector2(0, 1), 0.0, -6.37762, 0, 0, Vector2(0.377193, 0.78022), 0.0, 0.0, 0, 0, Vector2(0.736842, 0.428571), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_kc481"]
curve = SubResource("Curve_d6251")
[sub_resource type="Curve" id="Curve_231os"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -2.50549, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_y7l7i"]
curve = SubResource("Curve_231os")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_3xiox"]
particle_flag_disable_z = true
emission_shape = 3
emission_box_extents = Vector3(0, 1, 1)
direction = Vector3(-50, 0, 0)
spread = 38.0
initial_velocity_min = 5.0
initial_velocity_max = 10.0
angular_velocity_min = -10.0
angular_velocity_max = 20.0
angular_velocity_curve = SubResource("CurveTexture_kc481")
gravity = Vector3(0, 0, 0)
scale_min = 0.1
scale_max = 0.5
scale_curve = SubResource("CurveTexture_y7l7i")
[node name="dalizi" type="GPUParticles2D"]
position = Vector2(465, 162)
amount = 200
process_material = SubResource("ParticleProcessMaterial_3xiox")
texture = ExtResource("1_jgu3s")
lifetime = 100.0
preprocess = 51.0
speed_scale = 1.2
visibility_rect = Rect2(0, -100, -800, 200)
trail_sections = 16

View File

@ -0,0 +1,31 @@
shader_type canvas_item;
//render_mode unshaded;
//uniform vec2 light_direction = vec2(0.2, 1);
//uniform sampler2D grab_texture: source_color;
uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap;
//void vertex() {
//}
void fragment(){
//vec4 texture_color = texture(TEXTURE, UV);
////depth in alpha channel
//float depth = texture_color.w;
//vec2 sample_point = UV - LIGHT_DIRECTION * depth;
//vec4 grab_color = texture(grab_texture, sample_point);
//if (grab_color.a > 0.0) COLOR.xyz *= 0.5;
//vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV);
vec4 color = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0);
if (color.a > 0.0 && color.a < 1.0) COLOR = vec4(color.r, 0.7, 0.7, 1.0);
else if (color.a != 0.0) COLOR = vec4(0.7, color.g, 0.7, 1.0);
else COLOR = color;
}
//void light() {
//vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV);
//float depth = 1.0;
//vec2 sample_point = UV - LIGHT_DIRECTION.xy * depth;
//if (SHADOW_MODULATE.w == 0.5) COLOR = vec4(COLOR.rgb, 1.0);
//vec4 grab_color = texture(grab_texture, sample_point);
//COLOR = LIGHT_DIRECTION
//float cNdotL = max(0.0, dot(NORMAL, LIGHT_DIRECTION));
//LIGHT = vec4(LIGHT_COLOR.rgb * COLOR.rgb * LIGHT_ENERGY * cNdotL, LIGHT_COLOR.a);
//}

9
asset/shader/sway.gdshader Executable file
View File

@ -0,0 +1,9 @@
shader_type canvas_item;
uniform float strength = 0.5;
uniform float speed = 50.0;
void vertex() {
float offset = sin(TIME * speed) * strength;
VERTEX.y += offset;
VERTEX.x += offset * step( 100.0 , 50.0 + VERTEX.y ) ;
}

View File

@ -0,0 +1,19 @@
shader_type canvas_item;
uniform float vignette_intensity : hint_range(0.0, 4.0) = 0.4;
uniform vec4 vignette_rgb : source_color = vec4(0.247, 0.149, 0.192, 1.0);
uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap;
float vignette(vec2 uv){
uv *= 1.0 - uv.xy;
float vignette = (uv.x + 0.05) * (uv.y + 0.05) * 15.0;
return pow(vignette, vignette_intensity);
}
void fragment(){
vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV);
vec4 text = texture(TEXTURE, UV);
text.rgba *= (vignette_rgb.rgba);
text.rgba *= (1.0 - vignette(UV));
COLOR = vec4((text.rgb)*color.rgb, text.a);
}

View File

@ -0,0 +1,29 @@
shader_type canvas_item;
render_mode unshaded;
// Texture must have 'Filter'-flag enabled!
// Automatic smoothing
// independent of geometry and perspective
vec4 texturePointSmooth(sampler2D smp, vec2 uv, vec2 pixel_size)
{
vec2 ddx = dFdx(uv);
vec2 ddy = dFdy(uv);
vec2 lxy = sqrt(ddx * ddx + ddy * ddy);
vec2 uv_pixels = uv / pixel_size;
vec2 uv_pixels_floor = round(uv_pixels) - vec2(0.5f);
vec2 uv_dxy_pixels = uv_pixels - uv_pixels_floor;
uv_dxy_pixels = clamp((uv_dxy_pixels - vec2(0.5f)) * pixel_size / lxy + vec2(0.5f), 0.0f, 1.0f);
uv = uv_pixels_floor * pixel_size;
return textureGrad(smp, uv + uv_dxy_pixels * pixel_size, ddx, ddy);
}
void fragment()
{
COLOR = texturePointSmooth(TEXTURE, UV, TEXTURE_PIXEL_SIZE);
}

View File

@ -0,0 +1,86 @@
// BoTW Toon Shader by NekotoArts
// wrote this at 2AM
//
//
//
// England is my city
// Smoke trees
// Two to the One from the One to the Three
shader_type spatial;
render_mode diffuse_toon, specular_toon;
uniform vec4 tint: source_color;
uniform sampler2D albedo_texture : source_color;
uniform float metallic : hint_range(0.0, 1.0) = 0.0;
uniform sampler2D normal_map : hint_normal;
uniform float shadow_size = 0.045;
uniform float shadow_blend = 0.001;
uniform float shadow_extra_intensity = 0.0;
uniform vec4 shadow_color : source_color;
uniform vec4 light_tint : source_color;
uniform float rimlight_size = 0.921;
uniform float rimlight_blend = 0.01;
uniform vec4 rimlight_color : source_color;
uniform bool use_normalmap = true;
uniform bool animated = true;
uniform float time_scale = 0.02;
uniform vec3 normal_bias = vec3(0.0);
uniform vec3 light_bias = vec3(0.0);
uniform bool use_view = true;
uniform vec4 view_bias : source_color = vec4(1.0, 0.0, 1.0, 1.0);
uniform float view_multiplier : hint_range(-1.0, 1.0) = -1.0;
float fresnel(float amount, vec3 normal, vec3 view)
{
return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount);
}
varying vec3 vertex_normal;
varying vec3 vertex_tangent;
void vertex(){
vertex_normal = NORMAL;
vertex_normal = TANGENT;
}
void fragment(){
ALBEDO = texture(albedo_texture, UV).rgb * tint.rgb;
METALLIC = metallic;
}
void light(){
vec3 normal;
if (use_normalmap){
vec3 normal_from_texture;
if (animated){
normal_from_texture = texture(normal_map, UV + TIME * time_scale).rgb;
}else{
normal_from_texture = texture(normal_map, UV).rgb;
}
normal = vec3(normal_from_texture.x * NORMAL.x,
normal_from_texture.y * NORMAL.y, normal_from_texture.z);
normal = NORMAL - normal_from_texture;
}else{
normal = NORMAL;
}
if (use_view){
normal -= VIEW * view_bias.rgb * view_multiplier;
}
float NdotL = dot(normal + normal_bias, LIGHT + light_bias);
float rounded = smoothstep(shadow_size, shadow_blend + shadow_size, NdotL);
float one_minus = 1.0 - rounded;
vec3 mult1 = LIGHT_COLOR * rounded * light_tint.rgb * ATTENUATION;
vec3 mult2 = (one_minus * 1.4 * shadow_color.rgb) - shadow_extra_intensity;
vec3 add1 = mult1 + mult2;
float add3 = rimlight_blend + rimlight_size;
float basic_fresnel = fresnel(1.0, NORMAL, VIEW);
float smoothed = smoothstep(rimlight_size, add3, basic_fresnel);
vec3 add2 = add1 + smoothed * rimlight_color.rgb;
DIFFUSE_LIGHT += ALBEDO * add2;
}

View File

@ -0,0 +1,21 @@
shader_type canvas_item;
uniform int levels = 3;
uniform float spread = 0.01;
uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap;
void fragment(){
vec3 sum;
COLOR.rgb = vec3(0);
//vec2 offset = (UV - vec2(0.5))*vec2(1,-1);
vec2 offset = vec2(0.01, 0.01);
for(int i = 0; i < levels; i++){
float t = 2.0*float(i)/float(levels-1); // range 0.0->2.0
vec3 slice = vec3(1.0-t, 1.0 - abs(t - 1.0), t - 1.0);
slice = max(slice, 0.0);
sum += slice;
vec2 slice_offset = (t-1.0)*spread*offset;
COLOR.rgb += slice * texture(SCREEN_TEXTURE, SCREEN_UV + slice_offset).rgb;
}
COLOR.rgb /= sum;
}

View File

@ -0,0 +1,31 @@
shader_type canvas_item;
//render_mode unshaded;
//uniform vec2 light_direction = vec2(0.2, 1);
//uniform sampler2D grab_texture: source_color;
uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap;
//void vertex() {
//}
void fragment(){
//vec4 texture_color = texture(TEXTURE, UV);
////depth in alpha channel
//float depth = texture_color.w;
//vec2 sample_point = UV - LIGHT_DIRECTION * depth;
//vec4 grab_color = texture(grab_texture, sample_point);
//if (grab_color.a > 0.0) COLOR.xyz *= 0.5;
//vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV);
vec4 color = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0);
if (color.a > 0.0 && color.a < 1.0) COLOR = vec4(color.r, 0.7, 0.7, 1.0);
else if (color.a != 0.0) COLOR = vec4(0.7, color.g, 0.7, 1.0);
else COLOR = color;
}
//void light() {
//vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV);
//float depth = 1.0;
//vec2 sample_point = UV - LIGHT_DIRECTION.xy * depth;
//if (SHADOW_MODULATE.w == 0.5) COLOR = vec4(COLOR.rgb, 1.0);
//vec4 grab_color = texture(grab_texture, sample_point);
//COLOR = LIGHT_DIRECTION
//float cNdotL = max(0.0, dot(NORMAL, LIGHT_DIRECTION));
//LIGHT = vec4(LIGHT_COLOR.rgb * COLOR.rgb * LIGHT_ENERGY * cNdotL, LIGHT_COLOR.a);
//}