diff --git a/character/guozhan.js b/character/guozhan.js index bbd0bac8c..e5df47f87 100755 --- a/character/guozhan.js +++ b/character/guozhan.js @@ -1,4 +1,5 @@ character.guozhan={ + connect:true, character:{ ganfuren:['female','shu',3,['shushen','shenzhi']], mifuren:['female','shu',3,['guixiu','cunsi']], diff --git a/character/hearth.js b/character/hearth.js index fbc5f93da..de11f995b 100755 --- a/character/hearth.js +++ b/character/hearth.js @@ -940,7 +940,7 @@ character.hearth={ forced:true, filter:function(event,player){ return typeof event.player.storage.shixu=='number'&& - event.player.storage.shixu>3000&&event.player.num('he')>0; + event.player.storage.shixu>3000&&event.player.num('he')>0&&event.player.isAlive(); }, content:function(){ player.line(trigger.player,'green'); diff --git a/character/shenhua.js b/character/shenhua.js index 444e514ea..dd874fc4d 100644 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -514,7 +514,9 @@ character.shenhua={ player.judge(function(card){ if(get.suit(card)=='heart') return -1; return 1; - },ui.special); + },ui.special).nogain=function(card){ + return get.suit(card)!='heart'; + }; "step 1" if(result.bool){ result.card.goto(ui.special); diff --git a/character/sp.js b/character/sp.js index 10dad24a0..93db2ffed 100755 --- a/character/sp.js +++ b/character/sp.js @@ -353,7 +353,7 @@ character.sp={ trigger:{global:'phaseEnd'}, forced:true, filter:function(event,player){ - return player.skills.contains('fenyong2'); + return player.skills.contains('fenyong2')&&event.player.isAlive(); }, content:function(){ 'step 0' @@ -2516,7 +2516,7 @@ character.sp={ lixia:{ trigger:{global:'phaseEnd'}, filter:function(event,player){ - return event.player!=player&&get.distance(event.player,player,'attack')>1; + return event.player.isAlive()&&event.player!=player&&get.distance(event.player,player,'attack')>1; }, forced:true, content:function(){ @@ -3093,12 +3093,15 @@ character.sp={ player.chooseCardTarget({ filterCard:true, filterTarget:function(card,player,target){ + var trigger=_status.event.getParent()._trigger; return lib.filter.targetEnabled(trigger.card,player,target)&&target!=trigger.targets[0]; }, ai1:function(card){ return 6-ai.get.value(card); }, ai2:function(target){ + var trigger=_status.event.getParent()._trigger; + var player=_status.event.player; return ai.get.effect(target,trigger.card,player,player); }, prompt:'是否发动【奋迅】?' @@ -3405,14 +3408,13 @@ character.sp={ content:function(){ "step 0" var next=player.chooseToDiscard('是否发动【名士】?',{color:'black'}); - next.ai=function(card){ + next.set('ai',function(card){ return 9-ai.get.value(card); - } - next.logSkill='mingshi'; + }); + next.set('logSkill','mingshi'); "step 1" if(result.bool){ trigger.num--; - player.logSkill('mingshi'); } }, ai:{ @@ -3438,9 +3440,9 @@ character.sp={ "step 1" player.chooseTarget('是否发动【礼让】?',function(card,player,target){ return player!=target - }).ai=function(target){ - return ai.get.attitude(player,target); - }; + }).set('ai',function(target){ + return ai.get.attitude(_status.event.player,target); + }); "step 2" if(result.bool){ var target=result.targets[0]; @@ -3599,15 +3601,16 @@ character.sp={ content:function(){ "step 0" var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); - var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【鸩毒】?'); - next.ai=function(card){ - if(nono) return -1; - if(ai.get.damageEffect(trigger.player,player,player)>0){ - return 7-ai.get.useful(card); - } - return -1; + if(ai.get.damageEffect(trigger.player,player,player)<=0){ + nono=true } - next.logSkill=['zhendu',trigger.player]; + var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【鸩毒】?'); + next.set('ai',function(card){ + if(_status.event.nono) return -1; + return 7-ai.get.useful(card); + }); + next.set('logSkill',['zhendu',trigger.player]); + next.set('nono',nono); "step 1" if(result.bool){ trigger.player.damage(); @@ -3633,7 +3636,12 @@ character.sp={ return _status.currentPhase!=event.player; }, content:function(){ - player.storage.qiluan=true; + if(!player.storage.qiluan){ + player.storage.qiluan=1; + } + else{ + player.storage.qiluan++; + } }, group:['qiluan2','qiluan3'] }, @@ -3645,8 +3653,8 @@ character.sp={ return player.storage.qiluan?true:false; }, content:function(){ - player.draw(3); - player.storage.qiluan=false; + player.draw(3*player.storage.qiluan); + player.storage.qiluan=0; } }, qiluan3:{ @@ -3657,7 +3665,12 @@ character.sp={ return _status.currentPhase==event.player; }, content:function(){ - player.draw(3); + var num=3; + if(player.storage.qiluan){ + num+=3*player.storage.qiluan; + player.storage.qiluan=0; + } + player.draw(num); }, }, shangyi:{ @@ -3669,9 +3682,9 @@ character.sp={ }, content:function(){ "step 0" - player.chooseCardButton(target,target.get('h')).filterButton=function(button){ + player.chooseCardButton(target,target.get('h')).set('filterButton',function(button){ return get.color(button.link)=='black'; - } + }); "step 1" if(result.bool){ target.discard(result.links[0]); @@ -3696,7 +3709,8 @@ character.sp={ content:function(){ player.draw(2); }, - // audio:2, + audio:2, + audioname:['liushan'] }, shoucheng:{ trigger:{global:'loseEnd'}, @@ -3714,6 +3728,7 @@ character.sp={ }, content:function(){ trigger.player.draw(); + player.line(trigger.player,'green'); }, ai:{ threaten:1.3, @@ -3829,16 +3844,7 @@ character.sp={ player.storage.cunsi=true; game.delay(); target.addSkill('yongjue'); - target.marks.yongjue=target.markCharacter(player,{ - name:'存嗣', - content:'$
【勇决】
每当其他角色于回合内使用一张杀,若目标不是你,你可以获得之(每回合最多能以此法获得一张杀)
' - }) - game.addVideo('markCharacter',target,{ - name:'存嗣', - content:'$
【勇决】
每当其他角色于回合内使用一张杀,若目标不是你,你可以获得之(每回合最多能以此法获得一张杀)', - id:'yongjue', - target:player.dataset.position - }); + target.markSkillCharacter('yongjue',player,'存嗣','$
【勇决】
每当其他角色于回合内使用一张杀,若目标不是你,你可以获得之(每回合最多能以此法获得一张杀)
'); "step 1" player.turnOver(); player.removeSkill('guixiu'); @@ -3943,31 +3949,32 @@ character.sp={ return ai.get.damageEffect(event.player,player,player)>0; }, filter:function(event,player){ - return event.player!=player&&player.num('h',{type:'basic'}); + return event.player.isAlive()&&event.player!=player&&player.num('h',{type:'basic'}); }, direct:true, content:function(){ "step 0" var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); - var next=player.chooseToDiscard('是否发动【骁果】?',{type:'basic'}); - next.ai=function(card){ - if(nono) return 0; - if(ai.get.damageEffect(trigger.player,player,player)>0){ - return 8-ai.get.useful(card); - } - return 0; + if(ai.get.damageEffect(trigger.player,player,player)<=0){ + nono=true; } - next.logSkill=['xiaoguo',trigger.player]; + var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【骁果】?',{type:'basic'}); + next.set('ai',function(card){ + if(_status.event.nono) return 0; + return 8-ai.get.useful(card); + }); + next.set('logSkill',['xiaoguo',trigger.player]); + next.set('nono',nono); "step 1" if(result.bool){ var nono=(ai.get.damageEffect(trigger.player,player,trigger.player)>=0); - trigger.player.chooseToDiscard('he',{type:'equip'}).ai=function(card){ - if(nono){ + trigger.player.chooseToDiscard('he',{type:'equip'}).set('ai',function(card){ + if(_status.event.nono){ return 0; } - if(trigger.player.hp==1) return 10-ai.get.value(card); + if(_status.event.player.hp==1) return 10-ai.get.value(card); return 9-ai.get.value(card); - } + }).set('nono',nono); } else{ event.finish(); @@ -3990,6 +3997,9 @@ character.sp={ forced:true, popup:false, priority:6, + check:function(){ + return false; + }, filter:function(event,player){ return event.player!=player&&event.parent.name=='damage'&&event.parent.source&&event.parent.source!=event.player; }, @@ -4002,9 +4012,9 @@ character.sp={ else{ str='随势:是否令'+get.translation(player)+'摸一张牌?' } - trigger.parent.source.chooseBool(str).ai=function(){ - return ai.get.attitude(trigger.parent.source,player)>0; - }; + trigger.parent.source.chooseBool(str).set('ai',function(){ + return ai.get.attitude(_status.event.player,_status.event.target)>0; + }).set('target',player); 'step 1' if(result.bool){ player.logSkill('suishi'); @@ -4033,9 +4043,9 @@ character.sp={ else{ str='随势:是否令'+get.translation(player)+'流失一点体力?' } - trigger.source.chooseBool(str).ai=function(){ - return ai.get.attitude(trigger.source,player)<0; - }; + trigger.source.chooseBool(str).set('ai',function(){ + return ai.get.attitude(_status.event.player,_status.event.target)<0; + }).set('target',player); 'step 1' if(result.bool){ player.logSkill('suishi'); @@ -4059,12 +4069,12 @@ character.sp={ "step 0" player.chooseTarget('是否发动【死谏】?',function(card,player,target){ return player!=target&&target.num('he')>0; - }).ai=function(target){ - return -ai.get.attitude(player,target); - } + }).set('ai',function(target){ + return -ai.get.attitude(_status.event.player,target); + }); "step 1" if(result.bool){ - player.logSkill('sijian'); + player.logSkill('sijian',result.targets); event.target=result.targets[0]; player.discardPlayerCard(event.target,true); } @@ -4188,21 +4198,27 @@ character.sp={ player.storage.xiongyi=false; }, filterTarget:function(card,player,target){ - if(_status.auto||player!=game.me){ - if(ai.get.attitude(player,target)<=0) return false; + if(get.mode()=='guozhan'){ + if(player.identity=='unknown'||player.identity=='ye') return player==target; + return player.identity==target.identity; + } + else{ + return true; } - return player!=target; }, multitarget:true, multiline:true, - selectTarget:[0,2], + selectTarget:function(){ + if(get.mode()=='guozhan') return -1; + return [1,3]; + }, content:function(){ "step 0" player.storage.xiongyi=true; player.unmarkSkill('xiongyi'); - game.asyncDraw([player].concat(targets),3); + game.asyncDraw(targets,3); "step 1" - if(targets.length<=1){ + if(targets.length<=2){ player.recover(); } }, @@ -4212,26 +4228,21 @@ character.sp={ ai:{ order:1, result:{ - player:function(player){ + target:function(player){ var num=player.num('h'); if(player.hp==1) return 1; if(player.hp==2&&num<=1) return 1; if(player.hp==3&&num==0) return 1; - if(player.hp>=3&&num>=3) return -10; - if(lib.config.mode=='identity'||lib.config.mode=='guozhan'){ + if(player.hp>=3&&num>=3) return 0; + var mode=get.mode(); + if(mode=='identity'||mode=='guozhan'){ for(var i=0;i=0; @@ -3303,7 +3303,7 @@ character.yijiang={ globalSilent:true, trigger:{global:'phaseEnd'}, filter:function(event,player){ - return event.player!=player&&!event.player.tempSkills.qieting3; + return event.player!=player&&!event.player.tempSkills.qieting3&&event.player.isAlive(); }, frequent:true, content:function(){ diff --git a/game/game.js b/game/game.js index b579a97b4..c184e64b0 100755 --- a/game/game.js +++ b/game/game.js @@ -4927,7 +4927,7 @@ if(event.promptdiscard){ event.promptdiscard.close(); } - if(event.logSkill&&event.result.bool){ + if(event.logSkill&&event.result.bool&&!game.online){ if(typeof event.logSkill=='string'){ player.logSkill(event.logSkill); } @@ -5357,6 +5357,9 @@ if(event.isMine()){ event.controlbar=ui.create.control(event.controls); if(event.dialog){ + if(Array.isArray(event.dialog)){ + event.dialog=ui.create.dialog.apply(this,event.dialog); + } event.dialog.open(); } else if(event.prompt){ @@ -5382,7 +5385,7 @@ else event.result.control=event.controls[event.choice]; } _status.imchoosing=false; - if(event.dialog) event.dialog.close(); + if(event.dialog&&event.dialog.close) event.dialog.close(); if(event.controlbar) event.controlbar.close(); }, chooseBool:function(){ @@ -8892,6 +8895,7 @@ else str=get.translation(_status.event.name); next.judgestr=str; next.content=lib.element.playerproto.judge; + return next; }, turnOver:function(){ var next=game.createEvent('turnOver'); @@ -15265,6 +15269,7 @@ addRecentCharacter:function(){ for(var i=0;i