add code step 3
This commit is contained in:
parent
f032b08fc7
commit
57b867f93a
BIN
asset/dialogue/对话插件/dialogue_manager.zip
Executable file
BIN
asset/dialogue/对话插件/dialogue_manager.zip
Executable file
Binary file not shown.
62
asset/dialogue/对话资源/item_description.dialogue
Executable file
62
asset/dialogue/对话资源/item_description.dialogue
Executable 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
|
81
asset/dialogue/对话资源/序章.dialogue
Executable file
81
asset/dialogue/对话资源/序章.dialogue
Executable 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
|
499
asset/dialogue/对话资源/第一章.dialogue
Executable file
499
asset/dialogue/对话资源/第一章.dialogue
Executable 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
|
181
asset/dialogue/本地气泡场景/balloon.gd
Executable file
181
asset/dialogue/本地气泡场景/balloon.gd
Executable 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
|
166
asset/dialogue/本地气泡场景/balloon.tscn
Executable file
166
asset/dialogue/本地气泡场景/balloon.tscn
Executable 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"]
|
BIN
asset/font/zpix-commercial-one-grand.ttf
Normal file
BIN
asset/font/zpix-commercial-one-grand.ttf
Normal file
Binary file not shown.
29
asset/shader/SmoothPixel.gdshader
Normal file
29
asset/shader/SmoothPixel.gdshader
Normal 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
44
asset/shader/bailizi.tscn
Executable 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
BIN
asset/shader/bloodmoon21-1x.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 102 B |
86
asset/shader/botw_toon2.gdshader
Normal file
86
asset/shader/botw_toon2.gdshader
Normal 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;
|
||||
}
|
21
asset/shader/chromatic_abberation.gdshader
Normal file
21
asset/shader/chromatic_abberation.gdshader
Normal 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
24
asset/shader/fog2.gdshader
Executable 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
20
asset/shader/frog.gdshader
Executable 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.
|
||||
//}
|
54
asset/shader/glitcheffect.gdshader
Executable file
54
asset/shader/glitcheffect.gdshader
Executable 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
54
asset/shader/heilizi.tscn
Executable 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
27
asset/shader/huabu.gdshader
Executable 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
44
asset/shader/huilizi.tscn
Executable 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
|
31
asset/shader/shadow_shader.gdshader
Normal file
31
asset/shader/shadow_shader.gdshader
Normal 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
9
asset/shader/sway.gdshader
Executable 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 ) ;
|
||||
}
|
19
asset/shader/vignette.gdshader
Normal file
19
asset/shader/vignette.gdshader
Normal 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);
|
||||
}
|
29
asset/shader/未使用/SmoothPixel.gdshader
Normal file
29
asset/shader/未使用/SmoothPixel.gdshader
Normal 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);
|
||||
}
|
86
asset/shader/未使用/botw_toon2.gdshader
Normal file
86
asset/shader/未使用/botw_toon2.gdshader
Normal 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;
|
||||
}
|
21
asset/shader/未使用/chromatic_abberation.gdshader
Normal file
21
asset/shader/未使用/chromatic_abberation.gdshader
Normal 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;
|
||||
}
|
31
asset/shader/未使用/shadow_shader.gdshader
Normal file
31
asset/shader/未使用/shadow_shader.gdshader
Normal 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);
|
||||
//}
|
Loading…
Reference in New Issue
Block a user