Optimize ui.click.charactercard alongside all related code.
This commit is contained in:
parent
cfa31f19f6
commit
9e7e5eba2c
|
@ -19199,7 +19199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
雾岛佳乃:['Kirishima','Kano'],
|
雾岛佳乃:['Kirishima','Kano'],
|
||||||
苍井绘梨花:['Aoi','Erika'],
|
苍井绘梨花:['Aoi','Erika'],
|
||||||
藏里见:['Kura','Satomi'],
|
藏里见:['Kura','Satomi'],
|
||||||
喵呜·喵呼:['Myau','Mya-fu'],
|
'喵呜·喵呼':['Myau','Mya-fu'],
|
||||||
喵呜喵呼:['Myau','Mya-fu'],
|
喵呜喵呼:['Myau','Mya-fu'],
|
||||||
伊吹风子:['Ibuki','Fuuko'],
|
伊吹风子:['Ibuki','Fuuko'],
|
||||||
久岛鸥:['Kushima','Kamome'],
|
久岛鸥:['Kushima','Kamome'],
|
||||||
|
|
|
@ -192,9 +192,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
xizhicai:['male','wei',3,['tiandu','xianfu','chouce']],
|
xizhicai:['male','wei',3,['tiandu','xianfu','chouce']],
|
||||||
quyi:['male','qun',4,['fuqi','jiaozi']],
|
quyi:['male','qun',4,['fuqi','jiaozi']],
|
||||||
|
|
||||||
luzhi:['male','wei',3,['qingzhong','weijing']],
|
luzhi:['male','wei',3,['qingzhong','weijing']]
|
||||||
|
|
||||||
//kaisa:["male","western",4,["zhengfu"]],
|
|
||||||
},
|
},
|
||||||
characterIntro:{
|
characterIntro:{
|
||||||
caoxi:'曹羲(?-249年),字昭叔。曹真之子,曹爽之弟。为人有学识,明律法。司马懿曾组织朝议改革九品中正制废除九品而留中正,曹羲认为此举并无区别,最终都是决定于人的人治。曹爽掌权后,受封中领军,掌握禁兵,封安乡侯。曹爽及诸兄弟轻视司马懿,恣意妄为,经常外出狩猎,曹羲屡次劝谏,不被采纳。249年,司马懿发动高平陵政变,被夷三族。',
|
caoxi:'曹羲(?-249年),字昭叔。曹真之子,曹爽之弟。为人有学识,明律法。司马懿曾组织朝议改革九品中正制废除九品而留中正,曹羲认为此举并无区别,最终都是决定于人的人治。曹爽掌权后,受封中领军,掌握禁兵,封安乡侯。曹爽及诸兄弟轻视司马懿,恣意妄为,经常外出狩猎,曹羲屡次劝谏,不被采纳。249年,司马懿发动高平陵政变,被夷三族。',
|
||||||
|
@ -12907,47 +12905,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//英文版特典武将凯撒
|
|
||||||
zhengfu:{
|
|
||||||
trigger:{
|
|
||||||
player:"useCardToPlayered",
|
|
||||||
},
|
|
||||||
check:function (event,player){
|
|
||||||
return get.attitude(player,event.target)<0;
|
|
||||||
},
|
|
||||||
filter:function(event,player){
|
|
||||||
return event.card.name=='sha';
|
|
||||||
},
|
|
||||||
logTarget:"target",
|
|
||||||
line:false,
|
|
||||||
content:function (){
|
|
||||||
'step 0'
|
|
||||||
player.line(trigger.target,{color:[220, 90, 139]});
|
|
||||||
player.chooseControl(['basic','trick','equip']).set('ai',function(){
|
|
||||||
var player=_status.event.target;
|
|
||||||
if(!player.countCards('h','sha')&&player.countCards('h','shan')) return 'trick';
|
|
||||||
return 'basic';
|
|
||||||
}).set('prompt','请选择一种牌的类别').set('target',trigger.target);
|
|
||||||
'step 1'
|
|
||||||
trigger.target.chooseCard('he','交给'+get.translation(player)+'一张'+get.translation(result.control)+'牌,否则此【杀】不可被闪避。',function(card){
|
|
||||||
return get.type(card,'trick')==result.control;
|
|
||||||
}).set('ai',function(card){
|
|
||||||
var num=_status.event.num;
|
|
||||||
if(num==0) return 0;
|
|
||||||
if(card.name=='shan') return num>1?2:0;
|
|
||||||
return 8-get.value(card);
|
|
||||||
}).set('num',trigger.target.countCards('h','shan'))
|
|
||||||
'step 2'
|
|
||||||
if(result.bool){
|
|
||||||
var cards=result.cards;
|
|
||||||
trigger.target.give(cards,player);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
trigger.getParent().directHit.add(trigger.target);
|
|
||||||
game.delay();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
//变权移植
|
//变权移植
|
||||||
wanwei:{
|
wanwei:{
|
||||||
trigger:{target:['rewriteGainResult','rewriteDiscardResult']},
|
trigger:{target:['rewriteGainResult','rewriteDiscardResult']},
|
||||||
|
@ -24141,7 +24098,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
lvfan:'吕范',
|
lvfan:'吕范',
|
||||||
liqueguosi:'李傕郭汜',
|
liqueguosi:'李傕郭汜',
|
||||||
cuimao:'崔琰毛玠',
|
cuimao:'崔琰毛玠',
|
||||||
kaisa:"凯撒",
|
|
||||||
|
|
||||||
|
|
||||||
caoying:"曹婴",
|
caoying:"曹婴",
|
||||||
|
@ -24211,8 +24167,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
"zhenwei_three_info":"锁定技,敌方角色至己方其他角色的距离+1。",
|
"zhenwei_three_info":"锁定技,敌方角色至己方其他角色的距离+1。",
|
||||||
"huanshi_three":"缓释",
|
"huanshi_three":"缓释",
|
||||||
"huanshi_three_info":"一名友方角色的判定牌生效前,你可打出一张牌代替之。",
|
"huanshi_three_info":"一名友方角色的判定牌生效前,你可打出一张牌代替之。",
|
||||||
zhengfu:"征服",
|
|
||||||
"zhengfu_info":"当你使用【杀】指定目标时,你可以选择一种牌的类别,然后除非目标角色交给你一种该类别的牌,否则其不能闪避此【杀】。",
|
|
||||||
|
|
||||||
yizan:"翊赞",
|
yizan:"翊赞",
|
||||||
yizan_info:"你可以将两张牌(其中至少一张是基本牌)当任意基本牌牌使用",
|
yizan_info:"你可以将两张牌(其中至少一张是基本牌)当任意基本牌牌使用",
|
||||||
|
@ -25141,6 +25095,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sp_guozhan2:"国战移植",
|
sp_guozhan2:"国战移植",
|
||||||
sp_others:"其他",
|
sp_others:"其他",
|
||||||
sp_waitforsort:'等待分包',
|
sp_waitforsort:'等待分包',
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -10523,5 +10523,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sp_danqi:'千里单骑',
|
sp_danqi:'千里单骑',
|
||||||
sp_decade:'其他新服武将',
|
sp_decade:'其他新服武将',
|
||||||
},
|
},
|
||||||
|
pinyins:{
|
||||||
|
卑弥呼:['Himiko']
|
||||||
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -13956,6 +13956,47 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
//英文版特典武将凯撒
|
||||||
|
zhengfu:{
|
||||||
|
trigger:{
|
||||||
|
player:"useCardToPlayered",
|
||||||
|
},
|
||||||
|
check:function (event,player){
|
||||||
|
return get.attitude(player,event.target)<0;
|
||||||
|
},
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.card.name=='sha';
|
||||||
|
},
|
||||||
|
logTarget:"target",
|
||||||
|
line:false,
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
player.line(trigger.target,{color:[220, 90, 139]});
|
||||||
|
player.chooseControl(['basic','trick','equip']).set('ai',function(){
|
||||||
|
var player=_status.event.target;
|
||||||
|
if(!player.countCards('h','sha')&&player.countCards('h','shan')) return 'trick';
|
||||||
|
return 'basic';
|
||||||
|
}).set('prompt','请选择一种牌的类别').set('target',trigger.target);
|
||||||
|
'step 1'
|
||||||
|
trigger.target.chooseCard('he','交给'+get.translation(player)+'一张'+get.translation(result.control)+'牌,否则此【杀】不可被闪避。',function(card){
|
||||||
|
return get.type(card,'trick')==_status.event.getParent().result.control;
|
||||||
|
}).set('ai',function(card){
|
||||||
|
var num=_status.event.num;
|
||||||
|
if(num==0) return 0;
|
||||||
|
if(card.name=='shan') return num>1?2:0;
|
||||||
|
return 8-get.value(card);
|
||||||
|
}).set('num',trigger.target.countCards('h','shan'))
|
||||||
|
'step 2'
|
||||||
|
if(result.bool){
|
||||||
|
var cards=result.cards;
|
||||||
|
trigger.target.give(cards,player);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
trigger.getParent().directHit.add(trigger.target);
|
||||||
|
game.delay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
perfectPair:{
|
perfectPair:{
|
||||||
tw_liufuren:['yuanshao'],
|
tw_liufuren:['yuanshao'],
|
||||||
|
@ -14516,6 +14557,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
twquanqian_info:'昂扬技。出牌阶段限一次,你可以将至多四张花色各不相同的手牌交给一名其他角色,然后若你交出的牌数大于1,则你从牌堆中获得一张装备牌,然后选择一项:①将手牌数摸至与其相同;②观看其手牌并获得其一种花色的所有牌。<br>激昂:你弃置六张手牌。',
|
twquanqian_info:'昂扬技。出牌阶段限一次,你可以将至多四张花色各不相同的手牌交给一名其他角色,然后若你交出的牌数大于1,则你从牌堆中获得一张装备牌,然后选择一项:①将手牌数摸至与其相同;②观看其手牌并获得其一种花色的所有牌。<br>激昂:你弃置六张手牌。',
|
||||||
twrouke:'柔克',
|
twrouke:'柔克',
|
||||||
twrouke_info:'锁定技。当你于摸牌阶段外得到超过一张牌时,你摸一张牌。',
|
twrouke_info:'锁定技。当你于摸牌阶段外得到超过一张牌时,你摸一张牌。',
|
||||||
|
kaisa:"凯撒",
|
||||||
|
zhengfu:"征服",
|
||||||
|
zhengfu_info:"当你使用【杀】指定目标时,你可以选择一种牌的类别,然后除非目标角色交给你一种该类别的牌,否则其不能闪避此【杀】。",
|
||||||
|
|
||||||
tw_mobile:'海外服·稀有专属',
|
tw_mobile:'海外服·稀有专属',
|
||||||
tw_yunchouzhi:'运筹帷幄·智',
|
tw_yunchouzhi:'运筹帷幄·智',
|
||||||
|
@ -14529,6 +14573,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
tw_mobile2:'海外服·异构',
|
tw_mobile2:'海外服·异构',
|
||||||
tw_yijiang:'一将成名TW',
|
tw_yijiang:'一将成名TW',
|
||||||
tw_english:'英文版',
|
tw_english:'英文版',
|
||||||
|
},
|
||||||
|
pinyins:{
|
||||||
|
凯撒:['Caesar'],
|
||||||
|
难升米:['Nashime']
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -11557,7 +11557,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
zhouyi:'周夷,游卡桌游旗下产品《三国杀》自行杜撰的人物。设定为周瑜的妹妹,和周瑜一同征战。',
|
zhouyi:'周夷,游卡桌游旗下产品《三国杀》自行杜撰的人物。设定为周瑜的妹妹,和周瑜一同征战。',
|
||||||
caojinyu:'金乡公主,本姓曹氏,名字不详,沛国谯县(今安徽省亳州市)人。魏武帝曹操的女儿,母为杜夫人。适婚的时候,嫁给曹操的养子何晏。高平陵之变,何晏作为大将军曹爽的党羽,遭到太傅司马懿处死。在何晏母亲尹夫人苦苦哀求下,何晏的儿子得以保全。',
|
caojinyu:'金乡公主,本姓曹氏,名字不详,沛国谯县(今安徽省亳州市)人。魏武帝曹操的女儿,母为杜夫人。适婚的时候,嫁给曹操的养子何晏。高平陵之变,何晏作为大将军曹爽的党羽,遭到太傅司马懿处死。在何晏母亲尹夫人苦苦哀求下,何晏的儿子得以保全。',
|
||||||
wufan:'吴范(?-226年),字文则,会稽上虞(今浙江绍兴上虞区)人。三国时期孙吴官员,擅长术数。与刘惇、赵达、严武、曹不兴、皇象、宋寿和郑妪合称“吴中八绝”。吴范以推算天象节气和观察气候闻名于郡中。孙权起于东南,他委身事奉,每推算灾祥多应验,遂显名。孙权委以骑都尉,领太史令。初,孙权为将军时,他曾说江南有王气。及孙权立为吴王,论功行封,欲以为都亭侯,但因不愿将其术要诀告知孙权,为权所怨恨,被除名。黄武中,病死。',
|
wufan:'吴范(?-226年),字文则,会稽上虞(今浙江绍兴上虞区)人。三国时期孙吴官员,擅长术数。与刘惇、赵达、严武、曹不兴、皇象、宋寿和郑妪合称“吴中八绝”。吴范以推算天象节气和观察气候闻名于郡中。孙权起于东南,他委身事奉,每推算灾祥多应验,遂显名。孙权委以骑都尉,领太史令。初,孙权为将军时,他曾说江南有王气。及孙权立为吴王,论功行封,欲以为都亭侯,但因不愿将其术要诀告知孙权,为权所怨恨,被除名。黄武中,病死。',
|
||||||
caomao:'曹髦(241年11月15日-260年6月2日)[1],字彦士,沛国谯县(今安徽省亳州市)人,魏文帝曹丕之孙,东海王曹霖之子,曹魏第四位皇帝(254年11月1日-260年6月2日)。正始二年(241年),生于东海王宫,自幼聪明好学,才慧早成,正始五年(244年),封为高贵乡公,嘉平六年(254年),大将军司马师废除齐王曹芳后,拥立为帝,年号正元,曹髦文才武略,崇拜少康,不满司马氏专权秉政,甘露五年(260年),亲自讨伐司马昭,为太子舍人成济所弑,年仅十九岁,以王礼葬于洛阳西北。曹髦擅长诗文,创制了九言诗,传世文章有《伤魂赋并序》《颜子论》等。爱好儒学,亲赴太学论道,著有《春秋左氏传音》(失传)。精通绘画,一说为中国第一位成为画家的皇帝,唐张彦远《历代名画记》目曹髦为中品。',
|
caomao:'曹髦(241年11月15日-260年6月2日),字彦士,沛国谯县(今安徽省亳州市)人,魏文帝曹丕之孙,东海王曹霖之子,曹魏第四位皇帝(254年11月1日-260年6月2日)。正始二年(241年),生于东海王宫,自幼聪明好学,才慧早成,正始五年(244年),封为高贵乡公,嘉平六年(254年),大将军司马师废除齐王曹芳后,拥立为帝,年号正元,曹髦文才武略,崇拜少康,不满司马氏专权秉政,甘露五年(260年),亲自讨伐司马昭,为太子舍人成济所弑,年仅十九岁,以王礼葬于洛阳西北。曹髦擅长诗文,创制了九言诗,传世文章有《伤魂赋并序》《颜子论》等。爱好儒学,亲赴太学论道,著有《春秋左氏传音》(失传)。精通绘画,一说为中国第一位成为画家的皇帝,唐张彦远《历代名画记》目曹髦为中品。',
|
||||||
laiyinger:'来莺儿,是个传说中的人物,正史及古代典籍并无记载。相传来莺儿是东汉歌妓,建安年间洛阳名妓,后爱上曹操的侍卫王图,王图因延误军机而押赴刑场,当时来莺儿奋不顾身以己命换王图一死。新编古装潮剧《曹营恋歌》,秦腔《雀台歌女》讲述了歌女来莺儿与情人王图及曹操三人之间催人泪下的故事。',
|
laiyinger:'来莺儿,是个传说中的人物,正史及古代典籍并无记载。相传来莺儿是东汉歌妓,建安年间洛阳名妓,后爱上曹操的侍卫王图,王图因延误军机而押赴刑场,当时来莺儿奋不顾身以己命换王图一死。新编古装潮剧《曹营恋歌》,秦腔《雀台歌女》讲述了歌女来莺儿与情人王图及曹操三人之间催人泪下的故事。',
|
||||||
caohua:'曹华,东汉末年人物,曹操之女,为汉献帝妃嫔。建安十八年(213年),曹操进为魏公,把曹宪、曹节、曹华三个女儿,一齐都送给汉献帝刘协做了妃子,皆封为夫人,聘以束帛五万匹,年龄尚小者在魏公国待年长而聘。',
|
caohua:'曹华,东汉末年人物,曹操之女,为汉献帝妃嫔。建安十八年(213年),曹操进为魏公,把曹宪、曹节、曹华三个女儿,一齐都送给汉献帝刘协做了妃子,皆封为夫人,聘以束帛五万匹,年龄尚小者在魏公国待年长而聘。',
|
||||||
zhaoang:'赵昂,字伟章(一作伟璋),天水冀人。汉末时曹操部下。初为羌道令,建安中转参军事徒居州治冀城。建安十八年,马超围冀城多天,城中饥困,凉州刺史韦康不愿百姓再受苦而打算投降,赵昂进劝但不为所纳。后马超背信弃义杀韦康并劫其子赵月为人质,把他送至南郑。欲以此要迫使赵昂为己所用。后与梁宽、赵衢、庞恭、杨阜等结谋为康报仇,并举兵讨伐马超。马超兵败遂弃城,投奔张鲁。得张鲁之援后马超于建安十九年复寇,赵昂与妻子王异坚守祁山三十天至夏侯渊的救兵解围,其子赵月终为马超斩杀。自冀城之难,至于祁山,赵昂出九奇策。',
|
zhaoang:'赵昂,字伟章(一作伟璋),天水冀人。汉末时曹操部下。初为羌道令,建安中转参军事徒居州治冀城。建安十八年,马超围冀城多天,城中饥困,凉州刺史韦康不愿百姓再受苦而打算投降,赵昂进劝但不为所纳。后马超背信弃义杀韦康并劫其子赵月为人质,把他送至南郑。欲以此要迫使赵昂为己所用。后与梁宽、赵衢、庞恭、杨阜等结谋为康报仇,并举兵讨伐马超。马超兵败遂弃城,投奔张鲁。得张鲁之援后马超于建安十九年复寇,赵昂与妻子王异坚守祁山三十天至夏侯渊的救兵解围,其子赵月终为马超斩杀。自冀城之难,至于祁山,赵昂出九奇策。',
|
||||||
|
|
270
game/game.js
270
game/game.js
|
@ -255,13 +255,22 @@
|
||||||
lib.groupnature[id]=id;
|
lib.groupnature[id]=id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(typeof config.image=='string') Object.defineProperty(lib.card,`group_${id}`,{
|
||||||
|
configurable:true,
|
||||||
|
enumerable:false,
|
||||||
|
writable:true,
|
||||||
|
value:{
|
||||||
|
fullskin:true,
|
||||||
|
image:config.image
|
||||||
|
}
|
||||||
|
});
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
hookmap:{},
|
hookmap:{},
|
||||||
imported:{},
|
imported:{},
|
||||||
layoutfixed:['chess','tafang','stone'],
|
layoutfixed:['chess','tafang','stone'],
|
||||||
pinyins:{
|
pinyins:{
|
||||||
metadata:{
|
_metadata:{
|
||||||
shengmu:['zh','ch','sh','b','p','m','f','d','t','l','n','g','k','h','j','q','x','r','z','c','s','y','w'],
|
shengmu:['zh','ch','sh','b','p','m','f','d','t','l','n','g','k','h','j','q','x','r','z','c','s','y','w'],
|
||||||
special_shengmu:['j','q','x','y'],
|
special_shengmu:['j','q','x','y'],
|
||||||
feijiemu:{
|
feijiemu:{
|
||||||
|
@ -39638,28 +39647,30 @@
|
||||||
}
|
}
|
||||||
return node;
|
return node;
|
||||||
},
|
},
|
||||||
putDB:function(type,id,item,callback){
|
putDB:function(type,id,item,onsuccess,onerror){
|
||||||
if(!lib.db) return item;
|
if(!lib.db) return item;
|
||||||
if(lib.status.reload){
|
if(lib.status.reload){
|
||||||
lib[_status.dburgent?'ondb2':'ondb'].push(['putDB',Array.from(arguments)]);
|
lib[_status.dburgent?'ondb2':'ondb'].push(['putDB',Array.from(arguments)]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lib.status.reload++;
|
lib.status.reload++;
|
||||||
lib.db.transaction([type],'readwrite').objectStore(type).put(item,id).onsuccess=function(){
|
const record=lib.db.transaction([type],'readwrite').objectStore(type).put(item,id);
|
||||||
if(callback){
|
record.onsuccess=function(){
|
||||||
|
if(onsuccess){
|
||||||
_status.dburgent=true;
|
_status.dburgent=true;
|
||||||
callback.apply(this,arguments);
|
onsuccess.apply(this,arguments);
|
||||||
delete _status.dburgent;
|
delete _status.dburgent;
|
||||||
}
|
}
|
||||||
game.reload2();
|
game.reload2();
|
||||||
};
|
};
|
||||||
|
if(typeof onerror=='function') record.onerror=onerror;
|
||||||
},
|
},
|
||||||
getDB:function(type,id,callback){
|
getDB:function(type,id,onsuccess,onerror){
|
||||||
if(!lib.db){
|
if(!lib.db){
|
||||||
if(callback) callback(null);
|
if(onsuccess) onsuccess(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(!callback) return;
|
if(!onsuccess) return;
|
||||||
if(lib.status.reload){
|
if(lib.status.reload){
|
||||||
lib[_status.dburgent?'ondb2':'ondb'].push(['getDB',Array.from(arguments)]);
|
lib[_status.dburgent?'ondb2':'ondb'].push(['getDB',Array.from(arguments)]);
|
||||||
return;
|
return;
|
||||||
|
@ -39667,31 +39678,34 @@
|
||||||
lib.status.reload++;
|
lib.status.reload++;
|
||||||
const store=lib.db.transaction([type],'readwrite').objectStore(type);
|
const store=lib.db.transaction([type],'readwrite').objectStore(type);
|
||||||
if(id){
|
if(id){
|
||||||
store.get(id).onsuccess=e=>{
|
const record=store.get(id);
|
||||||
|
record.onsuccess=e=>{
|
||||||
_status.dburgent=true;
|
_status.dburgent=true;
|
||||||
callback(e.target.result);
|
onsuccess(e.target.result);
|
||||||
delete _status.dburgent;
|
delete _status.dburgent;
|
||||||
game.reload2();
|
game.reload2();
|
||||||
};
|
};
|
||||||
|
if(typeof onerror=='function') record.onerror=onerror;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const obj={};
|
const cursor=store.openCursor(),obj={};
|
||||||
store.openCursor().onsuccess=e=>{
|
cursor.onsuccess=e=>{
|
||||||
const cursor=e.target.result;
|
const result=e.target.result;
|
||||||
if(cursor){
|
if(result){
|
||||||
obj[cursor.key]=cursor.value;
|
obj[result.key]=result.value;
|
||||||
cursor.continue();
|
result.continue();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_status.dburgent=true;
|
_status.dburgent=true;
|
||||||
callback(obj);
|
onsuccess(obj);
|
||||||
delete _status.dburgent;
|
delete _status.dburgent;
|
||||||
game.reload2();
|
game.reload2();
|
||||||
}
|
};
|
||||||
|
if(typeof onerror=='function') cursor.onerror=onerror;
|
||||||
},
|
},
|
||||||
deleteDB:function(type,id,callback){
|
deleteDB:function(type,id,onsuccess,onerror){
|
||||||
if(!lib.db){
|
if(!lib.db){
|
||||||
if(callback) callback(false);
|
if(onsuccess) onsuccess(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(lib.status.reload){
|
if(lib.status.reload){
|
||||||
|
@ -39700,10 +39714,12 @@
|
||||||
}
|
}
|
||||||
if(arguments.length>1){
|
if(arguments.length>1){
|
||||||
lib.status.reload++;
|
lib.status.reload++;
|
||||||
lib.db.transaction([type],'readwrite').objectStore(type).delete(id).onsuccess=function(){
|
const record=lib.db.transaction([type],'readwrite').objectStore(type).delete(id);
|
||||||
if(callback) callback.apply(this,arguments);
|
record.onsuccess=function(){
|
||||||
|
if(onsuccess) onsuccess.apply(this,arguments);
|
||||||
game.reload2();
|
game.reload2();
|
||||||
};
|
};
|
||||||
|
if(typeof onerror=='function') record.onerror=onerror;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
game.getDB(type,null,obj=>{
|
game.getDB(type,null,obj=>{
|
||||||
|
@ -53214,21 +53230,86 @@
|
||||||
else if(lib.config.favouriteCharacter.contains(name)){
|
else if(lib.config.favouriteCharacter.contains(name)){
|
||||||
fav.classList.add('active');
|
fav.classList.add('active');
|
||||||
}
|
}
|
||||||
var intro=ui.create.div('.characterintro',get.characterIntro(name),uiintro);
|
const intro=ui.create.div('.characterintro',uiintro);
|
||||||
if(lib.config.show_characternamepinyin){
|
if(lib.config.show_characternamepinyin){
|
||||||
var charactername=get.rawName(name);
|
const span=document.createElement('span');
|
||||||
var characterpinyin=get.pinyin(charactername);
|
span.style.fontWeight='bold';
|
||||||
var nameinfo=get.character(name);
|
const nameInfo=get.character(name),nameExInfo=nameInfo[4],characterName=nameExInfo&&nameExInfo.includes('translateNameAsIs:get.charactercard')?lib.translate[name]:get.rawName(name);
|
||||||
var charactersex=get.translation(nameinfo[0]);
|
span.textContent=characterName;
|
||||||
const charactergroups=get.is.double(name,true);
|
const ruby=document.createElement('ruby');
|
||||||
let charactergroup;
|
ruby.appendChild(span);
|
||||||
if(charactergroups) charactergroup=charactergroups.map(i=>get.translation(i)).join('/')
|
const leftParenthesisRP=document.createElement('rp');
|
||||||
else charactergroup=get.translation(nameinfo[1]);
|
leftParenthesisRP.textContent='(';
|
||||||
var characterhp=nameinfo[2];
|
ruby.appendChild(leftParenthesisRP);
|
||||||
var characterintroinfo=get.characterIntro(name);
|
const rt=document.createElement('rt');
|
||||||
intro.innerHTML='<span style="font-weight:bold;margin-right:5px;line-height:2">'+charactername+'</span>'+'<span style="font-size:14px;font-family:SimHei,STHeiti,sans-serif">'+'['+characterpinyin+']'+'</span>'+' | '+charactersex+' | '+charactergroup+' | '+characterhp+'<br>'+characterintroinfo;
|
rt.textContent=get.pinyin(characterName).join(' ');
|
||||||
|
ruby.appendChild(rt);
|
||||||
|
const rightParenthesisRP=document.createElement('rp');
|
||||||
|
rightParenthesisRP.textContent=')';
|
||||||
|
ruby.appendChild(rightParenthesisRP);
|
||||||
|
const tr=document.createElement('tr'),characterNameTD=document.createElement('td');
|
||||||
|
characterNameTD.appendChild(ruby);
|
||||||
|
tr.appendChild(characterNameTD);
|
||||||
|
const characterSexTD=document.createElement('td');
|
||||||
|
characterSexTD.textContent=get.translation(nameInfo[0]);
|
||||||
|
tr.appendChild(characterSexTD);
|
||||||
|
const characterGroupTD=document.createElement('td');
|
||||||
|
const characterGroups=get.is.double(name,true);
|
||||||
|
if(characterGroups) Promise.all(characterGroups.map(value=>new Promise((resolve,reject)=>{
|
||||||
|
const info=lib.card[`group_${value}`];
|
||||||
|
if(!info) resolve(`image/card/group_${value}.png`);
|
||||||
|
const image=info.image;
|
||||||
|
if(!image) resolve(`image/card/group_${value}.png`);
|
||||||
|
else if(image.indexOf('db:')==0) game.getDB('image',image.slice(3),src=>resolve(src),reject);
|
||||||
|
else if(image.indexOf('ext:')==0) resolve(image.replace(/ext:/,'extension/'));
|
||||||
|
else resolve(image);
|
||||||
|
}).then(element=>new Promise((resolve,reject)=>{
|
||||||
|
const image=new Image();
|
||||||
|
image.onload=()=>resolve(image);
|
||||||
|
image.onerror=reject;
|
||||||
|
image.src=element;
|
||||||
|
})))).then(value=>{
|
||||||
|
const documentFragment=document.createDocumentFragment();
|
||||||
|
value.forEach(documentFragment.appendChild,documentFragment);
|
||||||
|
characterGroupTD.appendChild(documentFragment);
|
||||||
|
}).catch(()=>characterGroupTD.textContent=characterGroups.reduce((previousValue,currentValue)=>previousValue?`${previousValue}/${get.translation(currentValue)}`:get.translation(currentValue),''));
|
||||||
|
else{
|
||||||
|
const characterGroup=nameInfo[1];
|
||||||
|
new Promise((resolve,reject)=>{
|
||||||
|
const info=lib.card[`group_${characterGroup}`];
|
||||||
|
if(!info) resolve(`image/card/group_${characterGroup}.png`);
|
||||||
|
const image=info.image;
|
||||||
|
if(!image) resolve(`image/card/group_${characterGroup}.png`);
|
||||||
|
else if(image.indexOf('db:')==0) game.getDB('image',image.slice(3),src=>resolve(src),reject);
|
||||||
|
else if(image.indexOf('ext:')==0) resolve(image.replace(/ext:/,'extension/'));
|
||||||
|
else resolve(image);
|
||||||
|
}).then(value=>new Promise((resolve,reject)=>{
|
||||||
|
const image=new Image();
|
||||||
|
image.onload=()=>resolve(image);
|
||||||
|
image.onerror=reject;
|
||||||
|
image.src=value;
|
||||||
|
})).then(value=>characterGroupTD.appendChild(value)).catch(()=>characterGroupTD.textContent=get.translation(characterGroup));
|
||||||
|
}
|
||||||
|
tr.appendChild(characterGroupTD);
|
||||||
|
const characterHPTD=document.createElement('td'),hpDiv=ui.create.div('.hp',characterHPTD),nameInfoHP=nameInfo[2],infoHP=get.infoHp(nameInfoHP);
|
||||||
|
hpDiv.dataset.condition=infoHP<4?'mid':'high';
|
||||||
|
ui.create.div(hpDiv);
|
||||||
|
const hpTextDiv=ui.create.div('.text',hpDiv),infoMaxHP=get.infoMaxHp(nameInfoHP);
|
||||||
|
hpTextDiv.textContent=infoHP==infoMaxHP?infoHP:`${infoHP}/${infoMaxHP}`;
|
||||||
|
const infoShield=get.infoHujia(nameInfoHP);
|
||||||
|
if(infoShield){
|
||||||
|
ui.create.div('.shield',hpDiv);
|
||||||
|
const shieldTextDiv=ui.create.div('.text',hpDiv);
|
||||||
|
shieldTextDiv.textContent=infoShield;
|
||||||
|
}
|
||||||
|
tr.appendChild(characterHPTD);
|
||||||
|
const table=document.createElement('table');
|
||||||
|
table.appendChild(tr);
|
||||||
|
intro.appendChild(table);
|
||||||
|
intro.appendChild(document.createElement('hr'));
|
||||||
}
|
}
|
||||||
var intro2=ui.create.div('.characterintro.intro2',uiintro);
|
intro.appendChild(new Text(get.characterIntro(name)));
|
||||||
|
const intro2=ui.create.div('.characterintro.intro2',uiintro);
|
||||||
var list=get.character(name,3)||[];
|
var list=get.character(name,3)||[];
|
||||||
var skills=ui.create.div('.characterskill',uiintro);
|
var skills=ui.create.div('.characterskill',uiintro);
|
||||||
if(lib.config.touchscreen){
|
if(lib.config.touchscreen){
|
||||||
|
@ -53241,38 +53322,75 @@
|
||||||
skills.onmousewheel=ui.click.mousewheel;
|
skills.onmousewheel=ui.click.mousewheel;
|
||||||
}
|
}
|
||||||
var clickSkill=function(e){
|
var clickSkill=function(e){
|
||||||
|
while(intro2.firstChild){
|
||||||
|
intro2.removeChild(intro2.lastChild);
|
||||||
|
}
|
||||||
var current=this.parentNode.querySelector('.active');
|
var current=this.parentNode.querySelector('.active');
|
||||||
if(current){
|
if(current){
|
||||||
current.classList.remove('active');
|
current.classList.remove('active');
|
||||||
}
|
}
|
||||||
this.classList.add('active');
|
this.classList.add('active');
|
||||||
var skillname=get.translation(this.link);
|
const skillNameSpan=document.createElement('span'),skillNameSpanStyle=skillNameSpan.style;
|
||||||
var skilltranslationinfo=get.skillInfoTranslation(this.link);
|
skillNameSpanStyle.fontWeight='bold';
|
||||||
if(lib.config.show_skillnamepinyin&&skillname!='阵亡'){
|
const skillName=get.translation(this.link);
|
||||||
var skillpinyin=get.pinyin(skillname);
|
skillNameSpan.textContent=skillName;
|
||||||
intro2.innerHTML='<span style="font-weight:bold;margin-right:5px">'+skillname+'</span>'+'<span style="font-size:14px;font-family:SimHei,STHeiti,sans-serif">'+'['+skillpinyin+']'+'</span>'+' '+skilltranslationinfo;
|
if(lib.config.show_skillnamepinyin&&skillName!='阵亡'){
|
||||||
}else{
|
const ruby=document.createElement('ruby');
|
||||||
intro2.innerHTML='<span style="font-weight:bold;margin-right:5px">'+skillname+'</span>'+skilltranslationinfo;
|
ruby.appendChild(skillNameSpan);
|
||||||
|
const leftParenthesisRP=document.createElement('rp');
|
||||||
|
leftParenthesisRP.textContent='(';
|
||||||
|
ruby.appendChild(leftParenthesisRP);
|
||||||
|
const rt=document.createElement('rt');
|
||||||
|
rt.textContent=get.pinyin(skillName).join(' ');
|
||||||
|
ruby.appendChild(rt);
|
||||||
|
const rightParenthesisRP=document.createElement('rp');
|
||||||
|
rightParenthesisRP.textContent=')';
|
||||||
|
ruby.appendChild(rightParenthesisRP);
|
||||||
|
const div=ui.create.div(intro2);
|
||||||
|
div.style.marginRight='5px';
|
||||||
|
div.appendChild(ruby);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
skillNameSpanStyle.marginRight='5px';
|
||||||
|
intro2.appendChild(skillNameSpan);
|
||||||
|
}
|
||||||
|
intro2.appendChild(new Text(get.skillInfoTranslation(this.link)));
|
||||||
var info=get.info(this.link);
|
var info=get.info(this.link);
|
||||||
var skill=this.link;
|
var skill=this.link;
|
||||||
var playername=this.linkname;
|
var playername=this.linkname;
|
||||||
var skillnode=this;
|
var skillnode=this;
|
||||||
if(info.derivation){
|
let derivation=info.derivation;
|
||||||
var derivation=info.derivation;
|
if(derivation){
|
||||||
if(typeof derivation=='string'){
|
if(typeof derivation=='string') derivation=[derivation];
|
||||||
derivation=[derivation];
|
derivation.forEach(value=>{
|
||||||
}
|
intro2.appendChild(document.createElement('br'));
|
||||||
for(var i=0;i<derivation.length;i++){
|
intro2.appendChild(document.createElement('br'));
|
||||||
var derivationname=get.translation(derivation[i]);
|
const derivationNameSpan=document.createElement('span'),derivationNameSpanStyle=derivationNameSpan.style;
|
||||||
var derivationtranslationinfo=get.skillInfoTranslation(derivation[i]);
|
derivationNameSpanStyle.fontWeight='bold';
|
||||||
if(lib.config.show_skillnamepinyin&&derivationname.length<=5&&derivation[i].indexOf('_faq')==-1){
|
const derivationName=get.translation(value);
|
||||||
var derivationpinyin=get.pinyin(derivationname);
|
derivationNameSpan.textContent=derivationName;
|
||||||
intro2.innerHTML+='<br><br><span style="font-weight:bold;margin-right:5px">'+derivationname+'</span>'+'<span style="font-size:14px;font-family:SimHei,STHeiti,sans-serif">'+'['+derivationpinyin+']'+'</span>'+' '+derivationtranslationinfo;
|
if(lib.config.show_skillnamepinyin&&derivationName.length<=5&&value.indexOf('_faq')==-1){
|
||||||
}else{
|
const ruby=document.createElement('ruby');
|
||||||
intro2.innerHTML+='<br><br><span style="font-weight:bold;margin-right:5px">'+derivationname+'</span>'+derivationtranslationinfo;
|
ruby.appendChild(derivationNameSpan);
|
||||||
|
const leftParenthesisRP=document.createElement('rp');
|
||||||
|
leftParenthesisRP.textContent='(';
|
||||||
|
ruby.appendChild(leftParenthesisRP);
|
||||||
|
const rt=document.createElement('rt');
|
||||||
|
rt.textContent=get.pinyin(derivationName).join(' ');
|
||||||
|
ruby.appendChild(rt);
|
||||||
|
const rightParenthesisRP=document.createElement('rp');
|
||||||
|
rightParenthesisRP.textContent=')';
|
||||||
|
ruby.appendChild(rightParenthesisRP);
|
||||||
|
const div=ui.create.div(intro2);
|
||||||
|
div.style.marginRight='5px';
|
||||||
|
div.appendChild(ruby);
|
||||||
}
|
}
|
||||||
}
|
else{
|
||||||
|
derivationNameSpanStyle.marginRight='5px';
|
||||||
|
intro2.appendChild(derivationNameSpan);
|
||||||
|
}
|
||||||
|
intro2.appendChild(new Text(get.skillInfoTranslation(value)));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if(info.alter){
|
if(info.alter){
|
||||||
intro2.innerHTML+='<br><br><div class="hrefnode skillversion"></div>';
|
intro2.innerHTML+='<br><br><div class="hrefnode skillversion"></div>';
|
||||||
|
@ -54394,40 +54512,36 @@
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
//装备栏 END
|
//装备栏 END
|
||||||
pinyin:function(chinese,withtone){
|
pinyin:(chinese,withTone)=>{
|
||||||
const util=window.pinyinUtilx;
|
const pinyinUtilx=window.pinyinUtilx;
|
||||||
if(!window.pinyinUtilx) return [];
|
if(!pinyinUtilx) return [];
|
||||||
if(lib.pinyins&&lib.pinyins[chinese]){
|
const pinyins=lib.pinyins;
|
||||||
const str=lib.pinyins[chinese];
|
if(pinyins){
|
||||||
if(withtone===false){
|
const pinyin=pinyins[chinese];
|
||||||
for(let i=0;i<str.length;i++){
|
if(Array.isArray(pinyin)) return withTone===false?pinyin.map(pinyinUtilx.removeTone):pinyin.slice();
|
||||||
str[i]=util.removeTone(str[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
return util.getPinyin(chinese,null,withtone,true);
|
return pinyinUtilx.getPinyin(chinese,null,withTone,true);
|
||||||
},
|
},
|
||||||
yunmu:function(str){
|
yunmu:function(str){
|
||||||
//部分整体认读音节特化处理
|
//部分整体认读音节特化处理
|
||||||
const util=window.pinyinUtilx;
|
const util=window.pinyinUtilx;
|
||||||
if(util&&lib.pinyins.metadata.zhengtirendu.contains(util.removeTone(str))){
|
if(util&&lib.pinyins._metadata.zhengtirendu.contains(util.removeTone(str))){
|
||||||
return '-'+str[str.length-1];
|
return '-'+str[str.length-1];
|
||||||
}
|
}
|
||||||
//排除声母
|
//排除声母
|
||||||
for(let i of lib.pinyins.metadata.shengmu){
|
for(let i of lib.pinyins._metadata.shengmu){
|
||||||
if(str.indexOf(i)==0){
|
if(str.indexOf(i)==0){
|
||||||
str=str.slice(i.length);
|
str=str.slice(i.length);
|
||||||
if(str[0]=='u'&&lib.pinyins.metadata.special_shengmu.contains(i)) str='ü'+str.slice(1);
|
if(str[0]=='u'&&lib.pinyins._metadata.special_shengmu.contains(i)) str='ü'+str.slice(1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//排除介母
|
//排除介母
|
||||||
if(str.length>0){
|
if(str.length>0){
|
||||||
for(let i in lib.pinyins.metadata.feijiemu){
|
for(let i in lib.pinyins._metadata.feijiemu){
|
||||||
if(str[0]==i){
|
if(str[0]==i){
|
||||||
let goon=false;
|
let goon=false;
|
||||||
for(let j of lib.pinyins.metadata.feijiemu[i]){
|
for(let j of lib.pinyins._metadata.feijiemu[i]){
|
||||||
if(str.indexOf(j)==0) goon=true;
|
if(str.indexOf(j)==0) goon=true;
|
||||||
}
|
}
|
||||||
if(!goon) str=str.slice(1);
|
if(!goon) str=str.slice(1);
|
||||||
|
@ -54440,20 +54554,20 @@
|
||||||
yunjiao:function(str){
|
yunjiao:function(str){
|
||||||
const util=window.pinyinUtilx;
|
const util=window.pinyinUtilx;
|
||||||
if(util) str=util.removeTone(str)
|
if(util) str=util.removeTone(str)
|
||||||
if(lib.pinyins.metadata.zhengtirendu.contains(str)){
|
if(lib.pinyins._metadata.zhengtirendu.contains(str)){
|
||||||
str=('-'+str[str.length-1]);
|
str=('-'+str[str.length-1]);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
for(let i of lib.pinyins.metadata.shengmu){
|
for(let i of lib.pinyins._metadata.shengmu){
|
||||||
if(str.indexOf(i)==0){
|
if(str.indexOf(i)==0){
|
||||||
str=str.slice(i.length);
|
str=str.slice(i.length);
|
||||||
if(str[0]=='u'&&lib.pinyins.metadata.special_shengmu.contains(i)) str='ü'+str.slice(1);
|
if(str[0]=='u'&&lib.pinyins._metadata.special_shengmu.contains(i)) str='ü'+str.slice(1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(let i in lib.pinyins.metadata.yunjiao){
|
for(let i in lib.pinyins._metadata.yunjiao){
|
||||||
if(lib.pinyins.metadata.yunjiao[i].contains(str)) return i;
|
if(lib.pinyins._metadata.yunjiao[i].contains(str)) return i;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue