「シム/その他」の編集履歴(バックアップ)一覧に戻る
シム/その他 - (2012/06/06 (水) 23:58:42) のソース
#include(シム/キャラデータ) #include(シム/クラスデータ) #include(シム/スキルデータ) #javascript(){{ <script language="JavaScript"><!-- (function(d, func) { var check = function() { if (typeof jQuery == 'undefined') return false; func(jQuery); return true; } if (check()) return; var s = d.createElement('script'); s.type = 'text/javascript'; s.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'; d.getElementsByTagName('head')[0].appendChild(s); (function() { if (check()) return; setTimeout(arguments.callee, 100); })(); })(document, function($) { $('#debugclear').click(function(e){$('#debugmsg').empty();}); function _debug(msg,lbl){ // return; dbg = $('#debugmsg'); // alert(dbg.length); if(!dbg.length){ $('body').append('<div id="debugmsg" style="display:none;"></div>'); dbg = $('#debugmsg'); } if(!dbg){/* alert(msg); */}else{dbg.html(dbg.html()+(lbl?'['+lbl+'] '+msg:msg)+"<br />\n");} } // 非同期でうまくロードできないのでコピペ(下記ライセンスはjquery.cookie.jsのもの) /*! * jQuery Cookie Plugin * https://github.com/carhartl/jquery-cookie * * Copyright 2011, Klaus Hartl * Dual licensed under the MIT or GPL Version 2 licenses. * http://www.opensource.org/licenses/mit-license.php * http://www.opensource.org/licenses/GPL-2.0 */ $.cookie = function(key, value, options) {if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {options = $.extend({}, options);if (value === null || value === undefined) {options.expires = -1;}if (typeof options.expires === 'number') {var days = options.expires, t = options.expires = new Date();t.setDate(t.getDate() + days);}value = String(value);return (document.cookie = [encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),options.expires ? '; expires=' + options.expires.toUTCString() : '',options.path ? '; path=' + options.path : '',options.domain ? '; domain=' + options.domain : '',options.secure ? '; secure' : ''].join(''));}options = value || {};var decode = options.raw ? function(s) { return s; } : decodeURIComponent;var pairs = document.cookie.split('; ');for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {if (decode(pair[0]) === key) return decode(pair[1] || '');}return null;}; ////////////////////////////////////////////////// var local_data = {}; function save_local(name,value){ // _debug(value,name); switch(true){ case $.browser.mozilla: case $.browser.opera: case $.browser.safari: case $.browser.msie: return localStorage.setItem(name,value); break; default: return $.cookie(name,value); } } ////////////////////////////////////////////////// function load_local(name,defval){ switch(true){ case $.browser.mozilla: case $.browser.opera: case $.browser.safari: case $.browser.msie: ret = localStorage.getItem(name); break; default: ret = $.cookie(name); } // _debug(ret,name); if (ret) return ret; return defval; } ////////////////////////////////////////////////// function init(order){ $('#font_size').val(load_local('fs')); $('#font_size').change(); clear(); var main = $('#chara_info'); var chi1 = $('#child1_info'); var chi2 = $('#child2_info'); chi1.find('.skills').html(main.find('.skills').html()); chi2.find('.skills').html(main.find('.skills').html()); $('.skill').removeClass('hl0 hl1 hl2 hl3'); for(var skcode in skills){ var hlcls = load_local(skcode); if (hlcls) $('.'+skcode).addClass(hlcls); } plus = load_local('plus'); minus = load_local('minus'); set_myuni_limitadj(plus,minus); $('#sel_myuniadj_plus').val(plus); $('#sel_myuniadj_minus').val(minus); $('.chkcv').val([load_local('cv','stuff')]); $('.chkcv').change(); chv = load_local('chv','self_child'); $('.chkchv').val([chv]); set_sel_chara('child_only'==chv); if (1==load_local('mv')){ $('#chmv').val('mv'); $('#chmv').change(); var x = load_local('x'); var y = load_local('y'); if (x || y) $('.movable').css('top', y).css('left', x); } } ////////////////////////////////////////////////// function clear(){ var main = $('#chara_info'); var chi1 = $('#child1_info'); var chi2 = $('#child2_info'); $('.name').html(' ').removeClass('male female gen1 gen2');; chi1.hide(); chi2.hide(); var all_skills = $('.skill').removeClass('iht dis ena iht1 bold'); // $('#debugmsg').empty(); $('.num').removeClass('maxval'); } ////////////////////////////////////////////////// function clear_block(block){ if (!block) return; if (!block.length) return; // データクリア clear_selectors = ['.name',]; for(var idx in clear_selectors){ selector = clear_selectors[idx]; tmp = block.find(selector); if (tmp){ tmp.html(' '); } } block.find('.lmtadj').html('<td class="num str">0</td><td class="num mgc">0</td><td class="num skl">0</td><td class="num spd">0</td><td class="num luk">0</td><td class="num def">0</td><td class="num mdf">0</td><td class="num bold">0</td>'); block.find('.class_stuff').empty(); block.find('.class_buf').empty(); } ////////////////////////////////////////////////// function set_sel_chara(parent_only){ sel_chara = $('#sel_chara'); sel_chara.empty(); var cnt = 0; for(var idx in chars){ if (idx=='code') continue; if (parent_only && !(chars[idx][10])) continue; // 親のみ表示の場合は、固定子供がいないキャラは省略 val = idx; name = chars[idx][2]; var cls = ' ' + (1==(sex = chars[idx][3])?'male':'female'); cls += ' ' + (1==(gene = chars[idx][1])?'gen1':'gen2'); cls += ' ' + ((chars[idx][10])?'bold':''); sel_chara.append('<option class="'+cls+'" value="'+val+'" label="'+name+'">'+name+'</option>'); cnt++; } sel_chara.attr('size',cnt); } ////////////////////////////////////////////////// function get_class(type,value,sub1,sub2){ var ret = ''; switch(type){ case 'sex': return value==1?'male':'female'; break; case 'gen': return value==1?'gen1':'gen2'; break; case 'num': return value==0?' neutral ':(0<value?' positive ':' negative '); break; case 'cls_prm': ret = value; if (sub1==value) ret +=' bold'; var key = 'acq/'+sub2+'/'+value; if (load_local(key)) ret +=' acquired'; break; case 'cls_name': break; } return ret; } ////////////////////////////////////////////////// function chara_name(characode){ char_info = chars[characode]; if (char_info){ return char_info[2]; } } ////////////////////////////////////////////////// function clsname(classcode,sex){ var clinfo = classes[classcode]; if (clinfo){ switch(classcode){ case 'C014': return 2==sex?'シスター':'僧侶'; case 'C119': if (2==sex) return 'バトルシスター'; // 女性の場合はバトルモンク→バトルシスターに修正 default: } return clinfo[1]; } } ////////////////////////////////////////////////// function set_myuni_limitadj(plus,minus){ if (!plus || !minus) return; var adj = []; ar = myuniadj['sample']; for(var l=0;l<ar.length;l++){ adj[l] = num(myuniadj['plus'][plus][l]) + num(myuniadj['minus'][minus][l]); } adj[adj.length] = 3; // 合計は3のはずなので計算せずに3を入力 chars['U1003'][6] = adj; chars['U1002'][6] = adj; } ////////////////////////////////////////////////// var last_fp = null; var last_ch = null; var last_adj = [0,0,0,0,0,0,0,0]; function get_adj(characode,fpcode){ if (last_fp==fpcode && last_ch==characode) return last_adj; ret = [0,0,0,0,0,0,0,0]; var spcode = chars[characode][11]; if (spcode){ self_limit = chars[spcode][6]; }else{ self_limit = chars[characode][6]; } if (self_limit){ // ['str','mgc','skl','spd','luk','def','mdf','sum']; var bonus = (fpcode && 1<fpcode.length && 1==chars[fpcode][1])?1:0; // 自由親が第1世代の場合のみボーナス sum_limit = 0; for(var idx in self_limit){ if (idx < self_limit.length-1){ // ret[idx] = self_limit[idx] + (spcode?1:0); // 親がいる場合は全パラメータに+1する ret[idx] = self_limit[idx] + bonus; sum_limit += ret[idx]; }else{ ret[idx] = sum_limit; } } if (fpcode && 1<fpcode.length && (fplimit = chars[fpcode][6])){ sum_limit = 0; for(var idx in fplimit){ if (idx < fplimit.length-1){ sum_limit += ret[idx] += fplimit[idx]; }else{ ret[idx] = sum_limit; } } } } last_fp = fpcode; last_ch = characode; last_adj = ret; return ret; } ////////////////////////////////////////////////// function prmlimit(characode,classcode,fpcode){ var chinfo = chars[characode]; var clinfo = classes[classcode]; if (chinfo && clinfo){ var lmtadj = get_adj(characode,fpcode); // ユニット上限補正値 class_limit = clinfo[9]; // クラスパラメータ上限 ret = [class_limit[0]]; for(z=1;z<class_limit.length;z++){ ret[z] = class_limit[z] + (isNaN(lmtadj[z-1])?0:lmtadj[z-1]); } return ret; } return null; } ////////////////////////////////////////////////// function prmbuf(characode,classcode,fpcode){ var prmlmt = prmlimit(characode,classcode,fpcode); if (!prmlmt) return null; var clinfo = classes[classcode]; if (clinfo){ var prmmin = clinfo[10]; // クラスパラメータ下限 ret = []; for(z=0;z<prmmin.length;z++){ ret[z] = prmlmt[z] - prmmin[z]; } return ret; } return null; } ////////////////////////////////////////////////// function keep_max(max,chk){ if(max && chk){ for(var i in max){ if (max[i] < chk[i]) max[i] = chk[i]; } } return max; } ////////////////////////////////////////////////// function num(arg){ return isNaN(arg)?0:arg; } ////////////////////////////////////////////////// function get_td_class_parameters(class_name,params,rowspan,append_tag_class){ if (!params) return; atr_rspan = ''; atr_class = ''; if (1<rowspan) atr_rspan = ' rowspan="'+rowspan+'" '; if (append_tag_class) atr_class = append_tag_class+' '; var pnames = ['hp','str','mgc','skl','spd','luk','def','mdf']; var html ='<td '+atr_rspan+'class="'+atr_class+'class_name">'+class_name+'</td>'; atr_class = atr_class.replace('acquired',''); for(var idx in pnames){ var n = params[idx]; var nm = pnames[idx]; html += '<td '+atr_rspan+'class="'+atr_class+'num '+nm+' n'+n+'">' +n+'</td>' } return html; } ////////////////////////////////////////////////// function acq_skill(block,flg,skcode){ // _debug(flg,skcode); var type = 'acq'; switch(flg){ case true: type = 'fgt'; break; case false: type = 'acq'; break; default: type = flg; } if (block && skcode){ var target = []; skcode = ''+skcode; if (4==skcode.length){ var cls_info = classes[skcode]; if (cls_info){ if (cls_info[6]) set_skill(block,type,cls_info[6]); if (cls_info[7]) set_skill(block,type,cls_info[7]); } }else{ set_skill(block,type,skcode); } } } ////////////////////////////////////////////////// function set_skill(block,type,skcode){ if (block && type && skcode){ var target = []; skcode = ''+skcode; // _debug(skcode,type); // _debug(skcode.length,skcode); if (4==skcode.length){ var cls_info = classes[skcode]; if (cls_info){ if (cls_info[6]) target.push(cls_info[6]); if (cls_info[7]) target.push(cls_info[7]); // 上級職がある場合は上級職の分も追加しておく for(var idx=3;idx<=4;idx++){ if (cls_info[idx]){ var upclsinfo = classes[cls_info[idx]]; if (upclsinfo){ if (upclsinfo[6]) target.push(upclsinfo[6]); if (upclsinfo[7]) target.push(upclsinfo[7]); } } } } }else{ target.push(skcode); } add_class = ''; for (var idx in target){ skcode = target[idx]; var skl = block.find('.'+skcode); if (skl){ var add_class = ''; switch(type){ case 'enable': case 'ena': add_class = 'ena'; break; case 'disable': case 'dis': add_class = 'dis'; break; case 'inherit': case 'iht': case 'iht1': skl.removeClass('iht dis ena iht1'); switch(skcode){ // 継承時の例外 case 'C206S1': // 魔防+10 case 'C206S2': // 居合一閃 case 'C204S2': // 特別な踊り continue; // 上記スキルの場合は継承不可 } add_class = 'iht1'==type?'iht1':'iht'; break; case 'acquired': case 'acq': add_class = 'bold'; break; case 'forget': case 'fgt': skl.removeClass('bold'); break; } // _debug(add_class,skcode); skl.addClass(add_class); } } } } ////////////////////////////////////////////////// function set_charactor_info(block,code,fpcode/* self_codeが子供の場合は、自由親のコード */){ clear_block(block); if (!block) return; if (!block.length) return; // データ表示 if (self_info = chars[code]){ sprt_info = chars[self_info[11]]; fprt_info = chars[fpcode]; sex = self_info[3]; gen = self_info[1]; def_cls_code = self_info[4]?self_info[4]:(fprt_info?fprt_info[4]:null); block.find('.name').text(chara_name(code)).removeClass('male female gen1 gen2') .addClass(get_class('sex',sex)) .addClass(get_class('gen',gen)) .attr('code',code); var lmtadj = get_adj(code,fpcode); html = '<td class="num str'+get_class('num',lmtadj[0])+'">'+num(lmtadj[0])+'</td>' + '<td class="num mgc'+get_class('num',lmtadj[1])+'">'+num(lmtadj[1])+'</td>' + '<td class="num skl'+get_class('num',lmtadj[2])+'">'+num(lmtadj[2])+'</td>' + '<td class="num spd'+get_class('num',lmtadj[3])+'">'+num(lmtadj[3])+'</td>' + '<td class="num luk'+get_class('num',lmtadj[4])+'">'+num(lmtadj[4])+'</td>' + '<td class="num def'+get_class('num',lmtadj[5])+'">'+num(lmtadj[5])+'</td>' + '<td class="num mdf'+get_class('num',lmtadj[6])+'">'+num(lmtadj[6])+'</td>' + '<td class="num bold'+get_class('num',sum_limit)+'">'+sum_limit+'</td>'; block.find('.lmtadj').html(html); // 素質継承 clslst = chars['code'][9]; clstuff = []; self_stuff = self_info[9]; ihrt_stuff = fprt_info?fprt_info[12]:null; sprt_stuff = sprt_info?sprt_info[ 9]:null; fprt_stuff = fprt_info?fprt_info[ 9]:null; for(idx=0;idx<self_stuff.length;idx++){ var sktype = 'iht'; clstuff[idx] = self_stuff[idx]; // デフォルト設定 crtclscode = clslst[idx]; if (sprt_info){ if (1==sprt_info[3]) sktype = 'iht1'; if (!(0<clstuff[idx]) && 0<num(sprt_stuff[idx])) set_skill(block,sktype,crtclscode); // 継承スキル設定(固定親の分) } if (fprt_info){ // 自由親が設定されている場合 if (1==fprt_info[3]) sktype = 'iht1'; // 自由親は転職可能だが、「継承されない」クラスはスキルのみの継承を設定 if (!(0<clstuff[idx]) && 0<num(fprt_stuff[idx])){ switch(crtclscode){ case 'C001': case 'C017': // ロード case 'C101': case 'C123': // マスターロード // (ルキナは自前でマスターロード転職可能なため、ここで考慮する必要なし) if (1==sex) set_skill(block,sktype,'C101S2'); // 息子の場合は王の器のみ継承 if (2==sex) set_skill(block,sktype,'C101S1'); // 娘の場合は天空のみ継承 break; case 'C207': // オーバーロード set_skill(block,sktype,'C999S2'); break; default: set_skill(block,sktype,crtclscode); // 継承スキル設定(自由親の分) } } if (!clstuff[idx] && ihrt_stuff[idx]){ // 自前の継承が0か未設定のもののみ、継承チェック chk_cls = num(ihrt_stuff[idx]);; switch(chk_cls){ case 3: if (1==sex) clstuff[idx] = chk_cls; break; // 息子限定で引継ぎ case 4: if (2==sex) clstuff[idx] = chk_cls; break; // 娘限定で引継ぎ default: clstuff[idx] = chk_cls; } } } } // 特殊処理 if (init_skills = self_info[8]){ // 初期スキル設定 init_skills = init_skills.split(' '); for(var idx in init_skills) set_skill(block,'ena',init_skills[idx]); } // 全員習得可能スキル(スキルの書) set_skill(block,'ena','C300S1'); // 全能力+2 set_skill(block,'ena','C300S2'); // エリート // 素質出力 var clcodes = chars['code'][9]; var cstuff = block.find('.class_stuff'); // 上限値 var cbuf = block.find('.class_buf'); // 伸び代 cstuff.empty(); cbuf.empty(); var maxprms = [0,0,0,0,0,0,0,0,0]; var last_ucls2_code = null; // 前クラスの第二上級職 var sumlowcls = 0; var sumupcls = 0; for(ii=0;ii<clstuff.length;ii++){ cnd = clstuff[ii]; if (!cnd || cnd<=0) continue; var clcode = clcodes[ii]; // 下級職コード取得 var clinfo = classes[clcode]; // 下級職情報取得 set_skill(block,'ena',clcode); // スキル有効化 ucls1_code = clinfo[3]; ucls1_info = classes[ucls1_code]; ucls2_code = clinfo[4]; ucls2_info = ucls2_code?classes[ucls2_code]:null; upcls_rowspan = 1; if (last_ucls2_code){ if (ucls1_code==last_ucls2_code){ // 前クラスの第二上級職が、現クラスの第一上級職と同じ場合 upcls_rowspan = 2; } var clsnm = clsname(last_ucls2_code,sex); var apdcls = get_class('cls_prm',last_ucls2_code,def_cls_code,code); acq_skill(block,apdcls.search('acquired')<0,last_ucls2_code); tr = '<tr>' + get_td_class_parameters(clsnm,prmlimit(code,last_ucls2_code,fpcode),upcls_rowspan,apdcls) + '</tr>'; cstuff.append(tr); var pbuf = prmbuf(code,last_ucls2_code,fpcode); maxprms = keep_max(maxprms,pbuf); tr = '<tr>' + get_td_class_parameters(clsnm,pbuf,upcls_rowspan,apdcls) + '</tr>'; cbuf.append(tr); sumupcls++; } last_ucls2_code = ucls2_code; lowcls_rowspan = ucls2_code?2:1; // 現クラスの上級職が二つある場合は下級職のrowspan=2、一つならrowspan=1 var tr1='',tr2=''; if (2==clinfo[0]){ tr1 = tr2 = '<tr><td colspan="9" class=""></td>'; }else{ tr1 = tr2 = '<tr>'; sumlowcls++; } clsnm = clsname(clcode,sex); apdcls = get_class('cls_prm',clcode,def_cls_code,code); // _debug(apdcls); // _debug(apdcls.search('acquired')); acq_skill(block,apdcls.search('acquired')<0,clcode); tr1 += get_td_class_parameters(clsnm,prmlimit(code,clcode,fpcode),lowcls_rowspan,apdcls); maxprms = keep_max(maxprms,pbuf = prmbuf(code,clcode,fpcode)); tr2 += get_td_class_parameters(clsnm,pbuf,lowcls_rowspan,apdcls); if (1==upcls_rowspan){ // 前クラスの第二上級職と重複していない場合は、現クラスの第一上級職を出力 clsnm = clsname(ucls1_code,sex); apdcls = get_class('cls_prm',ucls1_code,def_cls_code,code); acq_skill(block,apdcls.search('acquired')<0,ucls1_code); tr1 += get_td_class_parameters(clsnm,prmlimit(code,ucls1_code,fpcode),1,apdcls) maxprms = keep_max(maxprms,pbuf = prmbuf(code,ucls1_code,fpcode)); tr2 += get_td_class_parameters(clsnm,pbuf,1,apdcls); sumupcls++; } tr1 += '</tr>' tr2 += '</tr>' cstuff.append(tr1); cbuf.append(tr2); } // 終了処理 if (last_ucls2_code){ clsnm = clsname(last_ucls2_code,sex); apdcls = get_class('cls_prm',last_ucls2_code,def_cls_code,code); acq_skill(block,apdcls.search('acquired')<0,last_ucls2_code); tr = '<tr>' + get_td_class_parameters(clsnm,prmlimit(code,last_ucls2_code,fpcode),1,apdcls) + '</tr>'; cstuff.append(tr); maxprms = keep_max(maxprms,pbuf = prmbuf(code,last_ucls2_code,fpcode)); tr = '<tr>' + get_td_class_parameters(clsnm,pbuf,1,apdcls) + '</tr>'; cbuf.append(tr); sumupcls++; } block.find('.sumlowcls').text(sumlowcls);; block.find('.sumupcls').text(sumupcls);; pnames = ['hp','str','mgc','skl','spd','luk','def','mdf']; for(var idx in pnames){ var pn = pnames[idx]; // パラメータ識別子 var mn = maxprms[idx]; // 各パラメータ中の最大値 var selector = '.num + .'+pn+' + .n'+mn; clspn = '.'+pn; clsmn = '.n'+mn; cbuf.find('.num' + clspn + clsmn).addClass('maxval'); } block.show(); } } ////////////////////////////////////////////////// function select_charactor(code,spouse){ if (info = chars[code]){ var block1 = $('#chara_info'); var block2 = $('#child1_info').hide(); var block3 = $('#child2_info').hide(); var blk_self = block1; var blk_cld1 = block2; var blk_cld2 = block3; clear_block(block1); clear_block(block2); clear_block(block3); var chv = $('input:radio[name="chara_view"]:checked').val(); switch(chv){ case 'child_only': blk_self = null; // 親(自分)は表示しない if (info[10]){ // 固有の子供がいる場合 blk_cld1 = block1; blk_cld2 = block2; }else{ // いない場合は第一ブロックを配偶者の子供用にする blk_cld2 = block1; } break; case 'self_child': case 'all': break; } clear(); // 本人の情報表示 set_charactor_info(blk_self,code,null); // 子供情報表示 child1_code = info[10]; set_charactor_info(blk_cld1,child1_code,spouse); // 伴侶セレクター spouses = info[13]; sel_spouse = $('#sel_spouse'); sel_spouse.empty(); sel_spouse.append('<option value="0" label=""></option>'); var cnt = 1; for(var idx in spouses){ selected = ''; spouses_code = spouses[idx]; spouses_name = chara_name(spouses_code); spouse_info = chars[spouses_code]; if (spouses_code==spouse){ selected = ' selected="selected" '; child2_code = spouse_info[10]; set_charactor_info(blk_cld2,child2_code,code); // 伴侶側の子供情報のため、sub_codeには本人のコードを渡す } cls = ' ' + (1==(sex = spouse_info[3])?'male':'female'); cls += ' ' + (1==(gene = spouse_info[1])?'gen1':'gen2'); cls += ' ' + ((spouse_info[10])?'bold':''); sel_spouse.append('<option class="'+cls+'" value="'+spouses_code+'" label="'+spouses_name+'"'+selected+'>'+spouses_name+'</option>'); cnt++; } sel_spouse.attr('size',cnt); } } ////////////////////////////////////////////////// $('#font_size').change(function(e){ var v = $(this).val(); var b = $('*'); b.removeClass('fonts fontxs fontxxs'); switch(v){ case 's': b.addClass('fonts'); break; case 'xs': b.addClass('fontxs'); break; case 'xxs': b.addClass('fontxxs'); break; } save_local('fs',v); e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('#chmv').change(function(e){ var v = $(this).attr('checked'); save_local('mv',0+!!v); if (v){ $('.movable').css('position', 'absolute'); $('.movable').css('float', 'left'); }else{ $('.movable').css('position', 'static'); $('.movable').css('float', 'none'); } e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('#rev_movable').click(function(e){ }); ////////////////////////////////////////////////// $('.movable').mousedown(function(e) { if (!$('#chmv').attr('checked')) return true; var t = $(this); var x1 = e.pageX, x = t.offset().left; var y1 = e.pageY, y = t.offset().top; t.css('cursor', 'move'); t.bind('mousemove.movable', function(e) { x += e.pageX - x1; y += e.pageY - y1; t.css('top', y).css('left', x); x1 = e.pageX; y1 = e.pageY; save_local('x',x); save_local('y',y); return false; }).one('mouseup', function() { t.css('cursor', 'auto'); t.unbind('mousemove.movable'); }); return true; }); ////////////////////////////////////////////////// $('#sel_chara,#sel_spouse').change(function(e){ var code = $('#sel_chara').val(); var spouse = $('#sel_spouse').val(); var key = 'spouse/'+code; var id = $(this).attr('id'); switch(id){ case 'sel_chara': var sps = load_local(key); if (sps){ spouse = sps; }else{ spouse = "0"; } break; case 'sel_spouse': save_local(key,spouse); } select_charactor(code,spouse); e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('#sel_myuniadj_plus,#sel_myuniadj_minus').change(function(e){ tp = $(this).attr('id').substr(13); pname = $(this).val(); $(this).removeClass('hp str mgc skl spd luk def mdf'); $(this).addClass(pname); plus = $('#sel_myuniadj_plus').val(); minus = $('#sel_myuniadj_minus').val(); set_myuni_limitadj(plus,minus); save_local('plus',plus); save_local('minus',minus); $('#sel_chara,#sel_spouse').change(); e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('.chkcv').change(function(e){ var cv = $(('input:radio[name="class_view"]:checked')).val(); if (!cv) cv = 'stuff'; var tgl = ['stuff','buf']; $('.class_stuff,.class_buf').hide(); $('.class_'+cv).show(); save_local('cv',cv); e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('.chkchv').change(function(e){ var chv = $(('input:radio[name="chara_view"]:checked')).val(); if (!chv) chv = 'self_child'; set_sel_chara('child_only'==chv); var tgl = ['all','self_child','child_only']; save_local('chv',chv); e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('.skill').click(function(e){ var ret = false; var hl_loop = {'hl0':'hl1','hl1':'hl2','hl2':'hl3','hl3':'hl0'} var skl = $(this).attr('class').match(/C\d\d\dS\d/); var target = $(this); if (skl){ target = $('.'+skl); } for(var idx in hl_loop){ if (target.hasClass(idx)){ target.removeClass(idx); target.addClass(hl_loop[idx]); ret = hl_loop[idx]; break; } } if (!ret){ target.addClass('hl1'); // どのクラスも設定されていない場合は、hl0だったと見なして強調表示を一段階上げる ret = 'hl1'; } save_local(skl,ret); e.stopPropagation(); return false; }); ////////////////////////////////////////////////// $('.class_name').live('click',(function(e){ var t = $(this); var cls = t.attr('class').match(/C\d\d\d/); var top = t.parents('.info_top'); var cd = top.find('.name').attr('code'); t = top.find('.'+cls + '.class_name'); var tgl = 'acquired'; t.toggleClass(tgl); var h = t.hasClass(tgl); save_local('acq/'+cd+'/'+cls,h); var tp = h?'acq':'fgt'; acq_skill(top,tp,''+cls); e.stopPropagation(); return false; })); init(); }); //--> </script> }}