Files
Loke/assets/scripts/tonori/tulimshar/Ekinu.gd
T
2026-06-03 17:04:06 +08:00

138 lines
6.2 KiB
GDScript

extends NpcScript
#
func OnStart():
var questState : int = GetQuest(ProgressCommons.Quest.TUTORIAL)
if questState < ProgressCommons.TUTORIAL.ELANORE_DONE:
OnSendToKaelForRecovery()
elif questState < ProgressCommons.TUTORIAL.KAEL_DONE:
OnSendToKael()
elif questState < ProgressCommons.TUTORIAL.EKINU_DONE:
OnKaelReport()
else:
OnComplete()
#
func OnSendToKaelForRecovery():
Mes("你已经醒了?")
LookAtNpc("Kael")
Mes("先去找凯尔。他负责确认你能不能上路,也会给你说明为什么必须选择一只初始宠物。")
ResetCamera()
func OnSendToKael():
Mes("你看见那些沙虫了吗?")
Mes("恶心,但不能忽视。听老人说,它们以前没这么大,也没这么多。")
Mes("仙人掌农户受影响最大。沙虫啃坏作物,仙人掌怪又被 卡奥雷 侵蚀,再拖下去城里的药材和食物都会出问题。")
LookAtNpc("Kael")
Mes("看守凯尔在东边的仙人掌田附近。")
ResetCamera()
Mes("如果你想证明自己不是巡逻队捡回来的麻烦,就去帮他清理田地。")
# Kael's report
func OnKaelReport():
Mes("凯尔那边处理完了?")
Choice("处理完了。凯尔说我能帮你们的远征。", OnExpedition)
func OnExpedition():
Mes("嗯,他判断得没错。")
Mes("我们确实还缺一个能应付突发战斗的人。城墙不能抽走太多守卫,你这种外来帮手反而合适。")
Mes("你要往南走,去沙漠风暴矿洞。名字不是吓唬人的,那片谷地风向混乱,沙会把路和怪物一起藏起来。")
Choice("为什么要去那里?", OnWhyExpedition)
Choice("我具体要做什么?", OnJobExplanation)
func OnWhyExpedition():
Mes("那片矿洞以前盛产铁矿,整片区域又算红女王的私产,所以王宫一直惦记着它。")
Mes("后来沙暴加重,矿工不是被风吞掉,就是被矿道里的怪物袭击,矿洞才被迫废弃。")
Mes("现在王宫缺钱,女王又下令不惜代价重开矿洞。")
Mes("她当然不会亲自去确认下面有什么危险,受苦的永远是被派去干活的人。")
Choice("我具体要做什么?", OnJobExplanation)
func OnJobExplanation():
Mes("你的任务是侦察矿洞路线,确认旧矿道里有没有足以杀死矿工的大威胁。")
Mes("能避开的就记录,必须清理的就处理。别把每场战斗都当成证明自己的机会。")
if GetQuest(ProgressCommons.Quest.TUTORIAL) < ProgressCommons.TUTORIAL.EKINU_DONE:
var shortSwordID : int = DB.GetCellHash("Short Sword")
var desertGogglesID : int = DB.GetCellHash("Desert Goggles")
Mes("出城前不能让你空手去。")
Mes("拿着短剑和沙漠护目镜。风沙会抢走视线,怪物会抢走犹豫的时间。")
SetQuest(ProgressCommons.Quest.TUTORIAL, ProgressCommons.TUTORIAL.EKINU_DONE)
AddItem(shortSwordID)
AddItem(desertGogglesID)
AddExp(50)
Mes("这些足够让你自保,但不保证你能赢下所有战斗。")
Mes("遇到危险就跑。死在沙地里没有荣耀,只会让别人多挖一个坑。")
TeachSkill(DB.GetCellHash("Run"))
DisplayActions(["gp_run"])
Narrate("按住奔跑键可以冲刺,用来赶路或脱离危险。")
Narrate("冲刺会消耗耐力,别在真正需要逃命前把耐力耗空。")
Mes("差不多准备好了。")
LookAtNpc("Gilgames")
Mes("不过出城前先找吉尔伽美什说几句。他守着城门,见过太多新人把简单错误变成遗言。")
ResetCamera()
Mes("其他守卫已经先出发了。到城外找看守道森,他会告诉你矿洞入口怎么走。")
if GetQuest(ProgressCommons.Quest.MINE_EXPLORATION) < ProgressCommons.MINE_EXPLORATION.STARTED:
SetQuest(ProgressCommons.Quest.MINE_EXPLORATION, ProgressCommons.MINE_EXPLORATION.STARTED)
OnMainChoice()
# Main choice loop
func OnMainChoice():
if GetQuest(ProgressCommons.Quest.MINE_EXPLORATION) == ProgressCommons.MINE_EXPLORATION.STARTED:
Choice("再说一遍我的任务。", OnJobExplanation)
Choice("红女王是什么样的人?", OnRedQueen)
Choice("遇到危险怎么办?", OnStrangerDanger)
Choice("明白了,我出发。", Farewell)
# Attack and flee
func OnStrangerDanger():
Mes("能先手就先手,不能赢就撤。")
Mes("你的宠物不是用来替你送死的,受伤太重就换路线、补给、或者直接回城。")
DisplayActions(["gp_target"])
DisplayActions(["gp_interact"])
DisplayActions(["gp_run"])
Narrate("按住奔跑键可以冲刺,也可以在危险时拉开距离。")
Narrate("冲刺会消耗耐力,需要时再用。")
OnMainChoice()
# 红女王 chain
func OnRedQueen():
Mes("红女王,正式点叫卡罗琳娜一世,是这座城名义上的统治者。")
Mes("她还自称 托诺里 女王,好像城墙外的沙子也会听她命令。")
Mes("她说自己继承了古代 白金王朝 的血统。实际情况是,她父亲原本只是个非常聪明的仙人掌农户。")
Choice("听起来你很讨厌她。", OnDislikeQueen)
Choice("她父亲是农户?", OnRedQueenFather)
func OnRedQueenFather():
Mes("是。他让临终的老国王相信自己是私生子。")
Mes("老国王没有别的孩子,又确实喜欢他,就把继承权给了他。公平地说,她父亲很聪明,也比现在的女王更懂治理。")
Mes("可他死后,女儿只剩下王冠和故事。没人真心喜欢她,所以她更需要血统传说来撑住面子。")
Choice("听起来你很讨厌她。", OnDislikeQueen)
func OnDislikeQueen():
Mes("讨厌这个词太轻了。")
Mes("她冷漠、自私,只关心王宫花园和自己的脸面。")
Mes("别到处说是我讲的。巡逻队不怕风沙,但没人想因为几句真话被王宫找麻烦。")
Mes("她关心那些花,胜过关心被派去矿洞送命的人。")
Choice("那我们最好先做正事。", OnMainChoice)
# Expedition started
func Farewell():
if randi() % 2:
Chat("保持警觉。")
else:
Chat("完整地回来。")
func OnComplete():
var questState : int = GetQuest(ProgressCommons.Quest.MINE_EXPLORATION)
if questState == ProgressCommons.MINE_EXPLORATION.STARTED:
Mes("准备出发时,去城外找看守道森。")
else:
Mes("你很幸运,在哥布林发现你之前先被我们捡到。看到你恢复得不错,我也放心些。")
OnMainChoice()