diff --git a/audio/die/feiyi.mp3 b/audio/die/feiyi.mp3 new file mode 100644 index 000000000..6f3db4fde Binary files /dev/null and b/audio/die/feiyi.mp3 differ diff --git a/audio/die/luotong.mp3 b/audio/die/luotong.mp3 new file mode 100644 index 000000000..ee49dcbc3 Binary files /dev/null and b/audio/die/luotong.mp3 differ diff --git a/audio/die/sp_bianfuren.mp3 b/audio/die/sp_bianfuren.mp3 new file mode 100644 index 000000000..fae577df6 Binary files /dev/null and b/audio/die/sp_bianfuren.mp3 differ diff --git a/audio/die/sp_duyu.mp3 b/audio/die/sp_duyu.mp3 new file mode 100644 index 000000000..84d66e27e Binary files /dev/null and b/audio/die/sp_duyu.mp3 differ diff --git a/audio/die/zongyu.mp3 b/audio/die/zongyu.mp3 new file mode 100644 index 000000000..2ee049dca Binary files /dev/null and b/audio/die/zongyu.mp3 differ diff --git a/audio/skill/chengshang1.mp3 b/audio/skill/chengshang1.mp3 new file mode 100644 index 000000000..feb6b7d8c Binary files /dev/null and b/audio/skill/chengshang1.mp3 differ diff --git a/audio/skill/chengshang2.mp3 b/audio/skill/chengshang2.mp3 new file mode 100644 index 000000000..cc7cacdec Binary files /dev/null and b/audio/skill/chengshang2.mp3 differ diff --git a/audio/skill/fyjianyu1.mp3 b/audio/skill/fyjianyu1.mp3 new file mode 100644 index 000000000..4a16f55e4 Binary files /dev/null and b/audio/skill/fyjianyu1.mp3 differ diff --git a/audio/skill/fyjianyu2.mp3 b/audio/skill/fyjianyu2.mp3 new file mode 100644 index 000000000..dc0edbf18 Binary files /dev/null and b/audio/skill/fyjianyu2.mp3 differ diff --git a/audio/skill/qinzheng1.mp3 b/audio/skill/qinzheng1.mp3 new file mode 100644 index 000000000..3a2be5c90 Binary files /dev/null and b/audio/skill/qinzheng1.mp3 differ diff --git a/audio/skill/qinzheng2.mp3 b/audio/skill/qinzheng2.mp3 new file mode 100644 index 000000000..f79af8557 Binary files /dev/null and b/audio/skill/qinzheng2.mp3 differ diff --git a/audio/skill/shengxi_feiyi1.mp3 b/audio/skill/shengxi_feiyi1.mp3 new file mode 100644 index 000000000..4a40bfb22 Binary files /dev/null and b/audio/skill/shengxi_feiyi1.mp3 differ diff --git a/audio/skill/shengxi_feiyi2.mp3 b/audio/skill/shengxi_feiyi2.mp3 new file mode 100644 index 000000000..7603094e7 Binary files /dev/null and b/audio/skill/shengxi_feiyi2.mp3 differ diff --git a/audio/skill/spmiewu1.mp3 b/audio/skill/spmiewu1.mp3 new file mode 100644 index 000000000..10267de38 Binary files /dev/null and b/audio/skill/spmiewu1.mp3 differ diff --git a/audio/skill/spmiewu2.mp3 b/audio/skill/spmiewu2.mp3 new file mode 100644 index 000000000..0c5677c7f Binary files /dev/null and b/audio/skill/spmiewu2.mp3 differ diff --git a/audio/skill/spsanchen1.mp3 b/audio/skill/spsanchen1.mp3 new file mode 100644 index 000000000..455ed76bc Binary files /dev/null and b/audio/skill/spsanchen1.mp3 differ diff --git a/audio/skill/spsanchen2.mp3 b/audio/skill/spsanchen2.mp3 new file mode 100644 index 000000000..81a463c07 Binary files /dev/null and b/audio/skill/spsanchen2.mp3 differ diff --git a/audio/skill/spwanwei1.mp3 b/audio/skill/spwanwei1.mp3 new file mode 100644 index 000000000..f7a55b459 Binary files /dev/null and b/audio/skill/spwanwei1.mp3 differ diff --git a/audio/skill/spwanwei2.mp3 b/audio/skill/spwanwei2.mp3 new file mode 100644 index 000000000..ebbb4370c Binary files /dev/null and b/audio/skill/spwanwei2.mp3 differ diff --git a/audio/skill/spwuku1.mp3 b/audio/skill/spwuku1.mp3 new file mode 100644 index 000000000..707bd20b0 Binary files /dev/null and b/audio/skill/spwuku1.mp3 differ diff --git a/audio/skill/spwuku2.mp3 b/audio/skill/spwuku2.mp3 new file mode 100644 index 000000000..7d2d7c867 Binary files /dev/null and b/audio/skill/spwuku2.mp3 differ diff --git a/audio/skill/spyuejian1.mp3 b/audio/skill/spyuejian1.mp3 new file mode 100644 index 000000000..5cad64589 Binary files /dev/null and b/audio/skill/spyuejian1.mp3 differ diff --git a/audio/skill/spyuejian2.mp3 b/audio/skill/spyuejian2.mp3 new file mode 100644 index 000000000..1d47e931d Binary files /dev/null and b/audio/skill/spyuejian2.mp3 differ diff --git a/audio/skill/zyqiao1.mp3 b/audio/skill/zyqiao1.mp3 new file mode 100644 index 000000000..91ee4caaa Binary files /dev/null and b/audio/skill/zyqiao1.mp3 differ diff --git a/audio/skill/zyqiao2.mp3 b/audio/skill/zyqiao2.mp3 new file mode 100644 index 000000000..6973b8633 Binary files /dev/null and b/audio/skill/zyqiao2.mp3 differ diff --git a/card/standard.js b/card/standard.js index 9e41d8778..7f186f5fd 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1732,6 +1732,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ cardEnabled2:function(card,player){ if(!_status.event.addCount_extra||player.hasSkill('zhuge_skill',null,false)) return; if(card&&card==player.getEquip('zhuge')){ + var cardz=get.card(); + if(!cardz||cardz.name!='sha') return; _status.zhuge_temp=true; var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player); delete _status.zhuge_temp; diff --git a/character/mobile.js b/character/mobile.js index 30377ef4d..edb1ecad8 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile:{ mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang"], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], - mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen"], + mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"], mobile_sunben:["re_sunben"], 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"], @@ -17,10 +17,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + feiyi:['male','shu',3,['reshengxi','fyjianyu']], + sp_bianfuren:['female','wei',3,['spwanwei','spyuejian']], + sp_duyu:['male','qun',4,['spwuku','spsanchen']], + luotong:['male','wu',4,['qinzheng']], re_handang:['male','wu',4,['regongji','jiefan']], sp_wangcan:['male','wei',3,['spqiai','spshanxi']], sp_chenzhen:['male','shu',3,['shameng']], - sp_sunshao:['male','wu',3,['fubi','zuici']], + sp_sunshao:['male','wu',3,['refubi','rezuici']], sp_xunchen:['male','qun',3,['jianzhan','duoji']], re_dengai:['male','wei',4,['retuntian','zaoxian']], xin_fuhuanghou:['female','qun',3,['xinzhuikong','xinqiuyuan']], @@ -95,6 +99,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']], }, characterIntro:{ + feiyi:'费祎(?~253年2月),字文伟,江夏鄳县(今河南省罗山县)人,三国时期蜀汉名臣,与诸葛亮、蒋琬、董允并称为蜀汉四相。深得诸葛亮器重,屡次出使东吴,孙权、诸葛恪、羊茞等人以辞锋刁难,而费祎据理以答,辞义兼备,始终不为所屈。孙权非常惊异于他的才能,加以礼遇。北伐时为中护军,又转为司马。当时魏延与杨仪不和,经常争论,费祎常为二人谏喻,两相匡护,以尽其用。诸葛亮死后,初为后军师,再为尚书令,官至大将军,封成乡侯。费祎主政时,与姜维北伐的主张相左,执行休养生息的政策,为蜀汉的发展尽心竭力。费祎性格谦恭真诚,颇为廉洁,家无余财。后为魏降将郭循(一作郭脩)行刺身死。葬于今广元市昭化古城城西。', + luotong:'骆统(193年-228年),字公绪。会稽郡乌伤县(今浙江义乌)人。东汉末年至三国时期吴国将领、学者,陈国相骆俊之子。骆统二十岁时已任乌程国相,任内有政绩,使得国中民户过万。又迁为功曹,行骑都尉。曾劝孙权尊贤纳士,省役息民。后出任为建忠中郎将。将军凌统逝世后,统领其部曲。因战功迁偏将军,封新阳亭侯,任濡须督。黄武七年(228年),骆统去世,年仅三十六岁。有集十卷,今已佚。', chenzhen:'陈震(?—公元235年),字孝起。荆州南阳郡(今河南南阳)人。三国时期蜀汉官员。刘备领荆州牧时,辟陈震为从事。后随刘备入蜀,为蜀郡北部都尉、汶山太守、犍为太守。建兴三年(225年),拜尚书,迁尚书令。建兴七年(229年),孙权称帝。蜀汉以陈震为卫尉,前往祝贺,与孙权开坛歃盟,交分天下。还蜀,封城阳亭侯。建兴十三年(235年),卒。', nanhualaoxian:'南华老仙,其原型来自道教典籍中对庄子的封号,又称“南华仙人”、“南华真人”等。在古典小说《三国演义》通行本的第一回中,描述了南华老仙将《太平要术》赠送给张角的情节。', hucheer:'胡车儿(生卒年不详),东汉末年武将,初从张绣,为其心腹猛将,勇冠三军,与贾诩交情甚佳。宛城大战后,张绣投降曹操,曹操爱胡车儿之骁勇,手以黄金与之。后因曹操私纳张绣亡叔张济的遗孀邹氏,张绣深感其辱,欲杀曹操,与贾诩商议后决心反曹。《三国演义》中,作者考虑到典韦的勇猛,便增加了令胡车儿盗走典韦的双戟的情节。最终典韦、曹昂(曹操长子)、曹安民(曹操侄子)皆死于此次战斗。野史说胡车儿跟随曹操征战,被赵云在长坂坡上红枪挑死。', @@ -328,6 +334,492 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, skill:{ //始计篇·智 + refubi:{ + audio:'fubi', + trigger:{ + global:'gameDrawAfter', + player:'enterGame', + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('refubi'),lib.filter.notMe).set('ai',function(target){ + return 1+get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('refubi',target); + target.addMark('refubi',1); + } + }, + intro:{ + content:function(info,player){ + var str='已获得“辅弼”标记' + if(player.storage.refubi_effect0){ + str+=';本回合使用【杀】的次数上限+'; + str+=player.storage.refubi_effect0; + } + if(player.storage.refubi_effect1){ + str+=';本回合的手牌上限+'; + str+=(player.storage.refubi_effect1*3); + } + return str; + }, + }, + marktext:'弼', + group:'refubi_buff', + subSkill:{ + buff:{ + trigger:{global:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return event.player!=player&&event.player.hasMark('refubi'); + }, + content:function(){ + 'step 0' + var str=get.translation(trigger.player); + player.chooseControl('cancel2').set('choiceList',[ + '令'+str+'本回合使用【杀】的次数上限+1', + '令'+str+'本回合的手牌上限+3', + ]).set('ai',function(){ + var player=_status.event.player,target=_status.event.getTrigger().player; + if(get.attitude(player,target)<=0) return 'cancel2'; + if(target.countCards('h',function(card){ + return get.name(card,target)=='sha'&&target.hasValueTarget(card); + })>target.getCardUsable('sha')) return 0; + return 1; + }); + 'step 1' + if(result.control!='cancel2'){ + var target=trigger.player; + player.logSkill('refubi',target); + var str='refubi_effect'+result.index; + target.addTempSkill(str); + target.addMark(str,1,false); + game.log(target,[ + '本回合使用【杀】的次数上限+1', + '本回合的手牌上限+3', + ][result.index]); + } + }, + }, + effect0:{ + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('refubi_effect0'); + }, + }, + }, + effect1:{ + onremove:true, + mod:{ + maxHandcard:function(player,num){ + return num+3*player.countMark('refubi_effect1'); + }, + }, + }, + }, + }, + rezuici:{ + audio:'zuici', + enable:'chooseToUse', + filter:function(event,player){ + if(event.type=='phase'||event.type=='dying'&&player==event.dying) return (player.isDamaged()&&player.countCards('e')>0); + return false; + }, + chooseButton:{ + dialog:function(event,player){ + return ui.create.dialog('###罪辞###选择废除一个有牌的装备栏,然后回复2点体力,并可移动“辅弼”标记。'); + }, + chooseControl:function(event,player){ + var list=[]; + for(var i=1;i<6;i++){ + if(player.getEquip(i)) list.push('equip'+i); + } + list.push('cancel2'); + return list; + }, + check:function(event,player){ + if(player.hp>1&&player.getDamagedHp()<2) return 'cancel2'; + var cards=player.getCards('e').sort(function(a,b){ + return get.value(a)-get.value(b); + }); + var sub=get.subtype(cards[0],false); + if(player.hp<1) return sub; + var val=get.value(cards[0]); + if(val<0) return sub; + return val<4?sub:'cancel2'; + }, + backup:function(result){ + var next=get.copy(lib.skill.rezuicix); + next.position=result.control; + return next; + }, + }, + ai:{ + order:2.7, + result:{ + player:1, + }, + save:true, + skillTagFilter:function(player,tag,arg){ + return player==arg; + }, + }, + }, + rezuicix:{ + audio:'zuici', + content:function(){ + 'step 0' + player.disableEquip(lib.skill.rezuici_backup.position); + player.recover(2); + 'step 1' + var b1=false,b2=false; + for(var i of game.players){ + if(i.hasMark('refubi')) b1=true; + else if(i!=player) b2=true; + if(b1&&b2) break; + } + if(b1&&b2){ + player.chooseTarget('是否转移“辅弼”标记?',function(card,player,target){ + return target!=player&&!target.hasMark('refubi'); + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + return Math.min(att,att-_status.event.preatt); + }).set('preatt',get.attitude(player,game.findPlayer(function(current){ + return current.hasMark('refubi'); + }))); + } + else event.finish(); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'group'); + game.countPlayer(function(current){ + var num=current.countMark('refubi'); + if(num) current.removeMark('refubi',1,false); + }); + target.addMark('refubi',1); + } + }, + ai:{ + result:{ + player:1, + }, + }, + }, + reshengxi:{ + audio:'shengxi', + audioname:['feiyi'], + trigger:{player:'phaseJieshuBegin'}, + frequent:true, + filter:function(event,player){ + return !player.getHistory('sourceDamage').length; + }, + content:function(){ + player.draw(2); + }, + }, + fyjianyu:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return !player.hasSkill('fyjianyu2')&&game.countPlayer(function(current){ + return !current.hasMark('fyjianyux'); + })>1; + }, + filterTarget:function(card,player,target){ + return !target.hasMark('fyjianyux'); + }, + selectTarget:2, + content:function(){ + player.addTempSkill('fyjianyux',{player:'phaseBegin'}); + target.addMark('fyjianyux',1); + }, + ai:{ + order:0.1, + result:{ + target:function(player,target){ + if(!ui.selected.targets.length) return target==player?1:0; + if(get.attitude(player,target)<0) return -1.6*(1+(target.countCards('h',function(card){ + return target.hasValueTarget(card)&&get.effect(player,card,target,target)>0; + }))*Math.sqrt(target.countCards('h'))); + return 0.3*(1+(target.countCards('h',function(card){ + return target.hasValueTarget(card)&&get.effect(player,card,target,target)>0; + }))*Math.sqrt(target.countCards('h'))); + }, + }, + }, + }, + fyjianyux:{ + trigger:{global:'useCardToPlayer'}, + forced:true, + charlotte:true, + filter:function(event,player){ + return event.player!=event.target&&event.player.hasMark('fyjianyux')&& + event.target.hasMark('fyjianyux')&&event.target.isAlive(); + }, + logTarget:'target', + content:function(){ + trigger.target.draw(); + }, + onremove:function(){ + game.countPlayer(function(current){ + var num=current.countMark('fyjianyux'); + if(num) current.removeMark('fyjianyux'); + }); + }, + intro:{ + content:'mark', + }, + }, + fyjianyu2:{}, + spwanwei:{ + audio:2, + enable:'chooseToUse', + filter:function(event,player){ + if(player.hasSkill('spwanwei2')||player.hp<1) return false; + if(event.type=='dying') return event.dying!=player; + if(event.type!='phase') return false; + return game.hasPlayer(function(current){ + return current!=player&¤t.isDamaged(); + }); + }, + filterTarget:function(card,player,target){ + if(_status.event.type=='dying') return target==_status.event.dying; + return player!=target&&target.isDamaged(); + }, + selectTarget:function(){ + if(_status.event.type=='dying') return -1; + return 1; + }, + content:function(){ + player.addTempSkill('spwanwei2','roundStart'); + var num=player.hp; + target.recover(Math.max(num+1,1-target.hp)); + player.loseHp(num); + }, + ai:{ + save:true, + skillTagFilter:function(player,tag,target){ + return player!=target; + }, + expose:0.5, + order:6, + result:{ + target:function(player,target){ + if(_status.event.type!='dying') return 0; + if(get.attitude(player,target)<4) return 0; + if(player.countCards('he')<2&&target!=get.zhu(player)) return 0; + return 1; + }, + }, + }, + }, + spwanwei2:{}, + spyuejian:{ + mod:{ + maxHandcardBase:function(player){ + return player.maxHp; + }, + }, + audio:2, + enable:'chooseToUse', + filter:function(event,player){ + return event.type=='dying'&&player==event.dying&&player.countCards('he')>1; + }, + selectCard:2, + filterCard:true, + position:'he', + check:function(card){ + return 1/Math.max(0.1,get.value(card)); + }, + content:function(){ + player.recover(); + }, + ai:{ + save:true, + skillTagFilter:function(player,tag,target){ + return player==target; + }, + order:1.4, + result:{ + player:1, + }, + }, + }, + spwuku:{ + audio:2, + trigger:{global:'useCard'}, + forced:true, + filter:function(event,player){ + if(get.type(event.card)!='equip') return false; + var gz=get.mode()=='guozhan'; + if(gz&&event.player.isFriendOf(player)) return false; + return player.countMark('spwuku')<(gz?2:3); + }, + content:function(){ + player.addMark('spwuku',1); + }, + marktext:'库', + intro:{ + content:'mark', + }, + }, + spsanchen:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + forced:true, + juexingji:true, + skillAnimation:true, + animationColor:'gray', + filter:function(event,player){ + return player.countMark('spwuku')>2; + }, + content:function(){ + player.awakenSkill('spsanchen'); + player.gainMaxHp(); + player.recover(); + player.addSkillLog('spmiewu'); + }, + derivation:'spmiewu', + }, + spmiewu:{ + audio:2, + enable:['chooseToUse','chooseToRespond'], + filter:function(event,player){ + if(!player.countMark('spwuku')||!player.countCards('he')||player.hasSkill('spmiewu2')) return false; + for(var i of lib.inpile){ + var type=get.type2(i); + if((type=='basic'||type=='trick')&&lib.filter.filterCard({name:i},player,event)) return true; + } + return false; + }, + chooseButton:{ + dialog:function(event,player){ + var list=[]; + for(var i=0;i0) return 0; + if(['wugu','zhulu_card'].contains(button.link[2])) return 0; + var effect=player.getUseValue(button.link[2]); + if(effect>0) return effect; + return 0; + }, + check:function(button){ + if(_status.event.getParent().type!='phase') return 1; + var player=_status.event.player; + if(['wugu','zhulu_card','yiyi','lulitongxin','lianjunshengyan','diaohulishan'].contains(button.link[2])) return 0; + return player.getUseValue({ + name:button.link[2], + nature:button.link[3], + }); + }, + backup:function(links,player){ + return { + filterCard:true, + audio:'spmiewu', + popname:true, + check:function(card){ + return 8-get.value(card); + }, + position:'he', + viewAs:{name:links[0][2],nature:links[0][3]}, + precontent:function(){ + player.addTempSkill('spmiewu2'); + player.removeMark('spwuku',1); + }, + } + }, + prompt:function(links,player){ + return '将一张牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用'; + } + }, + hiddenCard:function(player,name){ + var type=get.type2(name); + return (type=='basic'||type=='trick')&&player.countMark('spwuku')>0&&player.countCards('he')>0&&!player.hasSkill('spmiewu2'); + }, + ai:{ + combo:'spwuku', + fireAttack:true, + respondSha:true, + respondShan:true, + skillTagFilter:function(player){ + if(player.countMark('spwuku')||!player.countCards('he')||player.hasSkill('spmiewu2')) return false; + }, + order:1, + result:{ + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying); + return 1; + }, + }, + }, + }, + spmiewu2:{ + trigger:{player:['useCardAfter','respondAfter']}, + forced:true, + charlotte:true, + popup:false, + filter:function(event,player){ + return event.skill=='spmiewu_backup'; + }, + content:function(){ + player.draw(); + }, + }, + spmiewu_backup:{audio:'spmiewu'}, + qinzheng:{ + audio:2, + trigger:{player:['useCard','respond']}, + forced:true, + filter:function(event,player){ + var num=player.getAllHistory('useCard').length+player.getAllHistory('respond').length; + return num%3==0||num%5==0||num%8==0; + }, + content:function(){ + var num=player.getAllHistory('useCard').length+player.getAllHistory('respond').length; + var cards=[]; + if(num%3==0){ + var card=get.cardPile2(function(card){ + return card.name=='sha'||card.name=='shan'; + }); + if(card) cards.push(card); + } + if(num%5==0){ + var card=get.cardPile2(function(card){ + return card.name=='tao'||card.name=='jiu'; + }); + if(card) cards.push(card); + } + if(num%8==0){ + var card=get.cardPile2(function(card){ + return card.name=='juedou'||card.name=='wuzhong'; + }); + if(card) cards.push(card); + } + if(cards.length) player.gain(cards,'gain2'); + }, + }, spqiai:{ audio:2, enable:'phaseUse', @@ -3853,6 +4345,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ cardEnabled2:function(card,player){ if(!_status.event.addCount_extra||player.hasSkill('rw_zhuge_skill',null,false)) return; if(card&&card==player.getEquip('rewrite_zhuge')){ + var cardz=get.card(); + if(!cardz||cardz.name!='sha') return; _status.rw_zhuge_temp=true; var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player); delete _status.rw_zhuge_temp; @@ -7038,7 +7532,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.log(player,'将',result.cards,'放到了武将牌上'); } }, - group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7','gnjinfan8'], + group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7'], marktext:'铃', intro:{ content:'cards', @@ -7172,7 +7666,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ popup:false, filter:function(event,player){ var evt=event.getParent(); - return evt&&evt.player==player&&player!=_status.currentPhase&&evt.skill&&evt.skill.indexOf('gnjinfan')==0; + return evt&&evt.player==player&&evt.skill&&evt.skill.indexOf('gnjinfan')==0; }, content:function(){ 'step 0' @@ -7280,6 +7774,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ wangcan:['wangcan','sp_wangcan'], sunshao:['sp_sunshao','sunshao'], xunchen:['xunchen','sp_xunchen'], + //duyu:['duyu','sp_duyu'], + bianfuren:['sp_bianfuren','bianfuren'], }, translate:{ liuzan:'手杀留赞', @@ -7484,7 +7980,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qiaosi:'巧思', qiaosi_info:'出牌阶段限一次,你可以表演「大键角色图」并根据表演结果获得相应的牌。然后,你选择一项:1.弃置X张牌。2.将X张牌交给一名其他角色。(X为你以此法获得的牌数)', qiaosi_map:'大键角色图', - qiaosi_map_info:'
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 ゆり:装备牌*2
  • Illustration: うら;Twitter:@ura530', + qiaosi_map_info:'
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 由理:装备牌*2
  • Illustration: うら;Twitter:@ura530', qiaosi_c1:' ', //星野 梦美 qiaosi_c2:' ', @@ -7496,7 +7992,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qiaosi_c5:' ', //伊吹 风子 qiaosi_c6:' ', - //仲村 ゆり + //仲村 由理 mobile_sunben:'那个男人', //孙笨 @@ -7580,7 +8076,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gnjinfan7:'锦帆', gnjinfan8:'锦帆', gnjinfan4_backup:'锦帆', - gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。你的回合外,当有“铃”移动到处理区后,你从牌堆中获得与“铃”花色相同的一张牌。回合开始时,你获得所有“铃”。', + gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。当有“铃”移动到处理区后,你从牌堆中获得与“铃”花色相同的一张牌。', gnsheque:'射却', gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。', sp_sufei:'SP苏飞', @@ -7705,6 +8201,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){ duoji:'夺冀', duoji_info:'限定技,出牌阶段,你可弃置两张手牌并选择一名装备区有牌的其他角色。你获得其装备区里的所有牌。', re_handang:'手杀韩当', + luotong:'骆统', + qinzheng:'勤政', + qinzheng_info:'锁定技,当你使用或打出牌时,若你本局游戏内使用或打出过的牌数和:为3的倍数,你从牌堆中获得一张【杀】或【闪】;为5的倍数,你从牌堆中获得一张【桃】或【酒】;为8的倍数,你从牌堆中获得一张【决斗】或【无中生有】。', + sp_duyu:'SP杜预', + spwuku:'武库', + spwuku_info:'锁定技,当有角色使用装备牌时,若你的“武库”数小于3,则你获得一个“武库”。', + spwuku_info_guozhan:'锁定技,当有其他势力的角色使用装备牌时,若你的“武库”数小于2,则你获得一个“武库”。', + spsanchen:'三陈', + spsanchen_info:'觉醒技,结束阶段,若你的“武库”数大于2,则你加1点体力上限并回复1点体力,然后获得〖灭吴〗。', + spmiewu:'灭吴', + spmiewu2:'灭吴', + spmiewu_backup:'灭吴', + spmiewu_info:'每回合限一次。你可弃置一枚“武库”并将一张牌当做任意基本牌或锦囊牌使用,然后摸一张牌。', + sp_bianfuren:'SP卞夫人', + spwanwei:'挽危', + spwanwei_info:'每轮累计限一次。①出牌阶段,你可选择一名其他角色。②当有其他角色处于濒死状态时。你可令该角色回复X+1点体力(至少回复至1),然后你失去X点体力。(X为你的体力值)', + spyuejian:'约俭', + spyuejian_info:'锁定技,你的手牌上限基数等于你的体力上限。当你处于濒死状态时,你可弃置两张牌,然后回复1点体力。', + feiyi:'费祎', + reshengxi:'生息', + reshengxi_info:'结束阶段,若你于本回合内未造成过伤害,则你可摸两张牌。', + fyjianyu:'谏喻', + fyjianyu_info:'每轮限一次。出牌阶段,你可选择两名角色,令这些角色获得“喻”直到你的下回合开始。当一名有“喻”的角色A使用牌指定另一名有“喻”的角色B为目标时,你令B摸一张牌。', + fyjianyux:'谏喻', + refubi:'辅弼', + refubi_info:'游戏开始时,你可令一名其他角色获得“辅弼”标记。有“辅弼”标记的角色的出牌阶段开始时,你可选择一项:①令其本回合使用【杀】的次数上限+1。②令其本回合的手牌上限+3。', + rezuici:'罪辞', + rezuici_backup:'罪辞', + rezuici_info:'出牌阶段,或当你处于濒死状态时,你可以废除一个有牌的装备栏并回复2点体力,然后可以移动“辅弼”标记。', mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', diff --git a/character/rank.js b/character/rank.js index 4ed520396..266f6bd88 100644 --- a/character/rank.js +++ b/character/rank.js @@ -458,6 +458,7 @@ window.noname_character_rank={ 'sp_chenzhen', 'sp_wangcan', 'caosong', + 'sp_duyu', ], bp:[ 'chess_diaochan', @@ -655,6 +656,8 @@ window.noname_character_rank={ 'jin_simazhao', 'jin_zhangchunhua', 'xin_handang', + 'luotong', + 'feiyi', ], b:[ 'diy_feishi', @@ -807,6 +810,7 @@ window.noname_character_rank={ 'ns_caimao', 'sp_zhangliao', 'xinxianying', + 'sp_bianfuren', 'key_haruko', 'key_rei', 'key_komari', @@ -968,6 +972,7 @@ window.noname_character_rank={ 'sp_xunchen', 'zhaozhong', 'zongyu', + 'sp_sunshao', ], c:[ 'xiahoudun', @@ -1010,7 +1015,6 @@ window.noname_character_rank={ 'panfeng', 'hanba', 'ns_fanchou', - 'sp_sunshao', 'zhangchunhua', ], d:[ @@ -1294,6 +1298,7 @@ window.noname_character_rank={ 'fanyufeng', 're_taoqian', 'caosong', + 'sp_duyu', 'key_haruko', 'key_akiko', 'key_sunohara', @@ -1595,6 +1600,9 @@ window.noname_character_rank={ 'zhaozhong', 're_zhangchunhua', 'xin_handang', + 'sp_bianfuren', + 'luotong', + 'feiyi', ], junk:[ 'sunshao', diff --git a/character/refresh.js b/character/refresh.js index 03d330676..e7c5f2426 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -9142,7 +9142,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gzquanji_info:'当你受到伤害后或当你使用牌指定唯一目标并对其造成伤害后,你可以摸一张牌,然后你将一张牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。', gzpaiyi:'排异', gzpaiyi_backup:'排异', - gzpaiyi_info:'出牌阶段,你可以将移去一张“权”放入弃牌堆,然后选择一名角色并令其摸X张牌(X为“权”的数量),若其手牌数不小于你,则你对其造成1点伤害且本技能于此回合内失效。', + gzpaiyi_info:'出牌阶段,你可以将移去一张“权”,然后选择一名角色并令其摸X张牌(X为“权”的数量),若其手牌数不小于你,则你对其造成1点伤害且本技能于此回合内失效。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sp.js b/character/sp.js index 491ced2a9..253b509f3 100755 --- a/character/sp.js +++ b/character/sp.js @@ -129,7 +129,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuejin:['male','wei',4,['xiaoguo']], chendong:['male','wu',4,['duanxie','fenming']], sp_dongzhuo:['male','qun',5,['hengzheng']], - jiangfei:['male','shu',3,['shengxi','shoucheng']], + jiangfei:['male','shu',3,['reshengxi','shoucheng']], jiangqing:['male','wu',4,['shangyi','zniaoxiang']], hetaihou:['female','qun',3,['zhendu','qiluan']], kongrong:['male','qun',3,['lirang','mingshi']], @@ -13152,12 +13152,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, huxiao:{ trigger:{source:'damageSource'}, - //silent:true, forced:true, filter:function(event,player){ if(event._notrigger.contains(event.player)) return false; return event.nature=='fire'; }, + logTarget:'player', content:function(){ if(!player.storage.huxiao3){ player.storage.huxiao3=[]; @@ -13166,17 +13166,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.player.draw(); player.addTempSkill('huxiao3'); }, - //group:['huxiao_clear'], - subSkill:{ - clear:{ - trigger:{source:'damageSource'}, - priority:-7, - silent:true, - content:function(){ - delete player.storage.huxiao; - } - } - } }, huxiao3:{ onremove:true, diff --git a/character/sp2.js b/character/sp2.js index 6f0ce2c64..3bea97762 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -3983,6 +3983,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ usable:1, logTarget:'target', filter:function(event,player){ + if(event.card.name!='sha') return false; + if(event.parent.gongjian_targets&&event.parent.gongjian_targets.filter(function(target){ + return event.targets.contains(target); + }).length>0) return event.target.countDiscardableCards(player,'he')>0; var evt=event.getParent(); var history=player.getAllHistory('useCard',function(evtx){ return evtx.card.name=='sha' @@ -4006,6 +4010,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(cards.length) player.gain(cards,'gain2','log'); } }, + group:'gongjian_count', + subSkill:{ + count:{ + trigger:{global:'useCard1'}, + silent:true, + firstDo:true, + filter:function(event,player){ + return event.card&&event.card.name=='sha'; + }, + content:function(){ + if(player.storage.gongjian) trigger.gongjian_targets=player.storage.gongjian; + player.storage.gongjian=trigger.targets; + }, + }, + }, }, kuimang:{ audio:2, @@ -9789,7 +9808,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhanwan_info:'锁定技,有“流”的角色于弃牌阶段弃牌后,你摸等量的牌,然后其移去所有的“流”。', zhujun:'朱儁', gongjian:'攻坚', - gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。', + gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】或场上使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。', kuimang:'溃蟒', kuimang_info:'锁定技,一名角色死亡后,若你对其造成过伤害,你摸两张牌。', liuhong:'刘宏', diff --git a/character/yxs.js b/character/yxs.js index 1c5faeabb..aeb79ae9f 100644 --- a/character/yxs.js +++ b/character/yxs.js @@ -3128,8 +3128,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yxswushuang_info:'出牌阶段,你使用【杀】时可同时打出两张【杀】,则该【杀】具有以下效果之一:1,伤害+1;2,额外指定两个目标', xiaoyong:'骁勇', xiaoyong_info:'你可以将黑色手牌当作【杀】来使用', - qinzheng:'亲征', - qinzheng_info:'出牌阶段,你对其他角色造成伤害时,可以令场上任意角色摸一张牌。', + yxsqinzheng:'亲征', + yxsqinzheng_info:'出牌阶段,你对其他角色造成伤害时,可以令场上任意角色摸一张牌。', juma:'拒马', juma_info:'你与其他角色的距离始终视为1。', }, diff --git a/game/asset.js b/game/asset.js index dfeed8355..1c5248437 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.109.3.5', + 'v1.9.109.3.7', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -696,6 +696,11 @@ window.noname_asset_list=[ 'audio/die/re_zhangchunhua.mp3', 'audio/die/xin_handang.mp3', 'audio/die/zhaozhong.mp3', + 'audio/die/feiyi.mp3', + 'audio/die/luotong.mp3', + 'audio/die/sp_bianfuren.mp3', + 'audio/die/sp_duyu.mp3', + 'audio/die/zongyu.mp3', 'audio/skill/decadezishou1.mp3', 'audio/skill/decadezishou2.mp3', @@ -3062,6 +3067,26 @@ window.noname_asset_list=[ 'audio/skill/yixiang_re_taoqian2.mp3', 'audio/skill/zhaohuo_re_taoqian1.mp3', 'audio/skill/zhaohuo_re_taoqian2.mp3', + 'audio/skill/chengshang1.mp3', + 'audio/skill/chengshang2.mp3', + 'audio/skill/fyjianyu1.mp3', + 'audio/skill/fyjianyu2.mp3', + 'audio/skill/qinzheng1.mp3', + 'audio/skill/qinzheng2.mp3', + 'audio/skill/shengxi_feiyi1.mp3', + 'audio/skill/shengxi_feiyi2.mp3', + 'audio/skill/spmiewu1.mp3', + 'audio/skill/spmiewu2.mp3', + 'audio/skill/spsanchen1.mp3', + 'audio/skill/spsanchen2.mp3', + 'audio/skill/spwanwei1.mp3', + 'audio/skill/spwanwei2.mp3', + 'audio/skill/spwuku1.mp3', + 'audio/skill/spwuku2.mp3', + 'audio/skill/spyuejian1.mp3', + 'audio/skill/spyuejian2.mp3', + 'audio/skill/zyqiao1.mp3', + 'audio/skill/zyqiao2.mp3', 'audio/voice/male/0.mp3', 'audio/voice/male/1.mp3', @@ -3859,6 +3884,10 @@ window.noname_asset_list=[ 'image/character/xin_handang.jpg', 'image/character/zongyu.jpg', 'image/character/key_ushio.jpg', + 'image/character/feiyi.jpg', + 'image/character/luotong.jpg', + 'image/character/sp_bianfuren.jpg', + 'image/character/sp_duyu.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/update.js b/game/update.js index e4a008a3f..1e656b4e0 100644 --- a/game/update.js +++ b/game/update.js @@ -1,19 +1,19 @@ window.noname_update={ - version:'1.9.109.3.6', - update:'1.9.109.3.5', + version:'1.9.109.3.7', + update:'1.9.109.3.6', changeLog:[ - '野心家钟会', + 'SP卞夫人、费祎、骆统、群杜预', 'bug修复', ], files:[ //'card/extra.js', //'card/gujian.js', - 'card/guozhan.js', + //'card/guozhan.js', //'card/gwent.js', //'card/huanlekapai.js', //'card/mtg.js', //'card/sp.js', - //'card/standard.js', + 'card/standard.js', //'card/swd.js', //'card/yunchou.js', //'card/yingbian.js', @@ -25,22 +25,22 @@ window.noname_update={ //'character/gujian.js', //'character/gwent.js', //'character/hearth.js', - //'character/mobile.js', + 'character/mobile.js', //'character/mtg.js', //'character/old.js', //'character/ow.js', - //'character/rank.js', + 'character/rank.js', 'character/refresh.js', //'character/shenhua.js', - //'character/sp.js', - //'character/sp2.js', + 'character/sp.js', + 'character/sp2.js', //'character/tw.js', //'character/standard.js', //'character/swd.js', //'character/xianjian.js', //'character/xinghuoliaoyuan.js', //'character/yijiang.js', - //'character/yxs.js', + 'character/yxs.js', //'extension/boss/extension.js', //'layout/default/layout.css', //'layout/default/menu.css', @@ -55,7 +55,7 @@ window.noname_update={ //'mode/stone.js', //'mode/tafang.js', //'mode/versus.js', - 'game/game.js', + //'game/game.js', //'game/keyWords.js', //'game/NoSleep.js', //'game/config.js', diff --git a/image/character/feiyi.jpg b/image/character/feiyi.jpg new file mode 100644 index 000000000..afddb89d0 Binary files /dev/null and b/image/character/feiyi.jpg differ diff --git a/image/character/luotong.jpg b/image/character/luotong.jpg new file mode 100644 index 000000000..564bcdecb Binary files /dev/null and b/image/character/luotong.jpg differ diff --git a/image/character/sp_bianfuren.jpg b/image/character/sp_bianfuren.jpg new file mode 100644 index 000000000..6e7bde9c5 Binary files /dev/null and b/image/character/sp_bianfuren.jpg differ diff --git a/image/character/sp_duyu.jpg b/image/character/sp_duyu.jpg new file mode 100644 index 000000000..5dac75414 Binary files /dev/null and b/image/character/sp_duyu.jpg differ diff --git a/mode/guozhan.js b/mode/guozhan.js index ae44297c2..7e146b2b9 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -295,7 +295,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ 'gz_weiyan','gz_huangyueying','gz_zhugeliang', 'gz_lingtong','gz_sunshangxiang','gz_sunce', 'gz_re_yuanshao','gz_yuanshu','gz_hetaihou', - 'gz_jin_simashi','gz_tangzi', + 'gz_jin_simashi','gz_tangzi','gz_sp_duyu', ], '6':[ 'gz_zhenji','gz_guojia','gz_yujin', @@ -353,7 +353,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie'], guozhan_yexinjia:['gz_zhonghui'], guozhan_zongheng:['gz_huaxin','gz_luyusheng','gz_zongyu'], - guozhan_others:["gz_lingcao","gz_lifeng","gz_beimihu","gz_jianggan","gz_key_ushio"], + guozhan_others:["gz_lingcao","gz_lifeng","gz_beimihu","gz_jianggan","gz_key_ushio","gz_sp_duyu"], } }, characterPack:{ @@ -368,6 +368,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_shibing2qun:['female','qun',0,[],['unseen']], gz_shibing1jin:['male','qun',0,[],['unseen']], gz_shibing2jin:['female','qun',0,[],['unseen']], + gz_shibing1ye:['male','qun',0,[],['unseen']], + gz_shibing2ye:['female','qun',0,[],['unseen']], gz_zhonghui:['male','ye',4,['gzquanji','gzpaiyi']], gz_tangzi:['male','wei',4,['gzxingzhao'],['doublegroup:wei:wu']], @@ -445,7 +447,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_dengai:['male','wei',4,['tuntian','ziliang','gzjixi'],['gzskin','die_audio']], gz_caohong:['male','wei',4,['huyuan','heyi'],['gzskin']], - gz_jiangfei:['male','shu',3,['shengxi','gzshoucheng']], + gz_jiangfei:['male','shu',3,['reshengxi','gzshoucheng']], gz_jiangwei:['male','shu',4,['tiaoxin','yizhi','tianfu'],['gzskin']], gz_xusheng:['male','wu',4,['yicheng'],['gzskin']], gz_jiangqing:['male','wu',4,['gzshangyi','niaoxiang']], @@ -477,6 +479,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_lifeng:['male','shu',3,['tunchu','shuliang']], gz_beimihu:["female","qun",3,["hmkguishu","hmkyuanyu"]], gz_jianggan:["male","wei",3,["weicheng","daoshu"]], + gz_sp_duyu:['male','qun',4,['spwuku','spmiewu']], gz_huaxin:['male','wei',3,['wanggui','xibing']], gz_luyusheng:['female','wu',3,['zhente','zhiwei']], gz_zongyu:['male','shu',3,['zyqiao','chengshang']], @@ -8274,6 +8277,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ junling6_bg:'令', junling6_info:'若被执行,执行者选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌。', + gz_sp_duyu:'杜预', gzpozhen:'破阵', gzpozhen_info:'限定技,其他角色的回合开始时,你可以令其本回合不可使用、打出或重铸手牌;若其处于队列或围攻关系中,你可依次弃置此队列或参与围攻关系的其他角色的一张牌。', gzjiancai:'荐才', @@ -8572,6 +8576,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_shibing2qun:'群兵', gz_shibing1jin:'晋兵', gz_shibing2jin:'晋兵', + gz_shibing1ye:'士兵', + gz_shibing2ye:'士兵', gzduanchang:'断肠', gzduanchang_info:'锁定技,当你死亡时,你令杀死你的角色失去一张武将牌上的所有技能。', gzweimu:'帷幕',