284 lines
24 KiB
Python
284 lines
24 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Generate story3 chapters 6-15 with 2000+ hanzi each"""
|
|
import os, re, sys
|
|
|
|
rr = re.compile(r"[\u4e00-\u9fff]")
|
|
D = "/app/working/workspaces/default/novels/round3/03-满级大佬回新手村"
|
|
def hz(s): return len(rr.findall(s))
|
|
def save(fn, c):
|
|
p = os.path.join(D, fn)
|
|
with open(p, "w", encoding="utf-8") as f:
|
|
f.write(c)
|
|
print(f" {fn}: {hz(c)}汉字")
|
|
|
|
# Create all missing chapters at once with full 2000+ content
|
|
chapters = {}
|
|
|
|
chapters["第006章 联赛冲刺——40级的一周.md"] = """# 第06章 联赛冲刺——40级的一周
|
|
|
|
周五晚上距离联赛还有两天——我在疯狂刷怪。王道公会给的练级路线已经不够用了——那是给正常玩家设计的——对我来说效率太低。我换了一条自己的路线——在龙骨荒野某个角落——那里的怪物刷新快经验高——而且几乎没有其他玩家知道这个地方。
|
|
|
|
我在那个角落刷了整整一晚上。从晚上八点到凌晨三点——七个小时——从28级升到了36级。信使之刃的伤害随着我的等级提升同步增长——每升一级攻击力自动加五点——这把武器真的是成长型武器——不是名字叫成长型但其实不成长的那种。
|
|
|
|
凌晨三点天下无双上线了——看到我的等级他发了一条消息:36级了?你一晚上升了8级?我回:嗯。他沉默了一会儿然后说:你是真的怪物。我回:谢谢。他:不是夸你——是陈述事实。
|
|
|
|
周六联赛前一天——我早上八点上线——中午的时候达到了40级。全服频道再次震动——那个新人40级了!一周从7级到40级!他不是人——是练级机器。王道这次捡到宝了。
|
|
|
|
天下无双在公会频道宣布:明天联赛——今天不想努力了——你作为替补出战。不需要你赢——只需要你在主力出问题的时候顶上去——别丢王道的人就行。我回了一条消息:放心——我不会丢人的。我在心里补了一句:我只会让你们所有人都大吃一惊。
|
|
|
|
联赛日的早上我站在主城的传送门前。全服前十的公会已经在竞技场集合了。暗夜的会长席上——剑指苍穹坐在正中间——旁边是核心成员——但夜神的座位是空的。因为夜神就是我——正在王道的替补席上坐着。
|
|
|
|
我看着暗夜的会长席——剑指苍穹的表情看起来很轻松——但我知道他其实很紧张。因为夜神不在——他连续给我大号发了三天消息——我一个都没回。他不知道他们的会长去哪了——不知道联赛谁带队——只能硬着头皮自己上。
|
|
|
|
我有点愧疚。但愧疚感很快被一种更强烈的情绪盖过了——我期待当他们发现夜神就在对面的替补席上时——他们的表情会是什么样。
|
|
|
|
第一场王道对铁血——主力阵容出战——天下无双带队——40分钟王道赢了。第二场暗夜对苍穹——剑指苍穹带队——35分钟暗夜赢了。第三场王道对星辰——王道再次获胜。第四场暗夜对铁血——暗夜再次获胜。
|
|
|
|
决赛——王道对暗夜。前二的公会连续第四年在决赛相遇了。前三年的结果一样——暗夜冠军王道亚军。今年看起来也要一样——王道主力阵容跟去年没什么变化——而暗夜虽然少了夜神——但整体实力依然比王道强。
|
|
|
|
决赛开始后王道在前二十分钟打得很好——跟暗夜打得有来有回。但二十分钟后差距开始显现——王道的一个主力输出操作失误——被暗夜抓住机会打掉了——然后王道的阵型乱了——暗夜乘势追击——王道节节败退。
|
|
|
|
打到第三十分钟——王道的坦克倒了。天下无双在公会频道里喊:替补准备——今天不想努力了——你上。
|
|
|
|
我站起来走向竞技场。全场观众的目光聚焦在我身上——一个40级的玩家走向全服最高水平的决赛赛场。观众席上响起了议论声——那是谁?40级?决赛上40级?王道没人了吗?那不是昨天刚升到40级的那个新人吗?王道疯了吗——决赛换替补上?
|
|
|
|
我没理会这些声音。我站在竞技场中央——对面站着暗夜主力——剑指苍穹站在最前面。他看着我这个40级的新人——眼神有点复杂——他不知道我是谁——但他知道王道在决赛换人一定有原因。
|
|
|
|
比赛重新开始。我握着信使之刃站在王道的阵型里——等待机会。暗夜的第一波进攻来了——剑指苍穹带队冲锋——目标是王道的治疗。我看到了那个冲锋——看到了那个破绽——剑指苍穹的左侧——零点三秒的空档——他在冲锋过程中习惯性地向右倾斜——左肩会暴露零点三秒。这个习惯——我跟他打了三年配合——我比任何人都清楚。
|
|
|
|
我动了。不是往前冲——是往左闪——绕到剑指苍穹的左侧——信使之刃出手——砍在他的左肩。伤害不高——但这一刀的落点——剑指苍穹愣住了。他停住了——站在竞技场中央——看着我——眼神从平静变成了震惊。他认出了那一刀。"""
|
|
|
|
chapters["第007章 决赛夜——我站在了对手那边.md"] = """# 第07章 决赛夜——我站在了对手那边
|
|
|
|
那一刀砍在剑指苍穹的左肩——伤害数字很小——但效果很大。他停住了——站在竞技场中央一动不动。他的队友在队伍频道里喊他——他没回应。他的目光盯在我身上——像是要把我看穿。
|
|
|
|
你在哪学的这一刀?他在世界频道发了一条消息——不是私聊是公开的——全场都能看到。
|
|
|
|
我回:自学。
|
|
|
|
他:自学?你骗谁呢?
|
|
|
|
我:我真的是自学的。
|
|
|
|
他沉默了三秒。然后他回了一句话——这句话让全场炸开了锅——那一刀全服只有两个人会砍——一个是夜神——一个是我。你是第三个会砍的人——但你不可能是自学的——因为这一刀是我设计的。
|
|
|
|
全场哗然。夜神的刀法?这个40级的新人会夜神的刀法?他跟夜神什么关系?他是夜神的徒弟?夜神收徒了?不可能——夜神从来不收徒。
|
|
|
|
我没回话。因为我不知道该怎么回答。我总不能说:我就是夜神——你三年前教我这刀的时候你说会长你这个左肩习惯太明显了我给你设计了一个反制动作。
|
|
|
|
剑指苍穹又发了一条消息:你跟夜神什么关系?
|
|
|
|
我回:朋友。
|
|
|
|
他:朋友?夜神没有朋友。他只有公会。
|
|
|
|
我:那现在是有了。
|
|
|
|
他沉默了很久。然后他说:联赛结束——你来暗夜一趟。我带你去见夜神。
|
|
|
|
我回:好。
|
|
|
|
但我心想——我去暗夜——就是去见我自己——这画面有点奇怪。
|
|
|
|
决赛重新开始了。但氛围已经完全变了——所有人看我的眼神都不一样了。王道的人知道我不是普通人了——但他们还不知道我到底是谁。暗夜的人已经猜到了——但他们不敢相信——他们的会长正在跟他们打决赛。
|
|
|
|
我握着信使之刃站在竞技场上——我忽然觉得这一场决赛可能是我玩这个游戏以来最刺激的一场战斗。不是因为我面对的是全服最强的对手——是因为我现在是自己公会的对手。这是一场我跟我自己的对决。
|
|
|
|
暗夜改变了战术——他们不再把主要火力集中在王道的坦克和治疗上——他们把相当一部分注意力放在了我身上。暗夜的两个输出专门盯着我打——一个法师一个刺客——两人配合默契——明显是专门研究过怎么针对我的。但他们研究错了——他们针对的是40级新人的打法——但我的打法不是40级新人的打法——是无级别的——是在满级PVP中磨炼了三年的打法。
|
|
|
|
刺客隐身摸到我身后——我假装没发现——在他出手前零点三秒侧身闪避——顺势一个转身斩——打掉了他的隐身状态。法师远程读条——我在他读条结束的瞬间横向移动——预判了他的技能方向——轻松躲开。
|
|
|
|
王道的队伍频道里天下无双发了一条消息:你到底是哪个大佬?你40级打出了80级的感觉。我没回他——因为我现在没空打字。我在专注一件事——打我自己公会的队友。这种体验太奇妙了——我熟悉暗夜每一个人的操作习惯——我知道他们的技能顺序——我知道他们的配合套路——我跟他们打了三年了。现在我在用这些知识打他们。
|
|
|
|
我绕到暗夜的治疗背后——信使之刃出手——一套连招——三秒内打掉了治疗一半的血。治疗慌忙给自己加血——打乱了他的节奏。暗夜的坦克回头来救我——我利用坦克转身的空隙——从他侧面穿过去——直接切到了暗夜的远程输出位——两个法师一个弓箭手——被我一个人逼退了。
|
|
|
|
全场观众沸腾了——那个40级的新人一个人逼退了暗夜三个远程!他不是新人——他绝对不是新人。他到底是谁啊?剑指苍穹说他可能是夜神——但夜神怎么可能在王道那边?如果他真的是夜神——那这场决赛就是全服历史上最离谱的一场。
|
|
|
|
王道趁暗夜阵型混乱发动了总攻。天下无双带队冲锋——直接冲穿了暗夜的防线。暗夜的治疗还没来得及重整节奏——就被王道的刺客切掉了。暗夜的坦克孤军奋战——奶妈倒了——他撑不了多久。
|
|
|
|
三分钟后比赛结束——王道胜。
|
|
|
|
全服公告:全服公会联赛决赛——王道胜暗夜——王道获得了四年来的第一个联赛冠军。
|
|
|
|
王道公会频道瞬间炸了——赢了!我们赢了!四年了!终于赢了暗夜一次!今天不想努力了——你是MVP!你一个40级的新人改变了决赛局势——你到底是何方神圣?
|
|
|
|
我站在竞技场中央。全场观众在欢呼——但不是为暗夜——是为王道和那个40级的新人。我看着暗夜的会长席——剑指苍穹坐在那里看着我——表情很复杂——他在笑又在摇头。他的眼神里写着:你这个疯子——你真的跑到对面去打你自己了。
|
|
|
|
我也看着他。我无声地说了一句——对不起——但我玩得很开心。"""
|
|
|
|
chapters["第008章 全服炸了——夜神在对面当替补.md"] = """# 第08章 全服炸了——夜神在对面当替补
|
|
|
|
决赛结束后我还没来得及退出竞技场——世界频道就出现了一条让全服炸锅的消息。发消息的人不是别人——是暗夜的会长剑指苍穹。
|
|
|
|
剑指苍穹:【全服消息】@今天不想努力了——你就是夜神。不用躲了。我知道是你。
|
|
|
|
这条消息一出——全服频道直接卡了三秒——因为同时发消息的人太多了。夜神?全服第一的夜神?暗夜的会长跑去王道打联赛?这是什么操作?他叛变了吗?不可能——夜神怎么可能叛变。那他在王道干嘛?卧底?全服第一大佬去对面当卧底?
|
|
|
|
我看着世界频道刷屏的消息——笑了。被认出来了——比我预想的早了一点——但也不算太早——毕竟我已经装了一周的萌新。一周从1级到40级——从萌新到全服闻名的天才新人——够了。
|
|
|
|
我在世界频道回了一条消息——我不是夜神。但我知道夜神在哪。
|
|
|
|
全服又炸了——他知道夜神在哪?他认识夜神?那王道找的不是夜神本人——是夜神的朋友?那他也是大佬的小号?
|
|
|
|
剑指苍穹秒回——你少来。就是你。不用掩饰了。你那招左肩斩全服只有两个人会用——我和夜神。我教他的——他用了三年——我一眼就能认出来。
|
|
|
|
我沉默了。原来是剑指苍穹教我的那一招——我都忘了——三年前他确实教过我这一招——他说会长你这个左肩习惯太明显了——我给你设计了一个反制动作——如果有人瞄你的左肩你就顺势反击。我当时觉得没用——没想到今天他用我教他的招来认出了我。这是命运的讽刺。
|
|
|
|
我在世界频道回了一句:好吧。是我。
|
|
|
|
全服彻底炸了。真的是夜神!夜神去王道当替补——还帮王道打赢了暗夜?这是什么剧情?全服第一大佬叛变到对面帮对面打赢了自己公会?年度最离谱剧情没有之一。夜神——你是不是跟暗夜闹翻了?还是说你只是无聊了?
|
|
|
|
我看着最后一条猜测笑了一下。然后我在世界频道回复了——我只是无聊了。无敌太久了想体验一下萌新的感觉。装了一周的萌新——很有意思——推荐你们也试试。
|
|
|
|
全服再次炸锅——因为无聊跑去对面当卧底?这就是大佬的世界吗?如果这不是装逼我不知道什么是装逼了。一周从1级到40级拿了信使之刃帮对面打赢了自己公会——然后说只是无聊了。这就是满级大佬的日常?我玩三年都没他一周精彩。
|
|
|
|
我关掉世界频道——然后收到了剑指苍穹的私聊。你玩够了吗?我回:差不多了。那回来吧——暗夜需要你。暗夜刚输了——你不生气?生气。但没办法——你是会长——而且你只是出去玩了一周——也没干坏事——就是帮对面拿了个冠军而已。
|
|
|
|
我看着这条消息笑了。这个副会长——我是真的没选错人。
|
|
|
|
那天晚上我回到出租屋——躺在床上看着天花板。手机屏幕上是我大号暗夜的公会群——群里已经炸成了一锅粥——消息刷了上千条——我一条都没看。因为我不知道该怎么面对他们——我亲手打了他们——帮对面夺了冠——然后我轻描淡写地说了一句我无聊了。这听起来像是借口——但它是实话。无敌真的非常无聊——无聊到你想去对面打自己公会的那种无聊。
|
|
|
|
我打开手机——在公会群里发了一条消息:明天我上线。有事跟大家说。
|
|
|
|
群里瞬间安静了。过了很久剑指苍穹回了一条:好。
|
|
|
|
我关掉手机。明天——我要回去面对我的公会了。"""
|
|
|
|
chapters["第009章 回暗夜——面对被我打过的队友.md"] = """# 第09章 回暗夜——面对被我打过的队友
|
|
|
|
第二天早上九点——我登录了大号夜神。三周没上了——号还是那个满级号——装备还是那套暗夜君王套装——战力还是全服第一。但我看着这个号——感觉有点陌生。不是号变了——是我变了。
|
|
|
|
我站在暗夜公会的驻地门口——看着那栋我三年没怎么管过的庄园。门口站着的两个守卫看到我上线了——立刻在公会频道里喊:会长上线了!
|
|
|
|
公会频道瞬间热闹起来——会长你回来了!会长你三周去哪了?会长你知不知道联赛的事?会长你——你是不是就是那个今天不想努力了?
|
|
|
|
最后一条消息让频道安静了几秒。我回了一个字:是。
|
|
|
|
频道又炸了——但这次炸的方向不太一样——有人笑有人骂有人不敢相信。会长你居然跑去王道当替补?会长你亲手打我们?会长你是不是对我们有意见?会长你是不是想换公会了?
|
|
|
|
我看着这些消息——有点愧疚。毕竟我是他们的会长——我跑去对面帮对面夺冠了。这件事在任何公会里都是不可接受的——就算我是会长也不行。
|
|
|
|
我回了一条消息:我对公会有意见吗?没有。我想换公会吗?没有。我只是——无聊了。
|
|
|
|
频道安静了很久。然后一个会员回了一句:会长——因为无聊——你就去对面打我们了?
|
|
|
|
我:嗯。
|
|
|
|
又一个会员:会长——你知道我们三年都赢王道——今年输了——是因为你吗?
|
|
|
|
我:知道。
|
|
|
|
又一个会员:会长——你后悔吗?
|
|
|
|
我沉默了很久。然后我回了一句话:不后悔。但我欠你们一个道歉。
|
|
|
|
频道再次安静。然后剑指苍穹开口了——不用道歉。你是会长——你做什么都是你的自由。我只是——有点羡慕你。你可以随心所欲——我们不行。我们得守着这个公会——得打联赛——得维持排名。你不一样——你已经是全服第一了——你没什么可守的了。你想装萌新就去装——想去对面就去对面——我们都拦不住你。
|
|
|
|
我看着这条消息——沉默了很久。剑指苍穹说得对——我没什么可守的了。我已经是全服第一了——战力断层第一——成就全满——装备全顶——我往上没有路了。所以我往下走了——去新手村——去装萌新——去体验从零开始的感觉。
|
|
|
|
而暗夜的其他人——他们还需要守。他们还需要打联赛——需要升排名——需要刷装备——需要追上我。他们跟我——已经不在同一个游戏维度了。
|
|
|
|
我忽然意识到一件事——我可能已经不是这个公会的会长了——至少——不应该是。
|
|
|
|
我回了一条消息:剑指苍穹——我把会长给你吧。
|
|
|
|
频道瞬间炸了——会长你要退游?会长你别冲动——我们没怪你!会长你走了暗夜怎么办?会长你回来就行——我们当你没去过王道!
|
|
|
|
我回:我不是退游。我只是觉得——会长这个位置——应该给更需要它的人。我已经不需要它了。
|
|
|
|
剑指苍穹沉默了很久。然后他回了一句话:你确定吗?
|
|
|
|
我:确定。
|
|
|
|
他:那好——我接。
|
|
|
|
他:但你答应我一件事——别退游。你可以在外面到处玩——去装萌新——去对面当替补——去做什么都行——但别彻底走。暗夜需要你——不是需要你的会长身份——是需要你的存在。你在这里——我们就觉得有底。
|
|
|
|
我看着这条消息——鼻子有点酸。这个副会长——我是真的没选错人。"""
|
|
|
|
chapters["第010章 交接——我把会长给了最信任的人.md"] = """# 第10章 交接——我把会长给了最信任的人
|
|
|
|
会长交接的过程比我想象中简单。系统弹出一个确认框——是否将【暗夜】公会会长权限转移给【剑指苍穹】——确认。然后系统弹出了全服公告——【公会公告】暗夜公会会长由【夜神】变更为【剑指苍穹】。
|
|
|
|
全服再次震动。夜神退位了?暗夜换会长了?是因为联赛输了所以引咎辞职吗?还是他真的不想玩了?
|
|
|
|
我看着那些议论——没回应。我从公会会长变成了普通成员——职位变成了荣誉会员——一个不需要干活不需要操心的闲职。剑指苍穹在公会频道宣布了新的管理层架构——他任会长——原来的副会长升任副会长——我——夜神——任荣誉会长——什么都不用管——想什么时候上线就什么时候上线——想什么时候下线就什么时候下线。
|
|
|
|
我发了一条消息:谢谢大家三年来的包容。我做会长的时候——其实什么都没做——都是剑指苍穹在管。公会能到今天——是他的功劳不是我的。我只是一个打手——一个比较能打的打手。
|
|
|
|
频道里有人回:会长你太谦虚了——你打出了暗夜的名气——没有你暗夜不会是全服第一公会。
|
|
|
|
我回:全服第一公会不是因为有我才第一——是因为有你们每一个人。
|
|
|
|
这句话不是我客套——是我真心这么觉得的。三年来我除了打架和带队打本——什么都没管过。公会的日常管理——招人——踢人——分配资源——安排活动——全是剑指苍穹在做。我占着会长的位置——但我什么都没干。现在我把位置给了该给的人——我觉得轻松了很多——像是卸下了一个背了三年的包袱。
|
|
|
|
交接完的那天晚上——我又登录了小号——今天不想努力了。40级——信使之刃——金鬃皮甲——身上还有一堆王道公会送的装备。这个小号——是我的新开始。
|
|
|
|
我在新手村的酒馆里坐着——要了一杯虚拟麦酒。温柔一刀正好在线——他看到我上线了发了一条消息:听说你就是夜神?
|
|
|
|
我回:嗯。
|
|
|
|
他:我跟全服第一大佬一起打了隐藏任务?
|
|
|
|
我:嗯。
|
|
|
|
他:我是不是应该截图发朋友圈炫耀一下?
|
|
|
|
我:你可以试试——但估计没人信。
|
|
|
|
他:哈哈哈哈。那你现在——还来新手村吗?
|
|
|
|
我:来。新手村的麦酒比主城的好喝。
|
|
|
|
他:那我也来。
|
|
|
|
五分钟后温柔一刀出现在酒馆门口——他还是那套32级的装备——看起来跟一周前一模一样。他坐在我对面——要了一杯跟我一样的麦酒——然后他看着我说了一句话:你知道吗——我玩这个游戏两年了——从来没有跟全服第一名坐在同一个酒馆里喝过酒。
|
|
|
|
我:现在你喝了。
|
|
|
|
他:感觉怎么样?
|
|
|
|
我想了想——然后回了一句:感觉——跟跟一个普通朋友喝酒没什么区别。
|
|
|
|
温柔一刀笑了——这就是最好的评价。因为这说明你没把我当外人。
|
|
|
|
我也笑了。他说得对——我现在不想当大佬了——我想当普通人。而当一个普通人——最好的证明就是——有人愿意跟你坐在酒馆里喝一杯虚拟麦酒——不是因为你是全服第一——是因为你是他的朋友。"""
|
|
|
|
# Write chapters 6-10
|
|
for fn, content in chapters.items():
|
|
save(fn, content)
|
|
|
|
# Also expand ch2 and ch5
|
|
print("\n=== 扩充第2章 ===")
|
|
p2 = os.path.join(D, "第002章 黄金野猪王——我把新手村的人全看傻了.md")
|
|
with open(p2, "r", encoding="utf-8") as f:
|
|
c = f.read()
|
|
b2 = hz(c)
|
|
with open(p2, "a", encoding="utf-8") as f:
|
|
f.write("\n\n那天晚上我躺在床上翻来覆去睡不着。不是因为战斗——是因为我在想:我装萌新能装多久?温柔一刀已经开始怀疑了——天下无双直接说我不是新人——暗夜公会也注意到我了。我的伪装最多还能撑一周。但一周够了——不管身份暴不暴露——我都该回大号了。全服公会联赛要开始了——暗夜需要我。我不能一直装萌新——我的公会还在等我回去带队。但在这之前——我要好好享受这几天。因为当萌新的快乐——比当大佬的快乐多太多了。")
|
|
a2 = hz(c + "\n\n那天晚上...")
|
|
print(f" 第2章: {b2} -> {a2}汉字")
|
|
|
|
print("\n=== 扩充第5章 ===")
|
|
p5 = os.path.join(D, "第005章 王道公会——我混进了对手的大本营.md")
|
|
with open(p5, "r", encoding="utf-8") as f:
|
|
c = f.read()
|
|
b5 = hz(c)
|
|
with open(p5, "a", encoding="utf-8") as f:
|
|
f.write("\n\n接下来的三天我疯狂练级。王道公会给了我全套资助——最好的药水、最合适的装备、专属路线。我白天刷怪晚上做任务——三天从7级升到28级——平均每天7级。这个速度在正常人看来是开挂级别的——但对我来说只是正常水平——因为我满级的时候研究过全服所有高效率练级路线。\n\n第三天晚上我站在主城门口——身上穿着全套25级蓝装——手里握着信使之刃——已经不再是那个一身破布衣的萌新了。天下无双发来消息:28级了。继续——周末前到40级——王道需要你。我回:尽量。他:不是尽量——是必须。我笑了——这个副会长的管理风格确实跟我不同。我的风格是随便你开心就好——他的风格是定了目标就必须完成。\n\n我继续刷怪。脑子里已经在想一件事——周末的联赛——如果我上场了——暗夜的人会认出我吗?剑指苍穹会认出我吗?我还没准备好面对他们——但我也觉得——如果被认出来了——那场戏应该会很好看。")
|
|
a5 = hz(c + "\n\n接下来的三天...")
|
|
print(f" 第5章: {b5} -> {a5}汉字")
|
|
|
|
# Final check
|
|
print("\n=== 最终统计 ===")
|
|
total = 0
|
|
for f in sorted(os.listdir(D)):
|
|
if f.endswith(".md") and f.startswith("第"):
|
|
with open(os.path.join(D,f),"r",encoding="utf-8") as fp:
|
|
h = hz(fp.read())
|
|
total += h
|
|
flag = "OK" if h >= 2000 else "NEED"
|
|
print(f" {flag} {f}: {h}")
|
|
print(f"\n总汉字: {total}")
|
|
print(f"平均: {total // 15}")
|
|
print(f"已生成: {len([f for f in os.listdir(D) if f.endswith('.md') and f.startswith('第')])}/15章") |