--- Title: 兵士編成 Author: ixa2023 Web: 'https://mimemo.io/m/xpgOEoQOav4DWnZ' --- ```javascript:ixa-moko.user.js= // === 兵士編成 === // 各デッキへの移動ボタンを追加 function createDecNavi() { var groups = $('#select_card_group').val(); var filter_num = $('#select_filter_num').val() || '0'; var target = $('#frame_00_top'); var html = ''; target.append(html); var $dfirst = $('.dfirst'); var $dlast = $('.dlast'); var $a = $('ul#deck_navi li > a'); var $reinforce = $('div.tab_on_reinforce, div.tab_off_reinforce'); var $assault = $('div.tab_on_assault, div.tab_off_assault'); $('ul#deck_navi li').css('margin-right', '2px'); $dfirst.css('width', '57px'); $dlast.css('width', '8px'); $a.css('width', '72px'); $reinforce.eq(0).css({ 'position': 'absolute', 'margin-left': '503px' }); $reinforce.eq(1).css({ 'position': 'absolute', 'margin-left': '577px' }); $assault.css({ 'position': 'absolute', 'margin-left': '651px' }); $('li[class^="movedeck_"] a').on('click', function(){ var ano = $(this).parent().attr('class').match(/\d+/g); location.href = '/card/deck.php?ano=' + ano + '&select_card_group=' + groups + '&select_filter_num=' + filter_num; }); } // 兵士編成下準備 function unitListPreparation() { if (location.pathname != '/facility/set_unit_list.php') { return; } $('#ig_deckmenu').find('a:contains("カード一括破棄")').attr('href', '/card/deck_card_delete.php?tmp_show_num=100'); createDecNavi(); // 各デッキへの移動ボタンに逆参照のプルダウンメニュー $('li[class^="movedeck_"]').on('contextmenu', function(e) { e.preventDefault(); var ano = $(this).attr('class').match(/\d+/g); var html = '
'; for (var i = 0, len = GROUPS_MENU.length; i < len; i++) { html += '' + GROUPS_MENU[i][1] + ''; } html += '
'; html = $(html).width(85); $(this).children('div').remove(); $(this).append(html); $(this).children('div').slideDown('fast'); }) .hover(null, function() { $(this).children('div').remove(); }); // 組分けボタンに逆参照のプルダウンメニュー $('li[class^="btn_category_"]').on('contextmenu', function(e) { e.preventDefault(); var list = [ 'デッキ1', 'デッキ2', 'デッキ3', 'デッキ4', 'デッキ5', 'デッキ6', '加勢専用', '加勢専用', '強襲専用' ]; var grp = $(this).attr('onClick').match(/\d+/); var html = ''; $(this).html(html); $(this).find('div').slideDown('fast'); }).hover(null, function() { $(this).empty(); }); // 解散ボタンを追加 var flag = $('#deck_file').find('img.iepngfix.mb5').length; if (flag == 2) { $('解散') .on('click', function() { var unitname = $('table.busho_info').find('a.busho_name').eq(0).text(); if (!confirm('【' + unitname + '部隊】を解散させてよろしいですか?')) { return; } var data = { select_assign_no: $('#select_assign_no').val(), unit_assign_id: $('input[name="unit_assign_ids[]"]').val(), unset_card_id: $('#card_id_arr_0').val(), change_unit_squad_id: '', p: '1', select_card_group: $('#select_card_group').val() }; $.ajax({ type: 'post', url: '/card/deck.php', data: data, beforeSend: xrwStatusText, }).then(function(html) { var len = $('#frame_00_spacer').find('div.set_unit_tab').length; var idx = 1; if (len <= 2) { idx = 0; } var $btn = $('#frame_00_spacer').find('div[onclick*="btn_selectassignno_click"]').eq(idx), next_ano = $btn.attr('onClick').match(/\d+/g); btn_selectassignno_click(next_ano); }); }).insertAfter($('img[alt="デッキへ"]').parent()); } // グループ順記録・基本兵種記録ボタンの表示スペースの生成 $('
').insertBefore('#bar_card'); $('
').insertAfter('#branch_container'); // 表示カード数表示テーブル $('') .insertAfter('#title_00').hide(); // カード収容数 $('#ig_deckheadmenubox').append('
カード収容数
'); $('#detail_view').on('click', function() { var $panel = $('#detail_panel'), $this = $(this); if ($panel.length) { return $panel.slideUp('slow', function() { $this.text('カード収容数'); $panel.remove(); }); } var $td = $('td[id^="unit_count_"]'), array = []; $td.each(function() { var object = {}; object.type_name = $(this).prev().find('img').attr('alt'); object.type_num = $(this).attr('id').match(/\d+/g)[0]; object.now_cnt = 0; object.lead_cnt = 0; object.wait = parseInt($(this).text()); object.total = parseInt($(this).next().text()); object.command = parseInt($(this).next().text() - $(this).text()); array.push(object); }); var $now_unit_type = $('input[id^="now_unit_type"]'), id_num, prevalence; $now_unit_type.each(function() { for (var i = 0, len = array.length; i < len; i++) { id_num = $(this).attr('id').match(/\d+/g)[0]; if (array[i].type_num == $(this).val()) { array[i].now_cnt += parseInt($('#now_unit_cnt_' + id_num).text()); array[i].lead_cnt += parseInt($('#lead_unit_' + id_num).text()); } prevalence = Math.round(array[i].total / array[i].lead_cnt * 1000) / 10; prevalence = Infinity ? prevalence = 0 : prevalence = prevalence; array[i].excess = array[i].lead_cnt - array[i].total; array[i].prevalence = prevalence; } }); var tmpl = ''; $panel = $(tmpl).insertAfter('#ig_deckheadmenubox'); $('#detail_table > tbody > tr').each(function() { var text = $(this).find('th').eq(0).text(); if (text == '国人衆' || text == '海賊衆' || text == '母衣衆' || text == '雑賀衆') { $(this).css('background-color', 'khaki'); } }); var grp = $('#select_card_group').val(), pager = $('ul.pager').length; if (Unit.tablen() == 1 && grp == '0' && !pager) { $('td._some').removeClass('_some'); } return $panel.slideDown('slow', function() { $this.text('▲'); }); }); // 兵士編成にスクロールボタンを表示 if (options.unit_list_pageup) { var html = '' + '
' + '
' + '
' + '
'; $('#frame_00_spacer').append(html); $('#page_top').on('click', function() { return scrollView(0); }); $('#page_up').on('click', function() { var ost = $(window).scrollTop() - $(window).height() + 100; return scrollView(ost); }); $('#page_down').on('click', function() { var ost = $(window).scrollTop() + $(window).height() - 100; return scrollView(ost); }); $('#page_botom').on('click', function() { return scrollView($('#frame_00_mid').offset().top); }); } } // 兵種リスト function createSoldiersList() { var type_num, now_num, type, list1 = '', list2 = ''; $('input[id^="pool_unit_cnt"]').each(function() { now_num = $(this).val(); type_num = ($(this).attr('id').match(/\d+/g) || [''])[0]; type = $('#unit_name_str_' + type_num).val(); if (!type_num) { return; } if (type_num >= 347) { return true; } list1 += ''; list2 += ''; }); return [ list1, list2 ]; } // 兵士編成兵士一括セット データ生成 function setCardArray(pool_unit) { var unit_list_set = function(card_array, i) { if (card_array.length === i) { var shonum = $('select[name="show_num"]').val(), select_card_group = $('#select_card_group').val(), href = location.pathname + '?show_num=' + shonum + '&select_card_group=' + select_card_group + '&select_filter_num=' + $('#select_filter_num').val(); return Info.title('完了', href); } // 既存の【変更】ボタンがAjaxである為、既存の【変更】ボタン押下では、変更処理完了をキャッチできない // mokoでは画面をモーダルにし【変更】ボタンの代用Ajaxで変更処理完了をキャッチしてから次の変更処理を行うようにしている Info.title('対象カードに一括セット中...'); Info.log('[' + card_array[i].card_name + ']'); Info.count((i + 1) + '/' + card_array.length + '人目'); var data = { card_id: card_array[i].card_id, unit_type: card_array[i].unit_type, unit_count: card_array[i].unit_count }; $.ajax({ type: 'post', url: '/facility/set_unit_list_if.php', data: data, beforeSend: xrwStatusText, }).then(function(html) { i++; return unit_list_set(card_array, i); }); }; var card_array = []; // 検索兵数 var select_target_num = parseInt($('#select_target_num').val()); // Number // 検索兵種 var select_target_branch = $('#select_target_branch').val(); // セット兵種選択 var select_set_branch = $('#select_set_branch').val(); // セット兵数選択 var select_set_num = $('#select_set_num').val(); // 簡易編成行単位ループ var $tr = $('table.busho_info').find('tr.tr_gradient:visible').slice(1); // 対象をフィルター // 兵数 $tr = $tr.filter(function() { var now_unit_cnt = parseInt($(this).find('SPAN[id^="now_unit_cnt"]').text()); var sol_num = {4:'槍隊', 5:'弓隊', 6:'馬隊'}; if (select_target_num == 3) { return this; } else if (Object.keys(sol_num).includes(select_target_num.toString())) { var s1 = []; $('input[id^="select_skill_"]:checked').each(function() { s1.push($(this).val()); }); if (!s1.length) { return; } var new_array = s1.map(function(v) { return sol_num[select_target_num] + v; }); var card_id = $(this).find('td:eq(0)').attr('onclick').split(',')[1].replace(/\s|\'|\)|;/g, ''); var data = get_card_data($('#cardWindow_' + card_id)); if (data) { if (new_array.includes(data.sname[0]) && data.sname.length == 1 && data.level == 0 && data.rank == 0) { return this; } } } else if (select_target_num == 2) { if (now_unit_cnt >= select_target_num) { return this; } } else if (now_unit_cnt == select_target_num) { return this; } }); // 兵種 $tr = $tr.filter(function() { var now_unit_type = $(this).find('INPUT[id^="now_unit_type"]').val(); if (select_target_branch == 'all') { return this; } else { if (now_unit_type == select_target_branch) { return this; } } }); $tr.each(function() { // 現状取得 // 行番号 var no = $(this).find('input[id^="key_str_array_"]').val(); // カードID var card_id = $('#card_id_arr_' + no).val(); // 兵種 var now_unit_type = $('#now_unit_type_' + no).val(); // 兵数 var now_unit_cnt = parseInt($('#now_unit_cnt_' + no).text()); // Number // 基本兵種 var now_default = $('#unit_default_select_' + no).val(); // 指揮力 var lead = parseInt($('#lead_unit_' + no).text()); // Number // セット兵種 var set_unit_type = now_unit_type; // セット兵数 var set_unit_cnt = 0; //Number // 武将名 var busho_name = $(this).find('a.busho_name').text(); // セット兵数が0でない場合 if (select_set_num !== '0') { // プールに指揮兵数を加算 if (now_unit_type) { pool_unit[now_unit_type] += now_unit_cnt; } // 現状兵種 if (select_set_branch == 'current_type') { set_unit_type = now_unit_type; // 基本兵種 } else if (select_set_branch == 'default_type') { set_unit_type = now_default; // 余り兵種 } else if (select_set_branch == 'remainder') { // 兵種の決定 // プール最大兵数兵種を求める var pool_max = 0, max_key = '', key; for (key in pool_unit) { if (pool_unit[key] > pool_max) { pool_max = pool_unit[key]; max_key = key; } } // セット兵数 1 if (select_set_num === '1') { // 指揮兵数 0 if (now_unit_cnt === 0) { set_unit_type = max_key; } else { // 指揮兵数 1以上 set_unit_type = now_unit_type; } // セット兵数 最大 } else { set_unit_type = max_key; } // 特定兵種 } else { set_unit_type = select_set_branch; } // 兵数 最大 if (select_set_num === 'max') { // 指揮力がプール兵数より大きいならプール兵数をセット if (lead > pool_unit[set_unit_type]) { set_unit_cnt = pool_unit[set_unit_type]; // 指揮力がプール兵数より小さいなら指揮力兵数をセット } else if (lead <= pool_unit[set_unit_type]) { set_unit_cnt = lead; } // 兵数 定数 } else if (select_set_num != '0') { if (pool_unit[set_unit_type] === 0 || !pool_unit[set_unit_type]) { set_unit_cnt = 0; } else { set_unit_cnt = select_set_num; } } // プールから差し引き if (set_unit_type) { pool_unit[set_unit_type] -= set_unit_cnt; } // セット兵数が0 } else { // 現状兵種 if (select_set_branch == 'current_type') { set_unit_type = now_unit_type; // 基本兵種 } else if (select_set_branch == 'default_type') { set_unit_type = now_default; // 余り兵種 } else if (select_set_branch == 'remainder') { return; // なし } else if (select_set_branch == 'no_type') { set_unit_type = ''; // 特定兵種 } else { set_unit_type = select_set_branch; } } // 変更前後で差異が無い場合は次の行 if (now_unit_type == set_unit_type && now_unit_cnt == set_unit_cnt) { return true; } // 対象行のカード番号、セット兵種、セット兵数をArrayに詰め込む var object = { card_name: busho_name, card_id: card_id, unit_type: set_unit_type, unit_count: set_unit_cnt }; card_array.push(object); }); if (!card_array.length) { return Info.title('該当カードなし', true); } else { return unit_list_set(card_array, 0); } } // 兵士編成兵士一括セット function unitListAllset() { if (location.pathname != '/facility/set_unit_list.php') { return; } var type_list1 = createSoldiersList()[0], type_list2 = '' + createSoldiersList()[1], default_list; if (options.unit_list_default) { default_list = '' + type_list2; } else { default_list = type_list2; } $('
' + '表示中の' + '' + '' + '' + 'の武将に' + '' + '' + '' + '' + '' + '
' ).appendTo('#bulk_set_panel'); $('
' + ' ' + ' ' + ' ' + '' + '
' ).css({ 'display': 'flex', 'margin-left': '30px' }).appendTo('#soldier_bulk_set'); var setUnitValue = function() { var id_name = $(this).attr('id'); each_setting.set_unit[id_name] = $(this).val(); setStorage('ixamoko_each_setting', each_setting); }, $select = $('#soldier_bulk_set select').change(setUnitValue); var select_skill_s1 = getStorage(null, 'ixamoko_select_skill_s1'); if (select_skill_s1) { for (var key in select_skill_s1) { $('input[id="' + key + '"]').prop('checked', select_skill_s1[key]); } } else { select_skill_s1 = { 'select_skill_syuugeki': false, 'select_skill_singeki': false, 'select_skill_kensyu': false, 'select_skill_sonae': false } } $('#select_skill_s1 input').on('change', function(){ var id_name = $(this).attr('id'); select_skill_s1[id_name] = $(this).prop('checked'); setStorage('ixamoko_select_skill_s1', select_skill_s1); }); if (!each_setting.set_unit) { each_setting.set_unit = {}; $select.each(setUnitValue); } for (var key in each_setting.set_unit) { $('select[id="' + key + '"]').val(each_setting.set_unit[key]); } var $select_target_branch = $('#select_target_branch'), $select_target_num = $('#select_target_num'), $select_set_branch = $('#select_set_branch'), $select_set_num = $('#select_set_num'); $select_target_num.on('change', function() { var value = $(this).val(); if ((value == 1 || value == 2) && !$select_target_branch.val()) { $select_target_branch.val('all').change(); } if (value >= 4) { $('input[id^="select_skill_"]').prop('disabled', false); } else { $('input[id^="select_skill_"]').prop('disabled', true); } }); $select_target_branch.on('change', function() { var value = $(this).val(); if (!value) { $select_target_num.val('0').change(); } }); $select_set_branch.on('change', function() { var value = $(this).val(); if (value == 'no_type') { $select_set_num.val('0').change(); } }); $select_set_num.on('change', function() { var value = $(this).val(); if (value != '0' && $select_set_branch.val() == 'no_type') { $select_set_branch.val('current_type').change(); } }); // 一括セットクリック $('#heisi_set').on('click', function() { nowLoading(); var select_target_branch = $select_target_branch.val(), select_target_num = $select_target_num.val(), select_set_branch = $select_set_branch.val(), select_set_num = $select_set_num.val(); // プールの取得 ※存在兵種 var pool_unit = {}; $('td[id^="unit_count_"]').each(function() { var type = $(this).attr('id').match(/\d+/g); if (type >= 347) { return true; } pool_unit[type] = parseInt($(this).text()); }); var $tr = $('table.busho_info').find('tr.tr_gradient').slice(1), // 兵種変更の指揮兵数があれば全て0にする numReduction = function(keys) { var select_card_group = $('#select_card_group').val(), c = keys.length, post_query = function(data) { $.ajax({ type: 'post', url: '/facility/set_unit_list.php', data: data, beforeSend: xrwStatusText, }) .then(function(html) { c--; if (c === 0) { return setCardArray(pool_unit); } }); }; for (var i = 0, len = keys.length; i < len; i++) { var data = { show_deck_card_count: $('input[name="show_deck_card_count"]').val(), show_num: $('input[name="show_num"]').val(), select_card_group: select_card_group, select_filter_num: $('#select_filter_num').val(), p: $('#p').val(), now_unit_type: keys[i], now_group_type: select_card_group, edit_unit_type: 'now_unit', edit_unit_count: '0', btnlumpsum: 'true' }; post_query(data); } }, // 兵種変更の兵種の指揮兵数の判定 confirmType = function(obj, pool_unit) { var key, keys; for (key in obj) { if (obj[key] === 0) { delete obj[key]; } } keys = Object.keys(obj); if (!keys.length) { return setCardArray(pool_unit); } else { if (!confirm('兵数が不足している兵種が存在します\n選択中の組分けの武将を兵数0にしてから再セットします\n\n実行してよろしいですか?')) { return nowLoading(true); } for (key in obj) { pool_unit[key] += obj[key]; } return numReduction(keys); } }, // 兵種変更の兵種の指揮兵数を取得 getSoldiersNum = function(object, pool_unit) { $tr.each(function() { var type = $(this).find('input[id^="now_unit_type"]').val(), $now_unit_cnt = $(this).find('span[id^="now_unit_cnt"]'), value = parseInt($now_unit_cnt.text()); for (var key in object) { if (key != type) { continue; } object[key] += value; $now_unit_cnt.text('0'); } }); return confirmType(object, pool_unit); }, object = {}; /** セット兵種が基本兵種、兵種変更カード有り、兵種変更の兵種のプールが0 * 表示ページ内の指揮兵種に兵種変更の兵種があれば、還元して利用する */ // セット兵種 != 0 && セット兵種 == 基本兵種 if (select_set_num != '0' && select_set_branch == 'default_type') { $tr.each(function() { var type = $(this).find('input[id^="now_unit_type"]').val(), defa = $(this).find('select[id^="unit_default_select"]').val(); // 兵種変更の兵種のプール === 0 if (type != defa && pool_unit[defa] === 0) { object[defa] = 0; } }); return getSoldiersNum(object, pool_unit); } else { return setCardArray(pool_unit); } }); } // 兵士編成 部隊 function soldierSetSupport() { if (location.pathname != '/facility/set_unit_list.php') { return; } if ($('img.iepngfix.mb5').length < 2) { return; } var html = '' + '
' + '' + '' + '
'; $('table.busho_info').before(html); // 部隊長と同兵種 $('.same_kind').on('click', function () { var value; $(this).closest('div.soldierset').next('table').find('select[id^="unit_id_select_"]').each(function (i, el) { i === 0 ? value = $(this).val() : $(this).val(value); }); }); // 同兵数セット $('.constant').on('change', function() { var all_constant = function(data) { var ano = $('#select_assign_no').val(), c = data.length, post_query = function() { $.ajax({ type: 'post', url: '/facility/set_unit_list_if.php', data: data[i], beforeSend: xrwStatusText, }) .then(function(html) { c--; if (c === 0) { location.href = '/facility/set_unit_list.php?&ano=' + ano; } }, null); }; for (var i = 0, len = data.length; i < len; i++) { post_query(data[i]); } }, $card_id_arr = $(this).closest('div.soldierset').next('table').find('input[id^="card_id_arr_"]'), quantity = $(this).val(), c_num = $card_id_arr.eq(0).closest('tr.tr_gradient').find('input[id^="unit_cnt_text_"]').val(), list = [], card_id, set_type, data, set_count; if (!quantity) { return; } for (var i = 0, len = $card_id_arr.length; i < len; i++) { card_id = $card_id_arr.eq(i).val(); set_type = $card_id_arr.eq(i).closest('tr.tr_gradient').find('select[id^="unit_id_select_"]').val(); data = get_card_data($('#cardWindow_' + card_id)); if (quantity == 'captain') { set_count = c_num; } else if (quantity == 'att_cap') { set_count = Math.floor(data.att * 0.02); } else if (quantity == 'def_cap') { set_count = Math.floor(data.def * 0.02); } else { set_count = quantity; } list.push({ card_id: card_id, unit_type: set_type, unit_count: set_count }); $('#unit_cnt_text_' + i).val(set_count); } all_constant(list); }); var html = '
現状兵種で ' + '' + '' + '
'; $('#deck_file').find('h3:eq(0)').before( html ); $('#change_all').css({'margin': '8px 50px 0px 0px', 'float':'right'}); $('#elite_bulk_set').click( elite_bulk ); } // 兵士編成 ページ読み込み function plusNestpage(object, flag) { if (!plusNestpage.flag) { plusNestpage.flag = true; } else if (plusNestpage.flag) { return; } $('#read').text('読込中... (' + object.start + '/' + object.max_page + ')'); var data = { show_num: object.show_num, p: object.start, select_card_group: object.scg, select_filter_num: object.select_filter_num }; $.ajax({ type: 'post', url: '/facility/set_unit_list.php?show_num=' + object.show_num + '&select_card_group=' + object.scg, data: data, beforeSend: xrwStatusText, }) .then(function(html) { var $html = $(html).find('#box'), $tr = $html.find('table.busho_info > tbody > tr.tr_gradient').slice(1), $card = $(html).find('div[id^="cardWindow"]'); $tr.each(trGradientCheck); $('table.busho_info > tbody').append($tr); $('div[id^="cardWindow"]:last').after($card); $tr = null; $card = null; var str = object.start + '/' + object.max_page; object.start++; if (flag) { if (object.start > object.max_page) { moko_notice('全ページ読み込み完了', true); $('#unit_list_add_page span').text(str); } else { plusNestpage.flag = false; $('ul.pager').eq(0).attr('next', object.start); $('#unit_list_add_page span').text(str); } tb_init('a.thickbox'); setUnitGroupsFilter(); return setUnitCategoryFilter(getActive()); } else { if (object.start > object.max_page) { tb_init('a.thickbox'); // 完了確認で表示 $('#read').remove(); $('#frame_01_spacer').css({'overflow':'', 'height':''}); setUnitGroupsFilter(); return punitiveSortMode(); } else { plusNestpage.flag = false; return plusNestpage(object); } } }); } function unitNextQuery() { var object = {}; object.show_num = $('select[name="show_num"]').val(); object.scg = $('#select_card_group').val(); object.start = parseInt($('ul.pager').eq(0).find('span').text()) + 1; object.max_page = html_max_page($('#deck_file')); object.select_filter_num = $('#select_filter_num').val(); return object; } // 兵士編成 全表示 function unitListAllView() { var object = unitNextQuery(); $('select[name="show_num"] option:last').text('全表示'); $('ul.pager').remove(); $('#now_group_type').find('option:first').remove(); unitListCheck(); // 完了確認の為不可視 $('#frame_01_spacer').css({'overflow':'hidden', 'height':'1em'}) .prepend('
読込中...
'); return plusNestpage(object); } // 兵士編成 全表示の切り替え function unitListChange() { if (location.pathname != '/facility/set_unit_list.php') { return; } var punitive_step = getStorage(null, 'punitive_step'); if (punitive_step === 3) { setStorage('punitive_step', 4); return unitListAllView(); } var $pager = $('ul.pager').eq(0), show_num = $('select[name="show_num"]').val(), now_page = parseInt($pager.find('span').text()), max_page = html_max_page($('#deck_file')); if (options.unit_list_view) { if (options.unit_list_view_mod == '0') { if ($pager.length && show_num == 100) { return unitListAllView(); } else { unitListCheck(); return punitiveSortMode(); } } else { unitListCheck(); if (!$pager.length) { return; } $pager.attr('next', now_page + 1); if (now_page == max_page) { return; } $('
次頁を読み込む
') .on('click', function() { var object = unitNextQuery(); object.start = $pager.attr('next'); return plusNestpage(object, true); }) .appendTo('#frame_01_spacer'); } } else { return unitListCheck(); } } // 兵種データ表示 var unitListPowerOutput = function(cid, type_list) { var $preview = $('#preview_' + cid), data = get_card_data($('#cardWindow_' + cid)), excel = Math.max.apply(null, [data.att, data.def, data.int]), html = '', power, r_num, r_cost, perce, cost_defense; for (var i = 0, len = type_list.length; i < len; i++) { data.type = type_list[i]; // 各兵種別計算に置き換え power = power_calculation(data); r_num = data.max * power.apt; r_cost = r_num / data.cost; perce = (power.apt * 100).toFixed(1) + '%'; cost_defense = power.def / data.cost; html += '' + '' + '' + data.att + '' + '' + data.def + '' + '' + data.int + '' + '' + Math.floor(power.att) + '' + '' + Math.floor(power.def) + '' + '' + cost_defense.toFixed(0) + '' + '' + data.type + '' + '' + perce + '' + '' + r_num.toFixed(0) + '' + '' + r_cost.toFixed(0) + '' + ''; } $preview.find('tbody').append(html); $('td.status_num').each(function() { var num = parseFloat($(this).text()); if (excel === num) { var type = $(this).attr('type'), color; switch (type) { case 'att': color = 'brown'; break; case 'def': color = 'steelblue'; break; case 'int': color = 'seagreen'; break; } $(this).css({ 'color': 'white', 'background-color': color }); } }); var $td = $preview.find('td.soltype'), command = $td.eq(0).text(); $td.slice(1).each(function() { if ($(this).text() == command) { $(this).parent().css('background-color', 'slategrey'); } }); }, unitListPowerView = function($this) { $this.find('div.force_type').css('cursor', 'pointer').on('click', function() { if ($(this).parent('td').hasClass('squad_overlay')) { return; } var $tr = $(this).closest('tr.tr_gradient'), cid = $tr.find('input[id^="card_id_arr_"]').val(), cut = $tr.find('span[id^="now_unit_cnt_"]').text(), $preview = $('#preview_' + cid); if (cut == '0') { return; } if ($preview.length) { $preview.remove(); } else { var $newpreview = $('' + '' + '' + '' + '' + '' + '' + '' + '' + '
攻撃防御兵法攻撃力防御力防コスト@全兵種 ▼統率実指揮数コスト比
' + '' + '' ).insertAfter($tr); var type_list = []; type_list.push($tr.find('img[id^="now_unit_img_"]').attr('alt')); unitListPowerOutput(cid, type_list); $('#all_type_' + cid).on('click', function() { var str = $(this).text(), $line = $(this).closest('table').find('tbody tr'); if (str == '全兵種 ▼') { $(this).text('指揮兵 ▲'); $line.hide(); unitListPowerOutput(cid, SOLDIER.lineupsNames); } else { $(this).text('全兵種 ▼'); $line.eq(0).show(); $line.slice(1).remove(); } }); $tr.find('select[id^="unit_id_select_"]').on('change', function() { $newpreview.remove(); }); } }); }; // 兵士編成の武将画像を非表示 function offFace() { if (!options.off_face) { return; } style('#busho_info div[class^="icon_rarity_"] { left: 10px; } #busho_info .img_face { width: 36px; background-image: none !important; } #busho_info .icon_protect { left: 13px; }'); } // 基本兵種 兵種メニューの更新 function updateTypeMenu() { var type_list = '' + createSoldiersList()[1], $select_set_branch = $('#select_set_branch'), id_name = $select_set_branch.attr('id'), default_list, tmpl; if (options.unit_list_default) { default_list = '' + type_list; } else { default_list = type_list; } tmpl = '' + default_list; $select_set_branch.html(tmpl); each_setting = getStorage({}, 'ixamoko_each_setting'); $select_set_branch.val(each_setting.set_unit[id_name]); } // 基本兵種 保存 function defaultUnitSet() { var default_unit = getStorage({}, 'ixamoko_default_unit'); // 全カードが表示されている場合はリフレッシュさせる(※出品中は除外) var grp = $('#select_card_group').val(), pager = $('ul.pager').length; if (Unit.tablen() == 1 && grp == '0' && !pager) { default_unit = {}; } $('span[id^="now_unit_cnt_"]').each(function() { var id_num = $(this).attr('id').match(/\d+/g)[0]; var card_id = $('#card_id_arr_' + id_num).val(); var unit = $('#unit_default_select_' + id_num).val(); default_unit[card_id] = unit; }); setStorage('ixamoko_default_unit', default_unit); } // 基本兵種 layout function unitListDefault() { if (!options.unit_list_default) { return; } var default_unit = getStorage({}, 'ixamoko_default_unit'); $('#default_bulk_set').append('
現在の指揮兵種で
'); $('#branch_container').append('
基本兵種一括
'); $('#sub_view').on('click', function() { if (!$(this).hasClass('selected')) { $(this).html('閉じる'); $('#default_bulk_set').slideDown('fast'); $(this).addClass('selected'); } else { $(this).html('基本兵種一括'); $('#default_bulk_set').slideUp('fast'); $(this).removeClass('selected'); } }); // 指揮兵種を基本兵種記録 $('#now_unit_default').on('click', function() { $('input[id^="now_unit_type_"]').each(function() { var id_num = $(this).attr('id').match(/\d+/g); $('#unit_default_select_' + id_num).val($(this).val()); }); defaultUnitSet(); }); // 基本兵種選択毎の更新 $('body').on('change', 'select[id^="unit_default_select_"]', function() { if ($(this).parent('td').hasClass('squad_overlay')) { return; } var id_num = mekeIdNum($(this).attr('id')), card_id = $('#card_id_arr_' + id_num).val(); default_unit[card_id] = $(this).val(); setStorage('ixamoko_default_unit', default_unit); }); } // 兵士編成 フィルター function setUnitCategoryFilter(mode) { var set_unit_active_select = function(elem, text, type) { if (mode == 1) { return groups_filter(elem); } else { return select_set_branch_filter(elem, text, type); } }, // 表示中カード枚数・兵数のカウント categoryCount = function(elem) { var max = 0, now = 0, len = elem.length, data, html; for (var i = 0; i < len; i++) { data = getGradientData(elem.eq(i)); max += data.max; now += data.num; } if (max > 0 && max == now) { now = '' + now + ''; } $('#crd_num').html(len); $('#max_sol').html(max); $('#set_sol').html(now); $('#sol_detail').show(); }, // 簡易配置ステータスチェック simpleSetStatusCheck = function(elem) { var data, _elem; _elem = elem.filter(function() { data = getGradientData($(this)); if ($('#set_deck').prop('checked')) { if (data.hp == data.hp_max && data.rare != 'miyabi' && data.rare != 'shuku' && data.rare != 'bake') { return this; } } else if ($('#set_union').prop('checked')) { if (data.rare !='miyabi' && data.rare !='shuku' && data.rare !='bake') { return this; } } else { return this; } }).show(); cardSortOrder(); categoryCount(_elem); }, // グループ groups_filter = function(elem) { var $selected = $('#unit_list_bar img.selected'); if (!options.unit_list_group || !$selected.length) { return simpleSetStatusCheck(elem); } var group_idx = $selected.attr('group'), _elem, group_num; _elem = elem.filter(function() { group_num = $(this).find('img[id^="ixamoko_grp"]').attr('id').match(/\d+/g)[0]; if (group_idx == group_num) { return this; } }); return simpleSetStatusCheck(_elem); }, // 兵種 select_set_branch_filter = function(elem, text, type) { var _elem, data; _elem = elem.filter(function() { data = getGradientData($(this)); if (!type) { return this; } else if ((type == 'なし' && !data.type) || type == '未設定') { return this; } else if (type == '槍' || type == '弓' || type == '馬' || type == '砲' || type == '器') { if (SOLDIER.filterType[data.type] == type) { return this; } } else { if (SOLDIER.nameKey[type] == data.type) { return this; } } }); return groups_filter(_elem); }, // 配置可能 set_unit_possible = function(elem, text, type) { var hp, rare, _elem, data; _elem = elem.filter(function() { data = getGradientData($(this)); if (data.hp == data.hp_max && (data.rare != 'miyabi' && data.rare != 'shuku' && data.rare != 'bake')) { return this; } }); return set_unit_active_select(_elem, text, type); }, // 配置不可 set_unit_not_possible = function(elem, text, type) { var hp, rare, _elem, data; _elem = elem.filter(function() { data = getGradientData($(this)); if (data.hp != data.hp_max || data.rare == 'miyabi' || data.rare == 'shuku' || data.rare == 'bake') { return this; } }); return set_unit_active_select(_elem, text, type); }, // 兵数 set_unit_command_num = function(elem, text, type) { var _elem, data; _elem = elem.filter(function() { data = getGradientData($(this)); if ((text == '兵数最大' && data.num === data.max) || (text == '兵数2以上' && data.num >= 2) || (text == '兵数1以上' && data.num >= 1) || (text == '兵数1' && data.num === 1) || (text == '兵数0' && data.num === 0)) { return this; } }); return set_unit_active_select(_elem, text, type); }, // LV set_unit_level_filter = function(elem, text, type) { var _elem, data; _elem = elem.filter(function() { data = getGradientData($(this)); if (text == 'Lv.20' && data.level === 20) { return this; } else if (text == 'Lv.20未満' && data.level < 20) { return this; } else if (text == 'Lv.0' && data.level === 0) { return this; } }); return set_unit_active_select(_elem, text, type); }, // ランク set_unit_rank_filter = function(elem, text, type) { var _elem, data, number; _elem = elem.filter(function() { data = getGradientData($(this)); number = text.replace(/★/, ''); if (number == data.rank) { return this; } }); return set_unit_active_select(_elem, text, type); }, // コスト set_unit_cost_filter = function(elem, text, type) { var _elem, data, num; _elem = elem.filter(function() { data = getGradientData($(this)); num = text.replace(/cost/, ''); if (num == data.cost) { return this; } }); return set_unit_active_select(_elem, text, type); }, // 追加クラス set_unit_class_filter = function(elem, text, type) { var _elem; _elem = elem.filter(function() { if (text == '栞壱' && $(this).hasClass('bookmark1')) { return this; } else if (text == '栞弐' && $(this).hasClass('bookmark2')) { return this; } else if (text == 'お気に入り' && $(this).hasClass('favorites')) { return this; } else if (text == '精鋭部隊' && $(this).hasClass('elite_card')) { return this; } else if (text == '登録なし' && !$(this).hasClass('bookmark1') && !$(this).hasClass('bookmark2') && !$(this).hasClass('favorites') && !$(this).hasClass('elite_card')) { return this; } }); return set_unit_active_select(_elem, text, type); }, set_unit_switching = function(elem, text, type) { switch (text) { case '配置可能': set_unit_possible(elem, text, type); break; case '配置不可': set_unit_not_possible(elem, text, type); break; case '兵数最大': case '兵数2以上': case '兵数1以上': case '兵数1': case '兵数0': set_unit_command_num(elem, text, type); break; case '栞壱': case '栞弐': case 'お気に入り': case '精鋭部隊': case '登録なし': set_unit_class_filter(elem, text, type); break; case 'Lv.20未満': case 'Lv.20': case 'Lv.0': set_unit_level_filter(elem, text, type); break; case '★0': case '★1': case '★2': case '★3': case '★4': case '★5': case '限界/極限': set_unit_rank_filter(elem, text, type); break; case 'cost0': case 'cost0.5': case 'cost1': case 'cost1.5': case 'cost2': case 'cost2.5': case 'cost3': case 'cost3.5': case 'cost4': case 'cost4.5': set_unit_cost_filter(elem, text, type); break; } }; // 実行 var elem = $('table.busho_info').find('TR.tr_gradient').slice(1).hide(), text = $('#category_filter_menu').find('SPAN.now_branch').text(), type = $('#type_filter_menu').find('SPAN.now_branch').text(); if (mode === 0) { return groups_filter(elem); } else if (mode === 2) { return select_set_branch_filter(elem, text, type); } else if (mode === 1 || mode === 3) { return set_unit_switching(elem, text, type); } } // 兵士編成 フィルターlayout function setUnitCardFilter() { installMenulist(); var $unit_filter_menu = $('#unit_filter_menu'); if (!$unit_filter_menu.length) { return; } var cf = false; $(window).scroll(function() { var winTop = $(this).scrollTop(), target = $('#bar_card').offset().top; if (winTop >= target && !cf) { $unit_filter_menu.css({ 'position': 'fixed', 'top': '0', 'z-index': '10', 'width': '720px', 'margin-left': '-10px', 'padding': '5px 10px', 'color': 'white', 'background-color': 'rgba(0, 0, 0, 0.8)' }); cf = true; } if (winTop <= target && cf) { $unit_filter_menu.removeAttr('style'); cf = false; } }); } // 簡易配置・強化合成モード function setUnitModeChange() { if (!options.card_tool) { return; } if ($('img.iepngfix.mb5').length) { return; } var busho_info = function() { return $('#busho_info'); }, tr_gradient = function() { return busho_info().find('tr.tr_gradient').slice(1); }; $('#busho_info').after( '
' + '' + '' + '' + '最初の選択へ' + '' + '
' ); var $top_card_move = $('#top_card_move'); // 通常 $('#set_default').on('change', function() { var $tr = tr_gradient(); $tr.removeClass('deck_leader deck_platoon union_main union_adding'); $top_card_move.hide(); return setUnitCategoryFilter(getActive()); }); // 簡易配置 $('#set_deck').on('change', function() { var $tr = tr_gradient(); $tr.removeClass('union_main union_adding'); $top_card_move.show(); return setUnitCategoryFilter(getActive()); }); // 強化合成 $('#set_union').on('change', function() { var $tr = tr_gradient(); $tr.removeClass('deck_leader deck_platoon'); $top_card_move.show(); return setUnitCategoryFilter(getActive()); }); $top_card_move.on('click', function() { var $deck_leader = $('tr.deck_leader'), $union_main = $('tr.union_main'), sctop; if ($deck_leader.length) { sctop = $deck_leader.offset().top - 50; } else if ($union_main.length) { sctop = $union_main.offset().top - 50; } else { return moko_alert('選択されていません'); } return scrollView(sctop); }); // 簡易配置の選択 var simplePlacement = function($this) { var $table = busho_info(); var $input = $this.find('input[id^="key_str_array_"]'), hp = $input.prev('table').find('td').eq(1).text(), rare = $this.find('div[class^="icon_rarity_"]').attr('class').split('_')[2]; var limit = 8; if (hp != '100/100' || rare == 'miyabi' || rare == 'shuku' || rare == 'bake') { return moko_alert('配置不可能なカードです'); } if (Unit.tablen() > limit) { return moko_alert('空きデッキがありません'); } var command = $this.find('span[id^="now_unit_cnt_"]').text(), le_len = $table.find('.deck_leader').length, pl_len = $table.find('.deck_platoon').length; if (command == '0') { $this.removeClass('deck_leader deck_platoon'); return moko_alert('兵がセットされていません'); } if ($this.hasClass('deck_leader')) { $this.removeClass('deck_leader'); $table.find('.deck_platoon').removeClass('deck_platoon'); } else if (!le_len) { if (pl_len) { $table.find('.deck_platoon').removeClass('deck_platoon'); } else { $this.addClass('deck_leader'); } } else if (le_len) { $this.removeClass('deck_leader'); if ($this.hasClass('deck_platoon')) { $this.removeClass('deck_platoon'); } else if (pl_len < 3) { $this.addClass('deck_platoon'); } } var name_list = [], check = []; $('tr.deck_leader, tr.deck_platoon').each(function() { var card_name = $this.find('a.busho_name').text(); name_list.push(card_name); }); var select_name = $this.find('a.busho_name').text(); check = checkCardName(name_list, select_name); if (check.length) { $this.removeClass('deck_platoon'); return moko_alert(makeLog('武将名が重複しています', check)); } }, // 強化合成の選択 syntheticSelection = function($this) { var rare = $this.find('div[class^="icon_rarity_"]').attr('class').split('_')[2]; if (rare == 'miyabi' || rare == 'shuku' || rare == 'bake') { return; } var $table = busho_info(); var ma_len = $table.find('.union_main').length, ad_len = $table.find('.union_adding').length, protect = $this.find('div[id^="card_protect_icon_"]:visible').length; if ($this.hasClass('union_main')) { $this.removeClass('union_main'); $table.find('.union_adding').removeClass('union_adding'); } else if (!ma_len) { $this.addClass('union_main'); } else if (ma_len) { $this.removeClass('union_main'); if ($this.hasClass('union_adding')) { $this.removeClass('union_adding'); } else if (ad_len < 12) { if (protect) { return moko_alert('保護カードです'); } $this.addClass('union_adding'); } } }; $('body').on('click', '#busho_info tr.tr_gradient', function(e) { if (e.target.tagName == 'A' || e.target.tagName == 'IMG' || e.target.tagName == 'SELECT' || e.target.tagName == 'INPUT' || e.target.tagName == 'OPTION' || e.target.tagName == 'TH' || e.target.tagName == 'SPAN' && e.target.className != 'rank_glay' || e.target.className == 'force_type') { return; } if ($('#set_deck').prop('checked')) { return simplePlacement($(this)); } if ($('#set_union').prop('checked')) { return syntheticSelection($(this)); } }); } // グループ機能 layout function setUnitGroupsLayout() { if (!options.unit_list_group || !Object.keys(groups_img_data).length || location.pathname != '/facility/set_unit_list.php') { return; } var $div = $('#default_bulk_set'), html = '
' + 'グループが' + '' + 'の武将に' + '
'; $div.append(html); $('#grp_img').on('click', function() { if ($('#grps_list').length) { return; } var $panel = $('
').appendTo($div), html = ''; for (var key in groups_img_data) { html += ''; } $panel.append(html); var group = $(this).attr('group'); $('img.bulk_grps_img').each(function() { if (group == $(this).attr('group')) { $(this).css('opacity', 1); } }).on('click', function() { var idx = $(this).attr('group'), src = groups_img_data[idx].src; $('#grp_img').attr({ 'src': src, 'group': idx }); $(this).parent().remove(); }); }); var unit = createSoldiersList()[0]; $('' + '') .appendTo('div.sub_box'); $('#grp_default_set').on('click', function() { var group = $('#grp_img').attr('group'), type = $('#grp_default').val(); $('table.busho_info').find('img[id^="ixamoko_grp_' + group + '_"]').each(function() { $(this).closest('tr').find('select[id^="unit_default_select_"]').val(type); defaultUnitSet(); }); }); $('
アイコン' + '' + '' + '
') .appendTo('#unit_filter_menu'); $('input[name="icon_view"]').on('change', function() { $('#busho_info img[id^="ixamoko_grp"]') .css('opacity', $(this).val()); }); } // グループアイコンの変更 function setUnitGroupsChange() { // 変更パネル表示 $('body').on('click', 'img[id^="ixamoko_grp"]', function() { if ($('#grps_list').length) { return; } $(this).css({ 'border': '2px solid orange', 'margin': '-5px 0 0 -5px' }); var panel = $('
').insertAfter($(this).parent('div')); if (options.off_face) { panel.css({ 'top': '45px', 'left': '-2px' }); } for (var key in groups_img_data) { panel.append(''); } var idx = $(this).attr('id').match(/\d+/g)[0]; $('img.grps_img').each(function() { if (idx == $(this).attr('group')) { $(this).css('opacity', 1); } }); }); // アイコンの変更 $('body').on('click', 'img.grps_img', function() { var idx = $(this).attr('group'), target = $(this).closest('td').find('img[id^="ixamoko_grp"]'), source = target.attr('id').match(/\d+/g), card_id = source[1], src = groups_img_data[idx].src; target.attr({ 'id': 'ixamoko_grp_' + idx + '_' + card_id, 'src': src }).removeAttr('style'); var $tr = $(this).closest('tr.tr_gradient'), status = parseInt($tr.find('table:first').find('td').eq(1).text().match(/\d+/g)[0]); if (status >= 100) { $tr.css('background-color', groups_img_data[idx].color); } groups_set[card_id] = idx; setStorage('ixamoko_groups_set', groups_set); $(this).parent().remove(); }); } // グループアイコンの設置 function installGroupsIcon(target) { target.each(function() { var card_id = $(this).val(), $tr = $(this).closest('tr.tr_gradient'), $td = $tr.children('td').eq(1), $a = $td .children('a.thickbox'), $div = $a.children('div'), $rarity = $div.children('div[class^="icon_rarity_"]'); $a.replaceWith($div); if (Object.keys(groups_img_data).length) { var idx = groups_set[card_id] || '0'; var data = groups_img_data[idx]; $rarity.append(''); // 背景色 if (data.color) { var hpstatus = parseInt($tr.find('table:first td').eq(1).text().split('/')[0]); if (hpstatus >= 100) { $tr.css('background-color', data.color); } } } }); } // 合成 グループアイコンの設置 function unitInstallGroupsIcon(target) { target.each(function() { var card_id = $(this).val(), $tr = $(this).closest('tr.tr_gradient'), $td = $tr.children('td').eq(1), $rarity = $td.find('div[class^="icon_rarity_"]'); if (Object.keys(groups_img_data).length) { var idx = groups_set[card_id] || '0'; var data = groups_img_data[idx]; $rarity.append(''); } }); } // 合成 グループアイコン (onload) function unionGroupImgView() { if (location.pathname != '/union/levelup.php' && location.pathname != '/union/remove.php' && location.pathname != '/union/learn.php' && location.pathname != '/union/additional.php') { return; } if (!options.unit_list_group || !groups_img_data) { return; } return unitInstallGroupsIcon($('input[id^="card_id_arr"]')); } // 合成 グループアイコン (addpage) function addUnionGroupImgView(target) { return options.unit_list_group && groups_img_data ? unitInstallGroupsIcon(target) : void 0; } // グループフィルター用アイコン function setUnitGroupsFilter() { if (!options.unit_list_group || !groups_img_data) { return; } if ($('#bar_card_elite').length) { return; } var $img = $('#busho_info img[id^="ixamoko_grp"]'), $content = $('#groups_img_content'), grp_type = [], html = '', num, selected; $img.each(function() { num = parseInt($(this).attr('id').match(/\d+/g)[0]); grp_type.push(num); }); grp_type = arrayUnique(grp_type); grp_type.sort(function(a, b) { return a - b; }); for (var j = 0, len = grp_type.length; j < len; j++) { for (var key in groups_img_data) { if (key != grp_type[j]) { continue; } html += ''; } } selected = $content.find('img.selected'); if (selected.length) { selected = selected.attr('group'); } $content.html(html); $('img.bar_grps_img').on('click', function() { $content.children('img').removeClass('selected'); $(this).addClass('selected'); setUnitCategoryFilter(getActive()); scrollView(seekOffsetTop()); }); $('#bar_grps_all').on('click', function() { $content.children('img').removeClass('selected'); setUnitCategoryFilter(getActive()); scrollView(seekOffsetTop()); }); $('img[class="bar_grps_img"][group="' + selected + '"]').click(); } // 兵士編成 全般 function unitListCheck() { if (location.pathname != '/facility/set_unit_list.php') { return; } // 精鋭部隊と重複回避 if ($('div.elite_busho_info').length) { return; } //load offFace(); // 武将画像を不可視 auto_btn_change(); // 変更ボタン自動押下 setUnitCardFilter(); // フィルター setUnitModeChange(); // 合成・簡易配置モード setUnitGroupsLayout(); setUnitGroupsChange(); unitListDefault(); // 基本兵種 add_event_unit_set(); // 兵1・定数セット イベント var $busho_info_array = $('table.busho_info'); $busho_info_array.each(function(){ let $busho_info = $(this); // スペース用のTRを削除 var notTR = $busho_info.find('tr:has(td.tb_space)'); notTR.remove(); // THの書き換え var $tr = $busho_info.find('tr.tr_gradient').eq(0); $tr.find('th').eq(3).html('槍/弓').addClass('mk-rank'); $tr.find('th').eq(5).html('馬/器').addClass('mk-rank'); $tr.find('th').eq(7).width(85); if (options.unit_list_default) { $tr.find('th').eq(8).html('基本兵種/兵種'); } $tr.find('th:eq(4), th:eq(6)').remove(); // loop $busho_info.find('tr.tr_gradient').slice(1).each(trGradientCheck); }); // end setUnitGroupsFilter(); // グループフィルター $('div.select_filter ul').css('white-space', 'nowrap'); } // 兵士編成・精鋭部隊 チェック function trGradientCheck(i, element) { var target = $(element); var card_id = target.find('input[id^="card_id_arr"]').val(); var id_num = target.find('input[id^="key_str_array"]').val(); // お気に入り部隊にマーク function unit_hold_mark() { if (!options.favorites_troops_regist) { return; } var favorites_troops = getStorage({}, 'ixamoko_favorites_troops'), displayList = function() { createFavoritesDialog(); return createRecordList([$(this).attr('id').match(/\d+/g)[0]]); }, $img; for (var key in favorites_troops) { for (var i = 0, len = favorites_troops[key].unit.length; i < len; i++) { if (card_id != favorites_troops[key].unit[i].cid) { continue; } $img = target.find('img.img_heart'); if (!target.hasClass('favorites')) { $img.replaceWith(''); target.addClass('favorites'); target.find('a[id^="favorites_id_"]').click(displayList); } } } } // 精鋭部隊にマーク function eliteWriteMark() { if ($('#bar_card_elite').length) { return; } var elite_list = getStorage({}, 'ixamoko_elite_troops'); for (var key in elite_list) { for (var i = 0, len = elite_list[key].unit.length; i < len; i++) { if (card_id != elite_list[key].unit[i].cid) { continue; } target.find('a.busho_name').addClass('elite_mark'); target.addClass('elite_card'); } } } // 栞 function unitAddBookmark() { if (options.card_tool) { var bookmarks = getStorage({}, 'ixamoko_bookmarks'); var setBookmark = function(array, key) { var $td; for (var i = 0, len = array.length; i < len; i++) { if (card_id != array[i]) { continue; } $td = target.find('td').slice(1, 3); $td.css('background-color', BOOKMARK_COLOR[key]); target.addClass(key); } }; for (var key in bookmarks) { setBookmark(bookmarks[key], key); } } } // 基本兵種リスト作成 function createDefaultSelect() { var default_unit = getStorage({}, 'ixamoko_default_unit'), type_list = createSoldiersList()[0], $td, $select, type; $td = target.find('select[id^="unit_id_select"]').parent('td'); type = default_unit[card_id]; $select = $('
').prependTo($td); $select.val(type); if ($td.hasClass('squad_overlay')) { $select.prop('disabled', true); } } // グループアイコン function setUnitGroupsImgView() { if (!options.unit_list_group || !groups_img_data) { return; } var $td = target.children('td').eq(1), $a = $td.children('a.thickbox'), $div = $a.children('div'), $rarity = $div.children('div[class^="icon_rarity_"]'); $a.replaceWith($div); if (Object.keys(groups_img_data).length) { var idx = groups_set[card_id] || '0'; var data = groups_img_data[idx]; $rarity.append(''); // 背景色 if (data.color) { var hpstatus = parseInt(target.find('table').eq(0).find('td').eq(1).text().split('/')[0]); if (hpstatus >= 100) { target.css('background-color', data.color); } } } } // 兵種の色分け function setUnitColor() { if (!options.set_unit_color) { return; } var $img = target.find('img[id^="now_unit_img"]'), type_name = $img.attr('alt'); $img.parent('div').css('background-color', SOLDIER_COLOR[type_name]); } unit_hold_mark(); eliteWriteMark(); unitAddBookmark(); setUnitColor(); unit_set_one(target, id_num); addEventBtnChange(target, id_num); unitListPowerView(target); createDefaultSelect(); setUnitGroupsImgView(); var $icon = target.find('div[class^="icon_rank_"]'), $rank = target.find('td.icon_rank'), rank = target.find('div.rank').next(), rank_num = rank.text(), type = target.find('img[id^="now_unit_img_"]').attr('alt'), hpstatus = target.find('table').eq(0).find('td').eq(1).text().split('/'), $unit_cnt_text = target.find('input[id^="unit_cnt_text"]'), $btn = target.find('input[id^="btn_change"], input[name^="btn_change"]').css('margin-left', '10px'); // 統率覧を移動 $icon.addClass('mk-rank-img'); $rank.eq(0).append($icon.eq(1)); $rank.eq(2).append($icon.eq(3)); target.find('td.icon_rank:odd').remove(); target.find('div.force_type').parent('td').addClass('mk-force-type'); $unit_cnt_text.after($btn); target.children('td:last').remove(); // LV.20 if (rank_num == '20') { rank.addClass('max_level'); } // HP100未満 if (hpstatus[1] - hpstatus[0] != 0) { target.css('background-color', '#600'); } } // カードデータの再構築 function cardDataRebuilding(flag) { if (location.pathname != '/facility/set_unit_list.php') { return; } if ($('#bar_card_elite').length || $('#select_filter_num').val() != '0') { return; } var get_card_id = function(index_page, cid_list) { Info.title('カードIDを収集中...'); var data = { show_num: '100', p: index_page, select_card_group: '0', select_filter_num: '0' }; $.ajax({ type: 'post', url: '/facility/set_unit_list.php', data: data, beforeSend: xrwStatusText, }).then(function(html) { var $html = $(html), max_page = html_max_page($html), $arr = $html.find('input[id^="card_id_arr_"]'), cid; $arr.each(function() { cid = $(this).val(); cid_list.push(cid); }); if (index_page == max_page) { return refresh_card_array(cid_list); } else { index_page++; get_card_id(index_page, cid_list); } }); }, refresh_card_array = function(cid_list) { var new_array = function(a, b) { var x = [], f; for (var i = 0, len = a.length; i < len; i++) { f = false; for (var j = 0, jlen = b.length; j < jlen; j++) { if (a[i] === b[j]) { f = true; break; } } if (f) { x.push(a[i]); } } return x; }; var new_obj = function(a, b) { var o = {}, f; for (var i = 0, len = b.length; i < len; i++) { f = false; for (var key in a) { if (key == b[i]) { f = true; break; } } if (f) { o[key] = a[key]; } } return o; }; if (getStorage(null, 'ixamoko_bookmarks')) { var bookmarks = getStorage({}, 'ixamoko_bookmarks'); var obj = {}; for (var key in bookmarks) { obj[key] = new_array(bookmarks[key], cid_list); } setStorage('ixamoko_bookmarks', obj); } if (getStorage(null, 'ixamoko_groups_set')) { var groups_set = getStorage({}, 'ixamoko_groups_set'); groups_set = new_obj(groups_set, cid_list); setStorage('ixamoko_groups_set', groups_set); } if (getStorage(null, 'ixamoko_default_unit')) { var default_unit = getStorage({}, 'ixamoko_default_unit'); default_unit = new_obj(default_unit, cid_list); setStorage('ixamoko_default_unit', default_unit); } $('#data_rebu').prop('disabled', true); return Info.title('再構築完了', true); }; $('') .css({ 'position': 'absolute', 'right': '125px', 'top': '12px' }) .on('click', function() { if (Unit.tablen() > 1) { window.alert('デッキに配置中のカードがある場合は実行できません'); return false; } if (!confirm('カードデータの再構築を行います\n実行してよろしいですか?')) { return; } if (!flag) { flag = true; } else if (flag) { return; } nowLoading(); get_card_id(1, []); }).appendTo('#frame_00_top'); } // ^ 兵士編成 ```