最终整理版
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
extends NpcScript
|
||||
|
||||
const PEYOTE_REQUIRED : int = 5
|
||||
const MAGGOT_REQUIRED : int = 5
|
||||
const FIELD_POSITION : Vector2 = Vector2(2912, 1312)
|
||||
|
||||
#
|
||||
func OnStart():
|
||||
var questState : int = GetQuest(ProgressCommons.Quest.TUTORIAL)
|
||||
if questState < ProgressCommons.TUTORIAL.ELANORE_DONE:
|
||||
OnInitialRecovery()
|
||||
elif questState == ProgressCommons.TUTORIAL.ELANORE_DONE:
|
||||
OnFirstMeeting()
|
||||
elif questState == ProgressCommons.TUTORIAL.KAEL_MET:
|
||||
OnCheckProgress()
|
||||
elif questState == ProgressCommons.TUTORIAL.KAEL_DONE:
|
||||
OnSendToEkinu()
|
||||
elif questState == ProgressCommons.TUTORIAL.EKINU_DONE:
|
||||
OnComplete()
|
||||
|
||||
# Opening recovery and starter choice
|
||||
func OnInitialRecovery():
|
||||
var waterBottleID : int = DB.GetCellHash("Water Bottle")
|
||||
var cactusSourCandyID : int = DB.GetCellHash("Cactus Sour Candy")
|
||||
|
||||
Mes("站稳。先让我看一下你的脸色。")
|
||||
Mes("巡逻队在城外沙地边缘发现你时,你已经脱水到说不出话。埃拉诺把你从最危险的状态里拉了回来,现在轮到我确认你还能不能上路。")
|
||||
Mes("抬手,握拳,深呼吸。很好。你还虚,但不是那种一阵风就能吹倒的虚。")
|
||||
Mes("先拿着水和仙人掌酸糖。图利姆沙欢迎活人,不欢迎逞强的人。")
|
||||
AddItem(waterBottleID)
|
||||
AddItem(cactusSourCandyID)
|
||||
OnOpeningBackstory()
|
||||
|
||||
func OnOpeningBackstory():
|
||||
Mes("你是被沙漠送到城门口的陌生人。身上没有能说明身份的东西,脚印却从风暴方向断断续续延过来。")
|
||||
Mes("最近 托诺里 不安稳。卡奥雷 的波动让野外宠物变得暴躁,东边还有一群把 卡奥雷 当信仰的疯子在袭击旅人。")
|
||||
Mes("所以我不会让你空手出城,也不会让你在城里闲逛到下一场麻烦砸过来。")
|
||||
OnStarterPetIntro()
|
||||
|
||||
func OnStarterPetIntro():
|
||||
Mes("先选一只初始宠物。不是装饰,也不是玩伴。它会替你挡住第一口毒牙,陪你学会怎么在这里活下去。")
|
||||
Mes("三只都经过巡逻队训练,性格和战斗方式不一样。")
|
||||
Mes("露莉娅属水,耐久和恢复节奏稳定,适合稳扎稳打。")
|
||||
Mes("啾啾鸟属风,动作快,适合先手和灵活周旋。")
|
||||
Mes("绒绒兽是普通系,脾气稳,招式直接,适合不想把战斗想得太复杂的人。")
|
||||
Mes("想清楚就选。没有绝对正确的答案,只有你愿意一起走下去的伙伴。")
|
||||
|
||||
# Initial encounter
|
||||
func OnFirstMeeting():
|
||||
Mes("选好伙伴了?好。能照顾宠物的人,至少比只会照顾自己的人可靠一点。")
|
||||
Mes("现在说正事。我这边正缺人手。")
|
||||
Mes("沙虫最近把仙人掌田啃得一塌糊涂。它们个头大,嘴却灵活,能绕开刺直接钻进茎里。")
|
||||
Mes("一旦钻进去,整株仙人掌就会从里面被吃空。农户看到那种景象,脸色比沙暴天还难看。")
|
||||
Choice("这些沙虫为什么这么大?", OnKaoreExplanation)
|
||||
Choice("听起来很麻烦。", OnWildFauna)
|
||||
Choice("我可以帮忙清理。", OnWildFauna)
|
||||
|
||||
func OnKaoreExplanation():
|
||||
Mes("据说它们很久以前没这么夸张。可那是 卡奥雷时代 之前的事,已经没人亲眼记得。")
|
||||
Mes("卡奥雷 让很多生物变得异常:有的变大,有的暴躁,有的像死了又没完全死。")
|
||||
Mes("沙虫算是我们每天都能看见的麻烦版本。更糟的东西通常藏在城外。")
|
||||
if GetQuest(ProgressCommons.Quest.TUTORIAL) >= ProgressCommons.TUTORIAL.KAEL_DONE:
|
||||
MainChoices()
|
||||
else:
|
||||
Mes("闲话到此为止。我要你进田里把麻烦清掉。")
|
||||
Choice("好,我开始。", OnFieldCleanUp)
|
||||
Choice("城外到底发生了什么?", OnDesertExplanation)
|
||||
|
||||
func OnWildFauna():
|
||||
Mes("不管原因是什么,它们都得被清理。")
|
||||
Mes("城外的 卡奥雷 波动已经影响到城内田地,沙虫不是唯一的问题。")
|
||||
Mes("有些仙人掌怪也被侵蚀了,会跳来跳去,往旁边作物上甩水,像在故意嘲笑农户。")
|
||||
Choice("我去清理它们。", OnFieldCleanUp)
|
||||
Choice("城外到底发生了什么?", OnDesertExplanation)
|
||||
|
||||
func OnDesertExplanation():
|
||||
Mes("卡奥雷 正在影响各种生物。")
|
||||
Mes("它会把活物扭成更糟的样子:更凶、更饿、更难控制。")
|
||||
Mes("被侵蚀得太深时,它们甚至会像死物一样行动。那不是普通疾病,是一种很难洗掉的诅咒。")
|
||||
if GetQuest(ProgressCommons.Quest.TUTORIAL) >= ProgressCommons.TUTORIAL.KAEL_DONE:
|
||||
MainChoices()
|
||||
else:
|
||||
Mes("西边塔里的 玛纳伊尔 法师已经发出警告:托诺里 多处 卡奥雷 正在异常聚集。")
|
||||
Choice("明白了,先处理田地。", OnFieldCleanUp)
|
||||
Choice("玛纳伊尔 是谁?", OnManayir)
|
||||
|
||||
func OnManayir():
|
||||
Mes("玛纳伊尔 是研究 玛纳 的古老组织,就在城西那座塔里。")
|
||||
Mes("他们会监测 玛纳 和 卡奥雷 的流向,像预报天气一样发布警告。")
|
||||
Mes("二十七年前,也是他们宣布 卡奥雷时代 结束。可结束不代表消失,只是没以前那么压得人喘不过气。")
|
||||
Choice("先处理田地。", OnFieldCleanUp)
|
||||
Choice("卡奥雷时代 是什么?", OnAgeOfKaore)
|
||||
|
||||
func OnAgeOfKaore():
|
||||
Mes("我没亲眼经历过,但父辈都记得。那几百年里,卡奥雷 比 玛纳 更常见,变异生物和不死怪物到处都是。")
|
||||
Mes("我们现在抱怨沙虫和仙人掌怪,其实已经比那时候幸运多了。")
|
||||
Choice("先处理眼前的麻烦。", OnFieldCleanUp)
|
||||
|
||||
# Task assignment
|
||||
func OnFieldCleanUp():
|
||||
OnFightTutorial()
|
||||
Mes("先从北边田里的仙人掌怪开始。")
|
||||
LookAtPosition(FIELD_POSITION)
|
||||
Mes("它们是被 卡奥雷 侵蚀的仙人掌,对人不算致命,但已经没法种植。")
|
||||
Mes("它们会乱跳、甩水、惊扰宠物,还会把旁边作物弄坏。")
|
||||
ResetCamera()
|
||||
Mes("清理 5 只仙人掌怪和 5 只沙虫,今天的田地就能暂时安全。")
|
||||
HighlightUI(UICommons.UITarget.PROGRESS)
|
||||
Narrate("任务进度会记录你正在进行的委托和战斗目标。")
|
||||
HighlightUI(UICommons.UITarget.NONE)
|
||||
Narrate("图鉴和任务界面会帮助你确认已击败或遇见的宠物与怪物。")
|
||||
SetQuest(ProgressCommons.Quest.TUTORIAL, ProgressCommons.TUTORIAL.KAEL_MET)
|
||||
|
||||
# Progress check
|
||||
func OnCheckProgress():
|
||||
var peyoteKills : int = GetBestiary("Peyote".hash())
|
||||
var maggotKills : int = GetBestiary("Maggot".hash())
|
||||
if peyoteKills >= PEYOTE_REQUIRED and maggotKills >= MAGGOT_REQUIRED:
|
||||
OnTaskComplete()
|
||||
elif peyoteKills < PEYOTE_REQUIRED:
|
||||
Mes("还没完成。田里还需要再清理 %d 只仙人掌怪。" % (PEYOTE_REQUIRED - peyoteKills))
|
||||
else:
|
||||
Mes("仙人掌怪处理得不错,但还差 %d 只沙虫。" % (MAGGOT_REQUIRED - maggotKills))
|
||||
|
||||
# Task completion
|
||||
func OnTaskComplete():
|
||||
Mes("干得漂亮。")
|
||||
Mes("你处理得比我预想的快,也比很多正式巡逻员稳。")
|
||||
Mes("去向看守艾基努汇报吧。告诉他,我认可你今天的表现。")
|
||||
Mes("我们很快要组织一支小队去沙漠侦察,你可能正适合帮忙。")
|
||||
SetQuest(ProgressCommons.Quest.TUTORIAL, ProgressCommons.TUTORIAL.KAEL_DONE)
|
||||
AddExp(50)
|
||||
|
||||
#
|
||||
func OnSendToEkinu():
|
||||
Mes("准备好后去找看守艾基努。")
|
||||
Mes("他会告诉你下一步怎么做。")
|
||||
MainChoices()
|
||||
|
||||
#
|
||||
func OnComplete():
|
||||
Mes("很高兴又见到你。你看,沙虫还是不肯给我放假。")
|
||||
MainChoices()
|
||||
|
||||
#
|
||||
func MainChoices():
|
||||
Choice("这些沙虫为什么这么异常?", OnKaoreExplanation)
|
||||
Choice("我该怎么战斗?", OnFightTutorial)
|
||||
Choice("城外到底发生了什么?", OnDesertExplanation)
|
||||
Choice("我先走了。", Farewell)
|
||||
|
||||
func Farewell():
|
||||
Chat("出城后别只看前面,背后也可能有东西靠近。")
|
||||
|
||||
func OnFightTutorial():
|
||||
Mes("这不是让你亲手去砍仙人掌怪。让你的宠物上。")
|
||||
Mes("靠近野外宠物会进入宠物对战。进入战斗后,用战斗指令释放技能,用宠物指令切换队伍成员。")
|
||||
Mes("把对手削弱后,可以用捕捉符尝试收服。别一上来就丢,满体力的野外宠物通常不会乖乖进符。")
|
||||
DisplayActions(["gp_interact", "gp_target"])
|
||||
Narrate("接触野外宠物会进入对战。战斗菜单中可以使用技能、捕捉符、切换宠物或逃跑。")
|
||||
Reference in New Issue
Block a user