版本 RWLib 1.0.1 2007/05/14


先看房間的設定, 每60秒心跳一次, 當然rw裡的60秒大概是現實的64秒到67秒左右

nosave mapping action_info =
([
    "laboratory"    :
    ([
        "short"    : HIC"研發"NOR CYN"實驗室"NOR,
        "heartbeat":60,    // 實際時間 1 秒為單位
        "job"    : ENGINEER,
        "master": 1,
        "help"    :
            ([


從look函式可以知道變數代表遊戲中的什麼值
technology是現在的科技值
tochnologylevy是平均研發力
sizeof(master->query_slave())+1是連鎖數

string look_room(object env)
{
    string msg = "";
    object master = env->query_master();
       
    msg += "科技值 "HIC+query("technology", master)+NOR CYN"/"+query("total_technology", master)+NOR" ";
    msg += "平均研發力 "HIY+query("technologylevel", master)+NOR+" ";
    msg += "研發管理 "HIY+(sizeof(master->query_slave())+1)+"/"+query("researchmanage", master)+NOR+"\n";
   
    return msg;
}

再來看主要的心跳函式
前面的檢查就跳過不看, 下面是我們關心的部分
如果有設定店員(npcinside), 就進入科技值變動的部分
首先決定是正值還是負值, 如果 random(technologylevel) < 10 就是負值
以雇員都是技能教滿平均研發力為60的情況, 這個機率是1/6
負值的範圍是 (-1到-5) 乘上 連鎖數的0.3次方
正值的範圍是 0 到 (平均研發力除以6再乘以連鎖數)的0.5次方減1
同樣假設平均研發力是60, 就是 0 到 根號(連鎖數乘10) 減1
(注: 減1是因為random函數包頭不包尾)

    if( npcinside)
    {
        if( random(technologylevel) < 10 )
        {
            technology = to_int((-random(5)-1) * pow(sizeof(slaves)+1, 0.3));
           
            if( userinside )
            {
                if( !random(2) )
                    msg("$ME打了個大呵欠,「呵~碰!」口水滴到電路板上把設備給燒壞了!(科技值 "HIR+technology+NOR")\n", npc, 0, 1);
                else
                    msg("$ME突發奇想把「"HIY+RANDOM_THING[random(sizeof(RANDOM_THING))]+NOR"」通通往化學原料裡倒,只見濃濃"WHT"黑煙"NOR"佈滿整個實驗室!(科技值 "HIR+technology+NOR")\n", npc, 0, 1);
            }
        }
        else
        {
            technology = random(to_int(pow(technologylevel / 6 * (sizeof(slaves)+1), 0.5)));
           
            if( userinside )
            {
                if( !random(2) )
                    msg("$ME依循著標準的實驗程序,將編號 "+sprintf(HIG"%c%c"NOR GRN"%d%d%d%d%d"NOR, range_random(65,90),range_random(65,90),random(10),random(10),random(10),random(10),random(10))+" 的實項項目如期完成。(科技值 "HIG"+"+technology+NOR")\n", npc, 0, 1);
                else
                    msg("$ME從失敗中獲取經驗,將原本錯誤的研究資料重新整理改寫。(科技值 "HIG"+"+technology+NOR")\n", npc, 0, 1);
            }
        }
    }


實際遊戲中這部分已經有點小改動
負值的機率提高,估計是把10改成20,也就是1/3的機率
負值的範圍縮小了,公式不明
訊息當然也是小改
文章標籤
全站熱搜
創作者介紹
創作者 suzin 的頭像
suzin

紅貓的重生世界

suzin 發表在 痞客邦 留言(0) 人氣(236)