MediaWiki:Ck main.js

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
var roles_3 = [ {  name: '马努埃尔'},{ name: '伊布林'}, { name: '哈利'}, { name: '霍尔赫'}, { name: '萨莉亚'}, { name: '佩妮'}, { name: '迪艾格'}, { name: '费丽妮'}, { name: '比利'}, { name: '赫塞'}, { name: '帕尔'}, { name: '特利'}, { name: '弗昂'}, { name: '卡萝尔'}, { name: '科妮'}, { name: '古提'}, { name: '薇薇安'}, { name: '萨妮'}, { name: '伍格'}, { name: '南娜'}, { name: '梅妮'}, { name: '弗利欧'}, { name: '尤妮丝'}, { name: '多利'}];
var roles_4 = [ {  name: '普利基特' },{ name: '洛洛'},{ name: '雪娜'},{ name: '约伦'},{ name: '勒凡'},{ name: '波拉'},{ name: '艾弗伦'},{ name: '肯尼斯'},{ name: '科尔尼利亚'},{ name: '杜兰'},{ name: '纳尔'},{ name: '梅贝儿'},{ name: '伊利斯'},{ name: '法维欧'},{ name: '莉塔'},{ name: '歇尔薇'},{ name: '罗迪恩'},{ name: '玛德蕾妮'},{ name: '诺艾尔'},{ name: '塞德里克'},{ name: '梅诺'},{ name: '巴拉德'},{ name: '贝尔加'},{ name: '阿孜莱特'},{ name: '卡米拉'},{ name: '迈尔斯'},{ name: '贝尔特朗'},{ name: '洁卡莉特'},{ name: '塔希尔'},{ name: '特里休'},{ name: '阿什兰'},{ name: '劳拉'},{ name: '佩雷迪尔'},{ name: '米娜'},{ name: '卢塞塔'},{ name: '拉莫纳'},{ name: '梅蕾特'},{ name: '皮雅'},{ name: '哈因茨'},{ name: '德文'},{ name: '克雷斯'},{ name: '卡尔茨'},{ name: '温格特'}];
var roles_5 = [
    {
    name: '洁卡莉特Ex'
},
{
    name: '亚芬'
},
{
    name: '乌·鲁代'
},
{
    name: '泰蕾兹'
},
{
    name: '莱欧尼尔'
},
{
    name: '海茵特'
},
{
    name: '普里姆萝洁'
},
{
    name: '赛拉斯'
},
{
    name: '斯凯亚克罗'
},
{
    name: '菲欧儿'
},
{
    name: '米罗德'
},
{
    name: '薇欧拉'
},
{
    name: '莉妮特'
},
{
    name: '吉尔德罗伊'
},
{
    name: '特欧'
},
{
    name: '索菲亚'
},
{
    name: '拉斯'
},
{
    name: '赛西莉'
},
{
    name: '莲见'
},
{
    name: '尼兰娜拉'
},
{
    name: '欧尔贝克'
},
{
    name: '欧菲莉亚'
},
{
    name: '希斯柯特'
},
{
    name: '哈雷'
},
{
    name: '索蕾犹'
},
{
    name: '爱丽莎'
},
{
    name: '泰里翁'
},
{
    name: '莫露露'
},
{
    name: '贝兹'
},
{
    name: '闪达'
},
{ 
	name:'卡杰斯',
},
{ 
    name:'卢米斯',
},
{ 
    name:'江连',
},
{ 
    name:'吉尔梅拉',
},
{ 
    name:'卡尔多娜',
},
{ 
    name:'约书亚',
},
{ 
    name:'莉安娜',
},
{ 
    name:'特蕾莎',
},
{ 
    name:'普里姆萝洁Ex',
},
{ 
    name:'特蕾莎Ex',
},
{ 
    name:'萨莉莎',
},
{ 
    name:'妮可拉',
}
];
var roles_5_new = roles_5.concat([
    { 
        name:'海茵特Ex',
    },
    { 
        name:'埃德加尔特',
    },
    { 
        name:'诺妮雅',
    },
    { 
        name:'尤科斯',
    }
])
var arr_step_count_nums = [7,8,10,10,10]



// 追忆

// 萨赞特斯 希格娜
var roles_zy_33t4 = [{
    name: "萨赞特斯",
    isUp:  true,
    weight: 1
}]
var roles_yz_xgn = [{
    name: "希格娜",
    isUp:  true,
    weight: 1
}]
var roles_zy_others = [{
    name: "索隆",
    isUp:  false,
    weight: 1
},{
    name: "雷比娜Ex",
    isUp:  false,
    weight: 1
},{
    name: "艾丽卡",
    isUp:  false,
    weight: 1
},{
    name: "阿拉乌妮Ex",
    isUp:  false,
    weight: 1
},{
    name: "隆德",
    isUp:  false,
    weight: 1
},{
    name: "巴尔杰罗",
    isUp:  false,
    weight: 1
},{
    name: "索尼娅",
    isUp:  false,
	keyName: "索妮雅",
    weight: 1
},{
    name: "林悠",
    isUp:  false,
    weight: 1
},{
    name: "利夏尔",
    isUp:  false,
    weight: 1
},{
    name: "克拉乌泽",
    isUp:  false,
    weight: 1
},{
    name: "雷比娜",
    isUp:  false,
    weight: 1
},{
    name: "阿拉乌妮",
    isUp:  false,
    weight: 1
},{
    name: "艾特里克斯",
    isUp:  false,
    weight: 1
}];
var roles_zy_33t4_step = [{
    name: "萨赞特斯",
    isUp:  true,
    weight: roles_zy_others.length 
}]
.concat(roles_zy_others);
var roles_zy_xgn_step = [{
    name: "希格娜",
    isUp:  true,
    weight: roles_zy_others.length 
}]
.concat(roles_zy_others);

// .concat(roles_5_new.map(item=>{return { name:item.name,isUp:false,weight:1 }}))

// 圣炎
// 雷欧
var roles_sy_5_knl = [
    {
        name: "卡娜莉",
        isUp: true,
        weight: 1
    }
]
var roles_sy_5_knl_step = [
    {
        name: "卡娜莉",
        isUp: true,
        weight: 5
    },
    {
        name: "蒂特蕾娜",
        isUp: false,
        weight: 1
    },
    {
        name: "雷欧",
        isUp: false,
        weight: 1
    },
    {
        name: "泽妮亚",
        isUp: false,
        weight: 1
    },
    {
        name: "奥黛特",
        isUp: false,
        weight: 1
    },
    {
        name: "多萝德娅",
        isUp: false,
        weight: 1
    }
]
var roles_sy_5 = [
    {
        name: "蒂特蕾娜",
        isUp: false,
        weight: 1
    },
    {
        name: "雷欧",
        isUp: false,
        weight: 1
    },
    {
        name: "泽妮亚",
        isUp: false,
        weight: 1
    },
    {
        name: "奥黛特",
        isUp: false,
        weight: 1
    },
    {
        name: "多萝德娅",
        isUp: false,
        weight: 1
    }
]




//被选中的旅人
// 埃德加尔特
var roles_xz_5_adjrt = [
    {
    name: "埃德加尔特",
    isUp: true,
    weight: 1
}
];
var roles_xz_5_adjrt_step = [
    {
        name: "埃德加尔特",
        isUp: true,
        weight: roles_5_new.length
    }
].concat(roles_5_new.map(item=>{ 
    return {
        name:item.name,
        isUp:false,
        weight:1
    }
}))


// 闪光的旅人:斯特多

var role_sg_5_aeorl = [{
    name: "埃尔欧诺拉",
    keyName: "埃尔欧诺拉",
    isUp: true,
    weight: 1
}]


