diff --git a/game/Chapters/Chapter1.rpy b/game/Chapters/Chapter1.rpy index c6f1018..a8b906d 100755 --- a/game/Chapters/Chapter1.rpy +++ b/game/Chapters/Chapter1.rpy @@ -54,7 +54,7 @@ label Chapter1_Scene1: mom "「17:40校门口便利店,别迟到。」" show ryt dialogue normal at right me "......妈妈又给我发这消息" - me "我得等车。\n你们先打,下次我一定来 {cps=3} {cps=20}——前提是我妈能接受她儿子在篮球场上挥洒青春而不是在车里背单词。" + me "我得等车。\n你们先打,下次我一定来 {cps=3} {cps=20}——前提是我妈能接受她儿子在篮球场上挥洒青春而不是在车里背单词。" show xingyu at left xingyu "涛哥,你这样不行啊,迟早得「起义」。" stop sound fadeout 1.0 @@ -201,16 +201,16 @@ label Chapter1_Scene3: scene bg corridor with dissolve "【同日下午·高二一班走廊】" - show xiaowei at left with dissolve "同一时间,另一个人也在看那张照片。" tongxue "晓薇你快看!这不是你们一班那个任懿涛吗?他怎么还是这么搞笑!" + show xiaowei at right with dissolve xiaowei "拍得好生动啊!你们说,要是我也这样跳起来打人,会不会也这么有效果?" tongxue "哈哈哈哈!" - hide xiaowei with dissolve stop music fadeout 1.0 "{cps=20}她笑着,眼睛却没有离开屏幕。" "{cps=20}那种真实的活力,让她觉得……在礼貌而疏离的文科班里,有什么东西被触动了。" + hide xiaowei with dissolve #system_ "【切换账号:薇风拂晓】" play music "audio/XinLanDiary-Part1.ogg" fadein 2.0 @@ -387,10 +387,11 @@ label Chapter1_Scene4: scene bg black with fade system_ "【同夜·城市另一头】" + scene bg yutong room night with dissolve me "城市的另一头,苏雨桐刚回到家。" yutong "TaoliTaoli……今天依然没有更新。" system_ "【任懿涛画廊·访问计数器:+1】" - me "她一张张翻看那些照片。相册里已经积累了二十几张,按时间顺序排列。" + "她一张张翻看那些照片。相册里已经积累了二十几张,按时间顺序排列。" yutong "……在这个高度秩序化的生活里,观察一个如此不协调、如此鲜活的存在……有种奇妙的慰藉。" $ yutong_stats["affection"] += 3 @@ -398,6 +399,7 @@ label Chapter1_Scene4: pause 0.5 system_ "【几公里外·林晓薇的房间】" + scene bg xiaowei room night with dissolve me "几公里外,林晓薇躺在床上,盯着天花板发呆。" me_w "你问的那个人,确实是我们学校的。怎么,你认识?" me "那条回复躺在对话框里,她还没想好怎么回。" @@ -423,4 +425,4 @@ label Chapter1_Scene4: pause 1.5 system_ "【第一章·画廊风波·完】" - return + jump Chapter2_Scene1 diff --git a/game/Chapters/Chapter2/Chapter2-Side.rpy b/game/Chapters/Chapter2/Chapter2-Side.rpy new file mode 100644 index 0000000..e8295ca --- /dev/null +++ b/game/Chapters/Chapter2/Chapter2-Side.rpy @@ -0,0 +1,126 @@ +# Chapter 2: Side Stories +# 支线剧情 + +label C2Side1: + # —— 天台 —— + if lhy_stats["affection"] < 11: + jump C2S2 + + $ game_day = 16 + $ game_period = "lunch" + + scene bg rooftop with fade + system_ "【Day 16·午休·天台】" + + pause 0.5 + + show lhy dialogue normal at left with dissolve + lhy "任懿涛。能占用你一点时间吗?" + + show ryt dialogue normal at right with dissolve + me "小卡主动找我说话?概率大概跟哈雷彗星过境差不多。" + + show lhy dialogue normal at left + lhy "关于昨天的邀请。我想确认一下——你是认真的吗?" + lhy "我的意思是,我技术不好。KD只有0.6。" + + me "所以呢?" + + lhy "所以……你不怕拖累胜率?" + + me "他表情好平静,感觉不是在谦虚......是在试探什么吗?" + + hide ryt with dissolve + hide lhy with dissolve + + menu: + "胜率不重要,重要的是有人兜底。": + $ lhy_stats["affection"] += 3 + jump C2Side1S1 + "怕什么,我可以一打三。": + $ lhy_stats["affection"] += 2 + jump C2Side1S2 + "你负责战略,我负责送死,公平吧?": + $ lhy_stats["affection"] += 1 + jump C2Side1S3 + +label C2Side1S1: + show ryt dialogue normal at right with dissolve + me "胜率不重要,重要的是有人兜底。" + + show lhy dialogue normal at left with dissolve + lhy "……" + lhy "你总是这样说。好像什么都可以轻描淡写地过去。" + + lhy "其实,我有件事想问你。" + lhy "你是怎么做到……想跳起来就跳起来的?" + + me "……啊?" + + lhy "那天在教室里。你跳起来打我的后背。动作很笨拙,角度也不对,落地的时候还踉跄了。" + lhy "但你还是跳了。" + + me "跳起来,需要理由吗?" + me "小卡难得说这么多话。而且他问这个的时候,语气不像在开玩笑。他在认真地问一个我从来没想过的问题......" + + tongxue "你们两个在屋顶搞什么?偷情啊?" + + show ryt dialogue embarrass pocket at right with dissolve + lhy "……" + me "……" + + lhy "走吧。该回去上课了。" + lhy "对了,比赛那天……我会准备好的。" + + $ flag["C4"] = 1 + $ flag["competition_note"] = True + $ lhy_stats["trust"] += 2 + $ tao_stats["humorSense"] += 1 + $ lhy_stats["empathy"] += 1 + + jump C2S2 + +label C2Side1S2: + show ryt dialogue normal at right with dissolve + me "怕什么,我可以一打三。" + + show lhy dialogue normal at left with dissolve + lhy "你的自信心从何而来我一直很好奇。但这确实有一定作用。" + me "行行行,你说得对。但我就是自信,天生的。" + #me "你妈死了刘泓予!" + + tongxue "你们两个在屋顶搞什么?偷情啊?" + + show ryt dialogue embarrass pocket2 at right with dissolve + lhy "……" + me "……" + + lhy "走吧。该回去上课了。" + lhy "对了,比赛那天……我会准备好的。" + + $ lhy_stats["trust"] += 1 + $ tao_stats["humorSense"] += 1 + $ lhy_stats["empathy"] += 1 + + jump C2S2 + +label C2Side1S3: + show ryt dialogue normal at right with dissolve + me "你负责战略,我负责送死,公平吧?" + + show lhy dialogue normal at left with dissolve + lhy "战术性牺牲确实是一种可行的策略。但我的意思是……算了。" + + tongxue "你们两个在屋顶搞什么?偷情啊?" + + show ryt dialogue embarrass pocket at right with dissolve + lhy "……" + me "……" + + lhy "走吧。该回去上课了。" + lhy "对了,比赛那天……我会准备好的。" + + $ tao_stats["humorSense"] += 1 + $ lhy_stats["empathy"] += 1 + + jump C2S2 diff --git a/game/Chapters/Chapter2/Chapter2.rpy b/game/Chapters/Chapter2/Chapter2.rpy new file mode 100644 index 0000000..271395c --- /dev/null +++ b/game/Chapters/Chapter2/Chapter2.rpy @@ -0,0 +1,439 @@ +# Chapter 2: 游戏内外 +define zhuchi = Character("主持人", color="#3c3fff", what_slow_cps=19, who_outlines=[(1, "#404040", 0, 0)]) +define yang = Character("杨义涵", color="#ff3c3c", what_slow_cps=19, who_outlines=[(1, "#404040", 0, 0)]) + +label Chapter2_Scene1: + $ game_day = 15 + $ game_period = "afternoon" + + scene bg classroom wide afterschool with fade + play music "audio/XinLanDiary-Part1.ogg" fadein 2.0 + system_ "【Day 15·下午·七班教室】" + + show ryt dialogue normal at right with dissolve + me "十一月的风从窗缝钻进来,带走了夏末最后的余热。我盯着手机屏幕上的推送——《四角州行动》校内赛,下周六。" + me "从重点班跌到现在,好像已经很久了。但在游戏里,段位还是那个段位。至少这个,还没跌。" + hide ryt with dissolve + + show xingyu at left with dissolve + xingyu "涛哥!看公告没?校内赛!电竞社这次玩真的,冠军有机械键盘和——重点班旁听一周体验券!" + hide xingyu with dissolve + + show ryt dialogue normal at right with dissolve + me "……最后那个,是什么鬼奖励。" + hide ryt with dissolve + + show lhy dialogue normal at left with dissolve + lhy "从概率学角度,我们组队胜率取决于三个变量:枪法、战术配合、以及对手里有几个挂。" + + show xingyu at right with dissolve + xingyu "小卡你也会玩?" + hide xingyu with dissolve + + show lhy dialogue normal at left + lhy "不怎么会。但我可以学。" + hide lhy with dissolve + + show ryt dialogue normal at right with dissolve + me "他这说话的表情,跟宣布今天要交数学作业时的一模一样。真是做啥事都认真。" + me "我要邀请他吗?" + + menu: + "邀请刘泓予": + $ lhy_stats["affection"] += 5 + $ flag["lhy_team"] = True + jump C2Side1 + "只找个游戏高手": + $ xingyu_stats["affection"] -= 5 + $ flag["lhy_team"] = False + jump C2S2 + "还没想好": + $ flag["C2S1_think"] = False + jump C2S2 + +label C2S2: + $ game_day = 18 + $ game_period = "after_school" + + scene bg computer lab with fade + play music "audio/XinLanDiary-Part1.ogg" fadein 2.0 + system_ "【Day 18·放学后·机房】" + + show ryt dialogue normal at right with dissolve + me "训练赛,对手是颜涵和杨天赐。一个音游龙👃,一个不知道是男娘还是男同的玩意儿。胜率计算器直接报错。" + hide ryt with dissolve + + show yh camerabag at left with dissolve + yh "任懿涛。" + yh "你是主突击位?" + hide yh with dissolve + + show ryt dialogue normal at right with dissolve + me "嗯,习惯了。" + hide ryt with dissolve + + show yh camerabag at left with dissolve + yh "那我针对你。" + hide yh with dissolve + + show ryt dialogue normal at right with dissolve + me "为啥?" + hide ryt with dissolve + + show yh camerabag at left with dissolve + yh "练习赛的意义就在于此。找到弱点。" + yh "除非……你怕我?" + # yh笑的立绘 + + show ryt dialogue normal at right with dissolve + me "他怎么又笑了!好瘆人……我好像更紧张了。" + me "不过我才不会怕他呢" + me "来啊。谁怕谁。" + hide ryt with dissolve + hide yh with dissolve + + stop music fadeout 1.0 + pause 1.0 + play music "audio/XinLanDiary-Part1.ogg" fadein 2.0 + + system_ "【练习赛结束·2:2平】" + + show yh camerabag at left with dissolve + yh "手速很快。但你的移动轨迹有pattern。每三次变向就有一次习惯性右偏。" + hide yh with dissolve + + show ryt dialogue normal at right with dissolve + me "……你连这个都记?" + hide ryt with dissolve + + show yh camerabag at left with dissolve + yh "习惯了。音游打多了,眼睛会自动追踪移动目标。" + yh "对了。" + yh "下周嘉年华筹备开始了。摄影社要做“莘澜面孔”影展。" + yh "你会出镜的。" + hide yh with dissolve + + show ryt dialogue normal at right with dissolve + me "……凭什么?" + hide ryt with dissolve + + show yh camerabag at left with dissolve + yh "因为我会拍你。" + yh "无论你同意与否。" + hide yh with dissolve + + show ryt dialogue normal at right with dissolve + me "他怎么刚说完就走。语气跟高一那回说”你今天发型更丑了“一模一样——不像威胁,倒是像通知。" + hide ryt with dissolve + + # —— 机房门口 —— + scene bg computer lab door with dissolve + pause 0.5 + + show xiaowei at right with dissolve + me "林晓薇?你怎么在这?" + + xiaowei "欸——是不是打扰到你们了?" + + me "林晓薇......她怎么会出现在机房门口?这栋楼离文科班教室隔了一个操场。" + + show xiaowei embarrass at right with dissolve + xiaowei "我、我是来还机房钥匙的!正好路过!" + me "她耳朵红了。高一我就发现了,她说谎的时候先红耳朵。" + + show xiaowei at right with dissolve + xiaowei "那、那个……比赛加油!我会去旁观的!" + me "旁观?" + xiaowei "啊不不是那个意思——就是——呃——友好支持!" + hide xiaowei with dissolve + + me "她转身就跑。背影消失在楼梯拐角。" + + pause 0.5 + me "手机响了。" + + scene bg classroom phone closeup with dissolve + system_ "【游戏内私聊】薇风拂晓:在吗?" + + me "又是她。每次都在我刚上线的时间出现。太巧了。" + + xiaowei_w "下周比赛,你会参加对吧?" + me_w "你怎么知道?" + xiaowei_w "……猜的。你游戏ID不是'逍遥剑客'吗,电竞社报名名单上有。" + me_w "你还看报名名单?" + xiaowei_w "随便看看!" + xiaowei_w "那……比赛见。" + me_w "等等,你到底哪个学校的?" + + system_ "【对方已离线】" + + me "又跑了。每次问到这个问题就消失。" + me "但奇怪的是……我好像并没有很想知道答案。就这么聊着,也挺好。" + + $ xiaowei_stats["affection"] += 3 + $ xiaowei_stats["interactionFrequency"] += 2 + $ yh_stats["affection"] += 2 + $ yh_stats["understanding"] += 2 + + if yutong_stats["affection"] >= 8 and yutong_stats["attention"] >= 12: # 仅为符合格式规范,此jump必定执行 + jump C2S3 + +label C2S3: + $ game_day = 20 + $ game_period = "afternoon" + + scene bg playground with fade + play music "audio/XinLanDiary-Part1.ogg" fadein 2.0 + system_ "【Day 20·下午·操场旁】" + + show ryt dialogue normal at right with dissolve + me "赛前最后一次训练。机房里设备嗡嗡响。" + me "诶?门口什么时候站着个人。" + hide ryt with dissolve + + show yutong at left with dissolve + yutong "学习部检查。" + yutong "学生会接到投诉,说电竞社训练影响晚自习秩序。" + + me "是苏雨桐。语气跟开会时一模一样。但她的眼睛在看我手机屏幕,不是看我。" + + me "我们只是利用课余时间——" + + yutong "《四角州行动》,是吗?" + + me "……你怎么知道游戏名?" + + yutong "资料调查。" + yutong "……" + yutong "手速确实很快。" + + me "她说这句话的时候,声音比刚才轻。然后推了推眼镜,像在掩饰什么。" + + yutong "但要小心重复性劳损。腕关节每天最好不要超过两万次点击。" + + me "……你在关心我?" + + yutong "这是学习部对参赛同学的健康提示。" + yutong "另外……" + yutong "重点班旁听体验券,是真的。" + yutong "如果你想的话。" + + me "她转身走了。跟高一一样,走路很快,从不回头看。" + me "但这句'如果你想的话'——她是在传达一个信息,还是在问一个问题?我分不清。" + + $ yutong_stats["affection"] += 2 + $ yutong_stats["attention"] += 2 + + jump C2S4 + +label C2S4: + $ game_day = 22 + $ game_period = "afternoon" + + scene bg auditorium with fade + play music "audio/XinLanDiary-Part2.ogg" fadein 2.0 + system_ "【Day 22·周六·报告厅·电竞社校内赛】" + + if flag.get("competition_note"): + show ryt dialogue normal at right with dissolve + me "人比想象的多多了!后排都站满了。陈星宇在调试设备,刘泓予戴着耳机,腿上摊着笔记本。他真的记了笔记。" + hide ryt with dissolve + else: + show ryt dialogue normal at right with dissolve + me "人比想象的多多了!后排都站满了。陈星宇在调试设备,颜涵拿着他的D850相机。" + hide ryt with dissolve + + show ryt dialogue normal at right with dissolve + me "而我在找一个人。'薇风拂晓'说'比赛见'。如果她真的是本校的——" + + zhuchi "下面请最后一支签到队伍,'七星文学部'——呃,七班的队伍!" + + show xingyu at left with dissolve + xingyu "走了涛哥!上场!" + hide xingyu with dissolve + hide ryt with dissolve + + pause 1.0 + system_ "【第一轮】胜" + pause 0.5 + system_ "【第二轮】胜" + pause 0.5 + system_ "【第三轮】平局" + + show ryt dialogue normal at right with dissolve + me "手酸。苏雨桐说的两万次点击,可能快到了。" + me "但更重要的是——观众席上,林晓薇正举着手机。目光对上的时候,她没有躲。她笑了,虎牙露出来。" + hide ryt with dissolve + + scene bg classroom phone closeup with dissolve + xiaowei_w "打得不错。" + me_w "你在现场?" + xiaowei_w "嗯。" + me_w "哪里?" + xiaowei_w "你猜。" + + scene bg auditorium with dissolve + show ryt dialogue normal at right with dissolve + me "我抬头扫了一圈。后排靠左,她戴着耳机,低头看手机。像是感应到什么,她忽然抬头——虎牙。" + me "高一的时候,每次我讲完笑话,她都是第一个笑的那个。" + hide ryt with dissolve + + $ xiaowei_stats["affection"] += 3 + $ xiaowei_stats["interactionFrequency"] += 2 + $ xiaowei_stats["is_xiaowei_w"] = True + + jump C2S5 + +label C2S5: + # ###### CG ###### + scene bg auditorium with dissolve + + zhuchi "那么,决赛即将开始——" + + yang "等一下!" + + show ryt dialogue normal at right with dissolve + me "不好,是杨义涵!" + hide ryt with dissolve + + yang "我有话要说!" + yang "我要和任懿涛——" + yang "生下一对冠军宝宝!!!" + + show ryt dialogue normal at right with dissolve + me "他张开双臂。全场爆笑。主持人手里的麦克风差点掉了。刘泓予——刘泓予低着头,肩膀在抖。" + me "连他都在笑。" + hide ryt with dissolve + + menu: + "……哈?": + # depseek认为:事后杨义涵会主动找任懿涛聊天,触发关于"为什么要做夸张的事"的对话 + # (任懿涛发现杨义涵也有类似"用夸张掩饰什么"的一面) + jump C2S5_end + "你先找好对象再说。": + $ yh_stats["affection"] += 1 + # ds说:杨义涵赛后会在群里发"任懿涛1:0我",两人关系定位变成"损友" + jump C2S5_end + "推开他继续比赛": + $ lhy_stats["affection"] += 1 + # 林晓薇在台下会小声说"好无情啊"然后偷笑 + jump C2S5_end + +label C2S5_end: + # ###### CG ###### + # 存疑台词: + # me "最终事件平息。比赛继续。但我鼻子里残留着韭菜盒子的味道,还有满场的笑声没散。" + # me "这就是我的高二——不是在被人拍,就是在被人抱。" + + system_ "【决赛结果·七星文学部 2:1 获胜】" + + $ tao_stats["humorSense"] += 2 + + jump C2S6 + +label C2S6: + $ game_period = "evening" + + scene bg schoolgate evening with fade + play music "audio/XinLanDiary-Part2.ogg" fadein 2.0 + system_ "【赛后·傍晚·校门口】" + + show ryt dialogue normal at right with dissolve + me "散场的时候,我故意走慢了一点。陈星宇说去庆祝,刘泓予说有事,也走了。" + me "我在等一个人。" + hide ryt with dissolve + + show xiaowei at left with dissolve + xiaowei "那个……" + + me "路灯下面,她的短发被风吹得有点乱。" + + me "你来了。" + + xiaowei "恭喜你。冠军。" + xiaowei "我说了会旁观的嘛。" + + show ryt dialogue normal at right with dissolve + me "我举起手机。屏幕上,是'薇风拂晓'的对话框。" + me "但我问的不是比赛。" + hide ryt with dissolve + + xiaowei "……" + xiaowei "我就知道瞒不过你。" + + hide xiaowei with dissolve + + menu: + "所以游戏里的配合,都是演的?": + $ xiaowei_stats["affection"] += 1 + show xiaowei at left with dissolve + xiaowei "不是演的!我真的觉得我们配合很好——啊不对,我不是那个意思——" + "怎么不早说?": + $ xiaowei_stats["affection"] += 2 + show xiaowei at left with dissolve + xiaowei "因为怕你觉得奇怪……高一之后就分班了,突然游戏里相认什么的……" + "……下次排位带带我?": + $ xiaowei_stats["affection"] += 3 + show xiaowei at left with dissolve + xiaowei "……欸?{cps=2}啊、好!{cps=20}不对,你段位比我高!" + + # 立绘:她低头绞着背包带子 + show xiaowei at left with dissolve + xiaowei "总之……对不起?瞒了你这么久。" + hide xiaowei with dissolve + + me "高一那个课间,她也是这样低头翻笔记,然后抬头说'你刚才那个笑话再讲一遍'。" + + me "没什么好道歉的。" + me "只是下次要说实话。" + me "在游戏里——如果有下次配合的话。" + + show xiaowei at left with dissolve + xiaowei "……欸?" # 懵,略微疑惑,少许惊喜 + xiaowei "一定!" # 笑 + hide xiaowei with dissolve + + me "她笑了。虎牙露出来。跟高一那个课间一样的笑。" + + $ xiaowei_stats["synergy"] += 3 + $ xiaowei_stats["interactionFrequency"] += 2 + + jump C2S7 + +label C2S7: + $ game_period = "night" + + scene bg ryt room night with fade + stop music fadeout 1.0 + play music "audio/XinLanDiary-Part2.ogg" fadein 2.0 + system_ "【同夜·家中】" + + show ryt dialogue normal at right with dissolve + me "躺在床上,盯着天花板。今天发生了太多事——冠军、拥抱、她身份的揭晓。" + me "手机亮了。" + hide ryt with dissolve + + yutong "《四角州行动》概率计算题,我出在了学习部的下周挑战里。如果你有兴趣的话。" + + me "她怎么有我的联系方式。" + me "不对,她是学习部部长,找谁的联系方式都行。但为什么专门发给我?" + me "概率计算题。用游戏出题。跟上次嘉年华数学摊位那个一样——她知道我会感兴趣。" + + system_ "【画廊更新】电竞时刻:手速与反应速度的实证研究。" + + me "果然。李泽瑄不会放过任何素材。" + me "但照片里——不止我一个人。陈星宇在画面边缘大笑,刘泓予低头记笔记,林晓薇在观众席举起手机。还有角落里,苏雨桐抱着笔记本,假装在看别的地方。" + me "原来被拍下来的时候,我一直不是一个人。" + me "窗外,十一月的夜空很干净。高一的时候我从没注意过这些。现在我开始观察。" + + $ yutong_stats["affection"] += 2 + $ yutong_stats["attention"] += 2 + $ lzx_stats["infoOpenness"] += 1 + $ tao_stats["selfAcceptance"] += 2 + + pause 1.0 + scene bg black with fade + pause 1.5 + system_ "【第二章·游戏内外·完】" + + return diff --git a/game/images/backup/bg auditorium_v1.png b/game/images/backup/bg auditorium_v1.png new file mode 100644 index 0000000..30834ad Binary files /dev/null and b/game/images/backup/bg auditorium_v1.png differ diff --git a/game/images/backup/bg auditorium_v2.png b/game/images/backup/bg auditorium_v2.png new file mode 100644 index 0000000..175fe19 Binary files /dev/null and b/game/images/backup/bg auditorium_v2.png differ diff --git a/game/images/backup/bg auditorium_v3.png b/game/images/backup/bg auditorium_v3.png new file mode 100644 index 0000000..17f56f2 Binary files /dev/null and b/game/images/backup/bg auditorium_v3.png differ diff --git a/game/images/backup/bg auditorium_v4.png b/game/images/backup/bg auditorium_v4.png new file mode 100644 index 0000000..f3f8987 Binary files /dev/null and b/game/images/backup/bg auditorium_v4.png differ diff --git a/game/images/backup/bg auditorium_v5.png b/game/images/backup/bg auditorium_v5.png new file mode 100644 index 0000000..b09cada Binary files /dev/null and b/game/images/backup/bg auditorium_v5.png differ diff --git a/game/images/backup/bg auditorium_v6.png b/game/images/backup/bg auditorium_v6.png new file mode 100644 index 0000000..a677cb6 Binary files /dev/null and b/game/images/backup/bg auditorium_v6.png differ diff --git a/game/images/bg auditorium.png b/game/images/bg auditorium.png new file mode 100644 index 0000000..b8e43ff Binary files /dev/null and b/game/images/bg auditorium.png differ diff --git a/game/images/bg classroom wide afterschool.png b/game/images/bg classroom wide afterschool.png index 3a510ae..4287d0c 100644 Binary files a/game/images/bg classroom wide afterschool.png and b/game/images/bg classroom wide afterschool.png differ diff --git a/game/images/bg rooftop.png b/game/images/bg rooftop.png new file mode 100644 index 0000000..df14e70 Binary files /dev/null and b/game/images/bg rooftop.png differ diff --git a/game/images/bg xiaowei room night.png b/game/images/bg xiaowei room night.png new file mode 100644 index 0000000..39ab66d Binary files /dev/null and b/game/images/bg xiaowei room night.png differ diff --git a/game/images/bg yutong room night.png b/game/images/bg yutong room night.png new file mode 100644 index 0000000..d6d9e9b Binary files /dev/null and b/game/images/bg yutong room night.png differ diff --git a/game/images/xiaowei embarrass.png b/game/images/xiaowei embarrass.png new file mode 100644 index 0000000..5e2f333 Binary files /dev/null and b/game/images/xiaowei embarrass.png differ diff --git a/game/images/xiaowei.png b/game/images/xiaowei.png new file mode 100644 index 0000000..cdf3950 Binary files /dev/null and b/game/images/xiaowei.png differ diff --git a/game/images/xiaowei.png.bak.v1 b/game/images/xiaowei.png.bak.v1 new file mode 100644 index 0000000..6811186 Binary files /dev/null and b/game/images/xiaowei.png.bak.v1 differ diff --git a/game/script.rpy b/game/script.rpy index 848a792..92e5696 100755 --- a/game/script.rpy +++ b/game/script.rpy @@ -1,4 +1,4 @@ -# 游戏的脚本可置于此文件中。 +# 游戏的脚本可置于此文件中。 # 声明此游戏使用的角色。颜色参数可使角色姓名着色。 define me = Character("任懿涛", color="#71b4e4", what_slow_cps=19, who_outlines=[(1, "#565656", 0, 0)]) @@ -62,9 +62,9 @@ default yh_stats = { # 徐卫浩宇 - 指数0-100 default xwhy_stats = { - "affection": 0, # 好感度 - "reliance": 0, # 依赖度 - "helpfulness": 0 # 帮助度 + "affection": 0, # 好感度 + "reliance": 0, # 依赖度 + "helpfulness": 0 # 帮助度 } # lzx - 指数0-10 @@ -72,6 +72,10 @@ default lzx_stats = { "infoOpenness": 0, # 信息开放度 } +# ====== 其他全局变量 ====== +default flag = { +} + # ====== 时间系统变量 ====== default game_day = 1 # 游戏内日期(第几天) default game_period = "morning" diff --git a/game/xiaowei.png b/game/xiaowei.png new file mode 100644 index 0000000..8aef2cf Binary files /dev/null and b/game/xiaowei.png differ diff --git a/review/Chapter1-review.md b/review/Chapter1-review.md new file mode 100644 index 0000000..d39a901 --- /dev/null +++ b/review/Chapter1-review.md @@ -0,0 +1,131 @@ +# Chapter1.rpy 审阅报告 + +## 文件信息 +- 文件路径: `game/Chapters/Chapter1.rpy` +- 行数: 429 +- 包含场景: Chapter1_Scene1 ~ Chapter1_Scene4 +- 跳转终点: Chapter2_Scene1(位于 Chapter2.rpy) + +--- + +## 语法错误 + +**无严重语法错误**。Ren'Py 基本语法正常,`scene`/`show`/`hide`/`jump` 语句格式正确,`$` Python 赋值语句语法正常。 + +--- + +## 角色定义检查 + +| 角色 | 定义位置 | 使用情况 | 状态 | +|------|----------|----------|------| +| `me` | script.rpy:4 | 正常 | ✓ | +| `system_` | script.rpy:11 | 正常 | ✓ | +| `xingyu` | script.rpy:5 | 正常 | ✓ | +| `lhy` | script.rpy:6 | 正常 | ✓ | +| `lzx` | script.rpy:7 | 仅旁白引用,未使用 Character 发言 | ✓ | +| `tongxue` | script.rpy:16 | 正常 | ✓ | +| `yutong` | script.rpy:13 | 正常 | ✓ | +| `ganshi` | script.rpy:17 | 正常 | ✓ | +| `xiaowei` | script.rpy:9 | 正常 | ✓ | +| `xiaowei_w` | script.rpy:10 | 正常 | ✓ | +| `me_w` | script.rpy:15 | 正常 | ✓ | +| `mom` | script.rpy:12 | 正常 | ✓ | +| `yh` | script.rpy:14 | 正常 | ✓ | +| `"便利店主"` | 行343(字符串字面量) | ⚠️ 见下方说明 | ✓ | + +### 关于"便利店主"角色(行 343) + +```renpy +"便利店主" "小任,新品。尝尝,你们年轻人喜欢这个。" +``` + +此角色未在 script.rpy 中定义为 Character 对象,使用了内联字符串作为说话人。Ren'Py **允许**此写法,会自动生成临时角色。但建议统一在 script.rpy 中定义,便于管理颜色、语速等属性。 + +--- + +## 图像引用检查 + +所有 `show` 命令引用的图像均在 `game/images/` 目录中找到对应文件: + +| 引用 | 文件 | +|------|------| +| `aunt normal` | `aunt normal.png` ✓ | +| `xingyu thinking/laughing/laughing big/laughing 2` | 对应 png 均存在 ✓ | +| `ryt dialogue normal/hit/embarrass pocket/embarrass pocket2/normal spec` | 对应 png 均存在 ✓ | +| `lhy dialogue normal` | `lhy dialogue normal.png` ✓ | +| `yh camerabag` | `yh camerabag.png` ✓ | +| `xiaowei` / `xiaowei embarrass` | 对应 png 均存在 ✓ | + +所有背景图像文件均存在 ✓ + +--- + +## Flag 和变量检查 + +### 统计变量修改 + +| 变量 | 修改位置 | 累计修改值 | +|------|----------|-----------| +| `lhy_stats["affection"]` | 行85, 153, 323 | +3, +5, +3 = **+11** | +| `lhy_stats["trust"]` | 行86, 154 | +2, +5 = **+7** | +| `lhy_stats["empathy"]` | 行155 | **+3** | +| `xingyu_stats["affection"]` | 行87, 320 | +3, +5 = **+8** | +| `xingyu_stats["cooperation"]` | 行88, 321 | +2, +5 = **+7** | +| `xingyu_stats["helpfulness"]` | 行322 | **+3** | +| `tao_stats["humorSense"]` | 行89 | **+2** | +| `tao_stats["selfAcceptance"]` | 行156, 326, 380 | +1, +2, +1 = **+4** | +| `tao_stats["studyStress"]` | 行157, 381 | +2, +1 = **+3** | +| `lzx_stats["infoOpenness"]` | 行90 | **+1** | +| `yutong_stats["affection"]` | 行193, 378, 397 | +3, +2, +3 = **+8** | +| `yutong_stats["attention"]` | 行194, 379, 398 | +5, +3, +4 = **+12** | +| `yutong_stats["h_academicSupport"]` | 行195 | **+1** | +| `xiaowei_stats["affection"]` | 行233, 412 | +4, +3 = **+7** | +| `xiaowei_stats["interactionFrequency"]` | 行234, 413 | +2, +3 = **+5** | +| `xiaowei_stats["is_xiaowei_w"]` | 行235 | 设为 False | +| `yh_stats["affection"]` | 行324 | **+3** | +| `yh_stats["understanding"]` | 行325 | **+2** | + +所有修改的 stat key 均在 script.rpy 中定义 ✓ + +### 其他变量 + +- `gallery_photo4_unlocked = True` (行73): 定义在 script.rpy:90 ✓ +- `game_day` / `game_period`: 正常赋值 ✓ + +--- + +## 逻辑错误 + +### ⚠️ 1. `hide ryt` 冗余调用(行 128) + +```renpy +# 行125: #show ryt hit at center with dissolve ← 已被注释 +# 行126: scene bg playground with dissolve ← scene 清空所有图像 +# 行127: me "深吸一口气..." ← me 无 sprite 也能说话 +# 行128: hide ryt with dissolve ← ryt 已不存在,无操作 +``` + +`show ryt` 已被注释,且 `scene` 语句已清空场景,`hide ryt` 为无效操作。不会导致运行时错误,但可删除。 + +### ⚠️ 2. `$ xiaowei_stats["is_xiaowei_w"] = False` 冗余(行 235) + +`is_xiaowei_w` 默认值已为 `False`(script.rpy:46),此处重新赋值无实际效果。虽不致命,但如果意图是"在特定剧情点重置该 flag",应确认逻辑正确性。 + +--- + +## 奇怪/不当的对话 + +### 无明显问题 +Chapter1 的对话整体符合角色设定,叙事流畅,不存在明显不当内容。 + +### 小建议 +- 行58: `me "你们先打,下次我一定来 {cps=3} {cps=20}——前提是我妈能接受她儿子在篮球场上挥洒青春而不是在车里背单词。"` 中 `{cps=3}` 后跟空格再 `{cps=20}`,在空格处会以 cps=20 显示,即瞬间且无声停顿后正常语速。符合预期停顿效果。 + +--- + +## 清理建议 + +1. 删除无效注释行(如行61 的 `#stop music fadeout 1.0`、行125 的 `#show ryt hit...` 等) +2. 删除元数据注释(行71, 78, 165, 177, 182, 218, 243 中的 `.lzx` 标注属于作者审阅标记,不应留在正式脚本中) +3. 将 `"便利店主"` 统一定义为 Character 对象 +4. 删除行128 的冗余 `hide ryt` diff --git a/review/Chapter2-Side-review.md b/review/Chapter2-Side-review.md new file mode 100644 index 0000000..ecf1cb9 --- /dev/null +++ b/review/Chapter2-Side-review.md @@ -0,0 +1,110 @@ +# Chapter2-Side.rpy 审阅报告 + +## 文件信息 +- 文件路径: `game/Chapters/Chapter2/Chapter2-Side.rpy` +- 行数: 126 +- 包含场景: C2Side1, C2Side1S1, C2Side1S2, C2Side1S3 +- 入口: 仅从 Chapter2_Scene1 菜单"邀请刘泓予"跳入 + +--- + +## 语法错误 + +**无语法错误**。 + +--- + +## 角色定义检查 + +| 角色 | 定义位置 | 使用情况 | 状态 | +|------|----------|----------|------| +| `me` | script.rpy:4 | 正常 | ✓ | +| `lhy` | script.rpy:6 | 正常 | ✓ | +| `tongxue` | script.rpy:16 | 正常 | ✓ | + +--- + +## 图像引用检查 + +- `bg rooftop`: `bg rooftop.png` 存在(untracked)✓ +- `lhy dialogue normal`: 存在 ✓ +- `ryt dialogue normal` / `ryt dialogue embarrass pocket` / `ryt dialogue embarrass pocket2`: 存在 ✓ + +--- + +## Flag 和变量检查 + +| 变量/Flag | 设置位置 | 值 | 读取位置 | +|-----------|----------|-----|----------| +| `flag["C4"]` | 行75 | 1 | **未读取** | +| `flag["competition_note"]` | 行75 | True | Chapter2.rpy:237 | +| `lhy_stats["trust"]` | 行77, 100 | +2 / +1 | — | +| `lhy_stats["empathy"]` | 行79, 101, 123 | +1 each | — | +| `tao_stats["humorSense"]` | 行78, 101, 122 | +1 each | — | +| `lhy_stats["affection"]` | 行38, 41, 44 | +3/+2/+1 (按选择) | — | + +### 未使用的 Flag +`flag["C4"]` (行75): 在 C2Side1S1 分支中设为 1,但代码库中未读取。推测为第4章的预留 flag,建议加注释说明。 + +--- + +## 逻辑错误 + +### 🔴 严重: `return` 导致游戏直接结束 (行 6-7) + +```renpy +label C2Side1: + if lhy_stats["affection"] < 11: + return +``` + +**问题**: 进入 C2Side1 的方式是通过 `jump C2Side1`(Chapter2.rpy:45),没有 `call` 调用栈。当 `return` 被执行时,Ren'Py 会**返回主菜单**,而非继续游戏。 + +**触发条件**: `lhy_stats["affection"] < 11`。实际上 Chapter1 结束时 lhy affection = 11(3+5+3),加上 Chapter2_Scene1 选择"邀请刘泓予"后 +5 = 16,所以当前数据下该条件永远为 False。但: +- 若有其他路径进入 C2Side1 且 affection 不足,游戏会异常退出 +- 代码意图是"好感度不够时跳过支线" + +**修复**: +```renpy +if lhy_stats["affection"] < 11: + jump C2S2 +``` + +--- + +## 奇怪/不当的对话 + +### 🔴 严重: 行89 — 极度不当的辱骂 + +```renpy +me "你妈死了刘泓予!" +``` + +这是 C2Side1S2(选择"怕什么,我可以一打三")分支中的主角台词。上下文: + +``` +lhy "你的自信心从何而来我一直很好奇。但这确实有一定作用。" +me "你妈死了刘泓予!" ← 突兀的辱骂 +``` + +**问题严重**: +1. 与前后文**完全脱节**——刘泓予刚说完一句中性偏正面的话,主角毫无理由地突然辱骂 +2. 与主角**人设严重冲突**——任懿涛是使用幽默应对压力的高中生,不是毫无理由口出恶言的人 +3. 在校园题材视觉小说中加入此类粗口极为不协调 + +**建议**: 立刻替换为符合角色性格的台词。例如: +```renpy +me "你说话怎么跟我妈似的..." +``` +或: +```renpy +me "行行行,你说得对。但我就是自信,天生的。" +``` + +--- + +## 清理建议 + +1. **立即修改行89的辱骂台词**(最高优先级) +2. 修复行7的 `return` → `jump C2S2` +3. 为 `flag["C4"]` 添加用途注释 diff --git a/review/Chapter2-review.md b/review/Chapter2-review.md new file mode 100644 index 0000000..750cba6 --- /dev/null +++ b/review/Chapter2-review.md @@ -0,0 +1,160 @@ +# Chapter2.rpy 审阅报告 + +## 文件信息 +- 文件路径: `game/Chapters/Chapter2/Chapter2.rpy` +- 行数: 440 +- 包含场景: Chapter2_Scene1, C2S2 ~ C2S7 + C2S5_end +- 新增角色定义: `zhuchi` (主持人), `yang` (杨义涵) + +--- + +## 语法错误 + +**无语法错误**。`menu` 语句、条件跳转、`if`/`else` 结构基本正确(详见下方逻辑错误部分)。 + +--- + +## 角色定义检查 + +| 角色 | 定义位置 | 使用情况 | 状态 | +|------|----------|----------|------| +| `me` | script.rpy:4 | 正常 | ✓ | +| `system_` | script.rpy:11 | 正常 | ✓ | +| `xingyu` | script.rpy:5 | 正常 | ✓ | +| `lhy` | script.rpy:6 | 正常 | ✓ | +| `yh` | script.rpy:14 | 正常 | ✓ | +| `xiaowei` | script.rpy:9 | 正常 | ✓ | +| `xiaowei_w` | script.rpy:10 | 正常 | ✓ | +| `me_w` | script.rpy:15 | 正常 | ✓ | +| `yutong` | script.rpy:13 | 正常 | ✓ | +| `zhuchi` | Chapter2.rpy:2 | 正常 | ✓ | +| `yang` | Chapter2.rpy:3 | 正常 | ✓ | +| `tongxue` | script.rpy:16 | 未在 Chapter2 使用 | — | + +### yutong 角色使用 +`yutong` 在 C2S3 (行194) 中被 `show` 显示为 sprite,但 `game/images/` 中**不存在 `yutong.png`**,游戏运行到此时会报错。详见下方"缺失资源"。 + +--- + +## 图像引用检查 + +### 🔴 缺失的图像文件 + +| 引用位置 | 图像名 | 文件 | 状态 | +|----------|--------|------|------| +| 行58 | `bg computer lab` | — | **缺失!** | +| 行130 | `bg computer lab door` | — | **缺失!** | +| 行194 | `yutong` (sprite) | — | **缺失!** | +| 行337 | `bg schoolgate evening` | — | **缺失!** | +| 行406 | `bg ryt room night` | — | **缺失!** | + +### 已存在但未跟踪的资源 +| 引用 | 文件 | Git 状态 | +|------|------|-----------| +| `bg auditorium` (行233) | `bg auditorium.png` | untracked | +| `bg rooftop` | `bg rooftop.png` | untracked | +| `bg xiaowei room night` | `bg xiaowei room night.png` | untracked | + +--- + +## Flag 和变量检查 + +### Flag 字典 + +| Flag | 设置位置 | 读取位置 | 状态 | +|------|----------|----------|------| +| `flag["lhy_team"]` | 行44 (True) / 行48 (False) | 未读取 | ⚠️ 只写未读 | +| `flag["C2S1_think"]` | 行51 (False) | 未读取 | ⚠️ 只写未读 | +| `flag["competition_note"]` | C2Side1.rpy:75 (True) | 行237 `.get(...)` | ✓ | + +### 统计变量修改 + +| 变量 | 修改位置 | 值 | +|------|----------|-----| +| `lhy_stats["affection"]` | 行43, 318 | +5, +1 | +| `xingyu_stats["affection"]` | 行47 | -5 (惩罚分支) | +| `yh_stats["affection"]` | 行175, 314 | +2, +1 | +| `yh_stats["understanding"]` | 行176 | +2 | +| `xiaowei_stats["affection"]` | 行173, 281, 367-378 | 根据选择 +1~3 | +| `xiaowei_stats["interactionFrequency"]` | 行174, 282, 398 | +2 × 2 | +| `xiaowei_stats["synergy"]` | 行397 | +3 | +| `xiaowei_stats["is_xiaowei_w"]` | 行283 | True | +| `yutong_stats["affection"]` | 行224, 429 | +2 × 2 | +| `yutong_stats["attention"]` | 行225, 430 | +2 × 2 | +| `tao_stats["humorSense"]` | 行330 | +2 | +| `tao_stats["selfAcceptance"]` | 行432 | +2 | +| `lzx_stats["infoOpenness"]` | 行431 | +1 | + +所有 key 均在 script.rpy 中定义 ✓ + +--- + +## 逻辑错误 + +### 🔴 严重: C2S3 条件跳转无效 (行 178-181) + +```renpy +if yutong_stats["affection"] >= 8 and yutong_stats["attention"] >= 12: + jump C2S3 + +label C2S3: +``` + +**问题**: `if` 语句没有 `else` 分支。条件为 False 时,代码将"掉入"下一行——而下一行正好是 `label C2S3:`。意味着 **无论条件真假,C2S3 都会执行**,条件形同虚设。 + +实际上,Chapter1 结束时 `yutong_stats["affection"]` = 8, `attention` = 12(恰好等于阈值),所以当前数据下条件始终为 True。但: +1. 如果后续修改 Chapter1 的数值,bug 就会暴露 +2. 代码意图显然是"条件满足才进入 C2S3" + +**修复**: 添加 else 跳转: +```renpy +if yutong_stats["affection"] >= 8 and yutong_stats["attention"] >= 12: + jump C2S3 +else: + jump C2S4 +``` + +### ⚠️ 2. `flag["lhy_team"]` 和 `flag["C2S1_think"]` 只写未读 + +- `flag["lhy_team"]` 在行44/48 被设置,但整个代码库中从未读取。如果未来章节需要使用,建议添加注释说明用途。 +- `flag["C2S1_think"]` 同样只设置未使用。 + +--- + +## 奇怪/不当的对话 + +### 🔴 行63: 不当用词 + +```renpy +me "训练赛,对手是颜涵和杨天赐。一个音游龙👃,一个不知道是男娘还是男同的玩意儿。" +``` + +- emoji `👃` 在 Ren'Py 中可能无法正确渲染 +- "男娘"和"男同"属于对同学不尊重的称呼,与主角"用幽默掩饰不自信"的人设不完全吻合。建议修改为更符合高中生日常表达的方式。 + +### ⚠️ 行301: 疑似错别字 + +```renpy +yang "我要和仁懿涛——" +``` + +"任懿涛"写成了"仁懿涛"。若是刻意设计(体现角色口误),建议加注释;否则应修正。 + +### ⚠️ 行326: 注释中的存疑台词 + +```renpy +# me "最终事件平息。比赛继续。但我鼻子里残留着韭菜盒子的味道,还有满场的笑声没散。" +``` + +这段被注释掉了。如果决定不用,建议直接删除而非保留注释。 + +--- + +## 清理建议 + +1. **补充 5 个缺失的图像文件**(见上方清单) +2. 修复 C2S3 条件跳转逻辑(行178-181) +3. 修改行63的不当用词 +4. 确认行301的"仁懿涛"是否为刻意 +5. 删除行325-326的注释代码 +6. 为只写未读的 flag 添加注释说明用途,或标记为 `# TODO: 第X章使用` diff --git a/review/SUMMARY.md b/review/SUMMARY.md new file mode 100644 index 0000000..8f1ec56 --- /dev/null +++ b/review/SUMMARY.md @@ -0,0 +1,59 @@ +# 审阅总览 + +> 审阅日期: 2026-04-26 | 项目版本: dev0.0.8.5 + +## 审阅范围 + +| 文件 | 行数 | 场景数 | 报告 | +|------|------|--------|------| +| `game/Chapters/Chapter1.rpy` | 429 | 4 (Scene1~4) | [Chapter1-review.md](Chapter1-review.md) | +| `game/Chapters/Chapter2/Chapter2.rpy` | 440 | 7 (Scene1, C2S2~S7) | [Chapter2-review.md](Chapter2-review.md) | +| `game/Chapters/Chapter2/Chapter2-Side.rpy` | 126 | 4 (C2Side1, S1~S3) | [Chapter2-Side-review.md](Chapter2-Side-review.md) | + +--- + +## 问题汇总(按严重程度排序) + +### 🔴 严重 — 必须修复 + +| # | 文件 | 位置 | 问题 | +|---|------|------|------| +| 1 | Chapter2-Side.rpy | 行89 | **极度不当台词**:`me "你妈死了刘泓予!"` — 突兀辱骂,与角色人设完全不符 | +| 2 | Chapter2-Side.rpy | 行7 | **`return` 导致游戏退出**:好感不足时应 `jump C2S2` 而非 `return` | +| 3 | Chapter2.rpy | 行178-181 | **C2S3 条件跳转无效**:缺少 `else`,条件形同虚设 | +| 4 | Chapter2.rpy | — | **5 个图像文件缺失**:`bg computer lab`, `bg computer lab door`, `yutong` (sprite), `bg schoolgate evening`, `bg ryt room night` | + +### ⚠️ 警告 — 建议修复 + +| # | 文件 | 位置 | 问题 | +|---|------|------|------| +| 5 | Chapter2.rpy | 行63 | 不当用词("男娘"/"男同" 称呼同学) | +| 6 | Chapter2.rpy | 行301 | "仁懿涛"疑为"任懿涛"错别字 | +| 7 | Chapter2.rpy | 行44,48,51 | `flag["lhy_team"]` / `flag["C2S1_think"]` 只写未读 | +| 8 | Chapter2-Side.rpy | 行75 | `flag["C4"]` 只写未读 | +| 9 | Chapter1.rpy | 行128 | `hide ryt` 无效操作(scene 已清空,show 已被注释) | +| 10 | Chapter1.rpy | 行235 | `is_xiaowei_w = False` 冗余(默认已是 False) | + +### 💡 建议 — 清理优化 + +| # | 文件 | 位置 | 问题 | +|---|------|------|------| +| 11 | Chapter1.rpy | 多处 | 删除元数据注释(`.lzx` 标注、注释掉的废弃代码) | +| 12 | Chapter1.rpy | 行343 | `"便利店主"` 建议定义为 Character 对象 | +| 13 | Chapter2.rpy | 行325-326 | 删除废弃的注释代码 | + +--- + +## 各角色 stats 定义完整性 + +全部通过。所有在 Chapters 中使用的 stat key 均在 `script.rpy` 中正确定义,无拼写错误。 + +## 跳转目标完整性 + +| 跳转 | 目标标签 | 所在文件 | 状态 | +|------|----------|----------|------| +| `jump Chapter1_Scene2/3/4` | 同文件 | Chapter1.rpy | ✓ | +| `jump Chapter2_Scene1` | Chapter2_Scene1 | Chapter2.rpy:5 | ✓ | +| `jump C2Side1` | C2Side1 | Chapter2-Side.rpy:4 | ✓ | +| `jump C2S2~S7` | 同文件 | Chapter2.rpy | ✓ | +| `jump C2Side1S1/S2/S3` | 同文件 | Chapter2-Side.rpy | ✓ |