抱歉,今晚大概仍无法改什么,但可以打些东西。
首先,每一个战争都是一个房间档,都会 inherit 特定的档案,
并有自己的 void create 宣告,也会仿照任务脚本的形式做一些
宣告,本身也会有 times_check 函数。
宣告的变量会是 mapping 的型式,主 keys 尽量比照任务脚本,
战争基本上仍会是 step by step。
从 stepA→stepB 有以下几种型式
1.固定秒数后跳到下一步
2.固定秒数后判断是否满足跳到下一步的条件,否的话循环判断,
3.固定秒数后若发现仍没有满足跳到下一步的条件就做某事
a.跳到其它步骤
b.中止战争
c.从头开始
上面三个可简化为两种呼叫
1.固定秒数[n1]秒之后呼叫特定判断用函数[f1]
2.固定秒数[n2]秒之后呼叫特定判断用函数[f2]
也就是说每一个步骤都要设定 2~3 种秒数,n1 是第一次呼叫 f1
的秒数,n2 是呼叫 f2 的秒数,还有 n3 是循环呼叫 f1 的秒数
假设某步骤,设定者只设定 n1,那就会简单判断为 n1 秒后跳到
下一步。
战争中最怕遇到 reset,因此用 times_check 来跑仍是不得不的
选择,这时 n1~n3 时间都不能设定太短,至少 30 秒是比较好的
做法;每一 step 至多有两条 times_check 在跑,至少一条,会
有个判断机制,当下一步骤顺利呼叫时,就会清除上一步骤的所有
呼叫。
循环判断是比较棘手的部份,例如说执行到某一步骤时,已经陆续
召唤出了三群魔兵,每一群都包含一只魔将,然后该步骤的循环判
断是“三只魔将是否全部阵亡”或是“三只魔将是否已死一只”甚
至是“符合条件的玩家们是否已抵达特定地点”...
这种东西要怎么写?
因为有千奇百怪的判断,所以这部份一定是自订,但理论上也应该
提供方便的判断做法。
再来是战争的结算,当初也有卡在这个地方。
首先,为避免不必要的问题,玩家打死战争怪的当下就会得到报酬
,另外也会有个参数储存,它会在战争结束的当下秀出哪些玩家得
到了什么报酬的总画面。前者玩家一定会拿到,后者则不一定会正
常显示(但是不影响已拿到的报酬)。
这是因为我尽可能不想 save_object 战争物件的缘故。
最后,是战争的地点,以及宣告的方式。宣告会采取跟星海战争类
似的做法,玩家可得知要怎么前往,以及初期要在哪里待命,这时
地点的选择就能够多元化(例如菲里德监狱暴动事件)。
当房间存在战争怪时,我也会让 reborn system 尽可能不要去重置
这些房间,这时有个应该要遵守的前提,就是这些房间原本就不应
该有 mob。
设定稿大致是这样。
怪物的部份,不难,任何怪物都能叫过来当战争怪,这部份仿照副
本的设定即可,在怪物的名字前面会有 [战争] 字样。
Laechan