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

89 lines
3.1 KiB
GDScript

extends NpcScript
#
func OnStart():
var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal)
match globalScript.startStep:
TicTacToeGlobal.State.NONE:
if steps.is_empty():
match randi_range(0, 2):
0: Mes("要玩井字棋吗?棋盘是我自己画的!")
1:
Mes("我画不出圆圆的圈,所以我用小方块代替。安迪总笑我,但方块也可以很厉害。")
Mes("要玩井字棋吗?")
2:
Mes("前几天我看到一伙海盗和守卫玩井字棋。守卫输了,但他们说那叫战略撤退。")
Mes("你也要玩吗?")
else:
Mes("要玩井字棋吗?")
Choice("和你玩", StartPvE)
Choice("找别人玩", StartPvP)
Choice("怎么玩?", ShowRules)
Choice("晚点再玩", Decline)
TicTacToeGlobal.State.X:
if globalScript.playerX != own:
Mes("嘿,已经有人在等对手了!你可以去挑战他们!")
Choice("我来和他们玩!", StartPvP)
Choice("怎么玩?", ShowRules)
Choice("晚点再玩", Decline)
else:
Mes("还没人来。你要继续等吗?")
Choice("再等一会儿", WaitPvP)
Choice("怎么玩?", ShowRules)
Choice("我得走了", CancelPvP)
TicTacToeGlobal.State.O:
var isPlaying : bool = globalScript.playerX == own or globalScript.playerO == own
if isPlaying:
Mes("嘿,不许偷看提示!快回去下你的棋!")
else:
Mes("嘘,他们正在下棋!你可以看,但不能乱指。")
Choice("好啦好啦", OnQuit)
Choice("怎么玩?", ShowRules)
if isPlaying:
Choice("我得走了", CancelPvP)
func ShowRules():
Mes("你选一个格子,放上自己的记号,然后换另一个人。")
Mes("横着、竖着、斜着,只要三个连成一条线就赢。")
Mes("如果九个格子都填满还没人连成线,就是平局。平局也不错,只是没有胜利时那么好跳起来。")
OnStart()
func Decline():
Chat("好吧,改变主意就来找我,棋盘不会跑掉。")
# Player vs 角色
func StartPvE():
var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal)
if globalScript.startStep == TicTacToeGlobal.State.NONE and globalScript.StartPvE(own):
DisplayActions(["gp_target", "gp_untarget"])
Mes("你执叉号!选一个格子,快快快!")
else:
Mes("等一下,已经有人在玩了!要排队。")
# Player vs Player
func StartPvP():
var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal)
match globalScript.StartPvP(own):
TicTacToeGlobal.State.X:
Mes("现在等另一个人来挑战你。")
return
TicTacToeGlobal.State.O:
DisplayActions(["gp_target", "gp_untarget"])
Mes("太好了,你们都到齐了!好好玩!")
return
TicTacToeGlobal.State.NONE:
Mes("不行不行,棋盘现在被占用了!")
func WaitPvP():
if (npc.ownScript as TicTacToeGlobal).playerX == own:
Chat("一定很快就有人来,大概吧!")
func CancelPvP():
var globalScript : TicTacToeGlobal = (npc.ownScript as TicTacToeGlobal)
if globalScript.playerX == own:
globalScript.LeaveQueue(own)
Chat("啊,这么快就不等了?好吧。")
func OnQuit():
Chat("嘘,别打扰他们下棋。")