diff --git a/card/extra.js b/card/extra.js index 862f7fd49..ad99bf458 100644 --- a/card/extra.js +++ b/card/extra.js @@ -653,6 +653,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return true; }, check:function(button){ + if(_status.event.getParent().type!='phase') return 1; if(button.link.name=='du') return 10; var player=_status.event.player; if(player.getUseValue(button.link)>0) return get.order(button.link); @@ -660,7 +661,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, backup:function(links,player){ return { - prompt:'选择'+get.translation(links)+'的目标', filterCard:function(){return false}, selectCard:-1, viewAs:links[0], @@ -674,6 +674,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } } }, + prompt:function(links){ + return '选择'+get.translation(links)+'的目标'; + }, }, ai:{ order:function(item,player){ diff --git a/card/standard.js b/card/standard.js index d8ef3fc67..a018678d3 100644 --- a/card/standard.js +++ b/card/standard.js @@ -2021,7 +2021,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(typeof aiii=='number') return aiii; } if(Math.abs(get.attitude(_status.event.player,source))<3) return 0; - if(source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0; + if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0; if(name!='lebu'&&name!='bingliang'){ if(source!=_status.event.player){ return 0; diff --git a/card/yunchou.js b/card/yunchou.js index fef5e2d3d..7d1e50faa 100644 --- a/card/yunchou.js +++ b/card/yunchou.js @@ -859,7 +859,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ trigger:{target:'shaBefore'}, direct:true, filter:function(event,player){ - return !event.getParent().directHit.contains(player)&&player.hasCard('youdishenru'); + return !event.getParent().directHit.contains(player)&&player.hasUsableCard('youdishenru'); }, content:function(){ event.youdiinfo={ @@ -880,7 +880,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(!event.player.countCards('he')) return false; if(!lib.filter.targetEnabled({name:'chenhuodajie'},player,event.player)) return false; if(event._notrigger.contains(event.player)) return false; - return player.hasCard('chenhuodajie'); + return player.hasUsableCard('chenhuodajie'); }, content:function(){ player.chooseToUse(get.prompt('chenhuodajie',trigger.player).replace(/发动/,'使用'),function(card,player){ diff --git a/character/diy.js b/character/diy.js index b450cd490..3afdcd5bf 100755 --- a/character/diy.js +++ b/character/diy.js @@ -57,6 +57,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']], key_kamome:['female','key',3,['kamome_yangfan','kamome_huanmeng','kamome_jieban']], key_nao:['female','key',3,['nao_duyin','nao_wanxin','nao_shouqing']], + + ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']], + ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']], + ns_yuanxi:['male','qun',4,['nsshengyan','nsdaizhan']], + ns_caoshuang:['male','wei',4,['nsjiquan','nsfuwei']], // diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']], // diy_hanlong:['male','wei',4,['siji','ciqiu']], diy_feishi:['male','shu',3,['shuaiyan','moshou']], @@ -137,7 +142,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterSort:{ diy:{ - diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao"], + diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao", + "ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"], diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"], diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"], diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","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"], @@ -201,6 +207,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_kamome:'#b仿生纱', key_nao:'#b潮鸣', + ns_huangchengyan:'#g竹邀月', + ns_sunchensunjun:'#gVenusjeu', + ns_yuanxi:'#g食茸二十四', + ns_caoshuang:'#g荬庀芬兰', + diy_wenyang:'#g最粗的梦想XD', ns_zuoci:'#bskystarwuwei', ns_lvzhi:'#bskystarwuwei', @@ -502,7 +513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name2:'诅咒', content:'mark', }, - marktext:'阻', + marktext:'诅', mod:{ maxHandcard:function(player,num){ return num+player.countMark('misuzu_hengzhou'); @@ -4820,6 +4831,434 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, + nslongyue:{ + trigger:{global:'useCard'}, + filter:function(event,player){ + return get.type(event.card,'trick')=='trick'&&event.player.getHistory('useCard').indexOf(event)==0; + }, + logTarget:'player', + check:function(event,player){ + return get.attitude(player,event.player)>0; + }, + content:function(){ + trigger.player.draw(); + }, + ai:{ + expose:0.2, + }, + global:'nslongyue_ai', + }, + nslongyue_ai:{ + mod:{ + aiOrder:function(player,card,num){ + if(!player.getHistory('useCard').length&&get.type(card)=='trick'&&game.hasPlayer(function(current){ + return current.hasSkill('nslongyue')&&get.attitude(player,current)>=0; + })) return num+6; + }, + }, + }, + nszhenyin:{ + trigger:{global:'judge'}, + usable:1, + filter:function(event,player){ + return _status.currentPhase&&_status.currentPhase.countCards('h')>0; + }, + logTarget:function(){ + return _status.currentPhase; + }, + check:function(event,player){ + var target=_status.currentPhase; + var judge=event.judge(event.player.judging[0]); + var max=0; + var hs=target.getCards('h',function(card){ + var mod2=game.checkMod(card,target,'unchanged','cardEnabled2',target); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,target,'unchanged','cardRespondable',target); + if(mod!='unchanged') return mod; + return true; + }); + for(var i of hs){ + var num=event.judge(i)-judge; + if(num>max) max=num; + } + var att=get.attitude(player,target); + if(att>0) return max>0; + if(att<0) return max<=0; + return false; + }, + content:function(){ + "step 0" + if(!_status.currentPhase.countCards('h',function(card){ + var player=_status.currentPhase; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + })){ + event.finish(); + return; + }; + _status.currentPhase.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+',请打出一张手牌进行改判','h',true,function(card){ + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0) return 0; + if(attitude>0){ + return result/Math.max(0.1,get.value(card)); + } + else{ + return -result/Math.max(0.1,get.value(card)); + } + }).set('judging',trigger.player.judging[0]); + "step 1" + if(result.bool){ + _status.currentPhase.respond(result.cards,'highlight').nopopup=true; + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',result.cards[0]); + game.delay(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:1, + } + } + }, + nsxianhai:{ + trigger:{global:'damageSource'}, + filter:function(event,player){ + return event.source&&event.source!=player&&event.source.isAlive()&&event.source==_status.currentPhase&& + (event.source.getStat('damage')||0)>(player.getLastStat('damage')||0)&& + !player.hasSkill('nsxianhai_round'); + }, + check:function(event,player){ + return player.maxHp>1&&get.attitude(player,event.source)<-4; + }, + logTarget:'source', + content:function(){ + 'step 0' + player.addTempSkill('nsxianhai_round','roundStart'); + player.loseMaxHp(); + var list=[]; + for(var i=1;i<6;i++){ + if(!trigger.source.isDisabled(i)) list.add('equip'+((i==3||i==4)?6:i)); + } + if(list.length){ + player.chooseControl(list).set('prompt','选择废除'+get.translation(trigger.source)+'的一种装备栏').set('ai',function(){ + var target=_status.event.getTrigger().source; + if(list.contains('equip6')&&target.getEquip('equip3')&&target.getEquip('equip4')) return 'equip6'; + if(list.contains('equip2')&&target.getEquip(2)&&get.value(target.getEquip(2),target)>0) return 'equip2'; + if(list.contains('equip5')&&target.getEquip(5)&&get.value(target.getEquip(5),target)>0) return 'equip5'; + return 0; + }); + } + else event.goto(2); + 'step 1' + if(result.control!='equip6') trigger.source.disableEquip(result.control); + else{ + trigger.source.disableEquip(3); + trigger.source.disableEquip(4); + } + 'step 2' + if(player.awakenedSkills.contains('nsxingchu')){ + var next=game.createEvent('nsxianhai_clear'); + event.next.remove(next); + event.getParent('phase').after.push(next); + next.player=player; + next.setContent(function(){ + player.restoreSkill('nsxingchu'); + }); + } + 'step 3' + if(trigger.source){ + var hs=trigger.source.getCards('h','shan'); + if(hs.length) trigger.source.discard(hs); + } + }, + }, + nsxianhai_round:{}, + nsxingchu:{ + trigger:{global:'die'}, + forceDie:true, + filter:function(event,player){ + return player==event.player||player==event.source; + }, + limited:true, + skillAnimation:true, + animationColor:'wood', + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('nsxingchu')).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }).set('forceDie',true); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('nsxingchu',target); + player.awakenSkill('nsxingchu'); + var he=trigger.player.getCards('he'); + if(he.length) target.gain(he,trigger.player,'giveAuto'); + target.gainMaxHp(); + } + }, + }, + nsshengyan:{ + trigger:{player:'judgeEnd'}, + forced:true, + filter:function(event,player){ + return _status.currentPhase&&_status.currentPhase.isAlive()&&(!player.storage.nsshengyan2||!player.storage.nsshengyan2.contains(event.result.suit)); + }, + logTarget:function(){ + return _status.currentPhase; + }, + content:function(){ + player.addTempSkill('nsshengyan2'); + if(!player.storage.nsshengyan2) player.storage.nsshengyan2=[]; + _status.currentPhase.addTempSkill('nsshengyan3'); + player.storage.nsshengyan2.add(trigger.result.suit); + _status.currentPhase.addMark('nsshengyan3',2,false); + }, + }, + nsshengyan2:{onremove:true}, + nsshengyan3:{ + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('nsshengyan3'); + }, + }, + onremove:true, + intro:{ + content:'本回合手牌上限+#', + }, + marktext:'筵', + }, + nsdaizhan:{ + trigger:{player:'phaseZhunbeiBegin'}, + direct:true, + filter:function(event,player){ + return (!player.hasJudge('lebu')||!player.hasJudge('bingliang'))&&player.countCards('he',function(card){ + if(_status.connectMode) return true; + return get.type(card,'trick')!='trick'; + }); + }, + content:function(){ + var next=player.chooseToUse(); + next.set('norestore',true); + next.set('_backupevent','nsdaizhanx'); + next.backup('nsdaizhanx'); + }, + }, + nsdaizhanx:{ + chooseButton:{ + dialog:function(){ + var list=['lebu','bingliang']; + var list2=[]; + for(var i of list){ + list2.push(['延时锦囊','',i]); + } + return ui.create.dialog(get.prompt('nsdaizhan'),[list2,'vcard'],'hidden'); + }, + filter:function(button,player){ + return !player.hasJudge(button.link[2]) + }, + check:function(button){ + if(button.link[2]=='lebu') return 0; + var player=_status.event.player; + var delta=player.getHandcardLimit()+player.countCards('j')*2+2-player.hp; + if(delta>=2) return 1+Math.random(); + if(delta>=0&&!player.countCards('h',function(card){ + return player.hasValueTarget(card); + })) return Math.random(); + return 0; + }, + backup:function(links,player){ + return { + filterCard:function(card,player){ + return get.type(card,'trick')!='trick'&&player.canAddJudge({name:links[0][2],cards:[card]}); + }, + filterTarget:function(card,player,target){ + return player==target; + }, + check:function(card){ + return 8-get.value(card); + }, + viewAs:{name:links[0][2]}, + position:'he', + precontent:function(){ + player.addTempSkill('nsdaizhany'); + event.result.skill='nsdaizhan'; + }, + ai:{ + result:{ + target:1, + }, + }, + }; + }, + prompt:function(links){ + return '将一张牌当做'+get.translation(links[0][2])+'对自己使用'; + }, + }, + }, + nsdaizhany:{ + trigger:{player:'phaseEnd'}, + forced:true, + popup:false, + filter:function(event,player){ + return player.countCards('h')0; + }, + content:function(){ + 'step 0' + var target=(event.triggername=='damageSource'?trigger.source:trigger.player); + event.target=target; + player.choosePlayerCard(target,'hej',player.storage.nsfuwei?true:1).set('ai',function(button){ + var val=get.buttonValue(button); + if(get.attitude(_status.event.player,get.owner(button.link))>0) return -val; + return val; + }); + 'step 1' + if(result.bool){ + player.logSkill('nsjiquan',target); + target.lose(result.cards,ui.special,'toStorage'); + player.markAuto('nsjiquan_mark',result.cards); + target.$give(result.cards,player,false); + } + else event.finish(); + 'step 2' + game.delayx(); + }, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.getStorage('nsjiquan_mark').length; + }, + }, + }, + nsjiquan_mark:{ + intro:{ + content:'cards', + onunmark:'throw', + }, + marktext:'威', + }, + nsfuwei:{ + trigger:{player:'phaseJieshuBegin'}, + forced:true, + unique:true, + juexingji:true, + skillAnimation:true, + filter:function(event,player){ + return player.getStorage('nsjiquan_mark').length>4; + }, + content:function(){ + player.awakenSkill('nsfuwei'); + player.storage.nsfuwei=true; + player.addSkill('nsdiemou'); + player.addSkill('nszhihuang'); + player.gainMaxHp(2); + }, + derivation:['nsdiemou','nszhihuang'], + }, + nsdiemou:{ + trigger:{player:'phaseUseBegin'}, + forced:true, + filter:function(event,player){ + return player.getStorage('nsjiquan_mark').length>game.players.length; + }, + content:function(){ + var num=player.getStorage('nsjiquan_mark').length; + player.draw(num); + player.loseMaxHp(); + player.unmarkSkill('nsjiquan_mark'); + if(num>4) player.turnOver(); + }, + }, + nszhihuang:{ + group:'nszhihuang_damage', + trigger:{global:'useCard'}, + usable:1, + filter:function(event,player){ + return event.player==get.zhu(player)&&player.getStorage('nsjiquan_mark').length>0&&event.cards&&event.cards.filterInD().length>0; + }, + prompt2:function(event){ + return '移去一张“威”并获得'+get.translation(event.cards.filterInD()); + }, + check:function(event,player){ + if(['equip','delay'].contains(get.type(event.card))) return get.attitude(player,event.player)<0; + return get.value(event.cards.filterInD()>0); + }, + logTarget:'player', + content:function(){ + 'step 0' + var cards=player.getStorage('nsjiquan_mark'); + if(cards.length==1) event._result={ + bool:true, + links:cards.slice(0), + } + else player.chooseButton(['选择移去一张“威”',cards],true); + 'step 1' + player.unmarkAuto('nsjiquan_mark',result.links); + game.cardsDiscard(result.links); + player.gain(trigger.cards.filterInD(),'gain2','log'); + }, + }, + nszhihuang_damage:{ + trigger:{source:'damageBegin1'}, + forced:true, + filter:function(event,player){ + var zhu=get.zhu(player); + return zhu&&player.countCards('h')>zhu.countCards('h')&&event.getParent().type=='card'; + }, + content:function(){ + trigger.num++; + }, + }, + yjxuepin:{ enable:'phaseUse', usable:1, @@ -9864,6 +10303,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nao_shouqing3:'守情', nao_shouqing_info:'其他角色的出牌阶段内可以对你使用【桃】。若如此做,其摸一张牌且本局游戏内的手牌上限+1。', + ns_huangchengyan:'黄承彦', + nslongyue:'龙岳', + nslongyue_info:'当一名角色使用锦囊牌时,若此牌是其本回合内使用的第一张牌,则你可令其摸一张牌。', + nszhenyin:'阵引', + nszhenyin_info:'每回合限一次。一名角色的判定牌生效前,你可令当前回合角色打出一张手牌代替之。', + ns_sunchensunjun:'孙綝孙峻', + nsxianhai:'险害', + nsxianhai_info:'每轮限一次,当一名其他角色于回合内造成伤害后,若其此回合内造成过的伤害总和大于你上一回合内造成的伤害总和,则你可以减1点体力上限,令其废除一种装备栏并弃置手牌中所有的【闪】。若〖兴黜〗已发动,此回合结束后视为该限定技未发动过。', + nsxingchu:'兴黜', + nsxingchu_info:'限定技,当你杀死一名角色/你死亡时,你可以令一名角色获得其/你的所有牌并增加1点体力上限。', + ns_yuanxi:'袁熙', + nsshengyan:'盛筵', + nsshengyan3:'盛筵', + nsshengyan_info:'锁定技,你的判定牌生效后,若结果花色与你本回合内其他判定结果的花色均不同,则你令当前回合角色本回合的手牌上限+2。', + nsdaizhan:'怠战', + nsdaizhany:'怠战', + nsdaizhan_info:'准备阶段,你可以将一张非锦囊牌当做【兵粮寸断】或【乐不思蜀】对自己使用。若如此做,回合结束时,你将手牌摸至手牌上限。', + ns_caoshuang:'曹爽', + nsjiquan:'集权', + nsjiquan_mark:'集权', + nsjiquan_info:'与你距离1以内的其他角色造成或受到伤害后,你可以将其区域内的一张牌置于你的武将牌上(称为“威”)。你使用【杀】的次数上限+X(X为“威”数)。', + nsfuwei:'附位', + nsfuwei_info:'觉醒技,结束阶段开始时,若“威”数大于4,则你加2点体力上限,获得〖喋谋〗和〖制皇〗,并将〖集权〗改为锁定技。', + nsdiemou:'喋谋', + nsdiemou_info:'锁定技,出牌阶段开始时,若“威”大于全场角色数,你移去所有“威”,减一点体力上限并摸X张牌。若X大于4,你翻面。(X为移去的“威”数)', + nszhihuang:'制皇', + nszhihuang_damage:'制皇', + nszhihuang_info:'每回合限一次,当主公使用牌时,你可以移去一张“威”,然后获得此牌。锁定技,若你的手牌数大于主公,则你使用牌造成的伤害+1。', + yj_caoang:'SP曹昂', yjxuepin:'血拼', yjxuepin_info:'出牌阶段限一次,你可以选择攻击范围内的一名角色并失去1点体力。你弃置其两张牌。若这两张牌类型相同,你回复1点体力。', diff --git a/character/extra.js b/character/extra.js index efd4366a7..4d8881f70 100755 --- a/character/extra.js +++ b/character/extra.js @@ -2884,11 +2884,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' event.list1=[]; event.list2=[]; - if(target.countCards('h')>0){ - var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h'),'hidden']); + if(player.countCards('h')>0){ + var chooseButton=player.chooseButton(4,['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h')]); } else{ - var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),'hidden']); + var chooseButton=player.chooseButton(4,[get.translation(target.name)+'的手牌',target.getCards('h')]); } chooseButton.set('target',target); chooseButton.set('ai',function(button){ diff --git a/character/mobile.js b/character/mobile.js index 122ed518e..5c265f816 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -13,8 +13,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ - yj_zhanghe:['male','qun',4,['zhilve']], - yj_xuhuang:['male','qun',4,['xhzhiyan']], + yj_zhangliao:['male','qun',4,['weifeng']], + yj_zhanghe:['male','qun',4,['xinzhilve']], + yj_xuhuang:['male','qun',4,['xinxhzhiyan']], + yj_ganning:['male','qun',4,['gnjinfan','gnsheque']], re_sunjian:['male','wu',4,['gzyinghun','repolu']], zhengxuan:['male','qun',3,['zhengjing']], dengzhi:['male','shu',3,['jimeng','shuaiyan']], @@ -1664,7 +1666,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, zhongzuo:{ audio:2, - trigger:{global:'phaseJieshuBegin'}, + trigger:{global:'phaseEnd'}, direct:true, filter:function(event,player){ return player.getHistory('damage').length>0||player.getHistory('sourceDamage').length>0; @@ -4458,6 +4460,617 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, + xinzhilve:{ + enable:'phaseUse', + usable:1, + chooseButton:{ + dialog:function(event,player){ + var list=[ + '移动场上的一张牌', + '摸一张牌并视为使用一张【杀】', + ]; + var choiceList=ui.create.dialog('知略:失去1点体力并...','forcebutton','hidden'); + for(var i=0;i2&&player.hasValueTarget({name:'sha'})) return 1; + return 0; + }, + }, + }, + }, + xinzhilve_move:{ + filterCard:function(){return false}, + selectCard:-1, + delay:false, + content:function(){ + 'step 0' + event.forceDie=true; + if(!player.canMoveCard(null,event.nojudge)){ + event.finish(); + return; + } + var next=player.chooseTarget(2,function(card,player,target){ + if(ui.selected.targets.length){ + var from=ui.selected.targets[0]; + var js=from.getCards('j'); + for(var i=0;i0; + } + }); + next.set('nojudge',event.nojudge||false); + next.set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + var sgnatt=get.sgn(att); + if(ui.selected.targets.length==0){ + if(att>0){ + if(!_status.event.nojudge&&target.countCards('j',function(card){ + return game.hasPlayer(function(current){ + return current.canAddJudge(card)&&get.attitude(player,current)<0; + }) + })) return 14; + if(target.countCards('e',function(card){ + return get.value(card,target)<0&&game.hasPlayer(function(current){ + return current!=target&&get.attitude(player,current)<0&¤t.isEmpty(get.subtype(card)) + }); + })>0) return 9; + } + else if(att<0){ + if(game.hasPlayer(function(current){ + if(current!=target&&get.attitude(player,current)>0){ + var es=target.getCards('e'); + for(var i=0;i0&¤t.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true; + } + } + })){ + return -att; + } + } + return 0; + } + var es=ui.selected.targets[0].getCards('e'); + var i; + var att2=get.sgn(get.attitude(player,ui.selected.targets[0])); + for(i=0;i0&&get.attitude(player,targets1)<0){ + if(get.position(button.link)=='j') return 12; + if(get.value(button.link,targets0)<0) return 10; + return 0; + } + else{ + if(get.position(button.link)=='j') return -10; + return get.equipValue(button.link); + } + },targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){ + var targets1=_status.event.targets1; + if(get.position(button.link)=='j'){ + if(_status.event.nojudge) return false; + return targets1.canAddJudge(button.link); + } + else{ + return targets1.isEmpty(get.subtype(button.link)); + } + }); + } + else{ + event.finish(); + } + 'step 4' + if(result.bool&&result.links.length){ + player.loseHp(); + } + 'step 5' + if(result.bool&&result.links.length){ + var link=result.links[0]; + if(get.position(link)=='e'){ + event.targets[1].equip(link); + } + else if(link.viewAs){ + event.targets[1].addJudge({name:link.viewAs},[link]); + } + else{ + event.targets[1].addJudge(link); + } + event.targets[0].$give(link,event.targets[1]) + event.result.card=link; + event.result.position=get.position(link); + game.delay(); + player.addTempSkill('xinzhilve_mark'); + player.addMark('xinzhilve_mark',1,false); + } + }, + }, + xinzhilve_use:{ + filterCard:function(){return false}, + selectCard:-1, + filterTarget:function(card,player,target){ + return player.canUse({name:'sha',isCard:true},target,false); + }, + content:function(){ + player.loseHp(); + player.draw(); + player.useCard({name:'sha',isCard:true},false,target).forceDie=true; + player.addTempSkill('xinzhilve_mark'); + player.addMark('xinzhilve_mark',1,false); + }, + ai:{ + result:{ + target:function(player,target){ + return get.effect(target,{name:'sha'},player,target); + }, + }, + }, + }, + xinzhilve_mark:{ + intro:{content:'本回合手牌上限+#'}, + onunmark:true, + charlotte:true, + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('xinzhilve_mark'); + }, + }, + }, + xinxhzhiyan:{ + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('h')!=player.maxHp&&!player.hasSkill('xinxhzhiyan_'+(player.countCards('h')>player.maxHp)); + }, + filterCard:true, + selectCard:function(){ + var player=_status.event.player; + var num=Math.max(0,player.countCards('h')-player.maxHp); + return [num,num]; + }, + filterTarget:lib.filter.notMe, + selectTarget:function(){ + if(ui.selected.cards.length) return [1,1]; + return [0,0]; + }, + check:function(card){ + var player=_status.event.player; + if(player.getUseValue(card)<=0&&game.hasPlayer(function(current){ + return current!=player&&get.value(card,current)*get.attitude(player,current)>0; + })) return 1; + return 0; + }, + delay:false, + discard:false, + lose:false, + content:function(){ + var bool=(player.countCards('h')>player.maxHp); + player.addTempSkill('xinxhzhiyan_'+bool,'phaseUseEnd'); + if(!bool){ + player.draw(player.maxHp-player.countCards('h')); + } + else{ + target.gain(cards,player,'giveAuto'); + } + }, + ai:{ + order:function(obj,player){ + if(player.countCards('h')>player.maxHp) return 10; + return 0.5; + }, + result:{ + player:1, + }, + }, + }, + xinxhzhiyan_true:{}, + xinxhzhiyan_false:{ + mod:{ + playerEnabled:function(card,player,target){ + if(player!=target&&(!get.info(card)||!get.info(card).singleCard||!ui.selected.targets.length)) return false; + }, + }, + mark:true, + intro:{ + content:'不能对其他角色使用牌', + }, + }, + weifeng:{ + audio:2, + trigger:{player:'useCardAfter'}, + forced:true, + filter:function(event,player){ + if(!event.targets||!event.targets.filter(function(target){ + return target!=player&&!target.storage.weifeng2; + }).length) return false; + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=player) return false; + if(!get.tag(event.card,'damage')) return false; + if(!['basic','trick'].contains(get.type(event.card))) return false; + return player.getHistory('useCard',function(ev){ + return ev.getParent('phaseUse')==evt&&get.tag(ev.card,'damage')&&['basic','trick'].contains(get.type(ev.card)); + }).indexOf(event)==0; + }, + content:function(){ + 'step 0' + player.chooseTarget(true,'威风:请选择一个目标,令其获得一个【惧('+get.translation(trigger.card.name)+')】标记',function(card,player,target){ + return player!=target&&!target.storage.weifeng2&&_status.event.getTrigger().targets.contains(target); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + target.storage.weifeng2=trigger.card.name; + player.line(target,'green'); + game.log(target,'获得了一个','#g【惧('+get.translation(trigger.card.name)+')】','标记') + target.markSkill('weifeng2'); + player.addSkill('weifeng3'); + } + }, + }, + weifeng2:{ + intro:{ + content:'当前“惧”标记名称:$', + onunmark:function(storage,player){ + game.log(player,'移去了一个','#g【惧('+get.translation(storage)+')】','标记') + delete player.storage.weifeng2; + }, + }, + marktext:'惧', + }, + weifeng3:{ + trigger:{ + global:'damageBegin3', + player:['phaseZhunbeiBegin','dieBegin'], + }, + forced:true, + popup:false, + filter:function(event,player){ + if(event.name!='damage') return true; + return event.player!=player&&typeof event.player.storage.weifeng2=='string'; + }, + content:function(){ + if(trigger.name=='damage'){ + player.logSkill('weifeng',trigger.player); + if(trigger.card&&trigger.card.name==trigger.player.storage.weifeng2) trigger.num++; + else if(trigger.player.countGainableCards(player,'he')>0) player.gainPlayerCard(trigger.player,'he',true); + trigger.player.unmarkSkill('weifeng2'); + } + else{ + game.countPlayer(function(current){ + if(current.storage.weifeng2) current.unmarkSkill('weifeng2'); + }); + player.removeSkill('weifeng3'); + } + }, + }, + gnjinfan:{ + trigger:{player:'phaseDiscardBegin'}, + direct:true, + filter:function(event,player){ + var list=[]; + player.getStorage('gnjinfan').filter(function(card){ + list.add(get.suit(card)); + }); + if(list.length>=lib.suit.length) return false; + return player.countCards('h',function(card){ + return _status.connectMode||!list.contains(get.suit(card)); + })>0; + }, + content:function(){ + 'step 0' + player.chooseCard('h',get.prompt('gnjinfan'),'将任意张手牌当做“铃”置于武将牌上',[1,function(){ + var list=[]; + var list2=[]; + player.getStorage('gnjinfan').filter(function(card){ + list.add(get.suit(card)); + }); + player.getCards('h',function(card){ + list2.add(get.suit(card)); + }); + list2.removeArray(list); + return list2.length; + }()],function(card,player){ + var list=player.getStorage('gnjinfan').concat(ui.selected.cards); + return list.filter(function(cardx){ + return get.suit(card)==get.suit(cardx); + }).length==0; + }).set('ai',function(card){ + var player=_status.event.player; + if(player.hasUseTarget(card)&&!player.hasValueTarget(card)) return 0; + return 1+Math.random(); + }).set('complexCard',true); + 'step 1' + if(result.bool){ + player.logSkill('gnjinfan'); + player.markAuto('gnjinfan',result.cards); + player.lose(result.cards,'toStorage',ui.special,'visible'); + game.log(player,'将',result.cards,'放到了武将牌上'); + } + }, + group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7'], + marktext:'铃', + intro:{ + content:'cards', + }, + }, + gnjinfan3:{ + trigger:{player:'chooseToRespondBegin'}, + filter:function(event,player){ + if(event.responded) return false; + var gnjinfan=player.getStorage('gnjinfan'); + if(!gnjinfan) return false; + for(var i=0;i0) return get.order(button.link); + return -1; + }, + backup:function(links,player){ + return { + filterCard:function(){return false}, + selectCard:-1, + viewAs:links[0], + onuse:function(result,player){ + var gnjinfan=player.getStorage('gnjinfan'); + if(gnjinfan){ + player.unmarkAuto('gnjinfan',[result.card]); + } + } + } + }, + prompt:function(links){ + return '选择'+get.translation(links)+'的目标'; + }, + }, + ai:{ + order:function(item,player){ + var event=_status.event; + if(event.type!='phase') return 4; + if(!player) return -1; + var gnjinfan=player.getStorage('gnjinfan'); + if(!gnjinfan) return -1; + var order=0; + for(var i=0;i0){ + var order2=get.order(gnjinfan[i]); + if(order2>order) order=order2 + } + } + return order+0.1; + }, + result:{ + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying); + return 1; + } + }, + useful:-1, + value:-1 + } + }, + gnjinfan6:{ + trigger:{global:'cardsGotoOrderingAfter'}, + forced:true, + popup:false, + filter:function(event,player){ + var evt=event.getParent(); + return evt&&evt.player==player&&evt.skill&&evt.skill.indexOf('gnjinfan')==0; + }, + content:function(){ + var suit=get.suit(trigger.cards[0]); + var card=get.cardPile2(function(cardx){ + return get.suit(cardx)==suit; + }); + if(card) player.gain(card,'gain2','log'); + }, + }, + gnjinfan7:{ + filter:function(){return false}, + hiddenCard:function(player,name){ + var gnjinfan=player.getStorage('gnjinfan'); + if(!gnjinfan) return false; + for(var i=0;i0); + }, + content:function(){ + player.chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'射却:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','gnsheque').set('complexSelect',true).set('filterTarget',function(card,player,target){ + if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; + return lib.filter.targetEnabled.apply(this,arguments); + }).set('sourcex',trigger.player).set('oncard',function(card){ + card.gnsheque_tag=true; + }); + }, + ai:{ + unequip:true, + unequip_ai:true, + skillTagFilter:function(player,tag,arg){ + if(tag=='unequip_ai'){ + if(_status.event.getParent().name!='gnsheque') return false; + } + else if(!arg||!arg.card||!arg.card.gnsheque_tag) return false; + }, + }, + }, }, translate:{ "re_sp_zhugeliang":"手杀卧龙", @@ -4583,7 +5196,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhiyi:'执义', zhiyi_info:'锁定技,当你于一回合内使用或打出第一张基本牌时,你选择一项:1.摸一张牌。2.于此牌A(若此牌是因响应牌B而使用或打出的,则改为牌B)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。', zhongzuo:'忠佐', - zhongzuo_info:'一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。', + zhongzuo_info:'一名角色的回合结束时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。', wanlan:'挽澜', wanlan_info:'限定技,当一名角色进入濒死状态时,你可以弃置所有手牌并令其回复体力至1点,然后对当前回合角色造成1点伤害。', re_jikang:"手杀嵇康", @@ -4728,14 +5341,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhengjing2:'整经', mobile_yijiang:'武将设计征集大赛', - yj_zhanghe:'SP张郃', - yj_zhangliao:'SP张辽', - yj_xuhuang:'SP徐晃', - yj_ganning:'SP甘宁', + yj_zhanghe:'☆张郃', + yj_zhangliao:'☆张辽', + yj_xuhuang:'☆徐晃', + yj_ganning:'☆甘宁', xhzhiyan:'治严', xhzhiyan_info:'出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。', zhilve:'知略', zhilve_info:'锁定技,准备阶段,你选择一项:1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。', + xinzhilve:'知略', + xinzhilve_backup:'知略', + xinzhilve_mark:'知略', + xinzhilve_info:'出牌阶段限一次,你可以失去1点体力并选择一项:1.移动场上的一张牌;2.视为使用一张无距离限制且不计入次数限制的【杀】并摸一张牌。然后你本回合的手牌上限+1。', + xinxhzhiyan:'治严', + xinxhzhiyan_false:'治严', + xinxhzhiyan_info:'出牌阶段每项各限一次,若你的手牌数:大于体力上限,则你可以将X张手牌交给一名其他角色;小于体力上限,则你可以摸X张牌且本阶段内不能再对其他角色使用牌。(X为你的手牌数与体力上限之差的绝对值)', + weifeng:'威风', + weifeng2:'威风', + weifeng3:'威风', + weifeng_info:'锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1;不同,你获得该角色的一张牌。准备阶段开始时或你死亡时,你移去场上的所有“惧”。', + gnjinfan:'锦帆', + gnjinfan3:'锦帆', + gnjinfan4:'锦帆', + gnjinfan6:'锦帆', + gnjinfan7:'锦帆', + gnjinfan4_backup:'锦帆', + gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。当有“铃”移动到处理区后,你从牌堆中获得与此次移动到第一张“铃”花色相同的一张牌。', + gnsheque:'射却', + gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。', } }; }); diff --git a/character/refresh.js b/character/refresh.js index 227ce01dd..fda5f9988 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -5832,10 +5832,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, filter:function(event,player){ return event.player.isAlive()&&event.player.getStat('damage')&& - lib.filter.targetEnabled({name:'sha'},player,event.player)&&player.hasSha(); + lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0); }, content:function(){ - player.chooseToUse({name:'sha'},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','zhuhai').set('complexSelect',true).set('filterTarget',function(card,player,target){ + player.chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','zhuhai').set('complexSelect',true).set('filterTarget',function(card,player,target){ if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; return lib.filter.targetEnabled.apply(this,arguments); }).set('sourcex',trigger.player); diff --git a/character/sp.js b/character/sp.js index 558b883e5..0729b5c14 100755 --- a/character/sp.js +++ b/character/sp.js @@ -533,6 +533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spshicai:{ audio:2, enable:'phaseUse', + position:'he', filter:function(event,player){ return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2); }, @@ -800,7 +801,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else event.finish(); 'step 2' if(player.countCards('h')&&game.hasPlayer(function(current){ - return current!=target&&player.inRange(target); + return current!=target&&player.inRange(current); })){ player.chooseCardTarget({ position:'h', @@ -8594,6 +8595,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhanyi:{ enable:'phaseUse', usable:1, + audio:2, filterCard:true, position:'he', check:function(card){ @@ -10427,6 +10429,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, zhenwei2:{ mark:true, + audio:false, intro:{ content:'cards', onunmark:function(storage,player){ @@ -13598,7 +13601,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else{ player.draw(2); - player.storage.liangzhu=player; + if(!player.storage.liangzhu) player.storage.liangzhu=[]; + player.storage.liangzhu.add(player); } } } @@ -17888,7 +17892,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, "zhenyi_club":{ - log:false, + audio:'xinfu_zhenyi', enable:"chooseToUse", filter:function (event,player){ if(!player.isDying()) return false; @@ -17917,6 +17921,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{ source:"damageBegin1", }, + audio:'xinfu_zhenyi', filter:function (event,player){ return player.hasMark('xinfu_falu_heart'); }, @@ -17933,17 +17938,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, logTarget:"player", content:function (){ - "step 0" - player.removeMark('xinfu_falu_heart') - player.judge(function(card){ - if(get.color(card)=='black') return 4; - return -1; - }); - "step 1" - if(result.bool==true){ - trigger.num++; - } - }, + "step 0" + player.removeMark('xinfu_falu_heart') + player.judge(function(card){ + if(get.color(card)=='black') return 4; + return -1; + }); + "step 1" + if(result.bool==true){ + trigger.num++; + } + }, }, "xinfu_zhennan":{ audio:2, diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 11163cff9..cb62fcb76 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -649,6 +649,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }); + next.set('complexSelect',true); 'step 1' if(result.bool){ player.logSkill('xinfu_fangtong'); diff --git a/character/yijiang.js b/character/yijiang.js index 9d51536ea..6bd0ce386 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -5745,6 +5745,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ onremove:true, }, zhongyong:{ + audio:2, trigger:{player:'shaMiss'}, direct:true, filter:function(event,player){ @@ -5863,6 +5864,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, longyin:{ + audio:2, shaRelated:true, trigger:{global:'useCard'}, direct:true, @@ -5876,6 +5878,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.color(trigger.card)=='red'){ go=true; } + else if(trigger.addCount===false) go=false; else if(!trigger.player.hasSkill('paoxiao')&& !trigger.player.hasSkill('tanlin3')&& !trigger.player.hasSkill('zhaxiang2')&& @@ -5917,7 +5920,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ next.set('go',go); 'step 1' if(result.bool){ - trigger.player.getStat().card.sha--; + if(trigger.addCount!==false){ + trigger.addCount=false; + trigger.player.getStat().card.sha--; + } if(get.color(trigger.card)=='red'){ player.draw(); } @@ -10301,7 +10307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'phaseDrawBegin2'}, check:function(event,player){ - return player.countCards('h')<=player.maxHp||player.skipList.contains('phaseUse'); + return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse'); }, filter:function(event,player){ return !event.numFixed; diff --git a/game/asset.js b/game/asset.js index f4fd4446c..00f6ac748 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.100.5', + 'v1.9.100.6', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -3166,6 +3166,12 @@ window.noname_asset_list=[ 'image/character/key_kud.jpg', 'image/character/key_misuzu.jpg', 'image/character/key_nao.jpg', + 'image/character/ns_caoshuang.jpg', + 'image/character/ns_huangchengyan.jpg', + 'image/character/ns_sunchensunjun.jpg', + 'image/character/ns_yuanxi.jpg', + 'image/character/yj_ganning.jpg', + 'image/character/yj_zhangliao.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index f30c63646..79e2b89e5 100644 --- a/game/game.js +++ b/game/game.js @@ -13437,7 +13437,7 @@ if(current!=target&&get.attitude(player,current)>0){ var es=target.getCards('e'); for(var i=0;i0&¤t.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true; + if(get.value(es[i],target)>0&¤t.isEmpty(get.subtype(es[i]))&&get.effect(current,es[i],player,current)>0) return true; } } })){ @@ -13452,7 +13452,7 @@ for(i=0;i0&&get.attitude(player,targets1)<0){ if(get.position(button.link)=='j') return 12; - if(get.value(button.link,targets0)<0) return 10; + if(get.value(button.link,targets0)<0&&get.effect(targets1,button.link,player,targets1)>0) return 10; return 0; } else{ if(get.position(button.link)=='j') return -10; - return get.equipValue(button.link); + return get.equipValue(button.link)*get.effect(targets1,button.link,player,targets1); } },targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){ var targets1=_status.event.targets1; @@ -18132,7 +18132,7 @@ if(withatt){ if(get.sgn(get.value(es[i],current))!=-att) return false; var att2=get.sgn(get.attitude(player,current2)); - if(att2!=get.sgn(get.value(es[i],current2))) return false; + if(att2!=get.sgn(get.effect(current2,es[i],player,current2))) return false; } return current!=current2&&!current2.isMin()&¤t2.isEmpty(get.subtype(es[i])); })){ @@ -32446,7 +32446,7 @@ var skills=arguments[arguments.length-1]; if(skills.getSkills){ if(name!='cardname') skills=skills.getSkills(); - else skills=skills.getSkills(true,false); + else skills=skills.getSkills(null,false); } skills=skills.concat(lib.skill.global); game.expandSkills(skills); @@ -40286,7 +40286,8 @@ } } else if(text2.value.indexOf('无天使')!=-1&&(text2.value.indexOf('无神佛')!=-1||text2.value.indexOf('无神')!=-1&&text2.value.indexOf('无佛')!=-1)){ - game.print('Welcome to Shinda Sekai Sensen!'); + game.print('密码正确!欢迎来到死后世界战线!'); + _status.keyVerified=true; text2.value=''; } else{ diff --git a/game/update.js b/game/update.js index 032f7d12f..3061b3721 100644 --- a/game/update.js +++ b/game/update.js @@ -1,56 +1,58 @@ window.noname_update={ - version:'1.9.100.5', - update:'1.9.100.4.2', + version:'1.9.100.6', + update:'1.9.100.5', changeLog:[ - '武将技能设计征集比赛2020(Key组)', + '武将技能设计征集比赛2020(三国组)', + '星张辽,星甘宁,星徐晃,星张郃', + '两军对垒(乱斗)', 'bug修复', ], files:[ - //'card/extra.js', + 'card/extra.js', //'card/huanlekapai.js', //'card/sp.js', - //'card/standard.js', + 'card/standard.js', //'card/swd.js', //'card/mtg.js', //'card/gujian.js', - 'card/guozhan.js', + //'card/guozhan.js', //'card/gwent.js', - //'card/yunchou.js', + 'card/yunchou.js', //'card/zhenfa.js', //'card/zhulu.js', 'character/diy.js', - //'character/extra.js', + 'character/extra.js', //'character/hearth.js', //'character/gujian.js', //'character/gwent.js', //'character/hearth.js', - //'character/mobile.js', + 'character/mobile.js', //'character/mtg.js', //'character/old.js', 'character/refresh.js', - 'character/shenhua.js', + //'character/shenhua.js', 'character/sp.js', //'character/tw.js', //'character/standard.js', //'character/swd.js', //'character/xianjian.js', - //'character/xinghuoliaoyuan.js', + 'character/xinghuoliaoyuan.js', 'character/yijiang.js', //'character/yxs.js', //'extension/boss/extension.js', //'layout/default/layout.css', //'layout/nova/layout.css', - 'mode/identity.js', + //'mode/identity.js', //'mode/doudizhu.js', //'mode/guozhan.js', //'mode/chess.js', //'mode/tafang.js', //'mode/single.js', //'mode/stone.js', - //'mode/brawl.js', + 'mode/brawl.js', //'mode/versus.js', - 'mode/boss.js', + //'mode/boss.js', 'game/game.js', //'game/NoSleep.js', //'game/config.js', diff --git a/image/character/ns_caoshuang.jpg b/image/character/ns_caoshuang.jpg new file mode 100644 index 000000000..24256bbb6 Binary files /dev/null and b/image/character/ns_caoshuang.jpg differ diff --git a/image/character/ns_huangchengyan.jpg b/image/character/ns_huangchengyan.jpg new file mode 100644 index 000000000..48b0c5c0b Binary files /dev/null and b/image/character/ns_huangchengyan.jpg differ diff --git a/image/character/ns_sunchensunjun.jpg b/image/character/ns_sunchensunjun.jpg new file mode 100644 index 000000000..c2272aa10 Binary files /dev/null and b/image/character/ns_sunchensunjun.jpg differ diff --git a/image/character/ns_yuanxi.jpg b/image/character/ns_yuanxi.jpg new file mode 100644 index 000000000..dbf9751d8 Binary files /dev/null and b/image/character/ns_yuanxi.jpg differ diff --git a/image/character/yj_ganning.jpg b/image/character/yj_ganning.jpg new file mode 100644 index 000000000..6d7cf81c1 Binary files /dev/null and b/image/character/yj_ganning.jpg differ diff --git a/image/character/yj_zhangliao.jpg b/image/character/yj_zhangliao.jpg new file mode 100644 index 000000000..17e773775 Binary files /dev/null and b/image/character/yj_zhangliao.jpg differ diff --git a/mode/brawl.js b/mode/brawl.js index e50c3ce1c..d60aa330c 100644 --- a/mode/brawl.js +++ b/mode/brawl.js @@ -1872,7 +1872,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ['sunquan','zhangzhang','zhouyu'], ['re_yuanshao','guotufengji','yj_jushou'] ]; - if(_status.forceKey) list.push(['key_yuri','key_yuzuru','sp_key_kanade']) + if(_status.keyVerified) list.push(['key_yuri','key_yuzuru','sp_key_kanade']) list.randomSort(); var list2=[]; for(var i=0;i