外服零散活動內容彙整
影任衝突內精靈的專卷問題
影任衝突內精靈的專卷問題
來源:官網
起因為8/12韓服公告其中一項修正,原文如下 :
* [충돌! 예기치 못한 교전] 그림자 미션에서 간헐적으로 '엘프의' 인챈트가 전용 인챈트 스크롤로 지급되던 문제가 수정됩니다.
* 修正偶爾會從影子任務[衝突!無法預期的交戰]獲得專用魔力賦予卷軸版本的「精靈的」。
正好出公告前幾天打衝突時,同場次不同寶箱出了1張專卷跟1張非專卷,皆為精靈的 (Elven)。
原以為是錯覺,但出公告後,仔細觀察影任衝突的程式碼後,便了解此BUG的大概發生原因。
請參考下方部分程式碼 :
if (_iRemain == 0) { // 確認沒有殘存怪物(?)。
dword PlayerCnt = _dungeon.GetPlayerCount(); // 計算清除BOSS後的人數。
int i;
//G13S1 이후 강화석, 강화 아이템 드랍 by eljjoo 2010-06-26
// 省略與此次BUG修正無關的變數。
int iEnchantId = 0; // 賦予ID
string iEnchantKind = `prefix`; // 賦予接頭
// 省略與此次BUG修正無關的變數。
int iEnchantRate = 0; // 賦予機率
int iRandom2; // 隨機數值
// 省略與此次BUG修正無關的變數。
if (IsFeatureEnable(`gfItemEnhance`)) //한국 G13S1 이후 아이템 강화 투입
{
switch (_dungeon.GetMissionLevel()) { // 判斷影任等級,並設定相對應機率。
case (0) {
// 省略與此次BUG修正無關的變數。
iEnchantRate = 0;
}
case (1) {
// 省略與此次BUG修正無關的變數。
}
case (2) {
// 省略與此次BUG修正無關的變數。
}
case (3) {
// 省略與此次BUG修正無關的變數。
}
case (4) {
// 省略與此次BUG修正無關的變數。
}
}
}
for (i = 0; i < PlayerCnt; i++) {
dungeon2chest _chest = _puzzle.AddChestWithAngle(`box` + ToString(i), true, 480, i * 40, i * 40 + 180, ``); // 設定寶箱位置。
// 省略與此次BUG修正無關的判斷。
//G13S1 이후 강화석, 강화 아이템 드랍 by eljjoo 2010-06-26
if (IsFeatureEnable(`gfItemEnhance`)) //한국 G13S1 이후 아이템 강화 투입
{
// 省略與此次BUG修正無關的判斷。
iRandom2 = Random(1000); // 隨機產生0~999。
if (iRandom2 < iEnchantRate && iEnchantId != 0) {
_chest.AddItem(`id:62059 ` + iEnchantKind + `:` + ToString(iEnchantId)); // 將專用魔力賦予卷軸放入寶箱。
}
}
//나도 기획자에서 당선된 '엘프의' 인챈트를 보상으로 투입(G14S5)
if (IsFeatureEnable(`gfDIYFestival`)) {
iEnchantId = 20927; // 精靈的 (Elven) 賦予
iEnchantKind = `prefix`; // 接頭
iRandom2 = Random(1000);
switch (_dungeon.GetMissionLevel()) {
case (0) { iEnchantRate = 0; } // 初級 0%
case (1) { iEnchantRate = 0; } // 中級 0%
case (2) { iEnchantRate = 5; } // 高級 0.5%
case (3) { iEnchantRate = 10; } // 最高級 1%
case (4) { iEnchantRate = 30; } // 菁英 3%
}
if (iRandom2 < iEnchantRate && iEnchantId != 0) {
_chest.AddItem(`id:62005 ` + iEnchantKind + `:` + ToString(iEnchantId)); // 將魔力賦予卷軸放入寶箱。
}
}
// 省略與此次BUG修正無關的判斷。
}
_dungeon.Complete();
}
說明
研究這些程式碼有個前提 : 絕大多數都是十幾年以上,許多人經手的陳年(?)程式碼。
後來接手者通常是在後面新增,或是直接複製貼上前人版本,所以裏頭邏輯互相矛盾是正常現象。
建議以DeBUG心態去研究,相信自己的邏輯,對於釐清真相會更有幫助。
從註解與程式碼可以判斷出59~76行的「寶箱新增精靈的 (Elven) 賦予」是後來添加,原本衝突影任並無設定賦予卷軸與相對應機率。
以4人菁英衝突來說明流程,產生第一箱時,是依照當初新增賦予人的想法,不會出專捲(因iEnchantId和iEnchantRate都是0所以不會執行第55行),而有3%機率開出精靈的魔力賦予卷軸。
但第二到第四箱,因為變數iEnchantId與iEnchantRate皆被修改,不再為0,所以當for迴圈反覆執行時,就有3%機率開出精靈的專用魔力賦予卷軸。
猜測修改方式為將53至56行註解掉。
當初設定雜談這標籤其實沒有預想到是解析程式碼,純粹是用來分享黑橘爛翻譯、一些蒐集資訊中獲得的奇怪知識(?)或閒聊吐槽。
但因為了搞懂RE:UNION - 地下城改善(尚未完工)的公告內容,只好研究程式碼。
目前的心得是看久邏輯能力會變差,不過能增進通靈能力(?)。
未來雜談篇幅依舊不會太長,以免惰性戰勝分享慾。

之前千年龍活動連刷衝突拿到過一般跟專用版的精靈
回覆刪除我還想說明明效果一模一樣 幹嘛出兩個版本......
解析程式碼真的很燒腦.......
回覆刪除這樣看起來是可以找到所有道具的開箱機率!?
回覆刪除對,還能比較不同服的版本。
刪除(可以驗證很多都市傳說和獲得不少設定上的冷知識)
但時間點只有到2016年5月,沒有後面道具機率。