// 大陆的霸者:塔图洛克
var role_bz_5_nd = [{
    name: "塔图洛克",
    keyName: "塔图洛克",
    isUp: true,
    weight: 1
}]
var role_bz_5_nd_other = [{
    name: "泰塔斯",
    keyName: "泰塔斯",
    isUp: false,
    weight: 1
},{
    name: "亚久斯特",
    keyName: "亚久斯特",
    isUp: false,
    weight: 1
},{
    name: "赫尔米尼亚",
    keyName: "赫尔米尼亚",
    isUp: false,
    weight: 1
}].concat(roles_5_new.map(item=>{ 
    return {
        name:item.name,
        isUp:false,
        weight:1
    }
}))
var role_bz_5_nd_step = [{
    name: "塔图洛克",
    keyName: "塔图洛克",
    isUp: true,
    weight: role_bz_5_nd_other.length 
}].concat(role_bz_5_nd_other)

// pools对象 3、4星
var pool_obj_4 = {
    // 4星
    num: 18,
    maxStar: 4,
    thisStar: 4,
    isUp: false,
    roles: roles_4
};
var pool_obj_4_sy = {
    // 4星
    num: 96,
    maxStar: 4,
    thisStar: 4,
    isUp: false,
    roles: roles_4
};
var pool_obj_3_5 ={
    // 3.5星
    num: 40,
    maxStar: 4,
    thisStar: 3,
    isUp: false,
    roles: roles_4
};
var pool_obj_3 = {
    // 3星
    num: 38,
    maxStar: 3,
    thisStar: 3,
    isUp: false,
    roles: roles_3
}





var pools = [
    // 追忆的霸者:塔图洛克
	{
		name: "追忆的霸者:塔图洛克",
		btn_1: true,
		btn_10: true,
		step: false,
		stepRole: [],
		stepCount: [],
		roleType: [{
            // 5其他
            num: 1.2,
            maxStar: 6,
            thisStar: 6,
            isUp: true,
            roles: role_bz_5_nd
        },{
            // 5其他
            num: 1.6,
            maxStar: 5,
            thisStar: 5,
            isUp: false,
            roles: role_bz_5_nd_other
        },{
            // 4.5其他
            num: 1.2,
            maxStar: 5,
            thisStar: 4,
            isUp: false,
            roles: role_bz_5_nd_other
        },
        {
            // 4.5其他
            num: 2,
            maxStar: 5,
            thisStar: 4,
            isUp: false,
            roles: roles_5_new
        },
        pool_obj_4,
        pool_obj_3_5,
        pool_obj_3
    ]
	},
       // 追忆的霸者(阶梯):塔图洛克
	{
		name: "追忆的霸者(阶梯):塔图洛克",
		btn_1: false,
		btn_10: true,
		step: true,
		stepRole: role_bz_5_nd_step,
		stepCount: arr_step_count_nums,
		roleType: [{
            // 5其他
            num: 1.2,
            maxStar: 6,
            thisStar: 6,
            isUp: true,
            roles: role_bz_5_nd
        },{
            // 5其他
            num: 1.6,
            maxStar: 5,
            thisStar: 5,
            isUp: false,
            roles: role_bz_5_nd_other
        },{
            // 4.5其他
            num: 1.2,
            maxStar: 5,
            thisStar: 4,
            isUp: false,
            roles: role_bz_5_nd_other
        },
        {
            // 4.5其他
            num: 2,
            maxStar: 5,
            thisStar: 4,
            isUp: false,
            roles: roles_5_new
        },
        pool_obj_4,
        pool_obj_3_5,
        pool_obj_3
    ]
	},
    // 邂逅的旅人
	{
		name: "邂逅的旅人们",
		btn_1: true,
		btn_10: true,
		step: false,
		stepRole: [],
		stepCount: [],
		roleType: [{
            // 5其他
            num: 2,
            maxStar: 5,
            thisStar: 5,
            isUp: false,
            roles: roles_5_new
        },
        {
            // 4.5其他
            num: 2,
            maxStar: 5,
            thisStar: 4,
            isUp: false,
            roles: roles_5_new
        },
        pool_obj_4,
        pool_obj_3_5,
        pool_obj_3
    ]
	},
	// 历战的旅人们
	{
		name: "历战的旅人们",
		btn_1: true,
		btn_10: false,
		step: false,
		stepRole: [],
		stepCount: [],
		roleType: [{
			// 5其他
			num: 100,
			maxStar: 5,
			thisStar: 5,
			isUp: true,
			roles: roles_5_new
		}]
	}
];

