Re: [閒聊] 戰役系統

作者: laechan (揮淚斬馬雲)   2019-10-15 19:39:04
抱歉,今晚大概仍無法改什麼,但可以打些東西。
首先,每一個戰爭都是一個房間檔,都會 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

Links booklink

Contact Us: admin [ a t ] ucptt.com