外服零散活動內容彙整
外服零散課金內容彙整
網站導覽
公告

影任衝突內精靈的專卷問題

影任衝突內精靈的專卷問題

來源:官網


起因為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 - 地下城改善(尚未完工)的公告內容,只好研究程式碼。
目前的心得是看久邏輯能力會變差,不過能增進通靈能力(?)。
未來雜談篇幅依舊不會太長,以免惰性戰勝分享慾。

4 則留言

  1. 之前千年龍活動連刷衝突拿到過一般跟專用版的精靈
    我還想說明明效果一模一樣 幹嘛出兩個版本......

    回覆刪除
  2. 解析程式碼真的很燒腦.......

    回覆刪除
  3. 這樣看起來是可以找到所有道具的開箱機率!?

    回覆刪除
    回覆
    1. 對,還能比較不同服的版本。
      (可以驗證很多都市傳說和獲得不少設定上的冷知識)
      但時間點只有到2016年5月,沒有後面道具機率。

      刪除

CATEGORIES

遊戲類

課金類

考據類

統整類

翻譯類

VERSION

首頁 文章列表 索引

置頂

外服零散活動內容彙整 外服零散課金內容彙整 網站導覽 公告

分類

遊戲類

系統 主線 活動

課金類

時裝 寵物 其他

考據類

背景 主線 怪物

統整類

拆包 整理 觀察

翻譯類

歌詞 雜談

版本

進行中

系統

已實裝 未實裝

活動

過往 未裝

課金

過往 未裝
網址已複製 :D
好哦
START
{{name}}
{{text}}
繼續
請選擇說這句話的NPC名字
{{opt1}}
{{opt2}}
{{opt3}}
其他
確定