ナービィ

This commit is contained in:
Spmario233 2022-05-10 00:59:02 +08:00
parent be73e76fdc
commit dc1dde41e9
38 changed files with 1859 additions and 437 deletions

View File

@ -81,7 +81,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
usable:1, usable:1,
updateUsable:'phaseUse', updateUsable:'phaseUse',
global:'icesha_skill', global:'icesha_skill',
range:{attack:1}, range:function(card,player,target){
return player.inRange(target);
},
selectTarget:1, selectTarget:1,
cardPrompt:function(card){ cardPrompt:function(card){
if(card.nature=='stab') return '出牌阶段对你攻击范围内的一名角色使用。其须使用一张【闪】且在此之后需弃置一张手牌没有则不弃。否则你对其造成1点伤害。'; if(card.nature=='stab') return '出牌阶段对你攻击范围内的一名角色使用。其须使用一张【闪】且在此之后需弃置一张手牌没有则不弃。否则你对其造成1点伤害。';

View File

@ -265,11 +265,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
type:'trick', type:'trick',
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
if(target==player) return false; if(target==player) return false;
if(!ui.selected.targets.length) return target.countCards('h')>0&&game.hasPlayer(function(current){ return target.countCards('h')>0&&game.hasPlayer(function(current){
return target.canCompare(current); return target.canCompare(current);
}); });
return ui.selected.targets[0].canCompare(target); return ui.selected.targets[0].canCompare(target);
}, },
filterAddedTarget:function(card,player,target,preTarget){
return target!=player&&preTarget.canCompare(target);
},
enable:function(){ enable:function(){
return game.countPlayer()>2; return game.countPlayer()>2;
}, },
@ -287,6 +290,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
complexSelect:true, complexSelect:true,
content:function(){ content:function(){
'step 0' 'step 0'
if(!event.addedTarget||!target.canCompare(event.addedTarget)){
event.finish();
return;
}
target.chooseToCompare(event.addedTarget); target.chooseToCompare(event.addedTarget);
'step 1' 'step 1'
if(!result.tie){ if(!result.tie){
@ -308,7 +315,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
target.discardPlayerCard(player); target.discardPlayerCard(player);
target.line(player); target.line(player);
}, },
selectTarget:2,
ai:{ ai:{
order:5, order:5,
value:[7,1], value:[7,1],

View File

@ -28,7 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_harukakanata:['female','key',3,['haruka_shuangche']], key_harukakanata:['female','key',3,['haruka_shuangche']],
key_inari:['female','key',2,['inari_baiwei','inari_huhun']], key_inari:['female','key',2,['inari_baiwei','inari_huhun']],
key_shiina:['female','key',3,['shiina_qingshen','shiina_feiyan']], key_shiina:['female','key',3,['shiina_qingshen','shiina_feiyan']],
key_sunohara:['double','key','3/4',['sunohara_chengshuang','sunohara_tiaoyin','sunohara_jianren']], key_sunohara:['double','key','3/3/2',['sunohara_chengshuang','sunohara_tiaoyin','sunohara_jianren']],
key_rin:['female','key',3,['rin_baoqiu']], key_rin:['female','key',3,['rin_baoqiu']],
key_sasami:['female','key',3,['sasami_miaobian']], key_sasami:['female','key',3,['sasami_miaobian']],
key_akane:['female','key',3,['akane_jugu','akane_quanqing','akane_yifu'],['zhu']], key_akane:['female','key',3,['akane_jugu','akane_quanqing','akane_yifu'],['zhu']],
@ -73,6 +73,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_mia:['female','key',3,['mia_shihui','mia_qianmeng']], key_mia:['female','key',3,['mia_shihui','mia_qianmeng']],
key_kano:['female','key',3,['kano_liezhen','kano_poyu']], key_kano:['female','key',3,['kano_liezhen','kano_poyu']],
db_key_liyingxia:['female','shu',3,['liyingxia_sanli','liyingxia_zhenjun','liyingxia_wumai'],['doublegroup:shu:key']], db_key_liyingxia:['female','shu',3,['liyingxia_sanli','liyingxia_zhenjun','liyingxia_wumai'],['doublegroup:shu:key']],
key_erika:['female','key','3/3/2',['erika_shisong','erika_yousheng']],
key_satomi:['female','key',3,['satomi_luodao','satomi_daohai']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']], key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']], key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -198,7 +200,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"], diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"],
diy_default:["diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji"], diy_default:["diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji"],
diy_noname:['noname'], diy_noname:['noname'],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi","key_mia","key_kano","db_key_liyingxia"], diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi","key_mia","key_kano","db_key_liyingxia","key_erika","key_satomi"],
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang'], diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang'],
}, },
}, },
@ -220,7 +222,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanghu:'羊祜221年278年12月27日字叔子泰山郡南城县人。西晋时期杰出的战略家、政治家、文学家曹魏上党太守羊衜的儿子名儒蔡邕的女儿蔡文姬的外甥。出身“泰山羊氏”博学能文清廉正直。曹魏时期接受公车征辟出任中书郎迁给事黄门侍郎。姐姐嫁给大将军司马师投靠司马氏家族仕途平步青云。魏元帝曹奂即位出任秘书监、相国从事中郎、中领军统领御林军兼管内外政事册封钜平县子迁。西晋建立后迁中军将军、散骑常侍、郎中令册封钜平侯。泰始五年269年出任车骑将军、荆州都督加任开府仪同三司坐镇襄阳屯田兴学以德怀柔深得军民之心扩充军备训练士兵全力准备灭亡孙吴累迁征南大将军册封南城侯。咸宁四年去世临终前举荐杜预接任职务获赠侍中、太傅谥号为“成”。唐宋时期配享武庙。', yanghu:'羊祜221年278年12月27日字叔子泰山郡南城县人。西晋时期杰出的战略家、政治家、文学家曹魏上党太守羊衜的儿子名儒蔡邕的女儿蔡文姬的外甥。出身“泰山羊氏”博学能文清廉正直。曹魏时期接受公车征辟出任中书郎迁给事黄门侍郎。姐姐嫁给大将军司马师投靠司马氏家族仕途平步青云。魏元帝曹奂即位出任秘书监、相国从事中郎、中领军统领御林军兼管内外政事册封钜平县子迁。西晋建立后迁中军将军、散骑常侍、郎中令册封钜平侯。泰始五年269年出任车骑将军、荆州都督加任开府仪同三司坐镇襄阳屯田兴学以德怀柔深得军民之心扩充军备训练士兵全力准备灭亡孙吴累迁征南大将军册封南城侯。咸宁四年去世临终前举荐杜预接任职务获赠侍中、太傅谥号为“成”。唐宋时期配享武庙。',
}, },
characterTitle:{ characterTitle:{
db_key_liyingxia:'#rヘブンバーンズレッド', key_satomi:'#rHeaven Burns Red',
key_erika:'#rHeaven Burns Red',
db_key_liyingxia:'#rHeaven Burns Red',
key_kano:'#bAIR', key_kano:'#bAIR',
key_mia:'#bLoopers', key_mia:'#bLoopers',
key_kotomi:'#gClannad', key_kotomi:'#gClannad',
@ -509,6 +513,216 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'], key_lucia:['key_shizuru'],
}, },
skill:{ skill:{
satomi_luodao:{
trigger:{player:'useCardToPlayered'},
logTarget:'target',
filter:function(event,player){
return event.card.name=='sha'&&event.target.countCards('h')>0;
},
content:function(){
'step 0'
var target=trigger.target;
event.target=target;
target.showHandcards(get.translation(player)+'对'+get.translation(target)+'发动了【落刀】');
'step 1'
if(target.hasCard(function(card){
return get.name(card,target)=='shan';
},'h')){
player.discardPlayerCard(target,true,'h','visible').set('filterButton',function(button){
return get.name(button.link)=='shan';
});
}
else if(player.countCards('he')>0) player.chooseToDiscard('he',true);
},
},
satomi_daohai:{
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
return player.hasHistory('lose',function(evt){
return evt.type=='discard'&&evt.cards2.length>0;
})&&player.hasUseTarget({name:'wugu'});
},
check:function(event,player){
return player.getUseValue({name:'wugu'})+player.getUseValue({name:'lebu'})>0;
},
content:function(){
'step 0'
player.chooseUseTarget('wugu',true);
'step 1'
if(result.bool){
var cards=[];
player.getHistory('gain',function(evt){
if(evt.getParent().name=='wugu'&&evt.getParent(4)==event){
cards.addArray(evt.cards);
}
});
cards=cards.filter(function(card){
return player.getCards('h').contains(card)&&game.checkMod(card,player,'unchanged','cardEnabled2',player);
});
if(cards.length){
player.chooseCardTarget({
prompt:'是否将获得的牌当做【乐不思蜀】使用?',
filterCard:function(card){
return _status.event.cards.contains(card);
},
cards:cards,
filterTarget:function(card,player,target){
var card=get.autoViewAs({name:'lebu'},ui.selected.cards);
return player.canUse(card,target);
},
ai1:()=>1,
ai2:function(target){
var player=_status.event.player,card=get.autoViewAs({name:'lebu'},ui.selected.cards);
return get.effect(target,{name:'lebu'},player,player);
},
})
}
else event.finish();
}
else event.finish();
'step 2'
if(result.bool){
player.useCard({name:'lebu'},result.cards,result.targets[0]);
}
},
},
erika_shisong:{
trigger:{player:'useCard'},
forced:true,
charlotte:true,
filter:function(event,player){
if(player!=_status.currentPhase) return false;
var index=player.getHistory('useCard').indexOf(event),history=player.actionHistory;
for(var i=history.length-2;i>=0;i--){
if(history[i].isMe){
var evt=history[i].useCard[index];
return evt&&get.type2(evt.card)==get.type(event.card);
}
}
return false;
},
content:function(){
player.draw();
},
mod:{
maxHandcard:function(player,num){
return num+player.hujia;
},
},
},
erika_yousheng:{
dutySkill:true,
group:['erika_yousheng_achieve','erika_yousheng_fail','erika_yousheng_mamori'],
trigger:{global:'useCardToTarget'},
direct:true,
filter:function(event,player){
return player.getStorage('erika_yousheng').contains(event.target)&&
(event.card.name=='sha'||(get.type2(event.card,false)=='trick'&&get.tag(event.card,'damage')>0))&&
(player.countMark('erika_yousheng_ruka')+1)<=player.countCards('he');
},
intro:{
content:'已保护$',
},
content:function(){
'step 0'
var num=(player.countMark('erika_yousheng_ruka')+1);
player.chooseToDiscard('he',num,get.prompt('erika_yousheng',trigger.target),'弃置'+(num)+'张牌,并转移'+get.translation(trigger.card)).logSkill=['erika_yousheng',trigger.target];
'step 1'
if(result.bool){
var ruka=trigger.target,evt=trigger.getParent();
evt.targets.remove(ruka);
evt.triggeredTargets2.remove(ruka);
evt.targets.push(player);
evt.triggeredTargets2.push(player);
player.addTempSkill('erika_yousheng_ruka');
var str='erika_yousheng_'+player.playerid;
if(!evt[str]) evt[str]=[];
evt[str].add(ruka);
}
},
subSkill:{
achieve:{
trigger:{player:'changeHujiaAfter'},
forced:true,
skillAnimation:'legend',
animationColor:'water',
filter:function(event,player){
return player.storage.erika_yousheng&&event.num<0&&!player.hujia;
},
content:function(){
'step 0'
player.awakenSkill('erika_yousheng');
game.log(player,'成功完成使命');
var list=[player];
list.addArray(player.storage.erika_yousheng);
list.sortBySeat();
list=list.filter(function(current){
return current.isAlive();
});
player.line(list,'green');
game.asyncDraw(list,3);
'step 1'
game.delayx();
},
},
fail:{
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
return player.getStorage('erika_yousheng').contains(event.player)&&event.card&&(event.card.name=='sha'||(get.type2(event.card,false)=='trick'&&get.tag(event.card,'damage')>0));
},
content:function(){
player.awakenSkill('erika_yousheng');
game.log(player,'使命失败');
var num=player.hujia;
if(num>0){
player.changeHujia(-num);
player.chooseToDiscard(num,true,'he');
}
},
},
mamori:{
trigger:{global:'roundStart'},
skillAnimation:true,
animationColor:'wood',
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('erika_yousheng'),[1,2],lib.filter.notMe,'选择至多两名其他角色。你减2点体力上限并获得3点护甲。').set('ai',function(ruka){
return -1;
});
'step 1'
if(result.bool){
player.logSkill('erika_yousheng_mamori',result.targets);
player.awakenSkill('erika_yousheng_mamori');
player.markAuto('erika_yousheng',result.targets);
player.loseMaxHp(2);
player.changeHujia(3);
}
},
},
ruka:{
trigger:{global:'useCardAfter'},
direct:true,
charlotte:true,
filter:function(event,player){
return event['erika_yousheng_'+player.playerid]&&event.cards.filterInD().length>0;
},
content:function(){
'step 0'
player.chooseTarget('是否令一名原目标角色获得'+get.translation(trigger.cards.filterInD())+'',function(card,player,target){
return _status.event.targets.contains(target);
}).set('targets',trigger['erika_yousheng_'+player.playerid]);
'step 1'
if(result.bool){
var ruka=result.targets[0];
player.line(ruka,'green');
ruka.gain(trigger.cards.filterInD(),'gain2');
}
},
},
},
},
liyingxia_sanli:{ liyingxia_sanli:{
trigger:{target:'useCardToTargeted'}, trigger:{target:'useCardToTargeted'},
forced:true, forced:true,
@ -4603,16 +4817,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
frequent:true, frequent:true,
content:function(){ content:function(){
"step 0" "step 0"
if(player.isUnderControl()){
game.modeSwapPlayer(player);
}
var num=1+player.countCards('e'); var num=1+player.countCards('e');
var cards=get.cards(num); var cards=get.cards(num);
event.cards=cards; game.cardsGotoOrdering(cards);
var switchToAuto=function(){ var next=player.chooseToMove();
_status.imchoosing=false; next.set('list',[
if(event.dialog) event.dialog.close(); ['牌堆顶',cards],
if(event.control) event.control.close(); ['牌堆底'],
]);
next.set('prompt','幻梦:点击将牌移动到牌堆顶或牌堆底');
next.processAI=function(list){
var cards=list[0][1],player=_status.event.player;
var top=[]; var top=[];
var judges=player.getCards('j'); var judges=player.getCards('j');
var stopped=false; var stopped=false;
@ -4641,6 +4856,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
} }
bottom=cards; bottom=cards;
return [top,bottom];
}
"step 1"
var top=result.moved[0];
var bottom=result.moved[1];
top.reverse();
for(var i=0;i<top.length;i++){ for(var i=0;i<top.length;i++){
ui.cardPile.insertBefore(top[i],ui.cardPile.firstChild); ui.cardPile.insertBefore(top[i],ui.cardPile.firstChild);
} }
@ -4649,141 +4870,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(bottom.length)+'下'); player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(bottom.length)+'下');
game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶'); game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶');
game.delay(2);
};
var chooseButton=function(online,player,cards){
var event=_status.event;
player=player||event.player;
cards=cards||event.cards;
event.top=[];
event.bottom=[];
event.status=true;
event.dialog=ui.create.dialog('按顺序选择置于牌堆顶的牌(先选择的在上)',cards);
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('pointerdiv');
}
event.switchToAuto=function(){
event._result='ai';
event.dialog.close();
event.control.close();
_status.imchoosing=false;
},
event.control=ui.create.control('ok','pileTop','pileBottom',function(link){
var event=_status.event;
if(link=='ok'){
if(online){
event._result={
top:[],
bottom:[]
}
for(var i=0;i<event.top.length;i++){
event._result.top.push(event.top[i].link);
}
for(var i=0;i<event.bottom.length;i++){
event._result.bottom.push(event.bottom[i].link);
}
}
else{
var i;
for(i=0;i<event.top.length;i++){
ui.cardPile.insertBefore(event.top[i].link,ui.cardPile.firstChild);
}
for(i=0;i<event.bottom.length;i++){
ui.cardPile.appendChild(event.bottom[i].link);
}
for(i=0;i<event.dialog.buttons.length;i++){
if(event.dialog.buttons[i].classList.contains('glow')==false&&
event.dialog.buttons[i].classList.contains('target')==false)
ui.cardPile.appendChild(event.dialog.buttons[i].link);
}
player.popup(get.cnNumber(event.top.length)+'上'+get.cnNumber(event.cards.length-event.top.length)+'下');
game.log(player,'将'+get.cnNumber(event.top.length)+'张牌置于牌堆顶');
}
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
}
else if(link=='pileTop'){
event.status=true;
event.dialog.content.childNodes[0].innerHTML='按顺序选择置于牌堆顶的牌';
}
else{
event.status=false;
event.dialog.content.childNodes[0].innerHTML='按顺序选择置于牌堆底的牌';
}
})
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
event.custom.replace.button=function(link){
var event=_status.event;
if(link.classList.contains('target')){
link.classList.remove('target');
event.top.remove(link);
}
else if(link.classList.contains('glow')){
link.classList.remove('glow');
event.bottom.remove(link);
}
else if(event.status){
link.classList.add('target');
event.top.unshift(link);
}
else{
link.classList.add('glow');
event.bottom.push(link);
}
}
event.custom.replace.window=function(){
for(var i=0;i<_status.event.dialog.buttons.length;i++){
_status.event.dialog.buttons[i].classList.remove('target');
_status.event.dialog.buttons[i].classList.remove('glow');
_status.event.top.length=0;
_status.event.bottom.length=0;
}
}
game.pause();
game.countChoose();
};
event.switchToAuto=switchToAuto;
if(event.isMine()){
chooseButton();
event.finish();
}
else if(event.isOnline()){
event.player.send(chooseButton,true,event.player,event.cards);
event.player.wait();
game.pause();
}
else{
event.switchToAuto();
event.finish();
}
"step 1"
if(event.result=='ai'||!event.result){
event.switchToAuto();
}
else{
var top=event.result.top||[];
var bottom=event.result.bottom||[];
for(var i=0;i<top.length;i++){
ui.cardPile.insertBefore(top[i],ui.cardPile.firstChild);
}
for(i=0;i<bottom.length;i++){
ui.cardPile.appendChild(bottom[i]);
}
for(i=0;i<event.cards.length;i++){
if(!top.contains(event.cards[i])&&!bottom.contains(event.cards[i])){
ui.cardPile.appendChild(event.cards[i]);
}
}
player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(event.cards.length-top.length)+'下');
game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶');
game.updateRoundNumber(); game.updateRoundNumber();
game.delay(2); game.delayx();
}
}, },
ai:{ ai:{
threaten:1.2 threaten:1.2
@ -5224,6 +5312,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
shizuru_benzhan:{ shizuru_benzhan:{
trigger:{global:['useCard','respond']}, trigger:{global:['useCard','respond']},
usable:1,
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
return Array.isArray(event.respondTo)&&event.respondTo[0]!=event.player&&[event.respondTo[0],event.player].contains(player); return Array.isArray(event.respondTo)&&event.respondTo[0]!=event.player&&[event.respondTo[0],event.player].contains(player);
@ -5264,7 +5353,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return _status.event.choice; return _status.event.choice;
}); });
} }
else event.finish(); else{
player.storage.counttrigger[event.name]--;
event.finish();
}
'step 2' 'step 2'
player.addExpose(0.2); player.addExpose(0.2);
if(event.type){ if(event.type){
@ -5601,6 +5693,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kanade_benzhan:{ kanade_benzhan:{
trigger:{global:['useCard','respond']}, trigger:{global:['useCard','respond']},
direct:true, direct:true,
usable:1,
filter:function(event,player){ filter:function(event,player){
return Array.isArray(event.respondTo)&&event.respondTo[0]!=event.player&&[event.respondTo[0],event.player].contains(player); return Array.isArray(event.respondTo)&&event.respondTo[0]!=event.player&&[event.respondTo[0],event.player].contains(player);
}, },
@ -5640,7 +5733,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return _status.event.choice; return _status.event.choice;
}); });
} }
else event.finish(); else{
player.storage.counttrigger[event.name]--;
event.finish();
}
'step 2' 'step 2'
player.addExpose(0.2); player.addExpose(0.2);
if(event.type){ if(event.type){
@ -15245,6 +15341,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_mia:'藤川米娅', key_mia:'藤川米娅',
key_kano:'雾岛佳乃', key_kano:'雾岛佳乃',
db_key_liyingxia:'李映夏', db_key_liyingxia:'李映夏',
key_erika:'苍井えりか',
key_satomi:'藏里见',
lucia_duqu:'毒躯', lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃', lucia_zhenren:'振刃',
@ -15435,7 +15533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kanade_mapo:'麻婆', kanade_mapo:'麻婆',
kanade_mapo_info:'你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。', kanade_mapo_info:'你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。',
kanade_benzhan:'奔战', kanade_benzhan:'奔战',
kanade_benzhan_info:'当你使用或打出牌响应其他角色或其他角色使用或打出牌响应你后若此牌为基本牌你可令一名角色弃置两张牌或令一名角色摸两张牌非基本牌你可对一名角色造成1点伤害或令一名其他角色回复1点体力。', kanade_benzhan_info:'每回合限一次。当你使用或打出牌响应其他角色或其他角色使用或打出牌响应你后若此牌为基本牌你可令一名角色弃置两张牌或令一名角色摸两张牌非基本牌你可对一名角色造成1点伤害或令一名其他角色回复1点体力。',
mio_tuifu:'推腐', mio_tuifu:'推腐',
mio_tuifu_info:'锁定技,当一名角色对一名同性角色造成伤害时,你摸一张牌。', mio_tuifu_info:'锁定技,当一名角色对一名同性角色造成伤害时,你摸一张牌。',
mio_tishen:'替身', mio_tishen:'替身',
@ -15455,7 +15553,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shizuru_nianli:'念力', shizuru_nianli:'念力',
shizuru_nianli_info:'每轮限一次,你可以展示一张♦/♣/♥/♠手牌,然后视为使用一张不计入次数限制和记录的雷【杀】/【闪】/【桃】/【无懈可击】。', shizuru_nianli_info:'每轮限一次,你可以展示一张♦/♣/♥/♠手牌,然后视为使用一张不计入次数限制和记录的雷【杀】/【闪】/【桃】/【无懈可击】。',
shizuru_benzhan:'奔战', shizuru_benzhan:'奔战',
shizuru_benzhan_info:'当你使用或打出牌响应其他角色或其他角色使用或打出牌响应你后若此牌为基本牌你可令一名角色弃置两张牌或令一名角色摸两张牌非基本牌你可对一名角色造成1点伤害或令一名其他角色回复1点体力。', shizuru_benzhan_info:'每回合限一次。当你使用或打出牌响应其他角色或其他角色使用或打出牌响应你后若此牌为基本牌你可令一名角色弃置两张牌或令一名角色摸两张牌非基本牌你可对一名角色造成1点伤害或令一名其他角色回复1点体力。',
shiorimiyuki_banyin:'伴音', shiorimiyuki_banyin:'伴音',
shiorimiyuki_banyin_info:'当你受到伤害或回复体力后你可令一名其他角色回复1点体力。', shiorimiyuki_banyin_info:'当你受到伤害或回复体力后你可令一名其他角色回复1点体力。',
shiorimiyuki_tingxian:'铤险', shiorimiyuki_tingxian:'铤险',
@ -15600,6 +15698,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liyingxia_zhenjun_info:'键势力技。结束阶段你可以令至多X名角色各摸一张牌且这些角色于自己的下个回合内第一次造成的伤害+1X为你本回合内使用【杀】和伤害性锦囊牌的次数。', liyingxia_zhenjun_info:'键势力技。结束阶段你可以令至多X名角色各摸一张牌且这些角色于自己的下个回合内第一次造成的伤害+1X为你本回合内使用【杀】和伤害性锦囊牌的次数。',
liyingxia_wumai:'武脉', liyingxia_wumai:'武脉',
liyingxia_wumai_info:'蜀势力技。一轮游戏开始时,你可以选择获得其中一个未选择过的技能直到本轮结束:〖八阵〗/〖集智〗/〖观星〗/〖游龙〗。若均已选择过则你可以摸X张牌X为场上已受伤的角色数且至多为3。', liyingxia_wumai_info:'蜀势力技。一轮游戏开始时,你可以选择获得其中一个未选择过的技能直到本轮结束:〖八阵〗/〖集智〗/〖观星〗/〖游龙〗。若均已选择过则你可以摸X张牌X为场上已受伤的角色数且至多为3。',
erika_shisong:'识诵',
erika_shisong_info:'锁定技。①你的手牌上限+XX为你的护甲数。②当你于回合内使用第X张牌时若此牌与你上回合使用的第X张牌类型相同则你摸一张牌。',
erika_yousheng:'佑生',
erika_yousheng_info:'使命技。①限定技。一轮游戏开始时你可以选择至多两名其他角色。你减2点体力上限并增加3点护甲。②当你因〖佑生①〗选择的角色成为【杀】或伤害类锦囊牌的目标时你可以弃置X张牌并将此目标转移给自己X为你本轮内发动过〖佑生②〗的次数。此牌结算结束后你可令一名原目标角色获得此牌。③成功当你失去最后的护甲后若你已发动过〖佑生①〗则你和所有〖佑生①〗选择的角色各摸三张牌。④失败当一名〖佑生①〗选择的角色因【杀】或伤害类锦囊牌而受到伤害时你失去所有护甲并弃置等量的牌。',
erika_yousheng_append:'<span style="font-family: yuanli">Death is not the end of life, but the completion of life.</span>',
satomi_luodao:'落刀',
satomi_luodao_info:'当你使用【杀】指定目标后,你可以展示目标角色的所有手牌。若其中:有【闪】,则你弃置其中的一张【闪】;没有【闪】,则你弃置一张牌。',
satomi_daohai:'稻海',
satomi_daohai_info:'结束阶段,若你本回合内弃置过牌,则你可以视为使用一张【五谷丰登】。然后你可以将你于此【五谷丰登】中获得的牌当做【乐不思蜀】使用。',
satomi_daohai_append:'<span style="font-family: yuanli">五穀豊穣、刈り入れ時だね!</span>',
key_kud:'库特莉亚芙卡', key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手', kud_qiaoshou:'巧手',

View File

@ -17,7 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_sunben:["re_sunben"], mobile_sunben:["re_sunben"],
mobile_standard:["xin_xiahoudun","xin_zhangfei"], mobile_standard:["xin_xiahoudun","xin_zhangfei"],
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong"], mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong"],
mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin"], mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai"],
mobile_yijiang2:["old_bulianshi","xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui"], mobile_yijiang2:["old_bulianshi","xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui"],
mobile_yijiang3:["xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"], mobile_yijiang3:["xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen"], mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen"],
@ -27,6 +27,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
character:{ character:{
re_wuguotai:['female','wu',3,['reganlu','buyi']],
xin_sunxiu:['male','wu',3,['mobileyanzhu','mobilexingxue','zhaofu'],['zhu']], xin_sunxiu:['male','wu',3,['mobileyanzhu','mobilexingxue','zhaofu'],['zhu']],
sp_maojie:['male','wei',3,['bingqing','yingfeng']], sp_maojie:['male','wei',3,['bingqing','yingfeng']],
sp_zhujun:['male','qun',4,['yangjie','zjjuxiang','houfeng']], sp_zhujun:['male','qun',4,['yangjie','zjjuxiang','houfeng']],
@ -606,6 +607,62 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ skill:{
reganlu:{
enable:'phaseUse',
usable:1,
audio:2,
selectTarget:2,
delay:0,
filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length==0) return true;
if(ui.selected.targets[0].countCards('e')==0&&target.countCards('e')==0) return false;
return target==player||ui.selected.targets[0]==player||Math.abs(ui.selected.targets[0].countCards('e')-target.countCards('e'))<=player.maxHp-player.hp;
},
multitarget:true,
multiline:true,
content:function(){
targets[0].swapEquip(targets[1]);
},
ai:{
order:10,
threaten:function(player,target){
return 0.8*Math.max(1+target.maxHp-target.hp);
},
result:{
target:function(player,target){
var list1=[];
var list2=[];
var num=player.maxHp-player.hp;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.attitude(player,players[i])>0) list1.push(players[i]);
else if(get.attitude(player,players[i])<0) list2.push(players[i]);
}
list1.sort(function(a,b){
return a.countCards('e')-b.countCards('e');
});
list2.sort(function(a,b){
return b.countCards('e')-a.countCards('e');
});
var delta;
for(var i=0;i<list1.length;i++){
for(var j=0;j<list2.length;j++){
delta=list2[j].countCards('e')-list1[i].countCards('e');
if(delta<=0) continue;
if(delta<=num||list1[i]==player||list2[j]==player){
if(target==list1[i]||target==list2[j]){
return get.attitude(player,target);
}
return 0;
}
}
}
return 0;
}
},
}
},
//孙休 //孙休
mobilexingxue:{ mobilexingxue:{
audio:2, audio:2,
@ -1276,7 +1333,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
forced:true, forced:true,
zhuanhuanji:true, zhuanhuanji:'number',
filter:function(event,player){ filter:function(event,player){
return (player.countMark('spshidi')%2)==['phaseJieshu','phaseZhunbei'].indexOf(event.name); return (player.countMark('spshidi')%2)==['phaseJieshu','phaseZhunbei'].indexOf(event.name);
}, },
@ -3238,6 +3295,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.draw(3).gaintag=['poxiang']; player.draw(3).gaintag=['poxiang'];
player.addTempSkill('poxiang_mark') player.addTempSkill('poxiang_mark')
'step 1' 'step 1'
var cards=player.getExpansions('jueyong');
if(cards.length) player.loseToDiscardpile(cards);
player.unmarkSkill('jueyong'); player.unmarkSkill('jueyong');
player.loseHp(); player.loseHp();
'step 2' 'step 2'
@ -4281,7 +4340,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
unequip:true, unequip:true,
respondSha:true, respondSha:true,
skillTagFilter:function(player,tag,arg){ skillTagFilter:function(player,tag,arg){
if(tag=='unequip') return arg.card&&arg.card.storage&&arg.card.storage.dbchongjian; if(tag=='unequip') return player.group=='wu'&&arg.card&&arg.card.storage&&arg.card.storage.dbchongjian;
return player.group=='wu'&&arg=='use'&&player.hasCard(function(card){ return player.group=='wu'&&arg=='use'&&player.hasCard(function(card){
return get.type(card)=='equip'; return get.type(card)=='equip';
},'hes'); },'hes');
@ -11281,7 +11340,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true, forced:true,
audio:'relihuo', audio:'relihuo',
filter:function(event,player){ filter:function(event,player){
return event.getParent(2).relihuo==true; return event.getParent(2).relihuo==true&&event.player.isLinked();
}, },
content:function(){ content:function(){
trigger.num++; trigger.num++;
@ -16205,7 +16264,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rehuaibi_info:'主公技,锁定技,你的手牌上限+XX为你因〖邀虎〗选择势力的角色数量)。', rehuaibi_info:'主公技,锁定技,你的手牌上限+XX为你因〖邀虎〗选择势力的角色数量)。',
simafu:'司马孚', simafu:'司马孚',
xunde:'勋德', xunde:'勋德',
xunde_info:'一名角色受到伤害后,若你至其的距离1则你可判定。若判定结果大于5你令该角色获得判定牌小于7你令伤害来源弃置一张牌。', xunde_info:'一名角色受到伤害后,若你至其的距离不大于1则你可判定。若判定结果大于5你令该角色获得判定牌小于7你令伤害来源弃置一张牌。',
chenjie:'臣节', chenjie:'臣节',
chenjie_info:'一名角色的判定牌生效前,你可打出一张花色相同的牌。系统将你打出的牌作为新判定牌,将原判定牌置入弃牌堆。然后你摸两张牌。', chenjie_info:'一名角色的判定牌生效前,你可打出一张花色相同的牌。系统将你打出的牌作为新判定牌,将原判定牌置入弃牌堆。然后你摸两张牌。',
mayuanyi:'马元义', mayuanyi:'马元义',
@ -16331,6 +16390,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobileyanzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色选择一项:①你获得其装备区里所有的牌,然后你失去技能〖宴诛〗。②你获得其一张牌。', mobileyanzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色选择一项:①你获得其装备区里所有的牌,然后你失去技能〖宴诛〗。②你获得其一张牌。',
mobilexingxue:'兴学', mobilexingxue:'兴学',
mobilexingxue_info:'结束阶段开始时你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶X为你的体力值若你未拥有〖宴诛〗则将X改为你的体力上限且其可以改为将一张牌交给一名其他目标角色。', mobilexingxue_info:'结束阶段开始时你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶X为你的体力值若你未拥有〖宴诛〗则将X改为你的体力上限且其可以改为将一张牌交给一名其他目标角色。',
re_wuguotai:'手杀吴国太',
reganlu:'甘露',
reganlu_info:'出牌阶段限一次你可以选择装备区牌数之差的绝对值不大于X的两名角色或包含你在内的两名角色然后交换这两名角色装备区内的牌。X为你已损失的体力值',
taoqian:'手杀陶谦',
miheng:'手杀祢衡',
mobile_standard:'手杀异构·标准包', mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临', mobile_shenhua:'手杀异构·神话再临',

View File

@ -29,6 +29,7 @@ window.noname_character_rank={
'ns_zhangwei', 'ns_zhangwei',
'wanglang', 'wanglang',
'caojinyu', 'caojinyu',
'zhangmancheng',
'key_mio', 'key_mio',
'key_midori', 'key_midori',
'key_yuri', 'key_yuri',
@ -498,6 +499,8 @@ window.noname_character_rank={
'sp_zhujun', 'sp_zhujun',
're_guohuanghou', 're_guohuanghou',
'tw_liuhong', 'tw_liuhong',
're_zhangbao',
're_dengzhi',
], ],
bp:[ bp:[
'chess_diaochan', 'chess_diaochan',
@ -747,6 +750,11 @@ window.noname_character_rank={
'ol_xuhuang', 'ol_xuhuang',
'ol_zhuling', 'ol_zhuling',
'tw_zangba', 'tw_zangba',
're_miheng',
'fengxi',
'tw_chengpu',
'key_satomi',
'key_erika',
], ],
b:[ b:[
'diy_feishi', 'diy_feishi',
@ -966,6 +974,7 @@ window.noname_character_rank={
'zhaoyan', 'zhaoyan',
'huojun', 'huojun',
'tw_caocao', 'tw_caocao',
'xin_wuguotai',
], ],
bm:[ bm:[
'diy_xizhenxihong', 'diy_xizhenxihong',
@ -1301,6 +1310,7 @@ window.noname_character_rank={
'shen_xunyu', 'shen_xunyu',
'tw_gexuan', 'tw_gexuan',
'fengfangnv', 'fengfangnv',
'zhangmancheng',
'key_tomoya', 'key_tomoya',
'key_masato', 'key_masato',
'key_shiorimiyuki', 'key_shiorimiyuki',
@ -1319,6 +1329,8 @@ window.noname_character_rank={
'key_tenzen', 'key_tenzen',
'key_kotarou', 'key_kotarou',
'key_kyou', 'key_kyou',
'key_erika',
'key_satomi',
'noname', 'noname',
], ],
epic:[ epic:[
@ -1864,6 +1876,8 @@ window.noname_character_rank={
're_guohuanghou', 're_guohuanghou',
'tw_huojun', 'tw_huojun',
'zhaoyan', 'zhaoyan',
're_miheng',
'tw_chengpu',
], ],
junk:[ junk:[
'sunshao', 'sunshao',

View File

@ -68,7 +68,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']], re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']],
ol_pangtong:['male','shu',3,['ollianhuan','olniepan'],[]], ol_pangtong:['male','shu',3,['ollianhuan','olniepan'],[]],
re_zhangyi:['male','shu',5,['rewurong','reshizhi']], re_zhangyi:['male','shu',5,['rewurong','reshizhi']],
re_wuguotai:['female','wu',3,['reganlu','buyi']], xin_wuguotai:['female','wu',3,['xinganlu','xinbuyi']],
re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']], re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']],
re_caocao:['male','wei',4,['new_rejianxiong','rehujia'],['zhu']], re_caocao:['male','wei',4,['new_rejianxiong','rehujia'],['zhu']],
re_simayi:['male','wei',3,['refankui','reguicai']], re_simayi:['male','wei',3,['refankui','reguicai']],
@ -143,6 +143,72 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xushu:['zhaoyun','sp_zhugeliang'], re_xushu:['zhaoyun','sp_zhugeliang'],
}, },
skill:{ skill:{
xinganlu:{
enable:'phaseUse',
usable:1,
audio:2,
selectTarget:2,
delay:0,
filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length==0) return true;
if(ui.selected.targets[0].countCards('e')==0&&target.countCards('e')==0) return false;
return true;
},
multitarget:true,
multiline:true,
content:function(){
'step 0'
targets[0].swapEquip(targets[1]);
'step 1'
game.delayx();
var num=Math.abs(targets[0].countCards('e')-targets[1].countCards('e'));
if(num>player.getDamagedHp()) player.chooseToDiscard('h',2,true);
},
ai:{
order:10,
expose:0.2,
threaten:function(player,target){
return 0.8*Math.max(1+target.maxHp-target.hp);
},
result:{
target:function(player,target){
if(!ui.selected.targets.length) return -get.value(target.getCards('e'),target);
var target2=ui.selected.targets[0];
var eff_target=(get.value(target2.getCards('e'),target)-get.value(target.getCards('e'),target));
if(get.sgn(eff_target)==get.sgn(-get.value(target2.getCards('e'),target2))) return 0;
return eff_target;
}
},
}
},
xinbuyi:{
audio:2,
trigger:{global:'dying'},
filter:function(event,player){
return event.player.countCards('h')>0;
},
check:function(event,player){
return get.attitude(player,event.player)>0;
},
content:function(){
'step 0'
if(player==trigger.player) player.chooseCard('h',true).set('ai',function(card){
if(get.type(card)!='basic') return 100-get.value(card);
return 0;
});
else player.choosePlayerCard('h',trigger.player,true);
'step 1'
var card=result.cards[0],target=trigger.player;
player.showCards(card,get.translation(player)+'对'+(player==target?'自己':get.translation(target))+'发动了【补益】');
if(get.type(card,target)!='basic'){
target.discard(card);
target.recover();
if(target.countCards('h')==1) target.draw();
}
},
logTarget:'player',
},
rejiaozhao:{ rejiaozhao:{
audio:2, audio:2,
enable:'phaseUse', enable:'phaseUse',
@ -2669,8 +2735,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
charlotte:true, charlotte:true,
onremove:true, onremove:true,
mod:{ mod:{
attackFrom:function(){ attackRangeBase:function(){
return -Infinity; return Infinity;
}, },
cardUsable:function(card,player){ cardUsable:function(card,player){
if(card.name=='sha'&&player.storage.xingongji2.contains(get.suit(card))) return Infinity; if(card.name=='sha'&&player.storage.xingongji2.contains(get.suit(card))) return Infinity;
@ -4523,8 +4589,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
regongji:{ regongji:{
mod:{ mod:{
attackFrom:function(player){ attackRangeBase:function(player){
if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return -Infinity if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return Infinity;
}, },
}, },
enable:'phaseUse', enable:'phaseUse',
@ -5954,62 +6020,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
}, },
reganlu:{
enable:'phaseUse',
usable:1,
audio:2,
selectTarget:2,
delay:0,
filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length==0) return true;
if(ui.selected.targets[0].countCards('e')==0&&target.countCards('e')==0) return false;
return target==player||ui.selected.targets[0]==player||Math.abs(ui.selected.targets[0].countCards('e')-target.countCards('e'))<=player.maxHp-player.hp;
},
multitarget:true,
multiline:true,
content:function(){
targets[0].swapEquip(targets[1]);
},
ai:{
order:10,
threaten:function(player,target){
return 0.8*Math.max(1+target.maxHp-target.hp);
},
result:{
target:function(player,target){
var list1=[];
var list2=[];
var num=player.maxHp-player.hp;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.attitude(player,players[i])>0) list1.push(players[i]);
else if(get.attitude(player,players[i])<0) list2.push(players[i]);
}
list1.sort(function(a,b){
return a.countCards('e')-b.countCards('e');
});
list2.sort(function(a,b){
return b.countCards('e')-a.countCards('e');
});
var delta;
for(var i=0;i<list1.length;i++){
for(var j=0;j<list2.length;j++){
delta=list2[j].countCards('e')-list1[i].countCards('e');
if(delta<=0) continue;
if(delta<=num||list1[i]==player||list2[j]==player){
if(target==list1[i]||target==list2[j]){
return get.attitude(player,target);
}
return 0;
}
}
}
return 0;
}
},
}
},
sishu:{ sishu:{
audio:2, audio:2,
trigger:{player:'phaseUseBegin'}, trigger:{player:'phaseUseBegin'},
@ -7924,7 +7934,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCard1'}, trigger:{player:'useCard1'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
return (!event.audioed||!player.hasSkill('new_repaoxiao2'))&&event.card.name=='sha'; return event.card.name=='sha'&&(!event.audioed||!player.hasSkill('new_repaoxiao2'));
}, },
content:function(){ content:function(){
trigger.audioed=true; trigger.audioed=true;
@ -10640,6 +10650,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.storage.chengzhang) return '当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面。当你翻面时,你获得牌堆中的一张随机锦囊。'; if(player.storage.chengzhang) return '当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面。当你翻面时,你获得牌堆中的一张随机锦囊。';
return '当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面并获得牌堆中的一张随机锦囊。'; return '当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面并获得牌堆中的一张随机锦囊。';
}, },
rejiaozhao:function(player){
return ['出牌阶段限一次。你可以展示一张手牌,并令一名距离你最近的角色选择一种基本牌或普通锦囊牌的牌名。你可将此牌当做其声明的牌使用直到此阶段结束(你不是此牌的合法目标)。','出牌阶段限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用(你不是此牌的合法目标)。','出牌阶段每种类型各限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用。'][player.countMark('redanxin')];
},
}, },
translate:{ translate:{
re_zhangliao:'界张辽', re_zhangliao:'界张辽',
@ -10902,10 +10915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rezhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。', rezhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。',
refangquan:'放权', refangquan:'放权',
refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限为你的体力上限,且回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。', refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限为你的体力上限,且回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。',
re_wuguotai:'界吴国太',
re_gaoshun:'界高顺', re_gaoshun:'界高顺',
reganlu:'甘露',
reganlu_info:'出牌阶段限一次你可以选择装备区牌数之差的绝对值不大于X的两名角色或包含你在内的两名角色然后交换这两名角色装备区内的牌。X为你已损失的体力值',
repojun:'破军', repojun:'破军',
repojun2:'破军', repojun2:'破军',
repojun3:'破军', repojun3:'破军',
@ -11185,9 +11195,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rejiaozhao_lv2:'矫诏·升级 Lv.1', rejiaozhao_lv2:'矫诏·升级 Lv.1',
rejiaozhao_lv2_info:'出牌阶段限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用(你不是此牌的合法目标)。', rejiaozhao_lv2_info:'出牌阶段限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用(你不是此牌的合法目标)。',
rejiaozhao_lv3:'矫诏·升级 Lv.2', rejiaozhao_lv3:'矫诏·升级 Lv.2',
rejiaozhao_lv3_info:'出牌阶段每种类型各限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用(你不是此牌的合法目标)。', rejiaozhao_lv3_info:'出牌阶段每种类型各限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用。',
redanxin:'殚心', redanxin:'殚心',
redanxin_info:'当你受到伤害后,你可以摸一张牌并升级〖矫诏〗。', redanxin_info:'当你受到伤害后,你可以摸一张牌并升级〖矫诏〗。',
xin_wuguotai:'界吴国太',
xinganlu:'甘露',
xinganlu_info:'出牌阶段限一次。你可以令两名角色交换装备区内的牌,然后若这两名角色装备区内牌数差的绝对值大于你已损失的体力值,则你弃置两张手牌。',
xinbuyi:'补益',
xinbuyi_info:'一名角色进入濒死状态时你可展示其一张手牌。若此牌不为基本牌则其弃置此牌并回复1点体力。若其以此法弃置的牌移动前为其的唯一一张手牌则其摸一张牌。',
refresh_standard:'界限突破·标', refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风', refresh_feng:'界限突破·风',

View File

@ -3372,6 +3372,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dialog:function(event,player){ dialog:function(event,player){
return ui.create.dialog('急袭',player.getExpansions('tuntian'),'hidden'); return ui.create.dialog('急袭',player.getExpansions('tuntian'),'hidden');
}, },
filter:function(button,player){
var card=button.link;
if(!game.checkMod(card,player,'unchanged','cardEnabled2',player)) return false;
var evt=_status.event.getParent();
return evt.filterCard(get.autoViewAs({name:'shunshou'},[card]),player,evt)
},
backup:function(links,player){ backup:function(links,player){
var skill=_status.event.buttoned; var skill=_status.event.buttoned;
return { return {
@ -6031,8 +6037,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
locked:false, locked:false,
mod:{ mod:{
attackFrom:function(from,to,distance){ attackRange:function(player,distance){
if(get.zhu(from,'shouyue')) return distance-1; if(get.zhu(player,'shouyue')) return distance+1;
} }
}, },
ai:{ ai:{

View File

@ -74,7 +74,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yangxiu:['male','wei',3,['jilei','danlao']], yangxiu:['male','wei',3,['jilei','danlao']],
chenlin:['male','wei',3,['bifa','songci']], chenlin:['male','wei',3,['bifa','songci']],
caohong:['male','wei',4,['yuanhu']], caohong:['male','wei',4,['yuanhu']],
xiahouba:['male','shu',4,['baobian']], xiahouba:['male','shu',4,['rebaobian']],
yuanshu:['male','qun',4,['yongsi','weidi']], yuanshu:['male','qun',4,['yongsi','weidi']],
sp_diaochan:['female','qun',3,['lihun','rebiyue']], sp_diaochan:['female','qun',3,['lihun','rebiyue']],
sp_zhaoyun:['male','qun',3,['ollongdan','chongzhen']], sp_zhaoyun:['male','qun',3,['ollongdan','chongzhen']],
@ -478,6 +478,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ skill:{
//十周年夏侯霸
rebaobian:{
audio:2,
trigger:{player:'damageEnd'},
filter:function(event,player){
for(var i of lib.skill.rebaobian.derivation){
if(!player.hasSkill(i,null,null,false)) return true;
}
return false;
},
forced:true,
content:function(){
for(var i of lib.skill.rebaobian.derivation){
if(!player.hasSkill(i,null,null,false)){
player.addSkillLog(i);
break;
}
}
},
ai:{
maixie:true,
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')&&!target.hasSkill('oltiaoxin',null,null,false)){
if(!target.hasFriend()) return;
if(target.hp>=4) return [0,1];
}
}
}
},
derivation:['oltiaoxin','new_repaoxiao','xinshensu'],
},
//范强张达 //范强张达
yuanchou:{ yuanchou:{
audio:2, audio:2,
@ -3779,16 +3811,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 5.1-get.value(card); return 5.1-get.value(card);
}, },
filterCard:{color:'black'}, filterCard:{color:'black'},
filterTarget:function(card,player,target){
if(target.hp<=player.hp) return false;
return lib.filter.filterTarget.apply(this,arguments);
},
position:'hes', position:'hes',
audio:'niluan', audio:'niluan',
viewAsFilter:function(player){ viewAsFilter:function(player){
return player.countCards('hes',lib.skill.spniluan.filterCard)>0&&game.hasPlayer(function(current){ return player.countCards('hes',lib.skill.spniluan.filterCard)>0;
return current.hp>player.hp&&player.canUse('sha',current);
});
}, },
group:'spniluan_clear', group:'spniluan_clear',
}, },
@ -3820,12 +3846,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 7-get.value(card); return 7-get.value(card);
}, },
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
if(target.countCards('h')<=player.countCards('h')) return false; if(target.countCards('h')<player.countCards('h')) return false;
return lib.filter.filterTarget.apply(this,arguments); return lib.filter.filterTarget.apply(this,arguments);
}, },
viewAsFilter:function(player){ viewAsFilter:function(player){
return player.countCards('hes',lib.skill.spweiwu.filterCard)>0&&game.hasPlayer(function(current){ return player.countCards('hes',lib.skill.spweiwu.filterCard)>0&&game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h')&&player.canUse('shunshou',current); return current.countCards('h')>=player.countCards('h')&&player.canUse('shunshou',current);
}); });
}, },
}, },
@ -14116,7 +14142,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 2" "step 2"
player.removeSkill('bifa2'); player.removeSkill('bifa2');
}, },
marktext:'檄',
intro:{ intro:{
markcount:1,
name:'笔伐', name:'笔伐',
content:'已成为〖笔伐〗的目标', content:'已成为〖笔伐〗的目标',
}, },
@ -15888,13 +15916,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huaxin:['ol_huaxin','huaxin','sp_huaxin'], huaxin:['ol_huaxin','huaxin','sp_huaxin'],
xujing:['xujing','sp_xujing'], xujing:['xujing','sp_xujing'],
zhaoxiang:['zhaoxiang','tw_zhaoxiang'], zhaoxiang:['zhaoxiang','tw_zhaoxiang'],
dengzhi:['ol_dengzhi','dengzhi'], dengzhi:['ol_dengzhi','re_dengzhi','dengzhi'],
wangrong:['wangrong','ol_wangrong'], wangrong:['wangrong','ol_wangrong'],
zongyu:['sp_zongyu','zongyu'], zongyu:['sp_zongyu','zongyu'],
ol_dongzhao:['ol_dongzhao','tw_dongzhao'], ol_dongzhao:['ol_dongzhao','tw_dongzhao'],
mayunlu:['tw_mayunlu','mayunlu'], mayunlu:['tw_mayunlu','mayunlu'],
zhuling:['ol_zhuling','zhuling'], zhuling:['ol_zhuling','zhuling'],
zangba:['tw_zangba','zangba'], zangba:['tw_zangba','zangba'],
zhangbao:['zhangbao','re_zhangbao'],
}, },
translate:{ translate:{
"xinfu_lingren":"凌人", "xinfu_lingren":"凌人",
@ -16001,7 +16030,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhugedan:'诸葛诞', zhugedan:'诸葛诞',
sp_machao:'SP马超', sp_machao:'SP马超',
sp_jiangwei:'SP姜维', sp_jiangwei:'SP姜维',
zhangbao:'张宝', zhangbao:'OL张宝',
yangxiou:'杨修', yangxiou:'杨修',
shixie:'士燮', shixie:'士燮',
mayunlu:'马云騄', mayunlu:'马云騄',
@ -16037,8 +16066,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dongyun:'董允', dongyun:'董允',
mazhong:'马忠', mazhong:'马忠',
huangfusong:'皇甫嵩', huangfusong:'皇甫嵩',
miheng:'祢衡',
taoqian:'陶谦',
wangyun:'王允', wangyun:'王允',
sunqian:'孙乾', sunqian:'孙乾',
xizhicai:'戏志才', xizhicai:'戏志才',
@ -16595,6 +16622,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yongsi_info:'锁定技摸牌阶段你多摸X张牌。弃牌阶段开始时你弃置X张牌。X为场上势力数', yongsi_info:'锁定技摸牌阶段你多摸X张牌。弃牌阶段开始时你弃置X张牌。X为场上势力数',
yicong_info:'锁定技当你的体力值大于2时你计算与其他角色的距离时-1当你的体力值不大于2时其他角色计算与你的距离时+1。', yicong_info:'锁定技当你的体力值大于2时你计算与其他角色的距离时-1当你的体力值不大于2时其他角色计算与你的距离时+1。',
baobian_info:'锁定技若你的体力值为3或更少你视为拥有技能〖挑衅〗若你的体力值为2或更少你视为拥有技能〖咆哮〗若你的体力值为1你视为拥有技能〖神速〗。', baobian_info:'锁定技若你的体力值为3或更少你视为拥有技能〖挑衅〗若你的体力值为2或更少你视为拥有技能〖咆哮〗若你的体力值为1你视为拥有技能〖神速〗。',
rebaobian:'豹变',
rebaobian_info:'锁定技。当你受到伤害后,你获得以下技能中第一个未拥有的技能:〖挑衅〗/〖咆哮〗/〖神速〗。',
bingzhao:'秉诏', bingzhao:'秉诏',
bingzhao_info:'主公技,游戏开始时,你选择一个其他势力。当你对该势力的角色发动〖骨疽〗时,其可令你额外摸一张牌。', bingzhao_info:'主公技,游戏开始时,你选择一个其他势力。当你对该势力的角色发动〖骨疽〗时,其可令你额外摸一张牌。',
sunshao:'孙邵', sunshao:'孙邵',
@ -16628,9 +16657,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shanzhuan:'擅专', shanzhuan:'擅专',
shanzhuan_info:'当你对其他角色造成伤害后,若其判定区没有牌,则你你可以将其的一张牌置于其的判定区。若此牌不为延时锦囊牌且此牌为:红色,此牌视为【乐不思蜀】;黑色,此牌视为【兵粮寸断】。回合结束时,若你本回合内未造成伤害,你可摸一张牌。', shanzhuan_info:'当你对其他角色造成伤害后,若其判定区没有牌,则你你可以将其的一张牌置于其的判定区。若此牌不为延时锦囊牌且此牌为:红色,此牌视为【乐不思蜀】;黑色,此牌视为【兵粮寸断】。回合结束时,若你本回合内未造成伤害,你可摸一张牌。',
spniluan:'逆乱', spniluan:'逆乱',
spniluan_info:'出牌阶段,你可以将一张黑色牌当做【杀】对体力值大于你的角色使用。此【杀】使用结算完成后,若你未因此【杀】造成过伤害,则你令此【杀】不计入使用次数。', spniluan_info:'出牌阶段,你可以将一张黑色牌当做【杀】使用。此【杀】使用结算完成后,若你未因此【杀】造成过伤害,则你令此【杀】不计入使用次数。',
spweiwu:'违忤', spweiwu:'违忤',
spweiwu_info:'出牌阶段限一次,你可以将一张红色牌当做【顺手牵羊】对手牌数于你的角色使用。', spweiwu_info:'出牌阶段限一次,你可以将一张红色牌当做【顺手牵羊】对手牌数不小于你的角色使用。',
spmouzhu:'谋诛', spmouzhu:'谋诛',
spmouzhu_backup:'谋诛', spmouzhu_backup:'谋诛',
spmouzhu_info:'出牌阶段限一次你可以从“距离为1”或“体力值等于你”中选择一个条件然后令此时所有满足条件的角色依次进行以下结算交给你一张手牌然后若其手牌数小于你则其视为对你使用一张【杀】或【决斗】。', spmouzhu_info:'出牌阶段限一次你可以从“距离为1”或“体力值等于你”中选择一个条件然后令此时所有满足条件的角色依次进行以下结算交给你一张手牌然后若其手牌数小于你则其视为对你使用一张【杀】或【决斗】。',
@ -16717,7 +16746,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fuwei_info:'每回合限一次。当你的牌被其他角色弃置或获得后,你可从牌堆中获得一张与此牌名称相同的牌(若没有则改为摸一张牌)。', fuwei_info:'每回合限一次。当你的牌被其他角色弃置或获得后,你可从牌堆中获得一张与此牌名称相同的牌(若没有则改为摸一张牌)。',
yuejian:'约俭', yuejian:'约俭',
yuejian_info:'每回合限两次。当其他角色对你使用的牌A结算结束后你可展示所有手牌。若牌A有花色且你的手牌中没有同花色的牌则你获得牌A对应的所有实体牌。', yuejian_info:'每回合限两次。当其他角色对你使用的牌A结算结束后你可展示所有手牌。若牌A有花色且你的手牌中没有同花色的牌则你获得牌A对应的所有实体牌。',
ol_dengzhi:'邓芝', ol_dengzhi:'OL邓芝',
olxiuhao:'修好', olxiuhao:'修好',
olxiuhao_info:'每回合限一次。当你受到其他角色造成的伤害时,或对其他角色造成伤害时,你可防止此伤害,然后令伤害来源摸两张牌。', olxiuhao_info:'每回合限一次。当你受到其他角色造成的伤害时,或对其他角色造成伤害时,你可防止此伤害,然后令伤害来源摸两张牌。',
olsujian:'素俭', olsujian:'素俭',

View File

@ -4,6 +4,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2', name:'sp2',
connect:true, connect:true,
character:{ character:{
re_dengzhi:['male','shu',3,['jianliang','weimeng']],
fengxi:['male','wu',3,['yusui','boyan']],
re_miheng:['male','qun',3,['rekuangcai','reshejian']],
re_zhangbao:['male','qun',3,['xinzhoufu','xinyingbing']],
zhaoyan:['female','wu',3,['jinhui','qingman']], zhaoyan:['female','wu',3,['jinhui','qingman']],
re_sunyi:['male','wu',5,['syjiqiao','syxiongyi']], re_sunyi:['male','wu',5,['syjiqiao','syxiongyi']],
re_pangdegong:['male','qun',3,['heqia','yinyi']], re_pangdegong:['male','qun',3,['heqia','yinyi']],
@ -126,10 +130,338 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zhilan:['liuyong','wanniangongzhu','zhanghu'], sp_zhilan:['liuyong','wanniangongzhu','zhanghu'],
sp_fenghuo:['re_nanhualaoxian','tongyuan','zhangning'], sp_fenghuo:['re_nanhualaoxian','tongyuan','zhangning'],
sp_guixin:['re_kanze','re_chendeng'], sp_guixin:['re_kanze','re_chendeng'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_dongzhao','yangwan','re_panshu','dufuren','zhouyi','lvlingqi','caojinyu','wangtao','wangyue','re_pangdegong','re_sunyi'], sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_dongzhao','yangwan','re_panshu','dufuren','zhouyi','lvlingqi','caojinyu','wangtao','wangyue','re_pangdegong','re_sunyi','re_miheng','fengxi','re_dengzhi','re_zhangbao'],
} }
}, },
skill:{ skill:{
//邓芝
jianliang:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
filter:function(event,player){
return !player.isMaxHandcard();
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('jianliang'),'令至多两名角色各摸一张牌',[1,2]).set('ai',function(target){
return Math.sqrt(5-Math.min(4,target.countCards('h')))*get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var targets=result.targets.sortBySeat();
player.logSkill('jianliang',targets);
if(targets.length==1){
targets[0].draw();
event.finish();
}
else game.asyncDraw(targets);
}
else event.finish();
'step 2'
game.delayx();
},
},
weimeng:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player.hp>0&&target!=player&&target.countGainableCards(player,'h')>0;
},
content:function(){
'step 0'
player.gainPlayerCard(target,'h',true,[1,player.hp]);
'step 1'
if(result.bool&&target.isIn()){
var num=result.cards.length,hs=player.getCards('he');
var numx=0;
for(var i of result.cards) numx+=get.number(i,player);
event.num=numx;
event.cards=result.cards;
if(!hs.length) event.finish();
else if(hs.length<=num) event._result={bool:true,cards:hs};
else player.chooseCard('he',true,'选择交给'+get.translation(target)+get.cnNumber(num)+'张牌','(已获得牌的点数和:'+numx+'',num);
}
else event.finish();
'step 2'
target.gain(result.cards,player,'giveAuto');
var numx=0;
for(var i of result.cards) numx+=get.number(i,player);
if(numx>num) player.draw();
else if(numx<num) player.discardPlayerCard(target,true,'hej');
},
ai:{
order:6,
tag:{
lose:1,
loseCard:1,
gain:1,
},
result:{
target:function(player,target){
return -Math.pow(Math.min(player.hp,target.countCards('h')),2)/4;
},
},
},
},
//冯熙
yusui:{
audio:2,
trigger:{target:'useCardToTargeted'},
filter:function(event,player){
return event.player!=player&&event.player.isIn()&&get.color(event.card)=='black';
},
logTarget:'player',
check:function(event,player){
var target=event.player;
if(player.hp<3||get.attitude(player,target)>-3) return false;
if(player.hp<target.hp) return true;
if(Math.min(target.countCards('h')-player.countCards('h'),target.countCards('h'))>3) return true;
return false;
},
preHidden:true,
content:function(){
'step 0'
player.loseHp();
event.target=trigger.player;
'step 1'
event.addIndex=0;
var list=[],num=target.countCards('h')-player.countCards('h');
event.num=num;
if(num>0&&target.countCards('h')>0) list.push('令其弃置'+get.cnNumber(num)+'张手牌');
else event.addIndex++;
if(target.hp>player.hp) list.push('令其失去'+get.cnNumber(target.hp-player.hp)+'点体力');
if(!list.length) event.finish();
else if(list.length==1) event._result={index:0};
else player.chooseControl().set('choiceList',list).set('prompt','令'+get.translation(target)+'执行一项').set('ai',function(){
var player=_status.event.player,target=_status.event.getParent().target;
return (target.hp-player.hp)>(Math.min(_status.event.getParent().num,target.countCards('h'))/2)?1:0;
});
'step 2'
if(result.index+event.addIndex==0) target.chooseToDiscard(num,true,'h');
else target.loseHp(target.hp-player.hp);
},
},
boyan:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer((target)=>lib.skill.boyan.filterTarget(null,player,target));
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')<Math.min(5,target.maxHp);
},
content:function(){
'step 0'
target.drawTo(Math.min(5,target.maxHp));
'step 1'
target.addTempSkill('boyan_block');
},
subSkill:{
block:{
mark:true,
intro:{content:'不能使用或打出手牌'},
charlotte:true,
mod:{
cardEnabled2:function(card){
if(get.position(card)=='h') return false;
},
},
},
},
ai:{
order:4,
result:{
target:function(player,target){
if(get.attitude(player,target)>0) return Math.max(0,Math.min(5,target.maxHp)-target.countCards('h'));
if(target.maxHp-target.countCards('h')==1&&target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&player.countCards('h',function(card){
return get.tag(card,'respondShan')&&player.getUseValue(card,null,true)>0&&get.effect(target,card,player,player)>0;
})) return -2;
},
},
},
},
//祢衡
rekuangcai:{
audio:2,
forced:true,
trigger:{player:'phaseDiscardBegin'},
filter:function(event,player){
return !player.getHistory('useCard').length||!player.getHistory('sourceDamage').length;
},
content:function(){
if(!player.getHistory('useCard').length) player.addTempSkill('rekuangcai_more');
else player.addTempSkill('rekuangcai_less');
},
mod:{
targetInRange:function(card,player){
if(player==_status.currentPhase) return true;
},
cardUsable:function(card,player){
if(player==_status.currentPhase) return Infinity;
},
},
group:'rekuangcai_draw',
subSkill:{
draw:{
audio:'rekuangcai',
trigger:{player:'phaseJieshuBegin'},
forced:true,
filter:function(event,player){
return player.getHistory('sourceDamage').length>0;
},
content:function(){
player.draw(Math.min(5,player.getStat('damage')));
},
},
less:{
mod:{
maxHandcard:function(player,num){
return num-1;
},
},
charlotte:true,
},
more:{
mod:{
maxHandcard:function(player,num){
return num+1;
},
},
charlotte:true,
},
},
},
reshejian:{
audio:2,
trigger:{target:'useCardToTargeted'},
filter:function(event,player){
if(player==event.player||event.targets.length!=1) return false;
return player.countCards('h')>=2;
},
direct:true,
usable:2,
content:function(){
'step 0'
player.chooseToDiscard('he',[2,Infinity],get.prompt('reshejian',trigger.player),'<div class="text center">弃置至少两张手牌,然后选择一项:<br>⒈弃置其等量的牌。⒉对其造成1点伤害。</div>').set('',function(card){
if(_status.event.goon&&ui.selected.cards.length<2) return 5.6-get.value(card);
return 0;
}).set('goon',function(){
var target=trigger.player;
if(get.damageEffect(target,player,player)>0) return true;
if(target.countCards('he',function(card){
return get.value(card,target)>6;
})>=2) return true;
return false;
}()).logSkill=['reshejian',trigger.player];
'step 1'
if(!result.bool){
player.storage.counttrigger.reshejian--;
event.finish();
return;
}
var num=result.cards.length;
event.num=num;
var target=trigger.player,str=get.translation(target);
event.target=target;
if(!target.isIn()) event.finish();
else if(!target.hasCard(function(card){
return lib.filter.canBeDiscarded(card,player,target);
},'he')) event._result={index:1};
else player.chooseControl().set('choiceList',[
'弃置'+str+'的'+get.cnNumber(num)+'张牌',
'对'+str+'造成1点伤害',
]).set('ai',function(){
var player=_status.event.player;
var eff0=get.effect(target,{name:'guohe_copy2'},player,player)*Math.min(1.7,target.countCards('he'));
var eff1=get.damageEffect(target,player,player);
return eff0>eff1?0:1;
});
'step 2'
if(result.index==0) player.discardPlayerCard(target,num,true,'he');
else target.damage();
},
},
//张宝
xinzhoufu:{
audio:'zhoufu',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0;
},
filterCard:true,
filterTarget:function(card,player,target){
return target!=player&&!target.getExpansions('xinzhoufu2').length;
},
check:function(card){
return 6-get.value(card)
},
position:'he',
discard:false,
lose:false,
delay:false,
content:function(){
target.addToExpansion(cards,player,'give').gaintag.add('xinzhoufu2');
},
ai:{
order:9,
result:{
target:function(player,target){
if(player.inRange(target)) return -1.3;
return -1;
},
},
},
group:['xinzhoufu_judge'],
subSkill:{
judge:{
audio:'zhoufu',
trigger:{global:'judgeBefore'},
forced:true,
filter:function(event,player){
return !event.directresult&&event.player.getExpansions('xinzhoufu2').length;
},
logTarget:'player',
content:function(){
var cards=[trigger.player.getExpansions('xinzhoufu2')[0]];
trigger.directresult=cards[0];
},
},
},
},
xinzhoufu2:{
intro:{
content:'expansion',
markcount:'expansion',
},
},
xinyingbing:{
audio:'yingbing',
trigger:{player:'useCardToPlayered'},
forced:true,
logTarget:'target',
filter:function(event,player){
return event.target.getExpansions('xinzhoufu2').length>0&&!player.hasHistory('gain',function(evt){
var evtx=evt.getParent(2);
return evtx&&evtx.name=='xinyingbing'&&evtx._trigger.target==event.target;
});
},
content:function(){
player.draw(2);
},
ai:{
effect:{
player:function(card,player,target){
if(target&&target.getExpansions('xinzhoufu2').length>0&&!player.hasHistory('gain',function(evt){
var evtx=evt.getParent(2);
return evtx&&evtx.name=='xinyingbing'&&evtx._trigger.target==target;
})) return [1,1];
},
},
},
},
//赵嫣 //赵嫣
jinhui:{ jinhui:{
audio:2, audio:2,
@ -8030,7 +8362,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1' 'step 1'
if(result.bool){ if(result.bool){
player.addTempSkill('souying2'); player.addTempSkill('souying2');
if(event.triggername=='useCardToPlayered') player.gain(trigger.cards.filterInD()); if(event.triggername=='useCardToPlayered') player.gain(trigger.cards.filterInD(),'gain2');
else trigger.excluded.add(player); else trigger.excluded.add(player);
} }
}, },
@ -12262,11 +12594,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
nanhualaoxian:['re_nanhualaoxian','nanhualaoxian'], nanhualaoxian:['re_nanhualaoxian','nanhualaoxian'],
kanze:['re_kanze','kanze'], kanze:['re_kanze','kanze'],
yangwan:['yangwan','sp_yangwan'], yangwan:['yangwan','sp_yangwan'],
chendeng:['re_chendeng','chendeng'], chendeng:['ol_chendeng','re_chendeng','chendeng'],
pangdegong:['re_pangdegong','pangdegong'], pangdegong:['re_pangdegong','pangdegong'],
zhujun:['sp_zhujun','zhujun'], zhujun:['sp_zhujun','zhujun'],
sunyi:['re_sunyi','sunyi'], sunyi:['re_sunyi','sunyi'],
tw_liuhong:['tw_liuhong','liuhong'], tw_liuhong:['tw_liuhong','liuhong'],
miheng:['miheng','re_miheng'],
}, },
translate:{ translate:{
lijue:"李傕", lijue:"李傕",
@ -12907,6 +13240,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jinhui_info:'出牌阶段限一次,你可以随机展示牌堆中的三张不具有“伤害”标签且使用目标范围为“自己”或“一名角色”的牌,然后选择一名其他角色。该角色选择并按如下“锦绘”规则使用其中一张,然后你可以依次按如下“锦绘”规则使用其余两张:若此牌的使用目标为“自己”,则对自己使用该牌,否则对对方使用该牌(无距离限制且不计入次数限制)。', jinhui_info:'出牌阶段限一次,你可以随机展示牌堆中的三张不具有“伤害”标签且使用目标范围为“自己”或“一名角色”的牌,然后选择一名其他角色。该角色选择并按如下“锦绘”规则使用其中一张,然后你可以依次按如下“锦绘”规则使用其余两张:若此牌的使用目标为“自己”,则对自己使用该牌,否则对对方使用该牌(无距离限制且不计入次数限制)。',
qingman:'轻幔', qingman:'轻幔',
qingman_info:'锁定技。一名角色的回合结束时你将手牌摸至X张X为其装备区中空栏的数量。', qingman_info:'锁定技。一名角色的回合结束时你将手牌摸至X张X为其装备区中空栏的数量。',
re_zhangbao:'张宝',
xinzhoufu:'咒缚',
xinzhoufu2:'咒缚',
xinzhoufu_info:'①出牌阶段限一次,你可以将一张手牌置于一名其他角色的武将牌上并称为“咒”。②一名有“咒”的角色判定时,你令其以“咒”作为判定牌。',
xinyingbing:'影兵',
xinyingbing_info:'锁定技。每回合每名角色限一次,当你使用牌指定有“咒”的角色为目标后,你摸两张牌。',
re_miheng:'祢衡',
rekuangcai:'狂才',
rekuangcai_info:'锁定技。①你于回合内使用牌无距离和次数限制。②弃牌阶段开始时,若你本回合内:未使用过牌,则你本回合的手牌上限+1使用过牌但未造成过伤害则你本回合的手牌上限-1。③结束阶段开始时你摸X张牌X为你本回合内造成的伤害且至多为5。',
reshejian:'舌箭',
reshejian_info:'当你成为其他角色使用牌的唯一目标后你可以弃置至少两张手牌。若如此做你选择一项⒈弃置其等量的牌。⒉对其造成1点伤害。',
fengxi:'冯熙',
yusui:'玉碎',
yusui_info:'当你成为其他角色使用黑色牌的目标后你可以失去1点体力然后选择一项⒈令其将手牌数弃置至与你相同⒉令其失去Y点体力Y为其的体力值减去你的体力值不为正时不可选择',
boyan:'驳言',
boyan_info:'出牌阶段限一次,你可令一名其他角色将手牌摸至体力上限(至多摸至五张),然后其本回合不能使用或打出手牌。',
re_dengzhi:'邓芝',
jianliang:'简亮',
jianliang_info:'摸牌阶段开始时,若你的手牌数不为全场最多,则你可以令至多两名角色各摸一张牌。',
weimeng:'危盟',
weimeng_info:'出牌阶段限一次你可以获得一名其他角色的至多X张手牌然后交给其等量的牌X为你的体力值。若你给出的牌点数之和大于获得的牌则你摸一张牌小于获得的牌弃置该角色区域内的一张牌。',
sp_whlw:"文和乱武", sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原", sp_zlzy:"逐鹿中原",

View File

@ -5,13 +5,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true, connect:true,
characterSort:{ characterSort:{
tw:{ tw:{
tw_mobile:['nashime','tw_dongzhao','jiachong','duosidawang','wuban','yuejiu','tw_huojun','tw_caocao'], tw_mobile:['nashime','tw_dongzhao','jiachong','duosidawang','wuban','yuejiu','tw_huojun','tw_caocao','tw_zhangmancheng'],
tw_mobile2:['tw_beimihu','tw_gexuan','tw_fuwan','tw_yujin','tw_zhaoxiang','tw_hucheer','tw_hejin','tw_mayunlu','tw_re_caohong','tw_zangba','tw_liuhong'], tw_mobile2:['tw_beimihu','tw_gexuan','tw_fuwan','tw_yujin','tw_zhaoxiang','tw_hucheer','tw_hejin','tw_mayunlu','tw_re_caohong','tw_zangba','tw_liuhong','tw_chengpu'],
tw_yijiang:['tw_caoang','tw_caohong','tw_zumao','tw_dingfeng','tw_maliang','tw_xiahouba'], tw_yijiang:['tw_caoang','tw_caohong','tw_zumao','tw_dingfeng','tw_maliang','tw_xiahouba'],
tw_english:['kaisa'], tw_english:['kaisa'],
}, },
}, },
character:{ character:{
tw_chengpu:['male','wu',4,['twlihuo','twchunlao']],
tw_zhangmancheng:['male','qun',4,['twfengji','twyiju','twbudao']],
tw_caocao:['male','qun',4,['twlingfa']], tw_caocao:['male','qun',4,['twlingfa']],
tw_liuhong:['male','qun',4,['twyujue','twgezhi','twfengqi'],['zhu']], tw_liuhong:['male','qun',4,['twyujue','twgezhi','twfengqi'],['zhu']],
tw_huojun:['male','shu',4,['twsidai','twjieyu']], tw_huojun:['male','shu',4,['twsidai','twjieyu']],
@ -46,6 +48,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wuban:'吴班字元雄生卒年不详兖州陈留郡治今河南省开封市人。三国时期蜀汉将领。为领军随刘备参加伐吴之战后又随蜀汉丞相诸葛亮参加北伐曹魏的战争并于公元231年建兴九年的北伐中大破司马懿。官至骠骑将军封绵竹侯。吴班以豪爽侠义著称于当时又因族妹吴氏是蜀汉穆皇后在蜀汉将领中有较高的地位。', wuban:'吴班字元雄生卒年不详兖州陈留郡治今河南省开封市人。三国时期蜀汉将领。为领军随刘备参加伐吴之战后又随蜀汉丞相诸葛亮参加北伐曹魏的战争并于公元231年建兴九年的北伐中大破司马懿。官至骠骑将军封绵竹侯。吴班以豪爽侠义著称于当时又因族妹吴氏是蜀汉穆皇后在蜀汉将领中有较高的地位。',
yuejiu:'乐就197在袁术为攻徐州而大兴七军之际以督战官之身份担任联络之役。但是袁术军不幸战败其也在寿春被曹操军逮捕并遭到斩首。', yuejiu:'乐就197在袁术为攻徐州而大兴七军之际以督战官之身份担任联络之役。但是袁术军不幸战败其也在寿春被曹操军逮捕并遭到斩首。',
huojun:'霍峻178年—217年字仲邈南郡枝江今湖北枝江东汉末年刘备麾下名将。其兄霍笃曾在故乡聚部众数百人。后霍笃逝世刘表以霍峻继承其部曲。208年建安十三年刘表病逝霍峻便率部曲归降刘备并被任为中郎将。后随刘备入蜀刘备从葭萌还袭刘璋留霍峻守葭萌城。张鲁遣将杨帛劝降霍峻霍峻严词拒绝杨帛退去。后刘璋将扶禁、向存等率万余人由阆水上攻围霍峻城中兵不过数百人霍峻坚守一年伺机将其击破。刘备定蜀嘉霍峻之功于是分广汉为梓潼郡以峻为梓潼太守、裨将军。三年后去世还葬成都。刘备亲率群僚临会吊祭留宿墓上当时的人都为他感到荣幸。', huojun:'霍峻178年—217年字仲邈南郡枝江今湖北枝江东汉末年刘备麾下名将。其兄霍笃曾在故乡聚部众数百人。后霍笃逝世刘表以霍峻继承其部曲。208年建安十三年刘表病逝霍峻便率部曲归降刘备并被任为中郎将。后随刘备入蜀刘备从葭萌还袭刘璋留霍峻守葭萌城。张鲁遣将杨帛劝降霍峻霍峻严词拒绝杨帛退去。后刘璋将扶禁、向存等率万余人由阆水上攻围霍峻城中兵不过数百人霍峻坚守一年伺机将其击破。刘备定蜀嘉霍峻之功于是分广汉为梓潼郡以峻为梓潼太守、裨将军。三年后去世还葬成都。刘备亲率群僚临会吊祭留宿墓上当时的人都为他感到荣幸。',
zhangmancheng:'张曼成—184年6月东汉末年黄巾之乱时南阳黄巾军首领杀郡守褚贡一度占据宛城数月后为秦颉所杀。',
}, },
card:{ card:{
dz_mantianguohai:{ dz_mantianguohai:{
@ -159,6 +162,600 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ skill:{
twlihuo:{
trigger:{player:'useCard1'},
filter:function(event,player){
if(event.card.name=='sha'&&!event.card.nature) return true;
return false;
},
audio:'lihuo',
prompt2:function(event){
return '将'+get.translation(event.card)+'改为火属性';
},
audioname:['re_chengpu'],
check:function(event,player){
return game.hasPlayer(function(current){
return !event.targets.contains(current)&&player.canUse(event.card,current)&&get.effect(current,{name:'sha',nature:'fire',cards:event.cards.slice(0)},player,player)>0;
});
},
content:function(){
trigger.card.nature='fire';
trigger.card.twlihuo_buffed=true;
},
group:['twlihuo2','twlihuo3'],
ai:{
fireAttack:true,
},
},
twlihuo2:{
trigger:{player:'useCard2'},
filter:function(event,player){
if(event.card.name!='sha'||event.card.nature!='fire') return false;
return game.hasPlayer(function(current){
return !event.targets.contains(current)&&player.canUse(event.card,current);
});
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('twlihuo'),'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target);
}).set('sourcex',trigger.targets).set('card',trigger.card).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,_status.event.card,player,player);
});
'step 1'
if(result.bool){
if(!event.isMine()&&!_status.connectMode) game.delayx();
event.target=result.targets[0];
}
else{
event.finish();
}
'step 2'
player.logSkill('twlihuo',event.target);
trigger.targets.push(event.target);
},
},
twlihuo3:{
trigger:{player:'useCardAfter'},
filter:function(event,player){
return event.card.twlihuo_buffed=true&&player.getHistory('sourceDamage',function(evt){
return evt.card==event.card&&evt._dyinged;
}).length>0;
},
forced:true,
audio:'lihuo',
audioname:['re_chengpu'],
content:function(){
player.loseHp();
}
},
twchunlao:{
audio:'chunlao',
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.countCards('hej')>0;
})&&!game.hasPlayer(function(current){
return current.getExpansions('twchunlao').length>0;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('twchunlao'),'将一名角色区域内的一张牌作为“醇”置于其武将牌上',function(card,player,target){
return target.countCards('hej')>0;
}).set('ai',function(target){
return (get.attitude(_status.event.player,target))*(player==target?1:2);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('twchunlao',target);
player.choosePlayerCard(target,'hej',true);
}
else event.finish();
'step 2'
if(result.bool){
target.addToExpansion(result.cards,target,'give').gaintag.add('twchunlao');
}
},
intro:{
content:'expansion',
markcount:'expansion',
},
group:['twchunlao_sha','twchunlao_dying'],
subSkill:{
sha:{
trigger:{global:'useCard'},
direct:true,
filter:function(event,player){
return event.player!=player&&event.card.name=='sha'&&event.player.countCards('he')>0&&event.player.getExpansions('twchunlao').length>0;
},
content:function(){
'step 0'
event.target=trigger.player;
event.target.chooseCard('he','醇醪:是否交给'+get.translation(player)+'一张牌,令'+get.translation(trigger.card)+'的伤害值基数+1').set('ai',function(card){
if(!_status.event.goon) return 3.5-get.value(card);
return 7-get.value(card);
}).set('goon',function(){
if(get.attitude(target,player)<0) return false;
var d1=true;
if(trigger.player.hasSkill('jueqing')||trigger.player.hasSkill('gangzhi')) d1=false;
for(var target of trigger.targets){
if(!target.mayHaveShan()||trigger.player.hasSkillTag('directHit_ai',true,{
target:target,
card:trigger.card,
},true)){
if(!target.hasSkill('gangzhi')) d1=false;
if(!target.hasSkillTag('filterDamage',null,{
player:trigger.player,
card:trigger.card,
})&&get.attitude(player,target)<0) return true;
}
}
return d1;
}());
if(!event.target.isUnderControl(true)&&!event.target.isOnline()) game.delayx();
'step 1'
if(result.bool){
target.logSkill('twchunlao',player);
if(!target.hasSkill('twchunlao')) game.trySkillAudio('twchunlao',player);
player.gain(result.cards,target,'giveAuto');
trigger.baseDamage++;
}
},
},
dying:{
audio:'chunlao',
trigger:{global:'dying'},
logTarget:'player',
filter:function(event,player){
return event.player.getExpansions('twchunlao').length>0;
},
prompt2:(event,player)=>('移去'+get.translation(event.player)+'武将牌上的“醇”并摸一张牌然后令其回复1点体力'),
check:function(event,player){
return get.attitude(player,event.player)>0;
},
content:function(){
var target=trigger.player,cards=target.getExpansions('twchunlao');
if(cards.length) target.loseToDiscardpile(cards);
player.draw();
target.recover();
},
},
},
},
//张曼成
twfengji:{
audio:2,
mahouSkill:true,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return !player.getExpansions('twfengji').length&&!player.hasSkill('twfengji_mahou')&&player.countCards('he');
},
direct:true,
content:function(){
'step 0'
player.chooseCard('he',get.prompt2('twfengji')).set('ai',function(card){
var name=card.name,num=0;
for(var i=0;i<ui.cardPile.childNodes.length;i++){
if(ui.cardPile.childNodes[i].name==name) num++;
}
if(num<2) return false;
return 8-get.value(card);
});
'step 1'
if(result.bool){
player.logSkill('twfengji');
player.addToExpansion(result.cards,player,'giveAuto').gaintag.add('twfengji');
player.chooseControl('1回合','2回合','3回合').set('prompt','请选择施法时长').set('ai',function(){
var player=_status.event.player;
var safe=Math.min(player.getHandcardLimit(),player.countCards('h','shan'));
if(safe<Math.min(3,game.countPlayer())){
var next=player.next;
while(next!=player&&get.attitude(next,player)>0){
safe++;
next=next.next;
}
}
return Math.max(2,Math.min(safe,3,game.countPlayer()))-1;
});
}
else event.finish();
'step 2'
player.storage.twfengji_mahou=[result.index+1,result.index+1];
player.addTempSkill('twfengji_mahou',{player:'die'});
},
marktext:'示',
onremove:function(player,skill){
var cards=player.getExpansions(skill);
if(cards.length) player.loseToDiscardpile(cards);
},
intro:{
content:'expansion',
markcount:'expansion',
},
subSkill:{
mahou:{
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
content:function(){
var list=player.storage.twfengji_mahou;
list[1]--;
if(list[1]==0){
game.log(player,'的“蜂集”魔法生效');
player.logSkill('twfengji');
var cards=player.getExpansions('twfengji');
if(cards.length){
var cards2=[],num=list[0];
for(var card of cards){
for(var i=0;i<num;i++){
var card2=get.cardPile2(function(cardx){
return cardx.name==card.name&&!cards2.contains(cardx);
});
if(card2) cards2.push(card2);
else break;
}
}
game.delayx();
if(cards2.length) player.gain(cards2,'gain2');
player.loseToDiscardpile(cards);
}
player.removeSkill('twfengji_mahou');
}
else{
game.log(player,'的“蜂集”魔法剩余','#g'+(list[1])+'回合');
player.markSkill('twfengji_mahou');
}
},
ai:{threaten:2.5},
mark:true,
onremove:true,
//该图标为灵魂宝石
marktext:'♗',
intro:{
name:'施法:蜂集',
markcount:function(storage){
if(storage) return storage[1];
return 0;
},
content:function(storage){
if(storage){
return '经过'+storage[1]+'个“回合结束时”后,若有“示”,则从牌堆中获得'+storage[0]+'张和“示”名称相同的牌';
}
return '未指定施法效果';
},
},
},
},
},
twyiju:{
audio:2,
locked:false,
mod:{
attackRangeBase:function(player,num){
if(player.getExpansions('twfengji').length) return player.hp;
},
cardUsable:function(card,player,num){
if(card.name=='sha'&&player.getExpansions('twfengji').length) return num-1+player.hp;
},
},
trigger:{player:'damageBegin3'},
filter:function(event,player){
return player.getExpansions('twfengji').length>0;
},
forced:true,
content:function(){
trigger.num++;
var cards=player.getExpansions('twfengji');
if(cards.length) player.loseToDiscardpile(cards);
},
ai:{
halfneg:true,
combo:'twfengji',
},
},
twbudao:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
derivation:['twzhouhu','twharvestinori','twzuhuo'],
limited:true,
skillAnimation:true,
animationColor:'metal',
check:function(event,player){
return !player.hasUnknown()||!player.hasFriend();
},
content:function(){
'step 0'
player.awakenSkill('twbudao');
player.loseMaxHp();
player.recover();
player.chooseControl(lib.skill.twbudao.derivation).set('prompt','选择获得一个技能').set('ai',function(){
return 'twharvestinori';
});
'step 1'
var skill=result.control;
player.addSkillLog(skill);
event.twbudao_skill=skill;
player.chooseTarget(lib.filter.notMe,'是否令一名其他角色也获得【'+get.translation(skill)+'】?').set('ai',function(target){
var player=_status.event.player;
if(player.identity=='nei') return 0;
return get.attitude(player,target)-6;
});
'step 2'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.line(target,'green');
target.addSkillLog(event.twbudao_skill);
var cards=target.getCards('he');
if(!cards.length) event.finish();
else if(cards.length==1) event._result={bool:true,cards:cards};
else target.chooseCard('he',true,'交给'+get.translation(player)+'一张牌作为学费');
}
else event.finish();
'step 3'
if(result.bool) player.gain(result.cards,target,'giveAuto');
},
},
twzhouhu:{
audio:2,
mahouSkill:true,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('twzhouhu_mahou')&&player.countCards('h',lib.skill.twzhouhu.filterCard)>0;
},
filterCard:{color:'red'},
check:function(card){
if(_status.event.player.isHealthy()) return 0;
return 7-get.value(card);
},
content:function(){
'step 0'
player.chooseControl('1回合','2回合','3回合').set('prompt','请选择施法时长').set('ai',function(){
var player=_status.event.player;
var safe=1;
if(safe<Math.min(3,game.countPlayer(),player.getDamagedHp())){
var next=player.next;
while(next!=player&&get.attitude(next,player)>0){
safe++;
next=next.next;
}
}
return Math.max(1,Math.min(safe,3,game.countPlayer(),player.getDamagedHp()))-1;
});
'step 1'
player.storage.twzhouhu_mahou=[result.index+1,result.index+1];
player.addTempSkill('twzhouhu_mahou',{player:'die'});
},
ai:{
order:2,
result:{
player:1,
},
},
subSkill:{
mahou:{
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
content:function(){
var list=player.storage.twzhouhu_mahou;
list[1]--;
if(list[1]==0){
game.log(player,'的“咒护”魔法生效');
player.logSkill('twzhouhu');
var num=list[0];
player.recover(num);
player.removeSkill('twzhouhu_mahou');
}
else{
game.log(player,'的“咒护”魔法剩余','#g'+(list[1])+'回合');
player.markSkill('twzhouhu_mahou');
}
},
mark:true,
onremove:true,
marktext:'♗',
intro:{
name:'施法:咒护',
markcount:function(storage){
if(storage) return storage[1];
return 0;
},
content:function(storage){
if(storage){
return '经过'+storage[1]+'个“回合结束时”后,回复'+storage[0]+'点体力';
}
return '未指定施法效果';
},
},
},
},
},
twharvestinori:{
audio:2,
mahouSkill:true,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('twharvestinori_mahou')&&player.countCards('h',lib.skill.twharvestinori.filterCard)>0;
},
filterCard:{color:'black'},
check:function(card){
return 8-get.value(card);
},
content:function(){
'step 0'
player.chooseControl('1回合','2回合','3回合').set('prompt','请选择施法时长').set('ai',function(){
var player=_status.event.player;
var safe=player.hp;
if(safe<Math.min(3,game.countPlayer())){
var next=player.next;
while(next!=player&&get.attitude(next,player)>0){
safe++;
next=next.next;
}
}
return Math.max(1,Math.min(safe,3,game.countPlayer()))-1;
});
'step 1'
player.storage.twharvestinori_mahou=[result.index+1,result.index+1];
player.addTempSkill('twharvestinori_mahou',{player:'die'});
},
ai:{
order:8,
result:{
player:1,
},
},
subSkill:{
mahou:{
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
content:function(){
var list=player.storage.twharvestinori_mahou;
list[1]--;
if(list[1]==0){
game.log(player,'的“丰祈”魔法生效');
player.logSkill('twharvestinori');
var num=list[0]*2;
player.draw(num);
player.removeSkill('twharvestinori_mahou');
}
else{
game.log(player,'的“丰祈”魔法剩余','#g'+(list[1])+'回合');
player.markSkill('twharvestinori_mahou');
}
},
mark:true,
onremove:true,
marktext:'♗',
intro:{
name:'施法:丰祈',
markcount:function(storage){
if(storage) return storage[1];
return 0;
},
content:function(storage){
if(storage){
return '经过'+storage[1]+'个“回合结束时”后,摸'+storage[0]*2+'张牌';
}
return '未指定施法效果';
},
},
},
},
},
twzuhuo:{
audio:2,
mahouSkill:true,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('twzuhuo_mahou')&&player.countCards('he',lib.skill.twzuhuo.filterCard)>0;
},
filterCard:function(card){
return get.type(card)!='basic';
},
position:'he',
check:function(card){
return 7-get.value(card);
},
content:function(){
'step 0'
player.chooseControl('1回合','2回合','3回合').set('prompt','请选择施法时长').set('ai',function(){
var player=_status.event.player;
var safe=Math.min(player.getHandcardLimit(),player.countCards('h','shan'));
if(safe<Math.min(3,game.countPlayer())){
var next=player.next;
while(next!=player&&get.attitude(next,player)>0){
safe++;
next=next.next;
}
}
return Math.max(2,Math.min(safe,3,game.countPlayer()))-1;
});
'step 1'
player.storage.twzuhuo_mahou=[result.index+1,result.index+1];
player.addTempSkill('twzuhuo_mahou',{player:'die'});
},
ai:{
order:2,
result:{
player:1,
},
},
subSkill:{
mahou:{
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
content:function(){
var list=player.storage.twzuhuo_mahou;
list[1]--;
if(list[1]==0){
game.log(player,'的“阻祸”魔法生效');
player.logSkill('twzuhuo');
var num=list[0];
player.addSkill('twzuhuo_effect');
player.addMark('twzuhuo_effect',num,false);
player.removeSkill('twzuhuo_mahou');
}
else{
game.log(player,'的“阻祸”魔法剩余','#g'+(list[1])+'回合');
player.markSkill('twzuhuo_mahou');
}
},
mark:true,
onremove:true,
marktext:'♗',
intro:{
name:'施法:阻祸',
markcount:function(storage){
if(storage) return storage[1];
return 0;
},
content:function(storage){
if(storage){
return '经过'+storage[1]+'个“回合结束时”后,获得'+storage[0]+'层“防止一次伤害”的效果';
}
return '未指定施法效果';
},
},
},
effect:{
charlotte:true,
onremove:true,
trigger:{player:'damageBegin2'},
forced:true,
filter:function(event,player){
return player.hasMark('twzuhuo_effect');
},
content:function(){
trigger.cancel();
player.removeMark('twzuhuo_effect',1,false);
if(!player.countMark('twzuhuo_effect')) player.removeSkill('twzuhuo_effect');
},
marktext:'阻︎',
intro:{
onremove:true,
content:'防止接下来的#次伤害',
},
},
},
},
//群曹操
twlingfa:{ twlingfa:{
audio:2, audio:2,
trigger:{global:'roundStart'}, trigger:{global:'roundStart'},
@ -2929,6 +3526,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twlingfa_info:'①第一轮游戏开始时你可选择获得如下效果直到本轮结束其他角色使用【杀】时若其有牌则其需弃置一张牌否则受到你造成的1点伤害。②第二轮游戏开始时你可选择获得如下效果直到本轮结束其他角色使用【桃】结算结束后若其有牌则其需交给你一张牌否则受到你造成的1点伤害。③第三轮游戏开始时你失去〖令法〗并获得〖治暗〗。', twlingfa_info:'①第一轮游戏开始时你可选择获得如下效果直到本轮结束其他角色使用【杀】时若其有牌则其需弃置一张牌否则受到你造成的1点伤害。②第二轮游戏开始时你可选择获得如下效果直到本轮结束其他角色使用【桃】结算结束后若其有牌则其需交给你一张牌否则受到你造成的1点伤害。③第三轮游戏开始时你失去〖令法〗并获得〖治暗〗。',
twzhian:'治暗', twzhian:'治暗',
twzhian_info:'每回合限一次。一名角色使用装备牌或延时锦囊牌后你可选择⒈弃置位于场上的此牌。⒉弃置一张手牌并获得位于场上的此牌。⒊对其造成1点伤害。', twzhian_info:'每回合限一次。一名角色使用装备牌或延时锦囊牌后你可选择⒈弃置位于场上的此牌。⒉弃置一张手牌并获得位于场上的此牌。⒊对其造成1点伤害。',
tw_zhangmancheng:'张曼成',
twfengji:'蜂集',
twfengji_info:'出牌阶段开始时若你没有“示”则你可以将一张牌作为“示”置于武将牌上并施法从牌堆中获得X张与“示”牌名相同的牌然后移去“示”。',
twyiju:'蚁聚',
twyiju_info:'非锁定技。若你的武将牌上有“示”,则:①你使用【杀】的次数上限和攻击范围的基数改为你的体力值。②当你受到伤害时,你移去“示”,且令此伤害+1。',
twbudao:'布道',
twbudao_info:'限定技。准备阶段你可减1点体力上限回复1点体力并选择获得一个“施法”技能。然后你可以令一名其他角色也获得此技能并交给你一张牌。',
twzhouhu:'咒护',
twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法回复1点体力。',
twharvestinori:'丰祈',
twharvestinori_info:'出牌阶段限一次。你可以弃置一张黑色手牌并施法摸2X张牌。',
twzuhuo:'阻祸',
twzuhuo_info:'出牌阶段限一次。你可以弃置一张非基本牌并施法防止你受到的下X次伤害。',
tw_chengpu:'程普',
twlihuo:'疠火',
twlihuo2:'疠火',
twlihuo3:'疠火',
twlihuo_info:'①当你声明使用普【杀】时你可以将此【杀】改为火【杀】。此牌使用结算结束后若有角色因此【杀】造成的伤害进入过濒死状态则你失去1点体力。②当你使用火【杀】选择目标后你可为此牌增加一个目标。',
twchunlao:'醇醪',
twchunlao_info:'①准备阶段,若场上没有“醇”,则你可将一名角色区域内的一张牌置于其武将牌上,称为“醇”。②一名角色使用【杀】时,若其有“醇”,则你可以交给你一张牌,令此【杀】的伤害值基数+1。③一名角色进入濒死状态时若其有“醇”则你可以移去“醇”并摸一张牌然后令其回复1点体力。',
tw_mobile:'移动版·海外服', tw_mobile:'移动版·海外服',
tw_mobile2:'海外服异构', tw_mobile2:'海外服异构',

View File

@ -9095,10 +9095,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
trigger:{player:'useCardToPlayer'}, trigger:{player:'useCardToPlayer'},
filter:function(event,player){ filter:function(event,player){
if(_status.currentPhase!=player||player.hasSkill('rechanhui2')) return false; if(player.hasSkill('rechanhui2')) return false;
if(event.targets.length>1) return false; if(event.targets.length>1) return false;
var card=event.card; var card=event.card;
if(card.name=='sha'||get.type(card)=='trick'&&get.color(card)=='black') return true; if(card.name=='sha'||get.type(card)=='trick') return true;
return false; return false;
}, },
direct:true, direct:true,
@ -9141,14 +9141,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
} }
}, },
rechanhui2:{}, rechanhui2:{charlotte:true},
rejiaojin2:{charlotte:true},
rejiaojin:{ rejiaojin:{
audio:2, audio:2,
trigger:{target:'useCardToTargeted'}, trigger:{target:'useCardToTargeted'},
filter:function(event,player){ filter:function(event,player){
return (event.card.name=='sha'||get.type(event.card)=='trick')&&event.player&&event.player.hasSex('male')&&player.countCards('he',function(card){ return (event.card.name=='sha'||get.type(event.card)=='trick')&&event.player!=player&&player.countCards('he',function(card){
return _status.connectMode||get.type(card)=='equip'; return _status.connectMode||get.type(card)=='equip';
}); })&&!player.hasSkill('rejiaojin2');
}, },
direct:true, direct:true,
content:function(){ content:function(){
@ -9164,12 +9165,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
next.set('val',get.value(trigger.cards.filterInD())); next.set('val',get.value(trigger.cards.filterInD()));
next.set('goon2',get.effect(player,trigger.card,trigger.player,player)<0) next.set('goon2',get.effect(player,trigger.card,trigger.player,player)<0)
next.logSkill='rejiaojin'; next.logSkill=['rejiaojin',trigger.player];
"step 1" "step 1"
if(result.bool){ if(result.bool){
var cards=trigger.cards.filterInD(); var cards=trigger.cards.filterInD();
if(cards.length) player.gain(cards,'gain2','log'); if(cards.length) player.gain(cards,'gain2','log');
trigger.excluded.push(player); trigger.excluded.push(player);
if(trigger.player.hasSex('female')) player.addTempSkill('rejiaojin2')
} }
} }
}, },
@ -12055,18 +12057,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fazheng:['re_fazheng','xin_fazheng','fazheng'], fazheng:['re_fazheng','xin_fazheng','fazheng'],
masu:['xin_masu','re_masu','masu'], masu:['xin_masu','re_masu','masu'],
xusheng:['xin_xusheng','re_xusheng','xusheng','old_xusheng'], xusheng:['xin_xusheng','re_xusheng','xusheng','old_xusheng'],
wuguotai:['re_wuguotai','wuguotai'], wuguotai:['xin_wuguotai','re_wuguotai','wuguotai'],
lingtong:['xin_lingtong','re_lingtong','lingtong','old_lingtong'], lingtong:['xin_lingtong','re_lingtong','lingtong','old_lingtong'],
gaoshun:['gaoshun','re_gaoshun'], gaoshun:['gaoshun','re_gaoshun'],
zhonghui:['re_zhonghui','xin_zhonghui','zhonghui','old_zhonghui'], zhonghui:['re_zhonghui','xin_zhonghui','zhonghui','old_zhonghui'],
wangyi:['wangyi','old_wangyi'], wangyi:['re_wangyi','wangyi','old_wangyi'],
caozhang:['re_caozhang','xin_caozhang','caozhang'], caozhang:['re_caozhang','xin_caozhang','caozhang'],
guanzhang:['guanzhang','old_guanzhang'], guanzhang:['guanzhang','old_guanzhang'],
madai:['re_madai','old_madai','madai'], madai:['re_madai','old_madai','madai'],
liaohua:['xin_liaohua','re_liaohua','liaohua'], liaohua:['xin_liaohua','re_liaohua','liaohua'],
bulianshi:['re_bulianshi','bulianshi','old_bulianshi'], bulianshi:['re_bulianshi','bulianshi','old_bulianshi'],
handang:['xin_handang','re_handang','handang'], handang:['xin_handang','re_handang','handang'],
chengpu:['re_chengpu','ns_chengpu','chengpu','xin_chengpu'], chengpu:['re_chengpu','tw_chengpu','ns_chengpu','chengpu','xin_chengpu'],
liubiao:['re_liubiao','xin_liubiao','liubiao'], liubiao:['re_liubiao','xin_liubiao','liubiao'],
manchong:['re_manchong','manchong'], manchong:['re_manchong','manchong'],
caochong:['caochong','old_caochong'], caochong:['caochong','old_caochong'],
@ -12100,6 +12102,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caifuren:['xin_caifuren','re_caifuren','caifuren'], caifuren:['xin_caifuren','re_caifuren','caifuren'],
guyong:['re_guyong','xin_guyong','guyong'], guyong:['re_guyong','xin_guyong','guyong'],
yj_jushou:['xin_jushou','yj_jushou'], yj_jushou:['xin_jushou','yj_jushou'],
guohuanghou:['re_guohuanghou','guohuanghou'],
}, },
translate:{ translate:{
old_huaxiong:'华雄', old_huaxiong:'华雄',
@ -12475,11 +12478,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chanhui:'谮毁', chanhui:'谮毁',
chanhui_info:'出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。', chanhui_info:'出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。',
rechanhui:'谮毁', rechanhui:'谮毁',
rechanhui_info:'出牌阶段,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标(无距离限制)的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且你本回合内不能再次发动〖谮毁〗。', rechanhui_info:'当你使用【杀】或普通锦囊牌指定唯一目标时,你可令可以成为此牌目标(无距离限制)的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且你本回合内不能再次发动〖谮毁〗。',
jiaojin:'骄矜', jiaojin:'骄矜',
jiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。', jiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。',
rejiaojin:'骄矜', rejiaojin:'骄矜',
rejiaojin_info:'当你成为男性角色使用的【杀】或普通锦囊牌的目标后,你可以弃置一张装备牌,令此牌对你无效并获得此牌对应的所有实体牌。', rejiaojin_info:'当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以弃置一张装备牌,令此牌对你无效并获得此牌对应的所有实体牌。若此牌的使用者为女性角色,则你令〖骄矜〗失效直到回合结束。',
shenxing:'慎行', shenxing:'慎行',
shenxing_info:'出牌阶段,你可以弃置两张牌,然后摸一张牌。', shenxing_info:'出牌阶段,你可以弃置两张牌,然后摸一张牌。',
bingyi:'秉壹', bingyi:'秉壹',

View File

@ -1368,7 +1368,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
filterDamage:true, filterDamage:true,
skillTagFilter:function(player,tag,arg){ skillTagFilter:function(player,tag,arg){
if(!player.getStorage('qiaoyan').length) return false; if(!player.getExpansions('qiaoyan').length) return false;
if(arg&&arg.player){ if(arg&&arg.player){
if(arg.player.hasSkillTag('jueqing',false,player)) return false; if(arg.player.hasSkillTag('jueqing',false,player)) return false;
} }

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[ window.noname_asset_list=[
'v1.9.113.3', 'v1.9.113.4',
'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3', 'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3', 'audio/background/aozhan_rewrite.mp3',
@ -4244,6 +4244,7 @@ window.noname_asset_list=[
'image/card/shennongding.png', 'image/card/shennongding.png',
'image/card/shentoumianju.png', 'image/card/shentoumianju.png',
'image/card/shezhanqunru.png', 'image/card/shezhanqunru.png',
'image/card/shield.png',
'image/card/shihuawuqi.png', 'image/card/shihuawuqi.png',
'image/card/shihuifen.png', 'image/card/shihuifen.png',
'image/card/shijieshu.png', 'image/card/shijieshu.png',
@ -4804,7 +4805,6 @@ window.noname_asset_list=[
'image/character/xiangchong.jpg', 'image/character/xiangchong.jpg',
'image/character/xin_zhoucang.jpg', 'image/character/xin_zhoucang.jpg',
'image/character/duxi.jpg', 'image/character/duxi.jpg',
'image/character/fengxi.jpg',
'image/character/heyan.jpg', 'image/character/heyan.jpg',
'image/character/key_mia.jpg', 'image/character/key_mia.jpg',
'image/character/liuba.jpg', 'image/character/liuba.jpg',
@ -4939,6 +4939,16 @@ window.noname_asset_list=[
'image/character/tw_liuhong.jpg', 'image/character/tw_liuhong.jpg',
'image/character/tw_zangba.jpg', 'image/character/tw_zangba.jpg',
'image/character/zhaoyan.jpg', 'image/character/zhaoyan.jpg',
'image/character/fengxi.jpg',
'image/character/gz_fengxi.jpg',
'image/character/key_erika.jpg',
'image/character/key_satomi.jpg',
'image/character/re_dengzhi.jpg',
'image/character/re_miheng.jpg',
'image/character/re_zhangbao.jpg',
'image/character/tw_chengpu.jpg',
'image/character/tw_zhangmancheng.jpg',
'image/character/xin_wuguotai.jpg',
'image/character/baiwuchang.jpg', 'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg', 'image/character/baosanniang.jpg',

View File

@ -6668,7 +6668,8 @@
'<li>护甲:和体力类似,每点护甲可抵挡一点伤害,但不影响手牌上限。'+ '<li>护甲:和体力类似,每点护甲可抵挡一点伤害,但不影响手牌上限。'+
'<li>随从:通过技能获得,拥有独立的技能、手牌区和装备区(共享判定区),出场时替代主武将的位置;随从死亡时自动切换回主武将。'+ '<li>随从:通过技能获得,拥有独立的技能、手牌区和装备区(共享判定区),出场时替代主武将的位置;随从死亡时自动切换回主武将。'+
'<li>发现:从三张随机亮出的牌中选择一张,若无特殊说明,则获得此牌。'+ '<li>发现:从三张随机亮出的牌中选择一张,若无特殊说明,则获得此牌。'+
'<li>蓄力技:发动时可以增大黄色的数字。若如此做,红色数字于技能的结算过程中改为原来的两倍。' '<li>蓄力技:发动时可以增大黄色的数字。若如此做,红色数字于技能的结算过程中改为原来的两倍。'+
'<li>施法若技能的拥有者未拥有等待执行的同名“施法”效果则其可以发动“施法”技能。其须选择声明一个数字XX∈[1, 3]在此之后的第X个回合结束时其执行“施法”效果且效果中的数字X视为与技能发动者声明的X相同。'
}, },
setIntro:function(node,func,left){ setIntro:function(node,func,left){
if(lib.config.touchscreen){ if(lib.config.touchscreen){
@ -7372,7 +7373,7 @@
}; };
window.onerror=function(msg, src, line, column, err){ window.onerror=function(msg, src, line, column, err){
var str=msg; var str=msg;
if(window._status&&_status.event){ if(_status&&_status.event){
var evt=_status.event; var evt=_status.event;
str+=('\n'+evt.name+': '+evt.step); str+=('\n'+evt.name+': '+evt.step);
if(evt.parent) str+='\n'+evt.parent.name+': '+evt.parent.step; if(evt.parent) str+='\n'+evt.parent.name+': '+evt.parent.step;
@ -16183,26 +16184,7 @@
"step 3" "step 3"
event.trigger('damageBegin4'); event.trigger('damageBegin4');
"step 4" "step 4"
if(num>0&&player.hujia&&!player.hasSkillTag('nohujia')){ //moved changeHujia to changeHp
if(num>=player.hujia){
event.hujia=player.hujia;
num-=player.hujia;
}
else{
event.hujia=num;
num=0;
}
game.log(player,'的护甲抵挡了'+get.cnNumber(event.hujia)+'点伤害');
player.changeHujia(-event.hujia).type='damage';
}
event.num=num;
if(num<=0){
event.trigger('damageZero');
delete event.filterStop;
event.finish();
event._triggered=null;
}
"step 5"
if(lib.config.background_audio){ if(lib.config.background_audio){
game.playAudio('effect','damage'+(num>1?'2':'')); game.playAudio('effect','damage'+(num>1?'2':''));
} }
@ -16251,7 +16233,8 @@
} }
} }
},event.nature,player); },event.nature,player);
player.$damagepop(-num,event.nature); var numx=Math.max(0,num-player.hujia);
player.$damagepop(-numx,event.nature);
} }
if(!event.notrigger){ if(!event.notrigger){
if(num==0){ if(num==0){
@ -16262,7 +16245,7 @@
event.trigger('damage'); event.trigger('damage');
} }
} }
"step 6" "step 5"
if(player.hp<=0&&player.isAlive()){ if(player.hp<=0&&player.isAlive()){
game.delayx(); game.delayx();
event._dyinged=true; event._dyinged=true;
@ -16308,7 +16291,7 @@
} }
} }
} }
"step 7" "step 6"
if(!event.notrigger) event.trigger('damageSource'); if(!event.notrigger) event.trigger('damageSource');
}, },
recover:function(){ recover:function(){
@ -16380,6 +16363,16 @@
player.update(); player.update();
}, },
changeHp:function(){ changeHp:function(){
//changeHujia moved here
if(num<0&&player.hujia>0&&event.getParent().name=='damage'&&!player.hasSkillTag('nohujia')){
event.hujia=Math.min(-num,player.hujia);
event.getParent().hujia=event.hujia;
event.num+=event.hujia;
game.log(player,'的护甲抵挡了'+get.cnNumber(event.hujia)+'点伤害');
player.changeHujia(-event.hujia).type='damage';
}
//old part
num=event.num;
player.hp+=num; player.hp+=num;
if(isNaN(player.hp)) player.hp=0; if(isNaN(player.hp)) player.hp=0;
if(player.hp>player.maxHp) player.hp=player.maxHp; if(player.hp>player.maxHp) player.hp=player.maxHp;
@ -16995,6 +16988,7 @@
player:{ player:{
//新函数 //新函数
setSeatNum:function(num){ setSeatNum:function(num){
_status.seatNumSettled=true;
game.broadcastAll(function(player,num){ game.broadcastAll(function(player,num){
player.seatNum=num; player.seatNum=num;
},this,num); },this,num);
@ -17296,7 +17290,8 @@
if(mod1!='unchanged') return mod1; if(mod1!='unchanged') return mod1;
var mod2=game.checkMod(from,to,'unchanged','inRangeOf',to); var mod2=game.checkMod(from,to,'unchanged','inRangeOf',to);
if(mod2!='unchanged') return mod2; if(mod2!='unchanged') return mod2;
if(from.getAttackRange()<1) return false; var range=from.getAttackRange();
if(range<1) return false;
var player=from,m,n=1,i; var player=from,m,n=1,i;
var fxy,txy; var fxy,txy;
if(game.chess){ if(game.chess){
@ -17344,9 +17339,6 @@
m+=info.globalFrom; m+=info.globalFrom;
n+=info.globalFrom; n+=info.globalFrom;
} }
if(info.attackFrom){
m+=info.attackFrom;
}
} }
for(i=0;i<equips2.length;i++){ for(i=0;i<equips2.length;i++){
var info=get.info(equips2[i]).distance; var info=get.info(equips2[i]).distance;
@ -17359,7 +17351,7 @@
m+=info.attaclTo; m+=info.attaclTo;
} }
} }
return m<=1; return m<=range;
}, },
inRangeOf:function(source){ inRangeOf:function(source){
return source.inRange(this); return source.inRange(this);
@ -17589,6 +17581,7 @@
var hp1=get.infoHp(info[2]); var hp1=get.infoHp(info[2]);
var maxHp1=get.infoMaxHp(info[2]); var maxHp1=get.infoMaxHp(info[2]);
var hujia1=get.infoHujia(info[2]);
this.node.avatar.show(); this.node.avatar.show();
this.node.count.show(); this.node.count.show();
@ -17599,7 +17592,7 @@
this.group=info[1]; this.group=info[1];
this.hp=hp1; this.hp=hp1;
this.maxHp=maxHp1; this.maxHp=maxHp1;
this.hujia=0; this.hujia=hujia1;
this.node.intro.innerHTML=lib.config.intro; this.node.intro.innerHTML=lib.config.intro;
this.node.name.dataset.nature=get.groupnature(this.group); this.node.name.dataset.nature=get.groupnature(this.group);
lib.setIntro(this); lib.setIntro(this);
@ -17637,6 +17630,8 @@
this.name2=character2; this.name2=character2;
var hp2=get.infoHp(info2[2]); var hp2=get.infoHp(info2[2]);
var maxHp2=get.infoMaxHp(info2[2]); var maxHp2=get.infoMaxHp(info2[2]);
var hujia2=get.infoHujia(info2[2]);
this.hujia+=hujia2;
var double_hp; var double_hp;
if(_status.connectMode||get.mode()=='single'){ if(_status.connectMode||get.mode()=='single'){
double_hp='pingjun'; double_hp='pingjun';
@ -21802,12 +21797,17 @@
else{ else{
node=ui.create.div('.card.mark.drawinghidden'); node=ui.create.div('.card.mark.drawinghidden');
this.node.marks.insertBefore(node,this.node.marks.childNodes[1]); this.node.marks.insertBefore(node,this.node.marks.childNodes[1]);
if(lib.skill[name]&&lib.skill[name].markimage){
node.setBackgroundImage(lib.skill[name].markimage);
node.style['box-shadow']='none';
}
else{
var str=lib.translate[name+'_bg']; var str=lib.translate[name+'_bg'];
if(!str||str[0]=='+'||str[0]=='-'){ if(!str||str[0]=='+'||str[0]=='-'){
str=get.translation(name)[0]; str=get.translation(name)[0];
} }
ui.create.div('.background.skillmark',node).innerHTML=str; ui.create.div('.background.skillmark',node).innerHTML=str;
// node.style.fontFamily=lib.config.card_font; }
} }
node.name=name; node.name=name;
node.skill=skill||name; node.skill=skill||name;
@ -22689,15 +22689,16 @@
getAttackRange:function(raw){ getAttackRange:function(raw){
var player=this; var player=this;
var range=0; var range=0;
if(raw) range=game.checkMod(player,player,range,'globalFrom',player); if(raw){
range=game.checkMod(player,player,range,'globalFrom',player);
range=game.checkMod(player,player,range,'attackFrom',player); range=game.checkMod(player,player,range,'attackFrom',player);
var equips=player.getCards('e',function(card){ var equips=player.getCards('e',function(card){
return !ui.selected.cards||!ui.selected.cards.contains(card); return !ui.selected.cards||!ui.selected.cards.contains(card);
}); });
for(var i=0;i<equips.length;i++){ for(var i=0;i<equips.length;i++){
var info=get.info(equips[i]).distance; var info=get.info(equips[i],false).distance;
if(!info) continue; if(!info) continue;
if(raw&&info.globalFrom){ if(info.globalFrom){
range+=info.globalFrom; range+=info.globalFrom;
} }
if(info.attackFrom){ if(info.attackFrom){
@ -22705,6 +22706,24 @@
} }
} }
return (1-range); return (1-range);
}
var base=game.checkMod(player,'unchanged','attackRangeBase',player);
if(base!='unchanged') range=base;
else{
range=1;
var equips=player.getCards('e',function(card){
return !ui.selected.cards||!ui.selected.cards.contains(card);
});
for(var i=0;i<equips.length;i++){
var info=get.info(equips[i],false).distance;
if(!info) continue;
if(info.attackFrom){
range-=info.attackFrom;
}
}
}
range=game.checkMod(player,range,'attackRange',player);
return range;
}, },
getGlobalFrom:function(){ getGlobalFrom:function(){
var player=this; var player=this;
@ -26031,7 +26050,8 @@
return item; return item;
}, },
addText:function(str,center){ addText:function(str,center){
if(center!==false){ if(str&&str.indexOf('<div')==0) this.add(str);
else if(center!==false){
this.add('<div class="text center">'+str+'</div>'); this.add('<div class="text center">'+str+'</div>');
} }
else{ else{
@ -26665,21 +26685,22 @@
return false; return false;
}, },
targetInRange:function(card,player,target){ targetInRange:function(card,player,target){
var info=get.info(card);
var range=info.range;
var outrange=info.outrange;
if(range==undefined&&outrange==undefined) return true;
var mod=game.checkMod(card,player,target,'unchanged','targetInRange',player); var mod=game.checkMod(card,player,target,'unchanged','targetInRange',player);
var extra=0; var extra=0;
if(mod!='unchanged'){ if(mod!='unchanged'){
if(typeof mod=='boolean') return mod; if(typeof mod=='boolean') return mod;
if(typeof mod=='number') extra=mod; if(typeof mod=='number') extra=mod;
} }
var info=get.info(card); if(typeof info.range=='function') return info.range(card,player,target);
var range=info.range;
var outrange=info.outrange;
if(range==undefined&&outrange==undefined) return true;
if(player.hasSkill('undist')||target.hasSkill('undist')) return false; if(player.hasSkill('undist')||target.hasSkill('undist')) return false;
for(var i in range){ for(var i in range){
if(i=='attack'){ if(i=='attack'){
if(player.inRange(target)) return true;
var range2=player.getAttackRange(); var range2=player.getAttackRange();
if(range2<=0) return false; if(range2<=0) return false;
var distance=get.distance(player,target)+extra; var distance=get.distance(player,target)+extra;
@ -26741,7 +26762,7 @@
else if(get.itemtype(select)=='select') range=select; else if(get.itemtype(select)=='select') range=select;
else if(typeof select=='function') range=select(card,player); else if(typeof select=='function') range=select(card,player);
game.checkMod(card,player,range,'selectTarget',player); game.checkMod(card,player,range,'selectTarget',player);
if(info.singleCard) return [range[0]*2,range[1]*2]; if(info.singleCard&&info.filterAddedTarget) return [range[0]*2,range[1]*2];
return range; return range;
}, },
judge:function(card,player,target){ judge:function(card,player,target){
@ -27458,7 +27479,8 @@
content:function(content,player){ content:function(content,player){
return '已有'+get.cnNumber(player.hujia)+'点护甲值'; return '已有'+get.cnNumber(player.hujia)+'点护甲值';
} }
} },
markimage:'image/card/shield.png',
}, },
counttrigger:{ counttrigger:{
trigger:{global:'phaseAfter'}, trigger:{global:'phaseAfter'},
@ -27490,9 +27512,6 @@
popup:false, popup:false,
firstDo:true, firstDo:true,
content:function(){ content:function(){
// for(var i=0;i<game.players.length;i++){
// game.players[i].in();
// }
if(player.isTurnedOver()){ if(player.isTurnedOver()){
trigger.cancel(); trigger.cancel();
player.turnOver(); player.turnOver();
@ -27501,7 +27520,17 @@
else{ else{
player.phaseSkipped=false; player.phaseSkipped=false;
} }
if((player==_status.roundStart||_status.roundSkipped)&&!trigger.skill){ if(!trigger.skill){
var isRound=_status.roundSkipped;
if(_status.seatNumSettled){
var seatNum=player.getSeatNum();
if(seatNum!=0){
if(typeof _status.lastSeatNum!='number'||seatNum<_status.lastSeatNum) isRound=true;
_status.lastSeatNum=seatNum;
}
}
else if(player==_status.roundStart) isRound=true;
if(isRound){
delete _status.roundSkipped; delete _status.roundSkipped;
game.roundNumber++; game.roundNumber++;
trigger._roundStart=true; trigger._roundStart=true;
@ -27516,6 +27545,7 @@
} }
event.trigger('roundStart'); event.trigger('roundStart');
} }
}
}, },
}, },
_usecard:{ _usecard:{
@ -33987,6 +34017,10 @@
} }
else{ else{
game.addVideo('swapSeat',null,[player1.dataset.position,player2.dataset.position]); game.addVideo('swapSeat',null,[player1.dataset.position,player2.dataset.position]);
var seat1=player1.seatNum;
var seat2=player2.seatNum;
player2.seatNum=seat1;
player1.seatNum=seat2;
var temp1,pos,i,num; var temp1,pos,i,num;
temp1=player1.dataset.position; temp1=player1.dataset.position;
player1.dataset.position=player2.dataset.position; player1.dataset.position=player2.dataset.position;
@ -42397,7 +42431,7 @@
delete window.noname_skin_list; delete window.noname_skin_list;
var asset_version=updates.shift(); var asset_version=updates.shift();
var skipcharacter=[],skipcard=['tiesuo_mark']; var skipcharacter=[],skipcard=['tiesuo_mark','shield'];
if(!lib.config.asset_full){ if(!lib.config.asset_full){
for(var i=0;i<lib.config.all.sgscharacters.length;i++){ for(var i=0;i<lib.config.all.sgscharacters.length;i++){
var pack=lib.characterPack[lib.config.all.sgscharacters[i]]; var pack=lib.characterPack[lib.config.all.sgscharacters[i]];
@ -45511,7 +45545,7 @@
node.node.hp.remove(); node.node.hp.remove();
node.node.group.remove(); node.node.group.remove();
node.node.intro.remove(); node.node.intro.remove();
if(node.node.replaceButton) node.node.replaceButton.remove(); if(node.node.replaceButton) node.node.replaceButton.remove();;
} }
node.node={ node.node={
name:ui.create.div('.name',node), name:ui.create.div('.name',node),
@ -45540,7 +45574,13 @@
node.node.group.dataset.nature=get.groupnature(double[double.length==2?1:0]); node.node.group.dataset.nature=get.groupnature(double[double.length==2?1:0]);
} }
ui.create.div(node.node.hp); ui.create.div(node.node.hp);
var textnode=ui.create.div('.text',get.numStr(infoitem[2]),node.node.hp); var hp=get.infoHp(infoitem[2]),maxHp=get.infoMaxHp(infoitem[2]),hujia=get.infoHujia(infoitem[2]);
var str=get.numStr(hp);
if(hp!=maxHp){
str+='/';
str+=get.numStr(maxHp);
}
var textnode=ui.create.div('.text',str,node.node.hp);
if(infoitem[2]==0){ if(infoitem[2]==0){
node.node.hp.hide(); node.node.hp.hide();
} }
@ -45550,10 +45590,15 @@
else{ else{
node.node.hp.dataset.condition='high'; node.node.hp.dataset.condition='high';
} }
if(hujia>0){
ui.create.div(node.node.hp,'.shield');
ui.create.div('.text',get.numStr(hujia),node.node.hp);
}
} }
else{ else{
var hp=get.infoHp(infoitem[2]); var hp=get.infoHp(infoitem[2]);
var maxHp=get.infoMaxHp(infoitem[2]); var maxHp=get.infoMaxHp(infoitem[2]);
var shield=get.infoHujia(infoitem[2]);
if(maxHp>14){ if(maxHp>14){
if(typeof infoitem[2]=='string') node.node.hp.innerHTML=infoitem[2]; if(typeof infoitem[2]=='string') node.node.hp.innerHTML=infoitem[2];
else node.node.hp.innerHTML=get.numStr(infoitem[2]); else node.node.hp.innerHTML=get.numStr(infoitem[2]);
@ -45564,6 +45609,9 @@
var next=ui.create.div('',node.node.hp); var next=ui.create.div('',node.node.hp);
if(i>=hp) next.classList.add('exclude'); if(i>=hp) next.classList.add('exclude');
} }
for(var i=0;i<shield;i++){
ui.create.div(node.node.hp,'.shield');
}
} }
} }
if(node.node.hp.childNodes.length==0){ if(node.node.hp.childNodes.length==0){
@ -50267,14 +50315,21 @@
infoHp:function(hp){ infoHp:function(hp){
if(typeof hp=='number') return hp; if(typeof hp=='number') return hp;
else if(typeof hp=='string'&&hp.indexOf('/')!=-1){ else if(typeof hp=='string'&&hp.indexOf('/')!=-1){
return parseInt(hp.slice(0,hp.indexOf('/'))); return parseInt(hp.split('/')[0]);
} }
return 0; return 0;
}, },
infoMaxHp:function(hp){ infoMaxHp:function(hp){
if(typeof hp=='number') return hp; if(typeof hp=='number') return hp;
else if(typeof hp=='string'&&hp.indexOf('/')!=-1){ else if(typeof hp=='string'&&hp.indexOf('/')!=-1){
return parseInt(hp.slice(hp.indexOf('/')+1)); return parseInt(hp.split('/')[1]);
}
return 0;
},
infoHujia:function(hp){
if(typeof hp=='string'&&hp.indexOf('/')!=-1){
var splited=hp.split('/');
if(splited.length>2) return parseInt(splited[2]);
} }
return 0; return 0;
}, },
@ -52872,7 +52927,7 @@
} }
} }
var skills=node.getSkills(null,null,false).slice(0); var skills=node.getSkills(null,false,false).slice(0);
var skills2=game.filterSkills(skills,node); var skills2=game.filterSkills(skills,node);
if(node==game.me&&node.hiddenSkills.length){ if(node==game.me&&node.hiddenSkills.length){
skills.addArray(node.hiddenSkills); skills.addArray(node.hiddenSkills);
@ -54047,6 +54102,7 @@
var result=0; var result=0;
var value; var value;
if(Array.isArray(card)){ if(Array.isArray(card)){
if(!card.length) return 0;
value=0; value=0;
for(var i=0;i<card.length;i++){ for(var i=0;i<card.length;i++){
value+=get.value(card[i],player,method); value+=get.value(card[i],player,method);

View File

@ -155,6 +155,7 @@ window.noname_source_list=[
'theme/style/hp/image/round2.png', 'theme/style/hp/image/round2.png',
'theme/style/hp/image/round3.png', 'theme/style/hp/image/round3.png',
'theme/style/hp/image/round4.png', 'theme/style/hp/image/round4.png',
'theme/style/hp/image/shield.png',
'theme/style/hp/image/xinglass1.png', 'theme/style/hp/image/xinglass1.png',
'theme/style/hp/image/xinglass2.png', 'theme/style/hp/image/xinglass2.png',
'theme/style/hp/image/xinglass3.png', 'theme/style/hp/image/xinglass3.png',

View File

@ -1,10 +1,11 @@
window.noname_update={ window.noname_update={
version:'1.9.113.3', version:'1.9.113.4',
update:'1.9.113.2', update:'1.9.113.3',
changeLog:[ changeLog:[
'界郭皇后、界马岱、赵嫣', '苍井えりか、藏里见',
'海外服群曹操、霍峻、刘宏、臧霸', '海外服张曼成、程普',
'玩点韩龙', '十周年界吴国太、冯熙、邓芝、祢衡、张宝',
'护甲图标修改',
'bug修复', 'bug修复',
], ],
files:[ files:[
@ -14,16 +15,16 @@ window.noname_update={
//'card/gwent.js', //'card/gwent.js',
//'card/huanlekapai.js', //'card/huanlekapai.js',
//'card/mtg.js', //'card/mtg.js',
'card/sp.js', //'card/sp.js',
'card/standard.js', 'card/standard.js',
//'card/swd.js', //'card/swd.js',
//'card/yunchou.js', 'card/yunchou.js',
//'card/yingbian.js', //'card/yingbian.js',
//'card/yongjian.js', //'card/yongjian.js',
//'card/zhenfa.js', //'card/zhenfa.js',
//'card/zhulu.js', //'card/zhulu.js',
'character/diy.js', 'character/diy.js',
'character/extra.js', //'character/extra.js',
//'character/hearth.js', //'character/hearth.js',
//'character/gujian.js', //'character/gujian.js',
//'character/gwent.js', //'character/gwent.js',
@ -31,14 +32,14 @@ window.noname_update={
'character/mobile.js', 'character/mobile.js',
//'character/mtg.js', //'character/mtg.js',
//'character/offline.js', //'character/offline.js',
'character/old.js', //'character/old.js',
//'character/ow.js', //'character/ow.js',
'character/rank.js', 'character/rank.js',
'character/refresh.js', 'character/refresh.js',
//'character/shenhua.js', 'character/shenhua.js',
'character/sp.js', 'character/sp.js',
'character/sp2.js', 'character/sp2.js',
'character/standard.js', //'character/standard.js',
'character/tw.js', 'character/tw.js',
//'character/swd.js', //'character/swd.js',
//'character/xianjian.js', //'character/xianjian.js',
@ -47,18 +48,18 @@ window.noname_update={
'character/yijiang.js', 'character/yijiang.js',
//'character/yxs.js', //'character/yxs.js',
//'extension/boss/extension.js', //'extension/boss/extension.js',
//'layout/default/layout.css', 'layout/default/layout.css',
//'layout/newlayout/global.css', //'layout/newlayout/global.css',
//'layout/default/menu.css', //'layout/default/menu.css',
//'layout/nova/layout.css', //'layout/nova/layout.css',
//'layout/mobile/equip.css', //'layout/mobile/equip.css',
//'mode/boss.js', //'mode/boss.js',
'mode/brawl.js', //'mode/brawl.js',
//'mode/chess.js', //'mode/chess.js',
//'mode/connect.js', //'mode/connect.js',
//'mode/doudizhu.js', //'mode/doudizhu.js',
'mode/guozhan.js', 'mode/guozhan.js',
'mode/identity.js', //'mode/identity.js',
//'mode/single.js', //'mode/single.js',
//'mode/stone.js', //'mode/stone.js',
//'mode/tafang.js', //'mode/tafang.js',
@ -70,8 +71,16 @@ window.noname_update={
//'game/package.js', //'game/package.js',
//'game/asset.js', //'game/asset.js',
//'game/source.js', //'game/source.js',
//'theme/style/hp/xinglass.css', 'theme/style/hp/custom.css',
//'theme/style/hp/xinround.css', 'theme/style/hp/emotion.css',
'theme/style/hp/glass.css',
'theme/style/hp/image',
'theme/style/hp/official.css',
'theme/style/hp/ol.css',
'theme/style/hp/round.css',
'theme/style/hp/xinglass.css',
'theme/style/hp/xinround.css',
'theme/style/hp/image/shield.png',
//'theme/style/hp/image/xinglass1.png', //'theme/style/hp/image/xinglass1.png',
//'theme/style/hp/image/xinglass2.png', //'theme/style/hp/image/xinglass2.png',
//'theme/style/hp/image/xinglass3.png', //'theme/style/hp/image/xinglass3.png',

BIN
image/card/shield.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View File

@ -1977,6 +1977,10 @@ div:not(.handcards)>.card>.info>span,
border: 1px solid rgba(39, 79, 7, 1); border: 1px solid rgba(39, 79, 7, 1);
box-shadow: rgba(0,0,0,0.2) 1px -1px 2px inset, rgba(255,255,255,0.15) -1px 1px 5px inset; box-shadow: rgba(0,0,0,0.2) 1px -1px 2px inset, rgba(255,255,255,0.15) -1px 1px 5px inset;
} }
.button.newstyle>.hp>.shield{
background: rgba(63, 119, 173,1);
border: 1px solid rgba(31, 82, 131, 1);
}
.button.newstyle>.hp>div.text{ .button.newstyle>.hp>div.text{
background: none !important; background: none !important;
box-shadow: none !important; box-shadow: none !important;
@ -2609,31 +2613,35 @@ div:not(.handcards)>.card>.info>span,
box-shadow: 0px 1px 1px rgba(0,0,0,0.5); box-shadow: 0px 1px 1px rgba(0,0,0,0.5);
border: 1px solid #fff; border: 1px solid #fff;
} }
.hp[data-condition="high"]>div:not(.lost) { .button .hp>.shield {
background: rgba(63, 119, 173,1);
border: 1px solid rgba(63, 119, 173, 1);
}
.hp[data-condition="high"]>div:not(.lost):not(.shield) {
background: rgba(57, 123, 4,1); background: rgba(57, 123, 4,1);
border: 1px solid rgba(39, 79, 7, 1); border: 1px solid rgba(39, 79, 7, 1);
} }
.hp[data-condition="mid"]>div:not(.lost) { .hp[data-condition="mid"]>div:not(.lost):not(.shield) {
background: rgba(166, 140, 6,1); background: rgba(166, 140, 6,1);
border: 1px solid rgba(79, 64, 7, 1); border: 1px solid rgba(79, 64, 7, 1);
} }
.hp[data-condition="low"]>div:not(.lost) { .hp[data-condition="low"]>div:not(.lost):not(.shield) {
background: rgba(148, 27, 27,1); background: rgba(148, 27, 27,1);
border: 1px solid rgba(79, 7, 7, 1); border: 1px solid rgba(79, 7, 7, 1);
} }
.hp.actcount>div:not(.lost) { .hp.actcount>div:not(.lost):not(.shield) {
background: rgba(63, 119, 173,1); background: rgba(63, 119, 173,1);
border: 1px solid rgba(31, 82, 131, 1); border: 1px solid rgba(31, 82, 131, 1);
} }
.treasure>.hp>div:not(.lost) { .treasure>.hp>div:not(.lost):not(.shield) {
background: rgba(63, 119, 173,1) !important; background: rgba(63, 119, 173,1) !important;
border: 1px solid rgba(31, 82, 131, 1) !important; border: 1px solid rgba(31, 82, 131, 1) !important;
} }
.hp.actcount>div.overflow:not(.lost) { .hp.actcount>div.overflow:not(.lost):not(.shield) {
background: rgb(154, 154, 154); background: rgb(154, 154, 154);
border: 1px solid rgb(109, 109, 109); border: 1px solid rgb(109, 109, 109);
} }
.hp.actcount.overflow2>div.overflow:not(.lost) { .hp.actcount.overflow2>div.overflow:not(.lost):not(.shield) {
background: rgb(173, 129, 63); background: rgb(173, 129, 63);
border: 1px solid rgb(131, 109, 31); border: 1px solid rgb(131, 109, 31);
} }
@ -2643,12 +2651,17 @@ div:not(.handcards)>.card>.info>span,
filter: grayscale(1); filter: grayscale(1);
-webkit-filter: grayscale(1); -webkit-filter: grayscale(1);
} }
.hp>.lost { .hp>.lost {
background: rgba(57, 123, 4,1); background: rgba(57, 123, 4,1);
border: 1px solid rgba(39, 79, 7, 1); border: 1px solid rgba(39, 79, 7, 1);
filter: grayscale(1); filter: grayscale(1);
-webkit-filter: grayscale(1); -webkit-filter: grayscale(1);
} }
.hp>.shield {
background: rgba(63, 119, 173,1);
border: 1px solid rgba(31, 82, 131, 1);
}
.hp.text[data-condition="low"], .hp.text[data-condition="low"],
.hp.textstyle[data-condition="low"] { .hp.textstyle[data-condition="low"] {
text-shadow: black 0 0 1px,rgba(232, 53, 53,1) 0 0 2px,rgba(232, 53, 53,1) 0 0 5px,rgba(232, 53, 53,1) 0 0 10px text-shadow: black 0 0 1px,rgba(232, 53, 53,1) 0 0 2px,rgba(232, 53, 53,1) 0 0 5px,rgba(232, 53, 53,1) 0 0 10px
@ -5332,3 +5345,4 @@ div[data-decoration="bronze"]::after{
::-webkit-scrollbar { ::-webkit-scrollbar {
display: none; display: none;
} }
}

View File

@ -510,7 +510,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_luyusheng:['female','wu',3,['zhente','zhiwei']], gz_luyusheng:['female','wu',3,['zhente','zhiwei']],
gz_zongyu:['male','shu',3,['zyqiao','chengshang']], gz_zongyu:['male','shu',3,['zyqiao','chengshang']],
gz_miheng:['male','qun',3,['gzrekuangcai','gzshejian'],['gzskin']], gz_miheng:['male','qun',3,['gzrekuangcai','gzshejian'],['gzskin']],
gz_fengxi:['male','wu',3,['yusui','boyan']], gz_fengxi:['male','wu',3,['gzyusui','gzboyan'],['gzskin']],
gz_dengzhi:['male','shu',3,['gzjianliang','gzweimeng'],['gzskin']], gz_dengzhi:['male','shu',3,['gzjianliang','gzweimeng'],['gzskin']],
gz_re_nanhualaoxian:['male','qun',4,['gzgongxiu','gzjinghe']], gz_re_nanhualaoxian:['male','qun',4,['gzgongxiu','gzjinghe']],
gz_zhouyi:['female','wu',3,['gzzhukou','gzduannian','gzlianyou']], gz_zhouyi:['female','wu',3,['gzzhukou','gzduannian','gzlianyou']],
@ -1831,8 +1831,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
}, },
//冯熙 //冯熙
yusui:{ gzyusui:{
audio:2, audio:'yusui',
trigger:{target:'useCardToTargeted'}, trigger:{target:'useCardToTargeted'},
filter:function(event,player){ filter:function(event,player){
return event.player!=player&&event.player.isIn()&&event.player.isEnemyOf(player)&&get.color(event.card)=='black'; return event.player!=player&&event.player.isIn()&&event.player.isEnemyOf(player)&&get.color(event.card)=='black';
@ -1867,11 +1867,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else target.loseHp(target.hp-player.hp); else target.loseHp(target.hp-player.hp);
}, },
}, },
boyan:{ gzboyan:{
audio:'boyan',
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:function(event,player){ filter:function(event,player){
return game.hasPlayer((target)=>lib.skill.boyan.filterTarget(null,player,target)); return game.hasPlayer((target)=>lib.skill.gzboyan.filterTarget(null,player,target));
}, },
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')<target.maxHp; return target!=player&&target.countCards('h')<target.maxHp;
@ -1880,7 +1881,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'step 0' 'step 0'
target.draw(Math.min(5,target.maxHp-target.countCards('h'))); target.draw(Math.min(5,target.maxHp-target.countCards('h')));
'step 1' 'step 1'
target.addTempSkill('boyan_block'); target.addTempSkill('gzboyan_block');
'step 2' 'step 2'
if(target.isIn()) player.chooseBool('纵横:是否令'+get.translation(target)+'获得【驳言】?').set('ai',function(){ if(target.isIn()) player.chooseBool('纵横:是否令'+get.translation(target)+'获得【驳言】?').set('ai',function(){
var evt=_status.event.getParent(); var evt=_status.event.getParent();
@ -1889,18 +1890,18 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else event.finish(); else event.finish();
'step 3' 'step 3'
if(result.bool){ if(result.bool){
target.addTempSkill('boyan_zongheng',{player:'phaseEnd'}); target.addTempSkill('gzboyan_zongheng',{player:'phaseEnd'});
game.log(player,'发起了','#y纵横',',令',target,'获得了技能','#g【驳言】'); game.log(player,'发起了','#y纵横',',令',target,'获得了技能','#g【驳言】');
} }
}, },
derivation:'boyan_zongheng', derivation:'gzboyan_zongheng',
subSkill:{ subSkill:{
zongheng:{ zongheng:{
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filterTarget:lib.filter.notMe, filterTarget:lib.filter.notMe,
content:function(){ content:function(){
target.addTempSkill('boyan_block'); target.addTempSkill('gzboyan_block');
}, },
ai:{ ai:{
order:4, order:4,
@ -1931,7 +1932,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
target:function(player,target){ target:function(player,target){
if(get.attitude(player,target)>0) return Math.min(5,target.maxHp-target.countCards('h')); if(get.attitude(player,target)>0) return Math.min(5,target.maxHp-target.countCards('h'));
if(target.maxHp-target.countCards('h')==1&&target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&player.countCards('h',function(card){ if(target.maxHp-target.countCards('h')==1&&target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&player.countCards('h',function(card){
return get.tag(card,'respondShan')&&get.effect(target,card,player,player)>0&&player.getUseValue(card)>0; return get.tag(card,'respondShan')&&get.effect(target,card,player,player)>0&&player.getUseValue(card,null,true)>0;
})) return -2; })) return -2;
}, },
}, },
@ -3083,12 +3084,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzrekuangcai:{ gzrekuangcai:{
audio:'gzkuangcai', audio:'gzkuangcai',
forced:true, forced:true,
preHidden:true,
trigger:{player:'phaseDiscardBegin'}, trigger:{player:'phaseDiscardBegin'},
filter:function(event,player){ filter:function(event,player){
return player.getHistory('useCard').length&&!player.getHistory('sourceDamage').length; return !player.getHistory('useCard').length||!player.getHistory('sourceDamage').length;
}, },
content:function(){ content:function(){
player.addTempSkill('gzrekuangcai_less'); if(!player.getHistory('useCard').length) player.addTempSkill('gzrekuangcai_more');
else player.addTempSkill('gzrekuangcai_less');
}, },
mod:{ mod:{
targetInRange:function(card,player){ targetInRange:function(card,player){
@ -3107,6 +3110,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
charlotte:true, charlotte:true,
}, },
more:{
mod:{
maxHandcard:function(player,num){
return num+1;
},
},
charlotte:true,
},
}, },
}, },
gzkuangcai:{ gzkuangcai:{
@ -3227,8 +3238,24 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
logTarget:'player', logTarget:'player',
content:function(){ content:function(){
player.discard(player.getCards('h')); 'step 0'
trigger.player.damage(); var cards=player.getCards('h');
event.num=cards.length;
player.discard(cards);
'step 1'
var target=trigger.player,str=get.translation(target);
event.target=target;
if(!target.isIn()) event.finish();
else if(!target.hasCard(function(card){
return lib.filter.canBeDiscarded(card,player,target);
},'he')) event._result={index:1};
else player.chooseControl().set('choiceList',[
'弃置'+str+'的'+get.cnNumber(num)+'张牌',
'对'+str+'造成1点伤害',
]).set('ai',()=>1);
'step 2'
if(result.index==0) player.discardPlayerCard(target,num,true,'he');
else target.damage();
}, },
}, },
gzpozhen:{ gzpozhen:{
@ -11038,12 +11065,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
qingyin_info:'限定技,出牌阶段,你可令所有己方角色将体力值回满,然后移除此武将牌。', qingyin_info:'限定技,出牌阶段,你可令所有己方角色将体力值回满,然后移除此武将牌。',
gzlianpian:'联翩', gzlianpian:'联翩',
gzlianpian_info:'①结束阶段开始时若你于此回合内弃置过所有角色的牌数之和大于你的体力值你可令一名与你势力相同的角色将手牌补至X张X为其体力上限。②其他角色的结束阶段开始时若其于此回合内弃置过所有角色的牌数之和大于你的体力值其可选择1.弃置你的一张牌2.令你回复1点体力。', gzlianpian_info:'①结束阶段开始时若你于此回合内弃置过所有角色的牌数之和大于你的体力值你可令一名与你势力相同的角色将手牌补至X张X为其体力上限。②其他角色的结束阶段开始时若其于此回合内弃置过所有角色的牌数之和大于你的体力值其可选择1.弃置你的一张牌2.令你回复1点体力。',
yusui:'玉碎', gzyusui:'玉碎',
yusui_info:'当你成为其他势力的角色使用黑色牌的目标后你可以失去1点体力然后选择一项①令其弃置X张手牌X为其体力上限②令其失去Y点体力Y为其的体力值减去你的体力值不为正时不可选择', gzyusui_info:'当你成为其他势力的角色使用黑色牌的目标后你可以失去1点体力然后选择一项①令其弃置X张手牌X为其体力上限②令其失去Y点体力Y为其的体力值减去你的体力值不为正时不可选择',
boyan:'驳言', gzboyan:'驳言',
boyan_info:'出牌阶段限一次,你可令一名其他角色将手牌摸至体力上限(至多摸五张),然后其本回合不能使用或打出手牌。', gzboyan_info:'出牌阶段限一次,你可令一名其他角色将手牌摸至体力上限(至多摸五张),然后其本回合不能使用或打出手牌。',
boyan_zongheng:'驳言·纵横', gzboyan_zongheng:'驳言·纵横',
boyan_zongheng_info:'出牌阶段限一次,你可令一名其他角色本回合不能使用或打出手牌。', gzboyan_zongheng_info:'出牌阶段限一次,你可令一名其他角色本回合不能使用或打出手牌。',
gzjinfa:'矜伐', gzjinfa:'矜伐',
gzjinfa_info:'出牌阶段限一次,你可弃置一张牌并令一名其他角色选择一项:①交给你一张装备牌,若你以此法获得了♠牌,则其视为对你使用一张【杀】。②你获得其一张牌。', gzjinfa_info:'出牌阶段限一次,你可弃置一张牌并令一名其他角色选择一项:①交给你一张装备牌,若你以此法获得了♠牌,则其视为对你使用一张【杀】。②你获得其一张牌。',
gzduwu:'黩武', gzduwu:'黩武',
@ -11082,11 +11109,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzlixia:'礼下', gzlixia:'礼下',
gzlixia_info:'与你势力不同的角色的准备阶段开始时其可弃置你装备区内的一张牌然后其选择一项①弃置两张手牌。②失去1点体力。③令你摸两张牌。', gzlixia_info:'与你势力不同的角色的准备阶段开始时其可弃置你装备区内的一张牌然后其选择一项①弃置两张手牌。②失去1点体力。③令你摸两张牌。',
gzrekuangcai:'狂才', gzrekuangcai:'狂才',
gzrekuangcai_info:'锁定技,你于回合内使用牌无距离和次数限制;弃牌阶段开始时,若你本回合内使用过牌但未造成过伤害,则你的手牌上限-1。', gzrekuangcai_info:'锁定技,你于回合内使用牌无距离和次数限制;弃牌阶段开始时,若你本回合内:未使用过牌,则你本回合的手牌上限+1使用过牌但未造成过伤害,则你本回合的手牌上限-1。',
gzkuangcai:'狂才', gzkuangcai:'狂才',
gzkuangcai_info:'锁定技,你的回合内,你使用牌无距离和次数限制,无视防具且不能被【无懈可击】响应;弃牌阶段开始时,若你本回合使用过牌但没造成伤害,本回合你的手牌上限-2若你本回合造成的伤害点数不小于你使用的牌数你将手牌摸至体力上限且本回合手牌上限+2。', gzkuangcai_info:'锁定技,你的回合内,你使用牌无距离和次数限制,无视防具且不能被【无懈可击】响应;弃牌阶段开始时,若你本回合使用过牌但没造成伤害,本回合你的手牌上限-2若你本回合造成的伤害点数不小于你使用的牌数你将手牌摸至体力上限且本回合手牌上限+2。',
gzshejian:'舌箭', gzshejian:'舌箭',
gzshejian_info:'当你成为其他角色使用牌的唯一目标后,你可以弃置所有手牌。若如此做,你对其造成1点伤害。', gzshejian_info:'当你成为其他角色使用牌的唯一目标后,你可以弃置所有手牌。若如此做,你选择一项:⒈弃置其等量的牌。⒉对其造成1点伤害。',
gzzhidao:'雉盗', gzzhidao:'雉盗',
gzzhidao2:'雉盗', gzzhidao2:'雉盗',
gzzhidao_info:'锁定技出牌阶段开始时你选择一名其他角色然后直到此回合结束你与其的距离视为1且你不能使用牌指定除你与其外的角色为目标当你于出牌阶段内首次对其造成伤害后你获得其区域内的一张牌。', gzzhidao_info:'锁定技出牌阶段开始时你选择一名其他角色然后直到此回合结束你与其的距离视为1且你不能使用牌指定除你与其外的角色为目标当你于出牌阶段内首次对其造成伤害后你获得其区域内的一张牌。',

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
box-shadow: none; box-shadow: none;
border: none; border: none;
background-size: 100% 100%; background-size: 100% 100%;
@ -6,7 +6,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
box-shadow: none; box-shadow: none;
border: none; border: none;
background-size: 100% 100%; background-size: 100% 100%;
@ -14,7 +14,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
box-shadow: none; box-shadow: none;
border: none; border: none;
background-size: 100% 100%; background-size: 100% 100%;
@ -29,19 +29,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/emotion1.png'); background: url('image/emotion1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -7,7 +7,7 @@
-webkit-filter:brightness(0.8) contrast(1.5); -webkit-filter:brightness(0.8) contrast(1.5);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/emotion2.png'); background: url('image/emotion2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -16,7 +16,7 @@
-webkit-filter:brightness(0.8) contrast(1.5); -webkit-filter:brightness(0.8) contrast(1.5);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/emotion3.png'); background: url('image/emotion3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -33,19 +33,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/glass1.png'); background: url('image/glass1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -7,7 +7,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/glass2.png'); background: url('image/glass2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -16,7 +16,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/glass3.png'); background: url('image/glass3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -33,19 +33,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/official1.png'); background: url('image/official1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -6,7 +6,7 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/official2.png'); background: url('image/official2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -14,7 +14,7 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/official3.png'); background: url('image/official3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -30,19 +30,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/ol1.png'); background: url('image/ol1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -7,7 +7,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/ol2.png'); background: url('image/ol2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -16,7 +16,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/ol3.png'); background: url('image/ol3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -35,14 +35,24 @@
filter:grayscale(1) opacity(0.8); filter:grayscale(1) opacity(0.8);
-webkit-filter:grayscale(1) opacity(0.8); -webkit-filter:grayscale(1) opacity(0.8);
} }
.hp:not(.text):not(.actcount):not(.treasure)>.lost{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.6);
border-radius: 0px;
filter:grayscale(1) opacity(0.8);
-webkit-filter:grayscale(1) opacity(0.8);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/round1.png'); background: url('image/round1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -7,7 +7,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/round2.png'); background: url('image/round2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -16,7 +16,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/round3.png'); background: url('image/round3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -33,19 +33,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/xinglass1.png'); background: url('image/xinglass1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -7,7 +7,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/xinglass2.png'); background: url('image/xinglass2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -16,7 +16,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/xinglass3.png'); background: url('image/xinglass3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -33,19 +33,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/xinglass4.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;

View File

@ -1,4 +1,4 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
background: url('image/xinround1.png'); background: url('image/xinround1.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -7,7 +7,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
background: url('image/xinround2.png'); background: url('image/xinround2.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -16,7 +16,7 @@
-webkit-filter:none; -webkit-filter:none;
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
background: url('image/xinround3.png'); background: url('image/xinround3.png');
box-shadow: none; box-shadow: none;
border: none; border: none;
@ -33,19 +33,30 @@
transform: scale(1.4); transform: scale(1.4);
border-radius: 0px; border-radius: 0px;
} }
.hp:not(.text):not(.actcount):not(.treasure)>.shield{
background: url('image/shield.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost):not(.shield){
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{ #arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6); transform: scale(1.6);
} }
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.shield{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{ .button.newstyle>.hp>.text{
margin-left: 5px; margin-left: 5px;