var updateDate = "2025年1月29日";
var currPool = {};
var poolName = "";
var poolRoleTyels = [];
var numStep = [];

var stepPoolIndex = 0;

var arr_result = [];
var max_result_level = 3;
var step = 0;


var total_num = 0;
var total_diamond_num = 0;
var up_num = 0;
var arr_ups = [];
var arr_not_ups = [];
var up_half_num = 0;
var other_num = 0;
var other_half_num = 0;

// 截取字符串
function extractContentBetweenStrings(text, start, end) {
var pattern = new RegExp(start + '((.*?)(?=' + end + '))', 'gm');
var matches = text.match(pattern);
if (matches) {
    return matches[0].replace(start, '');
}
return null;
}

function getRoles(count = 1) {
for (var i = 0; i < count; i++) {
    cardResult(i);
}


$("#ring").css("display", "none");


if (max_result_level == 6) {
    $("#ring_2").css("display", "block")
}else if (max_result_level == 5) {
    $("#ring_2").css("display", "block")
} else if (max_result_level == 4) {
    $("#ring_1").css("display", "block")
} else {
    $("#ring_0").css("display", "block")
}

step = 2;

}

function cardResult(index) {
if (stepPoolIndex == 5 && index == 9) {
    var arrRolesThis = currPool.stepRole;
    var stepRoleTotalNum = 0;
    arrRolesThis.forEach(item => {
        stepRoleTotalNum = stepRoleTotalNum + item.weight;
    })
    var random_index = Math.floor(Math.random() * stepRoleTotalNum);
    for (var i = 0; i < arrRolesThis.length; i++) {
        var objThis = arrRolesThis[i];
        if (random_index < objThis.weight) {
            var result = JSON.parse(JSON.stringify(objThis));
            break;
        } else {
            random_index = random_index - objThis.weight;
        }
    }
    // var result = JSON.parse(JSON.stringify(arrRolesThis[random_index]));
    // result.maxStar = 5;
    result.thisStar = result.maxStar;
    if (max_result_level < result.maxStar) {
        max_result_level = result.maxStar;
    }
    arr_result.push(result);
    if (result.isUp) {
        up_num = up_num + 1;
        arr_ups.push(result)
    } else {
        other_num = other_num + 1;
        arr_not_ups.push(result);
    }
} else {
    var result_num = Math.floor(Math.random() * 1000) / 10.0;
    for (var i = 0; i < numStep.length; i++) {
        var thisStep = numStep[i];
        if (result_num < thisStep) {
            var roleTypeThis = poolRoleTyels[i];
            var arrRolesThis = roleTypeThis.roles;
            var random_index = Math.floor(Math.random() * arrRolesThis.length);
            var result = JSON.parse(JSON.stringify(arrRolesThis[random_index]));
            result.maxStar = roleTypeThis.maxStar;
            result.thisStar = roleTypeThis.thisStar;
            if (max_result_level < roleTypeThis.thisStar) {
                max_result_level = roleTypeThis.thisStar;
            }
            arr_result.push(result);

            if (roleTypeThis.isUp && result.maxStar == 5 && result.thisStar == 5) {
                up_num = up_num + 1;
                arr_ups.push(result)
            } else if (!roleTypeThis.isUp && result.maxStar == 5 && result.thisStar == 5) {
                other_num = other_num + 1;
                arr_not_ups.push(result)
            } else if (roleTypeThis.isUp && result.maxStar == 5 && result.thisStar == 4) {
                up_half_num = up_half_num + 1;
                arr_ups.push(result)
            } else if (!roleTypeThis.isUp && result.maxStar == 5 && result.thisStar == 4) {
                other_half_num = other_half_num + 1;
                arr_not_ups.push(result)
            }

            break

        }
    }
}



}

