卡片数据/SIF2

来自LoveLive! AS Wiki
稀有度 属性 名称 角色 Smile Pure Cool 技能效果 技能等效数值 Smile Pure Cool
[data-attr="1"] > :is(.smile, .smile-power) { font-weight: bold; } [data-attr="2"] > :is(.pure, .pure-power) { font-weight: bold; } [data-attr="3"] > :is(.cool, .cool-power) { font-weight: bold; } td:is(.smile, .smile-power) { color: red; } td:is(.pure, .pure-power) { color: green; } td:is(.cool, .cool-power) { color: blue; } #card-display [data-attr="1"] { background-color: #ff00001f; } #card-display [data-attr="2"] { background-color: #00ff001f; } #card-display [data-attr="3"] { background-color: #0000ff1f; } #card-display [data-attr="1"]:hover { background-color: #ff00003f; } #card-display [data-attr="2"]:hover { background-color: #00ff005f; } #card-display [data-attr="3"]:hover { background-color: #0000ff4f; }
var sktype;(function(sktype){sktype[sktype["score_bad"]=1]="score_bad";sktype[sktype["judge"]=2]="judge";sktype[sktype["heal"]=3]="heal";sktype[sktype["score_perfect"]=4]="score_perfect"})(sktype||(sktype={}));var trtype;(function(trtype){trtype[trtype["note"]=1]="note";trtype[trtype["combo"]=2]="combo";trtype[trtype["perfect"]=3]="perfect";trtype[trtype["time"]=4]="time"})(trtype||(trtype={}));var changemod;(function(changemod){changemod[changemod["constant"]=0]="constant";changemod[changemod["lvall"]=1]="lvall";changemod[changemod["lv2468"]=2]="lv2468";changemod[changemod["lv258"]=3]="lv258";changemod[changemod["lv47"]=4]="lv47";changemod[changemod["lv59"]=5]="lv59";changemod[changemod["lv5"]=6]="lv5"})(changemod||(changemod={}));var tgtype;(function(tgtype){tgtype[tgtype["none"]=-1]="none";tgtype[tgtype["all"]=0]="all";tgtype[tgtype["muse"]=100]="muse";tgtype[tgtype["aqours"]=200]="aqours";tgtype[tgtype["niji"]=300]="niji";tgtype[tgtype["liella"]=400]="liella";tgtype[tgtype["pts"]=101]="pts";tgtype[tgtype["llw"]=102]="llw";tgtype[tgtype["bibi"]=103]="bibi";tgtype[tgtype["cyr"]=201]="cyr";tgtype[tgtype["aaa"]=202]="aaa";tgtype[tgtype["gk"]=203]="gk";tgtype[tgtype["dd"]=301]="dd";tgtype[tgtype["azn"]=302]="azn";tgtype[tgtype["q4"]=303]="q4";tgtype[tgtype["r3b"]=304]="r3b"})(tgtype||(tgtype={}));function gettext(){return $('#card-data').text()}function initial_submit(string){$('#card-display > tbody').append(string)}var data_parsed=new Map();function sif2_cardlist_init(){var name_map=new Map([[1001,"穗乃果"],[1002,"绘里"],[1003,"小鸟"],[1004,"海未"],[1005,"凛"],[1006,"真姬"],[1007,"希"],[1008,"花阳"],[1009,"妮可"],[2001,"千歌"],[2002,"梨子"],[2003,"果南"],[2004,"黛雅"],[2005,"曜"],[2006,"善子"],[2007,"花丸"],[2008,"鞠莉"],[2009,"露比"],[3001,"步梦"],[3002,"霞"],[3003,"雫"],[3004,"果林"],[3005,"爱"],[3006,"彼方"],[3007,"雪菜"],[3008,"艾玛"],[3009,"璃奈"],[3010,"栞子"],[3011,"米娅"],[3012,"岚珠"],[4001,"香音"],[4002,"可可"],[4003,"千砂都"],[4004,"堇"],[4005,"恋"],[4006,"希奈子"],[4007,"芽衣"],[4008,"四季"],[4009,"夏美"],]);var text=gettext();var table_lines=text.split('\n').map(function(line){var parts=line.split('|');var _a=parts[0].split(','),name=_a[1];var _b=parts[0].split(',').map(function(v){return parseInt(v)}),id=_b[0],type=_b[2],rarity=_b[3],hp1=_b[4],smile=_b[5],pure=_b[6],cool=_b[7];var masterCharacterId=parse_id(id).masterCharacterId;var skill_by_level=parse_skill(parts[2].split(',').map(function(v){return parseInt(v)}));var _c=parts[2].split(',').map(function(v){return parseInt(v)}),ce1=_c[0],cetg1=_c[1],cev1=_c[2],ce2=_c[3],cetg2=_c[4],cev2=_c[5];data_parsed.set(id,{id:id,masterCharacterId:masterCharacterId,name:name,type:type,rarity:rarity,hp:hp1-1,smile:smile,pure:pure,cool:cool,skill_by_level:skill_by_level,ce1:ce1,cetg1:cetg1,cev1:cev1,ce2:ce2,cetg2:cetg2,cev2:cev2});return"<tr data-sif2-card-id=\"".concat(id,"\" data-rarity=\"").concat(rarity,"\" data-attr=\"").concat(type,"\" data-character=\"").concat(masterCharacterId,"\">\n<td data-sort-value=\"").concat(rarity,"\">").concat({1:"R",2:"SR",3:"UR"}[rarity],"</td>\n<td data-sort-value=\"").concat(type,"\">").concat({1:"Smile",2:"Pure",3:"Cool"}[type],"</td>\n<td>").concat(name,"</td>\n<td data-sort-value=\"").concat(masterCharacterId,"\">").concat(name_map.get(masterCharacterId),"</td>\n<td data-sort-value=\"").concat(smile,"\" class=\"smile\">").concat(smile,"</td>\n<td data-sort-value=\"").concat(pure,"\" class=\"pure\">").concat(pure,"</td>\n<td data-sort-value=\"").concat(cool,"\" class=\"cool\">").concat(cool,"</td>\n<td data-sort-value=\"").concat(skill_by_level.get(1).type,"/").concat(skill_by_level.get(1).trigger,"/").concat(skill_by_level.get(1).target,"\" class=\"skill-description\"></td>\n<td class=\"skill-power\"></td>\n<td class=\"smile-power\"></td>\n<td class=\"pure-power\"></td>\n<td class=\"cool-power\"></td>\n</tr>")});table_lines.forEach(function(s){initial_submit(s)})}function update_submit(id,skill_description,skill_value,smile_power,pure_power,cool_power){$("[data-sif2-card-id=\"".concat(id,"\"] > .skill-description")).html(skill_description);$("[data-sif2-card-id=\"".concat(id,"\"] > .skill-power")).html(Math.round(skill_value).toString());$("[data-sif2-card-id=\"".concat(id,"\"] > .smile-power")).html(Math.round(smile_power).toString());$("[data-sif2-card-id=\"".concat(id,"\"] > .pure-power")).html(Math.round(pure_power).toString());$("[data-sif2-card-id=\"".concat(id,"\"] > .cool-power")).html(Math.round(cool_power).toString())}function skill_description(skill){var template=null;switch(skill.type){case sktype.score_bad:template="每{0}{10}有{1}%概率<br>在{2}秒内{11}点击分数增加{3}";break;case sktype.judge:template="每{0}{10}有{1}%概率<br>在{2}秒内{11}PERFECT判定范围扩大{3}阶";break;case sktype.heal:template="每{0}{10}有{1}%概率<br>回复{3}体力";break;case sktype.score_perfect:template="每{0}{10}有{1}%概率<br>在{2}秒内{11}PERFECT时点击分数增加{3}";break}template=template.replace("{0}",(skill.tr/(skill.trigger===trtype.time?1000:1)).toString());template=template.replace("{10}",{1:"个节奏图示",2:"COMBO",3:"次PERFECT",4:"秒"}[skill.trigger]);template=template.replace("{1}",(skill.pb/100).toString());template=template.replace("{2}",(skill.tm/1000).toString());template=template.replace("{3}",(skill.ev).toString());template=template.replace("{11}",skill.target!==0?"\u4F7F".concat({100:"μ’s",200:"Aqours",300:"虹咲",400:"Liella!"}[skill.target],"\u6210\u5458\u7684"):"");return template};var background_settings={chart_time_sec:100,total_notes:800,press_rate:8,swing_rate:15,perfect_rate:96,song_group:tgtype.none,ally_average:4000,center_bonus:20,group_weight:30,attr_weight:50,self_weight:10,is_group:false,skill_level_r:3,skill_level_sr:5,skill_level_ur:9};function sif2_cardlist_data_update(){data_parsed.forEach(function(value,key){var id=key;var _a=data_parsed.get(id),rarity=_a.rarity,masterCharacterId=_a.masterCharacterId,attribute=_a.type,smile=_a.smile,pure=_a.pure,cool=_a.cool,skill_by_level=_a.skill_by_level;var skill_level_r=background_settings.skill_level_r,skill_level_sr=background_settings.skill_level_sr,skill_level_ur=background_settings.skill_level_ur,total_notes=background_settings.total_notes,press_rate=background_settings.press_rate,swing_rate=background_settings.swing_rate,perfect_rate=background_settings.perfect_rate,chart_time_sec=background_settings.chart_time_sec,song_group=background_settings.song_group,self_weight=background_settings.self_weight,center_bonus=background_settings.center_bonus,group_weight=background_settings.group_weight,attr_weight=background_settings.attr_weight,ally_average=background_settings.ally_average;var skill_level=0;switch(rarity){case 1:skill_level=skill_level_r;break;case 2:skill_level=skill_level_sr;break;case 3:skill_level=skill_level_ur;break}var skill_current=skill_by_level.get(skill_level);var trigger=skill_current.trigger,target=skill_current.target,tr=skill_current.tr,type=skill_current.type,tm=skill_current.tm,pb=skill_current.pb,ev=skill_current.ev;var chances=(trigger===trtype.time?chart_time_sec*1000:total_notes)*((trigger===trtype.note||trigger===trtype.perfect)&&(1+press_rate/100)||1)/tr*(trigger===trtype.perfect?(perfect_rate/100):1)-0.5;var gap_ratio=0,enable_softcap=true;if(type===sktype.score_bad||type===sktype.score_perfect||type===sktype.judge){if(trigger===trtype.time){gap_ratio=tr/tm;enable_softcap=false}else if(trigger===trtype.combo)gap_ratio=tr/total_notes*chart_time_sec/(tm/1000);else if(trigger===trtype.note)gap_ratio=tr/(total_notes*(1+press_rate/100))*chart_time_sec/(tm/1000);else if(trigger===trtype.perfect)gap_ratio=tr/(perfect_rate/100)/(total_notes*(1+press_rate/100))*chart_time_sec/(tm/1000)}else enable_softcap=false;var r=enable_softcap?(0.6/Math.sqrt(tm/1000)):0;var loss_rates=[],loss_rate_raws=[];var loss_rate_raw=1;if(gap_ratio>0){while(true){if(loss_rate_raw<-50)throw new Error();loss_rates.push(enable_softcap?softcap(loss_rate_raw,r):Math.max(loss_rate_raw,0));loss_rate_raws.push(loss_rate_raw);if(loss_rate_raw<-r)break;loss_rate_raw-=gap_ratio}}var activates=chances*pb/10000-(chances*pb/10000-1)*loss_rates.reduce(function(prev,loss_rate,i){if(i>=1)prev+=loss_rate*(pb/10000)*Math.pow((1-pb/10000),(i-1));return prev},0)-loss_rate_raws.reduce(function(prev,loss_rate,i,a){if(i===0)return 0;if(a[i]>0)prev+=(a[i-1]+a[i])/2*(pb/10000)*Math.pow((1-pb/10000),(i-1));else if(a[i-1]>0)prev+=Math.pow(a[i-1],2)/(a[i-1]-a[i])/2*(pb/10000)*Math.pow((1-pb/10000),(i-1));return prev},0);var absolute_attribute=0,relative_attribute=0;if(type===sktype.score_bad||type===sktype.score_perfect){var score_once=ev*(tm/1000)*total_notes*(1+press_rate/100)/chart_time_sec*(type===sktype.score_perfect?(perfect_rate/100):1);absolute_attribute+=score_once*activates/(1/80*(1+center_bonus/100)*(1+group_weight/100*0.1)*(1+attr_weight/100*0.1)*(total_notes*(1+press_rate/100*1.5-swing_rate/100*0.5))*(0.88+0.12*perfect_rate/100)*(average_combo_bonus(total_notes)));if(target===tgtype.all)true;else if(target===tgtype.muse||target===tgtype.aqours||target===tgtype.niji||target===tgtype.liella)absolute_attribute*=0.5;else throw new Error();}else if(type===sktype.judge){var coverage_rate=activates*(tm/1000)/chart_time_sec;relative_attribute+=(0.88+0.12*(1-(1-perfect_rate/100)*(1-coverage_rate)))/(0.88+0.12*perfect_rate/100)-1}var smile_power=smile+absolute_attribute+(smile+8*ally_average)*(relative_attribute+(attribute===1&&(self_weight/(attr_weight+1000))||0)+(member_target_group_test(song_group,masterCharacterId)&&(self_weight/(group_weight+1000))||0));var pure_power=pure+absolute_attribute+(pure+8*ally_average)*(relative_attribute+(attribute===2&&(self_weight/(attr_weight+1000))||0)+(member_target_group_test(song_group,masterCharacterId)&&(self_weight/(group_weight+1000))||0));var cool_power=cool+absolute_attribute+(cool+8*ally_average)*(relative_attribute+(attribute===3&&(self_weight/(attr_weight+1000))||0)+(member_target_group_test(song_group,masterCharacterId)&&(self_weight/(group_weight+1000))||0));var skill_text=skill_description(skill_current);var skill_power=absolute_attribute+relative_attribute*(9*ally_average);update_submit(id,skill_text,skill_power,smile_power,pure_power,cool_power)})}function member_target_group_test(g,m){switch(g){case tgtype.none:return false;case tgtype.muse:return Math.floor(m/1000)===1;case tgtype.aqours:return Math.floor(m/1000)===2;case tgtype.niji:return Math.floor(m/1000)===3;case tgtype.liella:return Math.floor(m/1000)===4;case tgtype.pts:return m===1001||m===1003||m===1008;case tgtype.llw:return m===1004||m===1005||m===1007;case tgtype.bibi:return m===1002||m===1006||m===1009;case tgtype.cyr:return m===2001||m===2005||m===2009;case tgtype.aaa:return m===2003||m===2004||m===2007;case tgtype.gk:return m===2002||m===2006||m===2008;case tgtype.dd:return m===3004||m===3005;case tgtype.azn:return m===3001||m===3003||m===3007;case tgtype.q4:return m===3002||m===3006||m===3008||m===3009;case tgtype.r3b:return m===3010||m===3011||m===3012;default:throw new Error();}}function average_combo_bonus(n){if(n<=50)return 1;if(n<=100)return(50+1.1*(n-50))/n;if(n<=200)return(105+1.15*(n-100))/n;if(n<=400)return(220+1.2*(n-200))/n;if(n<=600)return(460+1.25*(n-400))/n;if(n<=800)return(710+1.3*(n-600))/n;return(970+1.35*(n-800))/n}function softcap(v,r){if(r===void 0){r=0.3}if(v<=-r)return 0;else if(v>=r)return v;else return Math.pow((v+r),2)/r/4}sif2_cardlist_init();sif2_cardlist_data_update();function parse_id(id){var masterCharacterId=Math.floor(id/10000);var illustId=[("00000"+masterCharacterId.toString()).slice(-5),("0000"+(id%10000).toString()).slice(-4),"00"].join('_');var evolveIllustId=[("00000"+masterCharacterId.toString()).slice(-5),("0000"+(id%10000).toString()).slice(-4),"01"].join('_');return{id:id,masterCharacterId:masterCharacterId,illustId:illustId,evolveIllustId:evolveIllustId}}function parse_skill(_a){var sktype=_a[0],trtype=_a[1],tgtype=_a[2],tr_cm=_a[3],tr_lv1=_a[4],tr_up=_a[5],pb_cm=_a[6],pb_lv1=_a[7],pb_up=_a[8],tm_cm=_a[9],tm_lv1=_a[10],tm_up=_a[11],ev_cm=_a[12],ev_lv1=_a[13],ev_up=_a[14];var skill_by_level=new Map();var trlist=parse_changemod(tr_cm,tr_lv1,tr_up);var pblist=parse_changemod(pb_cm,pb_lv1,pb_up);var tmlist=parse_changemod(tm_cm,tm_lv1,tm_up);var evlist=parse_changemod(ev_cm,ev_lv1,ev_up);for(var lv=1;lv<=9;lv+=1){skill_by_level.set(lv,{type:sktype,trigger:trtype,target:tgtype,tr:trlist[lv-1],pb:pblist[lv-1],tm:tmlist[lv-1],ev:evlist[lv-1]})}return skill_by_level}function parse_changemod(cm,lv1,up){var vlist=[1,2,3,4,5,6,7,8,9];switch(cm){case changemod.constant:return vlist.map(function(v){return 0*up+lv1});case changemod.lvall:return vlist.map(function(v){return(v-1)*up+lv1});case changemod.lv2468:return vlist.map(function(v){return Math.floor(v/2)*up+lv1});case changemod.lv258:return vlist.map(function(v){return Math.floor((v+1)/3)*up+lv1});case changemod.lv47:return vlist.map(function(v){return Math.floor((v-1)/3)*up+lv1});case changemod.lv59:return vlist.map(function(v){return Math.floor((v-1)/4)*up+lv1});case changemod.lv5:return vlist.map(function(v){return lv1+(v>=5&&up||0)})}}