function clickWindow() {
if (step != 2) return;
step = 3;

var obj_result_area = document.getElementsByClassName("result_area")[0];
obj_result_area.style = "display:flex;"
// 正常流程
setTimeout(() => {

    obj_result_area.style =
        "display:flex;background-image: url(https://i.17173cdn.com/g8bz6k/octopathsp/5/58/db_ck_bg.png?20240904091141);background-color:transparent;"
    $(".img_ring").each(function() {
        $(this).css("display", "none")
    })
    var obj_all_result = document.getElementsByClassName("all_Result")[0];
    if (currPool.name == '邂逅的旅人们') {
        obj_all_result.innerHTML = "<div>" + "本次抽卡" + total_num + "次,消费" + total_diamond_num + "钻石" +
            "</div>" +
            "<div>" + "抽到5星角色" + other_num + '次,4.5星角色' + other_half_num + '次' + "</div>";
    } else if (currPool.name == '历战的旅人们') {
        obj_all_result.innerHTML = "<div></div>"
    } else {
        var arrUpRoles = [];
        var arrUpRolesData = [];
        arr_ups.forEach(item => {
            var name = item.name;
            var indexThis = arrUpRoles.indexOf(name);
            if (indexThis >= 0) {
                arrUpRolesData[indexThis].count++
            } else {
                arrUpRoles.push(name);
                arrUpRolesData.push({
                    name: name,
                    count: 1
                })
            }
        })
        var arrNotUpRoles = [];
        var arrNotUpRolesData = [];
        arr_not_ups.forEach(item => {
            var name = item.name;
            var indexThis = arrNotUpRoles.indexOf(name);
            if (indexThis >= 0) {
                arrNotUpRolesData[indexThis].count++
            } else {
                arrNotUpRoles.push(name);
                arrNotUpRolesData.push({
                    name: name,
                    count: 1
                })
            }
        })

        var strUps = ""
        arrUpRolesData.forEach(item => {
            strUps = strUps + ',' + item.name + ' ' + item.count + '个'
        })
        if (strUps.length > 0) {
            strUps = '抽到 ' + strUps.substring(1);
        } else {
            strUps = '暂未抽到当期UP角色';
        }
        var strNotUps = ""
        arrNotUpRolesData.forEach(item => {
            strNotUps = strNotUps + ',' + item.name + ' ' + item.count + '个'
        })
        if (strNotUps.length > 0) {
            strNotUps = '其他5星角色  ' + strNotUps.substring(1) + ' 共计' + (other_num + other_half_num) + '个';
        } else {
            strNotUps = '暂未抽到其他5星角色';
        }
        obj_all_result.innerHTML = "<div>" + "本次抽卡" + total_num + "次,消费" + total_diamond_num + "钻石" +
            "</div>" +
            "<div>" + strUps + "</div>" +
            // "抽到5星当期UP角色" + up_num + "次,4.5星当期UP角色" + up_half_num + "次</div>" + 
            // "<div>其他5星角色" +
            // other_num + '次,其他4.5星角色' + other_half_num + '次' + "</div>" +
            "<div>" + strNotUps + "</div>";
    }
    showResults();
}, 2500)



}

function showResults() {
var str_html = "";
for (var i = 0; i < arr_result.length; i++) {
    var objThis = arr_result[i];
    str_html = str_html + "<div class='role_area'>" +
        "<div class='text'>" + objThis.name + "</div>" +
        "<div class='text'>";
    for (var j = 0; j < objThis.thisStar; j++) {
        str_html = str_html + "★"
    }
    if (objThis.maxStar > objThis.thisStar) {
        str_html = str_html + "☆"
    }


    var roleData = getRoleDataWithRoleName(objThis.keyName || objThis.name);
    if(roleData[0] == undefined || roleData[2] == undefined) {
    }
    var img_lh = "https://wiki.17173.com/octopathsp/thumb.php?f=角色立绘-角色编号" + roleData[0] + ".png&width=200x";
    var img_xs = "https://wiki.17173.com/octopathsp/thumb.php?f=" + roleData[2] + ".png&width=90x";


    str_html = str_html + "</div>" + "<img class='img' src='" + img_lh + "'/>" + "<img class='img_xs' src='" +
        img_xs + "' />" + "</div>"
}


$(".result_area").each(function() {

    $(this).html(str_html).load()
})

setTimeout(() => {
    step = 0;
}, 1000)
}

function clickStart(count = 1) {

if (step != 0) return
step = 1;
max_result_level = 3;
arr_result = [];

if (currPool.step) {
    if (stepPoolIndex >= currPool.stepCount.length) {
        stepPoolIndex = 0
    }
    var countThis = currPool.stepCount[stepPoolIndex];
    total_num = total_num + count;
    total_diamond_num = total_diamond_num + countThis * 30;
    stepPoolIndex = stepPoolIndex + 1;


} else {
    total_num = total_num + count;
    total_diamond_num = total_diamond_num + count * 30;
}


setTimeout(function() {
    $("#window_area").css("background-color", "transparent");
}, 1000)

var obj_result_area = document.getElementsByClassName("result_area")[0];
obj_result_area.style = "display:none;background-color:#FFFFFF;"
obj_result_area.innerHTML = "";


getRoles(count);

}

function initPool(index) {
try {
    if (pools.length > index) {
        currPool = pools[index];
    } else {
        currPool = pools[0];
    }
} catch (e) {
    if (e.message == 'pools is not defined') {
        setTimeout(() => {
            initPool(index)
        }, 1000)
    }
}

poolName = currPool.name;
poolRoleTyels = currPool.roleType;
numStep = [];
stepPoolIndex = 0;

var numCurr = 0;
poolRoleTyels.forEach(item => {
    numCurr = numCurr + item.num;
    numStep.push(numCurr.toFixed(2))
})

$('#pool_title').html(poolName);

if (currPool.btn_1) {
    $('#btn_start_1').css("display", "block")
} else {
    $('#btn_start_1').css("display", "none")
}

if (currPool.btn_10) {
    $('#btn_start_10').css("display", "block")
} else {
    $('#btn_start_10').css("display", "none")
}
}

function initFunc() {

$(document).ready(function() {

    var queryString = window.location.search;
    var urlParams = new URLSearchParams(queryString);
    var poolIndex = urlParams.get("index") || 0;
    initPool(poolIndex)

    for (var i = 0; i < pools.length; i++) {
        var poolThis = pools[i];
        var $button = $('<div>', {
            class: 'btn_change_pool',
            text: poolThis.name,
            "index": i
        }).on('click', function() {
            var dataIndex = $(this).attr("data-index");
            var url = new URL(window.location.href);
            url.searchParams.set("index", dataIndex);
            window.location.href = url.href;
        });
        $button.attr("data-index", i);
        $('.change_pool').append($button);
    }

    // 简易抽卡模拟器
    var $button = $('<div>', {
        class: 'btn_change_pool',
        text: '简易抽卡模拟器'
    }).on('click', function() {
        // 构建新的基础 URL
        var baseUrl = window.location.protocol + '//' + window.location.host + '/octopathsp/简易抽卡模拟器';
        // 创建 URL 对象并添加查询参数
        var url = new URL(baseUrl);
        window.location.href = url.href;
    });
    $button.attr("data-index", i);
    $('.change_pool').append($button);


    $('#btn_start_1').on("click", function() {
        clickStart(1)

    });
    $('#btn_start_10').on("click", () => {
        clickStart(10)
    });
    $('#window_area').on("click", () => {
        clickWindow()
    });
});

}

initFunc()